2.8 KiB
2.8 KiB
L13 — OrchestratorApi
Binôme : dev-orchestrator / test-orchestrator
Zones : infrastructure/orchestrator, application/agent, app-tauri
Dépendances amont : L0, L1, L6 (LaunchAgent/StopAgent), L12 (update_agent_context peut toucher les skills).
Objectif
Permettre à un agent orchestrateur de demander à IdeA de créer/arrêter/mettre à jour un agent — exactement comme l'utilisateur via l'UI. L'orchestrateur ne spawne jamais lui-même un process CLI : il délègue à IdeA, unique source de vérité du cycle de vie des agents. Cf. ARCHITECTURE §14.3.
Périmètre (DEV)
- Port
OrchestratorApi(adapter entrant, driven by file-watcher) : surveille.ideai/requests/<requester-id>/, désérialise les requêtes JSON, les traduit en appels de use cases. - Adapter
FsOrchestratorAdapter(infrastructure/orchestrator) : file-watching (notify), parse, dispatch, supprime le fichier de requête et écrit une réponse (succès/erreur) à côté. - Actions v1 :
spawn_agent(→LaunchAgent),stop_agent(→StopAgent),update_agent_context(réécrit le.mdde l'agent ± skills). - Event :
OrchestratorRequest { requester_id, action }. - Schéma requête :
{ "action": "spawn_agent", "name": "dev-backend", "profile": "claude-code", "context": "agents/dev-backend.md" } - Le résultat d'un
spawn_agentest identique à un lancement UI : cellule terminal créée, agent inscrit dans l'onglet Agents. - Composition root (
app-tauri) : démarrer le watcher, brancher sur les use cases existants ; arrêt propre à la fermeture.
Périmètre (TEST)
- Désérialisation : requêtes valides → action typée ; requête malformée → réponse d'erreur, pas de crash, pas de spawn.
spawn_agentinvoqueLaunchAgentavec les bons args (use case mocké) ; idempotence sur double-dépôt du même fichier (traité une fois).- Après traitement : fichier de requête supprimé, fichier de réponse écrit avec le bon statut.
stop_agent/update_agent_context: mappent vers les bons use cases ; cible inexistante → erreur propre.- Watcher : un fichier déposé dans
.ideai/requests/<id>/est détecté (test d'intégration tmpdir +notify).
Definition of Done
cargo test(orchestrator/app) verts ; cycle manuel : un agent écrit un fichier de requêtespawn_agent→ un nouvel agent apparaît dans la grille et l'onglet Agents, fichier consommé + réponse écrite.- Garde-fou : l'orchestrateur ne lance aucun process directement (vérifié par revue + absence de
ProcessSpawnerdans le chemin orchestrateur). - DoD commune respectée ; zéro régression ; git reste optionnel (rien dans ce lot n'en dépend, §14.4).
Avancement
⬜ À démarrer. Cadrage figé dans ARCHITECTURE §14.3.