Logs live at swarm level now (VictoriaLogs, read through Grafana
Explore). The hive dashboard's own journal viewer goes, with
everything that existed only to serve it:
- frontend: /logs.html, logs.js, logs.css, the H0M3 "Logs" tile and
the per-agent menu's "journal logs ->" link. The build-log list
rules BU1LDS used from logs.css move into builds.css.
- hive-c0re: GET /api/journal/{name} and GET /api/journal-host, and
priv_client::read_container_journal.
- hive-priv / hive-priv-sock: the ReadContainerJournal request, its
JournalQuery/JournalOutput wire types and the journalctl -M executor.
- nix: hive-c0re's systemd-journal supplementary group, whose only
reader was the journal-host handler.
- docs: the L0GS section, the API entry and the security table row.
Closes #5113
Closes #3819
63 lines
2.8 KiB
HTML
63 lines
2.8 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>hyperhive // ST4TS</title>
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<link rel="stylesheet" href="/static/colors.css" />
|
|
<link rel="stylesheet" href="/static/theme.css" />
|
|
<link rel="stylesheet" href="/static/common.css" />
|
|
<link rel="stylesheet" href="/static/stats.css" />
|
|
</head>
|
|
<body class="stats-shell">
|
|
<!-- Minimal chrome: back link + title. Same pattern as flow.html —
|
|
no full dashboard tabbar. Back link points to the
|
|
H0M3 hub (served at /), not the dashboard. -->
|
|
<header class="page-header">
|
|
<a class="page-back" href="/">← home</a>
|
|
<span class="page-title">ST4TS</span>
|
|
<!-- Window selector lives in the header so it behaves like a tab strip
|
|
(matches the sub-tab strips on /core.html). Hash-routed via createTabStrip. -->
|
|
<nav class="hive-stats-windows" id="hive-stats-windows" role="tablist">
|
|
<button type="button" class="btn" data-tab="1h">1h</button>
|
|
<button type="button" class="btn" data-tab="4h">4h</button>
|
|
<button type="button" class="btn" data-tab="24h">24h</button>
|
|
<button type="button" class="btn" data-tab="3d">3d</button>
|
|
<button type="button" class="btn" data-tab="7d">7d</button>
|
|
<button type="button" class="btn" data-tab="30d">30d</button>
|
|
<button type="button" class="btn" data-tab="all">all</button>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="stats-main">
|
|
<p class="meta">
|
|
hive-wide turn statistics, aggregated across every agent over the
|
|
selected window. <strong>cost is a rough estimate</strong> from
|
|
approximate per-model list prices — it drifts and is a ballpark, not a
|
|
bill.
|
|
</p>
|
|
|
|
<div class="hive-stats-chips" id="hive-stats-summary"></div>
|
|
<h3>◇ busiest agents</h3>
|
|
<div id="hive-stats-agents"><p class="meta">loading…</p></div>
|
|
<h3>◇ model mix (turns across the swarm)</h3>
|
|
<div id="hive-stats-models"></div>
|
|
<!-- "favorite tools": most-run bash commands across the swarm.
|
|
Header + list hidden until the hive-bash-daemon capture has
|
|
recorded data, so the section never shows an empty block. -->
|
|
<h3 id="hive-stats-bash-h" hidden>
|
|
◇ favorite tools (bash commands across the swarm)
|
|
</h3>
|
|
<div id="hive-stats-bash" hidden></div>
|
|
<!-- most-triggered skills across the swarm. Header + list hidden until
|
|
at least one agent has actually invoked a skill. -->
|
|
<h3 id="hive-stats-skills-h" hidden>
|
|
◇ skill mix (invocations across the swarm)
|
|
</h3>
|
|
<div id="hive-stats-skills" hidden></div>
|
|
</main>
|
|
|
|
<script type="module" src="/static/stats.js" defer></script>
|
|
</body>
|
|
</html>
|