@memberjunction/server 6.2.0-edge.6 → 6.2.0-edge.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/BridgeHostInstance.d.ts +8 -3
- package/dist/agentSessions/BridgeHostInstance.d.ts.map +1 -1
- package/dist/agentSessions/BridgeHostInstance.js +14 -4
- package/dist/agentSessions/BridgeHostInstance.js.map +1 -1
- package/dist/agentSessions/HandoffOfferExpiry.d.ts +10 -0
- package/dist/agentSessions/HandoffOfferExpiry.d.ts.map +1 -0
- package/dist/agentSessions/HandoffOfferExpiry.js +18 -0
- package/dist/agentSessions/HandoffOfferExpiry.js.map +1 -0
- package/dist/agentSessions/ReturningVisitorRecap.js +1 -0
- package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
- package/dist/agentSessions/SessionJanitor.d.ts +31 -8
- package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
- package/dist/agentSessions/SessionJanitor.js +85 -41
- package/dist/agentSessions/SessionJanitor.js.map +1 -1
- package/dist/agentSessions/SessionManager.d.ts +14 -4
- package/dist/agentSessions/SessionManager.d.ts.map +1 -1
- package/dist/agentSessions/SessionManager.js +28 -4
- package/dist/agentSessions/SessionManager.js.map +1 -1
- package/dist/agentSessions/conversationBrowsers.d.ts +61 -0
- package/dist/agentSessions/conversationBrowsers.d.ts.map +1 -0
- package/dist/agentSessions/conversationBrowsers.js +118 -0
- package/dist/agentSessions/conversationBrowsers.js.map +1 -0
- package/dist/agentSessions/sessionDeadline.d.ts +43 -0
- package/dist/agentSessions/sessionDeadline.d.ts.map +1 -0
- package/dist/agentSessions/sessionDeadline.js +68 -0
- package/dist/agentSessions/sessionDeadline.js.map +1 -0
- package/dist/auth/APIKeyScopeAuth.d.ts.map +1 -1
- package/dist/auth/APIKeyScopeAuth.js +5 -4
- package/dist/auth/APIKeyScopeAuth.js.map +1 -1
- package/dist/auth/loginEmailResolution.d.ts +41 -0
- package/dist/auth/loginEmailResolution.d.ts.map +1 -0
- package/dist/auth/loginEmailResolution.js +47 -0
- package/dist/auth/loginEmailResolution.js.map +1 -0
- package/dist/auth/magicLink/MagicLinkKeys.d.ts +50 -2
- package/dist/auth/magicLink/MagicLinkKeys.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkKeys.js +129 -12
- package/dist/auth/magicLink/MagicLinkKeys.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.d.ts +3 -0
- package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.js +23 -5
- package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.d.ts +39 -5
- package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +221 -9
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/magicLink/index.d.ts +1 -1
- package/dist/auth/magicLink/index.d.ts.map +1 -1
- package/dist/auth/magicLink/index.js +1 -1
- package/dist/auth/magicLink/index.js.map +1 -1
- package/dist/auth/magicLink/redeemLanding.d.ts +2 -2
- package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
- package/dist/auth/magicLink/redeemLanding.js +7 -4
- package/dist/auth/magicLink/redeemLanding.js.map +1 -1
- package/dist/auth/magicLink/types.d.ts +27 -3
- package/dist/auth/magicLink/types.d.ts.map +1 -1
- package/dist/auth/magicLink/types.js +0 -4
- package/dist/auth/magicLink/types.js.map +1 -1
- package/dist/auth/newUsers.d.ts.map +1 -1
- package/dist/auth/newUsers.js +1 -0
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/backgroundSweepConfigUnits.d.ts +231 -0
- package/dist/backgroundSweepConfigUnits.d.ts.map +1 -0
- package/dist/backgroundSweepConfigUnits.js +180 -0
- package/dist/backgroundSweepConfigUnits.js.map +1 -0
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts.map +1 -1
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js +2 -1
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js.map +1 -1
- package/dist/config.d.ts +906 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +59 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +41 -12
- package/dist/context.js.map +1 -1
- package/dist/coreRoutes.d.ts +3 -1
- package/dist/coreRoutes.d.ts.map +1 -1
- package/dist/coreRoutes.js +6 -4
- package/dist/coreRoutes.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj.d.ts +1072 -5
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +10174 -4618
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts +11 -0
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.js +27 -1
- package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +50 -5
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +329 -132
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +4 -0
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +47 -7
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/globalCors.d.ts.map +1 -1
- package/dist/globalCors.js +1 -0
- package/dist/globalCors.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +201 -43
- package/dist/index.js.map +1 -1
- package/dist/integration/ConnectionPause.d.ts +121 -0
- package/dist/integration/ConnectionPause.d.ts.map +1 -0
- package/dist/integration/ConnectionPause.js +183 -0
- package/dist/integration/ConnectionPause.js.map +1 -0
- package/dist/integration/CustomColumnPromoter.d.ts +72 -6
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +87 -46
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/integration/EntityMapLifecycle.d.ts +78 -4
- package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
- package/dist/integration/EntityMapLifecycle.js +199 -5
- package/dist/integration/EntityMapLifecycle.js.map +1 -1
- package/dist/integration/InactiveRowWarnings.d.ts +31 -0
- package/dist/integration/InactiveRowWarnings.d.ts.map +1 -1
- package/dist/integration/InactiveRowWarnings.js +29 -0
- package/dist/integration/InactiveRowWarnings.js.map +1 -1
- package/dist/integration/ObjectNamesByID.d.ts +28 -0
- package/dist/integration/ObjectNamesByID.d.ts.map +1 -0
- package/dist/integration/ObjectNamesByID.js +87 -0
- package/dist/integration/ObjectNamesByID.js.map +1 -0
- package/dist/integration/PostRestartIntrospect.d.ts +26 -0
- package/dist/integration/PostRestartIntrospect.d.ts.map +1 -0
- package/dist/integration/PostRestartIntrospect.js +27 -0
- package/dist/integration/PostRestartIntrospect.js.map +1 -0
- package/dist/integration/RSUPostRestartProgress.d.ts +176 -0
- package/dist/integration/RSUPostRestartProgress.d.ts.map +1 -0
- package/dist/integration/RSUPostRestartProgress.js +323 -0
- package/dist/integration/RSUPostRestartProgress.js.map +1 -0
- package/dist/integration/RSUProgressBridge.d.ts +41 -2
- package/dist/integration/RSUProgressBridge.d.ts.map +1 -1
- package/dist/integration/RSUProgressBridge.js +84 -1
- package/dist/integration/RSUProgressBridge.js.map +1 -1
- package/dist/integration/RunArtifactAuthorization.d.ts +39 -0
- package/dist/integration/RunArtifactAuthorization.d.ts.map +1 -0
- package/dist/integration/RunArtifactAuthorization.js +45 -0
- package/dist/integration/RunArtifactAuthorization.js.map +1 -0
- package/dist/integration/SchemaRefreshLaunch.d.ts +9 -0
- package/dist/integration/SchemaRefreshLaunch.d.ts.map +1 -1
- package/dist/integration/SchemaRefreshLaunch.js +3 -2
- package/dist/integration/SchemaRefreshLaunch.js.map +1 -1
- package/dist/integration/ScopedFieldsForBuild.d.ts +46 -0
- package/dist/integration/ScopedFieldsForBuild.d.ts.map +1 -0
- package/dist/integration/ScopedFieldsForBuild.js +91 -0
- package/dist/integration/ScopedFieldsForBuild.js.map +1 -0
- package/dist/integration/TargetConfigGuard.d.ts +40 -0
- package/dist/integration/TargetConfigGuard.d.ts.map +1 -0
- package/dist/integration/TargetConfigGuard.js +40 -0
- package/dist/integration/TargetConfigGuard.js.map +1 -0
- package/dist/logging/StartupLogger.d.ts +50 -0
- package/dist/logging/StartupLogger.d.ts.map +1 -1
- package/dist/logging/StartupLogger.js +15 -22
- package/dist/logging/StartupLogger.js.map +1 -1
- package/dist/middleware/BaseServerMiddleware.d.ts +21 -3
- package/dist/middleware/BaseServerMiddleware.d.ts.map +1 -1
- package/dist/middleware/BaseServerMiddleware.js +4 -2
- package/dist/middleware/BaseServerMiddleware.js.map +1 -1
- package/dist/realtimeSessions/ownedRealtimeSession.d.ts.map +1 -1
- package/dist/realtimeSessions/ownedRealtimeSession.js +2 -3
- package/dist/realtimeSessions/ownedRealtimeSession.js.map +1 -1
- package/dist/realtimeSessions/sessionAccess.d.ts +15 -0
- package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -1
- package/dist/realtimeSessions/sessionAccess.js +22 -0
- package/dist/realtimeSessions/sessionAccess.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.js +2 -0
- package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.js +1 -0
- package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
- package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetCore.js +4 -7
- package/dist/realtimeWidget/widgetCore.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +1 -0
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/requestOrigin.d.ts +22 -0
- package/dist/requestOrigin.d.ts.map +1 -0
- package/dist/requestOrigin.js +60 -0
- package/dist/requestOrigin.js.map +1 -0
- package/dist/resolvers/AgentRunStatusPublisher.d.ts +10 -0
- package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -1
- package/dist/resolvers/AgentRunStatusPublisher.js +18 -2
- package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -1
- package/dist/resolvers/AgentSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/AgentSessionResolver.js +6 -2
- package/dist/resolvers/AgentSessionResolver.js.map +1 -1
- package/dist/resolvers/AutotagPipelineResolver.d.ts +1 -1
- package/dist/resolvers/AutotagPipelineResolver.d.ts.map +1 -1
- package/dist/resolvers/AutotagPipelineResolver.js +61 -16
- package/dist/resolvers/AutotagPipelineResolver.js.map +1 -1
- package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -1
- package/dist/resolvers/ConversationRunEventsResolver.js +2 -0
- package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -1
- package/dist/resolvers/ExecuteRemoteOperationResolver.d.ts +6 -0
- package/dist/resolvers/ExecuteRemoteOperationResolver.d.ts.map +1 -1
- package/dist/resolvers/ExecuteRemoteOperationResolver.js +30 -7
- package/dist/resolvers/ExecuteRemoteOperationResolver.js.map +1 -1
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +34 -13
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/InfoResolver.js +1 -1
- package/dist/resolvers/InfoResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +401 -11
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +2690 -1305
- package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +13 -2
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.d.ts +38 -1
- package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.js +181 -88
- package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +1 -0
- package/dist/resolvers/RealtimeBridgeResolver.js.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +6 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +36 -5
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts +62 -10
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.js +217 -34
- package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts +24 -8
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +185 -67
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +5 -3
- package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +19 -18
- package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
- package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTemplateResolver.js +3 -1
- package/dist/resolvers/RunTemplateResolver.js.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +7 -8
- package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
- package/dist/resolvers/TagGovernanceResolver.d.ts +12 -0
- package/dist/resolvers/TagGovernanceResolver.d.ts.map +1 -1
- package/dist/resolvers/TagGovernanceResolver.js +84 -0
- package/dist/resolvers/TagGovernanceResolver.js.map +1 -1
- package/dist/resolvers/TelemetryResolver.d.ts +13 -8
- package/dist/resolvers/TelemetryResolver.d.ts.map +1 -1
- package/dist/resolvers/TelemetryResolver.js +40 -9
- package/dist/resolvers/TelemetryResolver.js.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.js +2 -0
- package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
- package/dist/resolvers/meetings/meetingMutations.d.ts.map +1 -1
- package/dist/resolvers/meetings/meetingMutations.js +34 -4
- package/dist/resolvers/meetings/meetingMutations.js.map +1 -1
- package/dist/rest/MediaAccessKeys.d.ts.map +1 -1
- package/dist/rest/MediaAccessKeys.js +6 -2
- package/dist/rest/MediaAccessKeys.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +11 -5
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/RealtimeRecordingHandler.d.ts +3 -3
- package/dist/rest/RealtimeRecordingHandler.d.ts.map +1 -1
- package/dist/rest/RealtimeRecordingHandler.js +2 -4
- package/dist/rest/RealtimeRecordingHandler.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +2 -1
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +3 -1
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +11 -2
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/services/DurableEntityActionTaskSubmitter.d.ts.map +1 -1
- package/dist/services/DurableEntityActionTaskSubmitter.js +6 -1
- package/dist/services/DurableEntityActionTaskSubmitter.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +2 -26
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/services/TaskGraphAgentRunner.d.ts +6 -0
- package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphAgentRunner.js +38 -0
- package/dist/services/TaskGraphAgentRunner.js.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.js +1 -0
- package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
- package/dist/services/WorkQueueHostService.d.ts +2 -1
- package/dist/services/WorkQueueHostService.d.ts.map +1 -1
- package/dist/services/WorkQueueHostService.js +19 -4
- package/dist/services/WorkQueueHostService.js.map +1 -1
- package/dist/services/workQueueConfig.d.ts +2 -2
- package/dist/services/workQueueConfig.js +5 -5
- package/dist/services/workQueueConfig.js.map +1 -1
- package/dist/sharedCache.js +1 -1
- package/dist/sharedCache.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +55 -2
- package/dist/util.js.map +1 -1
- package/package.json +107 -100
- package/src/__tests__/APIKeyScopeAuth.test.ts +4 -8
- package/src/__tests__/ActiveOperations.test.ts +68 -0
- package/src/__tests__/AgentSessionResolver.ownership.test.ts +13 -0
- package/src/__tests__/AssertTargetConfigs.test.ts +75 -0
- package/src/__tests__/BatchApplyParity.test.ts +109 -0
- package/src/__tests__/BridgeHostInstance.test.ts +42 -0
- package/src/__tests__/CollectInactiveRowWarnings.test.ts +115 -0
- package/src/__tests__/ConnectionPause.test.ts +192 -0
- package/src/__tests__/ConnectionPauseResolver.test.ts +166 -0
- package/src/__tests__/ConnectionPauseSave.test.ts +143 -0
- package/src/__tests__/CustomColumnPromoterCompletion.test.ts +142 -0
- package/src/__tests__/DeleteConnectionRemovesPerConnectionCatalog.test.ts +51 -0
- package/src/__tests__/DetachedDiscoveryStart.test.ts +65 -0
- package/src/__tests__/DurableEntityActionTaskSubmitter.test.ts +73 -0
- package/src/__tests__/EntityMapLifecycle.rekey.test.ts +252 -0
- package/src/__tests__/ExecuteRemoteOperationResolver.test.ts +213 -0
- package/src/__tests__/HandoffOfferExpiry.test.ts +40 -0
- package/src/__tests__/IntegrationRunArtifactAuthorization.test.ts +126 -0
- package/src/__tests__/MagicLinkKeys.test.ts +102 -0
- package/src/__tests__/MediaAccessKeys.test.ts +57 -10
- package/src/__tests__/NewArrivalsDefaultDisabled.test.ts +50 -0
- package/src/__tests__/ObjectNamesByID.test.ts +176 -0
- package/src/__tests__/PostRestartMapsInCatalogScope.test.ts +146 -0
- package/src/__tests__/QuerySystemUserResolver.childRows.test.ts +80 -0
- package/src/__tests__/QuerySystemUserResolver.collision.test.ts +200 -0
- package/src/__tests__/QuerySystemUserResolver.permissions.test.ts +132 -0
- package/src/__tests__/RSUPostRestartProgress.test.ts +343 -0
- package/src/__tests__/RSUProgressBridge.test.ts +188 -5
- package/src/__tests__/RSUStartupSweepWiring.test.ts +30 -0
- package/src/__tests__/ReactivateRefreshMessage.test.ts +10 -3
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +22 -0
- package/src/__tests__/{RefreshAdoptsNewColumns.test.ts → RefreshReportsNewColumns.test.ts} +25 -16
- package/src/__tests__/RemoteBrowserActionRecovery.test.ts +287 -0
- package/src/__tests__/RemoteBrowserActionResolver.goalRunLink.test.ts +3 -0
- package/src/__tests__/RemoteBrowserActionResolver.ownership.test.ts +6 -4
- package/src/__tests__/RemoteBrowserAudioStream.test.ts +3 -0
- package/src/__tests__/RemoteBrowserSnapshot.test.ts +3 -0
- package/src/__tests__/ResolverBase.clientOldValues.test.ts +327 -26
- package/src/__tests__/ResolverBase.diagnosticSenderRegistrations.test.ts +26 -0
- package/src/__tests__/ResolverBase.encryptedApiZeroReencrypt.test.ts +307 -0
- package/src/__tests__/ResolverBase.entityMessageRelay.test.ts +53 -2
- package/src/__tests__/ResolverBase.includeBinaryFields.test.ts +60 -0
- package/src/__tests__/RunAIAgentResolver.branch.test.ts +4 -0
- package/src/__tests__/RunAIAgentResolver.consultPredecessor.test.ts +289 -0
- package/src/__tests__/RunAIAgentResolver.handoff.test.ts +649 -0
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +2 -0
- package/src/__tests__/RunAIAgentResolver.runDataGuard.test.ts +2 -0
- package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +87 -12
- package/src/__tests__/RunAIAgentResolver.streaming.test.ts +28 -4
- package/src/__tests__/SchemaEvolutionCustomColumns.test.ts +119 -0
- package/src/__tests__/SchemaRefreshLaunch.test.ts +24 -2
- package/src/__tests__/ScopedFieldsForBuild.test.ts +192 -0
- package/src/__tests__/SessionJanitor.test.ts +195 -4
- package/src/__tests__/SessionManager.test.ts +69 -0
- package/src/__tests__/TagGovernanceAndAutotagResolvers.test.ts +261 -0
- package/src/__tests__/TagGovernanceResolver.test.ts +60 -2
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +2 -2
- package/src/__tests__/TaskGraphAgentRunner.test.ts +272 -16
- package/src/__tests__/ViewOperationsHandler.test.ts +2 -5
- package/src/__tests__/WorkQueueHostService.test.ts +25 -7
- package/src/__tests__/backgroundSweepConfigUnits.test.ts +153 -0
- package/src/__tests__/contextRequestOrigin.test.ts +105 -0
- package/src/__tests__/conversationBrowsers.test.ts +62 -0
- package/src/__tests__/globalCors.test.ts +12 -0
- package/src/__tests__/magicLinkExtensionCapabilities.test.ts +413 -0
- package/src/__tests__/orphanedConversationDetailReconciler.start.test.ts +82 -0
- package/src/__tests__/ownedRealtimeSession.test.ts +14 -0
- package/src/__tests__/realtimeRecordingHandler.test.ts +7 -2
- package/src/__tests__/realtimeSessions/sessionAccess.test.ts +79 -1
- package/src/__tests__/requestOrigin.test.ts +104 -0
- package/src/__tests__/review-capture-valid-token-log.test.ts +98 -0
- package/src/__tests__/runStreams.fieldSecurity.test.ts +5 -5
- package/src/__tests__/securityHardeningPr6034.test.ts +120 -0
- package/src/__tests__/sessionDeadline.test.ts +51 -0
- package/src/__tests__/sharedCache.test.ts +11 -0
- package/src/__tests__/unifiedAuth.test.ts +73 -1
- package/src/agentSessions/BridgeHostInstance.ts +20 -5
- package/src/agentSessions/HandoffOfferExpiry.ts +18 -0
- package/src/agentSessions/ReturningVisitorRecap.ts +1 -0
- package/src/agentSessions/SessionJanitor.ts +92 -42
- package/src/agentSessions/SessionManager.ts +38 -8
- package/src/agentSessions/conversationBrowsers.ts +143 -0
- package/src/agentSessions/sessionDeadline.ts +81 -0
- package/src/auth/APIKeyScopeAuth.ts +5 -4
- package/src/auth/__tests__/loginEmailResolution.test.ts +67 -0
- package/src/auth/loginEmailResolution.ts +67 -0
- package/src/auth/magicLink/MagicLinkKeys.ts +146 -14
- package/src/auth/magicLink/MagicLinkRouter.ts +33 -6
- package/src/auth/magicLink/MagicLinkService.ts +250 -10
- package/src/auth/magicLink/index.ts +1 -1
- package/src/auth/magicLink/redeemLanding.ts +7 -4
- package/src/auth/magicLink/types.ts +28 -3
- package/src/auth/newUsers.ts +1 -0
- package/src/backgroundSweepConfigUnits.ts +213 -0
- package/src/broadcast/BaseCacheInvalidationBroadcastProvider.ts +2 -1
- package/src/config.ts +69 -0
- package/src/context.ts +46 -15
- package/src/coreRoutes.ts +14 -7
- package/src/generated/graphql-schemas/__mj.ts +10360 -6479
- package/src/generic/OrphanedConversationDetailReconciler.ts +32 -1
- package/src/generic/ResolverBase.ts +422 -143
- package/src/generic/RunViewResolver.ts +96 -49
- package/src/globalCors.ts +1 -0
- package/src/index.ts +246 -44
- package/src/integration/ConnectionPause.ts +222 -0
- package/src/integration/CustomColumnPromoter.ts +123 -53
- package/src/integration/EntityMapLifecycle.ts +229 -6
- package/src/integration/InactiveRowWarnings.ts +50 -0
- package/src/integration/ObjectNamesByID.ts +97 -0
- package/src/integration/PostRestartIntrospect.ts +49 -0
- package/src/integration/RSUPostRestartProgress.ts +359 -0
- package/src/integration/RSUProgressBridge.ts +85 -2
- package/src/integration/RunArtifactAuthorization.ts +65 -0
- package/src/integration/SchemaRefreshLaunch.ts +12 -2
- package/src/integration/ScopedFieldsForBuild.ts +113 -0
- package/src/integration/TargetConfigGuard.ts +71 -0
- package/src/logging/StartupLogger.ts +24 -0
- package/src/middleware/BaseServerMiddleware.ts +20 -3
- package/src/realtimeSessions/ownedRealtimeSession.ts +2 -6
- package/src/realtimeSessions/sessionAccess.ts +30 -0
- package/src/realtimeWidget/WidgetSessionService.ts +2 -0
- package/src/realtimeWidget/visitorIdentity.ts +1 -0
- package/src/realtimeWidget/widgetCore.ts +4 -8
- package/src/realtimeWidget/widgetGuestElevation.ts +1 -0
- package/src/requestOrigin.ts +64 -0
- package/src/resolvers/AgentRunStatusPublisher.ts +27 -2
- package/src/resolvers/AgentSessionResolver.ts +6 -2
- package/src/resolvers/AutotagPipelineResolver.ts +59 -14
- package/src/resolvers/ConversationRunEventsResolver.ts +2 -0
- package/src/resolvers/ExecuteRemoteOperationResolver.ts +41 -9
- package/src/resolvers/GetDataResolver.ts +35 -13
- package/src/resolvers/InfoResolver.ts +1 -1
- package/src/resolvers/IntegrationDiscoveryResolver.ts +1522 -203
- package/src/resolvers/MCPResolver.ts +15 -2
- package/src/resolvers/QuerySystemUserResolver.ts +211 -100
- package/src/resolvers/RealtimeBridgeResolver.ts +1 -0
- package/src/resolvers/RealtimeClientSessionResolver.ts +40 -7
- package/src/resolvers/RemoteBrowserActionResolver.ts +242 -32
- package/src/resolvers/RunAIAgentResolver.ts +265 -86
- package/src/resolvers/RunAIPromptResolver.ts +18 -18
- package/src/resolvers/RunTemplateResolver.ts +3 -1
- package/src/resolvers/SqlLoggingConfigResolver.ts +7 -9
- package/src/resolvers/TagGovernanceResolver.ts +65 -0
- package/src/resolvers/TelemetryResolver.ts +44 -9
- package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +52 -0
- package/src/resolvers/meetingRecordingRegistration.ts +2 -0
- package/src/resolvers/meetings/meetingMutations.ts +37 -7
- package/src/rest/MediaAccessKeys.ts +6 -2
- package/src/rest/OAuthCallbackHandler.ts +13 -5
- package/src/rest/RealtimeRecordingHandler.ts +5 -9
- package/src/rest/ViewOperationsHandler.ts +2 -1
- package/src/rest/setupRESTEndpoints.ts +11 -2
- package/src/services/DurableEntityActionTaskSubmitter.ts +10 -2
- package/src/services/TaskGraphActionRunner.ts +2 -23
- package/src/services/TaskGraphAgentRunner.ts +43 -0
- package/src/services/TaskGraphContinuationDeliverer.ts +1 -0
- package/src/services/WorkQueueHostService.ts +26 -4
- package/src/services/workQueueConfig.ts +5 -5
- package/src/sharedCache.ts +1 -1
- package/src/types.ts +18 -0
- package/src/util.ts +55 -3
- package/src/services/TaskOrchestration-Integration.md +0 -188
|
@@ -28,6 +28,35 @@ const isActive = (row) => row.Status === 'Active';
|
|
|
28
28
|
* Returns an empty array when everything declared and in scope is Active.
|
|
29
29
|
*/
|
|
30
30
|
export function ComputeInactiveRowWarnings(input) {
|
|
31
|
+
return computeInactiveRowWarnings(input);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Gathers the rows {@link ComputeInactiveRowWarnings} needs from the catalog and returns its verdict.
|
|
35
|
+
*
|
|
36
|
+
* `requestedNames` empty/undefined means "everything active", which deliberately does not report
|
|
37
|
+
* deactivated OBJECTS — see {@link InactiveRowWarningInput.RequestedNames}.
|
|
38
|
+
*/
|
|
39
|
+
export function CollectInactiveRowWarnings(catalog, integrationID, requestedNames) {
|
|
40
|
+
const filter = requestedNames && requestedNames.length > 0
|
|
41
|
+
? new Set(requestedNames.map(n => n.toLowerCase()))
|
|
42
|
+
: null;
|
|
43
|
+
// Fields only for the objects this apply materializes: a non-materialized object is reported by
|
|
44
|
+
// the object warning, not by one line per field it also lost.
|
|
45
|
+
const FieldsByObjectName = {};
|
|
46
|
+
for (const io of catalog.GetActiveIntegrationObjects(integrationID)) {
|
|
47
|
+
if (filter && !filter.has(io.Name.toLowerCase()))
|
|
48
|
+
continue;
|
|
49
|
+
FieldsByObjectName[io.Name] = catalog.GetIntegrationObjectFields(io.ID)
|
|
50
|
+
.map(f => ({ Name: f.Name, Status: f.Status }));
|
|
51
|
+
}
|
|
52
|
+
return computeInactiveRowWarnings({
|
|
53
|
+
RequestedNames: requestedNames ?? null,
|
|
54
|
+
AllObjects: catalog.GetIntegrationObjectsByIntegrationID(integrationID)
|
|
55
|
+
.map(io => ({ Name: io.Name, Status: io.Status })),
|
|
56
|
+
FieldsByObjectName,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function computeInactiveRowWarnings(input) {
|
|
31
60
|
const warnings = [];
|
|
32
61
|
const requested = input.RequestedNames && input.RequestedNames.length > 0
|
|
33
62
|
? new Set(input.RequestedNames.map(n => n.toLowerCase()))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InactiveRowWarnings.js","sourceRoot":"","sources":["../../src/integration/InactiveRowWarnings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,GAAG,GAAG,EAAE;IACpD,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC;AAC/E,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,GAAmB,EAAW,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAA8B;IACrE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QACrE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,SAAS,EAAE,CAAC;QACZ,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAChE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC;QACxD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CACT,GAAG,iBAAiB,CAAC,MAAM,kEAAkE;gBAC7F,GAAG,cAAc,CAAC,iBAAiB,CAAC,qDAAqD;gBACzF,4FAA4F;gBAC5F,yFAAyF,CAC5F,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC;QACpG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACnC,QAAQ,CAAC,IAAI,CACT,GAAG,UAAU,KAAK,OAAO,CAAC,MAAM,gEAAgE;YAChG,GAAG,cAAc,CAAC,OAAO,CAAC,iEAAiE;YAC3F,mGAAmG;YACnG,sCAAsC,CACzC,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"InactiveRowWarnings.js","sourceRoot":"","sources":["../../src/integration/InactiveRowWarnings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A table selection's object ids, resolved to object names — against the CONNECTION's catalog first.
|
|
3
|
+
*
|
|
4
|
+
* Inside a catalog scope, `IntegrationListSourceObjects` hands the picker per-connection
|
|
5
|
+
* (CompanyIntegrationObject) ids. The apply paths looked ids up only in the shared
|
|
6
|
+
* `MJ: Integration Objects` catalog, so an id-only selection matched nothing: every pick was dropped
|
|
7
|
+
* with a LogError, the migration ran with an empty table list, CodeGen and the restart still ran,
|
|
8
|
+
* and the apply reported Success with 0 tables.
|
|
9
|
+
*
|
|
10
|
+
* Three tiers, cheapest first:
|
|
11
|
+
* 1. the scope's loaded catalog, no query — every per-connection object, keyed by its own id AND
|
|
12
|
+
* by the shared IntegrationObjectID it carries, so an id from either catalog resolves;
|
|
13
|
+
* 2. a direct, uncached read of `MJ: Company Integration Objects` for this connection, for ids the
|
|
14
|
+
* loaded catalog does not hold yet (a row written earlier in the same run);
|
|
15
|
+
* 3. the shared catalog, exactly as before — and the only tier outside a catalog scope.
|
|
16
|
+
*
|
|
17
|
+
* Keys are upper-cased ids; values are object names. An id no tier resolves is simply absent: the
|
|
18
|
+
* caller decides whether an empty resolution is fatal (an apply refuses it).
|
|
19
|
+
*/
|
|
20
|
+
import { type UserInfo } from '@memberjunction/core';
|
|
21
|
+
/** Ids per per-connection read. Each read is one `IN (…)` list, so this bounds the filter's length. */
|
|
22
|
+
export declare const OBJECT_ID_LOOKUP_CHUNK = 200;
|
|
23
|
+
/**
|
|
24
|
+
* Resolves object ids to names for the connection in catalog scope (or the shared catalog when
|
|
25
|
+
* there is none). Never throws for a missing id; a failed read leaves its ids unresolved.
|
|
26
|
+
*/
|
|
27
|
+
export declare function LookupObjectNamesByID(ids: ReadonlyArray<string | null | undefined> | undefined, user: UserInfo): Promise<Map<string, string>>;
|
|
28
|
+
//# sourceMappingURL=ObjectNamesByID.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectNamesByID.d.ts","sourceRoot":"","sources":["../../src/integration/ObjectNamesByID.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAS9D,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAO1C;;;GAGG;AACH,wBAAsB,qBAAqB,CACvC,GAAG,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EACzD,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqD9B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A table selection's object ids, resolved to object names — against the CONNECTION's catalog first.
|
|
3
|
+
*
|
|
4
|
+
* Inside a catalog scope, `IntegrationListSourceObjects` hands the picker per-connection
|
|
5
|
+
* (CompanyIntegrationObject) ids. The apply paths looked ids up only in the shared
|
|
6
|
+
* `MJ: Integration Objects` catalog, so an id-only selection matched nothing: every pick was dropped
|
|
7
|
+
* with a LogError, the migration ran with an empty table list, CodeGen and the restart still ran,
|
|
8
|
+
* and the apply reported Success with 0 tables.
|
|
9
|
+
*
|
|
10
|
+
* Three tiers, cheapest first:
|
|
11
|
+
* 1. the scope's loaded catalog, no query — every per-connection object, keyed by its own id AND
|
|
12
|
+
* by the shared IntegrationObjectID it carries, so an id from either catalog resolves;
|
|
13
|
+
* 2. a direct, uncached read of `MJ: Company Integration Objects` for this connection, for ids the
|
|
14
|
+
* loaded catalog does not hold yet (a row written earlier in the same run);
|
|
15
|
+
* 3. the shared catalog, exactly as before — and the only tier outside a catalog scope.
|
|
16
|
+
*
|
|
17
|
+
* Keys are upper-cased ids; values are object names. An id no tier resolves is simply absent: the
|
|
18
|
+
* caller decides whether an empty resolution is fatal (an apply refuses it).
|
|
19
|
+
*/
|
|
20
|
+
import { RunView } from '@memberjunction/core';
|
|
21
|
+
import { EscapeSQLString } from '@memberjunction/global';
|
|
22
|
+
import { IntegrationEngineBase, ENTITY_COMPANY_INTEGRATION_OBJECTS, } from '@memberjunction/integration-engine-base';
|
|
23
|
+
import { CurrentCatalogCI } from '@memberjunction/integration-engine';
|
|
24
|
+
/** Ids per per-connection read. Each read is one `IN (…)` list, so this bounds the filter's length. */
|
|
25
|
+
export const OBJECT_ID_LOOKUP_CHUNK = 200;
|
|
26
|
+
const quote = (value) => `'${EscapeSQLString(value)}'`;
|
|
27
|
+
/**
|
|
28
|
+
* Resolves object ids to names for the connection in catalog scope (or the shared catalog when
|
|
29
|
+
* there is none). Never throws for a missing id; a failed read leaves its ids unresolved.
|
|
30
|
+
*/
|
|
31
|
+
export async function LookupObjectNamesByID(ids, user) {
|
|
32
|
+
const map = new Map();
|
|
33
|
+
const wanted = [...new Set((ids ?? [])
|
|
34
|
+
.filter((id) => typeof id === 'string' && id.length > 0)
|
|
35
|
+
.map(id => id.toUpperCase()))];
|
|
36
|
+
if (wanted.length === 0)
|
|
37
|
+
return map;
|
|
38
|
+
const ciID = CurrentCatalogCI();
|
|
39
|
+
if (ciID) {
|
|
40
|
+
const engine = IntegrationEngineBase.Instance;
|
|
41
|
+
if (engine.HasCompanyIntegrationCatalog(ciID)) {
|
|
42
|
+
// GetCompanyIntegrationObjects presents CompanyIntegrationObjectRow projections typed as
|
|
43
|
+
// the shared entity (asReadOnlyObject); the per-connection columns are on every row.
|
|
44
|
+
const rows = engine.GetCompanyIntegrationObjects(ciID);
|
|
45
|
+
for (const row of rows) {
|
|
46
|
+
if (row.ID)
|
|
47
|
+
map.set(String(row.ID).toUpperCase(), row.Name);
|
|
48
|
+
if (row.IntegrationObjectID)
|
|
49
|
+
map.set(String(row.IntegrationObjectID).toUpperCase(), row.Name);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const rv = new RunView();
|
|
54
|
+
let missing = wanted.filter(id => !map.has(id));
|
|
55
|
+
if (missing.length > 0 && ciID) {
|
|
56
|
+
for (let i = 0; i < missing.length; i += OBJECT_ID_LOOKUP_CHUNK) {
|
|
57
|
+
const chunk = missing.slice(i, i + OBJECT_ID_LOOKUP_CHUNK);
|
|
58
|
+
const result = await rv.RunView({
|
|
59
|
+
EntityName: ENTITY_COMPANY_INTEGRATION_OBJECTS,
|
|
60
|
+
ExtraFilter: `CompanyIntegrationID=${quote(ciID)} AND ID IN (${chunk.map(quote).join(',')})`,
|
|
61
|
+
ResultType: 'simple',
|
|
62
|
+
Fields: ['ID', 'Name'],
|
|
63
|
+
BypassCache: true,
|
|
64
|
+
IgnoreMaxRows: true,
|
|
65
|
+
}, user);
|
|
66
|
+
if (result.Success) {
|
|
67
|
+
for (const r of result.Results)
|
|
68
|
+
map.set(String(r.ID).toUpperCase(), r.Name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
missing = wanted.filter(id => !map.has(id));
|
|
72
|
+
}
|
|
73
|
+
if (missing.length > 0) {
|
|
74
|
+
const result = await rv.RunView({
|
|
75
|
+
EntityName: 'MJ: Integration Objects',
|
|
76
|
+
ExtraFilter: missing.map(id => `ID=${quote(id)}`).join(' OR '),
|
|
77
|
+
ResultType: 'simple',
|
|
78
|
+
Fields: ['ID', 'Name'],
|
|
79
|
+
}, user);
|
|
80
|
+
if (result.Success) {
|
|
81
|
+
for (const r of result.Results)
|
|
82
|
+
map.set(String(r.ID).toUpperCase(), r.Name);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return map;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=ObjectNamesByID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectNamesByID.js","sourceRoot":"","sources":["../../src/integration/ObjectNamesByID.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The post-restart introspection, run against the connection's own catalog with its fields warm.
|
|
3
|
+
*
|
|
4
|
+
* After the RSU restarts the process, the consumer introspects the connector to build the entity
|
|
5
|
+
* and field maps. That runs at process start, outside any request, so nothing has entered a scope
|
|
6
|
+
* for it, and nothing has loaded this connection's catalog either. Two things have to be true for
|
|
7
|
+
* the connector to see the connection's fields:
|
|
8
|
+
*
|
|
9
|
+
* - the scope must be entered ASYNC (`WithCatalogScope`), which loads the connection's objects;
|
|
10
|
+
* a synchronous `RunInCatalogScope` loads nothing, so on a fresh process the reads fall back to
|
|
11
|
+
* the shared catalog and every column this connection's discovery sampled gets no field map;
|
|
12
|
+
* - each object's FIELD rows must be warm. A scope loads objects, not fields: only the sync loop
|
|
13
|
+
* warms fields, so a connector reading them here (`GetCachedFields`) gets per-connection objects
|
|
14
|
+
* with no fields at all, and the consumer creates no field maps.
|
|
15
|
+
*
|
|
16
|
+
* So this enters the scope, warms and pins every per-connection object the pending work names,
|
|
17
|
+
* introspects, and releases the pins whether or not the introspection succeeded.
|
|
18
|
+
*/
|
|
19
|
+
import type { UserInfo } from '@memberjunction/core';
|
|
20
|
+
/**
|
|
21
|
+
* Run `introspect` in `companyIntegrationID`'s catalog scope, with the fields of each named object
|
|
22
|
+
* warm. A name the connection has no object of its own for is skipped: it reads the shared catalog,
|
|
23
|
+
* as it always did. A failed warm throws; it is never read as an object with no fields.
|
|
24
|
+
*/
|
|
25
|
+
export declare function IntrospectInCatalogScope<T>(companyIntegrationID: string, sourceObjectNames: readonly string[], introspect: () => Promise<T>, user: UserInfo): Promise<T>;
|
|
26
|
+
//# sourceMappingURL=PostRestartIntrospect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostRestartIntrospect.d.ts","sourceRoot":"","sources":["../../src/integration/PostRestartIntrospect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC5C,oBAAoB,EAAE,MAAM,EAC5B,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IntegrationEngineBase } from '@memberjunction/integration-engine-base';
|
|
2
|
+
import { UnpinCatalogObjects, WarmCatalogObject, WithCatalogScope } from '@memberjunction/integration-engine';
|
|
3
|
+
/**
|
|
4
|
+
* Run `introspect` in `companyIntegrationID`'s catalog scope, with the fields of each named object
|
|
5
|
+
* warm. A name the connection has no object of its own for is skipped: it reads the shared catalog,
|
|
6
|
+
* as it always did. A failed warm throws; it is never read as an object with no fields.
|
|
7
|
+
*/
|
|
8
|
+
export async function IntrospectInCatalogScope(companyIntegrationID, sourceObjectNames, introspect, user) {
|
|
9
|
+
return WithCatalogScope(companyIntegrationID, async () => {
|
|
10
|
+
const engine = IntegrationEngineBase.Instance;
|
|
11
|
+
const pinned = [];
|
|
12
|
+
try {
|
|
13
|
+
for (const name of sourceObjectNames) {
|
|
14
|
+
const own = engine.GetCompanyIntegrationObject(companyIntegrationID, name);
|
|
15
|
+
if (!own)
|
|
16
|
+
continue;
|
|
17
|
+
await WarmCatalogObject(own.ID, user);
|
|
18
|
+
pinned.push(own.ID);
|
|
19
|
+
}
|
|
20
|
+
return await introspect();
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
UnpinCatalogObjects(pinned);
|
|
24
|
+
}
|
|
25
|
+
}, user);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=PostRestartIntrospect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostRestartIntrospect.js","sourceRoot":"","sources":["../../src/integration/PostRestartIntrospect.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE9G;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,oBAA4B,EAC5B,iBAAoC,EACpC,UAA4B,EAC5B,IAAc;IAEd,OAAO,gBAAgB,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;gBAC3E,IAAI,CAAC,GAAG;oBAAE,SAAS;gBACnB,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,MAAM,UAAU,EAAE,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACP,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The second half of an RSU run's progress stream — the half that happens in a
|
|
3
|
+
* different process from the first.
|
|
4
|
+
*
|
|
5
|
+
* The RSU pipeline restarts the API as one of its own steps. Everything after that restart —
|
|
6
|
+
* creating the entity maps and field maps, then starting the first sync — runs in the NEW process,
|
|
7
|
+
* from the durable pending-work queue. Until now none of it was observable: the pre-restart process
|
|
8
|
+
* died mid-run, so its emitter never wrote a terminal result and the run stayed flagged in-flight
|
|
9
|
+
* forever, while the post-restart work reported nothing at all. A client watching the setup journey
|
|
10
|
+
* saw the stream stop at "restart instance" and had no way to learn whether the connector ever
|
|
11
|
+
* became live.
|
|
12
|
+
*
|
|
13
|
+
* This module re-attaches to that same run and finishes it. Re-attaching (rather than opening a new
|
|
14
|
+
* run) is the entire point: the tail API returns strictly `seq > cursor`, and a fresh emitter
|
|
15
|
+
* restarts its sequence at 1 — so a brand-new run's events would sort BELOW the cursor of every
|
|
16
|
+
* client already tailing, permanently invisible to them, while the resolver echoed their unchanged
|
|
17
|
+
* cursor back and they polled forever receiving nothing.
|
|
18
|
+
*
|
|
19
|
+
* Correlation is by MANIFEST, not by checkpoint. The manifest is written when the run opens, minutes
|
|
20
|
+
* before the restart; the checkpoint is written in the last moments before the kill signal. Keying
|
|
21
|
+
* off the durable artifact and treating the checkpoint as enrichment means a lost checkpoint costs
|
|
22
|
+
* step numbers, not the whole re-attachment.
|
|
23
|
+
*/
|
|
24
|
+
import { IntegrationProgressEmitter } from '@memberjunction/integration-progress-artifacts';
|
|
25
|
+
import type { EmitterOptions, IntegrationProgressEvent, IntegrationRunSnapshot } from '@memberjunction/integration-progress-artifacts';
|
|
26
|
+
/** Step position carried across the restart, when the checkpoint survived. */
|
|
27
|
+
interface RestartPosition {
|
|
28
|
+
/** 1-based index of `RestartMJAPI`; the post-restart steps follow it. */
|
|
29
|
+
stepIndex?: number;
|
|
30
|
+
stepTotal?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* One re-attached RSU run. Emits the two post-restart stages into the run the pre-restart process
|
|
34
|
+
* opened, and terminates it exactly once.
|
|
35
|
+
*
|
|
36
|
+
* Obtained from {@link RSUPostRestartProgressSession}, never constructed directly — the session is
|
|
37
|
+
* what guarantees a run is attached (and terminated) once even when several pending-work items in
|
|
38
|
+
* one sweep belong to the same batch.
|
|
39
|
+
*/
|
|
40
|
+
export declare class RSUPostRestartProgress {
|
|
41
|
+
private readonly emitter;
|
|
42
|
+
private readonly position;
|
|
43
|
+
private entityMapsOpen;
|
|
44
|
+
private syncOpen;
|
|
45
|
+
private failed;
|
|
46
|
+
private readonly failures;
|
|
47
|
+
/** @internal — use {@link RSUPostRestartProgressSession.For}. */
|
|
48
|
+
constructor(emitter: IntegrationProgressEmitter, position: RestartPosition);
|
|
49
|
+
/** The run being continued, so a caller can log or hand it to a client. */
|
|
50
|
+
get RunID(): string;
|
|
51
|
+
/**
|
|
52
|
+
* "step 12 of 14" for a post-restart step, or undefined when the checkpoint did not survive.
|
|
53
|
+
*
|
|
54
|
+
* `offset` is the step's position AFTER `RestartMJAPI` (1 for CreateEntityMaps, 2 for StartSync).
|
|
55
|
+
* Derived from the checkpoint rather than recomputed, because the pipeline skips steps
|
|
56
|
+
* conditionally (`SkipGitCommit`) and a recomputed index would disagree with the one the client
|
|
57
|
+
* has already been shown.
|
|
58
|
+
*/
|
|
59
|
+
private positionLabel;
|
|
60
|
+
/** Opens the `CreateEntityMaps` stage for one pending-work item. */
|
|
61
|
+
BeginEntityMaps(objectCount: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* Reports one object's entity map + field maps as done.
|
|
64
|
+
*
|
|
65
|
+
* A heartbeat rather than a `records.batch.complete`: heartbeat counts are explicitly excluded
|
|
66
|
+
* from the run's applied aggregate, so per-object liveness cannot double-count against the
|
|
67
|
+
* stage rollup that follows.
|
|
68
|
+
*/
|
|
69
|
+
ObjectMapped(objectName: string, processed: number, totalKnown: number): void;
|
|
70
|
+
/**
|
|
71
|
+
* Closes `CreateEntityMaps` with the applied quartet, in OBJECTS.
|
|
72
|
+
*
|
|
73
|
+
* The run's aggregate is in objects, not migrations, for a resumed run: the migration quartet is
|
|
74
|
+
* emitted by `run.end`, which a restarting run by definition never reaches. Emitting both here
|
|
75
|
+
* would sum two different units into one number (2 migrations + 12 objects reported as
|
|
76
|
+
* "processed: 14"), so the migration counts stay in the terminal message instead.
|
|
77
|
+
*/
|
|
78
|
+
CompleteEntityMaps(processed: number, succeeded: number, failed: number): void;
|
|
79
|
+
/**
|
|
80
|
+
* Closes `CreateEntityMaps` as an ERROR, naming the objects that were never mapped.
|
|
81
|
+
*
|
|
82
|
+
* Naming them is the requirement, not a nicety: when this half fails, those objects have tables
|
|
83
|
+
* in the database and no way to sync into them, and the operator's only signal that something
|
|
84
|
+
* needs re-applying is this message.
|
|
85
|
+
*/
|
|
86
|
+
FailEntityMaps(message: string, unmappedObjects: string[]): void;
|
|
87
|
+
/** Opens the `StartSync` stage. */
|
|
88
|
+
BeginStartSync(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Closes `StartSync`, carrying the sync run's ID so a client can hop from this stream to the
|
|
91
|
+
* sync's own.
|
|
92
|
+
*
|
|
93
|
+
* Deliberately carries NO `counts`: the records belong to the sync run, and counting them here
|
|
94
|
+
* would add another unit to this run's aggregate. `syncRunID` may be null when the sync was
|
|
95
|
+
* launched but its run row was not yet readable — the stage still completes, because the sync
|
|
96
|
+
* did start; the client simply has to find the run itself.
|
|
97
|
+
*/
|
|
98
|
+
CompleteStartSync(syncRunID: string | null): void;
|
|
99
|
+
/** Closes `StartSync` as skipped — the caller asked for no initial sync. */
|
|
100
|
+
SkipStartSync(reason: string): void;
|
|
101
|
+
/** Closes `StartSync` as an error — the sync could not be launched. */
|
|
102
|
+
FailStartSync(message: string): void;
|
|
103
|
+
/** Records a failure that happened outside either stage (connector resolution, for example). */
|
|
104
|
+
RecordFailure(stage: string, message: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Terminates the run. Idempotent — the emitter refuses a second terminal write, and the result
|
|
107
|
+
* file is created-not-truncated, so a duplicate call cannot rewrite an outcome a client has
|
|
108
|
+
* already read.
|
|
109
|
+
*/
|
|
110
|
+
Finish(): Promise<void>;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Owns the re-attachments for ONE pass of the post-restart pending-work queue.
|
|
114
|
+
*
|
|
115
|
+
* A single RSU batch registers one pending-work row per input, so several rows in one sweep can
|
|
116
|
+
* belong to the same run. Attaching per row would try to resume — and terminate — the same run
|
|
117
|
+
* repeatedly; the second attempt would be refused as already-terminal and its work would go
|
|
118
|
+
* unreported. Memoizing by run ID makes the run's stream a single coherent continuation, with one
|
|
119
|
+
* `run.resumed` at the top and one terminal event at the bottom.
|
|
120
|
+
*/
|
|
121
|
+
export declare class RSUPostRestartProgressSession {
|
|
122
|
+
private readonly emitterOptions;
|
|
123
|
+
private readonly byRunID;
|
|
124
|
+
private readonly byCompanyIntegrationID;
|
|
125
|
+
/**
|
|
126
|
+
* Every run any session in this process re-attached to. Process-wide on purpose: the startup
|
|
127
|
+
* sweep that left restart-killed runs in flight and the pass that resumes them live in
|
|
128
|
+
* different places, and the one question that joins them — "did anything pick this run up?" —
|
|
129
|
+
* must survive the resuming pass throwing halfway.
|
|
130
|
+
*/
|
|
131
|
+
private static readonly attachedRunIDs;
|
|
132
|
+
static get AttachedRunIDs(): ReadonlySet<string>;
|
|
133
|
+
constructor(emitterOptions?: EmitterOptions);
|
|
134
|
+
/**
|
|
135
|
+
* The continuation handle for a connection's RSU run, or null when there is nothing to continue
|
|
136
|
+
* (no in-flight run for that connection, or it was already finished).
|
|
137
|
+
*
|
|
138
|
+
* Null is a normal outcome, not an error: pending work can legitimately be processed on a boot
|
|
139
|
+
* whose run artifact has been pruned, or after a retry that already closed the run. The caller
|
|
140
|
+
* does its work either way — progress reporting never gates the work itself.
|
|
141
|
+
*/
|
|
142
|
+
For(companyIntegrationID: string): Promise<RSUPostRestartProgress | null>;
|
|
143
|
+
/** Terminates every run this session re-attached to. Safe to call more than once. */
|
|
144
|
+
FinishAll(): Promise<void>;
|
|
145
|
+
private attach;
|
|
146
|
+
/**
|
|
147
|
+
* Whether a run's stream stops at the restart — which is the signature of a run this process is
|
|
148
|
+
* the continuation of.
|
|
149
|
+
*
|
|
150
|
+
* Checking the LAST stage, not the presence of the checkpoint, on purpose. The checkpoint is
|
|
151
|
+
* written in the moments before the kill signal and can be lost; the `stage.start RestartMJAPI`
|
|
152
|
+
* that precedes it cannot, because the pipeline waits on nothing between emitting it and dying.
|
|
153
|
+
* Requiring the checkpoint would trade a recoverable loss of step numbers for an unrecoverable
|
|
154
|
+
* loss of the whole continuation.
|
|
155
|
+
*/
|
|
156
|
+
static WasKilledAtRestart(snapshot: IntegrationRunSnapshot): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Closes out the restart-killed runs the startup sweep left in flight that NO session then
|
|
159
|
+
* re-attached to — because there was no system user, or the pending work was stale and
|
|
160
|
+
* dropped, or it simply failed before reaching the run. Without this they would read as in
|
|
161
|
+
* flight forever, which is the state the sweep exists to end.
|
|
162
|
+
*
|
|
163
|
+
* Only the runs in `leftInFlight` (the sweep's `Skipped` list) are candidates: anything else
|
|
164
|
+
* in flight by now may be a run this process started, and is not ours to judge. A candidate
|
|
165
|
+
* a session attached to is live — its session terminates it — and is left alone.
|
|
166
|
+
*/
|
|
167
|
+
static SweepUnattached(leftInFlight: readonly string[], rootDir?: string, log?: (message: string) => void): Promise<{
|
|
168
|
+
Swept: string[];
|
|
169
|
+
Failed: string[];
|
|
170
|
+
Skipped: string[];
|
|
171
|
+
}>;
|
|
172
|
+
/** Reads the step position out of a restart checkpoint, tolerating a missing or partial one. */
|
|
173
|
+
static PositionFrom(checkpoint: IntegrationProgressEvent | undefined): RestartPosition;
|
|
174
|
+
}
|
|
175
|
+
export {};
|
|
176
|
+
//# sourceMappingURL=RSUPostRestartProgress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RSUPostRestartProgress.d.ts","sourceRoot":"","sources":["../../src/integration/RSUPostRestartProgress.ts"],"names":[],"mappings":"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"}
|