@oneuptime/common 12.0.6 → 12.0.8

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 (594) hide show
  1. package/Models/DatabaseModels/AIInsight.ts +1 -1
  2. package/Models/DatabaseModels/DatabaseBaseModel/FileModel.ts +2 -3
  3. package/Models/DatabaseModels/DeletedProject.ts +595 -0
  4. package/Models/DatabaseModels/Index.ts +2 -0
  5. package/Models/DatabaseModels/Monitor.ts +111 -0
  6. package/Models/DatabaseModels/Project.ts +3 -3
  7. package/Models/DatabaseModels/TelemetryEntity.ts +45 -0
  8. package/Models/DatabaseModels/TelemetryEntityRelationship.ts +26 -0
  9. package/Models/DatabaseModels/WorkflowLog.ts +38 -0
  10. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -1
  11. package/Server/API/FileAPI.ts +15 -2
  12. package/Server/API/MicrosoftTeamsAPI.ts +6 -1
  13. package/Server/API/ProjectAPI.ts +214 -0
  14. package/Server/API/StatusPageAPI.ts +39 -6
  15. package/Server/API/UserAPI.ts +16 -1
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.ts +50 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.ts +67 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.ts +39 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.ts +41 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.ts +17 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  22. package/Server/Middleware/MasterAdminAuthorization.ts +11 -6
  23. package/Server/Services/AIAgentService.ts +20 -0
  24. package/Server/Services/DashboardDomainService.ts +73 -28
  25. package/Server/Services/DatabaseService.ts +1 -0
  26. package/Server/Services/DeletedProjectService.ts +138 -0
  27. package/Server/Services/FileService.ts +61 -0
  28. package/Server/Services/IncidentEpisodePublicNoteService.ts +18 -0
  29. package/Server/Services/IncidentPublicNoteService.ts +18 -0
  30. package/Server/Services/Index.ts +2 -0
  31. package/Server/Services/MonitorService.ts +311 -0
  32. package/Server/Services/ProbeService.ts +20 -0
  33. package/Server/Services/ProjectService.ts +297 -1
  34. package/Server/Services/PushNotificationService.ts +71 -0
  35. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +18 -0
  36. package/Server/Services/StatusPageAnnouncementService.ts +53 -0
  37. package/Server/Services/StatusPageDomainService.ts +73 -28
  38. package/Server/Services/TeamMemberService.ts +117 -12
  39. package/Server/Services/TelemetryEntityRelationshipService.ts +3 -0
  40. package/Server/Services/TelemetryEntityService.ts +114 -1
  41. package/Server/Services/TelemetryIngestionKeyService.ts +1 -0
  42. package/Server/Services/UserWebhookService.ts +34 -109
  43. package/Server/Services/WorkspaceNotificationRuleService.ts +69 -0
  44. package/Server/Services/WorkspaceProjectAuthTokenService.ts +37 -1
  45. package/Server/Types/Database/DeleteById.ts +2 -0
  46. package/Server/Types/Database/DeleteOneBy.ts +6 -0
  47. package/Server/Types/Domain.ts +41 -0
  48. package/Server/Types/Workflow/Components/API/Delete.ts +2 -1
  49. package/Server/Types/Workflow/Components/API/Get.ts +2 -1
  50. package/Server/Types/Workflow/Components/API/Patch.ts +2 -1
  51. package/Server/Types/Workflow/Components/API/Post.ts +2 -1
  52. package/Server/Types/Workflow/Components/API/Put.ts +2 -1
  53. package/Server/Types/Workflow/Components/API/Utils.ts +85 -3
  54. package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +25 -19
  55. package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +6 -5
  56. package/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.ts +32 -14
  57. package/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.ts +31 -13
  58. package/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.ts +29 -20
  59. package/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.ts +28 -21
  60. package/Server/Types/Workflow/Components/BaseModel/LogComponentError.ts +89 -0
  61. package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +208 -0
  62. package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +11 -0
  63. package/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.ts +41 -18
  64. package/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.ts +45 -19
  65. package/Server/Types/Workflow/Components/Discord/SendMessageToChannel.ts +16 -9
  66. package/Server/Types/Workflow/Components/IncomingWebhookUtils.ts +66 -0
  67. package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +15 -9
  68. package/Server/Types/Workflow/Components/Slack/SendMessageToChannel.ts +17 -0
  69. package/Server/Types/Workflow/TriggerCode.ts +12 -0
  70. package/Server/Types/Workflow/Workflow.ts +5 -0
  71. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
  72. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +171 -0
  73. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +3 -3
  74. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +3 -2
  75. package/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.ts +1 -1
  76. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +6 -6
  77. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +43 -5
  78. package/Server/Utils/DataSource/EgressGuard.ts +176 -16
  79. package/Server/Utils/DataSource/HttpFetch.ts +6 -45
  80. package/Server/Utils/Execute.ts +8 -0
  81. package/Server/Utils/InlineImageAccessTokenSync.ts +23 -0
  82. package/Server/Utils/LLM/LLMService.ts +57 -12
  83. package/Server/Utils/Monitor/MonitorAlert.ts +40 -0
  84. package/Server/Utils/Monitor/MonitorDependencySuppression.ts +192 -0
  85. package/Server/Utils/Monitor/MonitorIncident.ts +40 -0
  86. package/Server/Utils/Monitor/MonitorResource.ts +36 -0
  87. package/Server/Utils/Response.ts +142 -6
  88. package/Server/Utils/SSRFProtection.ts +273 -60
  89. package/Server/Utils/StartServer.ts +8 -0
  90. package/Server/Utils/Telemetry/InventoryEntityRegistry.ts +689 -0
  91. package/Server/Utils/VM/VMAPI.ts +56 -8
  92. package/Server/Utils/VM/VMRunner.ts +88 -1
  93. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +555 -49
  94. package/Server/Utils/Workspace/Slack/Slack.ts +25 -2
  95. package/Server/Utils/Workspace/WorkspaceBase.ts +6 -0
  96. package/Tests/App/Dashboard/DangerZone.test.tsx +334 -0
  97. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +539 -0
  98. package/Tests/App/Dashboard/DashboardVariableSelector.test.tsx +678 -0
  99. package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +706 -0
  100. package/Tests/App/Dashboard/DashboardVariablesModal.test.tsx +508 -0
  101. package/Tests/App/Dashboard/MonitorCriteriaAttributeFilter.test.tsx +574 -0
  102. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +470 -0
  103. package/Tests/App/StatusPage/StatusPageDetailPagesNotFound.test.tsx +308 -0
  104. package/Tests/Models/DatabaseModels/DeletedProjectModel.test.ts +251 -0
  105. package/Tests/Models/DatabaseModels/SavedViewJSONColumnTuples.test.ts +115 -0
  106. package/Tests/Server/API/FileAPIAccessControl.test.ts +316 -0
  107. package/Tests/Server/API/ProjectAPI.test.ts +299 -1
  108. package/Tests/Server/API/ProjectAPIAdjustBalance.test.ts +459 -0
  109. package/Tests/Server/API/ProjectAPIAdjustBalanceBillingDisabled.test.ts +177 -0
  110. package/Tests/Server/API/UserProjectsAPI.test.ts +478 -4
  111. package/Tests/Server/Services/DatabaseServiceDeletionReason.test.ts +123 -0
  112. package/Tests/Server/Services/DeletedProjectService.test.ts +415 -0
  113. package/Tests/Server/Services/DeletedProjectServiceSelfHosted.test.ts +70 -0
  114. package/Tests/Server/Services/DomainSubdomainHooks.test.ts +94 -0
  115. package/Tests/Server/Services/FileIsPublicBooleanMigration.test.ts +244 -0
  116. package/Tests/Server/Services/FileServiceMimeType.test.ts +89 -0
  117. package/Tests/Server/Services/MonitorServiceDependencyValidation.test.ts +702 -0
  118. package/Tests/Server/Services/ProjectServiceAdjustBalance.test.ts +615 -0
  119. package/Tests/Server/Services/ProjectServiceDeleteAudit.test.ts +406 -0
  120. package/Tests/Server/Services/PublishTimeImageVisibility.test.ts +450 -0
  121. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +669 -0
  122. package/Tests/Server/Services/TelemetryEntityManualCreate.test.ts +248 -0
  123. package/Tests/Server/Services/UserWebhookSSRF.test.ts +174 -0
  124. package/Tests/Server/Services/WebPushEndpointAllowlist.test.ts +133 -0
  125. package/Tests/Server/Services/WorkspaceProjectAuthTokenRepoint.test.ts +618 -0
  126. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +26 -1
  127. package/Tests/Server/Types/Workflow/Components/ApiComponentHeaders.test.ts +192 -0
  128. package/Tests/Server/Types/Workflow/Components/ApiComponentSsrf.test.ts +215 -0
  129. package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +742 -0
  130. package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +256 -0
  131. package/Tests/Server/Types/Workflow/Components/ModelArguments.test.ts +371 -0
  132. package/Tests/Server/Utils/AI/CodeAgentCommandGuard.test.ts +204 -0
  133. package/Tests/Server/Utils/AI/CodeAgentWriteLimits.test.ts +213 -0
  134. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +52 -5
  135. package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +3 -0
  136. package/Tests/Server/Utils/AI/LLMServiceEgressGuard.test.ts +315 -0
  137. package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +3 -0
  138. package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +17 -5
  139. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +14 -1
  140. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +35 -0
  141. package/Tests/Server/Utils/AI/StubLLMEgressGuard.ts +25 -0
  142. package/Tests/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.test.ts +152 -0
  143. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +62 -7
  144. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +69 -0
  145. package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +330 -0
  146. package/Tests/Server/Utils/GitHubCreatePullRequestWithToken.test.ts +393 -0
  147. package/Tests/Server/Utils/InlineImageAccessTokenSync.test.ts +202 -0
  148. package/Tests/Server/Utils/Monitor/MonitorDependencySuppression.test.ts +811 -0
  149. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +604 -0
  150. package/Tests/Server/Utils/ResponseSendFileResponse.test.ts +192 -0
  151. package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +406 -0
  152. package/Tests/Server/Utils/Telemetry/InventoryEntityRegistry.test.ts +322 -0
  153. package/Tests/Server/Utils/VM/VMAPISubstitution.test.ts +243 -0
  154. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +194 -0
  155. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +1169 -0
  156. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelsList.test.ts +2 -0
  157. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +1605 -0
  158. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTenantResolution.test.ts +1218 -0
  159. package/Tests/Types/AI/AIChatMessageStatus.test.ts +79 -0
  160. package/Tests/Types/AI/AIInsightStatus.test.ts +40 -0
  161. package/Tests/Types/API/HostnameAuthorityParsing.test.ts +157 -0
  162. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +27 -0
  163. package/Tests/Types/DataSource/DataSourceLimits.test.ts +71 -0
  164. package/Tests/Types/DataSource/DataSourceType.test.ts +181 -0
  165. package/Tests/Types/DomainSubdomainValidation.test.ts +90 -0
  166. package/Tests/Types/JSONFunctions.test.ts +252 -1
  167. package/Tests/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.test.ts +61 -0
  168. package/Tests/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.test.ts +62 -0
  169. package/Tests/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.test.ts +68 -0
  170. package/Tests/Types/Monitor/SnmpMonitor/SnmpVersion.test.ts +51 -0
  171. package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +197 -0
  172. package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +140 -0
  173. package/Tests/Types/Workflow/StepTrace.test.ts +235 -0
  174. package/Tests/Types/Workflow/TemplateSyntax.test.ts +379 -0
  175. package/Tests/Types/Workflow/Templates.test.ts +403 -0
  176. package/Tests/UI/Components/404.test.tsx +1 -1
  177. package/Tests/UI/Components/Alert.test.tsx +1 -1
  178. package/Tests/UI/Components/Badge.test.tsx +1 -1
  179. package/Tests/UI/Components/BasicForm.test.tsx +39 -10
  180. package/Tests/UI/Components/Button.test.tsx +1 -1
  181. package/Tests/UI/Components/Card.test.tsx +1 -1
  182. package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +1 -1
  183. package/Tests/UI/Components/ColorViewer.test.tsx +1 -1
  184. package/Tests/UI/Components/ComponentsModal.test.tsx +7 -1
  185. package/Tests/UI/Components/CustomTimeRangeModal.test.tsx +459 -0
  186. package/Tests/UI/Components/DictionaryAttributeFilterRow.test.tsx +477 -0
  187. package/Tests/UI/Components/DictionaryOfStrings.test.tsx +1 -1
  188. package/Tests/UI/Components/Dropdown.test.tsx +1 -1
  189. package/Tests/UI/Components/FilePicker.test.tsx +1 -1
  190. package/Tests/UI/Components/Forms/AnchoredFieldPopupKeyboard.test.tsx +382 -0
  191. package/Tests/UI/Components/Forms/ColorPickerPicking.test.tsx +569 -0
  192. package/Tests/UI/Components/Forms/ValidationJSON.test.ts +241 -0
  193. package/Tests/UI/Components/HiddenText.test.tsx +1 -1
  194. package/Tests/UI/Components/Input.test.tsx +1 -1
  195. package/Tests/UI/Components/Loader.test.tsx +1 -1
  196. package/Tests/UI/Components/LogTimeRangePicker.test.tsx +43 -1
  197. package/Tests/UI/Components/MasterPage.test.tsx +1 -1
  198. package/Tests/UI/Components/ModalPortalDismissal.test.tsx +579 -0
  199. package/Tests/UI/Components/ModelDelete.test.tsx +214 -0
  200. package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +1 -1
  201. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +1 -1
  202. package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +1 -1
  203. package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +1 -1
  204. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1 -1
  205. package/Tests/UI/Components/NavBar.test.tsx +1 -1
  206. package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +1 -1
  207. package/Tests/UI/Components/Pagination.test.tsx +1 -1
  208. package/Tests/UI/Components/Pill.test.tsx +1 -1
  209. package/Tests/UI/Components/Probe.test.tsx +1 -1
  210. package/Tests/UI/Components/ProgressBar.test.tsx +1 -1
  211. package/Tests/UI/Components/RadioButtons.test.tsx +1 -1
  212. package/Tests/UI/Components/SideMenuItem.test.tsx +1 -1
  213. package/Tests/UI/Components/SideOver.test.tsx +500 -6
  214. package/Tests/UI/Components/Tabs.test.tsx +1 -1
  215. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +1 -1
  216. package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +50 -8
  217. package/Tests/UI/Components/TextArea.test.tsx +1 -1
  218. package/Tests/UI/Components/TimeRangePickerDropdown.test.tsx +325 -0
  219. package/Tests/UI/Components/Toast.test.tsx +1 -1
  220. package/Tests/UI/Components/Toggle.test.tsx +1 -1
  221. package/Tests/UI/Components/TopSection.test.tsx +1 -1
  222. package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +1 -1
  223. package/Tests/UI/Components/Workflow/GraphLint.test.ts +821 -0
  224. package/Tests/UI/Components/Workflow/ModelColumnEditor.test.ts +287 -0
  225. package/Tests/UI/Components/Workflow/ModelColumnEditorServerContract.test.ts +185 -0
  226. package/Tests/UI/Components/Workflow/ModelSchema.test.ts +174 -0
  227. package/Tests/UI/Components/Workflow/RunStatusWatcher.test.ts +152 -0
  228. package/Tests/UI/Components/Workflow/Utils.test.ts +192 -0
  229. package/Tests/UI/Monitor/MonitorStepCriteriaView.test.tsx +432 -0
  230. package/Tests/UI/Rum/ReplayScrubber.test.tsx +1 -1
  231. package/Tests/UI/Rum/ReplayStage.test.tsx +1 -1
  232. package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +1 -1
  233. package/Tests/UI/Utils/LocalStorageArrayRoundTrip.test.ts +72 -0
  234. package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +19 -2
  235. package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +44 -0
  236. package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +288 -5
  237. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +42 -0
  238. package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +27 -0
  239. package/Tests/Utils/LegacySerializedArray.test.ts +139 -0
  240. package/Tests/Utils/Monitor/MonitorDependencyRule.test.ts +190 -0
  241. package/Tests/Utils/Monitor/NetworkDeviceRoleUtil.test.ts +514 -0
  242. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +240 -0
  243. package/Tests/Utils/Realtime.test.ts +78 -0
  244. package/Tests/Utils/Schema/AnalyticsModelSchema.test.ts +469 -0
  245. package/Tests/Utils/Schema/ModelSchema.test.ts +268 -0
  246. package/Tests/Utils/Telemetry/EntityKeyNonTelemetry.test.ts +193 -0
  247. package/Tests/Utils/Telemetry/SavedViewFilters.test.ts +246 -0
  248. package/Tests/__mocks__/i18next-browser-languagedetector.js +21 -0
  249. package/Types/AI/FixPullRequestCiStatus.ts +1 -1
  250. package/Types/AI/FixVerificationStatus.ts +2 -2
  251. package/Types/API/Hostname.ts +92 -4
  252. package/Types/API/URL.ts +43 -25
  253. package/Types/Billing/BalanceAdjustmentType.ts +14 -0
  254. package/Types/Billing/ProjectBalanceType.ts +13 -0
  255. package/Types/Domain.ts +26 -0
  256. package/Types/File/MimeType.ts +11 -0
  257. package/Types/JSONFunctions.ts +15 -0
  258. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +31 -0
  259. package/Types/SerializableObjectDictionary.ts +133 -39
  260. package/Types/Telemetry/EntitySource.ts +40 -0
  261. package/Types/Telemetry/EntityType.ts +27 -0
  262. package/Types/Telemetry/EntityTypeGroups.ts +65 -0
  263. package/Types/Telemetry/TelemetrySavedViewState.ts +9 -1
  264. package/Types/Workflow/Component.ts +29 -0
  265. package/Types/Workflow/Components/API.ts +35 -0
  266. package/Types/Workflow/Components/BaseModel.ts +96 -28
  267. package/Types/Workflow/StepTrace.ts +181 -0
  268. package/Types/Workflow/TemplateSyntax.ts +499 -0
  269. package/Types/Workflow/Templates.ts +316 -0
  270. package/Typings/Index.d.ts +12 -0
  271. package/UI/Components/Date/CustomTimeRangeModal.tsx +278 -0
  272. package/UI/Components/Date/TimeRangePickerDropdown.tsx +250 -0
  273. package/UI/Components/Dictionary/Dictionary.tsx +23 -6
  274. package/UI/Components/Forms/Fields/ColorPicker.tsx +66 -10
  275. package/UI/Components/Forms/Fields/IconPicker.tsx +48 -10
  276. package/UI/Components/Forms/Types/Field.ts +7 -0
  277. package/UI/Components/Forms/Validation.ts +63 -1
  278. package/UI/Components/GanttChart/ChartContainer.tsx +4 -3
  279. package/UI/Components/Input/Input.tsx +31 -3
  280. package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +11 -216
  281. package/UI/Components/Modal/ConfirmModal.tsx +10 -5
  282. package/UI/Components/Modal/Modal.tsx +64 -51
  283. package/UI/Components/ModelDelete/ModelDelete.tsx +23 -6
  284. package/UI/Components/SideOver/SideOver.tsx +195 -68
  285. package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +11 -210
  286. package/UI/Components/Workflow/ArgumentsForm.tsx +194 -7
  287. package/UI/Components/Workflow/Component.tsx +28 -26
  288. package/UI/Components/Workflow/ComponentSettingsModal.tsx +69 -8
  289. package/UI/Components/Workflow/GraphLint.ts +591 -0
  290. package/UI/Components/Workflow/ModelColumnEditor.tsx +396 -0
  291. package/UI/Components/Workflow/ModelSchema.ts +196 -0
  292. package/UI/Components/Workflow/RunForm.tsx +41 -7
  293. package/UI/Components/Workflow/RunStatusWatcher.ts +122 -0
  294. package/UI/Components/Workflow/StepTraceViewer.tsx +186 -0
  295. package/UI/Components/Workflow/Utils.ts +93 -1
  296. package/UI/Components/Workflow/Workflow.tsx +77 -4
  297. package/UI/Types/LayeredDismissal.ts +31 -0
  298. package/UI/Types/UseAnchoredFieldPopup.ts +99 -0
  299. package/UI/Utils/PageScrollLock.ts +66 -0
  300. package/Utils/Dashboard/HtmlWidgetDocument.ts +4 -2
  301. package/Utils/Dashboard/VariableInterpolation.ts +19 -1
  302. package/Utils/LegacySerializedArray.ts +60 -0
  303. package/Utils/Monitor/MonitorDependencyRule.ts +88 -0
  304. package/Utils/Monitor/NetworkDeviceRoleUtil.ts +533 -0
  305. package/Utils/Monitor/NetworkTopologyUtil.ts +45 -7
  306. package/Utils/Telemetry/EntityKey.ts +66 -0
  307. package/Utils/Telemetry/SavedViewFilters.ts +88 -0
  308. package/build/dist/Models/DatabaseModels/AIInsight.js +1 -1
  309. package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -1
  310. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js +2 -3
  311. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js.map +1 -1
  312. package/build/dist/Models/DatabaseModels/DeletedProject.js +640 -0
  313. package/build/dist/Models/DatabaseModels/DeletedProject.js.map +1 -0
  314. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  315. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  316. package/build/dist/Models/DatabaseModels/Monitor.js +106 -0
  317. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  318. package/build/dist/Models/DatabaseModels/Project.js +3 -3
  319. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  320. package/build/dist/Models/DatabaseModels/TelemetryEntity.js +47 -0
  321. package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +1 -1
  322. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +27 -0
  323. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -1
  324. package/build/dist/Models/DatabaseModels/WorkflowLog.js +39 -0
  325. package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
  326. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  327. package/build/dist/Server/API/FileAPI.js +14 -2
  328. package/build/dist/Server/API/FileAPI.js.map +1 -1
  329. package/build/dist/Server/API/MicrosoftTeamsAPI.js +6 -1
  330. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  331. package/build/dist/Server/API/ProjectAPI.js +157 -4
  332. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  333. package/build/dist/Server/API/StatusPageAPI.js +27 -3
  334. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  335. package/build/dist/Server/API/UserAPI.js +16 -1
  336. package/build/dist/Server/API/UserAPI.js.map +1 -1
  337. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js +34 -0
  338. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js.map +1 -0
  339. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js +30 -0
  340. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js.map +1 -0
  341. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js +20 -0
  342. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js.map +1 -0
  343. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.js +20 -0
  344. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.js.map +1 -0
  345. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.js +12 -0
  346. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.js.map +1 -0
  347. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  348. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  349. package/build/dist/Server/Middleware/MasterAdminAuthorization.js +11 -6
  350. package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
  351. package/build/dist/Server/Services/AIAgentService.js +17 -0
  352. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  353. package/build/dist/Server/Services/DashboardDomainService.js +55 -18
  354. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  355. package/build/dist/Server/Services/DatabaseService.js +1 -0
  356. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  357. package/build/dist/Server/Services/DeletedProjectService.js +124 -0
  358. package/build/dist/Server/Services/DeletedProjectService.js.map +1 -0
  359. package/build/dist/Server/Services/FileService.js +52 -0
  360. package/build/dist/Server/Services/FileService.js.map +1 -1
  361. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +10 -1
  362. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
  363. package/build/dist/Server/Services/IncidentPublicNoteService.js +10 -1
  364. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  365. package/build/dist/Server/Services/Index.js +2 -0
  366. package/build/dist/Server/Services/Index.js.map +1 -1
  367. package/build/dist/Server/Services/MonitorService.js +232 -0
  368. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  369. package/build/dist/Server/Services/ProbeService.js +17 -0
  370. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  371. package/build/dist/Server/Services/ProjectService.js +228 -6
  372. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  373. package/build/dist/Server/Services/PushNotificationService.js +56 -0
  374. package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
  375. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +10 -1
  376. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  377. package/build/dist/Server/Services/StatusPageAnnouncementService.js +54 -0
  378. package/build/dist/Server/Services/StatusPageAnnouncementService.js.map +1 -1
  379. package/build/dist/Server/Services/StatusPageDomainService.js +55 -18
  380. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  381. package/build/dist/Server/Services/TeamMemberService.js +97 -6
  382. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  383. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +3 -0
  384. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
  385. package/build/dist/Server/Services/TelemetryEntityService.js +91 -1
  386. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
  387. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +1 -0
  388. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  389. package/build/dist/Server/Services/UserWebhookService.js +31 -87
  390. package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
  391. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +65 -0
  392. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  393. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +23 -0
  394. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -1
  395. package/build/dist/Server/Types/Domain.js +37 -0
  396. package/build/dist/Server/Types/Domain.js.map +1 -1
  397. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +2 -1
  398. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  399. package/build/dist/Server/Types/Workflow/Components/API/Get.js +2 -1
  400. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  401. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +2 -1
  402. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  403. package/build/dist/Server/Types/Workflow/Components/API/Post.js +2 -1
  404. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  405. package/build/dist/Server/Types/Workflow/Components/API/Put.js +2 -1
  406. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  407. package/build/dist/Server/Types/Workflow/Components/API/Utils.js +63 -2
  408. package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
  409. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +15 -11
  410. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
  411. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +2 -3
  412. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
  413. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js +21 -10
  414. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js.map +1 -1
  415. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js +21 -10
  416. package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js.map +1 -1
  417. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js +18 -13
  418. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js.map +1 -1
  419. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js +18 -13
  420. package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js.map +1 -1
  421. package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js +43 -0
  422. package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js.map +1 -0
  423. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +116 -0
  424. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -0
  425. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +7 -0
  426. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
  427. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js +24 -13
  428. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js.map +1 -1
  429. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js +27 -13
  430. package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js.map +1 -1
  431. package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js +14 -6
  432. package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js.map +1 -1
  433. package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js +42 -0
  434. package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js.map +1 -0
  435. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +15 -6
  436. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
  437. package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js +10 -2
  438. package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js.map +1 -1
  439. package/build/dist/Server/Types/Workflow/TriggerCode.js.map +1 -1
  440. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
  441. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +141 -0
  442. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -1
  443. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
  444. package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js +1 -1
  445. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +6 -6
  446. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -1
  447. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +39 -5
  448. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  449. package/build/dist/Server/Utils/DataSource/EgressGuard.js +94 -10
  450. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  451. package/build/dist/Server/Utils/DataSource/HttpFetch.js +1 -19
  452. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
  453. package/build/dist/Server/Utils/Execute.js +2 -2
  454. package/build/dist/Server/Utils/Execute.js.map +1 -1
  455. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js +13 -0
  456. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js.map +1 -1
  457. package/build/dist/Server/Utils/LLM/LLMService.js +43 -12
  458. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  459. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +44 -24
  460. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  461. package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js +158 -0
  462. package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js.map +1 -0
  463. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +50 -30
  464. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  465. package/build/dist/Server/Utils/Monitor/MonitorResource.js +32 -0
  466. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  467. package/build/dist/Server/Utils/Response.js +112 -5
  468. package/build/dist/Server/Utils/Response.js.map +1 -1
  469. package/build/dist/Server/Utils/SSRFProtection.js +219 -53
  470. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  471. package/build/dist/Server/Utils/StartServer.js +7 -0
  472. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  473. package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js +507 -0
  474. package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -0
  475. package/build/dist/Server/Utils/VM/VMAPI.js +51 -4
  476. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  477. package/build/dist/Server/Utils/VM/VMRunner.js +73 -1
  478. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  479. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +445 -43
  480. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  481. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +18 -1
  482. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  483. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
  484. package/build/dist/Types/AI/FixPullRequestCiStatus.js +1 -1
  485. package/build/dist/Types/AI/FixVerificationStatus.js +2 -2
  486. package/build/dist/Types/API/Hostname.js +73 -4
  487. package/build/dist/Types/API/Hostname.js.map +1 -1
  488. package/build/dist/Types/API/URL.js +42 -24
  489. package/build/dist/Types/API/URL.js.map +1 -1
  490. package/build/dist/Types/Billing/BalanceAdjustmentType.js +15 -0
  491. package/build/dist/Types/Billing/BalanceAdjustmentType.js.map +1 -0
  492. package/build/dist/Types/Billing/ProjectBalanceType.js +14 -0
  493. package/build/dist/Types/Billing/ProjectBalanceType.js.map +1 -0
  494. package/build/dist/Types/Domain.js +22 -0
  495. package/build/dist/Types/Domain.js.map +1 -1
  496. package/build/dist/Types/File/MimeType.js +11 -0
  497. package/build/dist/Types/File/MimeType.js.map +1 -1
  498. package/build/dist/Types/JSONFunctions.js +14 -0
  499. package/build/dist/Types/JSONFunctions.js.map +1 -1
  500. package/build/dist/Types/SerializableObjectDictionary.js +133 -39
  501. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  502. package/build/dist/Types/Telemetry/EntitySource.js +39 -0
  503. package/build/dist/Types/Telemetry/EntitySource.js.map +1 -0
  504. package/build/dist/Types/Telemetry/EntityType.js +27 -0
  505. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  506. package/build/dist/Types/Telemetry/EntityTypeGroups.js +57 -0
  507. package/build/dist/Types/Telemetry/EntityTypeGroups.js.map +1 -0
  508. package/build/dist/Types/Workflow/Component.js +21 -0
  509. package/build/dist/Types/Workflow/Component.js.map +1 -1
  510. package/build/dist/Types/Workflow/Components/API.js +35 -0
  511. package/build/dist/Types/Workflow/Components/API.js.map +1 -1
  512. package/build/dist/Types/Workflow/Components/BaseModel.js +87 -28
  513. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  514. package/build/dist/Types/Workflow/StepTrace.js +104 -0
  515. package/build/dist/Types/Workflow/StepTrace.js.map +1 -0
  516. package/build/dist/Types/Workflow/TemplateSyntax.js +326 -0
  517. package/build/dist/Types/Workflow/TemplateSyntax.js.map +1 -0
  518. package/build/dist/Types/Workflow/Templates.js +218 -0
  519. package/build/dist/Types/Workflow/Templates.js.map +1 -0
  520. package/build/dist/UI/Components/Date/CustomTimeRangeModal.js +126 -0
  521. package/build/dist/UI/Components/Date/CustomTimeRangeModal.js.map +1 -0
  522. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +123 -0
  523. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -0
  524. package/build/dist/UI/Components/Dictionary/Dictionary.js +22 -6
  525. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  526. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +52 -13
  527. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  528. package/build/dist/UI/Components/Forms/Fields/IconPicker.js +28 -12
  529. package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
  530. package/build/dist/UI/Components/Forms/Validation.js +44 -0
  531. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  532. package/build/dist/UI/Components/GanttChart/ChartContainer.js +4 -3
  533. package/build/dist/UI/Components/GanttChart/ChartContainer.js.map +1 -1
  534. package/build/dist/UI/Components/Input/Input.js +12 -4
  535. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  536. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +5 -108
  537. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -1
  538. package/build/dist/UI/Components/Modal/ConfirmModal.js +3 -1
  539. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  540. package/build/dist/UI/Components/Modal/Modal.js +55 -39
  541. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  542. package/build/dist/UI/Components/ModelDelete/ModelDelete.js +11 -6
  543. package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
  544. package/build/dist/UI/Components/SideOver/SideOver.js +105 -30
  545. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  546. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +5 -105
  547. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
  548. package/build/dist/UI/Components/Workflow/ArgumentsForm.js +140 -11
  549. package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
  550. package/build/dist/UI/Components/Workflow/Component.js +20 -19
  551. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  552. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +31 -3
  553. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
  554. package/build/dist/UI/Components/Workflow/GraphLint.js +396 -0
  555. package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -0
  556. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +225 -0
  557. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -0
  558. package/build/dist/UI/Components/Workflow/ModelSchema.js +118 -0
  559. package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -0
  560. package/build/dist/UI/Components/Workflow/RunForm.js +22 -6
  561. package/build/dist/UI/Components/Workflow/RunForm.js.map +1 -1
  562. package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +76 -0
  563. package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -0
  564. package/build/dist/UI/Components/Workflow/StepTraceViewer.js +76 -0
  565. package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -0
  566. package/build/dist/UI/Components/Workflow/Utils.js +73 -1
  567. package/build/dist/UI/Components/Workflow/Utils.js.map +1 -1
  568. package/build/dist/UI/Components/Workflow/Workflow.js +51 -6
  569. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  570. package/build/dist/UI/Types/LayeredDismissal.js +21 -0
  571. package/build/dist/UI/Types/LayeredDismissal.js.map +1 -0
  572. package/build/dist/UI/Types/UseAnchoredFieldPopup.js +74 -1
  573. package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -1
  574. package/build/dist/UI/Utils/PageScrollLock.js +52 -0
  575. package/build/dist/UI/Utils/PageScrollLock.js.map +1 -0
  576. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +4 -2
  577. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -1
  578. package/build/dist/Utils/Dashboard/VariableInterpolation.js +19 -1
  579. package/build/dist/Utils/Dashboard/VariableInterpolation.js.map +1 -1
  580. package/build/dist/Utils/LegacySerializedArray.js +51 -0
  581. package/build/dist/Utils/LegacySerializedArray.js.map +1 -0
  582. package/build/dist/Utils/Monitor/MonitorDependencyRule.js +47 -0
  583. package/build/dist/Utils/Monitor/MonitorDependencyRule.js.map +1 -0
  584. package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +386 -0
  585. package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -0
  586. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +35 -6
  587. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  588. package/build/dist/Utils/Telemetry/EntityKey.js +52 -0
  589. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  590. package/build/dist/Utils/Telemetry/SavedViewFilters.js +52 -0
  591. package/build/dist/Utils/Telemetry/SavedViewFilters.js.map +1 -0
  592. package/jest.config.json +3 -0
  593. package/package.json +1 -1
  594. package/tsconfig.json +3 -1
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ /*
4
+ * The real detector is only installed in the frontend feature sets. Tests that
5
+ * render status page components import Utils/i18n, which registers this plugin,
6
+ * so a minimal stand-in that always resolves to English is enough.
7
+ */
8
+ class LanguageDetector {
9
+ init() {}
10
+
11
+ detect() {
12
+ return "en";
13
+ }
14
+
15
+ cacheUserLanguage() {}
16
+ }
17
+
18
+ LanguageDetector.type = "languageDetector";
19
+
20
+ module.exports = LanguageDetector;
21
+ module.exports.default = LanguageDetector;
@@ -3,7 +3,7 @@ import CodeFixTaskType from "./CodeFixTaskType";
3
3
  /*
4
4
  * The rolled-up CI conclusion recorded on an AI fix pull request
5
5
  * (AIAgentTaskPullRequest.ciStatus) — B4 Tier 1: verification via the
6
- * customer's OWN CI on the draft PRs. We read check-run conclusions through
6
+ * customer's OWN CI on the fix PRs. We read check-run conclusions through
7
7
  * the GitHub App; we never re-run or gate the customer's CI.
8
8
  *
9
9
  * G9 honesty rule: only Green and ExpectedFailureObserved ever count as
@@ -7,8 +7,8 @@
7
7
  * - Passed: every configured command (setup, build, test) exited 0 —
8
8
  * possibly after bounded agent repair attempts.
9
9
  * - Failed: a configured command still failed after the repair attempts
10
- * were exhausted. The PR still opens (as a draft, clearly labeled) so
11
- * the work is not lost — the human reviewer decides.
10
+ * were exhausted. The PR still opens, with the failure clearly labeled
11
+ * in its body, so the work is not lost — the human reviewer decides.
12
12
  * - Skipped: the repository has no verification commands configured, so
13
13
  * nothing could be verified.
14
14
  */
