Artifex/templates/projects/agent_control_room.html

54 lines
2 KiB
HTML
Raw Normal View History

2026-08-15 20:03:59 +07:00
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Agent Control Room</title>
<style>
body { font-family: system-ui, sans-serif; margin: 2rem; color: #172033; background: #f7f4ed; }
header { display: flex; justify-content: space-between; align-items: center; }
.card { background: white; border: 1px solid #ddd4c6; border-radius: 12px; padding: 1rem; margin: 1rem 0; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; }
.status { font-size: .8rem; letter-spacing: .08em; color: #6f4e37; text-transform: uppercase; }
code { background: #f0ece4; padding: .15rem .3rem; border-radius: 4px; }
</style>
</head>
<body>
<header>
<div>
<h1>Agent Control Room</h1>
<p>Inspectable workforce inventory, champion health, challengers, and teams.</p>
</div>
<a href="/">Dashboard</a>
</header>
<section>
<h2>Agents</h2>
<div class="grid">
{% for agent in agents %}
<article class="card">
<div class="status">{{ agent.role }} / {{ agent.scope }} / {{ agent.health.status }}</div>
<h3>{{ agent.name }}</h3>
<p>{{ agent.purpose|default:agent.id }}</p>
<p>Champion: <code>{{ agent.champion_version|default:"none" }}</code></p>
<p>{{ agent.health.reasons|join:", " }}</p>
</article>
{% empty %}
<article class="card">No agents registered.</article>
{% endfor %}
</div>
</section>
<section>
<h2>Teams</h2>
{% for team in teams %}
<article class="card">
<div class="status">{{ team.scope }} / {{ team.status }}</div>
<h3>{{ team.name }}</h3>
<p>{{ team.purpose }}</p>
<p>{{ team.members|length }} members</p>
</article>
{% empty %}
<article class="card">No teams yet.</article>
{% endfor %}
</section>
</body>
</html>