From 7f1cee487c7973df79685f2f798ebaac1f4773ae Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Fri, 3 Apr 2026 16:30:42 +0200 Subject: [PATCH] Cursor ia-dev bridge, versioned project confs, docv and ecosystem docs - Add .cursor agents ia-dev-* and smart-ide-ia-dev-bridge rule - Track ia_dev project conf under projects/smart_ide; link script for ia_dev/projects - Document docv AI integration and ecosystem architecture/sync strategy - Update README, platform-target, system-architecture, submodule doc --- .cursor/agents/ia-dev-agent-loop.md | 23 ++++ ...ia-dev-branch-align-by-script-from-test.md | 23 ++++ .../agents/ia-dev-change-to-all-branches.md | 23 ++++ .../ia-dev-closure-point-7-justification.md | 23 ++++ .cursor/agents/ia-dev-code.md | 23 ++++ .cursor/agents/ia-dev-deploy-by-script.md | 23 ++++ .cursor/agents/ia-dev-deploy-pprod-or-prod.md | 23 ++++ .cursor/agents/ia-dev-docupdate.md | 23 ++++ .cursor/agents/ia-dev-evol.md | 23 ++++ .cursor/agents/ia-dev-fix-lint.md | 23 ++++ .cursor/agents/ia-dev-fix-search.md | 23 ++++ .cursor/agents/ia-dev-fix.md | 23 ++++ .cursor/agents/ia-dev-gitea-issues-process.md | 23 ++++ .cursor/agents/ia-dev-notary-ai-loop.md | 23 ++++ .cursor/agents/ia-dev-notary-ai-process.md | 23 ++++ .cursor/agents/ia-dev-push-by-script.md | 23 ++++ .cursor/agents/ia-dev-setup-host.md | 25 ++++ .cursor/rules/smart-ide-ia-dev-bridge.mdc | 20 +++ .gitignore | 4 +- README.md | 8 +- docs/README.md | 4 +- docs/anythingllm-workspaces.md | 1 + docs/ecosystem-architecture-and-sync.md | 124 ++++++++++++++++++ docs/features/docv-ai-integration.md | 36 +++++ docs/features/sso-docv-enso.md | 2 + docs/ia_dev-project-smart_ide.md | 33 ++++- docs/ia_dev-submodule.md | 10 +- docs/platform-target.md | 4 + docs/system-architecture.md | 7 +- projects/README.md | 19 +++ projects/smart_ide/conf.json | 31 +++++ .../ensure-ia-dev-smart-ide-project-link.sh | 15 +++ 32 files changed, 698 insertions(+), 13 deletions(-) create mode 100644 .cursor/agents/ia-dev-agent-loop.md create mode 100644 .cursor/agents/ia-dev-branch-align-by-script-from-test.md create mode 100644 .cursor/agents/ia-dev-change-to-all-branches.md create mode 100644 .cursor/agents/ia-dev-closure-point-7-justification.md create mode 100644 .cursor/agents/ia-dev-code.md create mode 100644 .cursor/agents/ia-dev-deploy-by-script.md create mode 100644 .cursor/agents/ia-dev-deploy-pprod-or-prod.md create mode 100644 .cursor/agents/ia-dev-docupdate.md create mode 100644 .cursor/agents/ia-dev-evol.md create mode 100644 .cursor/agents/ia-dev-fix-lint.md create mode 100644 .cursor/agents/ia-dev-fix-search.md create mode 100644 .cursor/agents/ia-dev-fix.md create mode 100644 .cursor/agents/ia-dev-gitea-issues-process.md create mode 100644 .cursor/agents/ia-dev-notary-ai-loop.md create mode 100644 .cursor/agents/ia-dev-notary-ai-process.md create mode 100644 .cursor/agents/ia-dev-push-by-script.md create mode 100644 .cursor/agents/ia-dev-setup-host.md create mode 100644 .cursor/rules/smart-ide-ia-dev-bridge.mdc create mode 100644 docs/ecosystem-architecture-and-sync.md create mode 100644 docs/features/docv-ai-integration.md create mode 100644 projects/README.md create mode 100644 projects/smart_ide/conf.json create mode 100755 scripts/ensure-ia-dev-smart-ide-project-link.sh diff --git a/.cursor/agents/ia-dev-agent-loop.md b/.cursor/agents/ia-dev-agent-loop.md new file mode 100644 index 0000000..2311a57 --- /dev/null +++ b/.cursor/agents/ia-dev-agent-loop.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-agent-loop +description: Boucle agent / ticketing smart_ide via ia_dev (agent-loop). Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/agent-loop.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-branch-align-by-script-from-test.md b/.cursor/agents/ia-dev-branch-align-by-script-from-test.md new file mode 100644 index 0000000..2180f92 --- /dev/null +++ b/.cursor/agents/ia-dev-branch-align-by-script-from-test.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-branch-align-by-script-from-test +description: Alignement branches smart_ide via ia_dev. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/branch-align-by-script-from-test.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-change-to-all-branches.md b/.cursor/agents/ia-dev-change-to-all-branches.md new file mode 100644 index 0000000..11b52e0 --- /dev/null +++ b/.cursor/agents/ia-dev-change-to-all-branches.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-change-to-all-branches +description: Propager changements sur branches smart_ide via ia_dev. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/change-to-all-branches.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-closure-point-7-justification.md b/.cursor/agents/ia-dev-closure-point-7-justification.md new file mode 100644 index 0000000..bd2ce58 --- /dev/null +++ b/.cursor/agents/ia-dev-closure-point-7-justification.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-closure-point-7-justification +description: Clôture point 7 smart_ide via ia_dev. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/closure-point-7-justification.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-code.md b/.cursor/agents/ia-dev-code.md new file mode 100644 index 0000000..000600b --- /dev/null +++ b/.cursor/agents/ia-dev-code.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-code +description: Qualité code smart_ide via procédure ia_dev (code). Indiquer l'environnement test / pprod / prod. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/code.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-deploy-by-script.md b/.cursor/agents/ia-dev-deploy-by-script.md new file mode 100644 index 0000000..fd35c5c --- /dev/null +++ b/.cursor/agents/ia-dev-deploy-by-script.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-deploy-by-script +description: Déploiement par script smart_ide via ia_dev (deploy-by-script). Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/deploy-by-script.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-deploy-pprod-or-prod.md b/.cursor/agents/ia-dev-deploy-pprod-or-prod.md new file mode 100644 index 0000000..3515c04 --- /dev/null +++ b/.cursor/agents/ia-dev-deploy-pprod-or-prod.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-deploy-pprod-or-prod +description: Déploiement pprod/prod smart_ide via ia_dev. Indiquer l'environnement cible. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/deploy-pprod-or-prod.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-docupdate.md b/.cursor/agents/ia-dev-docupdate.md new file mode 100644 index 0000000..2daceb9 --- /dev/null +++ b/.cursor/agents/ia-dev-docupdate.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-docupdate +description: Mise à jour documentation smart_ide via ia_dev (docupdate). Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/docupdate.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-evol.md b/.cursor/agents/ia-dev-evol.md new file mode 100644 index 0000000..2ff16b4 --- /dev/null +++ b/.cursor/agents/ia-dev-evol.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-evol +description: Évolutions smart_ide via procédure ia_dev (evol). Indiquer l'environnement test / pprod / prod. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/evol.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-fix-lint.md b/.cursor/agents/ia-dev-fix-lint.md new file mode 100644 index 0000000..664a04a --- /dev/null +++ b/.cursor/agents/ia-dev-fix-lint.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-fix-lint +description: Lint smart_ide via procédure ia_dev (fix-lint). Indiquer l'environnement test / pprod / prod. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/fix-lint.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-fix-search.md b/.cursor/agents/ia-dev-fix-search.md new file mode 100644 index 0000000..368de2c --- /dev/null +++ b/.cursor/agents/ia-dev-fix-search.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-fix-search +description: Recherche avant correctif smart_ide via ia_dev (fix-search). Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/fix-search.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-fix.md b/.cursor/agents/ia-dev-fix.md new file mode 100644 index 0000000..bbd7a13 --- /dev/null +++ b/.cursor/agents/ia-dev-fix.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-fix +description: Correctifs smart_ide via procédure ia_dev (fix). Indiquer l'environnement test / pprod / prod. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/fix.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-gitea-issues-process.md b/.cursor/agents/ia-dev-gitea-issues-process.md new file mode 100644 index 0000000..d93bbaa --- /dev/null +++ b/.cursor/agents/ia-dev-gitea-issues-process.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-gitea-issues-process +description: Traitement issues Gitea smart_ide via ia_dev. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/gitea-issues-process.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-notary-ai-loop.md b/.cursor/agents/ia-dev-notary-ai-loop.md new file mode 100644 index 0000000..deb49e4 --- /dev/null +++ b/.cursor/agents/ia-dev-notary-ai-loop.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-notary-ai-loop +description: Boucle notary-ai smart_ide via ia_dev. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/notary-ai-loop.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-notary-ai-process.md b/.cursor/agents/ia-dev-notary-ai-process.md new file mode 100644 index 0000000..39184be --- /dev/null +++ b/.cursor/agents/ia-dev-notary-ai-process.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-notary-ai-process +description: Traitement notary-ai smart_ide via ia_dev. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/notary-ai-process.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-push-by-script.md b/.cursor/agents/ia-dev-push-by-script.md new file mode 100644 index 0000000..062503a --- /dev/null +++ b/.cursor/agents/ia-dev-push-by-script.md @@ -0,0 +1,23 @@ +--- +name: ia-dev-push-by-script +description: Commit et push smart_ide via ia_dev (push-by-script). Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/push-by-script.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/agents/ia-dev-setup-host.md b/.cursor/agents/ia-dev-setup-host.md new file mode 100644 index 0000000..89ec03c --- /dev/null +++ b/.cursor/agents/ia-dev-setup-host.md @@ -0,0 +1,25 @@ +--- +name: ia-dev-setup-host +description: Préparation hôte / socle (Ollama, AnythingLLM, etc.) documentée smart_ide ; scripts ia_dev depuis ia_dev/. Indiquer l'environnement. +model: inherit +is_background: false +--- + +## Contexte obligatoire (dépôt smart_ide → ia_dev) + +- **Identifiant projet ia_dev :** `smart_ide` (conf : `projects/smart_ide/` à la racine ; lien sous `ia_dev/projects/smart_ide`). +- **Environnement cible :** `test`, `pprod` ou `prod`. Le reprendre dans le message utilisateur ; **si absent, le demander** avant d'exécuter des scripts dépendants du env. +- **Racine des scripts ia_dev :** le dossier `ia_dev/` à la racine du workspace **smart_ide**. Pour `deploy/`, `gitea-issues/`, etc. : se placer dans ce répertoire avant d'exécuter. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** exporter `MAIL_TO` avec l'adresse pour l'environnement choisi, lue dans `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` : test → `AI.SMART_IDE.TEST@4nkweb.com`, pprod → `AI.SMART_IDE.PPROD@4nkweb.com`, prod → `AI.SMART_IDE.PROD@4nkweb.com`. +- **Dépôt applicatif :** racine du workspace smart_ide ; `project_path` dans `conf.json` doit y pointer. Doc principale du monorepo : `docs/` à la racine (`projects/smart_ide/docs` sous ia_dev souvent absent). +- **Chemins machines** dans les agents ia_dev (autre machine utilisateur) : les remplacer par le clone réel (workspace + `ia_dev/` et chemins issus de `conf.json`). +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). +- **Périmètre hôte :** scripts et doc smart_ide pour le socle (Ollama, AnythingLLM, systemd, `setup/`, `scripts/`) ; les commandes définies dans l'agent ia_dev s'exécutent depuis `ia_dev/` lorsque la procédure l'exige. + + +## Délégation + +Lire le fichier **`ia_dev/.cursor/agents/setup-host.md`** et appliquer **intégralement** sa procédure et ses contraintes, en respectant le contexte ci-dessus. + +**Référence résolution projet / env :** `ia_dev/projects/README.md`. diff --git a/.cursor/rules/smart-ide-ia-dev-bridge.mdc b/.cursor/rules/smart-ide-ia-dev-bridge.mdc new file mode 100644 index 0000000..26bbf99 --- /dev/null +++ b/.cursor/rules/smart-ide-ia-dev-bridge.mdc @@ -0,0 +1,20 @@ +--- +description: Pont smart_ide → ia_dev — projet smart_ide, environnement, cwd scripts +globs: ia_dev/**,docs/**,services/**,scripts/**,setup/**,systemd/**,projects/**,README.md +alwaysApply: false +--- + +# smart_ide ↔ ia_dev (projet et environnement) + +Quand le périmètre touche ce dépôt et le sous-module **`ia_dev/`** : + +- **Identifiant projet ia_dev :** `smart_ide` ; conf versionnée : **`projects/smart_ide/conf.json`** à la racine du workspace ; `ia_dev/projects/smart_ide` doit être un **lien** vers ce dossier (script `scripts/ensure-ia-dev-smart-ide-project-link.sh`). +- **Environnement :** `test` | `pprod` | `prod`. Le reprendre depuis le message utilisateur ; **demander** s’il manque avant des actions dépendantes du env. +- **Exécution des scripts ia_dev :** répertoire courant = racine du clone **`ia_dev/`** (sous le workspace smart_ide). Pas de mélange avec la racine smart_ide pour `deploy/`, `gitea-issues/`, etc. +- **Sélection projet pour les scripts :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; détail : `ia_dev/projects/README.md`. +- **MAIL_TO (ticketing / mails) :** lire `projects/smart_ide/conf.json` (racine workspace) → `tickets.authorized_emails.to` pour l’env choisi (ex. test → `AI.SMART_IDE.TEST@4nkweb.com`). +- **Code et doc applicative :** racine du workspace smart_ide ; doc indexée sous `docs/` à la racine. `ia_dev/projects/smart_ide/docs` peut être absent. +- **Chemins absolus** dans la doc ou agents ia_dev rédigés pour un autre poste : les remplacer par les chemins du workspace actuel et par `project_path` dans `conf.json`. +- **`projects/*/conf.json` :** ne pas modifier sans validation utilisateur (règle ia_dev). + +Les agents nommés **`ia-dev-*`** dans `.cursor/agents/` renvoient explicitement vers `ia_dev/.cursor/agents/*.md` avec ce contexte. diff --git a/.gitignore b/.gitignore index b1cf440..2155b17 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ # Vendored / cloned upstream trees (large; not part of smart_ide source history) core_ide/ -projects/ -node_modules/ +# Clones applicatifs : hors de ce dépôt (ex. répertoire frère ../projects/). Les confs ia_dev sont dans ./projects// (versionnées). +*node_modules/ diff --git a/README.md b/README.md index 0c498ef..3458905 100644 --- a/README.md +++ b/README.md @@ -27,23 +27,25 @@ Voir [docs/anythingllm-workspaces.md](./docs/anythingllm-workspaces.md). ## Dépôt `ia_dev` (sous-module Git) -Le dépôt [**ia_dev**](https://git.4nkweb.com/4nk/ia_dev.git) est intégré comme **sous-module** dans le répertoire [`./ia_dev`](./ia_dev) : équipe d’agents, configs `projects//`, scripts `deploy/`, ticketing Gitea, etc. Cloner avec `git clone --recurse-submodules` ou initialiser avec `git submodule update --init --recursive`. Détail : [docs/ia_dev-submodule.md](./docs/ia_dev-submodule.md). +Le dépôt [**ia_dev**](https://git.4nkweb.com/4nk/ia_dev.git) est intégré comme **sous-module** dans le répertoire [`./ia_dev`](./ia_dev) : équipe d’agents, scripts `deploy/`, ticketing Gitea, etc. Les **fichiers `conf.json`** pour ce monorepo sont sous [`./projects//`](./projects/README.md) (pas les clones Git ; ceux-ci ailleurs, ex. `../projects/`). Cloner avec `git clone --recurse-submodules` ou initialiser avec `git submodule update --init --recursive`. Détail : [docs/ia_dev-submodule.md](./docs/ia_dev-submodule.md). Les agents Cursor **pont** (`ia-dev-*`) sont décrits dans [docs/ia_dev-project-smart_ide.md](./docs/ia_dev-project-smart_ide.md). ## Documentation | Document | Contenu | |----------|---------| | [docs/README.md](./docs/README.md) | Index de la documentation technique (`docs/`, `docs/features/`, `docs/API/`) | -| [docs/platform-target.md](./docs/platform-target.md) | Plateforme en ligne : envs test/pprod/prod, IA same-host, SSO docv | +| [docs/platform-target.md](./docs/platform-target.md) | Plateforme en ligne : envs test/pprod/prod, IA same-host, SSO docv, API IA docv | | [docs/API/README.md](./docs/API/README.md) | Référence HTTP des services sous `services/` (endpoints, auth, ports) | | [docs/infrastructure.md](./docs/infrastructure.md) | LAN, SSH, scripts d’accès hôte | | [docs/services.md](./docs/services.md) | Ollama, AnythingLLM Docker, intégration | | [docs/anythingllm-workspaces.md](./docs/anythingllm-workspaces.md) | Workspaces par projet, synchronisation | | [docs/ux-navigation-model.md](./docs/ux-navigation-model.md) | Remplacer l’explorer : intentions, risques, vues, graphe, mode expert | | [docs/system-architecture.md](./docs/system-architecture.md) | Couches, modules, agents, gateway, OpenShell, événements | +| [docs/ecosystem-architecture-and-sync.md](./docs/ecosystem-architecture-and-sync.md) | smart_ide, clones projet, API IA, Git / Ollama / AnythingLLM ; automation synchro | | [docs/deployment-target.md](./docs/deployment-target.md) | Client Linux + SSH : serveur = socle IA + repos | +| [projects/README.md](./projects/README.md) | Confs `ia_dev` (`conf.json` seuls) — distinct des clones sous `../projects/` | | [docs/ia_dev-submodule.md](./docs/ia_dev-submodule.md) | Sous-module Git `ia_dev`, clone / mise à jour | -| [docs/ia_dev-project-smart_ide.md](./docs/ia_dev-project-smart_ide.md) | Projet `ia_dev` `smart_ide` : `conf.json`, wiki/issues forge 4nk | +| [docs/ia_dev-project-smart_ide.md](./docs/ia_dev-project-smart_ide.md) | Projet `ia_dev` `smart_ide` : `conf.json`, wiki/issues forge 4nk, agents Cursor `ia-dev-*` | | [docs/features/langextract-api.md](./docs/features/langextract-api.md) | API locale LangExtract (extraction structurée) | | [docs/features/claw-harness-api.md](./docs/features/claw-harness-api.md) | Intégration claw-code (multi-modèles, sans Anthropic dans les gabarits) | | [docs/features/agent-regex-search-api.md](./docs/features/agent-regex-search-api.md) | API recherche regex code (ripgrep), contexte article Cursor | diff --git a/docs/README.md b/docs/README.md index d7d2123..26f804d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,6 +9,7 @@ Index des documents à la racine de `docs/`. Les **fonctionnalités** détaillé | [platform-target.md](./platform-target.md) | Vision plateforme en ligne, 3 envs, machine IA unique vs SSH, SSO, navigateur optionnel | | [implementation-rollout.md](./implementation-rollout.md) | Déroulé du plan plateforme : doc + code minimal, suites | | [system-architecture.md](./system-architecture.md) | Couches, monorepo, cartographie des dossiers, gateway, OpenShell, micro-services | +| [ecosystem-architecture-and-sync.md](./ecosystem-architecture-and-sync.md) | smart_ide, projets développés, API IA, Ollama / AnythingLLM / Git ; automation et synchro | | [core-ide.md](./core-ide.md) | Socle applicatif Lapce : `core_ide/`, clone amont, build | | [deployment-target.md](./deployment-target.md) | Client Linux + SSH, variante machine IA unique, serveur socle IA et repos | | [infrastructure.md](./infrastructure.md) | SSH, accès hôte, renvois vers les scripts | @@ -38,7 +39,7 @@ Index des documents à la racine de `docs/`. Les **fonctionnalités** détaillé | Document | Contenu | |----------|---------| -| [ia_dev-submodule.md](./ia_dev-submodule.md) | Sous-module `ia_dev` (forge 4NK), agents et `projects//` | +| [ia_dev-submodule.md](./ia_dev-submodule.md) | Sous-module `ia_dev` (forge 4NK), agents ; confs versionnées dans [`../projects/`](../projects/) | ## Fonctionnalités (`features/`) @@ -54,6 +55,7 @@ Index des documents à la racine de `docs/`. Les **fonctionnalités** détaillé | [features/orchestrator-api.md](./features/orchestrator-api.md) | Contrat HTTP orchestrateur (Ollama, ALLM, services) | | [features/lapce-porting-roadmap.md](./features/lapce-porting-roadmap.md) | Phases portage extension AnythingLLM → Lapce | | [features/sso-docv-enso.md](./features/sso-docv-enso.md) | OIDC front ↔ docv (Enso) | +| [features/docv-ai-integration.md](./features/docv-ai-integration.md) | Backend docv : API IA smart_ide, clones `../projects/`, AnythingLLM | | [features/browser-automation-criteria.md](./features/browser-automation-criteria.md) | Critères service navigateur optionnel | ## Arborescence hors `docs/` diff --git a/docs/anythingllm-workspaces.md b/docs/anythingllm-workspaces.md index 2fff43e..c069cca 100644 --- a/docs/anythingllm-workspaces.md +++ b/docs/anythingllm-workspaces.md @@ -14,3 +14,4 @@ - Instance Docker décrite dans [services.md](./services.md) : stockage hôte typiquement sous `$HOME/anythingllm` sur l’**hôte qui exécute le conteneur** — en **première cible de déploiement**, cet hôte est le **serveur distant** (SSH), pas obligatoirement le poste Linux client ; la création de **plusieurs workspaces** se fait dans l’UI AnythingLLM (ou via API) en conservant la convention « un workspace = un projet ». - L’orchestrateur IDE décide **quand** interroger AnythingLLM (voir [system-architecture.md](./system-architecture.md)). L’URL vue depuis le client peut exiger un **tunnel SSH** ou un rebond réseau : [deployment-target.md](./deployment-target.md). +- Stratégie d’ensemble (Git, hooks, scripts de synchro) : [ecosystem-architecture-and-sync.md](./ecosystem-architecture-and-sync.md). diff --git a/docs/ecosystem-architecture-and-sync.md b/docs/ecosystem-architecture-and-sync.md new file mode 100644 index 0000000..25c57e7 --- /dev/null +++ b/docs/ecosystem-architecture-and-sync.md @@ -0,0 +1,124 @@ +# Architecture cible : smart_ide, projets développés, API IA et hôte + +Ce document fixe la **répartition souhaitée** entre le monorepo **smart_ide**, les **dépôts applicatifs** développés ailleurs, la **couche API IA** (orchestrateur, gateway, micro-services HTTP), et les **services d’hôte** (**Git**, **Ollama**, **AnythingLLM**). Il décrit ensuite une **stratégie d’automatisation et de synchronisation** cohérente, centrée sur **Git** et des **scripts** du dépôt smart_ide. + +Références complémentaires : [system-architecture.md](./system-architecture.md), [platform-target.md](./platform-target.md), [anythingllm-workspaces.md](./anythingllm-workspaces.md), [features/orchestrator-api.md](./features/orchestrator-api.md), [features/ia-dev-service.md](./features/ia-dev-service.md), [API/README.md](./API/README.md), [projects/README.md](../projects/README.md), [features/docv-ai-integration.md](./features/docv-ai-integration.md). + +## 1. Périmètres et référentiels + +| Élément | Rôle | Où vit la vérité opérationnelle | +|---------|------|----------------------------------| +| **smart_ide** | Socle : doc, `services/*`, scripts, systemd, confs `ia_dev` (`./projects//conf.json`), sous-module **`ia_dev/`** | Dépôt Git **smart_ide** (forge interne) | +| **Projets développés** | Code métier (docv, autres produits) : sources, builds, tests | **Autres** dépôts Git ; clones sur disque en dehors de `./projects/` (convention : répertoire frère `../projects//` ou équivalent) | +| **Couche API IA** | Routage HTTP, auth, appels vers LLM, RAG, outils, agents | Processus sur l’**hôte** (systemd, ports locaux) ; contrats décrits sous `docs/API/` | +| **Git (hôte)** | Historique des dépôts, hooks, branches par environnement | Chaque dépôt ; politique de branche documentée par projet | +| **Ollama (hôte)** | Inférence locale (modèles) | Service sur l’hôte qui exécute l’inférence ; pas de duplication d’historique Git | +| **AnythingLLM (hôte)** | Workspaces RAG **par projet**, threads, documents indexés | Instance Docker ou service ; données persistées côté hôte ; **pas** substitut à Git pour le code source | + +La **mémoire RAG** (AnythingLLM) est une **vue dérivée** des fichiers autorisés du dépôt : elle doit suivre des règles d’**inclusion / exclusion** explicites (ex. `.4nkaiignore`), alignées avec la sécurité. + +## 2. Schéma logique des flux + +```mermaid +flowchart TB + subgraph repos [Dépôts Git] + SI[smart_ide] + P1[projet_A_clone] + P2[projet_B_clone] + end + subgraph host [Hôte] + Git[Git_cli_hooks] + Oll[Ollama] + ALLM[AnythingLLM] + end + subgraph api [Couche API IA smart_ide] + Orch[orchestrator] + GW[ia_dev_gateway] + MS[micro_services] + end + SI --> Git + P1 --> Git + P2 --> Git + Orch --> Oll + Orch --> ALLM + Orch --> GW + Orch --> MS + GW --> SI + Clients[IDE_docv_autres] --> Orch +``` + +- Les **clients** (Lapce, front, backend docv, scripts) parlent à l’**orchestrateur** et aux services exposés selon [API/README.md](./API/README.md). +- L’**orchestrateur** route vers **Ollama** (génération), **AnythingLLM** (RAG / contexte documentaire), **`ia-dev-gateway`** (agents / exécutions `ia_dev`), et les **micro-services** (`langextract-api`, `agent-regex-search-api`, `repos-devtools-server`, etc.) selon l’intention. +- **Git** relie les dépôts au disque ; les **hooks** et scripts assument la **propagation contrôlée** vers AnythingLLM après changements validés dans l’historique. + +## 3. Rôle de chaque brique hôte + +### Git + +- **Source de vérité** pour le code et la documentation versionnée des projets. +- **Branches** : alignement avec les environnements (test / pprod / prod) selon la politique du projet ; smart_ide documente les cibles dans [platform-target.md](./platform-target.md) et [deployment-target.md](./deployment-target.md). +- **Sous-module `ia_dev`** : `git submodule update --init --recursive` sur smart_ide ; puis scripts de post-checkout documentés ([ia_dev-submodule.md](./ia_dev-submodule.md), [projects/README.md](../projects/README.md)). + +### Ollama + +- Point d’entrée pour les **modèles** consommés par l’orchestrateur, le gateway ou les outils ; configuration hôte (Docker ou natif) : [services.md](./services.md). +- Aucune synchronisation automatique implicite avec les dépôts : seuls les **artefacts modèle** (pull Ollama) sont gérés côté Ollama. + +### AnythingLLM + +- **Un workspace par projet** logique : [anythingllm-workspaces.md](./anythingllm-workspaces.md). +- Le workspace doit être **alimenté** à partir des clones autorisés ; si workspace ou clone **manque**, la procédure est : cloner / mettre à jour le dépôt, créer ou rattacher le workspace, lancer une synchro (voir § 4). + +### Outillage Git HTTP (`repos-devtools-server`) + +- Clone et rafraîchissement de dépôts dans une **racine contrôlée** (`REPOS_DEVTOOLS_ROOT`) : complément à Git en ligne de commande pour l’IDE ou l’automation ; détail : [API/repos-devtools-server.md](./API/repos-devtools-server.md). + +## 4. Stratégie d’automatisation et de synchronisation + +Objectif : après un changement **tracé dans Git**, les systèmes en aval (AnythingLLM, résolution `ia_dev`) restent **cohérents** sans copie manuelle ad hoc, dans la limite des outils actuels. + +### 4.1 Ordre de référence (nouvelle machine ou post-clone) + +1. Cloner **smart_ide** avec sous-modules : `git clone --recurse-submodules …`. +2. Initialiser / mettre à jour **`ia_dev`** : `git submodule update --init --recursive`. +3. Recréer le lien conf projet : `./scripts/ensure-ia-dev-smart-ide-project-link.sh` ([projects/README.md](../projects/README.md)). +4. Cloner les **projets applicatifs** à l’emplacement convenu (ex. `../projects//`) et vérifier les chemins **absolus** dans `projects//conf.json` si `ia_dev` doit les piloter. +5. Démarrer **Ollama** et **AnythingLLM** sur l’hôte ([services.md](./services.md)) ; créer les **workspaces** et noter les **slugs**. +6. Configurer l’environnement de synchro AnythingLLM : `~/.config/4nk/anythingllm-sync.env` (URL, clé API) — ne pas commiter les secrets. +7. Par dépôt à indexer : fichier **`.anythingllm.json`** à la racine avec `{ "workspaceSlug": "…" }` (ou variable d’environnement équivalente), puis installer le hook **post-merge** : [features/anythingllm-pull-sync-after-pull.md](./features/anythingllm-pull-sync-after-pull.md), [scripts/anythingllm-pull-sync/README.md](../scripts/anythingllm-pull-sync/README.md). + +### 4.2 Cycle de travail développeur (projet applicatif) + +1. `git pull` (ou `merge`) sur le clone du projet. +2. Le hook **post-merge** exécute **`scripts/anythingllm-pull-sync/sync.mjs`** : envoi des fichiers **modifiés ou ajoutés** vers le workspace AnythingLLM du projet, avec exclusions **`.4nkaiignore`**. +3. Limites documentées : pas de suppression automatique des documents retirés du repo dans la version actuelle du script ; traiter les gros refactors par une **resynchro** manuelle ou évolution du script si le besoin est récurrent. + +### 4.3 Cycle de travail sur smart_ide + +1. `git pull` sur smart_ide ; mettre à jour le sous-module **`ia_dev`** si le pointeur parent a bougé. +2. Réexécuter **`ensure-ia-dev-smart-ide-project-link.sh`** si le répertoire `ia_dev/projects/` a été réinitialisé. +3. Option : installer le même hook **post-merge** sur le dépôt **smart_ide** si un workspace AnythingLLM est dédié au monorepo (fichier `.anythingllm.json` + slug). + +### 4.4 Agents, déploiement, ticketing (`ia_dev`) + +- Exécution depuis la **racine** du sous-module `ia_dev/` ; résolution du projet : `IA_PROJECT_ID`, `--project`, `MAIL_TO`, `AI_AGENT_TOKEN` — voir `ia_dev/projects/README.md` dans le sous-module. +- Les scripts **ne remplacent pas** Git : ils **lisent** `conf.json` pour savoir où sont les dépôts et comment déployer. + +### 4.5 Cohérence « clone présent + workspace aligné » + +| Situation | Action | +|-----------|--------| +| Clone absent | `git clone` (ou API `repos-devtools-server` si périmètre autorisé) vers la racine convenue ; mettre à jour `project_path` dans `conf.json` si le chemin change (validation humaine pour toute modification de conf). | +| Workspace AnythingLLM absent | Créer le workspace dans l’UI ou l’API AnythingLLM ; renseigner `.anythingllm.json` ou `ANYTHINGLLM_WORKSPACE_SLUG`. | +| Workspace désynchronisé | `git pull` sur le clone concerné pour déclencher le hook ; ou exécuter manuellement `sync.mjs` avec les bons répertoires / variables. | +| Nouveau fichier sensible dans le dépôt | Vérifier **`.4nkaiignore`** avant le prochain upload ; ne pas indexer de secrets. | + +## 5. Intégrations tierces (ex. docv) + +Le backend **docv** consomme la **même couche API IA** et les mêmes principes de **projet = clone Git + workspace** : [features/docv-ai-integration.md](./features/docv-ai-integration.md). L’**OIDC** (SSO) est orthogonal aux flux de synchro fichier : [features/sso-docv-enso.md](./features/sso-docv-enso.md). + +## 6. Non-objectifs explicites dans cette stratégie + +- Remplacer **Git** par AnythingLLM comme source du code. +- Synchroniser **automatiquement** sans hook ni script explicite : toute automatisation repose sur des **mécanismes nommés** (hooks, scripts du repo, systemd). +- Étendre le périmètre des dépôts **sans** contrôle de racine (`REPOS_DEVTOOLS_ROOT`, politique SSH) : hors sujet de ce document ; à traiter au niveau policy / OpenShell ([system-architecture.md](./system-architecture.md)). diff --git a/docs/features/docv-ai-integration.md b/docs/features/docv-ai-integration.md new file mode 100644 index 0000000..70034f6 --- /dev/null +++ b/docs/features/docv-ai-integration.md @@ -0,0 +1,36 @@ +# docv — intégrations IA via la plateforme smart_ide + +## Rôle de smart_ide + +Le monorepo **smart_ide** sert aussi de **socle technique** pour les intégrations IA consommées par le **backend docv** (filière Enso). Le principe : exposer, parmi les services locaux, des **API HTTP génériques** (orchestrateur, gateway agents, Ollama, AnythingLLM, micro-services sous `services/`) que le back **docv** peut appeler pour offrir les fonctionnalités IA **par projet**. + +Référence d’arborescence côté Enso (machine de développement type) : dépôt **docv** sous un chemin du genre `…/enso/docv` (ex. historique `/home/desk/code/enso/docv`). Les URLs et secrets réels par environnement restent hors dépôt ([platform-target.md](../platform-target.md), [sso-docv-enso.md](./sso-docv-enso.md)). + +## Modèle « projet » + +Pour chaque **projet logique** (ex. périmètre docv, autre produit) : + +1. **Clone Git** : le dépôt applicatif doit être **déjà cloné** au même titre que les autres projets de l’espace de travail, en général sous une **racine de clones** **distincte** du dossier `./projects/` du monorepo (voir [projects/README.md](../../projects/README.md)) — convention fréquente : répertoire **frère** `../projects//` par rapport à la racine `smart_ide`. +2. **AnythingLLM** : le projet doit être **rattaché à un workspace** AnythingLLM (un workspace par projet). Si le clone ou le workspace **manque** ou est désynchronisé, la procédure d’exploitation prévoit de **créer / mettre à jour** le clone et d’**aligner** le workspace (synchronisation déterministe, voir [anythingllm-workspaces.md](../anythingllm-workspaces.md) et scripts sous `scripts/`). +3. **Configuration ia_dev** : lorsqu’un id projet est enregistré pour les agents ou le ticketing, un `conf.json` peut être versionné sous **`smart_ide/projects//conf.json`** ; les scripts `ia_dev` y accèdent via le lien `ia_dev/projects/` lorsque le script [`ensure-ia-dev-smart-ide-project-link.sh`](../../scripts/ensure-ia-dev-smart-ide-project-link.sh) (ou équivalent) a été exécuté. + +## Flux cible (vue simplifiée) + +```mermaid +flowchart LR + Docv[docv_backend] + Orch[orchestrator] + GW[ia_dev_gateway] + ALLM[AnythingLLM] + Oll[Ollama] + Docv --> Orch + Orch --> GW + Orch --> ALLM + Orch --> Oll +``` + +Les contrats HTTP détaillés : [API/README.md](../API/README.md), [orchestrator-api.md](./orchestrator-api.md), [ia-dev-service.md](./ia-dev-service.md). Vue d’ensemble écosystème et synchro : [ecosystem-architecture-and-sync.md](../ecosystem-architecture-and-sync.md). + +## SSO + +L’authentification utilisateur front / docv (OIDC) est décrite dans [sso-docv-enso.md](./sso-docv-enso.md) ; elle est **orthogonale** aux appels **serveur à serveur** (tokens API, réseau interne) entre docv et les services smart_ide. diff --git a/docs/features/sso-docv-enso.md b/docs/features/sso-docv-enso.md index 569ef01..5f90e81 100644 --- a/docs/features/sso-docv-enso.md +++ b/docs/features/sso-docv-enso.md @@ -31,6 +31,8 @@ sequenceDiagram API->>API: validate JWT JWKS ``` +Intégrations **IA** côté backend docv (services smart_ide, clones, AnythingLLM) : [docv-ai-integration.md](./docv-ai-integration.md). + ## Paramètres à fixer avec le dépôt Enso - `issuer` (URL stable par env) diff --git a/docs/ia_dev-project-smart_ide.md b/docs/ia_dev-project-smart_ide.md index 58439fe..d9331b6 100644 --- a/docs/ia_dev-project-smart_ide.md +++ b/docs/ia_dev-project-smart_ide.md @@ -4,9 +4,38 @@ Le dépôt **smart_ide** est enregistré dans le sous-module **`ia_dev`** sous l ## Fichier de configuration -- **`ia_dev/projects/smart_ide/conf.json`** — chemins machine (`project_path`), URLs wiki et issues (`https://git.4nkweb.com/4nk/smart_ide/...`), boîtes mail autorisées pour le ticketing (envs test / pprod / prod). +- **Source de vérité (versionnée dans ce monorepo) :** [`projects/smart_ide/conf.json`](../projects/smart_ide/conf.json) — chemins machine (`project_path`), URLs wiki et issues (`https://git.4nkweb.com/4nk/smart_ide/...`), boîtes mail autorisées pour le ticketing (envs test / pprod / prod). +- **Sous-module `ia_dev` :** le chemin `ia_dev/projects/smart_ide/conf.json` doit résoudre le même fichier via le lien créé par [`scripts/ensure-ia-dev-smart-ide-project-link.sh`](../scripts/ensure-ia-dev-smart-ide-project-link.sh). -Adapter **`project_path`** (et champs dérivés si vous ajoutez `build_dirs` / `deploy`) sur chaque poste ou serveur où `ia_dev` exécute des commandes sur ce dépôt. +Adapter **`project_path`** (et champs dérivés si vous ajoutez `build_dirs` / `deploy`) sur chaque poste ou serveur où `ia_dev` exécute des commandes sur ce dépôt. Les **clones** d’autres apps (docv, etc.) ne vont **pas** dans `./projects/` : voir [projects/README.md](../projects/README.md). + +## Agents Cursor (pont smart_ide → ia_dev) + +Dans ce dépôt, les définitions **Cursor** sous [`.cursor/agents/`](../.cursor/agents/) utilisent le préfixe **`ia-dev-*`** : elles fixent le projet **`smart_ide`**, imposent d’indiquer l’**environnement** (`test`, `pprod`, `prod`), puis renvoient à la procédure complète dans le sous-module : `ia_dev/.cursor/agents/.md`. + +| Agent Cursor (smart_ide) | Définition ia_dev | +|--------------------------|-------------------| +| `ia-dev-fix` | `fix.md` | +| `ia-dev-evol` | `evol.md` | +| `ia-dev-code` | `code.md` | +| `ia-dev-fix-search` | `fix-search.md` | +| `ia-dev-fix-lint` | `fix-lint.md` | +| `ia-dev-docupdate` | `docupdate.md` | +| `ia-dev-push-by-script` | `push-by-script.md` | +| `ia-dev-deploy-by-script` | `deploy-by-script.md` | +| `ia-dev-deploy-pprod-or-prod` | `deploy-pprod-or-prod.md` | +| `ia-dev-branch-align-by-script-from-test` | `branch-align-by-script-from-test.md` | +| `ia-dev-change-to-all-branches` | `change-to-all-branches.md` | +| `ia-dev-agent-loop` | `agent-loop.md` | +| `ia-dev-gitea-issues-process` | `gitea-issues-process.md` | +| `ia-dev-setup-host` | `setup-host.md` | +| `ia-dev-notary-ai-loop` | `notary-ai-loop.md` | +| `ia-dev-notary-ai-process` | `notary-ai-process.md` | +| `ia-dev-closure-point-7-justification` | `closure-point-7-justification.md` | + +Règle de contexte (fichiers sous `ia_dev/`, `docs/`, `services/`, etc.) : [`.cursor/rules/smart-ide-ia-dev-bridge.mdc`](../.cursor/rules/smart-ide-ia-dev-bridge.mdc). + +**Usage :** choisir l’agent `ia-dev-*` dans Cursor et préciser dans le message l’environnement cible ; pour les scripts, `cd ia_dev` et `IA_PROJECT_ID=smart_ide` (ou `--project smart_ide`). Détail schéma conf : `ia_dev/projects/README.md` (sous-module). Conf **smart_ide** : `projects/smart_ide/conf.json` à la racine du monorepo. ## Liens diff --git a/docs/ia_dev-submodule.md b/docs/ia_dev-submodule.md index aa34902..9c69866 100644 --- a/docs/ia_dev-submodule.md +++ b/docs/ia_dev-submodule.md @@ -2,7 +2,13 @@ The repository [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git) is integrated as a **Git submodule** at `./ia_dev`. -It holds the **centralized AI agent team** (definitions under `.cursor/agents/`, `.cursor/rules/`), `deploy/`, `gitea-issues/`, `projects//conf.json`, etc. Execution remains **from the `ia_dev` root** per upstream README; `smart_ide` provides the surrounding IDE vision, host scripts, and systemd units. +It holds the **centralized AI agent team** (definitions under `.cursor/agents/`, `.cursor/rules/`), `deploy/`, `gitea-issues/`, etc. Les **`conf.json` par projet** pour ce monorepo sont versionnés sous **`./projects//` à la racine de `smart_ide`** (voir [projects/README.md](../projects/README.md)), pas mélangés avec les clones applicatifs (`../projects/` ou autre). Un **lien symbolique** `ia_dev/projects/smart_ide` → `../../projects/smart_ide` permet aux scripts ia_dev de résoudre `projects/smart_ide/conf.json`. Après chaque `git submodule update --init`, exécuter : + +```bash +./scripts/ensure-ia-dev-smart-ide-project-link.sh +``` + +Execution remains **from the `ia_dev` root** per upstream README; `smart_ide` provides the surrounding IDE vision, host scripts, and systemd units. ## Clone with submodule @@ -43,7 +49,7 @@ git config submodule.ia_dev.url git@git.4nkweb.com:4nk/ia_dev.git | Repository | Role | |------------|------| | **smart_ide** | IDE target UX, local AI stack scripts, systemd, docs for deployment | -| **ia_dev** (submodule) | Agent registry, project configs, deploy/ticketing/notary pipelines | +| **ia_dev** (submodule) | Agent registry, deploy/ticketing/notary pipelines ; configs projet **smart_ide** dans `./projects/` (racine monorepo) + lien | The future **agent gateway** should treat `./ia_dev` as the canonical checkout path on the server unless overridden by configuration. See [system-architecture.md](./system-architecture.md). diff --git a/docs/platform-target.md b/docs/platform-target.md index 32d3b64..ef4a29a 100644 --- a/docs/platform-target.md +++ b/docs/platform-target.md @@ -43,6 +43,10 @@ Les **garde-fous** prod (policy, droits déploiement, refus explicites) sont plu Le **front web** de la plateforme peut s’authentifier auprès de **docv** (filière Enso) via **OpenID Connect**. Flux et contrats : [features/sso-docv-enso.md](./features/sso-docv-enso.md). Les endpoints exacts du dépôt Enso se calent lorsque le code docv est disponible sur la machine de build. +## API IA pour le backend docv + +Le monorepo expose des **services HTTP génériques** (orchestrateur, gateway, RAG, inférence) que le **back docv** peut consommer **par projet** ; clones Git et workspaces AnythingLLM doivent exister et être tenus à jour. Détail : [features/docv-ai-integration.md](./features/docv-ai-integration.md). + ## Chaîne technique de référence ```mermaid diff --git a/docs/system-architecture.md b/docs/system-architecture.md index 3227400..f6a621c 100644 --- a/docs/system-architecture.md +++ b/docs/system-architecture.md @@ -1,6 +1,6 @@ # Architecture système — IDE, agents, runtime, mémoire -Vue produit multi-environnements, SSO et option navigateur : [platform-target.md](./platform-target.md). +Vue produit multi-environnements, SSO et option navigateur : [platform-target.md](./platform-target.md). Architecture **écosystème + synchronisation** (projets externes, API IA, hôte) : [ecosystem-architecture-and-sync.md](./ecosystem-architecture-and-sync.md). ## Objectifs du projet (rappel) @@ -35,7 +35,8 @@ Conséquences : | `extensions/anythingllm-workspaces/` | Outils / modèles alignés AnythingLLM et workspaces par projet | | `scripts/` , `setup/` , `systemd/` | Installation hôte, scripts d’exploitation, unités utilisateur pour services | | `services/local-office/` | **API REST** Office (upload, commandes docx, stockage SQLite + fichiers) ; complément programmatique à ONLYOFFICE | -| `ia_dev/` | Agents, `projects//`, déploiements — exécution sous policy ; voir sous-module | +| `projects//` (racine monorepo) | **Confs seules** pour `ia_dev` (`conf.json`) — **pas** les clones Git ; clones typiquement sous `../projects/` ou autre racine ; voir [projects/README.md](../projects/README.md) | +| `ia_dev/` | Agents, déploiements — exécution sous policy ; `projects//` du sous-module peut pointer vers `../../projects/` (lien) ; voir sous-module | | `services/ia-dev-gateway/` | Gateway HTTP (stub runner) : registre agents `.md`, runs, SSE — [features/ia-dev-service.md](./features/ia-dev-service.md) | | `services/smart-ide-orchestrator/` | Routage intentions (stub forward) — [features/orchestrator-api.md](./features/orchestrator-api.md) | @@ -68,7 +69,7 @@ L’**éditeur** et une partie de l’UX peuvent rester sur le client ; le **gat | **AnythingLLM** | **Mémoire documentaire** et RAG ; **un workspace par projet** ([anythingllm-workspaces.md](./anythingllm-workspaces.md)) | | **ONLYOFFICE** | Backend **documentaire métier** (documents, feuilles, présentations) | -Flux type : demande utilisateur → orchestrateur → préparation (scripts / tools génériques) → agents → besoin LLM → Ollama ; besoin doc / RAG → AnythingLLM ; besoin bureautique riche → ONLYOFFICE ; besoin **fichier Office manipulé par API** (tiers, scripts, agents) → **`services/local-office/`** (Local Office). +Flux type : demande utilisateur → orchestrateur → préparation (scripts / tools génériques) → agents → besoin LLM → Ollama ; besoin doc / RAG → AnythingLLM ; besoin bureautique riche → ONLYOFFICE ; besoin **fichier Office manipulé par API** (tiers, scripts, agents) → **`services/local-office/`** (Local Office). Le **backend docv** peut s’appuyer sur les mêmes services pour des parcours IA **par projet** ([features/docv-ai-integration.md](./features/docv-ai-integration.md)). Enrichissement possible du routage (sans changer le principe « orchestrateur = logique de flux, pas LLM ») : diff --git a/projects/README.md b/projects/README.md new file mode 100644 index 0000000..f5cf4f6 --- /dev/null +++ b/projects/README.md @@ -0,0 +1,19 @@ +# Configurations projet (`projects//`) + +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. + +## 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//`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici. + +- **`./projects/`** (ce dossier) → uniquement `conf.json` (+ métadonnées légères) pour que `ia_dev` résolve `projects//conf.json` via le lien symbolique décrit dans [docs/ia_dev-submodule.md](../docs/ia_dev-submodule.md). +- **`../projects/`** (ou autre racine configurée) → arborescences Git complètes, builds, etc. ; `project_path` dans chaque `conf.json` pointe vers ces chemins **absolus**. + +## `smart_ide` + +- Fichier : [`smart_ide/conf.json`](./smart_ide/conf.json) +- Après `git submodule update`, exécuter [`scripts/ensure-ia-dev-smart-ide-project-link.sh`](../scripts/ensure-ia-dev-smart-ide-project-link.sh) pour recréer le lien `ia_dev/projects/smart_ide` → `../../projects/smart_ide`. + +## Référence amont + +Schéma des champs : `ia_dev/projects/README.md` dans le sous-module (documentation ia_dev). diff --git a/projects/smart_ide/conf.json b/projects/smart_ide/conf.json new file mode 100644 index 0000000..d29cb0e --- /dev/null +++ b/projects/smart_ide/conf.json @@ -0,0 +1,31 @@ +{ + "id": "smart_ide", + "name": "smart_ide", + "project_path": "/home/ncantu/code/smart_ide", + "build_dirs": [], + "deploy": {}, + "version": { + "package_json_paths": [], + "splash_app_name": "smart_ide" + }, + "mail": { + "imap_bridge_env": ".secrets/gitea-issues/imap-bridge.env" + }, + "git": { + "wiki_url": "https://git.4nkweb.com/4nk/smart_ide/wiki", + "token_file": ".secrets/gitea-issues/token" + }, + "tickets": { + "ticketing_url": "https://git.4nkweb.com/4nk/smart_ide/issues", + "authorized_emails": { + "to": [ + { + "test": "AI.SMART_IDE.TEST@4nkweb.com", + "pprod": "AI.SMART_IDE.PPROD@4nkweb.com", + "prod": "AI.SMART_IDE.PROD@4nkweb.com" + } + ], + "from": ["nicolas.4nk@pm.me"] + } + } +} diff --git a/scripts/ensure-ia-dev-smart-ide-project-link.sh b/scripts/ensure-ia-dev-smart-ide-project-link.sh new file mode 100755 index 0000000..b44f240 --- /dev/null +++ b/scripts/ensure-ia-dev-smart-ide-project-link.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# Create ia_dev/projects/smart_ide -> ../../projects/smart_ide so scripts under ia_dev +# resolve projects/smart_ide/conf.json to this monorepo's versioned conf. +set -euo pipefail +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +LINK_PARENT="${ROOT}/ia_dev/projects" +TARGET="../../projects/smart_ide" +LINK_NAME="${LINK_PARENT}/smart_ide" +mkdir -p "${LINK_PARENT}" +if [[ -e "${LINK_NAME}" && ! -L "${LINK_NAME}" ]]; then + echo "Refusing to replace non-symlink: ${LINK_NAME}" >&2 + exit 1 +fi +ln -sfn "${TARGET}" "${LINK_NAME}" +echo "OK: ${LINK_NAME} -> ${TARGET}"