_Kerman
d38c8bfaf3
refactor(agent-loop): project runtime context before steps
2026-08-01 20:39:10 +08:00
_Kerman
e0988abc74
Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md
# .agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-sandbox.md
# .agents/notes/implemented/feature/2026-07-06-sandbox.zh.md
# .agents/notes/implemented/feature/2026-07-27-tmux-location-context.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-surface.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-28-remove-synthetic-log-only-turns.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-30-private-agent-send.i18n.yaml
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/compaction.i18n.yaml
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/goal-snapshots/goal-session/session.expected.jsonl
# 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/bash-spill/session.jsonl
# examples/acp-agent/tests/snapshots/bash-tool-turn/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/cancel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/cancel/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
# examples/acp-agent/tests/snapshots/error-finish/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-edit/session.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/fs-glob-sampling/session.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/lsp-definition/session.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/session.jsonl
# examples/acp-agent/tests/snapshots/packed-chunks/session.jsonl
# examples/acp-agent/tests/snapshots/parallel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/pty-tools/session.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/session.jsonl
# examples/acp-agent/tests/snapshots/session-query-spill/session.jsonl
# examples/acp-agent/tests/snapshots/session-sandbox-root/session.jsonl
# examples/acp-agent/tests/snapshots/session-title-after-turn/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/acp-agent/tests/snapshots/todo-write/session.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/session.jsonl
# examples/acp-agent/tests/snapshots/web-fetch/session.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.1.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/session.jsonl
# examples/headless-agent/tests/semantic-checkpoint-snapshots/tool-outcome-unknown/session.expected.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/goal-tools/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/missing-credential/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/provider-retry/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/session.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/ralph-loop/stream-json.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/child.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/parent.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/bash-tool/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/bash-tool/session.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/session.jsonl
# examples/jsonrpc-agent/tests/snapshots/subagent-spawn/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/subagent-spawn/session.1.jsonl
# examples/jsonrpc-agent/tests/snapshots/subagent-spawn/session.jsonl
# examples/jsonrpc-agent/tests/snapshots/text-turn/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/text-turn/session.jsonl
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/sessions/request-inspection.ts
# packages/compact/compact-basic/README.i18n.yaml
# packages/compact/compact-basic/README.md
# packages/compact/compact-basic/README.zh.md
# packages/compact/compact-basic/src/index.ts
# packages/context/time-context/tests/time-context.spec.ts
# packages/context/tmux-context/README.i18n.yaml
# packages/context/tmux-context/tests/tmux-context.spec.ts
# packages/context/workspace-context/tests/workspace-context.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/README.md
# packages/core/agent-loop/README.zh.md
# packages/core/agent-loop/src/agent.ts
# packages/core/agent/README.i18n.yaml
# packages/core/agent/README.md
# packages/core/agent/README.zh.md
# packages/core/agent/src/types.ts
# packages/core/session/README.i18n.yaml
# packages/core/session/README.md
# packages/core/session/README.zh.md
# packages/fs/tool-str-replace-editor/tests/tools.spec.ts
# packages/goal/command-goal/tests/command-goal.spec.ts
# packages/goal/goal/tests/goal.spec.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/tests/api-proxy-workspace.spec.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.md
# packages/llm/llm/README.zh.md
# packages/llm/llm/src/index.ts
# packages/pty/pty-local/tests/index.spec.ts
# packages/pty/pty-local/tests/local.spec.ts
# packages/pty/pty/tests/service.spec.ts
# packages/pty/tool-bash-persistent/tests/loader-composition.spec.ts
# packages/pty/tool-bash-persistent/tests/tools.spec.ts
# packages/pty/tool-pty/tests/loader-composition.spec.ts
# packages/pty/tool-pty/tests/tools.spec.ts
# packages/session-persistence/session-checkpoint-policy/tests/crash-recovery.e2e.ts
# packages/skill/tool-skill/tests/tool-skill.spec.ts
# packages/tasks/tasks-local/tests/tasks.spec.ts
# packages/ui/tui/README.i18n.yaml
# packages/ui/tui/tests/tui.spec.ts
# packages/ui/user-approval/src/index.ts
# packages/ui/user-approval/tests/approval.spec.ts
2026-07-31 22:16:40 +08:00
_Kerman
afedf18ccf
fix inbox lifecycle downstream contracts
2026-07-31 22:00:39 +08:00
kingwl
32a0e871b7
fix(web): preserve queue on stop
2026-07-31 20:51:05 +08:00
_Kerman
8e88b17c9f
fix pre-step lifecycle regressions
2026-07-31 19:40:59 +08:00
_Kerman
fcc2b5e282
refactor agent pre-step inbox lifecycle
2026-07-31 19:21:16 +08:00
Tianyi Cui
6e26f9fd83
Merge latest master into manual compaction
...
# Conflicts:
# apps/cli/README.i18n.yaml
# docs/architecture.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/compact/compact-basic/README.i18n.yaml
# packages/pty/pty-local/tests/index.spec.ts
2026-07-31 17:57:11 +08:00
Hypatia May
a23a6bdd15
Merge origin/master into codex/status-bar-token-metrics
...
Resolve the agent-loop import conflict by retaining both durable request context and runtime policy context. Refresh the combined session fixtures and regenerate documentation catalogs. Mark PDF artifacts as binary so staged whitespace checks do not parse PDF bytes as text.
2026-07-31 16:53:03 +08:00
NI0317
1beb38554e
fix(review): align runtime-context diagnostics and docs
2026-07-31 15:19:59 +08:00
_Kerman
c2ff9ddec8
fix(agent-loop): scope blocked admission cleanup
2026-07-31 14:35:58 +08:00
_Kerman
12a48558f2
fix(agent-loop): stop driver after cancellation
2026-07-31 14:23:01 +08:00
_Kerman
741fc7dc79
fix(agent-loop): report turn failures at source
2026-07-31 13:54:36 +08:00
Tianyi Cui
e6407477a7
fix(agent-loop): clear compacted runtime context
2026-07-31 13:49:40 +08:00
Tianyi Cui
3d6decedba
chore(agent-loop): flag request context code smell
2026-07-31 11:59:22 +08:00
NI0317
4e1ccebfff
Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context
...
# Conflicts:
# examples/acp-agent/tests/goal-snapshots/goal-session/session.expected.jsonl
# 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/bash-spill/session.jsonl
# examples/acp-agent/tests/snapshots/bash-tool-turn/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/cancel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/cancel/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
# examples/acp-agent/tests/snapshots/error-finish/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-edit/session.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/lsp-definition/session.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/session.jsonl
# examples/acp-agent/tests/snapshots/packed-chunks/session.jsonl
# examples/acp-agent/tests/snapshots/parallel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/pty-tools/session.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/session.jsonl
# examples/acp-agent/tests/snapshots/session-query-spill/session.jsonl
# examples/acp-agent/tests/snapshots/session-sandbox-root/session.jsonl
# examples/acp-agent/tests/snapshots/session-title-after-turn/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/acp-agent/tests/snapshots/todo-write/session.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/session.jsonl
# examples/acp-agent/tests/snapshots/web-fetch/session.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.1.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/session.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/session.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/stream-json.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/child.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/parent.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/session.jsonl
# packages/core/agent-loop/src/agent.ts
2026-07-31 11:02:45 +08:00
_Kerman
7a463dbe44
Merge branch 'master' of https://github.com/deepseek-harness/deepseek-harness into xtr/react-loop-simplification
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-17-dedicated-full-screen-tui-front-door.i18n.yaml
# docs/architecture.i18n.yaml
# docs/cookbook/extension-cookbook.i18n.yaml
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/src/agent.ts
# packages/core/agent/README.i18n.yaml
# packages/core/session/README.i18n.yaml
# packages/core/session/src/types.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.md
# packages/llm/llm/README.zh.md
# packages/llm/llm/src/index.ts
# packages/llm/llm/tests/service.spec.ts
# packages/sdk/sdk-client/README.i18n.yaml
# packages/sdk/sdk-protocol/README.i18n.yaml
# packages/sdk/sdk-protocol/README.md
# packages/sdk/sdk-protocol/README.zh.md
# packages/subagent/subagent-dsh-sdk/README.i18n.yaml
# packages/ui/jsonrpc/README.i18n.yaml
# packages/ui/jsonrpc/README.md
# packages/ui/jsonrpc/README.zh.md
# packages/ui/tui/src/index.ts
# python/sdk/README.i18n.yaml
# scripts/gen-cordis-catalog.ts
2026-07-31 10:16:14 +08:00
_Kerman
060c0f78f0
fix(agent): restore public send method
2026-07-31 10:01:35 +08:00
Hypatia May
01e64c6350
Merge finalized Web transcript parent
2026-07-31 09:46:32 +08:00
Hypatia May
ff8c5600f4
Merge pinned master into status bar projection
2026-07-31 09:28:52 +08:00
Tianyi Cui
464a57d3ca
Merge commit 'refs/codex/pr1006/master' into worktree/pr1006-merge-20260731
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/headless-agent/cordis.yml
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm-deepseek/README.md
# packages/llm/llm-deepseek/README.zh.md
# packages/llm/llm-deepseek/src/adapter.ts
# packages/llm/llm-deepseek/src/index.ts
# packages/llm/llm-deepseek/tests/adapter.spec.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.md
# packages/llm/llm/README.zh.md
# packages/subagent/subagent-dsh-sdk/README.i18n.yaml
# packages/ui/jsonrpc/README.i18n.yaml
2026-07-31 01:55:19 +08:00
NI0317
8b4cbe4293
feat(system-prompt): cache dynamic policy context
2026-07-30 22:09:15 +08:00
Yichen Jiang
5fd34f9109
fix(agent-loop): rematerialize adapter defaults
2026-07-30 21:49:58 +08:00
Yichen Jiang
daf70f3660
feat(llm-deepseek): configure max token defaults
2026-07-30 21:04:00 +08:00
Yichen Jiang
3957ce007a
Merge branch 'worktree-llm-dynamic-config' into worktree-llm-web-config
...
# Conflicts:
# apps/cli/cordis.yml
# apps/cli/package.json
# apps/cli/tests/tui-keyless-smoke.e2e.ts
# apps/web/tests/details-session-lifecycle.e2e.ts
# apps/web/tests/snapshots/code-mode-round/ui.expected.md
# apps/web/tests/snapshots/cordis-tool-round/ui.expected.md
# apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
# apps/web/tests/snapshots/lifecycle-chrome/hero.expected.md
# apps/web/tests/snapshots/lifecycle-chrome/reloaded.expected.md
# apps/web/tests/snapshots/live-interactions/cancel.expected.md
# apps/web/tests/snapshots/live-interactions/error-auth.expected.md
# apps/web/tests/snapshots/live-interactions/retry.expected.md
# apps/web/tests/snapshots/message-actions/ui.expected.md
# apps/web/tests/snapshots/question-composer/answered.expected.md
# apps/web/tests/snapshots/seeded-history/ui.expected.md
# apps/web/tests/snapshots/steering/mid-steer.expected.md
# apps/web/tests/snapshots/steering/settled.expected.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# docs/user/guide/config.i18n.yaml
# docs/user/guide/config.md
# docs/user/guide/config.zh.md
# docs/user/guide/index.i18n.yaml
# docs/user/guide/index.md
# docs/user/guide/index.zh.md
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# examples/cordis-agent/cordis.yml
# examples/cordis-agent/tests/cordis-tools.e2e.ts
# examples/headless-agent/tests/semantic-checkpoint-snapshots/tool-outcome-unknown/session.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/parent.expected.jsonl
# examples/tui-agent/code-mode.cordis.yml
# examples/tui-agent/cordis.yml
# packages/examples/tui-demo/README.md
# packages/examples/tui-demo/README.zh.md
# packages/host/apiproxy/README.i18n.yaml
# packages/pty/tool-bash-persistent/README.i18n.yaml
# packages/ui/tui/tests/snapshots/status-diagnostics-narrow.expected.txt
# packages/ui/tui/tests/snapshots/status-diagnostics.expected.txt
# pnpm-lock.yaml
# scripts/snapshots/python-sdk-single-exe/advanced/result.json
# scripts/snapshots/python-sdk-single-exe/advanced/session.1.jsonl
# scripts/snapshots/python-sdk-single-exe/advanced/session.2.jsonl
# scripts/snapshots/python-sdk-single-exe/advanced/session.jsonl
2026-07-30 20:15:40 +08:00
Hypatia May
eb3188f05d
Merge remote-tracking branch 'origin/fix/web-transcript-projection' into feat/manual-compact-single-lock
...
# Conflicts:
# apps/cli/config/base.cordis.yml
# apps/cli/cordis.yml
# docs/event-producer-consumer.md
# examples/package.json
# examples/tui-agent/README.i18n.yaml
# examples/tui-agent/README.md
# examples/tui-agent/README.zh.md
# pnpm-lock.yaml
2026-07-30 20:09:23 +08:00
_Kerman
c891cb6f6f
fix(agent): address initial review findings
2026-07-30 18:54:19 +08:00
Hypatia May
7cafb71ad7
Merge remote-tracking branch 'origin/master' into codex/status-bar-token-metrics
2026-07-30 18:29:08 +08:00
_Kerman
a4ae0b4126
fix: commit step context before request dispatch
2026-07-30 18:18:04 +08:00
_Kerman
7ba60845d6
test(agent-loop): update lifecycle regression contracts
2026-07-30 18:05:23 +08:00
_Kerman
97111cb5b3
fix: align lifecycle consumers with durable inbox semantics
2026-07-30 17:56:02 +08:00
_Kerman
4e5266daa4
test: align consumers with owned-run semantics
2026-07-30 17:45:58 +08:00
Hypatia May
faac9b4fd5
round 1: implement bracket-first manual compaction
2026-07-30 17:40:25 +08:00
_Kerman
d1dc303bc6
Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/core-data-structures/session.i18n.yaml
# docs/persistence-catalog.md
# packages/cordis/tool-cordis/src/api-catalog.ts
2026-07-30 17:30:10 +08:00
_Kerman
5a0d26a0e4
test: migrate consumers to inbox and owned-run APIs
2026-07-30 17:28:03 +08:00
Hypatia May
6d58953f30
fix(token-meter): close projected usage review gaps
2026-07-30 17:22:15 +08:00
Hypatia May
e23cd8e406
Merge remote-tracking branch 'origin/master' into codex/status-bar-token-metrics
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/core-data-structures/session.i18n.yaml
# docs/core-data-structures/session.md
# docs/core-data-structures/session.zh.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/session/src/types.ts
2026-07-30 17:11:53 +08:00
Turtle
3c620a0cb6
Merge remote-tracking branch 'origin/master' into feature/shared-cli-config-foundation
...
# Conflicts:
# docs/cordis-catalog/services.md
# packages/host/apiproxy/README.i18n.yaml
2026-07-30 16:53:55 +08:00
_Kerman
4370004360
refactor(agent): expose mutable inbox state
2026-07-30 15:35:18 +08:00
Hypatia May
8527137230
refactor(session): rename the seed boundary to end-seed
2026-07-30 15:32:06 +08:00
Yichen Jiang
483199d47a
Merge branch 'worktree-llm-dynamic-config' into worktree-llm-web-config
...
# Conflicts:
# apps/cli/cordis.yml
# apps/web/tests/snapshots/code-mode-round/session.jsonl
# apps/web/tests/snapshots/cordis-tool-round/session.jsonl
# apps/web/tests/snapshots/fresh-round-trip/session.jsonl
# apps/web/tests/snapshots/lifecycle-chrome/session.jsonl
# apps/web/tests/snapshots/live-interactions/session.jsonl
# apps/web/tests/snapshots/navigation-panes/seed.jsonl
# apps/web/tests/snapshots/question-composer/session.jsonl
# apps/web/tests/snapshots/seeded-history/seed.jsonl
# apps/web/tests/snapshots/steering/session.jsonl
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/settings.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/workspace-context/session.jsonl
# packages/client/connection/README.i18n.yaml
# packages/client/connection/src/index.ts
# packages/client/connection/tests/node-half.spec.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/ui-models/README.i18n.yaml
# packages/examples/tui-demo/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/package.json
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/rpc.schema.ts
# packages/host/apiproxy/src/api/rpc.ts
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm-deepseek/README.zh.md
# packages/llm/llm-pi-ai/README.i18n.yaml
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.zh.md
# packages/sdk/sdk-client/README.i18n.yaml
# packages/settings/settings/README.i18n.yaml
# packages/settings/settings/README.md
# packages/settings/settings/README.zh.md
# packages/subagent/subagent-dsh-sdk/README.i18n.yaml
# packages/subagent/subagent-dsh-sdk/README.zh.md
# packages/support/llm-replay/README.i18n.yaml
# packages/ui/jsonrpc/README.i18n.yaml
# packages/ui/jsonrpc/README.zh.md
# packages/ui/tui/tests/snapshots/model-selector.expected.txt
# packages/ui/tui/tests/snapshots/model-switching.expected.txt
# packages/ui/tui/tests/snapshots/resume-sessions.expected.txt
# packages/ui/tui/tests/snapshots/status-diagnostics-narrow.expected.txt
# packages/ui/tui/tests/snapshots/status-diagnostics.expected.txt
# packages/ui/tui/tests/tui.snapshot.ts
# pnpm-lock.yaml
# python/sdk/README.i18n.yaml
# scripts/snapshots/translation-prompt-v4/request-response.expected.json
2026-07-30 15:18:26 +08:00
Hypatia May
8a8c1965d7
feat(web): show durable token usage and context occupancy in the stats line
...
The chat stats line took its token totals from the loaded conversation nodes,
so paging changed them and compaction erased the billing behind replaced
content. It also had no way to show context occupancy: the numerator and
capacity never reached the browser.
Both now come from token-meter session projections read through the standard
useProjection seat. Window nodes keep supplying turn and step counts plus LLM
and tool wall times, which are correctly window-scoped facts about what is on
screen; accounting no longer comes from there.
`tokenUsage` supplies billing and cache hit. `contextPressure` supplies
occupancy, pairing the newest provider-reported prompt size with the newest
capacity recorded by `request/context`. Deployments without token-meter drop
the token groups; a route whose adapter advertises no capacity drops the
occupancy group rather than rendering a placeholder.
Occupancy is deliberately approximate: the numerator and capacity are
independent last-wins fields, not one atomic request observation, so switching
models pairs a fresh capacity with the prior route's pressure until the next
request reports usage. It is a user-facing reference figure that nothing in the
harness makes decisions from, and it matches how the TUI status line has always
computed occupancy. The Agent Note and token-meter README state this as a
decision, including why the atomic alternative was implemented and rejected, so
it is not re-litigated as a defect.
Snapshot delta is one added `Context N% of 128K` segment across eight web
goldens; the preceding commit absorbed master's pre-existing golden drift.
2026-07-30 14:48:19 +08:00
Hypatia May
9e6f251a4c
Merge remote-tracking branch 'origin/master' into feat/session-inherited-boundary
...
# Conflicts:
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
2026-07-30 14:20:35 +08:00
_Kerman
c0ef93efc8
Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md
# .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md
# .agents/notes/implemented/feature/2026-07-21-tui-skill-slash-command.i18n.yaml
# .agents/notes/implemented/feature/2026-07-21-tui-skill-slash-command.md
# .agents/notes/implemented/feature/2026-07-21-tui-skill-slash-command.zh.md
# .agents/notes/implemented/simplification/2026-07-17-one-send-one-turn.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-17-one-send-one-turn.md
# .agents/notes/implemented/simplification/2026-07-17-one-send-one-turn.zh.md
# docs/architecture.i18n.yaml
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/defensive-patterns.i18n.yaml
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/queue-store.spec.ts
# packages/context/time-context/tests/time-context.spec.ts
# packages/context/workspace-context/tests/workspace-context.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/README.md
# packages/core/agent-loop/README.zh.md
# packages/core/agent-loop/src/agent.ts
# packages/core/agent/README.i18n.yaml
# packages/core/agent/README.md
# packages/core/agent/README.zh.md
# packages/core/agent/src/types.ts
# packages/core/agent/tests/agent.spec.ts
# packages/core/scope/src/scoped-events.generated.ts
# packages/goal/command-goal/tests/command-goal.spec.ts
# packages/goal/goal-session/src/index.ts
# packages/goal/goal-session/tests/goal-session.spec.ts
# packages/goal/goal/tests/goal.spec.ts
# packages/goal/goal/tests/projection.spec.ts
# packages/goal/tool-goal/tests/tool-goal.spec.ts
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/events.schema.ts
# packages/host/apiproxy/src/api/events.ts
# packages/host/apiproxy/tests/api-proxy-workspace.spec.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.zh.md
# packages/llm/llm/src/index.ts
# packages/pty/pty-local/tests/index.spec.ts
# packages/pty/pty-local/tests/local.spec.ts
# packages/pty/pty/tests/service.spec.ts
# packages/pty/tool-pty/tests/loader-composition.spec.ts
# packages/pty/tool-pty/tests/tools.spec.ts
# packages/skill/tool-skill/tests/tool-skill.spec.ts
# packages/tasks/tasks-local/tests/tasks.spec.ts
# packages/ui/tui/src/index.ts
# packages/ui/tui/tests/harness.ts
# packages/ui/tui/tests/tui.spec.ts
# scripts/gen-cordis-catalog.ts
# scripts/type-equiv.manifest.json
2026-07-30 14:04:53 +08:00
Hypatia May
7f30a7e30c
Merge remote-tracking branch 'origin/master' into codex/status-bar-token-metrics
...
Conflict resolution notes:
- StatsLine: master redesigned the row into pipe-separated groups with LLM and
tool wall times. Kept that design and swapped only the token accounting
source, so counts and durations stay window-scoped while billing and context
occupancy read the durable projections.
- Generated artifacts (cordis catalog, module graph, event producer/consumer,
i18n pairing hashes) and web snapshots took master's side; they are
regenerated and re-recorded after this merge.
- Web e2e goldens and details-panel/timeline assertions took master's side:
that evolution is unrelated to this branch.
- ui-conversation package.json: kept master's devDependency ordering, re-adding
only the token-meter entry this branch needs.
2026-07-30 13:56:39 +08:00
Hypatia May
4819210142
refactor(token-meter): make context occupancy durable projection state
...
Replace the transient `session/model-request` mux frame with ordinary durable
session state. Occupancy now rides two last-wins projection fields instead of a
non-replayable frame that needed removal tombstones and cross-stream fencing.
The frame was the only non-replayable class on the mux stream. Because host and
mux are independent SSE streams with no cross-stream order, a request emitted
before a removal could arrive after `host/session-removed`, and a legitimate
request for a new lifecycle reusing the same id could be fenced by a late
removal. Fixing that needed a lifecycle generation on every frame; the frame
itself was the problem.
Removed: the `session/model-request` frame and schema, the `agent/model-request`
core event, the ApiProxy measurement point, the client-side telemetry map and
removal tombstone, and the synthetic `cancelled` open error used to signal
reconnect through the error channel.
Added: `request/context`, a log-only session event recording the
registration-bound capacity of the route a request resolved to, appended beside
`request/header` from the lookup that already prepared the call and skipped when
the route is unchanged. Capacity stays out of `EpochHeader` because it is
adapter metadata about a route, not an input the request was built from, so it
must not join request reconstruction or header equality.
The `contextPressure` projection pairs the newest provider-reported prompt size
with the newest recorded capacity. The two are deliberately not one atomic
request observation: switching models can pair a fresh capacity with the prior
route's pressure until the next request reports usage. The figure is a
user-facing reference, and this matches how the TUI status line has always
computed occupancy.
2026-07-30 13:53:08 +08:00
_Kerman
f2e20c1ef0
refactor(agent-loop): simplify message machine
2026-07-30 13:49:57 +08:00
Turtle
5a490553bc
Merge remote-tracking branch 'origin/master' into feature/shared-cli-config-foundation
...
# Conflicts:
# docs/event-producer-consumer.md
# packages/host/apiproxy/README.i18n.yaml
# tsconfig.base.json
2026-07-30 12:00:15 +08:00
Hypatia May
b341155652
feat(session): project the inherited-history boundary into the log
...
A plugin owning a standalone open/close bracket cannot tell a dead marker
from a live one: an unmatched `compact/start` reads identically whether the
previous writer died mid-compaction or a compaction is running now.
`Session.firstLiveSeq` already holds that answer exactly, but only in memory.
Append the log-only `session/inherited` event at that seq from the seeded
constructor — the single waist all six seeded-start paths pass through
(resume, configured startup on a persisted id, `sessions.fork()`, a subagent
fork child, `adopt()`'s live prefix, and a bare seeded `create`). Read it
through the new `isInheritedSeq(events, seq)`.
The constructor placement means persistence needs no changes: the marker is
already in `events` when a backend captures the creation seed, so it rides
the ordinary seed path with no load-time write. It also covers fork, where
the inherited bracket's owner may still be running — the case a
persistence-layer boundary could not reach.
Activity ordering excludes the boundary through `lastActivityTime()`, since
lazy resume makes browsing a pickup and the three call sites would otherwise
float every opened session to the top of a picker or list.
2026-07-30 11:39:26 +08:00
Turtle
c086de2074
fix(docs): align catalogs with consolidated CLI
2026-07-30 10:34:21 +08:00
Turtle
5dbcedfbba
Merge origin/master into feature/shared-cli-config-foundation
2026-07-30 10:11:38 +08:00