Commit Graph

1373 Commits

Author SHA1 Message Date
Chinesezjc
5081697aaf feat(web): render bash tool output as a terminal card
The bash tool already declares the `card: 'terminal'` render intent for
both its call and its result, and host/connection/runtime already deliver
it to the browser as callView/resultView. The Web client ignored it:
rows derived from raw args, and the details panel flattened every tool's
content into one soft-wrapping `<pre>`. Column-aligned output folded into
a paragraph and a long listing stretched the panel without bound.

`TerminalBlock` (ui-primitives) renders a command as a terminal surface:
a shortened-cwd prompt line, output at `white-space: pre` in a
horizontally scrolling box, a head/tail height cap with an expand
control, an exit-code/signal status pill, and a copy control for the raw
output. ANSI SGR runs are parsed with `anser` and resolved onto `--dsw-*`
theme tokens, with literal rgb kept for values the design system has no
token for. Geometry and fonts mirror CodeBlock; the clipboard write both
need moved into a package-internal `clipboard.ts`.

Both Web render sites for a bash call consume the intent through one
derivation (`terminal-card-model.ts`), so they cannot disagree about a
command, its cwd, or its exit status: the keyed BashRow carries the card
resident below its summary row, and the render-site fallback row keeps it
behind its existing expand control. Rows cap at 8 lines against the
panel's 16.

Inline output in the chat row reverses this package's stated
no-inline-output convention, on the owner's explicit decision; the Agent
Note records the reversal and its bound.

Tests: TerminalBlock/ansi/clipboard unit specs, ui-conversation wiring
specs at every render site, a built-client-graph snapshot covering both
chat-row shapes, and a real-browser e2e asserting the no-wrap layout and
the page's own Clipboard API.
2026-07-28 14:58:06 +08:00
Tianyi Cui
e98c180062 Merge branch 'master' into worktree/change-scope-trim-20260728 2026-07-28 10:59:00 +08:00
Tianyi Cui
1a623946b9 Merge current master with codex/fix-acp-snapshot-refresh-volatiles 2026-07-28 01:36:32 +08:00
Tianyi Cui
a1401349d8 Merge remote-tracking branch 'origin/master' into worktree/change-scope-trim-20260728 2026-07-28 01:26:55 +08:00
Tianyi Cui
f6a850b107 Merge remote-tracking branch 'origin/master' into worktree/change-scope-trim-20260728 2026-07-28 01:21:25 +08:00
Tianyi Cui
9ebd0075e9 Merge master into fix/pty-handoff-grace 2026-07-28 01:19:58 +08:00
Tianyi Cui
2b539346c8 Merge remote-tracking branch 'origin/master' into worktree/change-scope-trim-20260728 2026-07-28 01:12:16 +08:00
Chinesezjc
d0be242138 Merge branch 'master' into fix/worker-timer-clamp 2026-07-28 01:12:16 +08:00
Chinesezjc
ca676178b5 Merge branch 'master' into fix/worker-timer-clamp 2026-07-28 01:06:22 +08:00
Tianyi Cui
9cd87f91cc Merge origin/master into worktree/change-scope-trim-20260728 2026-07-28 01:03:15 +08:00
Tianyi Cui
2a562236d0 Merge remote-tracking branch 'origin/master' into worktree/pr784-merge-20260728 2026-07-28 01:02:49 +08:00
Tianyi Cui
a5ed3a5cfc refactor(dev-infra): narrow change scope report 2026-07-28 01:02:43 +08:00
Tianyi Cui
00b6aff3fc docs(notes): seal corrected archive inputs 2026-07-28 00:58:33 +08:00
imccyu
730657375f Merge branch 'master' into worktree/web-session-model-selector 2026-07-28 00:56:56 +08:00
Tianyi Cui
98e953596d docs(notes): normalize archive inputs before sealing 2026-07-28 00:56:48 +08:00
Tianyi Cui
c0b9734494 Merge remote-tracking branch 'origin/master' into worktree/pr784-merge-20260728 2026-07-28 00:52:23 +08:00
Chinesezjc
57a117b7bb Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-28 00:49:21 +08:00
Tianyi Cui
9c6de3644e Merge branch 'master' into archive-agent-notes-sweep-2 2026-07-28 00:49:13 +08:00
Tianyi Cui
7b140eb136 docs(notes): archive superseded session-prefix note after master retarget
The rebase onto master picked up #585 (agent-loop message machine), which
removed the request-only session-prefix seam; the unified sourced-message
decision now owns the mechanism and the note's own banner declares the
seam removed. Archive the triplet and rewrite the skill-system note's
catalog mechanism against the shipped agent/step sourced injection,
keeping the archived note as the intentional historical citation.

