Add read-only actor overview and per-actor dossier pages to the dashboard, fed by enriched per-actor runtime snapshots. - `dashboard/swactor/actor_view`: new `ActorPanelView`, a tolerant frame consumer over `runtime.actors`/`runtime.stats` that folds per-actor snapshots and serves `/view/swactor/actor-overview` (roster) and `/view/swactor/actor-dossier` (per-actor detail), each backed by an embedded HTML template (`actor_overview.html`, `actor_dossier.html`) - `dashboard`: register both views in `DashboardHandle` and export `actor_overview_view()`/`actor_dossier_view()` from the swactor module - `swactor` core: enrich `ActorSnapshot` with `actor_type` and `message_type` (populated from `slot.actor.metadata()` in `ActorPool`) and add `ActorAddress::to_full_hex()` for untruncated display - `myelin/orchestration`: publish actor stats to the dashboard via a `runtime.actors` channel producer (`stats_hook_on`) threaded through the distribution stack, and carry the orchestrator actor address into readiness signaling - workspace `Cargo.toml`: add `default-members` for native iteration and a centralized `[workspace.dependencies] tokio` so members share one feature set; `dashboard/Cargo.toml` switches to `tokio.workspace = true` Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
24 lines
1.5 KiB
Markdown
24 lines
1.5 KiB
Markdown
# dashboard
|
|
|
|
Read-only HTML/SSE dashboard over incoming datastream frames.
|
|
|
|
The crate owns the Axum server, bounded raw frame window, and view registry. Component crates can keep their own view implementations beside their code and register them through `DashboardHandle::register_view`. The built-in swactor views are hosted here because worker/actor/message processing is universal to swactor programs: the worker page, and the actor overview (fused roster) plus per-actor dossier.
|
|
|
|
## Routes
|
|
|
|
- `GET /` — dashboard index
|
|
- `GET /events` — raw incoming frames as SSE
|
|
- `GET /api/frames` — recent raw frame window
|
|
- `GET /api/views` — registered view metadata
|
|
- `GET /view/datastream/live` — generic live explorer over retained and incoming datastream frames
|
|
- `GET /api/view/datastream/live` — bounded per-stream/channel explorer snapshot
|
|
- `GET /view/fleet` — compact fleet overview and focused machine telemetry
|
|
- `GET /api/view/fleet` — fleet and machine telemetry JSON snapshot
|
|
- `GET /view/swactor/workers` — built-in worker page
|
|
- `GET /api/view/swactor/workers` — worker page JSON snapshot
|
|
- `GET /view/swactor/actor-overview` — built-in actor overview + roster page
|
|
- `GET /api/view/swactor/actor-overview` — actor overview JSON snapshot
|
|
- `GET /view/swactor/actor-dossier` — built-in per-actor dossier page
|
|
- `GET /api/view/swactor/actor-dossier` — actor dossier JSON snapshot
|
|
|
|
All state is derived from observed frames. The dashboard sends no control signals back to producers.
|