feat(ai): menu @ instantane, selecteurs agrandis et BooksLM racine (#82)
CI / lint (push) Successful in 1m11s
CI / security (push) Successful in 47s
CI / test (push) Successful in 2m12s
CI / build (push) Successful in 45s
CI / e2e (push) Successful in 10m21s

Nouvel endpoint GET /api/vault/{vault}/paths + prechargement et filtrage client du menu @ (affichage instantane des fichiers/repertoires). Selecteurs Fournisseur/Modele agrandis (0,8rem / 34px) pour s'aligner sur le reste du site. Ajout de BooksLM au menu contextuel de la racine des vaults.
This commit is contained in:
2026-09-12 20:09:08 -04:00
parent d6cdd670b1
commit 9274dbd49f
10 changed files with 218 additions and 26 deletions
+29
View File
@@ -113,3 +113,32 @@ def search_paths(q: str, vault: str = "all") -> dict[str, Any]:
})
return {"query": q, "vault_filter": vault, "results": results}
def list_paths(vault: str, limit: int = 5000) -> dict[str, Any]:
"""Return a flat, capped list of every indexed path in a vault.
Backs the AI assistant ``@`` mention menu: fetching the whole path index
once lets the client filter files/directories instantly instead of issuing
a request per keystroke.
Args:
vault: Vault name.
limit: Maximum number of entries returned.
Returns:
``{"vault", "count", "results": [{vault, path, name, type}]}``.
"""
from backend.indexer import path_index
entries = path_index.get(vault, [])
results = [
{
"vault": vault,
"path": entry["path"],
"name": entry["name"],
"type": entry["type"],
}
for entry in entries[: max(0, limit)]
]
return {"vault": vault, "count": len(results), "results": results}