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:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user