mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-18 04:36:44 +02:00
Lot 6, étape 6 : la conversation tenue par la façade Rust par défaut
Sans LOKI_CHAT, c'est désormais la façade qui tient la conversation ; LOKI_CHAT=go la rend au Go (porte de sortie, aussi listée dans le compose Unraid). Le Go la garde de toute façon si un réglage que la façade ne sait pas encore honorer est posé (PROJ_SNAPSHOT, KEEP_TURN_IMAGES, NUDGE_IN_TOOL, SIDE_SLOT, SLOT_PERSIST, PREWARM, motifs retry_patterns), décidé au démarrage comme avant. Vérifié de bout en bout avec les vrais binaires et un faux moteur, dans les deux modes : deux tours (texte, puis appel d'outil), même état, même journal rejoué, discussion intacte après relance, et un panneau perf identique (complétions, tours, pertes, sonde du gabarit). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5edcad50a5
commit
4c8ac93581
4 files changed
+36
-8
No files matched your search
@@ -114,9 +114,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();
|
||||
let mut env = vec![(auth::INTERNAL_ENV.to_string(), token.clone())];
|
||||
if chat_rust {
|
||||
@@ -184,9 +184,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")
|
||||
)
|
||||
}
|
||||
|
||||
/// Le Go garde-t-il la conversation ? (quelques essais : il vient de démarrer)
|
||||
@@ -218,7 +228,7 @@ async fn start_chat(
|
||||
);
|
||||
s.load().await?;
|
||||
let shared = ChatShared::for_sessions(&s, store, home.join("chatimg"));
|
||||
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),
|
||||
@@ -265,3 +275,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