@@ -5,6 +5,27 @@ import Port from "../Port";
5
5
  import Typeof from "../Typeof";
6
6
  import { FindOperator } from "typeorm";
7
7
 
8
+ /*
9
+ * A chain of DNS labels (which also covers IPv4 literals). Labels are
10
+ * alphanumeric plus "-" and "_", may not start or end with "-", and are
11
+ * capped at 63 characters; a single trailing dot (the fully-qualified form)
12
+ * is allowed. "_" is permitted because internal and service-discovery names
13
+ * use it and it is not a URL delimiter.
14
+ */
15
+ const HOST_REGEX: RegExp =
16
+ /^[a-zA-Z0-9_](?:[a-zA-Z0-9_-]{0,61}[a-zA-Z0-9_])?(?:\.[a-zA-Z0-9_](?:[a-zA-Z0-9_-]{0,61}[a-zA-Z0-9_])?)*\.?$/;
17
+
18
+ /*
19
+ * Anything that is not a URL delimiter. The point is not to validate
20
+ * credentials, it is to make sure userinfo cannot smuggle a path, a query, a
21
+ * fragment or a second authority past the host check.
22
+ */
23
+ const USER_INFO_REGEX: RegExp = /^[^@/?#\s[\]]*$/;
24
+
25
+ const IPV6_CHARS_REGEX: RegExp = /^[0-9a-fA-F:.]+$/;
26
+
27
+ const PORT_REGEX: RegExp = /^\d{1,5}$/;
28
+
8
29
  export default class Hostname extends DatabaseProperty {
9
30
  private _route: string = "";
10
31
  public get hostname(): string {
@@ -31,13 +52,80 @@ export default class Hostname extends DatabaseProperty {
31
52
  }
32
53
  }
33
54
 
55
+ /*
56
+ * True when the value is a usable authority: an optional "userinfo@"
57
+ * prefix, a host (DNS name, IPv4, or IPv6 literal) and an optional ":port".
58
+ *
59
+ * The old check was a character allowlist that permitted "/", "?", "#" and
60
+ * "@" anywhere, which made "169.254.169.254/latest/meta-data/#" a valid
61
+ * Hostname. Anything that stores a Hostname and later interpolates it into
62
+ * a URL therefore inherited full control of the host, port and path of the
63
+ * resulting request. Structure, not a charset, is what rules that out.
64
+ *
65
+ * Userinfo is still accepted because "https://user:token@host/path" is a
66
+ * real thing customers put in webhook URLs, and those values are already in
67
+ * the database — rejecting them here would fail on read, not just on write.
68
+ * Callers that need the bare host must not split this string themselves;
69
+ * SSRFProtection.getBareHostname exists for that.
70
+ */
34
71
  public static isValid(value: string): boolean {
35
- const re: RegExp = /^[a-zA-Z-\d!#$&'*+,/:;=?@[\].]*$/;
36
- const isValid: boolean = re.test(value);
37
- if (!isValid) {
72
+ const authorityWithUserInfo: string = value.trim();
73
+
74
+ /*
75
+ * 253 for a DNS name, plus room for ":65535" and a userinfo prefix.
76
+ * A bound here also keeps the label regex from being handed something
77
+ * pathological.
78
+ */
79
+ if (!authorityWithUserInfo || authorityWithUserInfo.length > 512) {
80
+ return false;
81
+ }
82
+
83
+ /*
84
+ * Split on the LAST "@": userinfo may itself contain "@" percent-encoded
85
+ * or not, and everything after the final one is the authority.
86
+ */
87
+ const atIndex: number = authorityWithUserInfo.lastIndexOf("@");
88
+
89
+ if (atIndex !== -1) {
90
+ const userInfo: string = authorityWithUserInfo.substring(0, atIndex);
91
+ if (!USER_INFO_REGEX.test(userInfo)) {
92
+ return false;
93
+ }
94
+ }
95
+
96
+ const authority: string = authorityWithUserInfo.substring(atIndex + 1);
97
+
98
+ if (!authority) {
38
99
  return false;
39
100
  }
40
- return true;
101
+
102
+ // Bracketed IPv6, with or without a port: "[::1]", "[::1]:8080".
103
+ const bracketedIpv6Match: RegExpMatchArray | null = authority.match(
104
+ /^\[([0-9a-fA-F:.]+)\](?::(\d{1,5}))?$/,
105
+ );
106
+ if (bracketedIpv6Match) {
107
+ return true;
108
+ }
109
+
110
+ /*
111
+ * Unbracketed IPv6 literal. Two or more colons cannot be a "host:port",
112
+ * so the colons must be part of the address itself.
113
+ */
114
+ if ((authority.match(/:/g) || []).length > 1) {
115
+ return IPV6_CHARS_REGEX.test(authority);
116
+ }
117
+
118
+ const colonIndex: number = authority.indexOf(":");
119
+ const host: string =
120
+ colonIndex === -1 ? authority : authority.substring(0, colonIndex);
121
+ const port: string =
122
+ colonIndex === -1 ? "" : authority.substring(colonIndex + 1);
123
+
124
+ if (colonIndex !== -1 && !PORT_REGEX.test(port)) {
125
+ return false;
126
+ }
127
+
128
+ return HOST_REGEX.test(host);
41
129
  }
42
130
 
43
131
  public constructor(hostname: string, port?: Port | string | number) {
package/Types/API/URL.ts CHANGED
@@ -131,37 +131,55 @@ export default class URL extends DatabaseProperty {
131
131
  public static fromString(url: string): URL {
132
132
  let protocol: Protocol = Protocol.HTTPS;
133
133
 
134
- if (url.startsWith("https://")) {
135
- protocol = Protocol.HTTPS;
136
- url = url.replace("https://", "");
137
- }
138
-
139
- if (url.startsWith("http://")) {
140
- protocol = Protocol.HTTP;
141
- url = url.replace("http://", "");
142
- }
143
-
144
- if (url.startsWith("wss://")) {
145
- protocol = Protocol.WSS;
146
- url = url.replace("wss://", "");
134
+ /*
135
+ * Schemes are case-insensitive (RFC 3986), so match on a lower-cased
136
+ * copy and strip by length. Matching the literal prefix left "HTTPS://"
137
+ * in place, which then read as an authority of "HTTPS:".
138
+ *
139
+ * Longest-first: "https://" has to be tested before "http://", and only
140
+ * the first match is stripped.
141
+ */
142
+ const schemePrefixes: Array<[string, Protocol]> = [
143
+ ["https://", Protocol.HTTPS],
144
+ ["http://", Protocol.HTTP],
145
+ ["wss://", Protocol.WSS],
146
+ ["ws://", Protocol.WS],
147
+ ["mongodb://", Protocol.MONGO_DB],
148
+ ["mailto:", Protocol.MAIL],
149
+ ];
150
+
151
+ const lowerCasedUrl: string = url.toLowerCase();
152
+
153
+ for (const [prefix, prefixProtocol] of schemePrefixes) {
154
+ if (lowerCasedUrl.startsWith(prefix)) {
155
+ protocol = prefixProtocol;
156
+ url = url.substring(prefix.length);
157
+ break;
158
+ }
147
159
  }
148
160
 
149
- if (url.startsWith("ws://")) {
150
- protocol = Protocol.WS;
151
- url = url.replace("ws://", "");
152
- }
161
+ if (protocol === Protocol.MAIL) {
162
+ /*
163
+ * Hand the bare address to the constructor so it is recognised as an
164
+ * Email. Routing it through Hostname instead would ask a host validator
165
+ * to accept an email address — and "?subject=..." along with it.
166
+ */
167
+ const address: string = url.split("?")[0] || "";
168
+ const mailQueryString: string = url.split("?")[1] || "";
153
169
 
154
- if (url.startsWith("mongodb://")) {
155
- protocol = Protocol.MONGO_DB;
156
- url = url.replace("mongodb://", "");
170
+ return new URL(protocol, address, undefined, mailQueryString);
157
171
  }
158
172
 
159
- if (url.startsWith("mailto:")) {
160
- protocol = Protocol.MAIL;
161
- url = url.replace("mailto:", "");
162
- }
173
+ /*
174
+ * The authority ends at the first "/", "?" or "#". Splitting on "/" alone
175
+ * left the query and fragment glued to the host for URLs with no path
176
+ * ("https://host?token=x" parsed to a host of "host?token=x"), which both
177
+ * round-tripped wrong and handed anything that later interpolated the
178
+ * host a way to smuggle a path.
179
+ */
180
+ const authority: string = (url.split("/")[0] || "").split(/[?#]/)[0] || "";
163
181
 
164
- const hostname: Hostname = new Hostname(url.split("/")[0] || "");
182
+ const hostname: Hostname = new Hostname(authority);
165
183
 
166
184
  let route: Route | undefined;
167
185
 
@@ -0,0 +1,14 @@
1
+ /*
2
+ * How a manual balance adjustment is applied. Add and Deduct are relative and
3
+ * land as a single atomic SQL delta, so they cannot lose a usage charge that
4
+ * is being written at the same moment. Set is absolute - last writer wins -
5
+ * and is only there for the case where staff need the balance to read a
6
+ * specific number regardless of what it holds now.
7
+ */
8
+ enum BalanceAdjustmentType {
9
+ Add = "Add",
10
+ Deduct = "Deduct",
11
+ Set = "Set",
12
+ }
13
+
14
+ export default BalanceAdjustmentType;
@@ -0,0 +1,13 @@
1
+ /*
2
+ * The prepaid balances a project carries. Each one maps to its own column on
3
+ * the project and is drawn down by a different kind of usage, so they are
4
+ * topped up and corrected independently.
5
+ */
6
+ enum ProjectBalanceType {
7
+ // Drawn down by SMS, voice calls, WhatsApp messages and incoming numbers.
8
+ SmsOrCall = "SmsOrCall",
9
+ // Drawn down by LLM spend - AI agents, investigations and code fixes.
10
+ AI = "AI",
11
+ }
12
+
13
+ export default ProjectBalanceType;
package/Types/Domain.ts CHANGED
@@ -67,6 +67,32 @@ export default class Domain extends DatabaseProperty {
67
67
  return domainRegex.test(domain);
68
68
  }
69
69
 
70
+ /**
71
+ * Validates a subdomain: one or more DNS labels, no scheme, no port, no
72
+ * path, no userinfo.
73
+ *
74
+ * This is a security control, not a nicety. A subdomain is concatenated
75
+ * with a verified base domain to build fullDomain, and fullDomain is
76
+ * interpolated into a URL that the certificate-provisioning cron fetches
77
+ * unattended. URL parsing takes everything before the first "/" as the
78
+ * host, so a subdomain of "169.254.169.254/latest/meta-data/#" yields a URL
79
+ * whose host, port and path are all attacker-chosen. Restricting the value
80
+ * to DNS labels removes the ability to smuggle any of those.
81
+ *
82
+ * The empty string is NOT valid here: callers use "" (or "@") to mean the
83
+ * apex and must check for that before calling.
84
+ */
85
+ public static isValidSubdomain(subdomain: string): boolean {
86
+ if (!subdomain || subdomain.length > 253) {
87
+ return false;
88
+ }
89
+
90
+ const subdomainRegex: RegExp =
91
+ /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
92
+
93
+ return subdomainRegex.test(subdomain);
94
+ }
95
+
70
96
  public constructor(domain: string) {
71
97
  super();
72
98
  this.domain = domain;
@@ -8,6 +8,17 @@ enum MimeType {
8
8
  svg = "image/svg+xml",
9
9
  gif = "image/gif",
10
10
  webp = "image/webp",
11
+ /*
12
+ * Raster formats a browser or an API client can legitimately report but the
13
+ * file picker never names. Listed so those uploads are not rejected outright
14
+ * now that FileService validates fileType against this enum, and so rows
15
+ * written before the picker normalised types are still servable.
16
+ */
17
+ ico = "image/x-icon",
18
+ bmp = "image/bmp",
19
+ tiff = "image/tiff",
20
+ avif = "image/avif",
21
+ heic = "image/heic",
11
22
  pdf = "application/pdf",
12
23
  doc = "application/msword",
13
24
  docx = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
@@ -297,6 +297,21 @@ export default class JSONFunctions {
297
297
  Object.keys(ObjectType).includes((val as JSONObject)["_type"] as string)
298
298
  ) {
299
299
  return val;
300
+ } else if (Array.isArray(val)) {
301
+ /*
302
+ * This has to be checked before the plain-object branch below: arrays are
303
+ * typeof "object", so falling through to serialize() would walk them by
304
+ * key and hand back { "0": ..., "1": ... } instead of an array. That
305
+ * silently corrupts every nested array persisted into a JSON column —
306
+ * e.g. the [facetKey, value] filter tuples of a telemetry saved view.
307
+ */
308
+ const arr: Array<JSONValue> = [];
309
+
310
+ for (const v of val) {
311
+ arr.push(this.serializeValue(v));
312
+ }
313
+
314
+ return arr;
300
315
  } else if (typeof val === Typeof.Object) {
301
316
  return this.serialize(val as JSONObject);
302
317
  }
@@ -26,6 +26,31 @@ export type NetworkTopologyLinkProtocol = "lldp" | "cdp" | "fdb";
26
26
  */
27
27
  export type NetworkTopologyNodeKind = "device" | "unmanaged" | "endpoint";
28
28
 
29
+ /*
30
+ * What the node DOES on the network, as opposed to what we know about it
31
+ * (`kind`). Derived server-side from the identity SNMP and the discovery
32
+ * protocols already report — sysObjectId, sysDescr, model/platform, and
33
+ * finally the hostname — because a map on which a router, a switch and a
34
+ * camera are the same circle cannot be read at a glance.
35
+ *
36
+ * "unknown" is a real answer, not a failure: guessing a role from thin
37
+ * evidence is worse than drawing a neutral node, so the classifier only
38
+ * commits when the evidence names a product family or says the word.
39
+ */
40
+ export type NetworkTopologyDeviceRole =
41
+ | "router"
42
+ | "switch"
43
+ | "firewall"
44
+ | "wirelessAccessPoint"
45
+ | "loadBalancer"
46
+ | "server"
47
+ | "storage"
48
+ | "printer"
49
+ | "camera"
50
+ | "phone"
51
+ | "host"
52
+ | "unknown";
53
+
29
54
  export interface NetworkTopologyNode {
30
55
  // Device id for managed nodes; a synthetic "unmanaged:<key>" id otherwise.
31
56
  id: string;
@@ -34,6 +59,12 @@ export interface NetworkTopologyNode {
34
59
  status: NetworkTopologyNodeStatus;
35
60
  // Missing on older payloads — derive from isManaged.
36
61
  kind?: NetworkTopologyNodeKind | undefined;
62
+ /*
63
+ * What the node does on the network (router, switch, firewall, ...).
64
+ * Missing on older payloads, and "unknown" when the evidence did not
65
+ * name one — readers must treat both the same way.
66
+ */
67
+ role?: NetworkTopologyDeviceRole | undefined;
37
68
  interfacesUp?: number | undefined;
38
69
  interfacesDown?: number | undefined;
39
70
  // Extra device identity for search and the detail panel (managed nodes).
@@ -40,46 +40,140 @@ import Phone from "./Phone";
40
40
  import Port from "./Port";
41
41
  import Version from "./Version";
42
42
 
43
+ /*
44
+ * Every entry is a getter, not a direct reference.
45
+ *
46
+ * Three of these classes — Includes, IncludesAll and IncludesNone — import
47
+ * JSONFunctions so their fromJSON can deserialize the values inside them, and
48
+ * JSONFunctions imports this dictionary. That is a cycle, and with a plain
49
+ * object literal the entry a cycle passes through is captured as `undefined`:
50
+ * whichever of the two modules loads second sees the first only half
51
+ * initialized. Which of them loads first depends on the whole app's import
52
+ * graph, so `{"_type":"Includes","value":[...]}` deserialized into a real
53
+ * Includes in some entry points and stayed a plain object in others — and a
54
+ * plain object reaching TypeORM is a silently wrong query, not an error.
55
+ *
56
+ * A getter defers the lookup to the first property access, by which time every
57
+ * module has finished initializing.
58
+ */
43
59
  const SerializableObjectDictionary: Dictionary<any> = {
44
- [ObjectType.Phone]: Phone,
45
- [ObjectType.DateTime]: OneUptimeDate,
46
- [ObjectType.ObjectID]: ObjectID,
47
- [ObjectType.Name]: Name,
48
- [ObjectType.EqualTo]: EqualTo,
49
- [ObjectType.EqualToOrNull]: EqualToOrNull,
50
- [ObjectType.MonitorSteps]: MonitorSteps,
51
- [ObjectType.MonitorStep]: MonitorStep,
52
- [ObjectType.MonitorCriteria]: MonitorCriteria,
53
- [ObjectType.MonitorCriteriaInstance]: MonitorCriteriaInstance,
54
- [ObjectType.NotEqual]: NotEqual,
55
- [ObjectType.Email]: Email,
56
- [ObjectType.Color]: Color,
57
- [ObjectType.Domain]: Domain,
58
- [ObjectType.Version]: Version,
59
- [ObjectType.Route]: Route,
60
- [ObjectType.URL]: URL,
61
- [ObjectType.IP]: IP,
62
- [ObjectType.Search]: Search,
63
- [ObjectType.MultiSearch]: MultiSearch,
64
- [ObjectType.GreaterThan]: GreaterThan,
65
- [ObjectType.GreaterThanOrEqual]: GreaterThanOrEqual,
66
- [ObjectType.LessThan]: LessThan,
67
- [ObjectType.LessThanOrEqual]: LessThanOrEqual,
68
- [ObjectType.LessThanOrNull]: LessThanOrNull,
69
- [ObjectType.GreaterThanOrNull]: GreaterThanOrNull,
70
- [ObjectType.Port]: Port,
71
- [ObjectType.Hostname]: Hostname,
72
- [ObjectType.HashedString]: HashedString,
73
- [ObjectType.InBetween]: InBetween,
74
- [ObjectType.Includes]: Includes,
75
- [ObjectType.IncludesAll]: IncludesAll,
76
- [ObjectType.IncludesNone]: IncludesNone,
77
- [ObjectType.StartsWith]: StartsWith,
78
- [ObjectType.EndsWith]: EndsWith,
79
- [ObjectType.NotContains]: NotContains,
80
- [ObjectType.NotNull]: NotNull,
81
- [ObjectType.IsNull]: IsNull,
82
- [ObjectType.Recurring]: Recurring,
60
+ get [ObjectType.Phone](): any {
61
+ return Phone;
62
+ },
63
+ get [ObjectType.DateTime](): any {
64
+ return OneUptimeDate;
65
+ },
66
+ get [ObjectType.ObjectID](): any {
67
+ return ObjectID;
68
+ },
69
+ get [ObjectType.Name](): any {
70
+ return Name;
71
+ },
72
+ get [ObjectType.EqualTo](): any {
73
+ return EqualTo;
74
+ },
75
+ get [ObjectType.EqualToOrNull](): any {
76
+ return EqualToOrNull;
77
+ },
78
+ get [ObjectType.MonitorSteps](): any {
79
+ return MonitorSteps;
80
+ },
81
+ get [ObjectType.MonitorStep](): any {
82
+ return MonitorStep;
83
+ },
84
+ get [ObjectType.MonitorCriteria](): any {
85
+ return MonitorCriteria;
86
+ },
87
+ get [ObjectType.MonitorCriteriaInstance](): any {
88
+ return MonitorCriteriaInstance;
89
+ },
90
+ get [ObjectType.NotEqual](): any {
91
+ return NotEqual;
92
+ },
93
+ get [ObjectType.Email](): any {
94
+ return Email;
95
+ },
96
+ get [ObjectType.Color](): any {
97
+ return Color;
98
+ },
99
+ get [ObjectType.Domain](): any {
100
+ return Domain;
101
+ },
102
+ get [ObjectType.Version](): any {
103
+ return Version;
104
+ },
105
+ get [ObjectType.Route](): any {
106
+ return Route;
107
+ },
108
+ get [ObjectType.URL](): any {
109
+ return URL;
110
+ },
111
+ get [ObjectType.IP](): any {
112
+ return IP;
113
+ },
114
+ get [ObjectType.Search](): any {
115
+ return Search;
116
+ },
117
+ get [ObjectType.MultiSearch](): any {
118
+ return MultiSearch;
119
+ },
120
+ get [ObjectType.GreaterThan](): any {
121
+ return GreaterThan;
122
+ },
123
+ get [ObjectType.GreaterThanOrEqual](): any {
124
+ return GreaterThanOrEqual;
125
+ },
126
+ get [ObjectType.LessThan](): any {
127
+ return LessThan;
128
+ },
129
+ get [ObjectType.LessThanOrEqual](): any {
130
+ return LessThanOrEqual;
131
+ },
132
+ get [ObjectType.LessThanOrNull](): any {
133
+ return LessThanOrNull;
134
+ },
135
+ get [ObjectType.GreaterThanOrNull](): any {
136
+ return GreaterThanOrNull;
137
+ },
138
+ get [ObjectType.Port](): any {
139
+ return Port;
140
+ },
141
+ get [ObjectType.Hostname](): any {
142
+ return Hostname;
143
+ },
144
+ get [ObjectType.HashedString](): any {
145
+ return HashedString;
146
+ },
147
+ get [ObjectType.InBetween](): any {
148
+ return InBetween;
149
+ },
150
+ get [ObjectType.Includes](): any {
151
+ return Includes;
152
+ },
153
+ get [ObjectType.IncludesAll](): any {
154
+ return IncludesAll;
155
+ },
156
+ get [ObjectType.IncludesNone](): any {
157
+ return IncludesNone;
158
+ },
159
+ get [ObjectType.StartsWith](): any {
160
+ return StartsWith;
161
+ },
162
+ get [ObjectType.EndsWith](): any {
163
+ return EndsWith;
164
+ },
165
+ get [ObjectType.NotContains](): any {
166
+ return NotContains;
167
+ },
168
+ get [ObjectType.NotNull](): any {
169
+ return NotNull;
170
+ },
171
+ get [ObjectType.IsNull](): any {
172
+ return IsNull;
173
+ },
174
+ get [ObjectType.Recurring](): any {
175
+ return Recurring;
176
+ },
83
177
  };
84
178
 
85
179
  export default SerializableObjectDictionary;
@@ -0,0 +1,40 @@
1
+ /*
2
+ * How a `TelemetryEntity` registry row came to exist. The registry started
3
+ * as a forward-only catalog populated purely from OTLP resource attributes;
4
+ * two later sources join it, and the three differ in exactly one way that
5
+ * matters — who owns the row's lifecycle.
6
+ *
7
+ * That ownership is what `PruneStaleEntities` keys on. It reaps rows whose
8
+ * `lastSeenAt` has aged past their type's TTL, which is only a correct
9
+ * staleness signal when something is actively re-bumping `lastSeenAt`. Two
10
+ * of the three sources have nothing doing that, so the prune sweep is
11
+ * scoped to `Discovered` alone — see the guard there.
12
+ */
13
+ enum EntitySource {
14
+ /**
15
+ * Derived from telemetry resource attributes at ingest and re-bumped on
16
+ * every reconcile window for as long as the entity keeps emitting. Silence
17
+ * past the type's TTL genuinely means gone, so these are TTL-pruned.
18
+ */
19
+ Discovered = "discovered",
20
+
21
+ /**
22
+ * Mirrored from a OneUptime inventory table (NetworkDevice, CloudResource,
23
+ * IoTDevice, ...). These are collected by pollers rather than OTLP, so no
24
+ * ingest path bumps `lastSeenAt` — the owning row IS the liveness signal,
25
+ * and the mirror is kept in step by that table's create/delete hooks. TTL
26
+ * pruning one of these would delete the registry row for a device that is
27
+ * still very much registered.
28
+ */
29
+ Inventory = "inventory",
30
+
31
+ /**
32
+ * Created by a user for something that emits no telemetry at all — a
33
+ * third-party API, a vendor-managed database, an appliance. Nothing will
34
+ * ever bump `lastSeenAt`, so these are never TTL-pruned; they live until
35
+ * the user deletes them.
36
+ */
37
+ Manual = "manual",
38
+ }
39
+
40
+ export default EntitySource;
@@ -51,6 +51,33 @@ enum EntityType {
51
51
  DockerSwarmService = "docker.swarm.service",
52
52
  DockerSwarmTask = "docker.swarm.task",
53
53
  TelemetrySdk = "telemetry.sdk",
54
+ /*
55
+ * Inventory-mirrored types. Unlike everything above, these are never
56
+ * derived from an OTLP resource — the estate they describe is collected
57
+ * by pollers (SNMP, cloud APIs, MQTT) into rich typed tables, and the
58
+ * registry row is a mirror of that row so the entity explorer can show
59
+ * one estate instead of one telemetry pipeline. Their identity is the
60
+ * owning row's own project-unique key, and their lifecycle follows it
61
+ * (see InventoryEntityRegistry); they carry EntitySource.Inventory and
62
+ * are deliberately absent from the prune TTL map.
63
+ */
64
+ NetworkDevice = "network.device",
65
+ CloudResource = "cloud.resource",
66
+ ServerlessFunction = "serverless.function",
67
+ RumApplication = "rum.application",
68
+ IoTDevice = "iot.device",
69
+ DockerHost = "docker.host",
70
+ PodmanHost = "podman.host",
71
+ /*
72
+ * Manual (user-authored) types, for the parts of an estate that emit no
73
+ * telemetry and appear in no inventory table: a third-party payment API,
74
+ * a vendor-managed database, a physical appliance. They exist so a
75
+ * dependency edge can terminate somewhere real instead of dangling at
76
+ * the boundary of what OneUptime can see. Carry EntitySource.Manual.
77
+ */
78
+ ExternalService = "external.service",
79
+ ExternalDatabase = "external.database",
80
+ Appliance = "appliance",
54
81
  }
55
82
 
56
83
  export default EntityType;