Commit Graph
181 Commits
Author SHA1 Message Date
imccyu ce7073d512 Merge pull request #7552 from deepseek-harness/fix/webworker-live-import-bindings
fix(webworker): read named and default imports at each reference
2026-10-30 00:13:15 +08:00
yudshj 2e6370fe1d feat(sidebar): 按分栏保留文件树并由挂载插件处理打开 2026-10-29 15:32:16 +08:00
LogosVeritas 09eac50a14 Merge master into feat/python-sdk-slash-commands 2026-10-29 12:59:36 +08:00
LogosVeritas c68c2aa96c test(sdk): update fixtures for command run lifecycle 2026-10-29 10:45:17 +08:00
zhc a5f1d4a16a refactor(client): bind context menus at their Slot consumers
Merge master and preserve pinned-row visibility. Remove redundant Chat and tool-tree menu forwarding, unify trigger names, and bind file targets at the consuming Slot. Address CI static and coverage gaps without changing upstream scroll assertions.
2026-10-28 19:15:45 +08:00
imccyu 6ff50a4890 Revert "fix(client): keep files tree view across session switches" 2026-10-26 19:40:44 +08:00
Turtle b84fea6768 fix(client): guard retained files trees by binding
Split the store's restore seed from start, accept a retained tree only
from the binding that currently owns the tab, drop the new unknown cast
in the body harness, document the watch lifetime limitation, and expect
the e2e Files directory to stay expanded after a Session round trip.
2026-10-26 18:58:55 +08:00
LogosVeritas a2bf1d8c4d fix(sdk): keep run regression mocks type-safe
Use real harness instances and typed spies for scripted run notifications.
Prune the two retired unknown-cast baseline entries.
2026-10-26 13:44:40 +08:00
imccyu 7c7b021766 docs(session): document events, deprecated page and activation order
Sync the Session README, implementation notes and follow upgrade guide,
then regenerate the API, subsystem, persistence and event-graph catalogs.
2026-10-25 18:14:32 +08:00
CreatixChu 7bc30c4cba fix(attachments): 复用完整图片引用,取消 Session 历史扫描 (#7021)
* test(api): measure historical image read costs

* fix(test): resolve image benchmark paths from its config

* fix(attachments): read stored images without scanning sessions

* test(attachments): complete by-id fixtures and access assertions

* fix(docs): implement image-id read on catalog fixture

* docs(attachments): refresh generated read contracts

* test(web): verify stored images across history and forks

* docs(api): clarify image read metadata and permission scope

* test(api): type benchmark instrumentation without unsafe returns

* test(api): retire unknown-cast allowances with removed history fixtures

* test(attachments): isolate browser cases and document store-wide access

* test(web): intercept the by-id thumbnail read path

* docs(perf): run generated diagnostic from its owning package

* refactor(attachments): reuse reference reads for conversation images

* docs(api): refresh complete image reference client contract

* test(ui-chat): assert complete image reference forwarding

* test(perf): measure image reads against current Session observations
2026-10-25 09:40:53 +00:00
mektpoy d9c012551a revert(client): return the fork seam to master
ui-chat goes back to origin/master as a whole package: the footer branch forks
through ctx.sessions.fork with its own atSeq and analytics again, and Workspace
navigation takes no ForkSessionOptions. The package is identical to
origin/master, which drops the served-page branch assertions and README lines
added on this branch; they pinned behavior master already has.

ui-workspace restores master's forkSession signature and implementation
(allowMigration only, increaseTitle: true, selection untouched) and drops the
ForkSessionOptions type. uiSession leaves the inject list because the removed
session/rename probe was its only consumer. The row fork keeps passing
{ allowMigration: false }, which master already does, so forking from a shared
page never starts source-format migration.

Regenerate the client API catalog, restore the README fork contract (fork does
not navigate; allowMigration carries migration permission), re-record the
translation pairing, and return the ui-chat unknown-cast baseline count to 2.
2026-10-22 21:44:25 +08:00
mektpoy c3f2fbbdad chore(client): follow the merged seam records in generated artifacts
The client inspect catalog follows the seam signatures, the unknown-cast
baseline drops the two casts this branch retired, and the README pairing
records match the merged prose.
2026-10-22 21:44:25 +08:00
mektpoy b9861ae39d feat(api): re-check prompt access and name fork children
The Gateway admits a prompt before the controller sees it, so a binding narrowed while the prompt waited must not still deliver: the Remote method passes a predicate that re-reads the caller's access after every await and immediately before delivery, and cancel re-reads it in the same synchronous step. One requestId still produces one message; a retry from another principal is refused as session/request-conflict. Fork callers may name childSessionId so an interrupted attempt resumes the child it stored; any other occupant of that id is refused as session/fork-conflict. The agent-controller admission pipeline this previously built on is not part of the current master, so the prompt keeps the direct admission path and the tool-execution turn carrier is gone.
2026-10-22 21:44:24 +08:00
Magolor a9dd195400 refactor(approval): persist policy and turn state in projection (#6816)
* refactor(approval): persist policy and turn state in projection

* fix(approval): require ready projection state and host-owned recovery

* chore(approval): retire obsolete test cast allowances

* docs(approval): make activation migration requirement explicit

* docs(session-projection): clarify recovery ownership and readiness

* docs(approval): keep projection skill in dedicated PR
2026-10-22 17:27:54 +08:00
imccyu 73931626be feat(webserver): add resource routes and in-process readResource (#6901)
* feat(webserver): add resource routes and in-process readResource

A webserver route or the fallback seat may now answer through a resource,
a function from a Fetch Request to a Response, besides the existing
node:http handler. register accepts either route form and registerFallback
accepts a handler or { resource }; existing handler callers are unchanged.
HTTP GET and HEAD requests reach a resource; webServer.readResource(request,
peer) follows the same match order and reaches only resources, so handler
routes stay unreachable to in-process readers.

client-modules registers /plugins as the fetchBundle resource, and
frontend-static claims the fallback seat with a resource that renders the
index for a supplied Peer, or runs Connection's existing authorizeIndex for
an HTTP request and renders for the browser Peer.

* fix(webserver): flush resource headers and keep one drain listener per response

Resource responses send their status and headers before the first body
chunk, register one drain/close listener pair per response so the gzip
middleware's zlib stream does not accumulate listeners across backpressure
waits, and readResource drops the body of a HEAD read as HTTP does. HTTP
requests and readResource share one responder lookup.

* chore(scripts): prune the retired client-modules unknown-cast baseline entry

* feat(frontend-static): let browsers revalidate dist files except the index

Every dist file other than the rendered index now carries
cache-control: no-cache and a weak ETag from a SHA-1 of its bytes; a
request whose If-None-Match equals that ETag receives an empty 304. The
index keeps sending no cache headers. In-process reads through
webServer.readResource revalidate the same way.

* fix(webserver): stop reading Host for resource URLs and copy no held body

A resource request's URL is the request target resolved against the same
placeholder origin the route match uses, so a missing or unparsable Host no
longer turns a dist or /plugins request into 400. The webserver ends a
resource response itself and treats any earlier close as an abort, which
also covers the Web Worker tunnel marking an aborted response ended first.
client-modules bundle bodies and frontend-static file bodies are the held
bytes themselves instead of copies, and frontend-static no longer exports
its internal serveStatic helper.

* docs(webserver): document resource route types and the handler-or-resource fallback

Paste WebResource and WebResourceRoute beside WebRoute on the web-server
subsystem page and link the catalog signatures to it, replace the remaining
'fallback handler' wording now that the seat takes a handler or a resource,
and note why the drain listener removal is a no-op under gzip.
2026-10-22 13:41:18 +08:00
Magolor 4527424c51 Merge master into model-order and resolve documentation pairing 2026-10-22 00:19:49 +08:00
Yichen Jiang dd568f76de Merge remote-tracking branch 'origin/master' into worktree/composer-image-preupload
# Conflicts:
#	packages/test-support/client-runtime/README.i18n.yaml
2026-10-21 23:17:57 +08:00
Magolor be83795e6a chore(test): retire moved animation test cast allowance 2026-10-21 22:21:52 +08:00
winewill 69b446666b Merge pull request #6711 from deepseek-harness/fix/desktop-update-background-focus
fix(desktop): keep update dialogs in-window and follow app theme
2026-10-21 20:51:20 +08:00
Tianyi Cui 2a48671b83 Merge pull request #6472 from deepseek-harness/worktree/session-copy-markdown
feat(session): copy sessions as Markdown with source paths
2026-10-21 18:49:57 +08:00
winewill 1d41b28ed6 Merge master and fix desktop update CI integration 2026-10-21 18:37:44 +08:00
Tianyi Cui 7a3c24738e Merge master b9bdd062 into session-copy-markdown
Integrate exact origin/master b9bdd062c8ffd3dc234ebea7f5dff55ff26d87ad. Preserve the Session Markdown copy lifecycle and dictionary while adopting the Japanese locale, regenerate the client slot catalog, and add the Japanese quote-removal string required by the merged locale type.
2026-10-21 17:10:56 +08:00
Yichen Jiang b22cf68e50 fix(web): explain refused image uploads and tighten image staging
Address the review of this pull request:
- A failed image upload keeps the Host's attachment refusal reason. The
  thumbnail of a refused image names the reason instead of offering a
  retry that cannot succeed, and Enter while uploads hold the send names
  the first failure; a transport failure still offers retry, and an
  image without a file name uses the pending-image label.
- An image upload stops reading at the smaller of the per-image and
  per-message byte limits.
- A carried image draft moving to a Session that sends images inline
  drops its upload instead of staging it again.
- The image upload ready state no longer carries an unread image ref.
- Docs describe stored-image admission and the command image path, and
  the attachment rail test builds typed props instead of casting through
  unknown.
2026-10-21 16:48:01 +08:00
_Kerman a53ecb2f3a Merge origin/master into xtr/tool-executor-plugins 2026-10-21 15:56:44 +08:00
_Kerman 4b36aebb97 Merge remote-tracking branch 'origin/master' into xtr/session-model-selection 2026-10-21 13:57:15 +08:00
_Kerman 62a1075fe7 Merge remote-tracking branch 'origin/master' into xtr/session-model-selection
# Conflicts:
#	docs/persistence-schema.json
2026-10-21 13:56:41 +08:00
_Kerman 051ac9154b Merge pull request #6688 from deepseek-harness/xtr/ptc-birpc-transport
refactor(ptc-runtime-node): carry the process control channel over birpc
2026-10-21 13:53:43 +08:00
turtle1999 5b23990a0e Merge remote-tracking branch 'origin/master' into persistence-schema-digest-keys
# Conflicts:
#	docs/persistence-schema.json
2026-10-21 12:06:20 +08:00
_Kerman 38b9a095f3 Merge remote-tracking branch 'origin/master' into xtr/tool-executor-plugins
# Conflicts:
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/web/tool-web/tests/integration.spec.ts
#	pnpm-lock.yaml
#	scripts/check-workspace-constraints.spec.ts
#	scripts/check-workspace-constraints.ts
2026-10-21 11:22:06 +08:00
_Kerman 96b32df5db Merge remote-tracking branch 'origin/master' into xtr/ptc-birpc-transport 2026-10-21 10:30:33 +08:00
_Kerman a9c006f9c3 refactor(agent): own model selection on each agent 2026-10-20 21:09:09 +08:00
_Kerman 639602e63a Merge origin/master into xtr/session-model-selection 2026-10-20 20:57:11 +08:00
Turtle e1a11ef09c Merge pull request #6222 from deepseek-harness/turtle/auto-review-cache-ffc00f27f914
fix(auto-review): keep review requests cacheable across calls
2026-10-20 18:05:26 +08:00
_Kerman 8b79a1ddcc Merge origin/master into xtr/session-model-selection 2026-10-20 17:22:59 +08:00
Yichen Jiang 27c1b4c56f Merge pull request #6649 from deepseek-harness/xtr/fix-trajectory-input-order
fix(web): 修复停止补发后轨迹中的输入顺序
2026-10-20 15:14:49 +08:00
_Kerman 534aafce7a refactor(ptc-runtime-node): carry the process control channel over birpc
Replace the length-prefixed JsonChannel and hand-written request/reply
correlation with typed birpc methods over newline-delimited JSON. The
host calls the child's run(); bindings call the host's invoke(); logs
and output-limit reports are notifications. The transport bounds
incoming lines and queued writes, validates UTF-8 and exposed methods,
and rejects outstanding calls when the pipe closes.

Drop logic made obsolete by the new transport, including the 32-bit
frame-length bound on maxMessageBytes.
2026-10-20 14:50:05 +08:00
_Kerman b3c1586897 chore(trajectory): prune retired unknown cast allowances 2026-10-20 14:38:29 +08:00
Turtleandturtle1999 2f01ad549c fix(web)!: let web_fetch reach non-public destinations
The HTTP fetch provider resolved each hostname, rejected any non-public
answer, and pinned the connection. That refused every page behind
TUN-mode proxies with fake-IP DNS and did not confine a model that has
shell network access. Requests now go through the installed proxy
dispatcher and the system resolver with no address restriction.

HttpFetchResolver and the HttpFetchProvider resolver parameter are
removed; the upgrade guide covers the migration.

Co-authored-by: turtle1999 <[email protected]>
2026-10-20 12:44:14 +08:00
turtle1999 83d8119b3b refactor(scripts): avoid unknown cast when parsing snapshot text 2026-10-19 18:46:52 +08:00
_Kerman 455686626d refactor(tools): separate scoped executors from tool registration 2026-10-19 14:49:55 +08:00
Tianyi Cui 6118b51fa8 test(session-log-export): remove unknown casts from fixtures
Type the Header and toast test fixtures with the standard Session/global props they render with, and read slot injections through a narrow object helper. Prune the four retired unknown-cast baseline entries. No product behavior changes.
2026-10-18 17:00:45 +08:00
Turtle 13896d6ea5 Merge remote-tracking branch 'origin/master' into turtle/auto-review-cache-ffc00f27f914
# Conflicts:
#	.agents/notes/implemented/feature/2026-08-28-auto-review.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-28-auto-review.md
#	.agents/notes/implemented/feature/2026-08-28-auto-review.zh.md
#	packages/experimental/auto-review/README.i18n.yaml
#	packages/experimental/auto-review/src/index.ts
#	packages/experimental/auto-review/tests/auto-review.spec.ts
2026-10-18 15:05:52 +08:00
_Kerman e39b5f58c2 refactor(agent): persist model selection in session state 2026-10-15 19:05:09 +08:00
imccyu 93d2ad2d25 feat(webworker): boot the preview from the shipped profile and fetch lazy chunks on demand
The packer images the web template bundles, every optional bundle, and an installation manifest instead of a dumped composition, and the Worker boots that profile through app-boot like dsh web. Package-local lazy client chunks move into content-addressed archives that the VFS fetches on first asynchronous read; client-modules reads chunks asynchronously.

The Worker replaces node-addon-require-builtin with Node v24.18.0 internal-module interfaces and reports Node 24, so plugin metadata, the Cordis Loader, and HMR reach one cascaded loader backed by the Worker loader. Resolution failures carry Node error codes, the empty load cache lets HMR apply profile changes, and every optional bundle switches on and off live. Platform stubs throw ERR_FEATURE_UNAVAILABLE_ON_PLATFORM.
2026-10-15 11:30:45 +08:00
Turtle f2a9545da0 test(auto-review): parse review JSON without unknown casts 2026-10-14 22:50:50 +08:00
imccyu 0f7ac58213 feat(connection): isolate API operators without changing browser identity 2026-10-14 14:44:00 +08:00
imccyu a18488955d docs: sync subsystem docs and regenerate catalogs 2026-10-13 23:03:15 +08:00
Dudu-0223 b9958b901b Merge master into subagent-agent-presets and resolve integration conflicts 2026-10-13 14:10:56 +08:00
imccyu 902df58ded refactor: scope this branch to generated Remote artifacts
The caller-connection work — forwarded-event opt-in, physical socket
ownership, and the Node/MCP artifact-only consumer fixture — moves to a
stacked PR on top of this one. This branch now changes only how Remote
definitions are generated (Typert artifacts, lazy method info,
consumer-selected input strictness, tool-schema projection) and how the
existing Registry consumes them.
2026-10-13 00:52:59 +08:00
imccyu efdaa86fb8 feat(typert): unify Remote definitions with lazy method info 2026-10-13 00:52:58 +08:00