feat(mcp): import Codex MCP from ~/.codex/config.toml

- Support both TOML schemas: [mcp.servers.<id>] and [mcp_servers.<id>]
- Non-destructive merge of imported servers (enabled=true only)
- Preserve existing TOML schema when syncing (prefer mcp_servers)
- Remove both mcp and mcp_servers when no enabled items

feat(ui): auto-import Codex MCP on panel init (app=codex)

chore(tauri): add import_mcp_from_codex command and register

chore(types): expose window.api.importMcpFromCodex and typings

fix(ui): remove unused variable for typecheck
This commit is contained in:
Jason
2025-10-10 14:59:02 +08:00
parent 428369cae0
commit 6cf7dacd0e
9 changed files with 214 additions and 27 deletions

14
src/vite-env.d.ts vendored
View File

@@ -1,6 +1,12 @@
/// <reference types="vite/client" />
import { Provider, Settings, CustomEndpoint, McpStatus, McpConfigResponse } from "./types";
import {
Provider,
Settings,
CustomEndpoint,
McpStatus,
McpConfigResponse,
} from "./types";
import { AppType } from "./lib/tauri-api";
import type { UnlistenFn } from "@tauri-apps/api/event";
@@ -77,7 +83,10 @@ declare global {
id: string,
spec: Record<string, any>,
) => Promise<boolean>;
deleteMcpServerInConfig: (app: AppType | undefined, id: string) => Promise<boolean>;
deleteMcpServerInConfig: (
app: AppType | undefined,
id: string,
) => Promise<boolean>;
setMcpEnabled: (
app: AppType | undefined,
id: string,
@@ -86,6 +95,7 @@ declare global {
syncEnabledMcpToClaude: () => Promise<boolean>;
syncEnabledMcpToCodex: () => Promise<boolean>;
importMcpFromClaude: () => Promise<number>;
importMcpFromCodex: () => Promise<number>;
testApiEndpoints: (
urls: string[],
options?: { timeoutSecs?: number },