mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-20 05:28:15 +02:00
Lot 6 : effets des discussions par le Go (GoSessionHooks)
Les outils exécutés par le Go lisent la discussion active (dossier de la discussion, mode Code, critères) : chaque chargement, création ou bascule la lui annonce (hook activated, /internal/v1/conv/active). Une discussion supprimée fait nettoyer ses fichiers, travaux, critères, mode et résultats d'outils (/internal/v1/conv/dropped). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
3 files changed
+93
-3
No files matched your search
@@ -40,6 +40,8 @@ pub struct FakeGo {
|
||||
/// Résultat imposé à tout outil (sinon « exec:<nom> »), et archive recall.
|
||||
pub tool_result: Mutex<Option<String>>,
|
||||
pub recall: Mutex<Vec<String>>,
|
||||
/// Discussion active annoncée et discussions supprimées.
|
||||
pub conv_log: Mutex<Vec<String>>,
|
||||
/// Adresse d'écoute du faux Go (pour un client `Store` direct).
|
||||
pub backend: Mutex<Option<SocketAddr>>,
|
||||
}
|
||||
@@ -179,6 +181,16 @@ async fn handle(st: Arc<FakeGo>, req: Request<Incoming>) -> Response<Full<Bytes>
|
||||
serde_json::json!({"id": format!("r{}", r.len())}).to_string(),
|
||||
)
|
||||
}
|
||||
"/internal/v1/conv/active" | "/internal/v1/conv/dropped" => {
|
||||
let body = req.into_body().collect().await.unwrap().to_bytes();
|
||||
let v: serde_json::Value = serde_json::from_slice(&body).unwrap_or_default();
|
||||
let what = path.rsplit('/').next().unwrap();
|
||||
st.conv_log
|
||||
.lock()
|
||||
.unwrap()
|
||||
.push(format!("{what} {}", v["id"].as_str().unwrap_or_default()));
|
||||
resp(204, "")
|
||||
}
|
||||
"/internal/v1/engine/stop" => {
|
||||
st.lease_log.lock().unwrap().push("stop".into());
|
||||
*st.go_busy.lock().unwrap() = None;
|
||||
|
||||
Reference in new issue
Block a user