import { CONFIG_KEYS, IPC_EVENTS } from '@runtime/lib/constants' import type { AutomationScript, ScriptSaveInput, ScriptExecutionResult } from '@src/lib/script-types' declare global { type ConfigKeys = `${CONFIG_KEYS}` // 定义每个通道的参数和返回值类型 interface IPCTypings { // 同步通信 [IPC_EVENTS.APP_MINIMIZE]: { params: [window: number] return: {success: boolean, error?: string} } [IPC_EVENTS.APP_MAXIMIZE]: { params: [window: number] return: {success: boolean, error?: string} } // 异步通信 [IPC_EVENTS.FILE_READ]: { params: [filePath: string] return: Promise<{success: boolean, data?: string, error?: string}> } [IPC_EVENTS.FILE_WRITE]: { params: [filePath: string, content: string] return: Promise<{success: boolean, error?: string}> } // 事件通信 [IPC_EVENTS.TIME_UPDATE]: { params: [time: string] return: void } [IPC_EVENTS.RENDERER_IS_READY]: { params: [] return: void } [IPC_EVENTS.CUSTOM_EVENT]: { params: [message: string] return: void } // Gateway 事件 [IPC_EVENTS.GATEWAY_EVENT]: { params: [event: any] return: void } [IPC_EVENTS.HOST_API_FETCH]: { params: [request: { path: string; method?: string; headers?: Record; body?: unknown }] return: Promise } // 任务事件 [IPC_EVENTS.TASK_PROGRESS]: { params: [payload: any]; return: void; } [IPC_EVENTS.TASK_STARTED]: { params: [payload: any]; return: void; } [IPC_EVENTS.TASK_COMPLETED]: { params: [payload: any]; return: void; } // 主题事件 [IPC_EVENTS.THEME_MODE_UPDATED]: { params: [isDark: boolean] return: void } [IPC_EVENTS.SET_THEME_MODE]: { params: [theme: ThemeMode] return: Promise // 返回 isDark } [IPC_EVENTS.GET_THEME_MODE]: { params: [] return: Promise } // 配置 [IPC_EVENTS.GET_CONFIG]: { params: [key: ConfigKeys] return: Promise } [IPC_EVENTS.SET_CONFIG]: { params: [key: ConfigKeys, value: any] return: Promise<{ success: boolean }> } // 脚本管理 [IPC_EVENTS.SCRIPT_LIST]: { params: [] return: Promise } [IPC_EVENTS.SCRIPT_GET]: { params: [id: string] return: Promise } [IPC_EVENTS.SCRIPT_SAVE]: { params: [input: ScriptSaveInput] return: Promise } [IPC_EVENTS.SCRIPT_DELETE]: { params: [id: string] return: Promise } [IPC_EVENTS.SCRIPT_TOGGLE]: { params: [id: string, enabled: boolean] return: Promise } [IPC_EVENTS.SCRIPT_RUN]: { params: [id: string] return: Promise } [IPC_EVENTS.SCRIPT_RECORD_START]: { params: [url?: string] return: Promise<{ success: boolean; code?: string; error?: string }> } [IPC_EVENTS.SCRIPT_RECORD_STOP]: { params: [] return: Promise<{ success: boolean; code?: string; error?: string }> } [IPC_EVENTS.SCRIPT_CODEGEN]: { params: [id: string, url?: string] return: Promise<{ success: boolean; code?: string; error?: string }> } // Gateway RPC (对齐 ClawX) [IPC_EVENTS.GATEWAY_RPC]: { params: [method: string, params?: any] return: Promise } } type TabId = string interface TabInfo { id: TabId url: string title: string isLoading: boolean canGoBack: boolean canGoForward: boolean } // 定义IPC API 接口 interface WindowApi { invoke(channel: T, ...args: IPCTypings[T]['params']): IPCTypings[T]['return'], invokeAsync(channel: T, ...args: IPCTypings[T]['params']): IPCTypings[T]['return'], on(channel: T, callback: (...args: IPCTypings[T]['params']) => void): () => void send(channel: T, ...args: IPCTypings[T]['params']): void, versions: NodeJS.ProcessVersions, external: { open: (url: string) => Promise }, platform: string; windowMinimize: () => void; windowMaximize: () => void; windowClose: () => void; windowIsMaximized: () => Promise; viewIsReady: () => void; app: { setFrameless: (route?: string) => Promise, loadPage: (page: string) => Promise }, readFile: (filePath: string) => Promise<{success: boolean, data?: string, error?: string}>, logger: { debug: (message: string, ...meta?: any[]) => void; info: (message: string, ...meta?: any[]) => void; warn: (message: string, ...meta?: any[]) => void; error: (message: string, ...meta?: any[]) => void; }, // 执行脚本 executeScript: (options: any) => Promise<{success: boolean, error?: string}>, // 任务事件 onTaskProgress: (cb: (payload: any) => void) => () => void; onTaskStarted: (cb: (payload: any) => void) => () => void; onTaskCompleted: (cb: (payload: any) => void) => () => void; // 打开渠道 openChannel: (channels: any) => Promise<{success: boolean, error?: string}>, // 脚本管理 scriptApi: { list: () => Promise, get: (id: string) => Promise, save: (input: ScriptSaveInput) => Promise, delete: (id: string) => Promise, toggle: (id: string, enabled: boolean) => Promise, run: (id: string) => Promise, startRecording: (url?: string) => Promise<{ success: boolean; code?: string; error?: string }>, stopRecording: () => Promise<{ success: boolean; code?: string; error?: string }>, codegen: (id: string, url?: string) => Promise<{ success: boolean; code?: string; error?: string }>, }, } interface Window { api: WindowApi; } type ThemeMode = 'dark' | 'light' | 'system'; // form 表单数据类型声明 interface LoginForm { username: string; password: string; randomStr: string; code: string; grant_type: string; scope: string; } // 弹窗类型定义 interface CreateDialogProps { winId?: string; title?: string; content: string; confirmText?: string; cancelText?: string; isModal?: boolean; onConfirm?: () => void; onCancel?: () => void; } interface CreateDialogueProps { messages: DialogueMessageProps[]; providerName: string; selectedModel: string; messageId: number; conversationId: number; } interface UniversalChunk { isEnd: boolean; result: string; usage?: any; } interface DialogueBackStream { messageId: number; data: UniversalChunk & { isError?: boolean }; } interface DialogueMessageProps { role: DialogueMessageRole; content: string; } }