Files
deepseek-harness/packages/host
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
..
2026-09-04 15:38:55 +08:00

description, kind
description kind
Package map for the web GUI host half: the HTTP and SPA servers, workspace-directory picking implementations, and the plugin inventory projection. package-group

host/ — web-GUI host half

English | 中文

Summary

The host/ group provides the web GUI's plain HTTP server, the SPA dist server that serves the built Web shell, the workspace-directory picking seam with its native, browse, and adaptive composition packages, the read-only plugin inventory projection, and the plugins Remote over the shared plugin manager. All eight packages are product packages; the browser transport lives in client/, and the composed application is apps/cli booting the dsh-base bundle that serves the web app under apps/web/. The picker backends replace one another behind the shared seam.

Table of Contents


Packages

Eight packages play the host roles; each package README owns its contract and configuration.

Package Role ctx key
webserver/ Browser HTTP server: named routes, upgrades, index taps, and the fallback seat ctx.webServer
frontend-static/ SPA dist server on the webserver fallback seat consumes ctx.webServer
directory-picker/ Workspace-directory picking seam: capability contract and error vocabulary ctx.directoryPicker
directory-picker-native/ Native-OS-chooser backend for operators at the host display registers ctx.directoryPicker
directory-picker-browse/ In-app directory-browser backend, including for remote clients registers ctx.directoryPicker
directory-picker-auto/ Host-adaptive chooser that mounts the matching backend at boot mounts a backend
plugin-inventory/ Read-only projection of current Loader entries Remote pluginInventory/list
plugin-manager/ The plugins Remote: a relay onto the shared plugin manager, mapping its failures onto Remote error codes ctx.pluginManager, Remote plugins/*

Start with the subsystem references for the transport and the workspace records, then the layering decision behind the Web client.

Dev Note

Working context for maintainers — click to expand

None.