/** * Real Tauri adapters wiring the UI ports to the backend via `@tauri-apps/api`. * * Only {@link TauriSystemGateway} is fully wired in L1 (to the `health` * command). The remaining gateways are skeletons that throw `NOT_IMPLEMENTED` * until their lots (L2–L9) land — they exist so the DI surface is complete and * the app can run real-mode without the mock substituting everything. */ import type { GatewayError } from "@/domain"; import type { Gateways, RemoteGateway, } from "@/ports"; import { TauriSystemGateway } from "./system"; import { TauriAgentGateway } from "./agent"; import { TauriInputGateway } from "./input"; import { TauriProjectGateway } from "./project"; import { TauriTerminalGateway } from "./terminal"; import { TauriLayoutGateway } from "./layout"; import { TauriProfileGateway } from "./profile"; import { TauriModelServerGateway } from "./modelServer"; import { TauriDesktopServerGateway } from "./desktopServer"; import { TauriTemplateGateway } from "./template"; import { TauriSkillGateway } from "./skill"; import { TauriMemoryGateway } from "./memory"; import { TauriEmbedderGateway } from "./embedder"; import { TauriDeviceGateway } from "./device"; import { TauriGitGateway } from "./git"; import { TauriPermissionGateway } from "./permission"; import { TauriWorkStateGateway } from "./workState"; import { TauriConversationGateway } from "./conversation"; import { TauriTicketGateway } from "./ticket"; import { TauriWindowGateway } from "./window"; import { TauriFocusedProjectGateway } from "./focusedProject"; import { LocalStorageUiPreferencesGateway } from "./uiPreferences"; function notImplemented(what: string): never { const err: GatewayError = { code: "NOT_IMPLEMENTED", message: `${what} is not implemented yet (pending its lot).`, }; throw err; } class TauriRemoteGateway implements RemoteGateway { connect(): Promise { return notImplemented("RemoteGateway.connect"); } } /** Builds the full set of real Tauri-backed gateways. */ export function createTauriGateways(): Gateways { return { system: new TauriSystemGateway(), agent: new TauriAgentGateway(), input: new TauriInputGateway(), terminal: new TauriTerminalGateway(), project: new TauriProjectGateway(), layout: new TauriLayoutGateway(), git: new TauriGitGateway(), remote: new TauriRemoteGateway(), profile: new TauriProfileGateway(), modelServer: new TauriModelServerGateway(), desktopServer: new TauriDesktopServerGateway(), template: new TauriTemplateGateway(), skill: new TauriSkillGateway(), memory: new TauriMemoryGateway(), embedder: new TauriEmbedderGateway(), device: new TauriDeviceGateway(), permission: new TauriPermissionGateway(), workState: new TauriWorkStateGateway(), conversation: new TauriConversationGateway(), ticket: new TauriTicketGateway(), window: new TauriWindowGateway(), focusedProject: new TauriFocusedProjectGateway(), uiPreferences: new LocalStorageUiPreferencesGateway(), }; } export { TauriSystemGateway, TauriAgentGateway, TauriInputGateway, TauriProjectGateway, TauriTerminalGateway, TauriLayoutGateway, TauriProfileGateway, TauriModelServerGateway, TauriDesktopServerGateway, TauriTemplateGateway, TauriSkillGateway, TauriMemoryGateway, TauriEmbedderGateway, TauriDeviceGateway, TauriGitGateway, TauriPermissionGateway, TauriWorkStateGateway, TauriConversationGateway, TauriTicketGateway, TauriWindowGateway, TauriFocusedProjectGateway, LocalStorageUiPreferencesGateway, };