ai: add common tool runtime and built-in tools

This commit is contained in:
2026-05-10 22:52:48 +03:00
parent 32c35f54aa
commit 355ae8e5da
14 changed files with 2864 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
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 function getOpenAIResponsesTools(): any[] {
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();
}
}