@marinoscar/platform-web 0.1.0-next.18 → 0.1.0-next.20

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 (256) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +5 -3
  3. package/dist/ai/headless/errors.d.ts +7 -0
  4. package/dist/ai/headless/errors.d.ts.map +1 -1
  5. package/dist/ai/headless/errors.js +2 -0
  6. package/dist/ai/headless/errors.js.map +1 -1
  7. package/dist/ai/headless/types.d.ts +30 -5
  8. package/dist/ai/headless/types.d.ts.map +1 -1
  9. package/dist/ai/headless/types.js +22 -10
  10. package/dist/ai/headless/types.js.map +1 -1
  11. package/dist/ai/headless/use-ai-usage.d.ts +5 -2
  12. package/dist/ai/headless/use-ai-usage.d.ts.map +1 -1
  13. package/dist/ai/headless/use-ai-usage.js +15 -5
  14. package/dist/ai/headless/use-ai-usage.js.map +1 -1
  15. package/dist/ai/ui/AiUsagePage.d.ts.map +1 -1
  16. package/dist/ai/ui/AiUsagePage.js +7 -5
  17. package/dist/ai/ui/AiUsagePage.js.map +1 -1
  18. package/dist/ai/ui/shared/AiErrorAlert.d.ts.map +1 -1
  19. package/dist/ai/ui/shared/AiErrorAlert.js +5 -1
  20. package/dist/ai/ui/shared/AiErrorAlert.js.map +1 -1
  21. package/dist/ai/ui/usage/aiUsageFormat.d.ts +9 -6
  22. package/dist/ai/ui/usage/aiUsageFormat.d.ts.map +1 -1
  23. package/dist/ai/ui/usage/aiUsageFormat.js +28 -12
  24. package/dist/ai/ui/usage/aiUsageFormat.js.map +1 -1
  25. package/dist/ai/ui/user/MyAiUsageSection.d.ts.map +1 -1
  26. package/dist/ai/ui/user/MyAiUsageSection.js +5 -2
  27. package/dist/ai/ui/user/MyAiUsageSection.js.map +1 -1
  28. package/dist/ai/ui/user/aiErrorText.d.ts +4 -1
  29. package/dist/ai/ui/user/aiErrorText.d.ts.map +1 -1
  30. package/dist/ai/ui/user/aiErrorText.js +10 -2
  31. package/dist/ai/ui/user/aiErrorText.js.map +1 -1
  32. package/dist/alerts/headless/client.d.ts +134 -0
  33. package/dist/alerts/headless/client.d.ts.map +1 -0
  34. package/dist/alerts/headless/client.js +105 -0
  35. package/dist/alerts/headless/client.js.map +1 -0
  36. package/dist/alerts/headless/format.d.ts +95 -0
  37. package/dist/alerts/headless/format.d.ts.map +1 -0
  38. package/dist/alerts/headless/format.js +164 -0
  39. package/dist/alerts/headless/format.js.map +1 -0
  40. package/dist/alerts/headless/hooks.d.ts +245 -0
  41. package/dist/alerts/headless/hooks.d.ts.map +1 -0
  42. package/dist/alerts/headless/hooks.js +315 -0
  43. package/dist/alerts/headless/hooks.js.map +1 -0
  44. package/dist/alerts/headless/index.d.ts +9 -0
  45. package/dist/alerts/headless/index.d.ts.map +1 -0
  46. package/dist/alerts/headless/index.js +9 -0
  47. package/dist/alerts/headless/index.js.map +1 -0
  48. package/dist/alerts/headless/rule-draft.d.ts +175 -0
  49. package/dist/alerts/headless/rule-draft.d.ts.map +1 -0
  50. package/dist/alerts/headless/rule-draft.js +261 -0
  51. package/dist/alerts/headless/rule-draft.js.map +1 -0
  52. package/dist/alerts/ui/AlertIncidentDrawer.d.ts +30 -0
  53. package/dist/alerts/ui/AlertIncidentDrawer.d.ts.map +1 -0
  54. package/dist/alerts/ui/AlertIncidentDrawer.js +33 -0
  55. package/dist/alerts/ui/AlertIncidentDrawer.js.map +1 -0
  56. package/dist/alerts/ui/AlertRuleDialog.d.ts +47 -0
  57. package/dist/alerts/ui/AlertRuleDialog.d.ts.map +1 -0
  58. package/dist/alerts/ui/AlertRuleDialog.js +124 -0
  59. package/dist/alerts/ui/AlertRuleDialog.js.map +1 -0
  60. package/dist/alerts/ui/AlertRuleTestResult.d.ts +23 -0
  61. package/dist/alerts/ui/AlertRuleTestResult.d.ts.map +1 -0
  62. package/dist/alerts/ui/AlertRuleTestResult.js +30 -0
  63. package/dist/alerts/ui/AlertRuleTestResult.js.map +1 -0
  64. package/dist/alerts/ui/AlertsPage.d.ts +41 -0
  65. package/dist/alerts/ui/AlertsPage.d.ts.map +1 -0
  66. package/dist/alerts/ui/AlertsPage.js +238 -0
  67. package/dist/alerts/ui/AlertsPage.js.map +1 -0
  68. package/dist/alerts/ui/FiringAlertsBanner.d.ts +28 -0
  69. package/dist/alerts/ui/FiringAlertsBanner.d.ts.map +1 -0
  70. package/dist/alerts/ui/FiringAlertsBanner.js +45 -0
  71. package/dist/alerts/ui/FiringAlertsBanner.js.map +1 -0
  72. package/dist/alerts/ui/copy.d.ts +15 -0
  73. package/dist/alerts/ui/copy.d.ts.map +1 -0
  74. package/dist/alerts/ui/copy.js +14 -0
  75. package/dist/alerts/ui/copy.js.map +1 -0
  76. package/dist/alerts/ui/index.d.ts +14 -0
  77. package/dist/alerts/ui/index.d.ts.map +1 -0
  78. package/dist/alerts/ui/index.js +12 -0
  79. package/dist/alerts/ui/index.js.map +1 -0
  80. package/dist/alerts/ui/parts.d.ts +26 -0
  81. package/dist/alerts/ui/parts.d.ts.map +1 -0
  82. package/dist/alerts/ui/parts.js +27 -0
  83. package/dist/alerts/ui/parts.js.map +1 -0
  84. package/dist/alerts/ui/settings.d.ts +27 -0
  85. package/dist/alerts/ui/settings.d.ts.map +1 -0
  86. package/dist/alerts/ui/settings.js +37 -0
  87. package/dist/alerts/ui/settings.js.map +1 -0
  88. package/dist/core/http/client.d.ts.map +1 -1
  89. package/dist/core/http/client.js +7 -0
  90. package/dist/core/http/client.js.map +1 -1
  91. package/dist/core/http/sse.d.ts.map +1 -1
  92. package/dist/core/http/sse.js +3 -1
  93. package/dist/core/http/sse.js.map +1 -1
  94. package/dist/core/index.d.ts +1 -0
  95. package/dist/core/index.d.ts.map +1 -1
  96. package/dist/core/index.js +1 -0
  97. package/dist/core/index.js.map +1 -1
  98. package/dist/core/time-zone/format.d.ts +6 -2
  99. package/dist/core/time-zone/format.d.ts.map +1 -1
  100. package/dist/core/time-zone/format.js +27 -25
  101. package/dist/core/time-zone/format.js.map +1 -1
  102. package/dist/core/time-zone/request.d.ts +17 -0
  103. package/dist/core/time-zone/request.d.ts.map +1 -0
  104. package/dist/core/time-zone/request.js +26 -0
  105. package/dist/core/time-zone/request.js.map +1 -0
  106. package/dist/datatable/headless/export/exportModel.d.ts +7 -1
  107. package/dist/datatable/headless/export/exportModel.d.ts.map +1 -1
  108. package/dist/datatable/headless/export/exportModel.js +10 -2
  109. package/dist/datatable/headless/export/exportModel.js.map +1 -1
  110. package/dist/datatable/headless/filter/dateRange.d.ts +40 -0
  111. package/dist/datatable/headless/filter/dateRange.d.ts.map +1 -0
  112. package/dist/datatable/headless/filter/dateRange.js +53 -0
  113. package/dist/datatable/headless/filter/dateRange.js.map +1 -0
  114. package/dist/datatable/headless/filter/filterTypes.d.ts.map +1 -1
  115. package/dist/datatable/headless/filter/filterTypes.js +24 -4
  116. package/dist/datatable/headless/filter/filterTypes.js.map +1 -1
  117. package/dist/datatable/headless/index.d.ts +2 -0
  118. package/dist/datatable/headless/index.d.ts.map +1 -1
  119. package/dist/datatable/headless/index.js +1 -0
  120. package/dist/datatable/headless/index.js.map +1 -1
  121. package/dist/db-backup/internal/time-zones.d.ts +3 -0
  122. package/dist/db-backup/internal/time-zones.d.ts.map +1 -0
  123. package/dist/db-backup/internal/time-zones.js +24 -0
  124. package/dist/db-backup/internal/time-zones.js.map +1 -0
  125. package/dist/db-backup/ui/DbBackupConfigPanel.d.ts +11 -6
  126. package/dist/db-backup/ui/DbBackupConfigPanel.d.ts.map +1 -1
  127. package/dist/db-backup/ui/DbBackupConfigPanel.js +18 -11
  128. package/dist/db-backup/ui/DbBackupConfigPanel.js.map +1 -1
  129. package/dist/identity/ui/tokens/CreatePatDialog.d.ts +17 -0
  130. package/dist/identity/ui/tokens/CreatePatDialog.d.ts.map +1 -1
  131. package/dist/identity/ui/tokens/CreatePatDialog.js +34 -11
  132. package/dist/identity/ui/tokens/CreatePatDialog.js.map +1 -1
  133. package/dist/nodes/headless/api.d.ts +3 -1
  134. package/dist/nodes/headless/api.d.ts.map +1 -1
  135. package/dist/nodes/headless/api.js +22 -0
  136. package/dist/nodes/headless/api.js.map +1 -1
  137. package/dist/nodes/headless/index.d.ts +7 -2
  138. package/dist/nodes/headless/index.d.ts.map +1 -1
  139. package/dist/nodes/headless/index.js +4 -1
  140. package/dist/nodes/headless/index.js.map +1 -1
  141. package/dist/nodes/headless/node-events.d.ts +43 -0
  142. package/dist/nodes/headless/node-events.d.ts.map +1 -0
  143. package/dist/nodes/headless/node-events.js +150 -0
  144. package/dist/nodes/headless/node-events.js.map +1 -0
  145. package/dist/nodes/headless/power.d.ts +43 -0
  146. package/dist/nodes/headless/power.d.ts.map +1 -0
  147. package/dist/nodes/headless/power.js +74 -0
  148. package/dist/nodes/headless/power.js.map +1 -0
  149. package/dist/nodes/headless/types.d.ts +40 -3
  150. package/dist/nodes/headless/types.d.ts.map +1 -1
  151. package/dist/nodes/headless/types.js +1 -1
  152. package/dist/nodes/headless/types.js.map +1 -1
  153. package/dist/nodes/headless/use-node-events.d.ts +59 -0
  154. package/dist/nodes/headless/use-node-events.d.ts.map +1 -0
  155. package/dist/nodes/headless/use-node-events.js +159 -0
  156. package/dist/nodes/headless/use-node-events.js.map +1 -0
  157. package/dist/nodes/ui/NodeEventsTimeline.d.ts +39 -0
  158. package/dist/nodes/ui/NodeEventsTimeline.d.ts.map +1 -0
  159. package/dist/nodes/ui/NodeEventsTimeline.js +63 -0
  160. package/dist/nodes/ui/NodeEventsTimeline.js.map +1 -0
  161. package/dist/nodes/ui/NodePowerBadge.d.ts +27 -0
  162. package/dist/nodes/ui/NodePowerBadge.d.ts.map +1 -0
  163. package/dist/nodes/ui/NodePowerBadge.js +48 -0
  164. package/dist/nodes/ui/NodePowerBadge.js.map +1 -0
  165. package/dist/nodes/ui/NodeVitalsDialog.d.ts +11 -1
  166. package/dist/nodes/ui/NodeVitalsDialog.d.ts.map +1 -1
  167. package/dist/nodes/ui/NodeVitalsDialog.js +14 -5
  168. package/dist/nodes/ui/NodeVitalsDialog.js.map +1 -1
  169. package/dist/nodes/ui/WorkersPage.d.ts.map +1 -1
  170. package/dist/nodes/ui/WorkersPage.js +2 -1
  171. package/dist/nodes/ui/WorkersPage.js.map +1 -1
  172. package/dist/nodes/ui/workerVitals.d.ts +17 -1
  173. package/dist/nodes/ui/workerVitals.d.ts.map +1 -1
  174. package/dist/nodes/ui/workerVitals.js +43 -0
  175. package/dist/nodes/ui/workerVitals.js.map +1 -1
  176. package/dist/nodes/ui/workersTable.d.ts.map +1 -1
  177. package/dist/nodes/ui/workersTable.js +2 -1
  178. package/dist/nodes/ui/workersTable.js.map +1 -1
  179. package/dist/settings/ui/ProfileSettings.d.ts +1 -1
  180. package/dist/settings/ui/ProfileSettings.d.ts.map +1 -1
  181. package/dist/settings/ui/UserSettingsSection.d.ts +1 -1
  182. package/dist/settings/ui/UserSettingsSection.d.ts.map +1 -1
  183. package/dist/sharing/internal/format.d.ts +10 -1
  184. package/dist/sharing/internal/format.d.ts.map +1 -1
  185. package/dist/sharing/internal/format.js +10 -1
  186. package/dist/sharing/internal/format.js.map +1 -1
  187. package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +1 -1
  188. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +11 -0
  189. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -1
  190. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +17 -2
  191. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -1
  192. package/dist/webhooks/headless/client.d.ts +101 -0
  193. package/dist/webhooks/headless/client.d.ts.map +1 -0
  194. package/dist/webhooks/headless/client.js +105 -0
  195. package/dist/webhooks/headless/client.js.map +1 -0
  196. package/dist/webhooks/headless/event-selection.d.ts +119 -0
  197. package/dist/webhooks/headless/event-selection.d.ts.map +1 -0
  198. package/dist/webhooks/headless/event-selection.js +225 -0
  199. package/dist/webhooks/headless/event-selection.js.map +1 -0
  200. package/dist/webhooks/headless/format.d.ts +84 -0
  201. package/dist/webhooks/headless/format.d.ts.map +1 -0
  202. package/dist/webhooks/headless/format.js +142 -0
  203. package/dist/webhooks/headless/format.js.map +1 -0
  204. package/dist/webhooks/headless/hooks.d.ts +199 -0
  205. package/dist/webhooks/headless/hooks.d.ts.map +1 -0
  206. package/dist/webhooks/headless/hooks.js +249 -0
  207. package/dist/webhooks/headless/hooks.js.map +1 -0
  208. package/dist/webhooks/headless/index.d.ts +9 -0
  209. package/dist/webhooks/headless/index.d.ts.map +1 -0
  210. package/dist/webhooks/headless/index.js +9 -0
  211. package/dist/webhooks/headless/index.js.map +1 -0
  212. package/dist/webhooks/ui/WebhookDeliveryDrawer.d.ts +32 -0
  213. package/dist/webhooks/ui/WebhookDeliveryDrawer.d.ts.map +1 -0
  214. package/dist/webhooks/ui/WebhookDeliveryDrawer.js +64 -0
  215. package/dist/webhooks/ui/WebhookDeliveryDrawer.js.map +1 -0
  216. package/dist/webhooks/ui/WebhookEndpointDetail.d.ts +21 -0
  217. package/dist/webhooks/ui/WebhookEndpointDetail.d.ts.map +1 -0
  218. package/dist/webhooks/ui/WebhookEndpointDetail.js +96 -0
  219. package/dist/webhooks/ui/WebhookEndpointDetail.js.map +1 -0
  220. package/dist/webhooks/ui/WebhookEndpointDialog.d.ts +39 -0
  221. package/dist/webhooks/ui/WebhookEndpointDialog.d.ts.map +1 -0
  222. package/dist/webhooks/ui/WebhookEndpointDialog.js +79 -0
  223. package/dist/webhooks/ui/WebhookEndpointDialog.js.map +1 -0
  224. package/dist/webhooks/ui/WebhookEventPicker.d.ts +30 -0
  225. package/dist/webhooks/ui/WebhookEventPicker.d.ts.map +1 -0
  226. package/dist/webhooks/ui/WebhookEventPicker.js +33 -0
  227. package/dist/webhooks/ui/WebhookEventPicker.js.map +1 -0
  228. package/dist/webhooks/ui/WebhookSecretDialog.d.ts +27 -0
  229. package/dist/webhooks/ui/WebhookSecretDialog.d.ts.map +1 -0
  230. package/dist/webhooks/ui/WebhookSecretDialog.js +52 -0
  231. package/dist/webhooks/ui/WebhookSecretDialog.js.map +1 -0
  232. package/dist/webhooks/ui/WebhookSignatureHelp.d.ts +18 -0
  233. package/dist/webhooks/ui/WebhookSignatureHelp.d.ts.map +1 -0
  234. package/dist/webhooks/ui/WebhookSignatureHelp.js +40 -0
  235. package/dist/webhooks/ui/WebhookSignatureHelp.js.map +1 -0
  236. package/dist/webhooks/ui/WebhooksPage.d.ts +47 -0
  237. package/dist/webhooks/ui/WebhooksPage.d.ts.map +1 -0
  238. package/dist/webhooks/ui/WebhooksPage.js +172 -0
  239. package/dist/webhooks/ui/WebhooksPage.js.map +1 -0
  240. package/dist/webhooks/ui/copy.d.ts +24 -0
  241. package/dist/webhooks/ui/copy.d.ts.map +1 -0
  242. package/dist/webhooks/ui/copy.js +34 -0
  243. package/dist/webhooks/ui/copy.js.map +1 -0
  244. package/dist/webhooks/ui/index.d.ts +15 -0
  245. package/dist/webhooks/ui/index.d.ts.map +1 -0
  246. package/dist/webhooks/ui/index.js +12 -0
  247. package/dist/webhooks/ui/index.js.map +1 -0
  248. package/dist/webhooks/ui/parts.d.ts +25 -0
  249. package/dist/webhooks/ui/parts.d.ts.map +1 -0
  250. package/dist/webhooks/ui/parts.js +28 -0
  251. package/dist/webhooks/ui/parts.js.map +1 -0
  252. package/dist/webhooks/ui/settings.d.ts +58 -0
  253. package/dist/webhooks/ui/settings.d.ts.map +1 -0
  254. package/dist/webhooks/ui/settings.js +79 -0
  255. package/dist/webhooks/ui/settings.js.map +1 -0
  256. package/package.json +18 -2
