@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,197 @@
1
+ /**
2
+ * The Telemetry Explorer's data — issue #537, epic #528.
3
+ *
4
+ * - `useTelemetrySchema`: `GET /admin/telemetry/schema`, once on mount.
5
+ * - `useTelemetryQuery`: `POST /admin/telemetry/query` with cancel. A newer
6
+ * run aborts the one in flight; an aborted run leaves the previous result
7
+ * on screen and reports nothing.
8
+ *
9
+ * Whether a statement is allowed is the API's decision (its SQL guard); the
10
+ * browser sends the text verbatim and shows the refusal's message and code.
11
+ */
12
+ import { useCallback, useEffect, useRef, useState } from 'react';
13
+ import { isPlatformApiError } from '../../../core/index.js';
14
+ import { telemetryErrorReason, } from '../services/telemetry.js';
15
+ import { useTelemetryClient } from '../services/client.js';
16
+ import { useIsMounted } from '../../internal/useIsMounted.js';
17
+ function detail(err, key, kind) {
18
+ const details = err.details;
19
+ if (typeof details !== 'object' || details === null)
20
+ return null;
21
+ const value = details[key];
22
+ return typeof value === kind ? value : null;
23
+ }
24
+ /**
25
+ * A rejection as a {@link TelemetryErrorInfo}: a `PlatformApiError`'s status, code and details, or any other error's message.
26
+ *
27
+ * @param err - whatever a {@link TelemetryClient} call rejected with.
28
+ * @param fallback - the message when `err` carries none.
29
+ * @returns the error as the pages show it.
30
+ *
31
+ * @stability experimental
32
+ */
33
+ export function toTelemetryError(err, fallback) {
34
+ if (isPlatformApiError(err)) {
35
+ return {
36
+ message: err.message || fallback,
37
+ code: err.code ?? null,
38
+ reason: telemetryErrorReason(err),
39
+ status: err.status,
40
+ sqlState: detail(err, 'sqlState', 'string'),
41
+ timeoutMs: detail(err, 'timeoutMs', 'number'),
42
+ };
43
+ }
44
+ return {
45
+ message: err instanceof Error ? err.message : fallback,
46
+ code: null,
47
+ reason: null,
48
+ status: null,
49
+ sqlState: null,
50
+ timeoutMs: null,
51
+ };
52
+ }
53
+ /**
54
+ * A short human heading for a telemetry error, branching on `details.reason`.
55
+ *
56
+ * @stability experimental
57
+ */
58
+ export function telemetryErrorTitle(error) {
59
+ switch (error.reason) {
60
+ case 'TELEMETRY_QUERY_REJECTED':
61
+ return 'Query not allowed';
62
+ case 'TELEMETRY_QUERY_FAILED':
63
+ return error.sqlState ? `Query failed (SQLSTATE ${error.sqlState})` : 'Query failed';
64
+ case 'TELEMETRY_QUERY_TIMEOUT':
65
+ return error.timeoutMs !== null
66
+ ? `Query timed out after ${Math.round(error.timeoutMs / 1000)} s`
67
+ : 'Query timed out';
68
+ case 'TELEMETRY_DISABLED':
69
+ return 'Telemetry is switched off';
70
+ case 'TELEMETRY_NOT_CONFIGURED':
71
+ return 'Telemetry store not configured';
72
+ case 'TELEMETRY_UNREACHABLE':
73
+ return 'Telemetry store unreachable';
74
+ case 'TELEMETRY_ASSISTANT_DISABLED':
75
+ return 'Assistant is switched off';
76
+ default:
77
+ return 'Request failed';
78
+ }
79
+ }
80
+ function isAbort(err) {
81
+ return typeof err === 'object' && err !== null && err.name === 'AbortError';
82
+ }
83
+ /**
84
+ * `GET /admin/telemetry/schema`, once on mount: the tables the explorer's schema panel and editor completion read.
85
+ *
86
+ * @returns `tables`, `isLoading`, `error` (a message or `null`) and `reload`.
87
+ * @throws Error outside a `PlatformHostProvider`.
88
+ *
89
+ * @stability experimental
90
+ */
91
+ export function useTelemetrySchema() {
92
+ const client = useTelemetryClient();
93
+ const [tables, setTables] = useState([]);
94
+ const [isLoading, setIsLoading] = useState(true);
95
+ const [error, setError] = useState(null);
96
+ const isMounted = useIsMounted();
97
+ const load = useCallback(async () => {
98
+ setIsLoading(true);
99
+ setError(null);
100
+ try {
101
+ const schema = await client.getTelemetrySchema();
102
+ if (isMounted())
103
+ setTables(schema.tables);
104
+ }
105
+ catch (err) {
106
+ if (isMounted())
107
+ setError(toTelemetryError(err, 'Failed to load the schema').message);
108
+ }
109
+ finally {
110
+ if (isMounted())
111
+ setIsLoading(false);
112
+ }
113
+ }, [client, isMounted]);
114
+ useEffect(() => {
115
+ void load();
116
+ }, [load]);
117
+ return { tables, isLoading, error, reload: load };
118
+ }
119
+ /**
120
+ * `POST /admin/telemetry/query` with cancel. A newer run aborts the one in flight; an aborted run leaves the previous result on screen and reports nothing. Whether a statement is allowed is the API's decision.
121
+ *
122
+ * @returns the result, the error and the run and cancel actions.
123
+ * @throws Error outside a `PlatformHostProvider`.
124
+ *
125
+ * @stability experimental
126
+ */
127
+ export function useTelemetryQuery() {
128
+ const client = useTelemetryClient();
129
+ const [result, setResult] = useState(null);
130
+ const [error, setError] = useState(null);
131
+ const [isRunning, setIsRunning] = useState(false);
132
+ const controllerRef = useRef(null);
133
+ const isMounted = useIsMounted();
134
+ const cancel = useCallback(() => {
135
+ controllerRef.current?.abort();
136
+ controllerRef.current = null;
137
+ if (isMounted())
138
+ setIsRunning(false);
139
+ }, [client, isMounted]);
140
+ useEffect(() => () => controllerRef.current?.abort(), []);
141
+ const run = useCallback(async (sql) => {
142
+ controllerRef.current?.abort();
143
+ const controller = new AbortController();
144
+ controllerRef.current = controller;
145
+ setIsRunning(true);
146
+ setError(null);
147
+ try {
148
+ const next = await client.runTelemetryQuery(sql, { signal: controller.signal });
149
+ if (!isMounted() || controller.signal.aborted)
150
+ return false;
151
+ setResult(next);
152
+ return true;
153
+ }
154
+ catch (err) {
155
+ if (isAbort(err) || controller.signal.aborted)
156
+ return false;
157
+ if (isMounted())
158
+ setError(toTelemetryError(err, 'The query failed'));
159
+ return false;
160
+ }
161
+ finally {
162
+ if (controllerRef.current === controller) {
163
+ controllerRef.current = null;
164
+ if (isMounted())
165
+ setIsRunning(false);
166
+ }
167
+ }
168
+ }, [isMounted]);
169
+ return { result, error, isRunning, run, cancel };
170
+ }
171
+ /**
172
+ * The assistant's configured provider and model, as a caption — read from the
173
+ * admin config, so only fetched for a holder of `telemetry:read` (`enabled`).
174
+ * Best effort: any failure just means no caption.
175
+ *
176
+ * @stability experimental
177
+ */
178
+ export function useTelemetryAssistantModel(enabled) {
179
+ const client = useTelemetryClient();
180
+ const [caption, setCaption] = useState(null);
181
+ const isMounted = useIsMounted();
182
+ useEffect(() => {
183
+ if (!enabled)
184
+ return;
185
+ client.getTelemetryAdminConfig()
186
+ .then((config) => {
187
+ const { provider, modelId } = config.assistant;
188
+ if (isMounted() && provider && modelId)
189
+ setCaption(`${provider} · ${modelId}`);
190
+ })
191
+ .catch(() => {
192
+ // No caption.
193
+ });
194
+ }, [client, enabled, isMounted]);
195
+ return caption;
196
+ }
197
+ //# sourceMappingURL=useTelemetryExplorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryExplorer.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryExplorer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { type TelemetryStack, type TelemetryStackDeploy } from '../services/telemetry.js';
2
+ /**
3
+ * How often {@link useTelemetryStack} polls while a deploy is pending or running.
4
+ *
5
+ * @stability experimental
6
+ */
7
+ export declare const TELEMETRY_STACK_ACTIVE_POLL_MS = 3000;
8
+ /**
9
+ * How often {@link useTelemetryStack} polls otherwise.
10
+ *
11
+ * @stability experimental
12
+ */
13
+ export declare const TELEMETRY_STACK_IDLE_POLL_MS = 30000;
14
+ /**
15
+ * What {@link useTelemetryStack} takes.
16
+ *
17
+ * @stability experimental
18
+ */
19
+ export interface UseTelemetryStackOptions {
20
+ /** Poll interval while a deploy is active. Default {@link TELEMETRY_STACK_ACTIVE_POLL_MS}. */
21
+ activeIntervalMs?: number;
22
+ /** Poll interval otherwise. Default {@link TELEMETRY_STACK_IDLE_POLL_MS}. */
23
+ idleIntervalMs?: number;
24
+ }
25
+ /**
26
+ * What {@link useTelemetryStack} returns.
27
+ *
28
+ * @stability experimental
29
+ */
30
+ export interface UseTelemetryStackReturn {
31
+ /** The services and the latest deploy, or `null` before the first load. */
32
+ stack: TelemetryStack | null;
33
+ /** The first load is in flight. */
34
+ isLoading: boolean;
35
+ /** Why the stack could not be loaded, or `null`. */
36
+ loadError: string | null;
37
+ /** The deploy POST is in flight. */
38
+ isRequesting: boolean;
39
+ /** Why the last deploy request failed, or `null`. */
40
+ deployError: string | null;
41
+ /** A deploy is requested or its job is pending/running. */
42
+ isDeploying: boolean;
43
+ /** The job id the last successful POST returned, until the stack reports it settled. */
44
+ requestedJobId: string | null;
45
+ /** Load the stack again. */
46
+ reload: () => Promise<void>;
47
+ /** Ask the API to (re)deploy the telemetry services; resolves `true` when the job was enqueued. */
48
+ deploy: () => Promise<boolean>;
49
+ }
50
+ /**
51
+ * Whether a deploy job is still pending or running.
52
+ *
53
+ * @param deploy - the latest deploy job, if any.
54
+ * @returns `true` while it is pending or running.
55
+ *
56
+ * @stability experimental
57
+ */
58
+ export declare function isDeployActive(deploy: TelemetryStackDeploy | null | undefined): boolean;
59
+ /**
60
+ * The Telemetry services section's data: `GET /admin/telemetry/stack`, polled only while the tab is visible (faster while a deploy runs), and `POST …/stack/deploy` (a queue job runs it server-side).
61
+ *
62
+ * @param options - poll intervals; `0` disables polling.
63
+ * @returns the stack and the deploy action.
64
+ * @throws Error outside a `PlatformHostProvider`.
65
+ *
66
+ * @stability experimental
67
+ */
68
+ export declare function useTelemetryStack(options?: UseTelemetryStackOptions): UseTelemetryStackReturn;
69
+ //# sourceMappingURL=useTelemetryStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryStack.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryStack.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAKlC;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AACpD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,mCAAmC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oCAAoC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,mGAAmG;IACnG,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEvF;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,uBAAuB,CAyEjG"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * The Telemetry services section's data — issue #567.
3
+ *
4
+ * Loads `GET /admin/telemetry/stack` and polls it: every `activeIntervalMs`
5
+ * (3 s) while a deploy job is pending/running, else every `idleIntervalMs`
6
+ * (30 s). Polling pauses with the tab (`useVisiblePolling`) and stops on
7
+ * unmount. `deploy()` POSTs `/admin/telemetry/stack/deploy` and re-reads the
8
+ * stack at once, so the progress indicator appears without waiting a tick.
9
+ *
10
+ * The browser never decides anything here: the API reports the containers and
11
+ * the job, and runs the deployment as a queue job.
12
+ *
13
+ * Writes resolve `true`/`false` and never throw.
14
+ */
15
+ import { useCallback, useEffect, useState } from 'react';
16
+ import { isPlatformApiError } from '../../../core/index.js';
17
+ import { useTelemetryClient } from '../services/client.js';
18
+ import { useIsMounted } from '../../internal/useIsMounted.js';
19
+ import { useVisiblePolling } from '../../internal/useVisiblePolling.js';
20
+ /**
21
+ * How often {@link useTelemetryStack} polls while a deploy is pending or running.
22
+ *
23
+ * @stability experimental
24
+ */
25
+ export const TELEMETRY_STACK_ACTIVE_POLL_MS = 3_000;
26
+ /**
27
+ * How often {@link useTelemetryStack} polls otherwise.
28
+ *
29
+ * @stability experimental
30
+ */
31
+ export const TELEMETRY_STACK_IDLE_POLL_MS = 30_000;
32
+ /**
33
+ * Whether a deploy job is still pending or running.
34
+ *
35
+ * @param deploy - the latest deploy job, if any.
36
+ * @returns `true` while it is pending or running.
37
+ *
38
+ * @stability experimental
39
+ */
40
+ export function isDeployActive(deploy) {
41
+ return deploy?.status === 'pending' || deploy?.status === 'running';
42
+ }
43
+ function message(err, fallback) {
44
+ return isPlatformApiError(err) || err instanceof Error ? err.message : fallback;
45
+ }
46
+ /**
47
+ * The Telemetry services section's data: `GET /admin/telemetry/stack`, polled only while the tab is visible (faster while a deploy runs), and `POST …/stack/deploy` (a queue job runs it server-side).
48
+ *
49
+ * @param options - poll intervals; `0` disables polling.
50
+ * @returns the stack and the deploy action.
51
+ * @throws Error outside a `PlatformHostProvider`.
52
+ *
53
+ * @stability experimental
54
+ */
55
+ export function useTelemetryStack(options = {}) {
56
+ const client = useTelemetryClient();
57
+ const activeIntervalMs = options.activeIntervalMs ?? TELEMETRY_STACK_ACTIVE_POLL_MS;
58
+ const idleIntervalMs = options.idleIntervalMs ?? TELEMETRY_STACK_IDLE_POLL_MS;
59
+ const [stack, setStack] = useState(null);
60
+ const [isLoading, setIsLoading] = useState(true);
61
+ const [loadError, setLoadError] = useState(null);
62
+ const [isRequesting, setIsRequesting] = useState(false);
63
+ const [deployError, setDeployError] = useState(null);
64
+ const [requestedJobId, setRequestedJobId] = useState(null);
65
+ const isMounted = useIsMounted();
66
+ const reload = useCallback(async () => {
67
+ try {
68
+ const next = await client.getTelemetryStack();
69
+ if (!isMounted())
70
+ return;
71
+ setStack(next);
72
+ setLoadError(null);
73
+ }
74
+ catch (err) {
75
+ if (isMounted())
76
+ setLoadError(message(err, 'Failed to load the telemetry services'));
77
+ }
78
+ finally {
79
+ if (isMounted())
80
+ setIsLoading(false);
81
+ }
82
+ }, [client, isMounted]);
83
+ useEffect(() => {
84
+ void reload();
85
+ }, [reload]);
86
+ // The requested job is tracked until the stack reports it settled — the
87
+ // first GET after the POST can still describe the previous deploy.
88
+ useEffect(() => {
89
+ if (requestedJobId &&
90
+ stack?.deploy?.jobId === requestedJobId &&
91
+ !isDeployActive(stack.deploy)) {
92
+ setRequestedJobId(null);
93
+ }
94
+ }, [requestedJobId, stack]);
95
+ const isDeploying = isRequesting || !!requestedJobId || isDeployActive(stack?.deploy);
96
+ useVisiblePolling(() => void reload(), isDeploying ? activeIntervalMs : idleIntervalMs);
97
+ const deploy = useCallback(async () => {
98
+ setIsRequesting(true);
99
+ setDeployError(null);
100
+ try {
101
+ const { jobId } = await client.deployTelemetryStack();
102
+ if (isMounted())
103
+ setRequestedJobId(jobId);
104
+ await reload();
105
+ return true;
106
+ }
107
+ catch (err) {
108
+ if (isMounted())
109
+ setDeployError(message(err, 'The deployment could not be started'));
110
+ return false;
111
+ }
112
+ finally {
113
+ if (isMounted())
114
+ setIsRequesting(false);
115
+ }
116
+ }, [client, isMounted, reload]);
117
+ return {
118
+ stack,
119
+ isLoading,
120
+ loadError,
121
+ isRequesting,
122
+ deployError,
123
+ isDeploying,
124
+ requestedJobId,
125
+ reload,
126
+ deploy,
127
+ };
128
+ }
129
+ //# sourceMappingURL=useTelemetryStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryStack.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryStack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export * from './services/telemetry.js';
2
+ export * from './services/telemetryDashboard.js';
3
+ export { createTelemetryClient, useTelemetryClient } from './services/client.js';
4
+ export type { TelemetryClient, TelemetryRequestOptions, TelemetryStackDeployAccepted } from './services/client.js';
5
+ export { TELEMETRY_CONFIG_DISABLED, TelemetryConfigContext, isTelemetryOn, useTelemetryConfig, useTelemetryConfigQuery, useTelemetryFeatures, } from './context/telemetryConfig.js';
6
+ export type { TelemetryFeatureFlags, UseTelemetryConfigReturn } from './context/telemetryConfig.js';
7
+ export { TelemetryConfigProvider } from './context/TelemetryConfigProvider.js';
8
+ export type { TelemetryConfigProviderProps } from './context/TelemetryConfigProvider.js';
9
+ export { RequireTelemetryEnabled } from './guards/RequireTelemetryEnabled.js';
10
+ export type { RequireTelemetryEnabledProps } from './guards/RequireTelemetryEnabled.js';
11
+ export { DEFAULT_TELEMETRY_WEB_ADAPTERS, TelemetryWebAdaptersProvider, useTelemetryWebAdapters, } from './adapters/TelemetryWebAdapters.js';
12
+ export type { TelemetryAiEnabledState, TelemetryAssistantModelOption, TelemetryAssistantModelsState, TelemetryWebAdapters, } from './adapters/TelemetryWebAdapters.js';
13
+ export { useTelemetryAdmin } from './hooks/useTelemetryAdmin.js';
14
+ export type { UseTelemetryAdminReturn } from './hooks/useTelemetryAdmin.js';
15
+ export { useTelemetryConnection } from './hooks/useTelemetryConnection.js';
16
+ export type { UseTelemetryConnectionReturn } from './hooks/useTelemetryConnection.js';
17
+ export { TELEMETRY_STACK_ACTIVE_POLL_MS, TELEMETRY_STACK_IDLE_POLL_MS, isDeployActive, useTelemetryStack, } from './hooks/useTelemetryStack.js';
18
+ export type { UseTelemetryStackOptions, UseTelemetryStackReturn } from './hooks/useTelemetryStack.js';
19
+ export { telemetryErrorTitle, toTelemetryError, useTelemetryAssistantModel, useTelemetryQuery, useTelemetrySchema, } from './hooks/useTelemetryExplorer.js';
20
+ export type { TelemetryErrorInfo, UseTelemetryQueryReturn, UseTelemetrySchemaReturn } from './hooks/useTelemetryExplorer.js';
21
+ export { ASSISTANT_HISTORY_ANSWER_MAX, ASSISTANT_HISTORY_TURNS, ASSISTANT_QUESTION_MAX, answerAsHistory, buildAssistantHistory, useTelemetryAssistant, } from './hooks/useTelemetryAssistant.js';
22
+ export type { AssistantMessage, AssistantReplyError, AssistantReplyMessage, AssistantUserMessage, UseTelemetryAssistantOptions, UseTelemetryAssistantReturn, } from './hooks/useTelemetryAssistant.js';
23
+ export { useTelemetryAssistantAvailable } from './hooks/useTelemetryAssistantAvailable.js';
24
+ export { useDashboardEvents, useDashboardFilters, useDashboardMetricGroups, useDashboardMetrics, useDashboardSummary, useDashboardTimeseries, useDashboardTop, } from './hooks/useTelemetryDashboard.js';
25
+ export type { DashboardEventsResource, DashboardResource } from './hooks/useTelemetryDashboard.js';
26
+ export { formatBytes, formatDuration } from './lib/format.js';
27
+ export { TELEMETRY_DASHBOARD_PATH, TELEMETRY_EXPLORER_PATH, TELEMETRY_SETTINGS_PATH, explorerSqlUrl, } from './lib/explorerHandoff.js';
28
+ export { METRIC_SECTION_TITLES, metricSectionTitle } from './lib/metrics/metricSections.js';
29
+ export { STARTER_QUERIES, traceQuery } from './lib/starterQueries.js';
30
+ export type { StarterQuery } from './lib/starterQueries.js';
31
+ export { QUERY_HISTORY_KEY } from './lib/queryHistory.js';
32
+ export { telemetryTokens, useTelemetryTokens, withTelemetryTokens } from '../theme/telemetryTokens.js';
33
+ export type { TelemetryChartTokens, TelemetryStatusTokens, TelemetryTokens } from '../theme/telemetryTokens.js';
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/telemetry/headless/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ // `@marinoscar/platform-web/telemetry/headless`: the telemetry UI's client,
2
+ // hooks, config context, route guard, app adapters, theme tokens and pure
3
+ // helpers, with no component (issue #704). Imports nothing from an `@mui/*`
4
+ // component module (`@mui/material/styles` only, for the token contract);
5
+ // `test/telemetry/boundaries.test.ts` enforces it. Documented in ../README.md.
6
+ // The wire types (aliased from `@marinoscar/platform-contract/telemetry`),
7
+ // the web's display constants and the pure helpers of the two services.
8
+ export * from './services/telemetry.js';
9
+ export * from './services/telemetryDashboard.js';
10
+ // The client over the platform host's transport.
11
+ export { createTelemetryClient, useTelemetryClient } from './services/client.js';
12
+ // `GET /telemetry/config`, once per shell.
13
+ export { TELEMETRY_CONFIG_DISABLED, TelemetryConfigContext, isTelemetryOn, useTelemetryConfig, useTelemetryConfigQuery, useTelemetryFeatures, } from './context/telemetryConfig.js';
14
+ export { TelemetryConfigProvider } from './context/TelemetryConfigProvider.js';
15
+ export { RequireTelemetryEnabled } from './guards/RequireTelemetryEnabled.js';
16
+ // What the app hands in (AI on/off, the model catalogue, its spinner).
17
+ export { DEFAULT_TELEMETRY_WEB_ADAPTERS, TelemetryWebAdaptersProvider, useTelemetryWebAdapters, } from './adapters/TelemetryWebAdapters.js';
18
+ // The hooks behind the three pages.
19
+ export { useTelemetryAdmin } from './hooks/useTelemetryAdmin.js';
20
+ export { useTelemetryConnection } from './hooks/useTelemetryConnection.js';
21
+ export { TELEMETRY_STACK_ACTIVE_POLL_MS, TELEMETRY_STACK_IDLE_POLL_MS, isDeployActive, useTelemetryStack, } from './hooks/useTelemetryStack.js';
22
+ export { telemetryErrorTitle, toTelemetryError, useTelemetryAssistantModel, useTelemetryQuery, useTelemetrySchema, } from './hooks/useTelemetryExplorer.js';
23
+ export { ASSISTANT_HISTORY_ANSWER_MAX, ASSISTANT_HISTORY_TURNS, ASSISTANT_QUESTION_MAX, answerAsHistory, buildAssistantHistory, useTelemetryAssistant, } from './hooks/useTelemetryAssistant.js';
24
+ export { useTelemetryAssistantAvailable } from './hooks/useTelemetryAssistantAvailable.js';
25
+ export { useDashboardEvents, useDashboardFilters, useDashboardMetricGroups, useDashboardMetrics, useDashboardSummary, useDashboardTimeseries, useDashboardTop, } from './hooks/useTelemetryDashboard.js';
26
+ // Pure helpers apps reuse.
27
+ export { formatBytes, formatDuration } from './lib/format.js';
28
+ export { TELEMETRY_DASHBOARD_PATH, TELEMETRY_EXPLORER_PATH, TELEMETRY_SETTINGS_PATH, explorerSqlUrl, } from './lib/explorerHandoff.js';
29
+ export { METRIC_SECTION_TITLES, metricSectionTitle } from './lib/metrics/metricSections.js';
30
+ export { STARTER_QUERIES, traceQuery } from './lib/starterQueries.js';
31
+ export { QUERY_HISTORY_KEY } from './lib/queryHistory.js';
32
+ // The theme-token contract (`palette.status`, `palette.chart.series`).
33
+ export { telemetryTokens, useTelemetryTokens, withTelemetryTokens } from '../theme/telemetryTokens.js';
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/headless/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,+EAA+E;AAE/E,2EAA2E;AAC3E,wEAAwE;AACxE,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AAEjD,iDAAiD;AACjD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGjF,2CAA2C;AAC3C,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAG9E,uEAAuE;AACvE,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAQ5C,oCAAoC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAS1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAG1C,2BAA2B;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,uEAAuE;AACvE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AssistantMessage, AssistantReplyMessage } from '../hooks/useTelemetryAssistant.js';
2
+ export interface ConversationExportOptions {
3
+ exportedAt: Date;
4
+ modelCaption?: string | null;
5
+ }
6
+ /** `telemetry-assistant-<ISO stamp, ":" and "." as "-">.md` */
7
+ export declare function assistantExportFilename(now?: Date): string;
8
+ /** Just the answer of one reply (no steps), for the per-reply Copy. */
9
+ export declare function replyToMarkdown(reply: AssistantReplyMessage): string;
10
+ /** The whole conversation, written for another AI agent to read. */
11
+ export declare function conversationToMarkdown(messages: AssistantMessage[], { exportedAt, modelCaption }: ConversationExportOptions): string;
12
+ //# sourceMappingURL=assistantExport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistantExport.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/assistantExport.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAEjG,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,+DAA+D;AAC/D,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAEtE;AAkDD,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAEpE;AAqBD,oEAAoE;AACpE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,yBAAyB,GACtD,MAAM,CAwBR"}
@@ -0,0 +1,116 @@
1
+ /** `telemetry-assistant-<ISO stamp, ":" and "." as "-">.md` */
2
+ export function assistantExportFilename(now = new Date()) {
3
+ return `telemetry-assistant-${now.toISOString().replace(/[:.]/g, '-')}.md`;
4
+ }
5
+ function fenced(content, lang = '') {
6
+ const longest = (content.match(/`+/g) ?? []).reduce((max, run) => Math.max(max, run.length), 0);
7
+ const fence = '`'.repeat(Math.max(3, longest + 1));
8
+ return `${fence}${lang}\n${content}\n${fence}`;
9
+ }
10
+ function reportMarkdown(report) {
11
+ const out = [`Status: ${report.status} (confidence: ${report.confidence})`, '', report.summary];
12
+ if (report.findings.length) {
13
+ out.push('', '### Findings');
14
+ for (const finding of report.findings) {
15
+ out.push('', `- [${finding.severity}] ${finding.title}`, ` Evidence: ${finding.evidence}`);
16
+ }
17
+ }
18
+ if (report.rootCause)
19
+ out.push('', '### Root cause', '', report.rootCause);
20
+ if (report.recommendations.length) {
21
+ out.push('', '### Recommendations', '');
22
+ report.recommendations.forEach((item, i) => out.push(`${i + 1}. ${item}`));
23
+ }
24
+ if (report.queries.length) {
25
+ out.push('', '### Supporting queries');
26
+ for (const query of report.queries)
27
+ out.push('', `**${query.title}**`, '', fenced(query.sql, 'sql'));
28
+ }
29
+ return out;
30
+ }
31
+ function answerMarkdown(answer) {
32
+ if (answer.report)
33
+ return reportMarkdown(answer.report);
34
+ const out = [answer.explanation];
35
+ if (answer.sql)
36
+ out.push('', fenced(answer.sql, 'sql'));
37
+ return out;
38
+ }
39
+ /** The body of a reply's `## Answer` (answer, error or "Stopped"), or `null` when there is none. */
40
+ function replyBody(reply) {
41
+ const out = [];
42
+ if (reply.answer)
43
+ out.push(...answerMarkdown(reply.answer));
44
+ if (reply.error) {
45
+ if (out.length)
46
+ out.push('');
47
+ out.push(`Error${reply.error.code ? ` (${reply.error.code})` : ''}: ${reply.error.message}`);
48
+ }
49
+ if (reply.status === 'stopped') {
50
+ if (out.length)
51
+ out.push('');
52
+ out.push('Stopped');
53
+ }
54
+ return out.length ? out : null;
55
+ }
56
+ /** Just the answer of one reply (no steps), for the per-reply Copy. */
57
+ export function replyToMarkdown(reply) {
58
+ return (replyBody(reply) ?? []).join('\n');
59
+ }
60
+ function stepMarkdown(step, position) {
61
+ const out = [];
62
+ if (step.thought)
63
+ out.push(`Thought: ${step.thought}`, '');
64
+ out.push(`${position}. ${step.tool}`);
65
+ const details = [];
66
+ const input = step.input;
67
+ if (input?.table)
68
+ details.push(`table: ${input.table}`);
69
+ if (input?.window)
70
+ details.push(`window: ${input.window}`);
71
+ if (input?.group)
72
+ details.push(`group: ${input.group}`);
73
+ if (input?.traceId)
74
+ details.push(`traceId: ${input.traceId}`);
75
+ if (step.rowCount !== undefined)
76
+ details.push(`rows: ${step.rowCount}`);
77
+ if (step.truncated)
78
+ details.push('truncated: true');
79
+ details.push(`duration: ${step.durationMs}ms`);
80
+ if (step.error)
81
+ details.push(`error: ${step.error}`);
82
+ for (const detail of details)
83
+ out.push(` - ${detail}`);
84
+ if (input?.sql)
85
+ out.push('', fenced(input.sql, 'sql').replace(/^/gm, ' '));
86
+ return out;
87
+ }
88
+ /** The whole conversation, written for another AI agent to read. */
89
+ export function conversationToMarkdown(messages, { exportedAt, modelCaption }) {
90
+ const out = [
91
+ '# Telemetry assistant conversation',
92
+ '',
93
+ `Exported at: ${exportedAt.toISOString()}`,
94
+ ];
95
+ if (modelCaption)
96
+ out.push(`Model: ${modelCaption}`);
97
+ for (const message of messages) {
98
+ if (message.role === 'user') {
99
+ out.push('', '## Question', '', message.text);
100
+ continue;
101
+ }
102
+ if (message.steps.length) {
103
+ out.push('', '## Investigation', '');
104
+ message.steps.forEach((step, i) => {
105
+ if (i > 0)
106
+ out.push('');
107
+ out.push(...stepMarkdown(step, i + 1));
108
+ });
109
+ }
110
+ const body = replyBody(message);
111
+ if (body)
112
+ out.push('', '## Answer', '', ...body);
113
+ }
114
+ return `${out.join('\n')}\n`;
115
+ }
116
+ //# sourceMappingURL=assistantExport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistantExport.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/lib/assistantExport.ts"],"names":[],"mappings":"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"}