smart_ide/docs/core-ide.md
Nicolas Cantu 58cc2493e5 chore: consolidate ia_dev module, sync tooling, and harden gateways (0.0.5)
Initial state:
- ia_dev was historically referenced as ./ia_dev in docs and integrations, while the vendored module lives under services/ia_dev.
- AnythingLLM sync and hook installation had error masking / weak exit signaling.
- Proxy layers did not validate proxy path segments, allowing path normalization tricks.

Motivation:
- Make the IDE-oriented workflow usable (sync -> act -> deploy/preview) with explicit errors.
- Reduce security footguns in proxying and script automation.

Resolution:
- Standardize IA_DEV_ROOT usage and documentation to services/ia_dev.
- Add SSH remote data mirroring + optional AnythingLLM ingestion.
- Extend AnythingLLM pull sync to support upload-all/prefix and fail on upload errors.
- Harden smart-ide-sso-gateway and smart-ide-global-api proxying with safe-path checks and non-leaking error responses.
- Improve ia-dev-gateway runner validation and reduce sensitive path leakage.
- Add site scaffold tool (Vite/React) with OIDC + chat via sso-gateway -> orchestrator.

Root cause:
- Historical layout changes (submodule -> vendored tree) and missing central contracts for path resolution.
- Missing validation for proxy path traversal patterns.
- Overuse of silent fallbacks (|| true, exit 0 on partial failures) in automation scripts.

Impacted features:
- Project sync: git pull + AnythingLLM sync + remote data mirror ingestion.
- Site frontends: SSO gateway proxy and orchestrator intents (rag.query, chat.local).
- Agent execution: ia-dev-gateway script runner and SSE output.

Code modified:
- scripts/remote-data-ssh-sync.sh
- scripts/anythingllm-pull-sync/sync.mjs
- scripts/install-anythingllm-post-merge-hook.sh
- cron/git-pull-project-clones.sh
- services/smart-ide-sso-gateway/src/server.ts
- services/smart-ide-global-api/src/server.ts
- services/smart-ide-orchestrator/src/server.ts
- services/ia-dev-gateway/src/server.ts
- services/ia_dev/tools/site-generate.sh

Documentation modified:
- docs/** (architecture, API docs, ia_dev module + integration, scripts)

Configurations modified:
- config/services.local.env.example
- services/*/.env.example

Files in deploy modified:
- services/ia_dev/deploy/*

Files in logs impacted:
- logs/ia_dev.log (runtime only)
- .logs/* (runtime only)

Databases and other sources modified:
- None

Off-project modifications:
- None

Files in .smartIde modified:
- .smartIde/agents/*.md
- services/ia_dev/.smartIde/**

Files in .secrets modified:
- None

New patch version in VERSION:
- 0.0.5

CHANGELOG.md updated:
- yes
2026-04-04 18:36:43 +02:00

67 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Socle applicatif — `core_ide/` (Lapce)
Le répertoire **`core_ide/`** à la racine du clone `smart_ide` contient le **clone Git** de léditeur [Lapce](https://lapce.dev/) (amont public [lapce/lapce](https://github.com/lapce/lapce), Apache-2.0). Cest le **socle applicatif** visé pour lIDE : build, extensions et personnalisations 4NK sappuient sur cet arbre.
- Le contenu de **`core_ide/`** est **exclu de lindex Git** du dépôt parent (`.gitignore` à la racine) pour limiter la taille du monorepo ; il reste présent localement ou sur la machine de build.
- Ce document est la **référence versionnée** pour lemplacement et la mise à jour du clone (le dépôt Lapce amont fournit son propre `README.md` à la racine du clone).
## Mettre à jour les sources amont
Sans créer de dépôt produit 4NK sur GitHub : conserver `origin` pointant vers lURL publique de Lapce (ou un remote `upstream` si besoin), puis tirer les branches nécessaires :
```bash
cd core_ide
git fetch origin
git merge origin/master
```
(Remplacer `master` par la branche par défaut du dépôt amont si elle change.)
### Historique complet (clone shallow)
Si le clone a été fait avec `--depth 1` :
```bash
cd core_ide
git fetch --unshallow
```
### Build
Suivre la documentation amont Lapce (workspace Rust à la racine de `core_ide/`). Le binaire produit alimente la couche **editor-shell** décrite dans [system-architecture.md](./system-architecture.md).
### Premier checkout
```bash
cd /chemin/vers/smart_ide
git clone https://github.com/lapce/lapce.git core_ide
```
(Ou lURL / remote interne retenu par léquipe ; SSH si configuré.)
Alternative (recommandé) : utiliser le script de dépôt, qui vérifie aussi les remotes :
```bash
./scripts/ensure-core-ide.sh
```
## Patches Smart IDE (Lapce)
Le dossier `core_ide/` est ignoré par Git côté monorepo. Les modifications Smart IDE appliquées à Lapce sont donc **versionnées sous forme de patches** dans :
- `patches/lapce/` (fichiers `*.patch` + liste ordonnée `series`)
Scripts associés :
- `./scripts/core-ide-apply-patches.sh` : applique `patches/lapce/series` sur `core_ide/`
- `./scripts/core-ide-export-patches.sh` : exporte les commits `core_ide` (base..HEAD) vers `patches/lapce/*.patch` et régénère `series`
### Migration depuis lancien emplacement
Si un clone Lapce existait sous `forks/lapce/`, le renommer une fois :
```bash
mv forks/lapce core_ide
rmdir forks 2>/dev/null || true
```