@oneuptime/common 12.0.23 → 12.0.25

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 (323) hide show
  1. package/Models/AnalyticsModels/Span.ts +101 -0
  2. package/Models/DatabaseModels/DetectionRule.ts +55 -0
  3. package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +27 -7
  4. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +67 -0
  5. package/Models/DatabaseModels/Project.ts +68 -0
  6. package/Models/DatabaseModels/User.ts +68 -0
  7. package/Server/API/BaseAPI.ts +0 -24
  8. package/Server/API/SlackAPI.ts +0 -2
  9. package/Server/API/TelemetryAPI.ts +29 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.ts +28 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.ts +49 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.ts +33 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  14. package/Server/Middleware/GzipRequestBody.ts +311 -0
  15. package/Server/Middleware/MultipartFormData.ts +87 -3
  16. package/Server/Middleware/SlackAuthorization.ts +96 -18
  17. package/Server/Services/DetectionRuleService.ts +73 -6
  18. package/Server/Services/Index.ts +205 -0
  19. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +59 -0
  20. package/Server/Services/NetworkDeviceService.ts +148 -0
  21. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +65 -0
  22. package/Server/Services/OnCallDutyPolicyFeedService.ts +1 -1
  23. package/Server/Services/ProjectService.ts +29 -19
  24. package/Server/Services/SecurityEventService.ts +90 -13
  25. package/Server/Services/StatusPageResourceService.ts +223 -0
  26. package/Server/Services/TelemetryAttributeService.ts +17 -0
  27. package/Server/Services/UserService.ts +4 -6
  28. package/Server/Types/Markdown.ts +161 -67
  29. package/Server/Utils/AI/Toolbox/OnCallTools.ts +12 -4
  30. package/Server/Utils/AnalyticsDatabase/Statement.ts +13 -1
  31. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +297 -6
  32. package/Server/Utils/Attribution.ts +4 -0
  33. package/Server/Utils/Marketing/MarketingEventUtil.ts +45 -7
  34. package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +55 -3
  35. package/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.ts +21 -0
  36. package/Server/Utils/StartServer.ts +12 -32
  37. package/Server/Utils/Telemetry/LlmCostBudgetEvaluator.ts +101 -4
  38. package/Server/Utils/Telemetry/LlmMetricSpend.ts +181 -0
  39. package/Server/Utils/Telemetry/LlmSpan.ts +46 -0
  40. package/Server/Utils/Workspace/Slack/Actions/Auth.ts +0 -12
  41. package/Server/Views/Partials/AnalyticsConsent.ejs +159 -102
  42. package/Server/Views/Partials/Head.ejs +2 -1
  43. package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +776 -38
  44. package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +359 -0
  45. package/Tests/App/Dashboard/CorrelateGraph.test.tsx +865 -0
  46. package/Tests/App/Dashboard/CorrelationGraph.test.ts +346 -0
  47. package/Tests/App/Dashboard/CriteriaFilterConditionDropdown.test.tsx +256 -0
  48. package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +738 -0
  49. package/Tests/App/Dashboard/CriteriaFilterMonitorTypeChange.test.ts +1122 -0
  50. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +283 -0
  51. package/Tests/App/Dashboard/ExternalStatusPageCriteriaFilter.test.ts +407 -0
  52. package/Tests/App/Dashboard/LlmCallsTableIdentity.test.tsx +322 -0
  53. package/Tests/App/Dashboard/LlmOverview.test.tsx +335 -0
  54. package/Tests/App/Dashboard/LlmSpanDisplay.test.ts +391 -0
  55. package/Tests/App/Dashboard/LlmUsageBreakdown.test.tsx +1007 -0
  56. package/Tests/App/Dashboard/MetricSeriesInvestigateMenu.test.tsx +5 -14
  57. package/Tests/App/Dashboard/MonitorCriteriaActionToggles.test.tsx +426 -0
  58. package/Tests/App/Dashboard/MonitorStepsCriteriaAlignmentWiring.test.tsx +352 -0
  59. package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +278 -0
  60. package/Tests/App/Dashboard/OnCallLayerShiftPreviewOverrides.test.ts +237 -0
  61. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +2 -2
  62. package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +460 -0
  63. package/Tests/App/Dashboard/SecurityEventAttributeUtil.test.ts +171 -0
  64. package/Tests/App/Dashboard/SecurityEventCorrelation.test.ts +857 -0
  65. package/Tests/App/Dashboard/SecurityEventDetailObservables.test.tsx +194 -0
  66. package/Tests/App/Dashboard/SecurityEventsDetectionRulesPage.test.tsx +124 -0
  67. package/Tests/App/Dashboard/SecurityEventsMonitorStepForm.test.tsx +79 -19
  68. package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +382 -0
  69. package/Tests/App/StatusPage/BulkAddStatusPageMonitors.test.ts +216 -0
  70. package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +590 -11
  71. package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +757 -0
  72. package/Tests/Models/DiscoveryScanNameColumn.test.ts +293 -0
  73. package/Tests/Server/API/BaseAPI.test.ts +41 -0
  74. package/Tests/Server/API/BaseAPIUpdatePayloadValidation.test.ts +9 -16
  75. package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +564 -0
  76. package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +120 -4
  77. package/Tests/Server/Middleware/GzipRequestBody.test.ts +725 -0
  78. package/Tests/Server/Middleware/MultipartFormData.test.ts +298 -0
  79. package/Tests/Server/Middleware/SlackAuthorization.test.ts +262 -5
  80. package/Tests/Server/Services/AddDetectionRuleDistinctCountColumnsMigration.test.ts +311 -0
  81. package/Tests/Server/Services/DetectionRuleService.test.ts +134 -2
  82. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +7 -1
  83. package/Tests/Server/Services/FeedRetentionConsistency.test.ts +131 -0
  84. package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +194 -0
  85. package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +800 -0
  86. package/Tests/Server/Services/OnCallScheduleAttachRosterRefresh.test.ts +244 -0
  87. package/Tests/Server/Services/SecurityEventService.test.ts +376 -0
  88. package/Tests/Server/Services/StatusPageResourceDuplicates.test.ts +703 -0
  89. package/Tests/Server/Services/TelemetryAttributeServiceSecurityEvent.test.ts +256 -0
  90. package/Tests/Server/Types/Workflow/Components/ComponentRegistryParity.test.ts +417 -0
  91. package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWhereOperators.test.ts +677 -0
  92. package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +43 -0
  93. package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +15 -11
  94. package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +369 -8
  95. package/Tests/Server/Utils/SecurityEvent/SigmaClickhouseCompiler.test.ts +35 -0
  96. package/Tests/Server/Utils/Telemetry/LlmCostBudgetEvaluator.test.ts +387 -4
  97. package/Tests/Server/Utils/Telemetry/LlmMetricSpend.test.ts +386 -0
  98. package/Tests/Server/Utils/Telemetry/LlmSpan.test.ts +804 -0
  99. package/Tests/Server/Views/AnalyticsConsentPartial.test.ts +48 -5
  100. package/Tests/Types/Code/YamlSyntax.test.ts +396 -0
  101. package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +957 -0
  102. package/Tests/Types/Monitor/MonitorCriteriaActionValidation.test.ts +598 -0
  103. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +49 -0
  104. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +6 -6
  105. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +4 -4
  106. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +4 -3
  107. package/Tests/Types/Telemetry/LlmMetricConventions.test.ts +584 -0
  108. package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +0 -12
  109. package/Tests/UI/Components/CardModelDetailEdit.test.tsx +1 -17
  110. package/Tests/UI/Components/CodeEditor.test.tsx +474 -10
  111. package/Tests/UI/Components/Detail/YamlField.test.tsx +105 -0
  112. package/Tests/UI/Components/EntityDropdownLabelsBulkAdd.test.tsx +319 -0
  113. package/Tests/UI/Components/Forms/FormFieldYaml.test.tsx +231 -0
  114. package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +1 -0
  115. package/Tests/UI/Components/Forms/ValidationYAML.test.ts +234 -0
  116. package/Tests/UI/Components/ModelTable/AttributeColumns.test.tsx +573 -0
  117. package/Tests/UI/Components/ModelTable/BaseModelTableAttributeColumns.test.tsx +824 -0
  118. package/Tests/UI/Components/ModelTable/ColumnCustomizationModalAddableColumns.test.tsx +707 -0
  119. package/Tests/UI/Components/SideOver.test.tsx +1 -1
  120. package/Tests/UI/Components/StatusPage/ResourceGridSelection.test.tsx +294 -0
  121. package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +436 -0
  122. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +6 -2
  123. package/Tests/UI/Components/Toggle.test.tsx +25 -0
  124. package/Tests/UI/Components/YamlEditor.test.tsx +847 -0
  125. package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +252 -0
  126. package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +221 -0
  127. package/Tests/Utils/NetworkDiscovery/ScanNameUtil.test.ts +312 -0
  128. package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +468 -0
  129. package/Tests/Utils/Telemetry/LlmMetricQuery.test.ts +770 -0
  130. package/Types/Code/YamlSyntax.ts +396 -0
  131. package/Types/Exception/ExceptionCode.ts +1 -0
  132. package/Types/Exception/PayloadTooLargeException.ts +8 -0
  133. package/Types/Marketing/Attribution.ts +10 -0
  134. package/Types/Marketing/MarketingEvent.ts +4 -0
  135. package/Types/Monitor/MonitorCriteriaInstance.ts +116 -56
  136. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +2 -1
  137. package/Types/SecurityEvent/DetectionFindingConstants.ts +11 -0
  138. package/Types/Telemetry/LlmConventions.ts +255 -0
  139. package/Types/Telemetry/LlmMetricConventions.ts +329 -0
  140. package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +3 -0
  141. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +10 -1
  142. package/UI/Components/CodeEditor/CodeEditor.tsx +241 -79
  143. package/UI/Components/CodeEditor/YamlEditor.tsx +369 -0
  144. package/UI/Components/Detail/Detail.tsx +10 -0
  145. package/UI/Components/EntityDropdown/EntityDropdown.tsx +33 -0
  146. package/UI/Components/Forms/Fields/FormField.tsx +31 -0
  147. package/UI/Components/Forms/Types/Field.ts +8 -0
  148. package/UI/Components/Forms/Types/FormFieldSchemaType.ts +1 -0
  149. package/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.ts +2 -0
  150. package/UI/Components/Forms/Validation.ts +46 -0
  151. package/UI/Components/Input/Input.tsx +3 -0
  152. package/UI/Components/ModelTable/AttributeColumns.tsx +321 -0
  153. package/UI/Components/ModelTable/BaseModelTable.tsx +263 -14
  154. package/UI/Components/ModelTable/Column.ts +8 -0
  155. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +310 -0
  156. package/UI/Components/ModelTable/ColumnPreference.ts +13 -1
  157. package/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx +2 -2
  158. package/UI/Components/SideOver/SideOver.tsx +5 -5
  159. package/UI/Components/StatusPage/ResourceGrid.tsx +82 -2
  160. package/UI/Components/StatusPage/ResourceList.tsx +197 -38
  161. package/UI/Components/Toggle/Toggle.tsx +9 -1
  162. package/UI/Components/Types/FieldType.ts +1 -0
  163. package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +73 -1
  164. package/Utils/NetworkDiscovery/ScanNameUtil.ts +181 -0
  165. package/Utils/StatusPage/ResourceExplorer.ts +258 -0
  166. package/Utils/Telemetry/LlmMetricQuery.ts +287 -0
  167. package/build/dist/Models/AnalyticsModels/Span.js +89 -0
  168. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  169. package/build/dist/Models/DatabaseModels/DetectionRule.js +57 -0
  170. package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
  171. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +27 -7
  172. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  173. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +69 -0
  174. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  175. package/build/dist/Models/DatabaseModels/Project.js +76 -0
  176. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  177. package/build/dist/Models/DatabaseModels/User.js +76 -0
  178. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  179. package/build/dist/Server/API/BaseAPI.js +3 -19
  180. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  181. package/build/dist/Server/API/SlackAPI.js +0 -2
  182. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  183. package/build/dist/Server/API/TelemetryAPI.js +17 -0
  184. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  185. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.js +21 -0
  186. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.js.map +1 -0
  187. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.js +42 -0
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.js.map +1 -0
  189. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.js +22 -0
  190. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.js.map +1 -0
  191. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  192. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  193. package/build/dist/Server/Middleware/GzipRequestBody.js +224 -0
  194. package/build/dist/Server/Middleware/GzipRequestBody.js.map +1 -0
  195. package/build/dist/Server/Middleware/MultipartFormData.js +71 -2
  196. package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
  197. package/build/dist/Server/Middleware/SlackAuthorization.js +58 -7
  198. package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
  199. package/build/dist/Server/Services/DetectionRuleService.js +49 -4
  200. package/build/dist/Server/Services/DetectionRuleService.js.map +1 -1
  201. package/build/dist/Server/Services/Index.js +204 -0
  202. package/build/dist/Server/Services/Index.js.map +1 -1
  203. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +50 -0
  204. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  205. package/build/dist/Server/Services/NetworkDeviceService.js +124 -0
  206. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  207. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +68 -13
  208. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  209. package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js +1 -1
  210. package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js.map +1 -1
  211. package/build/dist/Server/Services/ProjectService.js +25 -45
  212. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  213. package/build/dist/Server/Services/SecurityEventService.js +57 -5
  214. package/build/dist/Server/Services/SecurityEventService.js.map +1 -1
  215. package/build/dist/Server/Services/StatusPageResourceService.js +140 -0
  216. package/build/dist/Server/Services/StatusPageResourceService.js.map +1 -1
  217. package/build/dist/Server/Services/TelemetryAttributeService.js +17 -0
  218. package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
  219. package/build/dist/Server/Services/UserService.js +2 -12
  220. package/build/dist/Server/Services/UserService.js.map +1 -1
  221. package/build/dist/Server/Types/Markdown.js +147 -61
  222. package/build/dist/Server/Types/Markdown.js.map +1 -1
  223. package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +12 -4
  224. package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -1
  225. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +12 -1
  226. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  227. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +246 -9
  228. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  229. package/build/dist/Server/Utils/Attribution.js.map +1 -1
  230. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +27 -7
  231. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
  232. package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +42 -7
  233. package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
  234. package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js +18 -0
  235. package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js.map +1 -1
  236. package/build/dist/Server/Utils/StartServer.js +12 -21
  237. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  238. package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js +76 -5
  239. package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js.map +1 -1
  240. package/build/dist/Server/Utils/Telemetry/LlmMetricSpend.js +151 -0
  241. package/build/dist/Server/Utils/Telemetry/LlmMetricSpend.js.map +1 -0
  242. package/build/dist/Server/Utils/Telemetry/LlmSpan.js +24 -1
  243. package/build/dist/Server/Utils/Telemetry/LlmSpan.js.map +1 -1
  244. package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js +0 -10
  245. package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js.map +1 -1
  246. package/build/dist/Types/Code/YamlSyntax.js +212 -0
  247. package/build/dist/Types/Code/YamlSyntax.js.map +1 -0
  248. package/build/dist/Types/Exception/ExceptionCode.js +1 -0
  249. package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
  250. package/build/dist/Types/Exception/PayloadTooLargeException.js +8 -0
  251. package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -0
  252. package/build/dist/Types/Marketing/Attribution.js +10 -0
  253. package/build/dist/Types/Marketing/Attribution.js.map +1 -1
  254. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +112 -51
  255. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  256. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +2 -1
  257. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
  258. package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js +9 -0
  259. package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js.map +1 -1
  260. package/build/dist/Types/Telemetry/LlmConventions.js +236 -0
  261. package/build/dist/Types/Telemetry/LlmConventions.js.map +1 -1
  262. package/build/dist/Types/Telemetry/LlmMetricConventions.js +290 -0
  263. package/build/dist/Types/Telemetry/LlmMetricConventions.js.map +1 -0
  264. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +1 -1
  265. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
  266. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +5 -2
  267. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  268. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +206 -76
  269. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  270. package/build/dist/UI/Components/CodeEditor/YamlEditor.js +201 -0
  271. package/build/dist/UI/Components/CodeEditor/YamlEditor.js.map +1 -0
  272. package/build/dist/UI/Components/Detail/Detail.js +9 -0
  273. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  274. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +16 -1
  275. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  276. package/build/dist/UI/Components/Forms/Fields/FormField.js +14 -1
  277. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  278. package/build/dist/UI/Components/Forms/Types/Field.js.map +1 -1
  279. package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js +1 -0
  280. package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js.map +1 -1
  281. package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js +2 -0
  282. package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js.map +1 -1
  283. package/build/dist/UI/Components/Forms/Validation.js +27 -0
  284. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  285. package/build/dist/UI/Components/Input/Input.js +1 -1
  286. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  287. package/build/dist/UI/Components/ModelTable/AttributeColumns.js +159 -0
  288. package/build/dist/UI/Components/ModelTable/AttributeColumns.js.map +1 -0
  289. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +179 -17
  290. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  291. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +133 -2
  292. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -1
  293. package/build/dist/UI/Components/ModelTable/ColumnPreference.js +7 -1
  294. package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -1
  295. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js +2 -2
  296. package/build/dist/UI/Components/SideOver/SideOver.js +5 -5
  297. package/build/dist/UI/Components/StatusPage/ResourceGrid.js +28 -2
  298. package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -1
  299. package/build/dist/UI/Components/StatusPage/ResourceList.js +87 -20
  300. package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
  301. package/build/dist/UI/Components/Toggle/Toggle.js +9 -1
  302. package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
  303. package/build/dist/UI/Components/Types/FieldType.js +1 -0
  304. package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
  305. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +37 -1
  306. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
  307. package/build/dist/Utils/NetworkDiscovery/ScanNameUtil.js +120 -0
  308. package/build/dist/Utils/NetworkDiscovery/ScanNameUtil.js.map +1 -0
  309. package/build/dist/Utils/StatusPage/ResourceExplorer.js +171 -0
  310. package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -1
  311. package/build/dist/Utils/Telemetry/LlmMetricQuery.js +175 -0
  312. package/build/dist/Utils/Telemetry/LlmMetricQuery.js.map +1 -0
  313. package/jest.config.json +2 -0
  314. package/package.json +1 -1
  315. package/tsconfig.json +2 -1
  316. package/Tests/UI/Components/Toast.test.tsx +0 -197
  317. package/Tests/UI/Components/ToastStacking.test.tsx +0 -198
  318. package/UI/Components/Toast/Toast.tsx +0 -189
  319. package/UI/Components/Toast/ToastInit.tsx +0 -110
  320. package/build/dist/UI/Components/Toast/Toast.js +0 -123
  321. package/build/dist/UI/Components/Toast/Toast.js.map +0 -1
  322. package/build/dist/UI/Components/Toast/ToastInit.js +0 -53
  323. package/build/dist/UI/Components/Toast/ToastInit.js.map +0 -1
