@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,111 @@
1
+ /**
2
+ * The Telemetry settings page's data — issue #537, epic #528.
3
+ *
4
+ * Loads `GET /admin/telemetry/config` and `GET /admin/telemetry/status`
5
+ * together, and saves with `If-Match: <version>`. A stale version answers 409;
6
+ * that is surfaced as `conflict` (not a generic error) so the page can offer a
7
+ * reload rather than a retry that would fail the same way.
8
+ */
9
+ import { useCallback, useEffect, useState } from 'react';
10
+ import { isPlatformApiError } from '../../../core/index.js';
11
+ import { useTelemetryClient } from '../services/client.js';
12
+ import { useIsMounted } from '../../internal/useIsMounted.js';
13
+ function message(err, fallback) {
14
+ return isPlatformApiError(err) || err instanceof Error ? err.message : fallback;
15
+ }
16
+ /**
17
+ * The Telemetry settings page's data: `GET /admin/telemetry/config` and `GET /admin/telemetry/status` together, and a save with `If-Match: <version>` (a 409 sets `conflict`). Reads the platform host's transport.
18
+ *
19
+ * @returns the config, the status and the save action.
20
+ * @throws Error outside a `PlatformHostProvider`.
21
+ *
22
+ * @stability experimental
23
+ */
24
+ export function useTelemetryAdmin() {
25
+ const client = useTelemetryClient();
26
+ const [config, setConfig] = useState(null);
27
+ const [status, setStatus] = useState(null);
28
+ const [isLoading, setIsLoading] = useState(true);
29
+ const [loadError, setLoadError] = useState(null);
30
+ const [statusError, setStatusError] = useState(null);
31
+ const [isSaving, setIsSaving] = useState(false);
32
+ const [saveError, setSaveError] = useState(null);
33
+ const [conflict, setConflict] = useState(false);
34
+ const isMounted = useIsMounted();
35
+ const refreshStatus = useCallback(async () => {
36
+ try {
37
+ const next = await client.getTelemetryStatus();
38
+ if (isMounted()) {
39
+ setStatus(next);
40
+ setStatusError(null);
41
+ }
42
+ }
43
+ catch (err) {
44
+ if (isMounted())
45
+ setStatusError(message(err, 'Failed to load telemetry status'));
46
+ }
47
+ }, [client, isMounted]);
48
+ const reload = useCallback(async () => {
49
+ setIsLoading(true);
50
+ setLoadError(null);
51
+ setSaveError(null);
52
+ setConflict(false);
53
+ try {
54
+ const [next] = await Promise.all([client.getTelemetryAdminConfig(), refreshStatus()]);
55
+ if (isMounted())
56
+ setConfig(next);
57
+ }
58
+ catch (err) {
59
+ if (isMounted())
60
+ setLoadError(message(err, 'Failed to load telemetry configuration'));
61
+ }
62
+ finally {
63
+ if (isMounted())
64
+ setIsLoading(false);
65
+ }
66
+ }, [client, isMounted, refreshStatus]);
67
+ useEffect(() => {
68
+ void reload();
69
+ }, [reload]);
70
+ const save = useCallback(async (settings) => {
71
+ setIsSaving(true);
72
+ setSaveError(null);
73
+ setConflict(false);
74
+ try {
75
+ const next = await client.updateTelemetryAdminConfig(settings, config?.version);
76
+ if (isMounted())
77
+ setConfig(next);
78
+ void refreshStatus();
79
+ return true;
80
+ }
81
+ catch (err) {
82
+ if (isMounted()) {
83
+ if (isPlatformApiError(err) && err.status === 409) {
84
+ setConflict(true);
85
+ }
86
+ else {
87
+ setSaveError(message(err, 'Failed to save telemetry configuration'));
88
+ }
89
+ }
90
+ return false;
91
+ }
92
+ finally {
93
+ if (isMounted())
94
+ setIsSaving(false);
95
+ }
96
+ }, [client, config?.version, isMounted, refreshStatus]);
97
+ return {
98
+ config,
99
+ status,
100
+ isLoading,
101
+ loadError,
102
+ statusError,
103
+ isSaving,
104
+ saveError,
105
+ conflict,
106
+ reload,
107
+ refreshStatus,
108
+ save,
109
+ };
110
+ }
111
+ //# sourceMappingURL=useTelemetryAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryAdmin.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryAdmin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { type TelemetryAssistantAnswer, type TelemetryAssistantStep, type TelemetryAssistantTurn } from '../services/telemetry.js';
2
+ /**
3
+ * How many earlier answered turns are replayed to the model as history.
4
+ *
5
+ * @stability experimental
6
+ */
7
+ export declare const ASSISTANT_HISTORY_TURNS = 10;
8
+ /**
9
+ * The longest question sent, in characters (the API's own limit).
10
+ *
11
+ * @stability experimental
12
+ */
13
+ export declare const ASSISTANT_QUESTION_MAX = 4000;
14
+ /**
15
+ * A question the viewer asked, as the assistant panel lists it.
16
+ *
17
+ * @stability experimental
18
+ */
19
+ export interface AssistantUserMessage {
20
+ /** A stable id within the conversation. */
21
+ id: string;
22
+ /** The viewer's turn. */
23
+ role: 'user';
24
+ /** The question as sent. */
25
+ text: string;
26
+ }
27
+ /**
28
+ * The assistant's reply to one question: its tool steps, its answer and how it ended.
29
+ *
30
+ * @stability experimental
31
+ */
32
+ export interface AssistantReplyMessage {
33
+ /** A stable id within the conversation. */
34
+ id: string;
35
+ /** The assistant's turn. */
36
+ role: 'assistant';
37
+ /** How the turn stands: still streaming, answered, failed or stopped by the viewer. */
38
+ status: 'streaming' | 'done' | 'error' | 'stopped';
39
+ /** The tool steps so far, in order. */
40
+ steps: TelemetryAssistantStep[];
41
+ /** The final answer, or `null` until it arrives. */
42
+ answer: TelemetryAssistantAnswer | null;
43
+ /** Why the turn failed, or `null`. */
44
+ error: AssistantReplyError | null;
45
+ }
46
+ /**
47
+ * Why an assistant turn failed.
48
+ *
49
+ * @stability experimental
50
+ */
51
+ export interface AssistantReplyError {
52
+ /** The reason or envelope code (`TELEMETRY_ASSISTANT_DISABLED`, `AI_DISABLED`, ...), or `null`. */
53
+ code: string | null;
54
+ /** What to show. */
55
+ message: string;
56
+ }
57
+ /**
58
+ * What {@link useTelemetryAssistant} returns.
59
+ *
60
+ * @stability experimental
61
+ */
62
+ export interface UseTelemetryAssistantReturn {
63
+ /** The conversation, oldest first. */
64
+ messages: AssistantMessage[];
65
+ /** A turn is streaming. */
66
+ isStreaming: boolean;
67
+ /** Ask a question (ignored while a turn streams or when it is blank). */
68
+ ask: (question: string) => Promise<void>;
69
+ /** Stop the turn in flight. */
70
+ stop: () => void;
71
+ /** Stop and forget the conversation. */
72
+ clear: () => void;
73
+ }
74
+ /**
75
+ * One entry of the assistant conversation.
76
+ *
77
+ * @stability experimental
78
+ */
79
+ export type AssistantMessage = AssistantUserMessage | AssistantReplyMessage;
80
+ /**
81
+ * Upper bound on one replayed answer, so a long report cannot crowd out the question.
82
+ *
83
+ * @stability experimental
84
+ */
85
+ export declare const ASSISTANT_HISTORY_ANSWER_MAX = 6000;
86
+ /**
87
+ * How an answered turn is replayed to the model as history: a compact report
88
+ * (status, summary, finding titles, root cause, recommendations, first query)
89
+ * bounded to {@link ASSISTANT_HISTORY_ANSWER_MAX}; a legacy answer unchanged.
90
+ *
91
+ * @stability experimental
92
+ */
93
+ export declare function answerAsHistory(answer: TelemetryAssistantAnswer): string;
94
+ /**
95
+ * The `history` for the next question: completed turns only (a question whose
96
+ * answer failed is dropped with it), the last {@link ASSISTANT_HISTORY_TURNS}.
97
+ *
98
+ * @stability experimental
99
+ */
100
+ export declare function buildAssistantHistory(messages: AssistantMessage[]): TelemetryAssistantTurn[];
101
+ /**
102
+ * What {@link useTelemetryAssistant} takes.
103
+ *
104
+ * @stability experimental
105
+ */
106
+ export interface UseTelemetryAssistantOptions {
107
+ /** Called once per turn when the final answer arrives. */
108
+ onAnswer?: (answer: TelemetryAssistantAnswer) => void;
109
+ }
110
+ /**
111
+ * The troubleshooting assistant's conversation: `ask` streams one turn (`POST /admin/telemetry/assistant/stream`) with the earlier answered turns as history; `stop` aborts it; `clear` forgets the conversation. The browser never talks to a model.
112
+ *
113
+ * @param options - an optional `onAnswer` callback.
114
+ * @returns `messages`, `isStreaming`, `ask`, `stop` and `clear`.
115
+ * @throws Error outside a `PlatformHostProvider`.
116
+ *
117
+ * @stability experimental
118
+ */
119
+ export declare function useTelemetryAssistant(options?: UseTelemetryAssistantOptions): UseTelemetryAssistantReturn;
120
+ //# sourceMappingURL=useTelemetryAssistant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryAssistant.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryAssistant.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,wBAAwB,EAE7B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AAKlC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,uFAAuF;IACvF,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnD,uCAAuC;IACvC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,oDAAoD;IACpD,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACxC,sCAAsC;IACtC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,mGAAmG;IACnG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,sCAAsC;IACtC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,2BAA2B;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAkBjD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,sBAAsB,EAAE,CAc5F;AAQD;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,2BAA2B,CAiG7G"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * The Telemetry Explorer's AI assistant conversation — issue #537, epic #528.
3
+ *
4
+ * Streams `POST /admin/telemetry/assistant/stream` (#536) through
5
+ * `streamTelemetryAssistant` (`postSse`). The browser never talks to a model:
6
+ * the API resolves the provider, the key and every tool call server-side and
7
+ * reports each tool step and the final answer as SSE frames.
8
+ *
9
+ * The last {@link ASSISTANT_HISTORY_TURNS} turns (a question and its answer
10
+ * each) are sent back as `history`, so a follow-up ("now only for the api
11
+ * service") has context. `stop()` aborts the stream; `clear()` aborts it and
12
+ * forgets the conversation (the panel's "New chat", issue #574), so the next
13
+ * question is sent with no `history`.
14
+ */
15
+ import { useCallback, useEffect, useRef, useState } from 'react';
16
+ import { toTelemetryError } from './useTelemetryExplorer.js';
17
+ import { useTelemetryClient } from '../services/client.js';
18
+ import { useIsMounted } from '../../internal/useIsMounted.js';
19
+ /**
20
+ * How many earlier answered turns are replayed to the model as history.
21
+ *
22
+ * @stability experimental
23
+ */
24
+ export const ASSISTANT_HISTORY_TURNS = 10;
25
+ /**
26
+ * The longest question sent, in characters (the API's own limit).
27
+ *
28
+ * @stability experimental
29
+ */
30
+ export const ASSISTANT_QUESTION_MAX = 4000;
31
+ /**
32
+ * Upper bound on one replayed answer, so a long report cannot crowd out the question.
33
+ *
34
+ * @stability experimental
35
+ */
36
+ export const ASSISTANT_HISTORY_ANSWER_MAX = 6000;
37
+ function reportAsHistory(report) {
38
+ const lines = [`Status: ${report.status} (confidence ${report.confidence})`, `Summary: ${report.summary}`];
39
+ if (report.findings.length) {
40
+ lines.push('Findings:');
41
+ for (const finding of report.findings)
42
+ lines.push(`- [${finding.severity}] ${finding.title}`);
43
+ }
44
+ if (report.rootCause)
45
+ lines.push(`Root cause: ${report.rootCause}`);
46
+ if (report.recommendations.length) {
47
+ lines.push('Recommendations:');
48
+ report.recommendations.forEach((item, i) => lines.push(`${i + 1}. ${item}`));
49
+ }
50
+ const firstSql = report.queries[0]?.sql;
51
+ if (firstSql)
52
+ lines.push('', 'SQL:', firstSql);
53
+ return lines.join('\n');
54
+ }
55
+ /**
56
+ * How an answered turn is replayed to the model as history: a compact report
57
+ * (status, summary, finding titles, root cause, recommendations, first query)
58
+ * bounded to {@link ASSISTANT_HISTORY_ANSWER_MAX}; a legacy answer unchanged.
59
+ *
60
+ * @stability experimental
61
+ */
62
+ export function answerAsHistory(answer) {
63
+ if (answer.report) {
64
+ const text = reportAsHistory(answer.report);
65
+ return text.length > ASSISTANT_HISTORY_ANSWER_MAX
66
+ ? `${text.slice(0, ASSISTANT_HISTORY_ANSWER_MAX - 1)}…`
67
+ : text;
68
+ }
69
+ return answer.sql ? `${answer.explanation}\n\nSQL:\n${answer.sql}` : answer.explanation;
70
+ }
71
+ /**
72
+ * The `history` for the next question: completed turns only (a question whose
73
+ * answer failed is dropped with it), the last {@link ASSISTANT_HISTORY_TURNS}.
74
+ *
75
+ * @stability experimental
76
+ */
77
+ export function buildAssistantHistory(messages) {
78
+ const turns = [];
79
+ for (let i = 0; i < messages.length; i += 1) {
80
+ const message = messages[i];
81
+ const next = messages[i + 1];
82
+ if (message.role === 'user' && next?.role === 'assistant' && next.answer) {
83
+ turns.push([
84
+ { role: 'user', content: message.text },
85
+ { role: 'assistant', content: answerAsHistory(next.answer) },
86
+ ]);
87
+ i += 1;
88
+ }
89
+ }
90
+ return turns.slice(-ASSISTANT_HISTORY_TURNS).flat();
91
+ }
92
+ let sequence = 0;
93
+ function nextId(prefix) {
94
+ sequence += 1;
95
+ return `${prefix}-${Date.now()}-${sequence}`;
96
+ }
97
+ /**
98
+ * The troubleshooting assistant's conversation: `ask` streams one turn (`POST /admin/telemetry/assistant/stream`) with the earlier answered turns as history; `stop` aborts it; `clear` forgets the conversation. The browser never talks to a model.
99
+ *
100
+ * @param options - an optional `onAnswer` callback.
101
+ * @returns `messages`, `isStreaming`, `ask`, `stop` and `clear`.
102
+ * @throws Error outside a `PlatformHostProvider`.
103
+ *
104
+ * @stability experimental
105
+ */
106
+ export function useTelemetryAssistant(options = {}) {
107
+ const client = useTelemetryClient();
108
+ const [messages, setMessages] = useState([]);
109
+ const [isStreaming, setIsStreaming] = useState(false);
110
+ const controllerRef = useRef(null);
111
+ const messagesRef = useRef(messages);
112
+ messagesRef.current = messages;
113
+ const onAnswerRef = useRef(options.onAnswer);
114
+ onAnswerRef.current = options.onAnswer;
115
+ const isMounted = useIsMounted();
116
+ useEffect(() => () => controllerRef.current?.abort(), []);
117
+ const patchReply = useCallback((id, patch) => {
118
+ if (!isMounted())
119
+ return;
120
+ setMessages((prev) => prev.map((message) => message.id === id && message.role === 'assistant' ? patch(message) : message));
121
+ }, [isMounted]);
122
+ const ask = useCallback(async (question) => {
123
+ const text = question.trim().slice(0, ASSISTANT_QUESTION_MAX);
124
+ if (!text || controllerRef.current)
125
+ return;
126
+ const history = buildAssistantHistory(messagesRef.current);
127
+ const replyId = nextId('assistant');
128
+ setMessages((prev) => [
129
+ ...prev,
130
+ { id: nextId('user'), role: 'user', text },
131
+ { id: replyId, role: 'assistant', status: 'streaming', steps: [], answer: null, error: null },
132
+ ]);
133
+ const controller = new AbortController();
134
+ controllerRef.current = controller;
135
+ setIsStreaming(true);
136
+ try {
137
+ await client.streamTelemetryAssistant({ question: text, ...(history.length ? { history } : {}) }, {
138
+ signal: controller.signal,
139
+ onStep: (step) => patchReply(replyId, (reply) => ({ ...reply, steps: [...reply.steps, step] })),
140
+ onAnswer: (answer) => {
141
+ patchReply(replyId, (reply) => ({ ...reply, answer }));
142
+ onAnswerRef.current?.(answer);
143
+ },
144
+ onError: (error) => patchReply(replyId, (reply) => ({ ...reply, status: 'error', error })),
145
+ });
146
+ patchReply(replyId, (reply) => ({
147
+ ...reply,
148
+ status: controller.signal.aborted
149
+ ? 'stopped'
150
+ : reply.status === 'error'
151
+ ? 'error'
152
+ : reply.answer
153
+ ? 'done'
154
+ : 'error',
155
+ error: reply.error ??
156
+ (controller.signal.aborted || reply.answer
157
+ ? null
158
+ : { code: null, message: 'The assistant ended without an answer.' }),
159
+ }));
160
+ }
161
+ catch (err) {
162
+ const info = toTelemetryError(err, 'The assistant request failed');
163
+ patchReply(replyId, (reply) => ({
164
+ ...reply,
165
+ status: 'error',
166
+ error: { code: info.reason ?? info.code, message: info.message },
167
+ }));
168
+ }
169
+ finally {
170
+ if (controllerRef.current === controller)
171
+ controllerRef.current = null;
172
+ if (isMounted())
173
+ setIsStreaming(false);
174
+ }
175
+ }, [client, isMounted, patchReply]);
176
+ const stop = useCallback(() => {
177
+ controllerRef.current?.abort();
178
+ }, []);
179
+ const clear = useCallback(() => {
180
+ controllerRef.current?.abort();
181
+ setMessages([]);
182
+ }, []);
183
+ return { messages, isStreaming, ask, stop, clear };
184
+ }
185
+ //# sourceMappingURL=useTelemetryAssistant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryAssistant.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryAssistant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAyE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,SAAS,eAAe,CAAC,MAAgC;IACvD,MAAM,KAAK,GAAa,CAAC,WAAW,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,UAAU,GAAG,EAAE,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACrH,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACxC,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAgC;IAC9D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,GAAG,4BAA4B;YAC/C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,4BAA4B,GAAG,CAAC,CAAC,GAAG;YACvD,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,aAAa,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA4B;IAChE,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBACvC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;aAC7D,CAAC,CAAC;YACH,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,SAAS,MAAM,CAAC,MAAc;IAC5B,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAYD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;IAC9E,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAqB,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IACvC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,EAAU,EAAE,KAA8D,EAAE,EAAE;QAC7E,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QACzB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAC7E,CACF,CAAC;IACJ,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,GAAG,GAAG,WAAW,CACrB,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO;YAAE,OAAO;QAE3C,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACpC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,GAAG,IAAI;YACP,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC1C,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SAC9F,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;QACnC,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,wBAAwB,CACnC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC1D;gBACE,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CACf,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/E,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACnB,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;oBACvD,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;aACzE,CACF,CAAC;YACF,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,KAAK;gBACR,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;oBAC/B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO;wBACxB,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,KAAK,CAAC,MAAM;4BACZ,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,OAAO;gBACf,KAAK,EACH,KAAK,CAAC,KAAK;oBACX,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM;wBACxC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;aACzE,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;YACnE,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,KAAK;gBACR,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;aACjE,CAAC,CAAC,CAAC;QACN,CAAC;gBAAS,CAAC;YACT,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU;gBAAE,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;YACvE,IAAI,SAAS,EAAE;gBAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAChC,CAAC;IAEF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/B,WAAW,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Whether the telemetry assistant may be offered to this viewer: switched on
3
+ * in the Telemetry settings, AI switched on for the deployment (the app's
4
+ * {@link TelemetryWebAdapters.useAiEnabled}) and the viewer holds `ai:use`.
5
+ * It only hides the control; the API enforces every condition.
6
+ *
7
+ * @returns `true` when all three hold.
8
+ *
9
+ * @stability experimental
10
+ */
11
+ export declare function useTelemetryAssistantAvailable(): boolean;
12
+ //# sourceMappingURL=useTelemetryAssistantAvailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryAssistantAvailable.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryAssistantAvailable.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAKxD"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Whether the telemetry AI assistant may be offered to this viewer — issue
3
+ * #579 (extracted from the Telemetry Explorer, #537), epic #576.
4
+ *
5
+ * ONE condition, shared by every page that offers the assistant (the Telemetry
6
+ * Explorer and the Telemetry Dashboard), so the two can never disagree:
7
+ *
8
+ * - the assistant is switched on in the Telemetry settings
9
+ * (`GET /api/telemetry/config` → `assistantEnabled`),
10
+ * - AI is switched on for the deployment (the app's `useAiEnabled` adapter;
11
+ * in the reference app `GET /api/ai/config` → `enabled`),
12
+ * - the viewer holds `ai:use`.
13
+ *
14
+ * This only HIDES the control. The API enforces every one of those on
15
+ * `POST /admin/telemetry/assistant/stream` regardless.
16
+ */
17
+ import { usePlatformViewer } from '../../../core/index.js';
18
+ import { useTelemetryWebAdapters } from '../adapters/TelemetryWebAdapters.js';
19
+ import { useTelemetryConfig } from '../context/telemetryConfig.js';
20
+ /**
21
+ * Whether the telemetry assistant may be offered to this viewer: switched on
22
+ * in the Telemetry settings, AI switched on for the deployment (the app's
23
+ * {@link TelemetryWebAdapters.useAiEnabled}) and the viewer holds `ai:use`.
24
+ * It only hides the control; the API enforces every condition.
25
+ *
26
+ * @returns `true` when all three hold.
27
+ *
28
+ * @stability experimental
29
+ */
30
+ export function useTelemetryAssistantAvailable() {
31
+ const { hasPermission } = usePlatformViewer();
32
+ const { config: telemetryConfig } = useTelemetryConfig();
33
+ const { enabled: aiEnabled } = useTelemetryWebAdapters().useAiEnabled();
34
+ return telemetryConfig.assistantEnabled && aiEnabled && hasPermission('ai:use');
35
+ }
36
+ //# sourceMappingURL=useTelemetryAssistantAvailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryAssistantAvailable.js","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryAssistantAvailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC9C,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACzD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,uBAAuB,EAAE,CAAC,YAAY,EAAE,CAAC;IACxE,OAAO,eAAe,CAAC,gBAAgB,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type TelemetryConnection, type TelemetryConnectionInput, type TelemetryConnectionTestResult } from '../services/telemetry.js';
2
+ /**
3
+ * What {@link useTelemetryConnection} returns.
4
+ *
5
+ * @stability experimental
6
+ */
7
+ export interface UseTelemetryConnectionReturn {
8
+ /** The connection in force, or `null` before the first load. */
9
+ connection: TelemetryConnection | null;
10
+ /** A (re)load is in flight. */
11
+ isLoading: boolean;
12
+ /** Why the connection could not be loaded, or `null`. */
13
+ loadError: string | null;
14
+ /** A save or revert is in flight. */
15
+ isSaving: boolean;
16
+ /** Why the last save or revert failed (other than a 409), or `null`. */
17
+ saveError: string | null;
18
+ /** True after a write was refused with 409 — someone else changed it first. */
19
+ conflict: boolean;
20
+ /** A connection test is in flight. */
21
+ isTesting: boolean;
22
+ /** The last test's diagnosis, or `null`. */
23
+ testResult: TelemetryConnectionTestResult | null;
24
+ /** Why the last test could not be run, or `null`. */
25
+ testError: string | null;
26
+ /** Load the connection again. */
27
+ reload: () => Promise<void>;
28
+ /** Store a connection; resolves `true` on success. */
29
+ save: (input: TelemetryConnectionInput) => Promise<boolean>;
30
+ /** Forget the stored connection (the deployment default is in force again); resolves `true` on success. */
31
+ revert: () => Promise<boolean>;
32
+ /** Test a candidate connection without storing it. */
33
+ test: (input: TelemetryConnectionInput) => Promise<void>;
34
+ /** Forget the last test's result and error. */
35
+ clearTestResult: () => void;
36
+ }
37
+ /**
38
+ * The GreptimeDB connection section's data: `GET`, `PUT` and `DELETE /admin/telemetry/connection` (with `If-Match`; a 409 sets `conflict`) and `POST …/connection/test`. Passwords are write-only: they are sent, never read back.
39
+ *
40
+ * @returns the connection and its actions.
41
+ * @throws Error outside a `PlatformHostProvider`.
42
+ *
43
+ * @stability experimental
44
+ */
45
+ export declare function useTelemetryConnection(): UseTelemetryConnectionReturn;
46
+ //# sourceMappingURL=useTelemetryConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTelemetryConnection.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/headless/hooks/useTelemetryConnection.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,gEAAgE;IAChE,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvC,+BAA+B;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACjD,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iCAAiC;IACjC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,sDAAsD;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,2GAA2G;IAC3G,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,sDAAsD;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,+CAA+C;IAC/C,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,4BAA4B,CAuHrE"}