| 303 | } |
| 304 | |
| 305 | function args(input: Record<string, unknown> | undefined) { |
| 306 | if (!input) return [] |
| 307 | const skip = new Set(["description", "query", "url", "filePath", "path", "pattern", "name"]) |
| 308 | return Object.entries(input) |
| 309 | .filter(([key]) => !skip.has(key)) |
| 310 | .flatMap(([key, value]) => { |
| 311 | if (typeof value === "string") return [`${key}=${value}`] |
| 312 | if (typeof value === "number") return [`${key}=${value}`] |
| 313 | if (typeof value === "boolean") return [`${key}=${value}`] |
| 314 | return [] |
| 315 | }) |
| 316 | .slice(0, 3) |
| 317 | } |
| 318 | |
| 319 | export function GenericTool(props: { |
| 320 | tool: string |