Commit Graph
5533 Commits
Author SHA1 Message Date
_Kerman 734c3d1f65 Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification
# Conflicts:
#	apps/cli/tests/snapshots/queued-manual-compact/terminal.expected.txt
#	apps/web/tests/snapshots/queue-actions/preserved.expected.md
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/src/client/sessions/session.ts
#	packages/client/ui-conversation/README.md
#	packages/client/ui-conversation/README.zh.md
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/tui/tests/snapshots/untrusted-controls.expected.txt
2026-08-03 17:15:34 +08:00
_Kerman f0622f3280 refactor(agent-loop): inline the turn error shaping 2026-08-03 16:43:45 +08:00
Yichen Jiang 3009bc5312 Merge pull request #1003 from deepseek-harness/worktree/web-remote-markdown-images
feat(web): render remote Markdown images
2026-08-03 16:41:00 +08:00
_Kerman a597763393 fix(session): type turn/end error as one structured failure
TurnEndReasonMap.error now carries a single `error: LlmFailure` field:
an LlmError keeps its structured facts, any other error flattens to
errorChain text under the UNKNOWN code. Consumers read message/code
directly instead of defending against an unknown union — this also fixes
errorChain() rendering structured failures as '[object Object]' in the
TUI and ACP error paths. Document the turn-stopping contract: a
concludesTurn result never short-circuits already-submitted next-step
work (same-step additionalContexts or racing steering still runs), data
decides.
2026-08-03 16:33:23 +08:00
imccyu fec8339a18 Merge branch 'master' into worktree/web-remote-markdown-images 2026-08-03 16:23:50 +08:00
imccyu a8a97d0202 Merge branch 'master' into codex/fork-real-turn-tail 2026-08-03 16:23:46 +08:00
kingwl c5050f018e fix(web): keep ineligible message forks disabled 2026-08-03 16:19:49 +08:00
_Kerman 8b975edf44 fix(acp): settle prompts at whole-agent idle, not the first turn/end
A prompt now resolves only when the agent reaches quiescence: the
correlated turn/end arms an endReason instead of settling immediately,
so steering or injected work that runs further turns before idle no
longer splits one prompt across the automation wire. Token-limit turn
endings settle as end_turn per the README contract (they are not
prompt-level stop reasons); model errors still reject immediately, and
explicit ACP cancellation stays 'cancelled'.
2026-08-03 16:16:37 +08:00
_Kerman 3c160e137d fix(apiproxy): stop projecting injected context as user steering
next-step items now split by origin: user-origin messages keep the
'steering' placement, while agent.inject context (approval notices, task
completion notices, attached snapshots) carries a new 'context' placement
that no surface renders until it is claimed as a durable user/message
context card. Widen the placement unions on the wire and in the client
runtime, add a projection test case, and document the split in the
apiproxy/ui-conversation READMEs and the web-steer chrome agent note.
2026-08-03 16:15:07 +08:00
_Kerman 8171936082 docs(agent): align event JSDoc with shipped behavior
- agent/error: drop the stale "(plus the logger)" claim; the machine only
  emits the event.
- agent/inbox/claimed: document that a rejected turn boundary ends the
  claimed message without discard or re-emission, and that a later batch
  may reuse the turn number.
- steer(): document that a rejected step leaves steering parked until the
  next wake.
