smart_ide/docs/ia_dev-module.md
Nicolas Cantu cfa1f435cb refactor: centralize HTTP proxy helpers and align IA_DEV_ROOT resolution (0.0.6)
Initial state:
- HTTP proxy utilities (Bearer parsing, hop-by-hop headers, body limits, safe path validation) were duplicated between smart-ide-sso-gateway and smart-ide-global-api.
- IA_DEV_ROOT auto-resolution order differed between bash (ensure-ia-dev-project-link.sh) and TypeScript (ia-dev-gateway getIaDevRoot), and could fall back to non-existing paths.

Motivation:
- Reduce duplication and drift across proxy layers.
- Enforce consistent, explicit IA_DEV_ROOT behavior across scripts and services.

Resolution:
- Add package @4nk/smart-ide-http-utils and reuse it from smart-ide-sso-gateway and smart-ide-global-api.
- Align IA_DEV_ROOT resolution to prefer ./services/ia_dev then ./ia_dev; fail fast when missing/misconfigured.

Root cause:
- Cross-service utilities were implemented ad-hoc in each service.
- Historical layout transitions (ia_dev gitlink vs vendored services/ia_dev) left multiple resolvers with different priorities.

Impacted features:
- HTTP proxy chain (SSO gateway -> global API -> upstream services).
- ia-dev-gateway startup/operation when IA_DEV_ROOT is missing or invalid.

Code modified:
- packages/smart-ide-http-utils/**
- services/smart-ide-global-api/src/server.ts
- services/smart-ide-sso-gateway/src/server.ts
- services/ia-dev-gateway/src/paths.ts
- scripts/ensure-ia-dev-project-link.sh

Documentation modified:
- docs/system-architecture.md
- docs/ia_dev-module.md
- docs/repo/README.md

Configurations modified:
- services/smart-ide-global-api/package.json
- services/smart-ide-sso-gateway/package.json

Files in deploy modified:
- None

Files in logs impacted:
- None (runtime logs only)

Databases and other sources modified:
- None

Off-project modifications:
- None

Files in .smartIde modified:
- None

Files in .secrets modified:
- None

New patch version in VERSION:
- 0.0.6

CHANGELOG.md updated:
- yes
2026-04-04 20:34:49 +02:00

42 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# Module `ia_dev` dans smart_ide
Le répertoire **`./services/ia_dev`** dans le monorepo **smart_ide** contient l**équipe dagents** (définitions sous `.smartIde/agents/`, `.smartIde/rules/`), **`deploy/`**, **`git-issues/`**, etc. Il est **versionné dans ce dépôt**.
Les **`conf.json` par projet** pour ce monorepo restent sous **`./projects/<id>/`** à la racine de **smart_ide** (voir [repo/projects-directory.md](./repo/projects-directory.md)), pas mélangés avec les clones applicatifs (`../projects/` ou autre). Des **liens symboliques** `services/ia_dev/projects/<id>``../../projects/<id>` (pour chaque id versionné, ex. `smart_ide`, `enso`, `builazoo`) permettent aux scripts `ia_dev` de résoudre les `conf.json` sous `projects/`. Après un clone neuf ou une réorganisation des dossiers:
```bash
./scripts/ensure-ia-dev-project-link.sh smart_ide
./scripts/ensure-ia-dev-project-link.sh enso
./scripts/ensure-ia-dev-project-link.sh builazoo
```
Le script `ensure-ia-dev-smart-ide-project-link.sh` appelle `ensure-ia-dev-project-link.sh smart_ide`.
Lexécution des scripts reste **depuis la racine `services/ia_dev/`**, comme dans la documentation amont du dépôt historique [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git) ; **smart_ide** fournit lenvironnement IDE, les scripts hôte, les unités systemd et les journaux sous `logs/` ([repo/logs-directory.md](./repo/logs-directory.md)).
## Journaux
- Tirage Git planifié des clones : `logs/git-pull-projects.log` ([repo/logs-directory.md](./repo/logs-directory.md), via [`cron/git-pull-wrapper.sh`](../cron/git-pull-wrapper.sh)).
- Scripts `ia_dev` : `logs/ia_dev.log` ([repo/logs-directory.md](./repo/logs-directory.md), via [`services/ia_dev/lib/smart_ide_logs.sh`](../services/ia_dev/lib/smart_ide_logs.sh)).
## Service dintégration
Le périmètre «service» côté monorepo est documenté sous [repo/ia-dev-smart-ide-integration.md](./repo/ia-dev-smart-ide-integration.md) (contrat, chemins, variables de référence).
## Relation aux dépôts
| Élément | Rôle |
|---------|------|
| **smart_ide** | Cible UX IDE, scripts socle, systemd, doc de déploiement, **`logs/`** |
| **`services/ia_dev/`** (module dans ce dépôt) | Agents, déploiements, ticketing ; confs projet dans `./projects/` + liens sous `services/ia_dev/projects/` |
Le futur **agent gateway** doit traiter `IA_DEV_ROOT` comme chemin canonique sur le serveur (résolution par défaut : `./services/ia_dev` puis `./ia_dev`). Voir [system-architecture.md](./system-architecture.md).
## Trajectoire : service `ia-dev-gateway`
Un service HTTP dédié ([features/ia-dev-service.md](./features/ia-dev-service.md), [API/ia-dev-gateway.md](./API/ia-dev-gateway.md)) prendra le relais pour les **clients** (Lapce, front, orchestrateur) : le répertoire référencé par **`IA_DEV_ROOT`** reste la **source de fichiers** côté hôte jusquà une éventuelle extraction ou conteneurisation documentée ailleurs.
1. **Phase actuelle** : module dans **smart_ide** + exécution manuelle / scripts depuis la racine `services/ia_dev`.
2. **Phase gateway** : binaire `ia-dev-gateway` sur lhôte, `IA_DEV_ROOT` pointant vers `./services/ia_dev` (ou `./ia_dev` si présent).
3. **Phase fork / mirror** : le dépôt amont `ia_dev` peut continuer à exister sur la forge ; la copie de travail dans **smart_ide** suit le flux Git habituel du monorepo.