Commit Graph
432 Commits
Author SHA1 Message Date
turtle1999 9c8522bb64 feat(plugin-detail): show Markdown plugin details on bundle and market entry pages
Plugins bundle pages and Discover entry pages show the plugin's long
description first, as Markdown with images, in a height-limited region
without its own heading. The document is the file locale meta.detail
names, otherwise the package README, otherwise (market entries only)
the declared repository's README.

The new dsh-plugin-detail library selects documents and reads local
package directories and npm file CDNs without state. plugin-manager
reads installed and offered bundles through readBundleDetail; plugin-market
reads market entries through readEntryDetail, single-file APIs, and a
size-limited partial clone cache serialized across processes. Raw HTML is
omitted, relative links stay text, and relative images load from Host
routes with a sandbox CSP.
2026-10-19 19:13:22 +08:00
Chinesezjc adc27809f7 fix: map every zone rejection exhaustively and document the signed span
- timeZoneError and browserTimeZone switch over TimeZoneRejection instead of
  a ternary: each reason that shares a diagnostic is its own case, and the
  default arm assigns the reason to never so adding a reason fails the build
  (assertNever where the package already imports it). The unsupported cause
  is still forwarded.
- the request-zone suite now exercises the blank refusal, so every case the
  switch lists is covered rather than sharing one ternary branch.
- Duration documents that a span is signed: a negative count builds and
  decompose() refuses it, so the caller states its own sign policy.
2026-10-19 15:12:50 +08:00
Chinesezjc 19605806cb Merge origin/master into refactor/unify-time-vocabulary
Resolutions:
- packages/util/time/package.json keeps this branch's description and takes
  master's 0.2.1-rc.2 version.
- packages/util/README.i18n.yaml is re-recorded after the merge.
2026-10-19 15:05:12 +08:00
Tianyi Cui 79a5c00aec Merge master into worktree/oar-node24 2026-10-17 22:59:20 +08:00
imccyu d1b9c04067 release(dsh): 0.2.1-rc.2 2026-10-17 15:10:31 +08:00
imccyu c6e89e6755 release(dsh): 0.2.1-rc.1 2026-10-16 21:39:18 +08:00
imccyu 0a49d91bb2 release: setup next release version for [email protected] 2026-10-16 16:17:09 +08:00
Tianyi Cui c6a59a1ae9 build: require Node.js 24 or newer 2026-10-15 22:51:03 +08:00
imccyu f2235d6c02 release(dsh): 0.2.1-alpha.4 2026-10-15 20:00:58 +08:00
turtle1999 b227127d62 fix(plugin-market): keep the Installed tab panel and list the markets bundle under More
The Installed tab panel now wraps its loading, unavailable, and empty states.
Custom plugin markets joins the bundles the More page holds back until the
profile enables them, and the repository field and its directory rule are
documented.
2026-10-15 05:37:44 +08:00
turtle1999 ab3bb74550 feat(plugin-market): carry a plugin's source repository
Indexes may give each plugin an optional repository: the web URL of its
source repository and the package directory inside it. The Discover entry
page links it as Source code, and the plugin_market tool returns it.
2026-10-15 05:37:44 +08:00
turtle1999 3de3a977e0 feat(plugin-market): add the Custom plugin markets bundle and Discover tab
Read configured plugin market indexes on the Host, search them with fuzzy
multilingual matching, and install a chosen version from the Plugins page.

- dsh-plugin-market-index validates format-1 indexes and builds install
  arguments; inline icons are capped at 32 KiB.
- The pluginMarket service fetches configured http(s) URLs, parses bodies in
  a Worker Thread, caches documents, and pages filtered, ordered results with
  installation status and engines.dsh compatibility.
- Discover is an opt-in experimental bundle; the Plugins page gains a
  plugins.tab slot and confirmed installs.
- The plugin_market tool lists indexes, plugins, and versions for Creator mode.
- Plugin compatibility reads engines.dsh before DSH peer dependencies.
2026-10-15 05:37:44 +08:00
Yichen Jiang 36acfb1e88 release(dsh): 0.2.1-alpha.3 2026-10-14 19:38:37 +08:00
Chinesezjc c949deb1ca refactor(util-time): publish only the span surface its consumers call
The package API carried members and result types ahead of any caller. The
span now publishes fromMilliseconds and decompose, the two entries
dsh-time-context calls; the seconds constructor, the zero identity, the
arithmetic and ordering operations, the millisecond getter, and the four
fractional conversions land with the caller that needs them, recorded in
the Agent Note and the README limitation.

