mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 14:38:12 +02:00
Lot 34 : bloc projet figé (PROJ_SNAPSHOT) dans le tour de la façade
PROJ_SNAPSHOT était le dernier réglage qui gardait la conversation au Go : la façade la tient désormais dans tous les cas (LOKI_CHAT=go reste la porte de sortie). facadeChatBlocker et la décision prise une fois par processus disparaissent. Go (facade_projsnap.go) : - /internal/v1/turn/view, avec la clé et l'agent : tête du tour portant le bloc figé (ou le vivant à rafraîchir), préambule sans date ni dossier, et la décision projsnap (rafraîchir, mise à jour à poser, instantané à ranger, clé et système du tour) ; dry pour le préchauffage ; - /internal/v1/turn/projsnap/refresh : bloc vivant et instantané qu'il devient, pour une compaction en plein tour. Rust : - ChatService::assemble_turn, partagé par le tour et la relance du builder : instantané rangé avec la discussion, mise à jour posée en tête du dernier message utilisateur (prependCtxUpdate), historique nettoyé au rafraîchissement ; - TurnHost::project_refresh après une compaction ou une réduction en plein tour (replaceProjectHead) ; l'instantané posé devient celui de la discussion ; - le préchauffage demande la vue en dry et garde les mises à jour tant que le bloc n'est pas rafraîchi. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
19 files changed
+1063
-171
No files matched your search
@@ -80,20 +80,24 @@ func handleInternalTurnStart(w http.ResponseWriter, r *http.Request) {
|
||||
})
|
||||
}
|
||||
|
||||
// handleInternalTurnView : les pièces de turnView (assembleTurn sans
|
||||
// PROJ_SNAPSHOT) que la façade assemble autour de l'historique : head part
|
||||
// devant les messages, puis prefix (InjectSkills) fusionné dans le premier
|
||||
// système qui n'est pas un message projet, ou posé en tête.
|
||||
// handleInternalTurnView : les pièces de turnView (assembleTurn) que la
|
||||
// façade assemble autour de l'historique : head part devant les messages, puis
|
||||
// prefix (InjectSkills) fusionné dans le premier système qui n'est pas un
|
||||
// message projet, ou posé en tête. Avec PROJ_SNAPSHOT et l'agent, la tête
|
||||
// porte le bloc figé de la discussion (snap) et projsnap dit quoi en faire
|
||||
// (facade_projsnap.go) ; dry : pour le préchauffage, rien à ranger.
|
||||
func handleInternalTurnView(w http.ResponseWriter, r *http.Request) {
|
||||
var in struct {
|
||||
Caps Caps `json:"caps"`
|
||||
Caps Caps `json:"caps"`
|
||||
Snap *projSnapshot `json:"snap"`
|
||||
Dry bool `json:"dry"`
|
||||
}
|
||||
if !readInternalJSON(w, r, &in) {
|
||||
return
|
||||
}
|
||||
caps := in.Caps
|
||||
if caps.Agent && projSnapEnabled(ReadConfig()) {
|
||||
sendJSON(w, http.StatusConflict, map[string]any{"error": "PROJ_SNAPSHOT actif : le bloc projet figé reste tenu par le Go"})
|
||||
sendJSON(w, http.StatusOK, projSnapView(caps, in.Snap, in.Dry))
|
||||
return
|
||||
}
|
||||
head := []Message{}
|
||||
|
||||
Reference in new issue
Block a user