/** * Worker-side service proxies, similar to preload/common/services.ts * Auto-creates proxies for all registered services and attaches to global.service */ import { createWorkerProxy, type WorkerProxy } from 'electron-ipc-cat/worker'; import { Observable } from 'rxjs'; import { AgentBrowserServiceIPCDescriptor, type IAgentBrowserService } from '@services/agentBrowser/interface'; import { AgentDefinitionServiceIPCDescriptor, type IAgentDefinitionService } from '@services/agentDefinition/interface'; import { AgentInstanceServiceIPCDescriptor, type IAgentInstanceService } from '@services/agentInstance/interface'; import { AuthenticationServiceIPCDescriptor, type IAuthenticationService } from '@services/auth/interface'; import { ContextServiceIPCDescriptor, type IContextService } from '@services/context/interface'; import { DatabaseServiceIPCDescriptor, type IDatabaseService } from '@services/database/interface'; import { DeepLinkServiceIPCDescriptor, type IDeepLinkService } from '@services/deepLink/interface'; import { ExternalAPIServiceIPCDescriptor, type IExternalAPIService } from '@services/externalAPI/interface'; import { GitServiceIPCDescriptor, type IGitService } from '@services/git/interface'; import { type IMenuService, MenuServiceIPCDescriptor } from '@services/menu/interface'; import { type INativeService, NativeServiceIPCDescriptor } from '@services/native/interface'; import { type INotificationService, NotificationServiceIPCDescriptor } from '@services/notifications/interface'; import { type IPreferenceService, PreferenceServiceIPCDescriptor } from '@services/preferences/interface'; import { type ISyncService, SyncServiceIPCDescriptor } from '@services/sync/interface'; import { type ISystemPreferenceService, SystemPreferenceServiceIPCDescriptor } from '@services/systemPreferences/interface'; import { type IThemeService, ThemeServiceIPCDescriptor } from '@services/theme/interface'; import { type IUpdaterService, UpdaterServiceIPCDescriptor } from '@services/updater/interface'; import { type IViewService, ViewServiceIPCDescriptor } from '@services/view/interface'; import { type IWikiService, WikiServiceIPCDescriptor } from '@services/wiki/interface'; import { type IWikiEmbeddingService, WikiEmbeddingServiceIPCDescriptor } from '@services/wikiEmbedding/interface'; import { type IWikiGitWorkspaceService, WikiGitWorkspaceServiceIPCDescriptor } from '@services/wikiGitWorkspace/interface'; import { type IWindowService, WindowServiceIPCDescriptor } from '@services/windows/interface'; import { type IWorkspaceService, WorkspaceServiceIPCDescriptor } from '@services/workspaces/interface'; import { type IWorkspaceViewService, WorkspaceViewServiceIPCDescriptor } from '@services/workspacesView/interface'; // Create service proxies export const agentBrowser = createWorkerProxy>(AgentBrowserServiceIPCDescriptor, Observable); export const agentDefinition = createWorkerProxy>(AgentDefinitionServiceIPCDescriptor, Observable); export const agentInstance = createWorkerProxy>(AgentInstanceServiceIPCDescriptor, Observable); export const authentication = createWorkerProxy>(AuthenticationServiceIPCDescriptor, Observable); export const context = createWorkerProxy>(ContextServiceIPCDescriptor, Observable); export const database = createWorkerProxy>(DatabaseServiceIPCDescriptor, Observable); export const deepLink = createWorkerProxy>(DeepLinkServiceIPCDescriptor, Observable); export const externalAPI = createWorkerProxy>(ExternalAPIServiceIPCDescriptor, Observable); export const git = createWorkerProxy>(GitServiceIPCDescriptor, Observable); export const menu = createWorkerProxy>(MenuServiceIPCDescriptor, Observable); export const native = createWorkerProxy>(NativeServiceIPCDescriptor, Observable); export const notification = createWorkerProxy>(NotificationServiceIPCDescriptor, Observable); export const preference = createWorkerProxy>(PreferenceServiceIPCDescriptor, Observable); export const sync = createWorkerProxy>(SyncServiceIPCDescriptor, Observable); export const systemPreference = createWorkerProxy>(SystemPreferenceServiceIPCDescriptor, Observable); export const theme = createWorkerProxy>(ThemeServiceIPCDescriptor, Observable); export const updater = createWorkerProxy>(UpdaterServiceIPCDescriptor, Observable); export const view = createWorkerProxy>(ViewServiceIPCDescriptor, Observable); export const wiki = createWorkerProxy>(WikiServiceIPCDescriptor, Observable); export const wikiEmbedding = createWorkerProxy>(WikiEmbeddingServiceIPCDescriptor, Observable); export const wikiGitWorkspace = createWorkerProxy>(WikiGitWorkspaceServiceIPCDescriptor, Observable); export const window = createWorkerProxy>(WindowServiceIPCDescriptor, Observable); export const workspace = createWorkerProxy>(WorkspaceServiceIPCDescriptor, Observable); export const workspaceView = createWorkerProxy>(WorkspaceViewServiceIPCDescriptor, Observable); /** * All service proxies collected in one object * Auto-attached to global.service when this module is imported */ export const service = { agentBrowser, agentDefinition, agentInstance, authentication, context, database, deepLink, externalAPI, git, menu, native, notification, preference, sync, systemPreference, theme, updater, view, wiki, wikiEmbedding, wikiGitWorkspace, window, workspace, workspaceView, } as const; // Auto-attach to global when imported (worker thread only) if (typeof global !== 'undefined') { // Use type assertion to avoid circular reference // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access (global as any).service = service; }