Skip to content

feat(web): React UI v2.0 — Phase 5 Tasks 44-49 (6 monitor panels)#31

Merged
aksOps merged 6 commits into
mainfrom
feat/web-phase-5-batch-b
May 16, 2026
Merged

feat(web): React UI v2.0 — Phase 5 Tasks 44-49 (6 monitor panels)#31
aksOps merged 6 commits into
mainfrom
feat/web-phase-5-batch-b

Conversation

@aksOps

@aksOps aksOps commented May 16, 2026

Copy link
Copy Markdown
Contributor

Six monitor panels filling the right rail:

  • 44 <SelectedPanel> — pinned; context-driven detail body (agent / tool_call / message) reading useSelected
  • 45 <OtherSessionsPanel> — pinned; mini-tiles for cross-session awareness (excludes activeSid)
  • 46 <ApprovalsQueuePanel> — pinned; oldest-first list with age, click → switch session
  • 47 <LessonsPanel> — collapsed; react-query per-session fetch from /api/v1/sessions/{sid}/lessons
  • 48 <ToolsPanel> — collapsed; react-query cache-once from /api/v1/tools
  • 49 <HealthPanel> — collapsed; direct fetch of /health polled every 30s + last-poll timestamp

23 new tests (4+6+4+3+3+4 — agent reports may show counts as +pre-existing). MonitorRail assembly + App wiring follows in next PR.

🤖 Generated with Claude Code

aksOps and others added 6 commits May 16, 2026 06:25
Phase 5 Task 44. SelectedPanel reads useSelected() and renders one of
four bodies inside a pinned <Monitor title="Selected">:

- agent: AgentDefinition details (kind, model, tools, routes, prompt
  excerpt) looked up from agentsByName.
- tool_call: ToolCall details (agent, status, risk, args JSON) found
  locally by <tool>@<ts> id.
- message: placeholder showing the turn id.
- null: spec § 16.2 empty-state copy.

Each body has a lowercase "kind · subject" eyebrow tag matching the
selection. "Not found" fallback when an id doesn't resolve in the
current session.

Tests: 4 component tests cover empty, agent, tool_call, and not-found
paths. Full suite 134/0 green. Typecheck clean.
Phase 5 Task 45. Props-driven panel that renders compact mini-tiles
for every session except the active one, giving the operator at-a-glance
cross-session awareness without leaving the current canvas.

Tile layout (~90x72): id + color-coded state caps · label (truncated)
· active_agent. Wrapped in <Monitor pinned> with live count badge.
Click a tile → onSelect(sid).

Files:
- web/src/monitors/OtherSessionsPanel.tsx
- web/tests/component/OtherSessionsPanel.test.tsx (6 tests, all green)

Verification: vitest run (136/136 pass) + tsc -b (clean).
Phase 5 Task 46. Props-driven panel showing pending approvals
across sessions. Each row: id + label + age since updated_at.
Click row -> onSelect(sid). Wrapped in <Monitor pinned> with
count badge and empty-state copy.

Tests: 4 (count, items, empty-state, click).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Phase 5 Task 47. Adds <LessonsPanel> wrapping <Monitor title="Lessons">,
collapsed by default. Uses @tanstack/react-query to fetch
GET /api/v1/sessions/{sid}/lessons with 60s staleTime; query is disabled
when sessionId is null so the header always renders but no fetch fires.
Lesson type is local to the file (loose backend shape).

3 component tests cover: header-only render when sid=null, fetch + render
of titles after expand, and the exact URL/method shape.
Phase 5 Task 48 of React UI v2.0. Adds a collapsed-by-default monitor
listing the orchestrator's tool catalog with name, description, and
risk badge. Uses react-query with staleTime/gcTime=Infinity to fetch
GET /api/v1/tools once per session.
@sonarqubecloud

Copy link
Copy Markdown

@aksOps aksOps merged commit a85b343 into main May 16, 2026
9 checks passed
@aksOps aksOps deleted the feat/web-phase-5-batch-b branch May 16, 2026 10:50
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