Files
Loki/internal/loki/web_internal_recall_test.go
T
Claude e114ba3800 API interne : suites d'un outil et archive recall pour le tour tenu par Rust
/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
2026-10-15 10:34:14 +00:00

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)
}
}
}