mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-16 19:59:56 +02:00
KEEP_TURN_IMAGES ne garde plus la conversation au Go. L'état du tour vit dans la façade ; les fichiers et la vision restent au Go. Go (facade_keepimg.go) : - /internal/v1/turn/keepimg : vision réellement active, budget des images gardées ; - /internal/v1/turn/keepimg/store : une image relayée rangée par référence (refRelayImage), relue à l'octet près. Rust : - chat/keepimg.rs : port de keepImages (image à l'essai, mesure par le moteur répartie au prorata des octets, budget, publication, fin de tour). - La boucle du tour : budget demandé pour le fil principal, image rangée par le Go, historique réécrit publié sans les relais non gardés ; les images gardées partent avant tout résumé (filet réactif, en cours de tour, fenêtre pleine). - Début et fin de tour : retirées si le contexte le demande ou si elles ne doivent plus partir (clé retirée, vision absente). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
48 lines
1.6 KiB
Go
48 lines
1.6 KiB
Go
package loki
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
// facade_keepimg.go — KEEP_TURN_IMAGES pour le tour tenu par la façade (lot 32
|
|
// de la migration). L'état du tour (images à l'essai, mesure, budget) vit dans
|
|
// la façade ; ce qui touche aux fichiers et à la vision reste ici :
|
|
//
|
|
// - /internal/v1/turn/keepimg : la vision est-elle réellement active
|
|
// (visionEnabled, engineSeesImages) et le budget des images gardées
|
|
// (keepImgBudget) ;
|
|
// - /internal/v1/turn/keepimg/store : une image relayée rangée par
|
|
// référence (refRelayImage : fichier chiffré si la mémoire l'est, date
|
|
// rafraîchie, relu à l'octet près).
|
|
|
|
// handleInternalTurnKeepImg : POST {} → {"vision":bool,"budget":n}.
|
|
func handleInternalTurnKeepImg(w http.ResponseWriter, r *http.Request) {
|
|
var in struct{}
|
|
if !readInternalJSON(w, r, &in) {
|
|
return
|
|
}
|
|
sendJSON(w, http.StatusOK, map[string]any{
|
|
"vision": visionEnabled() && engineSeesImages(),
|
|
"budget": keepImgBudget(),
|
|
})
|
|
}
|
|
|
|
// handleInternalTurnKeepImgStore : POST {"msg":Message} →
|
|
// {"ok":true,"msg":Message,"weight":octets} ou {"ok":false} (format inconnu,
|
|
// disque plein, mémoire verrouillée, relecture différente : l'image reste
|
|
// éphémère).
|
|
func handleInternalTurnKeepImgStore(w http.ResponseWriter, r *http.Request) {
|
|
var in struct {
|
|
Msg Message `json:"msg"`
|
|
}
|
|
if !readInternalJSON(w, r, &in) {
|
|
return
|
|
}
|
|
m, weight, ok := refRelayImage(in.Msg)
|
|
if !ok {
|
|
sendJSON(w, http.StatusOK, map[string]any{"ok": false})
|
|
return
|
|
}
|
|
sendJSON(w, http.StatusOK, map[string]any{"ok": true, "msg": m, "weight": weight})
|
|
}
|