mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 07:28:13 +02:00
Fusion de main : conversation Rust par défaut, télémétrie du tour
main a reçu en parallèle la télémétrie du tour tenu par la façade (/internal/v1/turn/perf), les tickets « en vol » du moteur et la conversation tenue par la façade par défaut (LOKI_CHAT=go pour revenir au Go). Le lot 29 faisait la même chose par /internal/v1/perf/record : un seul chemin est gardé, celui de main. - TurnHost::perf_record (main) remplace TurnHost::perf ; la nature est posée par l'hôte (verify pour la passe isolée seulement, main pour les corrections du builder, comme le Go). - Les résumés de compaction passent par le même point d'entrée, nature compact : chat/perf.rs ne garde que le relevé de la réponse entière (perfRecFromWire) et l'envoi. - La sonde du gabarit reste à la façade (lot 23) : /internal/v1/turn/perf ne la lance plus côté Go. - facade_perf.go retiré ; ses cas (perte, intercalé, alerte, preset externe, incomplète, GET) rejoignent web_internal_turnperf_test.go. - README : LOKI_CHAT défaut Rust, avec ce que les lots 19, 23, 29 et 30 y ajoutent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
20 files changed
+713
-457
No files matched your search
@@ -123,9 +123,9 @@ fn serve() -> ExitCode {
|
||||
return ExitCode::FAILURE;
|
||||
}
|
||||
};
|
||||
// LOKI_CHAT=rust : la conversation est tenue par la façade. Le Go le
|
||||
// sait (il remet alors à la façade le trafic de chat du tunnel) et
|
||||
// connaît son adresse locale.
|
||||
// Conversation tenue par la façade (défaut ; LOKI_CHAT=go pour la
|
||||
// rendre au Go). Le Go le sait (il remet alors à la façade le trafic
|
||||
// de chat du tunnel) et connaît son adresse locale.
|
||||
let chat_rust = chat_held_by_facade();
|
||||
// LOKI_MODELS=rust : les routes des modèles aussi (le Go remet alors
|
||||
// celles du tunnel et ne vide plus les .part).
|
||||
@@ -414,9 +414,19 @@ fn serve() -> ExitCode {
|
||||
})
|
||||
}
|
||||
|
||||
/// `LOKI_CHAT=rust` : conversation tenue par la façade (Go par défaut).
|
||||
/// Conversation tenue par la façade : c'est le défaut. `LOKI_CHAT=go` (ou
|
||||
/// 0/off/false/no) la rend au Go — porte de sortie. Le Go la garde de toute
|
||||
/// façon si un réglage que la façade ne sait pas honorer est posé
|
||||
/// (`facadeChatBlocker`).
|
||||
fn chat_held_by_facade() -> bool {
|
||||
std::env::var("LOKI_CHAT").is_ok_and(|v| v.trim().eq_ignore_ascii_case("rust"))
|
||||
chat_wanted(std::env::var("LOKI_CHAT").ok().as_deref())
|
||||
}
|
||||
|
||||
fn chat_wanted(v: Option<&str>) -> bool {
|
||||
!matches!(
|
||||
v.map(|v| v.trim().to_ascii_lowercase()).as_deref(),
|
||||
Some("go" | "0" | "off" | "false" | "no")
|
||||
)
|
||||
}
|
||||
|
||||
/// `LOKI_MODELS=rust` : routes des modèles tenues par la façade.
|
||||
@@ -512,7 +522,7 @@ async fn start_chat(
|
||||
s.load().await?;
|
||||
let mut shared = ChatShared::for_sessions(&s, store.clone(), home.join("chatimg"));
|
||||
shared.patterns = loki_rs::chat::generate::retry_patterns(&store).await;
|
||||
eprintln!("[loki-rs] conversation tenue par la façade (LOKI_CHAT=rust)");
|
||||
eprintln!("[loki-rs] conversation tenue par la façade (LOKI_CHAT=go pour la rendre au Go)");
|
||||
Ok(ChatService::new(
|
||||
std::sync::Arc::new(s),
|
||||
std::sync::Arc::new(shared),
|
||||
@@ -559,3 +569,18 @@ async fn shutdown_signal() {
|
||||
let _ = tokio::signal::ctrl_c().await;
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[test]
|
||||
fn conversation_tenue_par_la_facade_par_defaut() {
|
||||
use super::chat_wanted;
|
||||
assert!(chat_wanted(None));
|
||||
assert!(chat_wanted(Some("")));
|
||||
assert!(chat_wanted(Some("rust")));
|
||||
assert!(chat_wanted(Some(" RUST ")));
|
||||
for v in ["go", "GO", "0", "off", "false", "no"] {
|
||||
assert!(!chat_wanted(Some(v)), "{v}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user