packages/extensions

September 6, 2026 · View on GitHub

English | 中文

Summary

The extensions group lets a running agent modify the runtime it runs inside: the model can inspect the plugins and services loaded in the current DSH process, define a dynamic Cordis package (with a host half, a browser half, or both), run it, stop it, and remove it, and a browser panel operates every definition. Packages evolve by plugin: a plugin holds immutable package versions and can run or update between them. Definitions live only in process memory, so a DSH restart clears them and nothing here writes repository files or configuration. Four packages form the subsystem: the model-facing tools plus the host runner, and the browser runner plus the browser UI.

Table of Contents


Packages

PackageRolectx key
tool-cordisSeven model-facing tools: inspect the live runtime, define, run, stop, and remove dynamic packagesregisters on ctx.tools
cordis-host-runnerHost half: definition registry, sandboxed host-half lifecycle, and the inspect registry browser queries answerprovides ctx.dynamicCordisRunner and ctx.cordisInspect
cordis-client-runnerBrowser half: evaluates a browser-half source into a live plugin and answers run requestsclient face; provides browser ctx.dynamicCordisRunner
ui-cordisBrowser surfaces: the frame-wide panel, lifecycle tool cards, and the @pluginId input sourceclient face; registers slots


Dev Note

Working context for maintainers — click to expand

The two browser-half packages live in this group rather than under packages/client/ because they are halves of this subsystem's dual-half packages; the client face compiles them through the client program, while the host program references only the host runner.