# ai_dev — intégration déploiement et secrets (Enso) Référence unique pour brancher **enso** sur l’outillage partagé (**`dev_ai` / `ai_dev`**) : variables d’environnement, secrets, scripts bash et agents Cursor. La section **7** résume les artefacts sous **`deploy/`** et renvoie aux fichiers versionnés dans le dépôt. ## 1. Racine outillage (`ai_dev` / `dev_ai`) Ordre de résolution (identique dans **`deploy-env.sh`**, **`ssh.sh`**, **`sync-secrets-to-ai_dev.sh`**, **`deploy/deploy.sh`**) : 1. `AI_DEV_ROOT` 2. `DEV_AI_ROOT` (clone **dev_ai** côte à côte du monorepo, ex. `~/code/dev_ai`) 3. `IA_DEV_ROOT` (compatibilité) 4. `~/code/dev_ai` 5. `~/code/ai_dev` 6. `~/code/ia_dev` Fichiers attendus : **`${ROOT}/deploy/lib/ssh.sh`**, et côté secrets : **`${ROOT}/.secrets/enso//enso-deploy.env`**. ## 2. Secrets canoniques Arborescence cible dans **ai_dev** (versionnée ou non selon politique du dépôt ai_dev) : ```text $TOOLING_ROOT/.secrets/enso//enso-deploy.env ``` (`$TOOLING_ROOT` = première racine résolue selon la liste §1.) Les scripts **enso** doivent **préférer** ce fichier s’il existe, sinon : ```text /.secrets//enso-deploy.env ``` ## 3. Script de synchronisation Fichier à ajouter : `deploy/scripts_v2/sync-secrets-to-ai_dev.sh` (merge depuis `.secrets//enso-deploy.env` du monorepo vers `.secrets/enso//enso-deploy.env` dans ai_dev.) ## 4. Bibliothèque `_lib/deploy-env.sh` Fonction `enso_resolve_deploy_env_file repo_root env` — à sourcer depuis `deploy.sh`, `bootstrap-from-local.sh`, `install-rust-on-local.sh`, `install-systemd-on-local.sh`. ## 5. Wrapper `deploy/deploy.sh` Exécute **`$TOOLING_ROOT/deploy/deploy.sh enso "$@"`** avec la résolution §1 (`$TOOLING_ROOT` = première racine trouvée). ## 6. Agents Cursor Ajoutés sous **`.cursor/agents/`** : - **`ai-dev-secrets-merge.md`** (`/ai-dev-secrets-merge`) — exécute le script de fusion des secrets vers ai_dev. - **`ai-dev-deploy.md`** (`/ai-dev-deploy`) — vérifie ai_dev, rappelle **ai-dev-secrets-merge** si besoin, puis applique intégralement **`deploy-by-script.md`**. - **`fix.md`** et **`evol.md`** — après un **`/push-by-script`** réussi (code de sortie **0**), enchaînent **`/ai-dev-deploy`** pour publier sur **test** la révision distante correspondant à la branche, sauf demande explicite de ne pas déployer. L’agent **`deploy-by-script.md`** référence ai_dev et la résolution des secrets (section *ai_dev*). **Après déploiement réussi** (**branche** **`test`**, **`pprod`** ou **`prod`**, log avec **`[enso-health] all checks passed`**) : **`deploy-by-script.md` §6** impose un appel **`call_mcp_tool`** : serveur **`cursor-ide-browser`**, outil **`browser_navigate`**, arguments **`url`** = **`ENSO_PUBLIC_ORIGIN`** (lue dans le **`enso-deploy.env`** résolu) ou repli `https://{env}.enso.4nkweb.com`, et **`newTab`**: **`true`**. Option : second **`browser_navigate`** pour `https://{env}.docv.4nkweb.com` (**docv**). Même consigne depuis le monorepo **enso** ou **dev_ai** (**`deploy/deploy.sh enso`**). --- ## 7. Fichiers à créer / remplacer dans le dépôt (contenu de référence) ### 7.1 `deploy/scripts_v2/_lib/deploy-env.sh` Voir le fichier dans le dépôt (boucle **`AI_DEV_ROOT`**, **`DEV_AI_ROOT`**, **`IA_DEV_ROOT`**, **`~/code/dev_ai`**, **`~/code/ai_dev`**, **`~/code/ia_dev`**). ### 7.2 `deploy/scripts_v2/_lib/ssh.sh` Même ordre de candidats que §7.1 ; source **`${cand}/deploy/lib/ssh.sh`** au premier trouvé. ### 7.3 `deploy/scripts_v2/sync-secrets-to-ai_dev.sh` Copie **`.secrets//enso-deploy.env`** du monorepo vers **`/.secrets/enso//enso-deploy.env`**, avec la même découverte de racine que §7.1. Voir le fichier versionné dans le dépôt. Puis : `chmod +x deploy/scripts_v2/sync-secrets-to-ai_dev.sh`. ### 7.4 Modifier `deploy/scripts_v2/deploy.sh` Après `SCRIPT_DIR` / `REPO_ROOT` et le parsing `ENV`, **remplacer** l’affectation directe de `DEPLOY_ENV_FILE` par : ```bash # shellcheck source=deploy-env.sh source "$SCRIPT_DIR/_lib/deploy-env.sh" enso_resolve_deploy_env_file "$REPO_ROOT" "$ENV" echo "[enso-deploy] enso-deploy.env source=${ENSO_DEPLOY_ENV_SOURCE} file=${DEPLOY_ENV_FILE}" ``` Conserver **`source "$SCRIPT_DIR/_lib/ssh.sh"`** **après** la résolution du fichier env (comme aujourd’hui), ou **avant** si l’ordre actuel est conservé — l’important est d’avoir **`DEPLOY_ENV_FILE`** défini avant `source "$DEPLOY_ENV_FILE"`. ### 7.5 Idem pour `bootstrap-from-local.sh`, `install-rust-on-local.sh`, `install-systemd-on-local.sh` Même bloc `source deploy-env.sh` + `enso_resolve_deploy_env_file "$REPO_ROOT" "$ENV"` à la place de `DEPLOY_ENV_FILE="${REPO_ROOT}/.secrets/..."`. ### 7.6 `deploy/deploy.sh` (racine du dossier `deploy/` dans enso) **`exec`** le premier **`${C}/deploy/deploy.sh enso "$@"`** trouvé avec la même liste de candidats que §1. Voir le fichier versionné ; **`chmod +x`** appliqué dans le dépôt. ### 7.7 `deploy/enso-deploy.env.example` En-tête : copie canonique sous l’outil partagé, repli monorepo, commande **`sync-secrets-to-ai_dev.sh`** (déjà présent dans le dépôt). ### 7.8 `deploy/README.md` et `docs/INSTALLATION_ENVIRONNEMENT.md` §7.15 **`dev_ai` / `ai_dev`** en premier, variables **`DEV_AI_ROOT`**, repli **`ia_dev`** et **`~/code/ia_dev`** ; secrets **`.secrets/enso//`** et script **`sync-secrets-to-ai_dev.sh`** (voir fichiers à jour dans le dépôt).