description: "Host half of dynamic Cordis packages for agents and maintainers choosing, composing, or debugging the registry, sandbox, and run round trip."
English | 中文
dsh-cordis-host-runner exposes runtime inspection and keeps process-local dynamic definitions available to programmatic callers and browser controls. Host halves run in a node:vm realm; browser halves use the Client runner and approval UI. Definitions disappear on restart. Agents discover APIs through tool-cordis and install persistent bundles through Plugin Manager; no model tool creates dynamic definitions.
Mount this plugin for the inspection registry or programmatic dynamic-package lifecycle. Browser lifecycle consumers also require the Client runner and UI package. The shipped Creator workflow uses installed bundles instead of this definition registry.
- name: '@deepseek-ai/dsh-cordis-host-runner'
config:
vmTimeoutMs: 5000
| Field | Default | Meaning |
|---|---|---|
vmTimeoutMs |
5000 |
Milliseconds the synchronous portion of a host half may run in the vm before evaluation is aborted |
The generated configuration catalog is the exhaustive source for every accepted field.
Programmatic callers use define, run, stop, and undefine; the browser panel operates existing definitions. Host-only packages activate in this process. A package with a browser half waits for approval or cancellation, then loads Host before Client. mode: "run" starts the current version; mode: "update" replaces it. Stop disposes the live effects and retains the definition; undefine also forgets it.
Definitions are session-scoped and process-local: other sessions read them as absent, and restart clears them. Historical logs retain tool arguments and receipts but do not restore the registry. Reloading a browser page requires another explicit run to load its Client half.
The sandbox isolates globals but is not a security boundary: Node globals are absent or redirect to Cordis services (ctx.fs, ctx.web, ctx.bash, the timer helpers), and a host half receives a façade without framework internals, yet the services it declares reach the live runtime. Treat a dynamic package like bash access — see the self-referential toolset Agent Note.
Read these pages when the package-level contract is not enough. They move from the runner to the tools that call it, the browser half that answers it, and the generated surface.
ctx.cordisInspect and ctx.dynamicCordisRunner API and cordis/* events.This package registers no tool or prompt. Programmatic run calls and browser controls can steer the owning session with outcomes and diagnostics; stop and remove gestures inject a user message. Shipped model tools cannot create or update dynamic definitions.
Conditional and data-dependent: messages arrive only when an event occurs, and each carries a bounded description of what happened; there is no fixed per-request cost.
None of its own. A host half that registers tools changes the next request's tool view, which invalidates prefix reuse from the first changed schema token; running or stopping a package with no tool registrations is prefix-neutral.
These limits define when the runner needs special care. They are current package constraints, not a task backlog.
vmTimeoutMs bounds only synchronous evaluation — an async host-half body escapes it, matching the toolset's cooperative trust stance.accepted: false) and the request stays answerable until another page answers or the caller cancels; the browser half does not read the acknowledgement.inject is read from the plugin it returns in the page, so cordis/request-run carries metadata only, never code or service lists.zod is a runtime dependency of the generated Typert faces, not of src — ./typert and ./remote resolve to unbundled lib files with a bare import { z } from 'zod', so the package declares it even though nothing in src imports zod.Runtime invariant: No companion is published. The definition registry is process memory with no event stream to observe, and its one owned relation (a running definition owns a settled host-half fiber and its handler table) is established and unwound inside single awaited verbs, so package tests assert it directly.