Commit Graph

464 Commits

Author SHA1 Message Date
pku-xht
f09986a02b Merge commit '6da4bd5f593e2f633df9e99721fb62e559b56012' into codex/product-providers-pr2-claude-code 2026-08-05 07:40:22 +08:00
pku-xht
9e91e206d4 refactor(subagent-codex): centralize cancellation settlement 2026-08-05 07:36:54 +08:00
pku-xht
6d8095825b fix(subagent-claude-code): tighten provider evidence 2026-08-05 07:32:27 +08:00
pku-xht
80adf8c7f4 Merge commit '3e630a3bce76aedf0fe351cf7b22d1f28b7fb731' into codex/product-providers-pr2-claude-code
# Conflicts:
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
2026-08-05 07:09:16 +08:00
pku-xht
2e00a93eda fix(subagent-codex): support Windows command shims 2026-08-05 07:03:04 +08:00
pku-xht
ed6f0c8774 Merge commit 'ecbb7896d3deeeac0bca71cef6b0d17e5b23896b' into codex/product-providers-pr2-claude-code
# Conflicts:
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
#	docs/capability-seams.md
#	docs/module-graph.md
#	packages/subagent/README.i18n.yaml
#	packages/subagent/README.md
#	packages/subagent/README.zh.md
#	scripts/gen-doc-graphs.ts
2026-08-05 06:40:45 +08:00
pku-xht
13d7318dac Fix provider diagnostics and ownership docs 2026-08-05 06:12:42 +08:00
pku-xht
0ccd847ef3 Fix timer bounds and ACP teardown ownership 2026-08-05 05:24:23 +08:00
pku-xht
ecedbbda56 Merge commit '4cca942ed6ce3087d3cbe0f95a48209e51241254' into codex/product-providers-pr2-claude-code 2026-08-05 04:49:25 +08:00
pku-xht
075b6b0756 fix(subagent-codex): drop unused initialize metadata gate 2026-08-05 04:45:11 +08:00
pku-xht
17caa8a676 Merge commit 'a9cc0fddb40be295c43cb2badb4cbcb2b032556c' into codex/product-providers-pr2-claude-code
# Conflicts:
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
#	docs/core-data-structures/subprocess.i18n.yaml
#	packages/subprocess/subprocess/README.i18n.yaml
2026-08-05 04:41:27 +08:00
pku-xht
a49ef7581f Fix Codex wire frames and bound grace timers 2026-08-05 04:21:29 +08:00
pku-xht
73f33c1ddf Merge synchronized PR1 into Claude provider
# Conflicts:
#	docs/capability-seams.md
2026-08-05 02:34:58 +08:00
pku-xht
c4650c0eab Merge current master into Codex provider
# Conflicts:
#	docs/capability-seams.md
2026-08-05 02:21:49 +08:00
pku-xht
98dc55511d Merge PR1 DeepSeek e2e into Claude provider
# Conflicts:
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/proposed/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
2026-08-05 02:17:02 +08:00
pku-xht
01704b9a3a Add Codex DeepSeek credentialed e2e 2026-08-05 01:30:42 +08:00
pku-xht
96d6853a96 Preserve Claude SDK child environment 2026-08-05 01:07:58 +08:00
pku-xht
34b6cb91ed Keep provider adapters private 2026-08-05 00:26:39 +08:00
pku-xht
2cf637480c Merge PR1 review fixes into Claude provider
# Conflicts:
#	vitest.config.ts
2026-08-04 23:47:33 +08:00
pku-xht
46db608843 Align Codex provider review evidence 2026-08-04 23:42:35 +08:00
pku-xht
606a65740f Merge commit 'ba21ca122496e1038993378753de863e571cdc2a' into codex/product-providers-pr2-claude-code 2026-08-04 22:52:07 +08:00
pku-xht
a93968bf93 fix(subagent-codex): await managed tree exit 2026-08-04 22:36:31 +08:00
pku-xht
32f829c4e6 fix(subagent): complete product provider lifecycle 2026-08-04 22:18:35 +08:00
pku-xht
d780902679 refactor(subagent): share provider dispose window 2026-08-04 21:25:48 +08:00
pku-xht
8dae2ee5eb Merge PR1 Codex provider fixes into PR2 2026-08-04 21:01:32 +08:00
pku-xht
be56f64b7a feat(subagent): add Claude Code provider 2026-08-04 20:57:55 +08:00
pku-xht
451c2929ed fix(subagent): close terminal teardown races 2026-08-04 20:26:45 +08:00
pku-xht
f96acad438 fix(subagent): preserve Codex fatal and grace semantics 2026-08-04 19:55:39 +08:00
pku-xht
c09b20f96b fix(subagent): finalize Codex provider composition 2026-08-04 18:38:05 +08:00
pku-xht
36b562e4e9 fix(subagent): close Codex provider review findings 2026-08-04 17:13:38 +08:00
pku-xht
270b8e0acc fix(subagent): close Codex provider CI gaps 2026-08-04 16:25:38 +08:00
pku-xht
1daa35b6e3 feat(subagent): add Codex product provider 2026-08-04 16:02:17 +08:00
Huanqi Cao
ffeccc138b Merge branch 'feat/ripgrep-packaged-binary' into feat/pwsh-tool
# Conflicts:
#	docs/module-graph.md
2026-08-03 20:22:16 +08:00
kingwl
c183fae6f9 clarify timing projection schema cast 2026-08-03 12:04:44 +08:00
kingwl
0b0de64769 bound inactive subagent timing to projection cut 2026-08-03 11:40:33 +08:00
kingwl
c831c99981 keep subagent duration fix focused 2026-08-03 01:08:32 +08:00
kingwl
6b6acbe0c5 Merge master into subagent usage branch
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md
#	apps/web/tests/snapshots/subagent-conversation/tree.expected.md
#	apps/web/tests/subagent-conversation.e2e.ts
#	packages/client/ui-subagent/src/client/SubagentCatalogAction.tsx
2026-08-02 23:37:17 +08:00
kingwl
b30686d634 show subagent usage and active duration 2026-08-02 23:31:24 +08:00
Tianyi Cui
1ea72962eb Merge master into fix/subagent-stack-end-result 2026-08-02 23:13:00 +08:00
Tianyi Cui
a24f9b06e7 refactor(subagent): drop speculative effect rollback
The PR moved child scope-effect registration into the contribution-installation try/catch solely to cover a hypothetical throw, while documenting that Context.effect cannot reject for the live unpublished scope passed to apply. The change therefore added control-flow and rollback implications for a failure mode the API does not expose, without changing observable behavior.

