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}