feat: 动态插件系统 M0-M3(两层能力模型 + pi 原生契约 + Obsidian 式 SDK)
This commit is contained in:
@@ -13,6 +13,9 @@ import type {
|
||||
ModelCatalog,
|
||||
NavigateTreeOptions,
|
||||
PermissionMode,
|
||||
PluginInfo,
|
||||
PluginsUiState,
|
||||
PluginViewChange,
|
||||
ResourceDetails,
|
||||
SendImage,
|
||||
SessionMeta,
|
||||
@@ -129,6 +132,39 @@ const api = {
|
||||
return () => {
|
||||
ipcRenderer.removeListener('browser:event', listener)
|
||||
}
|
||||
},
|
||||
|
||||
// ---- 插件系统 ----
|
||||
pluginsList: (): Promise<PluginInfo[]> => ipcRenderer.invoke('plugins:list'),
|
||||
pluginsUiState: (): Promise<PluginsUiState> => ipcRenderer.invoke('plugins:uiState'),
|
||||
pluginsSetEnabled: (id: string, enabled: boolean): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:setEnabled', id, enabled),
|
||||
pluginsReload: (): Promise<void> => ipcRenderer.invoke('plugins:reload'),
|
||||
pluginsOpenView: (view: string, params?: unknown): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:openView', view, params),
|
||||
/** 插件页桥转发(渲染层桥校验来源后调用;pluginId 键控写主进程单一事实源) */
|
||||
pluginsSetStatus: (pluginId: string, itemId: string, item: unknown): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:setStatus', pluginId, itemId, item),
|
||||
onPluginsListChanged: (callback: () => void): (() => void) => {
|
||||
const listener = (): void => callback()
|
||||
ipcRenderer.on('plugins:listChanged', listener)
|
||||
return () => {
|
||||
ipcRenderer.removeListener('plugins:listChanged', listener)
|
||||
}
|
||||
},
|
||||
onPluginsUiState: (callback: (state: PluginsUiState) => void): (() => void) => {
|
||||
const listener = (_e: Electron.IpcRendererEvent, state: PluginsUiState): void => callback(state)
|
||||
ipcRenderer.on('plugins:uiState', listener)
|
||||
return () => {
|
||||
ipcRenderer.removeListener('plugins:uiState', listener)
|
||||
}
|
||||
},
|
||||
onPluginsView: (callback: (change: PluginViewChange) => void): (() => void) => {
|
||||
const listener = (_e: Electron.IpcRendererEvent, change: PluginViewChange): void => callback(change)
|
||||
ipcRenderer.on('plugins:view', listener)
|
||||
return () => {
|
||||
ipcRenderer.removeListener('plugins:view', listener)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user