Re-checked the other notes master added or amended (provider retry
policies, request-error retry action, observable state machine, OTel
telemetry, dependabot): their supersessions were already executed
upstream in the same PRs; no further active note qualifies.
2026-07-28 00:42:33 +08:00
imccyu
94af1589a9 Merge branch 'master' into worktree/web-session-model-selector 2026-07-28 00:40:08 +08:00
imccyu
af70af4020 Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector 2026-07-28 00:39:24 +08:00
Tianyi Cui
177b7c3286 Merge remote-tracking branch 'origin/master' into worktree/pr703-ci-fix-20260727 2026-07-28 00:37:26 +08:00
Tianyi Cui
88aa3f8959 Merge remote-tracking branch 'origin/master' into worktree/pr703-ci-fix-20260727 2026-07-28 00:33:36 +08:00
Chinesezjc
30f0ac90f7 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-28 00:33:02 +08:00
Tianyi Cui
b1dc759fee Merge remote-tracking branch 'origin/master' into worktree/pr762-merge-20260728 2026-07-28 00:29:00 +08:00
Tianyi Cui
cc8f6a30c0 Merge remote-tracking branch 'origin/master' into worktree/pr703-ci-fix-20260727
# Conflicts:
#	docs/architecture.i18n.yaml
#	packages/core/agent-loop/src/agent.ts
2026-07-28 00:23:27 +08:00
Chinesezjc
3dc3e59b38 Merge remote-tracking branch 'origin/master' into fix/pty-handoff-grace 2026-07-28 00:17:25 +08:00
Tianyi Cui
cc5201a408 Merge remote-tracking branch 'origin/master' into worktree/worktree-local-lefthook-20260727 2026-07-28 00:08:43 +08:00
Chinesezjc
0982cc4fc0 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-28 00:08:32 +08:00
Tianyi Cui
59122b9e85 Merge remote-tracking branch 'origin/master' into worktree/worktree-local-lefthook-20260727 2026-07-28 00:06:16 +08:00
Tianyi Cui
c982cf7805 refactor(dev-infra): narrow worktree hook safety checks 2026-07-28 00:05:31 +08:00
Tianyi Cui
4a45981e76 Merge remote-tracking branch 'origin/master' into worktree/pr743-merge-20260727
# Conflicts:
#	examples/tui-agent/tests/snapshots/cordis-dynamic-toolchain/terminal.expected.txt
#	packages/ui/tui/tests/snapshots/cordis-tools-pending.expected.txt
2026-07-28 00:03:56 +08:00
Tianyi Cui
f2c0021941 docs(notes): aggressive archive sweep of low-value decision records
Archive 21 implemented triplets whose shipped decisions are complete and
whose bodies no longer guide future work (one-off UI chrome, generator
applications whose scripts are self-explanatory, superseded implementation
detail, process history owned by current contracts/skills). Delete 4
rejected triplets whose premises are obsolete: the DeepReadonly proposal
(dev-invariants note now carries the alternative inline), the collapse
tool-owned presentation proposal (superseded by the shipped render-intent
union), retire-mid-turn-steering (steering is now load-bearing across
plan-mode/apiproxy/TUI), and single-session-ACP (automation-only ACP
resolved the question; multi-session isolation is pinned by tests).

