v0.6.0: beautifului 整合 + 会话/工作区/队列/权限/命令/附件全链路

- beautifului.dev 组件直连:Sidebar Nav、Tool Chips、Approval Card(抽屉化)、Streaming/Thinking、Code Block、Selection Actions、Prompt Bar、Search
This commit is contained in:
Rick Ye
2026-09-06 09:57:14 +08:00
parent 3c2e9e96c5
commit a5951849c8
96 changed files with 11828 additions and 4649 deletions
+36 -3
View File
@@ -1,18 +1,51 @@
import { contextBridge, ipcRenderer } from 'electron'
import type { AgentUiEvent, AppSettings, ModelCatalog, SessionMeta, SessionState } from '@shared/types'
import type {
AgentUiEvent,
AppSettings,
AttachmentInfo,
ChatResources,
ModelCatalog,
PermissionMode,
SendImage,
SessionMeta,
SessionState,
WorkspaceFile,
WorkspaceMeta
} from '@shared/types'
const api = {
send: (text: string): Promise<void> => ipcRenderer.invoke('agent:send', text),
// 窗口控制(自绘标题栏按钮)
minimize: (): Promise<void> => ipcRenderer.invoke('win:minimize'),
toggleMaximize: (): Promise<void> => ipcRenderer.invoke('win:toggleMaximize'),
close: (): Promise<void> => ipcRenderer.invoke('win:close'),
onWindowState: (callback: (maximized: boolean) => void): (() => void) => {
const listener = (_e: Electron.IpcRendererEvent, maximized: boolean): void => callback(maximized)
ipcRenderer.on('win:state', listener)
return () => {
ipcRenderer.removeListener('win:state', listener)
}
},
send: (text: string, images?: SendImage[]): Promise<void> => ipcRenderer.invoke('agent:send', text, images),
steer: (text: string): Promise<void> => ipcRenderer.invoke('agent:steer', text),
stop: (): Promise<void> => ipcRenderer.invoke('agent:stop'),
getState: (): Promise<SessionState> => ipcRenderer.invoke('agent:state'),
versions: (): Promise<{ app: string; electron: string; node: string; chrome: string }> =>
versions: (): Promise<{ app: string; electron: string; node: string; chrome: string; user: string }> =>
ipcRenderer.invoke('app:versions'),
listSessions: (): Promise<SessionMeta[]> => ipcRenderer.invoke('sessions:list'),
newSession: (): Promise<void> => ipcRenderer.invoke('sessions:new'),
openSession: (path: string): Promise<void> => ipcRenderer.invoke('sessions:open', path),
renameSession: (name: string): Promise<void> => ipcRenderer.invoke('sessions:rename', name),
deleteSession: (path: string): Promise<void> => ipcRenderer.invoke('sessions:delete', path),
listWorkspaces: (): Promise<WorkspaceMeta[]> => ipcRenderer.invoke('workspaces:list'),
createWorkspace: (name: string): Promise<WorkspaceMeta> => ipcRenderer.invoke('workspaces:create', name),
openWorkspace: (path: string): Promise<void> => ipcRenderer.invoke('workspaces:open', path),
browseWorkspace: (): Promise<string | null> => ipcRenderer.invoke('workspaces:browse'),
listChatResources: (): Promise<ChatResources> => ipcRenderer.invoke('chat:resources'),
setQueue: (steering: string[], followUp: string[]): Promise<void> =>
ipcRenderer.invoke('queue:set', steering, followUp),
setPermissionMode: (mode: PermissionMode): Promise<void> => ipcRenderer.invoke('permissions:set', mode),
listWorkspaceFiles: (): Promise<WorkspaceFile[]> => ipcRenderer.invoke('files:list'),
pickAttachments: (): Promise<AttachmentInfo[]> => ipcRenderer.invoke('attachments:pick'),
getModelCatalog: (): Promise<ModelCatalog> => ipcRenderer.invoke('models:catalog'),
setModel: (providerId: string, modelId: string): Promise<void> =>
ipcRenderer.invoke('models:set', providerId, modelId),