Files
goodbuddy/src/shared/ipc-channels.ts
T
mesalogo 3b560c9a5e feat: add external knowledge retrieval and cross-project activity
Connect Dify, FastGPT and RAGFlow through read-only bindings, encrypted local credentials, shared retrieval and persistent citations. Configuration and removal affect GoodBuddy only.

Show active conversations across projects, retain older live work, and improve project dialog scrolling. Queue concurrent questions and route managed SSH OpenCode questions through the Agent. Preserve recoverable read/search errors and partial search results.

Document the Electron UI automation standard, real model and external knowledge validation, and remaining acceptance limits.

Validation: earlier full regression passed 4081 tests with 66 skipped; subsequent focused remote-question checks and real Linux evidence are recorded in feature progress. Precommit typecheck and lint passed; latest project dialog and shared UI suites passed 58 tests. The full suite was not rerun for the final dialog changes.

Release note: Use external knowledge in conversations, find active work across projects, and answer concurrent local or managed SSH OpenCode questions. Managed SSH questions require the updated Agent adapter.
2026-09-13 13:10:01 +08:00

318 lines
15 KiB
TypeScript

export const ipcChannels = {
externalInstancesList: 'knowledge:external-instances:list',
externalInstancesSave: 'knowledge:external-instances:save',
externalInstancesTest: 'knowledge:external-instances:test',
externalInstancesSetEnabled: 'knowledge:external-instances:set-enabled',
externalInstancesDelete: 'knowledge:external-instances:delete',
externalCatalogList: 'knowledge:external-catalog:list',
externalCatalogGet: 'knowledge:external-catalog:get',
externalBindingsCreate: 'knowledge:external-bindings:create',
externalBindingsUpdate: 'knowledge:external-bindings:update',
externalRetrievalTest: 'knowledge:external-retrieval:test',
appInfo: 'app:get-info',
appShow: 'app:show',
appHide: 'app:hide',
windowMinimize: 'window:minimize',
windowToggleMaximize: 'window:toggle-maximize',
windowClose: 'window:close',
windowIsMaximized: 'window:is-maximized',
windowMaximizedChanged: 'window:maximized-changed',
appRendererPersistenceReady: 'app:renderer-persistence-ready',
appRendererPersistenceRequest: 'app:renderer-persistence-request',
appRendererPersistenceComplete: 'app:renderer-persistence-complete',
appClearLocalData: 'app:clear-local-data',
clipboardReadText: 'clipboard:read-text',
clipboardWriteText: 'clipboard:write-text',
conversationNew: 'conversation:new',
settingsOpen: 'settings:open',
agentStatus: 'agent:get-status',
agentRun: 'agent:run',
agentCancel: 'agent:cancel',
agentApprovalRespond: 'agent:approval:respond',
agentQuestionRespond: 'agent:question:respond',
agentCompactConversation: 'agent:context:compact',
agentEvent: 'agent:event',
browserCreateTab: 'browser:tab:create',
browserListTabs: 'browser:tab:list',
browserCloseTab: 'browser:tab:close',
browserNavigate: 'browser:navigate',
browserBack: 'browser:back',
browserReload: 'browser:reload',
browserStopLoading: 'browser:stop-loading',
browserSnapshot: 'browser:snapshot',
browserClick: 'browser:click',
browserType: 'browser:type',
browserSelect: 'browser:select',
browserScreenshot: 'browser:screenshot',
browserSetViewport: 'browser:set-viewport',
browserStop: 'browser:stop',
browserState: 'browser:state',
terminalCreate: 'terminal:create',
terminalWrite: 'terminal:write',
terminalResize: 'terminal:resize',
terminalClose: 'terminal:close',
terminalSnapshot: 'terminal:snapshot',
terminalAck: 'terminal:ack',
terminalEvent: 'terminal:event',
runtimeSettingsGet: 'settings:runtime:get',
runtimeSettingsUpdate: 'settings:runtime:update',
runtimeSettingsSelectWorkspace: 'settings:runtime:select-workspace',
runtimeSettingsDetect: 'settings:runtime:detect',
runtimeSettingsSelectFile: 'settings:runtime:select-file',
runtimeSettingsOpenConfig: 'settings:runtime:open-config',
runtimeSettingsTestModel: 'settings:runtime:test-model',
runtimeSettingsTest: 'settings:runtime:test',
runtimeCustomizationGet: 'settings:runtime-customization:get',
runtimeCustomizationUpdate: 'settings:runtime-customization:update',
runtimeNativeSnapshot: 'settings:runtime-native:snapshot',
sshHostsGet: 'settings:ssh-hosts:get',
sshHostsRemove: 'settings:ssh-hosts:remove',
sshHostsInspectDraftKey: 'settings:ssh-hosts:inspect-draft-key',
sshHostsDiscardCandidate:
'settings:ssh-hosts:discard-candidate',
sshHostsValidateAndSave:
'settings:ssh-hosts:validate-and-save',
sshHostsAgentPackageInventory:
'settings:ssh-hosts:agent-package:inventory',
sshHostsAgentPackageDownload:
'settings:ssh-hosts:agent-package:download',
sshHostsAgentPackageImport:
'settings:ssh-hosts:agent-package:import',
sshHostsAgentPackageExport:
'settings:ssh-hosts:agent-package:export',
sshHostsAgentPackageProgress:
'settings:ssh-hosts:agent-package:progress',
sshHostsRemoteEnvironment:
'settings:ssh-hosts:remote-environment',
sshHostsUpdateRemoteEnvironment:
'settings:ssh-hosts:remote-environment:update',
sshHostsCancelRemoteEnvironmentUpdate:
'settings:ssh-hosts:remote-environment:update:cancel',
sshHostsRemoteEnvironmentUpdateProgress:
'settings:ssh-hosts:remote-environment:update:progress',
sshHostsBrowseDirectories:
'settings:ssh-hosts:directories:browse',
sshHostsCancelDirectoryBrowse:
'settings:ssh-hosts:directories:cancel',
sshHostsAgentConnectionStatus:
'settings:ssh-hosts:agent-connection-status',
channelSettingsGet: 'settings:channels:get',
channelSettingsApply: 'settings:channels:apply',
channelSettingsTest: 'settings:channels:test',
weixinBindingGet: 'settings:channels:weixin:binding:get',
weixinBindingStart: 'settings:channels:weixin:binding:start',
weixinBindingVerify: 'settings:channels:weixin:binding:verify',
weixinBindingDisconnect:
'settings:channels:weixin:binding:disconnect',
weixinBindingChanged:
'settings:channels:weixin:binding:changed',
remoteChannelActivity: 'channels:remote-activity',
applicationSettingsGet: 'settings:application:get',
applicationSettingsUpdate: 'settings:application:update',
localToolEnvironmentGet: 'settings:local-tools:get',
localToolEnvironmentUpdate: 'settings:local-tools:update',
localToolEnvironmentRefresh: 'settings:local-tools:refresh',
localToolEnvironmentSelectExecutable:
'settings:local-tools:select-executable',
localToolEnvironmentDiagnose: 'settings:local-tools:diagnose',
localToolEnvironmentInstallPython:
'settings:local-tools:python:install',
localToolEnvironmentCancelPython:
'settings:local-tools:python:cancel',
localToolEnvironmentRemovePython:
'settings:local-tools:python:remove',
localToolEnvironmentProgress: 'settings:local-tools:progress',
shortcutSettingsGet: 'settings:shortcut:get',
shortcutSettingsUpdate: 'settings:shortcut:update',
versionCheck: 'application:update:check',
versionOpenReleasePage: 'application:update:open-release-page',
versionCheckResult: 'application:update:result',
feedbackSubmit: 'feedback:submit',
releaseNotesGetPending: 'application:release-notes:get-pending',
releaseNotesAcknowledge: 'application:release-notes:acknowledge',
speechModelsGet: 'settings:speech-models:get',
speechModelsInstall: 'settings:speech-models:install',
speechModelsCancel: 'settings:speech-models:cancel',
speechModelsRemove: 'settings:speech-models:remove',
speechModelsSelect: 'settings:speech-models:select',
speechModelsImportArchive: 'settings:speech-models:import-archive',
speechModelsExportArchive: 'settings:speech-models:export-archive',
speechModelsOpenRepository: 'settings:speech-models:open-repository',
speechModelsOpenDirectory: 'settings:speech-models:open-directory',
speechTranscribe: 'speech:transcribe',
speechTranscriptionCancel: 'speech:transcription:cancel',
embeddingSettingsGet: 'settings:embedding:get',
embeddingDiagnose: 'settings:embedding:diagnose',
embeddingSetCurrent: 'settings:embedding:set-current',
embeddingModelsProgress: 'settings:embedding-models:progress',
embeddingModelsInstall: 'settings:embedding-models:install',
embeddingModelsCancel: 'settings:embedding-models:cancel',
embeddingModelsImportArchive:
'settings:embedding-models:import-archive',
embeddingModelsRemove: 'settings:embedding-models:remove',
documentParsingGet: 'settings:document-parsing:get',
documentOcrModelsProgress:
'settings:document-ocr-models:progress',
documentParsingUpdate: 'settings:document-parsing:update',
documentParsingTest: 'settings:document-parsing:test',
documentOcrModelsInstall: 'settings:document-ocr-models:install',
documentOcrModelsCancel: 'settings:document-ocr-models:cancel',
documentOcrModelsRemove: 'settings:document-ocr-models:remove',
documentOcrModelsImportArchive:
'settings:document-ocr-models:import-archive',
documentOcrModelsExportArchive:
'settings:document-ocr-models:export-archive',
documentOcrModelsOpenRepository:
'settings:document-ocr-models:open-repository',
documentOcrModelsOpenDirectory:
'settings:document-ocr-models:open-directory',
documentParsingOcrAssets: 'document-parsing:ocr:assets',
documentParsingOcrRequest: 'document-parsing:ocr:request',
documentParsingOcrRespond: 'document-parsing:ocr:respond',
documentParsingOcrCancel: 'document-parsing:ocr:cancel',
projectsList: 'projects:list',
projectsCreate: 'projects:create',
projectsUpdate: 'projects:update',
projectsSetArchived: 'projects:set-archived',
projectsDelete: 'projects:delete',
remoteProjectSave: 'projects:remote:save',
remoteProjectCancelCurrent: 'projects:remote:cancel-current',
remoteProjectSaveProgress: 'projects:remote:save-progress',
remoteProjectRecoveryGet: 'projects:remote:recovery:get',
remoteProjectRecoveryRetry: 'projects:remote:recovery:retry',
remoteProjectRecoveryProgress:
'projects:remote:recovery:progress',
conversationsList: 'conversations:list',
conversationsReplace: 'conversations:replace',
conversationsSaveLocal: 'conversations:save-local',
conversationsBranchLocal: 'conversations:branch-local',
conversationsDeleteLocal: 'conversations:delete-local',
conversationsChanged: 'conversations:changed',
conversationQueueList: 'conversation-queue:list',
conversationQueueEnqueueUser: 'conversation-queue:enqueue-user',
conversationQueueRemove: 'conversation-queue:remove',
conversationQueueInterruptAndRun:
'conversation-queue:interrupt-and-run',
conversationQueueReleaseUser: 'conversation-queue:release-user',
conversationQueueReady: 'conversation-queue:ready',
conversationQueueChanged: 'conversation-queue:changed',
conversationQueueDispatch: 'conversation-queue:dispatch',
workspaceChangesGet: 'workspace:changes:get',
workspaceManage: 'workspace:manage',
workspaceFileDiff: 'workspace:file:diff',
workspaceDirectoryList: 'workspace:directory:list',
workspaceFileRead: 'workspace:file:read',
workspacePathOpen: 'workspace:path:open',
tasksList: 'tasks:list',
tasksSetStatus: 'tasks:set-status',
activityHistoryGet: 'activity-history:get',
activityHistoryReplace: 'activity-history:replace',
tokenUsageSummary: 'usage:token-summary',
artifactsList: 'artifacts:list',
artifactsGet: 'artifacts:get',
artifactsImportFiles: 'artifacts:import-files',
memoryList: 'memory:list',
memoryCreate: 'memory:create',
memorySetStatus: 'memory:set-status',
memoryRemove: 'memory:remove',
schedulesList: 'schedules:list',
schedulesCreate: 'schedules:create',
schedulesSetEnabled: 'schedules:set-enabled',
schedulesRemove: 'schedules:remove',
schedulesRunNow: 'schedules:run-now',
heartbeatsList: 'heartbeats:list',
heartbeatsCreate: 'heartbeats:create',
heartbeatsUpdate: 'heartbeats:update',
heartbeatsSetPaused: 'heartbeats:set-paused',
heartbeatsRemove: 'heartbeats:remove',
heartbeatsRunNow: 'heartbeats:run-now',
heartbeatsHistory: 'heartbeats:history',
expertsList: 'experts:list',
expertsCreate: 'experts:create',
expertsUpdate: 'experts:update',
expertsRemove: 'experts:remove',
capabilitiesSnapshot: 'capabilities:snapshot',
capabilitiesImportSkill: 'capabilities:skill:import',
capabilitiesRemoveSkill: 'capabilities:skill:remove',
capabilitiesToggleSkill: 'capabilities:skill:toggle',
capabilitiesAssignSkill: 'capabilities:skill:assign',
capabilitiesToggleBuiltinMcp: 'capabilities:builtin-mcp:toggle',
capabilitiesAssignBuiltinMcp: 'capabilities:builtin-mcp:assign',
capabilitiesSaveMcp: 'capabilities:mcp:save',
capabilitiesRemoveMcp: 'capabilities:mcp:remove',
capabilitiesTestMcp: 'capabilities:mcp:test',
capabilitiesToggleWebSearch: 'capabilities:web-search:toggle',
capabilitiesTestWebSearch: 'capabilities:web-search:test',
capabilitiesToggleComputer: 'capabilities:computer:toggle',
capabilitiesConfigureComputer: 'capabilities:computer:configure',
capabilitiesDiagnoseComputer: 'capabilities:computer:diagnose',
capabilitiesCreateBrowserProfile: 'capabilities:browser-profile:create',
capabilitiesRenameBrowserProfile: 'capabilities:browser-profile:rename',
capabilitiesDefaultBrowserProfile: 'capabilities:browser-profile:default',
capabilitiesRemoveBrowserProfile: 'capabilities:browser-profile:remove',
runtimeExtensionsSnapshot: 'runtime-extensions:snapshot',
runtimeExtensionsApply: 'runtime-extensions:apply',
contextSelectFiles: 'context:select-files',
contextFileSelectionProgress: 'context:file-selection-progress',
contextAddPastedImage: 'context:add-pasted-image',
contextCaptureScreen: 'context:capture-screen',
contextListWindows: 'context:list-windows',
contextCaptureWindow: 'context:capture-window',
contextReadClipboard: 'context:read-clipboard',
contextRemove: 'context:remove',
magicNotesList: 'magic-notes:list',
magicNotesGet: 'magic-notes:get',
magicNotesCreate: 'magic-notes:create',
magicNotesUpdate: 'magic-notes:update',
magicNotesDelete: 'magic-notes:delete',
magicNotesCreateEntry: 'magic-notes:create-entry',
magicNotesUpdateEntry: 'magic-notes:update-entry',
magicNotesDeleteEntry: 'magic-notes:delete-entry',
magicNotesAnalyze: 'magic-notes:analyze',
magicNotesAnalyzeDraft: 'magic-notes:analyze-draft',
magicNotesAnalysisEvent: 'magic-notes:analysis-event',
magicTodosList: 'magic-todos:list',
magicTodosStatus: 'magic-todos:status',
magicTodosStatusChanged: 'magic-todos:status-changed',
magicTodosUpdate: 'magic-todos:update',
magicTodosAnalyze: 'magic-todos:analyze',
knowledgeSnapshot: 'knowledge:snapshot',
knowledgeCreateLibrary: 'knowledge:library:create',
knowledgeUpdateLibrary: 'knowledge:library:update',
knowledgeDeleteLibrary: 'knowledge:library:delete',
knowledgeReextractGraph: 'knowledge:graph:reextract',
knowledgeSelectFiles: 'knowledge:source:select-files',
knowledgeSelectDirectory: 'knowledge:source:select-directory',
knowledgeImportPaths: 'knowledge:source:import-paths',
knowledgeImportUrl: 'knowledge:source:import-url',
knowledgeSyncSource: 'knowledge:source:sync',
knowledgePauseSource: 'knowledge:source:pause',
knowledgeRetrySource: 'knowledge:source:retry',
knowledgeRemoveSource: 'knowledge:source:remove',
knowledgeSearch: 'knowledge:search',
knowledgeRetrieve: 'knowledge:retrieve',
knowledgeUpdateSettings: 'knowledge:settings:update',
knowledgeListChunks: 'knowledge:chunks:list',
knowledgeUpdateChunk: 'knowledge:chunk:update',
knowledgeDeleteChunk: 'knowledge:chunk:delete',
knowledgeRebuildDocument: 'knowledge:document:rebuild',
knowledgeOpenDocumentSource: 'knowledge:document:open-source',
knowledgeRebuildLibrary: 'knowledge:library:rebuild',
knowledgeCancelRebuild: 'knowledge:library:rebuild:cancel',
knowledgeEmbeddingIndexGet: 'knowledge:embedding-index:get',
knowledgeEmbeddingIndexRebuild: 'knowledge:embedding-index:rebuild',
knowledgeEmbeddingIndexCancel: 'knowledge:embedding-index:cancel',
knowledgeTaskCancel: 'knowledge:task:cancel',
knowledgeTaskRetry: 'knowledge:task:retry',
knowledgeReferenceContext: 'knowledge:reference:context',
knowledgeOpenReferenceSource: 'knowledge:reference:open-source',
knowledgeCreateEntity: 'knowledge:entity:create',
knowledgeUpdateEntity: 'knowledge:entity:update',
knowledgeMoveEntity: 'knowledge:entity:move',
knowledgeDeleteEntity: 'knowledge:entity:delete',
knowledgeMergeEntities: 'knowledge:entity:merge',
knowledgeCreateRelation: 'knowledge:relation:create',
knowledgeUpdateRelation: 'knowledge:relation:update',
knowledgeDeleteRelation: 'knowledge:relation:delete'
} as const