Repair every inbound link: retarget intentional historical citations to
archived paths, replace decision-current citations with the surviving
authority, and fix the stale example-execute-over-tsx pointer in
pnpm-workspace.yaml. Re-record pairing sidecars and seal the archive
manifest (append-only; existing seals unchanged).
2026-07-28 00:00:51 +08:00
Tianyi Cui
064cea4ebe Merge remote-tracking branch 'origin/master' into worktree/pr743-merge-20260727
# Conflicts:
#	examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
#	examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
#	examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
#	examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
#	examples/acp-agent/tests/snapshots/session-query-spill/session.jsonl
#	examples/cordis-agent/tests/cordis-tools.e2e.ts
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
2026-07-27 23:59:33 +08:00
Chinesezjc
201fdbe34d Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 23:57:06 +08:00
Tianyi Cui
752d4b9204 Merge updated origin/master into feat/tui-master-port 2026-07-27 23:56:54 +08:00
Tianyi Cui
f6a450102e Merge updated origin/master into feat/tui-master-port 2026-07-27 23:55:53 +08:00
Tianyi Cui
95bba22f84 Merge remote-tracking branch 'origin/master' into worktree/worktree-local-lefthook-20260727 2026-07-27 23:47:28 +08:00
Chinesezjc
7111675b01 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 23:45:05 +08:00
Tianyi Cui
5175ab4019 Merge branch 'master' into worktree/agent-note-supersession-check-20260727 2026-07-27 23:44:06 +08:00
Tianyi Cui
1c1e52bd3f Merge updated PR branch into agent-loop CI fix 2026-07-27 23:42:12 +08:00
Tianyi Cui
fe22273e28 fix(agent-loop): await final session flush 2026-07-27 23:41:27 +08:00
Tianyi Cui
18835ca838 Merge updated origin/master into feat/tui-master-port 2026-07-27 23:39:59 +08:00
Tianyi Cui
35697a4529 Merge origin/master into Agent Note supersession checks 2026-07-27 23:39:18 +08:00
Tianyi Cui
6241eb6044 Require Agent Note supersession checks 2026-07-27 23:38:49 +08:00
Tianyi Cui
b7ae92b9bf Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727 2026-07-27 23:38:39 +08:00
Tianyi Cui
503916343d Merge branch 'master' into sdk/ts-client-and-subagent 2026-07-27 23:36:03 +08:00
Tianyi Cui
f843d2b238 Merge origin/master into feat/tui-master-port 2026-07-27 23:34:56 +08:00
Tianyi Cui
29619eda77 Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727
# Conflicts:
#	.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml
#	.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
#	.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md
#	docs/architecture.i18n.yaml
#	docs/architecture.md
#	docs/architecture.zh.md
#	docs/cordis-catalog/events.md
#	docs/core-data-structures/llm-streaming.i18n.yaml
#	docs/core-data-structures/llm-streaming.md
#	docs/core-data-structures/llm-streaming.zh.md
#	docs/event-producer-consumer.md
#	examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
#	packages/compact/compact-basic/src/index.ts
#	packages/compact/compact-basic/tests/compact-basic.spec.ts
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/core/agent-loop/README.i18n.yaml
#	packages/core/agent-loop/README.md
#	packages/core/agent-loop/README.zh.md
#	packages/core/agent-loop/src/loop.ts
#	packages/core/agent-loop/tests/request-recovery.spec.ts
#	packages/core/agent/src/types.ts
#	packages/core/scope/tests/invariant.spec.ts
#	packages/llm/llm-retry/README.i18n.yaml
#	packages/llm/llm-retry/README.md
#	packages/llm/llm-retry/README.zh.md
#	packages/llm/llm-retry/src/index.ts
#	packages/llm/llm-retry/src/invariant.ts
#	packages/llm/llm-retry/tests/invariant.spec.ts
#	packages/llm/llm-retry/tests/retry.spec.ts
#	packages/plan/plan-mode/src/index.ts
#	packages/plan/plan-mode/tests/integration.spec.ts
#	packages/plan/plan-mode/tests/plan-mode.spec.ts
2026-07-27 23:29:26 +08:00
Tianyi Cui
7759b1d682 docs: record Dependabot security update boundary 2026-07-27 23:27:07 +08:00