- Delete extensions/anythingllm-workspaces; document migration to anythingllm-devtools - Add services/carbonyl: shallow submodule fathyb/carbonyl, run-carbonyl.sh (Docker/native) - Add scripts/open-carbonyl-preview-test.sh and smart_ide.preview_urls.test in example conf - Docs: service-carbonyl, carbonyl-terminal-browser, architecture index updates
65 lines
5.7 KiB
Markdown
65 lines
5.7 KiB
Markdown
# Configurations projet (`projects/<id>/`)
|
||
|
||
Ce répertoire, à la **racine du monorepo `smart_ide`**, ne contient que les **fichiers de configuration** attendus par **`ia_dev`** (`conf.json` par identifiant de projet). Ce n’est **pas** le répertoire des **clones Git** des applications.
|
||
|
||
Les **sous-répertoires** `projects/<id>/` non listés dans le **`.gitignore`** à la racine (exceptions pour les ids versionnés) restent **ignorés par Git** : pour versionner un nouvel id, ajouter les lignes `!projects/<id>/` et `!projects/<id>/**` à côté des exceptions existantes.
|
||
|
||
## Clones applicatifs (docv, stacks métier, etc.)
|
||
|
||
Les dépôts sources des produits (ex. backend **docv** sous un chemin du type `…/enso/docv`, autres apps) doivent vivre **ailleurs**, selon la convention du poste — typiquement un répertoire **frère** du monorepo, par ex. **`../projects/<nom>/`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici.
|
||
|
||
- **`./projects/`** → **un seul fichier de configuration par id** : `projects/<id>/conf.json` (y compris le gabarit [`projects/example/conf.json`](../../projects/example/conf.json)). Pas de fichier `.code-workspace` versionné à côté : l’équivalent multi-root IDE est **`smart_ide.workspace`** dans ce même `conf.json`. `ia_dev` résout via le lien symbolique décrit dans [ia_dev-module.md](../ia_dev-module.md).
|
||
- **`../projects/`** (ou autre racine configurée) → arborescences Git complètes, builds, etc. ; dans chaque `conf.json`, **`project_path`** et les chemins **`deploy.*`** utiles sont **relatifs à la racine du monorepo smart_ide** (ex. `../enso`, `.`) ou **absolus** ; le script `cron/git-pull-project-clones.sh` et ia_dev les résolvent depuis cette racine (`ia_dev/lib/conf_path_resolve.sh`).
|
||
|
||
## `smart_ide`
|
||
|
||
- Fichier : `projects/smart_ide/conf.json`
|
||
- Après clone ou réorganisation des dossiers : `./scripts/ensure-ia-dev-project-link.sh smart_ide` (ou le wrapper `scripts/ensure-ia-dev-smart-ide-project-link.sh`) pour recréer le lien `ia_dev/projects/smart_ide` → `../../projects/smart_ide`.
|
||
|
||
## `enso`
|
||
|
||
- Fichier : `projects/enso/conf.json` — clone **enso** frère du monorepo (`project_path` typique `../enso`), déploiement `deploy/scripts_v2`, forge **4nk/enso** (wiki / issues), mails ticketing `AI.ENSO.*@4nkweb.com`.
|
||
- Chemins **absolus sur les serveurs** sous **`smart_ide.remote_data_access`** : alignés sur **`ENSO_REMOTE_ROOT`**, **`ENSO_SSH_HOST`** et **`data/dossiers-permanents`** (dépôt enso, `enso-deploy.env`). Valeurs réelles : fichiers **`enso-deploy.env`** non versionnés.
|
||
- Cron fragment : `cron/fragments/enso.cron`
|
||
- Pour **`ia_dev`** : lien symbolique `ia_dev/projects/enso` → `../../projects/enso` (recréer avec `./scripts/ensure-ia-dev-project-link.sh enso`).
|
||
|
||
## `builazoo`
|
||
|
||
- Fichier : `projects/builazoo/conf.json` — dépôt **sous la racine monorepo** (`project_path` : `builazoo`, soit `smart_ide/builazoo/`), forge **4nk/builazoo** (wiki / issues à ajuster si le dépôt diffère), mails ticketing `AI.BUILAZOO.*@4nkweb.com`.
|
||
- **`smart_ide.remote_data_access`** : alias SSH `builazoo-test` / `builazoo-pprod` / `builazoo-prod` (à déclarer dans `~/.ssh/config` comme pour les autres ids).
|
||
- Multi-root IDE : **`smart_ide.workspace`** dans `conf.json` (dossiers + `smartIde.activeProjectId`).
|
||
- Cron fragment : `cron/fragments/builazoo.cron`
|
||
- Pour **`ia_dev`** : `./scripts/ensure-ia-dev-project-link.sh builazoo`
|
||
- Le répertoire **`builazoo/`** à la racine du monorepo est partiellement ignoré par Git (sauf `builazoo/README.md`) : y placer le clone ou les sources.
|
||
|
||
## Synchronisation Git planifiée
|
||
|
||
Pour **chaque** `projects/<id>/conf.json`, le tirage automatique utilise **`cron/config.env`** (`PULL_SYNC_*`) et **`cron/git-pull-wrapper.sh`** → **`cron/git-pull-project-clones.sh`**.
|
||
|
||
- **Timer systemd utilisateur** (recommandé) : `scripts/install-git-pull-systemd-user.sh` — voir [cron-git-pull.md](./cron-git-pull.md)
|
||
- Désactiver pour un id : `"cron": { "git_pull": false }` dans le `conf.json`
|
||
- Désactiver tout : `PULL_SYNC_ENABLED=0` dans `config.env` ou `config.local.env`
|
||
|
||
`project_path` est résolu en chemin absolu à partir de la racine **smart_ide** lorsqu’il est relatif.
|
||
|
||
## Données déployées, SSH, AnythingLLM et IDE
|
||
|
||
Spécification : [features/remote-deployed-data-ssh.md](../features/remote-deployed-data-ssh.md).
|
||
|
||
### Bloc optionnel `smart_ide` dans `conf.json`
|
||
|
||
Clé **`smart_ide`** avec notamment **`remote_data_access`**, **`anythingllm_workspace_slug`**, **`workspace`** (équivalent `.code-workspace` : `folders` + `settings.smartIde.activeProjectId`), **`preview_urls`** (ex. **`test`** : URL du déploiement test pour [Carbonyl](../features/carbonyl-terminal-browser.md)). Exemple : `projects/enso/conf.json`.
|
||
|
||
### Projet actif pour l’éditeur / Cursor
|
||
|
||
1. Copier [`projects/active-project.json.example`](../../projects/active-project.json.example) vers **`projects/active-project.json`** (non versionné) ; renseigner **`id`**, optionnellement **`default_env`**, **`notes`**.
|
||
2. Pour ouvrir un workspace multi-dossiers dans VS Code / Cursor : lire **`smart_ide.workspace`** dans **`projects/<id>/conf.json`** (même schéma qu’un fichier `.code-workspace`) — copier ce bloc dans un fichier local `.code-workspace` si l’éditeur l’exige, ou configurer les dossiers à la main.
|
||
|
||
Nouveau projet : partir de [`projects/example/conf.json`](../../projects/example/conf.json) → `projects/<nouvel_id>/conf.json`.
|
||
|
||
Convention agents : `.smartIde/rules/smart-ide-ia-dev-bridge.mdc`.
|
||
|
||
## Référence amont (schéma conf)
|
||
|
||
Schéma détaillé des champs `conf.json` : [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md) (aligné sur `ia_dev/projects/README.md` amont). Extensions **`cron`** et **`smart_ide`** : spécifiques smart_ide ; `ia_dev` peut ignorer les champs non lus.
|