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.
This commit is contained in:
Nicolas Cantu 2026-04-03 18:20:31 +02:00
parent ee81855fc3
commit ac96434351
73 changed files with 995 additions and 758 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 lordre: 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/<id>/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 lordre: 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/<id>/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 lid choisi, `ia_dev/projects/<id>` doit être un **lien** vers `../../projects/<id>` 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** sil 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=<id>` et/ou `--project <id>` selon le script ; détail : `ia_dev/projects/README.md`.
- **Sélection projet pour les scripts :** `IA_PROJECT_ID=<id>` et/ou `--project <id>` 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/<id>/conf.json` → `tickets.authorized_emails.to` pour lenv 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.

View File

@ -1,62 +1,9 @@
# smart_ide — IDE orienté intention et IA locale
# smart_ide
Projet denvironnement 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 lorchestrateur 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).
LUX (ex. Lapce) et les flux utilisateur peuvent tourner sur le client ; lexécution lourde, la mémoire projet et Git vivent **sur le serveur**. Détail : [docs/deployment-target.md](./docs/deployment-target.md).
## Positionnement
- **Pas dexplorer 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 : lutilisateur exprime *ce quil 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 darchitecture, 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 dagents**, 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/<id>/`](./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 daccè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 lexplorer : 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/<id>/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 dinté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 dinstallation et dexploitation 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 lIDE. LIDE complet (Lapce + orchestrateur + gateway) est **cible de conception** ; ce dépôt documente et supporte la **stack sur serveur** (Ollama + AnythingLLM) et laccès distant.
- **Documentation complète** : [docs/README.md](./docs/README.md)
- **Vue densemble 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

View File

@ -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/<id>/`](../projects/) (fichiers `conf.json`), lit **`project_path`**, et pour chaque dépôt Git:
1. **`git fetch origin <branche_courante>`**
2. si **`origin/<branche>`** est en avance en **fast-forward****`git merge --ff-only origin/<branche>`**
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/<id>/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 sexé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)**

View File

@ -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)**

View File

@ -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)

View File

@ -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 densemble 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/<id>/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 dinté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/<id>/` |
| [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/<id>/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).

View File

@ -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 dhôte** (**Git**, **Ollama**, **AnythingLLM**). Il décrit ensuite une **stratégie dautomatisation 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 larborescence 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 larborescence 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** à lemplacement convenu (ex. `../projects/<id>/`) et vérifier les chemins **absolus** dans `projects/<id>/conf.json` si `ia_dev` doit les piloter.
4. Démarrer **Ollama** et **AnythingLLM** sur lhôte ([services.md](./services.md)) ; créer les **workspaces** et noter les **slugs**.
5. Configurer lenvironnement 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 denvironnement é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 denvironnement é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/<id>/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/<id>/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é »

View File

@ -12,7 +12,7 @@ Larticle 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` |

View File

@ -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`) |

View File

@ -12,7 +12,7 @@ Référence darborescence 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 lespace 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/<nom>/` 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 lespace 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/<nom>/` par rapport à la racine `smart_ide`.
2. **AnythingLLM** : le projet doit être **rattaché à un workspace** AnythingLLM (un workspace par projet). Lalimentation 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** : lorsquun id projet est enregistré pour les agents ou le ticketing, un `conf.json` peut être versionné sous **`smart_ide/projects/<id>/conf.json`** ; les scripts `ia_dev` y accèdent via le lien `ia_dev/projects/<id>` 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é.

View File

@ -27,7 +27,7 @@ flowchart TB
M --> DV
```
- **`PROJECTS_CLONE_ROOT`** : répertoire absolu parent des clones **`<projet>/`** (code). Convention : souvent **`../projects`** relatif à smart_ide ([projects/README.md](../../projects/README.md)).
- **`PROJECTS_CLONE_ROOT`** : répertoire absolu parent des clones **`<projet>/`** (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 @@ Lauthentification 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)

View File

@ -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` |

View File

@ -13,7 +13,7 @@ Lextension [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).

View File

@ -2,7 +2,7 @@
## Emplacement dans le monorepo
Le code et la doc dexploitation 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/`). Lancien 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 dexploitation détaillée sont sous **`services/local-office/`** ; la doc centralisée : [repo/service-local-office.md](../repo/service-local-office.md). Lancien 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 |

