This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Timmy-time-dashboard/tests/timmy/test_delegation.py
Alexander Whitestone a975a845c5 feat: Timmy system introspection, delegation, and session logging (#74)
* test: remove hardcoded sleeps, add pytest-timeout

- Replace fixed time.sleep() calls with intelligent polling or WebDriverWait
- Add pytest-timeout dependency and --timeout=30 to prevent hangs
- Fixes test flakiness and improves test suite speed

* feat: add Aider AI tool to Forge's toolkit

- Add Aider tool that calls local Ollama (qwen2.5:14b) for AI coding assist
- Register tool in Forge's code toolkit
- Add functional tests for the Aider tool

* config: add opencode.json with local Ollama provider for sovereign AI

* feat: Timmy fixes and improvements

## Bug Fixes
- Fix read_file path resolution: add ~ expansion, proper relative path handling
- Add repo_root to config.py with auto-detection from .git location
- Fix hardcoded llama3.2 - now dynamic from settings.ollama_model

## Timmy's Requests
- Add communication protocol to AGENTS.md (read context first, explain changes)
- Create DECISIONS.md for architectural decision documentation
- Add reasoning guidance to system prompts (step-by-step, state uncertainty)
- Update tests to reflect correct model name (llama3.1:8b-instruct)

## Testing
- All 177 dashboard tests pass
- All 32 prompt/tool tests pass

* feat: Timmy system introspection, delegation, and session logging

## System Introspection (Sovereign Self-Knowledge)
- Add get_system_info() tool - Timmy can now query his runtime environment
- Add check_ollama_health() - verify Ollama status
- Add get_memory_status() - check memory tier status
- True introspection vs hardcoded prompts

## Path Resolution Fix
- Fix all toolkits to use settings.repo_root consistently
- Now uses Path(settings.repo_root) instead of Path.cwd()

## Inter-Agent Delegation
- Add delegate_task() tool - Timmy can dispatch to Seer, Forge, Echo, etc.
- Add list_swarm_agents() - query available agents

## Session Logging
- Add SessionLogger for comprehensive interaction logging
- Records messages, tool calls, errors, decisions
- Writes to /logs/session_{date}.jsonl

## Tests
- Add tests for introspection tools
- Add tests for delegation tools
- Add tests for session logging
- Add tests for path resolution
- All 18 new tests pass
- All 177 dashboard tests pass

---------

Co-authored-by: Alexander Payne <apayne@MM.local>
2026-02-27 00:11:53 -05:00

67 lines
2.1 KiB
Python

"""Tests for inter-agent delegation tools."""
import pytest
from unittest.mock import patch, MagicMock
def test_delegate_task_valid_agent():
"""Should be able to delegate to a valid agent."""
from timmy.tools_delegation import delegate_task
with patch("swarm.coordinator.coordinator") as mock_coordinator:
mock_task = MagicMock()
mock_task.task_id = "task_123"
mock_coordinator.post_task.return_value = mock_task
result = delegate_task("seer", "analyze this data")
assert result["success"] is True
assert result["task_id"] == "task_123"
assert result["agent"] == "seer"
def test_delegate_task_invalid_agent():
"""Should return error for invalid agent."""
from timmy.tools_delegation import delegate_task
result = delegate_task("nonexistent", "do something")
assert result["success"] is False
assert "error" in result
assert "Unknown agent" in result["error"]
def test_delegate_task_priority():
"""Should respect priority parameter."""
from timmy.tools_delegation import delegate_task
with patch("swarm.coordinator.coordinator") as mock_coordinator:
mock_task = MagicMock()
mock_task.task_id = "task_456"
mock_coordinator.post_task.return_value = mock_task
result = delegate_task("forge", "write code", priority="high")
assert result["success"] is True
mock_coordinator.post_task.assert_called_once()
call_kwargs = mock_coordinator.post_task.call_args.kwargs
assert call_kwargs.get("priority") == "high"
def test_list_swarm_agents():
"""Should list available swarm agents."""
from timmy.tools_delegation import list_swarm_agents
with patch("swarm.coordinator.coordinator") as mock_coordinator:
mock_agent = MagicMock()
mock_agent.name = "seer"
mock_agent.status = "idle"
mock_agent.capabilities = ["analysis"]
mock_coordinator.list_swarm_agents.return_value = [mock_agent]
result = list_swarm_agents()
assert result["success"] is True
assert len(result["agents"]) == 1
assert result["agents"][0]["name"] == "seer"