diff --git a/package.json b/package.json index 99e9315..290a729 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.2.0", "description": "Fork de WebMCP con registro dinamico de herramientas - Nucleo Rio Frio", "main": "src/websocket-server.js", + "types": "src/webmcp.d.ts", "bin": { "@nucleoriofrio/webmcp": "./build/index.js" }, diff --git a/src/webmcp.d.ts b/src/webmcp.d.ts new file mode 100644 index 0000000..ae5628e --- /dev/null +++ b/src/webmcp.d.ts @@ -0,0 +1,52 @@ +export interface WebMCPOptions { + color?: string; + position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'; + size?: string; + padding?: string; + inactivityTimeout?: number; +} + +export interface ToolInputSchema { + type: string; + properties: Record; + required?: string[]; +} + +export interface ResourceOptions { + uri?: string; + uriTemplate?: string; + mimeType?: string; +} + +export interface PromptArgument { + name: string; + description?: string; + required?: boolean; +} + +export type ToolHandler = (args: any) => string | object | Promise; +export type PromptHandler = (args: any) => object | Promise; +export type ResourceHandler = (uri: string) => object | Promise; + +declare class WebMCP { + readonly isConnected: boolean; + readonly isExpanded: boolean; + + constructor(options?: WebMCPOptions); + + connect(connectionToken: string): Promise; + disconnect(): void; + + registerTool(name: string, description: string, schema: ToolInputSchema, executeFn: ToolHandler): void; + unregisterTool(name: string): void; + unregisterAllTools(): void; + + registerPrompt(name: string, description: string, args: PromptArgument[], executeFn: PromptHandler): void; + unregisterPrompt(name: string): void; + + registerResource(name: string, description: string, options: ResourceOptions, provideFn: ResourceHandler): void; + unregisterResource(name: string): void; +} + +export default WebMCP; +export { WebMCP };