"""Tests for timmy.tools_delegation — delegate_task and list_swarm_agents. Agent IDs are now defined in config/agents.yaml, not hardcoded Python. Tests reference the YAML-defined IDs: orchestrator, researcher, coder, writer, memory, experimenter. """ from timmy.tools_delegation import delegate_task, list_swarm_agents class TestDelegateTask: def test_unknown_agent_returns_error(self): result = delegate_task("nonexistent", "do something") assert result["success"] is False assert "Unknown agent" in result["error"] assert result["task_id"] is None def test_valid_agent_names_normalised(self): # Agent IDs are lowercased; whitespace should be stripped result = delegate_task(" Researcher ", "think about it") assert "Unknown agent" not in result.get("error", "") def test_invalid_priority_defaults_to_normal(self): # Even with bad priority, delegate_task should not crash result = delegate_task("coder", "build", priority="ultra") assert isinstance(result, dict) def test_all_valid_agents_accepted(self): # These IDs match config/agents.yaml valid_agents = ["orchestrator", "researcher", "coder", "writer", "memory", "experimenter"] for agent in valid_agents: result = delegate_task(agent, "test task") assert "Unknown agent" not in result.get("error", ""), f"{agent} rejected" def test_old_agent_names_no_longer_valid(self): # Old hardcoded names should not work anymore for old_name in ["seer", "forge", "echo", "helm", "quill", "mace"]: result = delegate_task(old_name, "test") assert result["success"] is False assert "Unknown agent" in result["error"] class TestListSwarmAgents: def test_returns_agents_from_yaml(self): result = list_swarm_agents() assert result["success"] is True assert len(result["agents"]) > 0 agent_names = [a["name"] for a in result["agents"]] # These names come from config/agents.yaml assert "Seer" in agent_names assert "Forge" in agent_names assert "Timmy" in agent_names