Lots F1-F4 : runtime de chargement/registre plugin, extension des menus existants, panneau de gestion des plugins, types de layout custom (sélecteur, fallback, cellule dédiée) branchés sur le port plugin. Suite npm typecheck/test verte (947/947). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
108 lines
3.6 KiB
TypeScript
108 lines
3.6 KiB
TypeScript
/**
|
||
* 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";
|
||
import { TauriPluginGateway } from "./plugin";
|
||
|
||
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<void> {
|
||
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(),
|
||
plugin: new TauriPluginGateway(),
|
||
};
|
||
}
|
||
|
||
export {
|
||
TauriSystemGateway,
|
||
TauriAgentGateway,
|
||
TauriInputGateway,
|
||
TauriProjectGateway,
|
||
TauriTerminalGateway,
|
||
TauriLayoutGateway,
|
||
TauriProfileGateway,
|
||
TauriModelServerGateway,
|
||
TauriDesktopServerGateway,
|
||
TauriTemplateGateway,
|
||
TauriSkillGateway,
|
||
TauriMemoryGateway,
|
||
TauriEmbedderGateway,
|
||
TauriDeviceGateway,
|
||
TauriGitGateway,
|
||
TauriPermissionGateway,
|
||
TauriWorkStateGateway,
|
||
TauriConversationGateway,
|
||
TauriTicketGateway,
|
||
TauriWindowGateway,
|
||
TauriFocusedProjectGateway,
|
||
LocalStorageUiPreferencesGateway,
|
||
TauriPluginGateway,
|
||
};
|