forked from Rockachopa/Timmy-time-dashboard
- Replace dead `from swarm` imports in tools_delegation and tools_intro with working implementations sourced from _PERSONAS - Add `memory_write` tool so the agent can actually persist memories when users ask it to remember something - Enhance `memory_search` to search both vault files AND the runtime vector store for cross-channel recall (Discord/web/Telegram) - Add memory management config: memory_prune_days, memory_prune_keep_facts, memory_vault_max_mb - Auto-prune old vector store entries and warn on vault size at startup - Update tests for new delegation agent list (mace removed) Co-authored-by: Trip T <trip@local> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
46 lines
1.8 KiB
Python
46 lines
1.8 KiB
Python
"""Tests for timmy.tools_delegation — delegate_task and list_swarm_agents."""
|
|
|
|
from unittest.mock import patch
|
|
|
|
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):
|
|
# Should still fail at import (no swarm module), but agent name is accepted
|
|
result = delegate_task(" Seer ", "think about it")
|
|
# The swarm import will fail, so success=False but error is about import, not agent name
|
|
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("forge", "build", priority="ultra")
|
|
assert isinstance(result, dict)
|
|
|
|
def test_all_valid_agents_accepted(self):
|
|
valid_agents = ["seer", "forge", "echo", "helm", "quill"]
|
|
for agent in valid_agents:
|
|
result = delegate_task(agent, "test task")
|
|
assert "Unknown agent" not in result.get("error", ""), f"{agent} rejected"
|
|
|
|
def test_mace_no_longer_valid(self):
|
|
result = delegate_task("mace", "run security scan")
|
|
assert result["success"] is False
|
|
assert "Unknown agent" in result["error"]
|
|
|
|
|
|
class TestListSwarmAgents:
|
|
def test_returns_agents_from_personas(self):
|
|
result = list_swarm_agents()
|
|
assert result["success"] is True
|
|
assert len(result["agents"]) > 0
|
|
agent_names = [a["name"] for a in result["agents"]]
|
|
assert "Seer" in agent_names
|
|
assert "Forge" in agent_names
|