Commit Graph
362 Commits
Author SHA1 Message Date
yudshj fa518ecd89 feat(desktop): enable standalone Office skills 2026-09-16 15:21:18 +08:00
lsdsjy ea5f1dce4a fix(desktop,client): preserve folder creation and verify picker wiring 2026-09-16 13:50:21 +08:00
Yichen Jiang dc9256536b Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-4-web
Master now carries the final #4182 plugin manager and the live client
module graph of #4189, so the web management layer is re-ported onto
them:

- The manager keeps master's `ManagementError` codes, `ChangeResult`
  stages, `configure()` under `hmr.runExclusive`, `reload()` warnings
  and `writePluginEnabled` name matching, and adds back `inspect`,
  request-id installs with `plugin-manager/install-log` and
  `plugin-manager/install-state`, `cancelInstall`, `listBundles` titles,
  rows and overrides, `packageResult.kind`, `pnpmCommand` and
  `inspectTimeoutMs`, and `plugin-manager/changed` after each change and
  each `profile/reconciled`. A failed or cancelled installation restores
  the snapshotted manifest and lockfile instead of master's one-shot
  `pnpm remove` cleanup, so `cleanup` and `remainingDependencies` leave
  the result.
- App boot keeps master's reconciliation diagnostics and emits
  `profile/reconciled`; `watchUserPatches` goes with the launcher's
  watcher now that HMR owns profile reloads.
- The settings Plugin list tab stays read-only with #4189's page-local
  sync failures and retry; master's bundle form and row checkboxes are
  dropped again. The sidebar page words the Host's codes through its
  dictionary, and a client bundle change follows the live module graph
  without a page reload.
- The web e2e scaffold no longer chooses a reload policy: the base
  bundle's `hmr` row turns on with the profile context and application
  readiness, and `profile.hmr: false` disables it through an overlay for
  the startup-only scenario.
2026-09-15 17:28:08 +08:00
Yichen Jiang b3e964c340 Merge PR #4182 (turtle/plugin-manager) into feat/plugin-mgmt-4-web
The web plugin management layer now sits on the current-profile plugin
manager from #4182 instead of the boot and manager layers of #3593 and
#3594. This merge takes #4182's host side whole — `packages/boot/hmr`,
its `packages/boot/plugin-manager`, `profileContext` in app-boot, the
vendored loader change — and drops the replaced host packages and their
app-boot, inventory, Remote, CLI, and catalog edits. The web files of
#3596 are carried over unchanged: the sidebar page package, the
ui-primitives terminal changes, the settings-section tweaks, the e2e
scenarios and fixtures, and the two web Agent Notes. They do not build
against the new host until the following commit adapts them.
2026-09-15 16:36:31 +08:00
imccyu eb8cc594b3 feat(util): add caller-relative lazy require 2026-09-15 11:06:42 +08:00
Yichen Jiang 850d2882f6 Merge commit '03af7e39c641a58fd77f5b3f7b3eb089f200e519' into worktree/pr3596-global-only 2026-09-14 19:57:15 +08:00
Yichen Jiang 9dc51c4666 Merge commit '7d96a1bcda353371db935725ef3a8d228312f42e' into worktree/pr3594-manifest-mergeup
# Conflicts:
#	packages/api/remotes/src/client/index.ts
#	pnpm-lock.yaml
2026-09-14 19:55:22 +08:00
Yichen Jiang 2d660bf078 fix(web): list only installed packages on the sidebar Plugins page
The sidebar page no longer shows the profile template's own bundles
(dsh-base, dsh-web-app). The Settings Plugins section gets its read-only
Plugin list tab back for them, with both of its groups collapsed by
default. Restores @deepseek-ai/dsh-client-ui-settings-plugin-inventory
with its web bundle row, tsconfig entries, catalogs, and goldens, and
drops the built-in tag, locked switch, and source fact the page no
longer needs.
2026-09-14 16:45:13 +08:00
Tianyi Cui ee031f9cf9 Merge master into browser-use backends 2026-09-14 14:30:58 +08:00
Yichen Jiang 673fce91e2 Merge branch 'worktree/pr3595-sep14-sync' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/client/ui-plugin-manager/README.i18n.yaml
#	packages/client/ui-settings-plugin-inventory/README.md
#	packages/client/ui-settings-plugin-inventory/tests/components.client.spec.tsx
#	scripts/verify-package-readme-model-experience.ts
#	tsconfig.base.json
#	tsconfig.client.json
2026-09-14 11:07:31 +08:00
Yichen Jiang 8dc899641a Merge branch 'worktree/pr3593-manifest-3899' into worktree/pr3594-manifest-mergeup
# Conflicts:
#	.agents/notes/implemented/architecture/2026-09-11-native-entry-diagnostics-and-static-plugin-declarations.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-11-native-entry-diagnostics-and-static-plugin-declarations.md
#	.agents/notes/implemented/architecture/2026-09-11-native-entry-diagnostics-and-static-plugin-declarations.zh.md
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/api/remotes/src/remote-events.ts
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	scripts/check-workspace-constraints.ts
#	scripts/gen-cordis-catalog.ts
2026-09-14 10:49:21 +08:00
Yichen Jiang 1b7b50bbe1 Merge remote-tracking branch 'origin/master' into worktree/web-sidebar-terminal
# Conflicts:
#	apps/web/package.json
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/e2b/subprocess-e2b/README.md
#	packages/e2b/subprocess-e2b/README.zh.md
#	packages/e2b/subprocess-e2b/src/index.ts
#	packages/e2b/subprocess-e2b/src/terminal.ts
#	packages/e2b/subprocess-e2b/tests/subprocess.spec.ts
#	packages/e2b/subprocess-e2b/tests/terminal.spec.ts
#	packages/mcp/mcp-resources/README.i18n.yaml
#	pnpm-lock.yaml
#	scripts/verify-package-readme-model-experience.ts
#	snapshots/session/cordis-inspect-jsdoc/session.v3.jsonl
#	tsconfig.base.json
#	tsconfig.client.json
#	tsconfig.host.json
2026-09-14 10:36:31 +08:00
Tianyi Cui e1612c2fdc feat(browser-use): add per-Session experimental browser backends 2026-09-13 22:39:16 +08:00
Tianyi Cui 5f773a0ded feat(workspace): restore archived sessions from a settings page
Sessions could be archived from the sidebar row menu but never restored:
the registry-global archive set was a one-way display filter with no
inverse RPC and no surface listing its members.

