@oneuptime/common 13.0.0 → 13.0.1
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/Alert.ts +55 -0
- package/Models/DatabaseModels/CloudResource.ts +45 -7
- package/Models/DatabaseModels/CodeRepository.ts +85 -0
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +57 -7
- package/Models/DatabaseModels/GoogleSecOpsConnectionRun.ts +263 -0
- package/Models/DatabaseModels/Incident.ts +55 -0
- package/Models/DatabaseModels/Index.ts +16 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
- package/Models/DatabaseModels/User.ts +51 -2
- package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +43 -2
- package/Models/DatabaseModels/UserWebAuthn.ts +17 -0
- package/Models/DatabaseModels/VMwareResource.ts +1149 -0
- package/Models/DatabaseModels/VMwareVCenter.ts +1122 -0
- package/Models/DatabaseModels/VMwareVCenterFeed.ts +625 -0
- package/Models/DatabaseModels/VMwareVCenterLabelRule.ts +514 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +485 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +484 -0
- package/Models/DatabaseModels/WorkflowVariable.ts +22 -1
- package/Server/API/AIAgentDataAPI.ts +79 -4
- package/Server/API/AIAgentGitHubAPI.ts +523 -0
- package/Server/API/AIChatAPI.ts +20 -1
- package/Server/API/BillingAPI.ts +33 -0
- package/Server/API/DashboardAPI.ts +10 -0
- package/Server/API/GitHubAPI.ts +47 -5
- package/Server/API/GoogleSecOpsConnectionAPI.ts +79 -0
- package/Server/API/UserWebAuthnAPI.ts +21 -1
- package/Server/API/VMwareResourceAPI.ts +143 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.ts +68 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.ts +26 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.ts +636 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.ts +83 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Middleware/IdentityRateLimit.ts +101 -0
- package/Server/Services/AIRunService.ts +13 -0
- package/Server/Services/BillingPaymentMethodService.ts +99 -28
- package/Server/Services/BillingService.ts +287 -20
- package/Server/Services/CloudResourceInstanceService.ts +70 -0
- package/Server/Services/ExceptionAggregationService.ts +1 -0
- package/Server/Services/GoogleSecOpsConnectionRunService.ts +10 -0
- package/Server/Services/GoogleSecOpsConnectionService.ts +12 -0
- package/Server/Services/Index.ts +16 -0
- package/Server/Services/LogAggregationService.ts +1 -0
- package/Server/Services/MetricAggregationService.ts +1 -0
- package/Server/Services/MobilePasskeyLoginService.ts +216 -0
- package/Server/Services/MonitorService.ts +51 -1
- package/Server/Services/MonitorTemplateService.ts +91 -29
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +132 -1
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +176 -2
- package/Server/Services/OpenTelemetryIngestService.ts +17 -0
- package/Server/Services/PayAsYouGoBillingService.ts +446 -0
- package/Server/Services/ProjectService.ts +46 -2
- package/Server/Services/ServerlessFunctionInstanceService.ts +71 -0
- package/Server/Services/TeamMemberService.ts +96 -36
- package/Server/Services/TelemetryIngestionKeyService.ts +80 -10
- package/Server/Services/TelemetryUsageBillingService.ts +95 -5
- package/Server/Services/TraceAggregationService.ts +5 -4
- package/Server/Services/UserWebAuthnService.ts +592 -133
- package/Server/Services/VMwareResourceService.ts +648 -0
- package/Server/Services/VMwareVCenterFeedService.ts +99 -0
- package/Server/Services/VMwareVCenterLabelRuleEngineService.ts +240 -0
- package/Server/Services/VMwareVCenterLabelRuleService.ts +14 -0
- package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +252 -0
- package/Server/Services/VMwareVCenterOwnerRuleService.ts +14 -0
- package/Server/Services/VMwareVCenterOwnerTeamService.ts +139 -0
- package/Server/Services/VMwareVCenterOwnerUserService.ts +133 -0
- package/Server/Services/VMwareVCenterService.ts +629 -0
- package/Server/Services/WorkflowVariableService.ts +203 -0
- package/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.ts +17 -0
- package/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.ts +31 -1
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +7 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.ts +341 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.ts +274 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.ts +375 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubConversation.ts +846 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.ts +360 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubRunReply.ts +421 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.ts +140 -0
- package/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.ts +906 -0
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +143 -0
- package/Server/Utils/DataSource/EgressGuard.ts +160 -15
- package/Server/Utils/Database/TruncateColumnValue.ts +1 -1
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +2 -0
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +33 -0
- package/Server/Utils/EmailRollup/EmailRollupWriter.ts +44 -0
- package/Server/Utils/LogRedaction.ts +2 -1
- package/Server/Utils/Monitor/MonitorAlert.ts +1 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +302 -3
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +26 -4
- package/Server/Utils/Monitor/MonitorResourceContext.ts +5 -3
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +14 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +28 -5
- package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +3 -3
- package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +14 -9
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +116 -84
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +594 -195
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.ts +466 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +5 -0
- package/Server/Utils/Telemetry/ResourceHeartbeat.ts +2 -1
- package/Server/Utils/Telemetry/TelemetryEntity.ts +181 -1
- package/Server/Utils/Telemetry/VMwareSnapshotScan.ts +1352 -0
- package/Tests/App/Accounts/LoginPasskey.test.tsx +529 -0
- package/Tests/App/Accounts/MobilePasskey.test.tsx +620 -0
- package/Tests/App/Accounts/PasswordRequirements.test.tsx +254 -0
- package/Tests/App/Accounts/RegisterPassword.test.tsx +553 -0
- package/Tests/App/Dashboard/AskAiAvailability.test.ts +224 -0
- package/Tests/App/Dashboard/AskAiDisabled.test.tsx +432 -0
- package/Tests/App/Dashboard/BackupCodes.test.tsx +414 -0
- package/Tests/App/Dashboard/BillingPaidUsageFlow.test.tsx +530 -0
- package/Tests/App/Dashboard/BillingPaymentMethodForm.test.tsx +195 -0
- package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +199 -0
- package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +198 -0
- package/Tests/App/Dashboard/CloudDocumentationMarkdown.test.ts +215 -0
- package/Tests/App/Dashboard/CloudFleetSummary.test.ts +183 -0
- package/Tests/App/Dashboard/CloudFleetSummaryComponent.test.tsx +248 -0
- package/Tests/App/Dashboard/CloudResourceTelemetryScope.test.ts +215 -0
- package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +3 -0
- package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +441 -0
- package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +458 -0
- package/Tests/App/Dashboard/DashboardToolbarPopupLayering.test.tsx +566 -0
- package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +376 -0
- package/Tests/App/Dashboard/DiscoveryScanLiveUpdates.test.tsx +642 -0
- package/Tests/App/Dashboard/DiscoveryScanProgress.test.tsx +267 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +69 -231
- package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +244 -0
- package/Tests/App/Dashboard/GoogleSecOpsDiagnostics.test.tsx +724 -0
- package/Tests/App/Dashboard/MonitorTemplateSyncFields.test.tsx +539 -0
- package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +24 -7
- package/Tests/App/Dashboard/OnCallOverridePresentation.test.ts +496 -0
- package/Tests/App/Dashboard/OnCallScheduleOverrideClarity.test.tsx +677 -0
- package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +31 -3
- package/Tests/App/Dashboard/PaidUsageConsent.test.tsx +180 -0
- package/Tests/App/Dashboard/PasskeySettings.test.tsx +1220 -0
- package/Tests/App/Dashboard/PayAsYouGoConsentGate.test.tsx +176 -275
- package/Tests/App/Dashboard/PayAsYouGoNotices.test.tsx +380 -233
- package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +3 -23
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +1 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
- package/Tests/App/Dashboard/TwoFactorStatus.test.tsx +260 -0
- package/Tests/App/Dashboard/VMwareDashboardWidgets.test.ts +573 -0
- package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
- package/Tests/App/Dashboard/WorkflowVariablesTable.test.tsx +768 -0
- package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +532 -40
- package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +19 -2
- package/Tests/Fixtures/MobilePasskeyUser.json +8 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +25 -6
- package/Tests/Models/DatabaseModels/VMwareModels.test.ts +1134 -0
- package/Tests/Models/RunnerVersionLabel.test.ts +4 -2
- package/Tests/Server/API/AIChatProvidersAIEnabled.test.ts +259 -0
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +31 -2
- package/Tests/Server/API/BillingPayAsYouGoStatus.test.ts +116 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +29 -1
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +13 -2
- package/Tests/Server/API/GitHubWebhookSignature.test.ts +368 -0
- package/Tests/Server/API/GoogleSecOpsConnectionAPI.test.ts +248 -0
- package/Tests/Server/API/UserWebAuthnAuthenticationOptionsRoute.test.ts +330 -0
- package/Tests/Server/API/UserWebAuthnPasskeyAPI.test.ts +172 -0
- package/Tests/Server/API/VMwareResourceAPI.test.ts +546 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupMetadataMigration.test.ts +85 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +34 -3
- package/Tests/Server/Middleware/PasskeyRateLimit.test.ts +141 -0
- package/Tests/Server/Services/AutoImportRuleRearmRecentScans.test.ts +343 -0
- package/Tests/Server/Services/AutoImportRuleWriteRearmsScans.test.ts +381 -0
- package/Tests/Server/Services/BillingPaymentMethodServiceSync.test.ts +175 -0
- package/Tests/Server/Services/BillingService.test.ts +26 -11
- package/Tests/Server/Services/BillingServiceMeteredPaymentAuthorization.test.ts +245 -0
- package/Tests/Server/Services/BillingServicePaymentMethodReads.test.ts +362 -0
- package/Tests/Server/Services/CloudResourceInstanceStalePrune.test.ts +188 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +16 -2
- package/Tests/Server/Services/GoogleSecOpsDiagnosticsModel.test.ts +153 -0
- package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +13 -0
- package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +5 -0
- package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +36 -0
- package/Tests/Server/Services/InventoryUpsertTruncationGuard.test.ts +151 -0
- package/Tests/Server/Services/MobilePasskeyLoginIntegration.test.ts +231 -0
- package/Tests/Server/Services/MobilePasskeyLoginService.test.ts +315 -0
- package/Tests/Server/Services/MonitorPayAsYouGoBilling.test.ts +302 -0
- package/Tests/Server/Services/MonitorTemplateServiceFieldSync.test.ts +994 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +22 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
- package/Tests/Server/Services/PayAsYouGoBillingService.test.ts +857 -0
- package/Tests/Server/Services/PayAsYouGoStripeRateLimitBudget.test.ts +379 -0
- package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +99 -1
- package/Tests/Server/Services/ProjectServiceSubscriptionSeats.test.ts +134 -0
- package/Tests/Server/Services/ResourceFeedServices.test.ts +3 -2
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +32 -6
- package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +363 -175
- package/Tests/Server/Services/ServerlessFunctionInstanceStalePrune.test.ts +200 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +3 -0
- package/Tests/Server/Services/TeamMemberBillingSeatSync.test.ts +762 -0
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +3 -0
- package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +72 -0
- package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +17 -4
- package/Tests/Server/Services/TelemetryPayAsYouGoBilling.test.ts +355 -0
- package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +41 -4
- package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +37 -0
- package/Tests/Server/Services/UserWebAuthnPasskeyIntegration.test.ts +401 -0
- package/Tests/Server/Services/UserWebAuthnPasskeyService.test.ts +769 -0
- package/Tests/Server/Services/UserWebAuthnUserVerification.test.ts +649 -0
- package/Tests/Server/Services/VMwareResourceService.test.ts +945 -0
- package/Tests/Server/Services/VMwareVCenterService.test.ts +722 -0
- package/Tests/Server/Services/WorkflowVariableRenameUniqueness.test.ts +842 -0
- package/Tests/Server/TestingUtils/PasskeyHttpIntegration.ts +102 -0
- package/Tests/Server/TestingUtils/SecurityKey.ts +464 -0
- package/Tests/Server/TestingUtils/WebAuthnServiceMocks.ts +60 -0
- package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +573 -0
- package/Tests/Server/Types/Database/Permissions/ProjectCustomerSupportAccessColumn.test.ts +261 -0
- package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +95 -0
- package/Tests/Server/Utils/CodeRepository/GitHubAgentTaskTrigger.test.ts +2101 -0
- package/Tests/Server/Utils/CodeRepository/GitHubCommandAuthorizer.test.ts +883 -0
- package/Tests/Server/Utils/CodeRepository/GitHubCommandParser.test.ts +1474 -0
- package/Tests/Server/Utils/CodeRepository/GitHubConversation.test.ts +1526 -0
- package/Tests/Server/Utils/CodeRepository/GitHubReplyComposer.test.ts +1389 -0
- package/Tests/Server/Utils/CodeRepository/GitHubRunReply.test.ts +1707 -0
- package/Tests/Server/Utils/CodeRepository/GitHubWebhookHandler.test.ts +2202 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +345 -0
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +896 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupMetadataIntegration.test.ts +246 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +299 -1
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +6 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +185 -0
- package/Tests/Server/Utils/LogRedaction.test.ts +33 -0
- package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +2 -1
- package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +10 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +66 -1
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +362 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +60 -1
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +60 -0
- package/Tests/Server/Utils/Monitor/MonitorRootCauseTargetResolution.test.ts +423 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +6 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +46 -2
- package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +81 -45
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.test.ts +711 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClickhouseIntegration.test.ts +223 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +69 -1
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsDiagnostics.test.ts +838 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +241 -28
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsHttpIntegration.test.ts +651 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +11 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +13 -12
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +112 -127
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +12 -18
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +43 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +580 -0
- package/Tests/Server/Utils/Telemetry/VMwareSnapshotScan.test.ts +1748 -0
- package/Tests/Types/Cloud/CloudPlatform.test.ts +574 -0
- package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +2 -0
- package/Tests/Types/Monitor/MonitorCriteriaMetricVariables.test.ts +9 -0
- package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorStepInfraMonitorUtils.test.ts +53 -8
- package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +97 -0
- package/Tests/Types/Monitor/MonitorStepMetricViewConfigUtil.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorStepTemplateSyncFields.test.ts +107 -0
- package/Tests/Types/Monitor/MonitorTemplateSyncField.test.ts +172 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +2 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +1 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +9 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
- package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +131 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +10 -0
- package/Tests/Types/Monitor/VMwareAlertTemplates.test.ts +1608 -0
- package/Tests/Types/Monitor/VMwareMetricCatalog.test.ts +488 -0
- package/Tests/Types/OnCallDutyPolicy/OverrideProvenance.test.ts +295 -0
- package/Tests/Types/Runner/RunnerLiveStatus.test.ts +2 -2
- package/Tests/Types/SignupPassword.test.ts +205 -0
- package/Tests/Types/StatusPage/StatusPageLanguage.test.ts +44 -0
- package/Tests/Types/SupportedLanguages.test.ts +119 -0
- package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +19 -0
- package/Tests/UI/ColorPickerBuild.test.ts +86 -0
- package/Tests/UI/Components/Breadcrumbs.test.tsx +32 -0
- package/Tests/UI/Components/Forms/ModelFormPreservesUserInput.test.tsx +937 -0
- package/Tests/UI/Components/Forms/ModelFormWriteOnlyColumnSelect.test.tsx +230 -0
- package/Tests/UI/Components/Forms/ValidationFormSteps.test.ts +3 -4
- package/Tests/UI/Components/LabelRuleImportExport.test.tsx +907 -0
- package/Tests/UI/Components/ModelTable/ModelTableCreateAfterEdit.test.tsx +514 -0
- package/Tests/UI/Components/MonitorGraphs/Uptime.test.tsx +301 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +2 -1
- package/Tests/UI/Components/TooltipLazyContent.test.tsx +373 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +43 -12
- package/Tests/UI/ReactDomBuild.test.ts +104 -0
- package/Tests/UI/ReactRouterSingletonBuild.test.ts +11 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +148 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +29 -0
- package/Tests/UI/Utils/DashboardStackingLayers.test.ts +197 -0
- package/Tests/UI/Utils/LabelRuleImportExport.test.ts +546 -0
- package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +109 -2
- package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +7 -2
- package/Tests/UI/Utils/UserEmailRegistrationStatus.test.tsx +295 -0
- package/Tests/UI/Utils/WebAuthn.test.ts +265 -0
- package/Tests/Utils/Dashboard/Components/DashboardComponentDefaults.test.ts +5 -0
- package/Tests/Utils/Dashboard/Components/DashboardVMwareListComponents.test.ts +548 -0
- package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +17 -3
- package/Tests/Utils/LabelRuleImportExport.test.ts +583 -0
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/MonitorTemplateSyncUtil.test.ts +590 -0
- package/Tests/Utils/RequestFailedDetails.test.ts +325 -0
- package/Tests/Utils/Telemetry/CloudInstanceIdentity.test.ts +255 -0
- package/Tests/Utils/Telemetry/EntityRelationship.test.ts +167 -0
- package/Tests/Utils/WebAuthnTestUtil.ts +79 -0
- package/Tests/__mocks__/simplewebauthn.js +33 -4
- package/Types/AI/CodeFixTaskContext.ts +122 -0
- package/Types/AI/CodeFixTaskType.ts +62 -0
- package/Types/Accounts/AccountsLanguage.ts +1 -0
- package/Types/AdminDashboard/AdminDashboardLanguage.ts +1 -0
- package/Types/Calendar/CalendarEvent.ts +16 -0
- package/Types/Cloud/CloudPlatform.ts +372 -0
- package/Types/CodeRepository/GitHubCommand.ts +69 -0
- package/Types/Dashboard/DashboardComponentType.ts +2 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.ts +23 -0
- package/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.ts +30 -0
- package/Types/Dashboard/DashboardLanguage.ts +1 -0
- package/Types/Dashboard/DashboardTemplates.ts +314 -0
- package/Types/Docs/DocsLanguage.ts +1 -0
- package/Types/Exception/EgressGuardException.ts +65 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +36 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +1 -0
- package/Types/Monitor/MonitorStep.ts +78 -17
- package/Types/Monitor/MonitorStepMetricViewConfigUtil.ts +1 -0
- package/Types/Monitor/MonitorStepVMwareMonitor.ts +127 -0
- package/Types/Monitor/MonitorTemplateSyncField.ts +291 -0
- package/Types/Monitor/MonitorType.ts +24 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +33 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +2 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +3 -0
- package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +158 -0
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +61 -0
- package/Types/Monitor/VMwareAlertTemplates.ts +1070 -0
- package/Types/Monitor/VMwareMetricCatalog.ts +914 -0
- package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +29 -0
- package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +16 -0
- package/Types/Password.ts +84 -5
- package/Types/Permission.ts +265 -0
- package/Types/Probe/RequestFailedDetails.ts +7 -0
- package/Types/Runner/RunnerLiveStatus.ts +1 -1
- package/Types/SecurityEvent/GoogleSecOpsDiagnostics.ts +56 -0
- package/Types/StatusPage/StatusPageLanguage.ts +1 -0
- package/Types/Telemetry/EntityType.ts +21 -0
- package/Types/Telemetry/ServiceType.ts +1 -0
- package/Typings/Index.d.ts +63 -0
- package/UI/Components/Breadcrumbs/Breadcrumbs.tsx +2 -2
- package/UI/Components/Calendar/Calendar.css +78 -0
- package/UI/Components/Calendar/Calendar.tsx +28 -3
- package/UI/Components/Forms/BasicForm.tsx +44 -2
- package/UI/Components/Forms/Fields/ColorPicker.tsx +2 -1
- package/UI/Components/Forms/Fields/FormField.tsx +16 -3
- package/UI/Components/Forms/ModelForm.tsx +159 -5
- package/UI/Components/Forms/Types/Field.ts +8 -1
- package/UI/Components/Graphs/DayUptimeGraph.tsx +8 -10
- package/UI/Components/Icon/Icon.tsx +16 -0
- package/UI/Components/Input/Input.tsx +42 -7
- package/UI/Components/LabelRule/ImportLabelRulesModal.tsx +441 -0
- package/UI/Components/LabelRule/LabelRuleTable.tsx +142 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +22 -5
- package/UI/Components/ModelTable/ModelTable.tsx +14 -6
- package/UI/Components/MonitorGraphs/Uptime.tsx +17 -27
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +3 -1
- package/UI/Components/Tooltip/Tooltip.tsx +52 -6
- package/UI/Utils/DashboardStackingLayers.ts +85 -0
- package/UI/Utils/LabelRuleImportExport.ts +310 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +4 -3
- package/UI/Utils/TelemetryService.ts +4 -3
- package/UI/Utils/UseDashboardGridDnd.ts +4 -1
- package/UI/Utils/UserEmailRegistrationStatus.ts +33 -5
- package/UI/Utils/WebAuthn.ts +220 -0
- package/UI/esbuild-config.js +4 -0
- package/Utils/API.ts +34 -0
- package/Utils/Dashboard/Components/DashboardVMwareHostListComponent.ts +38 -0
- package/Utils/Dashboard/Components/DashboardVMwareResourceListShared.ts +70 -0
- package/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.ts +76 -0
- package/Utils/Dashboard/Components/Index.ts +16 -0
- package/Utils/LabelRuleImportExport.ts +496 -0
- package/Utils/Monitor/MonitorTemplateSyncUtil.ts +164 -0
- package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +8 -0
- package/Utils/Telemetry/CloudInstanceIdentity.ts +94 -0
- package/Utils/Telemetry/EntityKey.ts +19 -0
- package/Utils/Telemetry/EntityRelationship.ts +19 -0
- package/build/dist/Models/DatabaseModels/Alert.js +54 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResource.js +44 -7
- package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CodeRepository.js +87 -0
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +60 -7
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js +287 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +54 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +16 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +57 -4
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +47 -2
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +18 -0
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareResource.js +1201 -0
- package/build/dist/Models/DatabaseModels/VMwareResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js +1149 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js +22 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +63 -3
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentGitHubAPI.js +363 -0
- package/build/dist/Server/API/AIAgentGitHubAPI.js.map +1 -0
- package/build/dist/Server/API/AIChatAPI.js +19 -1
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/BillingAPI.js +22 -0
- package/build/dist/Server/API/BillingAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +10 -0
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/GitHubAPI.js +33 -5
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js +56 -0
- package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js.map +1 -0
- package/build/dist/Server/API/UserWebAuthnAPI.js +17 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
- package/build/dist/Server/API/VMwareResourceAPI.js +106 -0
- package/build/dist/Server/API/VMwareResourceAPI.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js +41 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js +241 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js +80 -0
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +14 -1
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/BillingPaymentMethodService.js +71 -21
- package/build/dist/Server/Services/BillingPaymentMethodService.js.map +1 -1
- package/build/dist/Server/Services/BillingService.js +210 -22
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceInstanceService.js +66 -0
- package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js +9 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js.map +1 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionService.js +7 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +16 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +1 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +1 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MobilePasskeyLoginService.js +137 -0
- package/build/dist/Server/Services/MobilePasskeyLoginService.js.map +1 -0
- package/build/dist/Server/Services/MonitorService.js +34 -1
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +64 -26
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +124 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +142 -2
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +28 -13
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PayAsYouGoBillingService.js +297 -0
- package/build/dist/Server/Services/PayAsYouGoBillingService.js.map +1 -0
- package/build/dist/Server/Services/ProjectService.js +38 -2
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +66 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +85 -28
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js +61 -10
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +62 -5
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +5 -4
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Services/UserWebAuthnService.js +345 -113
- package/build/dist/Server/Services/UserWebAuthnService.js.map +1 -1
- package/build/dist/Server/Services/VMwareResourceService.js +395 -0
- package/build/dist/Server/Services/VMwareResourceService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterFeedService.js +89 -0
- package/build/dist/Server/Services/VMwareVCenterFeedService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +197 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +214 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js +129 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js +122 -0
- package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/VMwareVCenterService.js +533 -0
- package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -0
- package/build/dist/Server/Services/WorkflowVariableService.js +169 -0
- package/build/dist/Server/Services/WorkflowVariableService.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js +12 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js +25 -2
- package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js +275 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js +226 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js +297 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js +582 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js +275 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js +365 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js +103 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js +661 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +113 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +99 -15
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +2 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +18 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +31 -2
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -1
- package/build/dist/Server/Utils/LogRedaction.js +2 -1
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +219 -4
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +12 -4
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +5 -3
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +22 -9
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +21 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +21 -6
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +3 -3
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +9 -9
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +92 -71
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +428 -143
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js +376 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +136 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js +933 -0
- package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js.map +1 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js +40 -0
- package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
- package/build/dist/Types/AI/CodeFixTaskType.js +57 -0
- package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -1
- package/build/dist/Types/Accounts/AccountsLanguage.js +1 -0
- package/build/dist/Types/Accounts/AccountsLanguage.js.map +1 -1
- package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js +1 -0
- package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js.map +1 -1
- package/build/dist/Types/Cloud/CloudPlatform.js +277 -0
- package/build/dist/Types/Cloud/CloudPlatform.js.map +1 -0
- package/build/dist/Types/CodeRepository/GitHubCommand.js +52 -0
- package/build/dist/Types/CodeRepository/GitHubCommand.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardLanguage.js +1 -0
- package/build/dist/Types/Dashboard/DashboardLanguage.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +286 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Docs/DocsLanguage.js +1 -0
- package/build/dist/Types/Docs/DocsLanguage.js.map +1 -1
- package/build/dist/Types/Exception/EgressGuardException.js +59 -0
- package/build/dist/Types/Exception/EgressGuardException.js.map +1 -0
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +61 -18
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js +1 -0
- package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js +71 -0
- package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorTemplateSyncField.js +211 -0
- package/build/dist/Types/Monitor/MonitorTemplateSyncField.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +23 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +28 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +1 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +2 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +120 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +60 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
- package/build/dist/Types/Monitor/VMwareAlertTemplates.js +775 -0
- package/build/dist/Types/Monitor/VMwareAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/VMwareMetricCatalog.js +799 -0
- package/build/dist/Types/Monitor/VMwareMetricCatalog.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +25 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +5 -0
- package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
- package/build/dist/Types/Password.js +63 -5
- package/build/dist/Types/Password.js.map +1 -1
- package/build/dist/Types/Permission.js +234 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Probe/RequestFailedDetails.js +7 -0
- package/build/dist/Types/Probe/RequestFailedDetails.js.map +1 -1
- package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js +2 -0
- package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js.map +1 -0
- package/build/dist/Types/StatusPage/StatusPageLanguage.js +1 -0
- package/build/dist/Types/StatusPage/StatusPageLanguage.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +21 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js +2 -2
- package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/build/dist/UI/Components/Calendar/Calendar.js +24 -4
- package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +28 -3
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +1 -1
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +10 -3
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Forms/ModelForm.js +89 -6
- package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +5 -6
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +14 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +37 -8
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js +228 -0
- package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js.map +1 -0
- package/build/dist/UI/Components/LabelRule/LabelRuleTable.js +102 -0
- package/build/dist/UI/Components/LabelRule/LabelRuleTable.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +15 -2
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ModelTable.js +13 -5
- package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js +14 -15
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js +33 -4
- package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
- package/build/dist/UI/Utils/DashboardStackingLayers.js +44 -0
- package/build/dist/UI/Utils/DashboardStackingLayers.js.map +1 -0
- package/build/dist/UI/Utils/LabelRuleImportExport.js +195 -0
- package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -0
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +4 -4
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +3 -2
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardGridDnd.js +2 -1
- package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -1
- package/build/dist/UI/Utils/UserEmailRegistrationStatus.js +21 -4
- package/build/dist/UI/Utils/UserEmailRegistrationStatus.js.map +1 -1
- package/build/dist/UI/Utils/WebAuthn.js +121 -0
- package/build/dist/UI/Utils/WebAuthn.js.map +1 -0
- package/build/dist/Utils/API.js +29 -0
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js +33 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js +54 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js +60 -0
- package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/LabelRuleImportExport.js +356 -0
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js +110 -0
- package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +6 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -1
- package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js +88 -0
- package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +15 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityRelationship.js +13 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
- package/package.json +1 -1
|
@@ -44,6 +44,72 @@ describe("inferRelationshipType", () => {
|
|
|
44
44
|
).toBe(EntityRelationshipType.MemberOf);
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
+
test("infers the vmware topology (cluster/host/datastore → vcenter, host → cluster, vm → host/vcenter)", () => {
|
|
48
|
+
expect(
|
|
49
|
+
inferRelationshipType(EntityType.VMwareCluster, EntityType.VMwareVCenter),
|
|
50
|
+
).toBe(EntityRelationshipType.MemberOf);
|
|
51
|
+
expect(
|
|
52
|
+
inferRelationshipType(EntityType.VMwareHost, EntityType.VMwareVCenter),
|
|
53
|
+
).toBe(EntityRelationshipType.MemberOf);
|
|
54
|
+
expect(
|
|
55
|
+
inferRelationshipType(EntityType.VMwareHost, EntityType.VMwareCluster),
|
|
56
|
+
).toBe(EntityRelationshipType.MemberOf);
|
|
57
|
+
expect(
|
|
58
|
+
inferRelationshipType(
|
|
59
|
+
EntityType.VMwareVirtualMachine,
|
|
60
|
+
EntityType.VMwareHost,
|
|
61
|
+
),
|
|
62
|
+
).toBe(EntityRelationshipType.RunsOn);
|
|
63
|
+
expect(
|
|
64
|
+
inferRelationshipType(
|
|
65
|
+
EntityType.VMwareVirtualMachine,
|
|
66
|
+
EntityType.VMwareVCenter,
|
|
67
|
+
),
|
|
68
|
+
).toBe(EntityRelationshipType.MemberOf);
|
|
69
|
+
expect(
|
|
70
|
+
inferRelationshipType(
|
|
71
|
+
EntityType.VMwareDatastore,
|
|
72
|
+
EntityType.VMwareVCenter,
|
|
73
|
+
),
|
|
74
|
+
).toBe(EntityRelationshipType.MemberOf);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test("declares exactly six vmware rules (vm → cluster is reached through the host)", () => {
|
|
78
|
+
const vmwareTypes: Array<EntityType> = [
|
|
79
|
+
EntityType.VMwareVCenter,
|
|
80
|
+
EntityType.VMwareCluster,
|
|
81
|
+
EntityType.VMwareHost,
|
|
82
|
+
EntityType.VMwareVirtualMachine,
|
|
83
|
+
EntityType.VMwareDatastore,
|
|
84
|
+
];
|
|
85
|
+
let declared: number = 0;
|
|
86
|
+
for (const fromType of vmwareTypes) {
|
|
87
|
+
for (const toType of vmwareTypes) {
|
|
88
|
+
if (inferRelationshipType(fromType, toType)) {
|
|
89
|
+
declared++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
expect(declared).toBe(6);
|
|
94
|
+
// Deliberately not declared: a VM's cluster is its host's cluster.
|
|
95
|
+
expect(
|
|
96
|
+
inferRelationshipType(
|
|
97
|
+
EntityType.VMwareVirtualMachine,
|
|
98
|
+
EntityType.VMwareCluster,
|
|
99
|
+
),
|
|
100
|
+
).toBeNull();
|
|
101
|
+
// A datastore is mounted by hosts, not a member of one.
|
|
102
|
+
expect(
|
|
103
|
+
inferRelationshipType(EntityType.VMwareDatastore, EntityType.VMwareHost),
|
|
104
|
+
).toBeNull();
|
|
105
|
+
expect(
|
|
106
|
+
inferRelationshipType(
|
|
107
|
+
EntityType.VMwareVirtualMachine,
|
|
108
|
+
EntityType.VMwareDatastore,
|
|
109
|
+
),
|
|
110
|
+
).toBeNull();
|
|
111
|
+
});
|
|
112
|
+
|
|
47
113
|
test("is directional (the reverse pair yields nothing)", () => {
|
|
48
114
|
expect(
|
|
49
115
|
inferRelationshipType(
|
|
@@ -57,6 +123,24 @@ describe("inferRelationshipType", () => {
|
|
|
57
123
|
expect(
|
|
58
124
|
inferRelationshipType(EntityType.ProxmoxCluster, EntityType.ProxmoxNode),
|
|
59
125
|
).toBeNull();
|
|
126
|
+
expect(
|
|
127
|
+
inferRelationshipType(EntityType.VMwareVCenter, EntityType.VMwareCluster),
|
|
128
|
+
).toBeNull();
|
|
129
|
+
expect(
|
|
130
|
+
inferRelationshipType(EntityType.VMwareCluster, EntityType.VMwareHost),
|
|
131
|
+
).toBeNull();
|
|
132
|
+
expect(
|
|
133
|
+
inferRelationshipType(
|
|
134
|
+
EntityType.VMwareHost,
|
|
135
|
+
EntityType.VMwareVirtualMachine,
|
|
136
|
+
),
|
|
137
|
+
).toBeNull();
|
|
138
|
+
expect(
|
|
139
|
+
inferRelationshipType(
|
|
140
|
+
EntityType.VMwareVCenter,
|
|
141
|
+
EntityType.VMwareDatastore,
|
|
142
|
+
),
|
|
143
|
+
).toBeNull();
|
|
60
144
|
});
|
|
61
145
|
|
|
62
146
|
test("unrelated or self type pairs yield null", () => {
|
|
@@ -77,6 +161,27 @@ describe("inferRelationshipType", () => {
|
|
|
77
161
|
expect(
|
|
78
162
|
inferRelationshipType(EntityType.Host, EntityType.CephCluster),
|
|
79
163
|
).toBeNull();
|
|
164
|
+
/*
|
|
165
|
+
* Same for VMware: a collector running hostmetrics beside the vcenter
|
|
166
|
+
* receiver mints a `host` entity from host.name, and that host is the
|
|
167
|
+
* collector box, not an ESXi host — it is not a member of the vCenter,
|
|
168
|
+
* of any cluster, and is not the same thing as a vmware.host.
|
|
169
|
+
*/
|
|
170
|
+
expect(
|
|
171
|
+
inferRelationshipType(EntityType.Host, EntityType.VMwareVCenter),
|
|
172
|
+
).toBeNull();
|
|
173
|
+
expect(
|
|
174
|
+
inferRelationshipType(EntityType.Host, EntityType.VMwareCluster),
|
|
175
|
+
).toBeNull();
|
|
176
|
+
expect(
|
|
177
|
+
inferRelationshipType(EntityType.Host, EntityType.VMwareHost),
|
|
178
|
+
).toBeNull();
|
|
179
|
+
expect(
|
|
180
|
+
inferRelationshipType(EntityType.VMwareHost, EntityType.Host),
|
|
181
|
+
).toBeNull();
|
|
182
|
+
expect(
|
|
183
|
+
inferRelationshipType(EntityType.VMwareVirtualMachine, EntityType.Host),
|
|
184
|
+
).toBeNull();
|
|
80
185
|
});
|
|
81
186
|
|
|
82
187
|
test("depends-on is never inferred from co-occurrence (span-derived only)", () => {
|
|
@@ -176,6 +281,68 @@ describe("deriveRelationships", () => {
|
|
|
176
281
|
expect(edges.length).toBe(3);
|
|
177
282
|
});
|
|
178
283
|
|
|
284
|
+
test("derives the full directed edge set for a vmware VM resource", () => {
|
|
285
|
+
// What a clustered VM's resource resolves to: vcenter, cluster, host, vm.
|
|
286
|
+
const edges: Array<EntityRelationshipEdge> = deriveRelationships([
|
|
287
|
+
{ entityType: EntityType.VMwareVCenter, entityKey: "vcenter" },
|
|
288
|
+
{ entityType: EntityType.VMwareCluster, entityKey: "cluster" },
|
|
289
|
+
{ entityType: EntityType.VMwareHost, entityKey: "host" },
|
|
290
|
+
{ entityType: EntityType.VMwareVirtualMachine, entityKey: "vm" },
|
|
291
|
+
]);
|
|
292
|
+
|
|
293
|
+
expect(
|
|
294
|
+
hasEdge(edges, "cluster", "vcenter", EntityRelationshipType.MemberOf),
|
|
295
|
+
).toBe(true);
|
|
296
|
+
expect(
|
|
297
|
+
hasEdge(edges, "host", "vcenter", EntityRelationshipType.MemberOf),
|
|
298
|
+
).toBe(true);
|
|
299
|
+
expect(
|
|
300
|
+
hasEdge(edges, "host", "cluster", EntityRelationshipType.MemberOf),
|
|
301
|
+
).toBe(true);
|
|
302
|
+
expect(hasEdge(edges, "vm", "host", EntityRelationshipType.RunsOn)).toBe(
|
|
303
|
+
true,
|
|
304
|
+
);
|
|
305
|
+
expect(
|
|
306
|
+
hasEdge(edges, "vm", "vcenter", EntityRelationshipType.MemberOf),
|
|
307
|
+
).toBe(true);
|
|
308
|
+
// No reverse edge, no vm → cluster shortcut.
|
|
309
|
+
expect(
|
|
310
|
+
hasEdge(edges, "vcenter", "cluster", EntityRelationshipType.MemberOf),
|
|
311
|
+
).toBe(false);
|
|
312
|
+
expect(
|
|
313
|
+
hasEdge(edges, "vm", "cluster", EntityRelationshipType.MemberOf),
|
|
314
|
+
).toBe(false);
|
|
315
|
+
expect(edges.length).toBe(5);
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
test("derives a single edge for a vmware datastore resource", () => {
|
|
319
|
+
const edges: Array<EntityRelationshipEdge> = deriveRelationships([
|
|
320
|
+
{ entityType: EntityType.VMwareVCenter, entityKey: "vcenter" },
|
|
321
|
+
{ entityType: EntityType.VMwareDatastore, entityKey: "ds" },
|
|
322
|
+
]);
|
|
323
|
+
expect(edges).toEqual([
|
|
324
|
+
{
|
|
325
|
+
fromEntityKey: "ds",
|
|
326
|
+
toEntityKey: "vcenter",
|
|
327
|
+
relationshipType: EntityRelationshipType.MemberOf,
|
|
328
|
+
},
|
|
329
|
+
]);
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
test("a collector host beside a vmware resource gains no vmware edges", () => {
|
|
333
|
+
const edges: Array<EntityRelationshipEdge> = deriveRelationships([
|
|
334
|
+
{ entityType: EntityType.Host, entityKey: "collector" },
|
|
335
|
+
{ entityType: EntityType.VMwareVCenter, entityKey: "vcenter" },
|
|
336
|
+
{ entityType: EntityType.VMwareHost, entityKey: "esxi" },
|
|
337
|
+
]);
|
|
338
|
+
expect(
|
|
339
|
+
edges.every((e: EntityRelationshipEdge) => {
|
|
340
|
+
return e.fromEntityKey !== "collector" && e.toEntityKey !== "collector";
|
|
341
|
+
}),
|
|
342
|
+
).toBe(true);
|
|
343
|
+
expect(edges.length).toBe(1);
|
|
344
|
+
});
|
|
345
|
+
|
|
179
346
|
test("empty / single-entity sets produce no edges", () => {
|
|
180
347
|
expect(deriveRelationships([])).toEqual([]);
|
|
181
348
|
expect(
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { JSONObject } from "../../Types/JSON";
|
|
2
|
+
|
|
3
|
+
export const authenticationOptions: JSONObject = {
|
|
4
|
+
challenge: "-_8A",
|
|
5
|
+
rpId: "localhost",
|
|
6
|
+
timeout: 60000,
|
|
7
|
+
userVerification: "required",
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const registrationOptions: JSONObject = {
|
|
11
|
+
...authenticationOptions,
|
|
12
|
+
rp: { id: "localhost", name: "OneUptime" },
|
|
13
|
+
user: { id: "AQID", name: "ada@example.com", displayName: "Ada Lovelace" },
|
|
14
|
+
pubKeyCredParams: [{ type: "public-key", alg: -7 }],
|
|
15
|
+
authenticatorSelection: {
|
|
16
|
+
residentKey: "required",
|
|
17
|
+
userVerification: "required",
|
|
18
|
+
},
|
|
19
|
+
excludeCredentials: [
|
|
20
|
+
{ id: "-_8A", type: "public-key", transports: ["internal"] },
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default class WebAuthnTestUtil {
|
|
25
|
+
public static buffer(...values: Array<number>): ArrayBuffer {
|
|
26
|
+
return new Uint8Array(values).buffer;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public static credential(
|
|
30
|
+
isRegistration: boolean = false,
|
|
31
|
+
): PublicKeyCredential {
|
|
32
|
+
return {
|
|
33
|
+
id: "-_8A",
|
|
34
|
+
rawId: WebAuthnTestUtil.buffer(251, 255, 0),
|
|
35
|
+
type: "public-key",
|
|
36
|
+
authenticatorAttachment: "platform",
|
|
37
|
+
getClientExtensionResults: () => {
|
|
38
|
+
return { credProps: { rk: true } };
|
|
39
|
+
},
|
|
40
|
+
response: isRegistration
|
|
41
|
+
? {
|
|
42
|
+
clientDataJSON: WebAuthnTestUtil.buffer(1, 2, 3),
|
|
43
|
+
attestationObject: WebAuthnTestUtil.buffer(4, 5, 6),
|
|
44
|
+
getTransports: () => {
|
|
45
|
+
return ["internal", "hybrid"];
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
: {
|
|
49
|
+
authenticatorData: WebAuthnTestUtil.buffer(4, 5, 6),
|
|
50
|
+
clientDataJSON: WebAuthnTestUtil.buffer(1, 2, 3),
|
|
51
|
+
signature: WebAuthnTestUtil.buffer(7, 8, 9),
|
|
52
|
+
userHandle: WebAuthnTestUtil.buffer(10, 11, 12),
|
|
53
|
+
},
|
|
54
|
+
} as unknown as PublicKeyCredential;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public static install(): void {
|
|
58
|
+
Object.defineProperty(window, "PublicKeyCredential", {
|
|
59
|
+
configurable: true,
|
|
60
|
+
value: class {},
|
|
61
|
+
writable: true,
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(window, "isSecureContext", {
|
|
64
|
+
configurable: true,
|
|
65
|
+
value: true,
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(navigator, "credentials", {
|
|
68
|
+
configurable: true,
|
|
69
|
+
value: {
|
|
70
|
+
get: async () => {
|
|
71
|
+
return WebAuthnTestUtil.credential();
|
|
72
|
+
},
|
|
73
|
+
create: async () => {
|
|
74
|
+
return WebAuthnTestUtil.credential(true);
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -1,4 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Mock for the @simplewebauthn/server package, wired in through
|
|
3
|
+
* `moduleNameMapper` in Common/jest.config.json rather than through
|
|
4
|
+
* jest.mock(), so every Common test that reaches UserWebAuthnService gets it
|
|
5
|
+
* without asking.
|
|
6
|
+
*
|
|
7
|
+
* THE RETURN SHAPES MATTER. `registrationInfo.credential` is the v13 shape --
|
|
8
|
+
* v7 and earlier put `credentialID` / `credentialPublicKey` at the top of
|
|
9
|
+
* `registrationInfo`, and UserWebAuthnService reads the v13 one. A stub left
|
|
10
|
+
* on the old shape does not fail loudly; it hands the service `undefined` and
|
|
11
|
+
* the row is written with no credential id at all.
|
|
12
|
+
*
|
|
13
|
+
* WHAT THIS STUB CANNOT TELL YOU. It has no opinion about
|
|
14
|
+
* `requireUserVerification`, which is exactly the library default that caused
|
|
15
|
+
* issue #3652 -- so a test of that behaviour written against this stub would
|
|
16
|
+
* have passed before the fix and after it. The end-to-end test of that lives
|
|
17
|
+
* in App/Tests/FeatureSet/Identity/WebAuthnUserVerification.test.ts, where the
|
|
18
|
+
* REAL library runs; what belongs here is assertions about the arguments the
|
|
19
|
+
* service passes in.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
const MOCK_CREDENTIAL_ID = "mock-credential-id";
|
|
23
|
+
|
|
2
24
|
module.exports = {
|
|
3
25
|
generateRegistrationOptions: jest.fn().mockResolvedValue({
|
|
4
26
|
challenge: "mock-challenge",
|
|
@@ -13,9 +35,14 @@ module.exports = {
|
|
|
13
35
|
verifyRegistrationResponse: jest.fn().mockResolvedValue({
|
|
14
36
|
verified: true,
|
|
15
37
|
registrationInfo: {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
38
|
+
credential: {
|
|
39
|
+
id: MOCK_CREDENTIAL_ID,
|
|
40
|
+
publicKey: Buffer.from("mock-public-key"),
|
|
41
|
+
counter: 0,
|
|
42
|
+
transports: ["internal"],
|
|
43
|
+
},
|
|
44
|
+
credentialDeviceType: "singleDevice",
|
|
45
|
+
credentialBackedUp: false,
|
|
19
46
|
},
|
|
20
47
|
}),
|
|
21
48
|
generateAuthenticationOptions: jest.fn().mockResolvedValue({
|
|
@@ -29,6 +56,8 @@ module.exports = {
|
|
|
29
56
|
verified: true,
|
|
30
57
|
authenticationInfo: {
|
|
31
58
|
newCounter: 1,
|
|
59
|
+
credentialID: MOCK_CREDENTIAL_ID,
|
|
60
|
+
userVerified: false,
|
|
32
61
|
},
|
|
33
62
|
}),
|
|
34
63
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import GitHubCommandType from "../CodeRepository/GitHubCommand";
|
|
2
|
+
|
|
1
3
|
/*
|
|
2
4
|
* The JSON persisted on AIRun.taskContext for tasks whose exact working
|
|
3
5
|
* context must survive until a worker claims them. Some recipes have no
|
|
@@ -85,6 +87,72 @@ export interface InvestigationCodeFixTaskSnapshot {
|
|
|
85
87
|
investigationAnalysisMarkdown: string;
|
|
86
88
|
}
|
|
87
89
|
|
|
90
|
+
/*
|
|
91
|
+
* The GitHub conversation a run was started from, and everything the agent
|
|
92
|
+
* worker needs to work it without re-deriving anything from a webhook it can
|
|
93
|
+
* no longer see.
|
|
94
|
+
*
|
|
95
|
+
* Two fields carry the trust boundary and must be read with it in mind:
|
|
96
|
+
*
|
|
97
|
+
* - `instruction` is UNTRUSTED text, written by whoever commented. It is
|
|
98
|
+
* quoted into an LLM prompt, so every consumer treats it as data about
|
|
99
|
+
* what the human wants and never as instructions that widen what the run
|
|
100
|
+
* may do. The run's repository, its issue/pull request, and its command
|
|
101
|
+
* are all fixed HERE, at trigger time, by code that verified them.
|
|
102
|
+
*
|
|
103
|
+
* - `installationId` was taken from the SIGNED webhook payload and checked
|
|
104
|
+
* against the CodeRepository row it names, so it is a GitHub-vouched
|
|
105
|
+
* binding rather than a client assertion. Nothing downstream may swap it.
|
|
106
|
+
*/
|
|
107
|
+
export interface GitHubTaskContext {
|
|
108
|
+
// The OneUptime CodeRepository row this conversation belongs to.
|
|
109
|
+
codeRepositoryId: string;
|
|
110
|
+
installationId: string;
|
|
111
|
+
organizationName: string;
|
|
112
|
+
repositoryName: string;
|
|
113
|
+
commandType: GitHubCommandType;
|
|
114
|
+
// UNTRUSTED. What the human wrote after the mention. May be empty.
|
|
115
|
+
instruction: string;
|
|
116
|
+
/*
|
|
117
|
+
* Exactly one of these is set, and it decides the recipe: an issue is
|
|
118
|
+
* implemented, a pull request is revised or reviewed.
|
|
119
|
+
*/
|
|
120
|
+
issueNumber?: number | undefined;
|
|
121
|
+
pullRequestNumber?: number | undefined;
|
|
122
|
+
/*
|
|
123
|
+
* The head branch of the pull request, captured at trigger time. The
|
|
124
|
+
* revision pushes to THIS branch and opens nothing new, and the review
|
|
125
|
+
* checks it out so it can read the code as changed.
|
|
126
|
+
*
|
|
127
|
+
* DELIBERATELY ABSENT for a pull request from a fork: that branch does not
|
|
128
|
+
* exist in the repository this installation can reach, so a run that tried
|
|
129
|
+
* to check it out would silently land on the default branch instead. A
|
|
130
|
+
* review of a fork works from the base branch plus the diff; a revision of
|
|
131
|
+
* one is refused outright.
|
|
132
|
+
*/
|
|
133
|
+
pullRequestHeadRefName?: string | undefined;
|
|
134
|
+
// Whether the pull request's branch lives in a different repository.
|
|
135
|
+
isPullRequestFromFork?: boolean | undefined;
|
|
136
|
+
// The comment that triggered the run, so the app can react on it.
|
|
137
|
+
triggerCommentId?: number | undefined;
|
|
138
|
+
// The GitHub login that issued the command. Attribution, never authority.
|
|
139
|
+
triggeredByLogin?: string | undefined;
|
|
140
|
+
/*
|
|
141
|
+
* The app's own acknowledgement comment. Edited in place as the run
|
|
142
|
+
* progresses so one command produces one comment, not a status log.
|
|
143
|
+
*/
|
|
144
|
+
acknowledgementCommentId?: number | undefined;
|
|
145
|
+
// The X-GitHub-Delivery of the webhook that started this run.
|
|
146
|
+
webhookDeliveryId?: string | undefined;
|
|
147
|
+
/*
|
|
148
|
+
* When the run's OUTCOME was reported back into the thread. Set by the
|
|
149
|
+
* sweeper that posts it, and the only thing stopping the next sweep from
|
|
150
|
+
* posting again — see GitHubRunReply for why the report is swept for rather
|
|
151
|
+
* than posted by whoever finalized the run.
|
|
152
|
+
*/
|
|
153
|
+
reportedToGitHubAt?: string | undefined;
|
|
154
|
+
}
|
|
155
|
+
|
|
88
156
|
export interface CodeFixTaskContext {
|
|
89
157
|
/*
|
|
90
158
|
* FixFromIncident: the exact investigation whose published RootCause is
|
|
@@ -112,6 +180,11 @@ export interface CodeFixTaskContext {
|
|
|
112
180
|
* name for repository resolution and PR wording).
|
|
113
181
|
*/
|
|
114
182
|
telemetryServiceId?: string | undefined;
|
|
183
|
+
/*
|
|
184
|
+
* The GitHub Implement / Revise / Review recipes: the conversation the run
|
|
185
|
+
* came from and must report back to.
|
|
186
|
+
*/
|
|
187
|
+
github?: GitHubTaskContext | undefined;
|
|
115
188
|
}
|
|
116
189
|
|
|
117
190
|
/*
|
|
@@ -151,4 +224,53 @@ export function getInvestigationCodeFixTaskSnapshot(
|
|
|
151
224
|
};
|
|
152
225
|
}
|
|
153
226
|
|
|
227
|
+
/*
|
|
228
|
+
* Treat partial, empty and malformed JSON as no GitHub context. Shared by the
|
|
229
|
+
* trigger, the task-details endpoint and the reply helper so none of those
|
|
230
|
+
* boundaries can fall back to a half-built conversation — a run that cannot
|
|
231
|
+
* name its repository AND its issue-or-pull-request is not executable, and
|
|
232
|
+
* one that names both is a bug, not a convenience.
|
|
233
|
+
*/
|
|
234
|
+
export function getGitHubTaskContext(
|
|
235
|
+
taskContext: CodeFixTaskContext | null | undefined,
|
|
236
|
+
): GitHubTaskContext | null {
|
|
237
|
+
const github: GitHubTaskContext | undefined = taskContext?.github;
|
|
238
|
+
|
|
239
|
+
if (!github) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const requiredStrings: Array<unknown> = [
|
|
244
|
+
github.codeRepositoryId,
|
|
245
|
+
github.installationId,
|
|
246
|
+
github.organizationName,
|
|
247
|
+
github.repositoryName,
|
|
248
|
+
github.commandType,
|
|
249
|
+
];
|
|
250
|
+
|
|
251
|
+
for (const value of requiredStrings) {
|
|
252
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const hasIssue: boolean = typeof github.issueNumber === "number";
|
|
258
|
+
const hasPullRequest: boolean = typeof github.pullRequestNumber === "number";
|
|
259
|
+
|
|
260
|
+
if (hasIssue === hasPullRequest) {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return github;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/*
|
|
268
|
+
* The issue or pull request number this run is about. GitHub numbers both in
|
|
269
|
+
* the same sequence per repository, and the conversation API addresses both
|
|
270
|
+
* as `/issues/{n}` — so the app's replies always go here, whichever it is.
|
|
271
|
+
*/
|
|
272
|
+
export function getGitHubConversationNumber(github: GitHubTaskContext): number {
|
|
273
|
+
return (github.pullRequestNumber ?? github.issueNumber)!;
|
|
274
|
+
}
|
|
275
|
+
|
|
154
276
|
export default CodeFixTaskContext;
|
|
@@ -71,6 +71,30 @@ enum CodeFixTaskType {
|
|
|
71
71
|
* Common/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts).
|
|
72
72
|
*/
|
|
73
73
|
FixFromIncident = "FixFromIncident",
|
|
74
|
+
/*
|
|
75
|
+
* Work a GitHub ISSUE and open a pull request that closes it. Triggered
|
|
76
|
+
* from GitHub itself — an "@oneuptime implement this" mention, an
|
|
77
|
+
* assignment to the app's bot user, or the repository's trigger label —
|
|
78
|
+
* never from the OneUptime UI. Its entire context (repository, issue
|
|
79
|
+
* number, the commenter's instruction) is captured into
|
|
80
|
+
* AIRun.taskContext.github at trigger time; see
|
|
81
|
+
* Common/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.ts.
|
|
82
|
+
*/
|
|
83
|
+
GitHubIssueFix = "GitHubIssueFix",
|
|
84
|
+
/*
|
|
85
|
+
* Revise an EXISTING pull request in place: new commits pushed to the same
|
|
86
|
+
* head branch, no second pull request. Triggered by "@oneuptime revise
|
|
87
|
+
* this because ..." on the pull request. The head branch is captured into
|
|
88
|
+
* AIRun.taskContext.github at trigger time so a later force-push cannot
|
|
89
|
+
* silently redirect the run at another branch.
|
|
90
|
+
*/
|
|
91
|
+
GitHubPullRequestRevision = "GitHubPullRequestRevision",
|
|
92
|
+
/*
|
|
93
|
+
* Review a pull request and post the review as a COMMENT. Changes nothing
|
|
94
|
+
* and pushes nothing — the one recipe that never touches the repository.
|
|
95
|
+
* Triggered by "@oneuptime review" or by requesting a review from the app.
|
|
96
|
+
*/
|
|
97
|
+
GitHubPullRequestReview = "GitHubPullRequestReview",
|
|
74
98
|
}
|
|
75
99
|
|
|
76
100
|
export default CodeFixTaskType;
|
|
@@ -134,6 +158,9 @@ export class CodeFixTaskTypeHelper {
|
|
|
134
158
|
case CodeFixTaskType.FixPerformance:
|
|
135
159
|
case CodeFixTaskType.ImproveLogging:
|
|
136
160
|
case CodeFixTaskType.ImproveTracing:
|
|
161
|
+
case CodeFixTaskType.GitHubIssueFix:
|
|
162
|
+
case CodeFixTaskType.GitHubPullRequestRevision:
|
|
163
|
+
case CodeFixTaskType.GitHubPullRequestReview:
|
|
137
164
|
return CodeFixContextKind.TaskContext;
|
|
138
165
|
default:
|
|
139
166
|
return CodeFixContextKind.TelemetryException;
|
|
@@ -152,6 +179,41 @@ export class CodeFixTaskTypeHelper {
|
|
|
152
179
|
);
|
|
153
180
|
}
|
|
154
181
|
|
|
182
|
+
/*
|
|
183
|
+
* The recipes triggered from a GitHub conversation rather than from
|
|
184
|
+
* OneUptime. They share a context shape (AIRun.taskContext.github), a
|
|
185
|
+
* task-details endpoint, and the rule that their outcome is reported back
|
|
186
|
+
* into the thread they came from.
|
|
187
|
+
*/
|
|
188
|
+
public static getGitHubTaskTypes(): Array<CodeFixTaskType> {
|
|
189
|
+
return [
|
|
190
|
+
CodeFixTaskType.GitHubIssueFix,
|
|
191
|
+
CodeFixTaskType.GitHubPullRequestRevision,
|
|
192
|
+
CodeFixTaskType.GitHubPullRequestReview,
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
public static isGitHubTaskType(taskType: CodeFixTaskType): boolean {
|
|
197
|
+
return this.getGitHubTaskTypes().includes(taskType);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/*
|
|
201
|
+
* Whether a recipe can open a NEW pull request. The per-repository open-PR
|
|
202
|
+
* cap exists to bound how many unreviewed AI pull requests a reviewer has
|
|
203
|
+
* to wade through, so it applies to recipes that ADD to that queue.
|
|
204
|
+
*
|
|
205
|
+
* A revision pushes to a pull request that is already open and already
|
|
206
|
+
* counted; a review writes nothing at all. Counting either against the cap
|
|
207
|
+
* would mean a repository at its cap could never have its existing AI pull
|
|
208
|
+
* requests improved or reviewed — the exact work that clears the cap.
|
|
209
|
+
*/
|
|
210
|
+
public static opensNewPullRequest(taskType: CodeFixTaskType): boolean {
|
|
211
|
+
return (
|
|
212
|
+
taskType !== CodeFixTaskType.GitHubPullRequestRevision &&
|
|
213
|
+
taskType !== CodeFixTaskType.GitHubPullRequestReview
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
|
|
155
217
|
public static isValidTaskType(value: string): value is CodeFixTaskType {
|
|
156
218
|
return Object.values(CodeFixTaskType).includes(value as CodeFixTaskType);
|
|
157
219
|
}
|
|
@@ -31,6 +31,7 @@ export const SUPPORTED_ACCOUNTS_LANGUAGES: Array<AccountsLanguage> = [
|
|
|
31
31
|
englishName: "Chinese (Traditional)",
|
|
32
32
|
},
|
|
33
33
|
{ code: "hi", nativeName: "हिन्दी", englishName: "Hindi" },
|
|
34
|
+
{ code: "fa", nativeName: "فارسی", englishName: "Persian" },
|
|
34
35
|
];
|
|
35
36
|
|
|
36
37
|
export const SUPPORTED_ACCOUNTS_LANGUAGE_CODES: Array<string> =
|
|
@@ -32,6 +32,7 @@ export const SUPPORTED_ADMIN_DASHBOARD_LANGUAGES: Array<AdminDashboardLanguage>
|
|
|
32
32
|
englishName: "Chinese (Traditional)",
|
|
33
33
|
},
|
|
34
34
|
{ code: "hi", nativeName: "हिन्दी", englishName: "Hindi" },
|
|
35
|
+
{ code: "fa", nativeName: "فارسی", englishName: "Persian" },
|
|
35
36
|
];
|
|
36
37
|
|
|
37
38
|
export const SUPPORTED_ADMIN_DASHBOARD_LANGUAGE_CODES: Array<string> =
|
|
@@ -9,4 +9,20 @@ export default interface CalendarEvent extends JSONObject {
|
|
|
9
9
|
desc?: string | undefined;
|
|
10
10
|
color?: string | undefined;
|
|
11
11
|
textColor?: string | undefined;
|
|
12
|
+
/*
|
|
13
|
+
* A SECOND colour for the block, painted as a stripe down its leading edge.
|
|
14
|
+
* Used when a block is about two people rather than one — an on-call shift
|
|
15
|
+
* covered by a substitute is drawn in the substitute's colour with the
|
|
16
|
+
* overridden person's colour on the edge, so the swap is legible at a glance
|
|
17
|
+
* and, crucially, survives the label being truncated to nothing in a narrow
|
|
18
|
+
* week-view column.
|
|
19
|
+
*/
|
|
20
|
+
accentColor?: string | undefined;
|
|
21
|
+
/*
|
|
22
|
+
* Extra class names for the rendered block. The calendar itself defines no
|
|
23
|
+
* semantics for these; it forwards them so a caller can attach its own
|
|
24
|
+
* treatment (see .oneuptime-calendar-event--override in Calendar.css) without
|
|
25
|
+
* the generic component learning what an override is.
|
|
26
|
+
*/
|
|
27
|
+
className?: string | undefined;
|
|
12
28
|
}
|