Commit Graph
4864 Commits
Author SHA1 Message Date
_Kerman 2a4f6541d6 fix: revert the projection-registration form per review
Per the imccyu review, the pre-existing goal, permissions, and plan units
go back to registering through the ctx.inject(['sessionProjections'], …)
child form instead of the required-inject direct register; goal returns to
zero diff (its service never reads projections). The mandatory-seam rework
for these three sites moves to a follow-up PR. New projection units keep
the required-inject direct-register form.

Regenerated catalog and subsystem docs follow the reverted service
signatures.
2026-08-19 17:46:02 +08:00
_Kerman abe572e7c4 merge: bring in the base's uniform checkpointing
Reconcile the base's persist removal and later master content with the
migration branch: keep 2742's wireOnly read options, the host-inclusive
snapshot/viewCheckpoint/restore defaults, and the drive's late-event
replay (applyToCell) that bare-session reads rely on.
2026-08-19 17:27:47 +08:00
_Kerman 86831ea9a2 docs(notes): date the mandatory projection-seam note 2026-08-19
The note was committed on 2026-08-19 but filed under 2026-08-07 while
building on the 08-19 state-and-client-views note; rename the triplet to
align the filename with the actual date and update the inbound
architecture links.
2026-08-19 16:59:07 +08:00
_Kerman 5ddbc6e71f refactor(session-projection): checkpoint every projection unit (migration side)
Adapts this branch to the base's removal of the persist opt-in: the
registry folds and checkpoints every registered unit, the host-only
subagent identity drops its explicit persist: true, and the
state-and-client-views note records the uniform rule. The cordis API
catalog and session-projection subsystem signatures are regenerated.
2026-08-19 16:59:00 +08:00
_Kerman b0c2e2bf01 refactor(session-title): keep title input as an O(1) projection
The titleInput unit no longer retains the full eligible message history
in bounded reverse-linked chunks. It folds only {first, last, count} —
the values scheduling and fallback reads need — and the full eligible
prefix for one provider generation is scanned from the session log at
execution time. The projection state is O(1) per session instead of
growing with every user message.

The README description updates accordingly and drops the inaccurate
"latest request route" claim; the projection test now asserts the
bounded aggregate and its checkpoint row.
2026-08-19 16:58:53 +08:00
_Kerman 327b86d2ea refactor(session-projection): checkpoint every projection unit uniformly
Drop the persist?: boolean opt-in: every unit's state — client-visible and
host-only alike — is now written to the projection cache. A unit can no
longer silently skip the durable cache, host-only units no longer need an
explicit flag to participate in cold restore, and the persist-sharing
conflict check disappears with the field.

- ProjectionDefinition/ErasedDefinition lose persist; register overloads
  simplify; checkpoint/restoreFloor/restore fold every registered unit.
- Registry and cache tests drop the persist:true fixtures and the
  persistence-policy sharing test.
- READMEs and the state-and-client-views note record the uniform rule;
  cordis API catalog and subsystem signatures regenerated.
2026-08-19 16:55:10 +08:00
_Kerman cb0747091b Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:52:29 +08:00
_Kerman 571dba37cb Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:50:24 +08:00
Yichen Jiang 07fbaa9b30 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 14:39:44 +08:00
_Kerman 9127d7e8b7 fix(session-projection): keep host state off wire 2026-08-19 14:32:48 +08:00
Yichen Jiang 458a742cfe Merge remote-tracking branch 'origin/master' into worktree/deepseek-native-multimodal 2026-08-19 14:22:22 +08:00
07akioni 2aaf760fa2 Merge pull request #2709 from deepseek-harness/feat/home-path-abbr
feat(ui-tool): integrate connection handling for POSIX home path abbreviation
2026-08-19 14:16:08 +08:00
_Kerman acbb2532ab Merge remote-tracking branch 'origin/xtr/projection-state-schema' into xtr/session-projection-migrations
# Conflicts:
#	packages/subagent/subagent-claude-code/tests/real-product.spec.ts
#	packages/subagent/subagent-codex/tests/real-product.spec.ts
2026-08-19 14:03:36 +08:00
_Kerman 52a1f80327 Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:01:31 +08:00
Yichen Jiang 9b5fad14e0 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 13:59:24 +08:00
Yichen Jiang 3b74deec3e fix(llm-pi-ai): pin compat field types both ways and refuse empty values
The upstream-type proof only ran covariantly, so it caught a profile
field wider than pi-ai's but not one narrower — the direction its own
JSDoc claimed to guard. It now asserts both directions; the reverse holds
today because every field is either derived from upstream or a boolean.

