UNPKG

cline-sdk

Version:

Comprehensive SDK for Cline - AI-powered development assistant with database integration, execution modes, and custom functions

95 lines 2.49 kB
/** * Function Registry - Register and manage custom functions for Cline * * This allows users to register their own JavaScript functions that can be * called by the AI assistant like built-in tools or MCP server functions. */ export interface FunctionParameter { name: string; type: "string" | "number" | "boolean" | "object" | "array"; description: string; required?: boolean; enum?: string[]; properties?: Record<string, FunctionParameter>; items?: FunctionParameter; } export interface FunctionDefinition { name: string; description: string; parameters: FunctionParameter[]; examples?: string[]; category?: string; } export interface RegisteredFunction { definition: FunctionDefinition; implementation: (...args: any[]) => Promise<any> | any; metadata: { registeredAt: Date; callCount: number; lastCalled?: Date; }; } export declare class FunctionRegistry { private functions; /** * Register a new custom function */ register(definition: FunctionDefinition, implementation: (...args: any[]) => Promise<any> | any): void; /** * Unregister a function */ unregister(name: string): boolean; /** * Call a registered function */ call(name: string, args: any[]): Promise<any>; /** * Get a function definition by name */ getFunction(name: string): RegisteredFunction | undefined; /** * Get all registered functions */ getAllFunctions(): RegisteredFunction[]; /** * Get function names */ getFunctionNames(): string[]; /** * Get functions by category */ getFunctionsByCategory(category: string): RegisteredFunction[]; /** * Get function metadata/stats */ getStats(): { totalFunctions: number; totalCalls: number; categories: Record<string, number>; mostUsed: { name: string; calls: number; } | null; }; /** * Clear all registered functions */ clear(): void; /** * Validate function definition */ private validateDefinition; /** * Convert to tool definition format for AI */ getToolDefinitions(): Array<{ name: string; description: string; inputSchema: any; }>; /** * Convert parameters to JSON schema format */ private parametersToSchema; } //# sourceMappingURL=function-registry.d.ts.map