| import 'reflect-metadata'; | |
| export function Tool(params: { | |
| description: string; | |
| dataSchema: Array<{ key: string; type: string; description: string }>; | |
| }) { | |
| return function (target: any, propertyKey: string | symbol) { | |
| // Retrieve existing metadata or initialize an empty array | |
| const existingMetadata = Reflect.getMetadata('custom:tool', target) || []; | |
| // Add the metadata information for this method | |
| existingMetadata.push({ methodName: propertyKey, ...params }); | |
| // Define metadata on the class prototype (so it can be retrieved from the class) | |
| Reflect.defineMetadata('custom:tool', existingMetadata, target); | |
| }; | |
| } | |