feat: add main features
Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
This commit is contained in:
54
agents-dev/L0-core-domain.md
Normal file
54
agents-dev/L0-core-domain.md
Normal file
@ -0,0 +1,54 @@
|
||||
# L0 — Socle domaine & ports
|
||||
|
||||
**Binôme :** `dev-core-domain` / `test-core-domain`
|
||||
**Crate :** `crates/domain` (pur, zéro I/O)
|
||||
**Dépendances amont :** aucune (fondation du projet).
|
||||
**Statut :** en cours.
|
||||
|
||||
## Objectif
|
||||
|
||||
Poser le **cœur hexagonal** : toutes les entités, value objects, invariants, **ports (traits)**, domain events et la **logique de layout pure**. Aucun adapter, aucune I/O.
|
||||
|
||||
## Périmètre (DEV)
|
||||
|
||||
### Entities & Value Objects (cf. ARCHITECTURE §3)
|
||||
- IDs typés (`ProjectId`, `AgentId`, `TemplateId`, `ProfileId`, `SessionId`, `WindowId`, `TabId`, `NodeId`).
|
||||
- `Project`, `ProjectPath`, `Agent`, `AgentOrigin`, `AgentTemplate`, `TemplateVersion`, `AgentProfile`, `ContextInjection`.
|
||||
- `TerminalSession`, `SessionKind`, `PtySize`, `RemoteRef`/`SshAuth`, `GitRepository`, `AgentManifest`/`ManifestEntry`, `Workspace`/`Window`/`Tab`.
|
||||
- `MarkdownDoc` (VO contenu .md).
|
||||
- Tous les **invariants** documentés en §3 doivent être appliqués (constructeurs validants / `try_new`).
|
||||
|
||||
### Logique de layout pure (cf. ARCHITECTURE §7)
|
||||
- `LayoutNode` (`Leaf`/`Split`/`Grid`), `SplitContainer`, `WeightedChild`, `GridContainer`, `GridCell`.
|
||||
- Opérations **pures** : `split`, `merge`, `resize`, `move` → `LayoutTree -> Result<LayoutTree, LayoutError>`.
|
||||
- Validation des invariants (poids > 0, pas de chevauchement de spans, surface couverte, 1 session par leaf max).
|
||||
|
||||
### Ports (traits) — définitions seulement, pas d'impl
|
||||
`AgentRuntime`, `PtyPort`, `RemoteHost`, `ProcessSpawner`, `FileSystem`, `TemplateStore`, `ProjectStore`, `AgentContextStore`, `GitRepository`, `EventBus`, `Clock`, `IdGenerator` (signatures conceptuelles en ARCHITECTURE §4).
|
||||
|
||||
### Domain events & erreurs
|
||||
- `DomainEvent` (enum complet de §3.2).
|
||||
- Types d'erreur par domaine (`LayoutError`, et erreurs de port définies ici si partagées).
|
||||
|
||||
### serde
|
||||
- Autorisé **uniquement** pour les types persistés (manifeste, layout, profils) — dérive `Serialize`/`Deserialize`. Aucune autre dépendance I/O.
|
||||
|
||||
## Périmètre (TEST)
|
||||
|
||||
- Invariants d'entités : rejets attendus (chemin relatif, `synchronized` sans template, port SSH hors plage, etc.).
|
||||
- **Layout** (cœur du lot) : `split`/`merge`/`resize`/`move` — cas nominaux + cas d'erreur (chevauchement, poids ≤ 0, span hors grille, session dupliquée).
|
||||
- Déterminisme via `FixedClock`/`SeqIdGenerator`.
|
||||
- `ContextInjection` : validation des 4 variantes (target relatif, var env valide, flag non vide).
|
||||
- Sérialisation round-trip JSON des types persistés.
|
||||
|
||||
## Definition of Done
|
||||
|
||||
- `cargo test -p domain` vert.
|
||||
- `crates/domain/Cargo.toml` ne dépend d'aucun crate I/O (vérifié).
|
||||
- Tous les ports compilent et sont documentés.
|
||||
- Logique de layout couverte (cas limites inclus).
|
||||
|
||||
## Notes / points d'attention
|
||||
|
||||
- Choisir `async_trait` vs `-> impl Future` pour les ports I/O (à figer ici, impacte tous les lots).
|
||||
- Garder les traits **fins** (Interface Segregation) : ne pas fusionner FS/PTY/Process.
|
||||
Reference in New Issue
Block a user