@oneuptime/common 14.0.11 → 14.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1406) hide show
  1. package/Models/AnalyticsModels/AuditLog.ts +63 -0
  2. package/Models/AnalyticsModels/Log.ts +26 -3
  3. package/Models/AnalyticsModels/Metric.ts +28 -3
  4. package/Models/AnalyticsModels/MetricItemAggMV1m.ts +21 -3
  5. package/Models/AnalyticsModels/SloHistory.ts +6 -4
  6. package/Models/DatabaseModels/AutoRemediationRule.ts +1 -1
  7. package/Models/DatabaseModels/CodeRepository.ts +1 -1
  8. package/Models/DatabaseModels/Dashboard.ts +148 -0
  9. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +11 -0
  10. package/Models/DatabaseModels/DatabaseServerEndpoint.ts +1 -0
  11. package/Models/DatabaseModels/EnterpriseLicense.ts +2 -0
  12. package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +1 -0
  13. package/Models/DatabaseModels/IncomingCallLog.ts +13 -0
  14. package/Models/DatabaseModels/Index.ts +6 -0
  15. package/Models/DatabaseModels/LlmModelPrice.ts +1 -0
  16. package/Models/DatabaseModels/McpOAuthClient.ts +191 -0
  17. package/Models/DatabaseModels/McpOAuthGrant.ts +464 -0
  18. package/Models/DatabaseModels/McpOAuthToken.ts +228 -0
  19. package/Models/DatabaseModels/Monitor.ts +157 -0
  20. package/Models/DatabaseModels/MonitorSecret.ts +93 -1
  21. package/Models/DatabaseModels/NetworkEndpoint.ts +1 -0
  22. package/Models/DatabaseModels/OnCallDutyPolicy.ts +155 -0
  23. package/Models/DatabaseModels/Project.ts +44 -101
  24. package/Models/DatabaseModels/StatusPage.ts +155 -0
  25. package/Models/DatabaseModels/TelemetrySourceMap.ts +1 -0
  26. package/Models/DatabaseModels/Workflow.ts +226 -7
  27. package/Server/API/AIAgentDataAPI.ts +1 -1
  28. package/Server/API/AutoRemediationAPI.ts +9 -41
  29. package/Server/API/CommonAPI.ts +19 -0
  30. package/Server/API/DashboardAPI.ts +7 -3
  31. package/Server/API/StatusPageAPI.ts +143 -89
  32. package/Server/EnvironmentConfig.ts +27 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1796800000000-FoldAiSwitchesIntoEnableAi.ts +105 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1796900000000-AddMcpOAuthTables.ts +97 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1797000000000-AddWorkflowIncomingEmailSecretKey.ts +36 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1797100000000-AddMonitorSecretAccess.ts +55 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1797200000000-AddArchiveToMoreResources.ts +167 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  39. package/Server/Middleware/McpDelegationAuthorization.ts +204 -0
  40. package/Server/Middleware/McpOAuthRateLimit.ts +287 -0
  41. package/Server/Middleware/ProjectAuthorization.ts +23 -2
  42. package/Server/Middleware/UserAuthorization.ts +12 -0
  43. package/Server/Services/AIService.ts +2 -2
  44. package/Server/Services/AnalyticsDatabaseService.ts +22 -5
  45. package/Server/Services/ApiKeyService.ts +31 -7
  46. package/Server/Services/AutoRemediationRuleEngineService.ts +15 -27
  47. package/Server/Services/AutoRemediationRuleService.ts +1 -1
  48. package/Server/Services/DashboardService.ts +7 -2
  49. package/Server/Services/DatabaseServerService.ts +219 -0
  50. package/Server/Services/DatabaseService.ts +29 -32
  51. package/Server/Services/InboundEmail/InboundEmailProvider.ts +44 -0
  52. package/Server/Services/InboundEmail/Providers/SendGridInboundProvider.ts +57 -1
  53. package/Server/Services/IncomingCallMissedCallNotificationService.ts +280 -0
  54. package/Server/Services/IncomingCallPolicyService.ts +118 -0
  55. package/Server/Services/Index.ts +8 -0
  56. package/Server/Services/KubernetesClusterAiAccessService.ts +10 -47
  57. package/Server/Services/KubernetesClusterService.ts +3 -3
  58. package/Server/Services/LogAggregationService.ts +38 -5
  59. package/Server/Services/McpOAuthClientService.ts +148 -0
  60. package/Server/Services/McpOAuthGrantService.ts +275 -0
  61. package/Server/Services/McpOAuthTokenService.ts +213 -0
  62. package/Server/Services/MetricAggregationService.ts +4 -4
  63. package/Server/Services/MonitorGroupService.ts +49 -28
  64. package/Server/Services/MonitorProbeService.ts +1 -0
  65. package/Server/Services/MonitorSecretService.ts +425 -0
  66. package/Server/Services/MonitorService.ts +15 -1
  67. package/Server/Services/OnCallDutyPolicyService.ts +36 -2
  68. package/Server/Services/ProjectService.ts +53 -24
  69. package/Server/Services/ResourceAiAccessService.ts +3 -14
  70. package/Server/Services/RunnerJobService.ts +2 -2
  71. package/Server/Services/RunnerService.ts +2 -2
  72. package/Server/Services/StatusPageService.ts +66 -8
  73. package/Server/Services/StatusPageSubscriberService.ts +23 -0
  74. package/Server/Services/TeamMemberService.ts +352 -84
  75. package/Server/Services/UserNotificationSettingService.ts +20 -0
  76. package/Server/Services/WorkflowService.ts +31 -0
  77. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +6 -0
  78. package/Server/Types/Database/Permissions/Index.ts +10 -0
  79. package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +2 -0
  80. package/Server/Types/Workflow/Components/Conditions/IfElse.ts +36 -138
  81. package/Server/Types/Workflow/Components/IncomingEmail.ts +216 -0
  82. package/Server/Types/Workflow/Components/Index.ts +32 -18
  83. package/Server/Types/Workflow/Components/Schedule.ts +25 -4
  84. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +1 -1
  85. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +1 -1
  86. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +58 -50
  87. package/Server/Utils/AI/CodeFix/OpenPullRequestCap.ts +25 -19
  88. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +15 -68
  89. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +37 -53
  90. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +8 -8
  91. package/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.ts +1 -1
  92. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +12 -19
  93. package/Server/Utils/AI/SRE/IncidentPostmortemRunner.ts +6 -5
  94. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +3 -3
  95. package/Server/Utils/AI/SRE/Insights/InsightScanner.ts +5 -5
  96. package/Server/Utils/AI/SRE/Insights/Triage.ts +6 -5
  97. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +8 -7
  98. package/Server/Utils/AI/SRE/InvestigationEligibility.ts +1 -1
  99. package/Server/Utils/AI/SRE/InvestigationQueue.ts +65 -57
  100. package/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.ts +1 -1
  101. package/Server/Utils/AI/Toolbox/AIActionTools.ts +11 -1
  102. package/Server/Utils/AI/Toolbox/AIMetaTools.ts +14 -8
  103. package/Server/Utils/AI/Toolbox/MonitorTools.ts +21 -3
  104. package/Server/Utils/AI/Toolbox/OnCallTools.ts +43 -9
  105. package/Server/Utils/AI/Toolbox/StatusPageTools.ts +36 -7
  106. package/Server/Utils/AI/Toolbox/WorkflowProbeTools.ts +26 -7
  107. package/Server/Utils/AnalyticsDatabase/ClusterConfig.ts +3 -1
  108. package/Server/Utils/Express.ts +23 -0
  109. package/Server/Utils/IncomingCall/MissedCallNotification.ts +322 -0
  110. package/Server/Utils/Mcp/McpDelegationToken.ts +171 -0
  111. package/Server/Utils/Mcp/McpOAuthConfig.ts +191 -0
  112. package/Server/Utils/Mcp/McpOAuthGrantAccess.ts +303 -0
  113. package/Server/Utils/Mcp/McpOAuthSecret.ts +149 -0
  114. package/Server/Utils/Mcp/McpOAuthSignedToken.ts +225 -0
  115. package/Server/Utils/Mcp/McpOAuthSso.ts +274 -0
  116. package/Server/Utils/Monitor/MonitorPayloadRedaction.ts +43 -0
  117. package/Server/Utils/Monitor/MonitorResource.ts +16 -3
  118. package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +5 -8
  119. package/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.ts +3 -3
  120. package/Server/Utils/Slo/SloMetricUtil.ts +3 -3
  121. package/Server/Utils/Telemetry/DatabaseEndpointDiscovery.ts +11 -3
  122. package/Server/Utils/Telemetry/MessageQueueDiscovery.ts +7 -0
  123. package/Server/Utils/Telemetry/ServiceDependencyDiscovery.ts +171 -17
  124. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +2 -0
  125. package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +2 -0
  126. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +2 -0
  127. package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +2 -0
  128. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.ts +4 -0
  129. package/Server/Utils/Workspace/Slack/Actions/Alert.ts +2 -0
  130. package/Server/Utils/Workspace/Slack/Actions/AlertEpisode.ts +2 -0
  131. package/Server/Utils/Workspace/Slack/Actions/Incident.ts +4 -0
  132. package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +2 -0
  133. package/Tests/App/Accounts/LoginPasskey.test.tsx +27 -0
  134. package/Tests/App/Accounts/McpAuthorizePage.test.tsx +2034 -0
  135. package/Tests/App/AdvancedMenuSectionsCollapsed.test.tsx +446 -0
  136. package/Tests/App/Dashboard/AIFeaturesSettingsPointers.test.tsx +55 -19
  137. package/Tests/App/Dashboard/AIInvestigationSettingsLimits.test.tsx +451 -0
  138. package/Tests/App/Dashboard/AIInvestigationStage.test.ts +141 -0
  139. package/Tests/App/Dashboard/AiAccessModes.test.ts +261 -0
  140. package/Tests/App/Dashboard/AiAccessRow.test.tsx +401 -0
  141. package/Tests/App/Dashboard/AlertEpisodeViewFields.test.tsx +19 -6
  142. package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +76 -33
  143. package/Tests/App/Dashboard/AnswerSources.test.tsx +359 -0
  144. package/Tests/App/Dashboard/ArchivableResourceListPages.test.tsx +655 -0
  145. package/Tests/App/Dashboard/ArchivedResourceBanner.test.tsx +543 -0
  146. package/Tests/App/Dashboard/ArchivedResourceNavigation.test.tsx +634 -0
  147. package/Tests/App/Dashboard/ArchivedResourceViewLayouts.test.tsx +321 -0
  148. package/Tests/App/Dashboard/BulkChangeStateModalSteps.test.ts +109 -0
  149. package/Tests/App/Dashboard/CodeProduct.test.tsx +194 -0
  150. package/Tests/App/Dashboard/ConversationComposer.test.tsx +439 -0
  151. package/Tests/App/Dashboard/CoreListEmptyStates.test.tsx +5 -3
  152. package/Tests/App/Dashboard/CorrelateResultSummary.test.tsx +15 -3
  153. package/Tests/App/Dashboard/CreateOAuthWorkflowVariableFormSteps.test.tsx +925 -0
  154. package/Tests/App/Dashboard/CreateOAuthWorkflowVariableModal.test.tsx +267 -20
  155. package/Tests/App/Dashboard/CreateWorkflowModal.test.tsx +493 -100
  156. package/Tests/App/Dashboard/DangerZone.test.tsx +146 -3
  157. package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +0 -3
  158. package/Tests/App/Dashboard/DeleteDialogsNameTheResource.test.tsx +257 -0
  159. package/Tests/App/Dashboard/DeveloperDocsGuides.test.ts +458 -0
  160. package/Tests/App/Dashboard/DeveloperDocsLocales.test.ts +124 -0
  161. package/Tests/App/Dashboard/DeveloperDocsPage.test.tsx +471 -0
  162. package/Tests/App/Dashboard/DeveloperMenuSections.test.tsx +657 -0
  163. package/Tests/App/Dashboard/DisabledWarningArchived.test.tsx +196 -0
  164. package/Tests/App/Dashboard/DiscoveryScanEditForm.test.tsx +52 -82
  165. package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +67 -0
  166. package/Tests/App/Dashboard/EscalationRuleReadiness.test.tsx +47 -0
  167. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +2 -1
  168. package/Tests/App/Dashboard/HomeOverviewStatsFirstRun.test.tsx +19 -2
  169. package/Tests/App/Dashboard/IncidentAlertLinkSideMenus.test.tsx +3 -1
  170. package/Tests/App/Dashboard/IncidentEpisodeViewFields.test.tsx +19 -6
  171. package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +82 -49
  172. package/Tests/App/Dashboard/InventoryItemSideMenu.test.tsx +1 -0
  173. package/Tests/App/Dashboard/InvestigationConversation.test.tsx +1401 -43
  174. package/Tests/App/Dashboard/InvestigationConversationData.test.ts +452 -0
  175. package/Tests/App/Dashboard/InvestigationNotStarted.test.tsx +134 -1
  176. package/Tests/App/Dashboard/InvestigationNotice.test.tsx +300 -0
  177. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +525 -53
  178. package/Tests/App/Dashboard/KubernetesClusterAiAccessSettings.test.ts +106 -30
  179. package/Tests/App/Dashboard/KubernetesClusterAiAgentStatus.test.ts +743 -9
  180. package/Tests/App/Dashboard/KubernetesClusterAiPage.test.tsx +838 -81
  181. package/Tests/App/Dashboard/KubernetesClusterAiPageServerParity.test.ts +958 -7
  182. package/Tests/App/Dashboard/McpAuthorizationResume.test.tsx +495 -0
  183. package/Tests/App/Dashboard/McpServerPage.test.tsx +1106 -0
  184. package/Tests/App/Dashboard/MessageQueueSideMenus.test.tsx +16 -4
  185. package/Tests/App/Dashboard/MonitorCriteriaAdvancedOptions.test.tsx +267 -0
  186. package/Tests/App/Dashboard/MonitorOverviewInput.test.ts +3 -0
  187. package/Tests/App/Dashboard/MonitorSecretsAccessForm.test.tsx +727 -0
  188. package/Tests/App/Dashboard/MonitorViewLayout.test.tsx +37 -0
  189. package/Tests/App/Dashboard/MovedRunnerSettingsRedirects.test.tsx +345 -0
  190. package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +4 -1
  191. package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +36 -4
  192. package/Tests/App/Dashboard/NotificationRuleFormParts.test.tsx +247 -0
  193. package/Tests/App/Dashboard/OAuthIdentityProviders.test.tsx +589 -0
  194. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +12 -1
  195. package/Tests/App/Dashboard/PermissionModePicker.test.tsx +316 -0
  196. package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +83 -39
  197. package/Tests/App/Dashboard/ProductOrientation.test.tsx +37 -4
  198. package/Tests/App/Dashboard/ProjectAISettingsPages.test.tsx +244 -76
  199. package/Tests/App/Dashboard/RecommendationsLoadedContext.test.tsx +57 -1
  200. package/Tests/App/Dashboard/ResourceAiAccessSettingsUtil.test.ts +190 -23
  201. package/Tests/App/Dashboard/ResourceAiAgentAttentionServerParity.test.ts +5 -11
  202. package/Tests/App/Dashboard/ResourceAiAgentPage.test.tsx +458 -103
  203. package/Tests/App/Dashboard/ResourceAiAgentStatus.test.ts +8 -4
  204. package/Tests/App/Dashboard/ResourceArchiveCopy.test.ts +218 -0
  205. package/Tests/App/Dashboard/ResourceAuditLogsSideMenus.test.tsx +16 -2
  206. package/Tests/App/Dashboard/RumSessionReplaySideMenu.test.tsx +1 -0
  207. package/Tests/App/Dashboard/RunbookRunnerRoutes.test.tsx +403 -0
  208. package/Tests/App/Dashboard/RunnerKubernetesAgentForm.test.tsx +26 -17
  209. package/Tests/App/Dashboard/RunnerNavigation.test.tsx +577 -0
  210. package/Tests/App/Dashboard/RunnerPagesInRunbooksFlow.test.tsx +581 -0
  211. package/Tests/App/Dashboard/RunnerProductSearch.test.tsx +195 -0
  212. package/Tests/App/Dashboard/RunnerSupersededByAiAgentNote.test.tsx +19 -6
  213. package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +2 -1
  214. package/Tests/App/Dashboard/SecurityEventSeverityPill.test.tsx +39 -15
  215. package/Tests/App/Dashboard/SloListSideMenu.test.tsx +2 -1
  216. package/Tests/App/Dashboard/SloNavigationWiring.test.tsx +20 -1
  217. package/Tests/App/Dashboard/SloViewSideMenu.test.tsx +14 -2
  218. package/Tests/App/Dashboard/TelemetryIngestionKeyEdit.test.tsx +107 -13
  219. package/Tests/App/Dashboard/UserElementEmail.test.tsx +50 -0
  220. package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +42 -8
  221. package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +51 -1
  222. package/Tests/App/Dashboard/WorkflowBuilderArchived.test.tsx +490 -0
  223. package/Tests/App/Dashboard/WorkflowBuilderIncomingEmailSecretKey.test.tsx +436 -0
  224. package/Tests/App/Dashboard/WorkflowBuilderRunDownload.test.tsx +416 -0
  225. package/Tests/App/Dashboard/WorkflowBuilderTurnOn.test.tsx +828 -0
  226. package/Tests/App/Dashboard/WorkflowBuilderWebhookSecretKey.test.tsx +499 -0
  227. package/Tests/App/Dashboard/WorkflowRunsLogsMenus.test.tsx +758 -0
  228. package/Tests/App/Dashboard/WorkflowRunsPages.test.tsx +507 -0
  229. package/Tests/App/Dashboard/WorkflowSettingsPage.test.tsx +172 -0
  230. package/Tests/App/Dashboard/WorkflowTemplatePicker.test.tsx +1425 -0
  231. package/Tests/App/Dashboard/WorkflowVariableCreateFormSteps.test.tsx +473 -0
  232. package/Tests/App/Dashboard/WorkflowVariableOAuthSettingsEditSteps.test.tsx +390 -0
  233. package/Tests/App/Dashboard/WorkflowVariableUtil.test.ts +357 -30
  234. package/Tests/App/Dashboard/WorkflowVariableView.test.tsx +49 -0
  235. package/Tests/App/Dashboard/WorkflowVariablesTable.test.tsx +72 -2
  236. package/Tests/App/Dashboard/WorkspaceNotificationRuleFormSteps.test.tsx +499 -0
  237. package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +31 -0
  238. package/Tests/DialogActionRules.ts +1696 -0
  239. package/Tests/Helpers/FormStepsScan.ts +1917 -0
  240. package/Tests/Helpers/ToggleUsageScan.ts +302 -0
  241. package/Tests/Models/AnalyticsModels/TelemetryTtlSettings.test.ts +164 -0
  242. package/Tests/Models/DatabaseModels/ArchivableResourceModels.test.ts +475 -0
  243. package/Tests/Models/DatabaseModels/IncomingCallLogWorkflow.test.ts +130 -0
  244. package/Tests/Models/DatabaseModels/PermissionCatalogueCoverage.test.ts +0 -1
  245. package/Tests/Models/DatabaseModels/WorkflowIncomingEmailSecretKeyAccessControl.test.ts +252 -0
  246. package/Tests/Models/DatabaseModels/WorkflowWebhookSecretKeyAccessControl.test.ts +223 -0
  247. package/Tests/Models/McpOAuthModels.test.ts +951 -0
  248. package/Tests/Server/API/AIInvestigationAPI.test.ts +6 -4
  249. package/Tests/Server/API/ArchivedPublicRoutes.test.ts +481 -0
  250. package/Tests/Server/API/AutoRemediationApproveClusterRound.test.ts +144 -105
  251. package/Tests/Server/API/AutoRemediationApproveEnableAiGate.test.ts +816 -0
  252. package/Tests/Server/API/AutoRemediationApproveKubectlRecheck.test.ts +37 -5
  253. package/Tests/Server/API/AutoRemediationApproveResourceRound.test.ts +68 -57
  254. package/Tests/Server/API/CommonAPIAuditIdentityProps.test.ts +468 -0
  255. package/Tests/Server/API/ResourceAiAccessAPI.test.ts +0 -4
  256. package/Tests/Server/API/StatusPagePublicReadsLeaveOutArchivedMonitors.test.ts +126 -0
  257. package/Tests/Server/Infrastructure/Postgres/AddArchiveToMoreResourcesMigration.test.ts +200 -0
  258. package/Tests/Server/Infrastructure/Postgres/FoldAiSwitchesIntoEnableAiMigration.test.ts +543 -0
  259. package/Tests/Server/Infrastructure/Postgres/FoldAiSwitchesIntoEnableAiPostgres.test.ts +862 -0
  260. package/Tests/Server/Middleware/McpDelegationAuthorization.test.ts +862 -0
  261. package/Tests/Server/Middleware/McpOAuthRateLimit.test.ts +959 -0
  262. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyIdentity.test.ts +361 -0
  263. package/Tests/Server/Middleware/UserAuthorizationMcpDelegation.test.ts +568 -0
  264. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +60 -0
  265. package/Tests/Server/Services/AddMcpOAuthTablesMigration.test.ts +616 -0
  266. package/Tests/Server/Services/AiAccessEnableAiMasterSwitch.test.ts +761 -0
  267. package/Tests/Server/Services/AnalyticsDatabaseServiceReadOnlyCredentialBeforeHooks.test.ts +224 -0
  268. package/Tests/Server/Services/ApiKeyServiceResolvedName.test.ts +307 -0
  269. package/Tests/Server/Services/ArchivedStatusPageAndDashboardAccess.test.ts +505 -0
  270. package/Tests/Server/Services/AutoRemediationClusterRuleEngine.test.ts +61 -4
  271. package/Tests/Server/Services/AutoRemediationCommandRuleEngine.test.ts +64 -13
  272. package/Tests/Server/Services/AutoRemediationEnableAiMasterSwitch.test.ts +767 -0
  273. package/Tests/Server/Services/AutoRemediationResourceRuleEngine.test.ts +47 -8
  274. package/Tests/Server/Services/AutoRemediationRuleCommandRunners.test.ts +1 -1
  275. package/Tests/Server/Services/AutoRemediationRuleEngineService.test.ts +48 -6
  276. package/Tests/Server/Services/DatabaseServerService.test.ts +420 -0
  277. package/Tests/Server/Services/DatabaseServerSqlPostgres.test.ts +296 -2
  278. package/Tests/Server/Services/DatabaseServiceReadOnlyCredentialBeforeHooks.test.ts +396 -0
  279. package/Tests/Server/Services/InboundEmail/SendGridInboundProviderRecipients.test.ts +172 -0
  280. package/Tests/Server/Services/IncomingCallMissedCallNotificationService.test.ts +690 -0
  281. package/Tests/Server/Services/IncomingCallPolicyFindOwners.test.ts +287 -0
  282. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +4 -3
  283. package/Tests/Server/Services/KubernetesClusterAiAccessAgentRunnerAssignments.test.ts +1 -1
  284. package/Tests/Server/Services/KubernetesClusterAiAccessDeletedRunnerRemedy.test.ts +2 -4
  285. package/Tests/Server/Services/KubernetesClusterAiAccessGapNextSteps.test.ts +26 -13
  286. package/Tests/Server/Services/KubernetesClusterAiAccessService.test.ts +180 -44
  287. package/Tests/Server/Services/KubernetesClusterAiAccessTarget.test.ts +14 -10
  288. package/Tests/Server/Services/LogAggregationService.test.ts +101 -1
  289. package/Tests/Server/Services/McpOAuthClientService.test.ts +562 -0
  290. package/Tests/Server/Services/McpOAuthGrantService.test.ts +899 -0
  291. package/Tests/Server/Services/McpOAuthPostgres.test.ts +942 -0
  292. package/Tests/Server/Services/McpOAuthTokenService.test.ts +782 -0
  293. package/Tests/Server/Services/MonitorGroupServiceBatchedStatuses.test.ts +35 -1
  294. package/Tests/Server/Services/MonitorPayAsYouGoBilling.test.ts +35 -0
  295. package/Tests/Server/Services/MonitorSecretAccessPostgres.test.ts +883 -0
  296. package/Tests/Server/Services/MonitorSecretService.test.ts +1097 -0
  297. package/Tests/Server/Services/OnCallDutyPolicyArchive.test.ts +157 -0
  298. package/Tests/Server/Services/ProjectServiceNewProjectAiDefaults.test.ts +132 -82
  299. package/Tests/Server/Services/ResourceAiAccessService.test.ts +28 -14
  300. package/Tests/Server/Services/RunnerJobEnqueueKubectlAiAgent.test.ts +0 -2
  301. package/Tests/Server/Services/ScimPushGroupsTeamLocksEdition.test.ts +5 -0
  302. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +13 -1
  303. package/Tests/Server/Services/TeamMemberInvitationAcceptancePostgres.test.ts +942 -0
  304. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +6 -1
  305. package/Tests/Server/Services/TeamMemberProjectInvitationAcceptance.test.ts +1256 -0
  306. package/Tests/Server/Services/TeamMemberSeatLimitExistingMember.test.ts +498 -0
  307. package/Tests/Server/Services/UserNotificationSettingIncomingCallDefaults.test.ts +190 -0
  308. package/Tests/Server/Services/WorkflowIncomingEmailSecretKeyPostgres.test.ts +323 -0
  309. package/Tests/Server/Services/WorkflowService.test.ts +188 -0
  310. package/Tests/Server/Types/Workflow/Components/CustomCodeScriptError.test.ts +19 -20
  311. package/Tests/Server/Types/Workflow/Components/IfElse.test.ts +357 -66
  312. package/Tests/Server/Types/Workflow/Components/IncomingEmailTrigger.test.ts +670 -0
  313. package/Tests/Server/Types/Workflow/Components/TriggersSkipArchivedWorkflows.test.ts +257 -0
  314. package/Tests/Server/Utils/AI/AIAlertGating.test.ts +317 -184
  315. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +47 -23
  316. package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +142 -12
  317. package/Tests/Server/Utils/AI/AIMetaTools.test.ts +31 -0
  318. package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +2 -0
  319. package/Tests/Server/Utils/AI/ArchivedResourcesInAITools.test.ts +622 -0
  320. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +30 -1
  321. package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +5 -4
  322. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +202 -98
  323. package/Tests/Server/Utils/AI/Insights/InsightFixRouting.test.ts +1 -1
  324. package/Tests/Server/Utils/AI/Insights/InsightTriage.test.ts +1 -1
  325. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +102 -58
  326. package/Tests/Server/Utils/AI/InvestigationEligibility.test.ts +24 -0
  327. package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +41 -5
  328. package/Tests/Server/Utils/AI/OpenPullRequestCap.test.ts +62 -22
  329. package/Tests/Server/Utils/AI/RemediationCommandToolsLiveCluster.test.ts +14 -10
  330. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +205 -104
  331. package/Tests/Server/Utils/AI/RemediationExecutionRunnerEnableAiGate.test.ts +598 -0
  332. package/Tests/Server/Utils/AI/RemediationExecutionRunnerProjectGates.test.ts +94 -158
  333. package/Tests/Server/Utils/AI/RemediationExecutionRunnerResourceMode.test.ts +48 -66
  334. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAccessContext.test.ts +0 -4
  335. package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +8 -1
  336. package/Tests/Server/Utils/IncomingCall/MissedCallNotification.test.ts +555 -0
  337. package/Tests/Server/Utils/Mcp/McpDelegationToken.test.ts +677 -0
  338. package/Tests/Server/Utils/Mcp/McpOAuthConfig.test.ts +549 -0
  339. package/Tests/Server/Utils/Mcp/McpOAuthGrantAccess.test.ts +1476 -0
  340. package/Tests/Server/Utils/Mcp/McpOAuthSecret.test.ts +721 -0
  341. package/Tests/Server/Utils/Mcp/McpOAuthSignedToken.test.ts +1042 -0
  342. package/Tests/Server/Utils/Mcp/McpOAuthSso.test.ts +1399 -0
  343. package/Tests/Server/Utils/Monitor/GeneratedInboundAddressRedaction.test.ts +109 -0
  344. package/Tests/Server/Utils/Monitor/MonitorPauseFlagsGuard.test.ts +237 -0
  345. package/Tests/Server/Utils/Monitor/MonitorResourceArchived.test.ts +165 -0
  346. package/Tests/Server/Utils/Telemetry/DatabaseEndpointDiscovery.test.ts +262 -0
  347. package/Tests/Server/Utils/Telemetry/ServiceDependencyDiscovery.test.ts +976 -77
  348. package/Tests/Server/Utils/Topology/TopologyConcurrencyLimiter.test.ts +94 -39
  349. package/Tests/Server/Utils/Workspace/ArchivedOnCallPoliciesNotOffered.test.ts +133 -0
  350. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.test.ts +10 -3
  351. package/Tests/Types/AI/AIWorkloadLimits.test.ts +101 -0
  352. package/Tests/Types/BaseDatabase/ReadOnlyCredential.test.ts +931 -0
  353. package/Tests/Types/Call/CallProvider.test.ts +54 -1
  354. package/Tests/Types/DatabaseServer/DatabaseEndpoint.test.ts +227 -1
  355. package/Tests/Types/IncomingCall/MissedIncomingCall.test.ts +137 -0
  356. package/Tests/Types/Kubernetes/KubernetesAiAgentAccessContract.test.ts +23 -0
  357. package/Tests/Types/Mcp/McpOAuthScope.test.ts +491 -0
  358. package/Tests/Types/Monitor/MonitorSecretAccess.test.ts +347 -0
  359. package/Tests/Types/NotificationSetting/IncomingCallMissedNotificationEvent.test.ts +77 -0
  360. package/Tests/Types/NotificationSetting/NotificationEmailRollupPolicy.test.ts +5 -5
  361. package/Tests/Types/Workflow/BaseModelComponents.test.ts +56 -50
  362. package/Tests/Types/Workflow/ComponentDocumentation.test.ts +1396 -0
  363. package/Tests/Types/Workflow/Components/BaseModelWriteSteps.test.ts +158 -0
  364. package/Tests/Types/Workflow/Components/JSON.test.ts +6 -2
  365. package/Tests/Types/Workflow/ConditionEvaluation.test.ts +793 -0
  366. package/Tests/Types/Workflow/DocumentationText.test.ts +169 -0
  367. package/Tests/Types/Workflow/IncomingEmailTrigger.test.ts +446 -0
  368. package/Tests/Types/Workflow/IncomingEmailTriggerDocumentation.test.ts +174 -0
  369. package/Tests/Types/Workflow/StepSamples.test.ts +846 -0
  370. package/Tests/Types/Workflow/StepTrace.test.ts +128 -0
  371. package/Tests/Types/Workflow/StepTraceValueSample.test.ts +205 -0
  372. package/Tests/Types/Workflow/SystemColumns.test.ts +114 -0
  373. package/Tests/Types/Workflow/Templates.test.ts +345 -0
  374. package/Tests/Types/Workflow/WebhookTrigger.test.ts +221 -0
  375. package/Tests/Types/Workflow/WorkflowEnabled.test.ts +107 -0
  376. package/Tests/Types/Workspace/NotificationRuleValidationHalves.test.ts +217 -0
  377. package/Tests/UI/Components/ActionButton/RowActionsTrigger.test.tsx +748 -0
  378. package/Tests/UI/Components/BasicFormModalSteps.test.tsx +113 -0
  379. package/Tests/UI/Components/BulkUpdateFormConfirmDetails.test.tsx +148 -0
  380. package/Tests/UI/Components/Button.test.tsx +52 -13
  381. package/Tests/UI/Components/Card.test.tsx +211 -2
  382. package/Tests/UI/Components/CodeEditor/CodeEditorToolbarActions.test.tsx +121 -0
  383. package/Tests/UI/Components/CollapsibleSection.test.tsx +152 -0
  384. package/Tests/UI/Components/ComponentsModal.test.tsx +555 -930
  385. package/Tests/UI/Components/ComponentsModalUsability.test.tsx +279 -401
  386. package/Tests/UI/Components/ConfirmModal.test.tsx +195 -0
  387. package/Tests/UI/Components/DeleteConfirmation/DeleteConfirmation.test.tsx +524 -0
  388. package/Tests/UI/Components/Detail/DropdownColors.test.tsx +11 -9
  389. package/Tests/UI/Components/Detail/EntityFields.test.tsx +10 -4
  390. package/Tests/UI/Components/DictionaryRenderTextValueInput.test.tsx +94 -0
  391. package/Tests/UI/Components/Dropdown/DropdownValueBadge.test.tsx +79 -10
  392. package/Tests/UI/Components/Forms/BasicFormSubmitAllSteps.test.tsx +293 -0
  393. package/Tests/UI/Components/Forms/FormFieldCheckboxTranslation.test.tsx +14 -12
  394. package/Tests/UI/Components/Forms/FormFieldCustomElementLabel.test.tsx +156 -0
  395. package/Tests/UI/Components/Forms/FormFieldDictionaryError.test.tsx +198 -0
  396. package/Tests/UI/Components/Forms/FormFieldLongText.test.tsx +200 -0
  397. package/Tests/UI/Components/Forms/FormFieldToggleRow.test.tsx +388 -0
  398. package/Tests/UI/Components/Forms/LongFormStepsGuard.test.ts +586 -0
  399. package/Tests/UI/Components/Forms/ModelFormFormOnlyFields.test.tsx +254 -0
  400. package/Tests/UI/Components/Forms/OverloadedFormStepsGuard.test.ts +505 -0
  401. package/Tests/UI/Components/Forms/ValidationRequiredWhen.test.ts +122 -0
  402. package/Tests/UI/Components/Icon.test.tsx +43 -0
  403. package/Tests/UI/Components/Modal.test.tsx +495 -1
  404. package/Tests/UI/Components/ModalSecondaryButton.test.tsx +122 -0
  405. package/Tests/UI/Components/ModelCardPermissionGating.test.tsx +13 -9
  406. package/Tests/UI/Components/ModelDelete.test.tsx +7 -0
  407. package/Tests/UI/Components/ModelDeleteNames.test.tsx +784 -0
  408. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteAndEmptyStates.test.tsx +9 -2
  409. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteConfirmation.test.tsx +4 -1
  410. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteNames.test.tsx +573 -0
  411. package/Tests/UI/Components/ModelTable/BaseModelTableEmptyStateAction.test.tsx +30 -9
  412. package/Tests/UI/Components/ModelTable/BaseModelTableRowActions.test.tsx +6 -3
  413. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +20 -14
  414. package/Tests/UI/Components/NavBar.test.tsx +45 -0
  415. package/Tests/UI/Components/Pill.test.tsx +369 -50
  416. package/Tests/UI/Components/PillColors.test.ts +524 -0
  417. package/Tests/UI/Components/SideMenu.test.tsx +461 -0
  418. package/Tests/UI/Components/SideMenuSection.test.tsx +200 -0
  419. package/Tests/UI/Components/SideMenuSectionState.test.tsx +362 -0
  420. package/Tests/UI/Components/SteppedEditFormSave.test.tsx +499 -0
  421. package/Tests/UI/Components/TableRowActions.test.tsx +110 -0
  422. package/Tests/UI/Components/TextAreaAutoGrow.test.tsx +387 -0
  423. package/Tests/UI/Components/Toggle.test.tsx +846 -6
  424. package/Tests/UI/Components/ToggleUsageGuard.test.ts +274 -0
  425. package/Tests/UI/Components/Workflow/ArgumentInputTypes.test.ts +710 -0
  426. package/Tests/UI/Components/Workflow/ArgumentsForm.test.tsx +934 -0
  427. package/Tests/UI/Components/Workflow/ArgumentsFormAdvancedSettings.test.tsx +207 -0
  428. package/Tests/UI/Components/Workflow/BreakableCode.test.tsx +153 -0
  429. package/Tests/UI/Components/Workflow/ColumnEditor/AddColumnPicker.test.tsx +685 -0
  430. package/Tests/UI/Components/Workflow/ColumnEditor/AddColumnPickerDarkMode.test.ts +252 -0
  431. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnControl.test.ts +207 -5
  432. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.test.ts +570 -0
  433. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnUse.test.ts +248 -0
  434. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnValueInputLongText.test.tsx +90 -0
  435. package/Tests/UI/Components/Workflow/ColumnEditor/ColumnValueInputValuePicker.test.tsx +282 -0
  436. package/Tests/UI/Components/Workflow/Component.test.tsx +465 -0
  437. package/Tests/UI/Components/Workflow/ComponentPicker/ComponentPickerDarkMode.test.ts +239 -0
  438. package/Tests/UI/Components/Workflow/ComponentPicker/ComponentPickerRealCatalog.test.tsx +399 -0
  439. package/Tests/UI/Components/Workflow/ComponentPicker/ComponentSearch.test.ts +660 -0
  440. package/Tests/UI/Components/Workflow/ComponentPicker/PickerCatalog.test.ts +352 -0
  441. package/Tests/UI/Components/Workflow/ComponentPicker/PickerFixtures.ts +240 -0
  442. package/Tests/UI/Components/Workflow/ComponentPortViewer.test.tsx +91 -0
  443. package/Tests/UI/Components/Workflow/ComponentReturnValueViewer.test.tsx +248 -0
  444. package/Tests/UI/Components/Workflow/ComponentSettingsDeleteConfirmation.test.tsx +245 -0
  445. package/Tests/UI/Components/Workflow/ComponentSettingsModal.test.tsx +1033 -0
  446. package/Tests/UI/Components/Workflow/ComponentSettingsModalDarkMode.test.ts +276 -0
  447. package/Tests/UI/Components/Workflow/ComponentSettingsModalDocumentation.test.tsx +478 -0
  448. package/Tests/UI/Components/Workflow/ComponentSettingsModalIncomingEmail.test.tsx +606 -0
  449. package/Tests/UI/Components/Workflow/ComponentSettingsModalLayout.test.tsx +478 -0
  450. package/Tests/UI/Components/Workflow/ComponentSettingsModalStepSamples.test.tsx +343 -0
  451. package/Tests/UI/Components/Workflow/ComponentSettingsModalValidity.test.tsx +223 -0
  452. package/Tests/UI/Components/Workflow/ComponentSettingsRunStepConfirmation.test.tsx +286 -0
  453. package/Tests/UI/Components/Workflow/Condition/ConditionCanvasCard.test.tsx +208 -0
  454. package/Tests/UI/Components/Workflow/Condition/ConditionEditor.test.tsx +906 -0
  455. package/Tests/UI/Components/Workflow/Condition/ConditionGraphLint.test.ts +204 -0
  456. package/Tests/UI/Components/Workflow/Condition/ConditionModel.test.ts +986 -0
  457. package/Tests/UI/Components/Workflow/CronScheduleFieldVariable.test.tsx +115 -0
  458. package/Tests/UI/Components/Workflow/DocumentationViewer.test.tsx +592 -0
  459. package/Tests/UI/Components/Workflow/GraphLintSummary.test.ts +467 -0
  460. package/Tests/UI/Components/Workflow/IncomingEmailTriggerPanel.test.tsx +865 -0
  461. package/Tests/UI/Components/Workflow/IncomingEmailTriggerPanelI18n.test.ts +164 -0
  462. package/Tests/UI/Components/Workflow/ModelColumnEditor.render.test.tsx +35 -19
  463. package/Tests/UI/Components/Workflow/ModelColumnEditorFieldLists.render.test.tsx +660 -0
  464. package/Tests/UI/Components/Workflow/ModelFieldPicker.test.tsx +230 -0
  465. package/Tests/UI/Components/Workflow/NodePlacement.test.ts +379 -1
  466. package/Tests/UI/Components/Workflow/StepTracePresentation.test.ts +705 -0
  467. package/Tests/UI/Components/Workflow/StepTraceViewer.test.tsx +1039 -35
  468. package/Tests/UI/Components/Workflow/StepTraceViewerDarkMode.test.ts +275 -0
  469. package/Tests/UI/Components/Workflow/UseRunWatch.test.tsx +131 -0
  470. package/Tests/UI/Components/Workflow/UseWorkflowEnabled.test.tsx +612 -0
  471. package/Tests/UI/Components/Workflow/ValuePicker/ArgumentControl.test.ts +80 -0
  472. package/Tests/UI/Components/Workflow/ValuePicker/InsertValueButton.test.tsx +114 -0
  473. package/Tests/UI/Components/Workflow/ValuePicker/NoPickThisValueLinks.test.ts +111 -0
  474. package/Tests/UI/Components/Workflow/ValuePicker/ReferenceDescription.test.ts +257 -0
  475. package/Tests/UI/Components/Workflow/ValuePicker/StepGraph.test.ts +271 -0
  476. package/Tests/UI/Components/Workflow/ValuePicker/StepSampleSource.test.ts +763 -0
  477. package/Tests/UI/Components/Workflow/ValuePicker/StepSampleSourceIncomingEmail.test.ts +234 -0
  478. package/Tests/UI/Components/Workflow/ValuePicker/StepValueSource.test.ts +366 -0
  479. package/Tests/UI/Components/Workflow/ValuePicker/TemplateText.test.ts +256 -0
  480. package/Tests/UI/Components/Workflow/ValuePicker/TemplateTextDom.test.ts +264 -0
  481. package/Tests/UI/Components/Workflow/ValuePicker/TemplateTextEditor.test.tsx +740 -0
  482. package/Tests/UI/Components/Workflow/ValuePicker/TemplateTextHistory.test.ts +139 -0
  483. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerContext.test.tsx +473 -0
  484. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerContextRefresh.test.tsx +444 -0
  485. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerDarkMode.test.ts +231 -0
  486. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerMenu.test.tsx +612 -0
  487. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerMenuSamples.test.tsx +784 -0
  488. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerPopupPosition.test.ts +113 -0
  489. package/Tests/UI/Components/Workflow/ValuePicker/ValuePickerTestUtils.tsx +171 -0
  490. package/Tests/UI/Components/Workflow/ValuePicker/ValueSingleField.test.tsx +350 -0
  491. package/Tests/UI/Components/Workflow/ValuePicker/ValueSuggestion.test.ts +377 -0
  492. package/Tests/UI/Components/Workflow/ValuePicker/ValueSuggestionSamples.test.ts +357 -0
  493. package/Tests/UI/Components/Workflow/ValuePicker/ValueTextField.test.tsx +430 -0
  494. package/Tests/UI/Components/Workflow/ValuePicker/VariableValueSource.test.ts +101 -0
  495. package/Tests/UI/Components/Workflow/WebhookTriggerPanel.test.tsx +833 -0
  496. package/Tests/UI/Components/Workflow/WebhookTriggerPanelI18n.test.ts +193 -0
  497. package/Tests/UI/Components/Workflow/Workflow.test.tsx +716 -86
  498. package/Tests/UI/Components/Workflow/WorkflowEnabledDarkMode.test.ts +178 -0
  499. package/Tests/UI/Components/Workflow/WorkflowEnabledI18n.test.tsx +319 -0
  500. package/Tests/UI/Components/Workflow/WorkflowEnabledSwitch.test.tsx +144 -0
  501. package/Tests/UI/Components/Workflow/WorkflowIncomingEmailSecretKey.test.ts +393 -0
  502. package/Tests/UI/Components/Workflow/WorkflowLogModal.test.tsx +598 -1
  503. package/Tests/UI/Components/Workflow/WorkflowRunExport.test.ts +750 -0
  504. package/Tests/UI/Components/Workflow/WorkflowRunExportActions.test.tsx +556 -0
  505. package/Tests/UI/Components/Workflow/WorkflowRunExportI18n.test.ts +200 -0
  506. package/Tests/UI/Components/Workflow/WorkflowStatusLabel.test.tsx +75 -0
  507. package/Tests/UI/Components/Workflow/WorkflowTurnOnModal.test.tsx +256 -0
  508. package/Tests/UI/Components/Workflow/WorkflowTurnedOffNotice.test.tsx +99 -0
  509. package/Tests/UI/Components/Workflow/WorkflowWebhookSecretKey.test.ts +422 -0
  510. package/Tests/UI/DeleteConfirmationNamesGuard.test.ts +643 -0
  511. package/Tests/UI/DialogActionRules.test.ts +716 -0
  512. package/Tests/UI/DialogPrimaryActionGuard.test.ts +528 -0
  513. package/Tests/UI/Styles/PillDarkTheme.test.tsx +177 -0
  514. package/Tests/UI/Styles/ToggleTheme.test.ts +685 -0
  515. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +17 -2
  516. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +3 -2
  517. package/Tests/UI/Utils/McpOAuthPendingAuthorization.test.ts +825 -0
  518. package/Tests/UI/Utils/McpOAuthPendingAuthorizationHttps.test.ts +88 -0
  519. package/Tests/UI/Utils/ModelDisplayName.test.ts +450 -0
  520. package/Tests/UI/Utils/TranslateTemplate.test.ts +149 -0
  521. package/Tests/Utils/AiRemediation/KubectlWriteScopeParityCases.ts +1 -1
  522. package/Tests/Utils/DeveloperDocs/AiAssistantExamples.test.ts +228 -0
  523. package/Tests/Utils/DeveloperDocs/ApiExamples.test.ts +252 -0
  524. package/Tests/Utils/DeveloperDocs/Hcl.test.ts +358 -0
  525. package/Tests/Utils/DeveloperDocs/HclTestValue.ts +56 -0
  526. package/Tests/Utils/DeveloperDocs/TerraformConfig.test.ts +590 -0
  527. package/Tests/Utils/DeveloperDocs/TerraformMonitorSteps.test.ts +608 -0
  528. package/Tests/Utils/DeveloperDocs/TerraformProviderSchemaContract.test.ts +250 -0
  529. package/Tests/Utils/DeveloperDocs/TerraformSchema.test.ts +284 -0
  530. package/Tests/Utils/Email/EmailAddressList.test.ts +149 -0
  531. package/Tests/Utils/Monitor/IncomingEmailMonitorAddress.test.ts +131 -0
  532. package/Tests/Utils/Monitor/MonitorOverviewArchived.test.ts +266 -0
  533. package/Tests/Utils/Monitor/MonitorPauseState.test.ts +143 -0
  534. package/Tests/Utils/Rum/SessionIdentity.test.ts +146 -0
  535. package/Tests/Utils/StatusPage/ArchivedMonitorResources.test.ts +99 -0
  536. package/Types/AI/AIRunType.ts +7 -6
  537. package/Types/AI/AIWorkloadLimits.ts +82 -0
  538. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +2 -2
  539. package/Types/AnalyticsDatabase/RetentionTtl.ts +57 -0
  540. package/Types/BaseDatabase/DatabaseCommonInteractionProps.ts +21 -0
  541. package/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.ts +24 -0
  542. package/Types/BaseDatabase/EnableWorkflowOn.ts +8 -0
  543. package/Types/Call/CallProvider.ts +7 -0
  544. package/Types/Database/TableMetadata.ts +10 -0
  545. package/Types/DatabaseServer/DatabaseEndpoint.ts +43 -0
  546. package/Types/Email/EmailTemplateType.ts +2 -0
  547. package/Types/Exception/ExceptionMessages.ts +1 -0
  548. package/Types/IncomingCall/MissedIncomingCall.ts +72 -0
  549. package/Types/Kubernetes/KubernetesClusterAiAccess.ts +5 -0
  550. package/Types/Mcp/McpOAuthClientAuthMethod.ts +17 -0
  551. package/Types/Mcp/McpOAuthScope.ts +180 -0
  552. package/Types/Mcp/McpOAuthTicket.ts +21 -0
  553. package/Types/Mcp/McpOAuthTokenType.ts +18 -0
  554. package/Types/Monitor/MonitorSecretAccess.ts +185 -0
  555. package/Types/NotificationSetting/NotificationEmailRollupCategory.ts +13 -2
  556. package/Types/NotificationSetting/NotificationEmailRollupPolicy.ts +1 -1
  557. package/Types/NotificationSetting/NotificationSettingEventType.ts +3 -0
  558. package/Types/OnCallDutyPolicy/OnCallDutyPolicyArchive.ts +19 -0
  559. package/Types/Permission.ts +44 -0
  560. package/Types/ResourceAiAgent/ResourceAiAccess.ts +7 -2
  561. package/Types/StatusPage/StatusPageArchive.ts +20 -0
  562. package/Types/Workflow/Component.ts +61 -2
  563. package/Types/Workflow/ComponentID.ts +1 -0
  564. package/Types/Workflow/Components/AI.ts +2 -4
  565. package/Types/Workflow/Components/API.ts +46 -26
  566. package/Types/Workflow/Components/BaseModel.ts +28 -37
  567. package/Types/Workflow/Components/Condition.ts +82 -30
  568. package/Types/Workflow/Components/ConditionComparison.ts +348 -0
  569. package/Types/Workflow/Components/ConditionEvaluation.ts +438 -0
  570. package/Types/Workflow/Components/Email.ts +1 -1
  571. package/Types/Workflow/Components/IncomingEmail.ts +140 -0
  572. package/Types/Workflow/Components/JSON.ts +11 -3
  573. package/Types/Workflow/Components/JavaScript.ts +0 -2
  574. package/Types/Workflow/Components/Manual.ts +2 -3
  575. package/Types/Workflow/Components/Schedule.ts +1 -2
  576. package/Types/Workflow/Components/Slack.ts +12 -4
  577. package/Types/Workflow/Components/Sleep.ts +4 -4
  578. package/Types/Workflow/Components/Webhook.ts +5 -7
  579. package/Types/Workflow/Components.ts +4 -2
  580. package/Types/Workflow/DatabaseOperation.ts +67 -0
  581. package/Types/Workflow/Documentation/AIDocumentation.ts +94 -0
  582. package/Types/Workflow/Documentation/APIDocumentation.ts +94 -0
  583. package/Types/Workflow/Documentation/ComponentDocumentation.ts +92 -0
  584. package/Types/Workflow/Documentation/DatabaseDocumentation.ts +666 -0
  585. package/Types/Workflow/Documentation/DocumentationContext.ts +245 -0
  586. package/Types/Workflow/Documentation/DocumentationLinks.ts +117 -0
  587. package/Types/Workflow/Documentation/DocumentationText.ts +141 -0
  588. package/Types/Workflow/Documentation/Index.ts +114 -0
  589. package/Types/Workflow/Documentation/MessagingDocumentation.ts +316 -0
  590. package/Types/Workflow/Documentation/ModelExamples.ts +333 -0
  591. package/Types/Workflow/Documentation/TriggerDocumentation.ts +217 -0
  592. package/Types/Workflow/Documentation/UtilityDocumentation.ts +338 -0
  593. package/Types/Workflow/IncomingEmailTrigger.ts +384 -0
  594. package/Types/Workflow/StepSamples.ts +965 -0
  595. package/Types/Workflow/StepTrace.ts +311 -6
  596. package/Types/Workflow/SystemColumns.ts +84 -0
  597. package/Types/Workflow/Templates.ts +279 -2
  598. package/Types/Workflow/WebhookTrigger.ts +87 -0
  599. package/Types/Workflow/WorkflowArchive.ts +45 -0
  600. package/Types/Workflow/WorkflowEnabled.ts +51 -0
  601. package/Types/Workflow/WorkflowStatus.ts +36 -0
  602. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +32 -2
  603. package/UI/Components/ActionButton/RowActions.tsx +8 -5
  604. package/UI/Components/ActionCard/ActionCard.tsx +22 -2
  605. package/UI/Components/BulkUpdate/BulkLabelActions.tsx +1 -0
  606. package/UI/Components/BulkUpdate/BulkOwnerActions.tsx +1 -0
  607. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +6 -0
  608. package/UI/Components/Button/Button.tsx +19 -11
  609. package/UI/Components/Card/Card.tsx +64 -19
  610. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +1 -4
  611. package/UI/Components/CodeEditor/CodeEditor.tsx +69 -0
  612. package/UI/Components/CollapsibleSection/CollapsibleSection.tsx +19 -3
  613. package/UI/Components/DeleteConfirmation/DeleteConfirmationMessage.tsx +175 -0
  614. package/UI/Components/DeleteConfirmation/DeleteItemNames.tsx +71 -0
  615. package/UI/Components/DeleteConfirmation/NamedSentence.tsx +55 -0
  616. package/UI/Components/DeleteConfirmation/TypeToConfirmDelete.tsx +90 -0
  617. package/UI/Components/Dictionary/Dictionary.tsx +31 -1
  618. package/UI/Components/Dropdown/DropdownValueBadge.tsx +21 -13
  619. package/UI/Components/EditionLabel/EditionLabel.tsx +6 -1
  620. package/UI/Components/Error/PageError.tsx +1 -1
  621. package/UI/Components/EventItem/EventItem.tsx +1 -11
  622. package/UI/Components/FormModal/BasicFormModal.tsx +23 -0
  623. package/UI/Components/Forms/BasicForm.tsx +188 -78
  624. package/UI/Components/Forms/BasicModelForm.tsx +2 -0
  625. package/UI/Components/Forms/Fields/FormField.tsx +70 -5
  626. package/UI/Components/Forms/ModelForm.tsx +8 -0
  627. package/UI/Components/Forms/Steps/Step.tsx +29 -6
  628. package/UI/Components/Forms/Steps/Steps.tsx +10 -0
  629. package/UI/Components/Forms/Types/Field.ts +41 -1
  630. package/UI/Components/Forms/Validation.ts +18 -4
  631. package/UI/Components/Icon/Icon.tsx +7 -2
  632. package/UI/Components/Label/Label.tsx +0 -2
  633. package/UI/Components/LabelRule/ImportLabelRulesModal.tsx +1 -2
  634. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +8 -0
  635. package/UI/Components/Modal/ConfirmModal.tsx +39 -8
  636. package/UI/Components/Modal/Modal.tsx +136 -10
  637. package/UI/Components/Modal/ModalFooter.tsx +28 -10
  638. package/UI/Components/ModelDelete/ModelDelete.tsx +168 -6
  639. package/UI/Components/ModelFormModal/ModelFormModal.tsx +47 -9
  640. package/UI/Components/ModelTable/BaseModelTable.tsx +58 -91
  641. package/UI/Components/ModelTable/TableView.tsx +14 -2
  642. package/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx +1 -2
  643. package/UI/Components/Navbar/NavBar.tsx +3 -2
  644. package/UI/Components/Pill/Pill.tsx +53 -43
  645. package/UI/Components/Pill/PillColors.ts +464 -0
  646. package/UI/Components/RuleRun/RunRuleNowModal.tsx +6 -0
  647. package/UI/Components/SideMenu/SideMenu.tsx +136 -12
  648. package/UI/Components/SideMenu/SideMenuSection.tsx +43 -4
  649. package/UI/Components/SideMenu/SideMenuSectionState.ts +200 -0
  650. package/UI/Components/TextArea/TextArea.tsx +174 -3
  651. package/UI/Components/Toggle/Toggle.tsx +256 -43
  652. package/UI/Components/Workflow/ArgumentsForm.tsx +496 -359
  653. package/UI/Components/Workflow/BreakableCode.tsx +88 -0
  654. package/UI/Components/Workflow/ColumnEditor/AddColumnPicker.tsx +577 -0
  655. package/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.tsx +20 -5
  656. package/UI/Components/Workflow/ColumnEditor/ColumnControl.ts +63 -4
  657. package/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.tsx +21 -4
  658. package/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.ts +387 -0
  659. package/UI/Components/Workflow/ColumnEditor/ColumnUse.ts +126 -0
  660. package/UI/Components/Workflow/ColumnEditor/ColumnValueInput.tsx +151 -84
  661. package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +13 -9
  662. package/UI/Components/Workflow/ColumnEditor/ModelRecordForm.tsx +36 -27
  663. package/UI/Components/Workflow/Component.tsx +129 -12
  664. package/UI/Components/Workflow/ComponentPicker/ComponentSearch.ts +1259 -0
  665. package/UI/Components/Workflow/ComponentPicker/PickerCatalog.ts +419 -0
  666. package/UI/Components/Workflow/ComponentPicker/PickerItems.tsx +300 -0
  667. package/UI/Components/Workflow/ComponentPortViewer.tsx +24 -60
  668. package/UI/Components/Workflow/ComponentPrimaryPanel.tsx +171 -0
  669. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +67 -88
  670. package/UI/Components/Workflow/ComponentSettingsModal.tsx +345 -105
  671. package/UI/Components/Workflow/ComponentSettingsSection.tsx +103 -0
  672. package/UI/Components/Workflow/ComponentsModal.tsx +958 -601
  673. package/UI/Components/Workflow/Condition/ConditionEditor.tsx +484 -0
  674. package/UI/Components/Workflow/Condition/ConditionModel.ts +785 -0
  675. package/UI/Components/Workflow/CronScheduleField.tsx +53 -37
  676. package/UI/Components/Workflow/DocumentationViewer.tsx +399 -118
  677. package/UI/Components/Workflow/DownloadWorkflowRun.ts +137 -0
  678. package/UI/Components/Workflow/GraphLint.ts +9 -1
  679. package/UI/Components/Workflow/GraphLintSummary.ts +142 -2
  680. package/UI/Components/Workflow/IncomingEmailTriggerPanel.tsx +502 -0
  681. package/UI/Components/Workflow/ManualTriggerPanel.tsx +41 -0
  682. package/UI/Components/Workflow/ModelColumnEditor.tsx +7 -10
  683. package/UI/Components/Workflow/ModelFieldPicker.tsx +66 -2
  684. package/UI/Components/Workflow/ModelSchema.ts +19 -24
  685. package/UI/Components/Workflow/NodePlacement.ts +235 -1
  686. package/UI/Components/Workflow/RunModal.tsx +1 -1
  687. package/UI/Components/Workflow/StepTracePresentation.ts +537 -0
  688. package/UI/Components/Workflow/StepTraceViewer.tsx +644 -83
  689. package/UI/Components/Workflow/UseRunWatch.ts +17 -0
  690. package/UI/Components/Workflow/UseWorkflowEnabled.ts +275 -0
  691. package/UI/Components/Workflow/Utils.ts +119 -103
  692. package/UI/Components/Workflow/ValuePicker/ArgumentControl.ts +146 -0
  693. package/UI/Components/Workflow/ValuePicker/DefaultValueSources.ts +148 -0
  694. package/UI/Components/Workflow/ValuePicker/InsertValueButton.tsx +116 -0
  695. package/UI/Components/Workflow/ValuePicker/ReferenceChip.tsx +162 -0
  696. package/UI/Components/Workflow/ValuePicker/ReferenceDescription.ts +303 -0
  697. package/UI/Components/Workflow/ValuePicker/StepGraph.ts +240 -0
  698. package/UI/Components/Workflow/ValuePicker/StepSampleSource.ts +537 -0
  699. package/UI/Components/Workflow/ValuePicker/StepValueSource.ts +291 -0
  700. package/UI/Components/Workflow/ValuePicker/TemplateText.ts +303 -0
  701. package/UI/Components/Workflow/ValuePicker/TemplateTextDom.ts +563 -0
  702. package/UI/Components/Workflow/ValuePicker/TemplateTextEditor.tsx +1233 -0
  703. package/UI/Components/Workflow/ValuePicker/TemplateTextHistory.ts +138 -0
  704. package/UI/Components/Workflow/ValuePicker/ValuePickerContext.tsx +529 -0
  705. package/UI/Components/Workflow/ValuePicker/ValuePickerMenu.tsx +1003 -0
  706. package/UI/Components/Workflow/ValuePicker/ValuePickerPopup.tsx +310 -0
  707. package/UI/Components/Workflow/ValuePicker/ValueSingleField.tsx +274 -0
  708. package/UI/Components/Workflow/ValuePicker/ValueSuggestion.ts +694 -0
  709. package/UI/Components/Workflow/ValuePicker/ValueTextField.tsx +334 -0
  710. package/UI/Components/Workflow/ValuePicker/VariableValueSource.ts +132 -0
  711. package/UI/Components/Workflow/WebhookTriggerPanel.tsx +522 -0
  712. package/UI/Components/Workflow/Workflow.tsx +381 -36
  713. package/UI/Components/Workflow/WorkflowEnabledCopy.ts +55 -0
  714. package/UI/Components/Workflow/WorkflowEnabledSwitch.tsx +44 -0
  715. package/UI/Components/Workflow/WorkflowIncomingEmailSecretKey.ts +156 -0
  716. package/UI/Components/Workflow/WorkflowLogModal.tsx +98 -17
  717. package/UI/Components/Workflow/WorkflowRunExport.ts +435 -0
  718. package/UI/Components/Workflow/WorkflowRunExportActions.tsx +242 -0
  719. package/UI/Components/Workflow/WorkflowStatus.tsx +25 -26
  720. package/UI/Components/Workflow/WorkflowTurnOnModal.tsx +119 -0
  721. package/UI/Components/Workflow/WorkflowTurnedOffNotice.tsx +91 -0
  722. package/UI/Components/Workflow/WorkflowWebhookSecretKey.ts +184 -0
  723. package/UI/Styles/Theme.css +74 -3
  724. package/UI/Utils/McpOAuthPendingAuthorization.ts +132 -0
  725. package/UI/Utils/ModelDisplayName.ts +294 -0
  726. package/UI/Utils/TranslateTemplate.ts +123 -0
  727. package/Utils/DeveloperDocs/AiAssistantExamples.ts +383 -0
  728. package/Utils/DeveloperDocs/ApiExamples.ts +355 -0
  729. package/Utils/DeveloperDocs/ExampleValues.ts +111 -0
  730. package/Utils/DeveloperDocs/Hcl.ts +697 -0
  731. package/Utils/DeveloperDocs/TerraformConfig.ts +805 -0
  732. package/Utils/DeveloperDocs/TerraformMonitorSteps.ts +583 -0
  733. package/Utils/DeveloperDocs/TerraformSchema.ts +565 -0
  734. package/Utils/DeveloperDocs/TerraformValues.ts +375 -0
  735. package/Utils/Email/EmailAddressList.ts +165 -0
  736. package/Utils/ModelImportExport.ts +17 -0
  737. package/Utils/Monitor/IncomingEmailMonitorAddress.ts +73 -4
  738. package/Utils/Monitor/MonitorOverviewPresentationUtil.ts +27 -1
  739. package/Utils/Monitor/MonitorPauseState.ts +90 -0
  740. package/Utils/Rum/SessionIdentity.ts +88 -0
  741. package/Utils/StatusPage/ArchivedMonitorResources.ts +38 -0
  742. package/build/dist/Models/AnalyticsModels/AuditLog.js +56 -0
  743. package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
  744. package/build/dist/Models/AnalyticsModels/Log.js +26 -2
  745. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  746. package/build/dist/Models/AnalyticsModels/Metric.js +28 -2
  747. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  748. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +21 -2
  749. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
  750. package/build/dist/Models/AnalyticsModels/SloHistory.js +6 -4
  751. package/build/dist/Models/AnalyticsModels/SloHistory.js.map +1 -1
  752. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +1 -1
  753. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -1
  754. package/build/dist/Models/DatabaseModels/CodeRepository.js +1 -1
  755. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  756. package/build/dist/Models/DatabaseModels/Dashboard.js +151 -1
  757. package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
  758. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +8 -0
  759. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  760. package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js +1 -0
  761. package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js.map +1 -1
  762. package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +2 -0
  763. package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
  764. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +1 -0
  765. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -1
  766. package/build/dist/Models/DatabaseModels/IncomingCallLog.js +15 -1
  767. package/build/dist/Models/DatabaseModels/IncomingCallLog.js.map +1 -1
  768. package/build/dist/Models/DatabaseModels/Index.js +6 -0
  769. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  770. package/build/dist/Models/DatabaseModels/LlmModelPrice.js +1 -0
  771. package/build/dist/Models/DatabaseModels/LlmModelPrice.js.map +1 -1
  772. package/build/dist/Models/DatabaseModels/McpOAuthClient.js +215 -0
  773. package/build/dist/Models/DatabaseModels/McpOAuthClient.js.map +1 -0
  774. package/build/dist/Models/DatabaseModels/McpOAuthGrant.js +494 -0
  775. package/build/dist/Models/DatabaseModels/McpOAuthGrant.js.map +1 -0
  776. package/build/dist/Models/DatabaseModels/McpOAuthToken.js +256 -0
  777. package/build/dist/Models/DatabaseModels/McpOAuthToken.js.map +1 -0
  778. package/build/dist/Models/DatabaseModels/Monitor.js +160 -1
  779. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  780. package/build/dist/Models/DatabaseModels/MonitorSecret.js +89 -1
  781. package/build/dist/Models/DatabaseModels/MonitorSecret.js.map +1 -1
  782. package/build/dist/Models/DatabaseModels/NetworkEndpoint.js +1 -0
  783. package/build/dist/Models/DatabaseModels/NetworkEndpoint.js.map +1 -1
  784. package/build/dist/Models/DatabaseModels/OnCallDutyPolicy.js +158 -1
  785. package/build/dist/Models/DatabaseModels/OnCallDutyPolicy.js.map +1 -1
  786. package/build/dist/Models/DatabaseModels/Project.js +42 -102
  787. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  788. package/build/dist/Models/DatabaseModels/StatusPage.js +158 -1
  789. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  790. package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js +1 -0
  791. package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js.map +1 -1
  792. package/build/dist/Models/DatabaseModels/Workflow.js +230 -8
  793. package/build/dist/Models/DatabaseModels/Workflow.js.map +1 -1
  794. package/build/dist/Server/API/AIAgentDataAPI.js +1 -1
  795. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  796. package/build/dist/Server/API/AutoRemediationAPI.js +9 -31
  797. package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -1
  798. package/build/dist/Server/API/CommonAPI.js +15 -0
  799. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  800. package/build/dist/Server/API/DashboardAPI.js +7 -3
  801. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  802. package/build/dist/Server/API/StatusPageAPI.js +54 -13
  803. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  804. package/build/dist/Server/EnvironmentConfig.js +23 -0
  805. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  806. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796800000000-FoldAiSwitchesIntoEnableAi.js +79 -0
  807. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796800000000-FoldAiSwitchesIntoEnableAi.js.map +1 -0
  808. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796900000000-AddMcpOAuthTables.js +50 -0
  809. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796900000000-AddMcpOAuthTables.js.map +1 -0
  810. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797000000000-AddWorkflowIncomingEmailSecretKey.js +25 -0
  811. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797000000000-AddWorkflowIncomingEmailSecretKey.js.map +1 -0
  812. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797100000000-AddMonitorSecretAccess.js +32 -0
  813. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797100000000-AddMonitorSecretAccess.js.map +1 -0
  814. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797200000000-AddArchiveToMoreResources.js +76 -0
  815. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797200000000-AddArchiveToMoreResources.js.map +1 -0
  816. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  817. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  818. package/build/dist/Server/Middleware/McpDelegationAuthorization.js +138 -0
  819. package/build/dist/Server/Middleware/McpDelegationAuthorization.js.map +1 -0
  820. package/build/dist/Server/Middleware/McpOAuthRateLimit.js +191 -0
  821. package/build/dist/Server/Middleware/McpOAuthRateLimit.js.map +1 -0
  822. package/build/dist/Server/Middleware/ProjectAuthorization.js +20 -1
  823. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  824. package/build/dist/Server/Middleware/UserAuthorization.js +11 -0
  825. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  826. package/build/dist/Server/Services/AIService.js +2 -2
  827. package/build/dist/Server/Services/AIService.js.map +1 -1
  828. package/build/dist/Server/Services/AnalyticsDatabaseService.js +15 -5
  829. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  830. package/build/dist/Server/Services/ApiKeyService.js +11 -8
  831. package/build/dist/Server/Services/ApiKeyService.js.map +1 -1
  832. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +19 -27
  833. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  834. package/build/dist/Server/Services/AutoRemediationRuleService.js +1 -1
  835. package/build/dist/Server/Services/AutoRemediationRuleService.js.map +1 -1
  836. package/build/dist/Server/Services/DashboardService.js +7 -2
  837. package/build/dist/Server/Services/DashboardService.js.map +1 -1
  838. package/build/dist/Server/Services/DatabaseServerService.js +161 -1
  839. package/build/dist/Server/Services/DatabaseServerService.js.map +1 -1
  840. package/build/dist/Server/Services/DatabaseService.js +28 -17
  841. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  842. package/build/dist/Server/Services/InboundEmail/InboundEmailProvider.js +17 -0
  843. package/build/dist/Server/Services/InboundEmail/InboundEmailProvider.js.map +1 -1
  844. package/build/dist/Server/Services/InboundEmail/Providers/SendGridInboundProvider.js +45 -5
  845. package/build/dist/Server/Services/InboundEmail/Providers/SendGridInboundProvider.js.map +1 -1
  846. package/build/dist/Server/Services/IncomingCallMissedCallNotificationService.js +227 -0
  847. package/build/dist/Server/Services/IncomingCallMissedCallNotificationService.js.map +1 -0
  848. package/build/dist/Server/Services/IncomingCallPolicyService.js +97 -0
  849. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
  850. package/build/dist/Server/Services/Index.js +8 -0
  851. package/build/dist/Server/Services/Index.js.map +1 -1
  852. package/build/dist/Server/Services/KubernetesClusterAiAccessService.js +5 -36
  853. package/build/dist/Server/Services/KubernetesClusterAiAccessService.js.map +1 -1
  854. package/build/dist/Server/Services/KubernetesClusterService.js +3 -3
  855. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  856. package/build/dist/Server/Services/LogAggregationService.js +31 -5
  857. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  858. package/build/dist/Server/Services/McpOAuthClientService.js +134 -0
  859. package/build/dist/Server/Services/McpOAuthClientService.js.map +1 -0
  860. package/build/dist/Server/Services/McpOAuthGrantService.js +256 -0
  861. package/build/dist/Server/Services/McpOAuthGrantService.js.map +1 -0
  862. package/build/dist/Server/Services/McpOAuthTokenService.js +175 -0
  863. package/build/dist/Server/Services/McpOAuthTokenService.js.map +1 -0
  864. package/build/dist/Server/Services/MetricAggregationService.js +4 -4
  865. package/build/dist/Server/Services/MonitorGroupService.js +20 -5
  866. package/build/dist/Server/Services/MonitorGroupService.js.map +1 -1
  867. package/build/dist/Server/Services/MonitorProbeService.js +1 -0
  868. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  869. package/build/dist/Server/Services/MonitorSecretService.js +346 -0
  870. package/build/dist/Server/Services/MonitorSecretService.js.map +1 -1
  871. package/build/dist/Server/Services/MonitorService.js +15 -1
  872. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  873. package/build/dist/Server/Services/OnCallDutyPolicyService.js +29 -2
  874. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  875. package/build/dist/Server/Services/ProjectService.js +26 -15
  876. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  877. package/build/dist/Server/Services/ResourceAiAccessService.js +0 -9
  878. package/build/dist/Server/Services/ResourceAiAccessService.js.map +1 -1
  879. package/build/dist/Server/Services/RunnerJobService.js +2 -2
  880. package/build/dist/Server/Services/RunnerJobService.js.map +1 -1
  881. package/build/dist/Server/Services/RunnerService.js +2 -2
  882. package/build/dist/Server/Services/RunnerService.js.map +1 -1
  883. package/build/dist/Server/Services/StatusPageService.js +59 -2
  884. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  885. package/build/dist/Server/Services/StatusPageSubscriberService.js +17 -0
  886. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  887. package/build/dist/Server/Services/TeamMemberService.js +306 -72
  888. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  889. package/build/dist/Server/Services/UserNotificationSettingService.js +18 -0
  890. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  891. package/build/dist/Server/Services/WorkflowService.js +27 -0
  892. package/build/dist/Server/Services/WorkflowService.js.map +1 -1
  893. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +3 -0
  894. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  895. package/build/dist/Server/Types/Database/Permissions/Index.js +5 -0
  896. package/build/dist/Server/Types/Database/Permissions/Index.js.map +1 -1
  897. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +2 -0
  898. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
  899. package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js +28 -106
  900. package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js.map +1 -1
  901. package/build/dist/Server/Types/Workflow/Components/IncomingEmail.js +166 -0
  902. package/build/dist/Server/Types/Workflow/Components/IncomingEmail.js.map +1 -0
  903. package/build/dist/Server/Types/Workflow/Components/Index.js +16 -6
  904. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  905. package/build/dist/Server/Types/Workflow/Components/Schedule.js +20 -4
  906. package/build/dist/Server/Types/Workflow/Components/Schedule.js.map +1 -1
  907. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +1 -1
  908. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +1 -1
  909. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +43 -57
  910. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  911. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js +17 -28
  912. package/build/dist/Server/Utils/AI/CodeFix/OpenPullRequestCap.js.map +1 -1
  913. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +18 -50
  914. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
  915. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +27 -52
  916. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  917. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +4 -4
  918. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
  919. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js +1 -1
  920. package/build/dist/Server/Utils/AI/SRE/FixPerformanceTaskTrigger.js.map +1 -1
  921. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +8 -24
  922. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  923. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js +6 -5
  924. package/build/dist/Server/Utils/AI/SRE/IncidentPostmortemRunner.js.map +1 -1
  925. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js +2 -2
  926. package/build/dist/Server/Utils/AI/SRE/Insights/InsightScanner.js +5 -5
  927. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +4 -3
  928. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -1
  929. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +4 -4
  930. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -1
  931. package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js +1 -1
  932. package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js.map +1 -1
  933. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +52 -45
  934. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  935. package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js +1 -1
  936. package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js.map +1 -1
  937. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js +9 -1
  938. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -1
  939. package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js +13 -8
  940. package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js.map +1 -1
  941. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +18 -3
  942. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -1
  943. package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +45 -14
  944. package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -1
  945. package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js +31 -7
  946. package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js.map +1 -1
  947. package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js +22 -7
  948. package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js.map +1 -1
  949. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js +3 -1
  950. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js.map +1 -1
  951. package/build/dist/Server/Utils/Express.js.map +1 -1
  952. package/build/dist/Server/Utils/IncomingCall/MissedCallNotification.js +204 -0
  953. package/build/dist/Server/Utils/IncomingCall/MissedCallNotification.js.map +1 -0
  954. package/build/dist/Server/Utils/Mcp/McpDelegationToken.js +92 -0
  955. package/build/dist/Server/Utils/Mcp/McpDelegationToken.js.map +1 -0
  956. package/build/dist/Server/Utils/Mcp/McpOAuthConfig.js +159 -0
  957. package/build/dist/Server/Utils/Mcp/McpOAuthConfig.js.map +1 -0
  958. package/build/dist/Server/Utils/Mcp/McpOAuthGrantAccess.js +204 -0
  959. package/build/dist/Server/Utils/Mcp/McpOAuthGrantAccess.js.map +1 -0
  960. package/build/dist/Server/Utils/Mcp/McpOAuthSecret.js +118 -0
  961. package/build/dist/Server/Utils/Mcp/McpOAuthSecret.js.map +1 -0
  962. package/build/dist/Server/Utils/Mcp/McpOAuthSignedToken.js +126 -0
  963. package/build/dist/Server/Utils/Mcp/McpOAuthSignedToken.js.map +1 -0
  964. package/build/dist/Server/Utils/Mcp/McpOAuthSso.js +159 -0
  965. package/build/dist/Server/Utils/Mcp/McpOAuthSso.js.map +1 -0
  966. package/build/dist/Server/Utils/Monitor/MonitorPayloadRedaction.js +25 -0
  967. package/build/dist/Server/Utils/Monitor/MonitorPayloadRedaction.js.map +1 -1
  968. package/build/dist/Server/Utils/Monitor/MonitorResource.js +16 -18
  969. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  970. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +3 -11
  971. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
  972. package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js +3 -3
  973. package/build/dist/Server/Utils/Slo/SloMetricUtil.js +3 -3
  974. package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js +11 -4
  975. package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js.map +1 -1
  976. package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js +7 -0
  977. package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js.map +1 -1
  978. package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js +133 -16
  979. package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js.map +1 -1
  980. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +2 -0
  981. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
  982. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +2 -0
  983. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -1
  984. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +2 -0
  985. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
  986. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +2 -0
  987. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -1
  988. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js +4 -0
  989. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js.map +1 -1
  990. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +2 -0
  991. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -1
  992. package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js +2 -0
  993. package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js.map +1 -1
  994. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +4 -0
  995. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -1
  996. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +2 -0
  997. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -1
  998. package/build/dist/Types/AI/AIRunType.js +7 -6
  999. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  1000. package/build/dist/Types/AI/AIWorkloadLimits.js +59 -0
  1001. package/build/dist/Types/AI/AIWorkloadLimits.js.map +1 -0
  1002. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +2 -2
  1003. package/build/dist/Types/AnalyticsDatabase/RetentionTtl.js +55 -0
  1004. package/build/dist/Types/AnalyticsDatabase/RetentionTtl.js.map +1 -0
  1005. package/build/dist/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.js +17 -0
  1006. package/build/dist/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.js.map +1 -1
  1007. package/build/dist/Types/Database/TableMetadata.js +3 -0
  1008. package/build/dist/Types/Database/TableMetadata.js.map +1 -1
  1009. package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js +36 -0
  1010. package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js.map +1 -1
  1011. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  1012. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  1013. package/build/dist/Types/Exception/ExceptionMessages.js +1 -0
  1014. package/build/dist/Types/Exception/ExceptionMessages.js.map +1 -1
  1015. package/build/dist/Types/IncomingCall/MissedIncomingCall.js +61 -0
  1016. package/build/dist/Types/IncomingCall/MissedIncomingCall.js.map +1 -0
  1017. package/build/dist/Types/Kubernetes/KubernetesClusterAiAccess.js.map +1 -1
  1018. package/build/dist/Types/Mcp/McpOAuthClientAuthMethod.js +18 -0
  1019. package/build/dist/Types/Mcp/McpOAuthClientAuthMethod.js.map +1 -0
  1020. package/build/dist/Types/Mcp/McpOAuthScope.js +140 -0
  1021. package/build/dist/Types/Mcp/McpOAuthScope.js.map +1 -0
  1022. package/build/dist/Types/Mcp/McpOAuthTicket.js +20 -0
  1023. package/build/dist/Types/Mcp/McpOAuthTicket.js.map +1 -0
  1024. package/build/dist/Types/Mcp/McpOAuthTokenType.js +17 -0
  1025. package/build/dist/Types/Mcp/McpOAuthTokenType.js.map +1 -0
  1026. package/build/dist/Types/Monitor/MonitorSecretAccess.js +111 -0
  1027. package/build/dist/Types/Monitor/MonitorSecretAccess.js.map +1 -0
  1028. package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js +11 -2
  1029. package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js.map +1 -1
  1030. package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js +1 -1
  1031. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +2 -0
  1032. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  1033. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyArchive.js +16 -0
  1034. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyArchive.js.map +1 -0
  1035. package/build/dist/Types/Permission.js +40 -0
  1036. package/build/dist/Types/Permission.js.map +1 -1
  1037. package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js.map +1 -1
  1038. package/build/dist/Types/StatusPage/StatusPageArchive.js +16 -0
  1039. package/build/dist/Types/StatusPage/StatusPageArchive.js.map +1 -0
  1040. package/build/dist/Types/Workflow/Component.js +19 -0
  1041. package/build/dist/Types/Workflow/Component.js.map +1 -1
  1042. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  1043. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  1044. package/build/dist/Types/Workflow/Components/AI.js +2 -4
  1045. package/build/dist/Types/Workflow/Components/AI.js.map +1 -1
  1046. package/build/dist/Types/Workflow/Components/API.js +26 -26
  1047. package/build/dist/Types/Workflow/Components/API.js.map +1 -1
  1048. package/build/dist/Types/Workflow/Components/BaseModel.js +22 -28
  1049. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  1050. package/build/dist/Types/Workflow/Components/Condition.js +70 -29
  1051. package/build/dist/Types/Workflow/Components/Condition.js.map +1 -1
  1052. package/build/dist/Types/Workflow/Components/ConditionComparison.js +256 -0
  1053. package/build/dist/Types/Workflow/Components/ConditionComparison.js.map +1 -0
  1054. package/build/dist/Types/Workflow/Components/ConditionEvaluation.js +279 -0
  1055. package/build/dist/Types/Workflow/Components/ConditionEvaluation.js.map +1 -0
  1056. package/build/dist/Types/Workflow/Components/Email.js +1 -1
  1057. package/build/dist/Types/Workflow/Components/Email.js.map +1 -1
  1058. package/build/dist/Types/Workflow/Components/IncomingEmail.js +129 -0
  1059. package/build/dist/Types/Workflow/Components/IncomingEmail.js.map +1 -0
  1060. package/build/dist/Types/Workflow/Components/JSON.js +10 -3
  1061. package/build/dist/Types/Workflow/Components/JSON.js.map +1 -1
  1062. package/build/dist/Types/Workflow/Components/JavaScript.js +0 -2
  1063. package/build/dist/Types/Workflow/Components/JavaScript.js.map +1 -1
  1064. package/build/dist/Types/Workflow/Components/Manual.js +2 -2
  1065. package/build/dist/Types/Workflow/Components/Manual.js.map +1 -1
  1066. package/build/dist/Types/Workflow/Components/Schedule.js +1 -1
  1067. package/build/dist/Types/Workflow/Components/Schedule.js.map +1 -1
  1068. package/build/dist/Types/Workflow/Components/Slack.js +11 -3
  1069. package/build/dist/Types/Workflow/Components/Slack.js.map +1 -1
  1070. package/build/dist/Types/Workflow/Components/Sleep.js +4 -4
  1071. package/build/dist/Types/Workflow/Components/Sleep.js.map +1 -1
  1072. package/build/dist/Types/Workflow/Components/Webhook.js +4 -6
  1073. package/build/dist/Types/Workflow/Components/Webhook.js.map +1 -1
  1074. package/build/dist/Types/Workflow/Components.js +4 -2
  1075. package/build/dist/Types/Workflow/Components.js.map +1 -1
  1076. package/build/dist/Types/Workflow/DatabaseOperation.js +50 -0
  1077. package/build/dist/Types/Workflow/DatabaseOperation.js.map +1 -0
  1078. package/build/dist/Types/Workflow/Documentation/AIDocumentation.js +78 -0
  1079. package/build/dist/Types/Workflow/Documentation/AIDocumentation.js.map +1 -0
  1080. package/build/dist/Types/Workflow/Documentation/APIDocumentation.js +69 -0
  1081. package/build/dist/Types/Workflow/Documentation/APIDocumentation.js.map +1 -0
  1082. package/build/dist/Types/Workflow/Documentation/ComponentDocumentation.js +44 -0
  1083. package/build/dist/Types/Workflow/Documentation/ComponentDocumentation.js.map +1 -0
  1084. package/build/dist/Types/Workflow/Documentation/DatabaseDocumentation.js +488 -0
  1085. package/build/dist/Types/Workflow/Documentation/DatabaseDocumentation.js.map +1 -0
  1086. package/build/dist/Types/Workflow/Documentation/DocumentationContext.js +139 -0
  1087. package/build/dist/Types/Workflow/Documentation/DocumentationContext.js.map +1 -0
  1088. package/build/dist/Types/Workflow/Documentation/DocumentationLinks.js +62 -0
  1089. package/build/dist/Types/Workflow/Documentation/DocumentationLinks.js.map +1 -0
  1090. package/build/dist/Types/Workflow/Documentation/DocumentationText.js +104 -0
  1091. package/build/dist/Types/Workflow/Documentation/DocumentationText.js.map +1 -0
  1092. package/build/dist/Types/Workflow/Documentation/Index.js +58 -0
  1093. package/build/dist/Types/Workflow/Documentation/Index.js.map +1 -0
  1094. package/build/dist/Types/Workflow/Documentation/MessagingDocumentation.js +247 -0
  1095. package/build/dist/Types/Workflow/Documentation/MessagingDocumentation.js.map +1 -0
  1096. package/build/dist/Types/Workflow/Documentation/ModelExamples.js +210 -0
  1097. package/build/dist/Types/Workflow/Documentation/ModelExamples.js.map +1 -0
  1098. package/build/dist/Types/Workflow/Documentation/TriggerDocumentation.js +184 -0
  1099. package/build/dist/Types/Workflow/Documentation/TriggerDocumentation.js.map +1 -0
  1100. package/build/dist/Types/Workflow/Documentation/UtilityDocumentation.js +290 -0
  1101. package/build/dist/Types/Workflow/Documentation/UtilityDocumentation.js.map +1 -0
  1102. package/build/dist/Types/Workflow/IncomingEmailTrigger.js +275 -0
  1103. package/build/dist/Types/Workflow/IncomingEmailTrigger.js.map +1 -0
  1104. package/build/dist/Types/Workflow/StepSamples.js +601 -0
  1105. package/build/dist/Types/Workflow/StepSamples.js.map +1 -0
  1106. package/build/dist/Types/Workflow/StepTrace.js +135 -4
  1107. package/build/dist/Types/Workflow/StepTrace.js.map +1 -1
  1108. package/build/dist/Types/Workflow/SystemColumns.js +65 -0
  1109. package/build/dist/Types/Workflow/SystemColumns.js.map +1 -0
  1110. package/build/dist/Types/Workflow/Templates.js +178 -2
  1111. package/build/dist/Types/Workflow/Templates.js.map +1 -1
  1112. package/build/dist/Types/Workflow/WebhookTrigger.js +55 -0
  1113. package/build/dist/Types/Workflow/WebhookTrigger.js.map +1 -0
  1114. package/build/dist/Types/Workflow/WorkflowArchive.js +29 -0
  1115. package/build/dist/Types/Workflow/WorkflowArchive.js.map +1 -0
  1116. package/build/dist/Types/Workflow/WorkflowEnabled.js +39 -0
  1117. package/build/dist/Types/Workflow/WorkflowEnabled.js.map +1 -0
  1118. package/build/dist/Types/Workflow/WorkflowStatus.js +24 -0
  1119. package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
  1120. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +23 -3
  1121. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  1122. package/build/dist/UI/Components/ActionButton/RowActions.js +8 -5
  1123. package/build/dist/UI/Components/ActionButton/RowActions.js.map +1 -1
  1124. package/build/dist/UI/Components/ActionCard/ActionCard.js +20 -2
  1125. package/build/dist/UI/Components/ActionCard/ActionCard.js.map +1 -1
  1126. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +1 -1
  1127. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
  1128. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js +1 -1
  1129. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js.map +1 -1
  1130. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +2 -0
  1131. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  1132. package/build/dist/UI/Components/Button/Button.js +19 -11
  1133. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  1134. package/build/dist/UI/Components/Card/Card.js +23 -3
  1135. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  1136. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +1 -3
  1137. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  1138. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +37 -0
  1139. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  1140. package/build/dist/UI/Components/CollapsibleSection/CollapsibleSection.js +7 -3
  1141. package/build/dist/UI/Components/CollapsibleSection/CollapsibleSection.js.map +1 -1
  1142. package/build/dist/UI/Components/DeleteConfirmation/DeleteConfirmationMessage.js +97 -0
  1143. package/build/dist/UI/Components/DeleteConfirmation/DeleteConfirmationMessage.js.map +1 -0
  1144. package/build/dist/UI/Components/DeleteConfirmation/DeleteItemNames.js +34 -0
  1145. package/build/dist/UI/Components/DeleteConfirmation/DeleteItemNames.js.map +1 -0
  1146. package/build/dist/UI/Components/DeleteConfirmation/NamedSentence.js +11 -0
  1147. package/build/dist/UI/Components/DeleteConfirmation/NamedSentence.js.map +1 -0
  1148. package/build/dist/UI/Components/DeleteConfirmation/TypeToConfirmDelete.js +44 -0
  1149. package/build/dist/UI/Components/DeleteConfirmation/TypeToConfirmDelete.js.map +1 -0
  1150. package/build/dist/UI/Components/Dictionary/Dictionary.js +17 -1
  1151. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  1152. package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js +12 -10
  1153. package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js.map +1 -1
  1154. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +1 -1
  1155. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  1156. package/build/dist/UI/Components/Error/PageError.js +1 -1
  1157. package/build/dist/UI/Components/Error/PageError.js.map +1 -1
  1158. package/build/dist/UI/Components/EventItem/EventItem.js +1 -4
  1159. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  1160. package/build/dist/UI/Components/FormModal/BasicFormModal.js +17 -3
  1161. package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
  1162. package/build/dist/UI/Components/Forms/BasicForm.js +115 -54
  1163. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  1164. package/build/dist/UI/Components/Forms/BasicModelForm.js +1 -1
  1165. package/build/dist/UI/Components/Forms/BasicModelForm.js.map +1 -1
  1166. package/build/dist/UI/Components/Forms/Fields/FormField.js +40 -9
  1167. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  1168. package/build/dist/UI/Components/Forms/ModelForm.js +5 -1
  1169. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  1170. package/build/dist/UI/Components/Forms/Steps/Step.js +16 -5
  1171. package/build/dist/UI/Components/Forms/Steps/Step.js.map +1 -1
  1172. package/build/dist/UI/Components/Forms/Steps/Steps.js +3 -1
  1173. package/build/dist/UI/Components/Forms/Steps/Steps.js.map +1 -1
  1174. package/build/dist/UI/Components/Forms/Types/Field.js.map +1 -1
  1175. package/build/dist/UI/Components/Forms/Validation.js +13 -4
  1176. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  1177. package/build/dist/UI/Components/Icon/Icon.js +7 -2
  1178. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  1179. package/build/dist/UI/Components/Label/Label.js +0 -2
  1180. package/build/dist/UI/Components/Label/Label.js.map +1 -1
  1181. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js +1 -1
  1182. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js.map +1 -1
  1183. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +8 -0
  1184. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  1185. package/build/dist/UI/Components/Modal/ConfirmModal.js +22 -3
  1186. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  1187. package/build/dist/UI/Components/Modal/Modal.js +76 -9
  1188. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  1189. package/build/dist/UI/Components/Modal/ModalFooter.js +22 -6
  1190. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  1191. package/build/dist/UI/Components/ModelDelete/ModelDelete.js +84 -7
  1192. package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
  1193. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js +38 -13
  1194. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  1195. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +41 -69
  1196. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  1197. package/build/dist/UI/Components/ModelTable/TableView.js +13 -1
  1198. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  1199. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js +1 -1
  1200. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js.map +1 -1
  1201. package/build/dist/UI/Components/Navbar/NavBar.js +3 -2
  1202. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  1203. package/build/dist/UI/Components/Pill/Pill.js +25 -22
  1204. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  1205. package/build/dist/UI/Components/Pill/PillColors.js +297 -0
  1206. package/build/dist/UI/Components/Pill/PillColors.js.map +1 -0
  1207. package/build/dist/UI/Components/RuleRun/RunRuleNowModal.js +7 -1
  1208. package/build/dist/UI/Components/RuleRun/RunRuleNowModal.js.map +1 -1
  1209. package/build/dist/UI/Components/SideMenu/SideMenu.js +81 -9
  1210. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  1211. package/build/dist/UI/Components/SideMenu/SideMenuSection.js +21 -4
  1212. package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
  1213. package/build/dist/UI/Components/SideMenu/SideMenuSectionState.js +150 -0
  1214. package/build/dist/UI/Components/SideMenu/SideMenuSectionState.js.map +1 -0
  1215. package/build/dist/UI/Components/TextArea/TextArea.js +122 -4
  1216. package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
  1217. package/build/dist/UI/Components/Toggle/Toggle.js +115 -22
  1218. package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
  1219. package/build/dist/UI/Components/Workflow/ArgumentsForm.js +272 -257
  1220. package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
  1221. package/build/dist/UI/Components/Workflow/BreakableCode.js +33 -0
  1222. package/build/dist/UI/Components/Workflow/BreakableCode.js.map +1 -0
  1223. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnPicker.js +293 -0
  1224. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnPicker.js.map +1 -0
  1225. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.js +17 -2
  1226. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.js.map +1 -1
  1227. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnControl.js +42 -4
  1228. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnControl.js.map +1 -1
  1229. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.js +9 -4
  1230. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.js.map +1 -1
  1231. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.js +252 -0
  1232. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.js.map +1 -0
  1233. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnUse.js +88 -0
  1234. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnUse.js.map +1 -0
  1235. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnValueInput.js +79 -44
  1236. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnValueInput.js.map +1 -1
  1237. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +13 -8
  1238. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -1
  1239. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelRecordForm.js +19 -21
  1240. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelRecordForm.js.map +1 -1
  1241. package/build/dist/UI/Components/Workflow/Component.js +74 -8
  1242. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  1243. package/build/dist/UI/Components/Workflow/ComponentPicker/ComponentSearch.js +864 -0
  1244. package/build/dist/UI/Components/Workflow/ComponentPicker/ComponentSearch.js.map +1 -0
  1245. package/build/dist/UI/Components/Workflow/ComponentPicker/PickerCatalog.js +254 -0
  1246. package/build/dist/UI/Components/Workflow/ComponentPicker/PickerCatalog.js.map +1 -0
  1247. package/build/dist/UI/Components/Workflow/ComponentPicker/PickerItems.js +105 -0
  1248. package/build/dist/UI/Components/Workflow/ComponentPicker/PickerItems.js.map +1 -0
  1249. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +15 -45
  1250. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  1251. package/build/dist/UI/Components/Workflow/ComponentPrimaryPanel.js +88 -0
  1252. package/build/dist/UI/Components/Workflow/ComponentPrimaryPanel.js.map +1 -0
  1253. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +24 -57
  1254. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  1255. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +196 -55
  1256. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
  1257. package/build/dist/UI/Components/Workflow/ComponentSettingsSection.js +34 -0
  1258. package/build/dist/UI/Components/Workflow/ComponentSettingsSection.js.map +1 -0
  1259. package/build/dist/UI/Components/Workflow/ComponentsModal.js +523 -329
  1260. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  1261. package/build/dist/UI/Components/Workflow/Condition/ConditionEditor.js +199 -0
  1262. package/build/dist/UI/Components/Workflow/Condition/ConditionEditor.js.map +1 -0
  1263. package/build/dist/UI/Components/Workflow/Condition/ConditionModel.js +458 -0
  1264. package/build/dist/UI/Components/Workflow/Condition/ConditionModel.js.map +1 -0
  1265. package/build/dist/UI/Components/Workflow/CronScheduleField.js +25 -19
  1266. package/build/dist/UI/Components/Workflow/CronScheduleField.js.map +1 -1
  1267. package/build/dist/UI/Components/Workflow/DocumentationViewer.js +107 -61
  1268. package/build/dist/UI/Components/Workflow/DocumentationViewer.js.map +1 -1
  1269. package/build/dist/UI/Components/Workflow/DownloadWorkflowRun.js +78 -0
  1270. package/build/dist/UI/Components/Workflow/DownloadWorkflowRun.js.map +1 -0
  1271. package/build/dist/UI/Components/Workflow/GraphLint.js +7 -2
  1272. package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -1
  1273. package/build/dist/UI/Components/Workflow/GraphLintSummary.js +59 -1
  1274. package/build/dist/UI/Components/Workflow/GraphLintSummary.js.map +1 -1
  1275. package/build/dist/UI/Components/Workflow/IncomingEmailTriggerPanel.js +215 -0
  1276. package/build/dist/UI/Components/Workflow/IncomingEmailTriggerPanel.js.map +1 -0
  1277. package/build/dist/UI/Components/Workflow/ManualTriggerPanel.js +27 -0
  1278. package/build/dist/UI/Components/Workflow/ManualTriggerPanel.js.map +1 -0
  1279. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +5 -1
  1280. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -1
  1281. package/build/dist/UI/Components/Workflow/ModelFieldPicker.js +44 -2
  1282. package/build/dist/UI/Components/Workflow/ModelFieldPicker.js.map +1 -1
  1283. package/build/dist/UI/Components/Workflow/ModelSchema.js +7 -8
  1284. package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -1
  1285. package/build/dist/UI/Components/Workflow/NodePlacement.js +123 -1
  1286. package/build/dist/UI/Components/Workflow/NodePlacement.js.map +1 -1
  1287. package/build/dist/UI/Components/Workflow/RunModal.js +1 -1
  1288. package/build/dist/UI/Components/Workflow/StepTracePresentation.js +318 -0
  1289. package/build/dist/UI/Components/Workflow/StepTracePresentation.js.map +1 -0
  1290. package/build/dist/UI/Components/Workflow/StepTraceViewer.js +282 -42
  1291. package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
  1292. package/build/dist/UI/Components/Workflow/UseRunWatch.js +4 -0
  1293. package/build/dist/UI/Components/Workflow/UseRunWatch.js.map +1 -1
  1294. package/build/dist/UI/Components/Workflow/UseWorkflowEnabled.js +171 -0
  1295. package/build/dist/UI/Components/Workflow/UseWorkflowEnabled.js.map +1 -0
  1296. package/build/dist/UI/Components/Workflow/Utils.js +95 -88
  1297. package/build/dist/UI/Components/Workflow/Utils.js.map +1 -1
  1298. package/build/dist/UI/Components/Workflow/ValuePicker/ArgumentControl.js +113 -0
  1299. package/build/dist/UI/Components/Workflow/ValuePicker/ArgumentControl.js.map +1 -0
  1300. package/build/dist/UI/Components/Workflow/ValuePicker/DefaultValueSources.js +95 -0
  1301. package/build/dist/UI/Components/Workflow/ValuePicker/DefaultValueSources.js.map +1 -0
  1302. package/build/dist/UI/Components/Workflow/ValuePicker/InsertValueButton.js +46 -0
  1303. package/build/dist/UI/Components/Workflow/ValuePicker/InsertValueButton.js.map +1 -0
  1304. package/build/dist/UI/Components/Workflow/ValuePicker/ReferenceChip.js +88 -0
  1305. package/build/dist/UI/Components/Workflow/ValuePicker/ReferenceChip.js.map +1 -0
  1306. package/build/dist/UI/Components/Workflow/ValuePicker/ReferenceDescription.js +187 -0
  1307. package/build/dist/UI/Components/Workflow/ValuePicker/ReferenceDescription.js.map +1 -0
  1308. package/build/dist/UI/Components/Workflow/ValuePicker/StepGraph.js +147 -0
  1309. package/build/dist/UI/Components/Workflow/ValuePicker/StepGraph.js.map +1 -0
  1310. package/build/dist/UI/Components/Workflow/ValuePicker/StepSampleSource.js +345 -0
  1311. package/build/dist/UI/Components/Workflow/ValuePicker/StepSampleSource.js.map +1 -0
  1312. package/build/dist/UI/Components/Workflow/ValuePicker/StepValueSource.js +181 -0
  1313. package/build/dist/UI/Components/Workflow/ValuePicker/StepValueSource.js.map +1 -0
  1314. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateText.js +172 -0
  1315. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateText.js.map +1 -0
  1316. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateTextDom.js +342 -0
  1317. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateTextDom.js.map +1 -0
  1318. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateTextEditor.js +701 -0
  1319. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateTextEditor.js.map +1 -0
  1320. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateTextHistory.js +104 -0
  1321. package/build/dist/UI/Components/Workflow/ValuePicker/TemplateTextHistory.js.map +1 -0
  1322. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerContext.js +319 -0
  1323. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerContext.js.map +1 -0
  1324. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerMenu.js +502 -0
  1325. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerMenu.js.map +1 -0
  1326. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerPopup.js +176 -0
  1327. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerPopup.js.map +1 -0
  1328. package/build/dist/UI/Components/Workflow/ValuePicker/ValueSingleField.js +111 -0
  1329. package/build/dist/UI/Components/Workflow/ValuePicker/ValueSingleField.js.map +1 -0
  1330. package/build/dist/UI/Components/Workflow/ValuePicker/ValueSuggestion.js +356 -0
  1331. package/build/dist/UI/Components/Workflow/ValuePicker/ValueSuggestion.js.map +1 -0
  1332. package/build/dist/UI/Components/Workflow/ValuePicker/ValueTextField.js +168 -0
  1333. package/build/dist/UI/Components/Workflow/ValuePicker/ValueTextField.js.map +1 -0
  1334. package/build/dist/UI/Components/Workflow/ValuePicker/VariableValueSource.js +80 -0
  1335. package/build/dist/UI/Components/Workflow/ValuePicker/VariableValueSource.js.map +1 -0
  1336. package/build/dist/UI/Components/Workflow/WebhookTriggerPanel.js +225 -0
  1337. package/build/dist/UI/Components/Workflow/WebhookTriggerPanel.js.map +1 -0
  1338. package/build/dist/UI/Components/Workflow/Workflow.js +256 -39
  1339. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  1340. package/build/dist/UI/Components/Workflow/WorkflowEnabledCopy.js +33 -0
  1341. package/build/dist/UI/Components/Workflow/WorkflowEnabledCopy.js.map +1 -0
  1342. package/build/dist/UI/Components/Workflow/WorkflowEnabledSwitch.js +18 -0
  1343. package/build/dist/UI/Components/Workflow/WorkflowEnabledSwitch.js.map +1 -0
  1344. package/build/dist/UI/Components/Workflow/WorkflowIncomingEmailSecretKey.js +97 -0
  1345. package/build/dist/UI/Components/Workflow/WorkflowIncomingEmailSecretKey.js.map +1 -0
  1346. package/build/dist/UI/Components/Workflow/WorkflowLogModal.js +41 -7
  1347. package/build/dist/UI/Components/Workflow/WorkflowLogModal.js.map +1 -1
  1348. package/build/dist/UI/Components/Workflow/WorkflowRunExport.js +258 -0
  1349. package/build/dist/UI/Components/Workflow/WorkflowRunExport.js.map +1 -0
  1350. package/build/dist/UI/Components/Workflow/WorkflowRunExportActions.js +124 -0
  1351. package/build/dist/UI/Components/Workflow/WorkflowRunExportActions.js.map +1 -0
  1352. package/build/dist/UI/Components/Workflow/WorkflowStatus.js +16 -23
  1353. package/build/dist/UI/Components/Workflow/WorkflowStatus.js.map +1 -1
  1354. package/build/dist/UI/Components/Workflow/WorkflowTurnOnModal.js +60 -0
  1355. package/build/dist/UI/Components/Workflow/WorkflowTurnOnModal.js.map +1 -0
  1356. package/build/dist/UI/Components/Workflow/WorkflowTurnedOffNotice.js +34 -0
  1357. package/build/dist/UI/Components/Workflow/WorkflowTurnedOffNotice.js.map +1 -0
  1358. package/build/dist/UI/Components/Workflow/WorkflowWebhookSecretKey.js +112 -0
  1359. package/build/dist/UI/Components/Workflow/WorkflowWebhookSecretKey.js.map +1 -0
  1360. package/build/dist/UI/Utils/McpOAuthPendingAuthorization.js +111 -0
  1361. package/build/dist/UI/Utils/McpOAuthPendingAuthorization.js.map +1 -0
  1362. package/build/dist/UI/Utils/ModelDisplayName.js +197 -0
  1363. package/build/dist/UI/Utils/ModelDisplayName.js.map +1 -0
  1364. package/build/dist/UI/Utils/TranslateTemplate.js +63 -0
  1365. package/build/dist/UI/Utils/TranslateTemplate.js.map +1 -0
  1366. package/build/dist/Utils/DeveloperDocs/AiAssistantExamples.js +278 -0
  1367. package/build/dist/Utils/DeveloperDocs/AiAssistantExamples.js.map +1 -0
  1368. package/build/dist/Utils/DeveloperDocs/ApiExamples.js +225 -0
  1369. package/build/dist/Utils/DeveloperDocs/ApiExamples.js.map +1 -0
  1370. package/build/dist/Utils/DeveloperDocs/ExampleValues.js +90 -0
  1371. package/build/dist/Utils/DeveloperDocs/ExampleValues.js.map +1 -0
  1372. package/build/dist/Utils/DeveloperDocs/Hcl.js +449 -0
  1373. package/build/dist/Utils/DeveloperDocs/Hcl.js.map +1 -0
  1374. package/build/dist/Utils/DeveloperDocs/TerraformConfig.js +503 -0
  1375. package/build/dist/Utils/DeveloperDocs/TerraformConfig.js.map +1 -0
  1376. package/build/dist/Utils/DeveloperDocs/TerraformMonitorSteps.js +332 -0
  1377. package/build/dist/Utils/DeveloperDocs/TerraformMonitorSteps.js.map +1 -0
  1378. package/build/dist/Utils/DeveloperDocs/TerraformSchema.js +420 -0
  1379. package/build/dist/Utils/DeveloperDocs/TerraformSchema.js.map +1 -0
  1380. package/build/dist/Utils/DeveloperDocs/TerraformValues.js +280 -0
  1381. package/build/dist/Utils/DeveloperDocs/TerraformValues.js.map +1 -0
  1382. package/build/dist/Utils/Email/EmailAddressList.js +132 -0
  1383. package/build/dist/Utils/Email/EmailAddressList.js.map +1 -0
  1384. package/build/dist/Utils/ModelImportExport.js +15 -0
  1385. package/build/dist/Utils/ModelImportExport.js.map +1 -1
  1386. package/build/dist/Utils/Monitor/IncomingEmailMonitorAddress.js +54 -3
  1387. package/build/dist/Utils/Monitor/IncomingEmailMonitorAddress.js.map +1 -1
  1388. package/build/dist/Utils/Monitor/MonitorOverviewPresentationUtil.js +19 -1
  1389. package/build/dist/Utils/Monitor/MonitorOverviewPresentationUtil.js.map +1 -1
  1390. package/build/dist/Utils/Monitor/MonitorPauseState.js +66 -0
  1391. package/build/dist/Utils/Monitor/MonitorPauseState.js.map +1 -0
  1392. package/build/dist/Utils/Rum/SessionIdentity.js +73 -0
  1393. package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -1
  1394. package/build/dist/Utils/StatusPage/ArchivedMonitorResources.js +31 -0
  1395. package/build/dist/Utils/StatusPage/ArchivedMonitorResources.js.map +1 -0
  1396. package/package.json +1 -1
  1397. package/test-setup.sh +15 -1
  1398. package/UI/Components/Workflow/ColumnEditor/AddColumnDropdown.tsx +0 -177
  1399. package/UI/Components/Workflow/ComponentValuePickerModal.tsx +0 -325
  1400. package/UI/Components/Workflow/VariableModal.tsx +0 -59
  1401. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnDropdown.js +0 -86
  1402. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnDropdown.js.map +0 -1
  1403. package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js +0 -144
  1404. package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js.map +0 -1
  1405. package/build/dist/UI/Components/Workflow/VariableModal.js +0 -31
  1406. package/build/dist/UI/Components/Workflow/VariableModal.js.map +0 -1
