From 5cb1b8e3d2ddcf9bfeedd0d820bbdf85e3631702 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 05:05:22 +0000 Subject: [PATCH 1/2] fix(typing): resolve mypy errors in agent.gns3_copilot.utils.message_converters --- gns3server/agent/gns3_copilot/utils/message_converters.py | 5 +++-- pyproject.toml | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gns3server/agent/gns3_copilot/utils/message_converters.py b/gns3server/agent/gns3_copilot/utils/message_converters.py index 8bf18f668..367b2d956 100644 --- a/gns3server/agent/gns3_copilot/utils/message_converters.py +++ b/gns3server/agent/gns3_copilot/utils/message_converters.py @@ -37,6 +37,7 @@ from typing import Dict from langchain_core.messages import AIMessage from langchain_core.messages import HumanMessage from langchain_core.messages import SystemMessage +from langchain_core.messages import ToolCall from langchain_core.messages import ToolMessage @@ -86,7 +87,7 @@ def convert_langchain_to_openai(lc_message) -> Dict[str, Any]: tool_calls = [] for tc in lc_message.tool_calls: # Convert to dict if it's an object - tc_dict = tc if isinstance(tc, dict) else tc.model_dump() + tc_dict = tc tool_calls.append( { "id": tc_dict.get("id", str(uuid.uuid4())), @@ -139,7 +140,7 @@ def convert_openai_to_langchain(msg: Dict[str, Any]): # Restore tool calls if present if "tool_calls" in msg and msg["tool_calls"]: - tool_calls = [] + tool_calls: list[ToolCall] = [] for tc in msg["tool_calls"]: tool_calls.append( { diff --git a/pyproject.toml b/pyproject.toml index 258447eb6..25a160936 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -312,7 +312,6 @@ module = [ "gns3server.agent.gns3_copilot.tools_v2.packet_analysis_tool", # 1 "gns3server.agent.gns3_copilot.tools_v2.vpcs_tools_netmiko", # 9 "gns3server.agent.gns3_copilot.utils.custom_netmiko.scripts.list_netmiko_telnet_devices", # 1 - "gns3server.agent.gns3_copilot.utils.message_converters", # 2 "gns3server.agent.gns3_copilot.utils.parse_tool_content", # 1 "gns3server.agent.mcp.appliances", # 1 "gns3server.agent.web_wireshark.docker_client", # 5 From 4ae6b5338d8988d1dacdf2e25fe1ca6ba9fc7b55 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 05:01:01 +0000 Subject: [PATCH 2/2] fix(typing): resolve mypy errors in agent.gns3_copilot.utils.parse_tool_content --- gns3server/agent/gns3_copilot/utils/parse_tool_content.py | 4 +--- pyproject.toml | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/gns3server/agent/gns3_copilot/utils/parse_tool_content.py b/gns3server/agent/gns3_copilot/utils/parse_tool_content.py index 4ea17912d..350a6bf50 100644 --- a/gns3server/agent/gns3_copilot/utils/parse_tool_content.py +++ b/gns3server/agent/gns3_copilot/utils/parse_tool_content.py @@ -214,9 +214,7 @@ def parse_tool_content( return content # Handle unsupported types - error_msg = ( # type: ignore[unreachable] - f"Content must be str, dict, list, int, float, bool, or None, got {type(content).__name__}" - ) + error_msg = f"Content must be str, dict, list, int, float, bool, or None, got {type(content).__name__}" logger.error(error_msg) if strict_mode: diff --git a/pyproject.toml b/pyproject.toml index 25a160936..3e96ccbdd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -312,7 +312,6 @@ module = [ "gns3server.agent.gns3_copilot.tools_v2.packet_analysis_tool", # 1 "gns3server.agent.gns3_copilot.tools_v2.vpcs_tools_netmiko", # 9 "gns3server.agent.gns3_copilot.utils.custom_netmiko.scripts.list_netmiko_telnet_devices", # 1 - "gns3server.agent.gns3_copilot.utils.parse_tool_content", # 1 "gns3server.agent.mcp.appliances", # 1 "gns3server.agent.web_wireshark.docker_client", # 5 "gns3server.agent.web_wireshark.manage_wireshark", # 1