/** * Composition-root projector: declarative CommandSpecs → plain RuntimeCommandInventory. * * Built once from the same host/Tool surfaces used for mounting and scope * indexing so MCP runtime wiring never retains live handlers or CLI closures. * MCP cannot import this module (layer DAG); it only reads `scope.runtimeCommands`. */ import { type RuntimeCommandInventory, type RuntimeCommandInventoryLimits, type ToolPluginManifest, type ToolProvenance, type ToolRegistry } from '@opensip-cli/core'; import type { HostSubcommandGroup, ToolPluginGroup } from '../commands/host-subcommand-groups.js'; /** Inputs for one complete host+Tool inventory projection. */ export interface BuildRuntimeCommandInventoryInput { readonly toolRegistry: ToolRegistry; /** Opaque validated command specs (Tool or host context); read via own-data only. */ readonly toolCommandSpecs: readonly object[]; readonly hostSpecs: readonly object[]; readonly hostGroups: readonly HostSubcommandGroup[]; readonly toolPluginGroups: readonly ToolPluginGroup[]; readonly manifests?: readonly ToolPluginManifest[]; readonly provenance?: readonly ToolProvenance[]; /** Injected limits for unit tests; production uses core production caps. */ readonly limits?: RuntimeCommandInventoryLimits; } /** * Project the complete mounted command surface into a plain frozen inventory. * Fail-closed on duplicate paths, caps, accessors, and invalid specs. */ export declare function buildRuntimeCommandInventory(input: BuildRuntimeCommandInventoryInput): RuntimeCommandInventory; //# sourceMappingURL=build-runtime-command-inventory.d.ts.map