@@ -1,1048 +1,673 @@
1
1
  import ComponentsModal, {
2
- getSearchScore,
3
- getSearchTokens,
4
- matchesSearch,
2
+ ComponentProps,
3
+ SEARCH_RESULTS_PAGE_SIZE,
5
4
  } from "../../../UI/Components/Workflow/ComponentsModal";
6
- import { describe, expect, it } from "@jest/globals";
7
- /*
8
- * The main entry, not "/extend-expect": the latter no longer ships type
9
- * declarations, so every jest-dom matcher in this file fails to typecheck and
10
- * the whole suite is skipped before a single assertion runs. This suite is one
11
- * of only two that exercise SideOver, so it has to actually run.
12
- */
13
- import "@testing-library/jest-dom";
14
- import { fireEvent, render, screen } from "@testing-library/react";
15
- import IconProp from "../../../Types/Icon/IconProp";
16
5
  import ComponentMetadata, {
17
6
  ComponentCategory,
18
7
  ComponentType,
19
8
  } from "../../../Types/Workflow/Component";
20
- import React from "react";
9
+ import IconProp from "../../../Types/Icon/IconProp";
21
10
  import getJestMockFunction, { MockFunction } from "../../../Tests/MockType";
22
- import Faker from "../../../Utils/Faker";
23
-
24
- /// @dev we use different UUID for (id & title), description, and category to ensure that the component is unique
25
-
26
- type GetComponentMetadataFunction = (category?: string) => ComponentMetadata;
27
-
28
- const getComponentMetadata: GetComponentMetadataFunction = (
29
- category?: string,
30
- ): ComponentMetadata => {
31
- const id: string = Faker.generateRandomObjectID().toString();
32
- return {
33
- id,
34
- title: id,
35
- description: Faker.generateRandomObjectID().toString(),
36
- category: category || Faker.generateRandomObjectID().toString(),
37
- iconProp: IconProp.Activity,
38
- componentType: ComponentType.Component,
39
- arguments: [],
40
- returnValues: [],
41
- inPorts: [],
42
- outPorts: [],
43
- };
44
- };
45
-
46
- type GetComponentCategoryFunction = (name?: string) => ComponentCategory;
47
-
48
- const getComponentCategory: GetComponentCategoryFunction = (
49
- name?: string,
50
- ): ComponentCategory => {
51
- return {
52
- name: name || Faker.generateRandomObjectID().toString(),
53
- description: `Description for ${name}`,
54
- icon: IconProp.Activity,
55
- };
56
- };
57
-
58
- type BuildDatabaseComponentFunction = (
59
- title: string,
60
- description: string,
61
- category: string,
62
- ) => ComponentMetadata;
63
-
11
+ import {
12
+ FixturePalette,
13
+ buildFixturePalette,
14
+ findByTitle,
15
+ } from "./Workflow/ComponentPicker/PickerFixtures";
16
+ import { describe, expect, it } from "@jest/globals";
64
17
  /*
65
- * Only the three fields the search reads are meaningful here. The icon and the
66
- * ports the generator fills in play no part in matching or ranking.
18
+ * The main entry, not "/extend-expect": the latter no longer ships type
19
+ * declarations, so every jest-dom matcher in this file fails to typecheck and
20
+ * the whole suite is skipped before a single assertion runs.
67
21
  */
