* Converts OpenAI-format tools to VSCode Language Model tools. * Normalizes the JSON Schema to draft 2020-12 compliant format required by * GitHub Copilot's backend, converting type: ["T", "null"] to anyOf format. * @param tools Array of OpenAI ChatCompletionTool definitions * @returns Array of
(tools: OpenAI.Chat.ChatCompletionTool[])
| 22 | * @returns Array of VSCode LanguageModelChatTool definitions |
| 23 | */ |
| 24 | function convertToVsCodeLmTools(tools: OpenAI.Chat.ChatCompletionTool[]): vscode.LanguageModelChatTool[] { |
| 25 | return tools |
| 26 | .filter((tool) => tool.type === "function") |
| 27 | .map((tool) => ({ |
| 28 | name: tool.function.name, |
| 29 | description: tool.function.description || "", |
| 30 | inputSchema: tool.function.parameters |
| 31 | ? normalizeToolSchema(tool.function.parameters as Record<string, unknown>) |
| 32 | : undefined, |
| 33 | })) |
| 34 | } |
| 35 | |
| 36 | /** |
| 37 | * Handles interaction with VS Code's Language Model API for chat-based operations. |
no test coverage detected