Files
IdeA/agents-dev/L7-templates.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

3.6 KiB

L7 — Templates & synchronisation

Binôme : dev-templates / test-templates Zones : application/template, infrastructure/store, frontend/features/templates Dépendances amont : L0, L1, L5, L6.

Objectif

Templates d'agents (store global IDE), versioning, création d'agent depuis template, détection de drift et synchronisation template → agents.

Périmètre (DEV)

  • Adapter FsTemplateStore (md + index.json) avec versioning monotone + content_hash.
  • Use cases : CreateTemplate, UpdateTemplate (bump version), CreateAgentFromTemplate, DetectAgentDrift, SyncAgentWithTemplate (remplacement du .md si synchronized).
  • Front : gestion des templates, badge « MAJ disponible », action de sync.

Périmètre (TEST)

  • UpdateTemplate incrémente la version ; DetectAgentDrift détecte version > synced_template_version.
  • SyncAgentWithTemplate : applique aux synchronized==true, ignore false et scratch ; met à jour synced_template_version.
  • Front : badge drift + flux de sync avec gateway mock.

Definition of Done

  • cargo test (template/store) + vitest verts ; cycle MAJ template → propagation aux agents synchronisés (dev manuel).

Avancement

Backend (vert)

  • Infra : FsTemplateStore (infrastructure/store/template.rs) — store global <app>/templates/{index.json, md/<id>.md}, versioning persisté, contentHash (digest stable, sans dépendance) pour détection d'édition hors-app. 6 tests d'intégration (tmpdir).
  • Application (application/template/usecases.rs) : CreateTemplate, UpdateTemplate (bump version + event TemplateUpdated), ListTemplates, DeleteTemplate, CreateAgentFromTemplate (origine FromTemplate + seed du .md, réutilise le helper de nommage L6), DetectAgentDrift (ne flague que les synchronized en retard ; ignore non-sync/scratch/à-jour/template supprimé ; émet AgentDriftDetected), SyncAgentWithTemplate (remplace le .md, avance synced_template_version, émet AgentSynced ; laisse intacts non-sync/scratch). 8 tests use cases.
  • cargo test --workspace : 270 verts, 0 régression ; clippy clean.

IPC app-tauri (vert)

  • Composition root : FsTemplateStore construit, 7 use cases injectés (réutilise contexts_port/ids/events_port).
  • 7 commands : create_template, update_template, list_templates, delete_template, create_agent_from_template, detect_agent_drift, sync_agent_with_template (shells fins, resolve_project réutilisé). DTOs camelCase (TemplateDto transparent, AgentDriftDto, SyncResultDto, parse_template_id).
  • Tests tests/dto_templates.rs (18) ; cargo test -p app-tauri 62 verts ; workspace 288 verts, 0 régression ; clippy clean.

Front (vert)

  • Port TemplateGateway (7 méthodes) + types Template/AgentDrift ; adapter Tauri TauriTemplateGateway ; MockTemplateGateway stateful partageant le registre d'agents du MockAgentGateway (helpers internes _insertAgent/_updateAgent/_rawAgents) pour faire vivre le drift offline.
  • Feature features/templates : useTemplates (CRUD), useDrift(projectId) (détection + sync), TemplatesPanel (liste nom+version, création, édition, suppression, « Create agent from template »), monté dans l'onglet projet.
  • AgentsPanel : badge « update available » + bouton Sync par agent en drift.
  • Tests : 20 ajoutés ; suite front 140 verts ; tsc clean ; garde-fou « no direct invoke » respecté.

Hors périmètre L7

  • Intégration front du terminal d'agent depuis un agent créé via template (réutilise le fil L6).