Commit Graph
18711 Commits
Author SHA1 Message Date
imccyu e1777b7891 fix(client): tighten UI ownership boundaries 2026-08-18 01:34:25 +08:00
imccyu 07484b9474 fix(build): preserve package metadata across rebase 2026-08-18 01:34:24 +08:00
imccyu 2f974ca9b0 feat(web): show plugin loading progress 2026-08-18 01:34:24 +08:00
imccyu 0fda2a26b7 fix(web): preserve boot page through React handoff 2026-08-18 01:34:24 +08:00
imccyu c065ba34d1 fix(client): tighten UI service boundaries 2026-08-18 01:34:24 +08:00
imccyu 85fa5b6943 docs(client): synchronize UI boundary references 2026-08-18 01:34:23 +08:00
imccyu cf5e686408 refactor(client): merge React bindings into UI renderer 2026-08-18 01:34:23 +08:00
imccyu f37bc082c5 refactor(client): move web rendering into a dynamic plugin 2026-08-18 01:34:21 +08:00
imccyu 3e4ad10d05 refactor(client): make attachment UI a client plugin 2026-08-18 01:34:20 +08:00
imccyu 56dff07c4e refactor(client): move schema handling into ui-settings 2026-08-18 01:34:20 +08:00
imccyu 027bd013bc Merge pull request #2634 from deepseek-harness/fix/ci-081800
fix: dep version issue from #1083
2026-08-18 01:26:39 +08:00
pku-xht 49351cbf0e feat(subagent): support named Claude Code provider instances 2026-08-18 01:16:29 +08:00
imccyu bace780458 fix: windows ci 2026-08-18 01:03:57 +08:00
imccyu 9705290fe4 fix: dep version 2026-08-18 00:42:26 +08:00
creatixchu a8a028e26f test: avoid Windows metadata-version collision 2026-08-17 23:31:36 +08:00
creatixchu 8d17e63558 chore(ci): 刷新 PR 合并引用 2026-08-17 21:29:14 +08:00
creatixchu fdf6fec5c0 test(session-reference): 补齐预处理分支覆盖 2026-08-17 21:25:12 +08:00
fz 042f8fd971 fix(release): align code runtime Python version 2026-08-17 21:23:00 +08:00
creatixchu 9eab23c176 fix(release): 同步工作区包版本 2026-08-17 21:17:30 +08:00
creatixchu 29de639e99 fix(web): 按评审意见调整引用职责 2026-08-17 21:13:33 +08:00
creatixchu 0e39055121 fix(attachment): refuse oversized image sides at admission
An image with a side above the deployed routes' 2000px many-image bound
could be durably committed by read_image, ride every later request, and
permanently fail the session with provider 400s. Admission now enforces a
configurable maxImageDimension (default 2000) during the full decode, so
read_image surfaces a recoverable tool error naming the limit instead of
poisoning durable history; the Web composer gets dedicated copy for the
new IMAGE_DIMENSION_TOO_LARGE reason.

Fixes #2626
2026-08-17 20:49:08 +08:00
creatixchu 7d19a6c2c7 Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references 2026-08-17 20:46:35 +08:00
fz f41a524453 Merge remote-tracking branch 'origin/master' into feat/python-sdk-standard-agent-runtime
# Conflicts:
#	scripts/smoke-python-runtime.py
2026-08-17 20:46:31 +08:00
fz 10d0895ed6 test(python-sdk): cover shipped preset runtime closure 2026-08-17 20:43:08 +08:00
fz 3b869b6f6d refactor: separate persistent Bash changes from runtime packaging 2026-08-17 20:42:59 +08:00
creatixchu 741b89963d Merge remote-tracking branch 'origin/master' into worktree/abort-partial-finalize 2026-08-17 20:38:52 +08:00
creatixchu 56efd81d19 fix(ci): sync release version and module graph 2026-08-17 20:32:14 +08:00
Chinesezjc d496d48c4b Merge remote-tracking branch 'origin/master' into fix/locale-default-english 2026-08-17 20:28:21 +08:00
creatixchu c530de9edc Merge origin/master: fold admitEncodedImages onto AttachmentStore.saveImages
master introduced AttachmentStore.saveImages as the batch admission
(count/aggregate-byte/media-type limits, validate-all-before-save,
ordered commit). admitEncodedImages narrows to the shared wire entry:
canonical-base64 enforcement plus delegation to saveImages, keeping one
home for batch policy while both wire endpoints (prompt RPC and the
command executor) still call one function. Test doubles gain saveImages;
batch-limit error texts follow saveImages' wording.
2026-08-17 19:59:53 +08:00
creatixchu 4ed283a2ba fix(commands): address review-bot round on the attachment envelope
- Honor a cancellation that lands during image admission before the
  handler runs, settling command/done with the abort reason (executor
  re-check after admitEncodedImages; the committed objects stay
  unreferenced, deferred-GC territory, now recorded in the Agent Note).
