import { invoke } from "@tauri-apps/api/core"; import type { McpConfigResponse, McpServer, McpServerSpec, McpStatus, } from "@/types"; import type { AppType } from "./types"; export const mcpApi = { async getStatus(): Promise { return await invoke("get_claude_mcp_status"); }, async readConfig(): Promise { return await invoke("read_claude_mcp_config"); }, async upsertServer( id: string, spec: McpServerSpec | Record, ): Promise { return await invoke("upsert_claude_mcp_server", { id, spec }); }, async deleteServer(id: string): Promise { return await invoke("delete_claude_mcp_server", { id }); }, async validateCommand(cmd: string): Promise { return await invoke("validate_mcp_command", { cmd }); }, async getConfig(app: AppType = "claude"): Promise { return await invoke("get_mcp_config", { app }); }, async importFromClaude(): Promise { return await invoke("import_mcp_from_claude"); }, async importFromCodex(): Promise { return await invoke("import_mcp_from_codex"); }, async upsertServerInConfig( app: AppType, id: string, spec: McpServer, options?: { syncOtherSide?: boolean }, ): Promise { const payload = { app, id, spec, ...(options?.syncOtherSide !== undefined ? { syncOtherSide: options.syncOtherSide } : {}), }; return await invoke("upsert_mcp_server_in_config", payload); }, async deleteServerInConfig( app: AppType, id: string, options?: { syncOtherSide?: boolean }, ): Promise { const payload = { app, id, ...(options?.syncOtherSide !== undefined ? { syncOtherSide: options.syncOtherSide } : {}), }; return await invoke("delete_mcp_server_in_config", payload); }, async setEnabled( app: AppType, id: string, enabled: boolean, ): Promise { return await invoke("set_mcp_enabled", { app, id, enabled }); }, async syncEnabledToClaude(): Promise { return await invoke("sync_enabled_mcp_to_claude"); }, async syncEnabledToCodex(): Promise { return await invoke("sync_enabled_mcp_to_codex"); }, };