@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.
- package/Models/DatabaseModels/AIInsight.ts +1 -1
- package/Models/DatabaseModels/DatabaseBaseModel/FileModel.ts +2 -3
- package/Models/DatabaseModels/DeletedProject.ts +595 -0
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/Monitor.ts +111 -0
- package/Models/DatabaseModels/Project.ts +3 -3
- package/Models/DatabaseModels/TelemetryEntity.ts +45 -0
- package/Models/DatabaseModels/TelemetryEntityRelationship.ts +26 -0
- package/Models/DatabaseModels/WorkflowLog.ts +38 -0
- package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -1
- package/Server/API/FileAPI.ts +15 -2
- package/Server/API/MicrosoftTeamsAPI.ts +6 -1
- package/Server/API/ProjectAPI.ts +214 -0
- package/Server/API/StatusPageAPI.ts +39 -6
- package/Server/API/UserAPI.ts +16 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.ts +50 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.ts +41 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Middleware/MasterAdminAuthorization.ts +11 -6
- package/Server/Services/AIAgentService.ts +20 -0
- package/Server/Services/DashboardDomainService.ts +73 -28
- package/Server/Services/DatabaseService.ts +1 -0
- package/Server/Services/DeletedProjectService.ts +138 -0
- package/Server/Services/FileService.ts +61 -0
- package/Server/Services/IncidentEpisodePublicNoteService.ts +18 -0
- package/Server/Services/IncidentPublicNoteService.ts +18 -0
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/MonitorService.ts +311 -0
- package/Server/Services/ProbeService.ts +20 -0
- package/Server/Services/ProjectService.ts +297 -1
- package/Server/Services/PushNotificationService.ts +71 -0
- package/Server/Services/ScheduledMaintenancePublicNoteService.ts +18 -0
- package/Server/Services/StatusPageAnnouncementService.ts +53 -0
- package/Server/Services/StatusPageDomainService.ts +73 -28
- package/Server/Services/TeamMemberService.ts +117 -12
- package/Server/Services/TelemetryEntityRelationshipService.ts +3 -0
- package/Server/Services/TelemetryEntityService.ts +114 -1
- package/Server/Services/TelemetryIngestionKeyService.ts +1 -0
- package/Server/Services/UserWebhookService.ts +34 -109
- package/Server/Services/WorkspaceNotificationRuleService.ts +69 -0
- package/Server/Services/WorkspaceProjectAuthTokenService.ts +37 -1
- package/Server/Types/Database/DeleteById.ts +2 -0
- package/Server/Types/Database/DeleteOneBy.ts +6 -0
- package/Server/Types/Domain.ts +41 -0
- package/Server/Types/Workflow/Components/API/Delete.ts +2 -1
- package/Server/Types/Workflow/Components/API/Get.ts +2 -1
- package/Server/Types/Workflow/Components/API/Patch.ts +2 -1
- package/Server/Types/Workflow/Components/API/Post.ts +2 -1
- package/Server/Types/Workflow/Components/API/Put.ts +2 -1
- package/Server/Types/Workflow/Components/API/Utils.ts +85 -3
- package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +25 -19
- package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +6 -5
- package/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.ts +32 -14
- package/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.ts +31 -13
- package/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.ts +29 -20
- package/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.ts +28 -21
- package/Server/Types/Workflow/Components/BaseModel/LogComponentError.ts +89 -0
- package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +208 -0
- package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +11 -0
- package/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.ts +41 -18
- package/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.ts +45 -19
- package/Server/Types/Workflow/Components/Discord/SendMessageToChannel.ts +16 -9
- package/Server/Types/Workflow/Components/IncomingWebhookUtils.ts +66 -0
- package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +15 -9
- package/Server/Types/Workflow/Components/Slack/SendMessageToChannel.ts +17 -0
- package/Server/Types/Workflow/TriggerCode.ts +12 -0
- package/Server/Types/Workflow/Workflow.ts +5 -0
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
- package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +171 -0
- package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +3 -3
- package/Server/Utils/AI/SRE/Insights/FixRouting.ts +3 -2
- package/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.ts +1 -1
- package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +6 -6
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +43 -5
- package/Server/Utils/DataSource/EgressGuard.ts +176 -16
- package/Server/Utils/DataSource/HttpFetch.ts +6 -45
- package/Server/Utils/Execute.ts +8 -0
- package/Server/Utils/InlineImageAccessTokenSync.ts +23 -0
- package/Server/Utils/LLM/LLMService.ts +57 -12
- package/Server/Utils/Monitor/MonitorAlert.ts +40 -0
- package/Server/Utils/Monitor/MonitorDependencySuppression.ts +192 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +40 -0
- package/Server/Utils/Monitor/MonitorResource.ts +36 -0
- package/Server/Utils/Response.ts +142 -6
- package/Server/Utils/SSRFProtection.ts +273 -60
- package/Server/Utils/StartServer.ts +8 -0
- package/Server/Utils/Telemetry/InventoryEntityRegistry.ts +689 -0
- package/Server/Utils/VM/VMAPI.ts +56 -8
- package/Server/Utils/VM/VMRunner.ts +88 -1
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +555 -49
- package/Server/Utils/Workspace/Slack/Slack.ts +25 -2
- package/Server/Utils/Workspace/WorkspaceBase.ts +6 -0
- package/Tests/App/Dashboard/DangerZone.test.tsx +334 -0
- package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +539 -0
- package/Tests/App/Dashboard/DashboardVariableSelector.test.tsx +678 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +706 -0
- package/Tests/App/Dashboard/DashboardVariablesModal.test.tsx +508 -0
- package/Tests/App/Dashboard/MonitorCriteriaAttributeFilter.test.tsx +574 -0
- package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +470 -0
- package/Tests/App/StatusPage/StatusPageDetailPagesNotFound.test.tsx +308 -0
- package/Tests/Models/DatabaseModels/DeletedProjectModel.test.ts +251 -0
- package/Tests/Models/DatabaseModels/SavedViewJSONColumnTuples.test.ts +115 -0
- package/Tests/Server/API/FileAPIAccessControl.test.ts +316 -0
- package/Tests/Server/API/ProjectAPI.test.ts +299 -1
- package/Tests/Server/API/ProjectAPIAdjustBalance.test.ts +459 -0
- package/Tests/Server/API/ProjectAPIAdjustBalanceBillingDisabled.test.ts +177 -0
- package/Tests/Server/API/UserProjectsAPI.test.ts +478 -4
- package/Tests/Server/Services/DatabaseServiceDeletionReason.test.ts +123 -0
- package/Tests/Server/Services/DeletedProjectService.test.ts +415 -0
- package/Tests/Server/Services/DeletedProjectServiceSelfHosted.test.ts +70 -0
- package/Tests/Server/Services/DomainSubdomainHooks.test.ts +94 -0
- package/Tests/Server/Services/FileIsPublicBooleanMigration.test.ts +244 -0
- package/Tests/Server/Services/FileServiceMimeType.test.ts +89 -0
- package/Tests/Server/Services/MonitorServiceDependencyValidation.test.ts +702 -0
- package/Tests/Server/Services/ProjectServiceAdjustBalance.test.ts +615 -0
- package/Tests/Server/Services/ProjectServiceDeleteAudit.test.ts +406 -0
- package/Tests/Server/Services/PublishTimeImageVisibility.test.ts +450 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +669 -0
- package/Tests/Server/Services/TelemetryEntityManualCreate.test.ts +248 -0
- package/Tests/Server/Services/UserWebhookSSRF.test.ts +174 -0
- package/Tests/Server/Services/WebPushEndpointAllowlist.test.ts +133 -0
- package/Tests/Server/Services/WorkspaceProjectAuthTokenRepoint.test.ts +618 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +26 -1
- package/Tests/Server/Types/Workflow/Components/ApiComponentHeaders.test.ts +192 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentSsrf.test.ts +215 -0
- package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +742 -0
- package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +256 -0
- package/Tests/Server/Types/Workflow/Components/ModelArguments.test.ts +371 -0
- package/Tests/Server/Utils/AI/CodeAgentCommandGuard.test.ts +204 -0
- package/Tests/Server/Utils/AI/CodeAgentWriteLimits.test.ts +213 -0
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +52 -5
- package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +3 -0
- package/Tests/Server/Utils/AI/LLMServiceEgressGuard.test.ts +315 -0
- package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +3 -0
- package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +17 -5
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +14 -1
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +35 -0
- package/Tests/Server/Utils/AI/StubLLMEgressGuard.ts +25 -0
- package/Tests/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.test.ts +152 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +62 -7
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +69 -0
- package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +330 -0
- package/Tests/Server/Utils/GitHubCreatePullRequestWithToken.test.ts +393 -0
- package/Tests/Server/Utils/InlineImageAccessTokenSync.test.ts +202 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppression.test.ts +811 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +604 -0
- package/Tests/Server/Utils/ResponseSendFileResponse.test.ts +192 -0
- package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +406 -0
- package/Tests/Server/Utils/Telemetry/InventoryEntityRegistry.test.ts +322 -0
- package/Tests/Server/Utils/VM/VMAPISubstitution.test.ts +243 -0
- package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +194 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +1169 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelsList.test.ts +2 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +1605 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsTenantResolution.test.ts +1218 -0
- package/Tests/Types/AI/AIChatMessageStatus.test.ts +79 -0
- package/Tests/Types/AI/AIInsightStatus.test.ts +40 -0
- package/Tests/Types/API/HostnameAuthorityParsing.test.ts +157 -0
- package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +27 -0
- package/Tests/Types/DataSource/DataSourceLimits.test.ts +71 -0
- package/Tests/Types/DataSource/DataSourceType.test.ts +181 -0
- package/Tests/Types/DomainSubdomainValidation.test.ts +90 -0
- package/Tests/Types/JSONFunctions.test.ts +252 -1
- package/Tests/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.test.ts +61 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.test.ts +62 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.test.ts +68 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpVersion.test.ts +51 -0
- package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +197 -0
- package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +140 -0
- package/Tests/Types/Workflow/StepTrace.test.ts +235 -0
- package/Tests/Types/Workflow/TemplateSyntax.test.ts +379 -0
- package/Tests/Types/Workflow/Templates.test.ts +403 -0
- package/Tests/UI/Components/404.test.tsx +1 -1
- package/Tests/UI/Components/Alert.test.tsx +1 -1
- package/Tests/UI/Components/Badge.test.tsx +1 -1
- package/Tests/UI/Components/BasicForm.test.tsx +39 -10
- package/Tests/UI/Components/Button.test.tsx +1 -1
- package/Tests/UI/Components/Card.test.tsx +1 -1
- package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +1 -1
- package/Tests/UI/Components/ColorViewer.test.tsx +1 -1
- package/Tests/UI/Components/ComponentsModal.test.tsx +7 -1
- package/Tests/UI/Components/CustomTimeRangeModal.test.tsx +459 -0
- package/Tests/UI/Components/DictionaryAttributeFilterRow.test.tsx +477 -0
- package/Tests/UI/Components/DictionaryOfStrings.test.tsx +1 -1
- package/Tests/UI/Components/Dropdown.test.tsx +1 -1
- package/Tests/UI/Components/FilePicker.test.tsx +1 -1
- package/Tests/UI/Components/Forms/AnchoredFieldPopupKeyboard.test.tsx +382 -0
- package/Tests/UI/Components/Forms/ColorPickerPicking.test.tsx +569 -0
- package/Tests/UI/Components/Forms/ValidationJSON.test.ts +241 -0
- package/Tests/UI/Components/HiddenText.test.tsx +1 -1
- package/Tests/UI/Components/Input.test.tsx +1 -1
- package/Tests/UI/Components/Loader.test.tsx +1 -1
- package/Tests/UI/Components/LogTimeRangePicker.test.tsx +43 -1
- package/Tests/UI/Components/MasterPage.test.tsx +1 -1
- package/Tests/UI/Components/ModalPortalDismissal.test.tsx +579 -0
- package/Tests/UI/Components/ModelDelete.test.tsx +214 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1 -1
- package/Tests/UI/Components/NavBar.test.tsx +1 -1
- package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +1 -1
- package/Tests/UI/Components/Pagination.test.tsx +1 -1
- package/Tests/UI/Components/Pill.test.tsx +1 -1
- package/Tests/UI/Components/Probe.test.tsx +1 -1
- package/Tests/UI/Components/ProgressBar.test.tsx +1 -1
- package/Tests/UI/Components/RadioButtons.test.tsx +1 -1
- package/Tests/UI/Components/SideMenuItem.test.tsx +1 -1
- package/Tests/UI/Components/SideOver.test.tsx +500 -6
- package/Tests/UI/Components/Tabs.test.tsx +1 -1
- package/Tests/UI/Components/TelemetrySearchBar.test.tsx +1 -1
- package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +50 -8
- package/Tests/UI/Components/TextArea.test.tsx +1 -1
- package/Tests/UI/Components/TimeRangePickerDropdown.test.tsx +325 -0
- package/Tests/UI/Components/Toast.test.tsx +1 -1
- package/Tests/UI/Components/Toggle.test.tsx +1 -1
- package/Tests/UI/Components/TopSection.test.tsx +1 -1
- package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +1 -1
- package/Tests/UI/Components/Workflow/GraphLint.test.ts +821 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditor.test.ts +287 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditorServerContract.test.ts +185 -0
- package/Tests/UI/Components/Workflow/ModelSchema.test.ts +174 -0
- package/Tests/UI/Components/Workflow/RunStatusWatcher.test.ts +152 -0
- package/Tests/UI/Components/Workflow/Utils.test.ts +192 -0
- package/Tests/UI/Monitor/MonitorStepCriteriaView.test.tsx +432 -0
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +1 -1
- package/Tests/UI/Rum/ReplayStage.test.tsx +1 -1
- package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +1 -1
- package/Tests/UI/Utils/LocalStorageArrayRoundTrip.test.ts +72 -0
- package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +19 -2
- package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +44 -0
- package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +288 -5
- package/Tests/Utils/Dashboard/VariableUrlState.test.ts +42 -0
- package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +27 -0
- package/Tests/Utils/LegacySerializedArray.test.ts +139 -0
- package/Tests/Utils/Monitor/MonitorDependencyRule.test.ts +190 -0
- package/Tests/Utils/Monitor/NetworkDeviceRoleUtil.test.ts +514 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +240 -0
- package/Tests/Utils/Realtime.test.ts +78 -0
- package/Tests/Utils/Schema/AnalyticsModelSchema.test.ts +469 -0
- package/Tests/Utils/Schema/ModelSchema.test.ts +268 -0
- package/Tests/Utils/Telemetry/EntityKeyNonTelemetry.test.ts +193 -0
- package/Tests/Utils/Telemetry/SavedViewFilters.test.ts +246 -0
- package/Tests/__mocks__/i18next-browser-languagedetector.js +21 -0
- package/Types/AI/FixPullRequestCiStatus.ts +1 -1
- package/Types/AI/FixVerificationStatus.ts +2 -2
- package/Types/API/Hostname.ts +92 -4
- package/Types/API/URL.ts +43 -25
- package/Types/Billing/BalanceAdjustmentType.ts +14 -0
- package/Types/Billing/ProjectBalanceType.ts +13 -0
- package/Types/Domain.ts +26 -0
- package/Types/File/MimeType.ts +11 -0
- package/Types/JSONFunctions.ts +15 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +31 -0
- package/Types/SerializableObjectDictionary.ts +133 -39
- package/Types/Telemetry/EntitySource.ts +40 -0
- package/Types/Telemetry/EntityType.ts +27 -0
- package/Types/Telemetry/EntityTypeGroups.ts +65 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +9 -1
- package/Types/Workflow/Component.ts +29 -0
- package/Types/Workflow/Components/API.ts +35 -0
- package/Types/Workflow/Components/BaseModel.ts +96 -28
- package/Types/Workflow/StepTrace.ts +181 -0
- package/Types/Workflow/TemplateSyntax.ts +499 -0
- package/Types/Workflow/Templates.ts +316 -0
- package/Typings/Index.d.ts +12 -0
- package/UI/Components/Date/CustomTimeRangeModal.tsx +278 -0
- package/UI/Components/Date/TimeRangePickerDropdown.tsx +250 -0
- package/UI/Components/Dictionary/Dictionary.tsx +23 -6
- package/UI/Components/Forms/Fields/ColorPicker.tsx +66 -10
- package/UI/Components/Forms/Fields/IconPicker.tsx +48 -10
- package/UI/Components/Forms/Types/Field.ts +7 -0
- package/UI/Components/Forms/Validation.ts +63 -1
- package/UI/Components/GanttChart/ChartContainer.tsx +4 -3
- package/UI/Components/Input/Input.tsx +31 -3
- package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +11 -216
- package/UI/Components/Modal/ConfirmModal.tsx +10 -5
- package/UI/Components/Modal/Modal.tsx +64 -51
- package/UI/Components/ModelDelete/ModelDelete.tsx +23 -6
- package/UI/Components/SideOver/SideOver.tsx +195 -68
- package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +11 -210
- package/UI/Components/Workflow/ArgumentsForm.tsx +194 -7
- package/UI/Components/Workflow/Component.tsx +28 -26
- package/UI/Components/Workflow/ComponentSettingsModal.tsx +69 -8
- package/UI/Components/Workflow/GraphLint.ts +591 -0
- package/UI/Components/Workflow/ModelColumnEditor.tsx +396 -0
- package/UI/Components/Workflow/ModelSchema.ts +196 -0
- package/UI/Components/Workflow/RunForm.tsx +41 -7
- package/UI/Components/Workflow/RunStatusWatcher.ts +122 -0
- package/UI/Components/Workflow/StepTraceViewer.tsx +186 -0
- package/UI/Components/Workflow/Utils.ts +93 -1
- package/UI/Components/Workflow/Workflow.tsx +77 -4
- package/UI/Types/LayeredDismissal.ts +31 -0
- package/UI/Types/UseAnchoredFieldPopup.ts +99 -0
- package/UI/Utils/PageScrollLock.ts +66 -0
- package/Utils/Dashboard/HtmlWidgetDocument.ts +4 -2
- package/Utils/Dashboard/VariableInterpolation.ts +19 -1
- package/Utils/LegacySerializedArray.ts +60 -0
- package/Utils/Monitor/MonitorDependencyRule.ts +88 -0
- package/Utils/Monitor/NetworkDeviceRoleUtil.ts +533 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +45 -7
- package/Utils/Telemetry/EntityKey.ts +66 -0
- package/Utils/Telemetry/SavedViewFilters.ts +88 -0
- package/build/dist/Models/DatabaseModels/AIInsight.js +1 -1
- package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js +2 -3
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DeletedProject.js +640 -0
- package/build/dist/Models/DatabaseModels/DeletedProject.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +106 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +3 -3
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js +47 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +27 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLog.js +39 -0
- package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
- package/build/dist/Server/API/FileAPI.js +14 -2
- package/build/dist/Server/API/FileAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +6 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/ProjectAPI.js +157 -4
- package/build/dist/Server/API/ProjectAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +27 -3
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +16 -1
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MasterAdminAuthorization.js +11 -6
- package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AIAgentService.js +17 -0
- package/build/dist/Server/Services/AIAgentService.js.map +1 -1
- package/build/dist/Server/Services/DashboardDomainService.js +55 -18
- package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +1 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DeletedProjectService.js +124 -0
- package/build/dist/Server/Services/DeletedProjectService.js.map +1 -0
- package/build/dist/Server/Services/FileService.js +52 -0
- package/build/dist/Server/Services/FileService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +10 -1
- package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js +10 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +2 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +232 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/ProbeService.js +17 -0
- package/build/dist/Server/Services/ProbeService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +228 -6
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/PushNotificationService.js +56 -0
- package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +10 -1
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageAnnouncementService.js +54 -0
- package/build/dist/Server/Services/StatusPageAnnouncementService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageDomainService.js +55 -18
- package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +97 -6
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +3 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryEntityService.js +91 -1
- package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js +1 -0
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +31 -87
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +65 -0
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +23 -0
- package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -1
- package/build/dist/Server/Types/Domain.js +37 -0
- package/build/dist/Server/Types/Domain.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js +63 -2
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +15 -11
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +2 -3
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js +21 -10
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js +21 -10
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js +18 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js +18 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js +43 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +116 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +7 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js +24 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js +27 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js +14 -6
- package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js +42 -0
- package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +15 -6
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js +10 -2
- package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/TriggerCode.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +141 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +6 -6
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +39 -5
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +94 -10
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +1 -19
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/Execute.js +2 -2
- package/build/dist/Server/Utils/Execute.js.map +1 -1
- package/build/dist/Server/Utils/InlineImageAccessTokenSync.js +13 -0
- package/build/dist/Server/Utils/InlineImageAccessTokenSync.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +43 -12
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +44 -24
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js +158 -0
- package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +50 -30
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +32 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Response.js +112 -5
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +219 -53
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +7 -0
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js +507 -0
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -0
- package/build/dist/Server/Utils/VM/VMAPI.js +51 -4
- package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +73 -1
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +445 -43
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +18 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
- package/build/dist/Types/AI/FixPullRequestCiStatus.js +1 -1
- package/build/dist/Types/AI/FixVerificationStatus.js +2 -2
- package/build/dist/Types/API/Hostname.js +73 -4
- package/build/dist/Types/API/Hostname.js.map +1 -1
- package/build/dist/Types/API/URL.js +42 -24
- package/build/dist/Types/API/URL.js.map +1 -1
- package/build/dist/Types/Billing/BalanceAdjustmentType.js +15 -0
- package/build/dist/Types/Billing/BalanceAdjustmentType.js.map +1 -0
- package/build/dist/Types/Billing/ProjectBalanceType.js +14 -0
- package/build/dist/Types/Billing/ProjectBalanceType.js.map +1 -0
- package/build/dist/Types/Domain.js +22 -0
- package/build/dist/Types/Domain.js.map +1 -1
- package/build/dist/Types/File/MimeType.js +11 -0
- package/build/dist/Types/File/MimeType.js.map +1 -1
- package/build/dist/Types/JSONFunctions.js +14 -0
- package/build/dist/Types/JSONFunctions.js.map +1 -1
- package/build/dist/Types/SerializableObjectDictionary.js +133 -39
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/Types/Telemetry/EntitySource.js +39 -0
- package/build/dist/Types/Telemetry/EntitySource.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +27 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityTypeGroups.js +57 -0
- package/build/dist/Types/Telemetry/EntityTypeGroups.js.map +1 -0
- package/build/dist/Types/Workflow/Component.js +21 -0
- package/build/dist/Types/Workflow/Component.js.map +1 -1
- package/build/dist/Types/Workflow/Components/API.js +35 -0
- package/build/dist/Types/Workflow/Components/API.js.map +1 -1
- package/build/dist/Types/Workflow/Components/BaseModel.js +87 -28
- package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
- package/build/dist/Types/Workflow/StepTrace.js +104 -0
- package/build/dist/Types/Workflow/StepTrace.js.map +1 -0
- package/build/dist/Types/Workflow/TemplateSyntax.js +326 -0
- package/build/dist/Types/Workflow/TemplateSyntax.js.map +1 -0
- package/build/dist/Types/Workflow/Templates.js +218 -0
- package/build/dist/Types/Workflow/Templates.js.map +1 -0
- package/build/dist/UI/Components/Date/CustomTimeRangeModal.js +126 -0
- package/build/dist/UI/Components/Date/CustomTimeRangeModal.js.map +1 -0
- package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +123 -0
- package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -0
- package/build/dist/UI/Components/Dictionary/Dictionary.js +22 -6
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +52 -13
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/IconPicker.js +28 -12
- package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Validation.js +44 -0
- package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/ChartContainer.js +4 -3
- package/build/dist/UI/Components/GanttChart/ChartContainer.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +12 -4
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +5 -108
- package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js +3 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +55 -39
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/ModelDelete/ModelDelete.js +11 -6
- package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +105 -30
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +5 -105
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js +140 -11
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Component.js +20 -19
- package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +31 -3
- package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/GraphLint.js +396 -0
- package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +225 -0
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ModelSchema.js +118 -0
- package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -0
- package/build/dist/UI/Components/Workflow/RunForm.js +22 -6
- package/build/dist/UI/Components/Workflow/RunForm.js.map +1 -1
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +76 -0
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -0
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +76 -0
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -0
- package/build/dist/UI/Components/Workflow/Utils.js +73 -1
- package/build/dist/UI/Components/Workflow/Utils.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Workflow.js +51 -6
- package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
- package/build/dist/UI/Types/LayeredDismissal.js +21 -0
- package/build/dist/UI/Types/LayeredDismissal.js.map +1 -0
- package/build/dist/UI/Types/UseAnchoredFieldPopup.js +74 -1
- package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -1
- package/build/dist/UI/Utils/PageScrollLock.js +52 -0
- package/build/dist/UI/Utils/PageScrollLock.js.map +1 -0
- package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +4 -2
- package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -1
- package/build/dist/Utils/Dashboard/VariableInterpolation.js +19 -1
- package/build/dist/Utils/Dashboard/VariableInterpolation.js.map +1 -1
- package/build/dist/Utils/LegacySerializedArray.js +51 -0
- package/build/dist/Utils/LegacySerializedArray.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorDependencyRule.js +47 -0
- package/build/dist/Utils/Monitor/MonitorDependencyRule.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +386 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +35 -6
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +52 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/Telemetry/SavedViewFilters.js +52 -0
- package/build/dist/Utils/Telemetry/SavedViewFilters.js.map +1 -0
- package/jest.config.json +3 -0
- package/package.json +1 -1
- 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
|
|
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
|
|
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
|
*/
|
package/Types/API/Hostname.ts
CHANGED
|
@@ -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
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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 (
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
155
|
-
protocol = Protocol.MONGO_DB;
|
|
156
|
-
url = url.replace("mongodb://", "");
|
|
170
|
+
return new URL(protocol, address, undefined, mailQueryString);
|
|
157
171
|
}
|
|
158
172
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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(
|
|
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;
|
package/Types/File/MimeType.ts
CHANGED
|
@@ -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",
|
package/Types/JSONFunctions.ts
CHANGED
|
@@ -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]:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
[ObjectType.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
[ObjectType.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
[ObjectType.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[ObjectType.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
[ObjectType.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
[ObjectType.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
[ObjectType.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
[ObjectType.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
[ObjectType.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
[ObjectType.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
[ObjectType.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
[ObjectType.
|
|
81
|
-
|
|
82
|
-
|
|
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;
|