- Never let a pending draft-image serialization reach claim.submit after
  the attempt died (dispose/session teardown race).
- Refuse image removal while a command submit is in flight so the rail
  cannot diverge from the serialized snapshot mid-transaction.
- Declare dsh-llm as a runtime peer dependency of command-goal.
- Mirror the host executor's ordering and the producer grammar
  rejections in the fixture command plane: image checks run after
  command resolution (unknown names stay lifecycle-free), bare /goal and
  /plan//plan off with images answer the producers' error texts.
- Explain the deliberate serialize/release asymmetry in the hub's
  commandImages plumbing.
2026-08-17 19:48:30 +08:00
Chinesezjc 993f4e452b Merge pull request #1083 from deepseek-harness/feat/code-runtime-python-protocol
feat(code-runtime-python): add the fd-3 frame protocol
2026-08-17 19:07:50 +08:00
imccyu 99f6f02fec Merge pull request #2620 from deepseek-harness/release/dsh-0.1.0-rc.7
release: [email protected]
dsh-v0.1.0-rc.7
2026-08-17 19:03:17 +08:00
pku-xht cb064c4013 test(workflow): assert pending pointer suppression 2026-08-17 19:02:58 +08:00
creatixchu 8d9fee19f9 feat(commands): route composer image attachments through slash commands
A claimed slash command consumed only the text half of the composer
submission: /goal with reference images executed, cleared the draft, and
silently stranded the images in the rail. Model-visible attachment intent
had no route through the command plane.

The submission envelope is now modeled end to end. CommandDefinition
input.images declares acceptance; the declaration rides the descriptor to
every client, onto the minted CommandClaim, and into the input machine's
claim snapshot. commands.execute carries the submission's base64 images
and enforces the declaration in the executor: non-declaring commands, a
missing attachment store, and exceeded batch limits settle as logged
error results before the handler runs. Admission reuses the attachment
package's new admitEncodedImages, extracted from api-proxy's prompt path
so both wire endpoints share one limits/validation/commit sequence.

Producers own model visibility: /goal submits one user followup (image
blocks + a fixed reference line) after a successful create/edit so goal
rounds read the images from session history; /plan folds them into its
steered message. Grammar misfits (/goal pause, bare /plan, /plan off)
return direct errors and the composer keeps the images.

On the client, enter adjudication carries a SubmitEnvelope and every
command route that cannot consume images throws a localized refusal that
renders as one composer notice with draft and images retained; the
claimed pre-gate applies the same copy. An accepting claim serializes the
draft images, forwards them to commands.execute, and clears plus releases
them only on a success outcome.

The assembled web test roster gains the ui-input-trigger and ui-commands
plugins, mirroring the shipped composition, so slash submissions exercise
the command plane; a new keyless snapshot pins the refusal banner and the
accepting /goal flow over the built client graph.
2026-08-17 18:57:55 +08:00
pku-xht 7720b2258d fix(workflow): preserve precise completion focus 2026-08-17 18:55:46 +08:00
Chinesezjc 94135092a5 fix(locale): open in English when the browser names no shipped language
The provisional locale fell back to zh, so a browser asking for neither
zh nor en (fr, de) opened the product in Chinese. Resolve to en instead,
and use en as the dictionary fallback: the shipped zh/en dictionaries
declare identical key sets, so one constant serves both roles.

