import { type FrontendToolDescriptorV1, type FrontendToolManifestV1, type JsonSchemaV1, type SpotlightToolResultEnvelope, type ToolReplayPolicyV1, type ToolRiskLevelV1, type ToolSideEffectV1, type ToolTierV1 } from "@inupedia/spotlight-protocol"; export declare const CLIENT_TOOL_META: unique symbol; export interface ClientToolSchemaOverride { input: JsonSchemaV1; output?: JsonSchemaV1; } export interface ClientToolOptions { /** Escape hatch for types the build plugin cannot safely infer. */ schema?: ClientToolSchemaOverride; version?: string; /** * What the runtime must guarantee before dispatching this tool. Declare it * directly; the legacy fields below only exist to keep older call sites * working and are derived from each other when `tier` is omitted. */ tier?: ToolTierV1; sideEffect?: ToolSideEffectV1; replayPolicy?: ToolReplayPolicyV1; riskLevel?: ToolRiskLevelV1; requiresConfirmation?: boolean; maxOutputBytes?: number; namespace?: string; deferLoading?: boolean; resource?: FrontendToolDescriptorV1["resource"]; } export interface GeneratedClientToolMeta extends ClientToolOptions { name: string; description: string; schema: ClientToolSchemaOverride; } export type ClientToolHandler = (input: TInput) => TOutput | Promise; export type ClientTool = ClientToolHandler & { readonly [CLIENT_TOOL_META]: GeneratedClientToolMeta; }; export interface DefineToolOptions extends ClientToolOptions { name: string; description: string; schema: ClientToolSchemaOverride; handler: ClientToolHandler; } export declare class SpotlightToolValidationError extends Error { readonly code: "TOOL_INPUT_INVALID" | "TOOL_OUTPUT_INVALID"; readonly issues: Array<{ path: string; message: string; }>; constructor(code: "TOOL_INPUT_INVALID" | "TOOL_OUTPUT_INVALID", message: string, issues: Array<{ path: string; message: string; }>); } /** * Define a browser-side tool. Name, JSDoc and schemas are injected by the * Spotlight Vite plugin. Pass `schema` only as an explicit inference escape hatch. */ export declare function defineClientTool(handler: ClientToolHandler, options?: ClientToolOptions | GeneratedClientToolMeta): ClientTool; /** Framework/build-tool neutral Tool definition for non-Vite and generated capabilities. */ export declare function defineTool(options: DefineToolOptions): ClientTool; export declare function getClientToolDescriptor(tool: ClientTool): FrontendToolDescriptorV1; export declare function createClientToolRegistry(tools: readonly ClientTool[]): { descriptors: FrontendToolDescriptorV1[]; has(name: string): boolean; execute(name: string, input: unknown): Promise; executeResult(name: string, input: unknown): Promise; }; export declare function createClientToolManifest(options: { projectId: string; frontendBuildId: string; tools: readonly ClientTool[]; }): Promise; //# sourceMappingURL=clientTool.d.ts.map