View File

@ -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)

View File

@ -2,22 +2,22 @@
Le répertoire **`./ia_dev`** à la racine du monorepo **smart_ide** contient l**équipe dagents** (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/<id>/`** à 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/<id>/`** à 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
```
Lexé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 lenvironnement IDE, les scripts hôte, les unités systemd et les journaux sous [`logs/`](../logs/README.md).
Lexé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 lenvironnement 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 dinté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

View File

@ -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** dautres 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** dautres 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 lagent `ia-dev-*` dans Cursor et préciser dans le message lenvironnement 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 lagent `ia-dev-*` dans Cursor et préciser dans le message lenvironnement 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

39
docs/repo/README.md Normal file
View File

@ -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)** : larborescence volumineuse **`services/docv/enso-docs/`** reste **sur le disque** sous ce chemin (copie depuis le dépôt enso) ; lexplication du flux de mise à jour est dans [docv-enso-docs-mirror.md](./docv-enso-docs-mirror.md).
## Index
| Document | Contenu |
|----------|---------|
| [smart-ide-overview.md](./smart-ide-overview.md) | Vision produit, stack IA, monorepo, liens vers larchitecture |
| [projects-directory.md](./projects-directory.md) | `projects/<id>/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 dinté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/<id>/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 dintentions 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/).

View File

@ -0,0 +1,66 @@
# Tirage Git planifié — clones `projects/*/conf.json`
## Comportement
Le script `cron/git-pull-project-clones.sh` parcourt `projects/<id>/` (fichiers `conf.json`), lit **`project_path`**, et pour chaque dépôt Git:
1. **`git fetch origin <branche_courante>`**
2. si **`origin/<branche>`** est en avance en **fast-forward****`git merge --ff-only origin/<branche>`**
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/<id>/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 sexécuter après un `merge --ff-only` : voir `scripts/anythingllm-pull-sync/` et [script-anythingllm-pull-sync.md](./script-anythingllm-pull-sync.md).

View File

@ -0,0 +1,26 @@
# Miroir de la documentation Enso (`services/docv/enso-docs/`)
## Pourquoi ce répertoire reste sous `services/docv/`
Larborescence **`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 dentrée
Fichier **`services/docv/enso-docs/README.md`** (livré avec la copie amont).

View File

@ -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 dinté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 larborescence **`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** **`<projet>/`** (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 denvironnement 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)

View File

@ -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 lhô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).

View File

