Commit Graph

4599 Commits

Author SHA1 Message Date
Pine e90650c164 docs(plugin-system): reference for install, injection, and required/optional split
Adds a bilingual reference explaining how plugins are installed and composed
(bundles, patches, profiles, the Loader), how they are injected and activated
(Cordis inject/provide, fiber PENDING), and a dependency-derived split of the
shipped base bundle into system-required and freely optional plugins. Links the
plugin-inventory README to it and excludes the desktop build output from the
translation-pairing corpus scan.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 18:44:41 +08:00
Pine a8ec40ad34 feat(plugin-inventory): flat plugin list with a default-open toggle guard
The plugin-list tab rendered one flat list of every Loader entry — no separate
"system plugins" section — with each card showing its real enabled state and an
enable/disable button (a required plugin shows only a read-only note). The
enable/disable guard flipped from default-protect to default-open: only the
small REQUIRED_PLUGINS core (entry tree, Remote RPC spine, session/agent spines)
is protected from being disabled, so the shipped plugins are actually
toggleable. Tests, host READMEs, and the enable-disable agent note track the new
grouping and guard.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 17:38:38 +08:00
Pine cbec8cd6a9 feat(plugin-inventory): group by enabled state and allow re-enabling disabled plugins
The plugin-list tab now splits by current state: disabled plugins sit in the
main list with an enable button (so a bundle-default-disabled plugin can be
re-enabled), while enabled plugins sit in the collapsible system section —
a user-added enabled plugin keeps a disable toggle, a required one shows
none. setEnabled refuses to disable a required plugin but allows re-enabling
a disabled one, verifying the fiber activates and reverting a
dependency-missing enable.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 14:30:13 +08:00
Pine d385b7cf05 feat(ui): group the plugin list into toggleable and system sections
User-added (toggleable) plugins carry an enable/disable button in the main
list; required system plugins sit in a separate collapsible 'system plugins'
section with no controls. The system section starts expanded so the existing
web e2e/snapshot (which targets a system plugin row) still passes.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 14:23:42 +08:00
Pine df085ac6f8 feat(plugin-inventory): guard critical plugins from enable/disable
Every entry now carries a protected flag. The guard is default-protect:
disabling a plugin another plugin injects breaks the dependent, and enabling
one whose service is unavailable fails the boot (dsh-tool-ralph: pending on
workflowEngine). setEnabled refuses and the UI hides the toggle for every
shipped plugin; only opt-in-bundle plugins (USER_TOGGLEABLE_PLUGINS in
required.ts) are toggleable.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 14:10:38 +08:00
Pine 842483164d docs(plugin-inventory): document setEnabled, persistence, and the in-page toggle decision
Update the plugin-inventory READMEs from read-only to toggleable and record
the in-page enable/disable capability as an Agent Note.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 13:53:46 +08:00
Pine f5f114dfb8 docs(vision): package READMEs, Model Experience, and the capability Agent Note
Document the four image-recognition packages and the vision group, register
the vision domain in the package index, add the capability decision as an
Agent Note, declare the invariants peer dep, and drop the unused agents
injection from the consumer.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 11:15:59 +08:00
Pine 1c27680bb9 docs(desktop): record the Electron desktop shell decision as an Agent Note
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 10:23:56 +08:00
Tianyi Cui 7ae911ad8f Merge branch 'master' into agent/onboarding-modal-flow 2026-08-13 17:03:59 +08:00
Chinesezjc 65f679b33a ci: split failover switch into per-platform Linux and Windows variables
Replace the single DSH_CI_FAILOVER variable with two independent
switches so an outage on one platform no longer retargets the other:

- DSH_CI_FAILOVER_LINUX: the three required Linux workers (node-24,
  node-24-coverage, node-24-consumers) and the all-checks-passed verdict,
  which resolves its pool to vm-backup and keeps its concurrency and
  cache-restore branches.
- DSH_CI_FAILOVER_WINDOWS: the non-blocking windows-native job, which
  resolves to the dsh-win-ci pool.

all-checks-passed rides the Linux switch because it aggregates the
required Linux workers and runs on the vm-backup pool. The Dependabot
exclusion is preserved on both switches. The failover runbook (EN/ZH)
and its translation pairing, plus the docs that referenced the old
variable, are updated in the same change.
2026-08-13 16:54:57 +08:00
ZiyaZhang 9ee5aef98c feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
_Kerman df643627c9 Merge pull request #2423 from deepseek-harness/xtr/fix-web-ui-geometry-and-sidebar-motion
fix(web): align composer geometry and sidebar motion
2026-08-13 15:57:44 +08:00
_Kerman dc0843c630 Merge pull request #2474 from deepseek-harness/xtr/trajectory-load-more-row
fix(web): keep older trajectory history loadable
2026-08-13 15:53:22 +08:00
imccyu 7913fc510b Merge pull request #2489 from deepseek-harness/fix/publish-retry-idempotence
fix(release): make publication retry, space out, and skip what already landed
2026-08-13 15:42:39 +08:00
_Kerman 598645f119 Merge pull request #2458 from deepseek-harness/xtr/fix-cold-session-list-metadata
fix(web): keep cold blank sessions out of recent lists
2026-08-13 15:34:14 +08:00
imccyu 8d6f5164ab fix(release): make publication retry, space out, and skip what landed
A landlock publication failed with `E409 Failed to save packument` on the
second of three packages. The registry answers a write it could not commit that
way, and publishing several packages back to back is what provokes it.

