From d1d01727e4d515505858ac9bca17ca6e08f4c25a Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Sat, 21 Mar 2026 17:40:35 -0700 Subject: [PATCH] fix(platform): register ai-diagnostics routes + wire 6 hidden sidebar pages Phase 0 from DASHBOARD_UI_COVERAGE_ROADMAP: - Register ai-diagnostics routes in server.ts (671-line module was never mounted) - Add 6 hidden pages to admin sidebar-nav.tsx: Debug Sessions, Health Dashboard, Extraction, Experiments, Predictive, AI Diagnostics - /users was already in sidebar (no change needed) - Kill switch verified: already per-product via productId query param - Admin sidebar now has 33 items (was 27) --- dashboards/admin-web/src/components/sidebar-nav.tsx | 12 ++++++++++++ services/platform-service/src/server.ts | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/dashboards/admin-web/src/components/sidebar-nav.tsx b/dashboards/admin-web/src/components/sidebar-nav.tsx index 6b88b4ac..873a1dbd 100644 --- a/dashboards/admin-web/src/components/sidebar-nav.tsx +++ b/dashboards/admin-web/src/components/sidebar-nav.tsx @@ -33,6 +33,12 @@ import { ClipboardList, Beaker, Crosshair, + Bug, + HeartPulse, + FileSearch, + FlaskConical, + BrainCircuit, + TrendingDown, } from 'lucide-react'; import { cn } from '@/lib/utils'; import { useAuth } from '@/lib/auth-context'; @@ -59,10 +65,16 @@ const navItems = [ { href: '/flags', label: 'Feature Flags', icon: Settings }, { href: '/audit', label: 'Audit Log', icon: ScrollText }, { href: '/actiontrail', label: 'ActionTrail', icon: Crosshair }, + { href: '/experiments', label: 'Experiments', icon: FlaskConical }, + { href: '/predictive/at-risk', label: 'Predictive', icon: TrendingDown }, { href: '/ops', label: 'Mission Control', icon: Activity }, { href: '/ops/client-logs', label: 'Client Logs', icon: FileText }, { href: '/ops/telemetry-policies', label: 'Telemetry Policies', icon: Shield }, { href: '/ops/ab-testing', label: 'A/B Testing', icon: Beaker }, + { href: '/debug-sessions', label: 'Debug Sessions', icon: Bug }, + { href: '/health-dashboard', label: 'Health Dashboard', icon: HeartPulse }, + { href: '/extraction', label: 'Extraction', icon: FileSearch }, + { href: '/ai-diagnostics', label: 'AI Diagnostics', icon: BrainCircuit }, { href: '/feedback', label: 'User Feedback', icon: MessageSquare }, { href: '/ops/secrets', label: 'Secrets Manager', icon: KeyRound }, { href: '/settings', label: 'Settings', icon: Settings }, diff --git a/services/platform-service/src/server.ts b/services/platform-service/src/server.ts index de363999..cdca1d58 100644 --- a/services/platform-service/src/server.ts +++ b/services/platform-service/src/server.ts @@ -98,6 +98,7 @@ import { tenantRoutes } from './modules/tenants/routes.js'; import { retentionRoutes } from './modules/retention/routes.js'; import { backupRoutes } from './modules/backups/routes.js'; import { apiVersioningRoutes } from './modules/api-versioning/routes.js'; +import aiDiagnosticsRoutes from './modules/ai-diagnostics/routes.js'; import { initCosmosIfNeeded } from './lib/cosmos-init.js'; import { config } from './lib/config.js'; import { type JwtPayload, extractProductIdAsync } from './lib/request-context.js'; @@ -264,6 +265,9 @@ await app.register(retentionRoutes, { prefix: '/api' }); await app.register(backupRoutes, { prefix: '/api' }); await app.register(apiVersioningRoutes, { prefix: '/api' }); +// AI Diagnostics (NL query, LLM root-cause, error clustering) +await app.register(aiDiagnosticsRoutes, { prefix: '/api' }); + // Event subscriptions + DLQ + replay await app.register(eventSubscriptionRoutes, { prefix: '/api' }); // Agent executor + tool registry + scheduling + metrics