feat(phase-2): workstream 6 — Web Dashboard UI
- dashboard/: Vite 5 + React 18 + TypeScript strict SPA
- Auth: sessionStorage credentials, TokenManager validation, AuthProvider context
- Pages: Login, Agents (search + filter), AgentDetail (suspend/reactivate),
Credentials (generate/rotate/revoke, new secret shown once),
AuditLog (filters + pagination), Health (PG + Redis status, 30s refresh)
- Components: Button, Badge, ConfirmDialog, AppShell, RequireAuth
- All destructive actions gated by ConfirmDialog
- Zero dangerouslySetInnerHTML; sessionStorage only (OWASP compliant)
- src/routes/health.ts: unauthenticated GET /health — PG + Redis connectivity
- src/app.ts: health route + dashboard/dist/ served at /dashboard with SPA fallback
- 6 new health route tests; 308/308 unit tests passing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -78,19 +78,19 @@
|
||||
|
||||
## Workstream 6: Web Dashboard UI
|
||||
|
||||
- [ ] 6.1 Create `dashboard/` with Vite 5 + React 18 + TypeScript strict configuration
|
||||
- [ ] 6.2 Set up shadcn/ui with Tailwind CSS
|
||||
- [ ] 6.3 Write `dashboard/src/lib/auth.ts` — credential entry, TokenManager, sessionStorage
|
||||
- [ ] 6.4 Write `dashboard/src/lib/client.ts` — wraps @sentryagent/idp-sdk AgentIdPClient
|
||||
- [ ] 6.5 Write Login page (`/dashboard/login`)
|
||||
- [ ] 6.6 Write Agents page (`/dashboard/agents`) — list, search, filter by status
|
||||
- [ ] 6.7 Write Agent Detail page (`/dashboard/agents/:id`) — suspend/reactivate with confirm dialog
|
||||
- [ ] 6.8 Write Credentials page (`/dashboard/agents/:id/credentials`) — rotate/revoke with confirm
|
||||
- [ ] 6.9 Write Audit Log page (`/dashboard/audit`) — filters, pagination
|
||||
- [ ] 6.10 Write Health page (`/dashboard/health`) — PostgreSQL + Redis connectivity status
|
||||
- [ ] 6.11 Configure AgentIdP Express app to serve `dashboard/dist/` at `/dashboard`
|
||||
- [ ] 6.12 Write `dashboard/README.md`
|
||||
- [ ] 6.13 QA: TypeScript strict, zero `any`, OWASP Top 10 review, responsive layout verified
|
||||
- [x] 6.1 Create `dashboard/` with Vite 5 + React 18 + TypeScript strict configuration
|
||||
- [x] 6.2 Set up shadcn/ui with Tailwind CSS
|
||||
- [x] 6.3 Write `dashboard/src/lib/auth.ts` — credential entry, TokenManager, sessionStorage
|
||||
- [x] 6.4 Write `dashboard/src/lib/client.ts` — wraps @sentryagent/idp-sdk AgentIdPClient
|
||||
- [x] 6.5 Write Login page (`/dashboard/login`)
|
||||
- [x] 6.6 Write Agents page (`/dashboard/agents`) — list, search, filter by status
|
||||
- [x] 6.7 Write Agent Detail page (`/dashboard/agents/:id`) — suspend/reactivate with confirm dialog
|
||||
- [x] 6.8 Write Credentials page (`/dashboard/agents/:id/credentials`) — rotate/revoke with confirm
|
||||
- [x] 6.9 Write Audit Log page (`/dashboard/audit`) — filters, pagination
|
||||
- [x] 6.10 Write Health page (`/dashboard/health`) — PostgreSQL + Redis connectivity status
|
||||
- [x] 6.11 Configure AgentIdP Express app to serve `dashboard/dist/` at `/dashboard`
|
||||
- [x] 6.12 Write `dashboard/README.md`
|
||||
- [x] 6.13 QA: TypeScript strict, zero `any`, OWASP Top 10 review, responsive layout verified
|
||||
|
||||
## Workstream 7: Prometheus + Grafana Monitoring
|
||||
|
||||
|
||||
Reference in New Issue
Block a user