Commit Graph

2876 Commits

Author SHA1 Message Date
Turtle
a3ad5241ba Merge remote-tracking branch 'origin/master' into feat/send-unify
# Conflicts:
#	docs/persistence-catalog.md
#	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/cordis-inspect-jsdoc/stdout.expected.jsonl
#	packages/context/time-context/tests/time-context.spec.ts
#	packages/cordis/tool-cordis/src/api-catalog.ts
2026-07-23 20:54:48 +08:00
Turtle
866b543700 docs(agent): fix stale 'info' param name in agent/inbox/enqueue JSDoc
The @param was renamed info→message; the body sentence still named info.
Found by fresh-eye review. Regenerated the catalog/graph docs.
2026-07-23 20:50:13 +08:00
Turtle
3fd72f7c74 feat(agent): rename InboxItemInfo to AgentMessage with an id; send returns it
Add a branded AgentMessageId assigned to each accepted send message and
returned from send/followup/steer/inject (was void). Rename the inbox
event payload InboxItemInfo to AgentMessage, carrying that id so a caller
can correlate a queued item with its enqueue/dequeue/discard events.
2026-07-23 20:45:29 +08:00
imccyu
8930b4f5fb Merge branch 'master' into worktree/web-carrier-chain 2026-07-23 20:19:20 +08:00
Tianyi Cui
a5cb16cc0e Merge master into codex/jsonl-storage-identity 2026-07-23 20:12:26 +08:00
imccyu
31c2198a98 Merge branch 'master' into worktree/web-carrier-chain 2026-07-23 20:04:03 +08:00
imccyu
a8c6dcb180 fix(gui): contain selector failures and key the chain boundary by entry
Two hardenings on the chain outlet branch:

A throwing chain selector runs before its entry's SlotErrorBoundary
exists, so uncontained it blacked out the whole owner region and skipped
the remaining chain. It now degrades to a decline: reported via
console.error with the registrant identity, later entries still tried,
all-null/all-throw passes land on the owner fallback.

The elected entry's boundary is now keyed by entry identity: an unkeyed
boundary that failed on entry A survived a re-election and kept a
healthy entry B blacked out until the outlet unmounted. The key remounts
the boundary fresh whenever the election changes.
2026-07-23 20:01:04 +08:00
imccyu
abe3da3656 Merge branch 'master' into worktree/web-carrier-chain 2026-07-23 19:49:26 +08:00
Tianyi Cui
91653be917 Merge branch 'master' into worktree/tui-file-autocomplete 2026-07-23 19:47:29 +08:00
imccyu
3f6158f2c6 Merge branch 'master' into worktree/web-carrier-chain 2026-07-23 19:46:13 +08:00
Yichen Jiang
4bf5a85a32 Merge branch 'master' into worktree/tui-file-autocomplete 2026-07-23 19:45:08 +08:00
Tianyi Cui
a3c0b5a3b4 Merge branch 'master' into worktree/ci-subminute-stability 2026-07-23 19:43:54 +08:00
imccyu
ed6bd6d25c Merge branch 'master' into worktree/web-carrier-chain 2026-07-23 19:38:19 +08:00
Turtle
95e75ba3e0 fix(agent-loop): balance inbox invariant on continuation-reason steer
The FIFO-conservation invariant fired on the loop-authored continuation
reason path: a continue-with-reason decision entered the steering FIFO
without an agent/inbox/enqueue, so its later dequeue/discard had no
matching enqueue. Emit the enqueue for that steer too, add a regression
test that mounts the invariant over a continue-with-reason turn and a
cancel, and hoist the duplicated inboxInfo helper into inbox.ts.

