Merge feature/agent-detail-view (#444) and resolve conflicts, keeping the
PR's backend-driven detail page (API endpoint, audit scoping, tests) and
our enhanced agents list view (search, card headers, claim badges).
Also fixes three review issues:
- Add 403 guard for non-admin audit identity filter (prevents querying
events for identities the caller does not own)
- Add idx_audit_events_identity index via migration v2
- Update test assertions for new 403 behavior and migration count
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The skip-link was participating in the sidebar flex row because sr-only
was not applied via @apply, and settings pages were centered inside a
max-width wrapper that pushed the sub-sidebar away from the main nav.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add theme provider, dark mode toggle, and typography components.
Update globals.css with refined color palette and enterprise-grade
table/card/badge density overrides. Improve authenticated layout,
settings layout, dashboard shell, overview views, auth flow pages,
page states, and section headers with consistent styling.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Redesign connections list with provider logos, filter counts, grouped
global section with left-border accent, and confirmation dialogs.
Restructure connection detail into grouped cards (Identity, Token,
Endpoints, Secrets) with status badges and copyable fields. Add filter
chips (OAuth/API Key, Connected/Available) to providers list. Improve
provider cards with inline logo+name+tag layout. Refactor provider
detail with DetailField pattern, copyable callback URL, separated
revoke card, and better empty states.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Align public docs with Principal/Vault/Identity terminology, current daemon API paths, and the CLI/proxy/export integration surface instead of the removed AuthService library API.
Co-authored-by: Cursor <cursoragent@cursor.com>
When two processes with the same private key race to register, the loser
gets a 409 from the identity server. Re-resolve the handle by DID and
continue instead of failing startup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unifies first-run setup into a single idempotent command that registers
identity, completes claim, and imports API keys from env. Persists
--base-url in client config for remote daemon connections.
Closes#434
Co-authored-by: Cursor <cursoragent@cursor.com>