@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.
Files changed (356) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +96 -2
  4. package/dist/core/api-client.d.ts +112 -0
  5. package/dist/core/api-client.d.ts.map +1 -0
  6. package/dist/core/api-client.js +24 -0
  7. package/dist/core/api-client.js.map +1 -0
  8. package/dist/core/host.d.ts +74 -0
  9. package/dist/core/host.d.ts.map +1 -0
  10. package/dist/core/host.js +84 -0
  11. package/dist/core/host.js.map +1 -0
  12. package/dist/core/index.d.ts +7 -0
  13. package/dist/core/index.d.ts.map +1 -0
  14. package/dist/core/index.js +5 -0
  15. package/dist/core/index.js.map +1 -0
  16. package/dist/core/settings-page.d.ts +47 -0
  17. package/dist/core/settings-page.d.ts.map +1 -0
  18. package/dist/core/settings-page.js +5 -0
  19. package/dist/core/settings-page.js.map +1 -0
  20. package/dist/core/viewer.d.ts +14 -0
  21. package/dist/core/viewer.d.ts.map +1 -0
  22. package/dist/core/viewer.js +4 -0
  23. package/dist/core/viewer.js.map +1 -0
  24. package/dist/doctor/headless/categories.d.ts +31 -0
  25. package/dist/doctor/headless/categories.d.ts.map +1 -0
  26. package/dist/doctor/headless/categories.js +41 -0
  27. package/dist/doctor/headless/categories.js.map +1 -0
  28. package/dist/doctor/headless/client.d.ts +33 -0
  29. package/dist/doctor/headless/client.d.ts.map +1 -0
  30. package/dist/doctor/headless/client.js +31 -0
  31. package/dist/doctor/headless/client.js.map +1 -0
  32. package/dist/doctor/headless/contract.d.ts +18 -0
  33. package/dist/doctor/headless/contract.d.ts.map +1 -0
  34. package/dist/doctor/headless/contract.js +15 -0
  35. package/dist/doctor/headless/contract.js.map +1 -0
  36. package/dist/doctor/headless/index.d.ts +12 -0
  37. package/dist/doctor/headless/index.d.ts.map +1 -0
  38. package/dist/doctor/headless/index.js +8 -0
  39. package/dist/doctor/headless/index.js.map +1 -0
  40. package/dist/doctor/headless/use-doctor.d.ts +36 -0
  41. package/dist/doctor/headless/use-doctor.d.ts.map +1 -0
  42. package/dist/doctor/headless/use-doctor.js +80 -0
  43. package/dist/doctor/headless/use-doctor.js.map +1 -0
  44. package/dist/doctor/headless/use-support-bundle-download.d.ts +68 -0
  45. package/dist/doctor/headless/use-support-bundle-download.d.ts.map +1 -0
  46. package/dist/doctor/headless/use-support-bundle-download.js +135 -0
  47. package/dist/doctor/headless/use-support-bundle-download.js.map +1 -0
  48. package/dist/doctor/internal/relative-time.d.ts +2 -0
  49. package/dist/doctor/internal/relative-time.d.ts.map +1 -0
  50. package/dist/doctor/internal/relative-time.js +29 -0
  51. package/dist/doctor/internal/relative-time.js.map +1 -0
  52. package/dist/doctor/internal/status-colors.d.ts +5 -0
  53. package/dist/doctor/internal/status-colors.d.ts.map +1 -0
  54. package/dist/doctor/internal/status-colors.js +29 -0
  55. package/dist/doctor/internal/status-colors.js.map +1 -0
  56. package/dist/doctor/internal/use-is-mounted.d.ts +2 -0
  57. package/dist/doctor/internal/use-is-mounted.d.ts.map +1 -0
  58. package/dist/doctor/internal/use-is-mounted.js +15 -0
  59. package/dist/doctor/internal/use-is-mounted.js.map +1 -0
  60. package/dist/doctor/ui/check-row.d.ts +54 -0
  61. package/dist/doctor/ui/check-row.d.ts.map +1 -0
  62. package/dist/doctor/ui/check-row.js +100 -0
  63. package/dist/doctor/ui/check-row.js.map +1 -0
  64. package/dist/doctor/ui/copy.d.ts +3 -0
  65. package/dist/doctor/ui/copy.d.ts.map +1 -0
  66. package/dist/doctor/ui/copy.js +6 -0
  67. package/dist/doctor/ui/copy.js.map +1 -0
  68. package/dist/doctor/ui/doctor-page.d.ts +50 -0
  69. package/dist/doctor/ui/doctor-page.d.ts.map +1 -0
  70. package/dist/doctor/ui/doctor-page.js +152 -0
  71. package/dist/doctor/ui/doctor-page.js.map +1 -0
  72. package/dist/doctor/ui/index.d.ts +8 -0
  73. package/dist/doctor/ui/index.d.ts.map +1 -0
  74. package/dist/doctor/ui/index.js +7 -0
  75. package/dist/doctor/ui/index.js.map +1 -0
  76. package/dist/doctor/ui/settings-page.d.ts +20 -0
  77. package/dist/doctor/ui/settings-page.d.ts.map +1 -0
  78. package/dist/doctor/ui/settings-page.js +32 -0
  79. package/dist/doctor/ui/settings-page.js.map +1 -0
  80. package/dist/doctor/ui/support-bundle-button.d.ts +37 -0
  81. package/dist/doctor/ui/support-bundle-button.d.ts.map +1 -0
  82. package/dist/doctor/ui/support-bundle-button.js +39 -0
  83. package/dist/doctor/ui/support-bundle-button.js.map +1 -0
  84. package/dist/index.d.ts +11 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +11 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/telemetry/headless/adapters/TelemetryWebAdapters.d.ts +106 -0
  89. package/dist/telemetry/headless/adapters/TelemetryWebAdapters.d.ts.map +1 -0
  90. package/dist/telemetry/headless/adapters/TelemetryWebAdapters.js +58 -0
  91. package/dist/telemetry/headless/adapters/TelemetryWebAdapters.js.map +1 -0
  92. package/dist/telemetry/headless/context/TelemetryConfigProvider.d.ts +43 -0
  93. package/dist/telemetry/headless/context/TelemetryConfigProvider.d.ts.map +1 -0
  94. package/dist/telemetry/headless/context/TelemetryConfigProvider.js +24 -0
  95. package/dist/telemetry/headless/context/TelemetryConfigProvider.js.map +1 -0
  96. package/dist/telemetry/headless/context/telemetryConfig.d.ts +68 -0
  97. package/dist/telemetry/headless/context/telemetryConfig.d.ts.map +1 -0
  98. package/dist/telemetry/headless/context/telemetryConfig.js +119 -0
  99. package/dist/telemetry/headless/context/telemetryConfig.js.map +1 -0
  100. package/dist/telemetry/headless/guards/RequireTelemetryEnabled.d.ts +35 -0
  101. package/dist/telemetry/headless/guards/RequireTelemetryEnabled.d.ts.map +1 -0
  102. package/dist/telemetry/headless/guards/RequireTelemetryEnabled.js +44 -0
  103. package/dist/telemetry/headless/guards/RequireTelemetryEnabled.js.map +1 -0
  104. package/dist/telemetry/headless/hooks/useTelemetryAdmin.d.ts +40 -0
  105. package/dist/telemetry/headless/hooks/useTelemetryAdmin.d.ts.map +1 -0
  106. package/dist/telemetry/headless/hooks/useTelemetryAdmin.js +111 -0
  107. package/dist/telemetry/headless/hooks/useTelemetryAdmin.js.map +1 -0
  108. package/dist/telemetry/headless/hooks/useTelemetryAssistant.d.ts +120 -0
  109. package/dist/telemetry/headless/hooks/useTelemetryAssistant.d.ts.map +1 -0
  110. package/dist/telemetry/headless/hooks/useTelemetryAssistant.js +185 -0
  111. package/dist/telemetry/headless/hooks/useTelemetryAssistant.js.map +1 -0
  112. package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.d.ts +12 -0
  113. package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.d.ts.map +1 -0
  114. package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.js +36 -0
  115. package/dist/telemetry/headless/hooks/useTelemetryAssistantAvailable.js.map +1 -0
  116. package/dist/telemetry/headless/hooks/useTelemetryConnection.d.ts +46 -0
  117. package/dist/telemetry/headless/hooks/useTelemetryConnection.d.ts.map +1 -0
  118. package/dist/telemetry/headless/hooks/useTelemetryConnection.js +133 -0
  119. package/dist/telemetry/headless/hooks/useTelemetryConnection.js.map +1 -0
  120. package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +147 -0
  121. package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts.map +1 -0
  122. package/dist/telemetry/headless/hooks/useTelemetryDashboard.js +231 -0
  123. package/dist/telemetry/headless/hooks/useTelemetryDashboard.js.map +1 -0
  124. package/dist/telemetry/headless/hooks/useTelemetryExplorer.d.ts +95 -0
  125. package/dist/telemetry/headless/hooks/useTelemetryExplorer.d.ts.map +1 -0
  126. package/dist/telemetry/headless/hooks/useTelemetryExplorer.js +197 -0
  127. package/dist/telemetry/headless/hooks/useTelemetryExplorer.js.map +1 -0
  128. package/dist/telemetry/headless/hooks/useTelemetryStack.d.ts +69 -0
  129. package/dist/telemetry/headless/hooks/useTelemetryStack.d.ts.map +1 -0
  130. package/dist/telemetry/headless/hooks/useTelemetryStack.js +129 -0
  131. package/dist/telemetry/headless/hooks/useTelemetryStack.js.map +1 -0
  132. package/dist/telemetry/headless/index.d.ts +34 -0
  133. package/dist/telemetry/headless/index.d.ts.map +1 -0
  134. package/dist/telemetry/headless/index.js +34 -0
  135. package/dist/telemetry/headless/index.js.map +1 -0
  136. package/dist/telemetry/headless/lib/assistantExport.d.ts +12 -0
  137. package/dist/telemetry/headless/lib/assistantExport.d.ts.map +1 -0
  138. package/dist/telemetry/headless/lib/assistantExport.js +116 -0
  139. package/dist/telemetry/headless/lib/assistantExport.js.map +1 -0
  140. package/dist/telemetry/headless/lib/dashboard/assistantPrompt.d.ts +91 -0
  141. package/dist/telemetry/headless/lib/dashboard/assistantPrompt.d.ts.map +1 -0
  142. package/dist/telemetry/headless/lib/dashboard/assistantPrompt.js +246 -0
  143. package/dist/telemetry/headless/lib/dashboard/assistantPrompt.js.map +1 -0
  144. package/dist/telemetry/headless/lib/dashboardState.d.ts +58 -0
  145. package/dist/telemetry/headless/lib/dashboardState.d.ts.map +1 -0
  146. package/dist/telemetry/headless/lib/dashboardState.js +153 -0
  147. package/dist/telemetry/headless/lib/dashboardState.js.map +1 -0
  148. package/dist/telemetry/headless/lib/explorerHandoff.d.ts +62 -0
  149. package/dist/telemetry/headless/lib/explorerHandoff.d.ts.map +1 -0
  150. package/dist/telemetry/headless/lib/explorerHandoff.js +77 -0
  151. package/dist/telemetry/headless/lib/explorerHandoff.js.map +1 -0
  152. package/dist/telemetry/headless/lib/format.d.ts +113 -0
  153. package/dist/telemetry/headless/lib/format.d.ts.map +1 -0
  154. package/dist/telemetry/headless/lib/format.js +280 -0
  155. package/dist/telemetry/headless/lib/format.js.map +1 -0
  156. package/dist/telemetry/headless/lib/metrics/metricSections.d.ts +44 -0
  157. package/dist/telemetry/headless/lib/metrics/metricSections.d.ts.map +1 -0
  158. package/dist/telemetry/headless/lib/metrics/metricSections.js +61 -0
  159. package/dist/telemetry/headless/lib/metrics/metricSections.js.map +1 -0
  160. package/dist/telemetry/headless/lib/metrics/topNPreference.d.ts +15 -0
  161. package/dist/telemetry/headless/lib/metrics/topNPreference.d.ts.map +1 -0
  162. package/dist/telemetry/headless/lib/metrics/topNPreference.js +33 -0
  163. package/dist/telemetry/headless/lib/metrics/topNPreference.js.map +1 -0
  164. package/dist/telemetry/headless/lib/queryHistory.d.ts +20 -0
  165. package/dist/telemetry/headless/lib/queryHistory.d.ts.map +1 -0
  166. package/dist/telemetry/headless/lib/queryHistory.js +53 -0
  167. package/dist/telemetry/headless/lib/queryHistory.js.map +1 -0
  168. package/dist/telemetry/headless/lib/starterQueries.d.ts +48 -0
  169. package/dist/telemetry/headless/lib/starterQueries.d.ts.map +1 -0
  170. package/dist/telemetry/headless/lib/starterQueries.js +84 -0
  171. package/dist/telemetry/headless/lib/starterQueries.js.map +1 -0
  172. package/dist/telemetry/headless/lib/traceLink.d.ts +26 -0
  173. package/dist/telemetry/headless/lib/traceLink.d.ts.map +1 -0
  174. package/dist/telemetry/headless/lib/traceLink.js +32 -0
  175. package/dist/telemetry/headless/lib/traceLink.js.map +1 -0
  176. package/dist/telemetry/headless/lib/unknownRoutes.d.ts +23 -0
  177. package/dist/telemetry/headless/lib/unknownRoutes.d.ts.map +1 -0
  178. package/dist/telemetry/headless/lib/unknownRoutes.js +35 -0
  179. package/dist/telemetry/headless/lib/unknownRoutes.js.map +1 -0
  180. package/dist/telemetry/headless/services/client.d.ts +144 -0
  181. package/dist/telemetry/headless/services/client.d.ts.map +1 -0
  182. package/dist/telemetry/headless/services/client.js +144 -0
  183. package/dist/telemetry/headless/services/client.js.map +1 -0
  184. package/dist/telemetry/headless/services/telemetry.d.ts +483 -0
  185. package/dist/telemetry/headless/services/telemetry.d.ts.map +1 -0
  186. package/dist/telemetry/headless/services/telemetry.js +190 -0
  187. package/dist/telemetry/headless/services/telemetry.js.map +1 -0
  188. package/dist/telemetry/headless/services/telemetryDashboard.d.ts +321 -0
  189. package/dist/telemetry/headless/services/telemetryDashboard.d.ts.map +1 -0
  190. package/dist/telemetry/headless/services/telemetryDashboard.js +103 -0
  191. package/dist/telemetry/headless/services/telemetryDashboard.js.map +1 -0
  192. package/dist/telemetry/internal/useIsMounted.d.ts +9 -0
  193. package/dist/telemetry/internal/useIsMounted.d.ts.map +1 -0
  194. package/dist/telemetry/internal/useIsMounted.js +19 -0
  195. package/dist/telemetry/internal/useIsMounted.js.map +1 -0
  196. package/dist/telemetry/internal/useVisiblePolling.d.ts +55 -0
  197. package/dist/telemetry/internal/useVisiblePolling.d.ts.map +1 -0
  198. package/dist/telemetry/internal/useVisiblePolling.js +96 -0
  199. package/dist/telemetry/internal/useVisiblePolling.js.map +1 -0
  200. package/dist/telemetry/internal/visuallyHidden.d.ts +12 -0
  201. package/dist/telemetry/internal/visuallyHidden.d.ts.map +1 -0
  202. package/dist/telemetry/internal/visuallyHidden.js +15 -0
  203. package/dist/telemetry/internal/visuallyHidden.js.map +1 -0
  204. package/dist/telemetry/theme/augment.d.ts +65 -0
  205. package/dist/telemetry/theme/augment.d.ts.map +1 -0
  206. package/dist/telemetry/theme/augment.js +37 -0
  207. package/dist/telemetry/theme/augment.js.map +1 -0
  208. package/dist/telemetry/theme/telemetryTokens.d.ts +121 -0
  209. package/dist/telemetry/theme/telemetryTokens.d.ts.map +1 -0
  210. package/dist/telemetry/theme/telemetryTokens.js +129 -0
  211. package/dist/telemetry/theme/telemetryTokens.js.map +1 -0
  212. package/dist/telemetry/ui/admin.d.ts +35 -0
  213. package/dist/telemetry/ui/admin.d.ts.map +1 -0
  214. package/dist/telemetry/ui/admin.js +58 -0
  215. package/dist/telemetry/ui/admin.js.map +1 -0
  216. package/dist/telemetry/ui/components/AssistantContainer.d.ts +35 -0
  217. package/dist/telemetry/ui/components/AssistantContainer.d.ts.map +1 -0
  218. package/dist/telemetry/ui/components/AssistantContainer.js +83 -0
  219. package/dist/telemetry/ui/components/AssistantContainer.js.map +1 -0
  220. package/dist/telemetry/ui/components/AssistantPanel.d.ts +22 -0
  221. package/dist/telemetry/ui/components/AssistantPanel.d.ts.map +1 -0
  222. package/dist/telemetry/ui/components/AssistantPanel.js +150 -0
  223. package/dist/telemetry/ui/components/AssistantPanel.js.map +1 -0
  224. package/dist/telemetry/ui/components/AssistantReport.d.ts +13 -0
  225. package/dist/telemetry/ui/components/AssistantReport.d.ts.map +1 -0
  226. package/dist/telemetry/ui/components/AssistantReport.js +89 -0
  227. package/dist/telemetry/ui/components/AssistantReport.js.map +1 -0
  228. package/dist/telemetry/ui/components/AssistantTimeline.d.ts +10 -0
  229. package/dist/telemetry/ui/components/AssistantTimeline.d.ts.map +1 -0
  230. package/dist/telemetry/ui/components/AssistantTimeline.js +84 -0
  231. package/dist/telemetry/ui/components/AssistantTimeline.js.map +1 -0
  232. package/dist/telemetry/ui/components/ResultsGrid.d.ts +10 -0
  233. package/dist/telemetry/ui/components/ResultsGrid.d.ts.map +1 -0
  234. package/dist/telemetry/ui/components/ResultsGrid.js +71 -0
  235. package/dist/telemetry/ui/components/ResultsGrid.js.map +1 -0
  236. package/dist/telemetry/ui/components/SchemaPanel.d.ts +9 -0
  237. package/dist/telemetry/ui/components/SchemaPanel.d.ts.map +1 -0
  238. package/dist/telemetry/ui/components/SchemaPanel.js +42 -0
  239. package/dist/telemetry/ui/components/SchemaPanel.js.map +1 -0
  240. package/dist/telemetry/ui/components/SqlEditor.d.ts +21 -0
  241. package/dist/telemetry/ui/components/SqlEditor.d.ts.map +1 -0
  242. package/dist/telemetry/ui/components/SqlEditor.js +60 -0
  243. package/dist/telemetry/ui/components/SqlEditor.js.map +1 -0
  244. package/dist/telemetry/ui/components/TelemetryConnectionSection.d.ts +14 -0
  245. package/dist/telemetry/ui/components/TelemetryConnectionSection.d.ts.map +1 -0
  246. package/dist/telemetry/ui/components/TelemetryConnectionSection.js +243 -0
  247. package/dist/telemetry/ui/components/TelemetryConnectionSection.js.map +1 -0
  248. package/dist/telemetry/ui/components/TelemetryCrossLink.d.ts +12 -0
  249. package/dist/telemetry/ui/components/TelemetryCrossLink.d.ts.map +1 -0
  250. package/dist/telemetry/ui/components/TelemetryCrossLink.js +21 -0
  251. package/dist/telemetry/ui/components/TelemetryCrossLink.js.map +1 -0
  252. package/dist/telemetry/ui/components/TelemetryServicesSection.d.ts +23 -0
  253. package/dist/telemetry/ui/components/TelemetryServicesSection.d.ts.map +1 -0
  254. package/dist/telemetry/ui/components/TelemetryServicesSection.js +138 -0
  255. package/dist/telemetry/ui/components/TelemetryServicesSection.js.map +1 -0
  256. package/dist/telemetry/ui/components/TelemetrySpinner.d.ts +3 -0
  257. package/dist/telemetry/ui/components/TelemetrySpinner.d.ts.map +1 -0
  258. package/dist/telemetry/ui/components/TelemetrySpinner.js +14 -0
  259. package/dist/telemetry/ui/components/TelemetrySpinner.js.map +1 -0
  260. package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.d.ts +17 -0
  261. package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.d.ts.map +1 -0
  262. package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.js +70 -0
  263. package/dist/telemetry/ui/components/dashboard/ApiTimelineChart.js.map +1 -0
  264. package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts +39 -0
  265. package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts.map +1 -0
  266. package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js +143 -0
  267. package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js.map +1 -0
  268. package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts +58 -0
  269. package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts.map +1 -0
  270. package/dist/telemetry/ui/components/dashboard/DashboardPanel.js +62 -0
  271. package/dist/telemetry/ui/components/dashboard/DashboardPanel.js.map +1 -0
  272. package/dist/telemetry/ui/components/dashboard/EventsFeed.d.ts +21 -0
  273. package/dist/telemetry/ui/components/dashboard/EventsFeed.d.ts.map +1 -0
  274. package/dist/telemetry/ui/components/dashboard/EventsFeed.js +96 -0
  275. package/dist/telemetry/ui/components/dashboard/EventsFeed.js.map +1 -0
  276. package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts +13 -0
  277. package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts.map +1 -0
  278. package/dist/telemetry/ui/components/dashboard/KpiTiles.js +82 -0
  279. package/dist/telemetry/ui/components/dashboard/KpiTiles.js.map +1 -0
  280. package/dist/telemetry/ui/components/dashboard/LogSeverityChart.d.ts +8 -0
  281. package/dist/telemetry/ui/components/dashboard/LogSeverityChart.d.ts.map +1 -0
  282. package/dist/telemetry/ui/components/dashboard/LogSeverityChart.js +34 -0
  283. package/dist/telemetry/ui/components/dashboard/LogSeverityChart.js.map +1 -0
  284. package/dist/telemetry/ui/components/dashboard/TopProblems.d.ts +19 -0
  285. package/dist/telemetry/ui/components/dashboard/TopProblems.d.ts.map +1 -0
  286. package/dist/telemetry/ui/components/dashboard/TopProblems.js +61 -0
  287. package/dist/telemetry/ui/components/dashboard/TopProblems.js.map +1 -0
  288. package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.d.ts +12 -0
  289. package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.d.ts.map +1 -0
  290. package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.js +36 -0
  291. package/dist/telemetry/ui/components/dashboard/UnknownRoutesPanel.js.map +1 -0
  292. package/dist/telemetry/ui/components/dashboard/VerdictBanner.d.ts +35 -0
  293. package/dist/telemetry/ui/components/dashboard/VerdictBanner.d.ts.map +1 -0
  294. package/dist/telemetry/ui/components/dashboard/VerdictBanner.js +68 -0
  295. package/dist/telemetry/ui/components/dashboard/VerdictBanner.js.map +1 -0
  296. package/dist/telemetry/ui/components/dashboard/ZoomBrush.d.ts +9 -0
  297. package/dist/telemetry/ui/components/dashboard/ZoomBrush.d.ts.map +1 -0
  298. package/dist/telemetry/ui/components/dashboard/ZoomBrush.js +96 -0
  299. package/dist/telemetry/ui/components/dashboard/ZoomBrush.js.map +1 -0
  300. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +75 -0
  301. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -0
  302. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +247 -0
  303. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -0
  304. package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts +19 -0
  305. package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts.map +1 -0
  306. package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js +64 -0
  307. package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js.map +1 -0
  308. package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts +74 -0
  309. package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts.map +1 -0
  310. package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js +126 -0
  311. package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js.map +1 -0
  312. package/dist/telemetry/ui/components/dashboard/severity.d.ts +43 -0
  313. package/dist/telemetry/ui/components/dashboard/severity.d.ts.map +1 -0
  314. package/dist/telemetry/ui/components/dashboard/severity.js +66 -0
  315. package/dist/telemetry/ui/components/dashboard/severity.js.map +1 -0
  316. package/dist/telemetry/ui/components/dashboard/timelineAxis.d.ts +11 -0
  317. package/dist/telemetry/ui/components/dashboard/timelineAxis.d.ts.map +1 -0
  318. package/dist/telemetry/ui/components/dashboard/timelineAxis.js +20 -0
  319. package/dist/telemetry/ui/components/dashboard/timelineAxis.js.map +1 -0
  320. package/dist/telemetry/ui/dashboard-page.d.ts +2 -0
  321. package/dist/telemetry/ui/dashboard-page.d.ts.map +1 -0
  322. package/dist/telemetry/ui/dashboard-page.js +6 -0
  323. package/dist/telemetry/ui/dashboard-page.js.map +1 -0
  324. package/dist/telemetry/ui/explorer-page.d.ts +2 -0
  325. package/dist/telemetry/ui/explorer-page.d.ts.map +1 -0
  326. package/dist/telemetry/ui/explorer-page.js +6 -0
  327. package/dist/telemetry/ui/explorer-page.js.map +1 -0
  328. package/dist/telemetry/ui/index.d.ts +6 -0
  329. package/dist/telemetry/ui/index.d.ts.map +1 -0
  330. package/dist/telemetry/ui/index.js +10 -0
  331. package/dist/telemetry/ui/index.js.map +1 -0
  332. package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts +14 -0
  333. package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts.map +1 -0
  334. package/dist/telemetry/ui/pages/TelemetryDashboardPage.js +286 -0
  335. package/dist/telemetry/ui/pages/TelemetryDashboardPage.js.map +1 -0
  336. package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts +15 -0
  337. package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts.map +1 -0
  338. package/dist/telemetry/ui/pages/TelemetryExplorerPage.js +197 -0
  339. package/dist/telemetry/ui/pages/TelemetryExplorerPage.js.map +1 -0
  340. package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts +28 -0
  341. package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts.map +1 -0
  342. package/dist/telemetry/ui/pages/TelemetrySettingsPage.js +278 -0
  343. package/dist/telemetry/ui/pages/TelemetrySettingsPage.js.map +1 -0
  344. package/dist/telemetry/ui/settings-page.d.ts +2 -0
  345. package/dist/telemetry/ui/settings-page.d.ts.map +1 -0
  346. package/dist/telemetry/ui/settings-page.js +6 -0
  347. package/dist/telemetry/ui/settings-page.js.map +1 -0
  348. package/dist/testing/index.d.ts +3 -0
  349. package/dist/testing/index.d.ts.map +1 -0
  350. package/dist/testing/index.js +4 -0
  351. package/dist/testing/index.js.map +1 -0
  352. package/dist/testing/test-platform-host.d.ts +108 -0
  353. package/dist/testing/test-platform-host.d.ts.map +1 -0
  354. package/dist/testing/test-platform-host.js +101 -0
  355. package/dist/testing/test-platform-host.js.map +1 -0
  356. package/package.json +132 -4
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * The investigation timeline of one assistant turn — issue #571.
4
+ *
5
+ * Every tool step the agent ran, in order, with the model's interim reasoning
6
+ * (`thought`, sent on the first call of a round) shown as a short italic line
7
+ * before the step it led to. While the turn streams the timeline is open and
8
+ * headed "Investigating…"; once the answer arrives it collapses behind a
9
+ * toggle so the report is what the viewer sees first (a phone especially).
10
+ *
11
+ * Plain text only: nothing the model says is interpreted as HTML.
12
+ */
13
+ import { useId, useState } from 'react';
14
+ import { Box, Button, CircularProgress, Collapse, Stack, Typography } from '@mui/material';
15
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
16
+ import ExpandLessIcon from '@mui/icons-material/ExpandLess';
17
+ const TOOL_LABELS = {
18
+ list_tables: 'Listed tables',
19
+ describe_table: 'Described table',
20
+ run_query: 'Ran query',
21
+ get_app_context: 'Read app configuration',
22
+ health_overview: 'Health overview',
23
+ get_trace: 'Traced',
24
+ metrics_overview: 'Metrics overview',
25
+ compare_nodes: 'Compared worker nodes',
26
+ };
27
+ const TRACE_ID_SHORT = 8;
28
+ /** What follows the label: the table, the metric group and window, the window, or a shortened trace id. */
29
+ function stepTarget(step) {
30
+ const input = step.input;
31
+ if (!input)
32
+ return '';
33
+ if (step.tool === 'get_trace' && input.traceId) {
34
+ return input.traceId.length > TRACE_ID_SHORT ? `${input.traceId.slice(0, TRACE_ID_SHORT)}…` : input.traceId;
35
+ }
36
+ if (step.tool === 'metrics_overview')
37
+ return [input.group, input.window].filter(Boolean).join(' · ');
38
+ if ((step.tool === 'health_overview' || step.tool === 'compare_nodes') && input.window)
39
+ return input.window;
40
+ return input.table ?? '';
41
+ }
42
+ function stepFacts(step) {
43
+ const facts = [];
44
+ if (step.rowCount !== undefined)
45
+ facts.push(`${step.rowCount} row${step.rowCount === 1 ? '' : 's'}`);
46
+ if (step.truncated)
47
+ facts.push('truncated');
48
+ facts.push(`${Math.round(step.durationMs)} ms`);
49
+ return facts.join(' · ');
50
+ }
51
+ function StepRow({ step }) {
52
+ const label = TOOL_LABELS[step.tool] ?? step.tool;
53
+ const target = stepTarget(step);
54
+ return (_jsxs(Box, { sx: { minWidth: 0 }, children: [step.thought && (_jsx(Typography, { variant: "caption", component: "div", color: "text.secondary", "data-testid": "assistant-thought", sx: { fontStyle: 'italic', whiteSpace: 'pre-wrap', wordBreak: 'break-word', pt: 0.5 }, children: step.thought })), _jsxs(Box, { "data-testid": "assistant-step", sx: { py: 0.5, minWidth: 0 }, children: [_jsxs(Typography, { variant: "caption", component: "div", color: step.error ? 'error' : 'text.secondary', sx: { wordBreak: 'break-word' }, children: [_jsx("strong", { children: label }), target ? ` ${target}` : '', " \u00B7 ", stepFacts(step)] }), step.input?.sql && (_jsx(Box, { component: "pre", sx: {
55
+ m: 0,
56
+ mt: 0.25,
57
+ p: 0.75,
58
+ borderRadius: 1,
59
+ bgcolor: 'action.hover',
60
+ fontFamily: 'monospace',
61
+ fontSize: 11,
62
+ whiteSpace: 'pre-wrap',
63
+ wordBreak: 'break-word',
64
+ maxHeight: 96,
65
+ overflow: 'auto',
66
+ }, children: step.input.sql })), step.error && (_jsx(Typography, { variant: "caption", component: "div", color: "error", sx: { wordBreak: 'break-word' }, children: step.error }))] })] }));
67
+ }
68
+ function stepCount(n) {
69
+ return `${n} step${n === 1 ? '' : 's'}`;
70
+ }
71
+ export function AssistantTimeline({ steps, isInvestigating, collapsible }) {
72
+ const [open, setOpen] = useState(false);
73
+ const regionId = useId();
74
+ if (isInvestigating) {
75
+ return (_jsxs(Box, { children: [steps.map((step) => (_jsx(StepRow, { step: step }, `${step.index}-${step.tool}`))), _jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center', pt: steps.length ? 0.5 : 0 }, children: [_jsx(CircularProgress, { size: 14 }), _jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { fontStyle: 'italic' }, children: ["Investigating\u2026", steps.length > 0 ? ` (${stepCount(steps.length)})` : ''] })] })] }));
76
+ }
77
+ if (steps.length === 0)
78
+ return null;
79
+ if (!collapsible) {
80
+ return (_jsx(Box, { children: steps.map((step) => (_jsx(StepRow, { step: step }, `${step.index}-${step.tool}`))) }));
81
+ }
82
+ return (_jsxs(Box, { children: [_jsxs(Button, { size: "small", color: "inherit", "data-testid": "assistant-timeline-toggle", "aria-expanded": open, "aria-controls": regionId, onClick: () => setOpen((value) => !value), startIcon: open ? _jsx(ExpandLessIcon, {}) : _jsx(ExpandMoreIcon, {}), sx: { px: 0.5, color: 'text.secondary', textTransform: 'none' }, children: [open ? 'Hide' : 'Show', " investigation (", stepCount(steps.length), ")"] }), _jsx(Collapse, { in: open, id: regionId, children: _jsx(Box, { sx: { pl: 0.5, pb: 0.5 }, children: steps.map((step) => (_jsx(StepRow, { step: step }, `${step.index}-${step.tool}`))) }) })] }));
83
+ }
84
+ //# sourceMappingURL=AssistantTimeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssistantTimeline.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/AssistantTimeline.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { TelemetryQueryResult } from '../../headless/services/telemetry.js';
2
+ export interface ResultsGridProps {
3
+ result: TelemetryQueryResult;
4
+ onTraceClick?: (traceId: string) => void;
5
+ }
6
+ /** A cell value as text: strings as-is, objects as JSON, `null` as `NULL`. */
7
+ export declare function formatCellValue(value: unknown): string;
8
+ export declare function fieldFor(index: number): string;
9
+ export declare function ResultsGrid({ result, onTraceClick }: ResultsGridProps): import("react").JSX.Element;
10
+ //# sourceMappingURL=ResultsGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultsGrid.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/ResultsGrid.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAID,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,gBAAgB,+BAqFrE"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * The explorer's result grid — issue #537, epic #528.
4
+ *
5
+ * MUI X DataGrid directly rather than the app's `DataTable`: that wrapper is
6
+ * built around a DECLARED column contract with server-side paging, sorting and
7
+ * persisted layout, whereas a query result has columns nobody knew until it
8
+ * ran. The grid is used with the app theme, client-side paging/sorting and a
9
+ * bounded height so row virtualization works.
10
+ *
11
+ * Column names can repeat (`SELECT a.x, b.x`), so each column's field is its
12
+ * POSITION (`c0`, `c1`, …) and rows are read positionally, as the API sends
13
+ * them. A value in a column named `trace_id` is a link that opens that trace.
14
+ */
15
+ import { useMemo } from 'react';
16
+ import { Box, Link, Typography } from '@mui/material';
17
+ import { DataGrid } from '@mui/x-data-grid';
18
+ /** A cell value as text: strings as-is, objects as JSON, `null` as `NULL`. */
19
+ export function formatCellValue(value) {
20
+ if (value === null || value === undefined)
21
+ return 'NULL';
22
+ if (typeof value === 'object')
23
+ return JSON.stringify(value);
24
+ return String(value);
25
+ }
26
+ export function fieldFor(index) {
27
+ return `c${index}`;
28
+ }
29
+ export function ResultsGrid({ result, onTraceClick }) {
30
+ const columns = useMemo(() => result.columns.map((column, index) => {
31
+ const isTraceId = column.name.toLowerCase() === 'trace_id';
32
+ return {
33
+ field: fieldFor(index),
34
+ headerName: column.name,
35
+ // The pg wire protocol truncates timestamps to microseconds.
36
+ description: column.type === 'timestamp'
37
+ ? `${column.name} · timestamp (microseconds; use CAST(ts AS STRING) for nanoseconds)`
38
+ : `${column.name} · ${column.type}`,
39
+ minWidth: 120,
40
+ flex: 1,
41
+ sortable: true,
42
+ valueFormatter: (value) => formatCellValue(value),
43
+ renderCell: (params) => {
44
+ const value = params.value;
45
+ if (value === null || value === undefined) {
46
+ return (_jsx(Typography, { component: "span", variant: "body2", color: "text.disabled", sx: { fontStyle: 'italic' }, children: "NULL" }));
47
+ }
48
+ const text = formatCellValue(value);
49
+ if (isTraceId && onTraceClick && typeof value === 'string' && value) {
50
+ return (_jsx(Link, { component: "button", type: "button", variant: "body2", onClick: (event) => {
51
+ event.stopPropagation();
52
+ onTraceClick(value);
53
+ }, sx: { fontFamily: 'monospace' }, title: "Show this trace's spans and logs", children: text }));
54
+ }
55
+ return (_jsx(Box, { component: "span", title: text, sx: { overflow: 'hidden', textOverflow: 'ellipsis' }, children: text }));
56
+ },
57
+ };
58
+ }), [result.columns, onTraceClick]);
59
+ const rows = useMemo(() => result.rows.map((row, rowIndex) => {
60
+ const entry = { id: rowIndex };
61
+ row.forEach((value, index) => {
62
+ entry[fieldFor(index)] = value;
63
+ });
64
+ return entry;
65
+ }), [result.rows]);
66
+ return (_jsx(Box, { sx: { height: { xs: 420, sm: 480 }, width: '100%', minWidth: 0 }, children: _jsx(DataGrid, { rows: rows, columns: columns, density: "compact", "aria-label": "Query results", disableColumnFilter: true, disableRowSelectionOnClick: true, pageSizeOptions: [25, 50, 100], initialState: { pagination: { paginationModel: { pageSize: 100, page: 0 } } }, sx: {
67
+ '& .MuiDataGrid-cell': { fontFamily: 'monospace', fontSize: 13 },
68
+ '& .MuiDataGrid-virtualScroller': { overflowX: 'auto' },
69
+ } }) }));
70
+ }
71
+ //# sourceMappingURL=ResultsGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultsGrid.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/ResultsGrid.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { TelemetrySchemaTable } from '../../headless/services/telemetry.js';
2
+ export interface SchemaPanelProps {
3
+ tables: TelemetrySchemaTable[];
4
+ isLoading: boolean;
5
+ error: string | null;
6
+ onInsert: (text: string) => void;
7
+ }
8
+ export declare function SchemaPanel({ tables, isLoading, error, onInsert }: SchemaPanelProps): import("react").JSX.Element;
9
+ //# sourceMappingURL=SchemaPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaPanel.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/SchemaPanel.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,+BA4GnF"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * The explorer's schema browser — issue #537, epic #528.
4
+ *
5
+ * Tables from `GET /admin/telemetry/schema`, each expandable to its columns
6
+ * and types. Clicking a table or column name inserts it (double-quoted when
7
+ * needed — flattened attribute columns always are) at the editor's cursor.
8
+ */
9
+ import { useMemo, useState } from 'react';
10
+ import { Alert, Box, Collapse, IconButton, List, ListItemButton, ListItemText, TextField, Tooltip, Typography, } from '@mui/material';
11
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
12
+ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
13
+ import { quoteIdentifier } from '../../headless/lib/starterQueries.js';
14
+ export function SchemaPanel({ tables, isLoading, error, onInsert }) {
15
+ const [open, setOpen] = useState(new Set());
16
+ const [filter, setFilter] = useState('');
17
+ const visible = useMemo(() => {
18
+ const needle = filter.trim().toLowerCase();
19
+ if (!needle)
20
+ return tables;
21
+ return tables.filter((table) => table.name.toLowerCase().includes(needle) ||
22
+ table.columns.some((column) => column.name.toLowerCase().includes(needle)));
23
+ }, [tables, filter]);
24
+ const toggle = (name) => setOpen((prev) => {
25
+ const next = new Set(prev);
26
+ if (next.has(name))
27
+ next.delete(name);
28
+ else
29
+ next.add(name);
30
+ return next;
31
+ });
32
+ return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', minHeight: 0, height: '100%' }, children: [_jsx(TextField, { size: "small", placeholder: "Filter tables and columns", value: filter, onChange: (event) => setFilter(event.target.value), slotProps: { htmlInput: { 'aria-label': 'Filter schema' } }, sx: { mb: 1 } }), error && (_jsx(Alert, { severity: "error", sx: { mb: 1 }, children: error })), isLoading && (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "Loading schema\u2026" })), !isLoading && !error && visible.length === 0 && (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "No tables." })), _jsx(List, { dense: true, disablePadding: true, "aria-label": "Telemetry schema", sx: { overflowY: 'auto', flex: 1 }, children: visible.map((table) => {
33
+ const expanded = open.has(table.name) || filter.trim() !== '';
34
+ return (_jsxs(Box, { component: "li", sx: { listStyle: 'none' }, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center' }, children: [_jsx(IconButton, { size: "small", onClick: () => toggle(table.name), "aria-label": `${expanded ? 'Collapse' : 'Expand'} ${table.name}`, "aria-expanded": expanded, children: expanded ? _jsx(ExpandMoreIcon, { fontSize: "small" }) : _jsx(ChevronRightIcon, { fontSize: "small" }) }), _jsx(Tooltip, { title: "Insert table name", placement: "right", children: _jsx(ListItemButton, { dense: true, onClick: () => onInsert(quoteIdentifier(table.name)), sx: { py: 0, borderRadius: 1, minWidth: 0 }, children: _jsx(ListItemText, { primary: table.name, secondary: table.rows != null ? `${table.rows.toLocaleString()} rows` : undefined, slotProps: {
35
+ primary: { sx: { fontFamily: 'monospace', fontSize: 13, wordBreak: 'break-all' } },
36
+ } }) }) })] }), _jsx(Collapse, { in: expanded, unmountOnExit: true, children: _jsx(List, { dense: true, disablePadding: true, sx: { pl: 4 }, "aria-label": `Columns of ${table.name}`, children: table.columns.map((column, index) => (_jsx(ListItemButton, { dense: true, onClick: () => onInsert(quoteIdentifier(column.name)), sx: { py: 0, borderRadius: 1 }, children: _jsx(ListItemText, { primary: column.name, secondary: column.semanticType ? `${column.type} · ${column.semanticType}` : column.type, slotProps: {
37
+ primary: { sx: { fontFamily: 'monospace', fontSize: 12, wordBreak: 'break-all' } },
38
+ secondary: { sx: { fontSize: 11 } },
39
+ } }) }, `${column.name}-${index}`))) }) })] }, table.name));
40
+ }) })] }));
41
+ }
42
+ //# sourceMappingURL=SchemaPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaPanel.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/SchemaPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Ref } from 'react';
2
+ import { type SQLNamespace } from '@codemirror/lang-sql';
3
+ import type { TelemetrySchemaTable } from '../../headless/services/telemetry.js';
4
+ export interface SqlEditorHandle {
5
+ /** Replace the selection (or insert at the cursor) with `text`, then focus. */
6
+ insertAtCursor: (text: string) => void;
7
+ focus: () => void;
8
+ }
9
+ export interface SqlEditorProps {
10
+ value: string;
11
+ onChange: (value: string) => void;
12
+ /** Ctrl/Cmd+Enter. */
13
+ onRun: () => void;
14
+ tables: TelemetrySchemaTable[];
15
+ mode: 'light' | 'dark';
16
+ ref?: Ref<SqlEditorHandle>;
17
+ }
18
+ /** `GET schema` → the lang-sql completion namespace (table → columns with types). */
19
+ export declare function toSqlNamespace(tables: TelemetrySchemaTable[]): SQLNamespace;
20
+ export default function SqlEditor({ value, onChange, onRun, tables, mode, ref }: SqlEditorProps): import("react").JSX.Element;
21
+ //# sourceMappingURL=SqlEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlEditor.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/SqlEditor.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,sBAAsB;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;CAC5B;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,YAAY,CAU3E;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,cAAc,+BAqD9F"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * The Telemetry Explorer's SQL editor — issue #537, epic #528.
4
+ *
5
+ * CodeMirror 6 (`@uiw/react-codemirror` + `@codemirror/lang-sql`), PostgreSQL
6
+ * dialect (GreptimeDB speaks the PostgreSQL wire protocol and dialect), with
7
+ * autocompletion fed from `GET /admin/telemetry/schema`. The theme follows the
8
+ * MUI palette mode. Ctrl/Cmd+Enter runs the query.
9
+ *
10
+ * This module is the ONLY importer of CodeMirror, and the explorer page loads
11
+ * it with `React.lazy`, so the editor (~hundreds of kB) is its own chunk and
12
+ * weighs on nobody who never opens the explorer.
13
+ */
14
+ import { useImperativeHandle, useMemo, useRef } from 'react';
15
+ import CodeMirror, { EditorView, Prec, keymap } from '@uiw/react-codemirror';
16
+ import { PostgreSQL, sql } from '@codemirror/lang-sql';
17
+ /** `GET schema` → the lang-sql completion namespace (table → columns with types). */
18
+ export function toSqlNamespace(tables) {
19
+ const namespace = {};
20
+ for (const table of tables) {
21
+ namespace[table.name] = table.columns.map((column) => ({
22
+ label: column.name,
23
+ type: 'property',
24
+ detail: column.type,
25
+ }));
26
+ }
27
+ return namespace;
28
+ }
29
+ export default function SqlEditor({ value, onChange, onRun, tables, mode, ref }) {
30
+ const editorRef = useRef(null);
31
+ // Read through a ref so the keymap extension is built once, not per render.
32
+ const onRunRef = useRef(onRun);
33
+ onRunRef.current = onRun;
34
+ useImperativeHandle(ref, () => ({
35
+ insertAtCursor: (text) => {
36
+ const view = editorRef.current?.view;
37
+ if (!view)
38
+ return;
39
+ view.dispatch(view.state.replaceSelection(text));
40
+ view.focus();
41
+ },
42
+ focus: () => editorRef.current?.view?.focus(),
43
+ }), []);
44
+ const extensions = useMemo(() => [
45
+ sql({ dialect: PostgreSQL, schema: toSqlNamespace(tables), upperCaseKeywords: true }),
46
+ Prec.highest(keymap.of([
47
+ {
48
+ key: 'Mod-Enter',
49
+ run: () => {
50
+ onRunRef.current();
51
+ return true;
52
+ },
53
+ },
54
+ ])),
55
+ EditorView.lineWrapping,
56
+ EditorView.contentAttributes.of({ 'aria-label': 'SQL query' }),
57
+ ], [tables]);
58
+ return (_jsx(CodeMirror, { ref: editorRef, value: value, onChange: onChange, extensions: extensions, theme: mode, minHeight: "160px", maxHeight: "45vh", basicSetup: { lineNumbers: true, foldGutter: false, highlightActiveLine: true }, style: { fontSize: 14 } }));
59
+ }
60
+ //# sourceMappingURL=SqlEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlEditor.js","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/SqlEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,GAAG,EAAqB,MAAM,sBAAsB,CAAC;AAmB1E,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,MAA8B;IAC3D,MAAM,SAAS,GAAsE,EAAE,CAAC;IACxF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACrD,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM,CAAC,IAAI;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAkB;IAC7F,MAAM,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IACnD,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,mBAAmB,CACjB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;KAC9C,CAAC,EACF,EAAE,CACH,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC;QACJ,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACrF,IAAI,CAAC,OAAO,CACV,MAAM,CAAC,EAAE,CAAC;YACR;gBACE,GAAG,EAAE,WAAW;gBAChB,GAAG,EAAE,GAAG,EAAE;oBACR,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CACH;QACD,UAAU,CAAC,YAAY;QACvB,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;KAC/D,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,IACT,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,IAAI,EACX,SAAS,EAAC,OAAO,EACjB,SAAS,EAAC,MAAM,EAChB,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAC/E,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GACvB,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** The element id the page's other alerts link to. */
2
+ export declare const TELEMETRY_CONNECTION_SECTION_ID = "telemetry-connection";
3
+ export interface TelemetryConnectionSectionProps {
4
+ canWrite: boolean;
5
+ /** After a successful save or revert — the page refreshes its config and status. */
6
+ onChanged: (message: string) => void;
7
+ /**
8
+ * Bumped by the page when the store changed under it (a telemetry services
9
+ * deploy, #567): the connection is re-read and a stale test result dropped.
10
+ */
11
+ refreshToken?: number;
12
+ }
13
+ export declare function TelemetryConnectionSection({ canWrite, onChanged, refreshToken, }: TelemetryConnectionSectionProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=TelemetryConnectionSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryConnectionSection.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/ui/components/TelemetryConnectionSection.tsx"],"names":[],"mappings":"AAyDA,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,yBAAyB,CAAC;AAqOtE,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,oFAAoF;IACpF,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,SAAS,EACT,YAAgB,GACjB,EAAE,+BAA+B,+BA0UjC"}