forked from Rockachopa/Timmy-time-dashboard
Task Queue system: - New /tasks page with three-column layout (Pending/Active/Completed) - Full CRUD API at /api/tasks with approve/veto/modify/pause/cancel/retry - SQLite persistence in task_queue table - WebSocket live updates via ws_manager - Create task modal with agent assignment and priority - Auto-approve rules for low-risk tasks - HTMX polling for real-time column updates - HOME TASK buttons now link to task queue with agent pre-selected - MARKET HIRE buttons link to task queue with agent pre-selected Work Order system: - External submission API for agents/users (POST /work-orders/submit) - Risk scoring and configurable auto-execution thresholds - Dashboard at /work-orders/queue with approve/reject/execute flow - Integration with swarm task system for execution UI & Dashboard bug fixes: - EVENTS: add startup event so page is never empty - LEDGER: fix empty filter params in URL - MISSION CONTROL: LLM backend and model now read from /health - MISSION CONTROL: agent count fallback to /swarm/agents - SWARM: HTMX fallback loads initial data if WebSocket is slow - MEMORY: add edit/delete buttons for personal facts - UPGRADES: add empty state guidance with links - BRIEFING: add regenerate button and POST /briefing/regenerate endpoint Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
1.6 KiB
HTML
49 lines
1.6 KiB
HTML
<div class="card-header mc-panel-header">// SWARM AGENTS</div>
|
|
<div class="card-body p-2 d-flex flex-column gap-2">
|
|
|
|
{% if not agents %}
|
|
<div style="font-size:11px; color:var(--text-dim); padding:8px 4px; letter-spacing:.08em;">
|
|
NO AGENTS REGISTERED
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% for agent in agents %}
|
|
{% set dot = "green" if agent.status == "idle" else ("amber" if agent.status == "busy" else "red") %}
|
|
<div class="mc-agent-card">
|
|
|
|
<div class="d-flex align-items-center gap-2 mb-1">
|
|
<span class="status-dot {{ dot }}"></span>
|
|
<span class="agent-name" style="font-size:13px;">{{ agent.name | upper | e }}</span>
|
|
</div>
|
|
|
|
<div class="agent-meta" style="margin-bottom:8px;">
|
|
<span class="meta-key">STATUS</span>
|
|
<span class="meta-val">{{ agent.status }}</span><br>
|
|
{% if agent.capabilities %}
|
|
<span class="meta-key">CAPS</span>
|
|
<span class="meta-val" style="font-size:10px;">{{ agent.capabilities | e }}</span><br>
|
|
{% endif %}
|
|
<span class="meta-key">SEEN</span>
|
|
<span class="meta-val" style="font-size:10px;">{{ agent.last_seen[:19].replace("T"," ") if agent.last_seen else "—" }}</span>
|
|
</div>
|
|
|
|
<div class="d-flex gap-1">
|
|
<button class="mc-btn-clear flex-fill"
|
|
style="font-size:9px; padding:4px 6px;"
|
|
hx-get="/swarm/agents/{{ agent.id }}/panel"
|
|
hx-target="#main-panel"
|
|
hx-swap="outerHTML">
|
|
CHAT
|
|
</button>
|
|
<a class="mc-btn-clear flex-fill"
|
|
style="font-size:9px; padding:4px 6px; text-decoration:none; text-align:center;"
|
|
href="/tasks?assign={{ agent.name | urlencode }}">
|
|
TASK
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
{% endfor %}
|
|
|
|
</div>
|