The package entry names its exports instead of re-exporting both modules,
so the three result types and DurationParts, which no consumer names, are
no longer part of the published surface. Every remaining new name has a
named consumer: schedule imports the nine parser and bound names plus
four rejection types, and canonicalizeTimeZone has seven consumer files.
2026-10-14 15:27:15 +08:00
Chinesezjc 183cbf4df4 Merge origin/master into refactor/unify-time-vocabulary
Resolutions:
- packages/util/time/package.json keeps this branch's description and the
  polyfill dependency, with master's 0.2.1-alpha.2 version.
- docs/module-graph.md and .zh.md are regenerated: master's graph plus
  this branch's context/time-context and schedule edges to util-time.
2026-10-12 17:53:48 +08:00
creatixchu 1b781d683b Merge master into feat/experimental-dsh-cua 2026-10-11 17:54:24 +08:00
07akioni deb90c38e6 Merge pull request #5576 from deepseek-harness/fix/desktop-dependency-alignment
perf(deps): align desktop dependencies and share client libraries
2026-10-09 17:52:53 +08:00
07akioni e2c410ef84 release(dsh): 0.2.1-alpha.2 2026-10-09 15:13:40 +08:00
creatixchu 4431c95da1 Merge feat/persistent-ptc into feat/experimental-dsh-cua 2026-10-08 21:49:23 +08:00
Chinesezjc 8987e6c45a docs: drop references to the removed invariant mechanism
origin/master removed the runtime invariant plugins and the package rule
that asked a README to justify the absence, so the text that cited that
mechanism no longer refers to anything:

- the Agent Note states the elapsed-rendering change without the reading
  invariant it used to cite
- the same note no longer says the durable reading format is one an
  invariant validates
- the util/time README no longer explains why no invariant companion is
  published, and its module JSDoc no longer claims the library formats
  nothing while listing a canonical instant renderer
2026-10-08 16:20:08 +08:00
Chinesezjc d51a000ee8 Merge origin/master into refactor/unify-time-vocabulary
Resolutions:
- packages/util/time/package.json keeps this branch's description and the
  polyfill dependency, with master's 0.2.1-alpha.1 version.
- packages/util/time/README.md and README.zh.md keep this branch's
  structure and content, with master's model-experience sentence about
  the zone instruction and timestamp. The re-recorded i18n sidecar
  follows.
- docs/module-graph.md and .zh.md carry master's graph plus this
  branch's context/time-context and schedule edges to util-time.