WorkspaceRegistry.unarchiveSession drops one id from archivedSessionIds in
one durable write on the same operation chain as archive, with no
session-existence probe because a removal cannot introduce an unknown
referent. The Workspace controller exposes it as workspace.unarchiveSession
returning the complete archive set, which the existing archived follow
increment already propagates, so no frame type and no persisted field
changes.

The new client package dsh-client-ui-settings-unarchive-sessions owns the
restore surface: one localized settings.section page listing the archive
set joined with loaded session summaries, newest archive first, searchable
by title or workspace, with one Unarchive action per row.
2026-09-13 16:45:45 +08:00
Tianyi Cui af4ad05845 feat: add computer use with Cua Driver providers 2026-09-12 16:41:12 +08:00
Tianyi Cui 7c9bb5914c refactor(ptc): align runtime packages and services with PTC naming 2026-09-12 15:03:04 +08:00
Tianyi Cui 72226bd061 feat(ssh): authenticate streams and join remote process cleanup 2026-09-12 15:03:03 +08:00
Tianyi Cui 7f5eb6db9a fix(code-runtime): support SEA startup and immediate control writes 2026-09-12 15:03:01 +08:00
Tianyi Cui f95f7ec8dc refactor(code-runtime): name the Node runtime provider 2026-09-12 15:03:01 +08:00
Tianyi Cui c49db8bc8c refactor(e2b): retire remote execution providers 2026-09-11 22:12:55 +08:00
Yichen Jiang f7519bab0a Merge master settings checkpoint into plugin management UI 2026-09-11 15:34:07 +08:00
Yichen Jiang 90aa315f40 Merge master boot checkpoint into plugin manager 2026-09-11 15:31:04 +08:00
Yichen Jiang 650d5f1478 Merge manifest-compatible scoped settings into plugin management UI 2026-09-10 16:50:07 +08:00
Yichen Jiang b12febec56 Merge manifest-compatible boot layer into plugin manager 2026-09-10 16:36:04 +08:00
imccyu 0718711886 docs(testing): define the native-mock client assembly tier 2026-09-10 16:34:27 +08:00
Yichen Jiang cfdfd7ccb9 Merge remote-tracking branch 'origin/master' into worktree/web-sidebar-terminal 2026-09-09 19:53:05 +08:00
imccyu 63187de80f release: publish experimental Agent Teams packages 2026-09-09 18:54:14 +08:00
Yichen Jiang e15a9b1bec feat(web): add interactive sidebar terminals 2026-09-09 16:40:58 +08:00
imccyu dcfd8c299d refactor(client): rename document preview package 2026-09-09 10:12:40 +08:00
Yichen Jiang 08974835d7 refactor(web): rename ui-settings-plugin-manager to ui-plugin-manager
The package hosts the sidebar's Plugins panel and a preset's capabilities
section, not a settings tab; the directory, the package name, and its
dictionary namespace (`pluginManager`) say so, and every reference, catalog,
and note follows.
2026-09-09 07:42:23 +08:00
Yichen Jiang 41d21f841c Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager 2026-09-09 07:18:29 +08:00
Yichen Jiang 00a5aafdc3 Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/client/ui-settings-plugins/package.json
2026-09-09 06:29:37 +08:00
Dudu-0223 9f69a7fb16 refactor(subagent): extract persistent chunked list utility 2026-09-08 23:28:50 +08:00
Yichen Jiang f3f1c7a87d Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/bundle/web-app/package.json
#	packages/client/ui-agent-preset/README.i18n.yaml
#	packages/client/ui-agent-preset/README.md
#	packages/client/ui-agent-preset/README.zh.md
#	packages/client/ui-settings-plugin-inventory/README.md
#	packages/client/ui-settings-plugin-inventory/README.zh.md
#	packages/client/ui-settings-plugin-manager/README.i18n.yaml
#	packages/client/ui-settings-plugin-manager/package.json
#	packages/client/ui-settings-plugins/README.i18n.yaml
#	packages/client/ui-settings-plugins/README.md
#	packages/client/ui-settings-plugins/README.zh.md
2026-09-08 17:02:09 +08:00
Yichen Jiang bb408abe28 Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
# Conflicts:
#	apps/cli/src/bin.ts
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/boot/app-boot/src/index.ts
#	packages/boot/app-boot/src/profile.ts
#	packages/host/README.i18n.yaml
#	packages/host/README.md
#	packages/host/README.zh.md
#	scripts/verify-package-readme-model-experience.ts
2026-09-08 16:52:09 +08:00
imccyu 508831624f chore(web): assemble Sidebar domains and register workspace packages 2026-09-07 21:29:41 +08:00
Yichen Jiang 0eff068ec4 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-07 18:06:52 +08:00
Yichen Jiang 7af9c25737 refactor(app-boot): fold the patch-file parser and writer into app-boot
The `cordis.patch.yml` parser and the comment-preserving writer are the
Loader's format, not a mechanical primitive: they build on the include
plugin's dialect and the Loader's row types, which no other `util` package
does. They now live in `app-boot` as `src/patch-file.ts`, exported as
`@deepseek-ai/dsh-app-boot/patch-file` with its own bundle entry, so the
agent-preset roster and the plugin manager load them without the boot entry.
`dsh-patch-file` goes, with its README and catalog entries; `yaml` moves into
app-boot's dependencies.

