feat(stt): recherche web (SearXNG in-cluster) + fix cluster_status (#49)

Phase 2 d'Asa agentique : nouvel outil web_search adossé à un SearXNG
self-host in-cluster, + correction du faux positif de cluster_status.

- SearXNG (k8s/apps/searxng/) : Deployment + Service + ConfigMap settings.yml
  + IngressRoute searxng.lab.local, Application ArgoCD. Namespace ai, interne
  (l'outil tape http://searxng:8080). use_default_settings + search.formats
  inclut json (sinon API JSON 403) ; limiter/image_proxy off ; image pinnée ;
  conf copiée dans un emptyDir via initContainer (contourne le mount RO) ;
  PodSecurity restricted.
- Outil web_search (tools._web_search) ajouté au contexte asa + STT_SEARXNG_URL.
- fix(cluster_status) : les pods de CronJob TERMINÉS (Succeeded/Failed, ex.
  sacrifice-assign-renfort) comptaient comme « non prêts » → fausse alarme.
  Join kube_pod_status_phase{phase=~"Running |Pending"} (3 faux positifs → 0,
  validé in-cluster).
- Serveur 0.8.0 ; doc stt.md + journal mis à jour.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-06-22 22:10:59 +02:00 committed by GitHub
parent c9e89c91b9
commit 73b52cde2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 270 additions and 16 deletions

View file

@ -42,12 +42,13 @@ CONTEXTS: dict[str, Context] = {
id="asa", label="Asa · agent", icon="",
description="Asa répond en s'appuyant sur des outils (doc + état live du homelab).",
system_prompt=_BASE + " Tu disposes d'outils pour obtenir l'état RÉEL et LIVE du "
"homelab (santé des machines, état du cluster, métriques Prometheus) et pour chercher "
"dans la documentation Funk. Dès qu'une question porte sur l'état courant, un fait "
"précis ou la config du homelab, APPELLE l'outil adéquat puis réponds à partir de son "
"résultat — n'invente jamais. Si les outils ne donnent pas l'information, dis-le "
"simplement. Pour le bavardage général, réponds directement sans outil.",
tools=("search_docs", "host_health", "cluster_status", "prometheus_query"),
"homelab (santé des machines, état du cluster, métriques Prometheus), chercher dans la "
"documentation Funk, et faire une recherche sur INTERNET (web_search). Dès qu'une "
"question porte sur l'état courant, un fait précis du homelab, ou une info externe / "
"récente, APPELLE l'outil adéquat puis réponds à partir de son résultat — n'invente "
"jamais. Si les outils ne donnent pas l'information, dis-le simplement. Pour le "
"bavardage général, réponds directement sans outil.",
tools=("search_docs", "host_health", "cluster_status", "prometheus_query", "web_search"),
),
"funk": Context(
id="funk", label="Funk · cluster", icon="🛠️",