smart_ide/docs/features/agent-regex-search-api.md
Nicolas Cantu ac96434351 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.
2026-04-03 18:20:31 +02:00

33 lines
2.2 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.

# Recherche regex sur code — API locale (`services/agent-regex-search-api`)
## Objectif
Offrir aux clients locaux (futur shell Lapce, gateway, agents) une **API HTTP** pour exécuter des **recherches par expression régulière** sur une arborescence contrôlée, sans dépendre du moteur propriétaire décrit dans le billet Cursor [Recherche regex rapide : indexer le texte pour les outils des agents](https://cursor.com/fr/blog/fast-regex-search).
## Ce que ce nest pas
Larticle Cursor décrit des index **sparse n-grams**, fichiers sur disque, `mmap`, etc. **Ce code nest pas reproduit ici** : Cursor ne publie pas ce moteur en open source. Le service `agent-regex-search-api` sappuie sur **[ripgrep](https://github.com/BurntSushi/ripgrep)** (`rg`), outil standard, rapide, et adapté aux flux « agent » qui enchaînent beaucoup de recherches.
## Périmètre fonctionnel
| Élément | Détail |
|--------|--------|
| 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` |
| Port défaut | `37143` |
## Menaces à prendre en compte
- **ReDoS** : une regex peut rester coûteuse jusquà `timeoutMs` ; garder des plafonds raisonnables.
- **Lecture disque** : tout fichier que `rg` traverse sous la cible peut être lu selon les droits OS ; aligner `REGEX_SEARCH_ROOT` sur la politique du poste.
## Évolutions possibles (hors périmètre initial)
Pour des monorepos extrêmement volumineux, des backends **indexés** open source (ex. **Zoekt**, familles dindex **trigram** / n-grams) peuvent compléter ou remplacer le seul `rg`, en réutilisant les idées du billet Cursor comme **références algorithmiques**, pas comme implémentation fournie.
## Intégration architecture
Voir [system-architecture.md](../system-architecture.md) : ce service est un **micro-service HTTP local** dans la même famille que `repos-devtools-server`, destiné à être appelé par lorchestrateur ou léditeur plutôt que par des clients distants non authentifiés.