68
- const buildDatabaseComponent: BuildDatabaseComponentFunction = (
69
- title: string,
70
- description: string,
71
- category: string,
72
- ): ComponentMetadata => {
73
- return {
74
- id: title.toLowerCase().replace(/\s+/g, "-"),
75
- title,
76
- description,
77
- category,
78
- iconProp: IconProp.Database,
79
- componentType: ComponentType.Component,
80
- arguments: [],
81
- returnValues: [],
82
- inPorts: [],
83
- outPorts: [],
84
- };
85
- };
22
+ import "@testing-library/jest-dom";
23
+ import {
24
+ fireEvent,
25
+ render,
26
+ RenderResult,
27
+ screen,
28
+ within,
29
+ } from "@testing-library/react";
30
+ import React from "react";
86
31
 
87
32
  /*
88
- * The database half of the palette is generated rather than written: one
89
- * component per operation per model, by
90
- * Common/Types/Workflow/Components/BaseModel.ts. These are that generator's
91
- * strings copied word for word, not approximated, because the whole regression
92
- * below lives in the gap between what it writes ("Create One Monitor") and what
93
- * somebody building a workflow types ("create monitor"). A fixture that merely
94
- * looked like the real thing would pin nothing.
33
+ * The Add Component / Add Trigger picker: what it leads with, browsing a
34
+ * resource, picking a step, and how search results are drawn. Keyboard use
35
+ * and accessibility are in ComponentsModalUsability.test.tsx; the ranking
36
+ * itself in Workflow/ComponentPicker/ComponentSearch.test.ts; the full
37
+ * catalog in Workflow/ComponentPicker/ComponentPickerRealCatalog.test.tsx.
95
38
  *
96
- * These eight are the components; the generator also emits three triggers per
97
- * model, which the modal keeps in a separate palette.
39
+ * The palette is the real hand-written steps plus the real generator's
40
+ * steps for a handful of models (PickerFixtures), with Incident State
41
+ * registered before Incident as in the product.
98
42
  */
