/** * @file esm-record-builders.ts * @description Functions that build standard records for ESM-loaded primitives. * * Unlike remote-mcp record-builders (which proxy to a remote server), these builders * create records for tools/resources/prompts that execute locally in-process. */ import { type PromptClassTokenRecord, type ResourceClassTokenRecord, type ToolClassTokenRecord } from '../../common'; import { type EsmPromptExecuteHandler, type EsmResourceReadHandler, type EsmToolExecuteHandler } from './esm-context-factories'; /** * Metadata for an ESM-loaded tool (simplified shape for tools loaded from packages). */ export interface EsmToolDefinition { name: string; description?: string; inputSchema?: Record; outputSchema?: unknown; execute: EsmToolExecuteHandler; } /** * Metadata for an ESM-loaded resource. */ export interface EsmResourceDefinition { name: string; description?: string; uri: string; mimeType?: string; read: EsmResourceReadHandler; } /** * Metadata for an ESM-loaded prompt. */ export interface EsmPromptDefinition { name: string; description?: string; arguments?: Array<{ name: string; description?: string; required?: boolean; }>; execute: EsmPromptExecuteHandler; } /** * Build a ToolClassTokenRecord for an ESM-loaded tool. * * Detects whether the tool's `inputSchema` is a Zod raw shape or JSON Schema * and routes accordingly: * - Zod shape → stored in `inputSchema` (converted by `getInputJsonSchema()`) * - JSON Schema → stored in `rawInputSchema` (used as-is) * * @param tool - ESM tool definition with execute function * @param namespace - Optional namespace prefix for the tool name * @returns Standard ToolClassTokenRecord for use with ToolInstance */ export declare function buildEsmToolRecord(tool: EsmToolDefinition, namespace?: string): ToolClassTokenRecord; /** * Build a ResourceClassTokenRecord for an ESM-loaded resource. * * @param resource - ESM resource definition with read function * @param namespace - Optional namespace prefix * @returns Standard ResourceClassTokenRecord */ export declare function buildEsmResourceRecord(resource: EsmResourceDefinition, namespace?: string): ResourceClassTokenRecord; /** * Build a PromptClassTokenRecord for an ESM-loaded prompt. * * @param prompt - ESM prompt definition with execute function * @param namespace - Optional namespace prefix * @returns Standard PromptClassTokenRecord */ export declare function buildEsmPromptRecord(prompt: EsmPromptDefinition, namespace?: string): PromptClassTokenRecord; //# sourceMappingURL=esm-record-builders.d.ts.map