1
0

feat: auto-escalation system + agentic loop fixes (#149) (#149)

Wire up automatic error-to-task escalation and fix the agentic loop
stopping after the first tool call.

Auto-escalation:
- Add swarm.task_queue.models with create_task() bridge to existing
  task queue SQLite DB
- Add swarm.event_log with EventType enum, log_event(), and SQLite
  persistence + WebSocket broadcast
- Wire capture_error() into request logging middleware so unhandled
  HTTP exceptions auto-create [BUG] tasks with stack traces, git
  context, and push notifications (5-min dedup window)

Agentic loop (Round 11 Bug #1):
- Wrap agent_chat() in asyncio.to_thread() to stop blocking the
  event loop (fixes Discord heartbeat warnings)
- Enable Agno's native multi-turn tool chaining via show_tool_calls
  and tool_call_limit on the Agent config
- Strengthen multi-step continuation prompts with explicit examples

Co-authored-by: Trip T <trip@local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alexander Whitestone
2026-03-08 03:11:14 -04:00
committed by GitHub
parent 7792ae745f
commit fd0ede0d51
9 changed files with 323 additions and 12 deletions

View File

@@ -253,8 +253,8 @@ def test_create_timmy_includes_tools_for_large_model():
assert kwargs["tools"] == [mock_toolkit]
def test_create_timmy_no_show_tool_calls():
"""show_tool_calls must NOT be passed — Agno 2.5.3 doesn't support it."""
def test_create_timmy_show_tool_calls_matches_tool_capability():
"""show_tool_calls should be True when tools are enabled, False otherwise."""
with patch("timmy.agent.Agent") as MockAgent, \
patch("timmy.agent.Ollama"), \
patch("timmy.agent.SqliteDb"):
@@ -263,4 +263,5 @@ def test_create_timmy_no_show_tool_calls():
create_timmy()
kwargs = MockAgent.call_args.kwargs
assert "show_tool_calls" not in kwargs
# show_tool_calls is set based on whether tools are enabled
assert "show_tool_calls" in kwargs