import type { AgentUiContext } from "@inupedia/spotlight-protocol"; import { type AgentTool, type ToolContextHint } from "./agentRegistry.js"; export type ToolFieldSchema = { type: "string" | "number" | "boolean"; enum?: readonly (string | number | boolean)[]; optional?: boolean; description?: string; }; export type HostEffectConfig = { type: string; target?: string | ((input: TInput) => string | undefined); payload?: Record | ((input: TInput) => Record); }; /** * Declarative tool registration for consumer `service` modules. * Spotlight only executes; domain context / availability are supplied by the app. */ export type AgentToolDef> = { name: string; displayName?: string; description: string; input?: Record; invoke: (input: TInput) => Promise; host?: HostEffectConfig; contextHint?: ToolContextHint; isAvailable?: (ctx: AgentUiContext) => boolean; requires?: string[]; exposeToLoop?: boolean; executionMode?: "serial" | "parallel-safe"; recovery?: AgentTool["recovery"]; summarizeResult?: AgentTool["summarizeResult"]; runtimeOnly?: boolean; executionTarget?: "host" | "runtime"; }; export declare function hostEffect(config: HostEffectConfig): Pick, "executionTarget" | "buildHostEffect">; export declare function defineAgentTool = Record>(def: AgentToolDef): void; //# sourceMappingURL=defineAgentTool.d.ts.map