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
imccyu
432a64ef2f
Merge branch 'master' into worktree/short-default-labels
2026-07-30 12:56:11 +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
Yichen Jiang
fb4b8f3973
Merge remote-tracking branch 'origin/master' into worktree/short-default-labels
...
# Conflicts:
# packages/client/ui-model/src/client/ModelSelect.tsx
# packages/client/ui-model/tests/model-select.spec.tsx
2026-07-30 10:47:35 +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
Yichen Jiang
15eaac6af5
fix(ui): shorten default reasoning labels
2026-07-30 00:57:38 +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
Tianyi Cui
0440c4cc0c
Merge latest master into codex/migrate-to-oxlint
2026-07-30 00:13:30 +08:00
kingwl
f893e2281d
feat(agent): add addressable queue operations
2026-07-30 00:05:00 +08:00
Tianyi Cui
fca0c05155
Merge remote-tracking branch 'origin/master' into worktree/pr823-retarget-latest-20260729
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/skills.i18n.yaml
# docs/core-data-structures/skills.md
# docs/core-data-structures/skills.zh.md
# packages/host/apiproxy/README.i18n.yaml
# packages/skill/skill-local/README.i18n.yaml
# packages/skill/skill/README.i18n.yaml
# packages/skill/skill/README.md
# packages/skill/skill/README.zh.md
# packages/skill/skill/src/index.ts
# packages/skill/skill/tests/skill.spec.ts
# packages/skill/tool-skill/README.i18n.yaml
# packages/skill/tool-skill/src/index.ts
# packages/ui/tui/README.i18n.yaml
# packages/ui/tui/README.md
# packages/ui/tui/README.zh.md
# packages/ui/tui/src/index.ts
# packages/ui/tui/tests/tui.spec.ts
2026-07-29 23:36:49 +08:00
Tianyi Cui
12832886c5
refactor(skill): canonicalize invocation policy
2026-07-29 22:51:47 +08:00
Tianyi Cui
5fb4bd66d7
Merge latest master into codex/migrate-to-oxlint
2026-07-29 22:01:25 +08:00
Tianyi Cui
bb3e5c8c05
Merge remote-tracking branch 'origin/master' into worktree/pr823-retarget-latest-20260729
2026-07-29 21:59:24 +08:00
Tianyi Cui
d10dde430c
Merge origin/master at ddeb1cab2d into skill catalog hot refresh
2026-07-29 21:55:32 +08:00
Tianyi Cui
66072285c8
fix(skill): enforce invocation policy before load
2026-07-29 21:48:15 +08:00
Tianyi Cui
a5446e3160
Merge master into fix/subprocess-password-scrub
...
# Conflicts:
# packages/lsp/lsp-local/README.i18n.yaml
# packages/subprocess/subprocess-local/README.i18n.yaml
# packages/subprocess/subprocess-local/README.zh.md
2026-07-29 21:38:24 +08:00
Tianyi Cui
5bf93e4229
Merge origin/master into worktree/skill-catalog-hot-refresh
2026-07-29 16:40:40 +08:00
Turtle
711efc0a8e
Merge remote-tracking branch 'origin/master' into codex/migrate-to-oxlint
2026-07-29 14:32:21 +08:00
Turtle
95a995968b
refactor: migrate linting to Oxlint
2026-07-29 14:32:11 +08:00
Yichen Jiang
8f9535af87
Merge remote-tracking branch 'origin/master' into worktree/skill-invocation-controls
...
# Conflicts:
# docs/cordis-catalog/services.md
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/ui/tui/README.i18n.yaml
2026-07-29 12:58:10 +08:00
Turtle
31cb340c36
feat(tui)!: consolidate terminal UI improvements
2026-07-29 10:00:29 +08:00
Tianyi Cui
07d61ee992
Merge latest master into skill invocation controls
...
# Conflicts:
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/skill/tool-skill/src/index.ts
# packages/ui/tui/README.i18n.yaml
2026-07-29 01:29:39 +08:00
ZiyaZhang
8d77e5149c
Merge remote-tracking branch 'upstream/master' into fix/subprocess-password-scrub
2026-07-28 08:15:08 -07:00
07akioni
a39890bba5
Merge branch 'master' into feat/close-todo
2026-07-28 19:45:36 +08:00
07akioni
7bf36c6aa3
Merge origin/master into feat/close-todo
...
Keep master's session-projection carrier for todos, and fold turn/start
clearance into the tool-todo projection unit (plus TUI/fixture mirrors).
2026-07-28 19:43:56 +08:00
_Kerman
9220dbd271
Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages
...
# Conflicts:
# docs/event-producer-consumer.md
# packages/client/connection/src/client/fixture.ts
# packages/goal/command-goal/tests/command-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-view.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
# tsconfig.base.json
2026-07-28 18:11:13 +08:00
Yichen Jiang
1fd06eae89
Merge remote-tracking branch 'origin/master' into worktree/skill-invocation-controls
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
2026-07-28 18:00:40 +08:00
07akioni
9e94082f4d
feat: implement todo plan clearance on turn start
2026-07-28 17:58:09 +08:00
Yichen Jiang
babb8f1496
fix(skill): normalize invocation policy
2026-07-28 17:55:49 +08:00
Yichen Jiang
e133e4bddb
feat(skill): add invocation controls
2026-07-28 17:22:41 +08:00
ZiyaZhang
d0cbf825a5
fix(subprocess): share password scrub with direct spawners
2026-07-28 02:19:18 -07:00
_Kerman
fbf87e660c
refactor: identify and freeze messages at creation
2026-07-28 13:55:59 +08:00
imccyu
a3bdec4450
Merge remote-tracking branch 'origin/master' into worktree-guifork
2026-07-28 10:23:48 +08:00
Tianyi Cui
2612a4b587
Merge latest master into skill catalog hot refresh
2026-07-28 01:10:33 +08:00
Tianyi Cui
f6a450102e
Merge updated origin/master into feat/tui-master-port
2026-07-27 23:55:53 +08:00
Tianyi Cui
f843d2b238
Merge origin/master into feat/tui-master-port
2026-07-27 23:34:56 +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
imccyu
6d2e5a7cd7
feat: command.execute returns the lifecycle pairing id ({matched, commandId?})
...
CommandService.execute now returns a CommandExecution — the normalized
result plus the commandId minted for its command/run/command/done records —
and the wire admission value carries commandId exactly when matched, so the
issuing client can correlate its RPC acknowledgment with the flow node the
lifecycle events produce. apiproxy api/schema/handler, the connection
fixture, and the TUI/plan/goal consumers follow the new shape.
2026-07-27 23:07:13 +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
Turtle
4efc90d798
cleanup(tui): give xml-tool-output.ts a module header like its peers
...
Every other tui source file opens with a multi-line description ending
in @module; xml-tool-output.ts had only a one-line header. Align it.
2026-07-27 21:04:11 +08:00
Turtle
46bbbce109
refactor(tui): split createTuiChat into chat/ sub-controllers
...
Extract model-command, questions, and resume sub-machines from the
~1600-line createTuiChat closure into src/chat/ factories that take
explicit dependency bundles (shared ChatChannelDeps/ChannelNotice).
Reorganize src/ so chat/ holds all chat-channel concerns (former input
and session/ files move under it); xml-tool-output moves to components/;
TuiRuntime/TuiResumeHost move to runtime.ts. index.ts drops 2067->~1530
lines. Behavior identical: 167 tests and all TUI snapshots pass unchanged.
2026-07-27 21:04:11 +08:00
Turtle
84fe617a01
fix(tui): breathe running glyph symmetrically instead of blanking at the trough
...
The running status glyph clipped its cosine throb to a blank column below
STATUS_FADE_MIN_OPACITY, so each breath read as bold->dim->disappear rather
than bold->dim->bold. Remove the cutoff and the constant; the trough now
renders as the dimmest gray, giving a symmetric breathe. Turn-boundary
appear/disappear is unchanged (fade envelope and non-truecolor visible
threshold).
2026-07-27 19:36:39 +08:00
_Kerman
613eaba80c
fix(tui): correlate referenced prompt snapshots
2026-07-27 19:06:44 +08:00
Turtle
4c5f92e0fd
feat(tui): personal TUI rework, integrating upstream model reasoning-effort selection
...
Consolidates the personal dsh-tui customizations (module split into
components/session/extension, prompt template + running-glyph indicator,
copyable transcript, tool-card headers, timing placement, XML tool output,
status/footer rework) and ports upstream's model reasoning-effort selector
(Shift+Tab effort cycling, effort-aware /model, footer, and /status) onto
the personal module layout.
2026-07-27 18:55:13 +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
Yichen Jiang
55d7b71de3
Merge remote-tracking branch 'origin/master' into worktree/skill-catalog-hot-refresh
...
# Conflicts:
# packages/ui/tui/README.i18n.yaml
2026-07-27 16:51:36 +08:00
Yichen Jiang
b76659aa57
feat(skill): hot-refresh skill catalogs
2026-07-27 16:50:56 +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
_Kerman
71152bc4c0
fix(tui): mark disposed when the agent leaves the registry under the TUI
...
agent/disposed only cleared the status line, so an agent-loop-only reload that
disposed the agent while the TUI stayed mounted left the local disposed flag
false. Since retained agents accept deliveries after detachment, later input
drove a zombie agent/session. Set disposed on agent/disposed so dispatchMessage
reports it. Adds a regression that sends after disposal and asserts no delivery.
2026-07-27 01:59:59 +08:00