imccyu
6d2e5a7cd7
feat: command.execute returns the lifecycle pairing id ({matched, commandId?})
...
CommandService.execute now returns a CommandExecution — the normalized
result plus the commandId minted for its command/run/command/done records —
and the wire admission value carries commandId exactly when matched, so the
issuing client can correlate its RPC acknowledgment with the flow node the
lifecycle events produce. apiproxy api/schema/handler, the connection
fixture, and the TUI/plan/goal consumers follow the new shape.
2026-07-27 23:07:13 +08:00
imccyu
2ebaa30c6d
refactor: structured command/run payload {commandId, name, args, source}
...
The line field is deleted (pre-release, no shim): name and args are
parseCommand's own split — name plus verbatim rawInput with its separator
whitespace — so a consumer (a projection unit folding its own command
records, a rich command card) never re-parses a line. CommandNode mirrors
the split (name/args, both null on a run-less cross-window node); the
generic card rebuilds its display line as /name + args. The connection
fixture logs the same structured payload.
2026-07-27 23:06:52 +08:00
imccyu
4ddec0ba2f
refactor: command.execute degrades to pure admission; composer notice channel retired
...
The wire response now carries only the matched bit — CommandExecuteResult
is deleted from the api, schema, and client mirrors (pre-release, no shim);
outcomes ride the durably logged command/run/command/done pair broadcast on
the mux stream and render as flow nodes. ui-command's runDetached→noticeFor
outcome routing is retired: admitted commands surface nothing through the
composer, while admission misses (matched:false, syntax feedback) and
transport failures keep their immediate notice. The connection fixture
mirrors the host: an admitted command appends the lifecycle pair to the
session log instead of returning result text.
2026-07-27 23:06:49 +08:00
imccyu
70cc77eab0
feat: pure-type /types outlet for dsh-session-projection (client-aggregate import path)
2026-07-27 22:58:57 +08:00
imccyu
65e41f1cb0
feat: projections block on the session.history tail page
2026-07-27 22:58:56 +08:00
_Kerman
fb1dc6d117
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
2026-07-27 21:51:37 +08:00
_Kerman
ed67ad53d2
refactor(agent): return request retry action
2026-07-27 21:17:49 +08:00
ZiyaZhang
a5239b0f64
test(gui): cover native workspace picker branches
2026-07-27 04:37:24 -07:00
Hypatia May
7786ff9657
fix(host): await cancelled cold-summary batches
2026-07-27 18:55:13 +08:00
ZiyaZhang
fef928a7e1
feat(gui): add native workspace folder picker
2026-07-27 03:50:22 -07:00
Hypatia May
4727d742db
fix(web): align session search contracts
2026-07-27 18:38:00 +08:00
_Kerman
ff7792b17c
docs(agent): document next-step acceptance window
2026-07-27 18:07:51 +08:00
_Kerman
f63d937496
fix(tui): route prompts by next-step capability
2026-07-27 18:05:43 +08:00
_Kerman
a59ce0367c
fix(agent-loop): route next-step input during admission
2026-07-27 17:55:55 +08:00
Yichen Jiang
7f4905c4bf
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
2026-07-27 17:18:29 +08:00
_Kerman
db16732101
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
2026-07-27 17:18:12 +08:00
Hypatia May
74b26adcac
Merge remote-tracking branch 'origin/master' into codex/basic-session-search
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-workspace/README.i18n.yaml
# packages/client/ui-workspace/README.md
# packages/client/ui-workspace/README.zh.md
# packages/client/ui-workspace/src/client/WorkspaceBrowser.tsx
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/tests/client-handler.spec.ts
2026-07-27 17:17:31 +08:00
_Kerman
bd40eec770
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# 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/README.i18n.yaml
# packages/core/agent/tests/llm-target.spec.ts
# packages/core/session/tests/request-header.spec.ts
2026-07-27 16:48:38 +08:00
Yichen Jiang
0d084ab6ff
feat(web): support reasoning effort selection
2026-07-27 16:12:40 +08:00
NI0317
dcf06e8272
Merge remote-tracking branch 'origin/master' into feature/delete-workspace
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
2026-07-27 15:54:51 +08:00
Yichen Jiang
181ac52f8e
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# packages/client/connection/src/client/fixture.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/tests/fake-api.ts
# packages/client/runtime/tests/session.spec.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/README.md
# packages/client/ui-conversation/README.zh.md
# packages/host/apiproxy/README.i18n.yaml
2026-07-27 15:41:01 +08:00
Hypatia May
de67a695ca
Merge remote-tracking branch 'origin/master' into codex/basic-session-search
...
# Conflicts:
# packages/client/connection/src/client/fixture.ts
# packages/client/runtime/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
2026-07-27 15:34:41 +08:00
Hypatia May
0aa7f8c5cf
fix(web): converge session search boundaries (round 9)
2026-07-27 14:46:08 +08:00
NI0317
7bd96af5eb
fix(workspace): make deletion recoverable
2026-07-27 14:37:04 +08:00
Yichen Jiang
a1835c3228
fix(gui): close attachment durability gaps
2026-07-27 14:29:19 +08:00
Hypatia May
ba2925c704
fix(web): converge search runtime boundaries (round 8)
2026-07-27 14:02:35 +08:00
imccyu
3b04941830
Merge the concurrent selector adaptation; ui-model stays the model owner
...
The remote side re-merged master (i18n workflow round) and restored the
pre-architecture ModelSelector package with the Session-side state
machine. Reconciliation keeps that merge's master content and reasserts
this branch's model architecture: business state lives in ui-model's
shared per-session directory (ctx.models), not on Session/
ConversationSnapshot; the input.model seat entry and the /model popup
stay the two same-source entries; the history modelTarget piggyback stays
removed. The ui-model-selector package, its roster row, and its allowlist
entry go; the smoke-real roster names ui-model.
2026-07-27 13:36:25 +08:00
Hypatia May
40b68cd8d5
fix(web): harden paged search protocol (round 7)
2026-07-27 13:24:39 +08:00
Hypatia May
a8c28be1ba
fix(web): bound search provider work (round 6)
2026-07-27 13:18:05 +08:00
Hypatia May
30503c3b03
test(web): type large-corpus search mock (round 5)
2026-07-27 13:07:23 +08:00
Hypatia May
0dc66d5b77
fix(web): support large search corpora (round 4)
2026-07-27 13:05:59 +08:00
Hypatia May
31215687f9
fix(web): honor search ownership and cancellation
2026-07-27 12:42:46 +08:00
NI0317
187cf6f804
feat(web): delete workspace registrations
2026-07-27 12:38:11 +08:00
Yichen Jiang
b599d1d0af
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .gitignore
# apps/cli/package.json
# apps/cli/src/web.ts
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/module-graph.md
# packages/client/connection/README.md
# packages/client/connection/src/client/api.ts
# packages/client/connection/src/client/fixture.ts
# packages/client/runtime/README.md
# packages/client/runtime/src/client/sessions/service.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/src/client/workspaces/service.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/service.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/EmptyHero.tsx
# packages/client/ui-conversation/src/client/skeleton/EmptyState.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.module.css
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/apply-inject.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/client/ui-trajectory/tests/views.spec.tsx
# packages/host/apiproxy/src/api-proxy.ts
# pnpm-lock.yaml
2026-07-27 12:27:30 +08:00
Hypatia May
222096e3cf
fix(web): validate search hit provenance (round 2)
2026-07-27 12:27:11 +08:00
Yichen Jiang
bde5e26a96
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# apps/cli/package.json
# apps/web/tests/smoke-real.e2e.ts
# apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
# apps/web/tests/snapshots/seeded-history/ui.expected.md
# docs/config-catalog.md
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/chat-stats-bash-sample.spec.tsx
# packages/client/ui-conversation/tests/chat-toolview-slot.spec.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/client/ui-conversation/tests/gate-branch-tails.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/host/apiproxy/README.md
# packages/host/apiproxy/src/api-proxy.ts
# pnpm-lock.yaml
# scripts/verify-package-readme-model-experience.ts
# tsconfig.base.json
2026-07-27 12:17:38 +08:00
Hypatia May
891e9035e7
feat(web): add basic past-session search (round 1)
2026-07-27 12:15:06 +08:00
Chinesezjc
d2bb2a809b
fix(web-todo): dock-owned selection, keyboard-openable row, documented tail todos field
...
Three ds-review-bot round-8 findings on the todo display surfaces.
TodoPanel took the whole `useSession` hook and cast the snapshot to reach
`todos`, which put slot plumbing and an unchecked cast inside the presentation
component. The panel now takes `todos: readonly TodoItem[]`; TodoDock does the
selecting, matching the QueueDock posture the dock slot already establishes.
The todo row carried `onClick` with no keyboard route, so its details panel was
mouse-only. It now takes ToolRow's route verbatim: `role="button"`,
`tabIndex={0}`, and an Enter/Space handler that claims the event. The row stays
a `<div>` because a `<button>` flattens its inline spans.
`session.history`'s tail-only `todos` field was documented at the TS signature
but not in the apiproxy README pair, and the Agent Note claimed the feature
added no new wire vocabulary. Both README sides now state the tail/omission
semantics (an omitted field on a tail response is the empty plan, not unchanged
state), and the note records the one added field instead of denying it.
Tests: TodoPanel specs render the plain list; new TodoDock specs cover selection,
live follow, rollback-to-empty, and the registration shape; a new row spec pins
Enter/Space activation and non-activating keys.
2026-07-27 12:08:46 +08:00
imccyu
c132cbdb6a
Adapt session model selection to the slash/input/session architecture
...
- host trio kept on the merged api-proxy: session.models (provider-grouped
advisory directory), session.selectModel (validated provider, advisory
model), installAgentLlmTarget threaded through create/resume/ensureSession;
the gateway declares the llm inject it reads
- history no longer piggybacks modelTarget: the current target travels on
session.models alone (the /model popup is the sole consumer)
- new @deepseek-ai/dsh-client-ui-model plugin: /model popupSelect over the
wire — options load the directory (group label in the detail column,
provider-local failures listed inline), onSelect routes selectModel;
failures ride the popup shell's error/retry surface
- ModelSelector package, conversation.composer.control slot, and the
Session-side modelSelection state machine are removed: model selection
belongs to the /model popup; the named conversation.input.model seat
stays empty until a control-seat entry is designed for it
2026-07-27 10:28:45 +08:00
imccyu
6539c8d8fa
Merge master (slash/input/session architecture) into web-session-model-selector
2026-07-27 10:23:51 +08:00
_Kerman
1aefcbf4d7
fix(apiproxy): derive queued steering on the client, drop it from the wire
...
The session/queued frame no longer carries steering — AgentMessage no longer
has the field. The client derives it from the same ordered turn boundaries the
host saw (a frame arriving while a turn is open joined the steering FIFO).
2026-07-27 10:22:28 +08:00
imccyu
9d63d75a6f
Merge remote-tracking branch 'origin/master' into web2-todo
...
# Conflicts:
# packages/client/connection/src/client/fixture.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/tests/chat-stats-bash-sample.spec.tsx
# packages/client/ui-conversation/tests/chat-toolview-slot.spec.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/client/ui-conversation/tests/gate-branch-tails.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/client/ui-trajectory/tests/views.spec.tsx
2026-07-27 10:07:51 +08:00
_Kerman
2f74ac98ba
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# .agents/notes/archived/feature/2026-07-21-tui-steering-queue-badge.i18n.yaml
# .agents/notes/archived/simplification/2026-06-20-drop-unconsumed-llm-assembled-surfaces.i18n.yaml
# .agents/notes/archived/simplification/2026-07-04-prune-producerless-vocabulary-variants.i18n.yaml
# .agents/notes/archived/simplification/2026-07-04-remove-agent-steering-mirror.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml
# .agents/notes/implemented/feature/2026-07-07-session-prefix.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# packages/core/session/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/support/acp-snapshot/README.i18n.yaml
# packages/support/acp-snapshot/README.md
# packages/support/acp-snapshot/README.zh.md
2026-07-27 09:57:51 +08:00
imccyu
f6396f2573
style: fix lint across client packages
...
eslint --fix autofixes plus manual repairs: max-len line splits
(fake-api handlers, notifier/slots JSDoc, spec signatures), charAt over
non-null-asserted indexing in slash detect/menu cores, Array.from for
code-point capping, typeof assertions for unbound-method in specs,
generic getByRole for the send-button cast, effect disposer void-wrap in
command register, and dropped unused type imports.
2026-07-27 04:13:00 +08:00
imccyu
a27be43ac1
feat: slash system / input service / agent scope
2026-07-27 03:28:39 +08:00
Chinesezjc
c5a5a65c67
Merge remote-tracking branch 'origin/master' into web2-todo
...
# Conflicts:
# packages/client/runtime/README.md
2026-07-26 17:04:11 +08:00
_Kerman
8117f61396
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# packages/context/workspace-context/README.md
# packages/llm/llm-retry/README.md
# packages/session-persistence/session-checkpoint-policy/README.md
# scripts/type-equiv.manifest.json
2026-07-26 16:45:27 +08:00
_Kerman
3d1fe7b45f
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-26 15:46:29 +08:00
_Kerman
57d90c343d
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# .agents/notes/implemented/feature/2026-06-14-acp-agent-client-protocol.md
# .agents/notes/implemented/feature/2026-06-14-acp-agent-client-protocol.zh.md
# .agents/notes/implemented/feature/2026-06-30-hook-bridges.i18n.yaml
# .agents/notes/implemented/feature/2026-06-30-interception-seams.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-sandbox.md
# .agents/notes/implemented/feature/2026-07-06-sandbox.zh.md
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml
# .agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml
# .agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml
# docs/architecture.i18n.yaml
# docs/cookbook/adding-a-tool.i18n.yaml
# docs/cookbook/extension-cookbook.i18n.yaml
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/core-data-structures/tools.i18n.yaml
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/stdout.expected.jsonl
# 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/permission-switching/session.jsonl
# examples/acp-agent/tests/snapshots/plan-mode-reject/session.jsonl
# examples/acp-agent/tests/snapshots/plan-mode/session.jsonl
# examples/acp-agent/tests/snapshots/session-sandbox-root/session.jsonl
# packages/context/session-reference/README.md
# packages/core/agent-loop/tests/agent.spec.ts
# packages/hooks/hooks-claude/tests/coverage-cases.ts
# packages/host/runtime/tests/host-runtime.spec.ts
# packages/llm/llm-retry/tests/retry.spec.ts
# packages/session-persistence/session-persistence/src/coordinator.ts
# packages/support/acp-snapshot/README.md
# packages/support/acp-snapshot/src/normalize.ts
# packages/ui/acp/acp-feature-support.md
# packages/ui/acp/src/codec.ts
# packages/ui/acp/src/index.ts
# packages/ui/acp/tests/bridge.spec.ts
# packages/ui/acp/tests/codec.spec.ts
# packages/ui/acp/tests/config-options.spec.ts
# packages/ui/acp/tests/dispose.spec.ts
# packages/ui/acp/tests/edges.spec.ts
# packages/ui/acp/tests/stream-update.spec.ts
# packages/ui/acp/tests/turns.spec.ts
2026-07-26 14:05:33 +08:00
Tianyi Cui
030973e4ab
Merge branch 'master' into worktree/i18n-complete-non-readme
2026-07-26 13:31:20 +08:00