smart_ide/docs/features/ia-dev-service.md
Nicolas Cantu 088eab84b7 Platform docs, services, ia_dev submodule, smart_ide project config
- Add ia_dev submodule (projects/smart_ide on forge 4nk)
- Document APIs, orchestrator, gateway, local-office, rollout
- Add systemd/scripts layout; relocate setup scripts
- Remove obsolete nginx/enso-only docs from this repo scope
2026-04-03 16:07:58 +02:00

58 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Service `ia-dev-gateway` — exécution agents et déploiements
## Objectif
Remplacer à terme lappel **direct** au dépôt sous-module [`ia_dev`](../ia_dev-submodule.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`).
- **Nimplémente pas** la logique métier des projets : il **oriente** les jobs vers `projects/<id>/`, `deploy/`, scripts existants, avec policy et journalisation.
- Expose un **registre dagents** et des **runs** pour Lapce, le front web et lorchestrateur.
## 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
Aujourdhui `./ia_dev` reste le **checkout canonique** sur lhôte. Le binaire `ia-dev-gateway` reçoit `IA_DEV_ROOT` (défaut : répertoire parent du service ou chemin absolu vers `./ia_dev`).
**Trajectoire** : sous-module conservé jusquà ce que le fork soit **vendored** ou **cloné par le service** au déploiement ; puis documentation de migration dans [ia_dev-submodule.md](../ia_dev-submodule.md).
## 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 derreur **401/403/404/409/422** sont explicites ; pas de fallback silencieux.
## Variables denvironnement (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`, runs en mémoire avec statut stub `completed`, flux SSE minimal. Brancher le **runner** réel (`ia_dev` scripts) sur `POST /v1/runs` reste à faire. Lorchestrateur [orchestrator-api.md](./orchestrator-api.md) peut cibler ce service pour `agent.run`.
## Voir aussi
- [platform-target.md](../platform-target.md) — trois environnements
- [system-architecture.md](../system-architecture.md) — agent gateway, policy