@oneuptime/common 12.0.8 → 12.0.9
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/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +1 -1
- package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +1 -1
- package/Models/DatabaseModels/AIConversation.ts +32 -0
- package/Models/DatabaseModels/AIConversationMessage.ts +41 -0
- package/Models/DatabaseModels/AlertEpisodeMember.ts +27 -0
- package/Models/DatabaseModels/IncidentEpisodeMember.ts +28 -0
- package/Models/DatabaseModels/Index.ts +12 -4
- package/Models/DatabaseModels/{TelemetryEntity.ts → InventoryItem.ts} +139 -9
- package/Models/DatabaseModels/InventoryItemCustomField.ts +434 -0
- package/Models/DatabaseModels/{TelemetryEntityRelationship.ts → InventoryItemRelationship.ts} +8 -8
- package/Models/DatabaseModels/NetworkDevice.ts +141 -0
- package/Models/DatabaseModels/NetworkDeviceLink.ts +699 -0
- package/Models/DatabaseModels/NetworkDeviceLinkRule.ts +467 -0
- package/Models/DatabaseModels/NetworkTopologySuppression.ts +429 -0
- package/Models/DatabaseModels/OnCallDutyPolicyFeed.ts +9 -0
- package/Models/DatabaseModels/Project.ts +78 -0
- package/Models/DatabaseModels/UserCall.ts +42 -0
- package/Models/DatabaseModels/UserEmail.ts +44 -0
- package/Models/DatabaseModels/UserNotificationRule.ts +425 -55
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +24 -2
- package/Models/DatabaseModels/UserPush.ts +49 -0
- package/Models/DatabaseModels/UserSMS.ts +43 -0
- package/Models/DatabaseModels/UserTelegram.ts +59 -0
- package/Models/DatabaseModels/UserWebhook.ts +52 -0
- package/Models/DatabaseModels/UserWhatsApp.ts +41 -0
- package/Models/DatabaseModels/WorkflowVariable.ts +12 -0
- package/Server/API/AIChatAPI.ts +315 -1
- package/Server/API/DashboardAPI.ts +217 -1
- package/Server/API/OnCallReadinessAPI.ts +841 -0
- package/Server/API/TeamComplianceAPI.ts +69 -17
- package/Server/API/TelemetryAPI.ts +220 -12
- package/Server/EnvironmentConfig.ts +52 -0
- package/Server/Infrastructure/Postgres/DataSourceOptions.ts +22 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +4 -4
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +5 -5
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.ts +82 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.ts +91 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.ts +255 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.ts +107 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.ts +90 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.ts +33 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.ts +59 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
- package/Server/Infrastructure/Queue.ts +78 -13
- package/Server/Middleware/PublicDashboardRateLimit.ts +593 -0
- package/Server/Services/AIService.ts +7 -0
- package/Server/Services/AlertEpisodeStateTimelineService.ts +29 -0
- package/Server/Services/AlertSeverityService.ts +63 -0
- package/Server/Services/DashboardService.ts +9 -10
- package/Server/Services/DatabaseService.ts +32 -2
- package/Server/Services/IncidentEpisodeStateTimelineService.ts +29 -0
- package/Server/Services/IncidentSeverityService.ts +76 -0
- package/Server/Services/Index.ts +12 -4
- package/Server/Services/InventoryItemCustomFieldService.ts +9 -0
- package/Server/Services/{TelemetryEntityRelationshipService.ts → InventoryItemRelationshipService.ts} +4 -4
- package/Server/Services/{TelemetryEntityService.ts → InventoryItemService.ts} +89 -20
- package/Server/Services/LogAggregationService.ts +45 -8
- package/Server/Services/MetricAggregationService.ts +121 -0
- package/Server/Services/MetricService.ts +7 -7
- package/Server/Services/NetworkDeviceLinkRuleService.ts +10 -0
- package/Server/Services/NetworkDeviceLinkService.ts +84 -0
- package/Server/Services/NetworkDeviceService.ts +140 -0
- package/Server/Services/NetworkSiteService.ts +77 -25
- package/Server/Services/NetworkTopologySuppressionService.ts +84 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +41 -29
- package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +8 -0
- package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +62 -13
- package/Server/Services/OnCallDutyPolicyScheduleService.ts +61 -1
- package/Server/Services/OnCallNotificationAlertingService.ts +742 -0
- package/Server/Services/OnCallReadinessService.ts +2803 -0
- package/Server/Services/OnCallSetupReminderService.ts +955 -0
- package/Server/Services/ProfileAggregationService.ts +123 -0
- package/Server/Services/StatusPageService.ts +9 -10
- package/Server/Services/TeamComplianceService.ts +429 -252
- package/Server/Services/UserCallService.ts +26 -1
- package/Server/Services/UserEmailService.ts +26 -1
- package/Server/Services/UserNotificationRuleAdminService.ts +1183 -0
- package/Server/Services/UserNotificationRuleService.ts +3812 -333
- package/Server/Services/UserOnCallLogService.ts +561 -48
- package/Server/Services/UserPushService.ts +29 -0
- package/Server/Services/UserService.ts +11 -0
- package/Server/Services/UserSmsService.ts +26 -1
- package/Server/Services/UserTelegramService.ts +24 -1
- package/Server/Services/UserWebhookService.ts +28 -1
- package/Server/Services/UserWhatsAppService.ts +24 -1
- package/Server/Types/Database/Permissions/BasePermission.ts +19 -0
- package/Server/Types/Database/Permissions/CreatePermission.ts +164 -0
- package/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.ts +340 -0
- package/Server/Types/Database/Permissions/QueryPermission.ts +48 -0
- package/Server/Types/Database/Permissions/TenantPermission.ts +8 -1
- package/Server/Types/Workflow/Components/API/Delete.ts +1 -1
- package/Server/Types/Workflow/Components/API/Get.ts +1 -1
- package/Server/Types/Workflow/Components/API/Patch.ts +1 -1
- package/Server/Types/Workflow/Components/API/Post.ts +1 -1
- package/Server/Types/Workflow/Components/API/Put.ts +1 -1
- package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +29 -5
- package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +18 -10
- package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +55 -0
- package/Server/Types/Workflow/Components/Conditions/IfElse.ts +3 -17
- package/Server/Types/Workflow/Components/Email.ts +25 -7
- package/Server/Types/Workflow/Components/JavaScript.ts +10 -3
- package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +1 -1
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +643 -48
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +32 -3
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +20 -6
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +7 -0
- package/Server/Utils/AI/Toolbox/AIActionTools.ts +2 -2
- package/Server/Utils/AI/Toolbox/AIMetaTools.ts +863 -0
- package/Server/Utils/AI/Toolbox/AlertTools.ts +177 -15
- package/Server/Utils/AI/Toolbox/IncidentTools.ts +191 -10
- package/Server/Utils/AI/Toolbox/Index.ts +48 -0
- package/Server/Utils/AI/Toolbox/MonitorTools.ts +298 -11
- package/Server/Utils/AI/Toolbox/NoteWriteTools.ts +295 -0
- package/Server/Utils/AI/Toolbox/OnCallTools.ts +1246 -0
- package/Server/Utils/AI/Toolbox/RunbookTools.ts +424 -0
- package/Server/Utils/AI/Toolbox/SloTools.ts +456 -0
- package/Server/Utils/AI/Toolbox/StatusPageTools.ts +559 -0
- package/Server/Utils/AI/Toolbox/TeamTools.ts +327 -0
- package/Server/Utils/AI/Toolbox/TimelineTools.ts +615 -0
- package/Server/Utils/AI/Toolbox/WorkflowProbeTools.ts +664 -0
- package/Server/Utils/ClientIp.ts +221 -0
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +47 -0
- package/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.ts +163 -0
- package/Server/Utils/Dashboard/PublicDashboardSloWidget.ts +147 -0
- package/Server/Utils/Express.ts +12 -17
- package/Server/Utils/LLM/LLMService.ts +85 -8
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +204 -10
- package/Server/Utils/SSRFProtection.ts +98 -23
- package/Server/Utils/StartServer.ts +12 -3
- package/Server/Utils/Telemetry/EntityRegistry.ts +205 -18
- package/Server/Utils/Telemetry/InventoryEntityRegistry.ts +25 -25
- package/Server/Utils/Telemetry/TelemetryEntity.ts +160 -52
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +7 -3
- package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +2146 -0
- package/Tests/App/Dashboard/CreateWorkflowModal.test.tsx +561 -0
- package/Tests/App/Dashboard/EscalationRuleReadiness.test.tsx +2470 -0
- package/Tests/App/Dashboard/OnCallPreventionGuards.test.tsx +1897 -0
- package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3606 -0
- package/Tests/App/Dashboard/OnCallRulesDeleteGuard.test.tsx +784 -0
- package/Tests/App/Dashboard/OnCallRulesTable.test.tsx +1119 -0
- package/Tests/App/Dashboard/SloWidgetFetching.test.tsx +531 -0
- package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +1312 -0
- package/Tests/App/Dashboard/UserSettingsSetupChecklistPage.test.tsx +1390 -0
- package/Tests/Models/InventoryItemModel.test.ts +174 -0
- package/Tests/Models/InventoryItemNaming.test.ts +302 -0
- package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +437 -0
- package/Tests/Server/API/DashboardPublicRateLimit.test.ts +659 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +18 -0
- package/Tests/Server/API/DashboardPublicSloAPI.test.ts +880 -0
- package/Tests/Server/API/Helpers.ts +24 -15
- package/Tests/Server/API/OnCallReadinessAPI.test.ts +2680 -0
- package/Tests/Server/API/OnCallSetupReminderAPI.test.ts +915 -0
- package/Tests/Server/Infrastructure/Postgres/EpisodeMemberNotifyIndexesMigration.test.ts +533 -0
- package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +213 -0
- package/Tests/Server/Infrastructure/Postgres/RenameInventoryItemMigration.test.ts +432 -0
- package/Tests/Server/Infrastructure/Queue.test.ts +293 -0
- package/Tests/Server/Middleware/PublicDashboardRateLimit.test.ts +1645 -0
- package/Tests/Server/Services/AdminRuleEditGuards.test.ts +2848 -0
- package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1393 -0
- package/Tests/Server/Services/EpisodeRuleSeverityRepair.test.ts +1802 -0
- package/Tests/Server/Services/EpisodeStateTimelineNote.test.ts +304 -0
- package/Tests/Server/Services/InventoryItemDisplayName.test.ts +339 -0
- package/Tests/Server/Services/{TelemetryEntityManualCreate.test.ts → InventoryItemManualCreate.test.ts} +27 -27
- package/Tests/Server/Services/IpAllowlistSpoofing.test.ts +450 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +235 -1
- package/Tests/Server/Services/MetricAggregationService.test.ts +231 -0
- package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +80 -29
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +30 -30
- package/Tests/Server/Services/NetworkSiteService.test.ts +18 -3
- package/Tests/Server/Services/NotificationChannelEventCoverage.test.ts +1728 -0
- package/Tests/Server/Services/NotificationDeletionImpact.test.ts +2402 -0
- package/Tests/Server/Services/OnCallDutyPolicyExecutionLogTimelineGapFeed.test.ts +394 -0
- package/Tests/Server/Services/OnCallNotificationFallback.test.ts +1744 -0
- package/Tests/Server/Services/OnCallReadinessService.test.ts +4295 -0
- package/Tests/Server/Services/OnCallSetupReminder.test.ts +1272 -0
- package/Tests/Server/Services/OnCallWeeklyReadinessDigest.test.ts +1021 -0
- package/Tests/Server/Services/ProfileAggregationService.test.ts +296 -0
- package/Tests/Server/Services/SeverityCreationRuleBackfill.test.ts +1536 -0
- package/Tests/Server/Services/SeverityRuleBackfill.test.ts +1818 -0
- package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +1845 -0
- package/Tests/Server/Services/UserNotificationRuleAdminGuards.test.ts +1394 -0
- package/Tests/Server/Services/UserNotificationRuleDefaultCreation.test.ts +1166 -0
- package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1468 -0
- package/Tests/Server/Services/UserOnCallLogNoNotificationRules.test.ts +1457 -0
- package/Tests/Server/Types/Database/Permissions/AdminNotificationRuleAccess.test.ts +1546 -0
- package/Tests/Server/Types/Database/Permissions/CreateOwnershipScoping.test.ts +529 -0
- package/Tests/Server/Types/Database/Permissions/OwnerOnlyColumns.test.ts +1219 -0
- package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +1089 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +2 -1
- package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +190 -0
- package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +44 -14
- package/Tests/Server/Types/Workflow/Components/Email.test.ts +151 -0
- package/Tests/Server/Types/Workflow/Components/IfElse.test.ts +98 -0
- package/Tests/Server/Types/Workflow/Components/JavaScript.test.ts +51 -0
- package/Tests/Server/Utils/AI/AIMetaTools.test.ts +586 -0
- package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +582 -0
- package/Tests/Server/Utils/AI/ChatAgentRunner.test.ts +726 -0
- package/Tests/Server/Utils/AI/IncidentToolsFilters.test.ts +315 -0
- package/Tests/Server/Utils/AI/LLMServiceStopReason.test.ts +314 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +26 -3
- package/Tests/Server/Utils/AI/NoteWriteTools.test.ts +268 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +169 -0
- package/Tests/Server/Utils/AI/OnCallTools.test.ts +664 -0
- package/Tests/Server/Utils/AI/RunbookTools.test.ts +325 -0
- package/Tests/Server/Utils/AI/SloTools.test.ts +306 -0
- package/Tests/Server/Utils/AI/StatusPageTools.test.ts +391 -0
- package/Tests/Server/Utils/AI/TeamTools.test.ts +257 -0
- package/Tests/Server/Utils/AI/TimelineTools.test.ts +472 -0
- package/Tests/Server/Utils/AI/WorkflowProbeTools.test.ts +428 -0
- package/Tests/Server/Utils/ClientIp.test.ts +438 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +171 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.test.ts +383 -0
- package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +23 -25
- package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +6 -0
- package/Tests/Server/Utils/Monitor/Criteria/DnssecMonitorCriteria.test.ts +307 -0
- package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +468 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorTelemetryDeepLinks.test.ts +460 -0
- package/Tests/Server/Utils/ResponseRateLimitStatusCodes.test.ts +137 -0
- package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +40 -8
- package/Tests/Server/Utils/SSRFProtectionUserInfo.test.ts +351 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistryRetirement.test.ts +531 -0
- package/Tests/Server/Utils/Telemetry/InventoryEntityRegistry.test.ts +15 -15
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +356 -39
- package/Tests/Types/IP/IP.test.ts +263 -0
- package/Tests/Types/IP/IPWhitelist.test.ts +197 -0
- package/Tests/Types/IP/IPv6.test.ts +12 -1
- package/Tests/Types/Monitor/SnmpOid.test.ts +64 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +110 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeAudit.test.ts +106 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeDifferential.test.ts +511 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageEndToEnd.test.ts +489 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageGapTolerance.test.ts +479 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageState.test.ts +822 -0
- package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +6 -6
- package/Tests/Types/Workflow/BaseModelComponents.test.ts +429 -0
- package/Tests/Types/Workflow/Components/BaseModel.test.ts +225 -0
- package/Tests/Types/Workflow/IntegrationCredentialMetadata.test.ts +100 -0
- package/Tests/Types/Workflow/TemplateSyntax.test.ts +112 -0
- package/Tests/Types/Workflow/Templates.test.ts +916 -101
- package/Tests/UI/Components/ActiveFilterChipsOpenRoute.test.tsx +82 -0
- package/Tests/UI/Components/ComponentsModal.test.tsx +564 -7
- package/Tests/UI/Components/KeyboardShortcut.test.tsx +95 -0
- package/Tests/UI/Components/LogDetailsPanelCrossSignal.test.tsx +448 -0
- package/Tests/UI/Components/LogsTableCrossLinks.test.tsx +263 -0
- package/Tests/UI/Components/PendingProjectInvitations.test.tsx +913 -0
- package/Tests/UI/Components/SimpleLogViewer.test.tsx +228 -0
- package/Tests/UI/Components/TableRowSelectability.test.tsx +312 -0
- package/Tests/UI/Components/Workflow/GraphLint.test.ts +72 -0
- package/Tests/UI/Components/Workflow/GraphLintSummary.test.ts +755 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditor.test.ts +242 -7
- package/Tests/UI/Components/Workflow/ModelColumnEditorServerContract.test.ts +15 -7
- package/Tests/UI/Components/Workflow/ModelSchema.test.ts +242 -28
- package/Tests/UI/Components/Workflow/RunStatusWatcher.test.ts +59 -1
- package/Tests/UI/Components/Workflow/StepTraceViewer.test.tsx +256 -0
- package/Tests/UI/Components/Workflow/UseRunWatch.test.tsx +665 -0
- package/Tests/UI/Components/Workflow/WorkflowIssuesModal.test.tsx +485 -0
- package/Tests/UI/Components/Workflow/WorkflowLogModal.test.tsx +478 -0
- package/Tests/UI/Components/Workflow/WorkflowStatusBar.test.tsx +379 -0
- package/Tests/UI/EsbuildConfig.test.ts +607 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +11 -4
- package/Tests/UI/Utils/ModelAPICreateMiscData.test.ts +94 -0
- package/Tests/UI/Utils/Platform.test.ts +147 -0
- package/Tests/UI/Utils/ProjectInvitationDisplay.test.ts +357 -0
- package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +198 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +487 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +698 -0
- package/Tests/__mocks__/bullmq.js +55 -0
- package/Types/AI/AIChatMessageStatus.ts +8 -1
- package/Types/AI/AIChatTypes.ts +12 -0
- package/Types/Database/AccessControl/OwnerOnlyColumn.ts +88 -0
- package/Types/Exception/ExceptionCode.ts +2 -0
- package/Types/Exception/ServiceUnavailableException.ts +8 -0
- package/Types/Exception/TooManyRequestsException.ts +8 -0
- package/Types/IP/IP.ts +93 -47
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +49 -3
- package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +55 -0
- package/Types/OnCallDutyPolicy/Layer.ts +203 -149
- package/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.ts +13 -0
- package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +155 -10
- package/Types/Permission.ts +193 -0
- package/Types/Telemetry/EntityRelationshipType.ts +1 -1
- package/Types/Telemetry/EntitySource.ts +1 -1
- package/Types/Telemetry/EntityType.ts +1 -1
- package/Types/Telemetry/EntityTypeGroups.ts +1 -1
- package/Types/Workflow/Components/BaseModel.ts +75 -29
- package/Types/Workflow/Components/Discord.ts +1 -0
- package/Types/Workflow/Components/Email.ts +12 -3
- package/Types/Workflow/Components/JavaScript.ts +7 -0
- package/Types/Workflow/Components/MicrosoftTeams.ts +3 -2
- package/Types/Workflow/Components/Slack.ts +1 -0
- package/Types/Workflow/Components/Telegram.ts +1 -0
- package/Types/Workflow/TemplateSyntax.ts +44 -0
- package/Types/Workflow/Templates.ts +2097 -45
- package/UI/Components/Calendar/Calendar.css +43 -0
- package/UI/Components/Calendar/Calendar.tsx +8 -0
- package/UI/Components/Card/Card.tsx +2 -2
- package/UI/Components/Checkbox/Checkbox.tsx +16 -0
- package/UI/Components/Dictionary/Dictionary.tsx +48 -9
- package/UI/Components/FormModal/BasicFormModal.tsx +2 -1
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +53 -3
- package/UI/Components/Input/Input.tsx +1 -0
- package/UI/Components/KeyboardShortcut/KeyboardKey.ts +185 -0
- package/UI/Components/KeyboardShortcut/KeyboardShortcut.tsx +87 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +28 -0
- package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +31 -0
- package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +18 -18
- package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +363 -14
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +11 -0
- package/UI/Components/LogsViewer/components/LogsTable.tsx +155 -12
- package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +29 -0
- package/UI/Components/LogsViewer/types.ts +23 -0
- package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +9 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +15 -30
- package/UI/Components/ProjectInvitations/PendingProjectInvitations.tsx +442 -0
- package/UI/Components/SimpleLogViewer/SimpleLogViewer.tsx +23 -1
- package/UI/Components/Table/Table.tsx +49 -16
- package/UI/Components/Table/TableBody.tsx +53 -28
- package/UI/Components/Table/TableHeader.tsx +13 -0
- package/UI/Components/Table/TableRow.tsx +58 -26
- package/UI/Components/Workflow/ArgumentsForm.tsx +155 -9
- package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +26 -0
- package/UI/Components/Workflow/ComponentSettingsModal.tsx +10 -1
- package/UI/Components/Workflow/ComponentValuePickerModal.tsx +135 -7
- package/UI/Components/Workflow/ComponentsModal.tsx +116 -22
- package/UI/Components/Workflow/DocumentationViewer.tsx +59 -9
- package/UI/Components/Workflow/GraphLint.ts +42 -5
- package/UI/Components/Workflow/GraphLintSummary.ts +390 -0
- package/UI/Components/Workflow/ModelColumnEditor.tsx +154 -22
- package/UI/Components/Workflow/ModelSchema.ts +115 -33
- package/UI/Components/Workflow/RunStatusWatcher.ts +1 -1
- package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
- package/UI/Components/Workflow/UseRunWatch.ts +212 -0
- package/UI/Components/Workflow/VariableModal.tsx +6 -2
- package/UI/Components/Workflow/Workflow.tsx +49 -3
- package/UI/Components/Workflow/WorkflowIssuesModal.tsx +255 -0
- package/UI/Components/Workflow/WorkflowLogModal.tsx +128 -0
- package/UI/Components/Workflow/WorkflowStatusBar.tsx +224 -0
- package/UI/Utils/AIChatExport/ConversationMarkdown.ts +10 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +7 -1
- package/UI/Utils/Platform.ts +149 -0
- package/UI/Utils/ProjectInvitationDisplay.ts +118 -0
- package/UI/esbuild-config.js +22 -1
- package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +187 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +888 -164
- package/Utils/Telemetry/CrossSignalScope.ts +502 -0
- package/Utils/Telemetry/EntityKey.ts +5 -5
- package/Utils/Telemetry/EntityRelationship.ts +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +1 -1
- package/build/dist/Models/DatabaseModels/AIConversation.js +32 -0
- package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIConversationMessage.js +42 -0
- package/build/dist/Models/DatabaseModels/AIConversationMessage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js +28 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +29 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +12 -4
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/{TelemetryEntity.js → InventoryItem.js} +167 -31
- package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -0
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +454 -0
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -0
- package/build/dist/Models/DatabaseModels/{TelemetryEntityRelationship.js → InventoryItemRelationship.js} +27 -27
- package/build/dist/Models/DatabaseModels/InventoryItemRelationship.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +141 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js +719 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js +475 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkTopologySuppression.js +446 -0
- package/build/dist/Models/DatabaseModels/NetworkTopologySuppression.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js +9 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +80 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserCall.js +46 -2
- package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserEmail.js +48 -2
- package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationRule.js +424 -55
- package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +24 -2
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserPush.js +51 -1
- package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSMS.js +47 -2
- package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTelegram.js +65 -3
- package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebhook.js +56 -2
- package/build/dist/Models/DatabaseModels/UserWebhook.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js +45 -2
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js +12 -0
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +237 -1
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +165 -13
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallReadinessAPI.js +599 -0
- package/build/dist/Server/API/OnCallReadinessAPI.js.map +1 -0
- package/build/dist/Server/API/TeamComplianceAPI.js +68 -9
- package/build/dist/Server/API/TeamComplianceAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +129 -18
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +45 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +4 -4
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.js +150 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.js +57 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.js +69 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.js +48 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +72 -13
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js +399 -0
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js.map +1 -0
- package/build/dist/Server/Services/AIService.js +1 -0
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +24 -3
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/AlertSeverityService.js +54 -0
- package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
- package/build/dist/Server/Services/DashboardService.js +10 -9
- package/build/dist/Server/Services/DashboardService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +24 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +24 -3
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSeverityService.js +67 -0
- package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +12 -4
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/InventoryItemCustomFieldService.js +9 -0
- package/build/dist/Server/Services/InventoryItemCustomFieldService.js.map +1 -0
- package/build/dist/Server/Services/{TelemetryEntityRelationshipService.js → InventoryItemRelationshipService.js} +6 -6
- package/build/dist/Server/Services/InventoryItemRelationshipService.js.map +1 -0
- package/build/dist/Server/Services/{TelemetryEntityService.js → InventoryItemService.js} +68 -23
- package/build/dist/Server/Services/InventoryItemService.js.map +1 -0
- package/build/dist/Server/Services/LogAggregationService.js +27 -8
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +80 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricService.js +6 -6
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLinkRuleService.js +9 -0
- package/build/dist/Server/Services/NetworkDeviceLinkRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceLinkService.js +71 -0
- package/build/dist/Server/Services/NetworkDeviceLinkService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceService.js +113 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +53 -13
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkTopologySuppressionService.js +85 -0
- package/build/dist/Server/Services/NetworkTopologySuppressionService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +48 -32
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +8 -0
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +51 -12
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +57 -13
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallNotificationAlertingService.js +548 -0
- package/build/dist/Server/Services/OnCallNotificationAlertingService.js.map +1 -0
- package/build/dist/Server/Services/OnCallReadinessService.js +1961 -0
- package/build/dist/Server/Services/OnCallReadinessService.js.map +1 -0
- package/build/dist/Server/Services/OnCallSetupReminderService.js +738 -0
- package/build/dist/Server/Services/OnCallSetupReminderService.js.map +1 -0
- package/build/dist/Server/Services/ProfileAggregationService.js +68 -4
- package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +11 -10
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamComplianceService.js +312 -160
- package/build/dist/Server/Services/TeamComplianceService.js.map +1 -1
- package/build/dist/Server/Services/UserCallService.js +24 -1
- package/build/dist/Server/Services/UserCallService.js.map +1 -1
- package/build/dist/Server/Services/UserEmailService.js +24 -1
- package/build/dist/Server/Services/UserEmailService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleAdminService.js +858 -0
- package/build/dist/Server/Services/UserNotificationRuleAdminService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js +2830 -175
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallLogService.js +488 -43
- package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
- package/build/dist/Server/Services/UserPushService.js +26 -0
- package/build/dist/Server/Services/UserPushService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +10 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserSmsService.js +24 -1
- package/build/dist/Server/Services/UserSmsService.js.map +1 -1
- package/build/dist/Server/Services/UserTelegramService.js +22 -1
- package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +25 -1
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Services/UserWhatsAppService.js +22 -1
- package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +12 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +126 -0
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.js +254 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.js.map +1 -0
- package/build/dist/Server/Types/Database/Permissions/QueryPermission.js +47 -2
- package/build/dist/Server/Types/Database/Permissions/QueryPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +7 -0
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +21 -5
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +14 -10
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +31 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js +3 -9
- package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Email.js +15 -4
- package/build/dist/Server/Types/Workflow/Components/Email.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js +7 -2
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +514 -56
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +20 -3
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +19 -6
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +7 -0
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js +2 -2
- package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js +692 -0
- package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +148 -12
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js +157 -10
- package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +37 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +259 -14
- package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/NoteWriteTools.js +235 -0
- package/build/dist/Server/Utils/AI/Toolbox/NoteWriteTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +1000 -0
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/RunbookTools.js +356 -0
- package/build/dist/Server/Utils/AI/Toolbox/RunbookTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +394 -0
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js +465 -0
- package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/TeamTools.js +280 -0
- package/build/dist/Server/Utils/AI/Toolbox/TeamTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js +527 -0
- package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js +548 -0
- package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js.map +1 -0
- package/build/dist/Server/Utils/ClientIp.js +137 -0
- package/build/dist/Server/Utils/ClientIp.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +38 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.js +89 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloWidget.js +77 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloWidget.js.map +1 -0
- package/build/dist/Server/Utils/Express.js +12 -12
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +70 -7
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +121 -11
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +82 -21
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +12 -4
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +165 -18
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js +11 -11
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +122 -47
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +7 -3
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/AI/AIChatMessageStatus.js +8 -1
- package/build/dist/Types/AI/AIChatMessageStatus.js.map +1 -1
- package/build/dist/Types/AI/AIChatTypes.js +12 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +60 -0
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -0
- package/build/dist/Types/Exception/ExceptionCode.js +2 -0
- package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
- package/build/dist/Types/Exception/ServiceUnavailableException.js +8 -0
- package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js +8 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -0
- package/build/dist/Types/IP/IP.js +87 -43
- package/build/dist/Types/IP/IP.js.map +1 -1
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +50 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/Layer.js +186 -123
- package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js +13 -0
- package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +105 -11
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
- package/build/dist/Types/Permission.js +174 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityRelationshipType.js +1 -1
- package/build/dist/Types/Telemetry/EntitySource.js +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +1 -1
- package/build/dist/Types/Telemetry/EntityTypeGroups.js +1 -1
- package/build/dist/Types/Telemetry/EntityTypeGroups.js.map +1 -1
- package/build/dist/Types/Workflow/Components/BaseModel.js +66 -28
- package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Discord.js +1 -0
- package/build/dist/Types/Workflow/Components/Discord.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Email.js +12 -3
- package/build/dist/Types/Workflow/Components/Email.js.map +1 -1
- package/build/dist/Types/Workflow/Components/JavaScript.js +7 -0
- package/build/dist/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Types/Workflow/Components/MicrosoftTeams.js +3 -2
- package/build/dist/Types/Workflow/Components/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Slack.js +1 -0
- package/build/dist/Types/Workflow/Components/Slack.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Telegram.js +1 -0
- package/build/dist/Types/Workflow/Components/Telegram.js.map +1 -1
- package/build/dist/Types/Workflow/TemplateSyntax.js +12 -0
- package/build/dist/Types/Workflow/TemplateSyntax.js.map +1 -1
- package/build/dist/Types/Workflow/Templates.js +1931 -38
- package/build/dist/Types/Workflow/Templates.js.map +1 -1
- package/build/dist/UI/Components/Calendar/Calendar.js +1 -1
- package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
- package/build/dist/UI/Components/Checkbox/Checkbox.js +1 -1
- package/build/dist/UI/Components/Checkbox/Checkbox.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/Dictionary.js +25 -11
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +27 -4
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +1 -0
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardKey.js +163 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardKey.js.map +1 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcut.js +47 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcut.js.map +1 -0
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +4 -4
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +11 -1
- package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +10 -8
- package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +227 -14
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +5 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +69 -5
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +8 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/types.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +9 -2
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +8 -21
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js +251 -0
- package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js.map +1 -0
- package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js +9 -2
- package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js.map +1 -1
- package/build/dist/UI/Components/Table/Table.js +27 -15
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableBody.js +24 -18
- package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +9 -1
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +29 -21
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js +130 -12
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +10 -1
- package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +4 -4
- package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js +57 -7
- package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +53 -18
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/DocumentationViewer.js +19 -6
- package/build/dist/UI/Components/Workflow/DocumentationViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/GraphLint.js +33 -4
- package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -1
- package/build/dist/UI/Components/Workflow/GraphLintSummary.js +231 -0
- package/build/dist/UI/Components/Workflow/GraphLintSummary.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +116 -21
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ModelSchema.js +72 -34
- package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -1
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +1 -1
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/UseRunWatch.js +123 -0
- package/build/dist/UI/Components/Workflow/UseRunWatch.js.map +1 -0
- package/build/dist/UI/Components/Workflow/VariableModal.js +3 -2
- package/build/dist/UI/Components/Workflow/VariableModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Workflow.js +41 -1
- package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
- package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js +99 -0
- package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowLogModal.js +56 -0
- package/build/dist/UI/Components/Workflow/WorkflowLogModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js +92 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +9 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/Platform.js +118 -0
- package/build/dist/UI/Utils/Platform.js.map +1 -0
- package/build/dist/UI/Utils/ProjectInvitationDisplay.js +106 -0
- package/build/dist/UI/Utils/ProjectInvitationDisplay.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +108 -0
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +642 -136
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +328 -0
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +5 -5
- package/build/dist/Utils/Telemetry/EntityRelationship.js +1 -1
- package/jest.config.json +1 -0
- package/package.json +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +0 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +0 -1
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +0 -1
- package/build/dist/Server/Services/TelemetryEntityService.js.map +0 -1
|
@@ -13,6 +13,7 @@ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
|
13
13
|
import Route from "../../Types/API/Route";
|
|
14
14
|
import AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid";
|
|
15
15
|
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
16
|
+
import OwnerOnlyColumn from "../../Types/Database/AccessControl/OwnerOnlyColumn";
|
|
16
17
|
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
17
18
|
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
18
19
|
import ColumnType from "../../Types/Database/ColumnType";
|
|
@@ -26,6 +27,47 @@ import IconProp from "../../Types/Icon/IconProp";
|
|
|
26
27
|
import ObjectID from "../../Types/ObjectID";
|
|
27
28
|
import Permission from "../../Types/Permission";
|
|
28
29
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
30
|
+
/*
|
|
31
|
+
* `read` names Permission.CurrentUser and nothing else. That single entry is
|
|
32
|
+
* what makes every column below owner-only, and it has to stay that way.
|
|
33
|
+
*
|
|
34
|
+
* CurrentUser is auto-granted to every authenticated caller, so on a COLUMN
|
|
35
|
+
* list it does not mean "on my own row" - column permissions are intersected
|
|
36
|
+
* by NAME and never see the query at all. The row scope lives HERE:
|
|
37
|
+
* TenantPermission.isAccessGrantedOnlyByCurrentUser is true exactly while this
|
|
38
|
+
* table list holds nothing but CurrentUser, and that is what stamps
|
|
39
|
+
* `userId = me` onto every read and refuses one that names somebody else. Add
|
|
40
|
+
* a single administrator permission to this list and the stamp stops being
|
|
41
|
+
* applied for whoever holds it - and the webhook URL and its signing secret,
|
|
42
|
+
* both bearer credentials that let whoever holds them impersonate OneUptime to
|
|
43
|
+
* the member's endpoint, become readable on every member's row in the project.
|
|
44
|
+
*
|
|
45
|
+
* That is not hypothetical. It shipped once, and the column-level guard
|
|
46
|
+
* written to contain it was walked past by nested relation selects, by `query`
|
|
47
|
+
* filters it never inspected, and by the sort columns that are appended to the
|
|
48
|
+
* select after it had already run. Each fix produced the next defect, because
|
|
49
|
+
* this model was never designed to be read across users.
|
|
50
|
+
*
|
|
51
|
+
* An administrator who needs to know whether a colleague can be paged does not
|
|
52
|
+
* read this table. OnCallReadinessService answers that question as root and
|
|
53
|
+
* returns ReadinessMethod { methodId, methodType, maskedIdentifier,
|
|
54
|
+
* isVerified } - masked server-side by the one code path that holds the raw
|
|
55
|
+
* value - and the admin readiness surface already consumes it. The id is a
|
|
56
|
+
* foreign key rather than a secret: it lets an administrator POINT A RULE AT a
|
|
57
|
+
* method without reading the method's row, which is the thing the widening was
|
|
58
|
+
* actually reaching for. Point the next admin surface there. Widening this
|
|
59
|
+
* list is not a cheaper version of that; it is the version that leaks.
|
|
60
|
+
*
|
|
61
|
+
* One path does not pass through this list at all, and it is the reason
|
|
62
|
+
* `canReadOnRelationQuery: true` on webhookUrl below is worth reading twice: a
|
|
63
|
+
* nested relation select made FROM a model whose own read is admin-wide -
|
|
64
|
+
* today UserNotificationRule - is checked by
|
|
65
|
+
* QueryPermission.checkRelationQueryPermission, which skips the column check
|
|
66
|
+
* outright when that flag is true and never consults this table list. The
|
|
67
|
+
* signing secret already carries `false` and is therefore closed on that path
|
|
68
|
+
* too; flipping the URL to match is a change to the rule tables that select it
|
|
69
|
+
* through the relation, not a change that can be made here alone.
|
|
70
|
+
*/
|
|
29
71
|
let UserWebhook = class UserWebhook extends BaseModel {
|
|
30
72
|
constructor() {
|
|
31
73
|
super(...arguments);
|
|
@@ -114,7 +156,16 @@ __decorate([
|
|
|
114
156
|
create: [Permission.CurrentUser],
|
|
115
157
|
read: [Permission.CurrentUser],
|
|
116
158
|
update: [Permission.CurrentUser],
|
|
117
|
-
})
|
|
159
|
+
})
|
|
160
|
+
/*
|
|
161
|
+
* A webhook URL is a bearer credential in its own right. Slack, Discord and
|
|
162
|
+
* Teams hooks all carry their secret in the path, so anyone who can read this
|
|
163
|
+
* string can post into the channel it belongs to. It stays readable through a
|
|
164
|
+
* relation query - that is how a rule table renders which webhook a rule
|
|
165
|
+
* points at - but only for a query pinned to the webhook's owner.
|
|
166
|
+
*/
|
|
167
|
+
,
|
|
168
|
+
OwnerOnlyColumn(),
|
|
118
169
|
TableColumn({
|
|
119
170
|
title: "Webhook URL",
|
|
120
171
|
required: true,
|
|
@@ -136,7 +187,10 @@ __decorate([
|
|
|
136
187
|
create: [Permission.CurrentUser],
|
|
137
188
|
read: [Permission.CurrentUser],
|
|
138
189
|
update: [Permission.CurrentUser],
|
|
139
|
-
})
|
|
190
|
+
})
|
|
191
|
+
// The HMAC signing key. Reading it is forging requests.
|
|
192
|
+
,
|
|
193
|
+
OwnerOnlyColumn(),
|
|
140
194
|
TableColumn({
|
|
141
195
|
title: "Signing Secret",
|
|
142
196
|
required: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserWebhook.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/UserWebhook.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAC9D,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,iCAAiC,MAAM,sEAAsE,CAAC;AACrH,OAAO,mBAAmB,MAAM,wDAAwD,CAAC;AACzF,OAAO,kBAAkB,MAAM,uDAAuD,CAAC;AACvF,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,UAAU,MAAM,iCAAiC,CAAC;AACzD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,4BAA4B,MAAM,mDAAmD,CAAC;AAC7F,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"UserWebhook.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/UserWebhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
|
13
13
|
import Route from "../../Types/API/Route";
|
|
14
14
|
import AllowAccessIfSubscriptionIsUnpaid from "../../Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid";
|
|
15
15
|
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
16
|
+
import OwnerOnlyColumn from "../../Types/Database/AccessControl/OwnerOnlyColumn";
|
|
16
17
|
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
17
18
|
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
18
19
|
import ColumnType from "../../Types/Database/ColumnType";
|
|
@@ -28,6 +29,36 @@ import Permission from "../../Types/Permission";
|
|
|
28
29
|
import Phone from "../../Types/Phone";
|
|
29
30
|
import Text from "../../Types/Text";
|
|
30
31
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
32
|
+
/*
|
|
33
|
+
* `read` names Permission.CurrentUser and nothing else. That single entry is
|
|
34
|
+
* what makes every column below owner-only, and it has to stay that way.
|
|
35
|
+
*
|
|
36
|
+
* CurrentUser is auto-granted to every authenticated caller, so on a COLUMN
|
|
37
|
+
* list it does not mean "on my own row" - column permissions are intersected
|
|
38
|
+
* by NAME and never see the query at all. The row scope lives HERE:
|
|
39
|
+
* TenantPermission.isAccessGrantedOnlyByCurrentUser is true exactly while this
|
|
40
|
+
* table list holds nothing but CurrentUser, and that is what stamps
|
|
41
|
+
* `userId = me` onto every read and refuses one that names somebody else. Add
|
|
42
|
+
* a single administrator permission to this list and the stamp stops being
|
|
43
|
+
* applied for whoever holds it - and the raw WhatsApp number and the
|
|
44
|
+
* verification code become readable on every member's row in the project.
|
|
45
|
+
*
|
|
46
|
+
* That is not hypothetical. It shipped once, and the column-level guard
|
|
47
|
+
* written to contain it was walked past by nested relation selects, by `query`
|
|
48
|
+
* filters it never inspected, and by the sort columns that are appended to the
|
|
49
|
+
* select after it had already run. Each fix produced the next defect, because
|
|
50
|
+
* this model was never designed to be read across users.
|
|
51
|
+
*
|
|
52
|
+
* An administrator who needs to know whether a colleague can be paged does not
|
|
53
|
+
* read this table. OnCallReadinessService answers that question as root and
|
|
54
|
+
* returns ReadinessMethod { methodId, methodType, maskedIdentifier,
|
|
55
|
+
* isVerified } - masked server-side by the one code path that holds the raw
|
|
56
|
+
* value - and the admin readiness surface already consumes it. The id is a
|
|
57
|
+
* foreign key rather than a secret: it lets an administrator POINT A RULE AT a
|
|
58
|
+
* method without reading the method's row, which is the thing the widening was
|
|
59
|
+
* actually reaching for. Point the next admin surface there. Widening this
|
|
60
|
+
* list is not a cheaper version of that; it is the version that leaks.
|
|
61
|
+
*/
|
|
31
62
|
let UserWhatsApp = class UserWhatsApp extends BaseModel {
|
|
32
63
|
constructor() {
|
|
33
64
|
super(...arguments);
|
|
@@ -94,7 +125,13 @@ __decorate([
|
|
|
94
125
|
create: [Permission.CurrentUser],
|
|
95
126
|
read: [Permission.CurrentUser],
|
|
96
127
|
update: [],
|
|
97
|
-
})
|
|
128
|
+
})
|
|
129
|
+
/*
|
|
130
|
+
* A personal phone number, and a directly addressable delivery target. Same
|
|
131
|
+
* reasoning as UserSMS.phone - and usually the very same number.
|
|
132
|
+
*/
|
|
133
|
+
,
|
|
134
|
+
OwnerOnlyColumn(),
|
|
98
135
|
TableColumn({
|
|
99
136
|
title: "WhatsApp Number",
|
|
100
137
|
required: true,
|
|
@@ -263,7 +300,13 @@ __decorate([
|
|
|
263
300
|
create: [],
|
|
264
301
|
read: [],
|
|
265
302
|
update: [],
|
|
266
|
-
})
|
|
303
|
+
})
|
|
304
|
+
/*
|
|
305
|
+
* A live verification code. Reading somebody else's is claiming their
|
|
306
|
+
* notification channel.
|
|
307
|
+
*/
|
|
308
|
+
,
|
|
309
|
+
OwnerOnlyColumn(),
|
|
267
310
|
TableColumn({
|
|
268
311
|
title: "Verification Code",
|
|
269
312
|
description: "Temporary Verification Code",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserWhatsApp.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/UserWhatsApp.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAC9D,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,iCAAiC,MAAM,sEAAsE,CAAC;AACrH,OAAO,mBAAmB,MAAM,wDAAwD,CAAC;AACzF,OAAO,kBAAkB,MAAM,uDAAuD,CAAC;AACvF,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,UAAU,MAAM,iCAAiC,CAAC;AACzD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,4BAA4B,MAAM,mDAAmD,CAAC;AAC7F,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"UserWhatsApp.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/UserWhatsApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -463,10 +463,22 @@ WorkflowVariable = __decorate([
|
|
|
463
463
|
}),
|
|
464
464
|
TenantColumn("projectId"),
|
|
465
465
|
TableAccessControl({
|
|
466
|
+
/*
|
|
467
|
+
* Mirrors Workflow's own create list. Anyone who can create a workflow can
|
|
468
|
+
* create the variables that workflow needs — the create-from-template wizard
|
|
469
|
+
* writes both in one go, and a member who could do the first but not the
|
|
470
|
+
* second was left with a saved workflow whose {{local.variables.…}}
|
|
471
|
+
* references resolved to nothing. Unresolved references are not an error at
|
|
472
|
+
* run time (VMAPI leaves the literal text in place), so that workflow looked
|
|
473
|
+
* healthy and posted braces to Slack.
|
|
474
|
+
*/
|
|
466
475
|
create: [
|
|
467
476
|
Permission.ProjectOwner,
|
|
468
477
|
Permission.ProjectAdmin,
|
|
469
478
|
Permission.CreateWorkflowVariable,
|
|
479
|
+
Permission.ProjectMember,
|
|
480
|
+
Permission.WorkflowAdmin,
|
|
481
|
+
Permission.WorkflowMember,
|
|
470
482
|
],
|
|
471
483
|
read: [
|
|
472
484
|
Permission.ProjectOwner,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowVariable.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/WorkflowVariable.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAC9D,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,mBAAmB,MAAM,wDAAwD,CAAC;AACzF,OAAO,YAAY,MAAM,iDAAiD,CAAC;AAC3E,OAAO,kBAAkB,MAAM,uDAAuD,CAAC;AACvF,OAAO,yBAAyB,MAAM,8DAA8D,CAAC;AACrG,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;AAC7E,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,UAAU,MAAM,iCAAiC,CAAC;AACzD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,mBAAmB,MAAM,0CAA0C,CAAC;AAC3E,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowVariable.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/WorkflowVariable.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,16 @@ import AIChatMessageStatus from "../../Types/AI/AIChatMessageStatus";
|
|
|
15
15
|
import { AIChatPageContextHelper, } from "../../Types/AI/AIChatPageContext";
|
|
16
16
|
import { AIChatPermissionModeHelper, } from "../../Types/AI/AIChatPermissionMode";
|
|
17
17
|
import { AIChatToolActionStatus, } from "../../Types/AI/AIChatTypes";
|
|
18
|
+
import AIRunEventType from "../../Types/AI/AIRunEventType";
|
|
18
19
|
import AIRunStatus from "../../Types/AI/AIRunStatus";
|
|
19
20
|
import AIRunType from "../../Types/AI/AIRunType";
|
|
20
21
|
import AIConversation from "../../Models/DatabaseModels/AIConversation";
|
|
21
|
-
import AIConversationMessage from "../../Models/DatabaseModels/AIConversationMessage";
|
|
22
|
+
import AIConversationMessage, { AIConversationMessageFeedback, } from "../../Models/DatabaseModels/AIConversationMessage";
|
|
22
23
|
import AIRun from "../../Models/DatabaseModels/AIRun";
|
|
24
|
+
import AIRunEvent from "../../Models/DatabaseModels/AIRunEvent";
|
|
23
25
|
import AIConversationService from "../Services/AIConversationService";
|
|
24
26
|
import AIConversationMessageService from "../Services/AIConversationMessageService";
|
|
27
|
+
import AIRunEventService from "../Services/AIRunEventService";
|
|
25
28
|
import AIRunService from "../Services/AIRunService";
|
|
26
29
|
import ProjectService from "../Services/ProjectService";
|
|
27
30
|
import LlmProviderService from "../Services/LlmProviderService";
|
|
@@ -30,6 +33,14 @@ import QueryHelper from "../Types/Database/QueryHelper";
|
|
|
30
33
|
import logger from "../Utils/Logger";
|
|
31
34
|
const MAX_USER_MESSAGE_LENGTH = 8000;
|
|
32
35
|
const MAX_CONCURRENT_RUNS_PER_PROJECT = 3;
|
|
36
|
+
// Final message content and run error for a turn the user stopped.
|
|
37
|
+
const STOPPED_BY_USER_TEXT = "Stopped by user.";
|
|
38
|
+
/*
|
|
39
|
+
* Cancel's terminal event must sort after every progress event the runner
|
|
40
|
+
* emitted — same convention as the runner's own failure finalizer, which
|
|
41
|
+
* starts its event sequence at 100000.
|
|
42
|
+
*/
|
|
43
|
+
const CANCEL_EVENT_SEQUENCE = 100000;
|
|
33
44
|
const router = Express.getRouter();
|
|
34
45
|
/*
|
|
35
46
|
* Starts a chat turn: validates and gates the request, creates the user and
|
|
@@ -503,5 +514,230 @@ router.post("/ai-chat/respond-to-approval", UserMiddleware.getUserMiddleware, as
|
|
|
503
514
|
return;
|
|
504
515
|
}
|
|
505
516
|
});
|
|
517
|
+
/*
|
|
518
|
+
* Stops the conversation's in-flight turn. Flips the active run to Cancelled,
|
|
519
|
+
* finalizes the in-flight assistant message as "Stopped by user." and emits a
|
|
520
|
+
* terminal run event so the polling UI sees closure. Every write is guarded on
|
|
521
|
+
* the row's current status, so racing the runner is safe: whichever side
|
|
522
|
+
* finalizes first wins and the loser's write matches zero rows (the runner
|
|
523
|
+
* also checks for cancellation cooperatively between its steps). Cancelling
|
|
524
|
+
* the run is also what releases the conversation for the next send —
|
|
525
|
+
* send-message's governor only blocks on Running/WaitingForApproval runs.
|
|
526
|
+
*/
|
|
527
|
+
router.post("/ai-chat/cancel-run", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
528
|
+
try {
|
|
529
|
+
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
530
|
+
if (!props.userId) {
|
|
531
|
+
throw new NotAuthorizedException("AI chat requires a logged-in user session.");
|
|
532
|
+
}
|
|
533
|
+
if (!props.tenantId) {
|
|
534
|
+
throw new BadDataException("Project ID is required (tenantid header).");
|
|
535
|
+
}
|
|
536
|
+
const projectId = props.tenantId;
|
|
537
|
+
const userId = props.userId;
|
|
538
|
+
const conversationIdString = req.body["conversationId"];
|
|
539
|
+
if (!conversationIdString) {
|
|
540
|
+
throw new BadDataException("conversationId is required.");
|
|
541
|
+
}
|
|
542
|
+
const conversationId = new ObjectID(conversationIdString);
|
|
543
|
+
// The privacy pin makes this return null for other users' rows.
|
|
544
|
+
const conversation = await AIConversationService.findOneById({
|
|
545
|
+
id: conversationId,
|
|
546
|
+
select: { _id: true },
|
|
547
|
+
props: props,
|
|
548
|
+
});
|
|
549
|
+
if (!conversation) {
|
|
550
|
+
throw new BadDataException("Conversation not found.");
|
|
551
|
+
}
|
|
552
|
+
/*
|
|
553
|
+
* The conversation's live run: actively generating (Running) or paused
|
|
554
|
+
* for the user's approval (WaitingForApproval). The per-conversation
|
|
555
|
+
* governor allows at most one, so no sort is needed.
|
|
556
|
+
*/
|
|
557
|
+
const activeRun = await AIRunService.findOneBy({
|
|
558
|
+
query: {
|
|
559
|
+
conversationId: conversationId,
|
|
560
|
+
projectId: projectId,
|
|
561
|
+
status: QueryHelper.any([
|
|
562
|
+
AIRunStatus.Running,
|
|
563
|
+
AIRunStatus.WaitingForApproval,
|
|
564
|
+
]),
|
|
565
|
+
},
|
|
566
|
+
select: { _id: true },
|
|
567
|
+
props: { isRoot: true },
|
|
568
|
+
});
|
|
569
|
+
if (!activeRun) {
|
|
570
|
+
throw new BadDataException("No response is being generated in this conversation.");
|
|
571
|
+
}
|
|
572
|
+
/*
|
|
573
|
+
* Status-guarded finalization, the same shape as the runner's own
|
|
574
|
+
* finalizer: only a still-in-flight run is flipped, so a run the runner
|
|
575
|
+
* completed (or errored) inside the race window is never overwritten.
|
|
576
|
+
* updateOneBy returns the matched-row count — zero from both guards
|
|
577
|
+
* means the other side won and already wrote the final state.
|
|
578
|
+
*/
|
|
579
|
+
let cancelledRunCount = 0;
|
|
580
|
+
for (const inFlightRunStatus of [
|
|
581
|
+
AIRunStatus.Running,
|
|
582
|
+
AIRunStatus.WaitingForApproval,
|
|
583
|
+
]) {
|
|
584
|
+
cancelledRunCount += await AIRunService.updateOneBy({
|
|
585
|
+
query: {
|
|
586
|
+
_id: activeRun.id.toString(),
|
|
587
|
+
status: inFlightRunStatus,
|
|
588
|
+
},
|
|
589
|
+
data: {
|
|
590
|
+
status: AIRunStatus.Cancelled,
|
|
591
|
+
completedAt: OneUptimeDate.getCurrentDate(),
|
|
592
|
+
errorMessage: STOPPED_BY_USER_TEXT,
|
|
593
|
+
// A cancelled turn must never be resumable.
|
|
594
|
+
pausedState: null,
|
|
595
|
+
},
|
|
596
|
+
props: { isRoot: true },
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
/*
|
|
600
|
+
* Finalize the run's in-flight assistant message the same guarded way:
|
|
601
|
+
* a message another path already finalized — completed with its full
|
|
602
|
+
* answer, or errored — keeps what it has.
|
|
603
|
+
*/
|
|
604
|
+
for (const inFlightMessageStatus of [
|
|
605
|
+
AIChatMessageStatus.InProgress,
|
|
606
|
+
AIChatMessageStatus.WaitingForApproval,
|
|
607
|
+
]) {
|
|
608
|
+
await AIConversationMessageService.updateOneBy({
|
|
609
|
+
query: {
|
|
610
|
+
aiRunId: activeRun.id,
|
|
611
|
+
status: inFlightMessageStatus,
|
|
612
|
+
},
|
|
613
|
+
data: {
|
|
614
|
+
status: AIChatMessageStatus.Cancelled,
|
|
615
|
+
contentInMarkdown: STOPPED_BY_USER_TEXT,
|
|
616
|
+
},
|
|
617
|
+
props: { isRoot: true },
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
/*
|
|
621
|
+
* Terminal event, only when this request actually took the run —
|
|
622
|
+
* emitting closure over a turn the runner finished would tell the UI a
|
|
623
|
+
* completed answer failed. RunFailed is the event enum's terminal
|
|
624
|
+
* "did not finish" member; the summary carries the human reason.
|
|
625
|
+
*/
|
|
626
|
+
if (cancelledRunCount > 0) {
|
|
627
|
+
try {
|
|
628
|
+
const cancelEvent = new AIRunEvent();
|
|
629
|
+
cancelEvent.projectId = projectId;
|
|
630
|
+
cancelEvent.aiRunId = activeRun.id;
|
|
631
|
+
cancelEvent.userId = userId;
|
|
632
|
+
cancelEvent.sequence = CANCEL_EVENT_SEQUENCE;
|
|
633
|
+
cancelEvent.eventType = AIRunEventType.RunFailed;
|
|
634
|
+
cancelEvent.resultSummary = { errorMessage: STOPPED_BY_USER_TEXT };
|
|
635
|
+
await AIRunEventService.create({
|
|
636
|
+
data: cancelEvent,
|
|
637
|
+
props: { isRoot: true },
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
catch (error) {
|
|
641
|
+
// Events are progress telemetry — never fail the cancel over them.
|
|
642
|
+
logger.error(`Failed to emit AI chat cancel event: ${error instanceof Error ? error.message : String(error)}`);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
646
|
+
conversationId: conversationId.toString(),
|
|
647
|
+
aiRunId: activeRun.id.toString(),
|
|
648
|
+
cancelled: cancelledRunCount > 0,
|
|
649
|
+
});
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
catch (err) {
|
|
653
|
+
next(err);
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
656
|
+
});
|
|
657
|
+
/*
|
|
658
|
+
* Stores thumbs feedback on an assistant message (or clears it with null).
|
|
659
|
+
* Ownership is enforced the same way as the other routes: the message AND its
|
|
660
|
+
* conversation must resolve under the requesting user's props (the privacy
|
|
661
|
+
* pin returns null for other users' rows), and only assistant-role messages
|
|
662
|
+
* accept feedback. Persistence only — no analytics pipeline yet.
|
|
663
|
+
*/
|
|
664
|
+
router.post("/ai-chat/message-feedback", UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
665
|
+
try {
|
|
666
|
+
const props = await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
667
|
+
if (!props.userId) {
|
|
668
|
+
throw new NotAuthorizedException("AI chat requires a logged-in user session.");
|
|
669
|
+
}
|
|
670
|
+
if (!props.tenantId) {
|
|
671
|
+
throw new BadDataException("Project ID is required (tenantid header).");
|
|
672
|
+
}
|
|
673
|
+
const messageIdString = req.body["messageId"];
|
|
674
|
+
if (!messageIdString) {
|
|
675
|
+
throw new BadDataException("messageId is required.");
|
|
676
|
+
}
|
|
677
|
+
const messageId = new ObjectID(messageIdString);
|
|
678
|
+
/*
|
|
679
|
+
* Validate before any read: feedback is exactly "Up", "Down" or null
|
|
680
|
+
* (null clears). Anything else — including a missing key — is a bad
|
|
681
|
+
* request, never silently coerced.
|
|
682
|
+
*/
|
|
683
|
+
if (!("feedback" in req.body)) {
|
|
684
|
+
throw new BadDataException('feedback is required: "Up", "Down" or null (null clears feedback).');
|
|
685
|
+
}
|
|
686
|
+
const rawFeedback = req.body["feedback"];
|
|
687
|
+
let feedback = null;
|
|
688
|
+
if (rawFeedback !== null && rawFeedback !== undefined) {
|
|
689
|
+
if (rawFeedback !== AIConversationMessageFeedback.Up &&
|
|
690
|
+
rawFeedback !== AIConversationMessageFeedback.Down) {
|
|
691
|
+
throw new BadDataException('feedback must be "Up", "Down" or null (null clears feedback).');
|
|
692
|
+
}
|
|
693
|
+
feedback = rawFeedback;
|
|
694
|
+
}
|
|
695
|
+
// The privacy pin makes this return null for other users' rows.
|
|
696
|
+
const message = await AIConversationMessageService.findOneById({
|
|
697
|
+
id: messageId,
|
|
698
|
+
select: {
|
|
699
|
+
_id: true,
|
|
700
|
+
conversationId: true,
|
|
701
|
+
role: true,
|
|
702
|
+
},
|
|
703
|
+
props: props,
|
|
704
|
+
});
|
|
705
|
+
if (!message || !message.conversationId) {
|
|
706
|
+
throw new BadDataException("Message not found.");
|
|
707
|
+
}
|
|
708
|
+
/*
|
|
709
|
+
* Belt and braces, matching respond-to-approval: the message's
|
|
710
|
+
* conversation must also resolve under this user's props.
|
|
711
|
+
*/
|
|
712
|
+
const conversation = await AIConversationService.findOneById({
|
|
713
|
+
id: message.conversationId,
|
|
714
|
+
select: { _id: true },
|
|
715
|
+
props: props,
|
|
716
|
+
});
|
|
717
|
+
if (!conversation) {
|
|
718
|
+
throw new BadDataException("Message not found.");
|
|
719
|
+
}
|
|
720
|
+
if (message.role !== AIChatMessageRole.Assistant) {
|
|
721
|
+
throw new BadDataException("Feedback can only be left on assistant messages.");
|
|
722
|
+
}
|
|
723
|
+
// Root write: message columns are deliberately not user-writable.
|
|
724
|
+
await AIConversationMessageService.updateOneById({
|
|
725
|
+
id: messageId,
|
|
726
|
+
data: {
|
|
727
|
+
userFeedback: feedback,
|
|
728
|
+
},
|
|
729
|
+
props: { isRoot: true },
|
|
730
|
+
});
|
|
731
|
+
Response.sendJsonObjectResponse(req, res, {
|
|
732
|
+
messageId: messageId.toString(),
|
|
733
|
+
feedback: feedback,
|
|
734
|
+
});
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
catch (err) {
|
|
738
|
+
next(err);
|
|
739
|
+
return;
|
|
740
|
+
}
|
|
741
|
+
});
|
|
506
742
|
export default router;
|
|
507
743
|
//# sourceMappingURL=AIChatAPI.js.map
|