Keep the rollback boundary focused on contribution installers, which are the operations that can actually fail and leave recorded installations to unwind. Register the child-scope cleanup effect immediately after that boundary, as before; its disposer still converges with contribution removal through the registry idempotence rules.

This is a behavior-preserving removal of unnecessary code. The focused activation-setup-registry suite passes all 11 tests, the subagent TypeScript project checks cleanly, and the staged diff passes whitespace validation.
2026-08-02 20:25:39 +08:00
Tianyi Cui
f91b4b2cdc docs(subagent): correct cold-resume parent contract
The descriptor module claimed that no parent exists during cold resume, using that as the reason maxTokens cannot be inherited. Continuable follow-up actually requires and authorizes the exact live direct parent before it loads the descriptor and materializes the child, so the stated lifecycle fact was false.

Keep the real persistence decision explicit: per-activation budgets are not durable descriptor composition. Cold resume reconstructs child options only from the curated durable fields, so it deliberately neither restores the establishing budget nor inherits the live parent current transient budget; the resumed provider and model route defaults apply.

This is a contract-only correction with no runtime change. The exported JSDoc gate remains clean.
2026-08-02 20:18:31 +08:00
Tianyi Cui
b54381f3e7 fix(agent): commit mutable setup at publication
Agent setup may await while a mutable contribution registry changes. The previous subagent path validated and committed its provisioning batch inside the setup callback. A revocation queued after that callback returned therefore treated the installation as resident and released it, even though AgentLoop had not published the child yet. AgentLoop could then admit and announce a child whose required capability had already disappeared.

Introduce AgentSetupCommit as the optional synchronous result of create and resume setup. AgentLoop now awaits setup, invokes that commit with no intervening asynchronous boundary, and only then enters the Session and Agent registries. A commit failure follows the existing private-transaction rollback, so neither identity is published and the caller can reuse the id.

