Dudu-0223
99a778d63f
feat(subagent): continuable background subagents
...
Implement the continuable background subagents RFC: a durable child
session with a series of Task-backed activations, each disposing its
run before the Task settles.
- dsh-subagent: rename SubagentRun.sendMessage to strict steer, drop
run-level resume, add SubagentProvider.resume dispatch via
SubagentService.resume, the continuation start field, and the
versioned model-hidden subagent/descriptor session event.
- dsh-subagent-inprocess/-spawn/-fork: publish the control-allocated
child id, append the descriptor inside the initial turn, implement
cold resume from the child's own transcript under the live parent
scope, and strict running-only steer.
- dsh-subagent-control (new): SubagentControlService owning stable
child ids, descriptor snapshot/fold/authorization, Task-backed
activation with settle-then-dispose ordering, the process-local
active-run association, and steer-or-resume sendMessage routing.
- dsh-tool-subagent: background route branches on the provider's
resume capability (continuable via the control service; one-shot
task for ACP), returning both child and task ids.
- dsh-tool-subagent-control (new): the globally named send_message
tool rendering steered/started routes.
Keyless coverage spans Task ownership and disposal ordering, running
delivery, cold follow-up, descriptor rejection and rollback, known-id
reconstruction, kill during lookup, admission races, and a new
subagent-continuable ACP snapshot scenario.
2026-08-02 04:34:15 +08:00
Tianyi Cui
b6284c8467
fix(review): audit prepared-wrapper activation and pin generated shapes
...
ds-review-bot round 1 on the DSH-home integration:
- generated wrappers now inject the services their manifest needs (skills/
tools beside loader), and loadPreparedRepository rejects a wrapper fiber
that settles anything but ACTIVE — a composition missing a required
service fails the repository transaction instead of committing an ACTIVE
row over a silently PENDING child (critical finding)
- the github: source ref segment excludes '#', so 'a#b' refs fail at the
config parser with the promised syntax instead of inside pnpm
- watchPersonalPatches re-reads the include's non-patch options per refresh
instead of a registration-time snapshot
- the TUI smoke's cache-seeded wrapper is produced by the real
prepareDshPlugin (cache LAYOUT stays a deliberate external pin)
- new Loader integration test drives a live repositories update through
entry.update: generation swap, old skills removed, failed candidate
rolled back to the previous generation
2026-08-02 01:29:04 +08:00
Tianyi Cui
2448496803
feat: configure repository plugins from DSH home
2026-08-02 01:29:04 +08:00
Tianyi Cui
0664b25cd9
fix(review): validate skill roots at mount and isolate provider default roots
...
ds-review-bot round 1 on the repository-plugin runtime:
- a manifest-declared skill root absent or non-directory in the installed
package now fails the plugin load (skill-local treats a missing root as
legitimately empty, which silently mounted a skill-less plugin)
- includeDefaultRoots: false no longer inherits $DSH_BUNDLED_SKILL_DIR, so
isolated repository providers see only their explicit roots
- prepared wrapper baseUrl schema requires the file: scheme, failing hostile
URLs at the declared validation boundary
- preparedPath reuses format.ts's isOutside; SERVER_NAME_PATTERN is exported
and pinned equal to dsh-mcp-client's, with the restatement justified (the
prepare bin keeps a zod-only module graph); the unexplained `as never`
cast now carries its schemastery rationale
- the import-free wrapper assertion also rejects dynamic import(
- the headless fixture wrapper is regenerated by the real prepareDshPlugin
and a drift test pins fixture == generator output
- prepareDshPlugin JSDoc states the non-atomic publish repair contract
2026-08-02 01:25:02 +08:00
Tianyi Cui
fa7051a9d1
feat: add static repository plugin format
2026-08-02 01:25:02 +08:00
Turtle
20e51abd4e
feat: rename experimental-meta/-upgrade to meta/upgrade behind --experimental gate
2026-07-31 23:37:53 +08:00
Turtle
60a0bcd358
feat(cli): mark meta and upgrade commands experimental
2026-07-31 20:16:19 +08:00
Tianyi Cui
6e26f9fd83
Merge latest master into manual compaction
...
# Conflicts:
# apps/cli/README.i18n.yaml
# docs/architecture.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/compact/compact-basic/README.i18n.yaml
# packages/pty/pty-local/tests/index.spec.ts
2026-07-31 17:57:11 +08:00
Hypatia May
a23a6bdd15
Merge origin/master into codex/status-bar-token-metrics
...
Resolve the agent-loop import conflict by retaining both durable request context and runtime policy context. Refresh the combined session fixtures and regenerate documentation catalogs. Mark PDF artifacts as binary so staged whitespace checks do not parse PDF bytes as text.
2026-07-31 16:53:03 +08:00
Tianyi Cui
1352c4ecd2
Merge remote-tracking branch 'origin/master' into worktree/pr962-mergeable-20260731
2026-07-31 16:03:36 +08:00
Wenlu Wang
9e11f438f3
Merge pull request #1035 from deepseek-harness/codex/web-default-search
...
feat(web): enable default search
2026-07-31 16:01:26 +08:00
NI0317
ee404357a4
Merge origin/master into codex/sandbox-policy-context
2026-07-31 15:46:42 +08:00
Tianyi Cui
7906c1032f
Merge pinned master into status bar token metrics
2026-07-31 15:41:52 +08:00
Hypatia May
1114a80a45
Merge branch 'fix/web-transcript-projection' into feat/manual-compact-single-lock
...
# Conflicts:
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
2026-07-31 15:36:49 +08:00
kingwl
c08e8d00f7
Merge origin/master into codex/web-default-search
...
# Conflicts:
# apps/web/tests/scaffold.ts
2026-07-31 15:26:29 +08:00
Chinesezjc
1c58d8daeb
Merge pull request #974 from deepseek-harness/feat/search-presenter
...
feat(fs): add a search render-intent card for grep and glob results
2026-07-31 15:24:22 +08:00
NI0317
3da219461c
Merge origin/master into codex/sandbox-policy-context
2026-07-31 15:03:11 +08:00
imccyu
ef01e2e9af
Merge pull request #1046 from deepseek-harness/worktree-infdev01
...
Shared anonymous user id from $DSH_HOME/.userid, reported as OTel Resource user.id
2026-07-31 14:49:00 +08:00
Chinesezjc
62275b6cd6
Merge remote-tracking branch 'origin/master' into feat/search-presenter
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/tools.i18n.yaml
# docs/core-data-structures/tools.md
# docs/core-data-structures/tools.zh.md
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/tools/README.i18n.yaml
# packages/core/tools/README.md
# packages/core/tools/README.zh.md
# packages/core/tools/src/index.ts
# packages/core/tools/src/presentation.ts
# packages/ui/tui/src/components/transcript.ts
2026-07-31 14:40:29 +08:00
Tianyi Cui
e371311203
Merge latest Web transcript parent into manual compaction
...
# Conflicts:
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/client/runtime/README.i18n.yaml
2026-07-31 14:39:20 +08:00
Chinesezjc
538488506f
Merge pull request #973 from deepseek-harness/feat/read-presenter
...
feat(fs): add a read render-intent card for the read tool result
2026-07-31 14:30:31 +08:00
imccyu
bff581ffb3
feat(telemetry): anonymous user id from $DSH_HOME/.userid, reported as OTel Resource user.id
...
session-telemetry-otel owns the identity as its own module (src/user-id.ts):
getOrCreateAnonymousUserId() returns the bare UUID line in $DSH_HOME/.userid,
minting a random UUID v4 on first use — synchronous IO with a process-lifetime
memo keyed by resolved path, an exclusive-create (wx) settle for concurrent
first launches, best-effort on read-only homes, and deletion resetting the
identity on the next launch by design.
The backend carries the id as the Resource's user.id (the OTel semconv user
attribute), once per export batch alongside service.name/service.version.
The identity belongs to the OTel feed alone; the dsh-sdk launcher telemetry
keeps its own separate store.
2026-07-31 14:28:03 +08:00
Tianyi Cui
6a31f5bf2a
Merge finalized Web transcript parent
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-30-session-end-seed-log-boundary.i18n.yaml
2026-07-31 14:11:40 +08:00
Tianyi Cui
e088cfa59d
refactor(sandbox-policy): remove capability family registries
2026-07-31 13:49:41 +08:00
Tianyi Cui
98f48fd83a
Merge finalized Web transcript parent
...
# Conflicts:
# apps/cli/README.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-trajectory/README.i18n.yaml
# packages/client/ui-trajectory/README.zh.md
2026-07-31 13:42:47 +08:00
Yichen Jiang
48152a7a1d
merge master and address permission settings review
2026-07-31 13:24:30 +08:00
Chinesezjc
59abbb5964
Merge remote-tracking branch 'origin/master' into feat/search-presenter
2026-07-31 13:04:53 +08:00
Tianyi Cui
fbf28700af
Merge master into codex/sandbox-policy-context
...
# Conflicts:
# apps/web/tests/snapshots/live-interactions/retry.expected.md
# apps/web/tsconfig.json
# tsconfig.host.json
2026-07-31 13:04:21 +08:00
Chinesezjc
a2fa8ccbcf
Merge remote-tracking branch 'origin/master' into feat/read-presenter
2026-07-31 13:03:05 +08:00
kingwl
5759c287a2
fix(web): narrow default search review scope
2026-07-31 12:58:50 +08:00
kingwl
902926c7bb
feat(web): enable default search and fetch
2026-07-31 12:58:06 +08:00
Yichen Jiang
ee74b5b07a
feat(permission): add new-session default setting
2026-07-31 12:48:19 +08:00
Yichen Jiang
2e07da19e5
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# apps/cli/README.i18n.yaml
# apps/cli/README.md
# apps/cli/README.zh.md
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
2026-07-31 11:39:58 +08:00
Chinesezjc
df5b09cd6e
Merge remote-tracking branch 'origin/master' into feat/search-presenter
...
# Conflicts:
# docs/config-catalog.md
# docs/cookbook/adding-a-tool.i18n.yaml
# docs/cookbook/adding-a-tool.md
# docs/cookbook/adding-a-tool.zh.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/tools.i18n.yaml
# docs/core-data-structures/tools.md
# docs/core-data-structures/tools.zh.md
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/tools/README.i18n.yaml
# packages/core/tools/README.md
# packages/core/tools/README.zh.md
# packages/core/tools/src/index.ts
# packages/core/tools/src/presentation.ts
# packages/fs/tool-fs-search/src/glob.ts
# packages/fs/tool-fs-search/src/index.ts
# packages/ui/tui/src/components/transcript.ts
# packages/ui/tui/tests/tui.spec.ts
2026-07-31 11:31:32 +08:00
NI0317
05c4b916cb
Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context
2026-07-31 11:05:02 +08:00
NI0317
4e1ccebfff
Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context
...
# Conflicts:
# examples/acp-agent/tests/goal-snapshots/goal-session/session.expected.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/acp-agent/tests/snapshots/bash-spill/session.jsonl
# examples/acp-agent/tests/snapshots/bash-tool-turn/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/cancel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/cancel/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
# examples/acp-agent/tests/snapshots/error-finish/session.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-edit/session.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/lsp-definition/session.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/session.jsonl
# examples/acp-agent/tests/snapshots/packed-chunks/session.jsonl
# examples/acp-agent/tests/snapshots/parallel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/pty-tools/session.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/session.jsonl
# examples/acp-agent/tests/snapshots/session-query-spill/session.jsonl
# examples/acp-agent/tests/snapshots/session-sandbox-root/session.jsonl
# examples/acp-agent/tests/snapshots/session-title-after-turn/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/acp-agent/tests/snapshots/todo-write/session.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/session.jsonl
# examples/acp-agent/tests/snapshots/web-fetch/session.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.1.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/session.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/session.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/stream-json.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/child.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/parent.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/session.jsonl
# packages/core/agent-loop/src/agent.ts
2026-07-31 11:02:45 +08:00
Hypatia May
3a99cf7446
Merge current master into status bar projection
2026-07-31 10:56:34 +08:00
Chinesezjc
83fff705da
Merge remote-tracking branch 'origin/master' into feat/read-presenter
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/tools.i18n.yaml
# docs/core-data-structures/tools.md
# docs/core-data-structures/tools.zh.md
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/session.jsonl
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/tools/README.i18n.yaml
# packages/core/tools/README.md
# packages/core/tools/README.zh.md
# packages/core/tools/src/index.ts
# packages/core/tools/src/presentation.ts
# packages/ui/tui/src/components/transcript.ts
2026-07-31 10:42:07 +08:00
Yichen Jiang
d3c6638b6d
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# apps/cli/README.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
2026-07-31 10:19:14 +08:00
Hypatia May
01e64c6350
Merge finalized Web transcript parent
2026-07-31 09:46:32 +08:00
Hypatia May
ff8c5600f4
Merge pinned master into status bar projection
2026-07-31 09:28:52 +08:00
imccyu
59ce4086ae
Merge remote-tracking branch 'origin/master' into mergebot/pr711
...
# Conflicts:
# packages/client/ui-workspace/src/client/WorkspaceBrowser.tsx
# packages/client/ui-workspace/src/client/index.ts
# packages/client/ui-workspace/src/client/rows/Rows.tsx
# packages/client/ui-workspace/src/client/tree.ts
# packages/client/ui-workspace/tests/apply.spec.ts
# packages/client/ui-workspace/tests/rows.spec.tsx
# packages/client/ui-workspace/tests/tree.spec.ts
# packages/client/ui-workspace/tests/workspace-browser.spec.tsx
2026-07-31 04:37:08 +08:00
imccyu
2e034bbbd3
Merge remote-tracking branch 'origin/master' into mergebot/pr711
...
# Conflicts:
# apps/cli/README.i18n.yaml
# docs/module-graph.md
# packages/client/connection/README.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
2026-07-31 02:02:47 +08:00
Tianyi Cui
464a57d3ca
Merge commit 'refs/codex/pr1006/master' into worktree/pr1006-merge-20260731
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/headless-agent/cordis.yml
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm-deepseek/README.md
# packages/llm/llm-deepseek/README.zh.md
# packages/llm/llm-deepseek/src/adapter.ts
# packages/llm/llm-deepseek/src/index.ts
# packages/llm/llm-deepseek/tests/adapter.spec.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.md
# packages/llm/llm/README.zh.md
# packages/subagent/subagent-dsh-sdk/README.i18n.yaml
# packages/ui/jsonrpc/README.i18n.yaml
2026-07-31 01:55:19 +08:00
imccyu
ecbd8babc1
Merge remote-tracking branch 'origin/master' into mergebot/pr711
...
# Conflicts:
# apps/cli/README.i18n.yaml
# apps/cli/README.md
# apps/cli/README.zh.md
# apps/cli/cordis.yml
# apps/cli/package.json
# docs/config-catalog.md
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/contract/sessions.ts
# packages/client/test-runtime/src/sessions.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/src/client/tree.ts
# packages/client/ui-workspace/tests/apply.spec.ts
# packages/client/ui-workspace/tests/tree.spec.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/tests/client-handler.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
# pnpm-lock.yaml
2026-07-31 01:28:15 +08:00
Hypatia May
f3963686bd
Merge final Web parent into manual compact
2026-07-31 00:38:21 +08:00
NI0317
99aff882dc
Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context
...
# Conflicts:
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/web-fetch/session.jsonl
2026-07-31 00:33:13 +08:00
Yichen Jiang
e8c550d0e5
Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config
2026-07-31 00:31:42 +08:00
Yichen Jiang
f64026d7e3
Merge latest master into worktree-llm-dynamic-config
2026-07-31 00:31:06 +08:00
Tianyi Cui
8eb743a93b
Merge remote-tracking branch 'origin/master' into worktree/pr975-retarget-20260730
2026-07-30 23:55:45 +08:00