kingwl
933e889fb8
Merge remote-tracking branch 'origin/master' into feature/subagent-policy-inheritance
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-25 11:01:40 +08:00
kingwl
6fa2377e34
subagent: capture overrides at delegation; stamp ahead of prompt vetoes
...
Review fixes (ds-review-bot on #623 ):
- Capture-at-delegation: the driver now reads overrideOf(parent.session)
for both knobs synchronously before its first await, and the prompt-submit
listener stamps those captured values — a parent switch racing the child's
asynchronous creation belongs to the parent's future, not the child. The
inheritOverride(parent, child) service method is split into its two halves
(overrideOf / stampOverride) accordingly.
- Veto safety: the one-shot prompt-submit listener registers with
prepend: true, so a veto-capable listener (a denying UserPromptSubmit
hook) cannot close the child's first turn without the durable stamp.
Both regressions are pinned red-first in inheritance.spec.ts: the
delegation-vs-late-switch race (delegate tool flips the caller wider while
the creation transaction is pending) and a blocking prompt-submit listener
(stamp survives a promptless first turn). Service contract tests renamed to
the split API; READMEs and the bilingual Agent Note updated.
2026-07-25 10:51:25 +08:00
kingwl
669771097d
subagent: inherit parent sandbox/approval overrides in in-process children
...
Per-session policy overrides (sandbox/mode, approval/policy) never crossed
the delegation boundary: a spawn child of a read-only-switched parent ran
under the wider deployment default, and a fork child missed any switch made
after its seed boundary — delegation was a bypass channel for a user's
tightening.
The in-process driver now snapshots the delegating parent's override chain
and stamps it onto the child through the canonical write paths
(SandboxPolicyService.inheritOverride / ApprovalService.inheritOverride),
anchored inside the child's first turn via a one-shot agent/prompt-submit
listener: turn-enclosed (durable), ahead of the first request (an inherited
'never' reaches the child's first system prompt), and positioned after any
stale fork-seed switch so the ordinary last-event-wins fold resolves it.
Only overrides are copied — an unswitched parent stamps nothing and the
child follows the live deployment default; both services are consumed
opportunistically, so compositions without them delegate unchanged. Nesting
composes by construction (each stamp folds the already-stamped parent log).
Evidence: inheritance.spec.ts drives scripted-model children into the real
dsh-fs-sandbox fence through the real write tool (disk-state + denial-marker
assertions; spawn, stale-seed fork, grandchild, escalation fail-closed, and
no-stamp guards), inheritOverride contract tests in both service suites, and
the recorded subagent-sandbox-inheritance ACP snapshot (read-only preset →
delegate → child denied, replayed keylessly).
See .agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.md.
2026-07-25 04:06:19 +08:00
Turtle
b02b438667
refactor(agent): align delivery method names
2026-07-24 15:08:36 +08:00
Tianyi Cui
0dfd9545a6
Merge branch 'codex/tool-json-schema-dsl' into codex/canonical-tool-output
...
# Conflicts:
# docs/architecture.md
# docs/config-catalog.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write/session.jsonl
# packages/ui/tui/src/index.ts
# scripts/type-equiv.manifest.json
2026-07-22 00:23:00 +08:00
Tianyi Cui
4072673c03
Merge remote-tracking branch 'origin/master' into codex/tool-json-schema-dsl
...
# Conflicts:
# packages/cordis/tool-cordis/src/api-catalog.ts
2026-07-22 00:05:23 +08:00
Tianyi Cui
7d3cb39047
Merge branch 'codex/tool-json-schema-dsl' into codex/canonical-tool-output
...
# Conflicts:
# .agents/notes/implemented/feature/2026-06-30-interception-seams.md
# 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.md
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/stdout.expected.jsonl
# packages/bash/tool-bash/src/index.ts
# packages/core/agent-loop/src/tool-calls.ts
# packages/core/agent-loop/tests/cancel.spec.ts
# packages/core/agent-loop/tests/contract-regressions.spec.ts
# packages/core/agent-loop/tests/tool-calls.spec.ts
# packages/core/tools/README.md
# packages/core/tools/src/index.ts
# packages/core/tools/tests/code-mode.spec.ts
# packages/core/tools/tests/tools.spec.ts
# packages/fs/tool-fs-search/tests/integration.spec.ts
# packages/fs/tool-fs-search/tests/tools.spec.ts
# packages/fs/tool-fs/tests/integration.spec.ts
# packages/mcp/mcp-client/src/tools.ts
# packages/timeout/timeout-policy/tests/timeout-policy.spec.ts
# packages/web/tool-web/tests/integration.spec.ts
# packages/web/tool-web/tests/tool-web.spec.ts
2026-07-21 23:39:03 +08:00
Tianyi Cui
5d514ccdb2
Merge remote-tracking branch 'origin/master' into codex/tool-json-schema-dsl
...
# Conflicts:
# docs/config-catalog.md
# docs/cookbook/adding-a-tool.i18n.yaml
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# packages/core/tools/tests/tools.spec.ts
2026-07-21 23:04:32 +08:00
Tianyi Cui
3176d232b8
Merge master into codex/session-title
2026-07-21 22:59:41 +08:00
Tianyi Cui
3a895ce815
Merge master into codex/session-title
2026-07-21 21:11:32 +08:00
Tianyi Cui
0004b8675f
Merge remote-tracking branch 'origin/master' into codex/enforce-tool-cancellation
...
# Conflicts:
# docs/event-producer-consumer.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/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# packages/context/workspace-context/tests/workspace-context.spec.ts
# packages/core/agent/src/index.ts
# packages/support/invariants/tests/invariants.spec.ts
# packages/ui/acp/src/index.ts
# packages/ui/tui/tests/harness.ts
# packages/ui/tui/tests/tui.spec.ts
2026-07-21 20:03:00 +08:00
Tianyi Cui
72a48fede6
Merge branch 'codex/tool-json-schema-dsl' into codex/canonical-tool-output
...
# Conflicts:
# docs/event-producer-consumer.md
# packages/context/time-context/tests/time-context.spec.ts
# packages/context/workspace-context/tests/workspace-context.spec.ts
2026-07-21 19:56:43 +08:00
Tianyi Cui
6a45e6e16b
Merge remote-tracking branch 'origin/master' into codex/tool-json-schema-dsl
...
# Conflicts:
# docs/event-producer-consumer.md
# packages/cordis/tool-cordis/src/api-catalog.ts
2026-07-21 19:44:49 +08:00
Tianyi Cui
5d411f9c4e
fix(session-title): preserve agent turn outcomes
2026-07-21 15:49:37 +08:00
Tianyi Cui
66c36e7325
feat: add canonical typed tool outputs
2026-07-21 03:22:14 +08:00
Tianyi Cui
8500974fd4
feat: unify JSON value schema DSL
2026-07-21 01:11:55 +08:00
Tianyi Cui
9848fdf93e
refactor: remove unrelated helper extractions
2026-07-21 00:25:51 +08:00
Yichen Jiang
a92d2e5f34
Merge origin/master into worktree/explicit-turn-signal
2026-07-20 21:38:49 +08:00
Tianyi Cui
8ee54bcb22
Merge latest invariant registration gate
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-20 20:20:10 +08:00
Tianyi Cui
5f806b96f0
Merge latest invariant service seam
2026-07-20 20:19:14 +08:00
Tianyi Cui
1145ee5fc3
fix(invariants): assert runtime relationships, not API shapes
2026-07-20 19:34:19 +08:00
Tianyi Cui
3b7ce2e682
fix(invariants): require justified empty companions
2026-07-20 18:39:37 +08:00
Tianyi Cui
e80fc3e61b
fix(invariants): join package checks at startup
2026-07-20 01:53:09 +08:00
Tianyi Cui
941b0411d8
feat(invariants): implement package runtime checks
2026-07-20 00:38:37 +08:00
Tianyi Cui
433670a754
feat(invariants): require package-owned companions
2026-07-19 22:13:50 +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
cddb79e844
Merge branch 'worktree/agent-execution-context-rfc' into worktree/explicit-turn-signal
2026-07-18 21:33:17 +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
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
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
Yichen Jiang
c238992fbb
feat(core): make turn cancellation explicit
2026-07-16 18:14:13 +08:00
Yichen Jiang
815365dbbe
Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
...
# Conflicts:
# 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/persistence-catalog.md
# 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/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/sandbox-acp-agent/cordis.yml
# examples/sandbox-acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/mode-switching/session.jsonl
# packages/compact/compact-basic/README.md
# packages/compact/compact-basic/src/index.ts
# packages/compact/compact-basic/tests/compact-basic.spec.ts
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/loop.ts
# packages/core/agent-loop/tests/properties.spec.ts
# packages/core/session/README.md
# packages/core/session/src/types.ts
# packages/core/session/tests/derived-cache.spec.ts
# packages/llm/llm-deepseek/src/index.ts
# packages/llm/llm-pi-ai/README.md
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm-pi-ai/src/convert.ts
# packages/llm/llm-pi-ai/tests/adapter.spec.ts
# packages/llm/llm/README.md
# packages/llm/llm/src/call-config.ts
# packages/llm/llm/src/index.ts
# packages/ui/acp-agent/src/index.ts
# packages/ui/acp/tests/harness.ts
# packages/ui/jsonrpc/README.md
# packages/ui/jsonrpc/src/server.ts
# packages/ui/stdio-agent/README.md
# packages/ui/stdio-agent/src/index.ts
# python/sdk/README.i18n.yaml
2026-07-14 22:17:50 +08:00
Yichen Jiang
e547980d77
feat(llm): route adapters by provider
2026-07-14 21:57:52 +08:00
Tianyi Cui
18abf87107
Merge branch 'codex/simp-hide-concrete-agent-loop' into codex/simp-hide-subagent-internals
...
# Conflicts:
# docs/rfc/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md
# packages/subagent/subagent-subprocess/src/index.ts
# packages/subagent/tool-subagent/src/index.ts
2026-07-14 19:02:27 +08:00
Tianyi Cui
83271191d1
Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# docs/rfc/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-seams.md
# docs/rfc/implemented/architecture/2026-06-20-branded-ids.md
# docs/rfc/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md
# docs/rfc/proposed/feature/2026-07-07-claude-code-and-codex-subagent-backends.md
# docs/rfc/proposed/simplification/2026-06-20-unify-agent-and-session-id.md
# packages/bash/tool-bash/README.md
# packages/bash/tool-bash/src/index.ts
# packages/bash/tool-bash/tests/tools.spec.ts
# packages/core/agent-loop/README.md
# packages/core/agent-loop/tests/properties.spec.ts
# packages/core/agent/README.md
# packages/core/agent/src/index.ts
# packages/guard/repeat-tool-guard/src/index.ts
# packages/hooks/hooks-claude/tests/bridge.spec.ts
# packages/subagent/subagent-acp/tests/mock-acp-server.ts
# packages/ui/acp/tests/dispose.spec.ts
# packages/ui/stdio-agent/src/index.ts
# packages/ui/stdio-agent/src/stdio-chat.ts
# packages/ui/stdio-agent/tests/stdio-chat.spec.ts
# packages/util/brand/src/index.ts
2026-07-14 18:51:24 +08:00
Tianyi Cui
f85b831bd2
refactor: hide subagent implementation helpers
2026-07-14 02:41:23 +08:00
Tianyi Cui
709cc7200e
refactor: unify agent and session identity
2026-07-14 01:59:21 +08:00
Tianyi Cui
148046b9c8
docs: rebalance prose cleanup and add trimming skill
2026-07-13 23:27:00 +08:00
Tianyi Cui
c45d7927cf
docs: tighten prose audit after master retarget
2026-07-13 16:24:32 +08:00
Tianyi Cui
e04ec07345
refactor(core): remove owner-final assembly machinery
2026-07-13 13:09:41 +08:00
Tianyi Cui
f32cfafa1a
refactor: narrow synchronous extension contracts
2026-07-13 11:58:55 +08:00
Tianyi Cui
bb3f6bd736
refactor(subagent): unify async readiness and cancellation
2026-07-12 22:41:59 +08:00
Tianyi Cui
cb03c8c284
fix(scope): align trust and input boundaries
...
Rewrite the agent-scope RFC with executable examples and an explicit security non-goal. Harden subagent scalar and depth validation, and pin live tool-filter semantics across code, tests, and generated docs.
2026-07-12 11:17:57 +08:00
Tianyi Cui
d427478c44
fix(subagent): validate direct depth boundaries
2026-07-12 10:48:20 +08:00
Tianyi Cui
a9cb70d896
fix(scope): harden final ownership boundaries
2026-07-12 05:13:17 +08:00
Tianyi Cui
36b8370027
fix(scope): close remaining ownership boundaries
2026-07-12 03:51:55 +08:00
Tianyi Cui
3529b3c166
fix(scope): close final ownership races
...
Drain idle injection flushes before agent teardown, snapshot approval and subagent provider inputs, and gate subagent lifecycle events on real child readiness. Align the RFCs and generated contracts with the hardened behavior.
2026-07-12 00:31:46 +08:00
Tianyi Cui
3263dab822
fix(core): enforce agent-scoped ownership boundaries
2026-07-11 22:55:26 +08:00
Tianyi Cui
6091c0a3dc
docs: rewrite the agent-scope RFC
2026-07-11 14:01:49 +08:00