Commit Graph
4568 Commits
Author SHA1 Message Date
imccyu a18488955d docs: sync subsystem docs and regenerate catalogs 2026-10-13 23:03:15 +08:00
imccyu d7bd68ee7a feat(remote-access): add rbac policies and gate non-owner calls and events 2026-10-13 23:01:37 +08:00
turtle1999 879ad372ac feat(hmr): replace plugins whose package files changed during profile recomposition
With HMR, installing, enabling, disabling and removing bundles take effect live. Each profile recomposition compares
the loaded modules below the profile directory and its linked targets with disk, stops the plugins whose files
changed, and recomposes the profile through app-boot's recomposeProfile(): the rows the next generation drops are
removed first, the latest runtime resolution is published once, and the generation is applied and judged. Afterwards
HMR evicts the modules below the mappings the recomposition dropped.

- app-boot: recomposeProfile(); PluginPackages.resolution; ResolutionRestartRequired; the resolver accepts in-place
  version changes and relinks, and relocates Node's cached link real paths.
- plugin-manager: with HMR, installBundle refuses an installed package (already-installed), so an upgrade is a
  removal and an installation; every restart-required result carries a restartReason; removal uses the registry the
  package was installed from.
- ui-plugin-manager: the Official Update removes and then installs; restart prompts name their reason.
2026-10-13 22:15:57 +08:00
winewill f094f04c96 Merge pull request #6116 from deepseek-harness/build/desktop-cos-publish
feat(desktop): 支持原机器产物复用与审批式 COS 发布
2026-10-13 17:42:10 +08:00
winewill e637eecaa9 test(desktop): cover channel and source packaging inputs 2026-10-13 16:58:18 +08:00
winewill fdbe2bce47 feat(desktop): separate update channels and confirm releases before approval 2026-10-13 16:14:41 +08:00
winewill 6e629a5ef0 fix(desktop): preserve publish diagnostics and interrupted recovery 2026-10-13 14:20:45 +08:00
Dudu-0223 b9958b901b Merge master into subagent-agent-presets and resolve integration conflicts 2026-10-13 14:10:56 +08:00
winewill 04d46c1912 fix(desktop): use native shells for cross-platform publication 2026-10-13 14:01:39 +08:00
winewill d156ee31a0 feat(desktop): publish retained packages through approved COS workflow 2026-10-13 13:59:01 +08:00
LogosVeritas 4703022ad6 Merge remote-tracking branch 'origin/master' into feature/minimal-compact-image 2026-10-13 11:19:17 +08:00
LogosVeritas 591ed98f08 test(minimal): align CLI and Python runtime expectations 2026-10-13 10:58:09 +08:00
Dudu-0223 c6f60e68f0 Merge pull request #6008 from deepseek-harness/fix/subagent-depth-awareness
fix(subagent): announce exhausted delegation depth
2026-10-13 10:55:07 +08:00
LogosVeritas 00a007d833 Merge branch 'master' into feature/minimal-compact-image 2026-10-13 10:32:01 +08:00
Magolor 5249d9a4ce fix: prefer saved credentials and use environment keys in headless (#5483)
* ui: show locked API key environment reference

* fix(ui-settings-models): skip unused pi-ai credential reference

* fix(ui-settings-models): show active provider auth source

* test(llm): cover provider auth check failures

* docs(ui-settings-models): clarify active provider authentication

* test(web): update model key copy snapshots

* fix(ui-settings-models): clarify native authentication source hint

* fix: address PR 5483 review feedback

* docs(llm): state empty auth lookup behavior

* fix: refresh auth hints with credential snapshots

* fix: require credential refresh revision

* test: cover auth status projection

* fix: refresh catalog and browser expectations after rebase

* fix: keep auth status projection internal and explicit

* fix: preserve credential source checks with signed-in account rows

* test: pin Models authentication instead of inheriting host keys

* fix: prioritize stored credentials across providers

* fix: use one environment fallback hint

* docs: refresh credential contract

* docs: refresh config catalog

* test: align provider hint verification

* fix: use provider-native auth hints and endpoints

* fix: cover oauth-capable provider auth hints

* fix: show canonical endpoint defaults

* fix: avoid misleading endpoint fallback

* fix: label catalog endpoint defaults

* fix: shorten auth hints with hover details

* fix: clarify native auth resolution

* test: align DeepSeek endpoint hint

* fix: pair help button corner shape

* fix: address credential precedence review

Record the stored-credential precedence in a superseding Agent Note and
an upgrade guide, and align the credentials subsystem page, package
READMEs, and JSDoc with the order file > launch env > $cwd/.env >
$DSH_HOME/.env.

Report each pi-ai route's catalog endpoint and native-auth environment
names through the provider directory, check the names against the
installed pi-ai resolvers, and remove the llm/checkAuth and credential
describe operations that no Models page code calls.

Restore the route-derived key reference and the home expansion that
reads the home directory only for a leading ~.

* fix: clarify model authentication guidance

* fix: explain native provider OAuth requirements

* fix: keep authentication guidance method neutral

* fix: show credential reference source in model editor

* fix: use environment authentication in headless profile

* fix: validate headless authentication and current provider metadata

* test: retain authentication guidance coverage with account catalog updates

* test: retain writable Models credentials with the pinned environment
2026-10-13 10:10:06 +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
Yudong Han 4dff4b07f0 Merge pull request #6042 from deepseek-harness/fix/office-docx-check-scope
fix(office): 移除内置 checker 并限制 Word 无关检查
2026-10-12 22:50:11 +08:00
winewill 1379394224 fix: verify and number unnotarized macOS artifacts 2026-10-12 19:11:01 +08:00
winewill a98c6aae78 build: manage macOS runner service and optional notarization 2026-10-12 18:01:44 +08:00
Yichen Jiang 3aa8872e67 Merge pull request #6027 from deepseek-harness/worktree/web-terminal-duplex
feat(web): carry terminal input over duplex streams
2026-10-12 17:13:57 +08:00
winewill 7ba14bcc72 Merge pull request #6037 from deepseek-harness/build/macos-self-hosted-packaging
build(macos): add self-hosted signed packaging workflow
2026-10-12 17:11:18 +08:00
yudshj fb2a554cd3 refactor(office): remove the bundled structural checker 2026-10-12 16:07:23 +08:00
Yichen Jiang 3d6e1b811b Merge remote-tracking branch 'origin/master' into worktree/web-terminal-duplex 2026-10-12 16:06:21 +08:00
ZiyaZhang 2998eb0311 Merge master and fix depth-limit snapshot CI 2026-10-12 00:25:05 -07:00
fz e75e13313c Merge pull request #5531 from deepseek-harness/fix/5520-job-session-timestamps
fix(jobs): persist owned lifecycle timing in sessions
2026-10-12 14:15:56 +08:00
Turtle f34e5cc59b Merge pull request #5938 from deepseek-harness/fix/persistence-disposal-order
fix(session): retain JSONL resources through provider-triggered teardown
2026-10-12 14:14:36 +08:00
Yichen Jiang c319824f2b Merge origin/master into worktree/web-terminal-duplex 2026-10-12 14:07:25 +08:00
Yichen Jiang 5538b790c6 fix(web): bound terminal uplink and preserve final output 2026-10-12 13:54:11 +08:00
winewill ff3dfc9be6 build(macos): add self-hosted signed packaging workflow 2026-10-12 13:08:09 +08:00
fz 88a0be8486 Merge master after separating plugin-manager fix 2026-10-12 13:04:25 +08:00
yudshj b6fc04f403 Merge latest master into Office progressive skills 2026-10-12 12:50:33 +08:00
yudshj bfcc6d50d0 refactor(office): remove command launchers and shell compatibility changes 2026-10-12 12:45:09 +08:00
LogosVeritas 444692d1ca feat(preset): add image reading and compaction to sdk-minimal
Reuse read_image and automatic compaction in the standalone profile without
adding SDK slash-command handling. Update profile guidance, upgrade steps,
and startup and recorded-session coverage.
2026-10-12 12:11:18 +08:00
yudshj 88f5ed353e refactor(office): keep skill API and carrier composition unchanged 2026-10-12 11:57:13 +08:00
imccyu d0749e9f6b Merge pull request #6023 from deepseek-harness/worktree/local-gates
perf(gates): speed up local hooks, typecheck, documentation gates, and tests
2026-10-12 11:26:31 +08:00
Yichen Jiang 5379996fcb feat(web): carry terminal input over duplex streams 2026-10-12 11:18:43 +08:00
Yichen Jiang 2a3d143eaa Merge remote-tracking branch 'origin/master' into worktree/sleepy-grothendieck-64df7b
# Conflicts:
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
2026-10-12 11:07:34 +08:00
imccyu c38a9e6111 fix(typert): classify build-output guard paths by native real path
The analyzer normalizes its root with fs.realpathSync, which keeps a
Windows 8.3 short name such as RUNNER~1 in the runner's TEMP, while
TypeScript reports module-resolution results through
fs.realpathSync.native, which expands it. The guard compared the two
spellings, found the resolved lib/ declaration outside the workspace,
and let a missing alias through on Windows. It now canonicalizes the
root and every file with realpathSync.native and reports paths spelled
under the caller's root; the guard specs also run with the workspace
root spelled through a directory link.

Refs #5852
2026-10-12 11:06:56 +08:00
imccyu ad43b1f7da docs: state that the documentation aggregate cap applies in CI
doc-sync, test:docs, hygiene, and check:all run at most 8 gates in CI as
well; the constant, the development guide, and the Agent Note now say so.
The Note also states that the source-only Typert guard rejects unresolved
workspace imports, so a missing alias fails before or after host-src.

Refs #5852
2026-10-12 11:06:56 +08:00
imccyu a99cf28864 test(docs): pin the repository-reference prefix search
uniquePrefixMatch is exported and covered for unique, shared, last,
exact, absent, and empty cases, and a fixture repository with two commits
whose names share a seven-digit prefix shows that the shared prefix is
accepted while a longer unique prefix is rejected.

Refs #5852
2026-10-12 11:06:56 +08:00
imccyu 5222ef2751 fix(typert): reject unresolved workspace imports in source-only generation
rejectBuildOutputs caught a missing paths alias only when the package's
lib/types already existed. On a tree whose packages are not yet compiled,
as when host-typert runs beside host-src on a clean checkout, the import
resolved to nothing and checkDiagnostics: false hid it. The guard now also
fails when a face program cannot resolve an import of a workspace package,
found through its node_modules link, and names the paths entry derived
from the package's exports types condition.

Refs #5852
2026-10-12 11:06:56 +08:00
imccyu 8a6c68fc34 docs: state review-requested invariants and current command names
gen-doc-graphs states that its probe memo patches the system and needs a synchronous, non-nested caller; the typecheck graph comments why host-check does not wait for host-typert; the API gateway guide names the CI build lanes as the bundling Typert path; and the build-split Note marks its host-libraries measurement as superseded by host-contracts.

Refs #5852
2026-10-12 11:06:56 +08:00
imccyu 703c8f659c perf(docs): prefetch CLI help concurrently and memoize doc-graph probes
gen-cli-help launched its twelve source-mode dsh --help processes one
after another, each spending most of its time waiting on profile boot
I/O; they now start concurrently within the default worker budget, each
with its own temporary DSH_HOME, and the existing comparison consumes
them in the original order. gen-doc-graphs memoizes ts.sys file, directory,
realpath, and directory-listing probes for one run. Generated pages are
byte-identical; CLI help drops from about 52 s to 7 s and doc graphs from
about 47 s to 33 s.

Refs #5852
2026-10-12 11:06:54 +08:00
imccyu 67b875a5bf perf(docs): list each repository directory once per file walk
uniqueRepoFiles read every directory once per pattern and ** level and
resolved every file with realpath. One walk now lists each directory
once across patterns, resolves only paths reached through symbolic
links, and lets doc refs skip non-leading lib directories, whose files
it always excluded. markdown wrap, doc refs, and package paths return
the same file lists with about half the directory reads.

Refs #5852
2026-10-12 11:06:53 +08:00
imccyu 1e24617aad perf(docs): parse each Markdown document once in documentation gates
markdown links parsed anchor targets twice more and probed existence
without a cache; translation pairing reparsed every document after link
normalization and globbed four times; the README model-experience and
limitations checks parsed each README three times; type equivalence
parsed all 1,835 documents; Session format references reparsed each pair
four times. Each gate now parses a document once: links and anchors come
from one tree, pairing reuses the original tree when every rewritten
destination keeps the block structure and falls back to a full reparse
otherwise, the README checks share one tree, a text prefilter skips
documents that cannot hold a source-equivalence fence, and the
persistence renderer passes its trees on. Outputs are byte-identical on
the repository, and seeded faults are reported identically.

Refs #5852
2026-10-12 11:06:53 +08:00
imccyu 989a52d427 build(hooks): stop regenerating third-party notices on pre-commit
Browser inputs make every package source file a generator input, so the
pre-commit job ran the 16-second generator on nearly every commit while
few commits change its output. gen-third-party-notices.spec.ts already
asserts the committed bytes in the test lane, including the required
node 24 / coverage pull-request lane, and names the regeneration command
when they are stale. The generated preamble, the notices decision, and
the development guide now describe that ownership.

Refs #5852
2026-10-12 11:06:51 +08:00
imccyu a8fd8da98a perf(docs): resolve repository-reference candidates with one object listing
verify-repository-references asked git cat-file for each of about 26,000
abbreviated hexadecimal candidates, which took 135 s on a network
filesystem. One --batch-all-objects listing (about 1.2 million objects,
0.6 s) now feeds an in-memory prefix search; a candidate still counts
only when its prefix names exactly one available object and that object
is a commit. The gate drops from 166.8 s to 15.7 s, and both
implementations classify 27,050 real and synthetic candidates
identically.

Refs #5852
2026-10-12 11:06:50 +08:00
imccyu ed7bf8cc42 perf(gates): cap local default worker counts
os.availableParallelism() reports host CPUs rather than a container's
CPU quota (256 against a 64-CPU quota here), so local defaults spawned
255 Vitest forks (55 GiB peak RSS) and oversubscribed every scheduler.
scripts/parallelism.ts keeps the CPU count in CI and caps other runs at
12, or 48 for Vitest forks and the local coverage budget; documentation
and hygiene aggregates run up to 8 gates instead of 4. Explicit
DSH_GATE_CONCURRENCY, DSH_OXLINT_THREADS, DSH_COVERAGE_MAX_WORKERS, and
--maxWorkers still win.

Refs #5852
2026-10-12 11:06:50 +08:00
imccyu 04af9a1df7 perf(build): generate Typert contracts without bundling for typecheck and lint
Type checks only need Host declarations and Typert-generated
declarations, but typecheck, lint, lint:fix, doc-typecheck, and the CI
typert-contracts gate rebuilt the whole Host tsdown pass, Desktop bundle
included, to obtain them. A source-only scripts/generate-typert.ts now
runs the same generator and artifact writer as the tsdown plugin, beside
Host package compilation: Typert reads only sources once the missing
@deepseek-ai/dsh-client-file-upload/types path alias exists, and
rejectBuildOutputs fails the pass when a workspace lib/ declaration
enters its program. typecheck runs as a build.ts scope that checks both
aggregates in build mode after their own face compiles.

Refs #5852
2026-10-12 11:06:49 +08:00