Yichen Jiang
5358168787
feat(sdk): support max output tokens
2026-07-28 17:36:44 +08:00
_Kerman
2a51ef85fb
fix: close three seams the message-machine refactor left open
...
agent-loop lifecycle: dispose drains machine.done to true quiescence.
cancel()'s own running-to-idle transition can legitimately re-enter
through an automation listener (goal-session's idle drive runs
synchronously to its first await) and replace done with a fresh
admission after the single capture; teardown now re-cancels and
re-awaits until the slot stabilizes, so the scope never unwinds under a
live run.
tools: a nested concludeTurn() stages on its own execution and promotes
to the enclosing composite only on the call's authoritative successful
verdict. A post-execute policy that converts the nested success into an
error no longer lets a recovering composite stop the turn on a failed
terminal operation (the Code Mode structured-output shape).
goal-session: the driver owns its round durability barrier again. The
loop's persistence is eager write-behind with no turn-end flush, so the
old post-turn agent/error signal for flush failures never fires; a
settled round now sets needsCheckpoint and re-enters drive, flushing
before the next reservation and disarming on failure instead of queueing
an autonomous round on state that was never persisted.
2026-07-26 20:51:32 +08:00
_Kerman
6a068ec28d
test: restore 100% per-file coverage for agent-loop and the acp bridge
...
agent-loop: behavior tests for retry-while-busy, cancelled recovery
windows, no-facts stream failures, idle-listener preemption, rejected
driver promises under whenIdle, finish-chunk failures after step close,
presentationMeta persistence, pre-aborted and torn-down create/resume
signals, and configured-start failures over existing artifacts or after
teardown. The remaining guards that no public path can reach carry
justified v8 ignore annotations naming the invariant that starves them.
acp bridge: cover the retry-adoption path (a retry turn resolves the
prompt the failed turn deferred), the no-retry quiescence rejection, and
the admission-blocked cancelled settlement; the synchronous send-throw
catch is annotated as a future-proofing guard since the machine's send()
contains listener failures.
2026-07-26 14:57:24 +08:00
_Kerman
b73eb7663c
refactor(agent-loop): simplify observable state machine
2026-07-24 21:18:48 +08:00
_Kerman
90e69a3123
refactor(agent): minimize inbox message contract
2026-07-24 17:00:42 +08:00
_Kerman
aaa42d5844
refactor(agent-loop): simplify message machine
2026-07-24 11:46:46 +08:00
Tianyi Cui
710c62474a
Merge branch 'master' into fetch-failed-diagnostics
2026-07-20 20:10:57 +08:00
Tianyi Cui
8e95f305b0
refactor(agent-loop): reuse loaded session metadata
2026-07-20 18:26:19 +08:00
Turtle
aeb48cc5f3
Render error cause chains at every diagnostic seam
...
A TUI run against an unreachable endpoint failed with only 'fetch failed':
undici wraps transport failures in a bare TypeError whose diagnosis lives
on .cause, and every diagnostic seam rendered only error.message. The
readline front door additionally rendered failed turns as pure silence.
- dsh-llm: new errorChain(value) renders the full cause chain and
AggregateError members with circular/hostile-coercion containment.
- llm-deepseek: pre-response transport failures throw LlmError('NETWORK')
naming the endpoint and chaining the fetch TypeError; aborts keep their
DOMException so the loop still classifies them as cancellation.
- agent-loop: durable turn/end error messages and logger warnings render
through errorChain; local renderThrown copies removed.
- ui-stdio: failure turn/end reasons now render ([turn failed <code>],
[turn aborted], [turn rejected], output-token-limit); startup-failure
logs use errorChain.
- ui-tui: agent/error notices and the startup-failure line use errorChain.
2026-07-20 12:35:10 +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
Tianyi Cui
18653a9ff7
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# 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
# website/zh-CN/api/harness/events.md
2026-07-19 01:57:18 +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
21ec178841
docs: tighten parallel tool-call prose
2026-07-18 14:59:26 +08:00
Tianyi Cui
6f01d4d099
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/event-producer-consumer.md
# examples/coding-agent/tests/code-mode.e2e.ts
# examples/coding-agent/tests/harness.ts
# examples/coding-agent/tests/resume.e2e.ts
# examples/cordis-agent/tests/harness.ts
# packages/bash/tool-bash/tests/integration.spec.ts
# packages/compact/compact-basic/tests/compact-loop-repro.spec.ts
# packages/cordis/tool-cordis/tests/integration.spec.ts
# packages/core/agent-loop/tests/contract-regressions.spec.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/todo/tool-todo/tests/integration.spec.ts
2026-07-18 12:33:49 +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
Tianyi Cui
3e07f9b270
Merge latest origin/master into parallel-tool-call
2026-07-17 22:28:38 +08:00
Dudu-0223
91da66e715
refactor(agent-loop): simplify parallel tool-call cap config
2026-07-16 14:36:16 +08:00
Dudu-0223
3b1d1bfa12
refactor(agent-loop): unify tool-call scheduling on one rolling pool + factory cap default
...
Run every ordered group through the same rolling pool: an exclusive call is a
pool of one (a barrier), dropping the separate runExclusive path and the
redundant post-grouping executionMode re-query. Behavior is unchanged — the
parallel-tool-calls snapshot and the full scheduler unit suite (barriers, cap,
abort, model-order results) stay green.
Add AgentLoop.Config.maxParallelToolCalls as a factory-wide default applied to
every agent create/createAgent/resume mints (per-agent option overrides it),
forwarded through agent-core so it reaches front doors that expose no cap field
of their own. Trim the isConcurrencySafe JSDoc to the local contract and link
the parallel-tool-call RFC for the full rationale; document the field on the
canonical core-data-structures page.
2026-07-16 11:36:16 +08:00
Tianyi Cui
9da038de7d
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/cordis-catalog/services.md
# packages/core/agent-loop/src/index.ts
2026-07-16 02:35:16 +08:00
Tianyi Cui
b2064cba10
fix(agent-loop): reject duplicate configured identities
2026-07-16 02:26:57 +08:00
Tianyi Cui
34344bc4ee
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
2026-07-14 23:36:15 +08:00
Tianyi Cui
9745a0d43a
fix: reject empty configured session ids
2026-07-14 23:36:04 +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
Dudu-0223
77be4b891b
Merge remote-tracking branch 'origin/master' into pr-265
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/rfc/INDEX.md
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/sandbox-acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/loop.ts
# packages/core/tools/README.md
# packages/core/tools/src/index.ts
# packages/core/tools/src/schema.ts
# packages/ui/acp/src/index.ts
# packages/ui/stdio-agent/README.md
2026-07-14 20:49:54 +08:00
Tianyi Cui
93dc0f30a9
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# packages/core/agent-loop/tests/agent.spec.ts
# packages/core/agent-loop/tests/contract-regressions.spec.ts
2026-07-14 18:58:29 +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
a5e1717059
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
2026-07-14 15:31:20 +08:00
Tianyi Cui
d83aa8d11a
test: cover exact-id reload cancellation
2026-07-14 15:31:00 +08:00
Tianyi Cui
04c956a900
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
2026-07-14 14:28:40 +08:00
Tianyi Cui
b58cf7ec2f
fix: coordinate overlapping configured reloads
2026-07-14 14:24:21 +08:00
Tianyi Cui
6b0de58b1c
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
2026-07-14 12:46:55 +08:00
Tianyi Cui
b47e4c5276
fix: suppress teardown startup failures
2026-07-14 12:45:12 +08:00
Tianyi Cui
91ad787ef4
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
2026-07-14 12:26:33 +08:00
Tianyi Cui
a25c0f084f
fix: totalize configured startup failures
2026-07-14 12:25:30 +08:00
Tianyi Cui
545c7d57d3
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-14 11:35:51 +08:00
Tianyi Cui
7d6ef0a472
fix: contain config failure observers
2026-07-14 11:33:36 +08:00
Tianyi Cui
54bd21cf58
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
2026-07-14 11:27:35 +08:00
Tianyi Cui
c1fb97c63a
fix: surface config startup failures
2026-07-14 11:23:38 +08:00
Tianyi Cui
7d30906ee4
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
2026-07-14 10:54:25 +08:00
Tianyi Cui
46b8bce03a
fix: join exact session startup on teardown
2026-07-14 10:49:15 +08:00
Tianyi Cui
0c19d69507
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# packages/core/agent-loop/README.md
2026-07-14 10:35:15 +08:00
Tianyi Cui
816b6e4c68
fix: restore exact config sessions on loop reload
2026-07-14 10:25:49 +08:00
Tianyi Cui
1c2e2680db
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
...
# Conflicts:
# packages/core/agent-loop/README.md
2026-07-14 09:55:54 +08:00
Tianyi Cui
6b782b0189
fix: bind stdio to its exact fresh identity
2026-07-14 09:54:34 +08:00
Tianyi Cui
f55786e154
Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
2026-07-14 07:15:05 +08:00
Tianyi Cui
c2979322c8
fix: keep stdio targeting on runtime roots
2026-07-14 07:13:42 +08:00
Tianyi Cui
225796c90d
refactor: hide the concrete agent loop
2026-07-14 02:32:35 +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