- 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
58 lines
3.3 KiB
Markdown
58 lines
3.3 KiB
Markdown
# Service `ia-dev-gateway` — exécution agents et déploiements
|
||
|
||
## Objectif
|
||
|
||
Remplacer à terme l’appel **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`).
|
||
- **N’implé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 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
|
||
|
||
Aujourd’hui `./ia_dev` reste le **checkout canonique** sur l’hô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 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`, 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. L’orchestrateur [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
|