mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Repris d'AJEAN 0.17.4. - Compactage : la dernière demande du torse n'est plus réinjectée quand la queue contient déjà un message utilisateur (le modèle répondait une seconde fois à une vieille question), ni quand le résumé a échoué (elle est déjà dans le torse dégraissé et réapparaissait après ses propres résultats d'outils). - Le texte écrit avant un appel d'outil n'est plus rangé deux fois dans l'historique du modèle (message tool_calls ET réponse finale) : du contexte gaspillé à chaque tour d'outil. - Deux appareils qui envoient en même temps : le second message part en file au lieu d'un 409. Une tâche planifiée garde le refus. - Un raisonnement qui reprend après du texte de réponse ouvre une nouvelle bulle sous la réponse au lieu de remplir l'ancienne, repliée au-dessus. - Bascule de preset par identifiant : le numéro seul visait un autre preset quand la liste avait bougé sur un autre appareil. Le numéro reste accepté. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
package loki
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// La bascule vise le preset par son id, pas par sa position : une liste
|
|
// réordonnée sur un autre appareil faisait charger un AUTRE preset. Presets
|
|
// externes ici : la bascule n'a alors aucun moteur local à redémarrer.
|
|
func TestBasculeParIdentifiant(t *testing.T) {
|
|
testHome(t)
|
|
if _, err := SavePreset("", "Alpha", externalPresetContent("https://a.example/v1", "modele-a", "", "", false)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
idB, err := SavePreset("", "Beta", externalPresetContent("https://b.example/v1", "modele-b", "", "", false))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
post := func(body string) int {
|
|
w := httptest.NewRecorder()
|
|
handleSwitch(w, httptest.NewRequest("POST", "/api/switch", strings.NewReader(body)))
|
|
return w.Code
|
|
}
|
|
if code := post(`{"id":"` + idB + `","n":1}`); code != 200 {
|
|
t.Fatalf("bascule par id : code %d", code)
|
|
}
|
|
if got := ReadConfig()[extKeyModel]; got != "modele-b" {
|
|
t.Fatalf("preset chargé = %q, attendu celui de l'id (modele-b) et non la position 1", got)
|
|
}
|
|
if code := post(`{"id":"inexistant"}`); code != 404 {
|
|
t.Fatalf("id inconnu : code %d, attendu 404", code)
|
|
}
|
|
}
|