`ModelCompat` gained `BedrockCompat`, which the gate had already started
serving, and the per-field protocol lists now match what the gates
resolve: `docs/config-catalog.md` pastes that JSDoc verbatim, so a stale
list there contradicted the README in the same change. The interface
header names the Responses grouping, since a catalog reader never sees
the README passage that explains it.

Valueless keys are judged after the name, so a withheld or misspelled key
written bare is refused for being that name rather than sent back for a
value it would be refused with anyway; the remedy no longer promises an
installed catalog value that a hand-declared route does not have. The
check covers `undefined` beside `null`: schemastery keeps the key either
way, and a cordis.yml entry reaches that state through `!!js undefined`,
so it is a config boundary rather than a typed one.

Coverage follows the composed path: the rejection is asserted through a
written settings section, and a switch is carried from that section onto
the wire a provider receives.

Refs #2646
2026-08-19 13:58:55 +08:00
_Kerman 1a72ae202a refactor(session): migrate host state reads to projections 2026-08-19 13:57:58 +08:00
Yichen Jiang c4037732ae docs(user): point the provider guide at the adapter's catalog section
The full switch list already exists and is generated from source, so the
guide needs a way in rather than a copy: `config-catalog.md` carries 107
plugin sections, and linking the whole file leaves a reader to find the
one that configures the page they are on. Both mentions now deep-link the
`dsh-llm-pi-ai` anchor.

Refs #2646
2026-08-19 13:46:39 +08:00
pku-xht 23b573b23f Merge remote-tracking branch 'origin/codex/product-subagent-failure-facts-claude' into codex/resolve-pr2640-20260819134000 2026-08-19 13:39:34 +08:00
pku-xht 7e764e168d Merge remote-tracking branch 'origin/master' into codex/resolve-pr2636-2640-20260819133346 2026-08-19 13:34:07 +08:00
Yichen Jiang 30a838cda3 docs(user): guide gateway request-compatibility switches
The Models page has no field for `compat`, and the symptom it addresses —
a gateway holding a working key at a reachable address while refusing
every request — reads as a credential or connectivity problem. Give it
the same treatment `input` already has: name the symptom, show the two
switches that account for most of it, and state the resolution order.

Refs #2646
2026-08-19 13:33:08 +08:00
_Kerman 4c421ec882 refactor(session-projection): separate state from client views 2026-08-19 13:11:05 +08:00
Yichen Jiang 66056b6991 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 12:47:37 +08:00
Yichen Jiang 4a02791c9a fix(llm): address multimodal review findings 2026-08-19 12:47:24 +08:00
Yichen Jiang cd7e45ced6 Merge remote-tracking branch 'origin/master' into worktree/deepseek-native-multimodal 2026-08-19 12:35:05 +08:00
07akioni 149d4ba01c Merge remote-tracking branch 'origin/master' into feat/home-path-abbr 2026-08-19 12:24:40 +08:00
Yichen Jiang 1c64e72bcb Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 11:49:20 +08:00
Yichen Jiang cf4a27c471 fix(llm-pi-ai): refuse valueless compat and group gates by compat type
Review found two live defects in the compat surface.

A valueless key (`supportsDeveloperRole:`) survives schemastery as null,
and resolution carried it forward as a configured value. It landed on
`Model.compat` as null, which replaced the installed catalog entry's
value and left pi-ai's `??` reaching for its baseURL detection — the
catalog layer skipped entirely, and the switch written but not applied.
The vocabulary check now refuses it where it is written, matching the
`reasoningEfforts` precedent in the same file.

The gates were keyed by protocol name, but pi-ai keys compat by type:
`openai-responses`, `azure-openai-responses`, and `openai-codex-responses`
share one `OpenAIResponsesCompat`, so two shipped catalog routes were
refused the fields their own models declare. Gates now group by compat
type, `bedrock-converse-stream` gains its own, and the protocol set is
derived from `Model.compat`'s conditional so a release that gives a
further protocol a compat type fails the gate list by name.

Field types are derived from upstream rather than restated, with a proof
pinning the profile assignable to the upstream types, so a widened value
union cannot silently narrow what configuration accepts.

