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
..

Documentation du dépôt (docs/repo/)

Toute la documentation opérationnelle qui vivait auparavant sous des README.md à la racine ou dans cron/, systemd/, projects/, logs/, services/*/, etc. est centralisée ici. Les fichiers README.md restants à ces emplacements ne font que renvoyer vers ces pages pour éviter les doublons.

Convention

  • Canonique : fichiers sous docs/ (dont docs/repo/, docs/features/, docs/API/).
  • Arbre de code : README.md courts (souvent une ligne + lien) pour les outils qui ouvrent encore le dossier source.
  • Règles / agents IDE : répertoires .smartIde/ (voir smartide-config-directory.md).
  • Miroir doc Enso (docv) : larborescence volumineuse services/docv/enso-docs/ reste sur le disque sous ce chemin (copie depuis le dépôt enso) ; lexplication du flux de mise à jour est dans docv-enso-docs-mirror.md. Les fichiers enso-docs peuvent encore mentionner .cursor/ (doc amont enso).

Index

Document Contenu
smartide-config-directory.md Rôle de .smartIde/ (agents, règles, gateway)
smart-ide-overview.md Vision produit, stack IA, monorepo, liens vers larchitecture
projects-directory.md projects/<id>/conf.json, clones vs confs, active-project.json, cron
cron-git-pull.md Pull planifié des clones, config.env, systemd user, alternative cron
systemd-units.md Ollama, AnythingLLM, timer git-pull-project-clones
logs-directory.md Fichiers journaux locaux, .gitignore, origine des logs
docv-services-directory.md Répertoire services/docv/ : contrat dintégration, chemins données
docv-enso-docs-mirror.md Miroir enso-docs/, commande de resynchronisation
ia-dev-smart-ide-integration.md Module ia_dev dans smart_ide, journaux, liens architecture
ia-dev-repository-overview.md Dépôt ia_dev : agents, scripts deploy, usage standalone
ia-dev-project-conf-schema.md Schéma projects/<id>/conf.json, résolution du projet, règles agents
ia-dev-deploy-lib.md Bibliothèques partagées IA_DEV_ROOT/deploy/lib/
ia-dev-shared-lib.md IA_DEV_ROOT/lib/project_config.sh et résolution projet
Services HTTP (exploitation)
service-repos-devtools.md Clone / liste / load Git sous racine contrôlée
service-anythingllm-devtools.md AnythingLLM + repos-devtools + RAG initial (HTTP)
service-local-office.md API Office (docx, …)
service-smart-ide-orchestrator.md Routeur dintentions HTTP
service-ia-dev-gateway.md Gateway ia_dev (agents, runs, SSE)
service-agent-regex-search.md Recherche regex via ripgrep
service-claw-harness.md claw-code, proxy local
service-langextract.md Wrapper LangExtract
Scripts et extensions
script-anythingllm-pull-sync.md Hook post-merge → upload AnythingLLM
script-remote-data-ssh-sync.md SSH pull deployed data → local mirror → optional AnythingLLM ingest
service-carbonyl.md Carbonyl (navigateur terminal), sous-module amont
service-pageindex.md PageIndex (index sémantique vectorless), sous-module amont
service-chandra.md Chandra OCR, sous-module amont
service-smart-ide-tools-bridge.md Pont HTTP IDE + outils sous-modules
service-smart-ide-global-api.md API HTTP interne : proxy vers micro-services (Bearer partagé avec SSO)
service-smart-ide-sso-gateway.md Passerelle OIDC utilisateur → API globale → micro-services
../packages/smart-ide-upstreams/README.md Paquet @4nk/smart-ide-upstreams : liste des clés et résolution des URL / jetons
../packages/smart-ide-http-utils/README.md Paquet @4nk/smart-ide-http-utils : helpers HTTP partagés (proxy, headers, safe path)
extension-anythingllm-workspaces.md Extension AnythingLLM IDE (supprimée ; anythingllm-devtools)

Les spécifications détaillées (contrats HTTP, sécurité, orchestration) restent dans ../API/README.md et ../features/.