@memberjunction/server 6.2.0-edge.0 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +11 -0
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +48 -0
- 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 +3 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.js +8 -4
- package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
- package/dist/generic/PushStatusResolver.d.ts +10 -1
- package/dist/generic/PushStatusResolver.d.ts.map +1 -1
- package/dist/generic/PushStatusResolver.js +11 -3
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +5 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +15 -8
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -9
- 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/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/RealtimeBridgeResolver.js +3 -3
- package/dist/resolvers/RealtimeClientSessionResolver.js +3 -3
- package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
- package/dist/resolvers/RunAIAgentResolver.d.ts +10 -4
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +69 -38
- 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/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/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 +92 -92
- package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -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__/RealtimeSdpBrokerHandler.test.ts +6 -6
- package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
- package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
- 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__/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__/principals.test.ts +22 -22
- 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 +3 -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 +37 -0
- package/src/generic/CacheInvalidationResolver.ts +148 -4
- package/src/generic/DeleteOptionsInput.ts +9 -2
- package/src/generic/FireAndForgetHeartbeat.ts +19 -14
- package/src/generic/PushStatusResolver.ts +21 -7
- package/src/generic/ResolverBase.ts +16 -8
- package/src/generic/RunViewResolver.ts +22 -22
- package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
- package/src/index.ts +35 -9
- 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/AgentSessionResolver.ts +3 -3
- package/src/resolvers/ColorResolver.ts +6 -6
- package/src/resolvers/ComponentRegistryResolver.ts +36 -36
- package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
- package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
- 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/QueryResolver.ts +13 -13
- package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
- package/src/resolvers/RealtimeClientSessionResolver.ts +3 -3
- package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
- package/src/resolvers/RunAIAgentResolver.ts +113 -72
- package/src/resolvers/RunAIPromptResolver.ts +22 -22
- 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/__tests__/GetDataResolver.tokens.test.ts +40 -38
- 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
|
@@ -20,7 +20,7 @@ import { CreateBridgeRealtimeSession, FinalizeBridgeCoAgentRuns, GetRealtimeMode
|
|
|
20
20
|
import { AIBridgeEngine } from '@memberjunction/ai-bridge-server';
|
|
21
21
|
import { SessionManager } from '../agentSessions/SessionManager.js';
|
|
22
22
|
import { NotificationEngine } from '@memberjunction/notifications';
|
|
23
|
-
import {
|
|
23
|
+
import { RegisterMeetingRecordingFile, CorrelateRecordingStart } from './meetingRecordingRegistration.js';
|
|
24
24
|
/**
|
|
25
25
|
* Binds the agent realtime-session factory onto the LiveKit room coordinator's model-session creation seam.
|
|
26
26
|
* Module-load side effect — it runs when MJServer builds its GraphQL schema (which imports this resolver),
|
|
@@ -477,7 +477,7 @@ let RealtimeBridgeResolver = class RealtimeBridgeResolver extends ResolverBase {
|
|
|
477
477
|
// Best-effort: correlate the live recording with the room's Meeting-Room Conversation (if it exists
|
|
478
478
|
// yet) by stamping its EgressID. Never fail the start on this — the stop-flow resolves/creates it.
|
|
479
479
|
const provider = GetReadWriteProvider(context.providers);
|
|
480
|
-
void
|
|
480
|
+
void CorrelateRecordingStart(input.RoomName, info.EgressID, user, provider);
|
|
481
481
|
return { Success: true, EgressID: info.EgressID, Status: info.Status };
|
|
482
482
|
}
|
|
483
483
|
catch (error) {
|
|
@@ -503,7 +503,7 @@ let RealtimeBridgeResolver = class RealtimeBridgeResolver extends ResolverBase {
|
|
|
503
503
|
// Register the completed egress MP4 as a Files row on the Meeting-Room Conversation. Best-effort:
|
|
504
504
|
// any failure (e.g. storage provider not configured) leaves RecordingFileID unset but still
|
|
505
505
|
// returns the successful stop result.
|
|
506
|
-
const registration = await
|
|
506
|
+
const registration = await RegisterMeetingRecordingFile({ EgressID: info.EgressID, RoomName: info.RoomName, OutputLocation: info.OutputLocation, OutputSizeBytes: info.OutputSizeBytes }, user, provider);
|
|
507
507
|
if (!registration.Success) {
|
|
508
508
|
LogError(`StopLiveKitRecording: recording stopped but registration did not complete: ${registration.ErrorMessage ?? 'unknown'}`);
|
|
509
509
|
}
|
|
@@ -45,7 +45,7 @@ import { RealtimeClientSessionService, RealtimeChannelServerHost, EvaluateRuntim
|
|
|
45
45
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
46
46
|
import { GetReadWriteProvider } from '../util.js';
|
|
47
47
|
import { SessionManager } from '../agentSessions/index.js';
|
|
48
|
-
import {
|
|
48
|
+
import { ResolveWidgetGuestRunContext, ResolveScopedAnonymousRunUser } from '../realtimeWidget/widgetGuestElevation.js';
|
|
49
49
|
/**
|
|
50
50
|
* Progress steps worth narrating to the realtime model — mirrors the normal agent-run path's filter
|
|
51
51
|
* in {@link import('./RunAIAgentResolver.js').RunAIAgentResolver}. Initialization/validation/finalization
|
|
@@ -2060,8 +2060,8 @@ let RealtimeClientSessionResolver = class RealtimeClientSessionResolver extends
|
|
|
2060
2060
|
* than blocking the start.
|
|
2061
2061
|
*/
|
|
2062
2062
|
async resolveWidgetVoiceCapSeconds(userPayload, providers) {
|
|
2063
|
-
const elevation = await
|
|
2064
|
-
const minutes = elevation?.
|
|
2063
|
+
const elevation = await ResolveWidgetGuestRunContext(userPayload, GetReadWriteProvider(providers));
|
|
2064
|
+
const minutes = elevation?.Widget.VoiceMaxSessionMinutes;
|
|
2065
2065
|
return minutes && minutes > 0 ? minutes * 60 : undefined;
|
|
2066
2066
|
}
|
|
2067
2067
|
/**
|
|
@@ -32,7 +32,7 @@ import { Resolver, Mutation, Query, Arg, Ctx, Float, Int, ObjectType, Field, Pub
|
|
|
32
32
|
import { LogError } from '@memberjunction/core';
|
|
33
33
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
34
34
|
import { NormalizeInstanceKey, RemoteBrowserEngine } from '@memberjunction/remote-browser-server';
|
|
35
|
-
import {
|
|
35
|
+
import { BeginBrowserGoalStep, FinalizeBrowserGoalStep, ExtractCoAgentRunID } from '../agentSessions/remoteBrowserGoalEngine.js';
|
|
36
36
|
import { RemoteBrowserGoalRegistry } from '../agentSessions/remoteBrowserGoalRegistry.js';
|
|
37
37
|
import { randomUUID } from 'node:crypto';
|
|
38
38
|
import { RemoteBrowserCapabilityNotSupportedError, } from '@memberjunction/remote-browser-base';
|
|
@@ -377,8 +377,8 @@ let RemoteBrowserActionResolver = class RemoteBrowserActionResolver extends Reso
|
|
|
377
377
|
const providerName = await this.resolveProviderName(session, contextUser, provider);
|
|
378
378
|
// Observability: nest this goal's many prompt runs under ONE "Browser goal" step on the realtime
|
|
379
379
|
// co-agent run (when the session has one). Best-effort — a null step just means the goal runs unlinked.
|
|
380
|
-
const coAgentRunID =
|
|
381
|
-
const goalStep = await
|
|
380
|
+
const coAgentRunID = ExtractCoAgentRunID(session.Config_);
|
|
381
|
+
const goalStep = await BeginBrowserGoalStep(provider, contextUser, coAgentRunID, goal);
|
|
382
382
|
// ASYNC START: a goal loop can run for minutes; do NOT hold this request open for it (browser
|
|
383
383
|
// fetch / proxy / janitor timeouts would kill the request while the loop runs on, and the agent
|
|
384
384
|
// would get "no response from the server" despite a successful run). Register the run, kick the
|
|
@@ -396,14 +396,14 @@ let RemoteBrowserActionResolver = class RemoteBrowserActionResolver extends Reso
|
|
|
396
396
|
AgentRunStepID: goalStep?.ID,
|
|
397
397
|
})
|
|
398
398
|
.then(async (result) => {
|
|
399
|
-
await
|
|
399
|
+
await FinalizeBrowserGoalStep(goalStep, result);
|
|
400
400
|
RemoteBrowserGoalRegistry.Instance.Complete(agentSessionID, goalRunID, result);
|
|
401
401
|
})
|
|
402
402
|
.catch(async (err) => {
|
|
403
403
|
const message = err instanceof Error ? err.message : String(err);
|
|
404
404
|
LogError(`ExecuteRemoteBrowserGoal failed (provider='${providerName}'): ${message}`);
|
|
405
405
|
const failure = { Success: false, Status: 'Error', Detail: `Remote browser error (${providerName}): ${message}` };
|
|
406
|
-
await
|
|
406
|
+
await FinalizeBrowserGoalStep(goalStep, failure);
|
|
407
407
|
RemoteBrowserGoalRegistry.Instance.Complete(agentSessionID, goalRunID, failure);
|
|
408
408
|
});
|
|
409
409
|
return { Success: true, Status: 'Running', GoalRunID: goalRunID, Detail: 'Goal started.' };
|
|
@@ -79,8 +79,8 @@ export declare class RunAIAgentResolver extends ResolverBase {
|
|
|
79
79
|
* Create streaming progress callback
|
|
80
80
|
*/
|
|
81
81
|
private createProgressCallback;
|
|
82
|
-
private
|
|
83
|
-
private
|
|
82
|
+
private publishProgressUpdate;
|
|
83
|
+
private publishStreamingUpdate;
|
|
84
84
|
/**
|
|
85
85
|
* Create streaming content callback
|
|
86
86
|
*/
|
|
@@ -156,7 +156,13 @@ export declare class RunAIAgentResolver extends ResolverBase {
|
|
|
156
156
|
* @param agentId - The agent to execute
|
|
157
157
|
* @param maxHistoryMessages - Maximum number of history messages to include (default: 20)
|
|
158
158
|
*/
|
|
159
|
-
RunAIAgentFromConversationDetail(conversationDetailId: string, agentId: string, { userPayload, providers, dataSource }: AppContext, sessionId: string, pubSub: PubSubEngine, maxHistoryMessages?: number, data?: string, payload?: string, lastRunId?: string, autoPopulateLastRunPayload?: boolean, configurationId?: string, createArtifacts?: boolean, createNotification?: boolean, sourceArtifactId?: string, sourceArtifactVersionId?: string, fireAndForget?: boolean, planMode?: boolean, requestedSkillIDs?: string[]
|
|
159
|
+
RunAIAgentFromConversationDetail(conversationDetailId: string, agentId: string, { userPayload, providers, dataSource }: AppContext, sessionId: string, pubSub: PubSubEngine, maxHistoryMessages?: number, data?: string, payload?: string, lastRunId?: string, autoPopulateLastRunPayload?: boolean, configurationId?: string, createArtifacts?: boolean, createNotification?: boolean, sourceArtifactId?: string, sourceArtifactVersionId?: string, fireAndForget?: boolean, planMode?: boolean, requestedSkillIDs?: string[],
|
|
160
|
+
/** History floor: an ISO-8601 timestamp, the first moment of the conversation this run may
|
|
161
|
+
* read. The history is loaded from there and no summary of earlier messages is used, and the
|
|
162
|
+
* run's own conversation reads honour it too. Omitted (clients send it only when set, so an
|
|
163
|
+
* older client never does), the run reads the whole conversation as before. An unreadable
|
|
164
|
+
* value fails the request rather than being dropped. */
|
|
165
|
+
agentHistoryFrom?: string): Promise<AIAgentRunResult>;
|
|
160
166
|
/**
|
|
161
167
|
* Respond to a pending AIAgentRequest from the dashboard or API.
|
|
162
168
|
* Updates the request record with the response and optionally spawns a
|
|
@@ -189,7 +195,7 @@ export declare class RunAIAgentResolver extends ResolverBase {
|
|
|
189
195
|
*
|
|
190
196
|
* Opt #8: Switched from ResultType 'entity_object' to 'simple' with explicit Fields.
|
|
191
197
|
* The history query only needs the window-assembly fields (ConversationWindowFields:
|
|
192
|
-
* ID, Sequence, Role, Message, SummaryOfEarlierConversation) from each
|
|
198
|
+
* ID, Sequence, Role, Message, SummaryOfEarlierConversation, __mj_CreatedAt) from each
|
|
193
199
|
* ConversationDetail record. Using 'entity_object' created full BaseEntity instances
|
|
194
200
|
* with getters/setters, dirty tracking, and validation — none of which are needed for
|
|
195
201
|
* read-only history assembly. The 'simple' result type returns plain JS objects,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunAIAgentResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/RunAIAgentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,YAAY,EAAmD,MAAM,cAAc,CAAC;AAC7J,OAAO,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAQtD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAkB1D,qBACa,gBAAgB;IAEzB,OAAO,EAAE,OAAO,CAAC;IAGjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBACa,sBAAsB;IAE/B,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,OAAO,EAAE,MAAM,CAAC;IAGhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBACa,qBAAqB;IAE9B,OAAO,EAAE,MAAM,CAAC;IAGhB,SAAS,EAAE,OAAO,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IAEH,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,yBAAyB;IAElC,MAAM,EAAE,MAAM,CAAC;IAGf,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,IAAI,CAAC;IAGhB,OAAO,CAAC,EAAE,IAAI,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBACa,kBAAkB;IAE3B,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBACa,2BAA2B;IAEpC,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;IAGnB,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAG/D,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAGlC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAGlC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAGnC,SAAS,EAAE,IAAI,CAAC;IAGhB,QAAQ,CAAC,EAAE,GAAG,CAAC;IAGf,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAMD,qBACa,kBAAmB,SAAQ,YAAY;IAChD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;YACW,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoD9B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,sBAAsB;IAS9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;;;OAIG;YACW,cAAc;
|
|
1
|
+
{"version":3,"file":"RunAIAgentResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/RunAIAgentResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,10 +18,10 @@ import { AgentRunner, ArtifactToolManager } from '@memberjunction/ai-agents';
|
|
|
18
18
|
import { ConversationUtility } from '@memberjunction/ai-core-plus';
|
|
19
19
|
import { AIEngine } from '@memberjunction/aiengine';
|
|
20
20
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
21
|
-
import {
|
|
21
|
+
import { StartLivenessPulse } from '../generic/FireAndForgetHeartbeat.js';
|
|
22
22
|
import { RequireSystemUser } from '../directives/RequireSystemUser.js';
|
|
23
23
|
import { GetReadWriteProvider } from '../util.js';
|
|
24
|
-
import {
|
|
24
|
+
import { ResolveWidgetGuestRunContext, ElevateUserPayload } from '../realtimeWidget/widgetGuestElevation.js';
|
|
25
25
|
import { SafeJSONParse, UUIDsEqual } from '@memberjunction/global';
|
|
26
26
|
import { GetAttachmentService } from '@memberjunction/aiengine';
|
|
27
27
|
import { NotificationEngine } from '@memberjunction/notifications';
|
|
@@ -324,10 +324,10 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
324
324
|
},
|
|
325
325
|
timestamp: new Date()
|
|
326
326
|
};
|
|
327
|
-
this.
|
|
327
|
+
this.publishProgressUpdate(pubSub, progressMsg, userPayload);
|
|
328
328
|
};
|
|
329
329
|
}
|
|
330
|
-
|
|
330
|
+
publishProgressUpdate(pubSub, data, userPayload) {
|
|
331
331
|
this.PublishStatusUpdate(pubSub, userPayload.sessionId, JSON.stringify({
|
|
332
332
|
resolver: 'RunAIAgentResolver',
|
|
333
333
|
type: 'ExecutionProgress',
|
|
@@ -335,7 +335,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
335
335
|
data,
|
|
336
336
|
}), userPayload);
|
|
337
337
|
}
|
|
338
|
-
|
|
338
|
+
publishStreamingUpdate(pubSub, data, userPayload) {
|
|
339
339
|
this.PublishStatusUpdate(pubSub, userPayload.sessionId, JSON.stringify({
|
|
340
340
|
resolver: 'RunAIAgentResolver',
|
|
341
341
|
type: 'StreamingContent',
|
|
@@ -369,7 +369,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
369
369
|
},
|
|
370
370
|
timestamp: new Date()
|
|
371
371
|
};
|
|
372
|
-
this.
|
|
372
|
+
this.publishStreamingUpdate(pubSub, streamMsg, userPayload);
|
|
373
373
|
};
|
|
374
374
|
}
|
|
375
375
|
/**
|
|
@@ -389,7 +389,10 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
389
389
|
* The framework intersects them with the agent's accepted skills AND the user's Run permission. */
|
|
390
390
|
requestedSkillIDs,
|
|
391
391
|
/** JSON `{ paused?: boolean }` — seeds `$.debug` on a submitted task graph at insert. */
|
|
392
|
-
taskGraphDebug
|
|
392
|
+
taskGraphDebug,
|
|
393
|
+
/** History floor for a conversation run — threaded into ExecuteAgentParams.ConversationHistoryFrom,
|
|
394
|
+
* so the framework's own conversation reads (retrieval tools, artifacts, compaction) honour it too. */
|
|
395
|
+
conversationHistoryFrom) {
|
|
393
396
|
const startTime = Date.now();
|
|
394
397
|
// Best-effort handle for persistInFlightAgentFailure. Populated from a
|
|
395
398
|
// progress event carrying metadata.agentRun, or from the successful
|
|
@@ -436,6 +439,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
436
439
|
planMode: planMode,
|
|
437
440
|
requestedSkillIDs: requestedSkillIDs,
|
|
438
441
|
taskGraphDebug: parseTaskGraphDebug(taskGraphDebug),
|
|
442
|
+
ConversationHistoryFrom: conversationHistoryFrom,
|
|
439
443
|
data: parsedData,
|
|
440
444
|
context: {
|
|
441
445
|
dataSource: dataSource
|
|
@@ -585,7 +589,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
585
589
|
partialResult,
|
|
586
590
|
timestamp: new Date()
|
|
587
591
|
};
|
|
588
|
-
this.
|
|
592
|
+
this.publishStreamingUpdate(pubSub, partialMsg, userPayload);
|
|
589
593
|
}
|
|
590
594
|
// Publish completion with conversationDetailId for client-side routing.
|
|
591
595
|
// Include result data so fire-and-forget clients can receive the full result via WebSocket.
|
|
@@ -599,7 +603,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
599
603
|
errorMessage: result.agentRun?.ErrorMessage || undefined,
|
|
600
604
|
result: resultJson || undefined
|
|
601
605
|
};
|
|
602
|
-
this.
|
|
606
|
+
this.publishStreamingUpdate(pubSub, completionData, userPayload);
|
|
603
607
|
}
|
|
604
608
|
/**
|
|
605
609
|
* Public mutation for regular users to run AI agents with authentication.
|
|
@@ -808,7 +812,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
808
812
|
* @param agentId - The agent to execute
|
|
809
813
|
* @param maxHistoryMessages - Maximum number of history messages to include (default: 20)
|
|
810
814
|
*/
|
|
811
|
-
async RunAIAgentFromConversationDetail(conversationDetailId, agentId, { userPayload, providers, dataSource }, sessionId, pubSub, maxHistoryMessages, data, payload, lastRunId, autoPopulateLastRunPayload, configurationId, createArtifacts, createNotification, sourceArtifactId, sourceArtifactVersionId, fireAndForget, planMode, requestedSkillIDs) {
|
|
815
|
+
async RunAIAgentFromConversationDetail(conversationDetailId, agentId, { userPayload, providers, dataSource }, sessionId, pubSub, maxHistoryMessages, data, payload, lastRunId, autoPopulateLastRunPayload, configurationId, createArtifacts, createNotification, sourceArtifactId, sourceArtifactVersionId, fireAndForget, planMode, requestedSkillIDs, agentHistoryFrom) {
|
|
812
816
|
// Check API key scope authorization for agent execution
|
|
813
817
|
await this.CheckAPIKeyScopeAuthorization('agent:execute', agentId, userPayload);
|
|
814
818
|
const p = GetReadWriteProvider(providers);
|
|
@@ -827,10 +831,12 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
827
831
|
// Conversation OWNERSHIP is still enforced under the guest principal below: the guest loads its
|
|
828
832
|
// own ConversationDetail through the Widget Guest RLS filters, so a detail id from another
|
|
829
833
|
// session resolves to "not found" before any elevated work happens.
|
|
830
|
-
const widgetElevation = await
|
|
831
|
-
const effectiveAgentId = widgetElevation ? widgetElevation.
|
|
832
|
-
const effectiveUserPayload = widgetElevation ?
|
|
834
|
+
const widgetElevation = await ResolveWidgetGuestRunContext(userPayload, p);
|
|
835
|
+
const effectiveAgentId = widgetElevation ? widgetElevation.PinnedAgentId : agentId;
|
|
836
|
+
const effectiveUserPayload = widgetElevation ? ElevateUserPayload(userPayload, widgetElevation.ElevatedUser) : userPayload;
|
|
833
837
|
try {
|
|
838
|
+
// Parsed before anything loads: a floor the caller asked for must never be dropped.
|
|
839
|
+
const historyFrom = parseAgentHistoryFrom(agentHistoryFrom);
|
|
834
840
|
// LATENCY OPTIMIZATION (Opt #2 + #3): Load ConversationDetail once here to extract
|
|
835
841
|
// conversationId, then pass it downstream. Previously this record was loaded multiple
|
|
836
842
|
// times: once in loadConversationHistoryWithAttachments (just to get conversationId),
|
|
@@ -845,13 +851,14 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
845
851
|
const messages = await this.loadConversationHistoryWithAttachments(conversationId, currentUser, maxHistoryMessages || 20, p,
|
|
846
852
|
// The UI creates the agent-response placeholder row ('⏳ ...') before invoking
|
|
847
853
|
// this mutation — exclude it so the model never sees an empty assistant turn.
|
|
848
|
-
[conversationDetailId]);
|
|
854
|
+
[conversationDetailId], historyFrom);
|
|
849
855
|
// Convert to JSON string for the existing executeAIAgent method
|
|
850
856
|
const messagesJson = JSON.stringify(messages);
|
|
851
857
|
if (fireAndForget) {
|
|
852
858
|
// Fire-and-forget mode: start execution in background, return immediately.
|
|
853
859
|
// The client will receive the result via WebSocket PubSub completion event.
|
|
854
|
-
this.executeAgentInBackground(p, dataSource, effectiveAgentId, effectiveUserPayload, messagesJson, sessionId, pubSub, data, payload, lastRunId, autoPopulateLastRunPayload, configurationId, conversationDetailId, createArtifacts || false, createNotification || false, sourceArtifactId, sourceArtifactVersionId, conversationId, planMode, requestedSkillIDs
|
|
860
|
+
this.executeAgentInBackground(p, dataSource, effectiveAgentId, effectiveUserPayload, messagesJson, sessionId, pubSub, data, payload, lastRunId, autoPopulateLastRunPayload, configurationId, conversationDetailId, createArtifacts || false, createNotification || false, sourceArtifactId, sourceArtifactVersionId, conversationId, planMode, requestedSkillIDs, undefined, // taskGraphDebug
|
|
861
|
+
historyFrom);
|
|
855
862
|
LogStatus(`🔥 Fire-and-forget: Agent ${effectiveAgentId} execution started in background for session ${sessionId}`);
|
|
856
863
|
return {
|
|
857
864
|
success: true,
|
|
@@ -862,7 +869,8 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
862
869
|
return this.executeAIAgent(p, dataSource, effectiveAgentId, effectiveUserPayload, messagesJson, sessionId, pubSub, data, payload, undefined, // templateData
|
|
863
870
|
lastRunId, autoPopulateLastRunPayload, configurationId, conversationDetailId, createArtifacts || false, createNotification || false, sourceArtifactId, sourceArtifactVersionId, conversationId, // LATENCY OPT #2: pass pre-resolved conversationId
|
|
864
871
|
undefined, // runRef
|
|
865
|
-
planMode, requestedSkillIDs
|
|
872
|
+
planMode, requestedSkillIDs, undefined, // taskGraphDebug
|
|
873
|
+
historyFrom);
|
|
866
874
|
}
|
|
867
875
|
catch (error) {
|
|
868
876
|
const errorMessage = error.message || 'Unknown error loading conversation history';
|
|
@@ -1028,10 +1036,12 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1028
1036
|
/** Per-request Plan Mode toggle — threaded through to ExecuteAgentParams.planMode. */
|
|
1029
1037
|
planMode,
|
|
1030
1038
|
/** Skill IDs the user requested — threaded through to ExecuteAgentParams.requestedSkillIDs. */
|
|
1031
|
-
requestedSkillIDs, taskGraphDebug
|
|
1039
|
+
requestedSkillIDs, taskGraphDebug,
|
|
1040
|
+
/** History floor — threaded through to ExecuteAgentParams.ConversationHistoryFrom. */
|
|
1041
|
+
conversationHistoryFrom) {
|
|
1032
1042
|
// Ref the liveness pulse reads to enrich heartbeats once the run is created.
|
|
1033
1043
|
const runRef = { current: null };
|
|
1034
|
-
const pulse =
|
|
1044
|
+
const pulse = StartLivenessPulse({
|
|
1035
1045
|
pubSub,
|
|
1036
1046
|
sessionId,
|
|
1037
1047
|
ownerUserId: userPayload.userRecord.ID,
|
|
@@ -1041,7 +1051,7 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1041
1051
|
: undefined,
|
|
1042
1052
|
});
|
|
1043
1053
|
// Execute in background - errors are handled within, not propagated
|
|
1044
|
-
this.executeAIAgent(p, dataSource, agentId, userPayload, messagesJson, sessionId, pubSub, data, payload, undefined, lastRunId, autoPopulateLastRunPayload, configurationId, conversationDetailId, createArtifacts, createNotification, sourceArtifactId, sourceArtifactVersionId, conversationId, runRef, planMode, requestedSkillIDs, taskGraphDebug).catch((error) => {
|
|
1054
|
+
this.executeAIAgent(p, dataSource, agentId, userPayload, messagesJson, sessionId, pubSub, data, payload, undefined, lastRunId, autoPopulateLastRunPayload, configurationId, conversationDetailId, createArtifacts, createNotification, sourceArtifactId, sourceArtifactVersionId, conversationId, runRef, planMode, requestedSkillIDs, taskGraphDebug, conversationHistoryFrom).catch((error) => {
|
|
1045
1055
|
// Background execution failed unexpectedly (executeAIAgent has its own try-catch,
|
|
1046
1056
|
// so this would only fire for truly unexpected errors).
|
|
1047
1057
|
const errorMessage = (error instanceof Error) ? error.message : 'Unknown background execution error';
|
|
@@ -1057,8 +1067,8 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1057
1067
|
errorMessage,
|
|
1058
1068
|
result: JSON.stringify({ success: false, errorMessage })
|
|
1059
1069
|
};
|
|
1060
|
-
this.
|
|
1061
|
-
}).finally(() => pulse.
|
|
1070
|
+
this.publishStreamingUpdate(pubSub, errorCompletionData, userPayload);
|
|
1071
|
+
}).finally(() => pulse.Stop());
|
|
1062
1072
|
}
|
|
1063
1073
|
/**
|
|
1064
1074
|
* Load conversation history with attachments from database.
|
|
@@ -1074,18 +1084,20 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1074
1084
|
*
|
|
1075
1085
|
* Opt #8: Switched from ResultType 'entity_object' to 'simple' with explicit Fields.
|
|
1076
1086
|
* The history query only needs the window-assembly fields (ConversationWindowFields:
|
|
1077
|
-
* ID, Sequence, Role, Message, SummaryOfEarlierConversation) from each
|
|
1087
|
+
* ID, Sequence, Role, Message, SummaryOfEarlierConversation, __mj_CreatedAt) from each
|
|
1078
1088
|
* ConversationDetail record. Using 'entity_object' created full BaseEntity instances
|
|
1079
1089
|
* with getters/setters, dirty tracking, and validation — none of which are needed for
|
|
1080
1090
|
* read-only history assembly. The 'simple' result type returns plain JS objects,
|
|
1081
1091
|
* reducing per-record overhead (~30ms total savings).
|
|
1082
1092
|
*/
|
|
1083
|
-
async loadConversationHistoryWithAttachments(conversationId, contextUser, maxMessages, provider, excludeDetailIds
|
|
1093
|
+
async loadConversationHistoryWithAttachments(conversationId, contextUser, maxMessages, provider, excludeDetailIds,
|
|
1094
|
+
/** History floor: only rows written at or after it are loaded, and no summary is used. */
|
|
1095
|
+
historyFrom) {
|
|
1084
1096
|
// Context windowing (summary boundary + raw tail, or legacy last-N when no
|
|
1085
1097
|
// summary exists) shares ONE fold implementation with all other callers —
|
|
1086
1098
|
// ConversationEngine.AssembleContextWindow — and the ROWS come from the
|
|
1087
1099
|
// single-sourced fresh-per-request loader (same one the compaction pass uses).
|
|
1088
|
-
//
|
|
1100
|
+
// Four deliberate properties vs. the engine's cached GetAgentContextWindow:
|
|
1089
1101
|
// 1. Entity RLS applies (the engine path loads via a stored query with no
|
|
1090
1102
|
// row-level security — wrong for guest/widget-scoped users), and the
|
|
1091
1103
|
// process-global per-conversation cache — keyed by conversation, not user —
|
|
@@ -1094,10 +1106,13 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1094
1106
|
// cross-server staleness (a warm cache misses rows written by other nodes).
|
|
1095
1107
|
// 3. Load failure THROWS → the mutation fails, instead of silently running
|
|
1096
1108
|
// the agent against zero history.
|
|
1097
|
-
|
|
1109
|
+
// 4. A history floor (`historyFrom`) is applied in the query, so rows before it never
|
|
1110
|
+
// leave the database, and again in the assembly, which then skips the summary.
|
|
1111
|
+
const rows = await ConversationEngine.LoadWindowRowsFresh(conversationId, contextUser, provider, historyFrom);
|
|
1098
1112
|
const window = ConversationEngine.AssembleContextWindow(rows, {
|
|
1099
1113
|
maxTailMessages: maxMessages,
|
|
1100
|
-
excludeDetailIds
|
|
1114
|
+
excludeDetailIds,
|
|
1115
|
+
historyFrom
|
|
1101
1116
|
});
|
|
1102
1117
|
// Batch load input artifacts for the windowed messages. Since the backfill migration
|
|
1103
1118
|
// (V202605271400__Backfill_Attachment_Artifacts) converted all legacy
|
|
@@ -1144,19 +1159,19 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1144
1159
|
const ext = fileName.includes('.') ? fileName.split('.').pop() : undefined;
|
|
1145
1160
|
const artifactType = ArtifactMetadataEngine.Instance.GetArtifactTypeByMimeType(artifactMime, ext);
|
|
1146
1161
|
const decision = RouteArtifact({
|
|
1147
|
-
|
|
1148
|
-
|
|
1162
|
+
TypeDefault: artifactType?.DefaultDeliveryMode ?? 'ToolsOnly',
|
|
1163
|
+
ForceToolsOnly: artifactVersion.ForceToolsOnly,
|
|
1149
1164
|
mimeType: artifactMime,
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1165
|
+
SizeBytes: artifactVersion.ContentSizeBytes ?? 0,
|
|
1166
|
+
InlineSizeCap: INLINE_SIZE_CAP,
|
|
1167
|
+
ModelSupportsModality: () => true,
|
|
1168
|
+
ModelName: '<resolver>',
|
|
1169
|
+
ArtifactTypeName: artifactType?.Name ?? artifactMime,
|
|
1155
1170
|
});
|
|
1156
1171
|
if (artifactVersion.ContentMode === 'File' && artifactVersion.FileID) {
|
|
1157
1172
|
if (decision.delivery !== 'inline') {
|
|
1158
|
-
if (decision.delivery === 'tools' && decision.
|
|
1159
|
-
LogStatus(`[RunAIAgentResolver] ${decision.
|
|
1173
|
+
if (decision.delivery === 'tools' && decision.Annotation) {
|
|
1174
|
+
LogStatus(`[RunAIAgentResolver] ${decision.Annotation}`);
|
|
1160
1175
|
}
|
|
1161
1176
|
continue;
|
|
1162
1177
|
}
|
|
@@ -1175,8 +1190,8 @@ let RunAIAgentResolver = class RunAIAgentResolver extends ResolverBase {
|
|
|
1175
1190
|
// Text-mode artifact (ContentMode = 'Text'). Honor the
|
|
1176
1191
|
// routing decision the same way as for file-mode.
|
|
1177
1192
|
if (decision.delivery !== 'inline') {
|
|
1178
|
-
if (decision.delivery === 'tools' && decision.
|
|
1179
|
-
LogStatus(`[RunAIAgentResolver] ${decision.
|
|
1193
|
+
if (decision.delivery === 'tools' && decision.Annotation) {
|
|
1194
|
+
LogStatus(`[RunAIAgentResolver] ${decision.Annotation}`);
|
|
1180
1195
|
}
|
|
1181
1196
|
continue;
|
|
1182
1197
|
}
|
|
@@ -1365,8 +1380,9 @@ __decorate([
|
|
|
1365
1380
|
__param(15, Arg('fireAndForget', { nullable: true })),
|
|
1366
1381
|
__param(16, Arg('planMode', { nullable: true })),
|
|
1367
1382
|
__param(17, Arg('requestedSkillIDs', () => [String], { nullable: true })),
|
|
1383
|
+
__param(18, Arg('agentHistoryFrom', { nullable: true })),
|
|
1368
1384
|
__metadata("design:type", Function),
|
|
1369
|
-
__metadata("design:paramtypes", [String, String, Object, String, PubSubEngine, Number, String, String, String, Boolean, String, Boolean, Boolean, String, String, Boolean, Boolean, Array]),
|
|
1385
|
+
__metadata("design:paramtypes", [String, String, Object, String, PubSubEngine, Number, String, String, String, Boolean, String, Boolean, Boolean, String, String, Boolean, Boolean, Array, String]),
|
|
1370
1386
|
__metadata("design:returntype", Promise)
|
|
1371
1387
|
], RunAIAgentResolver.prototype, "RunAIAgentFromConversationDetail", null);
|
|
1372
1388
|
__decorate([
|
|
@@ -1395,6 +1411,21 @@ RunAIAgentResolver = __decorate([
|
|
|
1395
1411
|
Resolver()
|
|
1396
1412
|
], RunAIAgentResolver);
|
|
1397
1413
|
export { RunAIAgentResolver };
|
|
1414
|
+
/**
|
|
1415
|
+
* Reads the `agentHistoryFrom` argument of `RunAIAgentFromConversationDetail`: an ISO-8601
|
|
1416
|
+
* timestamp. Absent means no floor. A value that is present but not a timestamp throws — a
|
|
1417
|
+
* floor the caller asked for must fail the request, never be dropped, since dropping it lets
|
|
1418
|
+
* the run read the history it was meant to keep out.
|
|
1419
|
+
*/
|
|
1420
|
+
function parseAgentHistoryFrom(raw) {
|
|
1421
|
+
if (raw == null)
|
|
1422
|
+
return undefined;
|
|
1423
|
+
const parsed = new Date(raw);
|
|
1424
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
1425
|
+
throw new Error(`agentHistoryFrom must be an ISO-8601 timestamp; received "${raw}"`);
|
|
1426
|
+
}
|
|
1427
|
+
return parsed;
|
|
1428
|
+
}
|
|
1398
1429
|
function parseTaskGraphDebug(raw) {
|
|
1399
1430
|
if (!raw)
|
|
1400
1431
|
return undefined;
|