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 (
"context"
"encoding/json"
"strings"
"github.com/mark3labs/mcp-go/client"
"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
textResult := ""
if result.IsError {
return types.ActionResult{}, err
}
// Extraire le texte du résultat selon le format de mark3labs/mcp-go
for _, content := range result.Content {
if textContent, ok := content.(*mcp.TextContent); ok {
if textContent, ok := mcp.AsTextContent(content); ok {
textResult += textContent.Text + "\n"
} else {
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{
Result: textResult,
}, nil