feat: Mission Control v2 — swarm, L402, voice, marketplace, React dashboard

Major expansion of the Timmy Time Dashboard:

Backend modules:
- Swarm subsystem: registry, manager, bidder, coordinator, agent_runner, swarm_node, tasks, comms
- L402/Lightning: payment_handler, l402_proxy with HMAC macaroons
- Voice NLU: regex-based intent detection (chat, status, swarm, task, help, voice)
- Notifications: push notifier for swarm events
- Shortcuts: Siri Shortcuts iOS integration endpoints
- WebSocket: live dashboard event manager
- Inter-agent: agent-to-agent messaging layer

Dashboard routes:
- /swarm/* — swarm management and agent registry
- /marketplace — agent catalog with sat pricing
- /voice/* — voice command processing
- /mobile — mobile status endpoint
- /swarm/live — WebSocket live feed

React web dashboard (dashboard-web/):
- Sovereign Terminal design — dark theme with Bitcoin orange accents
- Three-column layout: status sidebar, workspace tabs, context panel
- Chat, Swarm, Tasks, Marketplace tab views
- JetBrains Mono typography, terminal aesthetic
- Framer Motion animations throughout

Tests: 228 passing (expanded from 93)
Includes Kimi's additional templates and QA work.
This commit is contained in:
Alexspayne
2026-02-21 12:57:38 -05:00
parent 77f33b82aa
commit f9b84c1e2f
64 changed files with 6576 additions and 1 deletions

View File

@@ -0,0 +1,73 @@
{% extends "base.html" %}
{% block title %}{{ page_title }}{% endblock %}
{% block content %}
<div class="card" style="max-width: 600px; margin: 0 auto;">
<div class="card-header">
<h2 class="card-title"> Create New Task</h2>
<p style="color: var(--text-secondary);">Agents will bid to complete this task</p>
</div>
<form hx-post="/agents/swarm/task/create" hx-target="#task-result" hx-swap="innerHTML">
<div class="form-group">
<label class="form-label">Task Title *</label>
<input type="text" name="title" placeholder="e.g., Research latest Bitcoin developments" required>
</div>
<div class="form-group">
<label class="form-label">Description</label>
<textarea name="description" rows="3" placeholder="Detailed description of what needs to be done..."></textarea>
</div>
<div class="form-group">
<label class="form-label">Required Capabilities (comma-separated)</label>
<input type="text" name="requirements" placeholder="web_search, research, writing">
<small style="color: var(--text-muted);">Agents with these capabilities will be eligible to bid</small>
</div>
<div class="grid grid-3">
<div class="form-group">
<label class="form-label">Min Bid (sats)</label>
<input type="number" name="min_bid" value="1" min="1">
</div>
<div class="form-group">
<label class="form-label">Max Bid (sats)</label>
<input type="number" name="max_bid" value="1000" min="1">
</div>
<div class="form-group">
<label class="form-label">Priority (1-5)</label>
<select name="priority">
<option value="1">1 - Low</option>
<option value="2">2</option>
<option value="3" selected>3 - Normal</option>
<option value="4">4</option>
<option value="5">5 - Urgent</option>
</select>
</div>
</div>
<div style="display: flex; gap: 12px; margin-top: 20px;">
<a href="/agents/timmy/chat" class="btn btn-secondary" style="flex: 1;">Cancel</a>
<button type="submit" class="btn btn-primary" style="flex: 2;">
Create Task & Start Auction
</button>
</div>
</form>
<div id="task-result" style="margin-top: 20px;"></div>
</div>
<div class="card" style="max-width: 600px; margin: 20px auto 0;">
<div class="card-header">
<h2 class="card-title">How Auctions Work</h2>
</div>
<ol style="color: var(--text-secondary); line-height: 2; padding-left: 20px;">
<li>You create a task with requirements</li>
<li>A 15-second auction begins automatically</li>
<li>Eligible agents place bids in satoshis</li>
<li>The lowest bid wins the task</li>
<li>The winning agent completes the task and earns the sats</li>
</ol>
</div>
{% endblock %}