mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
`assistantActionsSeqs` picked the last content-text assistant of each turn from the finalized transcript alone. That quantity is stable only once the turn closes: while a turn is still producing steps, the narration written before a tool call is the last content assistant so far, so copy, branch, and the clock appeared under an intermediate sentence for as long as the tool ran and then moved down to the next step's text. Pass `ConversationSnapshot.turnEnds` into the derivation and grant the row only inside a turn that has a durable `turn/end`. This is the same completion fact the branch control and the `Ran for` label already read, so the three parts of one row now agree; mid-turn narration owns nothing, and the seat appears once under the settled answer. `hasContentText` moves to chat-flow.ts so the ownership gate and AssistantMarkdown's mount gate cannot drift apart. apps/web/tests/turn-tail-actions.e2e.ts pins both states through the assembled application: a hang sidecar on the second model call parks a turn whose first step narrated before calling bash, and the two goldens hold the parked flow and the flow after stopping.
83 lines
2.5 KiB
JSON
83 lines
2.5 KiB
JSON
{
|
|
"extends": "../../tsconfig.base.json",
|
|
"compilerOptions": {
|
|
"rootDir": ".",
|
|
"outDir": "lib/types",
|
|
"jsx": "react-jsx",
|
|
"lib": [
|
|
"ES2024",
|
|
"DOM",
|
|
"DOM.Iterable"
|
|
],
|
|
"types": [
|
|
"node"
|
|
]
|
|
},
|
|
"include": [
|
|
"src",
|
|
"tests"
|
|
],
|
|
// The web e2e lane (scaffold + replay specs) boots the host spine and reads
|
|
// its Context merges — host-plane programs, checked in tsconfig.host.json;
|
|
// this client-registered project must not also hold them (one program
|
|
// cannot see both sides of the cordis Context merges).
|
|
"exclude": [
|
|
"tests/scaffold.ts",
|
|
"tests/scaffold-hermetic.e2e.ts",
|
|
"tests/core-web-profile.snapshot.ts",
|
|
"tests/live-interactions.e2e.ts",
|
|
"tests/question-composer.e2e.ts",
|
|
"tests/approval-composer.e2e.ts",
|
|
"tests/plan-review.e2e.ts",
|
|
"tests/steering.e2e.ts",
|
|
"tests/navigation-panes.e2e.ts",
|
|
"tests/chat-scroll-fixture.ts",
|
|
"tests/trajectory-virtualization.e2e.ts",
|
|
"tests/lifecycle-chrome.e2e.ts",
|
|
"tests/details-session-lifecycle.e2e.ts",
|
|
"tests/settings-chrome.e2e.ts",
|
|
"tests/models-settings.e2e.ts",
|
|
"tests/onboarding-deepseek-config.e2e.ts",
|
|
"tests/remote-welcome.e2e.ts",
|
|
"tests/workspace-management.e2e.ts",
|
|
"tests/replay-round-trip.e2e.ts",
|
|
"tests/hmr-live.e2e.ts",
|
|
"tests/seeded-history.e2e.ts",
|
|
"tests/sidebar-scrollbar.e2e.ts",
|
|
"tests/code-mode-round.e2e.ts",
|
|
"tests/composer-draft-scroll.e2e.ts",
|
|
"tests/cordis-tool-round.e2e.ts",
|
|
"tests/web-search-round.e2e.ts",
|
|
"tests/message-actions.e2e.ts",
|
|
"tests/markdown-images.e2e.ts",
|
|
"tests/math-rendering.e2e.ts",
|
|
"tests/markdown-cjk-strong.e2e.ts",
|
|
"tests/markdown-inline-code-links.e2e.ts",
|
|
"tests/queue-actions.e2e.ts",
|
|
"tests/skill-invocation-policy.e2e.ts",
|
|
"tests/permission-policy-context.e2e.ts",
|
|
"tests/access-confirmation.e2e.ts",
|
|
"tests/shipped-composition.e2e.ts",
|
|
"tests/goal-bar.e2e.ts",
|
|
"tests/startup-auto-selection.e2e.ts",
|
|
"tests/subagent-conversation.e2e.ts",
|
|
"tests/bash-abort-row.e2e.ts",
|
|
"tests/turn-tail-actions.e2e.ts",
|
|
"tests/chat-scroll-fixture.ts",
|
|
"tests/chat-scroll-contract.e2e.ts",
|
|
"tests/chat-long-interactions.e2e.ts",
|
|
"tests/chat-continuous-conversation.e2e.ts",
|
|
"tests/composer-tab-geometry.e2e.ts",
|
|
"tests/complex-history.perf.ts",
|
|
"tests/pwsh-terminal.e2e.ts"
|
|
],
|
|
"references": [
|
|
{
|
|
"path": "../../packages/client/web"
|
|
},
|
|
{
|
|
"path": "../../packages/client/modules"
|
|
}
|
|
]
|
|
}
|