Files
IdeA/agents-dev/L1-ipc-bridge.md
Blomios 307ae71857 feat: add main features
Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
2026-06-06 01:27:01 +02:00

2.3 KiB

L1 — Composition root & IPC

Binôme : dev-ipc-bridge / test-ipc-bridge Zones : crates/app-tauri, frontend/ports, frontend/adapters Dépendances amont : L0 (ports figés). Statut : suivant (enchaîné après L0).

Objectif

Mettre en place le squelette Tauri qui tourne : composition root (DI), pont IPC bidirectionnel, et la couche ports/adapters du frontend (avec mocks) — pour que le front soit développable sans backend dès les lots suivants.

Périmètre (DEV)

Backend app-tauri (driving adapter + composition root)

  • Composition root : instancier les adapters concrets (au départ : LocalFileSystem, TokioBroadcastEventBus, SystemClock, UuidGenerator) et les injecter dans les use cases via tauri::State (Arc<dyn Port>).
  • Registre des #[tauri::command] (squelette, mapping DTO ↔ use case) et ErrorDTO.
  • TauriEventRelay : souscrit l'EventBus domaine → relaie en events/Channels Tauri.
  • Bridge PTY ↔ Tauri Channel (tauri::ipc::Channel) : infrastructure générique de flux d'octets par session (sera consommée par L3).
  • App Tauri v2 minimale qui démarre (fenêtre vide).

Frontend (hexagonal côté UI)

  • frontend/ports : gateways TS (AgentGateway, TerminalGateway, ProjectGateway, LayoutGateway, GitGateway, RemoteGateway).
  • frontend/adapters : impl via @tauri-apps/api (invoke/listen/Channel).
  • frontend/adapters/mock : impl mock de chaque gateway.
  • frontend/app : bootstrap React + Vite, provider de DI des adapters (réel vs mock).

Périmètre (TEST)

  • Backend : mapping commands ↔ use cases (un use case in-memory simple validant le wiring).
  • Relais EventBus → events Tauri (un DomainEvent publié arrive bien côté relais).
  • Front : chaque gateway mock satisfait l'interface du port (typecheck + tests Vitest).
  • Provider de DI : bascule réel/mock fonctionnelle.

Definition of Done

  • L'app Tauri démarre (fenêtre vide) sur Linux.
  • cargo test -p app-tauri et vitest verts.
  • Front compile et tourne en mode mock sans backend.
  • Aucun invoke() direct dans les composants (uniquement via gateways).

Points d'attention / spikes

  • Forme du bridge PTY↔Channel (backpressure) — préparé ici, stressé en L3.
  • Convention de (dé)sérialisation DTO Rust ↔ TS (serde camelCase ?). À figer ici.