@oneuptime/common 12.0.4 → 12.0.5

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 (374) hide show
  1. package/Models/DatabaseModels/AIRun.ts +38 -1
  2. package/Models/DatabaseModels/AlertFeed.ts +30 -0
  3. package/Models/DatabaseModels/Dashboard.ts +28 -0
  4. package/Models/DatabaseModels/Incident.ts +2 -0
  5. package/Models/DatabaseModels/IncidentEpisode.ts +1 -0
  6. package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +1 -0
  7. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  8. package/Models/DatabaseModels/IncidentFeed.ts +30 -0
  9. package/Models/DatabaseModels/IncidentPublicNote.ts +1 -0
  10. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  11. package/Models/DatabaseModels/LogSavedView.ts +33 -0
  12. package/Models/DatabaseModels/Project.ts +231 -9
  13. package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -0
  14. package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +1 -0
  15. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  16. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +4 -4
  17. package/Models/DatabaseModels/StatusPage.ts +28 -0
  18. package/Models/DatabaseModels/StatusPageAnnouncement.ts +1 -0
  19. package/Server/API/AIAgentDataAPI.ts +44 -55
  20. package/Server/API/AIInvestigationAPI.ts +175 -17
  21. package/Server/API/DashboardAPI.ts +10 -10
  22. package/Server/API/StatusPageAPI.ts +38 -19
  23. package/Server/EnvironmentConfig.ts +16 -0
  24. package/Server/Infrastructure/ClickhouseConfig.ts +15 -1
  25. package/Server/Infrastructure/ClickhouseDatabase.ts +1 -1
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.ts +27 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.ts +89 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.ts +27 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.ts +40 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.ts +26 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  32. package/Server/Services/AIRunService.ts +78 -10
  33. package/Server/Services/AIService.ts +94 -22
  34. package/Server/Services/AlertFeedService.ts +5 -0
  35. package/Server/Services/AnalyticsDatabaseService.ts +29 -0
  36. package/Server/Services/DatabaseService.ts +43 -2
  37. package/Server/Services/IncidentFeedService.ts +5 -0
  38. package/Server/Services/LlmLogService.ts +46 -2
  39. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +6 -0
  40. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +4 -0
  41. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +8 -5
  42. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +90 -16
  43. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +2 -0
  44. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +2 -0
  45. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +223 -22
  46. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +25 -24
  47. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +182 -71
  48. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +252 -43
  49. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +25 -24
  50. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +47 -13
  51. package/Server/Utils/AI/SRE/InvestigationGrader.ts +9 -5
  52. package/Server/Utils/AI/SRE/InvestigationQueue.ts +141 -24
  53. package/Server/Utils/AI/SRE/InvestigationSubjectLock.ts +66 -0
  54. package/Server/Utils/AI/SRE/PostedRootCause.ts +94 -3
  55. package/Server/Utils/AI/SRE/README.md +1 -1
  56. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +132 -10
  57. package/Server/Utils/AnalyticsDatabase/ClusterConfig.ts +24 -0
  58. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +29 -0
  59. package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +56 -0
  60. package/Server/Utils/Monitor/MonitorMetricUtil.ts +46 -0
  61. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
  62. package/Server/Utils/PasswordHash.ts +28 -4
  63. package/Tests/App/Dashboard/AIInvestigationHeaderStatus.test.tsx +251 -0
  64. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +747 -0
  65. package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +480 -0
  66. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1184 -0
  67. package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +500 -0
  68. package/Tests/App/Dashboard/PortMonitorCriteriaFilter.test.ts +93 -0
  69. package/Tests/App/StatusPage/PublicStatusPageAPIErrorHandling.test.ts +117 -0
  70. package/Tests/App/StatusPage/StatusPageModelAPIPolymorphism.test.ts +223 -0
  71. package/Tests/Models/DatabaseModels/PermissionCatalogueCoverage.test.ts +243 -0
  72. package/Tests/Server/API/AIAgentDataFixFromIncidentContext.test.ts +266 -0
  73. package/Tests/Server/API/AIInvestigationAPI.test.ts +594 -0
  74. package/Tests/Server/API/AIInvestigationCreateFixTask.test.ts +80 -0
  75. package/Tests/Server/API/DashboardMasterPasswordAPI.test.ts +172 -1
  76. package/Tests/Server/API/StatusPageMasterPasswordAPI.test.ts +335 -0
  77. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +59 -5
  78. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +127 -58
  79. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +396 -20
  80. package/Tests/Server/Services/AddMasterPasswordSaltMigration.test.ts +283 -0
  81. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +25 -1
  82. package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +45 -35
  83. package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +54 -0
  84. package/Tests/Server/Services/FeedAIRunAssociation.test.ts +125 -0
  85. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +418 -57
  86. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +173 -14
  87. package/Tests/Server/Services/MasterPasswordScrypt.test.ts +567 -0
  88. package/Tests/Server/Services/SeparateIncidentAlertAiSettingsMigration.test.ts +194 -0
  89. package/Tests/Server/Utils/AI/AIAlertGating.test.ts +37 -4
  90. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +330 -29
  91. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +25 -0
  92. package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +293 -5
  93. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +59 -1
  94. package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +342 -19
  95. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +214 -30
  96. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +2 -0
  97. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +65 -17
  98. package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +3 -0
  99. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +313 -20
  100. package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
  101. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +4 -0
  102. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +2 -0
  103. package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +44 -0
  104. package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +30 -0
  105. package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +212 -0
  106. package/Tests/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.test.ts +401 -0
  107. package/Tests/Server/Utils/Monitor/MonitorMetricUtilPortTimings.test.ts +243 -0
  108. package/Tests/Server/Utils/PasswordHash.test.ts +30 -0
  109. package/Tests/Types/Dashboard/DashboardTemplates.test.ts +111 -0
  110. package/Tests/Types/Monitor/CephMetricCatalog.test.ts +104 -0
  111. package/Tests/Types/Monitor/CriteriaFilter.test.ts +4 -0
  112. package/Tests/Types/Monitor/DockerMetricCatalog.test.ts +109 -0
  113. package/Tests/Types/Monitor/DockerSwarmMetricCatalog.test.ts +118 -0
  114. package/Tests/Types/Monitor/HostMetricCatalog.test.ts +104 -0
  115. package/Tests/Types/Monitor/IotMetricCatalog.test.ts +104 -0
  116. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +118 -0
  117. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +42 -0
  118. package/Tests/Types/Monitor/MonitorStep.test.ts +38 -0
  119. package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +75 -0
  120. package/Tests/Types/Monitor/PodmanMetricCatalog.test.ts +109 -0
  121. package/Tests/Types/Monitor/ProxmoxMetricCatalog.test.ts +107 -0
  122. package/Tests/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.test.ts +151 -0
  123. package/Tests/Types/Permission.test.ts +137 -0
  124. package/Tests/Types/Rum/SessionReplayMaskingMode.test.ts +101 -0
  125. package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +5 -5
  126. package/Tests/UI/Components/CardModelDetailEdit.test.tsx +3 -5
  127. package/Tests/UI/Components/ErrorBoundary.test.tsx +158 -0
  128. package/Tests/UI/Components/FeedItemSafeMode.test.tsx +74 -0
  129. package/Tests/UI/Components/MoreMenu.test.tsx +756 -0
  130. package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +62 -0
  131. package/Tests/UI/Monitor/PortMonitorView.test.tsx +237 -0
  132. package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +91 -0
  133. package/Tests/UI/Utils/DownloadFile.test.ts +103 -0
  134. package/Tests/UI/Utils/ErrorSupportBundle.test.ts +582 -0
  135. package/Tests/UI/Utils/Project.test.ts +31 -0
  136. package/Tests/UI/Utils/StatusPageModelAPIInjection.test.ts +245 -0
  137. package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +820 -0
  138. package/Tests/Utils/Dashboard/DashboardViewConfig.test.ts +329 -0
  139. package/Tests/Utils/Dashboard/GridLayout.test.ts +951 -0
  140. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +117 -0
  141. package/Tests/Utils/RecordingRuleExpression.test.ts +327 -0
  142. package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +186 -0
  143. package/Tests/Utils/StatusPage/GroupTree.test.ts +456 -0
  144. package/Tests/Utils/StatusPage/OverviewGroupHierarchyVisibility.test.ts +588 -0
  145. package/Tests/Utils/Telemetry/SavedViewTimeRange.test.ts +244 -0
  146. package/Tests/Utils/Telemetry/TelemetryQueryTimeRange.test.ts +825 -0
  147. package/Types/AI/AIRunCodeFixRecommendation.ts +17 -0
  148. package/Types/AI/CodeFixTaskContext.ts +63 -3
  149. package/Types/AI/CodeFixTaskType.ts +3 -3
  150. package/Types/HashedString.ts +4 -3
  151. package/Types/Monitor/CriteriaFilter.ts +4 -0
  152. package/Types/Monitor/DomainMonitor/DomainLookupMethod.ts +23 -0
  153. package/Types/Monitor/DomainMonitor/DomainMonitorResponse.ts +7 -0
  154. package/Types/Monitor/MonitorCriteriaInstance.ts +24 -7
  155. package/Types/Monitor/MonitorMetricType.ts +8 -0
  156. package/Types/Monitor/MonitorStep.ts +10 -1
  157. package/Types/Monitor/MonitorStepDomainMonitor.ts +21 -0
  158. package/Types/Monitor/PortMonitor/PortMonitorTimings.ts +10 -0
  159. package/Types/Permission.ts +23 -175
  160. package/Types/Probe/ProbeMonitorResponse.ts +6 -0
  161. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +2 -3
  162. package/UI/Components/ErrorBoundary.tsx +138 -11
  163. package/UI/Components/Feed/FeedItem.tsx +9 -2
  164. package/UI/Components/ModelDetail/CardModelDetail.tsx +0 -12
  165. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  166. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +12 -2
  167. package/UI/Components/MoreMenu/MoreMenu.tsx +285 -97
  168. package/UI/Components/MoreMenu/MoreMenuItem.tsx +8 -5
  169. package/UI/Utils/DownloadFile.ts +16 -8
  170. package/UI/Utils/ErrorSupportBundle.ts +805 -0
  171. package/UI/Utils/ModelAPI/ModelAPI.ts +19 -8
  172. package/UI/Utils/Project.ts +4 -0
  173. package/UI/Utils/StatusPage.ts +8 -2
  174. package/UI/Utils/UseDashboardGridDnd.ts +917 -0
  175. package/Utils/Dashboard/DashboardViewConfig.ts +80 -36
  176. package/Utils/Dashboard/GridLayout.ts +523 -0
  177. package/Utils/Metrics/RecordingRuleExpression.ts +19 -17
  178. package/Utils/Monitor/MonitorMetricType.ts +44 -2
  179. package/Utils/StatusPage/GroupNestingLayout.ts +69 -0
  180. package/Utils/StatusPage/GroupTree.ts +157 -66
  181. package/Utils/StatusPage/ResourceUptime.ts +37 -2
  182. package/Utils/Telemetry/SavedViewTimeRange.ts +114 -0
  183. package/Utils/Telemetry/TelemetryQueryTimeRange.ts +334 -0
  184. package/build/dist/Models/DatabaseModels/AIRun.js +39 -1
  185. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/AlertFeed.js +32 -0
  187. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  188. package/build/dist/Models/DatabaseModels/Dashboard.js +29 -0
  189. package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
  190. package/build/dist/Models/DatabaseModels/Incident.js +2 -0
  191. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1 -0
  193. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +1 -0
  195. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  197. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/IncidentFeed.js +32 -0
  199. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  200. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +1 -0
  201. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  202. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  203. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/LogSavedView.js +33 -0
  205. package/build/dist/Models/DatabaseModels/LogSavedView.js.map +1 -1
  206. package/build/dist/Models/DatabaseModels/Project.js +241 -11
  207. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -0
  209. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +1 -0
  211. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
  212. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  213. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  214. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +4 -4
  215. package/build/dist/Models/DatabaseModels/StatusPage.js +29 -0
  216. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  217. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +1 -0
  218. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  219. package/build/dist/Server/API/AIAgentDataAPI.js +28 -46
  220. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  221. package/build/dist/Server/API/AIInvestigationAPI.js +111 -11
  222. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  223. package/build/dist/Server/API/DashboardAPI.js +8 -5
  224. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  225. package/build/dist/Server/API/StatusPageAPI.js +29 -11
  226. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  227. package/build/dist/Server/EnvironmentConfig.js +14 -0
  228. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  229. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -1
  230. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  231. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +1 -1
  232. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
  233. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js +22 -0
  234. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js.map +1 -0
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js +36 -0
  236. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js.map +1 -0
  237. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js +18 -0
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js.map +1 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js +19 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js.map +1 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js +19 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js.map +1 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  245. package/build/dist/Server/Services/AIRunService.js +58 -12
  246. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  247. package/build/dist/Server/Services/AIService.js +74 -21
  248. package/build/dist/Server/Services/AIService.js.map +1 -1
  249. package/build/dist/Server/Services/AlertFeedService.js +3 -0
  250. package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
  251. package/build/dist/Server/Services/AnalyticsDatabaseService.js +29 -1
  252. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  253. package/build/dist/Server/Services/DatabaseService.js +21 -2
  254. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  255. package/build/dist/Server/Services/IncidentFeedService.js +3 -0
  256. package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
  257. package/build/dist/Server/Services/LlmLogService.js +22 -1
  258. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  259. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +3 -0
  260. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  261. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +4 -0
  262. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  263. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +8 -5
  264. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
  265. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +63 -24
  266. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  267. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +2 -0
  268. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
  269. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +2 -0
  270. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
  271. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +156 -28
  272. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  273. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +21 -19
  274. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  275. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +128 -49
  276. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
  277. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +170 -31
  278. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
  279. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +21 -19
  280. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  281. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +33 -9
  282. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -1
  283. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +9 -5
  284. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  285. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +121 -41
  286. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  287. package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js +46 -0
  288. package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js.map +1 -0
  289. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +61 -14
  290. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -1
  291. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +79 -1
  292. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
  293. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js +21 -0
  294. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js.map +1 -1
  295. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +20 -3
  296. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  297. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +43 -0
  298. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
  299. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
  300. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  301. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
  302. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  303. package/build/dist/Server/Utils/PasswordHash.js +25 -4
  304. package/build/dist/Server/Utils/PasswordHash.js.map +1 -1
  305. package/build/dist/Types/AI/AIRunCodeFixRecommendation.js +18 -0
  306. package/build/dist/Types/AI/AIRunCodeFixRecommendation.js.map +1 -0
  307. package/build/dist/Types/AI/CodeFixTaskContext.js +23 -3
  308. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
  309. package/build/dist/Types/AI/CodeFixTaskType.js +3 -3
  310. package/build/dist/Types/HashedString.js +4 -3
  311. package/build/dist/Types/HashedString.js.map +1 -1
  312. package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
  313. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  314. package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js +24 -0
  315. package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js.map +1 -0
  316. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +24 -7
  317. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  318. package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
  319. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  320. package/build/dist/Types/Monitor/MonitorStep.js +6 -1
  321. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  322. package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js +15 -0
  323. package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js.map +1 -1
  324. package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js +2 -0
  325. package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js.map +1 -0
  326. package/build/dist/Types/Permission.js +23 -155
  327. package/build/dist/Types/Permission.js.map +1 -1
  328. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +2 -5
  329. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  330. package/build/dist/UI/Components/ErrorBoundary.js +67 -8
  331. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  332. package/build/dist/UI/Components/Feed/FeedItem.js +2 -2
  333. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  334. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +0 -12
  335. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  336. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  337. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  338. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +12 -2
  339. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  340. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +193 -65
  341. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  342. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +1 -1
  343. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  344. package/build/dist/UI/Utils/DownloadFile.js +15 -8
  345. package/build/dist/UI/Utils/DownloadFile.js.map +1 -1
  346. package/build/dist/UI/Utils/ErrorSupportBundle.js +476 -0
  347. package/build/dist/UI/Utils/ErrorSupportBundle.js.map +1 -0
  348. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -8
  349. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  350. package/build/dist/UI/Utils/Project.js +3 -0
  351. package/build/dist/UI/Utils/Project.js.map +1 -1
  352. package/build/dist/UI/Utils/StatusPage.js +4 -4
  353. package/build/dist/UI/Utils/StatusPage.js.map +1 -1
  354. package/build/dist/UI/Utils/UseDashboardGridDnd.js +551 -0
  355. package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -0
  356. package/build/dist/Utils/Dashboard/DashboardViewConfig.js +42 -26
  357. package/build/dist/Utils/Dashboard/DashboardViewConfig.js.map +1 -1
  358. package/build/dist/Utils/Dashboard/GridLayout.js +338 -0
  359. package/build/dist/Utils/Dashboard/GridLayout.js.map +1 -0
  360. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +19 -17
  361. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -1
  362. package/build/dist/Utils/Monitor/MonitorMetricType.js +38 -6
  363. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  364. package/build/dist/Utils/StatusPage/GroupNestingLayout.js +46 -0
  365. package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -1
  366. package/build/dist/Utils/StatusPage/GroupTree.js +79 -34
  367. package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -1
  368. package/build/dist/Utils/StatusPage/ResourceUptime.js +22 -1
  369. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  370. package/build/dist/Utils/Telemetry/SavedViewTimeRange.js +79 -0
  371. package/build/dist/Utils/Telemetry/SavedViewTimeRange.js.map +1 -0
  372. package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js +236 -0
  373. package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js.map +1 -0
  374. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ import InBetween from "../../Types/BaseDatabase/InBetween";
