import {AiTool} from "./tool-types"; import {AiProvider} from "../model/ai-provider"; import {getTools} from "./tools/registry"; export type AiProviderName = "ollama" | "openai" | "gemini" | "mistral"; export function getOllamaTools(): AiTool[] { return getTools(); } export function getOpenAITools(): AiTool[] { return getTools().map(tool => ({ type: "function", function: tool.function, })); } export type OpenAiResponseTool = { type: "function"; name: string; description?: string; parameters?: unknown; strict: false; }; export function getOpenAIResponsesTools(): OpenAiResponseTool[] { return getTools().map(tool => ({ type: "function", name: tool.function.name, description: tool.function.description, parameters: tool.function.parameters, strict: false, })); } export function getMistralTools(): AiTool[] { return getTools().map(tool => ({ type: "function", function: tool.function, })); } export type GeminiTool = { functionDeclarations: Array<{ name: string; description?: string; parametersJsonSchema?: unknown; }>; } export function getGeminiTools(): GeminiTool[] { const functionDeclarations = getTools().map(tool => ({ name: tool.function.name, description: tool.function.description, parametersJsonSchema: tool.function.parameters, })); return functionDeclarations.length ? [{functionDeclarations}] : []; } export function getProviderTools(provider: AiProvider): AiTool[] { switch (provider) { case AiProvider.OLLAMA: return getOllamaTools(); case AiProvider.GEMINI: return getTools(); case AiProvider.MISTRAL: return getMistralTools(); case AiProvider.OPENAI: return getOpenAITools(); } }