diff --git a/gns3server/agent/gns3_copilot/agent/gns3_copilot.py b/gns3server/agent/gns3_copilot/agent/gns3_copilot.py index 91fce3b99..98a874c8a 100644 --- a/gns3server/agent/gns3_copilot/agent/gns3_copilot.py +++ b/gns3server/agent/gns3_copilot/agent/gns3_copilot.py @@ -45,6 +45,7 @@ Copilot Modes: """ # Standard library imports +import json import logging import operator from datetime import datetime @@ -384,6 +385,11 @@ def tool_node(state: dict, config: RunnableConfig | None = None): logger.error("Tool %s failed: %s", tool_name, e, exc_info=True) observation = f"Error: {str(e)}" + # Serialize observation to JSON string if it's not already a string + # This ensures ToolMessage.content is always JSON format, not Python str() + if not isinstance(observation, str): + observation = json.dumps(observation, ensure_ascii=False, indent=2) + # Create ToolMessage with metadata including created_at tool_msg = ToolMessage( content=observation,