@ -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 <project_root> <log_subdir> [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 dunité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 <project_id> <env> [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).

View File

@ -0,0 +1,65 @@
# Schéma `projects/<id>/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/<id>/conf.json`. Le **`<id>`** 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/<id>/conf.json` ou `…/ia_dev/projects/<id>/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 <id>` (`pousse.sh`, etc.) ; variable **`IA_PROJECT_ID`** lorsque les scripts lexportent.
2. **MAIL_TO** : adresse « To » du mail comparée à `tickets.authorized_emails.to` dans chaque `conf.json`.
3. **AI_AGENT_TOKEN** : comparaison avec `projects/<id>/.secrets/<env>/ia_token`.
Pas dautres sources (`IA_PROJECT`, `.ia_project`, etc.).
## Règle : `conf.json` en lecture seule pour les agents
Les agents ne modifient pas `projects/<id>/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 lhistorique 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 densemble ia_dev
- [ia-dev-shared-lib.md](./ia-dev-shared-lib.md) — `project_config.sh`

View File

@ -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/<id>/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/<id>/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/<id>/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/<id>/data/issues` ; scripts `gitea-issues/`. |
| **IA notaire (ai_working_help)** | `notary-ai-loop`, `notary-ai-process` ; API `ai_working_help/server.js` ; spooler `projects/<id>/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/<id>/logs/` et `projects/<id>/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 <project_id> <env> [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).

View File

@ -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/<id>/conf.json`). Avec résolution par token : `PROJECT_ENV`.
**Résolution de lid (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/<id>/.secrets/<env>/ia_token`.
Voir [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md).

View File

@ -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/<id>/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 densemble 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)

View File

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

View File

@ -0,0 +1,53 @@
# Configurations projet (`projects/<id>/`)
Ce répertoire, à la **racine du monorepo `smart_ide`**, ne contient que les **fichiers de configuration** attendus par **`ia_dev`** (`conf.json` par identifiant de projet). Ce nest **pas** le répertoire des **clones Git** des applications.
Les **sous-répertoires** `projects/<id>/` non listés dans le **`.gitignore`** à la racine (exceptions pour les ids versionnés) restent **ignorés par Git** : pour versionner un nouvel id, ajouter les lignes `!projects/<id>/` et `!projects/<id>/**` à côté des exceptions existantes.
## Clones applicatifs (docv, stacks métier, etc.)
Les dépôts sources des produits (ex. backend **docv** sous un chemin du type `…/enso/docv`, autres apps) doivent vivre **ailleurs**, selon la convention du poste — typiquement un répertoire **frère** du monorepo, par ex. **`../projects/<nom>/`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici.
- **`./projects/`** → uniquement `conf.json` (+ métadonnées légères) pour que `ia_dev` résolve `projects/<id>/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/<id>/conf.json`, le tirage automatique utilise **`cron/config.env`** (`PULL_SYNC_*`) et **`cron/git-pull-wrapper.sh`** → **`cron/git-pull-project-clones.sh`**.
- **Timer systemd utilisateur** (recommandé) : `scripts/install-git-pull-systemd-user.sh` — voir [cron-git-pull.md](./cron-git-pull.md)
- Désactiver pour un id : `"cron": { "git_pull": false }` dans le `conf.json`
- Désactiver tout : `PULL_SYNC_ENABLED=0` dans `config.env` ou `config.local.env`
`project_path` est résolu en chemin absolu à partir de la racine **smart_ide** lorsquil 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.

View File

@ -0,0 +1,51 @@
# anythingllm-pull-sync (`scripts/anythingllm-pull-sync/`)
Sexé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 lextension VS Code (racine du dépôt cible).
- Variables denvironnement 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).

View File

@ -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 nest pas limplé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 <token>` (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 derreur.
## 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).

View File

@ -0,0 +1,34 @@
# claw-harness-api (`services/claw-harness-api/`)
Notes dinté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 dAnthropic dans les gabarits
**`providers.example.yaml`** : Ollama et placeholders OpenAI-compatibles / Gemini ; **Anthropic `enabled: false`**. Lapplication 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).

View File

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

View File

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

View File

@ -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 darchitecture (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 sil y en a).

View File

@ -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 na pas **`.4nkaiignore`**, le serveur copie **`templates/4nkaiignore.default`** à la racine du clone. La réponse inclut **`fourNkAiIgnoreTemplateWrote`**.
## Variables denvironnement
| Variable | Obligatoire | Description |
|----------|-------------|-------------|
| `REPOS_DEVTOOLS_TOKEN` | oui | `Authorization: Bearer <token>` 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": "<git>", "branch": "test" }` (`branch` optionnel).
- `GET /repos-list`
- `POST /repos-load` — JSON `{ "name": "<folder>" }`
## 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 dune 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)

View File

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

View File

@ -0,0 +1,56 @@
# smart_ide — IDE orienté intention et IA locale
Projet denvironnement 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 lorchestrateur 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).
LUX (ex. Lapce) et les flux utilisateur peuvent tourner sur le client ; lexécution lourde, la mémoire projet et Git vivent **sur le serveur**. Détail : [deployment-target.md](../deployment-target.md).
## Positionnement
- **Pas dexplorer 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 : lutilisateur exprime *ce quil 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 dagents**, 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/<id>/`** (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 dinstallation et dexploitation 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 lIDE. LIDE complet (Lapce + orchestrateur + gateway) est **cible de conception** ; ce dépôt documente et supporte la **stack sur serveur** (Ollama + AnythingLLM) et laccès distant.
**Auteur :** Équipe 4NK

View File

@ -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 lAPI à 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 daide 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 lorsquune session utilisateur systemd est active. Pour exécuter les timers après déconnexion graphique complète, activer le **linger** pour lutilisateur : `loginctl enable-linger <user>` (décision dadministration machine).

View File

@ -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 denvironnement 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 limplé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}/<projet>/data/`** (souvent **`../projects/<projet>/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 dappoint 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 dappoint 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 lindex dexploitation [repo/README.md](./repo/README.md) (fichiers `repo/service-*.md`).
## Documentation liée

View File

@ -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 larborescence du monorepo** sur disque ; il est **exclu de lindex 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 dexploitation, unités utilisateur pour services |
| `cron/` | Pull **Git** planifié des clones décrits par `projects/<id>/conf.json` (`project_path`) — [cron/README.md](../cron/README.md) |
| `cron/` | Pull **Git** planifié des clones décrits par `projects/<id>/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 dintégration** docv (hors monorepo) ; données projet sous `../projects/<id>/data/` ; pas de code applicatif docv ici — [features/docv-service-integration.md](./features/docv-service-integration.md) |
| `projects/<id>/` (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/<id>/` (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/<id>` peut pointer vers `../../projects/<id>` (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 dexé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 dexé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 dentrée et de lappel 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 dauth diffère (`X-API-Key` vs `Authorization: Bearer` pour les autres lignes du tableau).

View File

@ -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**, AnythingLLMs **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 <url>` | Clone (branch `test`) → ensure workspace → **initial RAG upload** (if enabled) → open folder → browser. |
| `/repos-load-sync <name>` | Open folder → ensure workspace → **initial RAG upload** → browser. |
| `/workspace-sync <name>` | Resolve repo under `REPOS_DEVTOOLS_ROOT` → ensure workspace → **initial RAG upload** (no folder open). |
| `/workspace-load <name>` | 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 Cursors 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)**

2
ia_dev

@ -1 +1 @@
Subproject commit 047700fab0ce25346dc167a67be3ac1eb4f6b809
Subproject commit 11da4329e4fb303999709b81b963743eb3ff9d99

View File

@ -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)**

View File

@ -1,53 +1,5 @@
# Configurations projet (`projects/<id>/`)
Ce répertoire, à la **racine du monorepo `smart_ide`**, ne contient que les **fichiers de configuration** attendus par **`ia_dev`** (`conf.json` par identifiant de projet). Ce nest **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/<id>/` non listés dans le **`.gitignore`** à la racine (exceptions pour les ids versionnés) restent **ignorés par Git** : pour versionner un nouvel id, ajouter les lignes `!projects/<id>/` et `!projects/<id>/**` à côté des exceptions existantes.
## Clones applicatifs (docv, stacks métier, etc.)
Les dépôts sources des produits (ex. backend **docv** sous un chemin du type `…/enso/docv`, autres apps) doivent vivre **ailleurs**, selon la convention du poste — typiquement un répertoire **frère** du monorepo, par ex. **`../projects/<nom>/`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici.
- **`./projects/`** (ce dossier) → uniquement `conf.json` (+ métadonnées légères) pour que `ia_dev` résolve `projects/<id>/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/<id>/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** lorsquil 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 sappuient 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/<id>/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 lexemple 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 lexemple est informative ; les outils ne sen 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 lignorer sil 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 lignorer.
**[docs/repo/projects-directory.md](../docs/repo/projects-directory.md)**

View File

@ -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)**

View File

@ -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 Cursors 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 <token>` 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)**

View File

@ -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 <token>` 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)**

View File

@ -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 dinté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 larborescence **`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 dentré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** **`<projet>/`** (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 denvironnement 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 lorsquil 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)**

View File

@ -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)**

View File

@ -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) lorsquil était sous-module Git). Il est **versionné dans ce dépôt** ; il ny a plus de `git submodule update` pour lobtenir.
## Rôle
- Scripts **`deploy/`**, **`gitea-issues/`**, outillage **`tools/`**, définitions **`.cursor/`**.
- Résolution des projets via **`projects/<id>/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 linté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)**

View File

@ -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 <token>`. |
| `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)**

View File

@ -1,42 +1,3 @@
# Local Office
**Intégration monorepo** : ce code provient de lancien 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é ; lhistorique Git dorigine nest 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)**

View File

@ -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 <token>` 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": "<git>", "branch": "test" }` (`branch` optional).
- `GET /repos-list`
- `POST /repos-load` — JSON `{ "name": "<folder>" }`
## 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)**

View File

@ -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)**

View File

@ -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)**