Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
2.9 KiB
2.9 KiB
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,
synchronizedsans 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 domainvert.crates/domain/Cargo.tomlne 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_traitvs-> impl Futurepour les ports I/O (à figer ici, impacte tous les lots). - Garder les traits fins (Interface Segregation) : ne pas fusionner FS/PTY/Process.