Add scripts/locale-dictionary-parity.spec.ts to gate that symmetry, and
set the asserted locale explicitly in specs that had relied on the old
zh fallback through a dead usePinnedBrowserLanguages call (those files
declare no jsdom environment, so browser detection never ran there).
2026-08-17 18:55:28 +08:00
Chinesezjc 177fbfad4f Merge remote-tracking branch 'origin/master' into feat/code-runtime-python-protocol 2026-08-17 18:52:50 +08:00
creatixchu 862132faca test(web): cover the ui-reference node half 2026-08-17 18:47:11 +08:00
imccyu bb4ca698d6 release(dsh): 0.1.0-rc.7 2026-08-17 18:47:02 +08:00
creatixchu e4560786f2 Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references 2026-08-17 18:43:23 +08:00
Tianyi Cui 8822d6744f Merge pull request #2252 from deepseek-harness/worktree/fix-1463-rich-content-bridge
fix: bridge durable image content across MCP and ACP
2026-08-17 18:38:01 +08:00
creatixchu b19d1643f7 fix(web): harden the composer submit transaction
- wire the directory pick's continue flag through InsertTextRequest to the
  input shell, which re-tracks at the caret so descent reopens completion
  (the flag was produced and forwarded but never consumed)
- guard the image-only send against a second Enter during the Host round-trip
- keep text appended after the sent snapshot when a submit settles ok; only
  interleaved edits clear with the committed content
- drop the dead restoreImages left from the sink rewrite
- read recall labels through a shared defensive sessionRecallLabels helper
  instead of unchecked casts over durable log data, and take the reference
  summary separator from the locale dictionary
- align the composer specs merged from master with the transactional submit
  contract (sinks resolve SubmitOutcome, settlement is awaited, call
  assertions carry the AbortSignal), and restore master's forms where the
  divergence served nothing (queue-mode sink case, single-line filter
  expectation, component-identity slot lookup)
2026-08-17 18:35:45 +08:00
creatixchu 6bb79911ba refactor(reference): serve discovery through typert Remote faces
Replace the legacy reference.* API Proxy domain with @Remote methods on the
owning services, following the typert gateway design master adopted on
2026-08-02 (message-feedback and plugin-inventory precedents):

- FileReferenceService and SessionReferenceResolver extend TypertRemoteService;
  fileReferences/list and sessionReferenceResolver/candidates are unary Remote
  methods cancelled through the reserved trailing signal, and the candidates
  face attaches each candidate's canonical mention under the configured limit
- move the wire types to type-only ./types subpaths (FileReferenceCandidate,
  SessionReferenceMentionCandidate) and export ./typert plus ./remote artifacts
- mount both contributions in the api-remotes client assembly; ui-reference
  consumes ctx.remote instead of connection.api.references and registers zh/en
  locale dictionaries for its sections and labels
- delete the reference.* routes, schemas, map rows, client stubs, and fixtures;
  the connection fixture serves the Remote endpoints instead
- release deliverPrompt admission listeners when the agent is disposed with the
  prepared prompt still pending, and cover the reference-* RpcError codes in
  the schema spec
- add the missing tsconfig paths for the /grammar and /types subpaths (clean-
  tree vitest could not resolve @deepseek-ai/dsh-file-reference/grammar)
- regenerate the cordis catalog, capability seams, and event matrix; update the
  owning bilingual READMEs, Agent Notes, and the reference-composer golden
2026-08-17 18:35:30 +08:00
Chinesezjc 3057f3bb1b docs(code-runtime-python): state the empty invariant's real reason
packages/AGENTS.md:18 requires a package-specific "No runtime invariant:"
reason on an empty installer. This one described a process-boundary
implementation and real-subprocess integration tests that the package does
not carry — it ships the wire-protocol codec and its Python mirror, covered
by protocol.spec.ts and protocol-mirror.e2e.ts.
2026-08-17 18:32:18 +08:00
Yichen Jiang 5dd6e7182a test(web): expect shipped retry budget 2026-08-17 18:16:06 +08:00
_Kerman cc68bbf382 Merge pull request #2517 from deepseek-harness/xtr/node-pty-1.2-beta
chore(subprocess-local): bump node-pty beta
2026-08-17 18:12:16 +08:00
Chinesezjc d1700c8a01 docs(code-runtime-python): scope the module JSDoc to the current contract
The barrel's module comment described where a later implementation would sit
relative to this seam, which docs/AGENTS.md:38 keeps out of durable prose.
State what the module exports instead.
2026-08-17 18:07:24 +08:00
pku-xht 1c405d41a5 docs(subagent): clarify Codex unattended runtime contracts 2026-08-17 18:02:18 +08:00
Yichen Jiang 2d2beda196 feat(web): default model retries to five 2026-08-17 17:59:06 +08:00
creatixchu 74b220d362 Merge remote-tracking branch 'origin/master' into worktree/abort-partial-finalize 2026-08-17 17:49:31 +08:00