client-mcp/src/utils/convertContext.ts
2025-06-11 10:42:40 +05:30

58 lines
1.9 KiB
TypeScript

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;
});
}