v0.1.0: Electron 桌面端骨架 + pi SDK 聊天链路

This commit is contained in:
Rick Ye
2026-09-05 09:28:33 +08:00
commit 17110ee5ab
35 changed files with 5350 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
import { contextBridge, ipcRenderer } from 'electron'
import type { AgentUiEvent, SessionState } from '@shared/types'
export interface DesktopApi {
send: (text: string) => Promise<void>
steer: (text: string) => Promise<void>
stop: () => Promise<void>
getState: () => Promise<SessionState>
versions: () => Promise<{ app: string; electron: string; node: string; chrome: string }>
onEvent: (callback: (event: AgentUiEvent) => void) => () => void
}
const api: DesktopApi = {
send: (text) => ipcRenderer.invoke('agent:send', text),
steer: (text) => ipcRenderer.invoke('agent:steer', text),
stop: () => ipcRenderer.invoke('agent:stop'),
getState: () => ipcRenderer.invoke('agent:state'),
versions: () => ipcRenderer.invoke('app:versions'),
onEvent: (callback) => {
const listener = (_e: Electron.IpcRendererEvent, event: AgentUiEvent): void => callback(event)
ipcRenderer.on('agent:event', listener)
return () => {
ipcRenderer.removeListener('agent:event', listener)
}
}
}
contextBridge.exposeInMainWorld('api', api)