Files
MyGoNavi/frontend/src/utils/aiToolRegistry.ts
tianqijiuyun-latiao 9364c48ef0 feat(i18n): 完善多模块多语言适配与发版验证
扩展前后端多语言文案与共享词典。增加多模块 i18n 回归测试与 guard。收口外部 SQL 菜单和弹窗多语言文案。
2026-06-17 13:17:33 +08:00

52 lines
1.5 KiB
TypeScript

import type { AIMCPToolDescriptor } from "../types";
import {
BUILTIN_AI_TOOL_INFO,
type AIChatToolDefinition,
type AIBuiltinToolInfo,
} from "./aiBuiltinToolInfo";
export {
BUILTIN_AI_TOOL_INFO,
type AIChatToolDefinition,
type AIBuiltinToolInfo,
} from "./aiBuiltinToolInfo";
export const BUILTIN_AI_TOOLS: AIChatToolDefinition[] = BUILTIN_AI_TOOL_INFO.map((item) => item.tool);
export const BUILTIN_AI_TOOL_NAME_SET = new Set<string>(
BUILTIN_AI_TOOL_INFO.map((item) => item.name),
);
type AIChatToolTranslator = (
key: string,
params?: Record<string, string>,
) => string;
export const buildMCPAIChatTools = (
tools: AIMCPToolDescriptor[],
t?: AIChatToolTranslator,
): AIChatToolDefinition[] =>
(tools || []).map((tool) => ({
type: "function",
function: {
name: tool.alias,
description:
tool.description ||
(t
? t("ai_chat.tools.mcp_fallback_description", {
serverName: tool.serverName,
toolName: tool.title || tool.originalName,
})
: `MCP tool ${tool.title || tool.originalName} provided by ${tool.serverName}`),
parameters:
tool.inputSchema && Object.keys(tool.inputSchema).length > 0
? tool.inputSchema
: { type: "object", properties: {} },
},
}));
export const buildAvailableAIChatTools = (
tools: AIMCPToolDescriptor[],
t?: AIChatToolTranslator,
): AIChatToolDefinition[] => [...BUILTIN_AI_TOOLS, ...buildMCPAIChatTools(tools, t)];