- Fix stray double-space in the inbox inserted/discarded callbacks.
- Sync core.md/core.zh.md mirrors and regenerate the cordis catalog.
2026-08-03 16:09:58 +08:00
Yichen Jiang 61cba0cda2 Merge remote-tracking branch 'origin/master' into worktree/web-remote-markdown-images
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.md
#	packages/client/ui-primitives/README.zh.md
#	packages/client/ui-primitives/src/markdown/MarkdownText.tsx
#	packages/client/ui-primitives/tests/markdown.spec.tsx
2026-08-03 16:09:51 +08:00
_Kerman cb2f01f48c refactor(agent-loop): drop the steering/message session event
Steer, inject, and followup now land as durable user/message events on the
session surface; the steering/message event type and its ConversationNode
kind are removed from the client projection. Update tests, docs, generated
catalogs, and agent notes to match, and align the steering e2e fixture and
prompt inventory assertions with the durable user/message landing.
2026-08-03 16:04:26 +08:00
kingwl c43eaaec82 Merge remote-tracking branch 'origin/master' into codex/pr-1150-disabled
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
#	packages/client/ui-conversation/README.i18n.yaml
2026-08-03 16:02:33 +08:00
Turtle 4fa1d48bf9 Merge remote-tracking branch 'origin/master' into pr/tui-details-fold 2026-08-03 15:56:02 +08:00
Turtle bea60a430e Merge remote-tracking branch 'origin/master' into pr/tui-details-fold
# Conflicts:
#	docs/cordis-catalog/services.md
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/tui/README.md
#	packages/ui/tui/README.zh.md
#	packages/ui/tui/src/index.ts
2026-08-03 15:55:22 +08:00
Wenlu Wang 6a3caea277 Merge pull request #1160 from deepseek-harness/codex/subagent-token-metrics
Show subagent token metrics
2026-08-03 15:35:17 +08:00
imccyu 2d31ec5fee Merge pull request #1173 from deepseek-harness/agent/web-bash-error-expand
fix(web): expand aborted Bash rows
2026-08-03 15:30:52 +08:00
kingwl d5583210d4 tighten branchless subagent catalog layout 2026-08-03 15:19:53 +08:00
Turtle ef7637a5d8 Merge pull request #1093 from deepseek-harness/fix/tui-terminal-restore-on-boot-failure
fix(app-boot): restore the terminal when boot fails
2026-08-03 14:48:20 +08:00
Wenlu Wang 8e820bbbf5 Merge pull request #1159 from deepseek-harness/codex/subagent-token-duration
Fix subagent active duration tracking
2026-08-03 14:45:29 +08:00
Turtle f503c92aff Merge branch 'master' into fix/tui-terminal-restore-on-boot-failure 2026-08-03 14:40:58 +08:00
Ziya b6b642fae4 Merge branch 'master' into agent/web-bash-error-expand 2026-08-03 02:30:36 -04:00
imccyu 8527ce23ae Merge pull request #1169 from deepseek-harness/worktree/directory-picker-path-editor
fix(directory-picker-browse): advertise the path editor and walk the panes with the draft
2026-08-03 14:30:34 +08:00
Turtle ad4aeacd19 fix(hmr,include): settle a failing boot instead of a silent exit 13
Master's transactional loader made the invalid-provider PTY case regress:
the HMR main watcher's initial scan refreshed the include mid-initial-apply,
the concurrent group updates stranded the include fiber, and once serialized
the failing apply's rollback deadlocked on HMR's refresh drain — dsh exited
13 with no diagnostic and the terminal stranded, the exact symptom this
branch fixes. Serialize every include child-tree mutation through one queue
and pass ignoreInitial to the HMR main watcher; the failing boot now settles
through boot()'s labelled rejection with the tree disposed and exit 1. The
PTY case asserts the settled diagnostic; the fail-loud release remains the
guard for rejections boot cannot see.
2026-08-03 14:14:20 +08:00
Turtle b37c22bd0a Merge origin/master: combine boot-owned settlement with the fail-loud release
Conflicts: apps/cli/src/tui.ts (keep the release install over master's comment
rewording), packages/ui/app-boot/README* (master's new installFailLoud row
wording plus this branch's release and timeout rows).
2026-08-03 14:10:23 +08:00
ZiyaZhang 0a4ad25ce7 fix(web): expand aborted Bash rows 2026-08-02 23:06:00 -07:00
_Kerman 5b17413108 docs(ui-trajectory): record composer overlay contract 2026-08-03 14:02:54 +08:00
_Kerman 5534431d42 fix(ui-trajectory): own composer overlay geometry 2026-08-03 14:02:40 +08:00
Yif 062a1507f1 feat(ui-trajectory): float the composer over the ledger like chat
The trajectory host kept the composer as a fixed flex sibling, so the
ledger never reached the viewport bottom. Anchor the composer seat
absolutely over the ledger (reusing chat's fade treatment) and have the
internal scroll panes reserve the composer's live height plus a 16px gap
so end rows and detail bodies scroll clear of the overlay.

(cherry picked from commit 0058a1f4b6e8c2e23bfde7c827a84838cc5ebffc)
2026-08-03 13:55:33 +08:00
_Kerman 44304a458c fix(ui-trajectory): separate consecutive request markers 2026-08-03 13:53:50 +08:00
_Kerman 68e79ed983 docs(ui-trajectory): record timeline interaction contract 2026-08-03 13:48:11 +08:00
_Kerman 74cd2e4bd9 feat(ui-trajectory): enrich timeline timing interactions 2026-08-03 13:48:03 +08:00
_Kerman c8ece8325c fix(ui-trajectory): follow live ledger tail 2026-08-03 13:47:55 +08:00
_Kerman a8478fc031 fix(ui-trajectory): animate responsive ledger layout 2026-08-03 13:47:51 +08:00
_Kerman 94dabcb7ed feat(ui-primitives): support delayed multiline tooltips 2026-08-03 13:47:37 +08:00
creatixchu 6c0ce22f59 fix(directory-picker-browse): light the whole bar, and move the view once per keystroke
The hover affordance framed only the strip right of the crumbs. The bar itself
now carries the outline and the padding in both modes, so hovering previews
exactly the field the click produces and nothing resizes when the two swap.

One keystroke moved the view twice: deleting a separator first narrowed the
pane the draft had just walked away from, then replaced it with its landing.
The tail now filters only the LAST pane — the one whose level the path names —
so a pane on its way out holds still until its landing arrives.

Also from the review round: the walk waits both legs out instead of taking the
submitted-navigation bound (a speculative scan has nothing waiting on it, and
a tail keystroke aborting a slow parent leg would otherwise strand the
two-pane view); a level keeps answering the directory text that produced it,
so `..` segments and Windows forward slashes filter and stop rescanning; the
release-on-miss rule counts displayable rows, so it survives `hidden` ever
meaning more than dot-prefixed; and the editor's 250ms rest joins the other
two constants on the remote-recalibration list.
2026-08-03 13:45:30 +08:00
kingwl 583d532bc3 merge compact duration display
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md
#	apps/web/tests/snapshots/subagent-conversation/tree.expected.md
#	packages/client/ui-subagent/README.i18n.yaml
#	packages/client/ui-subagent/README.md
#	packages/client/ui-subagent/README.zh.md
#	packages/client/ui-subagent/src/client/SubagentCatalogAction.tsx
#	packages/client/ui-subagent/tests/conversation-ui.spec.tsx
2026-08-03 13:31:19 +08:00
creatixchu 2ceed380dd fix(directory-picker-browse): keep the typed level in the last pane
Skipping the draft-following scan whenever ANY pane happened to list the
directory was the cheaper rule and the wrong one: erasing a segment left the
level being typed on the LEFT, with its own child pane still standing to its
right, so the two panes stopped reading as "where I am, and where I came
from".

The pane arity is now the invariant the editor maintains — the last pane lists
the level the path names, its parent sits beside it, and only a display root
lists alone. Only that last pane's own tail costs no scan; every other
directory part re-lands.
2026-08-03 13:27:45 +08:00
kingwl 255cd90c6e compact long subagent durations 2026-08-03 13:23:40 +08:00
creatixchu 233ea50104 Merge remote-tracking branch 'origin/master' into worktree/directory-picker-path-editor 2026-08-03 13:14:27 +08:00
_Kerman f4a2e0d10a fix(agent): align consumers with inbox lifecycle 2026-08-03 13:14:24 +08:00
creatixchu c58b07833e fix(directory-picker-browse): land the draft-following walk two-pane
The draft-following scan replaced the panes with one wide level, so typing a
path collapsed the dialog's Miller view — the thing the dialog is. It now
lands through the same selection-anchored landing every navigation uses:
target and parent legs as one frame, the target re-selected in its parent
level, its children on the right. Typing a path moves the Miller view exactly
as a crumb jump does.

One landing shape, two callers: `land(path, {closeEditor, announce})` is what
`navigate` and the draft-following scan share. A submitted path closes the
editor and announces failures; the speculative scan keeps both to itself and
re-parks the focus its swap dropped.

A level a pane already lists still needs no scan at all — the filter alone
answers the draft — so erasing back into the parent's own path keeps both
panes and only moves the filter.
2026-08-03 13:08:31 +08:00
_Kerman e011d3b238 test(snapshot): cover durable goal phase waits 2026-08-03 12:45:49 +08:00
_Kerman cb7cc46d03 Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification 2026-08-03 12:39:49 +08:00
_Kerman f3460a052f fix(context): preserve committed workspace projections 2026-08-03 12:39:39 +08:00
_Kerman 616ee55372 test(snapshot): cover minimum child turn waits 2026-08-03 12:32:54 +08:00
_Kerman 49e90695cc refactor(agent): complete inbox lifecycle migration 2026-08-03 12:25:33 +08:00
creatixchu 30f442d42e review(directory-picker-browse): re-arm the draft-following wait per keystroke
ds-review-bot round one. Keying the debounce on the directory part the draft
named left two states with no recovery until the operator crossed a separator:
a keystroke that superseded an in-flight scan never re-armed one, and an edit
after a rejected submission released the hold with no timer left to release.
The wait is now keyed on the draft itself and decides its target when it
fires, reading the panes through a ref so a landing cannot re-arm it (a host
answering with a differently spelled path would otherwise scan forever).

A landed scan that unmounts the row a keyboard operator Tabbed onto re-parks
focus on the still-open editor; the Modal has no focus trap. That a walked-to
level survives closing the editor is now stated in the README, the Agent Note,
and the module contract. The new e2e stages its own beta directory so running
it alone sees the tree its assertions describe.
2026-08-03 12:11:11 +08:00
kingwl c183fae6f9 clarify timing projection schema cast 2026-08-03 12:04:44 +08:00
kingwl 24ff409f62 merge refreshed duration base 2026-08-03 12:03:59 +08:00