_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
_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
_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
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
_Kerman
f2e20c1ef0
refactor(agent-loop): simplify message machine
2026-07-30 13:49:57 +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
kingwl
ebbcfdd03b
Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
...
# Conflicts:
# packages/core/agent-loop/src/agent.ts
2026-07-30 03:33:41 +08:00
kingwl
7ce330f0e4
refactor(agent): scope queue actions to edit and remove
2026-07-30 01:58:51 +08:00
kingwl
77479f5ab0
test(queue): close CI coverage gaps
2026-07-30 00:55:02 +08:00
kingwl
c97b1d025e
Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
...
# Conflicts:
# apps/web/tsconfig.json
# docs/architecture.i18n.yaml
# docs/event-producer-consumer.md
# packages/client/runtime/README.i18n.yaml
# packages/client/tsdown.client.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent/README.i18n.yaml
# packages/core/agent/README.zh.md
# packages/host/apiproxy/README.i18n.yaml
# tsconfig.host.json
2026-07-30 00:30:38 +08:00
kingwl
f893e2281d
feat(agent): add addressable queue operations
2026-07-30 00:05:00 +08:00
Tianyi Cui
2d3338a03b
Merge latest master into codex/migrate-to-oxlint
2026-07-29 22:39:06 +08:00
Tianyi Cui
1a21fc3a06
fix(agent-loop): quiesce scheduler failures
2026-07-29 22:10:26 +08:00
Tianyi Cui
32aaa8983e
Merge commit 'ecbf75a5e70f662b6420375140cf12eb6bac7860' into worktree/retarget-pr885-20260729
...
# Conflicts:
# docs/development.i18n.yaml
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-primitives/src/markdown/CodeBlock.tsx
# scripts/snapshots/translation-prompt-v4/request-response.expected.json
2026-07-29 21:37:43 +08:00
xjt
de0348bd9e
docs(i18n): standardize reviewed README headings
2026-07-29 20:16:45 +08:00
j-xiang
599e6edc87
docs(i18n): record proofread README pairs
2026-07-29 15:30:44 +08:00
j-xiang
fff7f9cb3e
docs(i18n): proofread README translations 41-60
2026-07-29 15:29:38 +08:00
Turtle
95a995968b
refactor: migrate linting to Oxlint
2026-07-29 14:32:11 +08:00
_Kerman
b10dad0fcb
fix(persistence): restore pre-identity sessions
2026-07-28 22:16:43 +08:00
_Kerman
bc988ca4a9
Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/core-data-structures/core.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent/README.i18n.yaml
2026-07-28 18:49:23 +08:00
_Kerman
7127528b7f
fix(agent): preserve sent message identity
2026-07-28 18:07:28 +08:00
Yichen Jiang
5358168787
feat(sdk): support max output tokens
2026-07-28 17:36:44 +08:00
_Kerman
b1af35145b
fix: enforce message snapshot invariants
2026-07-28 15:33:00 +08:00
_Kerman
350c296cff
fix: complete immutable message migration
2026-07-28 14:15:23 +08:00
_Kerman
fbf87e660c
refactor: identify and freeze messages at creation
2026-07-28 13:55:59 +08:00
Tianyi Cui
cc8f6a30c0
Merge remote-tracking branch 'origin/master' into worktree/pr703-ci-fix-20260727
...
# Conflicts:
# docs/architecture.i18n.yaml
# packages/core/agent-loop/src/agent.ts
2026-07-28 00:23:27 +08:00
Tianyi Cui
fe22273e28
fix(agent-loop): await final session flush
2026-07-27 23:41:27 +08:00
Tianyi Cui
29619eda77
Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/cordis-catalog/events.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/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
# packages/compact/compact-basic/src/index.ts
# packages/compact/compact-basic/tests/compact-basic.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/loop.ts
# packages/core/agent-loop/tests/request-recovery.spec.ts
# packages/core/agent/src/types.ts
# packages/core/scope/tests/invariant.spec.ts
# packages/llm/llm-retry/README.i18n.yaml
# packages/llm/llm-retry/README.md
# packages/llm/llm-retry/README.zh.md
# packages/llm/llm-retry/src/index.ts
# packages/llm/llm-retry/src/invariant.ts
# packages/llm/llm-retry/tests/invariant.spec.ts
# packages/llm/llm-retry/tests/retry.spec.ts
# packages/plan/plan-mode/src/index.ts
# packages/plan/plan-mode/tests/integration.spec.ts
# packages/plan/plan-mode/tests/plan-mode.spec.ts
2026-07-27 23:29:26 +08:00
Tianyi Cui
8a952ab433
Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.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/event-producer-consumer.md
# docs/module-graph.md
# examples/headless-agent/tests/headless.snapshot.ts
# packages/compact/compact-basic/tests/compact-loop-repro.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/loop.ts
# packages/examples/agent-spine-demo/README.md
# packages/llm/README.md
# packages/llm/llm-deepseek/src/adapter.ts
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm-retry/README.md
# packages/llm/llm/README.md
# packages/llm/llm/src/index.ts
# packages/llm/llm/tests/service.spec.ts
# packages/support/llm-replay/src/index.ts
# packages/support/llm-replay/tests/llm-replay.spec.ts
2026-07-27 22:44:43 +08:00
_Kerman
ed67ad53d2
refactor(agent): return request retry action
2026-07-27 21:17:49 +08:00
_Kerman
9152858fd7
fix(agent-loop): preserve deferred message boundaries
2026-07-27 18:58:27 +08:00
_Kerman
98238ceace
fix(agent-loop): settle rejected admission context
2026-07-27 18:32:07 +08:00
_Kerman
ff7792b17c
docs(agent): document next-step acceptance window
2026-07-27 18:07:51 +08:00
_Kerman
f63d937496
fix(tui): route prompts by next-step capability
2026-07-27 18:05:43 +08:00
_Kerman
a59ce0367c
fix(agent-loop): route next-step input during admission
2026-07-27 17:55:55 +08:00
_Kerman
52174e32cb
refactor(agent): clarify turn lifecycle event names
2026-07-27 17:38:42 +08:00
_Kerman
7d5cc498d3
docs(agent): call agent step an extension point
2026-07-27 17:24:20 +08:00
_Kerman
b6bc4f9f08
test(agent-loop): cover listener-owned stream routes
2026-07-27 17:17:58 +08:00
_Kerman
1ffaa5bb10
cleanup(agent-loop): simplify request construction
2026-07-27 17:12:28 +08:00
_Kerman
749927ecd8
fix: reconcile agent loop merge integration
2026-07-27 17:04:22 +08:00
_Kerman
bd40eec770
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.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/session.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# 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/loop.ts
# packages/core/agent/README.i18n.yaml
# packages/core/agent/tests/llm-target.spec.ts
# packages/core/session/tests/request-header.spec.ts
2026-07-27 16:48:38 +08:00
Yichen Jiang
21aeff3029
Merge remote-tracking branch 'origin/master' into worktree/llm-reasoning-effort
...
# Conflicts:
# .agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml
# docs/config-catalog.md
# docs/core-data-structures/session.i18n.yaml
# scripts/type-equiv.manifest.json
2026-07-27 13:35:10 +08:00
_Kerman
9676696a31
fix(agent-loop): suppress cancel-requested for a no-op keepInbox cancel
...
cancel() emitted agent/cancel-requested whenever queued or steering work
existed, even under keepInbox with no active turn — a call the contract
documents as a no-op. Consumers could misread that notification as a real
cancellation. Emit only when the call actually aborts the active turn or
discards pending work, matching the "effective call" contract.
2026-07-27 01:22:19 +08:00
_Kerman
0dc5d07ae7
fix: close five composition seams found in review round five
...
goal-session rides retry turns and survives admission failures. A
recovery policy closes a goal round's failed turn and reopens its
history under a retry trigger; the attempt now adopts that turn and
drops the failed turn's provisional reason, so the round settles from
the retry's own outcome instead of blocking an armed goal with
turn-error after a successful response. A downstream admission hook
that throws (rather than blocks) used to strand the queued reservation
forever; the listener now clears a still-turnless matching attempt on
the rejection path and reschedules the round.
agent-loop contains a persistently rejecting step close in the catch
path the same way the finally contains the turn close, so the
post-finally tail always publishes the terminal status — previously a
double veto escaped run(), leaving status at running while whenIdle()
resolved. The whenIdle catch arm is annotated as the backstop it now
is: every driver rejection path is contained today.
workspace-context folds an already-appended baseline from the session
log when the plugin is hot-remounted over a live session, instead of
injecting a duplicate from its fresh mount-local guard.
The TUI's reference-admission discard listener installs before
followup(): admission runs synchronously inside it on the common path,
so a listener installed afterwards missed its own cleanup and leaked
one callback per referenced prompt.
2026-07-26 23:03:32 +08:00