A dozen plugin packages already depend on `dsh-app-boot`, so the roster
joining them costs nothing; the note records why the separate package was
tried and folded back.
2026-09-07 18:05:06 +08:00
ihsiang 9292dd8a2d feat(workspace): open the workspace in local apps from the web UI (#3409)
Add the first-party open-in-app host and client packages with a localized Open In menu in the Web Session header.

Resolve installed applications on macOS, Windows, and Linux, launch workspace directories through platform-specific adapters, and remember the selected application.

Closes #1500.

Co-authored-by: ihsiang <[email protected]>
2026-09-07 17:58:11 +08:00
Yichen Jiang 3af0c5f7fd Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	.agents/notes/implemented/architecture/2026-09-04-plugin-manager-over-the-profile-runtime.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-04-plugin-manager-over-the-profile-runtime.md
#	.agents/notes/implemented/architecture/2026-09-04-plugin-manager-over-the-profile-runtime.zh.md
#	packages/host/plugin-manager/README.i18n.yaml
#	packages/host/plugin-manager/README.md
#	packages/host/plugin-manager/README.zh.md
#	packages/host/plugin-manager/src/index.ts
#	packages/host/plugin-manager/tests/plugin-manager.spec.ts
2026-09-07 17:53:20 +08:00
Yichen Jiang 7b713ca83b refactor(plugin-manager): move plugin management out of the Web host
What plugin management does now lives in `dsh-plugin-manager`, a boot-group
package beside `app-boot`: `PluginInstaller` runs pnpm, probes, and judges new
packages over the profile on disk, and `PluginManager` adds every operation
over the booted tree, each refusal a `PluginOperationError` with a `plugins/*`
code and no Remote protocol attached. The manager reads the profile runtime,
the preset roster, and the running-agent count through per-call readers, and
the roster only as `PresetLayers`, so the package depends on neither the
roster nor the agent registry.

`dsh-host-plugin-manager` keeps `pluginManager` and the `plugins` Remote as a
relay: one Remote method per manager method, and one exhaustive switch
turning a failure into the Remote error of the same code (`plugins/bad-request`
into `gateway/bad-request`). Its `./types` re-exports the manager's types, so
`api-remotes` and the client import one vocabulary unchanged.

`dsh plugin add` and `remove` now run the installer instead of a bare pnpm
forwarder: every new package is probed, a package that declares neither a
bundle nor a plugin module is removed again with its reason, and newly
installed bundles are enabled as before. Other pnpm verbs still forward.
2026-09-07 17:47:08 +08:00
Yichen Jiang 6a3582fe93 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-07 16:32:08 +08:00
Yichen Jiang 42764971ca refactor(agent-presets): remove the global-tool-mask package nothing composes
`dsh-global-tool-mask` wrapped `tools.restrict()` as a composition row so a
preset's user patch layer could hide a host tool. No shipped preset, the
plugin manager, and the settings UI compose such a row, so the package had a
README, a test, and no consumer. It goes, with its `apps/cli` dependency,
its `tsconfig.host.json` reference, the README example that named it, and the
generated catalogs. `tools.restrict()` stays: subagent tool filters call it.

Hiding a host tool from one preset is a per-preset setting for the
scope-resolved settings of the next layer, not a hand-written row; the Agent
Note records the removal under alternatives considered.
2026-09-07 16:29:41 +08:00
Yichen Jiang 9f8373df2b Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.zh.md
2026-09-07 11:53:38 +08:00
Yichen Jiang c22d66ffd8 Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager 2026-09-07 11:46:01 +08:00
ChinesezjcandTianyi Cui 02a029e679 Feedback is recorded in the session log and delivered through DeepSeek
Co-authored-by: Tianyi Cui <[email protected]>
2026-09-05 23:21:22 +08:00
Yichen Jiang 54d5b2ff8b Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/boot/app-boot/src/probe.ts
2026-09-05 22:55:38 +08:00
Yichen Jiang 6f524b6d8c Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
# Conflicts:
#	apps/cli/src/profile-boot.ts
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	docs/subsystems/core.i18n.yaml
#	packages/boot/app-boot/README.i18n.yaml
#	packages/boot/app-boot/README.md
#	packages/boot/app-boot/README.zh.md
#	packages/boot/app-boot/package.json
#	packages/boot/app-boot/src/contained-group.ts
#	packages/boot/app-boot/src/index.ts
#	packages/boot/app-boot/src/probe.ts
#	packages/boot/app-boot/src/profile-runtime.ts
#	packages/boot/app-boot/tests/profile-runtime.spec.ts
#	packages/host/plugin-inventory/tests/inventory.spec.ts
#	pnpm-lock.yaml
#	scripts/verify-package-readme-model-experience.ts
#	tsconfig.base.json
2026-09-05 22:46:55 +08:00
Yichen Jiang 4d56cbc3d3 refactor(manifest): centralize package manifest types 2026-09-05 20:44:31 +08:00
Yichen Jiang a27cc229dc Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/api/remotes/src/client/index.ts
2026-09-05 16:11:43 +08:00