Commit Graph

767 Commits

Author SHA1 Message Date
Tianyi Cui a9e2489db8 fix(llm): keep request generations coherent 2026-07-31 01:30:29 +08:00
Tianyi Cui afb05b4049 fix(settings-local): never steal writer locks 2026-07-31 01:27:46 +08:00
Tianyi Cui f9f8148e79 refactor(credentials,llm): remove speculative mutation and route lifecycle 2026-07-31 01:27:46 +08:00
Yichen Jiang c71af0f3bb Merge latest master into worktree-llm-web-config 2026-07-31 01:09:50 +08:00
imccyu a3ddc90df6 Merge branch 'master' into worktree/command-row-copy 2026-07-31 00:50:47 +08:00
Wenlu Wang edefdd96b9 Merge remote-tracking branch 'origin/master' into codex/new-task 2026-07-31 00:10:46 +08:00
imccyu 5c4398c96c Merge branch 'master' into worktree/command-row-copy 2026-07-30 23:45:49 +08:00
kingwl 1986de9ac1 fix(web): show plan status only while active 2026-07-30 22:42:25 +08:00
Hypatia May cf3bd9d02a Merge Web transcript parent through adaptive directory picker 2026-07-30 22:37:17 +08:00
Hypatia May 86633a49f8 Merge master through adaptive directory picker 2026-07-30 22:21:52 +08:00
Hypatia May 75156eabe2 Merge master through adaptive directory picker 2026-07-30 22:21:40 +08:00
Tianyi Cui 9a0ee6fbfe Merge branch 'master' into worktree/deepseek-max-tokens-defaults 2026-07-30 22:20:47 +08:00
Yichen Jiang 015b065e9d Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config
# Conflicts:
#	apps/web/tests/scaffold.ts
2026-07-30 22:19:53 +08:00
Yichen Jiang 80c36ff0d3 Merge latest master into worktree-llm-dynamic-config 2026-07-30 22:18:16 +08:00
Yichen Jiang 02b8529405 Merge origin/master into worktree/deepseek-max-tokens-defaults
# Conflicts:
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.i18n.yaml
#	docs/core-data-structures/session.i18n.yaml
#	packages/core/session/README.i18n.yaml
2026-07-30 21:55:07 +08:00
Yichen Jiang 5fd34f9109 fix(agent-loop): rematerialize adapter defaults 2026-07-30 21:49:58 +08:00
creatixchu ddc4adb7a3 Merge remote-tracking branch 'origin/master' into feat/dir-selector-adaptive-default 2026-07-30 21:42:30 +08:00
Yichen Jiang 7022ab4a75 Merge worktree-llm-dynamic-config (884) into worktree-llm-web-config 2026-07-30 21:19:17 +08:00
Yichen Jiang 2243e35846 Merge worktree-config-settings-seam (870) into worktree-llm-dynamic-config 2026-07-30 21:17:07 +08:00
Hypatia May cc62da3b27 Merge latest web transcript base into manual compact
Build-review stack propagation round 1.
2026-07-30 21:16:49 +08:00
Hypatia May 350ab5d962 Merge latest origin/master into codex/status-bar-token-metrics
Build-review integration round 3.
2026-07-30 21:06:28 +08:00
Hypatia May 5ac766fd08 Merge latest human transcript base into web transcript
Build-review stack propagation round 1.
2026-07-30 21:04:33 +08:00
Yichen Jiang 95824545a6 Merge origin/master into worktree/deepseek-max-tokens-defaults 2026-07-30 21:04:10 +08:00
Yichen Jiang daf70f3660 feat(llm-deepseek): configure max token defaults 2026-07-30 21:04:00 +08:00
Hypatia May 538f23678a Merge origin/master into codex/status-bar-token-metrics
Build-review integration round 1; isolate Web snapshots from user skill homes.
2026-07-30 20:51:38 +08:00
Tianyi Cui bec424b9f3 Merge latest master into worktree-config-settings-seam 2026-07-30 20:51:34 +08:00
kingwl 7da7d5784d Open command menu from composer plus button 2026-07-30 20:42:48 +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
Yichen Jiang 4d0843df3e Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/cli/README.md
#	apps/cli/README.zh.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
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/src/client/sessions/session.ts
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.zh.md
2026-07-30 20:03:39 +08:00
Hypatia May c2337bfa10 Merge remote-tracking branch 'origin/fix/human-transcript-projection' into fix/web-transcript-projection
# Conflicts:
#	apps/web/tests/scaffold.ts
#	apps/web/tests/seeded-history.e2e.ts
#	apps/web/tests/snapshots/seeded-history/ui.expected.md
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/src/client/chat/MessageItem.tsx
2026-07-30 20:02:32 +08:00
Yichen Jiang eae4219e04 Merge branch 'worktree-config-settings-seam' into worktree-llm-dynamic-config
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/cli/composition.md
#	apps/cli/config/base.cordis.yml
#	apps/cli/src/app-cli-entry.ts
#	apps/cli/src/tui.ts
#	apps/cli/tests/tui-keyless-smoke.e2e.ts
#	examples/package.json
#	packages/ui/app-boot/README.i18n.yaml
#	packages/ui/app-boot/README.md
#	packages/ui/app-boot/README.zh.md
#	pnpm-lock.yaml
#	python/sdk-runtime/package.json
2026-07-30 19:46:04 +08:00
Yichen Jiang e6483f0afc feat(settings): detect stale writers with a revision, and announce raw changes
The remaining P1 from the #939 review, plus the P2 it shares a mechanism with.