99
- type GetDatabaseComponentsFunction = (
100
- singularName: string,
101
- pluralName: string,
102
- ) => Array<ComponentMetadata>;
103
-
104
- const getDatabaseComponents: GetDatabaseComponentsFunction = (
105
- singularName: string,
106
- pluralName: string,
107
- ): Array<ComponentMetadata> => {
108
- return [
109
- buildDatabaseComponent(
110
- `Find One ${singularName}`,
111
- `Database query to find one ${singularName}`,
112
- `${singularName}`,
113
- ),
114
- buildDatabaseComponent(
115
- `Find Many ${pluralName}`,
116
- `Database query to find many ${pluralName}`,
117
- `${singularName}`,
118
- ),
119
- buildDatabaseComponent(
120
- `Delete One ${singularName}`,
121
- `Database query to delete one ${singularName}`,
122
- `${singularName}`,
123
- ),
124
- buildDatabaseComponent(
125
- `Delete Many ${pluralName}`,
126
- `Delete many ${pluralName} that match a query.`,
127
- `${singularName}`,
128
- ),
129
- buildDatabaseComponent(
130
- `Create One ${singularName}`,
131
- `Database query to create one ${singularName}`,
132
- `${singularName}`,
133
- ),
134
- buildDatabaseComponent(
135
- `Create Many ${pluralName}`,
136
- `Database query to create many ${pluralName}`,
137
- `${singularName}`,
138
- ),
139
- buildDatabaseComponent(
140
- `Update One ${singularName}`,
141
- `Database query to update one ${singularName}`,
142
- `${singularName}`,
143
- ),
144
- buildDatabaseComponent(
145
- `Update Many ${pluralName}`,
146
- `Database query to update many ${pluralName}`,
147
- `${singularName}`,
148
- ),
149
- ];
150
- };
151
43
 
