_Kerman
b1af35145b
fix: enforce message snapshot invariants
2026-07-28 15:33:00 +08:00
07akioni
c30c891628
fix: ci
2026-07-28 15:21:34 +08:00
_Kerman
0225d598e3
fix: preserve message occurrence contracts
2026-07-28 14:44:15 +08:00
creatixchu
d2fea6d789
fix(apiproxy): refuse non-JSON media types on /api POST bodies
...
Browsers send "simple" POSTs (text/plain, form encodings) without a CORS
preflight, so a malicious page could execute side-effectful RPCs blind —
the response stays unreadable cross-origin, but session.prompt would
still run. The carrier now answers 415 unless the declared media type is
application/json, forcing every cross-site attempt into a preflight this
server never answers. Raw-fetch specs gain the header; a new handler case
proves the fence rejects before the impl runs.
2026-07-28 14:40:13 +08:00
07akioni
b926044c13
feat: click file name to open file in toolcall, remove hover bg of toolcall, do not trigger sidebar any more (follow designer's instruction)
2026-07-28 14:24:41 +08:00
_Kerman
350c296cff
fix: complete immutable message migration
2026-07-28 14:15:23 +08:00
_Kerman
fbf87e660c
refactor: identify and freeze messages at creation
2026-07-28 13:55:59 +08:00
Yichen Jiang
004f598917
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/config-catalog.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/README.i18n.yaml
# packages/client/connection/src/client/fixture.ts
# packages/client/connection/src/index.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-trajectory/tests/views.spec.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/src/api/sessions.ts
# packages/host/apiproxy/src/index.ts
# packages/host/apiproxy/tests/fetch-carrier.spec.ts
# packages/llm/llm-deepseek/src/adapter.ts
# packages/llm/llm-deepseek/tests/adapter.spec.ts
# packages/llm/llm-deepseek/tests/serialize.spec.ts
# packages/llm/llm-pi-ai/README.i18n.yaml
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm-pi-ai/src/index.ts
# packages/llm/llm-pi-ai/tests/adapter.spec.ts
# packages/llm/llm/src/types.ts
# packages/ui/tui/README.i18n.yaml
# packages/ui/tui/src/index.ts
# packages/ui/tui/tests/tui.spec.ts
2026-07-28 11:41:40 +08:00
imccyu
a3bdec4450
Merge remote-tracking branch 'origin/master' into worktree-guifork
2026-07-28 10:23:48 +08:00
Hypatia May
05d4c19085
Merge remote-tracking branch 'origin/master' into codex/basic-session-search
...
# Conflicts:
# apps/web/tests/snapshots/question-composer/answered.expected.md
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/tests/fake-api.ts
# 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/client/ui-workspace/tests/apply.spec.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/src/api/sessions.schema.ts
# packages/host/apiproxy/src/fetch/client.ts
# packages/host/apiproxy/src/fetch/handler.ts
# packages/host/apiproxy/tests/fetch-carrier.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
# packages/session-query/session-query/tests/search-helpers.spec.ts
2026-07-28 09:27:28 +08:00
imccyu
755ce21334
refactor: brand the command lifecycle pairing id as CommandId
...
commandId crosses three boundaries (session log, wire admission response,
client flow pairing), so per the branded-id rule it becomes
Branded<'CommandId'>, declared in a new pure @deepseek-ai/dsh-commands/brand
outlet (the dsh-llm/brand shape: type + constructor, no Context merges, so
wire and client programs can name it without loading the host plugin). The
event payloads, CommandExecution, and the executor mint carry the brand; the
wire schema gains commandIdSchema as the domain's single brand-cast point
(the approvals precedent); CommandNode and the fixture's fabrication cast
follow type-only.
2026-07-28 01:37:45 +08:00
imccyu
2c5c1e72ba
fix: merge conflicts
2026-07-28 00:45:27 +08:00
imccyu
af70af4020
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
2026-07-28 00:39:24 +08:00
imccyu
e78edd6ae4
refactor: retire the session/title frame and the todos history rider from the wire
2026-07-27 23:07:46 +08:00
imccyu
6f47df0913
feat: session/projection push frame; tail block reads the watermark snapshot
2026-07-27 23:07:16 +08:00
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
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
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
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
Hypatia May
891e9035e7
feat(web): add basic past-session search (round 1)
2026-07-27 12:15:06 +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