From ac96434351270b7ab6efbf8dab1bf080d0917900 Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Fri, 3 Apr 2026 18:20:31 +0200 Subject: [PATCH] docs: centralize README content under docs/repo/ **Motivations:** - Single canonical documentation tree under docs/; reduce drift between README copies. **Evolutions:** - Add docs/repo/ with operational guides (cron, systemd, projects, logs, docv, ia_dev, services, scripts, extension). - Replace scattered README.md files with pointers to docs/repo/*.md. - Refresh docs/README.md index and cross-links across docs/, .cursor rules/agents. - Bump ia_dev submodule to matching doc pointer commits. --- .cursor/agents/ia-dev-agent-loop.md | 4 +- ...ia-dev-branch-align-by-script-from-test.md | 4 +- .../agents/ia-dev-change-to-all-branches.md | 4 +- .../ia-dev-closure-point-7-justification.md | 4 +- .cursor/agents/ia-dev-code.md | 4 +- .cursor/agents/ia-dev-deploy-by-script.md | 4 +- .cursor/agents/ia-dev-deploy-pprod-or-prod.md | 4 +- .cursor/agents/ia-dev-docupdate.md | 4 +- .cursor/agents/ia-dev-evol.md | 4 +- .cursor/agents/ia-dev-fix-lint.md | 4 +- .cursor/agents/ia-dev-fix-search.md | 4 +- .cursor/agents/ia-dev-fix.md | 4 +- .cursor/agents/ia-dev-gitea-issues-process.md | 4 +- .cursor/agents/ia-dev-notary-ai-loop.md | 4 +- .cursor/agents/ia-dev-notary-ai-process.md | 4 +- .cursor/agents/ia-dev-push-by-script.md | 4 +- .cursor/agents/ia-dev-setup-host.md | 4 +- .cursor/rules/smart-ide-ia-dev-bridge.mdc | 4 +- README.md | 63 ++-------------- cron/README.md | 61 +--------------- cron/fragments/README.md | 6 +- docs/API/docv.md | 2 +- docs/README.md | 40 ++++++++--- docs/ecosystem-architecture-and-sync.md | 12 ++-- docs/features/agent-regex-search-api.md | 2 +- docs/features/claw-harness-api.md | 2 +- docs/features/docv-ai-integration.md | 2 +- docs/features/docv-service-integration.md | 4 +- docs/features/langextract-api.md | 2 +- docs/features/lapce-porting-roadmap.md | 2 +- docs/features/local-office.md | 4 +- docs/features/remote-deployed-data-ssh.md | 2 +- docs/ia_dev-module.md | 10 +-- docs/ia_dev-project-smart_ide.md | 4 +- docs/repo/README.md | 39 ++++++++++ docs/repo/cron-git-pull.md | 66 +++++++++++++++++ docs/repo/docv-enso-docs-mirror.md | 26 +++++++ docs/repo/docv-services-directory.md | 38 ++++++++++ docs/repo/extension-anythingllm-workspaces.md | 43 +++++++++++ docs/repo/ia-dev-deploy-lib.md | 32 +++++++++ docs/repo/ia-dev-project-conf-schema.md | 65 +++++++++++++++++ docs/repo/ia-dev-repository-overview.md | 52 ++++++++++++++ docs/repo/ia-dev-shared-lib.md | 16 +++++ docs/repo/ia-dev-smart-ide-integration.md | 23 ++++++ docs/repo/logs-directory.md | 18 +++++ docs/repo/projects-directory.md | 53 ++++++++++++++ docs/repo/script-anythingllm-pull-sync.md | 51 +++++++++++++ docs/repo/service-agent-regex-search.md | 41 +++++++++++ docs/repo/service-claw-harness.md | 34 +++++++++ docs/repo/service-ia-dev-gateway.md | 20 ++++++ docs/repo/service-langextract.md | 34 +++++++++ docs/repo/service-local-office.md | 31 ++++++++ docs/repo/service-repos-devtools.md | 40 +++++++++++ docs/repo/service-smart-ide-orchestrator.md | 31 ++++++++ docs/repo/smart-ide-overview.md | 56 +++++++++++++++ docs/repo/systemd-units.md | 51 +++++++++++++ docs/services.md | 6 +- docs/system-architecture.md | 16 ++--- extensions/anythingllm-workspaces/README.md | 72 +------------------ ia_dev | 2 +- logs/README.md | 13 +--- projects/README.md | 52 +------------- scripts/anythingllm-pull-sync/README.md | 57 +-------------- services/agent-regex-search-api/README.md | 48 +------------ services/claw-harness-api/README.md | 47 +----------- services/docv/README.md | 45 +----------- services/ia-dev-gateway/README.md | 22 +----- services/ia_dev/README.md | 20 +----- services/langextract-api/README.md | 47 +----------- services/local-office/README.md | 41 +---------- services/repos-devtools-server/README.md | 34 +-------- services/smart-ide-orchestrator/README.md | 33 +-------- systemd/README.md | 48 +------------ 73 files changed, 995 insertions(+), 758 deletions(-) create mode 100644 docs/repo/README.md create mode 100644 docs/repo/cron-git-pull.md create mode 100644 docs/repo/docv-enso-docs-mirror.md create mode 100644 docs/repo/docv-services-directory.md create mode 100644 docs/repo/extension-anythingllm-workspaces.md create mode 100644 docs/repo/ia-dev-deploy-lib.md create mode 100644 docs/repo/ia-dev-project-conf-schema.md create mode 100644 docs/repo/ia-dev-repository-overview.md create mode 100644 docs/repo/ia-dev-shared-lib.md create mode 100644 docs/repo/ia-dev-smart-ide-integration.md create mode 100644 docs/repo/logs-directory.md create mode 100644 docs/repo/projects-directory.md create mode 100644 docs/repo/script-anythingllm-pull-sync.md create mode 100644 docs/repo/service-agent-regex-search.md create mode 100644 docs/repo/service-claw-harness.md create mode 100644 docs/repo/service-ia-dev-gateway.md create mode 100644 docs/repo/service-langextract.md create mode 100644 docs/repo/service-local-office.md create mode 100644 docs/repo/service-repos-devtools.md create mode 100644 docs/repo/service-smart-ide-orchestrator.md create mode 100644 docs/repo/smart-ide-overview.md create mode 100644 docs/repo/systemd-units.md diff --git a/.cursor/agents/ia-dev-agent-loop.md b/.cursor/agents/ia-dev-agent-loop.md index 2311a57..b0cc020 100644 --- a/.cursor/agents/ia-dev-agent-loop.md +++ b/.cursor/agents/ia-dev-agent-loop.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.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 index 2180f92..2f56ce1 100644 --- a/.cursor/agents/ia-dev-branch-align-by-script-from-test.md +++ b/.cursor/agents/ia-dev-branch-align-by-script-from-test.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-change-to-all-branches.md b/.cursor/agents/ia-dev-change-to-all-branches.md index 11b52e0..8d4a9e0 100644 --- a/.cursor/agents/ia-dev-change-to-all-branches.md +++ b/.cursor/agents/ia-dev-change-to-all-branches.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-closure-point-7-justification.md b/.cursor/agents/ia-dev-closure-point-7-justification.md index bd2ce58..70ffaa3 100644 --- a/.cursor/agents/ia-dev-closure-point-7-justification.md +++ b/.cursor/agents/ia-dev-closure-point-7-justification.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-code.md b/.cursor/agents/ia-dev-code.md index 000600b..b5693dc 100644 --- a/.cursor/agents/ia-dev-code.md +++ b/.cursor/agents/ia-dev-code.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-deploy-by-script.md b/.cursor/agents/ia-dev-deploy-by-script.md index fd35c5c..1d97b29 100644 --- a/.cursor/agents/ia-dev-deploy-by-script.md +++ b/.cursor/agents/ia-dev-deploy-by-script.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-deploy-pprod-or-prod.md b/.cursor/agents/ia-dev-deploy-pprod-or-prod.md index 3515c04..09b436f 100644 --- a/.cursor/agents/ia-dev-deploy-pprod-or-prod.md +++ b/.cursor/agents/ia-dev-deploy-pprod-or-prod.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-docupdate.md b/.cursor/agents/ia-dev-docupdate.md index 2daceb9..f3fafdb 100644 --- a/.cursor/agents/ia-dev-docupdate.md +++ b/.cursor/agents/ia-dev-docupdate.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-evol.md b/.cursor/agents/ia-dev-evol.md index 2ff16b4..5280d40 100644 --- a/.cursor/agents/ia-dev-evol.md +++ b/.cursor/agents/ia-dev-evol.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-fix-lint.md b/.cursor/agents/ia-dev-fix-lint.md index 664a04a..9efeb41 100644 --- a/.cursor/agents/ia-dev-fix-lint.md +++ b/.cursor/agents/ia-dev-fix-lint.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-fix-search.md b/.cursor/agents/ia-dev-fix-search.md index 368de2c..71a9f06 100644 --- a/.cursor/agents/ia-dev-fix-search.md +++ b/.cursor/agents/ia-dev-fix-search.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-fix.md b/.cursor/agents/ia-dev-fix.md index bbd7a13..98b006d 100644 --- a/.cursor/agents/ia-dev-fix.md +++ b/.cursor/agents/ia-dev-fix.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-gitea-issues-process.md b/.cursor/agents/ia-dev-gitea-issues-process.md index d93bbaa..9b3b24a 100644 --- a/.cursor/agents/ia-dev-gitea-issues-process.md +++ b/.cursor/agents/ia-dev-gitea-issues-process.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-notary-ai-loop.md b/.cursor/agents/ia-dev-notary-ai-loop.md index deb49e4..b24603d 100644 --- a/.cursor/agents/ia-dev-notary-ai-loop.md +++ b/.cursor/agents/ia-dev-notary-ai-loop.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-notary-ai-process.md b/.cursor/agents/ia-dev-notary-ai-process.md index 39184be..024ef2b 100644 --- a/.cursor/agents/ia-dev-notary-ai-process.md +++ b/.cursor/agents/ia-dev-notary-ai-process.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-push-by-script.md b/.cursor/agents/ia-dev-push-by-script.md index 062503a..4d5a192 100644 --- a/.cursor/agents/ia-dev-push-by-script.md +++ b/.cursor/agents/ia-dev-push-by-script.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -20,4 +20,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/agents/ia-dev-setup-host.md b/.cursor/agents/ia-dev-setup-host.md index 89ec03c..865be19 100644 --- a/.cursor/agents/ia-dev-setup-host.md +++ b/.cursor/agents/ia-dev-setup-host.md @@ -10,7 +10,7 @@ is_background: false - **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`. +- **Variables / arguments :** `IA_PROJECT_ID=smart_ide` et/ou `--project smart_ide` selon le script ; référence : `docs/repo/ia-dev-project-conf-schema.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`). @@ -22,4 +22,4 @@ is_background: false 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`. +**Référence résolution projet / env :** `docs/repo/ia-dev-project-conf-schema.md`. diff --git a/.cursor/rules/smart-ide-ia-dev-bridge.mdc b/.cursor/rules/smart-ide-ia-dev-bridge.mdc index 086abe4..96cab30 100644 --- a/.cursor/rules/smart-ide-ia-dev-bridge.mdc +++ b/.cursor/rules/smart-ide-ia-dev-bridge.mdc @@ -8,11 +8,11 @@ alwaysApply: false Quand le périmètre touche ce dépôt et le module **`ia_dev/`** : -- **Projet courant (IDE / smart_ide) :** lire dans l’ordre : fichier local **`projects/active-project.json`** (champ **`id`**, non versionné — copier depuis `projects/active-project.json.example`) ; sinon variable **`SMART_IDE_PROJECT_ID`** ; sinon paramètre workspace **`smartIde.activeProjectId`** dans le fichier **`.code-workspace`** ou **`.vscode/settings.json`** ; sinon défaut **`smart_ide`**. La conf versionnée du projet est **`projects//conf.json`**. Données déployées et SSH : [docs/features/remote-deployed-data-ssh.md](../../docs/features/remote-deployed-data-ssh.md). +- **Projet courant (IDE / smart_ide) :** lire dans l’ordre : fichier local **`projects/active-project.json`** (champ **`id`**, non versionné — copier depuis `projects/active-project.json.example`) ; sinon variable **`SMART_IDE_PROJECT_ID`** ; sinon paramètre workspace **`smartIde.activeProjectId`** dans le fichier **`.code-workspace`** ou **`.vscode/settings.json`** ; sinon défaut **`smart_ide`**. La conf versionnée du projet est **`projects//conf.json`** ([docs/repo/projects-directory.md](../../docs/repo/projects-directory.md)). Données déployées et SSH : [docs/features/remote-deployed-data-ssh.md](../../docs/features/remote-deployed-data-ssh.md). - **Lien ia_dev :** pour l’id choisi, `ia_dev/projects/` doit être un **lien** vers `../../projects/` lorsque les scripts ia_dev résolvent ce chemin (script `scripts/ensure-ia-dev-smart-ide-project-link.sh` pour `smart_ide`). - **Environnement :** `test` | `pprod` | `prod`. Le reprendre depuis le message utilisateur ou depuis **`default_env`** dans `projects/active-project.json` ; **demander** s’il manque avant des actions dépendantes du env. - **Exécution des scripts ia_dev :** répertoire courant = racine **`ia_dev/`** (dans 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=` et/ou `--project ` selon le script ; détail : `ia_dev/projects/README.md`. +- **Sélection projet pour les scripts :** `IA_PROJECT_ID=` et/ou `--project ` selon le script ; détail : [docs/repo/ia-dev-project-conf-schema.md](../../docs/repo/ia-dev-project-conf-schema.md). - **MAIL_TO (ticketing / mails) :** lire `projects//conf.json` → `tickets.authorized_emails.to` pour l’env choisi. - **Code et doc applicative :** pour le monorepo smart_ide, racine du workspace et `docs/` ; pour un autre id, suivre **`project_path`** dans `conf.json`. - **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` / bloc **`smart_ide.remote_data_access`** dans `conf.json` si pertinent. diff --git a/README.md b/README.md index a6bb343..7f3b262 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,9 @@ -# smart_ide — IDE orienté intention et IA locale +# smart_ide -Projet d’environnement de développement où l’**inférence** repose sur **Ollama**, la **mémoire documentaire et RAG** sur **AnythingLLM**, la **bureautique métier riche** sur **ONLYOFFICE**, et l’**édition / dépôt de fichiers Office par API** (docx programmatique) via **Local Office** (`services/local-office/`). Les **agents métier** existants (`ia_dev` et sous-agents) restent le noyau opératoire ; l’éditeur et l’orchestrateur les exposent via une **grammaire de commandes** plutôt que via une navigation fichiers classique. +Environnement IDE orienté **intentions** et **IA locale** (Ollama, AnythingLLM, agents **ia_dev**, services sous `services/`). -**Monorepo unique** : ce dépôt est le **référentiel principal** pour la doc, les **services locaux** (`services/`, dont Local Office), les scripts, les extensions et le **socle applicatif éditeur** (**Lapce** sous `core_ide/`, clone local hors index Git — voir [docs/core-ide.md](./docs/core-ide.md)). L’**hébergement canonique** est la **forge interne** ; les dépôts publics cités en documentation sont des **amonts** ou références, pas des cibles de publication obligatoires pour les livrables 4NK. Détail architectural : [docs/system-architecture.md](./docs/system-architecture.md). - -## Première cible de déploiement - -Le **premier déploiement** visé est un **poste Linux client** qui se connecte en **SSH** à un **serveur distant** hébergeant : - -- le **socle technique IA** (Ollama, AnythingLLM, services associés) ; -- les **dépôts** (sources, agents, procédures). - -L’UX (ex. Lapce) et les flux utilisateur peuvent tourner sur le client ; l’exécution lourde, la mémoire projet et Git vivent **sur le serveur**. Détail : [docs/deployment-target.md](./docs/deployment-target.md). - -## Positionnement - -- **Pas d’explorer comme surface principale** : la navigation primaire passe par intentions, recherche, contexte, timeline, objets logiques et artefacts ; un accès brut (fichiers / arborescence) reste disponible en **mode expert / secours**, pas comme flux nominal. -- **Machine de travail orientée opérations** plutôt qu’éditeur de fichiers : l’utilisateur exprime *ce qu’il veut faire*, *sur quel objet logique*, *avec quels droits*, *dans quel contexte projet*, *avec quelle procédure*, *avec quel agent*, *avec quel résultat attendu*. -- **Socle applicatif éditeur : [Lapce](https://lapce.dev/)** sous **`core_ide/`** — open source, Rust, rendu natif / GPU ; base pour le noyau d’édition + agents. Mise à jour et build : [docs/core-ide.md](./docs/core-ide.md). Choix d’architecture, pas une obligation figée. - -## AnythingLLM et projets - -Pour chaque **projet**, un **workspace AnythingLLM** dédié est créé (ou rattaché) : corpus, embeddings et conversations restent **isolés par projet**. Une **moulinette de synchronisation** aligne un sous-ensemble de fichiers du dépôt avec le workspace concerné afin de garder la mémoire RAG alignée avec le code et la doc utiles. - -Voir [docs/anythingllm-workspaces.md](./docs/anythingllm-workspaces.md). - -## Module `ia_dev` (dans ce dépôt) - -Le répertoire [`./ia_dev`](./ia_dev) contient l’**équipe d’agents**, les scripts `deploy/`, le ticketing Gitea, etc. (référence historique sur la forge : [**ia_dev**](https://git.4nkweb.com/4nk/ia_dev.git)). Les **fichiers `conf.json`** pour ce monorepo sont sous [`./projects//`](./projects/README.md) (pas les clones Git ; ceux-ci ailleurs, ex. `../projects/`). Un `git clone` du monorepo suffit. Détail : [docs/ia_dev-module.md](./docs/ia_dev-module.md), intégration [services/ia_dev/](services/ia_dev/README.md), journaux [logs/README.md](logs/README.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, API IA docv | -| [docs/API/README.md](./docs/API/README.md) | Référence HTTP des services sous `services/` + docv externe (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, docv / données `../projects//data`, Git / Ollama / AnythingLLM | -| [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/` | -| [cron/README.md](./cron/README.md) | Config `cron/config.env`, pull Git planifié (`projects/*/conf.json`) | -| [scripts/install-git-pull-systemd-user.sh](./scripts/install-git-pull-systemd-user.sh) | Timer systemd **user** pour le pull automatique | -| [docs/ia_dev-module.md](./docs/ia_dev-module.md) | Module `ia_dev`, liens projet, journaux | -| [services/ia_dev/](services/ia_dev/README.md) | Contrat d’intégration `ia_dev` dans smart_ide | -| [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 | -| [docs/features/local-office.md](./docs/features/local-office.md) | Local Office : API REST docx (upload, commandes), dossier `services/local-office/` | -| [docs/core-ide.md](./docs/core-ide.md) | Socle applicatif Lapce : répertoire `core_ide/`, clone, build | - -## Dépôt actuel (outillage) - -Scripts d’installation et d’exploitation sur Ubuntu : SSH, sudo ciblé, AnythingLLM Docker, Ollama exposé pour Docker, modèle Ollama alias `qwen3-code-webdev`, installer Desktop AnythingLLM. Ces scripts ciblent en priorité l’**hôte serveur** qui porte le socle IA et les repos ; le **client Linux** repose surtout sur SSH et l’IDE. L’IDE complet (Lapce + orchestrateur + gateway) est **cible de conception** ; ce dépôt documente et supporte la **stack sur serveur** (Ollama + AnythingLLM) et l’accès distant. +- **Documentation complète** : [docs/README.md](./docs/README.md) +- **Vue d’ensemble produit** : [docs/repo/smart-ide-overview.md](./docs/repo/smart-ide-overview.md) +- **Index des README centralisés** (`cron/`, `projects/`, `systemd/`, services, etc.) : [docs/repo/README.md](./docs/repo/README.md) **Auteur :** Équipe 4NK diff --git a/cron/README.md b/cron/README.md index 6770b85..773e3da 100644 --- a/cron/README.md +++ b/cron/README.md @@ -1,60 +1,5 @@ -# Tirage Git planifié — clones `projects/*/conf.json` +# Cron et pull Git planifié -## Comportement +Documentation centralisée : -Le script [`git-pull-project-clones.sh`](./git-pull-project-clones.sh) parcourt [`../projects//`](../projects/) (fichiers `conf.json`), lit **`project_path`**, et pour chaque dépôt Git : - -1. **`git fetch origin `** -2. si **`origin/`** est en avance en **fast-forward** → **`git merge --ff-only origin/`** -3. sinon → message explicite, **pas** de merge forcé - -## Configuration centralisée - -| Fichier | Rôle | -|---------|------| -| [`config.env`](./config.env) | **Versionné** : `PULL_SYNC_ENABLED`, `PULL_SYNC_MODE` (`all` \| `project`), `PULL_SYNC_PROJECT_ID`, `PULL_SYNC_LOG` | -| `config.local.env` | **Optionnel, non versionné** (voir [`config.local.env.example`](./config.local.env.example)) — surcharge machine | - -Le script [`git-pull-wrapper.sh`](./git-pull-wrapper.sh) charge ces fichiers puis appelle `git-pull-project-clones.sh` et **append** la sortie dans `PULL_SYNC_LOG` (défaut : **`logs/git-pull-projects.log`** à la racine du dépôt — voir [`logs/README.md`](../logs/README.md)). - -## Mise en place recommandée : systemd utilisateur - -Depuis la racine du dépôt **smart_ide** : - -```bash -./scripts/install-git-pull-systemd-user.sh -``` - -Cela installe sous `~/.config/systemd/user/` : - -- `git-pull-project-clones.service` (généré depuis [`../systemd/user/git-pull-project-clones.service.in`](../systemd/user/git-pull-project-clones.service.in)) -- `git-pull-project-clones.timer` ([`../systemd/user/git-pull-project-clones.timer`](../systemd/user/git-pull-project-clones.timer)) — **toutes les 15 minutes** (`OnCalendar=*:0/15`) - -Commandes utiles : - -```bash -systemctl --user status git-pull-project-clones.timer -systemctl --user list-timers | grep git-pull -journalctl --user -u git-pull-project-clones.service -n 50 --no-pager -``` - -Pour changer la fréquence : éditer le fichier **timer** dans le dépôt, relancer `install-git-pull-systemd-user.sh`, ou éditer directement `~/.config/systemd/user/git-pull-project-clones.timer` puis `systemctl --user daemon-reload`. - -## Prérequis - -- **`jq`** -- Clones avec remote **`origin`** et branche suivie (ex. `test`) - -## Désactiver un projet - -Dans `projects//conf.json` : `"cron": { "git_pull": false }`. - -Pour **tout** arrêter : `PULL_SYNC_ENABLED=0` dans `config.env` ou `config.local.env`, ou `systemctl --user disable --now git-pull-project-clones.timer`. - -## Crontab (alternative) - -Si tu préfères cron au lieu de systemd : une ligne qui appelle **`./cron/git-pull-wrapper.sh`** (pas besoin de redéfinir les variables si tu utilises uniquement `config.env`). Fragments : [`fragments/`](./fragments/) (à aligner sur le wrapper). - -## Hooks AnythingLLM - -Un **`post-merge`** sur un clone peut s’exécuter après un `merge --ff-only` : voir [`scripts/anythingllm-pull-sync`](../scripts/anythingllm-pull-sync/). +**[docs/repo/cron-git-pull.md](../docs/repo/cron-git-pull.md)** diff --git a/cron/fragments/README.md b/cron/fragments/README.md index 134dfdf..465f61d 100644 --- a/cron/fragments/README.md +++ b/cron/fragments/README.md @@ -1,5 +1,5 @@ -# Fragments crontab (alternative à systemd) +# Fragments crontab -La configuration **centralisée** est dans [`../config.env`](../config.env). En **systemd utilisateur** (recommandé) : [`../../scripts/install-git-pull-systemd-user.sh`](../../scripts/install-git-pull-systemd-user.sh). +Voir la section **Crontab** et **Fragments** dans : -Si tu utilises **cron** à la place : une seule ligne qui appelle **`git-pull-wrapper.sh`** (il lit `config.env` / `config.local.env`). Les fichiers `*.cron` ici ne sont que des rappels commentés. +**[docs/repo/cron-git-pull.md](../../docs/repo/cron-git-pull.md)** diff --git a/docs/API/docv.md b/docs/API/docv.md index d714fa2..ee65115 100644 --- a/docs/API/docv.md +++ b/docs/API/docv.md @@ -12,4 +12,4 @@ - Gestion documentaire, chemins, multi-hôte : [features/docv-service-integration.md](../features/docv-service-integration.md) - Intégration IA : [features/docv-ai-integration.md](../features/docv-ai-integration.md) -- Contrat emplacement `services/docv/` : [services/docv/README.md](../../services/docv/README.md) +- Contrat emplacement `services/docv/` : [repo/docv-services-directory.md](../repo/docv-services-directory.md) diff --git a/docs/README.md b/docs/README.md index afcd173..94b1f95 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,30 @@ # Documentation technique — smart_ide -Index des documents à la racine de `docs/`. Les **fonctionnalités** détaillées sont dans [`features/`](./features/). +Index principal. Les **fonctionnalités** détaillées sont dans [`features/`](./features/). La **documentation opérationnelle** regroupée (anciens `README.md` à la racine et sous `cron/`, `projects/`, `services/`, etc.) est dans **[`repo/`](./repo/)**. + +## Documentation du dépôt (`repo/`) + +Vue d’ensemble et index complet : **[repo/README.md](./repo/README.md)**. + +| Document | Contenu | +|----------|---------| +| [repo/smart-ide-overview.md](./repo/smart-ide-overview.md) | Vision produit, stack, liens architecture | +| [repo/projects-directory.md](./repo/projects-directory.md) | `projects//conf.json`, clones, `active-project.json` | +| [repo/cron-git-pull.md](./repo/cron-git-pull.md) | Pull planifié, `cron/config.env`, systemd user | +| [repo/systemd-units.md](./repo/systemd-units.md) | Ollama, AnythingLLM, timer git-pull | +| [repo/logs-directory.md](./repo/logs-directory.md) | Fichiers journaux locaux sous `logs/` | +| [repo/docv-services-directory.md](./repo/docv-services-directory.md) | Répertoire `services/docv/`, contrat intégration | +| [repo/docv-enso-docs-mirror.md](./repo/docv-enso-docs-mirror.md) | Miroir `services/docv/enso-docs/` | +| [repo/ia-dev-smart-ide-integration.md](./repo/ia-dev-smart-ide-integration.md) | Module `ia_dev` dans smart_ide | +| [repo/ia-dev-repository-overview.md](./repo/ia-dev-repository-overview.md) | Dépôt ia_dev : agents, deploy | +| [repo/ia-dev-project-conf-schema.md](./repo/ia-dev-project-conf-schema.md) | Schéma `conf.json`, résolution projet | +| [repo/ia-dev-deploy-lib.md](./repo/ia-dev-deploy-lib.md) | `ia_dev/deploy/lib/` | +| [repo/ia-dev-shared-lib.md](./repo/ia-dev-shared-lib.md) | `ia_dev/lib/project_config.sh` | +| [repo/service-*.md](./repo/README.md) | Exploitation de chaque micro-service (voir index `repo/README`) | +| [repo/script-anythingllm-pull-sync.md](./repo/script-anythingllm-pull-sync.md) | Hook post-merge → AnythingLLM | +| [repo/extension-anythingllm-workspaces.md](./repo/extension-anythingllm-workspaces.md) | Extension VS Code / Cursor | + +Les fichiers **`README.md`** sous `services/*/`, `cron/`, `projects/`, etc. ne font que **renvoyer** vers ces pages. ## Architecture et déploiement @@ -39,15 +63,16 @@ Index des documents à la racine de `docs/`. Les **fonctionnalités** détaillé | Document | Contenu | |----------|---------| -| [ia_dev-module.md](./ia_dev-module.md) | Module `ia_dev` dans le dépôt, agents ; confs dans [`../projects/`](../projects/) | -| [../logs/README.md](../logs/README.md) | Journaux locaux : pull Git planifié, exécutions `ia_dev` | -| [../services/ia_dev/README.md](../services/ia_dev/README.md) | Contrat d’intégration du module `ia_dev` | +| [ia_dev-module.md](./ia_dev-module.md) | Module `ia_dev` dans le dépôt, agents ; confs dans `projects//` | +| [ia_dev-project-smart_ide.md](./ia_dev-project-smart_ide.md) | Projet Cursor / conf `smart_ide` | +| [repo/logs-directory.md](./repo/logs-directory.md) | Journaux : pull planifié, `ia_dev` | +| [repo/ia-dev-smart-ide-integration.md](./repo/ia-dev-smart-ide-integration.md) | Contrat intégration `services/ia_dev/` | ## Données déployées et SSH | Document | Contenu | |----------|---------| -| [features/remote-deployed-data-ssh.md](./features/remote-deployed-data-ssh.md) | Données hors Git sur test/pprod/prod ; SSH pour docv, AnythingLLM, services ; bloc `smart_ide` dans `conf.json` ; config IDE `projects/active-project.json` | +| [features/remote-deployed-data-ssh.md](./features/remote-deployed-data-ssh.md) | Données hors Git sur test/pprod/prod ; SSH ; bloc `smart_ide` dans `conf.json` ; `active-project.json` | ## Fonctionnalités (`features/`) @@ -66,8 +91,3 @@ Index des documents à la racine de `docs/`. Les **fonctionnalités** détaillé | [features/docv-ai-integration.md](./features/docv-ai-integration.md) | Backend docv : API IA smart_ide, clones `../projects/`, AnythingLLM | | [features/docv-service-integration.md](./features/docv-service-integration.md) | docv gestion documentaire, `../projects//data`, `DOCV_PROJECTS_ROOT`, multi-hôte | | [features/browser-automation-criteria.md](./features/browser-automation-criteria.md) | Critères service navigateur optionnel | - -## Arborescence hors `docs/` - -- **Code Local Office** : [`../services/local-office/README.md`](../services/local-office/README.md) (référence opérationnelle, variables, OpenAPI). -- **Micro-services Node/Python** : [`../services/`](../services/) (README par service). diff --git a/docs/ecosystem-architecture-and-sync.md b/docs/ecosystem-architecture-and-sync.md index 776c019..f4bf46b 100644 --- a/docs/ecosystem-architecture-and-sync.md +++ b/docs/ecosystem-architecture-and-sync.md @@ -2,7 +2,7 @@ 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), [features/docv-service-integration.md](./features/docv-service-integration.md). +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), [repo/projects-directory.md](./repo/projects-directory.md), [features/docv-ai-integration.md](./features/docv-ai-integration.md), [features/docv-service-integration.md](./features/docv-service-integration.md). ## 1. Périmètres et référentiels @@ -67,7 +67,7 @@ flowchart TB - **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). -- **Module `ia_dev`** : présent dans l’arborescence du dépôt **smart_ide** ; liens `ia_dev/projects/*` et scripts documentés ([ia_dev-module.md](./ia_dev-module.md), [projects/README.md](../projects/README.md)). +- **Module `ia_dev`** : présent dans l’arborescence du dépôt **smart_ide** ; liens `ia_dev/projects/*` et scripts documentés ([ia_dev-module.md](./ia_dev-module.md), [repo/projects-directory.md](./repo/projects-directory.md)). ### Ollama @@ -90,15 +90,15 @@ Objectif : après un changement **tracé dans Git**, les systèmes en aval (Anyt ### 4.1 Ordre de référence (nouvelle machine ou post-clone) 1. Cloner **smart_ide** : `git clone …` (le répertoire **`ia_dev/`** suit le même historique Git que le monorepo). -2. Recréer le lien conf projet si besoin : `./scripts/ensure-ia-dev-smart-ide-project-link.sh` ([projects/README.md](../projects/README.md)). +2. Recréer le lien conf projet si besoin : `./scripts/ensure-ia-dev-smart-ide-project-link.sh` ([repo/projects-directory.md](./repo/projects-directory.md)). 3. 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. 4. Démarrer **Ollama** et **AnythingLLM** sur l’hôte ([services.md](./services.md)) ; créer les **workspaces** et noter les **slugs**. 5. Configurer l’environnement de synchro AnythingLLM : `~/.config/4nk/anythingllm-sync.env` (URL, clé API) — ne pas commiter les secrets. -6. 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). +6. 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), [repo/script-anythingllm-pull-sync.md](./repo/script-anythingllm-pull-sync.md). ### 4.2 Cycle de travail développeur (projet applicatif) -1. `git pull` (ou `merge`) sur le clone du projet — peut être **automatisé** par [`cron/git-pull-project-clones.sh`](../cron/git-pull-project-clones.sh) à partir des `projects//conf.json` (voir [`cron/README.md`](../cron/README.md)). Le clone porte le **code** ; les **données métier** restent sur les **environnements déployés** (pas dans Git, voir [features/remote-deployed-data-ssh.md](./features/remote-deployed-data-ssh.md)). +1. `git pull` (ou `merge`) sur le clone du projet — peut être **automatisé** par [`cron/git-pull-project-clones.sh`](../cron/git-pull-project-clones.sh) à partir des `projects//conf.json` (voir [repo/cron-git-pull.md](./repo/cron-git-pull.md)). Le clone porte le **code** ; les **données métier** restent sur les **environnements déployés** (pas dans Git, voir [features/remote-deployed-data-ssh.md](./features/remote-deployed-data-ssh.md)). 2. Pour le **RAG / AnythingLLM** : en parallèle du dépôt, un flux **SSH** (ou job docv) alimente un **miroir local** des données déployées ; le hook **post-merge** et **`scripts/anythingllm-pull-sync/sync.mjs`** peuvent cibler **à la fois** le clone (fichiers versionnés) et ce miroir, selon la configuration 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. @@ -110,7 +110,7 @@ Objectif : après un changement **tracé dans Git**, les systèmes en aval (Anyt ### 4.4 Agents, déploiement, ticketing (`ia_dev`) -- Exécution depuis la **racine** de `ia_dev/` ; résolution du projet : `IA_PROJECT_ID`, `--project`, `MAIL_TO`, `AI_AGENT_TOKEN` — voir [`ia_dev/projects/README.md`](../ia_dev/projects/README.md). +- Exécution depuis la **racine** de `ia_dev/` ; résolution du projet : `IA_PROJECT_ID`, `--project`, `MAIL_TO`, `AI_AGENT_TOKEN` — voir [repo/ia-dev-project-conf-schema.md](./repo/ia-dev-project-conf-schema.md). - 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é » diff --git a/docs/features/agent-regex-search-api.md b/docs/features/agent-regex-search-api.md index c678c93..9377b8a 100644 --- a/docs/features/agent-regex-search-api.md +++ b/docs/features/agent-regex-search-api.md @@ -12,7 +12,7 @@ L’article Cursor décrit des index **sparse n-grams**, fichiers sur disque, `m | Élément | Détail | |--------|--------| -| Code | [services/agent-regex-search-api/README.md](../../services/agent-regex-search-api/README.md) | +| Code | [repo/service-agent-regex-search.md](../repo/service-agent-regex-search.md) | | Moteur | `rg --json` ; prérequis : binaire `rg` dans `PATH` | | Confinement | `REGEX_SEARCH_ROOT` (défaut `/home/ncantu/code`) ; `subpath` uniquement **relatif**, sans `..` | | Auth | `REGEX_SEARCH_TOKEN` → `Authorization: Bearer …` sur `POST /search` | diff --git a/docs/features/claw-harness-api.md b/docs/features/claw-harness-api.md index 3426c54..9d5e118 100644 --- a/docs/features/claw-harness-api.md +++ b/docs/features/claw-harness-api.md @@ -15,7 +15,7 @@ Le dépôt amont évolue (Rust / Python, binaires, serveur HTTP). Ce dépôt **n | Fichier / dossier | Rôle | |-------------------|------| -| [services/claw-harness-api/README.md](../../services/claw-harness-api/README.md) | Clone, build résumé, variables du proxy | +| [repo/service-claw-harness.md](../repo/service-claw-harness.md) | Clone, build résumé, variables du proxy | | [services/claw-harness-api/providers.example.yaml](../../services/claw-harness-api/providers.example.yaml) | Exemple : Ollama activé ; **Anthropic `enabled: false`** | | [services/claw-harness-api/proxy/](../../services/claw-harness-api/proxy/) | Proxy `127.0.0.1` + Bearer → URL amont (`CLAW_UPSTREAM_URL`) | diff --git a/docs/features/docv-ai-integration.md b/docs/features/docv-ai-integration.md index 21f0a59..f41107b 100644 --- a/docs/features/docv-ai-integration.md +++ b/docs/features/docv-ai-integration.md @@ -12,7 +12,7 @@ Référence d’arborescence côté Enso (machine de développement type) : dép 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`. +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 [repo/projects-directory.md](../repo/projects-directory.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). L’alimentation du workspace repose sur un corpus **aligné sur les données déployées** : récupération via **SSH** depuis test / pprod / prod puis pipeline de synchro (voir [remote-deployed-data-ssh.md](./remote-deployed-data-ssh.md), [anythingllm-workspaces.md](../anythingllm-workspaces.md), 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é. diff --git a/docs/features/docv-service-integration.md b/docs/features/docv-service-integration.md index 6ee0106..bb123f1 100644 --- a/docs/features/docv-service-integration.md +++ b/docs/features/docv-service-integration.md @@ -27,7 +27,7 @@ flowchart TB M --> DV ``` -- **`PROJECTS_CLONE_ROOT`** : répertoire absolu parent des clones **`/`** (code). Convention : souvent **`../projects`** relatif à smart_ide ([projects/README.md](../../projects/README.md)). +- **`PROJECTS_CLONE_ROOT`** : répertoire absolu parent des clones **`/`** (code). Convention : souvent **`../projects`** relatif à smart_ide ([repo/projects-directory.md](../repo/projects-directory.md)). - **Zone de travail docv** : chemin résolu par **`DOCV_PROJECTS_ROOT`** (ou équivalent) vers un répertoire où les **fichiers issus des environnements déployés** sont présents après **pont SSH** (structure exacte à documenter dans le dépôt docv : sous-dossiers par `projectId`, par env, etc.). ## Adaptations attendues dans le dépôt docv (amont) @@ -57,7 +57,7 @@ L’authentification utilisateur (OIDC) entre front et docv : [sso-docv-enso.md] ## Liens -- Contrat dans le monorepo : [services/docv/README.md](../../services/docv/README.md) +- Contrat dans le monorepo : [repo/docv-services-directory.md](../repo/docv-services-directory.md) - Copie de la doc **enso** (`docs/`) sous [services/docv/enso-docs/](../../services/docv/enso-docs/) (architecture docv, plans, etc.) - IA : [docv-ai-integration.md](./docv-ai-integration.md) - Écosystème et synchro Git : [ecosystem-architecture-and-sync.md](../ecosystem-architecture-and-sync.md) diff --git a/docs/features/langextract-api.md b/docs/features/langextract-api.md index 455b347..fbbd5d8 100644 --- a/docs/features/langextract-api.md +++ b/docs/features/langextract-api.md @@ -14,7 +14,7 @@ Exposer [LangExtract](https://github.com/google/langextract) (Google, Apache-2.0 | Élément | Détail | |--------|--------| -| Code | [services/langextract-api/README.md](../../services/langextract-api/README.md) | +| Code | [repo/service-langextract.md](../repo/service-langextract.md) | | Hôte / port | `127.0.0.1` et port par défaut `37141` (voir README) | | Auth | Si `LANGEXTRACT_SERVICE_TOKEN` est défini : en-tête `Authorization: Bearer …` obligatoire sur `POST /extract` | | Santé | `GET /health` | diff --git a/docs/features/lapce-porting-roadmap.md b/docs/features/lapce-porting-roadmap.md index e2b470e..bf49408 100644 --- a/docs/features/lapce-porting-roadmap.md +++ b/docs/features/lapce-porting-roadmap.md @@ -13,7 +13,7 @@ L’extension [extensions/anythingllm-workspaces/](../../extensions/anythingllm- ## Phase 2 — Parité « Dev tools » et sync RAG -- Panneau ou vue dédiée : saisie des lignes de commande (`/repos-clone-sync`, `/workspace-sync`, …) comme [extensions/anythingllm-workspaces/README.md](../../extensions/anythingllm-workspaces/README.md). +- Panneau ou vue dédiée : saisie des lignes de commande (`/repos-clone-sync`, `/workspace-sync`, …) comme décrit dans [repo/extension-anythingllm-workspaces.md](../repo/extension-anythingllm-workspaces.md). - Réimplémenter **initialRagSync** + `.4nkaiignore` (crate `ignore` ou équivalent Rust). - Ouvrir le dossier dépôt dans Lapce après clone (API workspace Lapce). diff --git a/docs/features/local-office.md b/docs/features/local-office.md index e7fb0ca..a03ee79 100644 --- a/docs/features/local-office.md +++ b/docs/features/local-office.md @@ -2,7 +2,7 @@ ## Emplacement dans le monorepo -Le code et la doc d’exploitation détaillée sont sous **[`services/local-office/`](../../services/local-office/README.md)** (service HTTP local, au même niveau que les autres dossiers de `services/`). L’ancien dépôt forge `git.4nkweb.com/4nk/local_office` a été **fusionné par copie de fichiers** ; le dépôt distant peut être supprimé. +Le code et la doc d’exploitation détaillée sont sous **`services/local-office/`** ; la doc centralisée : [repo/service-local-office.md](../repo/service-local-office.md). L’ancien dépôt forge `git.4nkweb.com/4nk/local_office` a été **fusionné par copie de fichiers** ; le dépôt distant peut être supprimé. ## Rôle produit @@ -74,7 +74,7 @@ Les répertoires `data/` sont listés dans [`services/local-office/.gitignore`]( | Fichier | Contenu | |---------|---------| -| [services/local-office/README.md](../../services/local-office/README.md) | Installation, routes, résumé API | +| [repo/service-local-office.md](../repo/service-local-office.md) | Installation, routes, résumé API | | [services/local-office/docs/features/local-office-api.md](../../services/local-office/docs/features/local-office-api.md) | Fiche fonctionnelle (impacts, sécurité, déploiement) | | [services/local-office/docs/architecture-proposal.md](../../services/local-office/docs/architecture-proposal.md) | Pistes ONLYOFFICE / hybride / WOPI | diff --git a/docs/features/remote-deployed-data-ssh.md b/docs/features/remote-deployed-data-ssh.md index f19978c..8b39eef 100644 --- a/docs/features/remote-deployed-data-ssh.md +++ b/docs/features/remote-deployed-data-ssh.md @@ -84,4 +84,4 @@ Ordre de priorité suggéré pour les automatisations : **`projects/active-proje - IA docv : [docv-ai-integration.md](./docv-ai-integration.md) - AnythingLLM : [anythingllm-workspaces.md](../anythingllm-workspaces.md) - Écosystème Git / synchro : [ecosystem-architecture-and-sync.md](../ecosystem-architecture-and-sync.md) -- Index `projects/` : [projects/README.md](../../projects/README.md) +- Index `projects/` : [repo/projects-directory.md](../repo/projects-directory.md) diff --git a/docs/ia_dev-module.md b/docs/ia_dev-module.md index b5ff5a2..47e9576 100644 --- a/docs/ia_dev-module.md +++ b/docs/ia_dev-module.md @@ -2,22 +2,22 @@ Le répertoire **`./ia_dev`** à la racine du monorepo **smart_ide** contient l’**équipe d’agents** (définitions sous `.cursor/agents/`, `.cursor/rules/`), **`deploy/`**, **`gitea-issues/`**, etc. Il est **versionné dans ce dépôt** (plus de sous-module Git séparé pour le checkout standard). -Les **`conf.json` par projet** pour ce monorepo restent 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 un clone neuf ou une réorganisation des dossiers, exécuter si besoin : +Les **`conf.json` par projet** pour ce monorepo restent sous **`./projects//`** à 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). 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 un clone neuf ou une réorganisation des dossiers, exécuter si besoin : ```bash ./scripts/ensure-ia-dev-smart-ide-project-link.sh ``` -L’exécution des scripts reste **depuis la racine `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 l’environnement IDE, les scripts hôte, les unités systemd et les journaux sous [`logs/`](../logs/README.md). +L’exécution des scripts reste **depuis la racine `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 l’environnement 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`](../logs/README.md) (via [`cron/git-pull-wrapper.sh`](../cron/git-pull-wrapper.sh)). -- Scripts `ia_dev` : [`logs/ia_dev.log`](../logs/README.md) (via [`ia_dev/lib/smart_ide_logs.sh`](../ia_dev/lib/smart_ide_logs.sh)). +- 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 [`ia_dev/lib/smart_ide_logs.sh`](../ia_dev/lib/smart_ide_logs.sh)). ## Service d’intégration -Le périmètre « service » côté monorepo est documenté sous [`services/ia_dev/`](../services/ia_dev/README.md) (contrat, chemins, variables de référence). +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 diff --git a/docs/ia_dev-project-smart_ide.md b/docs/ia_dev-project-smart_ide.md index 3ffeed5..97ffdf0 100644 --- a/docs/ia_dev-project-smart_ide.md +++ b/docs/ia_dev-project-smart_ide.md @@ -7,7 +7,7 @@ Le dépôt **smart_ide** est enregistré dans le sous-module **`ia_dev`** sous l - **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. Les **clones** d’autres apps (docv, etc.) ne vont **pas** dans `./projects/` : voir [projects/README.md](../projects/README.md). +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 [repo/projects-directory.md](./repo/projects-directory.md). ## Agents Cursor (pont smart_ide → ia_dev) @@ -35,7 +35,7 @@ Dans ce dépôt, les définitions **Cursor** sous [`.cursor/agents/`](../.cursor 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. +**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 : [repo/ia-dev-project-conf-schema.md](./repo/ia-dev-project-conf-schema.md). Conf **smart_ide** : `projects/smart_ide/conf.json` à la racine du monorepo. ## Liens diff --git a/docs/repo/README.md b/docs/repo/README.md new file mode 100644 index 0000000..a287eab --- /dev/null +++ b/docs/repo/README.md @@ -0,0 +1,39 @@ +# 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. +- **Miroir doc Enso (docv)** : l’arborescence volumineuse **`services/docv/enso-docs/`** reste **sur le disque** sous ce chemin (copie depuis le dépôt enso) ; l’explication du flux de mise à jour est dans [docv-enso-docs-mirror.md](./docv-enso-docs-mirror.md). + +## Index + +| Document | Contenu | +|----------|---------| +| [smart-ide-overview.md](./smart-ide-overview.md) | Vision produit, stack IA, monorepo, liens vers l’architecture | +| [projects-directory.md](./projects-directory.md) | `projects//conf.json`, clones vs confs, `active-project.json`, cron | +| [cron-git-pull.md](./cron-git-pull.md) | Pull planifié des clones, `config.env`, systemd user, alternative cron | +| [systemd-units.md](./systemd-units.md) | Ollama, AnythingLLM, timer `git-pull-project-clones` | +| [logs-directory.md](./logs-directory.md) | Fichiers journaux locaux, `.gitignore`, origine des logs | +| [docv-services-directory.md](./docv-services-directory.md) | Répertoire `services/docv/` : contrat d’intégration, chemins données | +| [docv-enso-docs-mirror.md](./docv-enso-docs-mirror.md) | Miroir `enso-docs/`, commande de resynchronisation | +| [ia-dev-smart-ide-integration.md](./ia-dev-smart-ide-integration.md) | Module `ia_dev` dans smart_ide, journaux, liens architecture | +| [ia-dev-repository-overview.md](./ia-dev-repository-overview.md) | Dépôt ia_dev : agents, scripts deploy, usage standalone | +| [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md) | Schéma `projects//conf.json`, résolution du projet, règles agents | +| [ia-dev-deploy-lib.md](./ia-dev-deploy-lib.md) | Bibliothèques partagées `ia_dev/deploy/lib/` | +| [ia-dev-shared-lib.md](./ia-dev-shared-lib.md) | `ia_dev/lib/project_config.sh` et résolution projet | +| **Services HTTP (exploitation)** | | +| [service-repos-devtools.md](./service-repos-devtools.md) | Clone / liste / load Git sous racine contrôlée | +| [service-local-office.md](./service-local-office.md) | API Office (docx, …) | +| [service-smart-ide-orchestrator.md](./service-smart-ide-orchestrator.md) | Routeur d’intentions HTTP | +| [service-ia-dev-gateway.md](./service-ia-dev-gateway.md) | Gateway ia_dev (agents, runs, SSE) | +| [service-agent-regex-search.md](./service-agent-regex-search.md) | Recherche regex via ripgrep | +| [service-claw-harness.md](./service-claw-harness.md) | claw-code, proxy local | +| [service-langextract.md](./service-langextract.md) | Wrapper LangExtract | +| **Scripts et extensions** | | +| [script-anythingllm-pull-sync.md](./script-anythingllm-pull-sync.md) | Hook post-merge → upload AnythingLLM | +| [extension-anythingllm-workspaces.md](./extension-anythingllm-workspaces.md) | Extension VS Code / Cursor AnythingLLM | + +Les **spécifications** détaillées (contrats HTTP, sécurité, orchestration) restent dans [../API/README.md](../API/README.md) et [../features/](../features/). diff --git a/docs/repo/cron-git-pull.md b/docs/repo/cron-git-pull.md new file mode 100644 index 0000000..0faf479 --- /dev/null +++ b/docs/repo/cron-git-pull.md @@ -0,0 +1,66 @@ +# Tirage Git planifié — clones `projects/*/conf.json` + +## Comportement + +Le script `cron/git-pull-project-clones.sh` parcourt `projects//` (fichiers `conf.json`), lit **`project_path`**, et pour chaque dépôt Git : + +1. **`git fetch origin `** +2. si **`origin/`** est en avance en **fast-forward** → **`git merge --ff-only origin/`** +3. sinon → message explicite, **pas** de merge forcé + +## Configuration centralisée + +| Fichier | Rôle | +|---------|------| +| `cron/config.env` | **Versionné** : `PULL_SYNC_ENABLED`, `PULL_SYNC_MODE` (`all` \| `project`), `PULL_SYNC_PROJECT_ID`, `PULL_SYNC_LOG` | +| `cron/config.local.env` | **Optionnel, non versionné** (`cron/config.local.env.example`) — surcharge machine | + +Le script `cron/git-pull-wrapper.sh` charge ces fichiers puis appelle `git-pull-project-clones.sh` et **append** la sortie dans `PULL_SYNC_LOG` (défaut : **`logs/git-pull-projects.log`** — voir [logs-directory.md](./logs-directory.md)). + +## Mise en place recommandée : systemd utilisateur + +Depuis la racine du dépôt **smart_ide** : + +```bash +./scripts/install-git-pull-systemd-user.sh +``` + +Cela installe sous `~/.config/systemd/user/` : + +- `git-pull-project-clones.service` (généré depuis `systemd/user/git-pull-project-clones.service.in`) +- `git-pull-project-clones.timer` (`systemd/user/git-pull-project-clones.timer`) — **toutes les 15 minutes** (`OnCalendar=*:0/15`) + +Commandes utiles : + +```bash +systemctl --user status git-pull-project-clones.timer +systemctl --user list-timers | grep git-pull +journalctl --user -u git-pull-project-clones.service -n 50 --no-pager +``` + +Pour changer la fréquence : éditer le fichier **timer** dans le dépôt, relancer `install-git-pull-systemd-user.sh`, ou éditer directement `~/.config/systemd/user/git-pull-project-clones.timer` puis `systemctl --user daemon-reload`. + +Détail des unités : [systemd-units.md](./systemd-units.md). + +## Prérequis + +- **`jq`** +- Clones avec remote **`origin`** et branche suivie (ex. `test`) + +## Désactiver un projet + +Dans `projects//conf.json` : `"cron": { "git_pull": false }`. + +Pour **tout** arrêter : `PULL_SYNC_ENABLED=0` dans `config.env` ou `config.local.env`, ou `systemctl --user disable --now git-pull-project-clones.timer`. + +## Crontab (alternative) + +Si tu préfères cron au lieu de systemd : une ligne qui appelle **`cron/git-pull-wrapper.sh`** (pas besoin de redéfinir les variables si tu utilises uniquement `config.env`). + +### Fragments `cron/fragments/*.cron` + +Fichiers **commentés** servant de rappel ; la configuration **centralisée** reste dans `cron/config.env`. En **systemd utilisateur** (recommandé) : `scripts/install-git-pull-systemd-user.sh`. + +## Hooks AnythingLLM + +Un **`post-merge`** sur un clone peut s’exécuter après un `merge --ff-only` : voir `scripts/anythingllm-pull-sync/` et [script-anythingllm-pull-sync.md](./script-anythingllm-pull-sync.md). diff --git a/docs/repo/docv-enso-docs-mirror.md b/docs/repo/docv-enso-docs-mirror.md new file mode 100644 index 0000000..d1490f8 --- /dev/null +++ b/docs/repo/docv-enso-docs-mirror.md @@ -0,0 +1,26 @@ +# Miroir de la documentation Enso (`services/docv/enso-docs/`) + +## Pourquoi ce répertoire reste sous `services/docv/` + +L’arborescence **`services/docv/enso-docs/`** est une **copie** du dossier **`docs/`** du dépôt **enso**. Elle est volumineuse (spécifications, installation, docv métier). Elle reste **à cet emplacement** pour : + +- garder un **chemin stable** pour les scripts et les contributeurs qui ouvrent le monorepo sans clone **enso** à côté ; +- conserver la procédure documentée dans [docv-services-directory.md](./docv-services-directory.md) sans déplacer des centaines de fichiers à chaque synchronisation. + +La **documentation canonique smart_ide** (architecture, API, features) vit sous **`docs/`** à la racine du monorepo ; **`enso-docs/`** est un **amas de référence amont**, pas la doc de gouvernance du monorepo. + +## Resynchroniser depuis le dépôt enso + +Après une évolution majeure de la doc **enso** : + +```bash +# depuis la racine smart_ide +rm -rf services/docv/enso-docs +cp -a /chemin/vers/enso/docs services/docv/enso-docs +``` + +Remplacer `/chemin/vers/enso/docs` par le clone local du dépôt **enso**. + +## Point d’entrée + +Fichier **`services/docv/enso-docs/README.md`** (livré avec la copie amont). diff --git a/docs/repo/docv-services-directory.md b/docs/repo/docv-services-directory.md new file mode 100644 index 0000000..be04998 --- /dev/null +++ b/docs/repo/docv-services-directory.md @@ -0,0 +1,38 @@ +# docv — intégration (`services/docv/`) + +Ce répertoire ne contient **pas** le code du produit **docv** (gestion documentaire pour les projets Enso). Il documente le **contrat d’intégration** entre le monorepo **smart_ide** et le dépôt **docv**, attendu sous un chemin du type **`…/enso/docv`** sur la machine qui exécute docv. + +## Documentation Enso (`services/docv/enso-docs/`) + +Une **copie** de l’arborescence **`docs/`** du dépôt **enso** est conservée sous **`services/docv/enso-docs/`** pour consultation dans le monorepo **sans dépendre du clone enso** sur la machine. Mise à jour et périmètre : [docv-enso-docs-mirror.md](./docv-enso-docs-mirror.md). + +## Rôle de docv + +**docv** apporte les **services de gestion documentaire** aux projets : stockage, workflows et API métier documents côté filière Enso. Les **données projet** de référence vivent sur les **environnements déployés** ; docv (et les jobs de synchro AnythingLLM) les **récupèrent via SSH** — [features/remote-deployed-data-ssh.md](../features/remote-deployed-data-ssh.md). + +## Convention de chemins : clones et zone de travail + +| Concept | Description | +|---------|-------------| +| **`PROJECTS_CLONE_ROOT`** | Répertoire absolu parent des **clones** **`/`** (code). Souvent **`../projects`** relatif à **smart_ide** ([projects-directory.md](./projects-directory.md)). | +| **Données pour docv / RAG** | Répertoire résolu par **`DOCV_PROJECTS_ROOT`** (ou équivalent) : contenu **aligné sur les serveurs** test / pprod / prod après **pont SSH**, pas un dossier `data/` versionné dans Git. | + +Sur un poste de développement, **`DOCV_PROJECTS_ROOT`** pointe typiquement vers un **cache ou miroir** alimenté par les scripts documentés dans le dépôt docv et [features/docv-service-integration.md](../features/docv-service-integration.md). + +## Côté dépôt docv (amont) + +Le code docv doit résoudre le chemin données via une variable d’environnement du type **`DOCV_PROJECTS_ROOT`**, puis : + +`cheminDonnées = join(DOCV_PROJECTS_ROOT, projectId, 'data')` + +sans chemins absolus figés dans le code. Détail : [features/docv-service-integration.md](../features/docv-service-integration.md). + +## Consommateurs smart_ide (orchestrateur, front) + +Variables documentées dans `services/docv/.env.example`. Valeurs réelles **hors dépôt** ([platform-target.md](../platform-target.md)). + +## Liens + +- Gestion documentaire + données + multi-hôte : [features/docv-service-integration.md](../features/docv-service-integration.md) +- API IA consommées par docv : [features/docv-ai-integration.md](../features/docv-ai-integration.md) +- SSO OIDC : [features/sso-docv-enso.md](../features/sso-docv-enso.md) diff --git a/docs/repo/extension-anythingllm-workspaces.md b/docs/repo/extension-anythingllm-workspaces.md new file mode 100644 index 0000000..55c5c83 --- /dev/null +++ b/docs/repo/extension-anythingllm-workspaces.md @@ -0,0 +1,43 @@ +# Extension AnythingLLM (`extensions/anythingllm-workspaces/`) + +Extension **VS Code / Cursor** : API développeur AnythingLLM (workspaces, documents), **repos-devtools-server** optionnel, panneau **Dev tools**, upload RAG initial après clone/load via **`.4nkaiignore`**. + +## Prérequis + +- AnythingLLM avec **clé API développeur** (ne pas confondre avec le Bearer nginx pour `/ollama/`). +- **repos-devtools-server** sur l’hôte qui possède les clones (défaut `http://127.0.0.1:37140`) — [service-repos-devtools.md](./service-repos-devtools.md). +- Processeur de documents en ligne pour les uploads. + +## Paramètres (settings) + +| Clé | Rôle | +|-----|------| +| `anythingllm.baseUrl` | URL AnythingLLM sans `/` final | +| `anythingllm.apiKey` | Clé API (settings utilisateur) | +| `anythingllm.reposApiBaseUrl` | URL repos-devtools | +| `anythingllm.reposApiToken` | Identique à `REPOS_DEVTOOLS_TOKEN` | +| `anythingllm.initialSyncAfterClone` | Défaut activé : upload après clone/load/workspace-sync | +| `anythingllm.initialSyncMaxFiles` | Défaut `400` | +| `anythingllm.initialSyncMaxFileBytes` | Défaut `5242880` | + +## Commandes (palette) + +List workspaces, ouvrir UI web, panneau Dev tools, lignes de commande scriptées (`/repos-clone-sync`, `/repos-load-sync`, `/workspace-sync`, …). + +## `.4nkaiignore` + +- Modèle : `extensions/anythingllm-workspaces/templates/4nkaiignore.default` (aligné avec repos-devtools-server). +- À la racine du dépôt cible : fichier **`.4nkaiignore`**. +- Filtrage : paquet **`ignore`** (sémantique gitignore) + règles de base (`.git/`, `node_modules/`, …). + +## Build + +```bash +cd extensions/anythingllm-workspaces +npm install +npm run compile +``` + +## Références + +API documents AnythingLLM amont ; [anythingllm-workspaces.md](../anythingllm-workspaces.md). diff --git a/docs/repo/ia-dev-deploy-lib.md b/docs/repo/ia-dev-deploy-lib.md new file mode 100644 index 0000000..dc7ecb0 --- /dev/null +++ b/docs/repo/ia-dev-deploy-lib.md @@ -0,0 +1,32 @@ +# Bibliothèques partagées `ia_dev/deploy/lib/` + +## `ssh.sh` + +Helpers SSH/SCP canoniques (`ssh_run`, `scp_copy`, `require_ssh_key`, `ssh_common_opts`). +**LeCoffre** : `deploy/scripts_v2/_lib/ssh.sh` du projet peut sourcer `ia_dev/deploy/lib/ssh.sh` lorsque ce chemin existe depuis la racine du monorepo. + +## `deploy-log.sh` + +Optionnel : `deploy_script_tee_log_if_requested [deploy_env]` — troisième argument `test` \| `pprod` \| `prod` pour le nom de fichier journal. Nécessite `info` depuis `colors.sh` du projet. + +## Politique + +La logique **spécifique à un projet** (Prisma, noms d’unités systemd, layout distant LeCoffre) reste dans le `deploy/scripts_v2/` de chaque dépôt. Ici : transport, journalisation, helpers génériques. + +## `deploy-methodology.sh` + +Contrat partagé : environnements `test` \| `pprod` \| `prod`, validations. Sourcé par **`deploy.sh`** et **`orchestrator.sh`**. + +**Frontière** : tout ce qui est **strictement identique** pour chaque projet vit ici ou dans un `deploy/lib/deploy-*.sh` pair. + +## `deploy-conf-handling.sh` + +Lecture **`conf.json`** : `jq`, `deploy.secrets_path`, exports **`IA_DEV_DEPLOY_REPO_ROOT`**, **`IA_DEV_DEPLOY_ENV`** (mandatory handoff, pas de repli silencieux). Sourcé par **`orchestrator.sh`**. + +## Orchestration + +- **`deploy.sh`** : `./deploy/deploy.sh [args]` → **`exec orchestrator.sh`** +- **`orchestrator.sh`** : secrets puis **`exec`** orchestrateur projet (`deploy.project_orchestrator_path`). Legacy : `deploy.hooks.phases` ou `deploy.deploy_script_path`. +- **`run-project-hooks.sh`** : délègue à **`orchestrator.sh`**. + +Voir [ia-dev-repository-overview.md](./ia-dev-repository-overview.md). diff --git a/docs/repo/ia-dev-project-conf-schema.md b/docs/repo/ia-dev-project-conf-schema.md new file mode 100644 index 0000000..ffadf1a --- /dev/null +++ b/docs/repo/ia-dev-project-conf-schema.md @@ -0,0 +1,65 @@ +# Schéma `projects//conf.json` (ia_dev) + +Ce document est la **copie canonique** dans **smart_ide** du schéma de configuration ia_dev. Le fichier amont peut exister sous **`ia_dev/projects/README.md`** dans un checkout qui suit le dépôt ia_dev seul. + +Le dépôt **ia_dev** est un **dépôt autonome**. Les paramètres par projet sont dans `projects//conf.json`. Le **``** est le nom du répertoire sous `projects/`. + +**Chemins dans conf.json** +Les scripts dans `deploy/` déploient les **projets configurés** dans leurs répertoires ; ils ne déploient pas ia_dev. + +- **Chemins projet / deploy** (`project_path`, `deploy.repository_root`, etc.) : **absolus** ou **relatifs à la racine du monorepo smart_ide**. Résolution : `ia_dev/lib/conf_path_resolve.sh` lorsque la conf vit sous `…/projects//conf.json` ou `…/ia_dev/projects//conf.json`. +- **`build_dirs`** : **absolu** ; **relatif au monorepo** si la valeur commence par `../` ; sinon **relatif à la racine Git du projet** (`repository_root`). +- **`version.package_json_paths`** : **relatif à la racine du dépôt projet** sauf absolu. +- **Relatif à la racine ia_dev** : `mail.imap_bridge_env`, `git.token_file` → fichiers sous `.secrets/` de ia_dev. + +## Résolution du projet courant + +L’**id** est déterminé par (premier match) : + +1. **Paramètre explicite** : premier argument ou `--project ` (`pousse.sh`, etc.) ; variable **`IA_PROJECT_ID`** lorsque les scripts l’exportent. +2. **MAIL_TO** : adresse « To » du mail comparée à `tickets.authorized_emails.to` dans chaque `conf.json`. +3. **AI_AGENT_TOKEN** : comparaison avec `projects//.secrets//ia_token`. + +Pas d’autres sources (`IA_PROJECT`, `.ia_project`, etc.). + +## Règle : `conf.json` en lecture seule pour les agents + +Les agents ne modifient pas `projects//conf.json` sans validation humaine explicite (décrire la modification, demander accord). + +## Table des champs (extrait) + +| Field | Required | Description | +|-------|----------|-------------| +| `id` | no | Identifiant (défaut : nom du répertoire). | +| `name` | no | Nom lisible. | +| `project_path` | no | Racine Git du clone pour cron / outillage. | +| `build_dirs` | no | Répertoires `npm run build` (règles de relatif / absolu ci-dessus). | +| `deploy.*` | no | Chemins scripts, secrets, orchestrateur — voir tableau complet dans l’historique Git de ce fichier ou `ia_dev/projects/README.md` amont. | +| `deploy.host_stays_on_test` | no | Comportement `deploy-by-script-to.sh` (branche test vs pprod/prod). | +| `tickets` | no | URL issues, `authorized_emails` ; le **to** sert à résoudre le projet. | +| `cron` | no | Extension **smart_ide** : `{ "git_pull": false }` pour désactiver le pull planifié. | +| `smart_ide` | no | Extension **smart_ide** : `remote_data_access`, `anythingllm_workspace_slug`, etc. | + +Détail ticketing : `ia_dev/projects/ia_dev/docs/TICKETS_SPOOL_FORMAT.md`. + +**.secrets à la racine ia_dev** : `token`, `gitea-issues/agent-loop.env`, `gitea-issues/imap-bridge.env`. + +## Exemple minimal + +```json +{ + "name": "My App", + "project_path": "/path/to/project/deploy", + "build_dirs": ["/path/to/project/deploy/backend", "/path/to/project/deploy/frontend"] +} +``` + +## Exemple complet + +Référence dans un dépôt qui versionne ce projet : `projects/lecoffreio/conf.json` (checkout ia_dev avec projet lecoffreio). + +## Voir aussi + +- [projects-directory.md](./projects-directory.md) — rôle de `./projects/` dans **smart_ide** +- [ia-dev-repository-overview.md](./ia-dev-repository-overview.md) — vue d’ensemble ia_dev +- [ia-dev-shared-lib.md](./ia-dev-shared-lib.md) — `project_config.sh` diff --git a/docs/repo/ia-dev-repository-overview.md b/docs/repo/ia-dev-repository-overview.md new file mode 100644 index 0000000..666abda --- /dev/null +++ b/docs/repo/ia-dev-repository-overview.md @@ -0,0 +1,52 @@ +# ia_dev — dépôt de pilotage (agents, deploy, ticketing) + +Dépôt de pilotage par l'IA pour les projets : **équipe d'agents IA** dont le code et les définitions sont dans ia_dev, lancés de façon centralisée pour tous les projets configurés (lecoffreio, enso, algo, etc.) ; ils agissent sur ces projets, pas sur ia_dev. Objectif : une équipe autonome couvrant la **documentation**, le **code** (correctifs, évolutions), le **ticketing** (issues Gitea, mails), le **devops** (push, déploiement, branches), la **sécurité** et la **qualité** (lint, règles). + +**Principe** : ia_dev est un **dépôt autonome** (usage unique : standalone). La config par projet est dans `projects//conf.json` ; l'id projet est résolu par **MAIL_TO** (adresse « to » des mails) ou **AI_AGENT_TOKEN** (token des requêtes). Schéma détaillé : [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md). + +## Usage (standalone) + +- **Racine d'exécution** : tous les scripts sont lancés depuis la **racine de ia_dev** (ce dépôt). L'id projet est résolu par **MAIL_TO**, **AI_AGENT_TOKEN**, **`IA_PROJECT_ID`**, **`--project`**, ou premier argument selon le script (voir [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md)). +- **Config** : dans `projects//conf.json`, les chemins vers les dépôts projet peuvent être **absolus** ou **relatifs à la racine du monorepo smart_ide** lorsque ia_dev y est intégré (`lib/conf_path_resolve.sh`). Les champs `mail.imap_bridge_env` et `git.token_file` sont **relatifs à la racine de ia_dev**. Le répertoire `.secrets` à la racine de ia_dev contient `token` et `gitea-issues/agent-loop.env`, `gitea-issues/imap-bridge.env`. + +## Agents et domaines + +Les **agents** ont leur **code et définitions** dans ia_dev (`.cursor/agents/`, `.cursor/rules/`) et sont **lancés de façon centralisée** depuis ce dépôt pour **tous les projets**. Ils sont **dédiés aux projets configurés** : ils agissent sur ces projets (doc, code, déploiement, ticketing), pas sur ia_dev. + +Chaque agent indique où se trouve la doc : **projets gérés** → `projects//docs` ; **ia_dev** → `ia_dev/projects/ia_dev/docs` (copie embarquée selon checkout). + +| Domaine | Agents / composants | +|---------|---------------------| +| **Doc** | `docupdate` ; `ia_dev/projects/ia_dev/docs/` ; migration wiki (`gitea-issues/wiki-migrate-docs.sh`). | +| **Code** | `fix`, `evol`, `code`, `fix-search` ; workflow correctifs/évolutions. | +| **Ticketing** | `gitea-issues-process`, `agent-loop` ; spooler `projects//data/issues` ; scripts `gitea-issues/`. | +| **IA notaire (ai_working_help)** | `notary-ai-loop`, `notary-ai-process` ; API `ai_working_help/server.js` ; spooler `projects//data/notary-ai/{pending,responded}`. | +| **DevOps** | `push-by-script`, `deploy-by-script`, `deploy-pprod-or-prod`, `branch-align-by-script-from-test`, `change-to-all-branches` ; scripts `deploy/`. | +| **Sécurité / Qualité** | Règles `.cursor/rules/` ; pas de secrets en dur ; `fix-lint` ; clôture obligatoire (`.cursor/rules/cloture-evolution.mdc`). | + +Référence détaillée : `ia_dev/projects/ia_dev/docs/GITEA_ISSUES_SCRIPTS_AGENTS.md`. Index : `ia_dev/projects/ia_dev/docs/README.md`. + +## Répertoire d'exécution (standalone) + +Tous les scripts sont invoqués depuis la **racine de ia_dev**. + +- **deploy/** : déploient les **projets configurés**, pas ia_dev. +- **gitea-issues/** : logs et data par projet sous `projects//logs/` et `projects//data/issues/`. +- **ai_working_help/** : API et scripts `notary-ai/` ; doc `ai_working_help/docs/notary-ai-api.md`. + +## Scripts centralisés (`deploy/`) + +Les scripts **déploient et versionnent les projets configurés** dans leurs répertoires. Chaque script accepte en option un **project_id** (ou `--project`) ; sinon résolution par MAIL_TO ou AI_AGENT_TOKEN. + +**Orchestration générique** : + +- **deploy/lib/deploy-methodology.sh** : environnements `test` \| `pprod` \| `prod`, validations communes. +- **deploy.sh** : `./deploy/deploy.sh [options…]` — puis **orchestrator.sh**. +- **orchestrator.sh** : secrets depuis `conf.json`, puis **`exec`** du **script orchestrateur projet** : `deploy.project_orchestrator_path` (relatif à `repository_root`). **Repli** : `hooks.phases` ou `deploy.deploy_script_path`. +- **run-project-hooks.sh** : délègue à **orchestrator.sh**. + +Autres : **bump-version.sh**, **deploy-by-script-to.sh**, **pousse.sh**, **branch-align.sh**, **change-to-all-branches.sh**. Bibliothèque partagée : **deploy/_lib/** — détail [ia-dev-deploy-lib.md](./ia-dev-deploy-lib.md). + +## Intégration smart_ide + +Quand ia_dev est dans le monorepo **smart_ide** : [ia-dev-smart-ide-integration.md](./ia-dev-smart-ide-integration.md), [ia_dev-module.md](../ia_dev-module.md). diff --git a/docs/repo/ia-dev-shared-lib.md b/docs/repo/ia-dev-shared-lib.md new file mode 100644 index 0000000..c5409f8 --- /dev/null +++ b/docs/repo/ia-dev-shared-lib.md @@ -0,0 +1,16 @@ +# Bibliothèque partagée `ia_dev/lib/` + +## `project_config.sh` + +Sourcé par les scripts **deploy** et **gitea-issues** pour résoudre l’**id** projet et le chemin vers son JSON. + +**Usage standalone** : exécution depuis la racine **ia_dev** ; définir **`IA_DEV_ROOT`** avant source si besoin. + +**Après source** : `PROJECT_ID`, `PROJECT_CONFIG_PATH` (souvent `projects//conf.json`). Avec résolution par token : `PROJECT_ENV`. + +**Résolution de l’id (pas de repli implicite)** : + +1. **MAIL_TO** — recherche dans tous les `projects/*/conf.json` (`tickets.authorized_emails.to`). +2. **AI_AGENT_TOKEN** — scan des fichiers `projects//.secrets//ia_token`. + +Voir [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md). diff --git a/docs/repo/ia-dev-smart-ide-integration.md b/docs/repo/ia-dev-smart-ide-integration.md new file mode 100644 index 0000000..77a165f --- /dev/null +++ b/docs/repo/ia-dev-smart-ide-integration.md @@ -0,0 +1,23 @@ +# ia_dev — module smart_ide (`services/ia_dev/` + `ia_dev/`) + +Le répertoire **`ia_dev/`** à la racine du monorepo **smart_ide** est le **module agents / déploiement / ticketing** (équivalent historique du dépôt [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git)). Il est **versionné dans ce dépôt**. + +## Rôle + +- Scripts **`ia_dev/deploy/`**, **`ia_dev/gitea-issues/`**, outillage **`ia_dev/tools/`**, définitions **`ia_dev/.cursor/`**. +- Résolution des projets via **`projects//conf.json`** à la racine **smart_ide** et liens sous `ia_dev/projects/` (voir [projects-directory.md](./projects-directory.md), [ia_dev-module.md](../ia_dev-module.md)). + +## Journaux smart_ide + +Les exécutions shell concernées écrivent dans **`logs/ia_dev.log`** à la racine **smart_ide** lorsque la détection du monorepo réussit. Détail : [logs-directory.md](./logs-directory.md), implémentation `ia_dev/lib/smart_ide_logs.sh`. + +## Variables (référence) + +Chemins réels et secrets : hors dépôt. Intégration orchestrateur / gateway : `services/ia_dev/.env.example`. + +## Liens + +- Vue d’ensemble du dépôt ia_dev (agents, deploy) : [ia-dev-repository-overview.md](./ia-dev-repository-overview.md) +- Schéma `conf.json` : [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md) +- Architecture : [system-architecture.md](../system-architecture.md) +- Gateway HTTP : [features/ia-dev-service.md](../features/ia-dev-service.md), [API/ia-dev-gateway.md](../API/ia-dev-gateway.md) diff --git a/docs/repo/logs-directory.md b/docs/repo/logs-directory.md new file mode 100644 index 0000000..f3bf9f2 --- /dev/null +++ b/docs/repo/logs-directory.md @@ -0,0 +1,18 @@ +# Journaux smart_ide (`logs/`) + +Le répertoire **`logs/`** est **versionné** comme conteneur (fichiers `README.md`, `.gitignore`) ; les fichiers **`*.log`** produits sur chaque machine restent **hors Git** (règles `logs/**/*.log` à la racine du dépôt et `**/*.log` dans `logs/.gitignore`). + +## Fichiers courants + +| Fichier | Origine | +|---------|---------| +| `git-pull-projects.log` | Tirage Git planifié (`cron/git-pull-wrapper.sh`), variable `PULL_SYNC_LOG` dans `cron/config.env` | +| `ia_dev.log` | Exécutions shell sous `ia_dev/` lorsque le checkout est détecté comme monorepo **smart_ide** (`cron/git-pull-wrapper.sh` ou `projects/smart_ide/` au-dessus de `ia_dev/`) | + +Variable interne : **`SMART_IDE_LOG_IA_DEV_ROOT`** (racine `ia_dev`), posée par `ia_dev/lib/smart_ide_logs.sh`. + +## Intégration + +Contrat service : [ia-dev-smart-ide-integration.md](./ia-dev-smart-ide-integration.md), implémentation `ia_dev/lib/smart_ide_logs.sh`. + +Configuration du pull planifié : [cron-git-pull.md](./cron-git-pull.md). diff --git a/docs/repo/projects-directory.md b/docs/repo/projects-directory.md new file mode 100644 index 0000000..6e017ec --- /dev/null +++ b/docs/repo/projects-directory.md @@ -0,0 +1,53 @@ +# 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. + +Les **sous-répertoires** `projects//` 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//` et `!projects//**` à 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//`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici. + +- **`./projects/`** → 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 [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, exécuter si besoin `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` + +## Synchronisation Git planifiée + +Pour **chaque** `projects//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`**. Exemple : `projects/enso/conf.json`. + +### Projet actif pour l’éditeur / Cursor + +1. Copier `projects/active-project.json.example` vers **`projects/active-project.json`** (non versionné) ; renseigner **`id`**, optionnellement **`default_env`**, **`notes`** (informative). +2. Dans un **`.code-workspace`** : **`smartIde.activeProjectId`** dans **`settings`** (ex. `projects/enso/smart_ide.code-workspace`). + +Convention agents : `.cursor/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. diff --git a/docs/repo/script-anythingllm-pull-sync.md b/docs/repo/script-anythingllm-pull-sync.md new file mode 100644 index 0000000..91b073c --- /dev/null +++ b/docs/repo/script-anythingllm-pull-sync.md @@ -0,0 +1,51 @@ +# anythingllm-pull-sync (`scripts/anythingllm-pull-sync/`) + +S’exécute après **`git pull`** via le hook Git **`post-merge`** : envoie les **fichiers modifiés** entre `ORIG_HEAD` et `HEAD` vers un workspace AnythingLLM (`POST /api/v1/document/upload`). + +## Prérequis + +- Processeur de documents AnythingLLM en ligne. +- Mêmes règles **`.4nkaiignore`** que l’extension VS Code (racine du dépôt cible). +- Variables d’environnement ou fichier **`repo/.anythingllm.json`** (`workspaceSlug`). + +## Variables + +| Variable | Obligatoire | Description | +|----------|-------------|-------------| +| `ANYTHINGLLM_BASE_URL` | oui | Sans `/` final | +| `ANYTHINGLLM_API_KEY` | oui | Clé API développeur | +| `ANYTHINGLLM_WORKSPACE_SLUG` | non* | Slug du workspace | +| `ANYTHINGLLM_SYNC_MAX_FILES` | non | Défaut `200` | +| `ANYTHINGLLM_SYNC_MAX_FILE_BYTES` | non | Défaut `5242880` | + +\* Si absent : lecture de **`repo/.anythingllm.json`**. + +Fichier optionnel **`~/.config/4nk/anythingllm-sync.env`** sourcé par le hook généré. + +## Installation du hook sur un clone + +```bash +/path/vers/smart_ide/scripts/install-anythingllm-post-merge-hook.sh /path/vers/repo-cible +``` + +Une fois par machine, depuis ce dépôt : + +```bash +cd scripts/anythingllm-pull-sync && npm install +``` + +## Comportement + +- Uniquement les chemins de `git diff --name-only --diff-filter=ACMRT ORIG_HEAD HEAD`. +- Si `ORIG_HEAD` ou config manque → **exit 0** avec message (ne bloque pas le pull). +- Pas de suppression miroir des fichiers supprimés dans AnythingLLM dans cette version (upload seul). + +## Désinstallation + +```bash +rm -f /path/vers/repo/.git/hooks/post-merge +``` + +## Liens + +[features/anythingllm-pull-sync-after-pull.md](../features/anythingllm-pull-sync-after-pull.md), [anythingllm-workspaces.md](../anythingllm-workspaces.md), [extension-anythingllm-workspaces.md](./extension-anythingllm-workspaces.md). diff --git a/docs/repo/service-agent-regex-search.md b/docs/repo/service-agent-regex-search.md new file mode 100644 index 0000000..da89e32 --- /dev/null +++ b/docs/repo/service-agent-regex-search.md @@ -0,0 +1,41 @@ +# agent-regex-search-api (`services/agent-regex-search-api/`) + +API HTTP locale sur **`127.0.0.1`** pour la **recherche regex sur fichiers** via [ripgrep](https://github.com/BurntSushi/ripgrep) (`rg`). Approche locale ouverte ; ce n’est pas l’implémentation « instant grep » propriétaire de Cursor. + +## Prérequis + +`rg` dans le **`PATH`** (ex. `sudo apt install ripgrep` sur Debian/Ubuntu). + +## Variables + +| Variable | Obligatoire | Description | +|----------|-------------|-------------| +| `REGEX_SEARCH_TOKEN` | oui | `Authorization: Bearer ` (sauf `GET /health`). | +| `REGEX_SEARCH_ROOT` | non | Répertoire de base absolu (défaut typique `/home/ncantu/code` — à adapter). | +| `REGEX_SEARCH_HOST` | non | Bind (défaut `127.0.0.1`). | +| `REGEX_SEARCH_PORT` | non | Port (défaut `37143`). | + +## Endpoints + +- `GET /health` +- `POST /search` — JSON : `pattern`, `subpath` optionnel (relatif à `REGEX_SEARCH_ROOT`, pas de `..`), `maxMatches`, `timeoutMs` + +Code sortie ripgrep `1` = aucun match → encore **200** avec `matches` vide si pas d’erreur. + +## Risques + +**ReDoS** : regex pathologiques jusqu’à `timeoutMs`. **`REGEX_SEARCH_ROOT`** : aligner avec la politique de lecture disque. + +## Run + +```bash +cd services/agent-regex-search-api +npm install +npm run build +export REGEX_SEARCH_TOKEN='…' +npm start +``` + +## Spécification + +[API/agent-regex-search-api.md](../API/agent-regex-search-api.md), [features/agent-regex-search-api.md](../features/agent-regex-search-api.md). diff --git a/docs/repo/service-claw-harness.md b/docs/repo/service-claw-harness.md new file mode 100644 index 0000000..2030843 --- /dev/null +++ b/docs/repo/service-claw-harness.md @@ -0,0 +1,34 @@ +# claw-harness-api (`services/claw-harness-api/`) + +Notes d’intégration et **proxy HTTP mince** pour le harnais **claw-code** (runtime multi-modèles). Amont : + +- [gitlawb — claw-code](https://gitlawb.com/node/repos/z6Mks1jg/claw-code) +- [instructkr/claw-code](https://github.com/instructkr/claw-code) (clone fréquent) + +Ce dossier **ne vend pas** claw-code : cloner amont, builder selon son `README` (workspace Rust `rust/`, etc.). + +## Politique : pas d’Anthropic dans les gabarits + +**`providers.example.yaml`** : Ollama et placeholders OpenAI-compatibles / Gemini ; **Anthropic `enabled: false`**. L’application opérationnelle (pare-feu, absence de clé) reste de votre ressort. + +## Proxy (`proxy/`) + +| Variable | Obligatoire | Description | +|----------|-------------|-------------| +| `CLAW_PROXY_TOKEN` | oui | Bearer côté client du proxy. | +| `CLAW_PROXY_HOST` | non | Défaut `127.0.0.1` | +| `CLAW_PROXY_PORT` | non | Défaut `37142` | +| `CLAW_UPSTREAM_URL` | oui | URL du serveur HTTP claw | + +```bash +cd services/claw-harness-api/proxy +npm install +npm run build +export CLAW_PROXY_TOKEN='…' +export CLAW_UPSTREAM_URL='http://127.0.0.1:37143' +npm start +``` + +## Spécification smart_ide + +[API/claw-harness-proxy.md](../API/claw-harness-proxy.md), [features/claw-harness-api.md](../features/claw-harness-api.md). diff --git a/docs/repo/service-ia-dev-gateway.md b/docs/repo/service-ia-dev-gateway.md new file mode 100644 index 0000000..d44a711 --- /dev/null +++ b/docs/repo/service-ia-dev-gateway.md @@ -0,0 +1,20 @@ +# ia-dev-gateway (`services/ia-dev-gateway/`) + +API HTTP pour le checkout **ia_dev** : liste des agents (`.cursor/agents/*.md`), `POST /v1/runs` (complétion stub), SSE sur `/v1/runs/:id/events`. Branchement futur sur les scripts deploy / agents réels. + +## Build / run + +```bash +cd services/ia-dev-gateway +npm install +npm run build +export IA_DEV_GATEWAY_TOKEN='your-secret' +# optionnel : IA_DEV_ROOT=/chemin/vers/ia_dev +npm start +``` + +Écoute par défaut : **`127.0.0.1:37144`**. + +## Contrats + +[API/ia-dev-gateway.md](../API/ia-dev-gateway.md), [features/ia-dev-service.md](../features/ia-dev-service.md). diff --git a/docs/repo/service-langextract.md b/docs/repo/service-langextract.md new file mode 100644 index 0000000..2afc7dd --- /dev/null +++ b/docs/repo/service-langextract.md @@ -0,0 +1,34 @@ +# langextract-api (`services/langextract-api/`) + +API HTTP locale sur **`127.0.0.1`** autour de [google/langextract](https://github.com/google/langextract) : extractions structurées depuis du texte, avec ancrage caractères optionnel. + +## Variables + +| Variable | Obligatoire | Description | +|----------|-------------|-------------| +| `LANGEXTRACT_SERVICE_TOKEN` | non | Si défini, `Authorization: Bearer` requis. | +| `LANGEXTRACT_API_HOST` | non | Défaut `127.0.0.1` | +| `LANGEXTRACT_API_PORT` | non | Défaut `37141` | +| `LANGEXTRACT_API_KEY` | non | Modèles cloud (ex. Gemini) côté serveur. | + +## Endpoints + +- `GET /health` +- `POST /extract` — corps JSON aligné sur les paramètres `extract()` amont (`text`, `prompt_description`, `examples`, `model_id`, `model_url` pour Ollama, etc.) + +## Run + +```bash +cd services/langextract-api +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +export LANGEXTRACT_SERVICE_TOKEN='…' +uvicorn app.main:app --host "${LANGEXTRACT_API_HOST:-127.0.0.1}" --port "${LANGEXTRACT_API_PORT:-37141}" +``` + +Pour Ollama : `model_id` (ex. `gemma2:2b`), `model_url` `http://127.0.0.1:11434`, souvent `fence_output: false`, `use_schema_constraints: false` selon amont. + +## Spécification + +[API/langextract-api.md](../API/langextract-api.md), [features/langextract-api.md](../features/langextract-api.md). diff --git a/docs/repo/service-local-office.md b/docs/repo/service-local-office.md new file mode 100644 index 0000000..6402caf --- /dev/null +++ b/docs/repo/service-local-office.md @@ -0,0 +1,31 @@ +# Local Office (`services/local-office/`) + +Service HTTP pour charger et modifier des documents Office (docx, xlsx, pptx) sur la machine locale. Intégration monorepo : code sous **`services/local-office/`** (historique fusionné depuis le dépôt **local_office**). + +## Documentation métier et architecture + +- Fonctionnalités smart_ide : [features/local-office.md](../features/local-office.md) +- Pile services : [services.md](../services.md) +- Proposition d’architecture (fichier dans le service) : [`services/local-office/docs/architecture-proposal.md`](../../services/local-office/docs/architecture-proposal.md) + +## Exécution locale + +1. Environnement Python : `python3 -m venv .venv` ; `pip install -r requirements.txt` +2. Variables : copier `.env.example` → `.env`, définir au minimum **`API_KEYS`** +3. Lancer : `uvicorn app.main:app --reload --host 0.0.0.0 --port 8000` +4. Swagger : `http://localhost:8000/docs` + +## API (résumé) + +- **POST /documents** — upload multipart, en-tête **`X-API-Key`** +- **GET /documents** — liste +- **GET /documents/{id}** — métadonnées +- **GET /documents/{id}/file** — téléchargement +- **POST /documents/{id}/commands** — commandes docx (`replaceText`, `insertParagraph`, …) +- **DELETE /documents/{id}** + +Toutes les routes exigent **`X-API-Key`** ; limitation de débit par clé. + +## Référence OpenAPI + +Répertoire du service : `services/local-office/` (fichiers OpenAPI s’il y en a). diff --git a/docs/repo/service-repos-devtools.md b/docs/repo/service-repos-devtools.md new file mode 100644 index 0000000..07bf7ea --- /dev/null +++ b/docs/repo/service-repos-devtools.md @@ -0,0 +1,40 @@ +# repos-devtools-server (`services/repos-devtools-server/`) + +API HTTP locale sur **`127.0.0.1`** pour des opérations Git sous **`REPOS_DEVTOOLS_ROOT`** (défaut souvent `/home/ncantu/code` — à adapter sur chaque poste). + +Après un **`POST /repos-clone`** réussi, si le dépôt n’a pas **`.4nkaiignore`**, le serveur copie **`templates/4nkaiignore.default`** à la racine du clone. La réponse inclut **`fourNkAiIgnoreTemplateWrote`**. + +## Variables d’environnement + +| Variable | Obligatoire | Description | +|----------|-------------|-------------| +| `REPOS_DEVTOOLS_TOKEN` | oui | `Authorization: Bearer ` sur chaque requête. | +| `REPOS_DEVTOOLS_ROOT` | non | Racine des clones. | +| `REPOS_DEVTOOLS_HOST` | non | Adresse d’écoute (défaut `127.0.0.1`). | +| `REPOS_DEVTOOLS_PORT` | non | Port (défaut `37140`). | + +## Endpoints + +- `POST /repos-clone` — JSON `{ "url": "", "branch": "test" }` (`branch` optionnel). +- `GET /repos-list` +- `POST /repos-load` — JSON `{ "name": "" }` + +## Exécution + +```bash +cd services/repos-devtools-server +npm install +npm run build +export REPOS_DEVTOOLS_TOKEN='…' +npm start +``` + +Unité systemd utilisateur possible : `systemctl --user daemon-reload && systemctl --user restart repos-devtools-server.service` après installation d’une unité locale. + +## Templates + +Maintenir **`templates/4nkaiignore.default`** aligné avec `extensions/anythingllm-workspaces/templates/4nkaiignore.default`. + +## Spécification HTTP + +[API/repos-devtools-server.md](../API/repos-devtools-server.md) diff --git a/docs/repo/service-smart-ide-orchestrator.md b/docs/repo/service-smart-ide-orchestrator.md new file mode 100644 index 0000000..04872d1 --- /dev/null +++ b/docs/repo/service-smart-ide-orchestrator.md @@ -0,0 +1,31 @@ +# smart-ide-orchestrator (`services/smart-ide-orchestrator/`) + +Routeur HTTP d’**intentions** (sans LLM intégré) : associe des chaînes `intent` à des cibles (Ollama, AnythingLLM, micro-services, ia-dev-gateway). `POST /v1/execute` enregistre des entrées de timeline ; le relayage vers les amonts est à compléter (`fetch()`, jetons de service). + +## Build / run + +```bash +cd services/smart-ide-orchestrator +npm install +npm run build +export ORCHESTRATOR_TOKEN='your-secret' +npm start +``` + +Écoute par défaut : **`127.0.0.1:37145`**. + +## Variables (optionnel) + +| Variable | Rôle | +|----------|------| +| `OLLAMA_URL` | Défaut `http://127.0.0.1:11434` | +| `ANYTHINGLLM_BASE_URL` | RAG / requêtes | +| `REPOS_DEVTOOLS_URL` | Défaut `http://127.0.0.1:37140` | +| `REGEX_SEARCH_URL` | Défaut `http://127.0.0.1:37143` | +| `LANGEXTRACT_URL` | Défaut `http://127.0.0.1:37141` | +| `LOCAL_OFFICE_URL` | Défaut `http://127.0.0.1:8000` | +| `IA_DEV_GATEWAY_URL` | Défaut `http://127.0.0.1:37144` | + +## Contrats + +[API/orchestrator.md](../API/orchestrator.md), [features/orchestrator-api.md](../features/orchestrator-api.md). diff --git a/docs/repo/smart-ide-overview.md b/docs/repo/smart-ide-overview.md new file mode 100644 index 0000000..25bb384 --- /dev/null +++ b/docs/repo/smart-ide-overview.md @@ -0,0 +1,56 @@ +# smart_ide — IDE orienté intention et IA locale + +Projet d’environnement de développement où l’**inférence** repose sur **Ollama**, la **mémoire documentaire et RAG** sur **AnythingLLM**, la **bureautique métier riche** sur **ONLYOFFICE**, et l’**édition / dépôt de fichiers Office par API** (docx programmatique) via **Local Office** (`services/local-office/`). Les **agents métier** existants (`ia_dev` et sous-agents) restent le noyau opératoire ; l’éditeur et l’orchestrateur les exposent via une **grammaire de commandes** plutôt que via une navigation fichiers classique. + +**Monorepo unique** : ce dépôt est le **référentiel principal** pour la doc, les **services locaux** (`services/`, dont Local Office), les scripts, les extensions et le **socle applicatif éditeur** (**Lapce** sous `core_ide/`, clone local hors index Git — voir [core-ide.md](../core-ide.md)). L’**hébergement canonique** est la **forge interne** ; les dépôts publics cités en documentation sont des **amonts** ou références, pas des cibles de publication obligatoires pour les livrables 4NK. Détail architectural : [system-architecture.md](../system-architecture.md). + +## Première cible de déploiement + +Le **premier déploiement** visé est un **poste Linux client** qui se connecte en **SSH** à un **serveur distant** hébergeant : + +- le **socle technique IA** (Ollama, AnythingLLM, services associés) ; +- les **dépôts** (sources, agents, procédures). + +L’UX (ex. Lapce) et les flux utilisateur peuvent tourner sur le client ; l’exécution lourde, la mémoire projet et Git vivent **sur le serveur**. Détail : [deployment-target.md](../deployment-target.md). + +## Positionnement + +- **Pas d’explorer comme surface principale** : la navigation primaire passe par intentions, recherche, contexte, timeline, objets logiques et artefacts ; un accès brut (fichiers / arborescence) reste disponible en **mode expert / secours**, pas comme flux nominal. +- **Machine de travail orientée opérations** plutôt qu’éditeur de fichiers : l’utilisateur exprime *ce qu’il veut faire*, *sur quel objet logique*, *avec quels droits*, *dans quel contexte projet*, *avec quelle procédure*, *avec quel agent*, *avec quel résultat attendu*. +- **Socle applicatif éditeur : [Lapce](https://lapce.dev/)** sous **`core_ide/`** — open source, Rust, rendu natif / GPU ; base pour le noyau d’édition + agents. Mise à jour et build : [core-ide.md](../core-ide.md). + +## AnythingLLM et projets + +Pour chaque **projet**, un **workspace AnythingLLM** dédié est créé (ou rattaché) : corpus, embeddings et conversations restent **isolés par projet**. Une **moulinette de synchronisation** aligne un sous-ensemble de fichiers du dépôt avec le workspace concerné afin de garder la mémoire RAG alignée avec le code et la doc utiles. + +Voir [anythingllm-workspaces.md](../anythingllm-workspaces.md) et [script-anythingllm-pull-sync.md](./script-anythingllm-pull-sync.md). + +## Module `ia_dev` + +Le répertoire **`ia_dev/`** contient l’**équipe d’agents**, les scripts `deploy/`, le ticketing Gitea, etc. (référence forge : [**ia_dev**](https://git.4nkweb.com/4nk/ia_dev.git)). Les **`conf.json`** pour ce monorepo sont sous **`projects//`** (voir [projects-directory.md](./projects-directory.md)). Détail : [ia_dev-module.md](../ia_dev-module.md), [ia-dev-smart-ide-integration.md](./ia-dev-smart-ide-integration.md), [ia-dev-repository-overview.md](./ia-dev-repository-overview.md), [ia_dev-project-smart_ide.md](../ia_dev-project-smart_ide.md). + +## Documentation centralisée + +- **Index général** : [docs/README.md](../README.md) +- **Arborescence dépôt (README migrés)** : [docs/repo/README.md](./README.md) + +## Table de liens (extraits) + +| Sujet | Document | +|-------|----------| +| Plateforme en ligne | [platform-target.md](../platform-target.md) | +| Référence HTTP services | [API/README.md](../API/README.md) | +| Infra SSH / scripts hôte | [infrastructure.md](../infrastructure.md) | +| Ollama, AnythingLLM, services | [services.md](../services.md) | +| UX / intentions | [ux-navigation-model.md](../ux-navigation-model.md) | +| Écosystème et synchro | [ecosystem-architecture-and-sync.md](../ecosystem-architecture-and-sync.md) | +| Projets `conf.json` | [projects-directory.md](./projects-directory.md) | +| Pull Git planifié | [cron-git-pull.md](./cron-git-pull.md) | +| Timer systemd pull | [systemd-units.md](./systemd-units.md) | +| LangExtract, claw, regex, Local Office (features) | [features/](../features/) | + +## Dépôt actuel (outillage) + +Scripts d’installation et d’exploitation sur Ubuntu : SSH, sudo ciblé, AnythingLLM Docker, Ollama exposé pour Docker, modèle Ollama alias `qwen3-code-webdev`, installer Desktop AnythingLLM. Ces scripts ciblent en priorité l’**hôte serveur** qui porte le socle IA et les repos ; le **client Linux** repose surtout sur SSH et l’IDE. L’IDE complet (Lapce + orchestrateur + gateway) est **cible de conception** ; ce dépôt documente et supporte la **stack sur serveur** (Ollama + AnythingLLM) et l’accès distant. + +**Auteur :** Équipe 4NK diff --git a/docs/repo/systemd-units.md b/docs/repo/systemd-units.md new file mode 100644 index 0000000..cb578d8 --- /dev/null +++ b/docs/repo/systemd-units.md @@ -0,0 +1,51 @@ +# Unités systemd (smart_ide) + +## Ollama + +Installé par l’[installateur officiel Ollama Linux](https://ollama.com/download/linux). Unité : `ollama.service`. + +Exposer l’API à Docker sur le même hôte (AnythingLLM) avec un drop-in : + +```ini +# /etc/systemd/system/ollama.service.d/override.conf +[Service] +Environment="OLLAMA_HOST=0.0.0.0:11434" +``` + +Puis : `sudo systemctl daemon-reload && sudo systemctl restart ollama` + +Script d’aide dans le dépôt : `setup/configure-ollama-for-docker.sh` (écrit ce drop-in). + +## AnythingLLM + +- `anythingllm.service` — image Docker officielle au premier plan sous systemd (`Type=simple`). +- Défauts : `/etc/default/anythingllm` (copier depuis `systemd/anythingllm.default` si absent). +- Helper : `/usr/local/sbin/anythingllm-docker-exec.sh` (installé depuis `scripts/anythingllm-docker-exec.sh`). + +Installation / rafraîchissement : + +```bash +sudo ./scripts/install-systemd-services.sh +``` + +Commandes : + +```bash +sudo systemctl status anythingllm +sudo systemctl restart anythingllm +journalctl -u anythingllm -f +``` + +Nécessite `docker.service`, utilisateur autorisé à utiliser Docker, et chemins dans `/etc/default/anythingllm` si stockage non standard. + +## Git pull des clones projet (utilisateur, pas root) + +Tirage **périodique** des dépôts listés dans `projects/*/conf.json` (voir [cron-git-pull.md](./cron-git-pull.md)) : + +- Unités : `systemd/user/git-pull-project-clones.service.in` + `systemd/user/git-pull-project-clones.timer` +- Installation : `scripts/install-git-pull-systemd-user.sh` (écrit dans `~/.config/systemd/user/`, **sans** `sudo`) +- Configuration : `cron/config.env` + +## Linger (session fermée) + +Les timers **user** ne tournent en général que lorsqu’une session utilisateur systemd est active. Pour exécuter les timers après déconnexion graphique complète, activer le **linger** pour l’utilisateur : `loginctl enable-linger ` (décision d’administration machine). diff --git a/docs/services.md b/docs/services.md index 0a70584..b61e973 100644 --- a/docs/services.md +++ b/docs/services.md @@ -22,7 +22,7 @@ Ce document décrit les **services logiciels** typiques sur l’**hôte** (serve - **Rôle** : **API REST** pour applications tierces ou agents : upload de fichiers Office, métadonnées, téléchargement, **commandes programmatiques** sur les **docx** (`replaceText`, `insertParagraph`). Stockage fichiers + SQLite ; isolation par clé `X-API-Key` ; rate limiting. - **Emplacement dans le monorepo** : [`../services/local-office/`](../services/local-office/). -- **Documentation** : [features/local-office.md](./features/local-office.md) et [services/local-office/README.md](../services/local-office/README.md). +- **Documentation** : [features/local-office.md](./features/local-office.md) et [repo/service-local-office.md](./repo/service-local-office.md). - **Sécurité** : définir `API_KEYS` via variables d’environnement ou fichiers hors dépôt (voir `.env.example` dans `services/local-office/`). En production, préférer **bind `127.0.0.1`** derrière un reverse proxy TLS plutôt que `0.0.0.0` exposé. - **Périmètre fonctionnel** : édition par commandes **docx** ; xlsx/pptx peuvent être stockés mais les commandes d’édition peuvent renvoyer **400** selon l’implémentation actuelle. @@ -30,11 +30,11 @@ Ce document décrit les **services logiciels** typiques sur l’**hôte** (serve - **Rôle** : gestion documentaire métier pour les projets Enso ; processus HTTP dans le **dépôt docv**, pas dans smart_ide. - **Données** : convention **`${PROJECTS_CLONE_ROOT}//data/`** (souvent **`../projects//data`** relatif à smart_ide) ; variable **`DOCV_PROJECTS_ROOT`** côté docv. -- **Documentation** : [features/docv-service-integration.md](./features/docv-service-integration.md), [services/docv/README.md](../services/docv/README.md), [API/docv.md](./API/docv.md). +- **Documentation** : [features/docv-service-integration.md](./features/docv-service-integration.md), [repo/docv-services-directory.md](./repo/docv-services-directory.md), [API/docv.md](./API/docv.md). ## Micro-services HTTP sous `services/` -Services d’appoint sur **`127.0.0.1`** (souvent auth **Bearer**) : Git devtools, LangExtract, recherche regex, proxy claw, **`ia-dev-gateway`** (agents / runs stub), **`smart-ide-orchestrator`** (routage intentions) — voir tableau dans [system-architecture.md](./system-architecture.md), la **référence API** dans [`API/README.md`](./API/README.md), et README de chaque sous-dossier de [`../services/`](../services/). +Services d’appoint sur **`127.0.0.1`** (souvent auth **Bearer**) : Git devtools, LangExtract, recherche regex, proxy claw, **`ia-dev-gateway`** (agents / runs stub), **`smart-ide-orchestrator`** (routage intentions) — voir tableau dans [system-architecture.md](./system-architecture.md), la **référence API** dans [`API/README.md`](./API/README.md), et l’index d’exploitation [repo/README.md](./repo/README.md) (fichiers `repo/service-*.md`). ## Documentation liée diff --git a/docs/system-architecture.md b/docs/system-architecture.md index 0218f23..3dc886a 100644 --- a/docs/system-architecture.md +++ b/docs/system-architecture.md @@ -19,7 +19,7 @@ Conséquences : - Les répertoires sous `services/` font partie du **même cycle de vie** que le reste du monorepo (revue, déploiement, systemd). - **`core_ide/`** est un **clone local** de l’éditeur **Lapce** (socle applicatif), présent **dans l’arborescence du monorepo** sur disque ; il est **exclu de l’index Git du parent** par volumétrie (voir racine `.gitignore`). Mise à jour : procédure dans [core-ide.md](./core-ide.md). -- `ia_dev` est un **répertoire versionné** dans ce monorepo (évolution historique depuis le dépôt forge [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git)) ; intégration et journaux : [ia_dev-module.md](./ia_dev-module.md), [`services/ia_dev/`](../services/ia_dev/README.md), [`logs/README.md`](../logs/README.md). Un service HTTP **`ia-dev-gateway`** ([features/ia-dev-service.md](./features/ia-dev-service.md)) exposera le registre et les exécutions agents. +- `ia_dev` est un **répertoire versionné** dans ce monorepo (évolution historique depuis le dépôt forge [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git)) ; intégration et journaux : [ia_dev-module.md](./ia_dev-module.md), [repo/ia-dev-smart-ide-integration.md](./repo/ia-dev-smart-ide-integration.md), [repo/logs-directory.md](./repo/logs-directory.md). Un service HTTP **`ia-dev-gateway`** ([features/ia-dev-service.md](./features/ia-dev-service.md)) exposera le registre et les exécutions agents. - **Orchestrateur** HTTP : [features/orchestrator-api.md](./features/orchestrator-api.md) — serveur stub sous `services/smart-ide-orchestrator/` ; routage intentions → Ollama, AnythingLLM, micro-services, `ia-dev-gateway` (forward HTTP à compléter). ## Cartographie des ressources (arborescence) @@ -34,10 +34,10 @@ Conséquences : | `core_ide/` | **Sources Lapce** — socle applicatif (build éditeur, personnalisations) — clone amont, hors index du parent | | `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 | -| `cron/` | Pull **Git** planifié des clones décrits par `projects//conf.json` (`project_path`) — [cron/README.md](../cron/README.md) | +| `cron/` | Pull **Git** planifié des clones décrits par `projects//conf.json` (`project_path`) — [repo/cron-git-pull.md](./repo/cron-git-pull.md) | | `services/local-office/` | **API REST** Office (upload, commandes docx, stockage SQLite + fichiers) ; complément programmatique à ONLYOFFICE | | `services/docv/` | **Contrat d’intégration** docv (hors monorepo) ; données projet sous `../projects//data/` ; pas de code applicatif docv ici — [features/docv-service-integration.md](./features/docv-service-integration.md) | -| `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) | +| `projects//` (racine monorepo) | **Confs seules** pour `ia_dev` (`conf.json`) — **pas** les clones Git ; clones typiquement sous `../projects/` ou autre racine ; voir [repo/projects-directory.md](./repo/projects-directory.md) | | `ia_dev/` | Agents, déploiements — exécution sous policy ; `ia_dev/projects/` peut pointer vers `../../projects/` (lien) ; voir [ia_dev-module.md](./ia_dev-module.md) | | `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) | @@ -48,7 +48,7 @@ Chaque environnement possède ses **URLs**, **secrets** et **politiques** (Anyth ## Module `ia_dev` dans ce dépôt -Le répertoire **`./ia_dev`** fait partie du dépôt **smart_ide** (référence historique : [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git) sur la forge). Sur le serveur SSH, l’**agent gateway** et les outils peuvent pointer vers ce chemin comme racine d’exécution des agents (scripts invoqués depuis la racine `ia_dev`). Voir [ia_dev-module.md](./ia_dev-module.md) et [services/ia_dev/](../services/ia_dev/README.md). +Le répertoire **`./ia_dev`** fait partie du dépôt **smart_ide** (référence historique : [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git) sur la forge). Sur le serveur SSH, l’**agent gateway** et les outils peuvent pointer vers ce chemin comme racine d’exécution des agents (scripts invoqués depuis la racine `ia_dev`). Voir [ia_dev-module.md](./ia_dev-module.md) et [repo/ia-dev-smart-ide-integration.md](./repo/ia-dev-smart-ide-integration.md). ## Répartition physique (première cible) @@ -158,13 +158,13 @@ Services d’écoute sur **`127.0.0.1`** (souvent avec **`Authorization: Bearer` | Service | Rôle | Doc | |--------|------|-----| -| **repos-devtools-server** | Git : clone / liste / load sous `REPOS_DEVTOOLS_ROOT` | [services/repos-devtools-server/README.md](../services/repos-devtools-server/README.md) | +| **repos-devtools-server** | Git : clone / liste / load sous `REPOS_DEVTOOLS_ROOT` | [repo/service-repos-devtools.md](./repo/service-repos-devtools.md) | | **langextract-api** | Extraction structurée depuis texte (wrapper [LangExtract](https://github.com/google/langextract)) | [features/langextract-api.md](./features/langextract-api.md) | | **claw-harness-api** | Harnais amont : build / politique sans Anthropic ; proxy optionnel vers serveur HTTP claw-code | [features/claw-harness-api.md](./features/claw-harness-api.md) | | **agent-regex-search-api** | Recherche regex sur fichiers via **ripgrep** sous `REGEX_SEARCH_ROOT` | [features/agent-regex-search-api.md](./features/agent-regex-search-api.md) | -| **local-office** | API REST Office : upload, commandes docx ; auth **`X-API-Key`** (pas Bearer) | [features/local-office.md](./features/local-office.md) , [services/local-office/README.md](../services/local-office/README.md) | -| **ia-dev-gateway** | Registre agents, runs stub, flux SSE (Node/TS) | [features/ia-dev-service.md](./features/ia-dev-service.md) , [API/ia-dev-gateway.md](./API/ia-dev-gateway.md) , [services/ia-dev-gateway/README.md](../services/ia-dev-gateway/README.md) | -| **smart_ide-orchestrator** | Routage intentions, timeline (Node/TS ; forward à compléter) | [features/orchestrator-api.md](./features/orchestrator-api.md) , [API/orchestrator.md](./API/orchestrator.md) , [services/smart-ide-orchestrator/README.md](../services/smart-ide-orchestrator/README.md) | +| **local-office** | API REST Office : upload, commandes docx ; auth **`X-API-Key`** (pas Bearer) | [features/local-office.md](./features/local-office.md) , [repo/service-local-office.md](./repo/service-local-office.md) | +| **ia-dev-gateway** | Registre agents, runs stub, flux SSE (Node/TS) | [features/ia-dev-service.md](./features/ia-dev-service.md) , [API/ia-dev-gateway.md](./API/ia-dev-gateway.md) , [repo/service-ia-dev-gateway.md](./repo/service-ia-dev-gateway.md) | +| **smart_ide-orchestrator** | Routage intentions, timeline (Node/TS ; forward à compléter) | [features/orchestrator-api.md](./features/orchestrator-api.md) , [API/orchestrator.md](./API/orchestrator.md) , [repo/service-smart-ide-orchestrator.md](./repo/service-smart-ide-orchestrator.md) | Ces services sont des **adapters** : pas de logique métier produit au-delà de la validation d’entrée et de l’appel au moteur (Git, `rg`, LangExtract, proxy, stockage fichiers / docx). La **policy** (qui peut appeler quoi, sur quel chemin) reste du ressort du **policy-runtime** et du **gateway**. **Local Office** suit la même logique ; le schéma d’auth diffère (`X-API-Key` vs `Authorization: Bearer` pour les autres lignes du tableau). diff --git a/extensions/anythingllm-workspaces/README.md b/extensions/anythingllm-workspaces/README.md index 2d6401c..abee19d 100644 --- a/extensions/anythingllm-workspaces/README.md +++ b/extensions/anythingllm-workspaces/README.md @@ -1,71 +1,3 @@ -# AnythingLLM Workspaces (VS Code / Cursor) +# AnythingLLM Workspaces (extension) -AnythingLLM **developer API** (workspaces, documents), optional **repos-devtools-server**, **Dev tools** webview, and **initial RAG upload** after clone/load using **`.4nkaiignore`** (same syntax as `.gitignore`). - -## Requirements - -- AnythingLLM with **API key** (**Settings → API Keys**). Do **not** use the nginx Bearer for `/ollama/` here. -- **`repos-devtools-server`** on the host that owns clones (default `http://127.0.0.1:37140`). -- For **document upload**, AnythingLLM’s **document processor (collector)** must be online; otherwise `POST /api/v1/document/upload` returns an error. - -## Configuration - -| Key | Description | -|-----|-------------| -| `anythingllm.baseUrl` | AnythingLLM public URL (no trailing `/`). | -| `anythingllm.apiKey` | API key. **User** settings. | -| `anythingllm.reposApiBaseUrl` | repos-devtools-server URL. | -| `anythingllm.reposApiToken` | Same as `REPOS_DEVTOOLS_TOKEN`. | -| `anythingllm.initialSyncAfterClone` | Default **on**: after `/repos-clone-sync`, `/repos-load-sync`, and `/workspace-sync`, upload filtered files. Set to `false` to disable. | -| `anythingllm.initialSyncMaxFiles` | Max files per run (default `400`). | -| `anythingllm.initialSyncMaxFileBytes` | Max bytes per file (default `5242880`). | - -## Commands (palette) - -- **AnythingLLM: List workspaces** — `GET /api/v1/workspaces`, open one in the browser. -- **AnythingLLM: Open web UI** -- **AnythingLLM: Dev tools panel** — webview for scripted commands. - -## `.4nkaiignore` - -- **Template (reference):** `templates/4nkaiignore.default` in this extension (and the same file under `services/repos-devtools-server/templates/` for the clone server). -- **At repo root:** the file must be named **`.4nkaiignore`**. -- **After `git clone` via the server:** if `.4nkaiignore` is missing, the server copies the template into the new repo (`fourNkAiIgnoreTemplateWrote` in the JSON response). -- **Before upload:** the extension creates `.4nkaiignore` from the bundled template only if it is still missing (e.g. repo cloned outside the server). - -Filtering uses the **`ignore`** package (gitignore semantics). The extension always applies baseline rules (e.g. `.git/`, `node_modules/`) in addition to `.4nkaiignore`. - -## Dev tools — command lines - -| Line | Behaviour | -|------|-----------| -| `/repos-clone-sync ` | Clone (branch `test`) → ensure workspace → **initial RAG upload** (if enabled) → open folder → browser. | -| `/repos-load-sync ` | Open folder → ensure workspace → **initial RAG upload** → browser. | -| `/workspace-sync ` | Resolve repo under `REPOS_DEVTOOLS_ROOT` → ensure workspace → **initial RAG upload** (no folder open). | -| `/workspace-load ` | Ensure workspace → browser only (no file upload). | -| Other lines | See `help` in the panel. | - -Upload uses **`POST /api/v1/document/upload`** with multipart field **`file`** and **`addToWorkspaces`** set to the workspace **slug**. Relative paths are flattened to a safe single-segment filename (`dir__file.ts`) to reduce name collisions. - -**JSON field `workspaceCreatedByApi`:** `true` only if this run called `POST /api/v1/workspace/new`; `false` if the workspace already existed. - -## Ollama - -Not used by this extension. Configure Cursor’s model URL for `/ollama/v1` separately. - -## Build - -```bash -cd extensions/anythingllm-workspaces -npm install -npm run compile -``` - -## References - -- AnythingLLM document API: `POST /v1/document/upload` under `/api` (Mintplex-Labs anything-llm `server/endpoints/api/document/index.js`). -- Local server: `services/repos-devtools-server/README.md`. - -## License - -MIT +**[docs/repo/extension-anythingllm-workspaces.md](../../docs/repo/extension-anythingllm-workspaces.md)** diff --git a/ia_dev b/ia_dev index 047700f..11da432 160000 --- a/ia_dev +++ b/ia_dev @@ -1 +1 @@ -Subproject commit 047700fab0ce25346dc167a67be3ac1eb4f6b809 +Subproject commit 11da4329e4fb303999709b81b963743eb3ff9d99 diff --git a/logs/README.md b/logs/README.md index 928f39c..bcb6017 100644 --- a/logs/README.md +++ b/logs/README.md @@ -1,12 +1,5 @@ -# Journaux smart_ide (tâches de fond et ia_dev) +# Journaux (`logs/`) -Les fichiers `*.log` sous ce répertoire sont **produits localement** par la machine qui exécute les timers systemd utilisateur, les cron, ou les scripts `ia_dev`. Ils ne sont **pas versionnés** : règle **`logs/**/*.log`** à la racine du dépôt et **`**/*.log`** dans ce répertoire (`logs/.gitignore`). +Documentation centralisée : -| Fichier | Origine | -|---------|---------| -| `git-pull-projects.log` | Tirage Git planifié des clones ([`cron/git-pull-wrapper.sh`](../cron/git-pull-wrapper.sh)), variable `PULL_SYNC_LOG` dans [`cron/config.env`](../cron/config.env). | -| `ia_dev.log` | Exécutions des scripts shell sous `ia_dev/` lorsque ce dépôt est un checkout **smart_ide** avec `ia_dev` au bon emplacement (détection via `cron/git-pull-wrapper.sh` ou `projects/smart_ide/`). | - -Variable interne utilisée par les scripts : `SMART_IDE_LOG_IA_DEV_ROOT` (racine `ia_dev`), posée par [`ia_dev/lib/smart_ide_logs.sh`](../ia_dev/lib/smart_ide_logs.sh). - -Service métier associé : [`services/ia_dev/`](../services/ia_dev/README.md). +**[docs/repo/logs-directory.md](../docs/repo/logs-directory.md)** diff --git a/projects/README.md b/projects/README.md index 71c2c9b..527818b 100644 --- a/projects/README.md +++ b/projects/README.md @@ -1,53 +1,5 @@ # 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. +La documentation à jour est centralisée dans le dépôt : -Les **sous-répertoires** `projects//` 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//` et `!projects//**` à 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//`** (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-module.md](../docs/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 (voir `ia_dev/lib/conf_path_resolve.sh`). - -## `smart_ide` - -- Fichier : [`smart_ide/conf.json`](./smart_ide/conf.json) -- Après clone ou réorganisation des dossiers, exécuter si besoin [`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`. - -## `enso` - -- Fichier : [`enso/conf.json`](./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** déclarés sous **`smart_ide.remote_data_access`** (clone, dossiers permanents docv) sont alignés sur **`ENSO_REMOTE_ROOT`**, **`ENSO_SSH_HOST`** et le sous-chemin **`data/dossiers-permanents`** tels que documentés dans le dépôt **enso** (`deploy/enso-deploy.env.example`, sync docv). Les valeurs réelles par ferme restent dans les **`enso-deploy.env`** non versionnés. -- Cron fragment : [`cron/fragments/enso.cron`](../cron/fragments/enso.cron). -- Pour que **`ia_dev`** résolve `projects/enso/conf.json`, créer sous `ia_dev/projects/` un lien symbolique `enso` → `../../projects/enso` (même principe que `smart_ide`). - -## Synchronisation Git planifiée (`cron/`) - -Pour **chaque** `projects//conf.json`, le tirage automatique utilise la **config centralisée** [`cron/config.env`](../cron/config.env) (`PULL_SYNC_*`) et le wrapper [`cron/git-pull-wrapper.sh`](../cron/git-pull-wrapper.sh), qui appelle [`cron/git-pull-project-clones.sh`](../cron/git-pull-project-clones.sh) (`git fetch` / **`merge --ff-only`** si possible). - -- **Activer le timer systemd utilisateur** (recommandé) : [`scripts/install-git-pull-systemd-user.sh`](../scripts/install-git-pull-systemd-user.sh) -- Désactiver pour un id projet : `"cron": { "git_pull": false }` dans le `conf.json` concerné. -- Désactiver tout le mécanisme : `PULL_SYNC_ENABLED=0` dans `config.env` ou `cron/config.local.env`. - -Détail : [`cron/README.md`](../cron/README.md). `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 - -- Les **données métier** vivent sur les **serveurs test / pprod / prod** ; elles ne doivent **pas** être versionnées dans les dépôts applicatifs (répertoires du type `data/`, dumps, etc. en **`.gitignore`** sur chaque clone applicatif). **docv**, **AnythingLLM** et les **services** smart_ide qui lisent ces données s’appuient sur des **accès SSH** documentés vers ces environnements. Spécification : [features/remote-deployed-data-ssh.md](../docs/features/remote-deployed-data-ssh.md). - -### Bloc optionnel `smart_ide` dans `conf.json` - -Chaque `projects//conf.json` peut contenir une clé **`smart_ide`** (hors périmètre strict ia_deploy) avec notamment **`remote_data_access`** (alias SSH `Host`, chemins **sur serveur** par environnement). Voir l’exemple sous **`enso/conf.json`**. - -### Projet actif pour l’éditeur / Cursor - -1. Copier [`active-project.json.example`](./active-project.json.example) vers **`projects/active-project.json`** (fichier **non versionné**) et renseigner **`id`** (`smart_ide`, `enso`, …). La clé optionnelle **`notes`** dans l’exemple est informative ; les outils ne s’en servent pas. -2. Dans un fichier **`.code-workspace`**, renseigner **`smartIde.activeProjectId`** dans **`settings`** (ex. [`enso/smart_ide.code-workspace`](./enso/smart_ide.code-workspace)). - -Les agents Cursor lisent cette convention via [`.cursor/rules/smart-ide-ia-dev-bridge.mdc`](../.cursor/rules/smart-ide-ia-dev-bridge.mdc). - -## Référence amont - -Schéma des champs : `ia_dev/projects/README.md` (documentation ia_dev). Le bloc optionnel **`cron`** est une extension **smart_ide** pour les scripts locaux ; `ia_dev` peut l’ignorer s’il ne le lit pas. Le bloc **`smart_ide`** est une extension **smart_ide** pour données distantes et IDE ; les outils ia_dev qui ne le lisent pas peuvent l’ignorer. +**[docs/repo/projects-directory.md](../docs/repo/projects-directory.md)** diff --git a/scripts/anythingllm-pull-sync/README.md b/scripts/anythingllm-pull-sync/README.md index 8b55430..aa69fb2 100644 --- a/scripts/anythingllm-pull-sync/README.md +++ b/scripts/anythingllm-pull-sync/README.md @@ -1,58 +1,3 @@ # anythingllm-pull-sync -Runs after **`git pull`** (Git hook **`post-merge`**) to upload **files changed** between `ORIG_HEAD` and `HEAD` to an AnythingLLM workspace via `POST /api/v1/document/upload`. - -## Requirements - -- AnythingLLM **collector / document processor** online. -- Same **`.4nkaiignore`** rules as the VS Code extension (repo root). -- **Environment** (see below): base URL, API key, workspace slug (or `.anythingllm.json`). - -## Environment - -| Variable | Required | Description | -|----------|----------|-------------| -| `ANYTHINGLLM_BASE_URL` | yes | e.g. `https://ia.enso.4nkweb.com/anythingllm` (no trailing `/`) | -| `ANYTHINGLLM_API_KEY` | yes | Developer API key (Settings → API Keys) | -| `ANYTHINGLLM_WORKSPACE_SLUG` | no* | Workspace slug | -| `ANYTHINGLLM_SYNC_MAX_FILES` | no | Default `200` per run | -| `ANYTHINGLLM_SYNC_MAX_FILE_BYTES` | no | Default `5242880` | - -\* If unset, the script reads **`repo/.anythingllm.json`**: `{ "workspaceSlug": "my-slug" }`. - -Optional: create **`~/.config/4nk/anythingllm-sync.env`**: - -```sh -export ANYTHINGLLM_BASE_URL='https://ia.enso.4nkweb.com/anythingllm' -export ANYTHINGLLM_API_KEY='…' -# export ANYTHINGLLM_WORKSPACE_SLUG='algo' # optional if .anythingllm.json exists -``` - -The generated hook sources this file when present. - -## Install the hook in a repository - -From the machine that has **`smart_ide`**: - -```bash -/home/ncantu/code/smart_ide/scripts/install-anythingllm-post-merge-hook.sh /home/ncantu/code/algo -/home/ncantu/code/smart_ide/scripts/install-anythingllm-post-merge-hook.sh /home/ncantu/code/builazoo -``` - -Then once per machine: - -```bash -cd /home/ncantu/code/smart_ide/scripts/anythingllm-pull-sync && npm install -``` - -## Behaviour - -- **Only** paths produced by `git diff --name-only --diff-filter=ACMRT ORIG_HEAD HEAD` (added/changed, not deletions). -- If `ORIG_HEAD` is missing or env/slug is missing, the script **exits 0** and prints a message (your pull is not blocked). -- **Deletions / renames** are not mirrored as removals in AnythingLLM in this version (upload-only). - -## Uninstall - -```bash -rm -f /path/to/repo/.git/hooks/post-merge -``` +**[docs/repo/script-anythingllm-pull-sync.md](../../docs/repo/script-anythingllm-pull-sync.md)** diff --git a/services/agent-regex-search-api/README.md b/services/agent-regex-search-api/README.md index 5cd3451..2f7188e 100644 --- a/services/agent-regex-search-api/README.md +++ b/services/agent-regex-search-api/README.md @@ -1,49 +1,3 @@ # agent-regex-search-api -Local HTTP API on **`127.0.0.1`** for **regex search over files** using [ripgrep](https://github.com/BurntSushi/ripgrep) (`rg`). Results are returned as structured JSON. - -This is **not** the closed-source “instant grep” index described in Cursor’s article ([Recherche regex rapide](https://cursor.com/fr/blog/fast-regex-search)); it is a **local, open** approach (ripgrep) with the same high-level goal: fast agent-oriented code search. For monorepos at extreme scale, consider adding **Zoekt** or another indexed backend later (see feature doc). - -## Prerequisites - -- `rg` available in `PATH` (e.g. `sudo apt install ripgrep` on Debian/Ubuntu). - -## Environment - -| Variable | Required | Description | -|----------|----------|-------------| -| `REGEX_SEARCH_TOKEN` | yes | `Authorization: Bearer ` on every request except `GET /health`. | -| `REGEX_SEARCH_ROOT` | no | Absolute base directory searches are confined to (default `/home/ncantu/code`). | -| `REGEX_SEARCH_HOST` | no | Bind address (default `127.0.0.1`). | -| `REGEX_SEARCH_PORT` | no | Port (default `37143`). | - -## Endpoints - -- `GET /health` — liveness; includes configured `root` path. -- `POST /search` — JSON body: - - `pattern` (string, required): Rust regex passed to ripgrep. - - `subpath` (string, optional): path **relative** to `REGEX_SEARCH_ROOT` (no `..`, no absolute paths). - - `maxMatches` (number, optional): cap on matches (default `500`, max `50000`). - - `timeoutMs` (number, optional): kill `rg` after this many ms (default `60000`, max `300000`). - -Response: `{ root, target, matches: [{ path, lineNumber, line }], truncated, exitCode }`. - -Ripgrep exit code `1` means “no matches” and is still returned as **200** with an empty `matches` array when no other error occurred. - -## Run - -```bash -npm install -npm run build -export REGEX_SEARCH_TOKEN='…' -npm start -``` - -## Risks - -- **ReDoS**: pathological regexes can burn CPU until `timeoutMs`. Keep timeouts conservative for shared hosts. -- **Scope**: all readable files under `target` that ripgrep traverses may be searched; align `REGEX_SEARCH_ROOT` with policy. - -## License - -MIT. +**[docs/repo/service-agent-regex-search.md](../../docs/repo/service-agent-regex-search.md)** diff --git a/services/claw-harness-api/README.md b/services/claw-harness-api/README.md index 0badb86..ce77794 100644 --- a/services/claw-harness-api/README.md +++ b/services/claw-harness-api/README.md @@ -1,48 +1,3 @@ # claw-harness-api -Integration notes and a **thin local proxy** for the **claw-code** harness (multi-model agent runtime). Upstream sources: - -- Mirror listing: [gitlawb — claw-code](https://gitlawb.com/node/repos/z6Mks1jg/claw-code) -- GitHub (often used for clone): [instructkr/claw-code](https://github.com/instructkr/claw-code) - -This folder does **not** vendor claw-code. Clone upstream next to this repo or under a path you control, then build and run according to upstream `README.md` (Rust workspace under `rust/` with `cargo build --release`, and/or Python `src/` tooling depending on branch). - -## Policy: no Anthropic in templates - -The file [`providers.example.yaml`](./providers.example.yaml) lists **Ollama** and optional OpenAI-compatible / Gemini-style placeholders. **Anthropic is set to `enabled: false`.** Operational enforcement (firewall, absent `ANTHROPIC_API_KEY`, etc.) remains your responsibility on the host. - -## Upstream build (summary) - -```bash -git clone https://github.com/instructkr/claw-code.git -cd claw-code/rust -cargo build --release -``` - -Exact binaries, subcommands, and HTTP server flags depend on the cloned revision; read upstream `README.md` and `rust/crates/*/README` if present. - -## Local proxy (`proxy/`) - -To align with other smart_ide services (Bearer token, fixed bind address), a small Node proxy can forward HTTP to the upstream claw HTTP server. - -| Variable | Required | Description | -|----------|----------|-------------| -| `CLAW_PROXY_TOKEN` | yes | `Authorization: Bearer ` on client calls to the proxy. | -| `CLAW_PROXY_HOST` | no | Bind address (default `127.0.0.1`). | -| `CLAW_PROXY_PORT` | no | Proxy listen port (default `37142`). | -| `CLAW_UPSTREAM_URL` | yes | Base URL of the claw HTTP server (e.g. `http://127.0.0.1:37143`). | - -```bash -cd proxy -npm install -npm run build -export CLAW_PROXY_TOKEN='…' -export CLAW_UPSTREAM_URL='http://127.0.0.1:37143' -npm start -``` - -The proxy forwards method, path, query, and body; it does not modify Anthropic or other provider traffic beyond what the upstream server already does. - -## License - -Files in this directory (README, YAML example, proxy) are MIT unless noted. claw-code is a third-party project with its own license. +**[docs/repo/service-claw-harness.md](../../docs/repo/service-claw-harness.md)** diff --git a/services/docv/README.md b/services/docv/README.md index 3d2898b..57a1cfb 100644 --- a/services/docv/README.md +++ b/services/docv/README.md @@ -1,43 +1,4 @@ -# docv — intégration (hors monorepo) +# docv — intégration (`services/docv/`) -Ce répertoire ne contient **pas** le code du produit **docv** (gestion documentaire pour les projets Enso). Il documente le **contrat d’intégration** entre le monorepo **smart_ide** et le dépôt **docv**, attendu sous un chemin du type **`…/enso/docv`** sur la machine qui exécute docv (ex. poste local `/home/desk/code/enso/docv`). - -## Documentation Enso (`enso-docs/`) - -Une **copie** de l’arborescence **`docs/`** du dépôt **enso** (source typique : `/home/ncantu/code/enso/docs`) est conservée sous **[`enso-docs/`](./enso-docs/)** pour consultation dans le monorepo **sans dépendre du clone enso** sur la machine. Point d’entrée : [`enso-docs/README.md`](./enso-docs/README.md). Après évolution majeure de la doc enso, **recopier** depuis le dépôt enso : - -```bash -rm -rf services/docv/enso-docs -cp -a /chemin/vers/enso/docs services/docv/enso-docs -``` - -## Rôle de docv - -**docv** apporte les **services de gestion documentaire** aux projets : stockage, workflows et API métier documents côté filière Enso. Les **données projet** de référence vivent sur les **environnements déployés** ; docv (et les jobs de synchro AnythingLLM) les **récupèrent via SSH** vers une zone locale ou de service — voir [features/remote-deployed-data-ssh.md](../../docs/features/remote-deployed-data-ssh.md). - -## Convention de chemins : clones et zone de travail - -| Concept | Description | -|---------|-------------| -| **`PROJECTS_CLONE_ROOT`** | Répertoire absolu parent des **clones** **`/`** (code). Souvent **`../projects`** relatif à **smart_ide** ([projects/README.md](../../projects/README.md)). | -| **Données pour docv / RAG** | Répertoire résolu par **`DOCV_PROJECTS_ROOT`** (ou équivalent) : contenu **aligné sur les serveurs** test / pprod / prod après **pont SSH** (rsync, dumps, etc.), pas un dossier `data/` versionné dans Git. | - -Sur un poste de développement, **`DOCV_PROJECTS_ROOT`** pointe typiquement vers un **cache ou miroir** alimenté par les scripts documentés dans le dépôt docv et [docv-service-integration.md](../../docs/features/docv-service-integration.md). - -## Côté dépôt docv (amont) - -Le code docv doit résoudre le chemin données via une variable d’environnement du type **`DOCV_PROJECTS_ROOT`** (équivalent à `PROJECTS_CLONE_ROOT`), puis : - -`cheminDonnées = join(DOCV_PROJECTS_ROOT, projectId, 'data')` - -sans chemins absolus figés dans le code. Détail et multi-hôte : [docs/features/docv-service-integration.md](../../docs/features/docv-service-integration.md). - -## Consommateurs smart_ide (orchestrateur, front) - -Pour appeler docv par HTTP lorsqu’il est exposé (réseau interne ou TLS), utiliser des variables documentées dans [`.env.example`](./.env.example). Les valeurs réelles restent **hors dépôt** ([platform-target.md](../../docs/platform-target.md)). - -## Liens - -- Gestion documentaire + données + multi-hôte : [docv-service-integration.md](../../docs/features/docv-service-integration.md) -- API IA consommées par docv : [docv-ai-integration.md](../../docs/features/docv-ai-integration.md) -- SSO OIDC : [sso-docv-enso.md](../../docs/features/sso-docv-enso.md) +**[docs/repo/docv-services-directory.md](../../docs/repo/docv-services-directory.md)** +Miroir doc Enso : **[docs/repo/docv-enso-docs-mirror.md](../../docs/repo/docv-enso-docs-mirror.md)** diff --git a/services/ia-dev-gateway/README.md b/services/ia-dev-gateway/README.md index 9753e9a..46bb8b7 100644 --- a/services/ia-dev-gateway/README.md +++ b/services/ia-dev-gateway/README.md @@ -1,23 +1,3 @@ # ia-dev-gateway -HTTP API for the **ia_dev** checkout: lists agents from `.cursor/agents/*.md`, accepts `POST /v1/runs` (stub completion), SSE on `/v1/runs/:id/events`. Wire to real deploy/agent scripts later. - -## Build / run - -```bash -npm install -npm run build -export IA_DEV_GATEWAY_TOKEN='your-secret' -# optional: IA_DEV_ROOT=/path/to/ia_dev (default: ../../ia_dev from monorepo) -npm start -``` - -Default bind: `127.0.0.1:37144`. - -## Contract - -See [docs/API/ia-dev-gateway.md](../../docs/API/ia-dev-gateway.md) and [docs/features/ia-dev-service.md](../../docs/features/ia-dev-service.md). - -## License - -MIT +**[docs/repo/service-ia-dev-gateway.md](../../docs/repo/service-ia-dev-gateway.md)** diff --git a/services/ia_dev/README.md b/services/ia_dev/README.md index c61d300..1fe0d6b 100644 --- a/services/ia_dev/README.md +++ b/services/ia_dev/README.md @@ -1,21 +1,3 @@ # ia_dev — module smart_ide -Le répertoire **`ia_dev/`** à la racine du monorepo **smart_ide** est le **module agents / déploiement / ticketing** (équivalent historique du dépôt [4nk/ia_dev](https://git.4nkweb.com/4nk/ia_dev.git) lorsqu’il était sous-module Git). Il est **versionné dans ce dépôt** ; il n’y a plus de `git submodule update` pour l’obtenir. - -## Rôle - -- Scripts **`deploy/`**, **`gitea-issues/`**, outillage **`tools/`**, définitions **`.cursor/`**. -- Résolution des projets via **`projects//conf.json`** à la racine **smart_ide** et liens sous `ia_dev/projects/` (voir [projects/README.md](../../projects/README.md), [docs/ia_dev-module.md](../../docs/ia_dev-module.md)). - -## Journaux smart_ide - -Les exécutions shell concernées écrivent des événements dans **`logs/ia_dev.log`** à la racine **smart_ide** lorsque la détection du monorepo réussit (présence de `cron/git-pull-wrapper.sh` ou de `projects/smart_ide/` au-dessus de `ia_dev/`). Détail : [`logs/README.md`](../../logs/README.md), implémentation [`ia_dev/lib/smart_ide_logs.sh`](../../ia_dev/lib/smart_ide_logs.sh). - -## Variables (référence) - -Les chemins réels restent hors dépôt (secrets, clones). Pour l’intégration orchestrateur / gateway, voir [`.env.example`](./.env.example). - -## Liens - -- Architecture : [docs/system-architecture.md](../../docs/system-architecture.md) -- Gateway HTTP cible : [docs/features/ia-dev-service.md](../../docs/features/ia-dev-service.md) +**[docs/repo/ia-dev-smart-ide-integration.md](../../docs/repo/ia-dev-smart-ide-integration.md)** diff --git a/services/langextract-api/README.md b/services/langextract-api/README.md index 9b2816f..d99bb7d 100644 --- a/services/langextract-api/README.md +++ b/services/langextract-api/README.md @@ -1,48 +1,3 @@ # langextract-api -Local HTTP API on **`127.0.0.1`** wrapping [google/langextract](https://github.com/google/langextract): structured extractions from unstructured text with optional character grounding. - -## Environment - -| Variable | Required | Description | -|----------|----------|-------------| -| `LANGEXTRACT_SERVICE_TOKEN` | no | If set, every request must send `Authorization: Bearer `. | -| `LANGEXTRACT_API_HOST` | no | Bind address (default `127.0.0.1`). | -| `LANGEXTRACT_API_PORT` | no | Port (default `37141`). | -| `LANGEXTRACT_API_KEY` | no | Used by LangExtract for cloud models (e.g. Gemini) when the client does not pass `api_key` in the JSON body. See upstream docs. | - -## Endpoints - -- `GET /health` — liveness. -- `POST /extract` — run extraction. JSON body matches [LangExtract](https://github.com/google/langextract) `extract()` parameters where applicable: `text`, `prompt_description`, `examples`, `model_id`, optional `model_url` (Ollama), `extraction_passes`, `max_workers`, `max_char_buffer`, `api_key`, `fence_output`, `use_schema_constraints`. - -Example `examples` item: - -```json -{ - "text": "ROMEO. But soft!", - "extractions": [ - { - "extraction_class": "character", - "extraction_text": "ROMEO", - "attributes": {} - } - ] -} -``` - -## Run - -```bash -python3 -m venv .venv -source .venv/bin/activate -pip install -r requirements.txt -export LANGEXTRACT_SERVICE_TOKEN='…' -uvicorn app.main:app --host "${LANGEXTRACT_API_HOST:-127.0.0.1}" --port "${LANGEXTRACT_API_PORT:-37141}" -``` - -For Ollama-backed models, set `model_id` to your tag (e.g. `gemma2:2b`), `model_url` to `http://127.0.0.1:11434`, and typically `fence_output: false`, `use_schema_constraints: false` per upstream README. - -## License - -This wrapper is MIT. LangExtract is Apache-2.0 (see upstream repository). +**[docs/repo/service-langextract.md](../../docs/repo/service-langextract.md)** diff --git a/services/local-office/README.md b/services/local-office/README.md index 94ae8b4..f1402d2 100644 --- a/services/local-office/README.md +++ b/services/local-office/README.md @@ -1,42 +1,3 @@ # Local Office -**Intégration monorepo** : ce code provient de l’ancien dépôt `git.4nkweb.com/4nk/local_office`, **fusionné dans `smart_ide`** sous **`services/local-office/`** (service HTTP au même titre que les autres dossiers de `services/`). Le dépôt distant peut être supprimé ; l’historique Git d’origine n’est pas conservé dans ce chemin (copie de fichiers). - -Documentation projet : [docs/features/local-office.md](../docs/features/local-office.md) · [docs/services.md](../docs/services.md). - -API for third-party applications to upload and edit Office documents (docx, xlsx, pptx) on this machine. - -## Architecture - -See [docs/architecture-proposal.md](docs/architecture-proposal.md). - -## Run on this machine - -1. Create a virtualenv and install dependencies: - - ```bash - python3 -m venv .venv - source .venv/bin/activate # or .venv\Scripts\activate on Windows - pip install -r requirements.txt - ``` - -2. Set environment variables (no secrets in repo). Copy `.env.example` to `.env` and set at least `API_KEYS`. For a quick local run you can use `export API_KEYS=dev-key`. - -3. Run the API: - - ```bash - uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 - ``` - -4. Open http://localhost:8000/docs for Swagger UI. - -## API (summary) - -- **POST /documents** — Upload file (multipart). Header: `X-API-Key`. Request must send correct `Content-Type` for the part (e.g. docx: `application/vnd.openxmlformats-officedocument.wordprocessingml.document`). Returns `document_id`. -- **GET /documents** — List documents for the API key. -- **GET /documents/{id}** — Metadata. -- **GET /documents/{id}/file** — Download file. -- **POST /documents/{id}/commands** — Apply commands (docx: `replaceText`, `insertParagraph`). Body: `{"commands": [{"type": "replaceText", "search": "foo", "replace": "bar"}]}`. -- **DELETE /documents/{id}** — Delete document and file. - -All routes require header `X-API-Key` and are rate-limited per key. +**[docs/repo/service-local-office.md](../../docs/repo/service-local-office.md)** diff --git a/services/repos-devtools-server/README.md b/services/repos-devtools-server/README.md index 8c063c4..a0802f2 100644 --- a/services/repos-devtools-server/README.md +++ b/services/repos-devtools-server/README.md @@ -1,35 +1,3 @@ # repos-devtools-server -Local HTTP API on **`127.0.0.1`** for git operations under **`REPOS_DEVTOOLS_ROOT`** (default `/home/ncantu/code`). - -After a successful **`POST /repos-clone`**, if the new repo has no **`.4nkaiignore`**, the server copies **`templates/4nkaiignore.default`** into the repository root. The response includes **`fourNkAiIgnoreTemplateWrote`: boolean**. - -## Environment - -| Variable | Required | Description | -|----------|----------|-------------| -| `REPOS_DEVTOOLS_TOKEN` | yes | `Authorization: Bearer ` on every request. | -| `REPOS_DEVTOOLS_ROOT` | no | Clone root (default `/home/ncantu/code`). | -| `REPOS_DEVTOOLS_HOST` | no | Bind address (default `127.0.0.1`). | -| `REPOS_DEVTOOLS_PORT` | no | Port (default `37140`). | - -## Endpoints - -- `POST /repos-clone` — JSON `{ "url": "", "branch": "test" }` (`branch` optional). -- `GET /repos-list` -- `POST /repos-load` — JSON `{ "name": "" }` - -## Run - -```bash -npm install -npm run build -export REPOS_DEVTOOLS_TOKEN='…' -npm start -``` - -After upgrading, reload **systemd** if used: `systemctl --user daemon-reload && systemctl --user restart repos-devtools-server.service`. - -## Templates - -Keep **`templates/4nkaiignore.default`** aligned with `extensions/anythingllm-workspaces/templates/4nkaiignore.default` in the monorepo when you change defaults. +**[docs/repo/service-repos-devtools.md](../../docs/repo/service-repos-devtools.md)** diff --git a/services/smart-ide-orchestrator/README.md b/services/smart-ide-orchestrator/README.md index dab17ce..9684c73 100644 --- a/services/smart-ide-orchestrator/README.md +++ b/services/smart-ide-orchestrator/README.md @@ -1,34 +1,3 @@ # smart-ide-orchestrator -HTTP **intent router** (no LLM): maps `intent` strings to upstream targets (Ollama, AnythingLLM, micro-services, ia-dev-gateway). `POST /v1/execute` records timeline entries; forwarding to upstreams is a stub — extend with `fetch()` and service tokens. - -## Build / run - -```bash -npm install -npm run build -export ORCHESTRATOR_TOKEN='your-secret' -npm start -``` - -Default bind: `127.0.0.1:37145`. - -## Environment (optional) - -| Variable | Role | -|----------|------| -| `OLLAMA_URL` | Default `http://127.0.0.1:11434` | -| `ANYTHINGLLM_BASE_URL` | For `rag.query` resolution | -| `REPOS_DEVTOOLS_URL` | Default `http://127.0.0.1:37140` | -| `REGEX_SEARCH_URL` | Default `http://127.0.0.1:37143` | -| `LANGEXTRACT_URL` | Default `http://127.0.0.1:37141` | -| `LOCAL_OFFICE_URL` | Default `http://127.0.0.1:8000` | -| `IA_DEV_GATEWAY_URL` | Default `http://127.0.0.1:37144` | - -## Contract - -[docs/API/orchestrator.md](../../docs/API/orchestrator.md), [docs/features/orchestrator-api.md](../../docs/features/orchestrator-api.md). - -## License - -MIT +**[docs/repo/service-smart-ide-orchestrator.md](../../docs/repo/service-smart-ide-orchestrator.md)** diff --git a/systemd/README.md b/systemd/README.md index 4e800ae..eef3de1 100644 --- a/systemd/README.md +++ b/systemd/README.md @@ -1,47 +1,5 @@ -# Systemd units +# Unités systemd -## Ollama +Documentation centralisée : -Installed by the [official Ollama Linux installer](https://ollama.com/download/linux). Unit: `ollama.service`. - -Expose the API to Docker on the same host (AnythingLLM) with a drop-in: - -```ini -# /etc/systemd/system/ollama.service.d/override.conf -[Service] -Environment="OLLAMA_HOST=0.0.0.0:11434" -``` - -Then: `sudo systemctl daemon-reload && sudo systemctl restart ollama` - -Helper in repo: `../configure-ollama-for-docker.sh` writes this drop-in. - -## AnythingLLM - -- `anythingllm.service` — runs the official Docker image in the foreground under systemd (`Type=simple`). -- Defaults: `/etc/default/anythingllm` (copy from `anythingllm.default` if missing). -- Helper: `/usr/local/sbin/anythingllm-docker-exec.sh` (from `../scripts/anythingllm-docker-exec.sh`). - -Install / refresh: - -```bash -sudo ./scripts/install-systemd-services.sh -``` - -Commands: - -```bash -sudo systemctl status anythingllm -sudo systemctl restart anythingllm -journalctl -u anythingllm -f -``` - -Requires `docker.service`, user `ncantu` in group `docker`, and paths in `/etc/default/anythingllm` for non-default storage. - -## Git pull des clones projet (utilisateur, pas root) - -Tirage **périodique** des dépôts listés dans `projects/*/conf.json` (voir [`../cron/README.md`](../cron/README.md)) : - -- Unités : [`user/git-pull-project-clones.service.in`](./user/git-pull-project-clones.service.in) + [`user/git-pull-project-clones.timer`](./user/git-pull-project-clones.timer) -- Installation : [`../scripts/install-git-pull-systemd-user.sh`](../scripts/install-git-pull-systemd-user.sh) (écrit dans `~/.config/systemd/user/`, **sans** `sudo`) -- Configuration : [`../cron/config.env`](../cron/config.env) +**[docs/repo/systemd-units.md](../docs/repo/systemd-units.md)**