Files
IdeA/agents-dev/L13-orchestrator.md

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 .md de 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_agent est 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_agent invoque LaunchAgent avec 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ête spawn_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 ProcessSpawner dans 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.