2
+ import TimeRange from "../../Types/Time/TimeRange";
3
+ /*
4
+ * Saved views (logs, metrics, traces) must remember the time *selection*, not
5
+ * the window that selection happened to resolve to when the view was saved.
6
+ * "Past 1 Hour" saved today has to still mean the last hour next week, so only
7
+ * a Custom range carries absolute timestamps; every rolling range is stored as
8
+ * its token alone and re-resolved against the clock each time it is applied.
9
+ */
10
+ export const DEFAULT_SAVED_VIEW_TIME_RANGE = TimeRange.PAST_ONE_HOUR;
11
+ export function serializeSavedViewTimeRange(timeRange) {
12
+ const serialized = { range: timeRange.range };
13
+ if (timeRange.range === TimeRange.CUSTOM && timeRange.startAndEndDate) {
14
+ serialized.startValue = toIsoString(timeRange.startAndEndDate.startValue);
15
+ serialized.endValue = toIsoString(timeRange.startAndEndDate.endValue);
16
+ }
17
+ return serialized;
18
+ }
19
+ /*
20
+ * Read a stored time selection, or undefined when there is nothing usable
21
+ * there. The input is whatever came back out of a JSON column, so nothing
22
+ * about its shape is guaranteed. Callers that have another source to fall
23
+ * back on (e.g. a legacy absolute window) use this; callers that do not use
24
+ * deserializeSavedViewTimeRange below, which substitutes the default.
25
+ */
26
+ export function readSavedViewTimeRange(saved) {
27
+ if (!saved || typeof saved !== "object") {
28
+ return undefined;
29
+ }
30
+ const rawRange = saved["range"];
31
+ if (typeof rawRange !== "string") {
32
+ return undefined;
33
+ }
34
+ const knownRanges = Object.values(TimeRange);
35
+ if (!knownRanges.includes(rawRange)) {
36
+ return undefined;
37
+ }
38
+ const range = rawRange;
39
+ if (range !== TimeRange.CUSTOM) {
40
+ return { range: range };
41
+ }
42
+ const start = toDate(saved["startValue"]);
43
+ const end = toDate(saved["endValue"]);
44
+ if (!start || !end) {
45
+ // A Custom range without a usable window says nothing about when to look.
46
+ return undefined;
47
+ }
48
+ return {
49
+ range: TimeRange.CUSTOM,
50
+ startAndEndDate: new InBetween(start, end),
51
+ };
52
+ }
53
+ /*
54
+ * Rebuild a RangeStartAndEndDateTime from saved state. Unknown or malformed
55
+ * values fall back to the default (past one hour) rather than throwing or
56
+ * producing a nonsensical window.
57
+ */
58
+ export function deserializeSavedViewTimeRange(saved) {
59
+ return (readSavedViewTimeRange(saved) || { range: DEFAULT_SAVED_VIEW_TIME_RANGE });
60
+ }
61
+ function toIsoString(value) {
62
+ if (value instanceof Date) {
63
+ return value.toISOString();
64
+ }
65
+ // Dates round-tripped through JSON come back as strings.
66
+ const parsed = new Date(value);
67
+ return isNaN(parsed.getTime()) ? String(value) : parsed.toISOString();
68
+ }
69
+ function toDate(value) {
70
+ if (value instanceof Date) {
71
+ return isNaN(value.getTime()) ? null : value;
72
+ }
73
+ if (typeof value !== "string" || value.length === 0) {
74
+ return null;
75
+ }
76
+ const parsed = new Date(value);
77
+ return isNaN(parsed.getTime()) ? null : parsed;
78
+ }
79
+ //# sourceMappingURL=SavedViewTimeRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SavedViewTimeRange.js","sourceRoot":"","sources":["../../../../Utils/Telemetry/SavedViewTimeRange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,236 @@
1
+ import InBetween from "../../Types/BaseDatabase/InBetween";
2
+ import { ObjectType } from "../../Types/JSON";
3
+ import TelemetryType from "../../Types/Telemetry/TelemetryType";
4
+ import TimeRange from "../../Types/Time/TimeRange";
5
+ /*
6
+ * The snapshot window that a telemetry monitor evaluated over is stamped onto
7
+ * the query it stores on the Incident / Alert row: logs and exceptions carry
8
+ * it as `time`, spans as `startTime`, metrics as `metricViewData.startAndEndDate`.
9
+ *
10
+ * Two things make that window awkward to consume on the client.
11
+ *
12
+ * 1. It does not survive the store/load round trip as Dates. The blob is
13
+ * persisted through `JSON.stringify`, which calls `InBetween.toJSON()` and
14
+ * then flattens each bound to an ISO string. On the way back
15
+ * `InBetween.fromJSON()` reconstructs the operator but hands those strings
16
+ * to the constructor untouched, so `startValue` is a `string` even though
17
+ * the static type says `Date`. Anything guarding on `instanceof Date`
18
+ * silently no-ops on an incident page.
19
+ *
20
+ * 2. Viewers that own a time-range picker (the logs viewer) need the window as
21
+ * a `RangeStartAndEndDateTime`, not as a query filter, because the picker
22
+ * state — not the query — is what drives the histogram and facet requests.
23
+ *
24
+ * These helpers are the single place that knows both shapes. They are pure so
25
+ * they can be unit tested without mounting a viewer.
26
+ */
27
+ export default class TelemetryQueryTimeRange {
28
+ /*
29
+ * Field on the telemetry query that carries the snapshot window, per type.
30
+ * Metrics keep theirs on metricViewData instead, and profiles do not store a
31
+ * query at all, so both return null.
32
+ */
33
+ static getWindowFieldName(telemetryType) {
34
+ if (telemetryType === TelemetryType.Log) {
35
+ return "time";
36
+ }
37
+ if (telemetryType === TelemetryType.Exception) {
38
+ return "time";
39
+ }
40
+ if (telemetryType === TelemetryType.Trace) {
41
+ return "startTime";
42
+ }
43
+ return null;
44
+ }
45
+ /*
46
+ * Coerce a stored window into an InBetween whose bounds are real Dates.
47
+ *
48
+ * Accepts an `InBetween` instance (bounds may be Dates, ISO strings or epoch
49
+ * numbers, depending on whether the value was just built or came back from
50
+ * storage) and the plain `{ _type: "InBetween", startValue, endValue }`
51
+ * object that a caller sees when it skipped `JSONFunctions.deserialize`.
52
+ *
53
+ * Returns null for anything unparseable so callers can fall back to their own
54
+ * default. An inverted window (start after end) is returned as-is rather than
55
+ * rejected: it renders as a visibly odd range the user can see and report,
56
+ * which beats silently swapping back to a rolling default that shows
57
+ * unrelated data under an incident's heading.
58
+ */
59
+ static toDateWindow(value) {
60
+ if (!value || typeof value !== "object") {
61
+ return null;
62
+ }
63
+ let rawStart = undefined;
64
+ let rawEnd = undefined;
65
+ if (value instanceof InBetween) {
66
+ /*
67
+ * Already in the target shape — hand back the same instance rather than
68
+ * an equal copy. Callers use identity to decide whether anything changed,
69
+ * and a fresh-but-equal object would churn React state on every load.
70
+ */
71
+ if (this.toDate(value.startValue) === value.startValue &&
72
+ this.toDate(value.endValue) === value.endValue) {
73
+ return value;
74
+ }
75
+ rawStart = value.startValue;
76
+ rawEnd = value.endValue;
77
+ }
78
+ else if (value["_type"] === ObjectType.InBetween) {
79
+ rawStart = value["startValue"];
80
+ rawEnd = value["endValue"];
81
+ }
82
+ else {
83
+ return null;
84
+ }
85
+ const startDate = this.toDate(rawStart);
86
+ const endDate = this.toDate(rawEnd);
87
+ if (!startDate || !endDate) {
88
+ return null;
89
+ }
90
+ return new InBetween(startDate, endDate);
91
+ }
92
+ static toDate(value) {
93
+ if (value === null || value === undefined) {
94
+ return null;
95
+ }
96
+ if (value instanceof Date) {
97
+ return Number.isNaN(value.getTime()) ? null : value;
98
+ }
99
+ if (typeof value !== "string" && typeof value !== "number") {
100
+ return null;
101
+ }
102
+ /*
103
+ * `new Date("")` is the current time, not an Invalid Date, so an empty
104
+ * bound would silently become "now" and quietly widen the window instead
105
+ * of being reported as missing.
106
+ */
107
+ if (typeof value === "string" && value.trim() === "") {
108
+ return null;
109
+ }
110
+ const parsed = new Date(value);
111
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
112
+ }
113
+ /*
114
+ * Pull the snapshot window out of a telemetry query record, whatever its
115
+ * telemetry type. Returns null when the monitor stored no window (older
116
+ * incidents, or a log monitor configured with no lastXSecondsOfLogs).
117
+ */
118
+ static getSnapshotWindow(telemetryQuery) {
119
+ if (!telemetryQuery) {
120
+ return null;
121
+ }
122
+ if (telemetryQuery.metricViewData) {
123
+ const metricWindow = this.toDateWindow(telemetryQuery.metricViewData.startAndEndDate);
124
+ if (metricWindow) {
125
+ return metricWindow;
126
+ }
127
+ }
128
+ return this.getQueryWindow(telemetryQuery.telemetryQuery, telemetryQuery.telemetryType);
129
+ }
130
+ /*
131
+ * Same, for a bare query. `telemetryType` picks the field to read; when it is
132
+ * unknown both known field names are tried so a caller holding only a query
133
+ * (e.g. the logs viewer, which is handed a Query<Log> and nothing else) still
134
+ * finds the window.
135
+ */
136
+ static getQueryWindow(query, telemetryType) {
137
+ if (!query) {
138
+ return null;
139
+ }
140
+ const fieldName = this.getWindowFieldName(telemetryType);
141
+ const fieldNames = fieldName
142
+ ? [fieldName]
143
+ : ["time", "startTime"];
144
+ for (const candidate of fieldNames) {
145
+ const window = this.toDateWindow(query[candidate]);
146
+ if (window) {
147
+ return window;
148
+ }
149
+ }
150
+ return null;
151
+ }
152
+ /*
153
+ * Present a snapshot window as a picker value. Always CUSTOM: the window is
154
+ * an absolute instant in the past, so it must never re-anchor to "now" the
155
+ * way a relative range like "Past 1 Hour" does.
156
+ */
157
+ static toRangeStartAndEndDateTime(window) {
158
+ if (!window) {
159
+ return null;
160
+ }
161
+ return {
162
+ range: TimeRange.CUSTOM,
163
+ startAndEndDate: window,
164
+ };
165
+ }
166
+ /*
167
+ * Convenience for viewers: resolve the pinned picker value for a query, or
168
+ * null when the query carries no window and the viewer should keep its own
169
+ * rolling default.
170
+ */
171
+ static getPinnedRangeForQuery(query, telemetryType) {
172
+ return this.toRangeStartAndEndDateTime(this.getQueryWindow(query, telemetryType));
173
+ }
174
+ /*
175
+ * Value equality for two picker values. Hosts that rebuild their query on
176
+ * every render produce an equal-but-new window each time, so state updates
177
+ * have to be gated on the value rather than on object identity or a
178
+ * re-render loop follows.
179
+ */
180
+ static isSameRange(a, b) {
181
+ if (!a || !b) {
182
+ return !a && !b;
183
+ }
184
+ if (a.range !== b.range) {
185
+ return false;
186
+ }
187
+ const aWindow = this.toDateWindow(a.startAndEndDate);
188
+ const bWindow = this.toDateWindow(b.startAndEndDate);
189
+ if (!aWindow || !bWindow) {
190
+ return !aWindow && !bWindow;
191
+ }
192
+ return (aWindow.startValue.getTime() === bWindow.startValue.getTime() &&
193
+ aWindow.endValue.getTime() === bWindow.endValue.getTime());
194
+ }
195
+ /*
196
+ * Rewrite a stored telemetry query so every window bound is a real Date.
197
+ *
198
+ * Consumers downstream gate real behaviour on `instanceof Date` — the metric
199
+ * chart skips aggregation-bucket alignment and never fetches exemplars when
200
+ * the bounds are strings — so hydrating once at the page's deserialize
201
+ * boundary is what makes those paths work on an incident.
202
+ *
203
+ * Returns the input unchanged (same reference) when there is nothing to fix,
204
+ * so callers can hydrate unconditionally without churning React state.
205
+ */
206
+ static hydrate(telemetryQuery) {
207
+ if (!telemetryQuery) {
208
+ return null;
209
+ }
210
+ let didChange = false;
211
+ let metricViewData = telemetryQuery.metricViewData || null;
212
+ if (metricViewData) {
213
+ const metricWindow = this.toDateWindow(metricViewData.startAndEndDate);
214
+ if (metricWindow && metricWindow !== metricViewData.startAndEndDate) {
215
+ metricViewData = Object.assign(Object.assign({}, metricViewData), { startAndEndDate: metricWindow });
216
+ didChange = true;
217
+ }
218
+ }
219
+ let query = telemetryQuery.telemetryQuery || null;
220
+ if (query) {
221
+ const fieldName = this.getWindowFieldName(telemetryQuery.telemetryType);
222
+ if (fieldName) {
223
+ const window = this.toDateWindow(query[fieldName]);
224
+ if (window && window !== query[fieldName]) {
225
+ query = Object.assign(Object.assign({}, query), { [fieldName]: window });
226
+ didChange = true;
227
+ }
228
+ }
229
+ }
230
+ if (!didChange) {
231
+ return telemetryQuery;
232
+ }
233
+ return Object.assign(Object.assign({}, telemetryQuery), { telemetryQuery: query, metricViewData: metricViewData });
234
+ }
235
+ }
236
+ //# sourceMappingURL=TelemetryQueryTimeRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryQueryTimeRange.js","sourceRoot":"","sources":["../../../../Utils/Telemetry/TelemetryQueryTimeRange.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oCAAoC,CAAC;AAE3D,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,aAAa,MAAM,qCAAqC,CAAC;AAEhE,OAAO,SAAS,MAAM,4BAA4B,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAC9B,aAA+C;QAE/C,IAAI,aAAa,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,YAAY,CAAC,KAAc;QACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,GAAY,SAAS,CAAC;QAClC,IAAI,MAAM,GAAY,SAAS,CAAC;QAEhC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B;;;;eAIG;YACH,IACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,UAAU;gBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,QAAQ,EAC9C,CAAC;gBACD,OAAO,KAAwB,CAAC;YAClC,CAAC;YAED,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;YAC5B,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;aAAM,IAAK,KAAoB,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YACnE,QAAQ,GAAI,KAAoB,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,GAAI,KAAoB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,OAAO,GAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,SAAS,CAAO,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,KAAc;QAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;;WAIG;QACH,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,iBAAiB,CAC7B,cAAiD;QAEjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC;YAClC,MAAM,YAAY,GAA2B,IAAI,CAAC,YAAY,CAC5D,cAAc,CAAC,cAAc,CAAC,eAAe,CAC9C,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CACxB,cAAc,CAAC,cAAc,EAC7B,cAAc,CAAC,aAAa,CAC7B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,cAAc,CAC1B,KAAqE,EACrE,aAAyC;QAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAkB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxE,MAAM,UAAU,GAAkB,SAAS;YACzC,CAAC,CAAC,CAAC,SAAS,CAAC;YACb,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE1B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CACrD,KAAoB,CAAC,SAAS,CAAC,CACjC,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,0BAA0B,CACtC,MAA0C;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,eAAe,EAAE,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,sBAAsB,CAClC,KAAqE,EACrE,aAAyC;QAEzC,OAAO,IAAI,CAAC,0BAA0B,CACpC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CACvB,CAA8C,EAC9C,CAA8C;QAE9C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAA2B,IAAI,CAAC,YAAY,CACvD,CAAC,CAAC,eAAe,CAClB,CAAC;QACF,MAAM,OAAO,GAA2B,IAAI,CAAC,YAAY,CACvD,CAAC,CAAC,eAAe,CAClB,CAAC;QAEF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,OAAO,CACL,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;YAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,OAAO,CACnB,cAAiD;QAEjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,GAAY,KAAK,CAAC;QAE/B,IAAI,cAAc,GAChB,cAAc,CAAC,cAAc,IAAI,IAAI,CAAC;QAExC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,YAAY,GAA2B,IAAI,CAAC,YAAY,CAC5D,cAAc,CAAC,eAAe,CAC/B,CAAC;YAEF,IAAI,YAAY,IAAI,YAAY,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;gBACpE,cAAc,mCACT,cAAc,KACjB,eAAe,EAAE,YAAY,GAC9B,CAAC;gBACF,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GACP,cAAc,CAAC,cAAc,IAAI,IAAI,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAkB,IAAI,CAAC,kBAAkB,CACtD,cAAc,CAAC,aAAa,CAC7B,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CACrD,KAAoB,CAAC,SAAS,CAAC,CACjC,CAAC;gBAEF,IAAI,MAAM,IAAI,MAAM,KAAM,KAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1D,KAAK,GAAG,gCACF,KAAoB,KACxB,CAAC,SAAS,CAAC,EAAE,MAAM,GACgB,CAAC;oBACtC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,uCACK,cAAc,KACjB,cAAc,EAAE,KAAK,EACrB,cAAc,EAAE,cAAc,IAC9B;IACJ,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "12.0.4",
3
+ "version": "12.0.5",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",