main
1import { TSchema } from "@sinclair/typebox";
2
3// eslint-disable-next-line @typescript-eslint/no-explicit-any
4export interface Tool<T = any> {
5 name: string;
6 description: string;
7 parameters: TSchema;
8 execute: (args: T) => Promise<string>;
9}
10
11export interface ToolRegistry {
12 // eslint-disable-next-line @typescript-eslint/no-explicit-any
13 tools: Map<string, Tool<any>>;
14 // eslint-disable-next-line @typescript-eslint/no-explicit-any
15 register: (tool: Tool<any>) => void;
16 // eslint-disable-next-line @typescript-eslint/no-explicit-any
17 get: (name: string) => Tool<any> | undefined;
18 // eslint-disable-next-line @typescript-eslint/no-explicit-any
19 list: () => Tool<any>[];
20 getSchemas: () => Array<{
21 name: string;
22 description: string;
23 parameters: TSchema;
24 }>;
25}