Commit Graph
13582 Commits
Author SHA1 Message Date
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 f8828ffe3e refactor(test): simplify session fixture decoding 2026-08-19 13:58:41 +08:00
pku-xht 943daa17dc Merge pull request #2640 from deepseek-harness/codex/product-subagent-failure-facts-codex
fix(subagent): preserve Codex failure facts
2026-08-19 13:50:47 +08:00
Chinesezjc e2ee5c0f5d feat(feedback): float the note editor in a popover, not inline in the actions row
The message-feedback note editor previously expanded inline inside the
assistant message's shared IconActions row, overflowing the row at every
viewport and pushing the branch action and the clock out of the column.
Rework it into a portable popover: the note editor is a fixed-position panel
portaled to document.body and anchored to the note trigger, so the row keeps
its single 28px line whether the editor is open or not and the panel escapes
the column's overflow clip.

The like/dislike buttons and the note trigger stay in the row unchanged; the
trigger toggles the popover (textarea + Save/Cancel + note-save failure) which
auto-focuses the input and closes on Escape or an outside click, returning
focus to the trigger. Rating/list-load failures surface in the row, note-save
failures inside the popover. Reuse the Menu portal surface tokens and add
@types/react-dom so the createPortal usage typechecks.

Layout e2e sweeps six viewports and pins that opening the editor leaves the
row's overflow, line count, and out-of-column items unchanged, and that the
panel is outside the column, within the viewport, and anchored to its trigger.
Unit tests cover the popover's portal-to-body, toggle, Escape/outside-click
dismissal, and unmount early-returns.
2026-08-19 13:49:30 +08:00
pku-xht bae043e432 Merge pull request #2636 from deepseek-harness/codex/product-subagent-failure-facts-claude
fix(subagent): preserve Claude Code failure facts
2026-08-19 13:48:10 +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
_Kerman f4af19d724 perf(infra): shorten doc-sync critical path 2026-08-19 13:45:34 +08:00
_Kerman 9921de2d03 refactor(test): keep session fixture projection local 2026-08-19 13:41:42 +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
Magolor 53c4a4a174 docs(session): document persistence seed ownership 2026-08-19 13:31:07 +08:00
Magolor 1c77a78d6a perf(session): reuse immutable persistence seed 2026-08-19 13:31:07 +08:00
Yichen Jiang 03b5d3e2f6 Merge remote-tracking branch 'origin/master' into HEAD 2026-08-19 13:29:59 +08:00
_Kerman 18b0edb664 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300
# Conflicts:
#	python/sdk-runtime/package.json
2026-08-19 13:12:47 +08:00
_Kerman 4c421ec882 refactor(session-projection): separate state from client views 2026-08-19 13:11:05 +08:00
fz 5b3a881302 Merge pull request #2554 from deepseek-harness/feat/python-sdk-standard-agent-runtime
feat(python-sdk): support bundled preset runtime dependencies
2026-08-19 12:58:45 +08:00
Yichen Jiang c8815e50ad test(llm-deepseek): gate preview vision smoke 2026-08-19 12:57:49 +08:00
Yichen Jiang 910be91a9f Merge branch 'worktree/deepseek-native-multimodal' into worktree/deepseek-vision-model-catalog 2026-08-19 12:49:22 +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 11ed98de55 Merge remote-tracking branch 'origin/master' into fix/open-file-fail 2026-08-19 12:27:34 +08:00
07akioni 149d4ba01c Merge remote-tracking branch 'origin/master' into feat/home-path-abbr 2026-08-19 12:24:40 +08:00
_Kerman 28d561f757 Merge remote-tracking branch 'origin/master' into xtr/2701-stable-session-snapshots 2026-08-19 11:58:50 +08:00
_Kerman 7a5bfe187a Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300 2026-08-19 11:56:27 +08:00
CreatixChu ba4aa807f6 Merge pull request #2623 from deepseek-harness/worktree/command-attachment-envelope
feat(commands): route composer image attachments through slash commands
2026-08-19 11:51:07 +08:00
Yichen Jiang 4fa38d6a23 feat(llm-deepseek): publish the vision model 2026-08-19 11:50:34 +08:00
_Kerman d1b16e57d2 fix(snapshot): align malformed-row labels and restore projection coverage 2026-08-19 11:49:46 +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
_Kerman 036ba74c43 test(fs-local): attribute diff-basis cancellation to fsio allocations
The observes-cancellation-after-open/stat test asserted that the
process-wide Buffer.allocUnsafe call count stayed flat after abort, but
vitest's fork IPC (node:internal/child_process serialization) also calls
Buffer.allocUnsafe, so unrelated IPC traffic made the assertion
timing-racy under CI load. Attribute each allocation to the fsio read
path by stack and assert that the abort prevents the diff-basis buffer
allocation.
2026-08-19 11:41:49 +08:00
Yichen Jiang 7078918b30 feat(llm-deepseek): support multimodal requests 2026-08-19 11:39:52 +08:00
_Kerman 0f7cfd992a Merge remote-tracking branch 'github/master' into xtr/2701-stable-session-snapshots
# Conflicts:
#	apps/web/tests/snapshots/web-search-round/session.jsonl
#	examples/acp-agent/tests/snapshots/skill-load/session.jsonl
2026-08-19 11:20:03 +08:00
_Kerman eb2c9780a5 test(snapshot): address envelope projection review 2026-08-19 11:17:54 +08:00
creatixchu fcaa0efec5 Merge remote-tracking branch 'origin/master' into worktree/command-attachment-envelope 2026-08-19 11:11:15 +08:00
creatixchu c91672a44a Merge remote-tracking branch 'origin/master' into worktree/abort-partial-finalize 2026-08-19 11:06:59 +08:00
_Kerman f97ea54ca9 fix(ci): install Wine offline from the restored apt archive
The windows wine-blocking job installs Wine with apt-get over the local
.deb archive, but apt re-downloads the full 100+ MB closure from the
Ubuntu mirror anyway. A degraded runner network stalled that transfer
past the job's 15-minute budget and cancelled the check. Install the
restored archive directly with dpkg (no repository access) and keep the
apt network install as the fallback when the archive cannot satisfy the
closure.
2026-08-19 11:06:57 +08:00
Yichen Jiang 67a7c79004 Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/context/agent-instructions/tests/agent-instructions.spec.ts
2026-08-19 11:01:27 +08:00
creatixchu 5766480e5b Merge remote-tracking branch 'origin/master' into worktree/abort-partial-finalize 2026-08-19 10:51:25 +08:00
Chinesezjc 657f52eb21 Merge pull request #1787 from deepseek-harness/feat/plan-narrow-viewport-regression
fix(web): wrap the composer control row so the plan chip never overlaps the model trigger
2026-08-19 10:50:54 +08:00
_Kerman 97a3bb746d Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300 2026-08-19 10:42:53 +08:00
Dudu-0223 36d8a2ae9a Merge pull request #2603 from deepseek-harness/codex/web-search-multiple-queries
Support bounded multi-query web search
2026-08-19 10:41:14 +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 d792a89c8c test web search title fallback 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
_Kerman 450a1f8811 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300 2026-08-19 10:33:31 +08:00
fz 2814a338be test(subprocess): restore host-exit readiness handshake 2026-08-19 10:01:11 +08:00
pku-xht a163f4019b fix(sandbox): preserve all drain failures 2026-08-19 08:58:12 +08:00