Neither publish path could recover. The native sequence published from a shell
loop of bare `npm publish` calls: no retry, and no way to resume, because the
registry rejects a repeat of an existing version permanently — so a failure
partway through left the release stuck. publish.ts skipped versions already
present, which made a re-run safe, but had no retry either.

Both paths now attempt a tarball up to four times, space writes at least two
seconds apart, and back off 2s/4s/8s between attempts. Every retry re-reads the
registry first, because a reported failure can answer a write that landed
anyway: a version that now exists with this tarball's integrity counts as
published rather than as one to place again. That same re-read is what turns a
mid-run `E403 cannot publish over the previously published versions` into a
skip when the bytes match, and leaves it a hard failure when they do not.

The native sequence gets the registry comparison publish.ts already had, through
its own script rather than shared code — the two sequences keep separate
publication paths. Its publish job now checks out the repository, which the
shell loop did not need.

Verified against a scripted registry: a clean publish, one E409 then success, an
E409 whose write landed anyway, E409 on every attempt (fails after four), and a
version already present with matching integrity (publishes nothing).
2026-08-13 15:31:09 +08:00
Chinesezjc fc4405723f Merge pull request #2299 from deepseek-harness/fix/windows-native-ci-local-validation
fix: Windows-native CI findings on latest master (local gate reproduction)
2026-08-13 15:30:47 +08:00
Huanqi Cao 314fedfc14 docs: record the junction-safe fixture teardown decision 2026-08-13 15:16:12 +08:00
Huanqi Cao c29246ae31 fix(pwsh): resolve Store app execution aliases 2026-08-13 15:16:12 +08:00
Huanqi Cao 9e9073da24 fix(boot): unlink stale profile fallback links instead of rmSync 2026-08-13 15:16:11 +08:00
_Kerman 378a662082 Merge remote-tracking branch 'origin/master' into dshw/pr-2458 2026-08-13 15:15:39 +08:00
Turtle c1ae458090 Merge pull request #2469 from deepseek-harness/codex/docs-release-smoke-fixes
docs: fix pre-release smoke test failures
2026-08-13 15:11:31 +08:00
_Kerman 2be3e12965 fix(apiproxy): harden cold session metadata probing 2026-08-13 15:09:21 +08:00
creatixchu 0dcf37fbaf Merge remote-tracking branch 'origin/master' into worktree/drop-beta-welcome-notice 2026-08-13 14:33:50 +08:00
Tianyi Cui fcfc93896e Merge pull request #2435 from deepseek-harness/worktree/mark-repository-naming-note-implemented
docs: mark repository naming contract implemented
2026-08-13 14:31:52 +08:00
Turtle 3a1a4e2cd8 docs: address fragment review feedback 2026-08-13 14:30:17 +08:00
Turtle 62080d49c2 docs: fix release smoke test failures 2026-08-13 14:20:09 +08:00
creatixchu 45f417fb6a Merge remote-tracking branch 'origin/master' into worktree/drop-beta-welcome-notice 2026-08-13 14:18:54 +08:00
creatixchu 37247ea705 Merge remote-tracking branch 'origin/master' into worktree/drop-beta-welcome-notice 2026-08-13 14:14:55 +08:00
creatixchu b70a549714 fix(review): update smoke-real onboarding path and telemetry disclosure facts 2026-08-13 14:10:42 +08:00
imccyu a213befd0f build(release): publish the vendored framework and the native packages publicly
The three release sequences shipped with publishConfig.access: restricted, so
nothing in the @deepseek-ai scope was installable from outside the organization.

