Hermes Dashboard Plugin
Hermes dashboard plugin that shells out to the public uh CLI: FastAPI router backend (plugin_api.py), dashboard-SDK React UI bundle (mission wizard, run views, Delivery Observatory, workflow editor), esbuild config, manifests and local launcher.
Depends on: none
Used by: CLI Entry, Build and Project Tooling (1)
(Numbers are distinct file-to-file dependencies.)
| File | Summary | Key symbols |
|---|---|---|
apps/hermes-plugin/__init__.py |
Hermes registration seam for the dashboard-only Ultimate Harness plugin; its register hook intentionally adds no tools or hooks because the dashboard talks only to the public uh CLI. | register |
apps/hermes-plugin/dashboard/manifest.json |
Hermes dashboard plugin manifest registering the uh Ultimate Harness tab after Sessions, a sessions:bottom slot, the built dist/index.js and dist/style.css bundle, and the plugin_api.py backend. |
|
apps/hermes-plugin/dashboard/plugin_api.py |
FastAPI router mounted at /api/plugins/uh that bridges the Hermes dashboard to the uh CLI and on-disk .harness/ artifacts: status, missions, runs, SSE event tails, run start/cancel, run comparison, workflows, verification, and mission creation, with safe-id validation, subprocess timeouts, retention pruning, and a uniform JSON error shape. | _load_max_runs_per_mission, _UhCliRunner, set_runner, get_runner, _read_yaml, _read_text, _schedule_run_eviction, _locate_run_events, … |
apps/hermes-plugin/dashboard/requirements-dev.txt |
Pinned test-only Python dependencies (fastapi, PyYAML, httpx, pytest, pytest-asyncio) for the isolated dashboard plugin backend test suite; runtime deps are supplied by the Hermes host. | |
apps/hermes-plugin/dashboard/src/adapterHealth.ts |
Pure helper mapping an adapter’s check result to a three-state health badge (OK, fail, unknown) so unverified adapters are no longer shown as healthy. | adapterHealthBadge |
apps/hermes-plugin/dashboard/src/App.tsx |
Root React component of the uh Hermes dashboard plugin that reads the hash route and dispatches to the Delivery Observatory, mission drilldown, wizard, and workflow viewer/editor views. | App |
apps/hermes-plugin/dashboard/src/cost-gauge.ts |
Pure per-run token and cost gauge that aggregates runtime.usage events and prices them using the cost_classes rate table from the adapter capabilities endpoint. | aggregateUsage, costClassForRuntime, estimateCostUsd, formatUsd, computeGauge |
apps/hermes-plugin/dashboard/src/DeliveryObservatory.tsx |
Delivery Observatory view rendering the safe-metadata observatory snapshot as filterable work items across Operate, Review, Observe, and Meeting perspectives, with fact-state stamps and source strips. | FilterRail, SourceStrip, WorkList, SelectedWork, OperateView, ReviewView, ObserveView, MeetingView, … |
apps/hermes-plugin/dashboard/src/errorPayload.ts |
Extracts the structured JSON error envelope from the SDK’s stringified error message by trying JSON.parse from each opening brace, supporting nested field maps. | extractTrailingJsonPayload |
apps/hermes-plugin/dashboard/src/index.tsx |
Bundle entry point that registers the plugin’s App component and the SessionsLink sessions:bottom slot with the Hermes plugin registry. | |
apps/hermes-plugin/dashboard/src/live-events-hooks.ts |
React hooks providing live SSE event tails: a run-scoped tail for RunModal and a mission-scoped tail for LiveEventsPane, both capping buffered events. | useEventTail, useMissionEventTail |
apps/hermes-plugin/dashboard/src/live-events-utils.ts |
JSX-free helpers for live run event tails: parsing event lines, labeling and classifying severity, detecting usage events, capped appending, and auto-scroll decisions. | runEventsStreamPath, parseEventData, eventLabel, classifyEventSeverity, isUsageEvent, appendLiveEvent, severityRowClass, shouldAutoScrollTop, … |
apps/hermes-plugin/dashboard/src/LiveEventsPane.tsx |
Live SSE event tail for an in-flight mission run with severity-styled rows, auto-scroll locking, a token/cost gauge built from adapter capabilities, and a confirm-guarded Stop button that cancels the run. | LiveEventsPane |
apps/hermes-plugin/dashboard/src/mission-compare-helpers.ts |
JSX-free helpers backing the compare view and replay UI: top-level runtime-result diff, LCS line diff, and run modal title and replay banner text. | deepEqual, runtimeResultDiff, lineDiff, runModalTitle, replayBannerText |
apps/hermes-plugin/dashboard/src/MissionCompare.tsx |
Side-by-side comparison view for two runs of the same mission, showing a runtime-result field diff, an LCS line diff of prompts, and aligned event streams from the /compare endpoint. | RuntimeResultDiffPane, PromptDiffPane, EventsColumn, MissionCompare |
apps/hermes-plugin/dashboard/src/MissionDrilldown.tsx |
Mission drilldown view with tabs for mission metadata, prompt, final message, diff, result, events, and verification; handles pinned or archived runs, live event tails, recent runs, and replaying a run with prior overrides. | ArtifactPane, resolveEventsTarget, EventsPane, MissionMeta, MissionDrilldown |
apps/hermes-plugin/dashboard/src/MissionWizard.tsx |
New-mission wizard form with a live YAML preview that POSTs to /missions and renders server-side per-field validation errors inline. | toMissionDoc, MissionWizard |
apps/hermes-plugin/dashboard/src/observatory-store.ts |
React hook store that fetches the observatory snapshot and holds view and filter state, deriving the filtered work-item list for the Delivery Observatory. | useObservatoryStore |
apps/hermes-plugin/dashboard/src/observatory-types.ts |
Type definitions for the Delivery Observatory snapshot contract: fact states, sources, work items, agents, decisions, evidence, events, and metrics. | |
apps/hermes-plugin/dashboard/src/OverviewTab.tsx |
Overview tab with Adapters, Missions, Recent runs, and Running panels that polls the backend every 30 seconds and pauses polling while the document is hidden. | useVisibilityPolling, statusBadge, AdaptersPanel, MissionsPanel, RecentRunsPanel, RunningPanel, OverviewTab |
apps/hermes-plugin/dashboard/src/recent-runs-utils.ts |
JSX-free helpers for the Recent runs pane: relative time and duration formatting, status and prefix filtering, multi-key sorting, and per-run artifact URLs, plus the MissionRunSummary type. | formatRelative, formatDuration, filterRuns, durationMs, sortRuns, runArtifactUrl |
apps/hermes-plugin/dashboard/src/RecentRunsPane.tsx |
Recent runs table for a mission with status-chip filtering, run_id prefix search, and sortable columns; re-exports the pure helpers from recent-runs-utils. | RecentRunsPane |
apps/hermes-plugin/dashboard/src/router-pure.ts |
Pure hash-route parsing and building helpers, safe for Node tests, that map #/missions, #/workflows, and compare routes to a ParsedRoute and fall back to overview on malformed encoding. | parseQuery, parseRoute, buildHash |
apps/hermes-plugin/dashboard/src/router.ts |
Hash-based router for the plugin shell that re-exports the pure route helpers and adds the React useHashRoute hook, avoiding react-router in the bundle. | useHashRoute |
apps/hermes-plugin/dashboard/src/RunModal.tsx |
Modal that triggers a mission run with optional runtime_config_overrides JSON, then switches to a live SSE event tail of the run with a Stop button and replay banner. | RunModal |
apps/hermes-plugin/dashboard/src/sdk.ts |
Typed accessor for the Hermes plugin SDK globals and the UH backend: exposes SDK, UI, and fmt, and provides pluginFetch with a typed PluginFetchError, EventSource helpers, and shared response types. | PluginFetchError, pluginFetch, pluginEventSource, subscribeToRunEvents |
apps/hermes-plugin/dashboard/src/SessionsLink.tsx |
Component for the Hermes sessions:bottom slot that lists recent sessions bound to UH missions via metadata.mission_id and links them to the mission drilldown. | SessionsLink |
apps/hermes-plugin/dashboard/src/styles.css |
Theme-aware stylesheet for the Hermes dashboard plugin using uh--prefixed classes over Hermes design-system CSS variables, covering layout helpers, tabs, event log, modals, runs table with status badges, mission compare/diff views, and the Delivery Observatory (uh-do-*). |
|
apps/hermes-plugin/dashboard/src/types.d.ts |
Ambient type shims for the Hermes dashboard plugin SDK globals (React, UI kit, fetchJSON, plugin registry) so plugins get IntelliSense without bundling @types/react. | |
apps/hermes-plugin/dashboard/src/VerificationViewer.tsx |
Verification report viewer showing status, per-acceptance-criterion results, and the recorded runtime_config snapshot, with an empty state when the mission is not yet verified. | VerificationViewer |
apps/hermes-plugin/dashboard/src/WorkflowEditor.tsx |
Workflow editor that loads a workflow’s raw YAML into a textarea and PUTs edits back, rendering server errors inline. | WorkflowEditor |
apps/hermes-plugin/dashboard/src/WorkflowViewer.tsx |
Workflow profile viewer rendering workflow phases as a vertical timeline with role and outputs, plus a link to the editor. | WorkflowViewer |
apps/hermes-plugin/dashboard/src/yaml-pretty.ts |
Hand-rolled YAML pretty-printer for already-parsed JSON values that keeps the plugin bundle under its 50 KB budget. | yamlStringify |
apps/hermes-plugin/dashboard/tsconfig.json |
Type-check-only (noEmit) TypeScript configuration for the dashboard plugin sources: ES2020 target, Bundler module resolution, strict mode with implicit any allowed, and DOM libs. | |
apps/hermes-plugin/esbuild.config.mjs |
esbuild script that bundles the dashboard plugin into a minified IIFE and CSS under dashboard/dist, injecting React from the host SDK global and supporting watch mode. | |
apps/hermes-plugin/hermes-local.sh |
Reversible local lifecycle helper that symlinks the plugin package and theme into ~/.hermes, enables or disables the uh plugin without tool-override authority, starts the Hermes dashboard for an explicit UH_PROJECT_ROOT, reports status, and rolls back only package-owned links. | install_link, start_dashboard, usage |
apps/hermes-plugin/plugin.yaml |
Hermes plugin package identity declaring the uh plugin, version 0.11.0 and its description as the UH dashboard and Delivery Observatory. | |
apps/hermes-plugin/README.md |
Guide to the Hermes Agent dashboard plugin for UH covering its features, install-from-source flow via hermes-local.sh, Hermes 0.20.5 packaging compatibility, the build/test development loop, package layout, environment variables and the manifest config block. |