Nothing carried a version, so two tabs editing one namespace silently
overwrote each other — reproduced as tab B's `reasoning` lost to tab A's
older draft. The seam's per-namespace write queue orders writes; it cannot
tell a fresh writer from one replaying a snapshot a predecessor superseded.

Each namespace now carries a monotonic `revision` over its RAW section. A
write may send `expectedRevision`, checked at the FRONT of the queue (not at
call time, which would race the very predecessor it guards against); a
mismatch rejects with `SettingsConflictError` → `settings-conflict` on the
wire, carrying both revisions. The editor captures the revision it opened at
and, on conflict, asks the user to reopen rather than replaying its snapshot.

The same counter fixes the missing broadcast. `settings/updated` is gated on
the resolved value — correct for consumers, wrong for configuration surfaces:
storing an override equal to the composition base leaves the resolved value
alone while changing what the document says (the field is now overridden, not
inherited) and moving every open editor's revision. `settings/document-updated
(ns, revision)` fires on any raw-section change, in-process or external, and
`host/settings-changed` now rides it.

That event also closes the stale model picker: editing a provider's `models`
changes no route, so `llm/adapters-updated` never fired and an open picker
kept serving the old catalog. A change to an exposed provider namespace now
emits `host/models-changed` too — that namespace holds the catalog.

Docs: both sides of the five touched README pairs, a type-equiv block for
`SettingsPathOp`, and an Agent Note recording what the plane exposes and who
may overwrite what. The deferred wire-redaction gaps (secrets behind
union/intersection/transform, `.default(...)` in the served envelope, schema
text in rejection messages, `new Function` rehydration, pi-ai's `headers`) are
recorded as TODO(settings-wire-redaction) and in Known Limitations rather than
half-fixed.
2026-07-30 19:24:21 +08:00
Tianyi Cui 0c1285e249 Merge latest master into worktree-config-settings-seam 2026-07-30 18:55:15 +08:00
creatixchu 5e4922a761 Merge remote-tracking branch 'origin/feat/directory-picker-quiet-navigation' into feat/dir-selector-adaptive-default
# Conflicts:
#	apps/cli/cordis.yml
#	packages/host/README.i18n.yaml
2026-07-30 18:41:41 +08:00
Tianyi Cui ff364c53a2 Merge master into worktree-config-settings-seam 2026-07-30 18:31:50 +08:00
creatixchu 18abd8ecd7 Merge remote-tracking branch 'origin/feat/directory-picker-show-hidden' into feat/directory-picker-quiet-navigation 2026-07-30 18:30:39 +08:00
creatixchu 33bb266932 Merge remote-tracking branch 'origin/master' into feat/directory-picker-show-hidden 2026-07-30 18:29:37 +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 250dcfd1ce fix(jsonrpc): drain runtime before protocol exit 2026-07-30 18:27:36 +08:00
_Kerman 349cf35135 docs: mark owned-run boundary decision implemented 2026-07-30 18:18:13 +08:00
creatixchu f4111a3701 fix(ui): drop the caption from the /permission error text too
Review round: the no-caption rule the Agent Note states applied only to the
success texts, leaving `permission · unknown permission preset "bogus" (…)`.
The error text now reads `unknown preset "bogus" (…)` and its exact wording
is pinned; the fixture mirror drops `JSON.stringify` for the host's own
quoting so the two cannot drift on a quoted argument.

The Note now states the line it draws: the rule bans a caption for the
command's own value, not the vocabulary, so `/plan`'s `Plan mode off.` and
`/goal`'s `Goal cleared.` conform as written — recorded with the broader
name-ban as a rejected alternative. The web row assertions are scoped to the
row so unrelated page text reading `permission` cannot satisfy them.
2026-07-30 18:07:35 +08:00
Hypatia May eda7c76eb1 Merge latest PR 956 stack base
# Conflicts:
#	docs/core-data-structures/compaction.i18n.yaml
#	docs/core-data-structures/compaction.md
#	docs/core-data-structures/compaction.zh.md
2026-07-30 17:55:35 +08:00
Hypatia May faac9b4fd5 round 1: implement bracket-first manual compaction 2026-07-30 17:40:25 +08:00
creatixchu d9cb19f276 feat(ui): drop the slash and the argument echo from the command row
The web command row renders `title · summary` from one logged command
lifecycle pair, and the two halves were written without knowing about each
other: the title was the dispatched line rebuilt from `command/run` and the
summary was `command/done`'s verbatim text, so every Access-chip pick read
`/permission workspace-write · Permission preset: workspace-write.` — the
command name twice and its argument twice.

The title is now the bare command name (no `/`, no arguments — the summary
already says what the command did), and a command handler's settlement text
never repeats the command's own name, so `/permission` returns `preset
workspace-write`. The row reads `permission · preset workspace-write`, and
the TUI notice still names the preset that now applies. The log is
unchanged: `command/run` keeps its structured name/args split for a richer
registered row.
2026-07-30 17:34:03 +08:00
Hypatia May 16378e4ba7 Merge remote-tracking branch 'origin/fix/human-transcript-projection' into fix/web-transcript-projection
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 17:33:55 +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
Yichen Jiang 0a263941ef Merge branch 'worktree-llm-dynamic-config' into worktree-llm-web-config
# Conflicts:
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.i18n.yaml
#	docs/event-producer-consumer.md
#	examples/headless-agent/tests/headless.snapshot.ts
#	examples/headless-agent/tests/snapshots/missing-credential/stream-json.expected.jsonl
#	packages/llm/llm-deepseek/README.i18n.yaml
#	packages/llm/llm-deepseek/src/index.ts
#	packages/llm/llm-pi-ai/README.i18n.yaml
#	packages/llm/llm-pi-ai/src/index.ts
#	packages/llm/llm/README.i18n.yaml
#	packages/llm/llm/src/index.ts
2026-07-30 17:22:44 +08:00
Hypatia May fd0fa8806f Merge remote-tracking branch 'origin/master' into codex/status-bar-token-metrics
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 17:22:42 +08:00
Hypatia May 6d58953f30 fix(token-meter): close projected usage review gaps 2026-07-30 17:22:15 +08:00