/** * ChatLab API 服务 Preload API (hierarchical data source model) */ import { ipcRenderer, type IpcRendererEvent } from 'electron' export interface ApiServerConfig { enabled: boolean port: number token: string createdAt: number } export interface ApiServerStatus { running: boolean port: number | null startedAt: number | null error: string | null } export const apiServerApi = { // ==================== API 服务管理 ==================== getConfig: (): Promise => { return ipcRenderer.invoke('api:getConfig') }, getStatus: (): Promise => { return ipcRenderer.invoke('api:getStatus') }, setEnabled: (enabled: boolean): Promise => { return ipcRenderer.invoke('api:setEnabled', enabled) }, setPort: (port: number): Promise => { return ipcRenderer.invoke('api:setPort', port) }, regenerateToken: (): Promise => { return ipcRenderer.invoke('api:regenerateToken') }, onStartupError: (callback: (data: { error: string }) => void): (() => void) => { const handler = (_event: IpcRendererEvent, data: { error: string }) => callback(data) ipcRenderer.on('api:startupError', handler) return () => ipcRenderer.removeListener('api:startupError', handler) }, onImportCompleted: (callback: () => void): (() => void) => { const handler = () => callback() ipcRenderer.on('api:importCompleted', handler) return () => ipcRenderer.removeListener('api:importCompleted', handler) }, }