Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
45 lines
2.3 KiB
Markdown
45 lines
2.3 KiB
Markdown
# 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.
|