Found by fresh-eye review.
2026-07-23 19:37:21 +08:00
Yichen Jiang
40ce342d81 Merge remote-tracking branch 'origin/master' into worktree/tui-file-autocomplete
# Conflicts:
#	docs/config-catalog.md
2026-07-23 19:32:13 +08:00
Yichen Jiang
d8051f82f6 test(client): cover Markdown fixture reply 2026-07-23 19:29:23 +08:00
Yichen Jiang
01dcc7920c fix(tui): honor file reference boundaries 2026-07-23 19:21:02 +08:00
Yichen Jiang
6f624c67c4 feat(web): render assistant Markdown 2026-07-23 19:18:05 +08:00
Turtle
44fd93fd06 feat(agent): unify send(target × wakeup), coalesce context/message into user/message
Replace send/steer/inject with one Agent.send primitive over the
(target × wakeup) matrix; followup/steer/inject become fixed-preset
alias methods on the now-abstract Agent class. Coalesce context/message
into user/message (injected context is a non-user source). Replace
agent/queued with agent/inbox/enqueue/dequeue/discard, add cancel
keepInbox, and add a FIFO-conservation invariant.
2026-07-23 19:15:45 +08:00
imccyu
39a60c0215 style(gui): shorten the ConversationSlotProps doc line for the lint gate 2026-07-23 18:33:33 +08:00
Tianyi Cui
0d87f7ee27 Merge remote-tracking branch 'origin/master' into worktree/ci-subminute-stability 2026-07-23 18:33:04 +08:00
imccyu
5c53af88b3 Merge branch 'master' into fix/web-zstd-session-logs 2026-07-23 18:29:44 +08:00
Tianyi Cui
7e81d9dad2 test: bind webserver fixtures atomically 2026-07-23 18:25:00 +08:00
imccyu
c18be97f17 refactor(gui): route the composer chain on PendingWait currency 2026-07-23 18:18:52 +08:00
Tianyi Cui
2c98610601 Merge branch 'master' into codex/code-mode-complete-result-card 2026-07-23 18:18:42 +08:00
imccyu
408cdf7436 refactor(gui): mint kind-agnostic PendingWait carriers for pending interactions 2026-07-23 18:11:21 +08:00
Yichen Jiang
c37892f753 Merge branch 'master' into worktree/tui-file-autocomplete 2026-07-23 18:07:34 +08:00
imccyu
3826b50b4a feat(gui): chain slot kind with select routing and renderSlotChain 2026-07-23 18:03:44 +08:00
Tianyi Cui
fa5c3fa0b9 Merge origin/master into codex/code-mode-complete-result-card 2026-07-23 17:59:58 +08:00
Yichen Jiang
d633758a30 fix(tui): keep config schema statically walkable 2026-07-23 17:50:32 +08:00
imccyu
bbde18caff refactor(gui): dissolve the tool ring into per-view keyed slots
Four rounds of structural rework on the conversation surface, converging
on one registration model for the whole client:

- Review fixes: open() leaves the inject factory (SessionsService owns
  the semantic); ConversationService mounts via ctx.plugin(); the
  bespoke view registry retires into the 'conversation.view' list slot.
- Ring alignment: createChatView factory retired (components get
  everything through checkable shares at the register call site); the
  hand-rolled t/i18n threading is deleted wholesale — a future
  framework-level i18n will supply t as a standard prop keyed by slot
  name, so no interim manual channel.
- Toolview dissolution: ToolViewRegistry / ToolViewResolver /
  ToolViewOutlet / ctx.toolviews retire. Tool rows are entries of the
  'conversation.chat.toolview' keyed slot (scope: session) declared by
  the chat entry; ToolRowOwnerProps is the unified owner payload;
  GenericToolCard becomes the call-site fallback; registrants are plain
  plugins (inject ['slots','conversation'] as the load-order seam);
  session-dimension dispatch moves into components (useSessions reads
  parentId); trajectory/waterfall gain same-shape slots the day they
  render tool rows (RendersCheck rejects empty declarations). Slot
  names mirror the composition path (<domain>.<entry>.<hole>).
- Staging follows current: cell()/binding() are pure resolution
  (render-safe); the constructor subscribes to the list store and
  followCurrent opens the event window when the current session
  changes — staging IS the open signal, business verbs are the timing,
  React render/commit is decoupled from window lifecycle. A masked
  current (projection gap) keeps the stage untouched so deferred
  teardown semantics survive reconnects.