The `undefined` filter stays removed: `exactOptionalPropertyTypes` keeps
a typed caller from writing one, and schemastery never materializes one,
so it was validation for a value the static interface already excludes.

Refs #2646
2026-08-19 11:48:01 +08:00
Yichen Jiang 7078918b30 feat(llm-deepseek): support multimodal requests 2026-08-19 11:39:52 +08:00
creatixchu fcaa0efec5 Merge remote-tracking branch 'origin/master' into worktree/command-attachment-envelope 2026-08-19 11:11:15 +08:00
Dudu-0223 d57c2d19db fix(web): require queries array for web search 2026-08-19 10:33:43 +08:00
Dudu-0223 6b4df99c44 fix multi-query web search review feedback 2026-08-19 10:33:43 +08:00
Dudu-0223 b06722e2d4 support bounded multi-query web search 2026-08-19 10:33:43 +08:00
pku-xht 7fb9de99b5 fix(subagent): close Codex failure result gaps 2026-08-18 23:06:14 +08:00
pku-xht 733966dac5 Merge commit '44f371ceb659af3795bc04efb512ae6454dc8593' into codex/product-subagent-failure-facts-claude
# Conflicts:
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
#	packages/subagent/subagent-claude-code/README.i18n.yaml
#	packages/subagent/subagent-claude-code/README.md
#	packages/subagent/subagent-claude-code/README.zh.md
#	packages/subagent/subagent-claude-code/src/index.ts
#	packages/subagent/subagent-claude-code/src/run.ts
#	packages/subagent/subagent-claude-code/tests/subagent-claude-code.spec.ts
2026-08-18 20:43:04 +08:00
07akioni 51c86af1e9 chore: refresh client catalog and module graph for connection inject 2026-08-18 20:09:55 +08:00
pku-xht 46fd537b20 Merge commit '43f08ef2867b288331271df679b2a731b76c8919' into codex/product-subagent-failure-facts-claude
# Conflicts:
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/subagent/subagent-claude-code/src/index.ts
#	packages/subagent/subagent-claude-code/tests/real-product.spec.ts
#	packages/subagent/subagent-claude-code/tests/subagent-claude-code.spec.ts
2026-08-18 19:36:16 +08:00
pku-xht 89e09b0023 Merge codex/installable-product-subagents into codex/installable-codex-provider 2026-08-18 18:59:40 +08:00
pku-xht 1ec9c0c4a6 Merge codex/installable-product-subagents into codex/installable-codex-provider 2026-08-18 18:29:37 +08:00
pku-xht 67266b07cf Merge master into named Codex instances 2026-08-18 18:17:16 +08:00
pku-xht aee72bce93 Merge commit '70707a46f6868858a0e80ad8bf48ba160403e1eb' into codex/product-subagent-failure-facts-claude 2026-08-18 17:57:06 +08:00
pku-xht 9e8a620f61 Merge named Claude instances into named Codex instances 2026-08-18 17:52:10 +08:00
pku-xht 5ce9a7eb97 Merge merged permissions stack into Claude failure facts 2026-08-18 17:49:32 +08:00
pku-xht fd4b1c428a Merge Codex permission modes into named Claude instances 2026-08-18 17:44:39 +08:00
Yichen Jiang 455cd2630a Merge remote-tracking branch 'origin/master' into worktree/web-pi-ai-retry-default 2026-08-18 17:38:19 +08:00
pku-xht 31ce2a400b Merge Claude permission modes into Codex permission modes 2026-08-18 17:19:21 +08:00
pku-xht 859525a64e Merge origin/master into Claude permission modes 2026-08-18 17:16:45 +08:00
pku-xht ec9d4a6803 Merge Claude permission modes into Codex permission modes
# Conflicts:
#	docs/config-catalog.i18n.yaml
2026-08-18 17:11:10 +08:00
Yichen Jiang 3ec495f8fa Merge remote-tracking branch 'origin/master' into worktree/llm-pi-ai-config-exposure-05f455
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
2026-08-18 17:10:13 +08:00
Yichen Jiang 2ae1a4ebc7 Merge remote-tracking branch 'origin/master' into worktree/web-pi-ai-retry-default
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/llm/llm-pi-ai/README.i18n.yaml
#	packages/llm/llm-pi-ai/README.md
#	packages/llm/llm-pi-ai/README.zh.md
#	packages/llm/llm-pi-ai/src/config.ts
2026-08-18 17:07:05 +08:00