@@ -33,21 +33,24 @@
33
33
  <!--
34
34
  Consent.
35
35
 
36
- This block runs BEFORE Google Tag Manager and before PostHog, because both
37
- of the things it does are only meaningful ahead of them: Consent Mode's
38
- defaults have to be on the dataLayer before the container reads it, and
39
- PostHog must not be loaded at all until there is consent to load it.
40
-
41
- Three states, not two. `granted` and `denied` are the visitor's explicit
42
- choices; `unset` is the state before they have answered, and it is treated
43
- as denied for storage purposes rather than as permission-by-silence.
44
-
45
- What that costs, stated plainly: a visitor who never touches the banner is
46
- not measured, and their attribution is not stored. What stops that from
47
- losing an ad click outright is the pending-attribution buffer further
48
- down attribution seen on this page is held in memory and written the
49
- moment consent is granted, so accepting the banner on the landing page
50
- keeps everything the click carried.
36
+ This block runs BEFORE Google Tag Manager, because Consent Mode's defaults
37
+ have to be on the dataLayer before the container reads it.
38
+
39
+ MEASUREMENT IS NO LONGER GATED ON THE BANNER. Consent Mode defaults to
40
+ granted, attribution is captured and stored on every visit, and PostHog
41
+ loads on every visit. The `cookiesAccepted` key is still written and
42
+ `oneUptimeConsent` still reports it, because the banner and the footer's
43
+ cookie-settings link still read and write it but nothing downstream
44
+ branches on the answer any more.
45
+
46
+ Stated plainly so nobody has to infer it from the code: pressing "Reject
47
+ all" does not stop measurement, does not stop attribution being stored, and
48
+ does not clear what an earlier visit stored. This was a deliberate product
49
+ decision (the booking receiver needs every booking attributed, and a
50
+ booking is itself a deliberate act by the visitor); it is not an oversight,
51
+ and it is not the behaviour the banner's own copy describes. If that copy
52
+ or the banner UI is meant to keep promising a choice, this is the file that
53
+ has to change back.
51
54
  -->
