import { Tool, } from "@anthropic-ai/sdk/resources/messages/messages.mjs"; import OpenAI from "openai"; export const convertContext = (tools: Tool[]): OpenAI.Chat.Completions.ChatCompletionTool[] => { return tools.map((tool) => { const functionDeclaration: OpenAI.Chat.Completions.ChatCompletionTool = { type: "function", function: { name: tool.name, description: tool.description, parameters: { type: "object", properties: {}, // TODO: Add properties required: [], // TODO: Add required fields }, strict: true, }, }; if (tool.input_schema) { // for required fields if (tool.input_schema.required) { if (functionDeclaration.function.parameters) { functionDeclaration.function.parameters.required = Array.isArray(tool.input_schema.required) ? tool.input_schema.required : []; } } } const properties: { [key: string]: { type: "string" | "number" | "integer" | "boolean" | "object" | "array"; description: string; }; } = {}; if (tool.input_schema?.properties && typeof tool.input_schema.properties === 'object') { for (const [key, value] of Object.entries(tool.input_schema.properties)) { properties[key] = { type: value.type, description: value.description, }; } } if (functionDeclaration.function.parameters) { functionDeclaration.function.parameters.properties = properties; } return functionDeclaration; }); }