Commit Graph
18711 Commits
Author SHA1 Message Date
Yichen Jiang 7748a2f19c Merge remote-tracking branch 'origin/worktree/deepseek-native-multimodal' into worktree/deepseek-vision-model-catalog 2026-08-19 14:24:42 +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 7d2982de68 Merge pull request #2695 from deepseek-harness/fix/open-file-fail
feat(web): Implement file-open failure handling in chat view
2026-08-19 14:16:37 +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
pku-xht 163fef7d64 Merge commit '881f7fe696c64e7775572680a38af07be6e9d158' into codex/subprocess-win32-process-primitives 2026-08-19 14:12:26 +08:00
_Kerman e850c07691 perf(infra): parallelize hygiene checks 2026-08-19 14:12:16 +08:00
_Kerman 4b0af96838 refactor(agent): back Inbox with a durable projection 2026-08-19 14:09:35 +08:00
_Kerman 04a5e4b592 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2702
# Conflicts:
#	examples/acp-agent/tests/snapshots/product-subagent-result-diagnostic/session.jsonl
2026-08-19 14:06:11 +08:00
_Kerman 00257fa079 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2300 2026-08-19 14:04:04 +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
Chinesezjc 89caa9dac2 docs: note hosted serial-linux removed as dead code
Keep the 2026-07-21 serial-reference note current with the ci.yml change: the
standard-hosted serial / linux definition no longer exists (removed as dead
code), and the current serial / windows definition is the in-house standby, not
a disabled standard-hosted job. Re-record the translation-pair hashes.
2026-08-19 14:02:35 +08:00
_Kerman 52a1f80327 Merge remote-tracking branch 'origin/master' into xtr/projection-state-schema 2026-08-19 14:01:31 +08:00
Chinesezjc e6b494ed17 ci: remove dead hosted serial-linux job
serial-linux (hosted ubuntu-latest) has been `if: false` since 2026-07-30 and
never runs. Remove the dead job block and retire the dangling references:

- TODO(hosted-serial-ci) narrowed to the single remaining disabled hosted
  serial job (serial-macos); the hosted linux definition is gone.
- The cache producer comment no longer claims serial-linux refreshes the
  hosted pnpm/Playwright caches; there is currently no active master producer
  for them, so restores are cold on a lockfile change.
- The self-hosted standby's frozen-archive comment no longer cross-references
  the deleted job.
- serial-macos gains its own intro comment since the shared 'hosted reference
  jobs below are disabled' lede was removed.

No runner allocation, required gate, or all-checks-passed.needs reference this
job; the aggregate is unchanged.
2026-08-19 14:00:33 +08:00
Chinesezjc 6079181d1a Merge pull request #2673 from deepseek-harness/fix/web-feedback-note-popover
fix(feedback): float the note editor in a popover
2026-08-19 13:59:30 +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 f8828ffe3e refactor(test): simplify session fixture decoding 2026-08-19 13:58:41 +08:00
_Kerman 1a72ae202a refactor(session): migrate host state reads to projections 2026-08-19 13:57:58 +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
Turtle 907c6334c1 Remove Knip from repository tooling 2026-08-19 13:33:24 +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 34a04ab077 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2698
# Conflicts:
#	docs/config-catalog.i18n.yaml
2026-08-19 11:59:15 +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