Hypatia May
bf618dabf9
refactor(web): project usage and snapshot request context
2026-07-29 15:27:59 +08:00
Yichen Jiang
4e9916b3e5
feat(llm-pi-ai): dormant bare mount — routes live entirely in the settings plane
...
An empty or omitted providers dict is now the valid dormant posture: the
adapter mounts with zero routes and no catalog entries, registers routes
the moment the llm-pi-ai settings section supplies profiles, and drops
them when it empties. The TUI demo mounts the adapter bare, so adding an
openai/anthropic provider is purely a settings.yaml (or, next PR, web
form) operation with per-request apiKeyEnv credential resolution.
2026-07-29 14:56:09 +08:00
Hypatia May
e37cb23336
feat(token-meter): project durable token usage
2026-07-29 14:35:24 +08:00
Turtle
95a995968b
refactor: migrate linting to Oxlint
2026-07-29 14:32:11 +08:00
Yichen Jiang
b0a2011d95
docs: bilingual credentials/settings-consumer documentation, catalogs, and gates
...
New credentials data-structure page (type-equiv manifested), group README,
rewritten llm-deepseek/llm-pi-ai READMEs (dynamic configuration, dict
profiles, credential chain), capability-seams/service-role registration,
Agent Note (bilingual), demo compositions mounting settings-local +
credentials-local with no inline key plumbing, installSettingsSection
consumer helper on the settings seam (deduplicating both adapters' wiring),
jscpd symmetry markers for the provider twins, runtime-closure additions for
python/sdk-runtime, and doc-budget ceilings AGENTS.md 1750→1755 /
packages/README.md 850→865 for the structural one-line group rows.
2026-07-29 14:20:06 +08:00
Yichen Jiang
d77db29f01
test: real-Loader dynamic composition, keyless onboarding snapshot, and .env-only e2e
...
llm-deepseek gains a Loader+Include composition spec proving external
settings.yaml/.env edits reach the very next request, and a real-API e2e
where only a credentials-local document holds the key. The headless example
pins the first-run missing-credential UX as a keyless stream-json snapshot
(new credentials.cordis.snapshot.yml scenario); runLoaderSmoke learns
expectedExitCode so a designed failure surface can be pinned instead of
masked.
2026-07-29 13:44:24 +08:00
Yichen Jiang
c0426142c5
feat(llm-pi-ai): route-keyed profiles with per-request resolution and in-place route swaps
...
providers becomes a dict keyed by provider route, so the composition base
and the llm-pi-ai settings section merge per provider and the route set is
structural; the pre-release array shape and per-profile provider field fail
loud with migration directions. The adapter reads a profiles thunk once per
operation and resolves the credential per stream call (literal apiKey, then
apiKeyEnv through ctx.credentials with an ambient env fallback, then pi-ai's
provider-native discovery), so key, endpoint, and knob changes reach the
next request without restarts. Route-set or captured-retry-policy changes
re-register the same adapter instance in one synchronous section; an invalid
settings snapshot keeps the last good profiles.
2026-07-29 13:36:29 +08:00
Yichen Jiang
f05ab3f945
feat(llm-deepseek): per-request connection resolution over settings + credentials
...
The adapter takes an options thunk and a per-stream credential resolver
instead of frozen construction facts: base URL, catalog, defaults, idle
budget, and the API key re-resolve at each operation, so a settings or
credential change reaches the very next request while in-flight streams
keep the facts they started with. resolveAdapterOptions is the one explicit
resolve step (entry config fails loud at load; a live snapshot failing a
beyond-schema bound keeps the last good options). The plugin layers its
entry config under the optional llm-deepseek settings section and resolves
keys literal-first through ctx.credentials with an ambient env fallback; a
missing key now registers the route, warns, and fails each request with
actionable MISSING_CREDENTIAL instead of failing plugin load. The
registration-captured retry policy re-registers the route in place when it
changes.
2026-07-29 13:26:52 +08:00
Yichen Jiang
602f594c4b
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# apps/cli/README.i18n.yaml
# packages/client/connection/tests/fixture.spec.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/README.md
# packages/client/ui-conversation/README.zh.md
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# tsconfig.base.json
2026-07-29 10:14:02 +08:00
Hypatia May
2f1ced77ca
Merge remote-tracking branch 'origin/master' into codex/status-bar-token-metrics
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/event-producer-consumer.md
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/tests/request-reconstruction.spec.ts
# packages/core/agent/README.i18n.yaml
# packages/llm/llm/README.i18n.yaml
2026-07-28 19:54:58 +08:00
Hypatia May
e6ce6abd7d
refactor(llm): simplify live request telemetry (round 2)
2026-07-28 19:03:45 +08:00
Hypatia May
35b9c454e5
refactor(web): publish transient model request capacity (round 1)
2026-07-28 18:35:39 +08:00
_Kerman
019b0abb68
Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.i18n.yaml
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# packages/core/session/README.i18n.yaml
# packages/session-title/session-title/tests/persistence.spec.ts
2026-07-28 15:45:53 +08:00
Tianyi Cui
eeaf4c7220
fix(ci): stabilize readiness timing boundaries
2026-07-28 14:49:59 +08:00
_Kerman
971f20b66e
fix: restore message migration CI coverage
2026-07-28 14:29:54 +08:00
_Kerman
350c296cff
fix: complete immutable message migration
2026-07-28 14:15:23 +08:00
_Kerman
f5ec71f5b1
Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml
# packages/context/session-reference/README.i18n.yaml
# packages/context/session-reference/README.md
# packages/context/session-reference/README.zh.md
# packages/context/session-reference/src/index.ts
2026-07-28 13:58:06 +08:00
_Kerman
fbf87e660c
refactor: identify and freeze messages at creation
2026-07-28 13:55:59 +08:00
Yichen Jiang
1dede11506
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# 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
# apps/web/tests/session-title.snapshot.ts
# docs/config-catalog.md
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/llm/llm-retry/README.i18n.yaml
# packages/llm/llm-retry/README.md
# packages/llm/llm-retry/README.zh.md
2026-07-28 11:39:42 +08:00
imccyu
af70af4020
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
2026-07-28 00:39:24 +08:00
Tianyi Cui
5f49a81514
Merge remote-tracking branch 'origin/master' into worktree/pr717-merge-20260728
...
# Conflicts:
# pnpm-workspace.yaml
2026-07-28 00:13:04 +08:00
Tianyi Cui
f6a450102e
Merge updated origin/master into feat/tui-master-port
2026-07-27 23:55:53 +08:00
Tianyi Cui
861b7a7b8f
Merge branch 'master' into codex/bump-pi-ai-0.82.1
2026-07-27 23:49:33 +08:00
Tianyi Cui
892577ee52
test(llm-retry): cover incomplete retry predecessors
2026-07-27 23:38:06 +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
Tianyi Cui
4866a76d86
test(llm): match pi-ai 0.82.1 reasoning catalog
2026-07-27 23:29:01 +08:00
Tianyi Cui
676fd97319
Merge branch 'master' into codex/bump-pi-ai-0.82.1
2026-07-27 23:01:27 +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
Tianyi Cui
a843c37749
Merge branch 'master' into codex/bump-pi-ai-0.82.1
2026-07-27 19:55:54 +08:00
Turtle
6a7307de37
fix(llm-pi-ai): classify transport truncations
...
Personal customization replayed onto upstream master source.
2026-07-27 18:53:29 +08:00
_Kerman
52174e32cb
refactor(agent): clarify turn lifecycle event names
2026-07-27 17:38:42 +08:00
Yichen Jiang
c0009e4603
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/tests/chat-branch-tails.spec.tsx
2026-07-27 17:09:25 +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
imccyu
9249c5504e
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
2026-07-27 16:16:17 +08:00
Yichen Jiang
39c60d5d64
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md
# .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm-deepseek/tests/adapter.spec.ts
2026-07-27 15:49:09 +08:00
Tianyi Cui
bfdaf7600b
Merge remote-tracking branch 'origin/master' into worktree/pr674-retarget-20260727
...
# Conflicts:
# docs/cookbook/adding-an-llm-adapter.i18n.yaml
# docs/core-data-structures/llm-streaming.i18n.yaml
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm/README.i18n.yaml
2026-07-27 15:48:17 +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
Turtle
a7a369a7be
chore(llm): bump pi-ai to 0.82.1
2026-07-27 13:25:45 +08:00
Yichen Jiang
bde5e26a96
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# apps/cli/package.json
# apps/web/tests/smoke-real.e2e.ts
# apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
# apps/web/tests/snapshots/seeded-history/ui.expected.md
# docs/config-catalog.md
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/chat-stats-bash-sample.spec.tsx
# packages/client/ui-conversation/tests/chat-toolview-slot.spec.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/client/ui-conversation/tests/gate-branch-tails.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/host/apiproxy/README.md
# packages/host/apiproxy/src/api-proxy.ts
# pnpm-lock.yaml
# scripts/verify-package-readme-model-experience.ts
# tsconfig.base.json
2026-07-27 12:17:38 +08:00
Yichen Jiang
cd5c1f88a1
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# apps/web/tests/smoke-real.e2e.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.module.css
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
2026-07-27 12:14:23 +08:00
_Kerman
2f74ac98ba
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# .agents/notes/archived/feature/2026-07-21-tui-steering-queue-badge.i18n.yaml
# .agents/notes/archived/simplification/2026-06-20-drop-unconsumed-llm-assembled-surfaces.i18n.yaml
# .agents/notes/archived/simplification/2026-07-04-prune-producerless-vocabulary-variants.i18n.yaml
# .agents/notes/archived/simplification/2026-07-04-remove-agent-steering-mirror.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml
# .agents/notes/implemented/feature/2026-07-07-session-prefix.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# packages/core/session/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/support/acp-snapshot/README.i18n.yaml
# packages/support/acp-snapshot/README.md
# packages/support/acp-snapshot/README.zh.md
2026-07-27 09:57:51 +08:00
Tianyi Cui
f5f3641330
Merge remote-tracking branch 'origin/master' into nih-imp-sse
...
# Conflicts:
# .agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
# packages/llm/llm/README.i18n.yaml
2026-07-27 06:16:30 +08:00
_Kerman
6de88f427c
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
2026-07-26 23:23:18 +08:00
Tianyi Cui
98980900d0
Merge origin/master into worktree/archive-agent-notes-20260726
...
# Conflicts:
# .agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml
# .agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md
# .agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md
2026-07-26 23:07:21 +08:00
Tianyi Cui
37140bf823
docs(notes): archive low-value decision records
2026-07-26 23:06:00 +08:00
Tianyi Cui
c50b899015
refactor(llm-deepseek): replace hand-rolled SSE parser with eventsource-parser
...
Implements the approved simplification Agent Note: sse.ts now pipes the
response body through TextDecoderStream and EventSourceParserStream
(eventsource-parser/stream) and keeps only the DeepSeek protocol shim —
yield each event's data, terminate on [DONE], throw
LlmError('STREAM_CLOSED') on EOF without the sentinel. The SSE
spec-conformance tests are deleted; sse.spec.ts pins only the
[DONE]/STREAM_CLOSED/EOF contract, including the new spec-strict verdict
that an unterminated trailing event is truncation (the old parser
flushed it — a robustness nicety no real provider shape needs).
eventsource-parser@^3.1.0 becomes llm-deepseek's second runtime
dependency (already in the lockfile transitively via the MCP SDK).
Docs: the Agent Note moves proposed/ → implemented/ and is rewritten per
the lifecycle contract; the rejected NIH roll-up note's inbound links
follow. The twin-adapters note, dsh-llm LlmAdapter JSDoc (and its
type-equiv fences), cookbook, group/package READMEs, root AGENTS.md
layout line, sdk-helper comments, and the regenerated config catalog
drop the "hand-rolled fetch + SSE" claim in both languages; all eight
touched pairs re-recorded.
2026-07-26 22:45:33 +08:00
Tianyi Cui
e2882f486b
fix(review): harden web replay verification
...
Validate replay sidecars and cross-copy failure facts, make browser console tripwires and macOS temp paths deterministic, and wait for asynchronous TUI resume details. Keep the owning docs, translations, and generated catalog aligned.
2026-07-26 22:38:33 +08:00
_Kerman
8117f61396
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# packages/context/workspace-context/README.md
# packages/llm/llm-retry/README.md
# packages/session-persistence/session-checkpoint-policy/README.md
# scripts/type-equiv.manifest.json
2026-07-26 16:45:27 +08:00