Agent Note: .agents/notes/implemented/architecture/
2026-07-23-toolview-dissolution.md (bilingual pair) records the
decision, the four rejected alternatives, and the accepted semantic
changes; the web client architecture note and packages/client/AGENTS.md
carry the current-state narrative.

Verified: typecheck 0, duplication 0 clones (478 files), full coverage
run 6190 passed with zero threshold errors, knip 0, doc-sync 24/24,
client aggregate tsc 0, render-count checks (one commit per chunk, zero
row re-renders under streaming) green.
2026-07-23 17:49:47 +08:00
Yichen Jiang
efe13c09d6 fix(tui): share config schema fields 2026-07-23 17:46:13 +08:00
Yichen Jiang
23fc9cc226 feat(tui): add path-only @file autocomplete 2026-07-23 17:39:30 +08:00
imccyu
58a08f1e41 Merge branch 'master' into fix/web-zstd-session-logs 2026-07-23 17:33:46 +08:00
Tianyi Cui
9ab407fdd6 Merge branch 'master' into worktree/pr504-vendored-cordis-hot-reload 2026-07-23 17:19:42 +08:00
Turtle
7d751d3894 test(web): provide workspace context config 2026-07-23 16:04:32 +08:00
Ziya
7fdf685e5c Merge branch 'master' into feat/tui-extension-service 2026-07-23 04:02:19 -04:00
Turtle
5cdb192e92 Merge remote-tracking branch 'origin/master' into fix/web-zstd-session-logs 2026-07-23 16:00:27 +08:00
Turtle
3b97c7b318 fix(web): compress session logs by default 2026-07-23 15:54:10 +08:00
imccyu
62b62ac9d5 Merge remote-tracking branch 'origin/master' into codex/gui-context-polish
# Conflicts:
#	apps/web/tests/smoke-fixture.e2e.ts
2026-07-23 15:03:26 +08:00
Dudu-0223
0301b7fda8 feat(gui): add write tool row variant 2026-07-23 14:46:07 +08:00
Dudu-0223
aee859841b test(gui): cover edit tool row 2026-07-23 14:38:27 +08:00
Tianyi Cui
c5ebcef8af test(ui-sidebar): cover expanded search control 2026-07-23 14:30:43 +08:00
Dudu-0223
1ba00bf80c feat(web): inject workspace instructions 2026-07-23 14:11:25 +08:00
Dudu-0223
d7d8650600 fix(gui): expand thinking rows on click 2026-07-23 14:11:25 +08:00
Dudu-0223
691efb0025 feat(gui): add 'edit' variant for tool row, showing as 'Edit · path' like Read
- Add 'edit' to ToolRowVariant type and TOOL_VARIANTS mapping
- Add 'edit' title and summary key preference (path/file_path)
- Add IconEditOutline16 as the leading icon for edit variant
2026-07-23 14:11:25 +08:00
Tianyi Cui
c79b34bda5 Revert "chore: run primary CI before push" 2026-07-23 14:02:58 +08:00
imccyu
d430744dd8 Merge branch 'master' into worktree/fix-collapsed-sidebar-rail 2026-07-23 13:45:14 +08:00
imccyu
dd7d198c0d Revert "fix(gui): keep the label fade and pin the rail icons to one axis"
This reverts commit a4ae2f6c21c1eeed2495481a55a39762f4e64ccb.
2026-07-23 13:37:54 +08:00
imccyu
f062ba8fcd fix(gui): keep the label fade and pin the rail icons to one axis
Two polish defects from the headless verification pass:

- .newSessionLabel/.footLabel declared their own transition shorthand,
  which replaced .wide's opacity fade entirely (shorthands do not merge) —
  the labels vanished instantly while everything else faded. The fade is
  restated alongside max-width.
- The rail icons drifted off a common vertical axis: the 56px track holds
  a 55px content box (1px column border), and the capsule rows kept their
  1px border-width in the collapsed state, shaving their content to 23px
  and pushing the search icon 2px right. Collapsed capsules now zero the
  border-width (transitioning border, not border-color), the root gives
  back the border pixel via asymmetric padding, and every surviving row
  centers its icon — five glyphs on the track's 28px center.
2026-07-23 13:30:07 +08:00