Skip to content

feat(web): Unified Insights dashboard — replaces the Overview/Cost/Pipeline apps - #145

Merged
hoangsnowy merged 4 commits into
mainfrom
feat/insights-dashboard
Aug 10, 2026
Merged

feat(web): Unified Insights dashboard — replaces the Overview/Cost/Pipeline apps#145
hoangsnowy merged 4 commits into
mainfrom
feat/insights-dashboard

Conversation

@hoangsnowy

Copy link
Copy Markdown
Owner

Change description

The desktop had three overlapping "what did the agents do" surfaces — an Overview KPI page, a standalone admin Cost page, and an "Agents" (PipelineStudio) window that ran a story through the 5 agents, i.e. a second run surface next to the Workflow app (which already runs the same agents as a graph). That redundancy read as confusing UX.

This folds all three into one observability dashboard, Insights (the pinned landing app), and makes Workflow the single run surface.

Insights (src/AgentOs.Web/Components/Pages/InsightsApp.razor):

  • Headline KPIs: pipeline runs, success rate, avg QA rounds, LLM cost (billed) with the ≈ $X API would-be estimate carried over from PipelineStudio's status bar — so the $0 dev-runner path still shows a meaningful metered-API cost of the tokens.
  • Four token-styled bar charts (no chart lib, no SVG — pure <div>s, all var(--…)): runs over time, per-agent calls + cost, spend by model (≈ API), avg latency per agent + QA-round distribution.
  • The budget cap/enforce control (moved from the deleted Cost app), admin-gated.

Removed: PipelineStudio / OverviewApp / CostApp + their AppCatalog entries + the Settings "Cost" tab. Pinned apps 7 → 6 (Insights · Workflow · Board · Settings · Terminal · Files). Board's ticket "Open in Pipeline" action repoints to Workflow.

Data: reuse GetCostSummaryForTenantAsync; add a sibling GetInsightsExtraForTenantAsync (avg-latency-by-agent, QA-iteration distribution, runs-per-day) with the same Dapper fast-path + EF fallback + no-op-repo shape. No schema changeLatencyMs/Iteration columns already exist and are indexed.

Also folds in the one open CodeQL alert (cs/simplifiable-boolean-expression) and a README app-gallery refresh.

Type of change

  • New feature (new agent / endpoint / capability)
  • Refactor (no behavior change) — removes redundant run surface
  • Documentation / README

Related issues

Checklist

  • dotnet build passes locally in Release mode (0 warnings, TreatWarningsAsErrors)
  • dotnet test passes — 847 unit tests, 0 failures
  • No secrets committed
  • README updated (app gallery)
  • Measurable results provided — see test plan

Test plan

  • Build: dotnet build AgentOs.slnx -c Release → clean, 0 warnings.
  • Unit: dotnet test AgentOs.slnx -c Release847 passed / 0 failed (28 E2E gated-skipped).
  • E2E (full Aspire stack + seeded runs): opened Insights on the running desktop after seeding 12 runs / 75 per-agent metrics for default across 6 days. Verified live:
    • KPIs: 12 pipeline runs · 75% success · 1.8 avg QA rounds · $0.0000 billed / ≈ $0.6662 API.
    • Charts render with data: runs-over-time bars (04/08–10/08) and by-agent bars (Coding 21, Qa 21, Testing 21, Requirement 12 — matches the seed).
    • Recent runs table lists the seeded runs (Complete / Iteration-limit, QA rounds 1–3, dated).
    • Range selector (7d/30d/All) + budget cap panel + ≈ API sub-line all functional; no phantom-CSS, no circuit crash.
    • Dock shows the 6 pinned apps, Insights as landing; the removed "Agents" run window is gone.
  • E2E test updates: LoginAndDesktopTests + WindowLifecycleTests (Overview→Insights, drop "Agents"); BudgetGateRealAuthTests repointed Settings→Cost tab → the Insights budget panel.

Note: promo screenshots (app-overview.png/app-pipeline.png/app-cost.png) were dropped from the README gallery; an app-insights.png capture via the Playwright recipe is a follow-up.

hoangsnowy and others added 4 commits August 10, 2026 22:53
…s dashboard

The desktop had three overlapping surfaces for "what did the agents do": an Overview
KPI page, a standalone admin Cost page, and an "Agents" (PipelineStudio) window that
ran a story through the 5 agents — a second run surface next to the Workflow app,
which already runs the same agents as a graph. That redundancy read as confusing UX.

Fold all three into one observability dashboard, "Insights" (the pinned landing app):
- Headline KPIs: pipeline runs, success rate, avg QA rounds, LLM cost (billed) with
  the "≈ $X API" would-be estimate carried over from PipelineStudio's status bar — so
  the $0 RemoteAgent path still shows a meaningful metered-API cost of the tokens.
- Four token-styled bar charts (no chart lib, no SVG — pure divs, all var(--…)):
  runs over time, per-agent calls + cost, spend by model (≈ API), and avg latency per
  agent + QA-round distribution.
- The budget cap/enforce control (moved from the deleted Cost app), admin-gated.

Running the pipeline now lives only in the Workflow app (Board's "Open in Pipeline"
ticket action repoints there). Removes PipelineStudio/OverviewApp/CostApp + their
AppCatalog entries + the Settings "Cost" tab; pinned apps drop 7 → 6.

Data: reuse IPipelineRunRepository.GetCostSummaryForTenantAsync; add a sibling
GetInsightsExtraForTenantAsync (avg-latency-by-agent, QA-iteration distribution,
runs-per-day) with the same Dapper fast-path + EF fallback + no-op-repo shape — no
schema change (LatencyMs/Iteration columns already exist and are indexed).

Verified: Release build clean (0 warn), 847 unit tests pass; E2E on the full Aspire
stack with seeded runs — Insights renders 12 runs, 75% success, 1.8 avg QA rounds,
$0 billed / ≈$0.6662 API, and the runs-over-time + by-agent charts populate. E2E dock
+ budget-gate tests updated (Overview→Insights, Cost tab → Insights budget panel).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lifiable-boolean-expression)

The only open code-scanning alert on main — a note-level simplifiable-boolean in the
Workflow node-library empty-state check. No behaviour change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The desktop app lineup changed: Overview + Cost folded into a single Insights
dashboard, and running the pipeline now lives only in the Workflow app (the old
"Agents"/PipelineStudio run window is gone). Update the screenshot gallery + hero
caption to match — Insights described in text (promo PNG refresh pending), the three
stale image cells (app-overview/app-pipeline/app-cost) dropped, Workflow reframed as
the run surface. The rest of the README (module table, gateway, setup) is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ts"/Cost apps

CI's dev-auth UI E2E (RUN_AGENTOS_E2E=true) exercises the standalone Web and caught
two WindowLifecycleTests still driving the deleted "Agents" (pipeline) window —
Window_Lifecycle_* and TopBar_Center_* timed out waiting for a dock item that no
longer exists. Repoint them to Insights. Also drop the removed "Cost" Settings tab
from RoleIsolationRealAuthTests' admin-category list and rename the budget-gate test
(…_CostApp_… → …_Insights_…) to match where the cap control moved.

Verified locally against the standalone Web the same way CI does
(RUN_AGENTOS_E2E=true, AGENTOS_URL=http://localhost:5199): 18 passed / 0 failed
(10 real-auth gated-skipped) — previously 16 passed / 2 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hoangsnowy
hoangsnowy merged commit 03a7c58 into main Aug 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant