mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 15:38:12 +02:00
Résultats d'outils : aperçu + « voir plus », vrai compteur, MCP complet
Le flux n'envoie plus tout le résultat d'un outil : un aperçu de 1600 caractères, sa taille RÉELLE et l'id de l'appel. Le bouton « voir plus » charge le reste à la demande (/api/chat/tool-result), et déplie vraiment le bloc (plafond de 280 px levé) au lieu de le laisser scroller. « voir plus » et « copier » vivent dans la même barre, ancrée en bas à droite d'un bloc-parent non scrollant : elle reste au coin quand on scrolle le résultat. Le compteur « ~N tok » de la bulle disait la taille de ce que l'UI avait reçu, donc toujours le plafond sur un long résultat. Il lit maintenant result_chars, la taille réelle. MCP : plus de troncature à 12000 caractères avant le modèle (même règle que la lecture mémoire). Un serveur MCP est configuré exprès pour ce qu'il rend ; le couper au milieu rendait la réponse inutilisable. L'UI, elle, n'en affiche que l'aperçu. Reprises d'AJEAN 0.15.1, 0.15.2 et 0.15.4. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K6CAgoLJzufeA8rZTSpSpY
This commit is contained in:
9 files changed
+250
-31
No files matched your search
@@ -202,6 +202,35 @@ func handleChatState(w http.ResponseWriter, r *http.Request) {
|
||||
sendJSON(w, 200, conv.state())
|
||||
}
|
||||
|
||||
// handleToolResult renvoie le résultat COMPLET d'un appel d'outil, chargé à la
|
||||
// demande par le bouton « voir plus » de la bulle (le flux ne transporte qu'un
|
||||
// aperçu). Le résultat complet vit dans la vue « modèle » (conv.Messages), repéré
|
||||
// par son tool_call_id. Absent (compacté, archivé, discussion changée) → 404, et
|
||||
// l'UI garde son aperçu plutôt que d'afficher une erreur.
|
||||
func handleToolResult(w http.ResponseWriter, r *http.Request) {
|
||||
id := strings.TrimSpace(r.URL.Query().Get("id"))
|
||||
if id == "" {
|
||||
sendJSON(w, 400, map[string]any{"error": "id manquant"})
|
||||
return
|
||||
}
|
||||
conv.mu.Lock()
|
||||
found, ok := "", false
|
||||
for _, m := range conv.Messages {
|
||||
if m.Role == "tool" && m.ToolCallID == id {
|
||||
if s, isStr := m.Content.(string); isStr {
|
||||
found, ok = s, true
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
conv.mu.Unlock()
|
||||
if !ok {
|
||||
sendJSON(w, 404, map[string]any{"error": "résultat non disponible"})
|
||||
return
|
||||
}
|
||||
sendJSON(w, 200, map[string]any{"result": found})
|
||||
}
|
||||
|
||||
func handleChat(w http.ResponseWriter, r *http.Request) {
|
||||
var body chatReq
|
||||
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
||||
|
||||
Reference in new issue
Block a user