52
55
  <% if(typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false){ %>
53
56
  <!--
@@ -69,7 +72,6 @@
69
72
  <script>
70
73
  window.oneUptimeConsent = (function () {
71
74
  var STORAGE_KEY = 'cookiesAccepted';
72
- var listeners = [];
73
75
 
74
76
  function readRaw() {
75
77
  try {
@@ -95,19 +97,15 @@
95
97
  }
96
98
 
97
99
  /*
98
- * Consent Mode v2. `security_storage` is granted because it covers
99
- * things like fraud prevention that are not analytics; everything that
100
- * feeds advertising or measurement starts denied.
100
+ * Consent Mode v2, defaulting to granted across the board.
101
101
  *
102
- * wait_for_update gives the container half a second to see an update
103
- * before it decides how to behave, which is what makes a visitor who
104
- * accepts immediately still count.
102
+ * wait_for_update is kept at 500ms so the container's own timing is
103
+ * unchanged, even though nothing arrives later to change the answer.
105
104
  */
106
105
  function pushConsentSignal(mode, granted) {
107
106
  /*
108
107
  * No tag, nothing to tell. On a self-hosted install gtag is never
109
- * defined, and consent is still tracked it gates the attribution
110
- * capture and PostHog either way.
108
+ * defined; the banner's answer is still recorded either way.
111
109
  */
112
110
  if (typeof window.gtag !== 'function') {
113
111
  return;
@@ -125,12 +123,7 @@
125
123
  });
126
124
  }
127
125
 
128
- pushConsentSignal('default', false);
129
-
130
- // An earlier visit already answered: tell Google before the tag loads.
131
- if (isGranted()) {
132
- pushConsentSignal('update', true);
133
- }
126
+ pushConsentSignal('default', true);
134
127
 
135
128
  function set(granted) {
136
129
  try {
@@ -139,27 +132,24 @@
139
132
  // Nothing to persist to. The in-page decision still applies.
140
133
  }
141
134
 
142
- pushConsentSignal('update', granted);
143
-
144
- for (var i = 0; i < listeners.length; i++) {
145
- try {
146
- listeners[i](granted);
147
- } catch (e) {
148
- // One bad listener must not stop the others.
149
- }
150
- }
135
+ /*
136
+ * Deliberately NOT pushing a Consent Mode update here. The default
137
+ * is granted and stays granted; pushing 'denied' on a refusal would
138
+ * re-gate the Google tag and make the banner functional again,
139
+ * which is exactly what this file no longer does.
140
+ *
141
+ * There is no observer list either. Nothing downstream reacts to
142
+ * the answer any more, and an onChange() that could never fire is
143
+ * an API that reads as working code — re-add it alongside the
144
+ * consumer that needs it, not before.
145
+ */
151
146
  }
152
147
 
153
148
  return {
154
149
  state: state,
155
150
  isGranted: isGranted,
156
151
  grant: function () { set(true); },
157
- deny: function () { set(false); },
158
- onChange: function (listener) {
159
- if (typeof listener === 'function') {
160
- listeners.push(listener);
161
- }
162
- }
152
+ deny: function () { set(false); }
163
153
  };
164
154
  })();
165
155
  </script>
@@ -182,19 +172,36 @@
182
172
 
183
173
  CONSENT
184
174
 
185
- Nothing is written without consent. Attribution seen before the visitor has
186
- answered the banner is held in memory and flushed if they accept, so the
187
- ordinary case — land on an ad, accept, sign up — keeps everything. An
188
- explicit refusal clears anything a previous visit stored.
175
+ None. Every touch is stored on sight, whatever the banner says and whether
176
+ or not it has been answered. See the block at the top of this file for why.
177
+
178
+ CAL.COM BOOKINGS
179
+
180
+ window.oneUptimeCalAttributionMetadata(bookingKind) flattens the same
181
+ attribution into the scalar string map Cal.com accepts as booking metadata.
182
+ Cal hands it back on its BOOKING_CREATED webhook, which is delivered to the
183
+ CRM — not to OneUptime, which receives no booking webhook at all
184
+ (Docs/analytics/enterprise-conversion-tracking.md).
189
185
  -->
190
186
  <script>
191
187
  (function () {
188
+ /*
189
+ * Must stay in step with UtmWireKeyToPropertyKey in
190
+ * Common/Types/Marketing/Attribution.ts — the signup door whitelists on
191
+ * that map, so a key written here that is missing there is silently
192
+ * dropped on arrival. AttributionCapture.test.ts asserts the two are
193
+ * identical.
194
+ */
192
195
  var UTM_KEY_MAP = {
193
196
  'utm_source': 'utmSource',
194
197
  'utm_medium': 'utmMedium',
195
198
  'utm_campaign': 'utmCampaign',
196
199
  'utm_term': 'utmTerm',
197
- 'utm_content': 'utmContent'
200
+ 'utm_content': 'utmContent',
201
+ 'utm_id': 'utmId',
202
+ 'utm_source_platform': 'utmSourcePlatform',
203
+ 'utm_creative_format': 'utmCreativeFormat',
204
+ 'utm_marketing_tactic': 'utmMarketingTactic'
198
205
  };
199
206
 
200
207
  /*
@@ -208,12 +215,26 @@
208
215
  // Mirrors MaxAttributionValueLength on the server.
209
216
  var MAX_VALUE_LENGTH = 500;
210
217
 
211
- // Attribution seen on this page but not yet allowed to be stored.
212
- var pending = null;
218
+ /*
219
+ * The first touch travels to Cal as one JSON string, so it gets a JSON
220
+ * bound rather than the 500-char per-value one. Truncating JSON
221
+ * produces a string the receiver's JSON.parse rejects, which would drop
222
+ * the whole first touch silently.
223
+ */
224
+ var MAX_FIRST_TOUCH_LENGTH = 4000;
213
225
 
214
- function canStore() {
215
- return Boolean(window.oneUptimeConsent && window.oneUptimeConsent.isGranted());
216
- }
226
+ /*
227
+ * This page's touch, kept in memory as well as written.
228
+ *
229
+ * Not a consent buffer — storeTouch runs unconditionally now. This is
230
+ * for the browser that refuses localStorage outright: private modes,
231
+ * "block all site data", a sandboxed iframe, enterprise storage policy.
232
+ * There, every setItem throws and is swallowed as best-effort, so a
233
+ * reader that trusted storage alone would hand Cal an empty bag for a
234
+ * visitor who arrived on a paid click seconds earlier — the exact
235
+ * failure this whole path exists to prevent.
236
+ */
237
+ var currentTouch = null;
217
238
 
218
239
  function setItem(key, value) {
219
240
  try {
@@ -312,15 +333,6 @@
312
333
  }
313
334
  }
314
335
 
315
- function clearStoredAttribution() {
316
- Object.keys(UTM_KEY_MAP).forEach(function (param) {
317
- removeItem(UTM_KEY_MAP[param]);
318
- });
319
- removeItem('utmUrl');
320
- removeItem('clickIds');
321
- removeItem('firstTouch');
322
- }
323
-
324
336
  function parseStoredJson(key) {
325
337
  var raw = getItem(key);
326
338
  if (!raw) { return null; }
@@ -333,42 +345,49 @@
333
345
  }
334
346
 
335
347
  /*
336
- * Everything known about where this visitor came from, whether it has
337
- * been written to storage yet or is still only in memory.
348
+ * Everything known about where this visitor came from, whether it
349
+ * reached storage or is only in memory.
338
350
  *
339
- * The in-memory touch wins: it is this page load, and the stored copy
340
- * is at best the same thing and at worst an older visit.
351
+ * This page's touch wins: it is this page load, and the stored copy is
352
+ * at best the same thing and at worst an older visit.
341
353
  */
342
354
  window.oneUptimeGetAttribution = function () {
343
355
  var utm = {};
344
356
  Object.keys(UTM_KEY_MAP).forEach(function (param) {
345
357
  var key = UTM_KEY_MAP[param];
346
- var value = (pending && pending.utmValues[key]) || getItem(key);
358
+ var value = (currentTouch && currentTouch.utmValues[key]) || getItem(key);
347
359
  if (value && value !== 'null' && value !== 'undefined') {
348
360
  utm[key] = value;
349
361
  }
350
362
  });
351
363
 
352
- var utmUrl = (pending && pending.url) || getItem('utmUrl');
364
+ var utmUrl = (currentTouch && currentTouch.url) || getItem('utmUrl');
353
365
  if (utmUrl) {
354
366
  utm.utmUrl = utmUrl;
355
367
  }
356
368
 
357
- var clickIds = (pending && pending.hasClickId ? pending.clickIds : null) || parseStoredJson('clickIds') || {};
369
+ var clickIds = (currentTouch && currentTouch.hasClickId ? currentTouch.clickIds : null)
370
+ || parseStoredJson('clickIds')
371
+ || {};
358
372
 
359
373
  var firstTouch = parseStoredJson('firstTouch');
360
374
 
361
- if (!firstTouch && pending) {
375
+ /*
376
+ * Storage refused the write, so there is no stored first touch to
377
+ * read back. This visit is the only one we will ever know about,
378
+ * which makes it the first one.
379
+ */
380
+ if (!firstTouch && currentTouch) {
362
381
  firstTouch = {};
363
- Object.keys(pending.utmValues).forEach(function (key) {
364
- firstTouch[key] = pending.utmValues[key];
382
+ Object.keys(currentTouch.utmValues).forEach(function (key) {
383
+ firstTouch[key] = currentTouch.utmValues[key];
365
384
  });
366
- if (pending.hasClickId) {
367
- firstTouch.clickIds = pending.clickIds;
385
+ if (currentTouch.hasClickId) {
386
+ firstTouch.clickIds = currentTouch.clickIds;
368
387
  }
369
- firstTouch.landingUrl = pending.url;
370
- firstTouch.referrer = pending.referrer;
371
- firstTouch.timestamp = pending.timestamp;
388
+ firstTouch.landingUrl = currentTouch.url;
389
+ firstTouch.referrer = currentTouch.referrer;
390
+ firstTouch.timestamp = currentTouch.timestamp;
372
391
  }
373
392
 
374
393
  return {
@@ -378,34 +397,72 @@
378
397
  };
379
398
  };
380
399
 
381
- var touch = readTouchFromUrl();
400
+ /*
401
+ * The same attribution, flattened into the scalar string map Cal.com
402
+ * accepts as booking metadata.
403
+ *
404
+ * Cal takes booking metadata as FLAT, BRACKETED keys on the embed
405
+ * config — `metadata[utm_source]` — and hands them back on the webhook
406
+ * as payload.metadata.utm_source. NOT as a nested `metadata: {...}`
407
+ * object: Cal serialises each config value into a query parameter, so a
408
+ * nested object becomes the string "[object Object]" and every key
409
+ * inside it is lost. Nothing errors; bookings keep succeeding, they
410
+ * just arrive attributable to nothing — indistinguishable from not
411
+ * having done this at all.
412
+ *
413
+ * https://cal.com/help/embedding/prefill-booking-form-embed
414
+ *
415
+ * Keys are the snake_case wire spelling, which is what the CRM's Cal
416
+ * webhook receiver parses. Returns {} when there is nothing to
417
+ * attribute and no booking kind, so a caller can spread it
418
+ * unconditionally without sending an empty metadata bag.
419
+ */
420
+ window.oneUptimeCalAttributionMetadata = function (bookingKind) {
421
+ var attribution = window.oneUptimeGetAttribution();
422
+ var config = {};
382
423
 
383
- if (touch) {
384
- if (canStore()) {
385
- storeTouch(touch);
386
- } else {
387
- /*
388
- * Held, not dropped. A visitor who accepts the banner on this
389
- * very page — the ordinary path for someone arriving from an
390
- * ad — keeps the click id that brought them here.
391
- */
392
- pending = touch;
424
+ function put(key, value, maxLength) {
425
+ if (value) {
426
+ config['metadata[' + key + ']'] =
427
+ String(value).slice(0, maxLength || MAX_VALUE_LENGTH);
428
+ }
393
429
  }
394
- }
395
430
 
396
- if (window.oneUptimeConsent) {
397
- window.oneUptimeConsent.onChange(function (granted) {
398
- if (granted) {
399
- if (pending) {
400
- storeTouch(pending);
401
- }
402
- return;
403
- }
431
+ Object.keys(UTM_KEY_MAP).forEach(function (param) {
432
+ put(param, attribution.utm[UTM_KEY_MAP[param]]);
433
+ });
404
434
 
405
- // Refused: forget what earlier visits stored, and this page's touch.
406
- pending = null;
407
- clearStoredAttribution();
435
+ put('utm_url', attribution.utm.utmUrl);
436
+
437
+ Object.keys(attribution.clickIds).forEach(function (param) {
438
+ put(param, attribution.clickIds[param]);
408
439
  });
440
+
441
+ if (attribution.firstTouch) {
442
+ var serialized = JSON.stringify(attribution.firstTouch);
443
+ if (serialized.length <= MAX_FIRST_TOUCH_LENGTH) {
444
+ put('ou_first_touch', serialized, MAX_FIRST_TOUCH_LENGTH);
445
+ }
446
+ }
447
+
448
+ /*
449
+ * Unconditional, unlike everything above it. All three embeds book
450
+ * the same Cal event type (oneuptimehq/demo), so without this the
451
+ * receiver cannot tell a support call from an enterprise demo from
452
+ * a self-hosted architecture assessment — they arrive identical.
453
+ */
454
+ if (bookingKind) {
455
+ config['metadata[ou_booking_kind]'] = String(bookingKind).slice(0, MAX_VALUE_LENGTH);
456
+ }
457
+
458
+ return config;
459
+ };
460
+
461
+ var touch = readTouchFromUrl();
462
+
463
+ if (touch) {
464
+ currentTouch = touch;
465
+ storeTouch(touch);
409
466
  }
410
467
 
411
468
  /*
@@ -111,7 +111,8 @@
111
111
  "sameAs": [
112
112
  "https://www.facebook.com/oneuptimeinc",
113
113
  "https://twitter.com/OneUptimeInc",
114
- "https://www.linkedin.com/company/oneuptime"
114
+ "https://www.linkedin.com/company/oneuptime",
115
+ "https://njump.me/npub1kggtaw83q0mctlwvh854xdu3wjmen8tmq9cx9l030x2ylay6wk8qy2f2e6"
115
116
  ],
116
117
  "description": "OneUptime monitors websites, API's, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime."
117
118
  }