1
0

fix: dashboard bugs and clean up build artifacts (#145)

* chore: stop tracking runtime-generated self-modify reports

These 65 files in data/self_modify_reports/ are auto-generated at
runtime and already listed in .gitignore. Tracking them caused
conflicts when pulling from main.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve 8 dashboard bugs from Round 4 testing report

- Fix Ollama timeout regression: request_timeout → timeout (agno API)
- Add Bootstrap JS to base.html (fixes creative UI tab switching)
- Send initial_state on Swarm Live WebSocket connect
- Add /api/queue/status endpoint (stops 404 log spam from chat panel)
- Populate agent tools from registry on /tools page
- Add notification bell dropdown with /api/notifications endpoint
- All 1157 tests pass

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

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-07 23:44:56 -05:00
committed by GitHub
parent e36a1dc939
commit 248af9ed03
73 changed files with 149 additions and 1940 deletions

View File

@@ -3,6 +3,8 @@
Shows available tools and usage statistics.
"""
from collections import namedtuple
from fastapi import APIRouter, Request
from fastapi.responses import HTMLResponse, JSONResponse
@@ -11,16 +13,32 @@ from dashboard.templating import templates
router = APIRouter(tags=["tools"])
_AgentView = namedtuple("AgentView", ["name", "status", "tools", "stats"])
_ToolView = namedtuple("ToolView", ["name", "description"])
_Stats = namedtuple("Stats", ["total_calls"])
def _build_agent_tools():
"""Build agent capability list from the available tools registry."""
available = get_all_available_tools()
if not available:
return []
tool_views = [
_ToolView(name=name, description=getattr(fn, "__doc__", "") or name)
for name, fn in available.items()
]
return [
_AgentView(name="Timmy", status="idle", tools=tool_views, stats=_Stats(total_calls=0))
]
@router.get("/tools", response_class=HTMLResponse)
async def tools_page(request: Request):
"""Render the tools dashboard page."""
available_tools = get_all_available_tools()
# Build agent tools list from the available tools
agent_tools = []
# Calculate total calls (placeholder — would come from brain memory)
agent_tools = _build_agent_tools()
total_calls = 0
return templates.TemplateResponse(