@@ -1 +1 @@
1
- {"version":3,"file":"AiErrorAlert.js","sourceRoot":"","sources":["../../../../src/ai/ui/shared/AiErrorAlert.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AiErrorAlert.js","sourceRoot":"","sources":["../../../../src/ai/ui/shared/AiErrorAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAS3C,oFAAoF;AACpF,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChF,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACxC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,GAAuB;IAC3D,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACjF,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,2BAA2B;YAC9B,OAAO,GAAG,QAAQ,aAAa,CAAC;QAClC,KAAK,wBAAwB;YAC3B,OAAO,GAAG,QAAQ,UAAU,CAAC;QAC/B,KAAK,8BAA8B;YACjC,OAAO,GAAG,QAAQ,oCAAoC,CAAC;QACzD,KAAK,4BAA4B;YAC/B,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,oCAAoC,CAAC;QACtF,KAAK,mCAAmC;YACtC,OAAO,GAAG,QAAQ,4BAA4B,CAAC;QACjD,mEAAmE;QACnE,KAAK,uBAAuB;YAC1B,OAAO,GAAG,QAAQ,gCAAgC,CAAC;QACrD,KAAK,2BAA2B;YAC9B,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,gCAAgC,CAAC;QACtH;YACE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,SAAS,mBAAmB,CAAC,KAAsC;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjD,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,OAAO;QACL,KAAK,EAAE,kBAAkB,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG;QACjE,IAAI,EACF,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,KAAK,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC;YACvD,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,2CAA2C;YAC3C,CAAC,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,QAAQ,EAAE,SAAS;QACnB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO;gBACL,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,oEAAoE;gBAC1E,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE;aACnD,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,KAAK,EAAE,uCAAuC;gBAC9C,IAAI,EAAE,wEAAwE;gBAC9E,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,YAAY,EAAE;aACtD,CAAC;QACJ,KAAK,sBAAsB;YACzB,OAAO;gBACL,KAAK,EAAE,mCAAmC;gBAC1C,IAAI,EAAE,4FAA4F;gBAClG,QAAQ,EAAE,SAAS;aACpB,CAAC;QACJ,KAAK,wBAAwB;YAC3B,OAAO;gBACL,KAAK,EAAE,mCAAmC;gBAC1C,IAAI,EAAE,2FAA2F;gBACjG,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,YAAY,EAAE;aACvD,CAAC;QACJ,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,oEAAoE;YACpE,IAAI,KAAK,CAAC,KAAK;gBAAE,OAAO,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,OAAO,GACX,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9F,OAAO;gBACL,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,kCAAkC,OAAO,IAAI,CAAC,CAAC,CAAC,qCAAqC;gBAC/G,IAAI,EAAE,uEAAuE;gBAC7E,QAAQ,EAAE,SAAS;aACpB,CAAC;QACJ,CAAC;QACD,KAAK,aAAa;YAChB,OAAO;gBACL,KAAK,EAAE,sCAAsC;gBAC7C,IAAI,EAAE,0DAA0D;gBAChE,QAAQ,EAAE,MAAM;aACjB,CAAC;QACJ,KAAK,sBAAsB;YACzB,0DAA0D;YAC1D,OAAO;gBACL,KAAK,EAAE,gCAAgC;gBACvC,IAAI,EAAE,sDAAsD;gBAC5D,QAAQ,EAAE,MAAM;aACjB,CAAC;QACJ,KAAK,sBAAsB;YACzB,OAAO;gBACL,KAAK,EAAE,2BAA2B;gBAClC,IAAI,EAAE,wFAAwF;gBAC9F,QAAQ,EAAE,SAAS;aACpB,CAAC;QACJ,KAAK,2BAA2B;YAC9B,OAAO;gBACL,KAAK,EAAE,0BAA0B;gBACjC,IAAI,EAAE,2GAA2G;gBACjH,QAAQ,EAAE,SAAS;aACpB,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO;gBACL,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,kHAAkH;gBACxH,QAAQ,EAAE,SAAS;aACpB,CAAC;QACJ,KAAK,qBAAqB;YACxB,OAAO;gBACL,KAAK,EAAE,+BAA+B;gBACtC,IAAI,EAAE,4FAA4F;gBAClG,QAAQ,EAAE,SAAS;aACpB,CAAC;QACJ,KAAK,yBAAyB;YAC5B,OAAO;gBACL,KAAK,EAAE,6BAA6B;gBACpC,IAAI,EAAE,oFAAoF;gBAC1F,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ,KAAK,8BAA8B;YACjC,OAAO;gBACL,KAAK,EAAE,oCAAoC;gBAC3C,IAAI,EAAE,8GAA8G;gBACpH,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ,KAAK,wBAAwB;YAC3B,qEAAqE;YACrE,mEAAmE;YACnE,2DAA2D;YAC3D,OAAO;gBACL,KAAK,EAAE,8BAA8B;gBACrC,IAAI,EAAE,4HAA4H;gBAClI,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,KAAK,CAAC,OAAO;gBACnB,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ;YACE,OAAO;gBACL,KAAK,EAAE,sBAAsB;gBAC7B,IAAI,EAAE,KAAK,CAAC,OAAO;gBACnB,QAAQ,EAAE,OAAO;aAClB,CAAC;IACN,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAqB;IAChE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,sEAAsE;IACtE,2EAA2E;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC;IAEzF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU;YAAE,KAAK,OAAO,EAAE,CAAC;QAC/B,kEAAkE;IACpE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjC,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtF,OAAO,CACL,MAAC,KAAK,IACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,OAAO,wBACI,KAAK,CAAC,IAAI,IAAI,SAAS,EAC3C,MAAM,EACJ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACZ,KAAC,MAAM,IAAC,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,YAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,GACX,CACV,CAAC,CAAC,CAAC,SAAS,EAEf,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAE/B,KAAC,UAAU,cAAE,IAAI,CAAC,KAAK,GAAc,EACpC,IAAI,CAAC,IAAI,EACT,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAChC,eAAM,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAG,MAAM,GAAQ,CACnG,IACK,CACT,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Pure helpers shared by the admin AI Usage page and the user's "Usage"
3
- * section (issue #444, epic #420).
4
- */
5
1
  import type { AiUsageCost, AiUsageCounters, AiUsageReport, AiUsageSeriesEntry } from '../../headless/types.js';
6
2
  /** `48000` → `48,000`. */
7
3
  export declare function formatCount(value: number): string;
@@ -10,7 +6,13 @@ export declare function formatCount(value: number): string;
10
6
  * nothing was requested — 0% would claim a success rate nobody measured.
11
7
  */
12
8
  export declare function formatFailureRate(counters: Pick<AiUsageCounters, 'failed' | 'requests'>): string;
13
- /** `2026-09-24` → `Sep 24` (UTC, so the day never shifts with the viewer's zone). */
9
+ /**
10
+ * `2026-09-24` → `Sep 24`. The key is a calendar day already cut in the
11
+ * report's zone (`report.timeZone`), not an instant, so it is formatted as the
12
+ * day it names and never shifted by the viewer's zone (the key's own midnight
13
+ * read in UTC is the same calendar day). Anything but a `YYYY-MM-DD` key is
14
+ * returned as is.
15
+ */
14
16
  export declare function formatUsageDay(isoDate: string): string;
15
17
  /**
16
18
  * A cost the deployment's pricing port reported (PP-14.17), as money: `$12.50`
@@ -23,7 +25,8 @@ export declare function formatUnits(units: Record<string, number>): string | nul
23
25
  /**
24
26
  * The `day` series, one entry per calendar day of the report's range.
25
27
  *
26
- * The API may omit days with no activity; a time axis that skips them draws
28
+ * The keys are calendar days in the report's zone (`report.timeZone`). The
29
+ * API may omit days with no activity; a time axis that skips them draws
27
30
  * two busy days as neighbours and hides the quiet stretch between them, so
28
31
  * the gaps are filled with zero entries here. Entries outside the range (a
29
32
  * backend that answers more than asked) are kept, in date order.
@@ -1 +1 @@
1
- {"version":3,"file":"aiUsageFormat.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/usage/aiUsageFormat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI/G,0BAA0B;AAC1B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,MAAM,CAGhG;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAcvE;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAIxE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CA2BnF"}
1
+ {"version":3,"file":"aiUsageFormat.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/usage/aiUsageFormat.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI/G,0BAA0B;AAC1B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,MAAM,CAGhG;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAcvE;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAIxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CA4BnF"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Pure helpers shared by the admin AI Usage page and the user's "Usage"
3
+ * section (issue #444, epic #420).
4
+ */
5
+ import { addDaysToDateKey, isDateKey } from '@marinoscar/platform-contract/timezone';
6
+ import { formatDate } from '../../../core/index.js';
1
7
  const numberFormat = new Intl.NumberFormat('en-US');
2
8
  /** `48000` → `48,000`. */
3
9
  export function formatCount(value) {
@@ -12,12 +18,18 @@ export function formatFailureRate(counters) {
12
18
  return '—';
13
19
  return `${((counters.failed / counters.requests) * 100).toFixed(1)}%`;
14
20
  }
15
- /** `2026-09-24` → `Sep 24` (UTC, so the day never shifts with the viewer's zone). */
21
+ /**
22
+ * `2026-09-24` → `Sep 24`. The key is a calendar day already cut in the
23
+ * report's zone (`report.timeZone`), not an instant, so it is formatted as the
24
+ * day it names and never shifted by the viewer's zone (the key's own midnight
25
+ * read in UTC is the same calendar day). Anything but a `YYYY-MM-DD` key is
26
+ * returned as is.
27
+ */
16
28
  export function formatUsageDay(isoDate) {
17
- const date = new Date(`${isoDate}T00:00:00Z`);
18
- if (Number.isNaN(date.getTime()))
29
+ const key = isoDate.slice(0, 10);
30
+ if (!isDateKey(key))
19
31
  return isoDate;
20
- return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', timeZone: 'UTC' });
32
+ return formatDate(`${key}T00:00:00Z`, { locale: 'en-US', month: 'short', day: 'numeric', timeZone: 'UTC' });
21
33
  }
22
34
  /**
23
35
  * A cost the deployment's pricing port reported (PP-14.17), as money: `$12.50`
@@ -51,21 +63,25 @@ export function formatUnits(units) {
51
63
  /**
52
64
  * The `day` series, one entry per calendar day of the report's range.
53
65
  *
54
- * The API may omit days with no activity; a time axis that skips them draws
66
+ * The keys are calendar days in the report's zone (`report.timeZone`). The
67
+ * API may omit days with no activity; a time axis that skips them draws
55
68
  * two busy days as neighbours and hides the quiet stretch between them, so
56
69
  * the gaps are filled with zero entries here. Entries outside the range (a
57
70
  * backend that answers more than asked) are kept, in date order.
58
71
  */
59
72
  export function fillDailySeries(report) {
60
73
  const byKey = new Map(report.series.map((entry) => [entry.key, entry]));
61
- const start = Date.parse(`${report.range.from.slice(0, 10)}T00:00:00Z`);
62
- const end = Date.parse(`${report.range.to.slice(0, 10)}T00:00:00Z`);
63
- if (Number.isNaN(start) || Number.isNaN(end) || end < start || end - start > 366 * 86_400_000) {
64
- return [...report.series].sort((a, b) => a.key.localeCompare(b.key));
65
- }
74
+ const sorted = () => [...report.series].sort((a, b) => a.key.localeCompare(b.key));
75
+ // Calendar days of the report's zone: stepped as day keys, never as 24-hour
76
+ // instants, so a 23- or 25-hour DST day cannot skip or repeat a key.
77
+ const from = report.range.from.slice(0, 10);
78
+ const to = report.range.to.slice(0, 10);
79
+ if (!isDateKey(from) || !isDateKey(to) || to < from)
80
+ return sorted();
66
81
  const days = [];
67
- for (let t = start; t <= end; t += 86_400_000) {
68
- const key = new Date(t).toISOString().slice(0, 10);
82
+ for (let key = from, n = 0; key <= to; key = addDaysToDateKey(key, 1), n += 1) {
83
+ if (n > 366)
84
+ return sorted();
69
85
  days.push(byKey.get(key) ?? {
70
86
  key,
71
87
  label: key,
@@ -1 +1 @@
1
- {"version":3,"file":"aiUsageFormat.js","sourceRoot":"","sources":["../../../../src/ai/ui/usage/aiUsageFormat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aiUsageFormat.js","sourceRoot":"","sources":["../../../../src/ai/ui/usage/aiUsageFormat.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MyAiUsageSection.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/MyAiUsageSection.tsx"],"names":[],"mappings":"AAkBA,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D,wBAAgB,gBAAgB,gCAmD/B"}
1
+ {"version":3,"file":"MyAiUsageSection.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/MyAiUsageSection.tsx"],"names":[],"mappings":"AAmBA,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D,wBAAgB,gBAAgB,gCAqD/B"}
@@ -14,13 +14,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import { useMemo } from 'react';
15
15
  import { Alert, Box, Card, CardContent, CircularProgress, Typography } from '@mui/material';
16
16
  import { AiUsageTable, AiUsageTotals, formatCount } from '../usage/index.js';
17
+ import { useDisplayTimeZone } from '../../../core/index.js';
17
18
  import { useMyAiUsage } from '../../headless/use-ai-usage.js';
18
19
  import { AI_USAGE_DEFAULT_RANGE_DAYS, aiUsageRangeForDays } from '../../headless/types.js';
19
20
  /** Persistence key for `user_settings.dataTables`. */
20
21
  export const MY_USAGE_TABLE_ID = 'user-ai-usage-by-model';
21
22
  export function MyAiUsageSection() {
22
- const range = useMemo(() => aiUsageRangeForDays(AI_USAGE_DEFAULT_RANGE_DAYS), []);
23
- const { report, isLoading, error } = useMyAiUsage({ groupBy: 'model', ...range });
23
+ // The window and the report are cut in the same zone: the display zone.
24
+ const zone = useDisplayTimeZone();
25
+ const range = useMemo(() => aiUsageRangeForDays(AI_USAGE_DEFAULT_RANGE_DAYS, new Date(), zone), [zone]);
26
+ const { report, isLoading, error } = useMyAiUsage({ groupBy: 'model', ...range, tz: zone });
24
27
  return (_jsx(Card, { component: "section", "aria-labelledby": "my-ai-usage-title", children: _jsxs(CardContent, { children: [_jsx(Typography, { id: "my-ai-usage-title", variant: "h6", component: "h2", gutterBottom: true, children: "Usage" }), _jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: ["Your requests over the last ", AI_USAGE_DEFAULT_RANGE_DAYS, " days, by model. Calls made with your own key are billed to your provider account."] }), error && (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: error })), isLoading && !report ? (_jsx(Box, { sx: { display: 'flex', justifyContent: 'center', py: 2 }, children: _jsx(CircularProgress, { size: 24, "aria-label": "Loading your AI usage" }) })) : report && report.totals.requests === 0 ? (_jsxs(Typography, { variant: "body2", color: "text.secondary", children: ["You haven't made any AI requests in the last ", AI_USAGE_DEFAULT_RANGE_DAYS, " days."] })) : report ? (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 2, minWidth: 0 }, children: [_jsx(AiUsageTotals, { totals: report.totals, label: "Your AI usage totals" }), report.totals.orgKeyRequests > 0 && (_jsxs(Typography, { variant: "body2", color: "text.secondary", children: [formatCount(report.totals.orgKeyRequests), " of these requests used your organization's key."] })), _jsx(AiUsageTable, { rows: report.series, keyLabel: "Model", tableId: MY_USAGE_TABLE_ID, ariaLabel: "Your usage by model", emptyText: "No usage in this range.", "data-testid": "my-ai-usage-table" })] })) : null] }) }));
25
28
  }
26
29
  //# sourceMappingURL=MyAiUsageSection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MyAiUsageSection.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/MyAiUsageSection.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE3F,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAE1D,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAElF,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,qBAAiB,mBAAmB,YAC3D,MAAC,WAAW,eACV,KAAC,UAAU,IAAC,EAAE,EAAC,mBAAmB,EAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,YAAY,4BAE9D,EACb,MAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,gBAAgB,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,6CACjC,2BAA2B,0FAE7C,EAEZ,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAClC,KAAK,GACA,CACT,EAEA,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACtB,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,YAC3D,KAAC,gBAAgB,IAAC,IAAI,EAAE,EAAE,gBAAa,uBAAuB,GAAG,GAC7D,CACP,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3C,MAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,gBAAgB,8DACG,2BAA2B,cACnE,CACd,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CACX,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aACxE,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAC,sBAAsB,GAAG,EACpE,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,IAAI,CACnC,MAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,gBAAgB,aAC/C,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,wDAE/B,CACd,EACD,KAAC,YAAY,IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EACnB,QAAQ,EAAC,OAAO,EAChB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAC,qBAAqB,EAC/B,SAAS,EAAC,yBAAyB,iBACvB,mBAAmB,GAC/B,IACE,CACP,CAAC,CAAC,CAAC,IAAI,IACI,GACT,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"MyAiUsageSection.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/MyAiUsageSection.tsx"],"names":[],"mappings":"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"}
@@ -5,7 +5,10 @@
5
5
  */
6
6
  export declare function aiCodeText(code: string | null | undefined): string;
7
7
  /**
8
- * A friendly sentence for a thrown error from an AI call.
8
+ * A friendly sentence for a thrown error from an AI call. An `AI_RATE_LIMITED`
9
+ * that carries `details.resetsAt` (one of the deployment's own limits) says
10
+ * when it resets, in the viewer's display zone:
11
+ * `A usage limit was reached; it resets at Oct 28, 2026, 6:00 PM`.
9
12
  *
10
13
  * @stability stable
11
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"aiErrorText.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE"}
1
+ {"version":3,"file":"aiErrorText.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGlE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASlE"}
@@ -6,6 +6,7 @@
6
6
  * it is `toAiErrorInfo`'s job (`services/aiErrors.ts`, the one helper every
7
7
  * AI surface uses); this module only words the code for the AI Keys page.
8
8
  */
9
+ import { formatDateTime } from '../../../core/index.js';
9
10
  import { toAiErrorInfo } from '../../headless/errors.js';
10
11
  const FRIENDLY = {
11
12
  AI_KEY_INVALID: 'The provider rejected this key',
@@ -26,12 +27,19 @@ export function aiCodeText(code) {
26
27
  return FRIENDLY[code] ?? `The provider reported an error (${code})`;
27
28
  }
28
29
  /**
29
- * A friendly sentence for a thrown error from an AI call.
30
+ * A friendly sentence for a thrown error from an AI call. An `AI_RATE_LIMITED`
31
+ * that carries `details.resetsAt` (one of the deployment's own limits) says
32
+ * when it resets, in the viewer's display zone:
33
+ * `A usage limit was reached; it resets at Oct 28, 2026, 6:00 PM`.
30
34
  *
31
35
  * @stability stable
32
36
  */
33
37
  export function aiErrorText(err, fallback) {
34
- const reason = toAiErrorInfo(err).code;
38
+ const info = toAiErrorInfo(err);
39
+ const reason = info.code;
40
+ if (reason === 'AI_RATE_LIMITED' && info.resetsAt) {
41
+ return `A usage limit was reached; it resets at ${formatDateTime(info.resetsAt)}`;
42
+ }
35
43
  if (reason && FRIENDLY[reason])
36
44
  return FRIENDLY[reason];
37
45
  if (err instanceof Error && err.message)
@@ -1 +1 @@
1
- {"version":3,"file":"aiErrorText.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,QAAQ,GAA2B;IACvC,cAAc,EAAE,gCAAgC;IAChD,eAAe,EAAE,qCAAqC;IACtD,WAAW,EAAE,gDAAgD;IAC7D,oBAAoB,EAAE,+CAA+C;IACrE,uBAAuB,EAAE,oDAAoD;IAC7E,eAAe,EAAE,2DAA2D;CAC7E,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAA+B;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,sBAAsB,CAAC;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,mCAAmC,IAAI,GAAG,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,QAAgB;IACxD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"aiErrorText.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,QAAQ,GAA2B;IACvC,cAAc,EAAE,gCAAgC;IAChD,eAAe,EAAE,qCAAqC;IACtD,WAAW,EAAE,gDAAgD;IAC7D,oBAAoB,EAAE,+CAA+C;IACrE,uBAAuB,EAAE,oDAAoD;IAC7E,eAAe,EAAE,2DAA2D;CAC7E,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAA+B;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,sBAAsB,CAAC;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,mCAAmC,IAAI,GAAG,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,QAAgB;IACxD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,IAAI,MAAM,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,2CAA2C,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,134 @@
1
+ import type { AlertIncident, AlertIncidentState, AlertKind, AlertRule, AlertRuleTestResponse, AlertSeverity, AlertSummary, CreateAlertRule, UpdateAlertRule } from '@marinoscar/platform-contract/alerts';
2
+ import type { TelemetrySchema } from '@marinoscar/platform-contract/telemetry';
3
+ import type { PlatformApiClient } from '../../core/index.js';
4
+ /**
5
+ * The route base of the alerts slice, relative to the API root (`/api`).
6
+ *
7
+ * @stability experimental
8
+ */
9
+ export declare const ALERTS_BASE_PATH = "/admin/alerts";
10
+ /**
11
+ * The telemetry route the metric picker reads (relative to `/api`).
12
+ *
13
+ * @stability experimental
14
+ */
15
+ export declare const ALERTS_METRIC_CATALOG_PATH = "/admin/telemetry/schema";
16
+ /**
17
+ * The filters of a rule list request.
18
+ *
19
+ * @stability experimental
20
+ */
21
+ export interface AlertRulesQuery {
22
+ /** Only rules of this kind. */
23
+ kind?: string;
24
+ /** Only rules of this severity. */
25
+ severity?: AlertSeverity;
26
+ /** Only enabled (`true`) or disabled (`false`) rules. */
27
+ enabled?: boolean;
28
+ }
29
+ /**
30
+ * The filters and page of an incident list request. `page` is one-based, as
31
+ * on the wire.
32
+ *
33
+ * @stability experimental
34
+ */
35
+ export interface AlertIncidentsQuery {
36
+ /** Only incidents in this state. */
37
+ state?: AlertIncidentState;
38
+ /** Only incidents of this severity. */
39
+ severity?: AlertSeverity;
40
+ /** Only incidents of this rule. */
41
+ ruleId?: string;
42
+ /** One-based page; default 1. */
43
+ page?: number;
44
+ /** Rows per page; default the API's (20). */
45
+ pageSize?: number;
46
+ }
47
+ /**
48
+ * One page of incidents as `GET /admin/alerts/incidents` returns it.
49
+ *
50
+ * @stability experimental
51
+ */
52
+ export interface AlertIncidentPage {
53
+ /** The incidents of the page. */
54
+ items: AlertIncident[];
55
+ /** Incidents matching the filters, across every page. */
56
+ total: number;
57
+ /** The one-based page. */
58
+ page: number;
59
+ /** Rows per page. */
60
+ pageSize: number;
61
+ /** Pages at this page size. */
62
+ totalPages: number;
63
+ }
64
+ /**
65
+ * One metric the rule editor can pick: a telemetry store table and its
66
+ * attribute columns (the `groupBy` and filter candidates).
67
+ *
68
+ * @stability experimental
69
+ */
70
+ export interface AlertMetricCatalogEntry {
71
+ /** The table name, accepted as `metric` by `metric_threshold` (`app_jobs_settled`). */
72
+ name: string;
73
+ /** The columns other than the value and the timestamp. */
74
+ attributes: string[];
75
+ }
76
+ /**
77
+ * The alerts API calls.
78
+ *
79
+ * @stability experimental
80
+ */
81
+ export interface AlertsApi {
82
+ /** `GET /admin/alerts/rules`. */
83
+ listRules(query?: AlertRulesQuery): Promise<AlertRule[]>;
84
+ /** `GET /admin/alerts/rules/:id`. */
85
+ getRule(id: string): Promise<AlertRule>;
86
+ /** `POST /admin/alerts/rules`. */
87
+ createRule(input: CreateAlertRule): Promise<AlertRule>;
88
+ /** `PATCH /admin/alerts/rules/:id` (the kind cannot change). */
89
+ updateRule(id: string, patch: UpdateAlertRule): Promise<AlertRule>;
90
+ /** `DELETE /admin/alerts/rules/:id` (a starter rule answers 409). */
91
+ deleteRule(id: string): Promise<void>;
92
+ /** `POST /admin/alerts/rules/:id/test`: a dry run, nothing stored or sent. */
93
+ testRule(id: string): Promise<AlertRuleTestResponse>;
94
+ /** `GET /admin/alerts/kinds`. */
95
+ listKinds(): Promise<AlertKind[]>;
96
+ /** `GET /admin/alerts/incidents?state&severity&ruleId&page&pageSize`. */
97
+ listIncidents(query?: AlertIncidentsQuery): Promise<AlertIncidentPage>;
98
+ /** `GET /admin/alerts/incidents/:id`. */
99
+ getIncident(id: string): Promise<AlertIncident>;
100
+ /** `POST /admin/alerts/incidents/:id/acknowledge`. */
101
+ acknowledge(id: string): Promise<AlertIncident>;
102
+ /** `GET /admin/alerts/summary`: firing counts by severity. */
103
+ summary(): Promise<AlertSummary>;
104
+ /** `GET /admin/telemetry/schema`, reduced to the metric tables and their attributes. */
105
+ metricCatalog(): Promise<AlertMetricCatalogEntry[]>;
106
+ }
107
+ /**
108
+ * The store's table list as the metric picker's entries: the metric tables
109
+ * (not the trace and log tables), each with its attribute columns, sorted by
110
+ * name.
111
+ *
112
+ * @param schema - what `GET /admin/telemetry/schema` returned.
113
+ * @returns the entries.
114
+ *
115
+ * @stability experimental
116
+ */
117
+ export declare function metricCatalogFromSchema(schema: Pick<TelemetrySchema, 'tables'>): AlertMetricCatalogEntry[];
118
+ /**
119
+ * The alerts client over the app's transport.
120
+ *
121
+ * @param api - the app's transport (`usePlatformApi()`).
122
+ * @returns the client.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * const alerts = createAlertsApi(usePlatformApi());
127
+ * const { firing } = await alerts.summary();
128
+ * ```
129
+ *
130
+ * @extensionPoint hook
131
+ * @stability experimental
132
+ */
133
+ export declare function createAlertsApi(api: PlatformApiClient): AlertsApi;
134
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/alerts/headless/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ // =============================================================================
2
+ // The alerts client (issue #1047): the `/api/admin/alerts` routes
3
+ // =============================================================================
4
+ //
5
+ // Every route is a SYSTEM route: reads need `alerts:read`, writes (create,
6
+ // edit, delete, test, acknowledge) need `alerts:write` (`ALERT_PERMISSIONS` of
7
+ // `@marinoscar/platform-contract/alerts`). The transport (`PlatformApiClient`)
8
+ // prefixes `/api` and unwraps the `{ data }` envelope. The API decides who may
9
+ // do what; the client only builds paths.
10
+ //
11
+ // One route here is not the alerts slice's: the metric picker of the rule
12
+ // editor reads the telemetry store's table list (`GET /admin/telemetry/schema`,
13
+ // `telemetry:query`), the same list the telemetry explorer's schema panel
14
+ // reads. It is read through the contract's wire type only, so the alerts web
15
+ // slice does not depend on the telemetry web slice.
16
+ // =============================================================================
17
+ /**
18
+ * The route base of the alerts slice, relative to the API root (`/api`).
19
+ *
20
+ * @stability experimental
21
+ */
22
+ export const ALERTS_BASE_PATH = '/admin/alerts';
23
+ /**
24
+ * The telemetry route the metric picker reads (relative to `/api`).
25
+ *
26
+ * @stability experimental
27
+ */
28
+ export const ALERTS_METRIC_CATALOG_PATH = '/admin/telemetry/schema';
29
+ /** Columns of a metric table that are never a `groupBy` or filter candidate. */
30
+ const NON_ATTRIBUTE_COLUMNS = new Set(['greptime_value', 'greptime_timestamp', 'val', 'ts', 'timestamp']);
31
+ /** Tables of the store that are traces or logs, not metrics. */
32
+ function isMetricTable(name) {
33
+ return !name.startsWith('opentelemetry_') && !name.startsWith('information_schema');
34
+ }
35
+ /**
36
+ * The store's table list as the metric picker's entries: the metric tables
37
+ * (not the trace and log tables), each with its attribute columns, sorted by
38
+ * name.
39
+ *
40
+ * @param schema - what `GET /admin/telemetry/schema` returned.
41
+ * @returns the entries.
42
+ *
43
+ * @stability experimental
44
+ */
45
+ export function metricCatalogFromSchema(schema) {
46
+ return schema.tables
47
+ .filter((table) => isMetricTable(table.name))
48
+ .map((table) => ({
49
+ name: table.name,
50
+ attributes: table.columns.map((column) => column.name).filter((name) => !NON_ATTRIBUTE_COLUMNS.has(name)),
51
+ }))
52
+ .sort((a, b) => a.name.localeCompare(b.name));
53
+ }
54
+ function queryString(params) {
55
+ const search = new URLSearchParams();
56
+ for (const [key, value] of Object.entries(params)) {
57
+ if (value === undefined || value === '')
58
+ continue;
59
+ search.set(key, String(value));
60
+ }
61
+ const text = search.toString();
62
+ return text === '' ? '' : `?${text}`;
63
+ }
64
+ /**
65
+ * The alerts client over the app's transport.
66
+ *
67
+ * @param api - the app's transport (`usePlatformApi()`).
68
+ * @returns the client.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const alerts = createAlertsApi(usePlatformApi());
73
+ * const { firing } = await alerts.summary();
74
+ * ```
75
+ *
76
+ * @extensionPoint hook
77
+ * @stability experimental
78
+ */
79
+ export function createAlertsApi(api) {
80
+ const rule = (id) => `${ALERTS_BASE_PATH}/rules/${encodeURIComponent(id)}`;
81
+ const incident = (id) => `${ALERTS_BASE_PATH}/incidents/${encodeURIComponent(id)}`;
82
+ return {
83
+ listRules: (query = {}) => api.get(`${ALERTS_BASE_PATH}/rules${queryString({ kind: query.kind, severity: query.severity, enabled: query.enabled })}`),
84
+ getRule: (id) => api.get(rule(id)),
85
+ createRule: (input) => api.post(`${ALERTS_BASE_PATH}/rules`, input),
86
+ updateRule: (id, patch) => api.patch(rule(id), patch),
87
+ deleteRule: async (id) => {
88
+ await api.delete(rule(id));
89
+ },
90
+ testRule: (id) => api.post(`${rule(id)}/test`),
91
+ listKinds: () => api.get(`${ALERTS_BASE_PATH}/kinds`),
92
+ listIncidents: (query = {}) => api.get(`${ALERTS_BASE_PATH}/incidents${queryString({
93
+ state: query.state,
94
+ severity: query.severity,
95
+ ruleId: query.ruleId,
96
+ page: query.page,
97
+ pageSize: query.pageSize,
98
+ })}`),
99
+ getIncident: (id) => api.get(incident(id)),
100
+ acknowledge: (id) => api.post(`${incident(id)}/acknowledge`),
101
+ summary: () => api.get(`${ALERTS_BASE_PATH}/summary`),
102
+ metricCatalog: async () => metricCatalogFromSchema(await api.get(ALERTS_METRIC_CATALOG_PATH)),
103
+ };
104
+ }
105
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/alerts/headless/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { AlertAggregation, AlertComparator, AlertIncidentState, AlertSeverity, AlertSummary } from '@marinoscar/platform-contract/alerts';
2
+ /**
3
+ * A status tone, mapped to an MUI colour by the UI. The words carry the
4
+ * meaning; the tone only reinforces it.
5
+ *
6
+ * @stability experimental
7
+ */
8
+ export type AlertTone = 'error' | 'warning' | 'info' | 'success' | 'default';
9
+ /**
10
+ * Each severity in words.
11
+ *
12
+ * @stability experimental
13
+ */
14
+ export declare const ALERT_SEVERITY_LABELS: Readonly<Record<AlertSeverity, string>>;
15
+ /**
16
+ * The tone of each severity.
17
+ *
18
+ * @stability experimental
19
+ */
20
+ export declare const ALERT_SEVERITY_TONES: Readonly<Record<AlertSeverity, AlertTone>>;
21
+ /**
22
+ * Each incident state in words.
23
+ *
24
+ * @stability experimental
25
+ */
26
+ export declare const ALERT_STATE_LABELS: Readonly<Record<AlertIncidentState, string>>;
27
+ /**
28
+ * The tone of each incident state.
29
+ *
30
+ * @stability experimental
31
+ */
32
+ export declare const ALERT_STATE_TONES: Readonly<Record<AlertIncidentState, AlertTone>>;
33
+ /**
34
+ * Each comparator in words and as a symbol.
35
+ *
36
+ * @stability experimental
37
+ */
38
+ export declare const ALERT_COMPARATOR_LABELS: Readonly<Record<AlertComparator, string>>;
39
+ /**
40
+ * Each aggregation in words.
41
+ *
42
+ * @stability experimental
43
+ */
44
+ export declare const ALERT_AGGREGATION_LABELS: Readonly<Record<AlertAggregation, string>>;
45
+ /**
46
+ * A kind id in words: the label `GET /kinds` gave, else the built-in label,
47
+ * else the id itself.
48
+ *
49
+ * @param kind - the kind id.
50
+ * @param kinds - the registered kinds, when loaded.
51
+ * @returns the label.
52
+ *
53
+ * @stability experimental
54
+ */
55
+ export declare function alertKindLabel(kind: string, kinds?: ReadonlyArray<{
56
+ id: string;
57
+ label: string;
58
+ }>): string;
59
+ /**
60
+ * The firing count of a summary, in total.
61
+ *
62
+ * @param summary - `GET /admin/alerts/summary`.
63
+ * @returns critical + warning + info.
64
+ *
65
+ * @stability experimental
66
+ */
67
+ export declare function alertFiringTotal(summary: Pick<AlertSummary, 'firing'> | null | undefined): number;
68
+ /**
69
+ * The most serious severity that has a firing incident, or `null`.
70
+ *
71
+ * @param summary - `GET /admin/alerts/summary`.
72
+ * @returns the severity.
73
+ *
74
+ * @stability experimental
75
+ */
76
+ export declare function alertTopSeverity(summary: Pick<AlertSummary, 'firing'> | null | undefined): AlertSeverity | null;
77
+ /**
78
+ * An incident's labels as `key=value` text, in key order; `''` for none.
79
+ *
80
+ * @param labels - the labels.
81
+ * @returns the text.
82
+ *
83
+ * @stability experimental
84
+ */
85
+ export declare function formatAlertLabels(labels: Readonly<Record<string, string>>): string;
86
+ /**
87
+ * A duration in seconds as short words (`90` is `1 min 30 s`, `3600` is `1 h`).
88
+ *
89
+ * @param seconds - whole seconds.
90
+ * @returns the text.
91
+ *
92
+ * @stability experimental
93
+ */
94
+ export declare function formatAlertSeconds(seconds: number): string;
95
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/alerts/headless/format.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,YAAY,EACb,MAAM,sCAAsC,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAIxE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAI1E,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAI1E,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAI5E,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAO5E,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAO9E,CAAC;AAUH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAM,GAAG,MAAM,CAE7G;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGjG;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAM/G;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAKlF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY1D"}