@marinoscar/platform-web 0.0.0-stage → 0.1.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +96 -2
- package/dist/core/api-client.d.ts +112 -0
- package/dist/core/api-client.d.ts.map +1 -0
- package/dist/core/api-client.js +24 -0
- package/dist/core/api-client.js.map +1 -0
- package/dist/core/host.d.ts +74 -0
- package/dist/core/host.d.ts.map +1 -0
- package/dist/core/host.js +84 -0
- package/dist/core/host.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/settings-page.d.ts +47 -0
- package/dist/core/settings-page.d.ts.map +1 -0
- package/dist/core/settings-page.js +5 -0
- package/dist/core/settings-page.js.map +1 -0
- package/dist/core/viewer.d.ts +14 -0
- package/dist/core/viewer.d.ts.map +1 -0
- package/dist/core/viewer.js +4 -0
- package/dist/core/viewer.js.map +1 -0
- package/dist/doctor/headless/categories.d.ts +31 -0
- package/dist/doctor/headless/categories.d.ts.map +1 -0
- package/dist/doctor/headless/categories.js +41 -0
- package/dist/doctor/headless/categories.js.map +1 -0
- package/dist/doctor/headless/client.d.ts +33 -0
- package/dist/doctor/headless/client.d.ts.map +1 -0
- package/dist/doctor/headless/client.js +31 -0
- package/dist/doctor/headless/client.js.map +1 -0
- package/dist/doctor/headless/contract.d.ts +18 -0
- package/dist/doctor/headless/contract.d.ts.map +1 -0
- package/dist/doctor/headless/contract.js +15 -0
- package/dist/doctor/headless/contract.js.map +1 -0
- package/dist/doctor/headless/index.d.ts +12 -0
- package/dist/doctor/headless/index.d.ts.map +1 -0
- package/dist/doctor/headless/index.js +8 -0
- package/dist/doctor/headless/index.js.map +1 -0
- package/dist/doctor/headless/use-doctor.d.ts +36 -0
- package/dist/doctor/headless/use-doctor.d.ts.map +1 -0
- package/dist/doctor/headless/use-doctor.js +80 -0
- package/dist/doctor/headless/use-doctor.js.map +1 -0
- package/dist/doctor/headless/use-support-bundle-download.d.ts +68 -0
- package/dist/doctor/headless/use-support-bundle-download.d.ts.map +1 -0
- package/dist/doctor/headless/use-support-bundle-download.js +135 -0
- package/dist/doctor/headless/use-support-bundle-download.js.map +1 -0
- package/dist/doctor/internal/relative-time.d.ts +2 -0
- package/dist/doctor/internal/relative-time.d.ts.map +1 -0
- package/dist/doctor/internal/relative-time.js +29 -0
- package/dist/doctor/internal/relative-time.js.map +1 -0
- package/dist/doctor/internal/status-colors.d.ts +5 -0
- package/dist/doctor/internal/status-colors.d.ts.map +1 -0
- package/dist/doctor/internal/status-colors.js +29 -0
- package/dist/doctor/internal/status-colors.js.map +1 -0
- package/dist/doctor/internal/use-is-mounted.d.ts +2 -0
- package/dist/doctor/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/doctor/internal/use-is-mounted.js +15 -0
- package/dist/doctor/internal/use-is-mounted.js.map +1 -0
- package/dist/doctor/ui/check-row.d.ts +54 -0
- package/dist/doctor/ui/check-row.d.ts.map +1 -0
- package/dist/doctor/ui/check-row.js +100 -0
- package/dist/doctor/ui/check-row.js.map +1 -0
- package/dist/doctor/ui/copy.d.ts +3 -0
- package/dist/doctor/ui/copy.d.ts.map +1 -0
- package/dist/doctor/ui/copy.js +6 -0
- package/dist/doctor/ui/copy.js.map +1 -0
- package/dist/doctor/ui/doctor-page.d.ts +50 -0
- package/dist/doctor/ui/doctor-page.d.ts.map +1 -0
- package/dist/doctor/ui/doctor-page.js +152 -0
- package/dist/doctor/ui/doctor-page.js.map +1 -0
- package/dist/doctor/ui/index.d.ts +8 -0
- package/dist/doctor/ui/index.d.ts.map +1 -0
- package/dist/doctor/ui/index.js +7 -0
- package/dist/doctor/ui/index.js.map +1 -0
- package/dist/doctor/ui/settings-page.d.ts +20 -0
- package/dist/doctor/ui/settings-page.d.ts.map +1 -0
- package/dist/doctor/ui/settings-page.js +32 -0
- package/dist/doctor/ui/settings-page.js.map +1 -0
- package/dist/doctor/ui/support-bundle-button.d.ts +37 -0
- package/dist/doctor/ui/support-bundle-button.d.ts.map +1 -0
- package/dist/doctor/ui/support-bundle-button.js +39 -0
- package/dist/doctor/ui/support-bundle-button.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.d.ts +106 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.d.ts.map +1 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.js +58 -0
- package/dist/telemetry/headless/adapters/TelemetryWebAdapters.js.map +1 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.d.ts +43 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.d.ts.map +1 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.js +24 -0
- package/dist/telemetry/headless/context/TelemetryConfigProvider.js.map +1 -0
- package/dist/telemetry/headless/context/telemetryConfig.d.ts +68 -0
- package/dist/telemetry/headless/context/telemetryConfig.d.ts.map +1 -0
- package/dist/telemetry/headless/context/telemetryConfig.js +119 -0
- package/dist/telemetry/headless/context/telemetryConfig.js.map +1 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.d.ts +35 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.d.ts.map +1 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.js +44 -0
- package/dist/telemetry/headless/guards/RequireTelemetryEnabled.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.d.ts +40 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.js +111 -0
- package/dist/telemetry/headless/hooks/useTelemetryAdmin.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.d.ts +120 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.js +185 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistant.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.d.ts +12 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.js +36 -0
- package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.d.ts +46 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.js +133 -0
- package/dist/telemetry/headless/hooks/useTelemetryConnection.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +147 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.js +231 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.d.ts +95 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.js +197 -0
- package/dist/telemetry/headless/hooks/useTelemetryExplorer.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.d.ts +69 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.js +129 -0
- package/dist/telemetry/headless/hooks/useTelemetryStack.js.map +1 -0
- package/dist/telemetry/headless/index.d.ts +34 -0
- package/dist/telemetry/headless/index.d.ts.map +1 -0
- package/dist/telemetry/headless/index.js +34 -0
- package/dist/telemetry/headless/index.js.map +1 -0
- package/dist/telemetry/headless/lib/assistantExport.d.ts +12 -0
- package/dist/telemetry/headless/lib/assistantExport.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/assistantExport.js +116 -0
- package/dist/telemetry/headless/lib/assistantExport.js.map +1 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.d.ts +91 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.js +246 -0
- package/dist/telemetry/headless/lib/dashboard/assistantPrompt.js.map +1 -0
- package/dist/telemetry/headless/lib/dashboardState.d.ts +58 -0
- package/dist/telemetry/headless/lib/dashboardState.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/dashboardState.js +153 -0
- package/dist/telemetry/headless/lib/dashboardState.js.map +1 -0
- package/dist/telemetry/headless/lib/explorerHandoff.d.ts +62 -0
- package/dist/telemetry/headless/lib/explorerHandoff.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/explorerHandoff.js +77 -0
- package/dist/telemetry/headless/lib/explorerHandoff.js.map +1 -0
- package/dist/telemetry/headless/lib/format.d.ts +113 -0
- package/dist/telemetry/headless/lib/format.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/format.js +280 -0
- package/dist/telemetry/headless/lib/format.js.map +1 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.d.ts +44 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.js +61 -0
- package/dist/telemetry/headless/lib/metrics/metricSections.js.map +1 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.d.ts +15 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.js +33 -0
- package/dist/telemetry/headless/lib/metrics/topNPreference.js.map +1 -0
- package/dist/telemetry/headless/lib/queryHistory.d.ts +20 -0
- package/dist/telemetry/headless/lib/queryHistory.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/queryHistory.js +53 -0
- package/dist/telemetry/headless/lib/queryHistory.js.map +1 -0
- package/dist/telemetry/headless/lib/starterQueries.d.ts +48 -0
- package/dist/telemetry/headless/lib/starterQueries.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/starterQueries.js +84 -0
- package/dist/telemetry/headless/lib/starterQueries.js.map +1 -0
- package/dist/telemetry/headless/lib/traceLink.d.ts +26 -0
- package/dist/telemetry/headless/lib/traceLink.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/traceLink.js +32 -0
- package/dist/telemetry/headless/lib/traceLink.js.map +1 -0
- package/dist/telemetry/headless/lib/unknownRoutes.d.ts +23 -0
- package/dist/telemetry/headless/lib/unknownRoutes.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/unknownRoutes.js +35 -0
- package/dist/telemetry/headless/lib/unknownRoutes.js.map +1 -0
- package/dist/telemetry/headless/services/client.d.ts +144 -0
- package/dist/telemetry/headless/services/client.d.ts.map +1 -0
- package/dist/telemetry/headless/services/client.js +144 -0
- package/dist/telemetry/headless/services/client.js.map +1 -0
- package/dist/telemetry/headless/services/telemetry.d.ts +483 -0
- package/dist/telemetry/headless/services/telemetry.d.ts.map +1 -0
- package/dist/telemetry/headless/services/telemetry.js +190 -0
- package/dist/telemetry/headless/services/telemetry.js.map +1 -0
- package/dist/telemetry/headless/services/telemetryDashboard.d.ts +321 -0
- package/dist/telemetry/headless/services/telemetryDashboard.d.ts.map +1 -0
- package/dist/telemetry/headless/services/telemetryDashboard.js +103 -0
- package/dist/telemetry/headless/services/telemetryDashboard.js.map +1 -0
- package/dist/telemetry/internal/useIsMounted.d.ts +9 -0
- package/dist/telemetry/internal/useIsMounted.d.ts.map +1 -0
- package/dist/telemetry/internal/useIsMounted.js +19 -0
- package/dist/telemetry/internal/useIsMounted.js.map +1 -0
- package/dist/telemetry/internal/useVisiblePolling.d.ts +55 -0
- package/dist/telemetry/internal/useVisiblePolling.d.ts.map +1 -0
- package/dist/telemetry/internal/useVisiblePolling.js +96 -0
- package/dist/telemetry/internal/useVisiblePolling.js.map +1 -0
- package/dist/telemetry/internal/visuallyHidden.d.ts +12 -0
- package/dist/telemetry/internal/visuallyHidden.d.ts.map +1 -0
- package/dist/telemetry/internal/visuallyHidden.js +15 -0
- package/dist/telemetry/internal/visuallyHidden.js.map +1 -0
- package/dist/telemetry/theme/augment.d.ts +65 -0
- package/dist/telemetry/theme/augment.d.ts.map +1 -0
- package/dist/telemetry/theme/augment.js +37 -0
- package/dist/telemetry/theme/augment.js.map +1 -0
- package/dist/telemetry/theme/telemetryTokens.d.ts +121 -0
- package/dist/telemetry/theme/telemetryTokens.d.ts.map +1 -0
- package/dist/telemetry/theme/telemetryTokens.js +129 -0
- package/dist/telemetry/theme/telemetryTokens.js.map +1 -0
- package/dist/telemetry/ui/admin.d.ts +35 -0
- package/dist/telemetry/ui/admin.d.ts.map +1 -0
- package/dist/telemetry/ui/admin.js +58 -0
- package/dist/telemetry/ui/admin.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantContainer.d.ts +35 -0
- package/dist/telemetry/ui/components/AssistantContainer.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantContainer.js +83 -0
- package/dist/telemetry/ui/components/AssistantContainer.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantPanel.d.ts +22 -0
- package/dist/telemetry/ui/components/AssistantPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantPanel.js +150 -0
- package/dist/telemetry/ui/components/AssistantPanel.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantReport.d.ts +13 -0
- package/dist/telemetry/ui/components/AssistantReport.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantReport.js +89 -0
- package/dist/telemetry/ui/components/AssistantReport.js.map +1 -0
- package/dist/telemetry/ui/components/AssistantTimeline.d.ts +10 -0
- package/dist/telemetry/ui/components/AssistantTimeline.d.ts.map +1 -0
- package/dist/telemetry/ui/components/AssistantTimeline.js +84 -0
- package/dist/telemetry/ui/components/AssistantTimeline.js.map +1 -0
- package/dist/telemetry/ui/components/ResultsGrid.d.ts +10 -0
- package/dist/telemetry/ui/components/ResultsGrid.d.ts.map +1 -0
- package/dist/telemetry/ui/components/ResultsGrid.js +71 -0
- package/dist/telemetry/ui/components/ResultsGrid.js.map +1 -0
- package/dist/telemetry/ui/components/SchemaPanel.d.ts +9 -0
- package/dist/telemetry/ui/components/SchemaPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/SchemaPanel.js +42 -0
- package/dist/telemetry/ui/components/SchemaPanel.js.map +1 -0
- package/dist/telemetry/ui/components/SqlEditor.d.ts +21 -0
- package/dist/telemetry/ui/components/SqlEditor.d.ts.map +1 -0
- package/dist/telemetry/ui/components/SqlEditor.js +60 -0
- package/dist/telemetry/ui/components/SqlEditor.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.d.ts +14 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.js +243 -0
- package/dist/telemetry/ui/components/TelemetryConnectionSection.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.d.ts +12 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.js +21 -0
- package/dist/telemetry/ui/components/TelemetryCrossLink.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.d.ts +23 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.js +138 -0
- package/dist/telemetry/ui/components/TelemetryServicesSection.js.map +1 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.d.ts +3 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.js +14 -0
- package/dist/telemetry/ui/components/TelemetrySpinner.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.d.ts +17 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.js +70 -0
- package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts +39 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js +143 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts +58 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.js +62 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.d.ts +21 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.js +96 -0
- package/dist/telemetry/ui/components/dashboard/EventsFeed.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts +13 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.js +82 -0
- package/dist/telemetry/ui/components/dashboard/KpiTiles.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.d.ts +8 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.js +34 -0
- package/dist/telemetry/ui/components/dashboard/LogSeverityChart.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.d.ts +19 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.js +61 -0
- package/dist/telemetry/ui/components/dashboard/TopProblems.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.d.ts +12 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.js +36 -0
- package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.d.ts +35 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.js +68 -0
- package/dist/telemetry/ui/components/dashboard/VerdictBanner.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.d.ts +9 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.js +96 -0
- package/dist/telemetry/ui/components/dashboard/ZoomBrush.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +75 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +247 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts +19 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js +64 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts +74 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js +126 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/severity.d.ts +43 -0
- package/dist/telemetry/ui/components/dashboard/severity.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/severity.js +66 -0
- package/dist/telemetry/ui/components/dashboard/severity.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.d.ts +11 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.js +20 -0
- package/dist/telemetry/ui/components/dashboard/timelineAxis.js.map +1 -0
- package/dist/telemetry/ui/dashboard-page.d.ts +2 -0
- package/dist/telemetry/ui/dashboard-page.d.ts.map +1 -0
- package/dist/telemetry/ui/dashboard-page.js +6 -0
- package/dist/telemetry/ui/dashboard-page.js.map +1 -0
- package/dist/telemetry/ui/explorer-page.d.ts +2 -0
- package/dist/telemetry/ui/explorer-page.d.ts.map +1 -0
- package/dist/telemetry/ui/explorer-page.js +6 -0
- package/dist/telemetry/ui/explorer-page.js.map +1 -0
- package/dist/telemetry/ui/index.d.ts +6 -0
- package/dist/telemetry/ui/index.d.ts.map +1 -0
- package/dist/telemetry/ui/index.js +10 -0
- package/dist/telemetry/ui/index.js.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts +14 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.js +286 -0
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.js.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts +15 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts.map +1 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.js +197 -0
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.js.map +1 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts +28 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts.map +1 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.js +278 -0
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.js.map +1 -0
- package/dist/telemetry/ui/settings-page.d.ts +2 -0
- package/dist/telemetry/ui/settings-page.d.ts.map +1 -0
- package/dist/telemetry/ui/settings-page.js +6 -0
- package/dist/telemetry/ui/settings-page.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +4 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/test-platform-host.d.ts +108 -0
- package/dist/testing/test-platform-host.d.ts.map +1 -0
- package/dist/testing/test-platform-host.js +101 -0
- package/dist/testing/test-platform-host.js.map +1 -0
- package/package.json +132 -4
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// The telemetry slice's admin registry cards (issue #704). Data only: the
|
|
2
|
+
// app places them in its own registry (`apps/web/src/config/adminSections.tsx`,
|
|
3
|
+
// the Observability section) where its three literal cards were, so the hub,
|
|
4
|
+
// the Console rail and the AppBar title resolver show them in the same order
|
|
5
|
+
// with the same permissions and features. No component is referenced here,
|
|
6
|
+
// so importing the cards never pulls a page into the app's main chunk.
|
|
7
|
+
import InsightsOutlinedIcon from '@mui/icons-material/InsightsOutlined';
|
|
8
|
+
import MonitorHeartOutlinedIcon from '@mui/icons-material/MonitorHeartOutlined';
|
|
9
|
+
import TerminalOutlinedIcon from '@mui/icons-material/TerminalOutlined';
|
|
10
|
+
import { TELEMETRY_DASHBOARD_PATH, TELEMETRY_EXPLORER_PATH, TELEMETRY_SETTINGS_PATH } from '../headless/lib/explorerHandoff.js';
|
|
11
|
+
/**
|
|
12
|
+
* The three Observability cards of the telemetry slice, in registry order:
|
|
13
|
+
*
|
|
14
|
+
* - `Telemetry` (`/admin/settings/telemetry`, `telemetry:read`): NO `feature`,
|
|
15
|
+
* deliberately; it is where telemetry is switched on. Saving needs
|
|
16
|
+
* `telemetry:write`, which the page gates.
|
|
17
|
+
* - `Telemetry Explorer` (`…/explorer`, `telemetry:query`, `feature: 'telemetry'`).
|
|
18
|
+
* - `Telemetry Dashboard` (`…/dashboard`, `telemetry:query`, `feature: 'telemetry'`).
|
|
19
|
+
*
|
|
20
|
+
* The permissions are the exact strings the telemetry controllers enforce.
|
|
21
|
+
* Both nested pages sit under the Telemetry route, so a longest-prefix title
|
|
22
|
+
* resolver names them correctly.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* // apps/web/src/config/adminSections.tsx, the Observability section
|
|
27
|
+
* cards: [...telemetryAdminCards, { ...doctorSettingsPage.card, Icon: doctorSettingsPage.Icon }],
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @extensionPoint component
|
|
31
|
+
* @stability experimental
|
|
32
|
+
*/
|
|
33
|
+
export const telemetryAdminCards = Object.freeze([
|
|
34
|
+
{
|
|
35
|
+
title: 'Telemetry',
|
|
36
|
+
description: 'Turn telemetry collection on, choose how long it is kept, set query limits and configure the AI assistant.',
|
|
37
|
+
Icon: InsightsOutlinedIcon,
|
|
38
|
+
path: TELEMETRY_SETTINGS_PATH,
|
|
39
|
+
permission: 'telemetry:read',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
title: 'Telemetry Explorer',
|
|
43
|
+
description: 'Query traces, logs and metrics with SQL, export the results, and ask the AI assistant for help.',
|
|
44
|
+
Icon: TerminalOutlinedIcon,
|
|
45
|
+
path: TELEMETRY_EXPLORER_PATH,
|
|
46
|
+
permission: 'telemetry:query',
|
|
47
|
+
feature: 'telemetry',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: 'Telemetry Dashboard',
|
|
51
|
+
description: 'See at a glance whether anything is wrong: error rate, latency, error logs and the top failing routes.',
|
|
52
|
+
Icon: MonitorHeartOutlinedIcon,
|
|
53
|
+
path: TELEMETRY_DASHBOARD_PATH,
|
|
54
|
+
permission: 'telemetry:query',
|
|
55
|
+
feature: 'telemetry',
|
|
56
|
+
},
|
|
57
|
+
]);
|
|
58
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/telemetry/ui/admin.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,uEAAuE;AAEvE,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,wBAAwB,MAAM,0CAA0C,CAAC;AAChF,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAahI;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkC,MAAM,CAAC,MAAM,CAAC;IAC9E;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,4GAA4G;QAC9G,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,gBAAgB;KAC7B;IACD;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,iGAAiG;QAC9G,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE,WAAW;KACrB;IACD;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,wGAAwG;QAC1G,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE,WAAW;KACrB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The frame the telemetry assistant (`AssistantPanel`) lives in — issue #579
|
|
3
|
+
* (extracted from the Telemetry Explorer, #537), epic #576.
|
|
4
|
+
*
|
|
5
|
+
* Shared by the Telemetry Explorer and the Telemetry Dashboard so both show
|
|
6
|
+
* the assistant the same way. Which frame is the CALLER's decision, by size:
|
|
7
|
+
*
|
|
8
|
+
* - `docked` a persistent right drawer below the AppBar,
|
|
9
|
+
* {@link ASSISTANT_WIDTH} wide. It does not cover the page:
|
|
10
|
+
* the caller pads its content by that width.
|
|
11
|
+
* - `overlay` a temporary right drawer over the page, with a backdrop
|
|
12
|
+
* (Escape or a backdrop click closes it).
|
|
13
|
+
* - `fullscreen` a full-screen dialog (phones).
|
|
14
|
+
*
|
|
15
|
+
* Focus: the modal frames (`overlay`, `fullscreen`) trap focus while open and,
|
|
16
|
+
* by default, MUI restores it on close. A caller that knows better where focus
|
|
17
|
+
* belongs (the control that opened the assistant may have been inside a menu
|
|
18
|
+
* that no longer exists) passes `returnFocus`; the frame then disables MUI's
|
|
19
|
+
* restore and focuses what `returnFocus()` returns once it closes — for the
|
|
20
|
+
* non-modal `docked` frame too.
|
|
21
|
+
*/
|
|
22
|
+
import { type ReactNode } from 'react';
|
|
23
|
+
/** The docked / overlay drawer's width; a docked caller pads its content by it. */
|
|
24
|
+
export declare const ASSISTANT_WIDTH = 400;
|
|
25
|
+
export type AssistantContainerVariant = 'docked' | 'overlay' | 'fullscreen';
|
|
26
|
+
export interface AssistantContainerProps {
|
|
27
|
+
open: boolean;
|
|
28
|
+
onClose: () => void;
|
|
29
|
+
variant: AssistantContainerVariant;
|
|
30
|
+
/** Where focus goes once the frame closes. Omitted: MUI's default. */
|
|
31
|
+
returnFocus?: () => HTMLElement | null;
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
export declare function AssistantContainer({ open, onClose, variant, returnFocus, children }: AssistantContainerProps): import("react").JSX.Element;
|
|
35
|
+
//# sourceMappingURL=AssistantContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantContainer.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1D,mFAAmF;AACnF,eAAO,MAAM,eAAe,MAAM,CAAC;AAKnC,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAE5E,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,yBAAyB,CAAC;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAoBD,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,uBAAuB,+BA0F5G"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The frame the telemetry assistant (`AssistantPanel`) lives in — issue #579
|
|
4
|
+
* (extracted from the Telemetry Explorer, #537), epic #576.
|
|
5
|
+
*
|
|
6
|
+
* Shared by the Telemetry Explorer and the Telemetry Dashboard so both show
|
|
7
|
+
* the assistant the same way. Which frame is the CALLER's decision, by size:
|
|
8
|
+
*
|
|
9
|
+
* - `docked` a persistent right drawer below the AppBar,
|
|
10
|
+
* {@link ASSISTANT_WIDTH} wide. It does not cover the page:
|
|
11
|
+
* the caller pads its content by that width.
|
|
12
|
+
* - `overlay` a temporary right drawer over the page, with a backdrop
|
|
13
|
+
* (Escape or a backdrop click closes it).
|
|
14
|
+
* - `fullscreen` a full-screen dialog (phones).
|
|
15
|
+
*
|
|
16
|
+
* Focus: the modal frames (`overlay`, `fullscreen`) trap focus while open and,
|
|
17
|
+
* by default, MUI restores it on close. A caller that knows better where focus
|
|
18
|
+
* belongs (the control that opened the assistant may have been inside a menu
|
|
19
|
+
* that no longer exists) passes `returnFocus`; the frame then disables MUI's
|
|
20
|
+
* restore and focuses what `returnFocus()` returns once it closes — for the
|
|
21
|
+
* non-modal `docked` frame too.
|
|
22
|
+
*/
|
|
23
|
+
import { useEffect, useRef } from 'react';
|
|
24
|
+
import { Dialog, DialogContent, DialogTitle, Divider, Drawer, IconButton, Stack, Typography } from '@mui/material';
|
|
25
|
+
import CloseIcon from '@mui/icons-material/Close';
|
|
26
|
+
/** The docked / overlay drawer's width; a docked caller pads its content by it. */
|
|
27
|
+
export const ASSISTANT_WIDTH = 400;
|
|
28
|
+
/** The AppBar's height from `sm` up — the docked drawer sits below it. */
|
|
29
|
+
const APP_BAR_HEIGHT = 64;
|
|
30
|
+
const TITLE_ID = 'telemetry-assistant-title';
|
|
31
|
+
function DrawerHeader({ onClose }) {
|
|
32
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Stack, { direction: "row", sx: { alignItems: 'center', justifyContent: 'space-between', mb: 1 }, children: [_jsx(Typography, { variant: "h6", component: "h2", children: "Assistant" }), _jsx(IconButton, { "aria-label": "Close assistant", onClick: onClose, children: _jsx(CloseIcon, {}) })] }), _jsx(Divider, { sx: { mb: 1 } })] }));
|
|
33
|
+
}
|
|
34
|
+
export function AssistantContainer({ open, onClose, variant, returnFocus, children }) {
|
|
35
|
+
const returnFocusRef = useRef(returnFocus);
|
|
36
|
+
returnFocusRef.current = returnFocus;
|
|
37
|
+
const wasOpen = useRef(open);
|
|
38
|
+
// Closing (open → false): hand focus back to where the caller says.
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (wasOpen.current && !open && returnFocusRef.current) {
|
|
41
|
+
const target = returnFocusRef.current();
|
|
42
|
+
// After the frame's own close handling has run.
|
|
43
|
+
const timer = setTimeout(() => target?.focus(), 0);
|
|
44
|
+
wasOpen.current = open;
|
|
45
|
+
return () => clearTimeout(timer);
|
|
46
|
+
}
|
|
47
|
+
wasOpen.current = open;
|
|
48
|
+
return undefined;
|
|
49
|
+
}, [open]);
|
|
50
|
+
const customFocus = returnFocus !== undefined;
|
|
51
|
+
if (variant === 'fullscreen') {
|
|
52
|
+
return (_jsxs(Dialog, { fullScreen: true, open: open, onClose: onClose, "aria-labelledby": TITLE_ID, disableRestoreFocus: customFocus, children: [_jsxs(DialogTitle, { id: TITLE_ID, sx: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' }, children: ["Assistant", _jsx(IconButton, { "aria-label": "Close assistant", onClick: onClose, children: _jsx(CloseIcon, {}) })] }), _jsx(DialogContent, { sx: { display: 'flex', flexDirection: 'column' }, children: children })] }));
|
|
53
|
+
}
|
|
54
|
+
if (variant === 'overlay') {
|
|
55
|
+
return (_jsxs(Drawer, { anchor: "right", open: open, onClose: onClose, disableRestoreFocus: customFocus, slotProps: {
|
|
56
|
+
paper: {
|
|
57
|
+
sx: {
|
|
58
|
+
width: ASSISTANT_WIDTH,
|
|
59
|
+
maxWidth: '90vw',
|
|
60
|
+
p: 2,
|
|
61
|
+
boxSizing: 'border-box',
|
|
62
|
+
display: 'flex',
|
|
63
|
+
flexDirection: 'column',
|
|
64
|
+
},
|
|
65
|
+
role: 'dialog',
|
|
66
|
+
'aria-label': 'Telemetry assistant',
|
|
67
|
+
},
|
|
68
|
+
}, children: [_jsx(DrawerHeader, { onClose: onClose }), _jsx(Stack, { sx: { flex: 1, minHeight: 0 }, children: children })] }));
|
|
69
|
+
}
|
|
70
|
+
return (_jsxs(Drawer, { anchor: "right", variant: "persistent", open: open, slotProps: {
|
|
71
|
+
paper: {
|
|
72
|
+
sx: {
|
|
73
|
+
width: ASSISTANT_WIDTH,
|
|
74
|
+
top: APP_BAR_HEIGHT,
|
|
75
|
+
height: `calc(100% - ${APP_BAR_HEIGHT}px)`,
|
|
76
|
+
p: 2,
|
|
77
|
+
boxSizing: 'border-box',
|
|
78
|
+
},
|
|
79
|
+
'aria-label': 'Telemetry assistant',
|
|
80
|
+
},
|
|
81
|
+
}, children: [_jsx(DrawerHeader, { onClose: onClose }), children] }));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=AssistantContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantContainer.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type AssistantMessage } from '../../headless/hooks/useTelemetryAssistant.js';
|
|
2
|
+
export declare const ASSISTANT_EXAMPLE_PROMPTS: readonly ["Are there any errors in the last hour?", "Why is the API slow?", "Is telemetry being ingested correctly?"];
|
|
3
|
+
export interface AssistantPanelProps {
|
|
4
|
+
messages: AssistantMessage[];
|
|
5
|
+
isStreaming: boolean;
|
|
6
|
+
onAsk: (question: string) => void;
|
|
7
|
+
onStop: () => void;
|
|
8
|
+
onInsert: (sql: string) => void;
|
|
9
|
+
onInsertAndRun: (sql: string) => void;
|
|
10
|
+
/** e.g. `openai · gpt-5-mini`, when the viewer may read the settings. */
|
|
11
|
+
modelCaption?: string | null;
|
|
12
|
+
/** Starts over: aborts any in-flight turn and forgets the conversation (#574). */
|
|
13
|
+
onNewChat?: () => void;
|
|
14
|
+
/**
|
|
15
|
+
* Prefills the question box — NOT sent; the reader edits it and presses Ask
|
|
16
|
+
* (#579, the dashboard's "Ask assistant"). Read when the panel mounts: a
|
|
17
|
+
* caller that prefills again gives the panel a new `key`.
|
|
18
|
+
*/
|
|
19
|
+
initialQuestion?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function AssistantPanel({ messages, isStreaming, onAsk, onStop, onInsert, onInsertAndRun, modelCaption, onNewChat, initialQuestion, }: AssistantPanelProps): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=AssistantPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantPanel.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,+CAA+C,CAAC;AAmDvD,eAAO,MAAM,yBAAyB,uHAI5B,CAAC;AA0GX,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,SAAS,EACT,eAAe,GAChB,EAAE,mBAAmB,+BA4MrB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The Telemetry Explorer's assistant conversation — issue #537, epic #528;
|
|
4
|
+
* the troubleshooting agent — issue #571.
|
|
5
|
+
*
|
|
6
|
+
* A local renderer rather than `AiChatThread`: that thread renders the
|
|
7
|
+
* playground's `AiChatMessage` (text deltas, reasoning, hosted-tool output),
|
|
8
|
+
* while a telemetry turn is an investigation (TOOL STEPS, with the model's
|
|
9
|
+
* interim thoughts) plus one structured answer: an analysed report, or on an
|
|
10
|
+
* older API `{ sql, explanation }`. The look follows `AiChatThread` — user
|
|
11
|
+
* bubbles on the right, outlined assistant cards, a `role="log"` region, plain
|
|
12
|
+
* text only (nothing the model says is interpreted as HTML).
|
|
13
|
+
*
|
|
14
|
+
* "New chat" (issue #574) sits in the top row beside the model caption, so the
|
|
15
|
+
* desktop drawer and the phone dialog share it; it calls `onNewChat` (the
|
|
16
|
+
* hook's `clear()`, which aborts any in-flight turn) and empties the input.
|
|
17
|
+
*/
|
|
18
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
19
|
+
import { Alert, Box, Button, Chip, IconButton, Paper, Stack, TextField, Tooltip, Typography, useMediaQuery, useTheme, } from '@mui/material';
|
|
20
|
+
import StopIcon from '@mui/icons-material/Stop';
|
|
21
|
+
import SendIcon from '@mui/icons-material/Send';
|
|
22
|
+
import AddCommentOutlinedIcon from '@mui/icons-material/AddCommentOutlined';
|
|
23
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
|
24
|
+
import CheckIcon from '@mui/icons-material/Check';
|
|
25
|
+
import DownloadIcon from '@mui/icons-material/Download';
|
|
26
|
+
import { ASSISTANT_QUESTION_MAX, } from '../../headless/hooks/useTelemetryAssistant.js';
|
|
27
|
+
import { AssistantTimeline } from './AssistantTimeline.js';
|
|
28
|
+
import { LegacyAnswer, ReportCard } from './AssistantReport.js';
|
|
29
|
+
import { assistantExportFilename, conversationToMarkdown, replyToMarkdown } from '../../headless/lib/assistantExport.js';
|
|
30
|
+
import { downloadBlob } from '../../headless/services/telemetry.js';
|
|
31
|
+
const COPY_FEEDBACK_MS = 2000;
|
|
32
|
+
const visuallyHidden = {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
width: 1,
|
|
35
|
+
height: 1,
|
|
36
|
+
overflow: 'hidden',
|
|
37
|
+
clip: 'rect(0 0 0 0)',
|
|
38
|
+
whiteSpace: 'nowrap',
|
|
39
|
+
};
|
|
40
|
+
/** Clipboard write with a 2s "Copied" / "Copy failed" feedback state. */
|
|
41
|
+
function useCopy() {
|
|
42
|
+
const [state, setState] = useState('idle');
|
|
43
|
+
const timer = useRef(null);
|
|
44
|
+
useEffect(() => () => {
|
|
45
|
+
if (timer.current)
|
|
46
|
+
clearTimeout(timer.current);
|
|
47
|
+
}, []);
|
|
48
|
+
const copy = useCallback(async (text) => {
|
|
49
|
+
let next;
|
|
50
|
+
try {
|
|
51
|
+
await navigator.clipboard.writeText(text);
|
|
52
|
+
next = 'copied';
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
next = 'failed';
|
|
56
|
+
}
|
|
57
|
+
setState(next);
|
|
58
|
+
if (timer.current)
|
|
59
|
+
clearTimeout(timer.current);
|
|
60
|
+
timer.current = setTimeout(() => setState('idle'), COPY_FEEDBACK_MS);
|
|
61
|
+
}, []);
|
|
62
|
+
return [state, copy];
|
|
63
|
+
}
|
|
64
|
+
function CopyStatus({ state }) {
|
|
65
|
+
return (_jsx(Box, { component: "span", role: "status", "aria-live": "polite", sx: visuallyHidden, children: state === 'copied' ? 'Copied' : state === 'failed' ? 'Copy failed' : '' }));
|
|
66
|
+
}
|
|
67
|
+
export const ASSISTANT_EXAMPLE_PROMPTS = [
|
|
68
|
+
'Are there any errors in the last hour?',
|
|
69
|
+
'Why is the API slow?',
|
|
70
|
+
'Is telemetry being ingested correctly?',
|
|
71
|
+
];
|
|
72
|
+
function Reply({ message, onInsert, onInsertAndRun, }) {
|
|
73
|
+
const ref = useRef(null);
|
|
74
|
+
const hasAnswer = message.answer !== null;
|
|
75
|
+
// When the report lands, bring its top into view (not the bottom of a long
|
|
76
|
+
// report) — on a phone the summary is what matters first.
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (hasAnswer)
|
|
79
|
+
ref.current?.scrollIntoView?.({ block: 'start' });
|
|
80
|
+
}, [hasAnswer]);
|
|
81
|
+
const answer = message.answer;
|
|
82
|
+
const [copyState, copy] = useCopy();
|
|
83
|
+
const canCopy = message.status !== 'streaming' && (message.answer !== null || message.error !== null);
|
|
84
|
+
return (_jsxs(Paper, { ref: ref, variant: "outlined", "data-testid": "assistant-reply", "data-status": message.status, "aria-busy": message.status === 'streaming', sx: { px: 1.5, py: 1, minWidth: 0, overflowWrap: 'anywhere' }, children: [_jsx(AssistantTimeline, { steps: message.steps, isInvestigating: message.status === 'streaming' && !answer, collapsible: hasAnswer }), answer && (_jsx(Box, { sx: { mt: message.steps.length > 0 ? 0.5 : 0 }, children: answer.report ? (_jsx(ReportCard, { report: answer.report, onInsert: onInsert, onInsertAndRun: onInsertAndRun })) : (_jsx(LegacyAnswer, { answer: answer, onInsert: onInsert, onInsertAndRun: onInsertAndRun })) })), message.error && (_jsxs(Alert, { severity: "error", sx: { mt: 1 }, children: [message.error.message, message.error.code && (_jsx(Typography, { variant: "caption", component: "div", children: message.error.code }))] })), message.status === 'stopped' && _jsx(Chip, { size: "small", label: "Stopped", sx: { mt: 1 } }), canCopy && (_jsxs(Box, { sx: { display: 'flex', justifyContent: 'flex-end', mt: 0.5 }, children: [_jsx(Tooltip, { title: copyState === 'copied' ? 'Copied' : copyState === 'failed' ? 'Copy failed' : 'Copy this reply', children: _jsx(IconButton, { size: "small", "aria-label": "Copy this reply", "data-testid": "assistant-copy-reply", color: copyState === 'failed' ? 'error' : 'default', onClick: () => void copy(replyToMarkdown(message)), children: copyState === 'copied' ? _jsx(CheckIcon, { fontSize: "small" }) : _jsx(ContentCopyIcon, { fontSize: "small" }) }) }), _jsx(CopyStatus, { state: copyState })] }))] }));
|
|
85
|
+
}
|
|
86
|
+
function EmptyState({ disabled, onAsk }) {
|
|
87
|
+
return (_jsxs(Box, { children: [_jsx(Typography, { variant: "body2", color: "text.secondary", children: "Describe a problem or ask a question. The assistant investigates on its own \u2014 it checks the app's configuration, overall health, errors and traces by running read-only queries \u2014 and reports what it found, the likely cause and what to do next." }), _jsx(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { flexWrap: 'wrap', mt: 1.5 }, children: ASSISTANT_EXAMPLE_PROMPTS.map((prompt) => (_jsx(Chip, { label: prompt, variant: "outlined", clickable: true, disabled: disabled, onClick: () => onAsk(prompt), sx: { maxWidth: '100%', height: 'auto', '& .MuiChip-label': { whiteSpace: 'normal', py: 0.5 } } }, prompt))) })] }));
|
|
88
|
+
}
|
|
89
|
+
export function AssistantPanel({ messages, isStreaming, onAsk, onStop, onInsert, onInsertAndRun, modelCaption, onNewChat, initialQuestion, }) {
|
|
90
|
+
const [question, setQuestion] = useState(() => (initialQuestion ?? '').slice(0, ASSISTANT_QUESTION_MAX));
|
|
91
|
+
const endRef = useRef(null);
|
|
92
|
+
const last = messages[messages.length - 1];
|
|
93
|
+
// Follow the investigation as it streams; once a reply has its answer, that
|
|
94
|
+
// reply scrolls its own top into view instead.
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (last?.role === 'assistant' && last.answer)
|
|
97
|
+
return;
|
|
98
|
+
endRef.current?.scrollIntoView?.({ block: 'end' });
|
|
99
|
+
}, [messages.length, last]);
|
|
100
|
+
const submit = (event) => {
|
|
101
|
+
event?.preventDefault();
|
|
102
|
+
if (!question.trim() || isStreaming)
|
|
103
|
+
return;
|
|
104
|
+
onAsk(question);
|
|
105
|
+
setQuestion('');
|
|
106
|
+
};
|
|
107
|
+
const isCompact = useMediaQuery(useTheme().breakpoints.down('sm'));
|
|
108
|
+
const hasMessages = messages.length > 0;
|
|
109
|
+
const showNewChat = Boolean(onNewChat) && hasMessages;
|
|
110
|
+
const [copyState, copy] = useCopy();
|
|
111
|
+
const copyConversation = () => void copy(conversationToMarkdown(messages, { exportedAt: new Date(), modelCaption }));
|
|
112
|
+
const downloadConversation = () => {
|
|
113
|
+
const now = new Date();
|
|
114
|
+
const markdown = conversationToMarkdown(messages, { exportedAt: now, modelCaption });
|
|
115
|
+
downloadBlob(new Blob([markdown], { type: 'text/markdown;charset=utf-8' }), assistantExportFilename(now));
|
|
116
|
+
};
|
|
117
|
+
const copyLabel = copyState === 'copied' ? 'Copied' : copyState === 'failed' ? 'Copy failed' : 'Copy';
|
|
118
|
+
const copyIcon = copyState === 'copied' ? _jsx(CheckIcon, {}) : _jsx(ContentCopyIcon, {});
|
|
119
|
+
const newChat = () => {
|
|
120
|
+
setQuestion('');
|
|
121
|
+
onNewChat?.();
|
|
122
|
+
};
|
|
123
|
+
const onKeyDown = (event) => {
|
|
124
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
submit();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', height: '100%', minHeight: 0 }, children: [(modelCaption || showNewChat || hasMessages) && (_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1, mb: 1, minWidth: 0 }, children: [_jsx(Typography, { variant: "caption", color: "text.secondary", noWrap: true, title: modelCaption ?? undefined, sx: { flex: 1, minWidth: 0 }, "data-testid": modelCaption ? 'assistant-model' : undefined, children: modelCaption }), hasMessages && (_jsxs(_Fragment, { children: [isCompact ? (_jsxs(Box, { sx: { display: 'flex', flexShrink: 0 }, children: [_jsx(Tooltip, { title: copyLabel === 'Copy' ? 'Copy conversation' : copyLabel, children: _jsx("span", { children: _jsx(IconButton, { size: "small", "aria-label": "Copy conversation", "data-testid": "assistant-copy-conversation", disabled: isStreaming, color: copyState === 'failed' ? 'error' : 'default', onClick: copyConversation, children: copyIcon }) }) }), _jsx(Tooltip, { title: "Download conversation", children: _jsx("span", { children: _jsx(IconButton, { size: "small", "aria-label": "Download conversation", "data-testid": "assistant-download-conversation", disabled: isStreaming, onClick: downloadConversation, children: _jsx(DownloadIcon, {}) }) }) })] })) : (_jsxs(Box, { sx: { display: 'flex', flexShrink: 0 }, children: [_jsx(Button, { size: "small", startIcon: copyIcon, "aria-label": "Copy conversation", "data-testid": "assistant-copy-conversation", disabled: isStreaming, color: copyState === 'failed' ? 'error' : 'primary', onClick: copyConversation, children: copyLabel }), _jsx(Button, { size: "small", startIcon: _jsx(DownloadIcon, {}), "aria-label": "Download conversation", "data-testid": "assistant-download-conversation", disabled: isStreaming, onClick: downloadConversation, children: "Download" })] })), _jsx(CopyStatus, { state: copyState })] })), showNewChat && (_jsx(Button, { size: "small", onClick: newChat, startIcon: _jsx(AddCommentOutlinedIcon, {}), "aria-label": "Start a new chat", "data-testid": "assistant-new-chat", sx: { flexShrink: 0 }, children: "New chat" }))] })), _jsxs(Box, { role: "log", "aria-label": "Assistant conversation", "aria-live": "polite", sx: {
|
|
130
|
+
flex: 1,
|
|
131
|
+
overflowY: 'auto',
|
|
132
|
+
overflowX: 'hidden',
|
|
133
|
+
display: 'flex',
|
|
134
|
+
flexDirection: 'column',
|
|
135
|
+
gap: 1.5,
|
|
136
|
+
minHeight: 0,
|
|
137
|
+
minWidth: 0,
|
|
138
|
+
pb: 1,
|
|
139
|
+
}, children: [messages.length === 0 && _jsx(EmptyState, { disabled: isStreaming, onAsk: onAsk }), messages.map((message) => message.role === 'user' ? (_jsx(Paper, { elevation: 0, "data-testid": "assistant-question", sx: {
|
|
140
|
+
alignSelf: 'flex-end',
|
|
141
|
+
maxWidth: '90%',
|
|
142
|
+
px: 1.5,
|
|
143
|
+
py: 1,
|
|
144
|
+
bgcolor: 'primary.main',
|
|
145
|
+
color: 'primary.contrastText',
|
|
146
|
+
whiteSpace: 'pre-wrap',
|
|
147
|
+
wordBreak: 'break-word',
|
|
148
|
+
}, children: message.text }, message.id)) : (_jsx(Reply, { message: message, onInsert: onInsert, onInsertAndRun: onInsertAndRun }, message.id))), _jsx("div", { ref: endRef })] }), _jsxs(Box, { component: "form", onSubmit: submit, sx: { pt: 1, display: 'flex', gap: 1, alignItems: 'flex-end' }, children: [_jsx(TextField, { fullWidth: true, multiline: true, maxRows: 6, autoFocus: Boolean(initialQuestion), size: "small", placeholder: "Describe a problem or ask a question\u2026", value: question, onChange: (event) => setQuestion(event.target.value), onKeyDown: onKeyDown, slotProps: { htmlInput: { 'aria-label': 'Ask the assistant', maxLength: ASSISTANT_QUESTION_MAX } } }), isStreaming ? (_jsx(Button, { variant: "outlined", color: "inherit", onClick: onStop, startIcon: _jsx(StopIcon, {}), children: "Stop" })) : (_jsx(Button, { type: "submit", variant: "contained", disabled: !question.trim(), startIcon: _jsx(SendIcon, {}), children: "Ask" }))] })] }));
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=AssistantPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantPanel.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TelemetryAssistantAnswer, TelemetryAssistantReport } from '../../headless/services/telemetry.js';
|
|
2
|
+
export interface SqlActions {
|
|
3
|
+
onInsert: (sql: string) => void;
|
|
4
|
+
onInsertAndRun: (sql: string) => void;
|
|
5
|
+
}
|
|
6
|
+
/** The pre-#571 answer: the explanation, and the one SQL block when there is one. */
|
|
7
|
+
export declare function LegacyAnswer({ answer, onInsert, onInsertAndRun }: {
|
|
8
|
+
answer: TelemetryAssistantAnswer;
|
|
9
|
+
} & SqlActions): import("react").JSX.Element;
|
|
10
|
+
export declare function ReportCard({ report, onInsert, onInsertAndRun }: {
|
|
11
|
+
report: TelemetryAssistantReport;
|
|
12
|
+
} & SqlActions): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=AssistantReport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantReport.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantReport.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EAIzB,MAAM,sCAAsC,CAAC;AA2B9C,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AA8CD,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,GAAG,UAAU,+BAcnH;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,GAAG,UAAU,+BA0JjH"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The troubleshooting agent's analysed report — issue #571.
|
|
4
|
+
*
|
|
5
|
+
* `ReportCard` renders `answer.report`: a status and confidence, the summary,
|
|
6
|
+
* findings with severity, the likely root cause, numbered next steps, and the
|
|
7
|
+
* supporting queries (collapsed SQL with Insert / Insert & run). `LegacyAnswer`
|
|
8
|
+
* is the pre-#571 rendering (explanation + one SQL block), used whenever the
|
|
9
|
+
* API sent no report (an older API, or a model reply that did not parse).
|
|
10
|
+
*
|
|
11
|
+
* Plain text only: every string here came from a model and is rendered as a
|
|
12
|
+
* React text node, never as HTML or markdown. Mobile-first: chips wrap, long
|
|
13
|
+
* words break, and SQL scrolls inside its own box.
|
|
14
|
+
*/
|
|
15
|
+
import { useEffect, useRef, useState } from 'react';
|
|
16
|
+
import { Accordion, AccordionDetails, AccordionSummary, Box, Button, Chip, Link, Stack, Typography, } from '@mui/material';
|
|
17
|
+
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
18
|
+
const STATUS_CHIPS = {
|
|
19
|
+
issue_found: { label: 'Issue found', color: 'error' },
|
|
20
|
+
no_issue_found: { label: 'No issue found', color: 'success' },
|
|
21
|
+
inconclusive: { label: 'Inconclusive', color: 'warning' },
|
|
22
|
+
no_data: { label: 'No data', color: 'default' },
|
|
23
|
+
};
|
|
24
|
+
const SEVERITY_COLORS = {
|
|
25
|
+
critical: 'error',
|
|
26
|
+
high: 'error',
|
|
27
|
+
medium: 'warning',
|
|
28
|
+
low: 'info',
|
|
29
|
+
info: 'default',
|
|
30
|
+
};
|
|
31
|
+
const CONFIDENCE_LABELS = {
|
|
32
|
+
high: 'High confidence',
|
|
33
|
+
medium: 'Medium confidence',
|
|
34
|
+
low: 'Low confidence',
|
|
35
|
+
};
|
|
36
|
+
const TEXT_SX = { whiteSpace: 'pre-wrap', wordBreak: 'break-word' };
|
|
37
|
+
function SqlBlock({ sql, testId }) {
|
|
38
|
+
return (_jsx(Box, { component: "pre", "data-testid": testId, sx: {
|
|
39
|
+
m: 0,
|
|
40
|
+
p: 1,
|
|
41
|
+
borderRadius: 1,
|
|
42
|
+
bgcolor: 'action.hover',
|
|
43
|
+
fontFamily: 'monospace',
|
|
44
|
+
fontSize: 12,
|
|
45
|
+
whiteSpace: 'pre-wrap',
|
|
46
|
+
wordBreak: 'break-word',
|
|
47
|
+
maxHeight: 240,
|
|
48
|
+
overflow: 'auto',
|
|
49
|
+
}, children: sql }));
|
|
50
|
+
}
|
|
51
|
+
function QueryButtons({ sql, onInsert, onInsertAndRun }) {
|
|
52
|
+
return (_jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 1, flexWrap: 'wrap' }, children: [_jsx(Button, { size: "small", onClick: () => onInsert(sql), children: "Insert into editor" }), _jsx(Button, { size: "small", variant: "outlined", onClick: () => onInsertAndRun(sql), children: "Insert & run" })] }));
|
|
53
|
+
}
|
|
54
|
+
function SectionHeading({ children }) {
|
|
55
|
+
return (_jsx(Typography, { variant: "subtitle2", component: "h3", sx: { mt: 1.5, mb: 0.5 }, children: children }));
|
|
56
|
+
}
|
|
57
|
+
/** The pre-#571 answer: the explanation, and the one SQL block when there is one. */
|
|
58
|
+
export function LegacyAnswer({ answer, onInsert, onInsertAndRun }) {
|
|
59
|
+
return (_jsxs(_Fragment, { children: [_jsx(Typography, { variant: "body2", component: "div", "data-testid": "assistant-explanation", sx: TEXT_SX, children: answer.explanation }), answer.sql && (_jsxs(Box, { sx: { mt: 1 }, children: [_jsx(SqlBlock, { sql: answer.sql, testId: "assistant-sql" }), _jsx(QueryButtons, { sql: answer.sql, onInsert: onInsert, onInsertAndRun: onInsertAndRun })] }))] }));
|
|
60
|
+
}
|
|
61
|
+
export function ReportCard({ report, onInsert, onInsertAndRun }) {
|
|
62
|
+
const status = STATUS_CHIPS[report.status] ?? { label: report.status, color: 'default' };
|
|
63
|
+
const [expanded, setExpanded] = useState(() => new Set());
|
|
64
|
+
const [scrollTarget, setScrollTarget] = useState(null);
|
|
65
|
+
const queryRefs = useRef([]);
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
if (scrollTarget === null)
|
|
68
|
+
return;
|
|
69
|
+
queryRefs.current[scrollTarget]?.scrollIntoView?.({ block: 'nearest', behavior: 'smooth' });
|
|
70
|
+
setScrollTarget(null);
|
|
71
|
+
}, [scrollTarget]);
|
|
72
|
+
const setQueryExpanded = (index, open) => setExpanded((prev) => {
|
|
73
|
+
const next = new Set(prev);
|
|
74
|
+
if (open)
|
|
75
|
+
next.add(index);
|
|
76
|
+
else
|
|
77
|
+
next.delete(index);
|
|
78
|
+
return next;
|
|
79
|
+
});
|
|
80
|
+
const viewQuery = (index) => {
|
|
81
|
+
setQueryExpanded(index, true);
|
|
82
|
+
setScrollTarget(index);
|
|
83
|
+
};
|
|
84
|
+
const hasQuery = (index) => typeof index === 'number' && Number.isInteger(index) && index >= 0 && index < report.queries.length;
|
|
85
|
+
return (_jsxs(Box, { "data-testid": "assistant-report", sx: { minWidth: 0 }, children: [_jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { flexWrap: 'wrap', mb: 1 }, children: [_jsx(Chip, { size: "small", label: status.label, color: status.color, "data-testid": "assistant-report-status", "data-status": report.status }), _jsx(Chip, { size: "small", variant: "outlined", label: CONFIDENCE_LABELS[report.confidence] ?? report.confidence })] }), _jsx(Typography, { variant: "body2", component: "div", "data-testid": "assistant-explanation", sx: TEXT_SX, children: report.summary }), report.findings.length > 0 && (_jsxs(_Fragment, { children: [_jsx(SectionHeading, { children: "Findings" }), _jsx(Stack, { component: "ul", spacing: 1, sx: { listStyle: 'none', m: 0, p: 0 }, children: report.findings.map((finding, i) => (_jsxs(Box, { component: "li", "data-testid": "assistant-finding", "data-severity": finding.severity, sx: { minWidth: 0 }, children: [_jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { alignItems: 'center', flexWrap: 'wrap' }, children: [_jsx(Chip, { size: "small", label: finding.severity, color: SEVERITY_COLORS[finding.severity] ?? 'default', sx: { textTransform: 'capitalize' } }), _jsx(Typography, { variant: "body2", component: "span", sx: { fontWeight: 600, ...TEXT_SX, minWidth: 0 }, children: finding.title })] }), finding.evidence && (_jsx(Typography, { variant: "body2", color: "text.secondary", component: "div", sx: { mt: 0.25, ...TEXT_SX }, children: finding.evidence })), hasQuery(finding.queryIndex) && (_jsx(Link, { component: "button", type: "button", variant: "caption", onClick: () => viewQuery(finding.queryIndex), sx: { mt: 0.25 }, children: "View query" }))] }, i))) })] })), report.rootCause && (_jsxs(_Fragment, { children: [_jsx(SectionHeading, { children: "Likely root cause" }), _jsx(Typography, { variant: "body2", component: "div", "data-testid": "assistant-root-cause", sx: TEXT_SX, children: report.rootCause })] })), report.recommendations.length > 0 && (_jsxs(_Fragment, { children: [_jsx(SectionHeading, { children: "Recommended next steps" }), _jsx(Box, { component: "ol", sx: { m: 0, pl: 2.5 }, children: report.recommendations.map((item, i) => (_jsx(Typography, { component: "li", variant: "body2", "data-testid": "assistant-recommendation", sx: { ...TEXT_SX, mb: 0.25 }, children: item }, i))) })] })), report.queries.length > 0 && (_jsxs(_Fragment, { children: [_jsx(SectionHeading, { children: "Supporting queries" }), _jsx(Stack, { spacing: 0.75, children: report.queries.map((query, i) => (_jsxs(Accordion, { ref: (el) => {
|
|
86
|
+
queryRefs.current[i] = el;
|
|
87
|
+
}, "data-testid": "assistant-query", variant: "outlined", disableGutters: true, expanded: expanded.has(i), onChange: (_, open) => setQueryExpanded(i, open), sx: { '&::before': { display: 'none' }, minWidth: 0 }, children: [_jsx(AccordionSummary, { expandIcon: _jsx(ExpandMoreIcon, {}), sx: { minHeight: 40, px: 1, '& .MuiAccordionSummary-content': { my: 0.75, minWidth: 0 } }, children: _jsx(Typography, { variant: "body2", sx: TEXT_SX, children: query.title || `Query ${i + 1}` }) }), _jsxs(AccordionDetails, { sx: { px: 1, pt: 0, pb: 1 }, children: [_jsx(SqlBlock, { sql: query.sql, testId: i === 0 ? 'assistant-sql' : undefined }), _jsx(QueryButtons, { sql: query.sql, onInsert: onInsert, onInsertAndRun: onInsertAndRun })] })] }, i))) })] }))] }));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=AssistantReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantReport.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantReport.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TelemetryAssistantStep } from '../../headless/services/telemetry.js';
|
|
2
|
+
export interface AssistantTimelineProps {
|
|
3
|
+
steps: TelemetryAssistantStep[];
|
|
4
|
+
/** The turn is still streaming (no answer yet). */
|
|
5
|
+
isInvestigating: boolean;
|
|
6
|
+
/** An answer arrived: collapse the steps behind a toggle. */
|
|
7
|
+
collapsible: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function AssistantTimeline({ steps, isInvestigating, collapsible }: AssistantTimelineProps): import("react").JSX.Element | null;
|
|
10
|
+
//# sourceMappingURL=AssistantTimeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantTimeline.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantTimeline.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAgGnF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,mDAAmD;IACnD,eAAe,EAAE,OAAO,CAAC;IACzB,6DAA6D;IAC7D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,sBAAsB,sCAuDhG"}
|