@memberjunction/server 6.2.0-edge.0 → 6.2.0-edge.2
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/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.d.ts +2 -0
- package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.js +5 -1
- package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
- package/dist/agentSessions/SessionManager.js +2 -2
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts +8 -0
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts.map +1 -1
- package/dist/agentSessions/remoteBrowserGoalEngine.js +21 -5
- package/dist/agentSessions/remoteBrowserGoalEngine.js.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.d.ts +2 -0
- package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.js +5 -1
- package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
- package/dist/auth/index.d.ts +20 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +20 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +8 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +21 -5
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
- package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
- package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
- package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +65 -51
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/magicLink/index.d.ts +2 -2
- package/dist/auth/magicLink/index.d.ts.map +1 -1
- package/dist/auth/magicLink/index.js +2 -2
- package/dist/auth/magicLink/index.js.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
- package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.js +61 -61
- package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
- package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
- package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
- package/dist/auth/magicLink/redeemLanding.js +12 -4
- package/dist/auth/magicLink/redeemLanding.js.map +1 -1
- package/dist/auth/magicLink/types.d.ts +4 -4
- package/dist/auth/principals.d.ts +2 -0
- package/dist/auth/principals.d.ts.map +1 -1
- package/dist/auth/principals.js +6 -2
- package/dist/auth/principals.js.map +1 -1
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +3 -1
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +346 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -4
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +27 -19
- package/dist/context.js.map +1 -1
- package/dist/directives/Public.d.ts +2 -0
- package/dist/directives/Public.d.ts.map +1 -1
- package/dist/directives/Public.js +3 -1
- package/dist/directives/Public.js.map +1 -1
- package/dist/directives/RequireSystemUser.d.ts +2 -0
- package/dist/directives/RequireSystemUser.d.ts.map +1 -1
- package/dist/directives/RequireSystemUser.js +3 -1
- package/dist/directives/RequireSystemUser.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj.d.ts +1021 -0
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +7368 -2145
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +94 -4
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
- package/dist/generic/CacheInvalidationResolver.js +122 -3
- package/dist/generic/CacheInvalidationResolver.js.map +1 -1
- package/dist/generic/DeleteOptionsInput.d.ts +8 -1
- package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
- package/dist/generic/DeleteOptionsInput.js +1 -1
- package/dist/generic/DeleteOptionsInput.js.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts +18 -2
- package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.js +24 -6
- package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts +31 -0
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -0
- package/dist/generic/OrphanedConversationDetailReconciler.js +215 -0
- package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -0
- package/dist/generic/PushStatusResolver.d.ts +48 -1
- package/dist/generic/PushStatusResolver.d.ts.map +1 -1
- package/dist/generic/PushStatusResolver.js +95 -4
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +18 -2
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +64 -55
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +120 -11
- package/dist/index.js.map +1 -1
- package/dist/integration/CustomColumnPromoter.d.ts +2 -0
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +5 -1
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/integration/EntityMapLifecycle.d.ts +4 -0
- package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
- package/dist/integration/EntityMapLifecycle.js +10 -2
- package/dist/integration/EntityMapLifecycle.js.map +1 -1
- package/dist/logging/NoLog.d.ts +4 -0
- package/dist/logging/NoLog.d.ts.map +1 -1
- package/dist/logging/NoLog.js +10 -2
- package/dist/logging/NoLog.js.map +1 -1
- package/dist/logging/StartupLogger.d.ts +2 -0
- package/dist/logging/StartupLogger.d.ts.map +1 -1
- package/dist/logging/StartupLogger.js +5 -1
- package/dist/logging/StartupLogger.js.map +1 -1
- package/dist/logging/bootAudit.d.ts +11 -7
- package/dist/logging/bootAudit.d.ts.map +1 -1
- package/dist/logging/bootAudit.js +15 -7
- package/dist/logging/bootAudit.js.map +1 -1
- package/dist/logging/boundaryLogPayload.d.ts +4 -0
- package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
- package/dist/logging/boundaryLogPayload.js +5 -1
- package/dist/logging/boundaryLogPayload.js.map +1 -1
- package/dist/logging/secretRedactor.d.ts +2 -0
- package/dist/logging/secretRedactor.d.ts.map +1 -1
- package/dist/logging/secretRedactor.js +8 -4
- package/dist/logging/secretRedactor.js.map +1 -1
- package/dist/logging/shortenForLog.d.ts +2 -0
- package/dist/logging/shortenForLog.d.ts.map +1 -1
- package/dist/logging/shortenForLog.js +7 -3
- package/dist/logging/shortenForLog.js.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
- package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.js +8 -6
- package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
- package/dist/metadataRefreshSignal.d.ts +19 -0
- package/dist/metadataRefreshSignal.d.ts.map +1 -0
- package/dist/metadataRefreshSignal.js +45 -0
- package/dist/metadataRefreshSignal.js.map +1 -0
- package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
- package/dist/multiTenancy/index.d.ts +8 -0
- package/dist/multiTenancy/index.d.ts.map +1 -1
- package/dist/multiTenancy/index.js +21 -5
- package/dist/multiTenancy/index.js.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
- package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.js +14 -10
- package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
- package/dist/realtimeWidget/WidgetSessionService.js +27 -27
- package/dist/realtimeWidget/host-identity.d.ts +5 -1
- package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
- package/dist/realtimeWidget/host-identity.js +11 -3
- package/dist/realtimeWidget/host-identity.js.map +1 -1
- package/dist/realtimeWidget/index.d.ts +2 -2
- package/dist/realtimeWidget/index.d.ts.map +1 -1
- package/dist/realtimeWidget/index.js +2 -2
- package/dist/realtimeWidget/index.js.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.js +16 -4
- package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
- package/dist/realtimeWidget/widgetCore.d.ts +48 -0
- package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetCore.js +38 -10
- package/dist/realtimeWidget/widgetCore.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +3 -3
- package/dist/resolvers/AgentRunStatusPublisher.d.ts +55 -0
- package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -0
- package/dist/resolvers/AgentRunStatusPublisher.js +141 -0
- package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -0
- package/dist/resolvers/ConversationRunEventsResolver.d.ts +90 -0
- package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -0
- package/dist/resolvers/ConversationRunEventsResolver.js +283 -0
- package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.d.ts +98 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.d.ts.map +1 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.js +227 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.js.map +1 -0
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
- package/dist/resolvers/FetchEntityVectorsResolver.js +2 -1
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.js +3 -3
- package/dist/resolvers/GeoResolver.d.ts +2 -2
- package/dist/resolvers/GeoResolver.js +4 -4
- package/dist/resolvers/GetDataResolver.d.ts +14 -0
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +43 -15
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -2
- package/dist/resolvers/ListOperationsResolver.d.ts +20 -0
- package/dist/resolvers/ListOperationsResolver.d.ts.map +1 -1
- package/dist/resolvers/ListOperationsResolver.js +68 -28
- package/dist/resolvers/ListOperationsResolver.js.map +1 -1
- package/dist/resolvers/MCPResolver.d.ts +11 -1
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +7 -3
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts +7 -0
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +16 -2
- package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +44 -6
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +93 -37
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
- package/dist/resolvers/RunAIAgentResolver.d.ts +8 -18
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +85 -184
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +2 -2
- package/dist/resolvers/RunDecisionResolver.d.ts +149 -0
- package/dist/resolvers/RunDecisionResolver.d.ts.map +1 -0
- package/dist/resolvers/RunDecisionResolver.js +396 -0
- package/dist/resolvers/RunDecisionResolver.js.map +1 -0
- package/dist/resolvers/RunTestResolver.js +5 -5
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
- package/dist/resolvers/VectorizeEntityResolver.d.ts +1 -1
- package/dist/resolvers/VectorizeEntityResolver.d.ts.map +1 -1
- package/dist/resolvers/VectorizeEntityResolver.js +14 -10
- package/dist/resolvers/VectorizeEntityResolver.js.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
- package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.js +10 -2
- package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
- package/dist/resolvers/artifact-routing.d.ts +8 -8
- package/dist/resolvers/artifact-routing.js +2 -2
- package/dist/resolvers/artifact-routing.js.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
- package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.js +24 -8
- package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
- package/dist/resolvers/peaksSidecar.d.ts +4 -0
- package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
- package/dist/resolvers/peaksSidecar.js +10 -2
- package/dist/resolvers/peaksSidecar.js.map +1 -1
- package/dist/rest/EntityCRUDHandler.d.ts +28 -0
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +20 -4
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/MediaStreamHandler.d.ts +2 -0
- package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
- package/dist/rest/MediaStreamHandler.js +10 -6
- package/dist/rest/MediaStreamHandler.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +15 -3
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts +6 -4
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +15 -11
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
- package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
- package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
- package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
- package/dist/rest/SignatureWebhookHandler.js +5 -1
- package/dist/rest/SignatureWebhookHandler.js.map +1 -1
- package/dist/rest/UploadTokenManager.d.ts +24 -8
- package/dist/rest/UploadTokenManager.d.ts.map +1 -1
- package/dist/rest/UploadTokenManager.js +53 -21
- package/dist/rest/UploadTokenManager.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts +20 -0
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +20 -4
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/mediaRange.d.ts +4 -0
- package/dist/rest/mediaRange.d.ts.map +1 -1
- package/dist/rest/mediaRange.js +10 -2
- package/dist/rest/mediaRange.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +4 -0
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +13 -7
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/serverExtensionReservedRoots.d.ts +2 -0
- package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
- package/dist/serverExtensionReservedRoots.js +5 -1
- package/dist/serverExtensionReservedRoots.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +13 -8
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +16 -15
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -3
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +13 -5
- package/dist/util.js.map +1 -1
- package/package.json +94 -92
- package/src/__tests__/AgentRunStatusPublisher.test.ts +175 -0
- package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -0
- package/src/__tests__/DuplicateEntryCheckResolver.test.ts +300 -0
- package/src/__tests__/FileResolverPeaks.test.ts +13 -13
- package/src/__tests__/ListOperationsResolver.test.ts +17 -17
- package/src/__tests__/MediaStreamHandler.test.ts +28 -28
- package/src/__tests__/NoLog.test.ts +11 -11
- package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
- package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
- package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +216 -2
- package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
- package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
- package/src/__tests__/RemoteBrowserActionRecovery.test.ts +7 -1
- package/src/__tests__/RemoteBrowserAudioStream.test.ts +7 -1
- package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
- package/src/__tests__/RemoteBrowserSnapshot.test.ts +7 -1
- package/src/__tests__/ResolverBase.clientOldValues.test.ts +52 -0
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +398 -0
- package/src/__tests__/RunAIAgentResolver.streaming.test.ts +18 -27
- package/src/__tests__/RunDecisionResolver.test.ts +699 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +131 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
- package/src/__tests__/VectorizeEntityResolver.test.ts +106 -0
- package/src/__tests__/WidgetSessionService.test.ts +8 -4
- package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
- package/src/__tests__/bootAudit.test.ts +11 -11
- package/src/__tests__/boundaryLogPayload.test.ts +6 -6
- package/src/__tests__/cacheInvalidationRecordData.test.ts +177 -0
- package/src/__tests__/conversationRunEvents.test.ts +399 -0
- package/src/__tests__/databaseAbstraction.test.ts +12 -6
- package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
- package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
- package/src/__tests__/magicLink.test.ts +73 -134
- package/src/__tests__/magicLinkService.consume.test.ts +224 -0
- package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
- package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
- package/src/__tests__/multiTenancy.security.test.ts +40 -40
- package/src/__tests__/multiTenancy.test.ts +18 -18
- package/src/__tests__/newUsers.test.ts +24 -23
- package/src/__tests__/orphanedConversationDetailReconciler.test.ts +283 -0
- package/src/__tests__/principals.test.ts +22 -22
- package/src/__tests__/pushStatusFanOut.test.ts +206 -0
- package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
- package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
- package/src/__tests__/secretRedactor.test.ts +12 -12
- package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
- package/src/__tests__/subscriptionRedaction.test.ts +5 -5
- package/src/__tests__/unifiedAuth.test.ts +15 -9
- package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
- package/src/__tests__/widget.test.ts +45 -45
- package/src/__tests__/widgetGuestElevation.test.ts +7 -7
- package/src/__tests__/widgetHostIdentity.test.ts +14 -14
- package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
- package/src/agentSessions/SessionManager.ts +2 -2
- package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
- package/src/auth/AuthProviderCatalogRouter.ts +6 -1
- package/src/auth/__tests__/backward-compatibility.test.ts +4 -3
- package/src/auth/index.ts +43 -28
- package/src/auth/initializeProviders.ts +25 -5
- package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
- package/src/auth/magicLink/MagicLinkService.ts +71 -52
- package/src/auth/magicLink/index.ts +7 -7
- package/src/auth/magicLink/magicLinkCore.ts +96 -64
- package/src/auth/magicLink/redeemLanding.ts +14 -4
- package/src/auth/magicLink/types.ts +54 -54
- package/src/auth/newUsers.ts +1 -1
- package/src/auth/principals.ts +11 -2
- package/src/cache.ts +4 -1
- package/src/config.ts +37 -4
- package/src/context.ts +37 -24
- package/src/directives/Public.ts +4 -1
- package/src/directives/RequireSystemUser.ts +4 -1
- package/src/generated/graphql-schemas/__mj.ts +3674 -4
- package/src/generic/CacheInvalidationResolver.ts +148 -4
- package/src/generic/DeleteOptionsInput.ts +9 -2
- package/src/generic/FireAndForgetHeartbeat.ts +35 -16
- package/src/generic/OrphanedConversationDetailReconciler.ts +267 -0
- package/src/generic/PushStatusResolver.ts +118 -8
- package/src/generic/ResolverBase.ts +65 -57
- package/src/generic/RunViewResolver.ts +22 -22
- package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
- package/src/index.ts +137 -11
- package/src/integration/CustomColumnPromoter.ts +6 -1
- package/src/integration/EntityMapLifecycle.ts +20 -2
- package/src/logging/NoLog.ts +16 -2
- package/src/logging/StartupLogger.ts +6 -1
- package/src/logging/bootAudit.ts +26 -16
- package/src/logging/boundaryLogPayload.ts +8 -1
- package/src/logging/secretRedactor.ts +14 -9
- package/src/logging/shortenForLog.ts +8 -3
- package/src/logging/variablesLoggingMiddleware.ts +9 -6
- package/src/metadataRefreshSignal.ts +45 -0
- package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
- package/src/multiTenancy/index.ts +29 -5
- package/src/realtimeWidget/WidgetRouter.ts +15 -10
- package/src/realtimeWidget/WidgetSessionService.ts +76 -76
- package/src/realtimeWidget/host-identity.ts +24 -10
- package/src/realtimeWidget/index.ts +3 -3
- package/src/realtimeWidget/visitorIdentity.ts +39 -8
- package/src/realtimeWidget/widgetCore.ts +75 -10
- package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
- package/src/resolvers/AdhocQueryResolver.ts +3 -3
- package/src/resolvers/AgentRunStatusPublisher.ts +175 -0
- package/src/resolvers/AgentSessionResolver.ts +3 -3
- package/src/resolvers/ColorResolver.ts +6 -6
- package/src/resolvers/ComponentRegistryResolver.ts +36 -36
- package/src/resolvers/ConversationRunEventsResolver.ts +308 -0
- package/src/resolvers/DuplicateEntryCheckResolver.ts +232 -0
- package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
- package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
- package/src/resolvers/FetchEntityVectorsResolver.ts +2 -1
- package/src/resolvers/FileResolver.ts +42 -42
- package/src/resolvers/GeoResolver.ts +4 -4
- package/src/resolvers/GetDataResolver.ts +50 -15
- package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
- package/src/resolvers/ListOperationsResolver.ts +78 -28
- package/src/resolvers/MCPResolver.ts +30 -15
- package/src/resolvers/MergeRecordsResolver.ts +14 -2
- package/src/resolvers/QueryResolver.ts +13 -13
- package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
- package/src/resolvers/RealtimeClientSessionResolver.ts +96 -38
- package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
- package/src/resolvers/RunAIAgentResolver.ts +134 -239
- package/src/resolvers/RunAIPromptResolver.ts +22 -22
- package/src/resolvers/RunDecisionResolver.ts +435 -0
- package/src/resolvers/RunTemplateResolver.ts +4 -4
- package/src/resolvers/RunTestResolver.ts +25 -25
- package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
- package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
- package/src/resolvers/TelemetryResolver.ts +79 -79
- package/src/resolvers/VectorizeEntityResolver.ts +16 -11
- package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
- package/src/resolvers/__tests__/MergeRecordsResolver.test.ts +93 -0
- package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
- package/src/resolvers/adhoc-query-helpers.ts +19 -2
- package/src/resolvers/artifact-routing.ts +19 -19
- package/src/resolvers/meetingRecordingRegistration.ts +44 -10
- package/src/resolvers/peaksSidecar.ts +12 -2
- package/src/rest/EntityCRUDHandler.ts +24 -4
- package/src/rest/MediaStreamHandler.ts +11 -6
- package/src/rest/OAuthCallbackHandler.ts +25 -7
- package/src/rest/RESTEndpointHandler.ts +20 -15
- package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
- package/src/rest/SignatureWebhookHandler.ts +6 -1
- package/src/rest/UploadTokenManager.ts +66 -30
- package/src/rest/ViewOperationsHandler.ts +24 -4
- package/src/rest/mediaRange.ts +16 -6
- package/src/rest/setupRESTEndpoints.ts +24 -12
- package/src/serverExtensionReservedRoots.ts +6 -1
- package/src/services/TaskGraphActionRunner.ts +16 -15
- package/src/types.ts +21 -16
- package/src/util.ts +16 -6
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module @memberjunction/server/widget
|
|
13
13
|
*/
|
|
14
|
-
import {
|
|
14
|
+
import { BuildSessionClaims } from '../auth/magicLink/magicLinkCore.js';
|
|
15
15
|
/**
|
|
16
16
|
* The magic-link resource-scope `resourceType` used for a widget guest session. Pairs with the
|
|
17
17
|
* opaque session id as `resourceId` so the synthesized principal's MagicLinkScope.ResourceID is
|
|
@@ -24,7 +24,7 @@ export const WIDGET_SESSION_RESOURCE_TYPE = 'Widget Session';
|
|
|
24
24
|
* comma-separated string (tolerated). Returns an empty array for null/blank/garbage
|
|
25
25
|
* — which makes the allowlist FAIL-CLOSED (no origin is allowed) by construction.
|
|
26
26
|
*/
|
|
27
|
-
export function
|
|
27
|
+
export function ParseAllowedOrigins(allowedOrigins) {
|
|
28
28
|
const raw = allowedOrigins?.trim();
|
|
29
29
|
if (!raw) {
|
|
30
30
|
return [];
|
|
@@ -42,6 +42,10 @@ export function parseAllowedOrigins(allowedOrigins) {
|
|
|
42
42
|
}
|
|
43
43
|
return list.filter((s) => typeof s === 'string').map(normalizeOrigin).filter((s) => !!s);
|
|
44
44
|
}
|
|
45
|
+
/** @deprecated Use {@link ParseAllowedOrigins}. */
|
|
46
|
+
export function parseAllowedOrigins(allowedOrigins) {
|
|
47
|
+
return ParseAllowedOrigins(allowedOrigins);
|
|
48
|
+
}
|
|
45
49
|
/** Lowercases + trims an origin and strips a trailing slash for stable comparison. */
|
|
46
50
|
function normalizeOrigin(origin) {
|
|
47
51
|
return origin.trim().toLowerCase().replace(/\/+$/, '');
|
|
@@ -51,7 +55,7 @@ function normalizeOrigin(origin) {
|
|
|
51
55
|
* JSON array (preferred, e.g. `["Whiteboard"]`) or a comma-separated string (tolerated). Returns an
|
|
52
56
|
* empty array for null/blank/garbage — the backwards-compatible default (no channels attached).
|
|
53
57
|
*/
|
|
54
|
-
export function
|
|
58
|
+
export function ParseEnabledChannels(enabledChannels) {
|
|
55
59
|
const raw = enabledChannels?.trim();
|
|
56
60
|
if (!raw) {
|
|
57
61
|
return [];
|
|
@@ -65,41 +69,57 @@ export function parseEnabledChannels(enabledChannels) {
|
|
|
65
69
|
return clean(raw.split(','));
|
|
66
70
|
}
|
|
67
71
|
}
|
|
72
|
+
/** @deprecated Use {@link ParseEnabledChannels}. */
|
|
73
|
+
export function parseEnabledChannels(enabledChannels) {
|
|
74
|
+
return ParseEnabledChannels(enabledChannels);
|
|
75
|
+
}
|
|
68
76
|
/**
|
|
69
77
|
* FAIL-CLOSED origin check. The request's `Origin` header must exactly match one of
|
|
70
78
|
* the widget's allowed origins (after normalization). A missing request origin, or
|
|
71
79
|
* an empty allowlist, is rejected — a public mint endpoint must never accept "*".
|
|
72
80
|
*/
|
|
73
|
-
export function
|
|
81
|
+
export function IsOriginAllowed(requestOrigin, allowedOrigins) {
|
|
74
82
|
if (!requestOrigin || allowedOrigins.length === 0) {
|
|
75
83
|
return false;
|
|
76
84
|
}
|
|
77
85
|
const candidate = normalizeOrigin(requestOrigin);
|
|
78
86
|
return allowedOrigins.some((o) => o === candidate);
|
|
79
87
|
}
|
|
88
|
+
/** @deprecated Use {@link IsOriginAllowed}. */
|
|
89
|
+
export function isOriginAllowed(requestOrigin, allowedOrigins) {
|
|
90
|
+
return IsOriginAllowed(requestOrigin, allowedOrigins);
|
|
91
|
+
}
|
|
80
92
|
/** True when the requested modality (or the widget's default render) is enabled by the instance. */
|
|
81
|
-
export function
|
|
93
|
+
export function IsModalityEnabled(widgetModality, requested) {
|
|
82
94
|
const m = widgetModality.trim().toLowerCase();
|
|
83
95
|
if (m === 'both') {
|
|
84
96
|
return true;
|
|
85
97
|
}
|
|
86
98
|
return m === requested.toLowerCase();
|
|
87
99
|
}
|
|
100
|
+
/** @deprecated Use {@link IsModalityEnabled}. */
|
|
101
|
+
export function isModalityEnabled(widgetModality, requested) {
|
|
102
|
+
return IsModalityEnabled(widgetModality, requested);
|
|
103
|
+
}
|
|
88
104
|
/**
|
|
89
105
|
* Pure eligibility check for a mint: the widget must be Active and the request's
|
|
90
106
|
* origin must be on the allowlist. Returns an error code on the first failure so the
|
|
91
107
|
* router can map it to a precise HTTP status. Modality is checked separately by the
|
|
92
108
|
* voice path (W4) since a text mint is always permitted for an enabled widget.
|
|
93
109
|
*/
|
|
94
|
-
export function
|
|
110
|
+
export function EvaluateWidgetMint(widget, requestOrigin) {
|
|
95
111
|
if (widget.Status.trim().toLowerCase() !== 'active') {
|
|
96
112
|
return { ok: false, errorCode: 'disabled' };
|
|
97
113
|
}
|
|
98
|
-
if (!
|
|
114
|
+
if (!IsOriginAllowed(requestOrigin, ParseAllowedOrigins(widget.AllowedOrigins))) {
|
|
99
115
|
return { ok: false, errorCode: 'origin_not_allowed' };
|
|
100
116
|
}
|
|
101
117
|
return { ok: true };
|
|
102
118
|
}
|
|
119
|
+
/** @deprecated Use {@link EvaluateWidgetMint}. */
|
|
120
|
+
export function evaluateWidgetMint(widget, requestOrigin) {
|
|
121
|
+
return EvaluateWidgetMint(widget, requestOrigin);
|
|
122
|
+
}
|
|
103
123
|
/**
|
|
104
124
|
* Known automated-client User-Agent substrings (lowercased). A public mint endpoint is a cheap
|
|
105
125
|
* target for crawlers and scripted abuse; this catches the obvious non-browser callers. It is a
|
|
@@ -117,13 +137,17 @@ const BOT_USER_AGENT_MARKERS = [
|
|
|
117
137
|
* known automation marker. Deliberately conservative to avoid false positives on real browsers; pair
|
|
118
138
|
* with the origin allowlist + rate limits, which are the hard controls.
|
|
119
139
|
*/
|
|
120
|
-
export function
|
|
140
|
+
export function LooksLikeBot(userAgent) {
|
|
121
141
|
const ua = (userAgent ?? '').trim().toLowerCase();
|
|
122
142
|
if (!ua) {
|
|
123
143
|
return true;
|
|
124
144
|
}
|
|
125
145
|
return BOT_USER_AGENT_MARKERS.some((marker) => ua.includes(marker));
|
|
126
146
|
}
|
|
147
|
+
/** @deprecated Use {@link LooksLikeBot}. */
|
|
148
|
+
export function looksLikeBot(userAgent) {
|
|
149
|
+
return LooksLikeBot(userAgent);
|
|
150
|
+
}
|
|
127
151
|
/**
|
|
128
152
|
* Builds the guest-session JWT claims for a widget visitor. Reuses magic-link's
|
|
129
153
|
* `buildSessionClaims` (anonymous mode → the shared Anonymous principal + claims-based
|
|
@@ -131,8 +155,8 @@ export function looksLikeBot(userAgent) {
|
|
|
131
155
|
* principal is locked to one widget instance. The role name carried here is the
|
|
132
156
|
* widget's restricted guest role (D5 backstop).
|
|
133
157
|
*/
|
|
134
|
-
export function
|
|
135
|
-
const claims =
|
|
158
|
+
export function BuildWidgetGuestClaims(args) {
|
|
159
|
+
const claims = BuildSessionClaims({
|
|
136
160
|
issuer: args.issuer,
|
|
137
161
|
audience: args.audience,
|
|
138
162
|
// No invite row for a direct-mint guest; the opaque session id stands in as the
|
|
@@ -170,4 +194,8 @@ export function buildWidgetGuestClaims(args) {
|
|
|
170
194
|
}
|
|
171
195
|
return claims;
|
|
172
196
|
}
|
|
197
|
+
/** @deprecated Use {@link BuildWidgetGuestClaims}. */
|
|
198
|
+
export function buildWidgetGuestClaims(args) {
|
|
199
|
+
return BuildWidgetGuestClaims(args);
|
|
200
|
+
}
|
|
173
201
|
//# sourceMappingURL=widgetCore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetCore.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAGxE;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAoB7D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAyC;IAC3E,MAAM,GAAG,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;QAClC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,CAAC;AAED,sFAAsF;AACtF,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAA0C;IAC7E,MAAM,GAAG,GAAG,eAAe,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAe,EAAY,EAAE,CAC1C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1G,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,aAAwC,EAAE,cAAiC;IACzG,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAAC,cAAsB,EAAE,SAA2B;IACnF,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAsC,EACtC,aAAwC;IAExC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG;IAC7B,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB;IACvE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW;CAC3F,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAoC;IAC/D,MAAM,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,IA2BtC;IACC,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gFAAgF;QAChF,6EAA6E;QAC7E,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,qFAAqF;QACrF,wEAAwE;QACxE,KAAK,EAAE,IAAI,CAAC,cAAc;QAC1B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,aAAa;QAC5B,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,uFAAuF;QACvF,wFAAwF;QACxF,sFAAsF;QACtF,8EAA8E;QAC9E,YAAY,EAAE,4BAA4B;QAC1C,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IACH,iFAAiF;IACjF,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;QACrE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC;QACtE,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QACjH,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACzD,MAAM,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QAC1E,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;QAClE,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"widgetCore.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,19 +17,19 @@ import type { MJConversationWidgetInstanceEntity } from '@memberjunction/core-en
|
|
|
17
17
|
import type { UserPayload } from '../types.js';
|
|
18
18
|
/**
|
|
19
19
|
* Resolved elevation context for a widget-guest agent run. Returned only when the request is a
|
|
20
|
-
* widget guest; the dispatch resolver runs the agent under {@link WidgetGuestRunContext.
|
|
21
|
-
* with {@link WidgetGuestRunContext.
|
|
20
|
+
* widget guest; the dispatch resolver runs the agent under {@link WidgetGuestRunContext.ElevatedUser}
|
|
21
|
+
* with {@link WidgetGuestRunContext.PinnedAgentId} (authoritative), keeping ownership checks under
|
|
22
22
|
* the guest principal.
|
|
23
23
|
*/
|
|
24
24
|
export interface WidgetGuestRunContext {
|
|
25
25
|
/** The trusted server principal under which the agent run (and its run-entity writes) executes. */
|
|
26
|
-
|
|
26
|
+
ElevatedUser: UserInfo;
|
|
27
27
|
/** The widget instance the guest session is bound to (authoritative config). */
|
|
28
|
-
|
|
28
|
+
Widget: MJConversationWidgetInstanceEntity;
|
|
29
29
|
/** The authoritative pinned support agent id — overrides any client-supplied agent id (D5). */
|
|
30
|
-
|
|
30
|
+
PinnedAgentId: string;
|
|
31
31
|
/** The guest's per-session scope id (Conversation.ExternalID), used to validate conversation ownership. */
|
|
32
|
-
|
|
32
|
+
SessionScopeId?: string;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Returns elevation context when the request is a public web-widget guest, else `null` (the common
|
|
@@ -41,6 +41,8 @@ export interface WidgetGuestRunContext {
|
|
|
41
41
|
* Never throws: a resolution failure (no system user, widget not found, read error) returns `null`,
|
|
42
42
|
* so the caller falls back to the normal (guest-principal) path rather than failing the request.
|
|
43
43
|
*/
|
|
44
|
+
export declare function ResolveWidgetGuestRunContext(userPayload: UserPayload, provider: DatabaseProviderBase): Promise<WidgetGuestRunContext | null>;
|
|
45
|
+
/** @deprecated Use {@link ResolveWidgetGuestRunContext}. */
|
|
44
46
|
export declare function resolveWidgetGuestRunContext(userPayload: UserPayload, provider: DatabaseProviderBase): Promise<WidgetGuestRunContext | null>;
|
|
45
47
|
/**
|
|
46
48
|
* Returns the identity a realtime session's AI-RUN-ENTITY work (delegated tool dispatch +
|
|
@@ -69,5 +71,7 @@ export declare function ResolveScopedAnonymousRunUser(contextUser: UserInfo): Us
|
|
|
69
71
|
* preserving the guest's `sessionId` — so progress/streaming PubSub still routes to the guest's
|
|
70
72
|
* live websocket, but all AI run-entity writes happen under the trusted server principal.
|
|
71
73
|
*/
|
|
74
|
+
export declare function ElevateUserPayload(userPayload: UserPayload, elevatedUser: UserInfo): UserPayload;
|
|
75
|
+
/** @deprecated Use {@link ElevateUserPayload}. */
|
|
72
76
|
export declare function elevateUserPayload(userPayload: UserPayload, elevatedUser: UserInfo): UserPayload;
|
|
73
77
|
//# sourceMappingURL=widgetGuestElevation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetGuestElevation.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,YAAY,EAAE,QAAQ,CAAC;IACvB,gFAAgF;IAChF,MAAM,EAAE,kCAAkC,CAAC;IAC3C,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAyBvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAkB7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,CAOhG"}
|
|
1
|
+
{"version":3,"file":"widgetGuestElevation.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,YAAY,EAAE,QAAQ,CAAC;IACvB,gFAAgF;IAChF,MAAM,EAAE,kCAAkC,CAAC;IAC3C,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAyBvC;AAED,4DAA4D;AAC5D,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAEvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAkB7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,CAOhG;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,CAEhG"}
|
|
@@ -25,7 +25,7 @@ const WIDGET_ENTITY = 'MJ: Conversation Widget Instances';
|
|
|
25
25
|
* Never throws: a resolution failure (no system user, widget not found, read error) returns `null`,
|
|
26
26
|
* so the caller falls back to the normal (guest-principal) path rather than failing the request.
|
|
27
27
|
*/
|
|
28
|
-
export async function
|
|
28
|
+
export async function ResolveWidgetGuestRunContext(userPayload, provider) {
|
|
29
29
|
const guest = userPayload?.userRecord;
|
|
30
30
|
const widgetId = guest?.WidgetGuestContext?.WidgetID;
|
|
31
31
|
if (!guest?.IsMagicLinkAnonymous || !widgetId) {
|
|
@@ -42,12 +42,16 @@ export async function resolveWidgetGuestRunContext(userPayload, provider) {
|
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
44
|
return {
|
|
45
|
-
elevatedUser,
|
|
46
|
-
widget,
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
ElevatedUser: elevatedUser,
|
|
46
|
+
Widget: widget,
|
|
47
|
+
PinnedAgentId: widget.PinnedAgentID,
|
|
48
|
+
SessionScopeId: guest.MagicLinkScope?.ResourceID,
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
+
/** @deprecated Use {@link ResolveWidgetGuestRunContext}. */
|
|
52
|
+
export async function resolveWidgetGuestRunContext(userPayload, provider) {
|
|
53
|
+
return ResolveWidgetGuestRunContext(userPayload, provider);
|
|
54
|
+
}
|
|
51
55
|
/**
|
|
52
56
|
* Returns the identity a realtime session's AI-RUN-ENTITY work (delegated tool dispatch +
|
|
53
57
|
* observability run creation/append/finalize) should execute as: the trusted SYSTEM principal when
|
|
@@ -89,7 +93,7 @@ export function ResolveScopedAnonymousRunUser(contextUser) {
|
|
|
89
93
|
* preserving the guest's `sessionId` — so progress/streaming PubSub still routes to the guest's
|
|
90
94
|
* live websocket, but all AI run-entity writes happen under the trusted server principal.
|
|
91
95
|
*/
|
|
92
|
-
export function
|
|
96
|
+
export function ElevateUserPayload(userPayload, elevatedUser) {
|
|
93
97
|
return {
|
|
94
98
|
...userPayload,
|
|
95
99
|
email: elevatedUser.Email,
|
|
@@ -97,6 +101,10 @@ export function elevateUserPayload(userPayload, elevatedUser) {
|
|
|
97
101
|
isSystemUser: true,
|
|
98
102
|
};
|
|
99
103
|
}
|
|
104
|
+
/** @deprecated Use {@link ElevateUserPayload}. */
|
|
105
|
+
export function elevateUserPayload(userPayload, elevatedUser) {
|
|
106
|
+
return ElevateUserPayload(userPayload, elevatedUser);
|
|
107
|
+
}
|
|
100
108
|
/** Loads a single widget instance by id under the elevated principal (read-only). */
|
|
101
109
|
async function loadWidgetById(widgetId, elevatedUser, provider) {
|
|
102
110
|
const rv = new RunView(provider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetGuestElevation.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAA4C,MAAM,sBAAsB,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAGtE,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAmB1D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,WAAwB,EACxB,QAA8B;IAE9B,MAAM,KAAK,GAAG,WAAW,EAAE,UAAkC,CAAC;IAC9D,MAAM,QAAQ,GAAG,KAAK,EAAE,kBAAkB,EAAE,QAAQ,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,QAAQ,CAAC,2EAA2E,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,QAAQ,CAAC,4BAA4B,QAAQ,mDAAmD,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,YAAY;
|
|
1
|
+
{"version":3,"file":"widgetGuestElevation.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ import { GetReadOnlyDataSource, GetReadOnlyProvider } from '../util.js';
|
|
|
18
18
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
19
19
|
import { IsScopeLimitedPrincipal } from '../auth/scopeLimitedPrincipal.js';
|
|
20
20
|
import { RunQueryResultType } from './QueryResolver.js';
|
|
21
|
-
import {
|
|
21
|
+
import { ExactTotalFromPage, ResolveAdhocTotalRowCount } from './adhoc-query-helpers.js';
|
|
22
22
|
import sql from 'mssql';
|
|
23
23
|
/**
|
|
24
24
|
* Input type for executing ad-hoc SQL queries directly.
|
|
@@ -195,7 +195,7 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
|
|
|
195
195
|
const dataResult = await this.runSqlWithDeadline(ds, dataSQL, deadline);
|
|
196
196
|
const recordset = (dataResult.recordset ?? []);
|
|
197
197
|
// Total already known from the page alone (unpaged, or a short page)? Skip the count.
|
|
198
|
-
const exact =
|
|
198
|
+
const exact = ExactTotalFromPage(startRow, recordset.length, maxRows);
|
|
199
199
|
if (exact != null || !countSQL) {
|
|
200
200
|
return { recordset, totalRowCount: exact ?? recordset.length };
|
|
201
201
|
}
|
|
@@ -203,7 +203,7 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
|
|
|
203
203
|
const lowerBound = startRow + recordset.length;
|
|
204
204
|
try {
|
|
205
205
|
const countResult = await this.runSqlWithDeadline(ds, countSQL, deadline);
|
|
206
|
-
return { recordset, totalRowCount:
|
|
206
|
+
return { recordset, totalRowCount: ResolveAdhocTotalRowCount(countResult.recordset, lowerBound) };
|
|
207
207
|
}
|
|
208
208
|
catch (countErr) {
|
|
209
209
|
const msg = countErr instanceof Error ? countErr.message : String(countErr);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publishes one agent run's live status on the caller's session.
|
|
3
|
+
*
|
|
4
|
+
* `RunAIAgentResolver` uses this for every status it sends. A host whose
|
|
5
|
+
* `AgentTurnHandler` answers with an In-Progress reply uses the same publisher,
|
|
6
|
+
* on that caller's session, so the chat follows the turn: significant-step
|
|
7
|
+
* progress, streamed text, the partial result, and the completion. When the
|
|
8
|
+
* turn throws instead of returning a result, call `PublishFailure` with the
|
|
9
|
+
* reply row's id and the error.
|
|
10
|
+
*/
|
|
11
|
+
import type { PubSubEngine } from 'type-graphql';
|
|
12
|
+
import type { AgentExecutionProgressCallback, AgentExecutionStreamingCallback, ExecuteAgentResult } from '@memberjunction/ai-core-plus';
|
|
13
|
+
import type { UserPayload } from '../types.js';
|
|
14
|
+
/** The run fields the published messages read. Entities and test fakes both satisfy this. */
|
|
15
|
+
interface StatusRun {
|
|
16
|
+
ID?: string;
|
|
17
|
+
ConversationDetailID?: string;
|
|
18
|
+
ErrorMessage?: string;
|
|
19
|
+
Steps?: Array<{
|
|
20
|
+
StepName?: string;
|
|
21
|
+
}>;
|
|
22
|
+
GetAll?: () => unknown;
|
|
23
|
+
}
|
|
24
|
+
export declare class AgentRunStatusPublisher {
|
|
25
|
+
private readonly pubSub;
|
|
26
|
+
private readonly userPayload;
|
|
27
|
+
private readonly sessionId;
|
|
28
|
+
private run;
|
|
29
|
+
/**
|
|
30
|
+
* @param sessionId Session stamped on the message body. Defaults to the payload's session.
|
|
31
|
+
* The push itself is always addressed to `userPayload.sessionId`, matching the resolver.
|
|
32
|
+
*/
|
|
33
|
+
constructor(pubSub: PubSubEngine, userPayload: UserPayload, sessionId?: string);
|
|
34
|
+
/** Latest run observed from a progress event, including steps that are not published. */
|
|
35
|
+
get AgentRun(): StatusRun | null;
|
|
36
|
+
/** AgentRunner's progress callback. Noise steps are kept for {@link AgentRun} and not published. */
|
|
37
|
+
get OnProgress(): AgentExecutionProgressCallback;
|
|
38
|
+
/** AgentRunner's streaming callback. Publishes nothing until a progress event has carried the run. */
|
|
39
|
+
get OnStreaming(): AgentExecutionStreamingCallback;
|
|
40
|
+
/**
|
|
41
|
+
* The partial result, then the completion. `conversationDetailId` is the reply row the
|
|
42
|
+
* chat should update. When omitted, the completion uses the run's own detail id.
|
|
43
|
+
*/
|
|
44
|
+
PublishFinal(result: ExecuteAgentResult, conversationDetailId?: string, resultJson?: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Completion for a failure that has no run. The fire-and-forget path uses this when
|
|
47
|
+
* `executeAIAgent` rejects. A host uses it the same way: when the turn throws
|
|
48
|
+
* instead of returning a result, call `PublishFailure` with the reply row's id
|
|
49
|
+
* and the error. That completion is what tells the chat the reply finished.
|
|
50
|
+
*/
|
|
51
|
+
PublishFailure(conversationDetailId: string | undefined, errorMessage: string): void;
|
|
52
|
+
private publish;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=AgentRunStatusPublisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRunStatusPublisher.d.ts","sourceRoot":"","sources":["../../src/resolvers/AgentRunStatusPublisher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACR,8BAA8B,EAC9B,+BAA+B,EAC/B,kBAAkB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,6FAA6F;AAC7F,UAAU,SAAS;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,qBAAa,uBAAuB;IAQ5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT9B,OAAO,CAAC,GAAG,CAA0B;IAErC;;;OAGG;gBAEkB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,GAAE,MAA8B;IAG9D,yFAAyF;IACzF,IAAW,QAAQ,IAAI,SAAS,GAAG,IAAI,CAEtC;IAED,oGAAoG;IACpG,IAAW,UAAU,IAAI,8BAA8B,CAgCtD;IAED,sGAAsG;IACtG,IAAW,WAAW,IAAI,+BAA+B,CAsBxD;IAED;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IA+BzG;;;;;OAKG;IACI,cAAc,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAa3F,OAAO,CAAC,OAAO;CAYlB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { PublishStatusUpdate } from '../generic/PushStatusResolver.js';
|
|
2
|
+
const SIGNIFICANT_STEPS = ['prompt_execution', 'action_execution', 'subagent_execution', 'decision_processing'];
|
|
3
|
+
export class AgentRunStatusPublisher {
|
|
4
|
+
/**
|
|
5
|
+
* @param sessionId Session stamped on the message body. Defaults to the payload's session.
|
|
6
|
+
* The push itself is always addressed to `userPayload.sessionId`, matching the resolver.
|
|
7
|
+
*/
|
|
8
|
+
constructor(pubSub, userPayload, sessionId = userPayload.sessionId) {
|
|
9
|
+
this.pubSub = pubSub;
|
|
10
|
+
this.userPayload = userPayload;
|
|
11
|
+
this.sessionId = sessionId;
|
|
12
|
+
this.run = null;
|
|
13
|
+
}
|
|
14
|
+
/** Latest run observed from a progress event, including steps that are not published. */
|
|
15
|
+
get AgentRun() {
|
|
16
|
+
return this.run;
|
|
17
|
+
}
|
|
18
|
+
/** AgentRunner's progress callback. Noise steps are kept for {@link AgentRun} and not published. */
|
|
19
|
+
get OnProgress() {
|
|
20
|
+
return (progress) => {
|
|
21
|
+
const fromEvent = progress.metadata?.agentRun;
|
|
22
|
+
if (fromEvent) {
|
|
23
|
+
this.run = fromEvent;
|
|
24
|
+
}
|
|
25
|
+
if (!SIGNIFICANT_STEPS.includes(progress.step)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const agentRun = fromEvent || this.run;
|
|
29
|
+
if (!agentRun?.ID) {
|
|
30
|
+
// A host that streams before the first progress event otherwise sees nothing and no reason.
|
|
31
|
+
console.error('❌ No agent run available for progress callback');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.publish('ExecutionProgress', {
|
|
35
|
+
sessionId: this.sessionId,
|
|
36
|
+
agentRunId: agentRun.ID,
|
|
37
|
+
type: 'progress',
|
|
38
|
+
agentRun: agentRun.GetAll ? agentRun.GetAll() : agentRun,
|
|
39
|
+
progress: {
|
|
40
|
+
currentStep: progress.step,
|
|
41
|
+
percentage: progress.percentage,
|
|
42
|
+
message: progress.message,
|
|
43
|
+
agentName: progress.metadata?.agentName,
|
|
44
|
+
agentType: progress.metadata?.agentType,
|
|
45
|
+
stepCount: progress.metadata?.stepCount,
|
|
46
|
+
hierarchicalStep: progress.metadata?.hierarchicalStep,
|
|
47
|
+
},
|
|
48
|
+
timestamp: new Date(),
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** AgentRunner's streaming callback. Publishes nothing until a progress event has carried the run. */
|
|
53
|
+
get OnStreaming() {
|
|
54
|
+
return (chunk) => {
|
|
55
|
+
const agentRun = this.run;
|
|
56
|
+
if (!agentRun?.ID) {
|
|
57
|
+
console.error('❌ No agent run available for streaming callback');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.publish('StreamingContent', {
|
|
61
|
+
sessionId: this.sessionId,
|
|
62
|
+
agentRunId: agentRun.ID,
|
|
63
|
+
type: 'streaming',
|
|
64
|
+
agentRun: agentRun.GetAll ? agentRun.GetAll() : agentRun,
|
|
65
|
+
streaming: {
|
|
66
|
+
content: chunk.content,
|
|
67
|
+
isPartial: !chunk.isComplete,
|
|
68
|
+
stepName: chunk.stepType,
|
|
69
|
+
agentName: chunk.modelName,
|
|
70
|
+
kind: chunk.kind,
|
|
71
|
+
},
|
|
72
|
+
timestamp: new Date(),
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The partial result, then the completion. `conversationDetailId` is the reply row the
|
|
78
|
+
* chat should update. When omitted, the completion uses the run's own detail id.
|
|
79
|
+
*/
|
|
80
|
+
PublishFinal(result, conversationDetailId, resultJson) {
|
|
81
|
+
const agentRun = result.agentRun;
|
|
82
|
+
if (agentRun?.ID) {
|
|
83
|
+
let lastStep = 'Completed';
|
|
84
|
+
const steps = agentRun.Steps;
|
|
85
|
+
if (steps && steps.length > 0) {
|
|
86
|
+
lastStep = steps[steps.length - 1]?.StepName || 'Completed';
|
|
87
|
+
}
|
|
88
|
+
this.publish('StreamingContent', {
|
|
89
|
+
sessionId: this.sessionId,
|
|
90
|
+
agentRunId: agentRun.ID,
|
|
91
|
+
type: 'partial_result',
|
|
92
|
+
partialResult: {
|
|
93
|
+
currentStep: lastStep,
|
|
94
|
+
partialOutput: result.payload || undefined,
|
|
95
|
+
},
|
|
96
|
+
timestamp: new Date(),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
this.publish('StreamingContent', {
|
|
100
|
+
sessionId: this.sessionId,
|
|
101
|
+
agentRunId: agentRun?.ID || 'unknown',
|
|
102
|
+
type: 'complete',
|
|
103
|
+
timestamp: new Date(),
|
|
104
|
+
conversationDetailId: conversationDetailId || agentRun?.ConversationDetailID,
|
|
105
|
+
success: result.success,
|
|
106
|
+
errorMessage: agentRun?.ErrorMessage || undefined,
|
|
107
|
+
result: resultJson || undefined,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Completion for a failure that has no run. The fire-and-forget path uses this when
|
|
112
|
+
* `executeAIAgent` rejects. A host uses it the same way: when the turn throws
|
|
113
|
+
* instead of returning a result, call `PublishFailure` with the reply row's id
|
|
114
|
+
* and the error. That completion is what tells the chat the reply finished.
|
|
115
|
+
*/
|
|
116
|
+
PublishFailure(conversationDetailId, errorMessage) {
|
|
117
|
+
this.publish('StreamingContent', {
|
|
118
|
+
sessionId: this.sessionId,
|
|
119
|
+
agentRunId: 'unknown',
|
|
120
|
+
type: 'complete',
|
|
121
|
+
timestamp: new Date(),
|
|
122
|
+
conversationDetailId,
|
|
123
|
+
success: false,
|
|
124
|
+
errorMessage,
|
|
125
|
+
result: JSON.stringify({ success: false, errorMessage }),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
publish(type, data) {
|
|
129
|
+
PublishStatusUpdate(this.pubSub, {
|
|
130
|
+
sessionId: this.userPayload.sessionId,
|
|
131
|
+
ownerUserId: this.userPayload?.userRecord?.ID ?? '',
|
|
132
|
+
message: JSON.stringify({
|
|
133
|
+
resolver: 'RunAIAgentResolver',
|
|
134
|
+
type,
|
|
135
|
+
status: 'ok',
|
|
136
|
+
data,
|
|
137
|
+
}),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=AgentRunStatusPublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRunStatusPublisher.js","sourceRoot":"","sources":["../../src/resolvers/AgentRunStatusPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { AppContext } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* One step of an agent run, projected for the client's progress view.
|
|
4
|
+
*
|
|
5
|
+
* Carries metadata only. `InputData`, `OutputData` and the payload snapshots are
|
|
6
|
+
* deliberately excluded: they are the largest columns on the row and a run can hold
|
|
7
|
+
* hundreds of steps, so including them would let a single tail call return tens of
|
|
8
|
+
* megabytes. The final result is delivered once, via `FinalPayload`, when the run
|
|
9
|
+
* reaches a terminal state.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ConversationRunEvent {
|
|
12
|
+
/** Monotonic position within the run. The cursor a client pages from. */
|
|
13
|
+
Seq: number;
|
|
14
|
+
StepType: string;
|
|
15
|
+
StepName: string;
|
|
16
|
+
Status: string;
|
|
17
|
+
Success?: boolean;
|
|
18
|
+
ErrorMessage?: string;
|
|
19
|
+
StartedAt: Date;
|
|
20
|
+
CompletedAt?: Date;
|
|
21
|
+
}
|
|
22
|
+
/** Result of a tail call. */
|
|
23
|
+
export declare class ConversationRunEventsOutput {
|
|
24
|
+
Success: boolean;
|
|
25
|
+
Message: string;
|
|
26
|
+
Events: ConversationRunEvent[];
|
|
27
|
+
/**
|
|
28
|
+
* Highest `Seq` the caller has now seen. Pass it back as `sinceSeq` on the next call.
|
|
29
|
+
* Echoes the request's `sinceSeq` when nothing new has landed, so a client that polls
|
|
30
|
+
* a quiet run never rewinds.
|
|
31
|
+
*/
|
|
32
|
+
LatestSeq: number;
|
|
33
|
+
/**
|
|
34
|
+
* True while the run is still executing, including a run `Paused` on a workflow that is still
|
|
35
|
+
* running. False means terminal — stop tailing, and `FinalPayload` / `RunStatus` hold the
|
|
36
|
+
* outcome. A failed call (`Success` false) reports true, because it knows nothing about the run.
|
|
37
|
+
*/
|
|
38
|
+
IsInFlight: boolean;
|
|
39
|
+
RunID?: string;
|
|
40
|
+
RunStatus?: string;
|
|
41
|
+
/**
|
|
42
|
+
* The run's answer, returned only once the run is terminal.
|
|
43
|
+
*
|
|
44
|
+
* Sourced from `AIAgentRun.Result`, falling back to the conversation detail's message because
|
|
45
|
+
* `Result` is agent-dependent and null on many successful runs. Still nullable: a caller must
|
|
46
|
+
* decide a message is finished from {@link IsInFlight} / {@link DetailStatus}, never from the
|
|
47
|
+
* presence of this field, or it will wait forever on an agent that writes neither.
|
|
48
|
+
*/
|
|
49
|
+
FinalPayload?: string;
|
|
50
|
+
/** `ConversationDetail.Status` — the value the chat UI renders from. */
|
|
51
|
+
DetailStatus?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Durable, resumable read of an agent run's progress (MJ #4222).
|
|
55
|
+
*
|
|
56
|
+
* The `statusUpdates` subscription is the only live path a conversation has, and it has no
|
|
57
|
+
* replay: the server topic is an in-memory PubSub and the client subject is explicitly
|
|
58
|
+
* unbuffered. Anything published while a socket is half-open is gone, and the client cannot
|
|
59
|
+
* tell the difference between "nothing happened" and "I missed everything".
|
|
60
|
+
*
|
|
61
|
+
* This query is the durable counterpart, mirroring `IntegrationTailRunEvents` — the same
|
|
62
|
+
* shape the integration subsystem already uses, where the subscription is a latency
|
|
63
|
+
* optimization over a log rather than the only delivery path. A client keeps the `LatestSeq`
|
|
64
|
+
* it has seen and re-reads from there after any interruption.
|
|
65
|
+
*
|
|
66
|
+
* It is a READ MODEL over tables that already exist. `AIAgentRunStep` rows are inserted when
|
|
67
|
+
* a step starts and updated when it finishes, so progress is visible mid-run, and
|
|
68
|
+
* `StepNumber` is already monotonic per run. No new table and no migration.
|
|
69
|
+
*
|
|
70
|
+
* Authorization is delegated to `RunView` executed as the calling user, so MJ's existing
|
|
71
|
+
* row-level security decides what is visible. A caller who cannot read the conversation
|
|
72
|
+
* detail gets the same answer as one asking about a detail that does not exist.
|
|
73
|
+
*/
|
|
74
|
+
export declare class ConversationRunEventsResolver {
|
|
75
|
+
TailConversationEvents(conversationDetailID: string, ctx: AppContext, sinceSeq?: number): Promise<ConversationRunEventsOutput>;
|
|
76
|
+
/** Loads the conversation detail as the calling user; null when absent or not permitted. */
|
|
77
|
+
private loadDetail;
|
|
78
|
+
/**
|
|
79
|
+
* Newest run for the detail. A conversation detail can be retried, and the latest run is
|
|
80
|
+
* the one the UI is showing.
|
|
81
|
+
*/
|
|
82
|
+
private loadLatestRun;
|
|
83
|
+
/** Steps after `sinceSeq`, oldest first, bounded by {@link MAX_EVENTS_PER_TAIL}. */
|
|
84
|
+
private loadSteps;
|
|
85
|
+
/** Projects a plain step row to an event. Plain rows may carry dates as strings. */
|
|
86
|
+
private toEvent;
|
|
87
|
+
/** Escapes a value for the `ExtraFilter` string. Ids are UUIDs, but never trust the shape. */
|
|
88
|
+
private escape;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=ConversationRunEventsResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationRunEventsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ConversationRunEventsResolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C;;;;;;;;GAQG;AACH,qBACa,oBAAoB;IAC7B,yEAAyE;IAEzE,GAAG,EAAE,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,IAAI,CAAC;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,6BAA6B;AAC7B,qBACa,2BAA2B;IAEpC,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAE/B;;;;OAIG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IAEH,UAAU,EAAE,OAAO,CAAC;IAGpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IAExE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,6BAA6B;IAEhC,sBAAsB,CACmB,oBAAoB,EAAE,MAAM,EAChE,GAAG,EAAE,UAAU,EAC2B,QAAQ,CAAC,EAAE,MAAM,GACnE,OAAO,CAAC,2BAA2B,CAAC;IAoEvC,4FAA4F;YAC9E,UAAU;IAmBxB;;;OAGG;YACW,aAAa;IAqB3B,oFAAoF;YACtE,SAAS;IAsBvB,oFAAoF;IACpF,OAAO,CAAC,OAAO;IAaf,8FAA8F;IAC9F,OAAO,CAAC,MAAM;CAGjB"}
|