A restricted dependency is what actually blocks a public consumer: every harness
package declares the vendored framework as a peerDependency, and
dsh-sandbox-local declares the Landlock entry as a dependency. Those two
sequences therefore go public first — the nine vendor/* packages and the three
native/landlock-run packages — while the dsh family stays restricted until its
own sequence is opened deliberately. No public package requires a restricted one
in this arrangement.

Access is now per sequence, so no publish path can pass --access: one flag
cannot express two levels and would override the manifest that owns the fact.
publish.ts stops passing it, matching the native workflow, and
check-workspace-constraints holds each manifest to its own sequence's level,
which is what stops the scope from drifting one package at a time.

Harness consumers reference the Landlock entry as workspace:^ instead of
workspace:*, so a published harness package accepts the entry's patch and minor
releases. The entry keeps workspace:* for its platform packages, where the
binary must match the entry version exactly.

Two rationales that named a private registry no longer describe the vendored
sequence; they now state the durable reason, which is that the verification must
not depend on the registry already carrying matching versions.
2026-08-13 14:05:48 +08:00
imccyu 1646b7617e fix(bundle): exclude product subagents from base
The Codex and Claude Code subagent providers were production dependencies of
@deepseek-ai/dsh-base and mounted by its Cordis composition, so every install of
the base bundle carried two providers that only some products want.

Drop both from the base bundle's dependencies and composition. The examples keep
them as explicit dependencies, base's tests lock their absence, and the product
preset e2e mounts the providers it needs explicitly.

Cherry-picked from #2387 (two commits squashed into one).
2026-08-13 14:05:46 +08:00
_Kerman 3c06c66ac4 fix(web): hide verified cold blank sessions 2026-08-13 14:04:16 +08:00
_Kerman 14cf3334be fix(web): keep older trajectory history loadable 2026-08-13 14:04:06 +08:00
Turtle a312675d10 Merge pull request #2454 from deepseek-harness/codex/capitalize-service-provider
docs: capitalize Service Provider across repository
2026-08-13 14:03:57 +08:00
creatixchu b37243a317 Merge remote-tracking branch 'origin/master' into worktree/drop-beta-welcome-notice 2026-08-13 14:01:24 +08:00
creatixchu 5061ec2ef0 feat(web): 移除首启内测声明,遥测保持默认关闭 2026-08-13 13:47:09 +08:00
Turtle 1540e76598 docs: capitalize Service Provider across repository 2026-08-13 13:31:30 +08:00
Yichen Jiang 914344d253 Merge branch 'master' into fix/withhold-oauth-only-providers 2026-08-13 13:20:44 +08:00
Yichen Jiang a5a83bd1d9 fix(llm-pi-ai): withhold OAuth-only providers from the configurable directory
pi-ai resolves an OAuth provider from a stored OAuth credential alone, and
this adapter builds its Models collection with no credential store and runs
no login flow. `openai-codex` — the one installed provider declaring
`auth.oauth` with no `auth.apiKey` — was therefore offered on the Models page
with the keyless placeholder every pi-ai route carries, and every request on
it failed `Provider is not configured` before going out.

`catalogProviderTakesApiKey()` answers whether pi-ai's installed provider for
a route declares the one method this adapter can supply, and the directory
skips the catalog routes that fail it. Catalog membership is unchanged, so
`declared` still answers what pi-ai ships; the profile half of the union stays
unconditional, so a route a settings document already names keeps its entry
and can be edited or deleted.

Resolution is untouched: a profile naming `apiKeyEnv` on such a route still
builds a working provider.
2026-08-13 13:15:47 +08:00
Hypatia May b6b6a72df7 feat(session-query): ship full-text session search opt-in via openAt never
The shipped bundles keep ctx.sessionQuery mounted but set the new
session-query-sqlite `openAt: never` phase: searchSessions/searchEvents
fail with the typed SESSION_QUERY_SEARCH_DISABLED code before any request
normalization, node:sqlite is never imported or opened, and no source
observation or reconciliation runs. Every inherited exact read, filter,
and trace — session export descendants, subagent-fork Workspace
inheritance, title reads — keeps working, and the Web sidebar search
degrades to its designed local title/workspace matching. Enabling content
search is a one-line openAt override in a later patch layer; the web e2e
scaffold keeps it enabled as the assembled opt-in coverage.
2026-08-13 11:46:37 +08:00
Tianyi Cui 137c3c9254 Merge pull request #2428 from deepseek-harness/fix/run-code-description-contract
让 run_code 的模型面说明点名必填的 description 参数
2026-08-13 11:17:48 +08:00
Yichen Jiang 3bcc1a0bf7 Merge remote-tracking branch 'origin/master' into worktree/minimal-no-runtime-context
# Conflicts:
#	packages/core/system-prompt/README.i18n.yaml
#	packages/core/system-prompt/README.md
#	packages/core/system-prompt/README.zh.md
#	packages/examples/agent-spine-demo/README.i18n.yaml
#	packages/examples/agent-spine-demo/README.md
#	packages/examples/agent-spine-demo/README.zh.md
#	packages/self-modification/tool-cordis/src/api-catalog.ts
2026-08-13 10:24:29 +08:00
Yichen Jiang a135df8be6 Merge remote-tracking branch 'origin/master' into fix/run-code-description-contract
# Conflicts:
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
2026-08-13 10:13:53 +08:00
Tianyi Cui 50c010d1b8 Merge origin/master into naming note stack
# Conflicts:
#	.agents/notes/proposed/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml
2026-08-13 05:39:58 +08:00
Tianyi Cui 0233b8b26b docs: mark repository naming contract implemented 2026-08-13 05:20:43 +08:00
imccyu 34dd480ae5 fix(session-query): rename session log export package 2026-08-13 05:02:00 +08:00
_Kerman 68e1d5a587 Merge remote-tracking branch 'origin/master' into dshw/pr-2423
# Conflicts:
#	packages/client/ui-sidebar/src/client/SidebarRoot.tsx
2026-08-13 04:32:57 +08:00
imccyu a7d4cd8e1b fix: ci 2026-08-13 01:33:31 +08:00
imccyu 4064198560 • feat(self-modification): add dynamic Cordis plugin runtime and UI 2026-08-13 01:29:36 +08:00