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
+49
View File
@@ -0,0 +1,49 @@
import { BrowserWindow, ipcMain } from 'electron'
import { AgentService } from './pi/agent-service'
/**
* 注册 IPC 通道并把 agent 事件转发到所有渲染窗口。
* 返回 service 实例供入口进程使用。
*/
export function registerIpc(): AgentService {
const service = new AgentService()
service.onEvent((event) => {
for (const win of BrowserWindow.getAllWindows()) {
if (!win.isDestroyed()) {
win.webContents.send('agent:event', event)
}
}
})
ipcMain.handle('agent:send', (_event, text: unknown) => {
if (typeof text !== 'string' || !text.trim()) {
throw new Error('empty prompt')
}
return service.send(text)
})
ipcMain.handle('agent:steer', (_event, text: unknown) => {
if (typeof text !== 'string' || !text.trim()) {
throw new Error('empty steer text')
}
return service.steer(text)
})
ipcMain.handle('agent:stop', () => service.stop())
ipcMain.handle('agent:state', () =>
service.getState().catch((err: unknown) => {
throw new Error(err instanceof Error ? err.message : String(err))
})
)
ipcMain.handle('app:versions', () => ({
app: process.env.npm_package_version ?? '0.0.0',
electron: process.versions.electron,
node: process.versions.node,
chrome: process.versions.chrome
}))
return service
}