cline-sdk
Version:
Comprehensive SDK for Cline - AI-powered development assistant with database integration, execution modes, and custom functions
95 lines • 2.49 kB
TypeScript
/**
* 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