This commit completes stage 4 of the refactoring plan, focusing on cleanup and optimization of the modernized codebase. ## Key Changes ### Code Cleanup - Remove legacy `src/lib/styles.ts` (no longer needed) - Remove old modal components (`ImportProgressModal.tsx`, `ProviderList.tsx`) - Streamline `src/lib/tauri-api.ts` from 712 lines to 17 lines (-97.6%) - Remove global `window.api` pollution - Keep only event listeners (`tauriEvents.onProviderSwitched`) - All API calls now use modular `@/lib/api/*` layer ### Type System - Clean up `src/vite-env.d.ts` (remove 156 lines of outdated types) - Remove obsolete global type declarations - All TypeScript checks pass with zero errors ### Code Formatting - Format all source files with Prettier (82 files) - Fix formatting issues in 15 files: - App.tsx and core components - MCP management components - Settings module components - Provider management components - UI components ### Documentation Updates - Update `REFACTORING_CHECKLIST.md` with stage 4 progress - Mark completed tasks in `REFACTORING_MASTER_PLAN.md` ## Impact **Code Reduction:** - Total: -1,753 lines, +384 lines (net -1,369 lines) - tauri-api.ts: 712 → 17 lines (-97.6%) - Removed styles.ts: -82 lines - Removed vite-env.d.ts declarations: -156 lines **Quality Improvements:** - ✅ Zero TypeScript errors - ✅ Zero TODO/FIXME comments - ✅ 100% Prettier compliant - ✅ Zero `window.api` references - ✅ Fully modular API layer ## Testing - [x] TypeScript compilation passes - [x] Code formatting validated - [x] No linting errors Stage 4 completion: 100% Ready for stage 5 (testing and bug fixes)
94 lines
2.3 KiB
TypeScript
94 lines
2.3 KiB
TypeScript
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<McpStatus> {
|
|
return await invoke("get_claude_mcp_status");
|
|
},
|
|
|
|
async readConfig(): Promise<string | null> {
|
|
return await invoke("read_claude_mcp_config");
|
|
},
|
|
|
|
async upsertServer(
|
|
id: string,
|
|
spec: McpServerSpec | Record<string, any>,
|
|
): Promise<boolean> {
|
|
return await invoke("upsert_claude_mcp_server", { id, spec });
|
|
},
|
|
|
|
async deleteServer(id: string): Promise<boolean> {
|
|
return await invoke("delete_claude_mcp_server", { id });
|
|
},
|
|
|
|
async validateCommand(cmd: string): Promise<boolean> {
|
|
return await invoke("validate_mcp_command", { cmd });
|
|
},
|
|
|
|
async getConfig(app: AppType = "claude"): Promise<McpConfigResponse> {
|
|
return await invoke("get_mcp_config", { app });
|
|
},
|
|
|
|
async importFromClaude(): Promise<number> {
|
|
return await invoke("import_mcp_from_claude");
|
|
},
|
|
|
|
async importFromCodex(): Promise<number> {
|
|
return await invoke("import_mcp_from_codex");
|
|
},
|
|
|
|
async upsertServerInConfig(
|
|
app: AppType,
|
|
id: string,
|
|
spec: McpServer,
|
|
options?: { syncOtherSide?: boolean },
|
|
): Promise<boolean> {
|
|
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<boolean> {
|
|
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<boolean> {
|
|
return await invoke("set_mcp_enabled", { app, id, enabled });
|
|
},
|
|
|
|
async syncEnabledToClaude(): Promise<boolean> {
|
|
return await invoke("sync_enabled_mcp_to_claude");
|
|
},
|
|
|
|
async syncEnabledToCodex(): Promise<boolean> {
|
|
return await invoke("sync_enabled_mcp_to_codex");
|
|
},
|
|
};
|