-
Notifications
You must be signed in to change notification settings - Fork 1
Plugin Inventory
Upstream plugin state projection and composition viewer — why Edge's settings page shows no plugin list.
No dedicated upstream documentation page. Packages:
@deepseek-ai/dsh-host-plugin-inventory+@deepseek-ai/dsh-cordis-host-runner
Two packages work together to expose the runtime plugin graph to the browser:
-
dsh-host-plugin-inventory — a read-only Typert Remote projection of the current cordis Loader plugin state. Exposes a
pluginInventory/listendpoint that returns every loaded package, its version, trust level, and active status.- dsh-cordis-host-runner — the dynamic package definition registry that manages host-half sandbox lifecycle and invoke handlers for model-mounted dual-half packages. Provides the runtime that the inventory reads from.
The client plugin dsh-client-ui-agent-preset (included in Edge's 33-plugin bundle) consumes this data to render the preset composition viewer and plugin list in the settings page.
Not implemented. Neither package is installed. The effects are:
- The settings page plugin list section is empty — the client calls
pluginInventory/listvia Typert Remote but the server has no provider, so the gateway returns an error.- Edge hardcodes a single preset
'dsh-edge'inedge-api.ts. TheagentPresets.listhandler returns one preset withtrust: 'system',authorable: false,hasDocument: false. - The
agentPresets.readhandler generates a synthetic YAML description of the Edge composition from runtime state (installed plugins, deployment profile, model config).
- Edge hardcodes a single preset
Edge uses static assembly instead of dynamic loading. All plugins are pre-built at deploy time by assemble-standalone-web.mjs, verified against expected-boot-graph.json, and served as Cloudflare Assets. There is no cordis Loader, no runtime package discovery, and no per-session preset switching. The plugin inventory service has nothing to read from because the loading infrastructure it depends on doesn't exist.
This is a deliberate architectural choice: static assembly eliminates cold-start plugin resolution, keeps the bundle deterministic, and avoids dynamic import() which is restricted in Workers.
| Component | Status | Edge Approach |
|---|---|---|
| dsh-host-plugin-inventory | 🚫 Not installed | No loader to read from |
| dsh-cordis-host-runner | 🚫 Not installed | No dynamic packages |
| dsh-client-ui-agent-preset | ✅ In bundle | Shows hardcoded 'dsh-edge' preset |
| agentPresets API | Single preset, no YAML files |
Key observation: The plugin inventory gap is a consequence of Edge's static assembly model — not a missing feature to fix. Installing the inventory service requires the dynamic loader infrastructure, which conflicts with Edge's deterministic bundle approach. The path forward is not to add dynamic loading, but to provide a static inventory projection that reports the build-time plugin list.
Evaluate static plugin inventory projection. A lightweight adapter could read the build-time plugin list (from
expected-boot-graph.jsonor the assembled manifest) and expose it as a Typert Remote endpoint, so the settings page shows the current composition without needing the full dynamic loader. This would satisfy thepluginInventory/listclient call without changing the static assembly model. All plans.
Relationship to Agent Presets (#43). If Edge ever supports multiple presets (different tool sets per session), the inventory and loader infrastructure would need to be reconsidered. See #43 for the preset system spike.
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发