Keep continuable-subagent installations provisional until this publication commit. Contribution removal still releases every installation immediately, but now marks an unpublished batch invalid so its commit rejects with ACTIVATION_SETUP_REVOKED. Once the commit succeeds, later removal remains ordinary live revocation.

Cover create and resume ordering, resume commit rejection and identity reuse, and an assembled microtask revocation that leaves only the parent Agent and Session. Update the public JSDoc, architecture flow, package contracts, current Agent Notes, Chinese counterparts, pairing records, and generated Cordis API to describe the new boundary.

Validated with the four focused Agent/subagent test files (91 tests), the isolated assembled regression, targeted TypeScript project builds, generated Cordis API freshness, export JSDoc verification, scoped translation pairing, Markdown wrapping, and Mermaid parsing.
2026-08-02 20:09:05 +08:00
Huanqi Cao
7201a417c2 fix(subagent): mount bash-env in the spawn and headless e2e harnesses 2026-08-02 17:25:47 +08:00
kingwl
cf70a52dcc Merge origin/master into codex/todo-goal-queue-layout 2026-08-02 14:34:13 +08:00
Tianyi Cui
fb6ccdff04 docs(subagent): scope report acceptance to parent resolution, not delivery
The README claimed "acceptance is governed by registry presence" as a
universal statement, but `sendReport` translates a registered parent's
send rejection into the same PARENT_UNAVAILABLE code — registry presence
governs parent *resolution*, while acceptance additionally depends on the
parent's log still admitting appends. Soften both languages to the
precise contract and re-record the pair.
2026-08-02 14:05:37 +08:00
Tianyi Cui
daf9554804 refactor(subagent): scope the setup transaction to the creation callback
The setup validation and commit moved into the callback, so the outer
definite-assignment slot and its type import are no longer needed; declare
the transaction as a callback-local const.
2026-08-02 14:05:37 +08:00
Tianyi Cui
e55d3e96d9 docs(subagent): re-record bilingual pairs after the stack end-result doc edits
Two pairs needed their confirmed-consistent state refreshed: the
intent-named note's supersession clause (zh link normalized to the shared
`.md` target, since the pairing contract requires identical link targets)
and the report README's acceptance-semantics rewrite (both sides edited).
Re-record both pairs so the translation-pairing gate passes.
2026-08-02 14:05:36 +08:00
Tianyi Cui
df01ed926a fix(subagent): type the schema-resolved reportDelivery shape
Config() applies the schemastery default at runtime, but its return type
keeps the input's optional field, so assert the resolved shape at the
seam — keeping the dead fallback branch gone.
2026-08-02 14:05:36 +08:00
Tianyi Cui
3114947324 docs(subagent): correct report acceptance semantics for closing parents
The tool README claimed a "missing, disposed, or closing parent" fails
the call — but acceptance is governed by the parent's registry presence:
`resolveReportParent` only rejects when the durable parent id is absent
from the registry, so a host-owned parent already in disposal but still
registered still accepts (the pinned host-disposing-parent behavior).
The claim misled callers into treating disposal state as a delivery
signal.

Restate the contract in both languages: absence from the registry is the
only `PARENT_UNAVAILABLE` case, and a failed tool call does not prove
non-delivery — a later `tools/post-execute` veto can fail a call whose
report was already accepted, so the durable child transcript remains the
recovery source.

Adds a regression test pinning acceptance into a host-disposing but
still-registered parent, and rejection after disposal settles.
2026-08-02 14:05:36 +08:00
Tianyi Cui
5da2ac5835 docs(subagent): state that per-activation knobs are not restored on cold resume
The descriptor deliberately snapshots a curated composition field set
rather than the merge-extensible `AgentOptions`, and it already names the
per-activation exclusions (`outputSchema`). `maxTokens` is the same class
of property — it budgets one activation, and on cold resume there is no
parent to inherit a limit from, so the resumed activation runs under the
deployment defaults. Spell that out in the module contract so the
fallback is a documented decision instead of a silent surprise for
deployments that set explicit child token limits.
2026-08-02 14:05:36 +08:00