mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-16 11:49:43 +02:00
/internal/v1/tool/exec rend aussi ce que la boucle Go tire du résultat après l'exécution, et qui demande le disque ou le navigateur (toolStepExtras) : capture de web_screenshot pour la bulle, aperçu du navigateur après une action qui change la page (jamais après une erreur), message qui relaie l'image au modèle (capture avec la vision, see_image). /internal/v1/recall/archive range un bloc verbatim pour l'outil recall : son numéro vient de la séquence bbolt, seul ce process peut le donner. 423 si la mémoire est verrouillée, rien d'écrit en clair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
30 lines
945 B
Go
30 lines
945 B
Go
package loki
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Un bloc archivé par la façade se relit par l'outil recall, comme s'il avait
|
|
// été archivé par la compaction du Go.
|
|
func TestRecallInterneArchive(t *testing.T) {
|
|
testHome(t)
|
|
t.Setenv(internalTokenEnv, jetonTest)
|
|
w := appelOAIInterne(t, "POST", "/internal/v1/recall/archive", `{"label":"bash ls","role":"tool","content":"a.go\nb.go"}`)
|
|
if w.Code != 200 {
|
|
t.Fatalf("archive : %d %s", w.Code, w.Body.String())
|
|
}
|
|
id, _ := leaseJSON(t, w.Body.String())["id"].(string)
|
|
if !strings.HasPrefix(id, "r") {
|
|
t.Fatalf("id : %q", id)
|
|
}
|
|
if got := toolRecall(map[string]any{"id": id}); !strings.Contains(got, "a.go\nb.go") || !strings.Contains(got, "bash ls") {
|
|
t.Fatalf("recall : %q", got)
|
|
}
|
|
for _, body := range []string{"", "{", `{"label":"x"}`} {
|
|
if w := appelOAIInterne(t, "POST", "/internal/v1/recall/archive", body); w.Code != 400 {
|
|
t.Fatalf("%q : %d", body, w.Code)
|
|
}
|
|
}
|
|
}
|