Fixing return to localAgi

This commit is contained in:
2025-06-14 16:57:23 +02:00
parent 6c6f6fe35a
commit 370b64b4e2

View File

@@ -3,6 +3,7 @@ package agent
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"strings"
"github.com/mark3labs/mcp-go/client" "github.com/mark3labs/mcp-go/client"
"github.com/mark3labs/mcp-go/client/transport" "github.com/mark3labs/mcp-go/client/transport"
@@ -64,19 +65,37 @@ func (m *mcpAction) Run(ctx context.Context, sharedState *types.AgentSharedState
// Traiter le résultat // Traiter le résultat
textResult := "" textResult := ""
if result.IsError {
return types.ActionResult{}, err
}
// Extraire le texte du résultat selon le format de mark3labs/mcp-go // Extraire le texte du résultat selon le format de mark3labs/mcp-go
for _, content := range result.Content { for _, content := range result.Content {
if textContent, ok := content.(*mcp.TextContent); ok { if textContent, ok := mcp.AsTextContent(content); ok {
textResult += textContent.Text + "\n" textResult += textContent.Text + "\n"
} else { } else {
xlog.Error("Unsupported content type", "type", content) xlog.Error("Unsupported content type", "type", content)
} }
} }
// Si c'est une erreur, retourner le contenu de l'erreur comme résultat
// plutôt que de faire échouer complètement l'action
if result.IsError {
xlog.Error("MCP tool returned error", "tool", m.toolName, "error", textResult)
// Fournir des suggestions spécifiques selon le type d'erreur
errorMessage := textResult
if strings.Contains(strings.ToLower(textResult), "not found") {
if m.toolName == "web-search-web_url_read" {
errorMessage = "L'URL spécifiée n'a pas pu être trouvée. Essayez plutôt d'utiliser l'outil de recherche web 'web-search-searxng_web_search' pour chercher des informations sur ce sujet."
} else {
errorMessage = "Ressource non trouvée: " + textResult
}
}
// Retourner le message d'erreur comme résultat pour que l'agent puisse réagir
return types.ActionResult{
Result: "Erreur: " + errorMessage,
}, nil
}
return types.ActionResult{ return types.ActionResult{
Result: textResult, Result: textResult,
}, nil }, nil