État: pending (squelette CLI fait)
Binaire codegraph final qui orchestre tout. Watcher live pour sync auto.
| Cmd | Action |
|---|---|
codegraph (no arg) |
→ install interactif |
install |
installer multi-agent (spec 08) |
init [-i/--index] |
crée .codegraph/ + DB; -i lance indexation après |
uninit |
supprime .codegraph/ après confirmation |
index |
full reindex |
sync |
incremental: rescan fichiers modifiés (compare mtime+sha256) |
status |
size DB, count nodes/edges/files, backend SQLite, dernière indexation |
query <q> |
search FTS, sortie tableau |
files [path] |
liste fichiers indexés sous path |
context <target> |
build markdown context, stdout |
affected <node> |
impact radius, stdout |
serve --mcp |
run MCP server stdio (spec 07) |
watch |
run file watcher en foreground (debug) |
- Crate
notify+notify-debouncer-full(debounce ~500ms). - Démarré automatiquement quand
serve --mcptourne — réindex live pendant que l'agent code. - Filtre: même
ignore::WalkBuilderqu'à l'index pour rejeter événements sur fichiers ignorés. - Sur event:
- Create/Modify → enqueue
sync_file(path). - Delete →
db.delete_file_cascade. - Rename → delete old + sync new.
- Create/Modify → enqueue
- Worker tokio task dédié.
--jsonglobal flag → toutes les commandes sortent JSON au lieu de texte humain.- Couleurs via
anstream(auto-detect TTY). - Progress bar via
indicatifpourindex/synclong.
.codegraph/
db.sqlite // schéma v1
config.toml // ignore patterns custom, lang overrides
.gitignore // contient "*" (jamais commité)
version // texte: version du binaire ayant créé le dossier
init détecte si project a CLAUDE.md / AGENTS.md / .cursor/rules/ → propose codegraph install à la suite.
- Smoke test:
init -isur fixture,statusmontre N nodes > 0,query foorépond. - Watcher test: créer fichier dans tempdir, attendre debounce, assert node apparaît dans DB.
tracingdoit écrire stderr —serve --mcpcorrompt le protocole sinon.- Lockfile concurrent:
.codegraph/db.sqlite.lock(advisoryfs2::FileExt::try_lock_exclusive) pour bloquerindex+serve --mcpsimultanés sur le même writer. - Signal handling: SIGINT pendant index → flush transaction en cours puis exit clean.