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
Tianyi Cui
c6f8247ac1
Merge codex/goal-commands into codex/ralph-tool
...
# Conflicts:
# docs/glossary.md
2026-07-20 12:23:57 +08:00
pku-xht
a6e96c47f3
review fix: pin ordinary-send batching removal
2026-07-20 11:53:49 +08:00
Tianyi Cui
f9a152409e
Merge master into codex/grep-glob-require-rg
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.md
# packages/fs/tool-fs-search/README.md
2026-07-20 11:53:03 +08:00
pku-xht
0891465ee0
Merge origin/master into codex/send-one-turn
2026-07-20 11:52:30 +08:00
Tianyi Cui
884c168edc
Merge codex/commands into codex/goal-commands
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.zh.md
# examples/acp-agent/tests/snapshots/advanced-toolchain/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/bash-spill/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/cancel-tool-calls/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/cancel/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/config-options/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/error-finish/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/escalation-approved/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-edit/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-read/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-terminal-card/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-write/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/handshake/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/model-switching/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/parallel-tool-calls/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/permission-switching/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/skill-load/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/text-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/todo-plan/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/stdout.expected.jsonl
# packages/goal/tool-goal/README.md
2026-07-20 11:41:53 +08:00
Tianyi Cui
69daf1c147
Merge codex/goal-tools into codex/goal-session
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-19-persisted-same-session-goal-domain.i18n.yaml
# .agents/notes/implemented/feature/2026-07-19-persisted-same-session-goal-domain.md
# .agents/notes/implemented/feature/2026-07-19-persisted-same-session-goal-domain.zh.md
# docs/cordis-catalog/events.md
# docs/event-producer-consumer.md
# packages/goal/goal/tests/goal.spec.ts
# website/zh-CN/api/harness/events.md
# website/zh-CN/api/harness/goals.md
2026-07-20 08:58:37 +08:00
Tianyi Cui
89f9900be1
fix(goal): preserve interactive human turns
2026-07-20 08:50:51 +08:00
Tianyi Cui
3b0b0cefeb
feat: implement bounded LLM request recovery
2026-07-20 03:34:19 +08:00
Tianyi Cui
e2b8e2b1eb
Merge codex/goal-commands into codex/ralph-tool
2026-07-20 01:52:57 +08:00
Tianyi Cui
fdce57cf4a
Merge codex/commands into codex/goal-commands
2026-07-20 01:43:32 +08:00
Tianyi Cui
b21193ded5
Merge codex/goal-tools into codex/goal-session
2026-07-20 01:21:40 +08:00
Tianyi Cui
dddebe6755
Merge codex/goal-domain into codex/goal-tools
2026-07-20 01:12:37 +08:00
Tianyi Cui
684fcf3357
Merge branch 'codex/invariant-package-registration-gate' into codex/package-invariant-checks
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.md
# .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.zh.md
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml
# docs/rfc/INDEX.md
# packages/AGENTS.md
2026-07-20 00:54:28 +08:00
Tianyi Cui
b808026859
feat(workflow): add fresh-agent Ralph tool
2026-07-20 00:51:19 +08:00
Tianyi Cui
941b0411d8
feat(invariants): implement package runtime checks
2026-07-20 00:38:37 +08:00
Tianyi Cui
6520f71f94
Merge remote-tracking branch 'origin/codex/invariant-service-seam' into codex/invariant-package-registration-gate
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml
# docs/core-data-structures/session.md
# docs/module-graph.md
# package.json
# packages/sdk/scripts/tsconfig.json
2026-07-20 00:35:06 +08:00
Tianyi Cui
b46dfe08a2
Merge remote-tracking branch 'origin/master' into codex/invariant-service-seam
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md
# .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md
# .agents/notes/implemented/feature/2026-07-07-session-prefix.md
# .agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml
# docs/architecture.md
# docs/config-catalog.md
# docs/core-data-structures/session.md
# docs/rfc/INDEX.md
# packages/examples/agent-spine-demo/README.md
# packages/examples/agent-spine-demo/src/index.ts
# packages/examples/agent-spine-demo/tests/agent-core.spec.ts
# packages/support/invariants/README.md
# packages/support/invariants/src/index.ts
# packages/support/invariants/tests/invariants.spec.ts
2026-07-20 00:25:31 +08:00
Tianyi Cui
207692bc16
feat(goal): add human goal command
2026-07-19 23:55:33 +08:00
Tianyi Cui
a9a44fea96
Merge remote-tracking branch 'origin/master' into codex/enforce-tool-cancellation
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-19-cooperative-tool-cancellation.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-19-cooperative-tool-cancellation.md
# .agents/notes/implemented/architecture/2026-07-19-cooperative-tool-cancellation.zh.md
# .agents/notes/proposed/architecture/2026-07-19-required-cancellation-through-tool-capability-seams.i18n.yaml
# .agents/notes/proposed/architecture/2026-07-19-required-cancellation-through-tool-capability-seams.md
# .agents/notes/proposed/architecture/2026-07-19-required-cancellation-through-tool-capability-seams.zh.md
# docs/cookbook/adding-a-tool.i18n.yaml
# docs/rfc/INDEX.md
# packages/AGENTS.md
2026-07-19 23:43:36 +08:00
Tianyi Cui
e8b95c8754
feat(tools): require cancellation signal on every invocation
2026-07-19 23:38:54 +08:00
Tianyi Cui
e8eddc7ef8
Rename RFCs to Agent Notes
2026-07-19 22:52:03 +08:00
Tianyi Cui
247a18fd59
Merge remote-tracking branch 'origin/master' into codex/enforce-tool-cancellation
2026-07-19 22:37:35 +08:00
Tianyi Cui
adc350eba2
Merge remote-tracking branch 'origin/codex/goal-tools' into codex/goal-session
2026-07-19 22:33:34 +08:00
Tianyi Cui
b808e1c8df
Merge remote-tracking branch 'origin/codex/goal-domain' into codex/goal-tools
2026-07-19 22:28:52 +08:00
Tianyi Cui
433670a754
feat(invariants): require package-owned companions
2026-07-19 22:13:50 +08:00
Yichen Jiang
8a5792187b
Merge branch 'master' into worktree/contain-result-observer-rejections
2026-07-19 21:40:22 +08:00
Tianyi Cui
89d516085a
Merge remote-tracking branch 'origin/master' into codex/enforce-tool-cancellation
2026-07-19 21:14:27 +08:00
Tianyi Cui
54aef60685
fix(tools): complete cancellation boundary
2026-07-19 21:13:41 +08:00
Tianyi Cui
546f2ae478
Merge remote-tracking branch 'origin/master' into codex/rename-golden-files-to-expected
2026-07-19 21:09:20 +08:00
Tianyi Cui
25555c9cfc
feat(goal): drive same-session goal rounds
2026-07-19 20:30:43 +08:00
Yichen Jiang
d49808c6dd
fix(tools): avoid retaining result executions
2026-07-19 20:14:32 +08:00
Tianyi Cui
0129063ae7
feat(goal): add model-facing goal tools
2026-07-19 19:22:10 +08:00
Tianyi Cui
9d310ecc27
feat(invariants): add package-owned service seam
2026-07-19 19:19:57 +08:00
Yichen Jiang
55a66024fa
fix: contain result observer rejections and correct bundle attribution
2026-07-19 18:38:35 +08:00
Tianyi Cui
5cc18ea7db
Merge remote-tracking branch 'origin/master' into codex/enforce-tool-cancellation
...
# Conflicts:
# packages/core/agent-loop/tests/tool-calls.spec.ts
2026-07-19 18:12:13 +08:00
Tianyi Cui
6e790b95f2
fix(compact): complete master retarget integration
...
Declare the tool-result pruning plugin in the examples workspace so the repl Cordis configuration resolves through plain Node and the Loader metadata gate.
Express the validated single-node surface rewrite without a non-null assertion or an unreachable defensive branch, preserving both the runtime contract and per-file 100% coverage.
2026-07-19 18:11:48 +08:00
Tianyi Cui
a278374e8f
docs: structure model experience fields
2026-07-19 18:08:42 +08:00
Tianyi Cui
2bc4e05a08
fix(tools): enforce cooperative cancellation
2026-07-19 18:05:54 +08:00
Tianyi Cui
9c5b86051b
Merge master into tool-result pruning
...
Retarget the pruning feature onto the merged compaction foundation.
Adapt content-only tool-result rewrite validation to the session-owned surface manager, migrate the demo wiring to repl-agent, and refresh generated type, catalog, and website contracts while preserving pressure and overflow pruning behavior.
2026-07-19 17:54:55 +08:00
Tianyi Cui
0893aaa7cb
test: rename golden snapshot files to expected
2026-07-19 17:45:49 +08:00
Yichen Jiang
b0dc299508
Merge remote-tracking branch 'origin/master' into fix/subagent-depth-budget
...
# Conflicts:
# examples/acp-agent/tests/acp.snapshot.ts
2026-07-19 17:42:52 +08:00
Tianyi Cui
bcc920369c
docs: document package KV cache effects
2026-07-19 17:39:50 +08:00
Yichen Jiang
d614374ac6
Merge branch 'master' into fix/subagent-depth-budget
2026-07-19 17:24:24 +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
20fd7133a0
Merge latest master into post-step recovery
...
Adopt initiator-derived private loop and session plumbing while preserving post-step recovery and balanced synthetic tool-call results after cancellation.
Keep the architecture map within its existing budget while documenting ambient Agent ownership and explicit cross-boundary identities.
2026-07-19 17:02:55 +08:00
Tianyi Cui
fd54b5c848
Merge latest master into post-step recovery
...
Combine agent initiator scoping and exact Cordis JSDoc inspection with post-step compaction and bounded request recovery.
Regenerate the Cordis and website API catalogs, and classify the recovery and compaction types required by the current catalog link-coverage gate.
2026-07-19 16:46:01 +08:00
Tianyi Cui
5e2607df8c
refactor(core): capture session inside loop operations
2026-07-19 16:28:31 +08:00
Tianyi Cui
3cd73ec4b8
Merge latest origin/master into codex/simplify-agent-identity-plumbing
2026-07-19 16:19:19 +08:00
Tianyi Cui
ee6b9d081a
fix(llm): scope adapter failures to model calls
...
Replace the process-wide adapter-failure WeakSet with a per-call scope bound to the exact AsyncIterable returned by LlmService.stream(). Give every call a unique wrapper so waterfall middleware can reuse an iterable without sharing provenance.
Move agent-loop recovery classification to the model-stream boundary. Only the final adapter behind that exact call can become an agent/request-error; nested llm/stream calls remain ordinary outer middleware failures while preserving the original Error.
Cover nested calls, reused middleware iterables, and end-to-end agent-loop recovery. Update the package and RFC contracts, bilingual pairing record, and generated API and catalog references.
2026-07-19 16:14:58 +08:00