import pytest from src import ai_client from src import mcp_client def test_set_agent_tools_clears_caches(): ai_client._CACHED_ANTHROPIC_TOOLS = [{"dummy": "data"}] ai_client._CACHED_DEEPSEEK_TOOLS = [{"dummy": "data"}] ai_client.set_agent_tools({"read_file": True}) assert ai_client._CACHED_ANTHROPIC_TOOLS is None assert ai_client._CACHED_DEEPSEEK_TOOLS is None def test_gemini_tool_declaration_excludes_disabled(): # Test explicit disable ai_client.set_agent_tools({"read_file": False}) tool = ai_client._gemini_tool_declaration() names = [f.name for f in tool.function_declarations] if tool else [] assert "read_file" not in names # Test enable only one all_tools = {name: False for name in mcp_client.TOOL_NAMES} all_tools[ai_client.TOOL_NAME] = False all_tools["read_file"] = True ai_client.set_agent_tools(all_tools) tool = ai_client._gemini_tool_declaration() names = [f.name for f in tool.function_declarations] if tool else [] assert "read_file" in names assert "write_file" not in names assert ai_client.TOOL_NAME not in names def test_build_anthropic_tools_excludes_disabled(): # Test explicit disable ai_client.set_agent_tools({"read_file": False}) tools = ai_client._build_anthropic_tools() names = [t["name"] for t in tools] assert "read_file" not in names # Test enable only one all_tools = {name: False for name in mcp_client.TOOL_NAMES} all_tools[ai_client.TOOL_NAME] = False all_tools["read_file"] = True ai_client.set_agent_tools(all_tools) tools = ai_client._build_anthropic_tools() names = [t["name"] for t in tools] assert "read_file" in names assert "write_file" not in names assert ai_client.TOOL_NAME not in names def test_build_deepseek_tools_excludes_disabled(): # Test explicit disable ai_client.set_agent_tools({"read_file": False}) tools = ai_client._build_deepseek_tools() names = [t["function"]["name"] for t in tools] assert "read_file" not in names # Test enable only one all_tools = {name: False for name in mcp_client.TOOL_NAMES} all_tools[ai_client.TOOL_NAME] = False all_tools["read_file"] = True ai_client.set_agent_tools(all_tools) tools = ai_client._build_deepseek_tools() names = [t["function"]["name"] for t in tools] assert "read_file" in names assert "write_file" not in names assert ai_client.TOOL_NAME not in names