2026-10-08 16:02:22 +08:00
kingwl 0bfc4b97f2 Merge master and resolve integration conflicts for #5576 2026-10-08 14:57:40 +08:00
Tianyi Cui 5969359dc4 chore(deps): update mature runtime utilities 2026-10-07 16:41:17 +08:00
Tianyi Cui 21d0c2e29c feat(agent-instructions): load the shared agents-root AGENTS.md
The user-global instruction scope now reads two roots: $DSH_HOME/AGENTS.md
first, then the shared agents root that other agent tools use
($DSH_AGENTS_HOME, else ~/.agents). Both resolve from the process environment
through @deepseek-ai/dsh-home-paths; no config field is added, because the
stack base (PR #5718) removed the per-row home override.

The two files are candidates of one candidate group: identical trimmed content
renders once from the harness home, an unobservable candidate preserves the
group's last-good state, and reconciliation probes both roots so external
edits, removals, and new files become visible change notices. A candidate
dropped as a duplicate keeps being reconciled, so deleting or changing the
retained candidate promotes it. The harness-home file keeps its recorded
`user-global` scope key; the shared file carries `agents-global`.

A user-global delta states `These user-global instructions apply to all work.`
instead of naming its reconciliation scope, and a project path whose first
component would collide with a user-global scope directory renders with a
leading `.` so it keeps its own scope.
2026-10-05 17:20:30 +08:00
Tianyi Cui ef9944a01f Merge pull request #5625 from deepseek-harness/worktree/native-handler-fixture-01a0f9ff
test(native-command): publish Windows handler marker atomically
2026-10-05 09:04:37 +08:00
Tianyi Cui 0f51ba0737 Merge pull request #5629 from deepseek-harness/test/llm-retry-transport-recovery-timeout-c2c45a16
fix(timeout): end an idle demand the transport abandons
2026-10-05 08:45:18 +08:00
Tianyi Cui ec48669f48 release(dsh): 0.2.1-alpha.1 2026-10-03 10:46:11 +08:00
Tianyi Cui 99670bab72 fix(timeout): keep the deadline reaction per demand
Review follow-up on the watchdog rewrite:

- Register the deadline reaction inside `next()` and detach it when the
  demand settles. Racing against one watchdog-lifetime promise kept every
  settled race reachable through that promise's reactions, retaining each
  resolved `StreamChunk` for the length of the stream: a 10,000-value probe
  kept 100/100 sampled values before this change and 0/100 after.
- Take the neighboring stall case's 1,000ms idle budget in the new
  transport-recovery case: the retry performs a real local HTTP/SSE round
  trip, and a 50ms budget would let coverage-lane scheduling decide it.
- Document the contract where it is described: `packages/util/timeout/README`
  (both languages) and the bounded-recovery and timeout-library notes no
  longer claim that only the transport observes the watchdog signal.
2026-10-02 13:22:19 +08:00
Tianyi Cui dbb150ff0e fix(timeout): end an idle demand the transport abandons
An aborted read can stay pending forever: undici drops the error when the
abort lands on an in-flight response-body read (observed on the coverage
lane's Node v24.13.0), and the stalled body of
`llm-retry/tests/transport-recovery.spec.ts` then never settles. The idle
watchdog delegated termination to the iterator observing its signal, so the
request outlived its own deadline and the agent stayed `running` until
Vitest's 90s budget; awaiting the abandoned request generator's `return()`
queued behind that demand and would have re-hung the settled outcome.

`idleWatchdog.next` now races its demand against its own deadline and
rejects with the watchdog's TimeoutReason, so the deadline — not the
transport — decides when an outstanding demand ends. Both adapters that
consume the watchdog stop awaiting the abandoned generator's drain; the
abort they already issue owns socket and SDK teardown.

Evidence: instrumented stress harness at ~1s idle on Node v24.13.0 hung 4/160
iterations before this change (each with the abort delivered at ~1002ms and
the underlying read never settling) and 0/160 after; Node v24.19.0 never
hung. The new case in transport-recovery.spec.ts pins the behavior
deterministically: it fails (times out) with the watchdog change alone and
with no product change at all.
2026-10-02 13:02:47 +08:00
Tianyi Cui dd123a6a68 test(native-command): publish Windows handler marker atomically 2026-10-02 12:00:50 +08:00
Turtle 819eb8078e Merge origin/master into turtle/remove-invariants-ccf1396aaf61 2026-10-01 16:33:09 +08:00
kingwl f78b104b20 fix(deps): retain Worker-compatible Zod and align dependency checks 2026-10-01 03:19:25 +08:00
kingwl 64c5255843 perf(deps): align desktop dependencies and share client libraries 2026-10-01 01:17:17 +08:00
imccyu b7f06692b6 fix(client): handle sealed deltas and Unicode summary boundaries 2026-10-01 00:19:52 +08:00
imccyu 91818992b0 perf(web): finish incremental tool argument optimizations 2026-10-01 00:19:52 +08:00
imccyu a33bd1a80b perf(web): bound streamed tool argument work 2026-10-01 00:19:52 +08:00
imccyu d1b2b5a63b docs: record partial tool preparation performance 2026-10-01 00:19:52 +08:00
imccyu 2ba4144a7e feat(web): show parsed tool arguments during preparation 2026-10-01 00:19:52 +08:00
imccyu 35aebdca70 docs: describe shared lazy tool argument views 2026-10-01 00:19:52 +08:00
Tianyi Cui c7f66d13a6 docs(notes): prune redundant active decision records 2026-09-30 23:20:22 +08:00
Turtle f028f25667 refactor: remove runtime invariant plugins
Delete @deepseek-ai/dsh-invariants, every package's ./invariant companion
and its tests, the invariant gates and Vitest setup, the scoped-event
resolver generator, and the INVARIANT-coded listener rethrow paths.
Update docs, READMEs, Agent Notes, and add an upgrade guide.
2026-09-30 12:52:18 +08:00
turtle1999 6c6b85e572 Merge remote-tracking branch 'origin/master' into turtle/bundle-only-metadata-5394 2026-09-30 11:41:32 +08:00
turtle1999 8339f16c1d fix(plugins): read package.json only for package-root plugins
Subpath plugins are not packages, so they never read a package.json and
take their icon from the exported <specifier>/icon resource, like locale.
Package roots keep manifest text fallback and icon, with ./icon as the
fallback image. Drop the bundle-only reader option.
2026-09-30 11:41:26 +08:00
creatixchu 0b6c5bb7b8 merge: update native CUA to the current release base 2026-09-29 19:47:33 +08:00
imccyu c1b47e41fc release(dsh): 0.2.0-rc.2 2026-09-29 16:40:57 +08:00
turtle1999 d12257c959 fix(plugins): preserve manifest icon precedence 2026-09-28 23:30:05 +08:00
turtle1999 9cd8a888bb chore: merge master into bundle metadata correction 2026-09-28 22:45:57 +08:00
turtle1999 ecedbbc2e6 fix(plugins): reuse locale metadata and export bundle icons 2026-09-28 22:34:46 +08:00
imccyu 4878cdabd8 release(dsh): 0.2.0-rc.1 (#5387) 2026-09-28 19:48:10 +08:00
creatixchu 15332e42e6 refactor(cua): keep manual provider and application consent in base layer 2026-09-28 16:53:29 +08:00