docs(ai): inventaire reel des 28 outils du registre (risques, libelles UI, outils web) + sections prevues
This commit is contained in:
@@ -181,67 +181,86 @@ boucle (max N itérations):
|
||||
|
||||
## 4. Catalogue des outils
|
||||
|
||||
Légende : **R** = lecture (auto), **M** = mutation (confirmation), **N** = navigation (in-app uniquement).
|
||||
> **Inventaire au registre** — 28 outils enregistrés (`backend/tools/service.py`,
|
||||
> `backend/tools/web.py`), vérifiable par
|
||||
> `docker exec obsigate-test python -c "from backend.tools import api; from backend.tools.registry import _REGISTRY; print(len(_REGISTRY))"`.
|
||||
> Les tables ci-dessous reflètent le code, pas l'intention : ce qui n'est pas
|
||||
> listé n'est pas exposé au modèle.
|
||||
|
||||
Légende : **R** = lecture (appel automatique), **M** = mutation (confirmation
|
||||
two-step obligatoire), **D** = dangereux (confirmation **+** réglage par vault
|
||||
`aiDestructiveTools`). « Étape (UI) » = libellé affiché dans la section
|
||||
« N étapes » de l'assistant (`backend/tools/labels.py` → clés `ai.step.*` FR/EN).
|
||||
|
||||
### Vaults & navigation
|
||||
|
||||
| Outil | Type | Paramètres | Endpoint source |
|
||||
| Outil | Type | Paramètres | Étape (UI) |
|
||||
|---|---|---|---|
|
||||
| `list_vaults` | R | — | `GET /api/vaults` (`main.py:1267`) |
|
||||
| `list_directory` | R | `vault`, `path` | `GET /api/browse/{vault}` (`main.py:1503`) |
|
||||
| `list_all_files` | R | `vault` | `GET /api/vault/{vault}/files` (`main.py:3883`) |
|
||||
| `open_file` | N | `vault`, `path` | événement front `obsigate:open-file` |
|
||||
| `reveal_in_tree` | N | `vault`, `path` | UI sidebar |
|
||||
| `list_vaults` | R | — | Liste des vaults consultée |
|
||||
| `list_directory` | R | `vault`, `path` | Répertoire exploré : {chemin} |
|
||||
| `list_all_files` | R | `vault`, `dir`, `limit`, `recursive` | Fichiers listés |
|
||||
|
||||
### Lecture de contenu
|
||||
|
||||
| Outil | Type | Paramètres | Endpoint source |
|
||||
| Outil | Type | Paramètres | Étape (UI) |
|
||||
|---|---|---|---|
|
||||
| `read_file` | R | `vault`, `path` | `GET /api/file/{vault}` (`main.py:2722`) |
|
||||
| `read_file_raw` | R | `vault`, `path` | `GET /api/file/{vault}/raw` (`main.py:1589`) |
|
||||
| `get_backlinks` | R | `vault`, `path` | `GET /api/file/{vault}/backlinks` (`main.py:2683`) |
|
||||
| `list_backups` | R | `vault`, `path` | `GET /api/file/{vault}/backups` (`main.py:2476`) |
|
||||
| `diff_backup` | R | `vault`, `path` | `GET /api/file/{vault}/diff` (`main.py:2513`) |
|
||||
| `get_graph` | R | `vault` | `GET /api/graph/{vault}` (`main.py:3390`) |
|
||||
| `read_file` | R | `vault`, `path` | Fichier lu : {chemin} |
|
||||
| `read_file_raw` | R | `vault`, `path` | Fichier lu : {chemin} |
|
||||
| `get_backlinks` | R | `vault`, `path` | Backlinks analysés |
|
||||
| `list_backups` | R | `vault`, `path` | Sauvegardes consultées |
|
||||
| `diff_backup` | R | `vault`, `path`, `version`, `compare_with` | Comparaison de sauvegarde : {chemin} |
|
||||
| `get_graph` | R | `vault`, `path`, `depth`, `scope`, `tag` | Graphe du vault consulté |
|
||||
|
||||
### Recherche
|
||||
|
||||
| Outil | Type | Paramètres | Endpoint source |
|
||||
| Outil | Type | Paramètres | Étape (UI) |
|
||||
|---|---|---|---|
|
||||
| `search_fulltext` | R | `q`, `vault`, `tag`, `limit` | `GET /api/search` (`main.py:3097`) |
|
||||
| `search_advanced` | R | `q`, `vault`, filtres, `regex`… | `GET /api/search/advanced` (`main.py:3195`) |
|
||||
| `search_paths` | R | `q`, `vault` | `GET /api/tree-search` (`main.py:3151`) |
|
||||
| `list_tags` | R | `vault` | `GET /api/tags` (`main.py:3137`) |
|
||||
| `suggest_tags` | R | `q` | `GET /api/tags/suggest` (`main.py:3352`) |
|
||||
| `list_recent` | R | `vault` | `GET /api/recent` (`main.py:1301`) |
|
||||
| `search_fulltext` | R | `q`, `vault`, `tag`, `limit` | Recherche dans le vault : {q} |
|
||||
| `search_advanced` | R | `q`, `vault`, `tag`, `limit`, `offset`, `sort`, `case_sensitive`, `whole_word`, `regex`, `include_paths`, `exclude_paths`, `created`, `modified`, `size` | Recherche dans le vault : {q} |
|
||||
| `search_paths` | R | `q`, `vault` | Chemins recherchés : {q} |
|
||||
| `list_tags` | R | `vault` | Tags consultés |
|
||||
| `suggest_tags` | R | `q`, `vault`, `limit` | Tags suggérés pour {q} |
|
||||
| `list_recent` | R | `vault`, `limit`, `mode` | Fichiers récents consultés |
|
||||
|
||||
### Création / modification
|
||||
### Web (in-app uniquement, jamais exposé en MCP)
|
||||
|
||||
| Outil | Type | Paramètres | Endpoint source |
|
||||
| Outil | Type | Paramètres | Étape (UI) |
|
||||
|---|---|---|---|
|
||||
| `create_file` | M | `vault`, `path`, `content` | `POST /api/file/{vault}` (`main.py:2134`) |
|
||||
| `create_directory` | M | `vault`, `path` | `POST /api/directory/{vault}` (`main.py:1921`) |
|
||||
| `edit_file` | M | `vault`, `path`, `content` | `PUT /api/file/{vault}/save` (`main.py:1796`) |
|
||||
| `append_to_file` | M | `vault`, `path`, `content` | dérivé de save |
|
||||
| `rename_file` | M | `vault`, `path`, `new_name` | `PATCH /api/file/{vault}` (`main.py:2207`) |
|
||||
| `rename_directory` | M | `vault`, `path`, `new_name` | `PATCH /api/directory/{vault}` (`main.py:1995`) |
|
||||
| `move_path` | M | `vault`, `src`, `dst` | `POST /api/move/{vault}` (`main.py:2289`) |
|
||||
| `replace_in_files` | M ⚠️ | `vault`, `find`, `replace`, filtres | `POST /api/search/replace` (`main.py:3241`) |
|
||||
| `web_search` | R | `query`, `max_results`, `category`, `language`, `page` | Recherche sur le web : {query} |
|
||||
| `fetch_url` | R | `url` | Page web consultée : {url} |
|
||||
|
||||
### Suppression (confirmation renforcée)
|
||||
`web_search` interroge l'instance SearXNG auto-hébergée
|
||||
(`OBSIGATE_SEARXNG_URL`, `search.dracodev.net` par défaut — aucune clé API) ;
|
||||
`fetch_url` extrait le texte d'une page publique après garde SSRF (URL et
|
||||
redirections reverrouillées hop par hop, plafond de taille).
|
||||
|
||||
| Outil | Type | Paramètres | Endpoint source |
|
||||
### Création / modification (confirmation)
|
||||
|
||||
| Outil | Type | Paramètres | Étape (UI) |
|
||||
|---|---|---|---|
|
||||
| `delete_file` | M ⚠️ | `vault`, `path` | `DELETE /api/file/{vault}` (`main.py:1851`) |
|
||||
| `delete_directory` | M ⚠️ | `vault`, `path`, `recursive` | `DELETE /api/directory/{vault}` (`main.py:2068`) |
|
||||
| `restore_backup` | M | `vault`, `path` | `POST /api/file/{vault}/restore` (`main.py:2601`) |
|
||||
| `create_file` | M | `vault`, `path`, `content` | Fichier proposé : {chemin} |
|
||||
| `create_directory` | M | `vault`, `path` | Dossier proposé : {chemin} |
|
||||
| `edit_file` | M | `vault`, `path`, `content` | Fichier modifié : {chemin} |
|
||||
| `append_to_file` | M | `vault`, `path`, `content` | Fichier complété : {chemin} |
|
||||
| `restore_backup` | M | `vault`, `path`, `version` | Sauvegarde restaurée : {chemin} |
|
||||
|
||||
### Partage (optionnel, admin)
|
||||
### Suppression & opérations destructives (confirmation + toggle par vault)
|
||||
|
||||
| Outil | Type | Paramètres | Endpoint source |
|
||||
| Outil | Type | Paramètres | Étape (UI) |
|
||||
|---|---|---|---|
|
||||
| `create_share` | M | `vault`, `path`, options | `POST /api/share/{vault}` (`main.py:4719`) |
|
||||
| `list_shares` | R | — | — |
|
||||
| `rename_file` | D | `vault`, `path`, `new_name` | Fichier renommé : {chemin} |
|
||||
| `rename_directory` | D | `vault`, `path`, `new_name` | Dossier renommé : {chemin} |
|
||||
| `move_path` | D | `vault`, `source_path`, `destination_dir` | Élément déplacé : {chemin} |
|
||||
| `replace_in_files` | D | `find`, `replace`, `vault`, `case_sensitive`, `whole_word`, `regex`, `include_paths`, `exclude_paths`, `replace_all`, `dry_run` | Remplacements : {motif} |
|
||||
| `delete_file` | D | `vault`, `path` | Fichier supprimé : {chemin} |
|
||||
| `delete_directory` | D | `vault`, `path`, `recursive` | Dossier supprimé : {chemin} |
|
||||
|
||||
### Prévu, non implémenté
|
||||
|
||||
Navigation front (`open_file`, `reveal_in_tree` — réalisés côté UI par les liens
|
||||
cliquables de l'assistant, pas comme outils du registry), partage
|
||||
(`create_share`, `list_shares`) et sources connectées (Gitea, Drive, courriel… :
|
||||
voir [#92](./features/ai-tools-roadmap.md)).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user