New top-level packages/cordis/ group with the self-referential toolset: cordis_inspect (services / plugin tree / tools / dynamic mounts / api / events, the api section intersecting the generated catalog with the live service store), cordis_mount (model-written code evaluated in a node:vm sandbox, mounted under one cordis-dynamic group fiber as dyn-<n>), cordis_unmount (awaited disposal to quiescence). Boundary mechanisms: dual-realm instanceof, JSON realm normalization of dynamic tool results, marker-guarded registration, SchemaSpec teaching errors, parse failures surfaced with the offending line + caret and a line-scoped TypeScript hint, and the unmount-first recipe on tool-name collisions. Config: vmTimeoutMs (schemastery, default 5000). Design record: docs/rfc/implemented/feature/2026-07-08-self-referential-cordis-toolset.md. The tool-catalog boot manifest, its regenerated output, and the pinned tool-name list land here rather than with the other repo registration: the completeness guard globs packages/*/tool-* and fails the generator (and the core/tools spec) the moment the package directory exists.
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
/**
|
|
* ACP render intents for the three cordis tools — all `generic` cards, decided
|
|
* up front as part of the tool design. Presenters are pure functions of the
|
|
* call arguments (they run on replay too): no I/O, no session state, no clock.
|
|
* No `presentResult` overrides exist — the tools' text results are their
|
|
* correct completed rendering.
|
|
*
|
|
* @module @deepseek-ai/dsh-tool-cordis/present
|
|
*/
|
|
|
|
import type { GenericCallView } from '@deepseek-ai/dsh-tools'
|
|
|
|
/**
|
|
* The `cordis_inspect` call card: a read, titled with the requested section.
|
|
* @param args - the validated call arguments.
|
|
* @returns the generic card the ACP bridge renders.
|
|
*/
|
|
export function presentInspectCall(args: { what?: string }): GenericCallView {
|
|
return {
|
|
card: 'generic',
|
|
kind: 'read',
|
|
title: args.what === undefined ? 'Inspect cordis runtime' : `Inspect cordis runtime: ${args.what}`,
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The `cordis_mount` call card: an execute carrying the mount code as raw input.
|
|
* @param args - the validated call arguments.
|
|
* @returns the generic card the ACP bridge renders.
|
|
*/
|
|
export function presentMountCall(args: { code: string }): GenericCallView {
|
|
return {
|
|
card: 'generic',
|
|
kind: 'execute',
|
|
title: 'Mount plugin into live cordis runtime',
|
|
rawInput: { code: args.code },
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The `cordis_unmount` call card: a delete, titled with the mount id.
|
|
* @param args - the validated call arguments.
|
|
* @returns the generic card the ACP bridge renders.
|
|
*/
|
|
export function presentUnmountCall(args: { id: string }): GenericCallView {
|
|
return {
|
|
card: 'generic',
|
|
kind: 'delete',
|
|
title: `Unmount ${args.id}`,
|
|
}
|
|
}
|