Yichen Jiang
c0d7ef22ec
fix(subagent-acp): repair the composition fixture for the merged depth budget
...
Master landed the tool-subagent depth budget while this branch was in
flight: the numeric default maxDepth now fails the mount against the
ACP provider's depthLimit: false, so the composition fixture must state
maxDepth: 'provider-managed' — the documented opt-out for a provider
whose recursion budget lives in the child harness. The fixture also
moves off the retired stdio-demo REPL onto the current app-boot driver
pattern (runLoaderSmoke + one-shot cli), and the split isDirectory
statements gain the file-not-a-directory case the single-expression
form used to cover implicitly.
2026-07-21 17:14:10 +08:00
Yichen Jiang
6fe8cfb5d1
Merge branch 'fix/acp-subagent-cwd' of github.com:deepseek-harness/deepseek-harness into fix/acp-subagent-cwd
2026-07-21 16:53:46 +08:00
Yichen Jiang
822651a2c7
test(subagent-acp): cover inherited cwd through a Loader composition
...
The inheritance branch ran only under hand-mounted plugin tests, and
the with-key e2e always configures an explicit cwd. Add a test-only
cordis.yml (scripted delegating model + the scripted mock ACP child)
booting the stdio app through the real Loader with cwd omitted: the
child proves it ran in — and was announced — the parent session's
workspace, keylessly.
2026-07-21 16:53:26 +08:00
Yichen Jiang
04117b58bd
docs(subagent): align the parent contract with ACP cwd inheritance
...
SubagentStartRequest.parent, its core-data type-equiv mirror, and the
ACP backend Agent Note still said the out-of-process backend ignores
request.parent — no longer true: with cwd unconfigured it reads exactly
the session header's cwd, and a parent session without one now rejects
at start. State the one-field read at each owning contract, record the
workspace-resolution decision in the Agent Note, and align the README's
accessibility wording with the search-permission guard.
2026-07-21 16:51:49 +08:00
Yichen Jiang
fcbbd22af7
fix(subagent-acp): require search permission on the child cwd
...
statSync().isDirectory() is true for a mode-600 directory, but a
subprocess cwd needs X_OK — spawn would fail EACCES, deferring a
self-contained configuration error past the load/start boundary the
resolution owns. Probe accessSync(X_OK) alongside the type check so
"not an accessible directory" is literally what the guard verifies.
2026-07-21 16:51:32 +08:00
Yichen Jiang
e7220ccef4
Merge branch 'master' into fix/acp-subagent-cwd
2026-07-20 21:11:13 +08:00
Tianyi Cui
ff6359a0cd
docs(subagent): close review contract gaps
2026-07-20 18:10:31 +08:00
Tianyi Cui
46d60d6d90
fix(tool-subagent): enforce depth only at runtime
2026-07-20 17:58:57 +08:00
Tianyi Cui
1a1ff56ab7
fix(tool-subagent): default maxDepth to 3
2026-07-20 17:12:14 +08:00
Yichen Jiang
d919e1b813
Merge remote-tracking branch 'origin/master' into fix/acp-subagent-cwd
...
# Conflicts:
# packages/subagent/subagent-acp/README.md
2026-07-20 15:19:25 +08:00
Yichen Jiang
f2a813b791
Merge remote-tracking branch 'origin/master' into fix/subagent-depth-budget
2026-07-20 15:15:31 +08:00
Tianyi Cui
e8eddc7ef8
Rename RFCs to Agent Notes
2026-07-19 22:52:03 +08:00
Tianyi Cui
a278374e8f
docs: structure model experience fields
2026-07-19 18:08:42 +08:00
Tianyi Cui
bcc920369c
docs: document package KV cache effects
2026-07-19 17:39:50 +08:00
Yichen Jiang
cb74477d42
feat(tool-subagent): default maxDepth 1 with at-cap schema hiding
...
An omitted maxDepth meant unbounded recursion, and the shipped examples
shipped that default. maxDepth now defaults to 1; a numeric cap requires
the provider's depthLimit capability (the mount fails loud and points to
the explicit 'provider-managed' opt-out for out-of-process providers),
and a child AT the cap loses the delegating tool from its own schema via
the child toolFilter — prompt-face hiding on top of the execution-face
depth check. Examples pin maxDepth explicitly. The ACP snapshot harness
gains Scenario.childToolOmissions so a child session may legitimately
omit declared delegation tools from its pinned header and prompt;
affected subagent/workflow goldens are re-recorded.
2026-07-19 17:20:49 +08:00
Yichen Jiang
0d00106fa8
fix(session): persist the delegation depth in the session header
...
A subagent child's recursion depth lived only in runtime AgentOptions,
so a persisted child came back from resume counted as top-level and
maxDepth stopped binding after every restart. Add
SessionHeader.delegationDepth, round-trip it through the JSONL and
SQLite backends (SQLite schema v5), restore it on agent-loop resume,
and write it when the in-process backends create a child. The seam now
owns the shared depth vocabulary (delegationDepthOf): the persisted
header is authoritative and monotone — runtime options may deepen it
but never lower it.
2026-07-19 17:20:36 +08:00
Yichen Jiang
b758a7496b
fix(subagent-acp): reject an empty config cwd at load
...
path.resolve('') is the process cwd, so an empty configured cwd would
silently reintroduce the launch-directory fallback the parent-session
cwd resolution removed. Fail at plugin load with an actionable message
instead.
2026-07-19 15:56:32 +08:00
Yichen Jiang
c432f85c07
fix(subagent-acp): resolve child cwd from the parent session
...
The ACP backend resolved an unset cwd to the harness process's launch
directory, so a delegated child ran — and announced its ACP session —
in the server's cwd instead of the delegating session's workspace.
Resolve the working directory explicitly: the config cwd override
(made absolute and validated at load), else the parent session
header's cwd (validated at start), failing loud before spawning when
neither exists.
2026-07-19 15:23:17 +08:00
Tianyi Cui
4dda5b953b
refactor(subagent): retire standalone mock package
2026-07-19 11:54:37 +08:00
Tianyi Cui
d41d987de7
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-19 02:21:46 +08:00
Tianyi Cui
9f1a69366b
docs: tighten identity bridge prose
2026-07-19 02:18:59 +08:00
Tianyi Cui
21e1a08b55
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-19 01:57:27 +08:00
Tianyi Cui
b61e68ae8c
Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-19 01:55:29 +08:00
Tianyi Cui
f65f4b82d7
Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/agent.ts
# packages/core/agent-loop/src/index.ts
# packages/core/agent-loop/tests/agent.spec.ts
# packages/core/agent-loop/tests/contract-regressions.spec.ts
# website/zh-CN/api/harness/agent-loop.md
2026-07-19 01:54:03 +08:00
Tianyi Cui
50f0291b93
Merge latest origin/master into parallel-tool-call
...
# Conflicts:
# docs/architecture.md
# examples/acp-agent/tests/snapshots/bash-spill/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/hook-cc-pretool-ask/session.jsonl
# packages/core/agent-loop/src/loop.ts
2026-07-18 15:09:39 +08:00
Tianyi Cui
21ec178841
docs: tighten parallel tool-call prose
2026-07-18 14:59:26 +08:00
Tianyi Cui
c52e6f13af
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-18 14:27:59 +08:00
Tianyi Cui
0f85ae0a9d
fix(subagent): identify lifecycle runs explicitly
2026-07-18 14:26:14 +08:00
Tianyi Cui
5af8b38b36
Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue
...
# Conflicts:
# docs/testing.md
2026-07-18 14:05:54 +08:00
Tianyi Cui
a8150815ba
Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id
...
# Conflicts:
# packages/subagent/subagent-acp/package.json
# packages/subagent/subagent-acp/tests/mock-acp-server.ts
# pnpm-lock.yaml
# website/zh-CN/api/harness/agents.md
2026-07-18 14:01:03 +08:00
Tianyi Cui
6b18db92d6
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-18 12:34:11 +08:00
Tianyi Cui
35473c2701
Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue
...
# Conflicts:
# AGENTS.md
# docs/config-catalog.md
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/advanced-toolchain/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/cancel/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/config-options/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/error-finish/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-approved/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-edit/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-read/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-terminal-card/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/fs-write/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/handshake/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-block/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-block/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/permission-switching/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/skill-load/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/text-turn/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/todo-plan/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/stdout.golden.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/stdout.golden.jsonl
# packages/ui/acp/README.md
# packages/ui/acp/src/index.ts
# packages/ui/jsonrpc/README.md
# packages/ui/jsonrpc/src/server.ts
2026-07-18 12:25:33 +08:00
Tianyi Cui
59dc310bb5
Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id
...
# Conflicts:
# docs/architecture.md
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/coding-agent/tests/code-mode.e2e.ts
# examples/coding-agent/tests/coding-task.e2e.ts
# examples/coding-agent/tests/compaction.e2e.ts
# examples/coding-agent/tests/full-loop.e2e.ts
# examples/coding-agent/tests/todo-write.e2e.ts
# examples/cordis-agent/tests/cordis-tools.e2e.ts
# packages/bash/tool-bash/tests/integration.spec.ts
# packages/bash/tool-bash/tests/tools.spec.ts
# packages/compact/compact-basic/tests/compact-loop-repro.spec.ts
# packages/context/time-context/tests/time-context.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/cordis/tool-cordis/tests/integration.spec.ts
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/agent.ts
# packages/core/agent-loop/src/index.ts
# packages/core/agent-loop/tests/agent.spec.ts
# packages/core/agent-loop/tests/cancel.spec.ts
# packages/core/agent-loop/tests/config-session-id.spec.ts
# packages/core/agent-loop/tests/contract-regressions.spec.ts
# packages/core/agent-loop/tests/coverage-edges.spec.ts
# packages/core/agent-loop/tests/interception.spec.ts
# packages/core/agent-loop/tests/loop.spec.ts
# packages/core/agent-loop/tests/properties.spec.ts
# packages/core/agent-loop/tests/request-cache.e2e.ts
# packages/core/agent-loop/tests/request-reconstruction.spec.ts
# packages/core/agent-loop/tests/resume.spec.ts
# packages/core/agent-loop/tests/scope-lifecycle.spec.ts
# packages/core/agent-loop/tests/tool-order.spec.ts
# packages/core/agent-loop/tests/turn-stop.spec.ts
# packages/core/agent/src/types.ts
# packages/examples/agent-spine-demo/README.md
# packages/examples/agent-spine-demo/tests/agent-core.spec.ts
# packages/examples/stdio-demo/README.md
# packages/examples/stdio-demo/src/index.ts
# packages/examples/stdio-demo/tests/stdio-agent.spec.ts
# packages/fs/tool-fs/tests/fs-tools.e2e.ts
# packages/guard/repeat-tool-guard/tests/repeat-tool-guard.spec.ts
# packages/hooks/hooks-claude/tests/bridge.spec.ts
# packages/hooks/hooks-claude/tests/coverage.spec.ts
# packages/hooks/hooks-codex/tests/bridge.spec.ts
# packages/hooks/hooks-codex/tests/coverage.spec.ts
# packages/subagent/subagent-fork/tests/multi-subagent.spec.ts
# packages/subagent/subagent-fork/tests/subagent-fork.spec.ts
# packages/subagent/subagent-inprocess/tests/structured.spec.ts
# packages/subagent/subagent-inprocess/tests/subagent-inprocess.spec.ts
# packages/subagent/subagent-spawn/tests/spawn.e2e.ts
# packages/subagent/subagent-spawn/tests/subagent-spawn.spec.ts
# packages/todo/tool-todo/tests/integration.spec.ts
# packages/ui/acp/tests/dispose.spec.ts
# packages/ui/acp/tests/edges.spec.ts
# packages/workflow/workflow-workerthread/tests/integration.spec.ts
2026-07-18 12:21:15 +08:00
imccyu
5ed531acba
ci(examples): run examples / testing from built lib/js
2026-07-17 23:07:51 +08:00
Tianyi Cui
3e07f9b270
Merge latest origin/master into parallel-tool-call
2026-07-17 22:28:38 +08:00
Tianyi Cui
688b95a7e5
Merge origin/master into parallel-tool-call
2026-07-17 22:13:33 +08:00
Tianyi Cui
53680ee6bc
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# packages/context/time-context/tests/time-context.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/session/README.md
# packages/core/session/src/types.ts
# packages/core/session/tests/surface.spec.ts
# packages/examples/acp-demo/tests/acp-agent.spec.ts
# packages/examples/stdio-demo/tests/stdio-agent.spec.ts
# packages/hooks/hooks-claude/tests/coverage.spec.ts
# packages/hooks/hooks-codex/tests/coverage.spec.ts
# packages/session-query/session-query/tests/session-query.spec.ts
# packages/support/invariants/tests/invariants.spec.ts
# packages/ui/acp/tests/harness.ts
2026-07-17 21:56:10 +08:00
Yichen Jiang
d3b959389a
test(support): add shared AgentLoop testkit
2026-07-16 17:39:53 +08:00
Yichen Jiang
97190c81ba
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
2026-07-16 16:39:13 +08:00
Dudu-0223
17fe9e5b1e
fix(agent-loop): tighten parallel tool-call safety
2026-07-16 15:52:35 +08:00
Dudu-0223
3bed1a644f
Merge origin/master into parallel-tool-call
2026-07-16 14:56:02 +08:00
Tianyi Cui
e138b4c8a8
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-16 02:36:25 +08:00
Tianyi Cui
69c36e4fb5
docs(subagent): name parent session lineage
2026-07-16 02:31:20 +08:00
Tianyi Cui
2028220d3c
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-16 01:17:52 +08:00
Tianyi Cui
1a111654ae
docs(subagent): restore local run identity contract
2026-07-16 01:17:26 +08:00
Tianyi Cui
9bba95ff7c
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
2026-07-15 23:34:36 +08:00
Tianyi Cui
694e323403
Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue
...
# Conflicts:
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# packages/ui/acp/README.md
2026-07-15 23:32:16 +08:00
Tianyi Cui
6143537d4e
Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/bash.md
# docs/core-data-structures/core.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# packages/bash/bash/src/types.ts
# packages/bash/tool-bash/README.md
# packages/bash/tool-bash/src/index.ts
# packages/bash/tool-bash/tests/tools.spec.ts
# packages/examples/agent-spine-demo/README.md
# packages/examples/agent-spine-demo/tests/agent-core.spec.ts
# packages/subagent/tool-subagent/tests/tool-subagent.spec.ts
# packages/util/brand/README.md
# packages/util/brand/src/index.ts
2026-07-15 23:29:47 +08:00
Tianyi Cui
8bb8ac8b3c
docs(tasks): condense background task prose
...
The background-task change repeated its lifecycle design across implemented RFCs, package READMEs, JSDoc, test commentary, and model-visible schemas. That repetition obscured the contracts that maintainers must preserve and added avoidable prompt tokens.
Rewrite the implemented RFCs around the current design, keep authorization, exact-owner cleanup, wait/abort ordering, producer quiescence, and teardown-failure guarantees at their owning surfaces, and remove peer surveys, review history, control-flow narration, and emphatic restatement.
Shorten the task and subagent schema wording, synchronize the bilingual tool cookbook, and regenerate the config, service, RFC, tool, and replay snapshot derivatives. Runtime behavior is unchanged; test edits update prose-only assertions and descriptions.
2026-07-15 21:08:58 +08:00
Yichen Jiang
f47a87fcf5
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# docs/config-catalog.md
# packages/examples/acp-demo/tests/acp-agent.spec.ts
# packages/examples/stdio-demo/README.md
# packages/examples/stdio-demo/src/index.ts
# packages/examples/stdio-demo/tests/stdio-agent.spec.ts
2026-07-15 20:14:09 +08:00