# Service `ia-dev-gateway` — exécution agents et déploiements ## Objectif Remplacer à terme l’appel **direct** au répertoire module [`ia_dev`](../ia_dev-module.md) par un **service HTTP** sous [`services/ia-dev-gateway/`](../../services/ia-dev-gateway/) qui : - Pointe vers un **fork** de [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git) (même historique Git, gouvernance dans le monorepo `smart_ide`). - **N’implémente pas** la logique métier des projets : il **oriente** les jobs vers `projects//`, `deploy/`, scripts existants, avec policy et journalisation. - Expose un **registre d’agents** et des **runs** pour Lapce, le front web et l’orchestrateur. ## Périmètre | Inclus | Exclus | |--------|--------| | Auth service-to-service (Bearer) | Duplication des recettes métier dans `smart_ide` | | Soumission de jobs (deploy, agent, script) | Exécution hors sandbox / OpenShell si policy impose un runtime | | Stream d’événements (SSE ou WebSocket) | UI complète (reste Lapce / front) | | Lecture du registre agents depuis le checkout `ia_dev` | Modification des secrets des projets cibles | ## Cohabitation avec le sous-module Le binaire `ia-dev-gateway` reçoit `IA_DEV_ROOT` (chemin racine du checkout `ia_dev`). Si `IA_DEV_ROOT` n’est pas défini, il tente une résolution locale dans le monorepo (priorité `./ia_dev`, puis `./services/ia_dev`). ## API (spécification) Référence détaillée : [API/ia-dev-gateway.md](../API/ia-dev-gateway.md). Résumé : - `GET /health` — liveness. - `GET /v1/agents` — liste des agents enregistrés (métadonnées dérivées du registre `ia_dev`). - `GET /v1/agents/{id}` — descripteur stable (rôle, droits, commandes déclenchantes). - `POST /v1/runs` — corps JSON : `{ "agentId", "projectId", "intent", "payload"?, "env"? }` ; réponse : `{ "runId", "status" }`. - `GET /v1/runs/{runId}` — statut et sortie partielle. - `GET /v1/runs/{runId}/events` — **SSE** (ou upgrade WebSocket selon implémentation) : flux `started`, `tool_selected`, `completed`, `failed`, etc. (aligné [system-architecture.md](../system-architecture.md)). Les codes d’erreur **401/403/404/409/422** sont explicites ; pas de fallback silencieux. ## Variables d’environnement (cible) | Variable | Obligatoire | Description | |----------|-------------|-------------| | `IA_DEV_GATEWAY_TOKEN` | oui | Bearer attendu des clients autorisés | | `IA_DEV_GATEWAY_HOST` | non | Bind (défaut `127.0.0.1`) | | `IA_DEV_GATEWAY_PORT` | non | Port (défaut `37144`) | | `IA_DEV_ROOT` | non | Chemin racine du checkout `ia_dev` (fork) | ## Implémentation Le répertoire [`services/ia-dev-gateway/`](../../services/ia-dev-gateway/) contient un **serveur Node/TypeScript** (`npm run build && npm start`) : - scan des agents `.md` depuis `IA_DEV_ROOT/.smartIde/agents` - `POST /v1/runs` : **runner script-backed** (subset allowlist) qui spawn des scripts `bash` sous `IA_DEV_ROOT/` et stream `stdout/stderr` via SSE - `GET /v1/runs/{runId}/events` : SSE avec replay (`Last-Event-ID`) + keep-alive L’orchestrateur peut cibler ce service via l’intent `agent.run`. ## Voir aussi - [platform-target.md](../platform-target.md) — trois environnements - [system-architecture.md](../system-architecture.md) — agent gateway, policy