152
- /*
153
- * Two entries from the hand-written half of the palette, copied from
154
- * Common/Types/Workflow/Components/JavaScript.ts and Manual.ts. A generated
155
- * component always restates its own title inside its description, so it can
156
- * never show a word that lives in one field alone - these two can.
157
- */
158
- const runCustomJavaScriptComponent: ComponentMetadata = {
159
- id: "run-custom-javascript",
160
- title: "Run Custom JavaScript",
161
- category: "Custom Code",
162
- description: "Run custom JavaScript in your workflow",
163
- iconProp: IconProp.Code,
164
- componentType: ComponentType.Component,
165
- arguments: [],
166
- returnValues: [],
167
- inPorts: [],
168
- outPorts: [],
44
+ const palette: FixturePalette = buildFixturePalette();
45
+
46
+ type RenderPickerFunction = (
47
+ overrides?: Partial<ComponentProps>,
48
+ ) => RenderResult;
49
+
50
+ const renderPicker: RenderPickerFunction = (
51
+ overrides: Partial<ComponentProps> = {},
52
+ ): RenderResult => {
53
+ return render(
54
+ <ComponentsModal
55
+ componentsType={ComponentType.Component}
56
+ components={palette.components}
57
+ categories={palette.categories}
58
+ onCloseModal={getJestMockFunction()}
59
+ onComponentClick={getJestMockFunction()}
60
+ {...overrides}
61
+ />,
62
+ );
169
63
  };
170
64
 
171
- const manualComponent: ComponentMetadata = {
172
- id: "manual",
173
- title: "Manual",
174
- category: "Utils",
175
- description: "Run this workflow manually",
176
- iconProp: IconProp.Play,
177
- componentType: ComponentType.Trigger,
178
- arguments: [],
179
- returnValues: [],
180
- inPorts: [],
181
- outPorts: [],
182
- };
65
+ type SearchFunction = (value: string) => void;
183
66
 
184
- type GetComponentByTitleFunction = (
185
- components: Array<ComponentMetadata>,
186
- title: string,
187
- ) => ComponentMetadata;
188
-
189
- const getComponentByTitle: GetComponentByTitleFunction = (
190
- components: Array<ComponentMetadata>,
191
- title: string,
192
- ): ComponentMetadata => {
193
- const componentMetadata: ComponentMetadata | undefined = components.find(
194
- (candidate: ComponentMetadata) => {
195
- return candidate.title === title;
196
- },
197
- );
67
+ const search: SearchFunction = (value: string): void => {
68
+ fireEvent.change(screen.getByRole("combobox"), { target: { value } });
69
+ };
198
70
 
199
- if (!componentMetadata) {
200
- /*
201
- * A mistyped fixture title would otherwise resolve to undefined and quietly
202
- * weaken every assertion that reads it.
203
- */
204
- throw new Error(`No component titled "${title}" in these fixtures.`);
205
- }
71
+ type SectionFunction = (name: string) => HTMLElement;
206
72
 
207
- return componentMetadata;
73
+ const section: SectionFunction = (name: string): HTMLElement => {
74
+ return screen.getByRole("region", { name });
208
75
  };
209
76
 
210
- /*
211
- * The filter as it used to be: the whole typed string, as one substring,
212
- * against each field on its own. Kept here so the tests can show what each of
213
- * these searches used to return rather than only asserting that it works now.
214
- */
215
- type MatchesWholeSearchStringFunction = (
216
- componentMetadata: ComponentMetadata,
217
- search: string,
218
- ) => boolean;
219
-
220
- const matchesWholeSearchString: MatchesWholeSearchStringFunction = (
221
- componentMetadata: ComponentMetadata,
222
- search: string,
223
- ): boolean => {
224
- const normalizedSearch: string = search.trim().toLowerCase();
225
-
226
- return (
227
- componentMetadata.title.toLowerCase().includes(normalizedSearch) ||
228
- componentMetadata.description.toLowerCase().includes(normalizedSearch) ||
229
- componentMetadata.category.toLowerCase().includes(normalizedSearch)
230
- );
231
- };
77
+ type ButtonNamesFunction = (container: HTMLElement) => Array<string>;
232
78
 
233
- /*
234
- * The modal's own pipeline - keep what matches every word, then order by score
235
- * with the alphabetical tie-break - so the ranking assertions below describe
236
- * the list somebody actually sees rather than a number in isolation.
237
- */
238
- type RankBySearchFunction = (
239
- components: Array<ComponentMetadata>,
240
- search: string,
241
- ) => Array<string>;
242
-
243
- const rankBySearch: RankBySearchFunction = (
244
- components: Array<ComponentMetadata>,
245
- search: string,
79
+ const buttonNames: ButtonNamesFunction = (
80
+ container: HTMLElement,
246
81
  ): Array<string> => {
247
- const tokens: Array<string> = getSearchTokens(search);
248
-
249
- return components
250
- .filter((componentMetadata: ComponentMetadata) => {
251
- return matchesSearch(componentMetadata, tokens);
252
- })
253
- .sort((componentA: ComponentMetadata, componentB: ComponentMetadata) => {
254
- const scoreDifference: number =
255
- getSearchScore(componentB, tokens) - getSearchScore(componentA, tokens);
256
-
257
- if (scoreDifference !== 0) {
258
- return scoreDifference;
259
- }
260
-
261
- return componentA.title.localeCompare(componentB.title);
262
- })
263
- .map((componentMetadata: ComponentMetadata) => {
264
- return componentMetadata.title;
82
+ return within(container)
83
+ .getAllByRole("button")
84
+ .map((button: HTMLElement): string => {
85
+ return button.getAttribute("aria-label") || button.textContent || "";
265
86
  });
266
87
  };
267
88
 
268
- describe("ComponentsModal", () => {
269
- const mockedCategories: ComponentCategory[] = [
270
- getComponentCategory(),
271
- getComponentCategory(),
272
- getComponentCategory(),
273
- getComponentCategory(),
274
- ];
275
-
276
- const mockedComponents: ComponentMetadata[] = [
277
- getComponentMetadata(mockedCategories[0]?.name),
278
- getComponentMetadata(mockedCategories[1]?.name),
279
- getComponentMetadata(mockedCategories[2]?.name),
280
- getComponentMetadata(mockedCategories[3]?.name),
281
- ];
282
-
283
- const mockOnCloseModal: MockFunction = getJestMockFunction();
284
- const mockOnComponentClick: MockFunction = getJestMockFunction();
285
-
286
- it("should render without crashing", () => {
287
- render(
288
- <ComponentsModal
289
- componentsType={ComponentType.Component}
290
- onCloseModal={mockOnCloseModal}
291
- onComponentClick={mockOnComponentClick}
292
- components={mockedComponents}
293
- categories={mockedCategories}
294
- />,
295
- );
89
+ type OptionTitlesFunction = () => Array<string>;
90
+
91
+ const optionTitles: OptionTitlesFunction = (): Array<string> => {
92
+ return screen.queryAllByRole("option").map((option: HTMLElement): string => {
93
+ return option.getAttribute("aria-label") || "";
296
94
  });
95
+ };
297
96
 
298
- it("should display search input", () => {
299
- render(
300
- <ComponentsModal
301
- componentsType={ComponentType.Component}
302
- onCloseModal={mockOnCloseModal}
303
- onComponentClick={mockOnComponentClick}
304
- components={mockedComponents}
305
- categories={mockedCategories}
306
- />,
97
+ describe("the start view leads with what people use", () => {
98
+ it("says what the panel is for, and offers no second button to confirm a pick", () => {
99
+ renderPicker();
100
+
101
+ expect(screen.getByTestId("side-over-title")).toHaveTextContent(
102
+ "Add Component",
103
+ );
104
+ expect(screen.getByTestId("side-over-description")).toHaveTextContent(
105
+ "Click a component to add it to your workflow.",
307
106
  );
308
107
  expect(
309
- screen.getByPlaceholderText(
310
- "Search components by name, description, or category",
311
- ),
108
+ screen.queryByRole("button", { name: "Add to Workflow" }),
109
+ ).not.toBeInTheDocument();
110
+ expect(
111
+ within(screen.getByTestId("side-over-footer")).getByRole("button", {
112
+ name: "Close",
113
+ }),
312
114
  ).toBeInTheDocument();
313
115
  });
314
116
 
315
- it("should display categories and components", () => {
316
- render(
317
- <ComponentsModal
318
- componentsType={ComponentType.Component}
319
- onCloseModal={mockOnCloseModal}
320
- onComponentClick={mockOnComponentClick}
321
- components={mockedComponents}
322
- categories={mockedCategories}
323
- />,
324
- );
325
- for (const cat of mockedCategories) {
326
- expect(screen.getAllByText(cat.name).length).toBeGreaterThanOrEqual(1);
327
- }
328
- for (const comp of mockedComponents) {
329
- expect(screen.getByText(comp.title)).toBeInTheDocument();
330
- }
117
+ it("shows the popular actions first, in order", () => {
118
+ renderPicker();
119
+
120
+ expect(buttonNames(section("Popular"))).toEqual([
121
+ "Log",
122
+ "If / Else",
123
+ "API Post (JSON)",
124
+ "API Get (JSON)",
125
+ "Send Message to Slack",
126
+ "Send Message to Teams",
127
+ "Send Message to Discord",
128
+ "Send Email",
129
+ "Run Custom JavaScript",
130
+ "Create One Incident",
131
+ ]);
331
132
  });
332
133
 
333
- it("should call onCloseModal when the close button is clicked", () => {
334
- render(
335
- <ComponentsModal
336
- componentsType={ComponentType.Component}
337
- onCloseModal={mockOnCloseModal}
338
- onComponentClick={mockOnComponentClick}
339
- components={mockedComponents}
340
- categories={mockedCategories}
341
- />,
342
- );
343
- fireEvent.click(screen.getByText("Close panel"));
344
- expect(mockOnCloseModal).toHaveBeenCalled();
134
+ it("then the rest of the hand-written steps, each once", () => {
135
+ renderPicker();
136
+
137
+ expect(buttonNames(section("More components"))).toEqual([
138
+ "Generate Text with AI",
139
+ "API Put (JSON)",
140
+ "API Patch (JSON)",
141
+ "API Delete (JSON)",
142
+ "Send Message to Telegram",
143
+ "JSON to Text",
144
+ "Text to JSON",
145
+ "Merge JSON",
146
+ "Execute Workflow",
147
+ "Sleep",
148
+ ]);
345
149
  });
346
150
 
347
- it("should call onComponentClick when a component is selected", () => {
348
- render(
349
- <ComponentsModal
350
- componentsType={ComponentType.Component}
351
- onCloseModal={mockOnCloseModal}
352
- onComponentClick={mockOnComponentClick}
353
- components={mockedComponents}
354
- categories={mockedCategories}
355
- />,
356
- );
357
- for (const [idx, comp] of mockedComponents.entries()) {
358
- // simulate selecting a component
359
- fireEvent.click(screen.getByText(comp.title));
360
- expect(screen.getByText("Add to Workflow")).not.toBeDisabled();
151
+ it("then the common resources, and a way to every other one", () => {
152
+ renderPicker();
153
+
154
+ const resources: HTMLElement = section("OneUptime resources");
155
+
156
+ expect(resources).toHaveTextContent(
157
+ "Create, find, update or delete incidents, alerts, monitors and every other record in this project.",
158
+ );
159
+ expect(buttonNames(resources)).toEqual([
160
+ "Incident, 8 actions",
161
+ "Alert, 8 actions",
162
+ "Monitor, 8 actions",
163
+ "Status Page, 8 actions",
164
+ "On-Call Policy, 8 actions",
165
+ "Incident Public Note, 8 actions",
166
+ "Incident Internal Note, 8 actions",
167
+ "Incident Episode, 8 actions",
168
+ `Browse all resources, ${21}`,
169
+ ]);
170
+ });
361
171
 
362
- // simulate submitting
363
- fireEvent.click(screen.getByText("Add to Workflow"));
172
+ it("does not list the generated steps themselves, which are what made the old list endless", () => {
173
+ renderPicker();
364
174
 
365
- // check if onComponentClick was called with the selected component's metadata
366
- expect(mockOnComponentClick).toHaveBeenNthCalledWith(idx + 1, comp);
175
+ for (const title of [
176
+ "Create One Incident State",
177
+ "Find One Incident",
178
+ "Update Many Monitors",
179
+ "Delete One Incident Episode State Timeline",
180
+ ]) {
181
+ expect(
182
+ screen.queryByRole("button", { name: title }),
183
+ ).not.toBeInTheDocument();
367
184
  }
185
+
186
+ // Everything on the start view, in all: a short list, whatever the catalog holds.
187
+ expect(
188
+ within(screen.getByTestId("workflow-component-picker")).getAllByRole(
189
+ "button",
190
+ ).length,
191
+ ).toBeLessThan(40);
368
192
  });
369
193
 
370
- it("should display a message when no components are available", () => {
371
- render(
372
- <ComponentsModal
373
- componentsType={ComponentType.Component}
374
- onCloseModal={mockOnCloseModal}
375
- onComponentClick={mockOnComponentClick}
376
- components={[]}
377
- categories={mockedCategories}
378
- />,
194
+ it("describes every step it shows", () => {
195
+ renderPicker();
196
+
197
+ expect(
198
+ screen.getByRole("button", { name: "Log" }),
199
+ ).toHaveAccessibleDescription(
200
+ findByTitle(palette.components, "Log").description,
379
201
  );
380
- /*
381
- * An empty palette and an unproductive search are different situations and
382
- * no longer share a message. Nothing has been typed here, so there is no
383
- * advice to give about the words used.
384
- */
385
- expect(screen.getByText("No components to show.")).toBeInTheDocument();
202
+ expect(
203
+ screen.getByRole("button", { name: "Create One Incident" }),
204
+ ).toHaveAccessibleDescription("Database query to create one Incident");
386
205
  });
387
206
 
388
- it("should not display categories when there are no categories", () => {
389
- render(
390
- <ComponentsModal
391
- componentsType={ComponentType.Component}
392
- onCloseModal={mockOnCloseModal}
393
- onComponentClick={mockOnComponentClick}
394
- components={mockedComponents}
395
- categories={[]}
396
- />,
207
+ it("leads the trigger picker with the popular triggers, and counts a resource's triggers", () => {
208
+ renderPicker({ componentsType: ComponentType.Trigger });
209
+
210
+ expect(screen.getByTestId("side-over-title")).toHaveTextContent(
211
+ "Add Trigger",
212
+ );
213
+ expect(buttonNames(section("Popular"))).toEqual([
214
+ "Manual",
215
+ "Schedule",
216
+ "Webhook",
217
+ "Incoming Email",
218
+ "On Create Incident",
219
+ "On Update Incident",
220
+ "On Create Alert",
221
+ "On Update Monitor",
222
+ ]);
223
+ // Every hand-written trigger is popular, so there is nothing more to list.
224
+ expect(
225
+ screen.queryByRole("region", { name: "More triggers" }),
226
+ ).not.toBeInTheDocument();
227
+ expect(section("OneUptime resources")).toHaveTextContent(
228
+ "Start this workflow when an incident, alert, monitor or any other record in this project is created, updated or deleted.",
397
229
  );
398
- mockedCategories.forEach((category: ComponentCategory) => {
399
- expect(screen.queryByText(category.name)).not.toBeInTheDocument();
400
- });
230
+ expect(
231
+ screen.getByRole("button", { name: "Incident, 3 triggers" }),
232
+ ).toBeInTheDocument();
233
+ expect(
234
+ screen.queryByRole("button", { name: "Log" }),
235
+ ).not.toBeInTheDocument();
401
236
  });
402
237
 
403
- it("should display no components message when search yields no results", () => {
404
- render(
405
- <ComponentsModal
406
- componentsType={ComponentType.Component}
407
- onCloseModal={mockOnCloseModal}
408
- onComponentClick={mockOnComponentClick}
409
- components={mockedComponents}
410
- categories={mockedCategories}
411
- />,
412
- );
413
- fireEvent.change(
414
- screen.getByPlaceholderText(
415
- "Search components by name, description, or category",
416
- ),
417
- {
418
- target: { value: "Non-existent Ccmponent" },
419
- },
420
- );
421
- /*
422
- * Says what actually happened: a search now fails only when no component
423
- * holds every word typed, so the useful advice is to type fewer words. The
424
- * old wording concluded on the builder's behalf that the integration did
425
- * not exist, which is what sent people off to write it by hand.
426
- */
238
+ it("names the hand-written steps' section plainly when nothing is popular", () => {
239
+ const customCode: ComponentMetadata = {
240
+ id: "custom",
241
+ title: "Custom Step",
242
+ description: "Does a custom thing",
243
+ category: "Utils",
244
+ iconProp: IconProp.Code,
245
+ componentType: ComponentType.Component,
246
+ arguments: [],
247
+ returnValues: [],
248
+ inPorts: [],
249
+ outPorts: [],
250
+ };
251
+
252
+ renderPicker({ components: [customCode], categories: [] });
253
+
427
254
  expect(
428
- screen.getByText(
429
- "No components match every word you typed. Try fewer words. If what you need really does not exist, the Custom Code and API components can build anything you like.",
255
+ screen.queryByRole("region", { name: "Popular" }),
256
+ ).not.toBeInTheDocument();
257
+ expect(buttonNames(section("Components"))).toEqual(["Custom Step"]);
258
+ expect(
259
+ screen.queryByRole("region", { name: "OneUptime resources" }),
260
+ ).not.toBeInTheDocument();
261
+ });
262
+
263
+ it("says when there is nothing to pick", () => {
264
+ renderPicker({ components: [] });
265
+ expect(screen.getByText("No components to show.")).toBeInTheDocument();
266
+
267
+ renderPicker({
268
+ componentsType: ComponentType.Trigger,
269
+ components: palette.components.filter(
270
+ (componentMetadata: ComponentMetadata): boolean => {
271
+ return componentMetadata.componentType === ComponentType.Component;
272
+ },
430
273
  ),
431
- ).toBeInTheDocument();
274
+ });
275
+ expect(screen.getByText("No triggers to show.")).toBeInTheDocument();
432
276
  });
277
+ });
433
278
 
434
- it("should disable submit button prop when no component is selected", () => {
435
- render(
436
- <ComponentsModal
437
- componentsType={ComponentType.Component}
438
- onCloseModal={mockOnCloseModal}
439
- onComponentClick={mockOnComponentClick}
440
- components={mockedComponents}
441
- categories={mockedCategories}
442
- />,
279
+ describe("one click picks a step", () => {
280
+ it("adds a step from the start view at once, and only that step", () => {
281
+ const onComponentClick: MockFunction = getJestMockFunction();
282
+ const onCloseModal: MockFunction = getJestMockFunction();
283
+ renderPicker({ onComponentClick, onCloseModal });
284
+
285
+ fireEvent.click(screen.getByRole("button", { name: "Send Email" }));
286
+
287
+ expect(onComponentClick).toHaveBeenCalledTimes(1);
288
+ expect(onComponentClick).toHaveBeenCalledWith(
289
+ findByTitle(palette.components, "Send Email"),
443
290
  );
444
- const submitButton: HTMLElement = screen.getByText("Add to Workflow");
445
- expect(submitButton).toBeDisabled();
291
+ // Closing is the builder's job once it has the step.
292
+ expect(onCloseModal).not.toHaveBeenCalled();
446
293
  });
447
294
 
448
- it("should change submitButtonDisabled to false when a component is selected", () => {
449
- render(
450
- <ComponentsModal
451
- componentsType={ComponentType.Component}
452
- onCloseModal={mockOnCloseModal}
453
- onComponentClick={mockOnComponentClick}
454
- components={mockedComponents}
455
- categories={mockedCategories}
456
- />,
295
+ it("closes from the footer without picking anything", () => {
296
+ const onComponentClick: MockFunction = getJestMockFunction();
297
+ const onCloseModal: MockFunction = getJestMockFunction();
298
+ renderPicker({ onComponentClick, onCloseModal });
299
+
300
+ fireEvent.click(
301
+ within(screen.getByTestId("side-over-footer")).getByRole("button", {
302
+ name: "Close",
303
+ }),
457
304
  );
458
- for (const comp of mockedComponents) {
459
- fireEvent.click(screen.getByText(comp.title));
460
- const submitButton: HTMLElement = screen.getByText("Add to Workflow");
461
- expect(submitButton).not.toBeDisabled();
462
- }
305
+
306
+ expect(onCloseModal).toHaveBeenCalledTimes(1);
307
+ expect(onComponentClick).not.toHaveBeenCalled();
463
308
  });
309
+ });
464
310
 
465
- // search tests
311
+ describe("browsing a resource", () => {
312
+ it("opens a resource to what can be done with it, and adds the one clicked", () => {
313
+ const onComponentClick: MockFunction = getJestMockFunction();
314
+ renderPicker({ onComponentClick });
466
315
 
467
- it("should filter components based on search input", () => {
468
- render(
469
- <ComponentsModal
470
- componentsType={ComponentType.Component}
471
- onCloseModal={mockOnCloseModal}
472
- onComponentClick={mockOnComponentClick}
473
- components={mockedComponents}
474
- categories={mockedCategories}
475
- />,
316
+ fireEvent.click(
317
+ screen.getByRole("button", { name: "Incident, 8 actions" }),
476
318
  );
477
319
 
478
- mockedComponents.forEach((comp: ComponentMetadata) => {
479
- const partialTitle: string = comp.title.substring(
480
- 0,
481
- comp.title.length - comp.title.length / 2,
482
- );
483
- fireEvent.change(
484
- screen.getByPlaceholderText(
485
- "Search components by name, description, or category",
486
- ),
487
- {
488
- target: { value: partialTitle },
489
- },
490
- );
491
- // title may be split across elements due to search highlighting
492
- expect(
493
- screen.getByText((_content: string | null, element: Element | null) => {
494
- return element?.textContent === comp.title;
495
- }),
496
- ).toBeInTheDocument();
497
-
498
- // check other components are not displayed
499
- mockedComponents
500
- .filter((c: ComponentMetadata) => {
501
- return c.title !== comp.title;
502
- })
503
- .forEach((c: ComponentMetadata) => {
504
- return expect(screen.queryByText(c.title)).not.toBeInTheDocument();
505
- });
506
- });
507
- });
320
+ expect(
321
+ screen.getByRole("heading", { name: "Incident" }),
322
+ ).toBeInTheDocument();
323
+ expect(
324
+ screen.getByText("Manage incidents for your project"),
325
+ ).toBeInTheDocument();
326
+ expect(
327
+ buttonNames(screen.getByRole("group", { name: "Incident components" })),
328
+ ).toEqual([
329
+ "Create One Incident",
330
+ "Create Many Incidents",
331
+ "Find One Incident",
332
+ "Find Many Incidents",
333
+ "Update One Incident",
334
+ "Update Many Incidents",
335
+ "Delete One Incident",
336
+ "Delete Many Incidents",
337
+ ]);
338
+ // The start view is gone while a resource is open.
339
+ expect(
340
+ screen.queryByRole("region", { name: "Popular" }),
341
+ ).not.toBeInTheDocument();
508
342
 
509
- it("should filter components based on description when searching", () => {
510
- render(
511
- <ComponentsModal
512
- componentsType={ComponentType.Component}
513
- onCloseModal={mockOnCloseModal}
514
- onComponentClick={mockOnComponentClick}
515
- components={mockedComponents}
516
- categories={mockedCategories}
517
- />,
343
+ fireEvent.click(
344
+ screen.getByRole("button", { name: "Update One Incident" }),
518
345
  );
519
- mockedComponents.forEach((comp: ComponentMetadata) => {
520
- fireEvent.change(
521
- screen.getByPlaceholderText(
522
- "Search components by name, description, or category",
523
- ),
524
- {
525
- target: { value: comp.description },
526
- },
527
- );
528
- expect(screen.getByText(comp.title)).toBeInTheDocument();
529
-
530
- // check other components are not displayed
531
- mockedComponents
532
- .filter((c: ComponentMetadata) => {
533
- return c.title !== comp.title;
534
- })
535
- .forEach((c: ComponentMetadata) => {
536
- return expect(screen.queryByText(c.title)).not.toBeInTheDocument();
537
- });
538
- });
539
- });
540
346
 
541
- it("should filter components based on category when searching", () => {
542
- render(
543
- <ComponentsModal
544
- componentsType={ComponentType.Component}
545
- onCloseModal={mockOnCloseModal}
546
- onComponentClick={mockOnComponentClick}
547
- components={mockedComponents}
548
- categories={mockedCategories}
549
- />,
347
+ expect(onComponentClick).toHaveBeenCalledTimes(1);
348
+ expect(onComponentClick).toHaveBeenCalledWith(
349
+ findByTitle(palette.components, "Update One Incident"),
550
350
  );
551
- mockedComponents.forEach((comp: ComponentMetadata) => {
552
- fireEvent.change(
553
- screen.getByPlaceholderText(
554
- "Search components by name, description, or category",
555
- ),
556
- {
557
- target: { value: comp.category },
558
- },
559
- );
560
- expect(screen.getByText(comp.title)).toBeInTheDocument();
561
-
562
- // check other components are not displayed
563
- mockedComponents
564
- .filter((c: ComponentMetadata) => {
565
- return c.category !== comp.category;
566
- })
567
- .forEach((c: ComponentMetadata) => {
568
- return expect(screen.queryByText(c.title)).not.toBeInTheDocument();
569
- });
570
- });
571
351
  });
572
352
 
573
- it("should show all components when search is cleared", () => {
574
- render(
575
- <ComponentsModal
576
- componentsType={ComponentType.Component}
577
- onCloseModal={mockOnCloseModal}
578
- onComponentClick={mockOnComponentClick}
579
- components={mockedComponents}
580
- categories={mockedCategories}
581
- />,
582
- );
583
- mockedComponents.forEach((comp: ComponentMetadata) => {
584
- const searchInput: HTMLElement = screen.getByPlaceholderText(
585
- "Search components by name, description, or category",
586
- );
587
- fireEvent.change(searchInput, { target: { value: comp.title } });
588
- fireEvent.change(searchInput, { target: { value: "" } }); // clear search
589
-
590
- mockedComponents.forEach((c: ComponentMetadata) => {
591
- return expect(screen.getByText(c.title)).toBeInTheDocument();
592
- });
593
- });
353
+ it("goes back to where it was opened from", () => {
354
+ renderPicker();
355
+
356
+ fireEvent.click(screen.getByRole("button", { name: "Alert, 8 actions" }));
357
+ fireEvent.click(screen.getByRole("button", { name: "Back" }));
358
+
359
+ expect(section("Popular")).toBeInTheDocument();
360
+ expect(
361
+ screen.queryByRole("heading", { name: "Alert" }),
362
+ ).not.toBeInTheDocument();
594
363
  });
595
364
 
596
- it("should return multiple components when similar titles match", () => {
597
- // we add a new component where its title is a substring of another component's title
598
- const localComponents: ComponentMetadata[] = [...mockedComponents];
599
- const commonWord: string = localComponents[0]?.title.substring(0, 5) || "";
600
- const newComponent: ComponentMetadata = getComponentMetadata(
601
- mockedCategories[1]?.name,
602
- );
603
- newComponent.title += commonWord;
604
- localComponents.push(newComponent);
605
- const componentsWithCommonWord: ComponentMetadata[] =
606
- localComponents.filter((comp: ComponentMetadata) => {
607
- return comp.title.includes(commonWord);
608
- });
609
-
610
- render(
611
- <ComponentsModal
612
- componentsType={ComponentType.Component}
613
- onCloseModal={mockOnCloseModal}
614
- onComponentClick={mockOnComponentClick}
615
- components={localComponents}
616
- categories={mockedCategories}
617
- />,
365
+ it("lists every resource A to Z, opens one, and comes back to the list", () => {
366
+ renderPicker();
367
+
368
+ fireEvent.click(
369
+ screen.getByRole("button", { name: /^Browse all resources/ }),
618
370
  );
619
371
 
620
- fireEvent.change(
621
- screen.getByPlaceholderText(
622
- "Search components by name, description, or category",
372
+ expect(
373
+ screen.getByRole("heading", { name: "All resources" }),
374
+ ).toBeInTheDocument();
375
+ expect(
376
+ screen.getByText(
377
+ "21 resources, A to Z. Search above to find one by name.",
623
378
  ),
624
- {
625
- target: { value: commonWord },
626
- },
379
+ ).toBeInTheDocument();
380
+
381
+ const names: Array<string> = buttonNames(
382
+ screen.getByRole("group", { name: "All resources" }),
627
383
  );
628
- componentsWithCommonWord.forEach((comp: ComponentMetadata) => {
629
- // title may be split across elements due to search highlighting
630
- expect(
631
- screen.getByText((_content: string | null, element: Element | null) => {
632
- return element?.textContent === comp.title;
633
- }),
634
- ).toBeInTheDocument();
635
- });
636
- });
637
384
 
638
- it("should return return components with similar descriptions", () => {
639
- // we add a new component where its title is a substring of another component's description
640
- const localComponents: ComponentMetadata[] = [...mockedComponents];
641
- const partialDescription: string =
642
- localComponents[0]?.description.substring(0, 10) || "";
643
- const newComponent: ComponentMetadata = getComponentMetadata(
644
- mockedCategories[1]?.name,
385
+ expect(names).toHaveLength(21);
386
+ expect(names.slice(0, 3)).toEqual([
387
+ "AI Agent, 2 actions",
388
+ "Alert, 8 actions",
389
+ "Email Log, 2 actions",
390
+ ]);
391
+ // The rarely used ones are here, and only here.
392
+ expect(names).toContain("Incident State, 8 actions");
393
+ expect(names).toContain("Incident Episode State Timeline, 8 actions");
394
+
395
+ fireEvent.click(
396
+ screen.getByRole("button", { name: "Incident State, 8 actions" }),
645
397
  );
646
- newComponent.title = partialDescription || "";
647
- localComponents.push(newComponent);
648
- render(
649
- <ComponentsModal
650
- componentsType={ComponentType.Component}
651
- onCloseModal={mockOnCloseModal}
652
- onComponentClick={mockOnComponentClick}
653
- components={localComponents}
654
- categories={mockedCategories}
655
- />,
398
+ expect(
399
+ screen.getByRole("heading", { name: "Incident State" }),
400
+ ).toBeInTheDocument();
401
+
402
+ fireEvent.click(screen.getByRole("button", { name: "Back" }));
403
+ expect(
404
+ screen.getByRole("heading", { name: "All resources" }),
405
+ ).toBeInTheDocument();
406
+
407
+ fireEvent.click(screen.getByRole("button", { name: "Back" }));
408
+ expect(section("Popular")).toBeInTheDocument();
409
+ });
410
+
411
+ it("tells apart two resources with the same name", () => {
412
+ renderPicker();
413
+
414
+ fireEvent.click(
415
+ screen.getByRole("button", { name: /^Browse all resources/ }),
656
416
  );
657
417
 
658
- fireEvent.change(
659
- screen.getByPlaceholderText(
660
- "Search components by name, description, or category",
661
- ),
662
- {
663
- target: { value: partialDescription },
664
- },
418
+ expect(
419
+ screen.getByRole("button", {
420
+ name: "Subscriber Notification Template (Status Page Subscriber Notification Template), 8 actions",
421
+ }),
422
+ ).toBeInTheDocument();
423
+
424
+ fireEvent.click(
425
+ screen.getByRole("button", {
426
+ name: "Subscriber Notification Template (Status Page Subscriber Notification Template Status Page), 8 actions",
427
+ }),
665
428
  );
429
+
666
430
  expect(
667
- screen.getAllByText(new RegExp(partialDescription, "i")),
668
- ).toHaveLength(2);
431
+ screen.getByText(
432
+ "Status Page Subscriber Notification Template Status Page",
433
+ ),
434
+ ).toBeInTheDocument();
669
435
  });
670
436
 
671
- it("should return components with the same category", () => {
672
- // we add two components with the same category as the first component
673
- const localComponents: ComponentMetadata[] = [...mockedComponents];
674
- const commonCategory: string | undefined = localComponents[0]?.category;
675
- localComponents.push(getComponentMetadata(commonCategory));
676
- localComponents.push(getComponentMetadata(commonCategory));
677
- const componentsInCommonCategory: ComponentMetadata[] =
678
- localComponents.filter((comp: ComponentMetadata) => {
679
- return comp.category === commonCategory;
680
- });
681
-
682
- render(
437
+ it("goes back to the start view if the open resource leaves the catalog", () => {
438
+ const props: ComponentProps = {
439
+ componentsType: ComponentType.Component,
440
+ components: palette.components,
441
+ categories: palette.categories,
442
+ onCloseModal: getJestMockFunction(),
443
+ onComponentClick: getJestMockFunction(),
444
+ };
445
+ const view: RenderResult = render(<ComponentsModal {...props} />);
446
+
447
+ fireEvent.click(screen.getByRole("button", { name: "Alert, 8 actions" }));
448
+
449
+ view.rerender(
683
450
  <ComponentsModal
684
- componentsType={ComponentType.Component}
685
- onCloseModal={mockOnCloseModal}
686
- onComponentClick={mockOnComponentClick}
687
- components={localComponents}
688
- categories={mockedCategories}
451
+ {...props}
452
+ components={palette.components.filter(
453
+ (componentMetadata: ComponentMetadata): boolean => {
454
+ return componentMetadata.tableName !== "Alert";
455
+ },
456
+ )}
689
457
  />,
690
458
  );
691
459
 
692
- fireEvent.change(
693
- screen.getByPlaceholderText(
694
- "Search components by name, description, or category",
695
- ),
696
- {
697
- target: { value: commonCategory },
698
- },
699
- );
700
- componentsInCommonCategory.forEach((comp: ComponentMetadata) => {
701
- expect(screen.getByText(comp.title)).toBeInTheDocument();
702
- });
460
+ expect(section("Popular")).toBeInTheDocument();
461
+ expect(
462
+ screen.queryByRole("heading", { name: "Alert" }),
463
+ ).not.toBeInTheDocument();
703
464
  });
465
+ });
704
466
 
705
- /*
706
- * Everything above searches with a single word, which is the one shape the
707
- * old whole-string filter handled. These use the strings the palette is
708
- * really made of, where the words a builder types are separated in the
709
- * component by words they have no reason to guess.
710
- */
711
- describe("search across every word typed", () => {
712
- const monitorComponents: Array<ComponentMetadata> = getDatabaseComponents(
713
- "Monitor",
714
- "Monitors",
715
- );
716
- const teamComponents: Array<ComponentMetadata> = getDatabaseComponents(
717
- "Team",
718
- "Teams",
719
- );
720
- const palette: Array<ComponentMetadata> = [
721
- ...monitorComponents,
722
- ...teamComponents,
723
- runCustomJavaScriptComponent,
724
- manualComponent,
725
- ];
726
-
727
- const createOneMonitor: ComponentMetadata = getComponentByTitle(
728
- palette,
729
- "Create One Monitor",
730
- );
731
- const createManyMonitors: ComponentMetadata = getComponentByTitle(
732
- palette,
733
- "Create Many Monitors",
734
- );
735
- const findOneMonitor: ComponentMetadata = getComponentByTitle(
736
- palette,
737
- "Find One Monitor",
467
+ describe("search results", () => {
468
+ it("replace the view while there is a search, and give it back after", () => {
469
+ renderPicker();
470
+
471
+ fireEvent.click(screen.getByRole("button", { name: "Monitor, 8 actions" }));
472
+ search("slack");
473
+
474
+ expect(optionTitles()).toEqual(["Send Message to Slack"]);
475
+ expect(
476
+ screen.queryByRole("heading", { name: "Monitor" }),
477
+ ).not.toBeInTheDocument();
478
+
479
+ search("");
480
+
481
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
482
+ expect(
483
+ screen.getByRole("heading", { name: "Monitor" }),
484
+ ).toBeInTheDocument();
485
+ });
486
+
487
+ it("put the resource named first: Incident's steps before Incident State's", () => {
488
+ renderPicker();
489
+
490
+ search("incident");
491
+
492
+ expect(optionTitles().slice(0, 8)).toEqual([
493
+ "Create One Incident",
494
+ "Create Many Incidents",
495
+ "Find One Incident",
496
+ "Find Many Incidents",
497
+ "Update One Incident",
498
+ "Update Many Incidents",
499
+ "Delete One Incident",
500
+ "Delete Many Incidents",
501
+ ]);
502
+
503
+ search("create incident");
504
+
505
+ expect(optionTitles()[0]).toBe("Create One Incident");
506
+ expect(optionTitles().indexOf("Create One Incident State")).toBeGreaterThan(
507
+ 1,
738
508
  );
739
- const updateOneMonitor: ComponentMetadata = getComponentByTitle(
740
- palette,
741
- "Update One Monitor",
509
+ });
510
+
511
+ it("draw only the best results, with the rest a click away", () => {
512
+ renderPicker();
513
+
514
+ search("incident");
515
+
516
+ const total: number = 72;
517
+ expect(screen.getAllByRole("option")).toHaveLength(
518
+ SEARCH_RESULTS_PAGE_SIZE,
742
519
  );
743
- const deleteManyMonitors: ComponentMetadata = getComponentByTitle(
744
- palette,
745
- "Delete Many Monitors",
520
+ expect(screen.getByRole("status")).toHaveTextContent(
521
+ `Best ${SEARCH_RESULTS_PAGE_SIZE} of ${total} matches.`,
746
522
  );
747
- const createOneTeam: ComponentMetadata = getComponentByTitle(
748
- palette,
749
- "Create One Team",
523
+
524
+ fireEvent.click(
525
+ screen.getByRole("button", {
526
+ name: `Show ${total - SEARCH_RESULTS_PAGE_SIZE} more`,
527
+ }),
750
528
  );
751
- const findOneTeam: ComponentMetadata = getComponentByTitle(
752
- palette,
753
- "Find One Team",
529
+
530
+ expect(screen.getAllByRole("option")).toHaveLength(total);
531
+ expect(screen.getByRole("status")).toHaveTextContent(`${total} matches.`);
532
+ expect(
533
+ screen.queryByRole("button", { name: /^Show \d+ more$/ }),
534
+ ).not.toBeInTheDocument();
535
+
536
+ // A new search starts again from the best results.
537
+ search("incidents");
538
+ expect(screen.getAllByRole("option")).toHaveLength(
539
+ SEARCH_RESULTS_PAGE_SIZE,
754
540
  );
541
+ });
755
542
 
756
- it("should split a search into its words, lower cased, ignoring runs of whitespace", () => {
757
- expect(getSearchTokens("create monitor")).toEqual(["create", "monitor"]);
758
-
759
- /*
760
- * Leading, trailing and repeated whitespace all come from ordinary
761
- * typing - a trailing space while still thinking, a double space between
762
- * words - and none of them should narrow the results.
763
- */
764
- expect(getSearchTokens(" Create ONE Monitor ")).toEqual([
765
- "create",
766
- "one",
767
- "monitor",
768
- ]);
769
- expect(getSearchTokens("create\tmonitor\nsecret")).toEqual([
770
- "create",
771
- "monitor",
772
- "secret",
773
- ]);
774
-
775
- // Nothing typed, and whitespace only, are the same thing: no words.
776
- expect(getSearchTokens("")).toEqual([]);
777
- expect(getSearchTokens(" ")).toEqual([]);
778
- });
543
+ it("count one match as one", () => {
544
+ renderPicker();
779
545
 
780
- it("should match every component when nothing has been typed", () => {
781
- // No search means show the palette, not hide it.
782
- const noTokens: Array<string> = getSearchTokens("");
546
+ search("slack");
783
547
 
784
- palette.forEach((componentMetadata: ComponentMetadata) => {
785
- expect(matchesSearch(componentMetadata, noTokens)).toBe(true);
786
- });
787
- });
548
+ expect(screen.getByRole("status")).toHaveTextContent("1 match.");
549
+ });
788
550
 
789
- it("should find a component when the words typed have other words between them", () => {
790
- /*
791
- * "create monitor" is the search this fix exists for. The generator
792
- * writes "Create One Monitor", so the typed string is not a substring of
793
- * any field, and the old filter - which tested exactly that - returned an
794
- * empty list for a component sitting right there in the palette.
795
- */
796
- expect(matchesWholeSearchString(createOneMonitor, "create monitor")).toBe(
797
- false,
798
- );
799
- expect(
800
- palette.filter((componentMetadata: ComponentMetadata) => {
801
- return matchesWholeSearchString(componentMetadata, "create monitor");
802
- }),
803
- ).toHaveLength(0);
551
+ it("mark what matched in each title, and show the resource beside it", () => {
552
+ renderPicker();
804
553
 
805
- expect(
806
- matchesSearch(createOneMonitor, getSearchTokens("create monitor")),
807
- ).toBe(true);
554
+ search("create inc");
808
555
 
809
- // The order the words are typed in is not part of the question.
810
- expect(
811
- matchesSearch(createOneMonitor, getSearchTokens("monitor create")),
812
- ).toBe(true);
556
+ const first: HTMLElement = screen.getAllByRole("option")[0]!;
813
557
 
814
- // The same shape of failure held for every other operation...
815
- expect(matchesWholeSearchString(updateOneMonitor, "update monitor")).toBe(
816
- false,
817
- );
818
- expect(
819
- matchesSearch(updateOneMonitor, getSearchTokens("update monitor")),
820
- ).toBe(true);
821
-
822
- // ...and every other model.
823
- expect(matchesWholeSearchString(findOneTeam, "find team")).toBe(false);
824
- expect(matchesSearch(findOneTeam, getSearchTokens("find team"))).toBe(
825
- true,
826
- );
827
- });
558
+ expect(
559
+ Array.from(first.querySelectorAll("mark")).map(
560
+ (mark: HTMLElement): string | null => {
561
+ return mark.textContent;
562
+ },
563
+ ),
564
+ ).toEqual(["Create", "Inc"]);
565
+ expect(first).toHaveAccessibleName("Create One Incident");
566
+ expect(first).toHaveAccessibleDescription(
567
+ "Database query to create one Incident",
568
+ );
569
+ expect(first).toHaveTextContent("Incident");
570
+ });
828
571
 
829
- it("should take its words from different fields", () => {
830
- /*
831
- * "code" appears only in the category ("Custom Code"), "javascript" only
832
- * in the title and description. No single field holds both, so the old
833
- * filter - title, then description, then category, each against the whole
834
- * string - could not have matched this in any word order.
835
- */
836
- expect(runCustomJavaScriptComponent.title.toLowerCase()).not.toContain(
837
- "code",
838
- );
839
- expect(
840
- runCustomJavaScriptComponent.description.toLowerCase(),
841
- ).not.toContain("code");
842
- expect(runCustomJavaScriptComponent.category.toLowerCase()).not.toContain(
843
- "javascript",
844
- );
845
- expect(
846
- matchesWholeSearchString(
847
- runCustomJavaScriptComponent,
848
- "javascript code",
849
- ),
850
- ).toBe(false);
851
- expect(
852
- matchesSearch(
853
- runCustomJavaScriptComponent,
854
- getSearchTokens("javascript code"),
855
- ),
856
- ).toBe(true);
857
-
858
- /*
859
- * The same across the generated components: "database" is only ever in
860
- * the description, while the model name is in the title and the category.
861
- */
862
- expect(createOneMonitor.title.toLowerCase()).not.toContain("database");
863
- expect(createOneMonitor.category.toLowerCase()).not.toContain("database");
864
- expect(
865
- matchesSearch(createOneMonitor, getSearchTokens("database monitor")),
866
- ).toBe(true);
867
- });
572
+ it("name the table of a resource that shares its name", () => {
573
+ renderPicker();
868
574
 
869
- it("should drop a component when one of the words matches nothing", () => {
870
- /*
871
- * Every word has to land somewhere. Otherwise the search would widen as
872
- * it was typed, and adding a word could never narrow the list.
873
- */
874
- expect(
875
- matchesSearch(
876
- createOneMonitor,
877
- getSearchTokens("create monitor banana"),
575
+ search("create one subscriber notification template");
576
+
577
+ const options: Array<HTMLElement> = screen.getAllByRole("option");
578
+
579
+ expect(options).toHaveLength(2);
580
+ expect(
581
+ options.map((option: HTMLElement): string => {
582
+ return option.textContent || "";
583
+ }),
584
+ ).toEqual(
585
+ expect.arrayContaining([
586
+ expect.stringContaining(
587
+ "Status Page Subscriber Notification Template Status Page",
878
588
  ),
879
- ).toBe(false);
880
- expect(rankBySearch(palette, "create monitor banana")).toEqual([]);
881
- });
589
+ ]),
590
+ );
591
+ });
882
592
 
883
- it("should ignore case on both sides", () => {
884
- // The generator writes Title Case; almost nobody types it.
885
- expect(createOneMonitor.title).toBe("Create One Monitor");
593
+ it("add the result clicked", () => {
594
+ const onComponentClick: MockFunction = getJestMockFunction();
595
+ renderPicker({ onComponentClick });
886
596
 
887
- expect(
888
- matchesSearch(createOneMonitor, getSearchTokens("create monitor")),
889
- ).toBe(true);
890
- expect(
891
- matchesSearch(createOneMonitor, getSearchTokens("CREATE MONITOR")),
892
- ).toBe(true);
893
- expect(
894
- matchesSearch(createOneMonitor, getSearchTokens("CrEaTe MoNiToR")),
895
- ).toBe(true);
896
- });
597
+ search("incident state");
598
+ fireEvent.click(screen.getAllByRole("option")[2]!);
897
599
 
898
- it("should still match part of a word", () => {
899
- /*
900
- * Matching inside a word is what makes a search useful while it is still
901
- * being typed, and it is what lets the singular a builder types reach the
902
- * plural the generator wrote. Both predate this fix and both still hold.
903
- */
904
- expect(matchesSearch(createOneMonitor, getSearchTokens("mon"))).toBe(
905
- true,
906
- );
907
- expect(
908
- matchesSearch(createOneMonitor, getSearchTokens("creat mon")),
909
- ).toBe(true);
910
- expect(
911
- matchesSearch(createManyMonitors, getSearchTokens("create monitor")),
912
- ).toBe(true);
913
- });
600
+ expect(onComponentClick).toHaveBeenCalledTimes(1);
601
+ expect(onComponentClick).toHaveBeenCalledWith(
602
+ findByTitle(palette.components, "Find One Incident State"),
603
+ );
604
+ });
914
605
 
915
- it("should score a search of several words above zero", () => {
916
- /*
917
- * Every branch of the per-word score tests one whole token against one
918
- * field, so scoring the search as a single string gave a score of exactly
919
- * zero to the very component it was meant to find. With every score zero
920
- * the order fell through to the alphabetical tie-break, which is to say
921
- * there was no ranking at all for any search longer than one word.
922
- */
923
- expect(getSearchScore(createOneMonitor, ["create monitor"])).toBe(0);
924
- expect(
925
- getSearchScore(createOneMonitor, getSearchTokens("create monitor")),
926
- ).toBeGreaterThan(0);
927
- });
606
+ it("say what to try when nothing matches, and clear back to the view", () => {
607
+ renderPicker();
928
608
 
929
- it("should score a component matching both words above one matching a single word", () => {
930
- const tokens: Array<string> = getSearchTokens("create monitor");
609
+ search("zzzz qqq");
931
610
 
932
- expect(getSearchScore(createOneMonitor, tokens)).toBeGreaterThan(
933
- getSearchScore(updateOneMonitor, tokens),
934
- );
611
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
612
+ expect(
613
+ screen.getByText("No components match “zzzz qqq”"),
614
+ ).toBeInTheDocument();
615
+ expect(
616
+ screen.getByText(
617
+ "Check the spelling, or try fewer or different words. For anything that is not here, the API components and Run Custom JavaScript can work with any service.",
618
+ ),
619
+ ).toBeInTheDocument();
620
+ expect(screen.getByRole("status")).toHaveTextContent(
621
+ "No components match.",
622
+ );
935
623
 
936
- /*
937
- * "Update One Monitor" earns the "monitor" half and nothing for "create",
938
- * so its score for the two words is the score of one of them.
939
- */
940
- expect(getSearchScore(updateOneMonitor, tokens)).toBe(
941
- getSearchScore(updateOneMonitor, getSearchTokens("monitor")),
942
- );
943
- });
624
+ /*
625
+ * The × in the box clears it too; this is the button under the advice,
626
+ * the one with words on it.
627
+ */
628
+ expect(
629
+ screen.getAllByRole("button", { name: "Clear search" }),
630
+ ).toHaveLength(2);
631
+ fireEvent.click(screen.getByText("Clear search").closest("button")!);
944
632
 
945
- it("should score a title the search starts above a match found only in the description", () => {
946
- const tokens: Array<string> = getSearchTokens("run");
633
+ expect(screen.getByRole("combobox")).toHaveValue("");
634
+ expect(screen.getByRole("combobox")).toHaveFocus();
635
+ expect(section("Popular")).toBeInTheDocument();
636
+ });
947
637
 
948
- // "Manual" mentions the word only in "Run this workflow manually".
949
- expect(manualComponent.title.toLowerCase()).not.toContain("run");
950
- expect(manualComponent.category.toLowerCase()).not.toContain("run");
638
+ it("point a trigger search that finds nothing at the Webhook trigger", () => {
639
+ renderPicker({ componentsType: ComponentType.Trigger });
951
640
 
952
- expect(getSearchScore(manualComponent, tokens)).toBeGreaterThan(0);
953
- expect(
954
- getSearchScore(runCustomJavaScriptComponent, tokens),
955
- ).toBeGreaterThan(getSearchScore(manualComponent, tokens));
956
- });
641
+ search("zzzz");
957
642
 
958
- it("should score nothing when nothing has been typed", () => {
959
- // Nothing to rank by, so the modal falls back to sorting by title.
960
- expect(getSearchScore(createOneMonitor, getSearchTokens(""))).toBe(0);
961
- expect(getSearchScore(createOneMonitor, [])).toBe(0);
962
- });
643
+ expect(
644
+ screen.getByText(
645
+ "Check the spelling, or try fewer or different words. To start this workflow from another tool, use the Webhook trigger.",
646
+ ),
647
+ ).toBeInTheDocument();
648
+ });
963
649
 
964
- it("should rank the components that create Monitors first for 'create monitor'", () => {
965
- const tokens: Array<string> = getSearchTokens("create monitor");
966
-
967
- /*
968
- * Out of both operations of two models plus the hand-written components,
969
- * only the two that create Monitors survive: the other Monitor
970
- * components have no "create" anywhere, and the Team components have no
971
- * "monitor".
972
- */
973
- expect(rankBySearch(palette, "create monitor")).toEqual([
974
- "Create Many Monitors",
975
- "Create One Monitor",
976
- ]);
977
-
978
- /*
979
- * Those two score identically - nothing in the scoring can prefer "One"
980
- * over "Many" - so it is the alphabetical tie-break that puts Many first,
981
- * not the ranking. Typing the third word is what separates them.
982
- */
983
- expect(getSearchScore(createManyMonitors, tokens)).toBe(
984
- getSearchScore(createOneMonitor, tokens),
985
- );
986
- expect(rankBySearch(palette, "create one monitor")).toEqual([
987
- "Create One Monitor",
988
- ]);
989
-
990
- /*
991
- * The two survivors also outscore what the filter dropped, so the
992
- * ranking would hold them at the top even in a palette where the other
993
- * components still matched.
994
- */
995
- expect(getSearchScore(createOneMonitor, tokens)).toBeGreaterThan(
996
- getSearchScore(findOneMonitor, tokens),
997
- );
998
- expect(getSearchScore(createOneMonitor, tokens)).toBeGreaterThan(
999
- getSearchScore(deleteManyMonitors, tokens),
1000
- );
1001
- expect(getSearchScore(createOneMonitor, tokens)).toBeGreaterThan(
1002
- getSearchScore(createOneTeam, tokens),
1003
- );
1004
- });
650
+ it("treat punctuation alone as no search at all", () => {
651
+ renderPicker();
1005
652
 
1006
- it("should show the component in the modal when the builder types 'create monitor'", () => {
1007
- /*
1008
- * The same regression through the modal itself, since the empty state -
1009
- * and the conclusion that the integration has to be built by hand - is
1010
- * what a builder actually met.
1011
- */
1012
- render(
1013
- <ComponentsModal
1014
- componentsType={ComponentType.Component}
1015
- onCloseModal={mockOnCloseModal}
1016
- onComponentClick={mockOnComponentClick}
1017
- components={[...monitorComponents, ...teamComponents]}
1018
- categories={[
1019
- getComponentCategory("Monitor"),
1020
- getComponentCategory("Team"),
1021
- ]}
1022
- />,
1023
- );
1024
-
1025
- fireEvent.change(
1026
- screen.getByPlaceholderText(
1027
- "Search components by name, description, or category",
1028
- ),
1029
- {
1030
- target: { value: "create monitor" },
1031
- },
1032
- );
653
+ search("/ - ?");
1033
654
 
1034
- expect(
1035
- screen.getByRole("button", { name: "Create One Monitor" }),
1036
- ).toBeInTheDocument();
1037
- expect(
1038
- screen.getByRole("button", { name: "Create Many Monitors" }),
1039
- ).toBeInTheDocument();
1040
- expect(
1041
- screen.queryByRole("button", { name: "Find One Monitor" }),
1042
- ).not.toBeInTheDocument();
1043
- expect(
1044
- screen.queryByRole("button", { name: "Create One Team" }),
1045
- ).not.toBeInTheDocument();
1046
- });
655
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
656
+ expect(section("Popular")).toBeInTheDocument();
657
+ // The box still holds what was typed, and can be cleared.
658
+ expect(
659
+ screen.getByRole("button", { name: "Clear search" }),
660
+ ).toBeInTheDocument();
661
+ });
662
+ });
663
+
664
+ describe("the categories a caller hands in", () => {
665
+ it("are optional: steps without one are still shown and searchable", () => {
666
+ const categories: Array<ComponentCategory> = [];
667
+ renderPicker({ categories });
668
+
669
+ expect(screen.getByRole("button", { name: "Log" })).toBeInTheDocument();
670
+ search("incident");
671
+ expect(optionTitles()[0]).toBe("Create One Incident");
1047
672
  });
1048
673
  });