@memberjunction/server 6.2.0-edge.2 → 6.2.0-edge.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/BridgeHostInstance.d.ts +25 -0
- package/dist/agentSessions/BridgeHostInstance.d.ts.map +1 -0
- package/dist/agentSessions/BridgeHostInstance.js +30 -0
- package/dist/agentSessions/BridgeHostInstance.js.map +1 -0
- package/dist/agentSessions/HostInstance.d.ts +75 -11
- package/dist/agentSessions/HostInstance.d.ts.map +1 -1
- package/dist/agentSessions/HostInstance.js +99 -28
- package/dist/agentSessions/HostInstance.js.map +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.js +7 -3
- package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
- package/dist/agentSessions/SessionJanitor.d.ts +173 -25
- package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
- package/dist/agentSessions/SessionJanitor.js +452 -54
- package/dist/agentSessions/SessionJanitor.js.map +1 -1
- package/dist/agentSessions/SessionManager.d.ts +43 -2
- package/dist/agentSessions/SessionManager.d.ts.map +1 -1
- package/dist/agentSessions/SessionManager.js +99 -8
- package/dist/agentSessions/SessionManager.js.map +1 -1
- package/dist/agentSessions/SessionRunIDVerifier.d.ts +63 -0
- package/dist/agentSessions/SessionRunIDVerifier.d.ts.map +1 -0
- package/dist/agentSessions/SessionRunIDVerifier.js +129 -0
- package/dist/agentSessions/SessionRunIDVerifier.js.map +1 -0
- package/dist/agentSessions/index.d.ts +2 -0
- package/dist/agentSessions/index.d.ts.map +1 -1
- package/dist/agentSessions/index.js +10 -3
- package/dist/agentSessions/index.js.map +1 -1
- package/dist/auth/actionAuthorization.d.ts +40 -0
- package/dist/auth/actionAuthorization.d.ts.map +1 -0
- package/dist/auth/actionAuthorization.js +94 -0
- package/dist/auth/actionAuthorization.js.map +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +6 -3
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/newUsers.d.ts +10 -0
- package/dist/auth/newUsers.d.ts.map +1 -1
- package/dist/auth/newUsers.js +80 -11
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/config.d.ts +4567 -71
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +246 -3
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +8 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +25 -34
- package/dist/context.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj.d.ts +1073 -10
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +9188 -3649
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.js +3 -3
- package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +62 -6
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +179 -35
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +4 -0
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +37 -1
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +214 -159
- package/dist/index.js.map +1 -1
- package/dist/isolatedProvider.d.ts +20 -0
- package/dist/isolatedProvider.d.ts.map +1 -0
- package/dist/isolatedProvider.js +22 -0
- package/dist/isolatedProvider.js.map +1 -0
- package/dist/postgresqlCompat.d.ts +8 -0
- package/dist/postgresqlCompat.d.ts.map +1 -0
- package/dist/postgresqlCompat.js +19 -0
- package/dist/postgresqlCompat.js.map +1 -0
- package/dist/postgresqlPoolSettings.d.ts +108 -0
- package/dist/postgresqlPoolSettings.d.ts.map +1 -0
- package/dist/postgresqlPoolSettings.js +134 -0
- package/dist/postgresqlPoolSettings.js.map +1 -0
- package/dist/realtimeProxy/RealtimeProxyServer.d.ts +44 -4
- package/dist/realtimeProxy/RealtimeProxyServer.d.ts.map +1 -1
- package/dist/realtimeProxy/RealtimeProxyServer.js +121 -16
- package/dist/realtimeProxy/RealtimeProxyServer.js.map +1 -1
- package/dist/realtimeProxy/RealtimeRelayTunnel.d.ts +171 -0
- package/dist/realtimeProxy/RealtimeRelayTunnel.d.ts.map +1 -0
- package/dist/realtimeProxy/RealtimeRelayTunnel.js +532 -0
- package/dist/realtimeProxy/RealtimeRelayTunnel.js.map +1 -0
- package/dist/realtimeSessions/RealtimeSessionEventService.d.ts +148 -0
- package/dist/realtimeSessions/RealtimeSessionEventService.d.ts.map +1 -0
- package/dist/realtimeSessions/RealtimeSessionEventService.js +191 -0
- package/dist/realtimeSessions/RealtimeSessionEventService.js.map +1 -0
- package/dist/realtimeSessions/RealtimeSessionVerificationService.d.ts +66 -0
- package/dist/realtimeSessions/RealtimeSessionVerificationService.d.ts.map +1 -0
- package/dist/realtimeSessions/RealtimeSessionVerificationService.js +138 -0
- package/dist/realtimeSessions/RealtimeSessionVerificationService.js.map +1 -0
- package/dist/realtimeSessions/RealtimeVerifyRouter.d.ts +38 -0
- package/dist/realtimeSessions/RealtimeVerifyRouter.d.ts.map +1 -0
- package/dist/realtimeSessions/RealtimeVerifyRouter.js +98 -0
- package/dist/realtimeSessions/RealtimeVerifyRouter.js.map +1 -0
- package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts +61 -0
- package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts.map +1 -0
- package/dist/realtimeSessions/SessionVerificationPortsBase.js +149 -0
- package/dist/realtimeSessions/SessionVerificationPortsBase.js.map +1 -0
- package/dist/realtimeSessions/SlidingWindowRateLimiter.d.ts +57 -0
- package/dist/realtimeSessions/SlidingWindowRateLimiter.d.ts.map +1 -0
- package/dist/realtimeSessions/SlidingWindowRateLimiter.js +69 -0
- package/dist/realtimeSessions/SlidingWindowRateLimiter.js.map +1 -0
- package/dist/realtimeSessions/index.d.ts +17 -0
- package/dist/realtimeSessions/index.d.ts.map +1 -0
- package/dist/realtimeSessions/index.js +17 -0
- package/dist/realtimeSessions/index.js.map +1 -0
- package/dist/realtimeSessions/sessionAccess.d.ts +86 -0
- package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -0
- package/dist/realtimeSessions/sessionAccess.js +90 -0
- package/dist/realtimeSessions/sessionAccess.js.map +1 -0
- package/dist/realtimeSessions/sessionConfigStamps.d.ts +70 -0
- package/dist/realtimeSessions/sessionConfigStamps.d.ts.map +1 -0
- package/dist/realtimeSessions/sessionConfigStamps.js +93 -0
- package/dist/realtimeSessions/sessionConfigStamps.js.map +1 -0
- package/dist/realtimeSessions/subscriptionAuthorization.d.ts +65 -0
- package/dist/realtimeSessions/subscriptionAuthorization.d.ts.map +1 -0
- package/dist/realtimeSessions/subscriptionAuthorization.js +71 -0
- package/dist/realtimeSessions/subscriptionAuthorization.js.map +1 -0
- package/dist/realtimeSessions/verificationCore.d.ts +243 -0
- package/dist/realtimeSessions/verificationCore.d.ts.map +1 -0
- package/dist/realtimeSessions/verificationCore.js +356 -0
- package/dist/realtimeSessions/verificationCore.js.map +1 -0
- package/dist/realtimeSessions/verificationPages.d.ts +66 -0
- package/dist/realtimeSessions/verificationPages.d.ts.map +1 -0
- package/dist/realtimeSessions/verificationPages.js +110 -0
- package/dist/realtimeSessions/verificationPages.js.map +1 -0
- package/dist/realtimeSessions/verificationPolicy.d.ts +147 -0
- package/dist/realtimeSessions/verificationPolicy.d.ts.map +1 -0
- package/dist/realtimeSessions/verificationPolicy.js +249 -0
- package/dist/realtimeSessions/verificationPolicy.js.map +1 -0
- package/dist/realtimeSessions/verificationWorkflow.d.ts +263 -0
- package/dist/realtimeSessions/verificationWorkflow.d.ts.map +1 -0
- package/dist/realtimeSessions/verificationWorkflow.js +435 -0
- package/dist/realtimeSessions/verificationWorkflow.js.map +1 -0
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +20 -2
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +31 -2
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts +31 -5
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +75 -14
- package/dist/resolvers/ActionResolver.js.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.d.ts +35 -17
- package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +92 -166
- package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
- package/dist/resolvers/CacheStatsResolver.d.ts +27 -0
- package/dist/resolvers/CacheStatsResolver.d.ts.map +1 -1
- package/dist/resolvers/CacheStatsResolver.js +113 -2
- package/dist/resolvers/CacheStatsResolver.js.map +1 -1
- package/dist/resolvers/ClientToolRequestResolver.d.ts +4 -2
- package/dist/resolvers/ClientToolRequestResolver.d.ts.map +1 -1
- package/dist/resolvers/ClientToolRequestResolver.js +28 -10
- package/dist/resolvers/ClientToolRequestResolver.js.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.d.ts +7 -23
- package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.js +9 -47
- package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts +12 -1
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
- package/dist/resolvers/FetchEntityVectorsResolver.js +83 -2
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +9 -0
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/HumanHandoffResolver.d.ts +107 -0
- package/dist/resolvers/HumanHandoffResolver.d.ts.map +1 -0
- package/dist/resolvers/HumanHandoffResolver.js +330 -0
- package/dist/resolvers/HumanHandoffResolver.js.map +1 -0
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +9 -4
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/MeetingResolver.d.ts +69 -0
- package/dist/resolvers/MeetingResolver.d.ts.map +1 -0
- package/dist/resolvers/MeetingResolver.js +381 -0
- package/dist/resolvers/MeetingResolver.js.map +1 -0
- package/dist/resolvers/RealtimeBridgeResolver.d.ts +88 -3
- package/dist/resolvers/RealtimeBridgeResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +352 -12
- package/dist/resolvers/RealtimeBridgeResolver.js.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +156 -108
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +395 -293
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/RealtimeSessionEventsResolver.d.ts +61 -0
- package/dist/resolvers/RealtimeSessionEventsResolver.d.ts.map +1 -0
- package/dist/resolvers/RealtimeSessionEventsResolver.js +130 -0
- package/dist/resolvers/RealtimeSessionEventsResolver.js.map +1 -0
- package/dist/resolvers/RealtimeSessionVerificationResolver.d.ts +85 -0
- package/dist/resolvers/RealtimeSessionVerificationResolver.d.ts.map +1 -0
- package/dist/resolvers/RealtimeSessionVerificationResolver.js +188 -0
- package/dist/resolvers/RealtimeSessionVerificationResolver.js.map +1 -0
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts +2 -0
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.js +5 -1
- package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts +10 -0
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +68 -11
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTemplateResolver.js +12 -11
- package/dist/resolvers/RunTemplateResolver.js.map +1 -1
- package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncDataResolver.js +6 -2
- package/dist/resolvers/SyncDataResolver.js.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.d.ts +2 -0
- package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.js +23 -6
- package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
- package/dist/resolvers/UserAvatarResolver.d.ts +16 -0
- package/dist/resolvers/UserAvatarResolver.d.ts.map +1 -0
- package/dist/resolvers/UserAvatarResolver.js +124 -0
- package/dist/resolvers/UserAvatarResolver.js.map +1 -0
- package/dist/resolvers/UserResolver.d.ts.map +1 -1
- package/dist/resolvers/UserResolver.js +2 -17
- package/dist/resolvers/UserResolver.js.map +1 -1
- package/dist/resolvers/adhocTimeout.d.ts +7 -0
- package/dist/resolvers/adhocTimeout.d.ts.map +1 -0
- package/dist/resolvers/adhocTimeout.js +12 -0
- package/dist/resolvers/adhocTimeout.js.map +1 -0
- package/dist/resolvers/agentVisionConsentAudit.d.ts +37 -0
- package/dist/resolvers/agentVisionConsentAudit.d.ts.map +1 -0
- package/dist/resolvers/agentVisionConsentAudit.js +63 -0
- package/dist/resolvers/agentVisionConsentAudit.js.map +1 -0
- package/dist/resolvers/avatarInputValidation.d.ts +40 -0
- package/dist/resolvers/avatarInputValidation.d.ts.map +1 -0
- package/dist/resolvers/avatarInputValidation.js +97 -0
- package/dist/resolvers/avatarInputValidation.js.map +1 -0
- package/dist/resolvers/currentUserRoles.d.ts +29 -0
- package/dist/resolvers/currentUserRoles.d.ts.map +1 -1
- package/dist/resolvers/currentUserRoles.js +30 -0
- package/dist/resolvers/currentUserRoles.js.map +1 -1
- package/dist/resolvers/meetings/index.d.ts +5 -0
- package/dist/resolvers/meetings/index.d.ts.map +1 -0
- package/dist/resolvers/meetings/index.js +5 -0
- package/dist/resolvers/meetings/index.js.map +1 -0
- package/dist/resolvers/meetings/meetingHelpers.d.ts +17 -0
- package/dist/resolvers/meetings/meetingHelpers.d.ts.map +1 -0
- package/dist/resolvers/meetings/meetingHelpers.js +212 -0
- package/dist/resolvers/meetings/meetingHelpers.js.map +1 -0
- package/dist/resolvers/meetings/meetingMutations.d.ts +18 -0
- package/dist/resolvers/meetings/meetingMutations.d.ts.map +1 -0
- package/dist/resolvers/meetings/meetingMutations.js +439 -0
- package/dist/resolvers/meetings/meetingMutations.js.map +1 -0
- package/dist/resolvers/meetings/meetingQueries.d.ts +7 -0
- package/dist/resolvers/meetings/meetingQueries.d.ts.map +1 -0
- package/dist/resolvers/meetings/meetingQueries.js +113 -0
- package/dist/resolvers/meetings/meetingQueries.js.map +1 -0
- package/dist/resolvers/meetings/meetingTypes.d.ts +89 -0
- package/dist/resolvers/meetings/meetingTypes.d.ts.map +1 -0
- package/dist/resolvers/meetings/meetingTypes.js +345 -0
- package/dist/resolvers/meetings/meetingTypes.js.map +1 -0
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +8 -5
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +8 -0
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +27 -1
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.d.ts +4 -3
- package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.js +13 -7
- package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
- package/dist/services/WorkQueueHostService.d.ts +36 -0
- package/dist/services/WorkQueueHostService.d.ts.map +1 -0
- package/dist/services/WorkQueueHostService.js +97 -0
- package/dist/services/WorkQueueHostService.js.map +1 -0
- package/dist/services/workQueueConfig.d.ts +103 -0
- package/dist/services/workQueueConfig.d.ts.map +1 -0
- package/dist/services/workQueueConfig.js +48 -0
- package/dist/services/workQueueConfig.js.map +1 -0
- package/dist/sharedCache.d.ts +105 -0
- package/dist/sharedCache.d.ts.map +1 -0
- package/dist/sharedCache.js +276 -0
- package/dist/sharedCache.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +97 -94
- package/src/__tests__/ActionResolver.authorization.test.ts +353 -0
- package/src/__tests__/AdhocQueryResolver.bugs.test.ts +14 -35
- package/src/__tests__/AdhocQueryResolver.pagination.test.ts +6 -2
- package/src/__tests__/AdhocQueryResolver.scopeGuard.test.ts +3 -3
- package/src/__tests__/AdhocQueryResolver.sqlAuthorizer.test.ts +104 -0
- package/src/__tests__/BridgeHostInstance.test.ts +232 -0
- package/src/__tests__/ClientToolRequestResolver.test.ts +116 -0
- package/src/__tests__/EntityRecordNameResolver.fieldSecurity.test.ts +27 -72
- package/src/__tests__/FetchEntityVectorsResolver.test.ts +285 -0
- package/src/__tests__/HostInstance.test.ts +84 -0
- package/src/__tests__/HumanHandoffResolver.test.ts +250 -0
- package/src/__tests__/MeetingResolver.test.ts +448 -0
- package/src/__tests__/RealtimeBridgeResolver.test.ts +651 -4
- package/src/__tests__/RealtimeClientSessionResolver.configTamper.test.ts +383 -0
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +682 -58
- package/src/__tests__/RealtimeProxyServer.test.ts +16 -1
- package/src/__tests__/RealtimeRelay.test.ts +876 -0
- package/src/__tests__/RemoteBrowserActionResolver.goalRunLink.test.ts +129 -0
- package/src/__tests__/ResolverBase.adhocReadScope.test.ts +96 -0
- package/src/__tests__/ResolverBase.aggregateScreen.test.ts +174 -0
- package/src/__tests__/ResolverBase.clientOldValues.test.ts +6 -3
- package/src/__tests__/ResolverBase.filterEscaping.test.ts +21 -2
- package/src/__tests__/ResolverBase.includeBinaryFields.test.ts +291 -0
- package/src/__tests__/ReturningVisitorRecap.test.ts +115 -0
- package/src/__tests__/RunAIAgentResolver.branch.test.ts +169 -0
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +4 -4
- package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +166 -0
- package/src/__tests__/RunTemplateResolver.test.ts +132 -0
- package/src/__tests__/RunViewResolver.cacheCheckForwarding.test.ts +63 -0
- package/src/__tests__/SessionJanitor.test.ts +845 -18
- package/src/__tests__/SessionManager.test.ts +213 -17
- package/src/__tests__/SessionRunIDVerifier.test.ts +251 -0
- package/src/__tests__/SyncRolesUsersResolver.userRoles.test.ts +97 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +41 -0
- package/src/__tests__/TaskGraphContinuationDeliverer.test.ts +50 -3
- package/src/__tests__/UserAvatarResolver.test.ts +255 -0
- package/src/__tests__/UserResolver.currentUser.test.ts +16 -1
- package/src/__tests__/WorkQueueHostService.test.ts +133 -0
- package/src/__tests__/actionAuthorization.test.ts +130 -0
- package/src/__tests__/adhocTimeoutClamp.test.ts +26 -0
- package/src/__tests__/agentVisionConsentAudit.test.ts +118 -0
- package/src/__tests__/avatarInputValidation.test.ts +160 -0
- package/src/__tests__/isolatedProviderTransactions.test.ts +169 -0
- package/src/__tests__/magicLinkService.consume.test.ts +6 -0
- package/src/__tests__/magicLinkService.provisionLog.test.ts +5 -0
- package/src/__tests__/newUsers.template.test.ts +151 -0
- package/src/__tests__/newUsers.test.ts +74 -5
- package/src/__tests__/orphanedConversationDetailReconciler.test.ts +17 -2
- package/src/__tests__/postgresqlPoolSettings.test.ts +131 -0
- package/src/__tests__/realtimeSessions/RealtimeSessionEventService.test.ts +201 -0
- package/src/__tests__/realtimeSessions/RealtimeSessionEventsResolver.test.ts +215 -0
- package/src/__tests__/realtimeSessions/RealtimeSessionVerificationResolver.test.ts +102 -0
- package/src/__tests__/realtimeSessions/RealtimeSessionVerificationService.test.ts +349 -0
- package/src/__tests__/realtimeSessions/RealtimeVerifyRouter.test.ts +131 -0
- package/src/__tests__/realtimeSessions/SlidingWindowRateLimiter.test.ts +56 -0
- package/src/__tests__/realtimeSessions/helpers.ts +4 -0
- package/src/__tests__/realtimeSessions/sessionAccess.test.ts +129 -0
- package/src/__tests__/realtimeSessions/sessionConfigStamps.test.ts +124 -0
- package/src/__tests__/realtimeSessions/verificationCore.test.ts +355 -0
- package/src/__tests__/realtimeSessions/verificationPages.test.ts +84 -0
- package/src/__tests__/realtimeSessions/verificationPolicy.test.ts +226 -0
- package/src/__tests__/realtimeSessions/verificationWorkflow.test.ts +633 -0
- package/src/__tests__/resolverBase.fls.test.ts +87 -4
- package/src/__tests__/serverExtensionReservedRoots.test.ts +2 -0
- package/src/__tests__/sharedCache.test.ts +310 -0
- package/src/__tests__/translateBracketsToPG.test.ts +20 -0
- package/src/__tests__/widgetGuestElevation.test.ts +44 -0
- package/src/agentSessions/BridgeHostInstance.ts +32 -0
- package/src/agentSessions/HostInstance.ts +124 -28
- package/src/agentSessions/ReturningVisitorRecap.ts +7 -3
- package/src/agentSessions/SessionJanitor.ts +543 -57
- package/src/agentSessions/SessionManager.ts +125 -25
- package/src/agentSessions/SessionRunIDVerifier.ts +171 -0
- package/src/agentSessions/index.ts +10 -3
- package/src/auth/actionAuthorization.ts +116 -0
- package/src/auth/index.ts +3 -8
- package/src/auth/magicLink/MagicLinkService.ts +6 -3
- package/src/auth/newUsers.ts +99 -11
- package/src/config.ts +255 -3
- package/src/context.ts +26 -34
- package/src/generated/graphql-schemas/__mj.ts +22701 -18838
- package/src/generic/OrphanedConversationDetailReconciler.ts +3 -3
- package/src/generic/ResolverBase.ts +210 -36
- package/src/generic/RunViewResolver.ts +37 -2
- package/src/index.ts +236 -170
- package/src/isolatedProvider.ts +22 -0
- package/src/postgresqlCompat.ts +21 -0
- package/src/postgresqlPoolSettings.ts +213 -0
- package/src/realtimeProxy/RealtimeProxyServer.ts +148 -16
- package/src/realtimeProxy/RealtimeRelayTunnel.ts +645 -0
- package/src/realtimeSessions/README.md +179 -0
- package/src/realtimeSessions/RealtimeSessionEventService.ts +274 -0
- package/src/realtimeSessions/RealtimeSessionVerificationService.ts +167 -0
- package/src/realtimeSessions/RealtimeVerifyRouter.ts +108 -0
- package/src/realtimeSessions/SessionVerificationPortsBase.ts +189 -0
- package/src/realtimeSessions/SlidingWindowRateLimiter.ts +92 -0
- package/src/realtimeSessions/index.ts +16 -0
- package/src/realtimeSessions/sessionAccess.ts +141 -0
- package/src/realtimeSessions/sessionConfigStamps.ts +123 -0
- package/src/realtimeSessions/subscriptionAuthorization.ts +116 -0
- package/src/realtimeSessions/verificationCore.ts +502 -0
- package/src/realtimeSessions/verificationPages.ts +149 -0
- package/src/realtimeSessions/verificationPolicy.ts +321 -0
- package/src/realtimeSessions/verificationWorkflow.ts +702 -0
- package/src/realtimeWidget/widgetGuestElevation.ts +34 -2
- package/src/resolvers/ActionResolver.ts +84 -21
- package/src/resolvers/AdhocQueryResolver.ts +105 -187
- package/src/resolvers/CacheStatsResolver.ts +89 -2
- package/src/resolvers/ClientToolRequestResolver.ts +25 -7
- package/src/resolvers/EntityRecordNameResolver.ts +9 -51
- package/src/resolvers/FetchEntityVectorsResolver.ts +97 -2
- package/src/resolvers/GetDataResolver.ts +10 -0
- package/src/resolvers/HumanHandoffResolver.ts +312 -0
- package/src/resolvers/MCPResolver.ts +8 -5
- package/src/resolvers/MeetingResolver.ts +438 -0
- package/src/resolvers/RealtimeBridgeResolver.ts +385 -19
- package/src/resolvers/RealtimeClientSessionResolver.ts +503 -344
- package/src/resolvers/RealtimeSessionEventsResolver.ts +133 -0
- package/src/resolvers/RealtimeSessionVerificationResolver.ts +174 -0
- package/src/resolvers/RemoteBrowserActionResolver.ts +11 -1
- package/src/resolvers/RunAIAgentResolver.ts +78 -11
- package/src/resolvers/RunTemplateResolver.ts +13 -12
- package/src/resolvers/SyncDataResolver.ts +6 -2
- package/src/resolvers/SyncRolesUsersResolver.ts +24 -6
- package/src/resolvers/UserAvatarResolver.ts +111 -0
- package/src/resolvers/UserResolver.ts +2 -16
- package/src/resolvers/adhocTimeout.ts +12 -0
- package/src/resolvers/agentVisionConsentAudit.ts +82 -0
- package/src/resolvers/avatarInputValidation.ts +123 -0
- package/src/resolvers/currentUserRoles.ts +32 -1
- package/src/resolvers/meetings/index.ts +4 -0
- package/src/resolvers/meetings/meetingHelpers.ts +307 -0
- package/src/resolvers/meetings/meetingMutations.ts +556 -0
- package/src/resolvers/meetings/meetingQueries.ts +172 -0
- package/src/resolvers/meetings/meetingTypes.ts +238 -0
- package/src/rest/ViewOperationsHandler.ts +8 -5
- package/src/services/TaskGraphActionRunner.ts +29 -1
- package/src/services/TaskGraphContinuationDeliverer.ts +13 -7
- package/src/services/WorkQueueHostService.ts +129 -0
- package/src/services/workQueueConfig.ts +52 -0
- package/src/sharedCache.ts +302 -0
- package/src/types.ts +12 -0
- package/dist/resolvers/adhoc-query-helpers.d.ts +0 -33
- package/dist/resolvers/adhoc-query-helpers.d.ts.map +0 -1
- package/dist/resolvers/adhoc-query-helpers.js +0 -50
- package/dist/resolvers/adhoc-query-helpers.js.map +0 -1
- package/src/__tests__/adhoc-query-helpers.test.ts +0 -50
- package/src/resolvers/adhoc-query-helpers.ts +0 -67
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* and **executes** every tool call the browser relays back. The three mutations here cover the MVP:
|
|
12
12
|
*
|
|
13
13
|
* 1. {@link RealtimeClientSessionResolver.StartRealtimeClientSession} — authorize, create the
|
|
14
|
-
* session (storing the target agent id
|
|
15
|
-
* 2. {@link RealtimeClientSessionResolver.ExecuteRealtimeSessionTool} — execute a relayed tool call
|
|
16
|
-
*
|
|
14
|
+
* session (storing the target agent id on it), mint the ephemeral config.
|
|
15
|
+
* 2. {@link RealtimeClientSessionResolver.ExecuteRealtimeSessionTool} — execute a relayed tool call
|
|
16
|
+
* for the target agent stored on the session, re-authorized for the caller on every call.
|
|
17
17
|
* 3. {@link RealtimeClientSessionResolver.RelayRealtimeTranscript} — persist a transcript turn as a
|
|
18
18
|
* `Conversation Detail`.
|
|
19
19
|
*
|
|
@@ -21,6 +21,13 @@
|
|
|
21
21
|
* - **Start**: the caller must have `CanRun` on the *target* agent (the Realtime Co-Agent is an internal
|
|
22
22
|
* orchestration agent, so the meaningful gate is the agent doing the real work).
|
|
23
23
|
* - **Execute / Relay**: inbound ownership — the session's `UserID` must equal `contextUser.ID`.
|
|
24
|
+
* - **Session `Config`**: the owner can edit it through the generic entity API, so nothing in it is
|
|
25
|
+
* trusted. Execute re-checks `CanRun` on its target, direct actions never come from it, and its
|
|
26
|
+
* run ids are used only when {@link SessionRunIDVerifier} finds them to be records of the session.
|
|
27
|
+
* - **Scope-limited callers** (anonymous and resource-scoped magic-link sessions, including public
|
|
28
|
+
* web-widget guests): no direct actions. Their scope exists only as row-level filters, which an
|
|
29
|
+
* action can read around, and a scoped anonymous caller's relay runs as the system user. They
|
|
30
|
+
* reach the target agent only through `invoke-target-agent`.
|
|
24
31
|
*
|
|
25
32
|
* @module @memberjunction/server
|
|
26
33
|
*/
|
|
@@ -40,10 +47,24 @@ export declare class StartRealtimeClientSessionResult {
|
|
|
40
47
|
Provider: string;
|
|
41
48
|
/** The provider realtime model id the session is scoped to (e.g. `gpt-realtime`). */
|
|
42
49
|
Model: string;
|
|
43
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* The short-lived client secret the browser presents to the provider to authenticate. Empty on a relay session
|
|
52
|
+
* ({@link StartRealtimeClientSessionResult.Transport} `relay`), whose {@link StartRealtimeClientSessionResult.RelayUrl}
|
|
53
|
+
* carries the relay's ticket instead.
|
|
54
|
+
*/
|
|
44
55
|
EphemeralToken: string;
|
|
45
|
-
/** ISO-8601 timestamp at which {@link StartRealtimeClientSessionResult.EphemeralToken} expires. */
|
|
56
|
+
/** ISO-8601 timestamp at which {@link StartRealtimeClientSessionResult.EphemeralToken} (or a relay session's ticket) expires. */
|
|
46
57
|
ExpiresAt: string;
|
|
58
|
+
/**
|
|
59
|
+
* How the browser reaches the provider: `direct` (with the ephemeral token) or `relay` (through MJAPI's realtime
|
|
60
|
+
* relay at {@link StartRealtimeClientSessionResult.RelayUrl}). Null means direct.
|
|
61
|
+
*/
|
|
62
|
+
Transport?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Where a relay session's browser connects (MJAPI's realtime relay). Null on a direct session. The URL carries the
|
|
65
|
+
* session's ticket, so it is a credential and is never logged.
|
|
66
|
+
*/
|
|
67
|
+
RelayUrl?: string;
|
|
47
68
|
/** JSON string of the provider-native session config the browser applies verbatim. */
|
|
48
69
|
SessionConfigJson: string;
|
|
49
70
|
/** Display name of the realtime model the session uses (e.g. `GPT Realtime 2`). Null when unknown. */
|
|
@@ -87,6 +108,21 @@ export declare class StartRealtimeClientSessionResult {
|
|
|
87
108
|
* when the prepare service did not resolve a config (back-compat).
|
|
88
109
|
*/
|
|
89
110
|
EffectiveConfigJson?: string;
|
|
111
|
+
/**
|
|
112
|
+
* JSON of the server's resolved channel policy for this session (`RealtimeSessionClientPolicy`):
|
|
113
|
+
* which of the channel candidates the browser reported are in the session (registry kill switch,
|
|
114
|
+
* agent and app `channels` configuration applied), with each one's resolved display and config,
|
|
115
|
+
* plus the app/static client-tool tiers. Null when the caller reported no channel candidates (a
|
|
116
|
+
* client that predates channel scoping) — the browser then resolves the scope locally.
|
|
117
|
+
*/
|
|
118
|
+
ClientPolicyJson?: string;
|
|
119
|
+
/**
|
|
120
|
+
* JSON of the session's live-avatar status (`RealtimeAvatarStatus` from `@memberjunction/ai`): whether the voiced
|
|
121
|
+
* agent asked for an avatar, whether the model renders it, and why not. The browser reads it after connecting and
|
|
122
|
+
* tells the user once when the call is audio only. Null when the agent asked for no avatar (its video setting is
|
|
123
|
+
* off).
|
|
124
|
+
*/
|
|
125
|
+
AvatarStatusJson?: string;
|
|
90
126
|
}
|
|
91
127
|
/**
|
|
92
128
|
* Result of {@link RealtimeClientSessionResolver.SaveSessionChannelArtifact} — a structured
|
|
@@ -148,6 +184,7 @@ export declare class UploadRealtimeRecordingResult {
|
|
|
148
184
|
export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
149
185
|
private readonly clientSessionService;
|
|
150
186
|
private readonly sessionManager;
|
|
187
|
+
private readonly runIDVerifier;
|
|
151
188
|
/**
|
|
152
189
|
* The reason a `Save()`/`Delete()` returned false, for a log line. `CompleteMessage` renders
|
|
153
190
|
* `Message`, `Error` and every `Errors[]` entry (validation errors included, since `Save()`
|
|
@@ -168,9 +205,9 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
168
205
|
* session is created.
|
|
169
206
|
* 2. Resolve the co-agent id via the metadata-driven resolution chain (runtime `coAgentId` →
|
|
170
207
|
* agent's `DefaultCoAgentID` → type-level `AIAgentCoAgent` default row → global Realtime Co-Agent) —
|
|
171
|
-
* see {@link
|
|
208
|
+
* see {@link ResolveRealtimeCoAgentID} for the full contract.
|
|
172
209
|
* 3. Create the durable `AIAgentSession` (run by the co-agent), storing `targetAgentID` in its
|
|
173
|
-
* config
|
|
210
|
+
* config — the target later relays use, re-authorized for the caller on each relay.
|
|
174
211
|
* 4. Mint the {@link import('@memberjunction/ai').ClientRealtimeSessionConfig} via the service.
|
|
175
212
|
* On failure the just-created session is closed so no half-open session leaks.
|
|
176
213
|
*
|
|
@@ -196,16 +233,42 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
196
233
|
* `TypeConfiguration` ← this). **Authorization-gated**: requires the
|
|
197
234
|
* `Realtime: Advanced Session Controls` authorization — unauthorized callers receive a
|
|
198
235
|
* structured rejection (never a silent ignore). Must be a JSON object.
|
|
236
|
+
* @param showsAgentVideo `false` from an app that shows no agent video (no channel of it shows it: the embeddable
|
|
237
|
+
* widgets, the mobile app): the session asks the model for no avatar, and `AvatarStatusJson` says `host`. Absent or
|
|
238
|
+
* `true`: the app may show it. It only ever turns video off, so it needs no authorization.
|
|
239
|
+
* @param conversationBranchId Optional fork (`MJ: Conversation Branches.ID`) the session starts on;
|
|
240
|
+
* omitted is Main. It must be a fork of `conversationId`, else the start fails and no session is
|
|
241
|
+
* created. The session's history is read from that fork's path and its transcript is written there.
|
|
199
242
|
*
|
|
200
243
|
* @returns The ephemeral config + session linkage the browser needs to open its socket.
|
|
201
244
|
*/
|
|
202
|
-
StartRealtimeClientSession(targetAgentId: string | undefined, { userPayload, providers }: AppContext, conversationId?: string, lastSessionId?: string, preferredModelId?: string, clientToolsJson?: string, coAgentId?: string, configOverridesJson?: string, recordingStartedAt?: string, recordingConsent?: boolean, mediaCollectionId?: string, applicationId?: string, appContextJson?: string): Promise<StartRealtimeClientSessionResult>;
|
|
245
|
+
StartRealtimeClientSession(targetAgentId: string | undefined, { userPayload, providers }: AppContext, conversationId?: string, lastSessionId?: string, preferredModelId?: string, clientToolsJson?: string, coAgentId?: string, configOverridesJson?: string, recordingStartedAt?: string, recordingConsent?: boolean, mediaCollectionId?: string, applicationId?: string, appContextJson?: string, channelCandidatesJson?: string, showsAgentVideo?: boolean, conversationBranchId?: string): Promise<StartRealtimeClientSessionResult>;
|
|
246
|
+
/**
|
|
247
|
+
* The fork a session starts on: null (Main) when none is named; else the named fork, which must
|
|
248
|
+
* belong to the session's conversation. Returns the fork's stored id.
|
|
249
|
+
* @throws when a fork is named without a conversation, or is not a fork of it, or the fork rows cannot be read
|
|
250
|
+
*/
|
|
251
|
+
private resolveSessionBranch;
|
|
252
|
+
/**
|
|
253
|
+
* Stamps the identity-verification policy snapshot, the configured unverified duration cap and any
|
|
254
|
+
* verified identity inherited from the resumed session onto the new session's `Config`.
|
|
255
|
+
*
|
|
256
|
+
* The effective config (config cascade) is only known after prepare, so this is a second, narrowly
|
|
257
|
+
* scoped write: it runs only when there is something to stamp. It **fails closed** — a cap that could
|
|
258
|
+
* not be applied would leave the session uncapped, so on a save failure the session is closed and the
|
|
259
|
+
* start fails rather than proceeding without its limits.
|
|
260
|
+
*/
|
|
261
|
+
private stampVerificationPolicy;
|
|
262
|
+
/** The `realtime` section of the resolved effective config JSON, or undefined when absent/unparseable. */
|
|
263
|
+
private readEffectiveRealtime;
|
|
203
264
|
/**
|
|
204
265
|
* Execute a single tool call the browser relayed from its provider socket and return the
|
|
205
266
|
* serialized result for the browser to relay back to the model.
|
|
206
267
|
*
|
|
207
|
-
* Ownership-gated
|
|
208
|
-
*
|
|
268
|
+
* Ownership-gated. The target agent id is read from the session config and `CanRun` on it is
|
|
269
|
+
* checked for the caller on every call, because the owner can edit the config. A direct-action
|
|
270
|
+
* call from a scope-limited caller is refused before any elevation. Heartbeats the session on
|
|
271
|
+
* success.
|
|
209
272
|
*
|
|
210
273
|
* @returns The serialized tool result JSON.
|
|
211
274
|
*/
|
|
@@ -218,6 +281,12 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
218
281
|
* narrate — distinct from a normal `RunAIAgentResolver` agent-run stream by `resolver`/`type`.
|
|
219
282
|
*/
|
|
220
283
|
private buildDelegationProgressCallback;
|
|
284
|
+
/**
|
|
285
|
+
* The tool result for a direct-action call from a scope-limited caller (see the authorization
|
|
286
|
+
* model above). It has the broker's result shape, so the model hears that the tool is not
|
|
287
|
+
* available and can ask the target agent through `invoke-target-agent` instead.
|
|
288
|
+
*/
|
|
289
|
+
private refuseDirectAction;
|
|
221
290
|
/**
|
|
222
291
|
* Rolls the session's `pendingFeedbackRunID` forward after a relayed tool call. The id we just
|
|
223
292
|
* consumed (resumed or none) is dropped; a new paused run id is stored only when the run paused
|
|
@@ -272,11 +341,14 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
272
341
|
UploadRealtimeRecording(agentSessionId: string, audioBase64: string, mimeType: string, ctx: AppContext, durationMs?: number, consent?: boolean, peaks?: number[]): Promise<UploadRealtimeRecordingResult>;
|
|
273
342
|
/**
|
|
274
343
|
* Uploads ONE crash-recovery audio shard (~15s) for an IN-PROGRESS recording into the session's
|
|
275
|
-
* folder (`realtime-recordings/<sessionId>/seg-NNNN
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
*
|
|
344
|
+
* folder (`realtime-recordings/<sessionId>/seg-NNNN.r<rate>.pcm` for PCM with a rate in its MIME type,
|
|
345
|
+
* else the legacy `seg-NNNN.<ext>`) as a raw storage object. Durability insurance during a live call
|
|
346
|
+
* so a browser/tab death loses at most the last window; the shards are deleted once the canonical
|
|
347
|
+
* consolidated file lands via {@link UploadRealtimeRecording}, or by the session janitor once it has
|
|
348
|
+
* recovered a recording from them when that upload never arrives. Ownership-
|
|
349
|
+
* gated; consent was already established at session start. Refused (`false`) once the session has
|
|
350
|
+
* its consolidated recording, since nothing would delete a shard written after that. Best-effort —
|
|
351
|
+
* returns `false` (never throws) on any problem so a failed shard never disrupts the live call.
|
|
280
352
|
*
|
|
281
353
|
* @param agentSessionId The in-progress session (ownership-gated).
|
|
282
354
|
* @param segmentIndex 0-based shard index within the session.
|
|
@@ -336,13 +408,26 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
336
408
|
* (observability creation was skipped), a failed load, or a failed save all log and return
|
|
337
409
|
* `false` — usage relay must never break a live call.
|
|
338
410
|
*
|
|
411
|
+
* The optional details are the per-modality usage since the last relay: input and output
|
|
412
|
+
* blocks shaped like Core's `RealtimeUsageModalityDetail`, avatar video seconds included. They
|
|
413
|
+
* add into the usage record on the run's `ModelSpecificResponseDetails`, which prices the avatar
|
|
414
|
+
* video at finalize. Only the fields a block defines, with values that are finite numbers of at
|
|
415
|
+
* least 0, are kept; a relay that carries only details (avatar seconds, no tokens) is stored.
|
|
416
|
+
*
|
|
339
417
|
* @param inputTokens Input-token DELTA to add (negative/non-finite values are clamped to 0).
|
|
340
418
|
* @param outputTokens Output-token DELTA to add (negative/non-finite values are clamped to 0).
|
|
419
|
+
* @param usageDetailsJson The per-modality usage since the last relay, as JSON (`{ Input, Output }`).
|
|
341
420
|
* @returns `true` when the accumulated usage was persisted; `false` on any tolerated failure.
|
|
342
421
|
*/
|
|
343
|
-
RelayRealtimeUsage(agentSessionId: string, inputTokens: number, outputTokens: number, { userPayload, providers }: AppContext): Promise<boolean>;
|
|
422
|
+
RelayRealtimeUsage(agentSessionId: string, inputTokens: number, outputTokens: number, { userPayload, providers }: AppContext, usageDetailsJson?: string): Promise<boolean>;
|
|
344
423
|
/** Clamps a relayed token delta: negative / non-finite values become 0. */
|
|
345
424
|
private clampTokenDelta;
|
|
425
|
+
/**
|
|
426
|
+
* Reads the relayed per-modality usage, or `null` when there is none worth storing: absent,
|
|
427
|
+
* malformed, longer than a relay ever needs (a client cannot make the server parse an
|
|
428
|
+
* arbitrarily large string), or holding no amount above 0.
|
|
429
|
+
*/
|
|
430
|
+
private readUsageDetails;
|
|
346
431
|
/**
|
|
347
432
|
* Sanitizes client-supplied waveform peaks before they're persisted: drops anything that isn't a
|
|
348
433
|
* finite number, clamps each to `[0, 1]`, and caps the array length so a hostile client can't bloat
|
|
@@ -351,8 +436,11 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
351
436
|
private sanitizePeaks;
|
|
352
437
|
/**
|
|
353
438
|
* Reads the co-agent `AIPromptRun` id from the session config WITHOUT the relay path's
|
|
354
|
-
* throw-on-missing-target semantics
|
|
355
|
-
*
|
|
439
|
+
* throw-on-missing-target semantics, and keeps it only when it is the prompt run of the
|
|
440
|
+
* session's co-agent run (the owner can edit the config). Usage relay is best-effort, so a
|
|
441
|
+
* missing/malformed config, an absent id, or an id of another session just logs and returns `null`.
|
|
442
|
+
*
|
|
443
|
+
* @param runUser The user the prompt-run write runs as; the check runs as the same user.
|
|
356
444
|
*/
|
|
357
445
|
private readPromptRunID;
|
|
358
446
|
/**
|
|
@@ -413,31 +501,12 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
413
501
|
/** Resolve the request user + read-write provider, throwing a clear error if unauthenticated. */
|
|
414
502
|
private requireUserAndProvider;
|
|
415
503
|
/**
|
|
416
|
-
* Authorization gate for
|
|
417
|
-
*
|
|
504
|
+
* Authorization gate for the **target** agent: the caller must be able to run it. Denial throws.
|
|
505
|
+
* {@link RealtimeClientSessionResolver.StartRealtimeClientSession} runs it before any session is
|
|
506
|
+
* created, and {@link RealtimeClientSessionResolver.ExecuteRealtimeSessionTool} runs it on every
|
|
507
|
+
* relayed call, because the owner can edit the target in the session config.
|
|
418
508
|
*/
|
|
419
509
|
private assertCanRunTarget;
|
|
420
|
-
/**
|
|
421
|
-
* Narrows a session's colleague union (`allowedAgents`) to the agents the CALLER may run.
|
|
422
|
-
*
|
|
423
|
-
* {@link assertCanRunTarget} gates the LEAD target at session start, but the union it travels
|
|
424
|
-
* with was never gated at all — a model-named colleague resolves straight to a delegated run.
|
|
425
|
-
* That was survivable while the run carried the caller's own identity, because base-agent
|
|
426
|
-
* re-checks `CanRun` against `contextUser`. Once the run user is elevated for a scoped anonymous
|
|
427
|
-
* caller (issue #3371) that check sees the SYSTEM user, so this is the only remaining place the
|
|
428
|
-
* caller's own authority is applied to a colleague. It therefore runs for EVERY caller, elevated
|
|
429
|
-
* or not — the authorization identity must never depend on the elevation decision.
|
|
430
|
-
*
|
|
431
|
-
* `HasPermission` reads AIEngineBase's in-memory caches (no DB round trip) and already fails
|
|
432
|
-
* closed on error, so an unresolvable agent drops OUT of the union rather than becoming runnable.
|
|
433
|
-
* A filtered-out colleague is not an error: the delegation layer reports it as "not available in
|
|
434
|
-
* this session" and lists what remains, which is the same answer the model gets for a typo.
|
|
435
|
-
*
|
|
436
|
-
* @param allowedAgents The session's persisted colleague union (absent/empty ⇒ single-target).
|
|
437
|
-
* @param contextUser The ORIGINAL caller — never the elevated run user.
|
|
438
|
-
* @returns The subset the caller may run, preserving order.
|
|
439
|
-
*/
|
|
440
|
-
private filterAllowedAgentsByCanRun;
|
|
441
510
|
/**
|
|
442
511
|
* Resolves the AUTHORITATIVE target agent id under the co-agent's PAIRING CONSTRAINTS
|
|
443
512
|
* (`MJ: AI Agent Co Agents`, ordered by `Sequence`):
|
|
@@ -519,67 +588,6 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
519
588
|
* privileged path, and unauthorized callers still get a fully working session without them.
|
|
520
589
|
*/
|
|
521
590
|
private userHasAdvancedSessionControls;
|
|
522
|
-
/**
|
|
523
|
-
* Resolves the co-agent (the Realtime-type agent that voices the target agent) for a new
|
|
524
|
-
* client-direct session via the metadata-driven **CO-AGENT RESOLUTION CHAIN** — first match
|
|
525
|
-
* wins, evaluated in precedence order:
|
|
526
|
-
*
|
|
527
|
-
* 1. **Runtime parameter** — the mutation's explicit `coAgentId`. A per-call override; an
|
|
528
|
-
* invalid candidate (unknown, not Active, or not of the Realtime agent type) **throws**
|
|
529
|
-
* (fail loud — the caller asked for something specific, mirroring `preferredModelId`).
|
|
530
|
-
* 2. **Per-agent persona** — the target agent's `AIAgent.DefaultCoAgentID`. An invalid
|
|
531
|
-
* reference logs a warning and **falls through** to the next step (stale metadata should
|
|
532
|
-
* degrade gracefully, never break calls).
|
|
533
|
-
* 3. **Per-type default** — an Active `AIAgentCoAgent` row of Type `'CoAgent'` whose
|
|
534
|
-
* `TargetAgentTypeID` is the target agent's type and `IsDefault = 1` (lowest `Sequence`
|
|
535
|
-
* wins a tie). Same tolerant warn-and-fall-through semantics as step 2.
|
|
536
|
-
* 4. **Global default** — the seeded {@link REALTIME_CO_AGENT_NAME} agent, looked up by name
|
|
537
|
-
* (with a deprecated fallback to {@link LEGACY_REALTIME_CO_AGENT_NAME}). Throws when absent
|
|
538
|
-
* entirely (the realtime feature is unconfigured in this deployment).
|
|
539
|
-
*
|
|
540
|
-
* Every candidate from steps 1–3 is validated by {@link findValidCoAgent}: it must exist in
|
|
541
|
-
* {@link AIEngine}'s cached agents, have Status `Active`, and be of the
|
|
542
|
-
* {@link REALTIME_AGENT_TYPE_NAME} agent type. Step 4 keeps its original name-lookup contract.
|
|
543
|
-
*
|
|
544
|
-
* @param targetAgentId The agent the co-agent will voice on behalf of (drives steps 2–3).
|
|
545
|
-
* @param explicitCoAgentId The runtime `coAgentId` mutation argument, when supplied (step 1).
|
|
546
|
-
* @returns The resolved co-agent's id (canonical casing from the metadata cache).
|
|
547
|
-
*/
|
|
548
|
-
private resolveCoAgentID;
|
|
549
|
-
/**
|
|
550
|
-
* Chain step 3 lookup: the TYPE-LEVEL default co-agent for an agent type — the Active
|
|
551
|
-
* `AIAgentCoAgent` row of Type `'CoAgent'` whose `TargetAgentTypeID` matches, with
|
|
552
|
-
* `IsDefault = 1` preferred and the lowest `Sequence` breaking ties (so a deployment can
|
|
553
|
-
* stage multiple type-level candidates deterministically). Reads {@link AIEngineBase}'s
|
|
554
|
-
* cached rows — no RunView. Tolerant: a failed cache read logs and returns `undefined`
|
|
555
|
-
* (the chain falls through to the global default).
|
|
556
|
-
*/
|
|
557
|
-
private findTypeDefaultCoAgentID;
|
|
558
|
-
/**
|
|
559
|
-
* Validates one metadata-level co-agent default (chain steps 2/3). Returns the resolved
|
|
560
|
-
* co-agent id when the reference is valid; logs a warning and returns `null` (caller falls
|
|
561
|
-
* through to the next chain step) when the reference is set but invalid — metadata drift must
|
|
562
|
-
* degrade, not break live calls. A `null`/absent reference returns `null` silently.
|
|
563
|
-
*/
|
|
564
|
-
private resolveMetadataDefault;
|
|
565
|
-
/**
|
|
566
|
-
* Validates a co-agent candidate against {@link AIEngine}'s cached metadata. A valid co-agent
|
|
567
|
-
* must (a) exist, (b) have Status `Active`, and (c) be of the {@link REALTIME_AGENT_TYPE_NAME}
|
|
568
|
-
* agent type. Returns the cached agent on success, or a human-readable `problem` on failure —
|
|
569
|
-
* the CALLER decides whether that's fatal (explicit runtime param) or tolerated (metadata default).
|
|
570
|
-
*/
|
|
571
|
-
private findValidCoAgent;
|
|
572
|
-
/**
|
|
573
|
-
* Resolves the seeded Realtime Co-Agent's id from {@link AIEngine}'s cached agents — the GLOBAL
|
|
574
|
-
* DEFAULT (step 4) of the co-agent resolution chain. The engine is already configured by
|
|
575
|
-
* {@link resolveCoAgentID}. Looks up the current {@link REALTIME_CO_AGENT_NAME} first, then
|
|
576
|
-
* falls back to the DEPRECATED {@link LEGACY_REALTIME_CO_AGENT_NAME} (pre-rename seed) with a
|
|
577
|
-
* deprecation log so un-resynced deployments keep working. Throws a clear error when neither
|
|
578
|
-
* name is present in metadata.
|
|
579
|
-
*/
|
|
580
|
-
private resolveGlobalCoAgentID;
|
|
581
|
-
/** Case/whitespace-insensitive agent lookup by Name in {@link AIEngine}'s cached agents. */
|
|
582
|
-
private findAgentByName;
|
|
583
591
|
/**
|
|
584
592
|
* Mints the client session config for a just-created session. On failure, closes the session so
|
|
585
593
|
* no half-open record leaks, then throws the service's error message.
|
|
@@ -591,15 +599,35 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
591
599
|
* resumed session remembers the previous leg(s).
|
|
592
600
|
* @param conversationMessages Optional capped history of the TEXT conversation this session is
|
|
593
601
|
* starting from (from {@link loadConversationHistory}) — framed as "Conversation so far".
|
|
602
|
+
* @param showsAgentVideo `false` when the app shows no agent video: the session asks for no avatar (`host`).
|
|
594
603
|
*/
|
|
595
604
|
private prepareClientSessionOrClose;
|
|
605
|
+
/**
|
|
606
|
+
* Drops the server-side channel plugins of channels the resolved scope left out. Server plugins
|
|
607
|
+
* start when the session row is created — before the scope is known — so an excluded channel's
|
|
608
|
+
* server half would otherwise keep running. A no-op when the caller reported no candidates.
|
|
609
|
+
*/
|
|
610
|
+
private pruneExcludedServerChannels;
|
|
596
611
|
/**
|
|
597
612
|
* Writes the co-agent observability run ids into the session's `Config_` alongside the
|
|
598
|
-
*
|
|
599
|
-
* finalize the runs (and on relay to nest delegated runs).
|
|
600
|
-
*
|
|
613
|
+
* `targetAgentID`, then saves the session. These ids are read back on close to
|
|
614
|
+
* finalize the runs (and on relay to nest delegated runs). The app awareness (application id,
|
|
615
|
+
* allowed agents, direct actions, app-context snapshot) is written with them; relays read the
|
|
616
|
+
* allowed agents and the app context, never the direct actions.
|
|
617
|
+
* Best-effort: a save failure is logged, not thrown — the voice session still proceeds, it just
|
|
618
|
+
* won't carry the run ids.
|
|
601
619
|
*/
|
|
602
620
|
private persistObservabilityRunIDs;
|
|
621
|
+
/**
|
|
622
|
+
* Returns the app-context snapshot to store on the session config. A snapshot whose JSON is longer
|
|
623
|
+
* than {@link MAX_CLIENT_TOOLS_JSON_CHARS} is not stored: a warning is logged and `undefined` is
|
|
624
|
+
* returned, so the session still starts and its delegated runs get no app context.
|
|
625
|
+
*
|
|
626
|
+
* @param appContext The snapshot the browser sent at session start, or undefined.
|
|
627
|
+
* @param sessionID The session the snapshot belongs to (for the warning).
|
|
628
|
+
* @returns The snapshot to store, or `undefined`.
|
|
629
|
+
*/
|
|
630
|
+
private appContextToStore;
|
|
603
631
|
/**
|
|
604
632
|
* Loads a session, enforcing inbound ownership (`UserID === contextUser.ID`) and that it is not
|
|
605
633
|
* `Closed`. Throws on any violation. Returns the loaded session for the caller to read from.
|
|
@@ -681,6 +709,10 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
681
709
|
* as the resumed transcript are removed, so the prompt never carries two accounts of one
|
|
682
710
|
* exchange.
|
|
683
711
|
*
|
|
712
|
+
* Only the rows on the session's path that no rerun replaced are read: the fork it started on,
|
|
713
|
+
* or Main, in `Sequence` order. When that path cannot be built — its branch rows are missing or invalid — the session
|
|
714
|
+
* starts with no history, never with every branch's rows.
|
|
715
|
+
*
|
|
684
716
|
* Strictly tolerant — no conversation, a failed read, or any throw yields `[]`, never a failed
|
|
685
717
|
* session start. The call still works; it just starts cold.
|
|
686
718
|
*
|
|
@@ -688,6 +720,7 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
688
720
|
* @param coveredSessionIDs Session ids already framed via `PriorTranscript`.
|
|
689
721
|
* @param contextUser The calling user (RunView scope — the read is row-level-secured).
|
|
690
722
|
* @param provider The request-scoped metadata provider.
|
|
723
|
+
* @param branchId The fork the session started on; null is Main.
|
|
691
724
|
* @returns The capped history, oldest first.
|
|
692
725
|
*/
|
|
693
726
|
private loadConversationHistory;
|
|
@@ -820,9 +853,24 @@ export declare class RealtimeClientSessionResolver extends ResolverBase {
|
|
|
820
853
|
/** Shape check for one client tool declaration: Name/Description non-empty strings, ParametersSchema a plain object. */
|
|
821
854
|
private isValidClientTool;
|
|
822
855
|
/**
|
|
823
|
-
*
|
|
824
|
-
*
|
|
825
|
-
*
|
|
856
|
+
* Tolerantly parses the channel candidates the browser reported at mint (the same caps and
|
|
857
|
+
* tolerance as {@link parseClientTools}: capped, never throws, anything wrong is dropped and
|
|
858
|
+
* logged). A caller that sent none yields `undefined` — an unscoped session, exactly as before.
|
|
859
|
+
*/
|
|
860
|
+
private parseChannelCandidates;
|
|
861
|
+
/**
|
|
862
|
+
* Whether a session's persisted scope allows a server-side call to name `channelName`. A session
|
|
863
|
+
* with no persisted scope (it reported no candidates) is unscoped and allows everything; a scoped
|
|
864
|
+
* one allows only the channels its policy put in the session.
|
|
865
|
+
*/
|
|
866
|
+
private isChannelInSessionScope;
|
|
867
|
+
/** The fork the session was started on (its config's `conversationBranchID`); null is Main. */
|
|
868
|
+
private sessionBranchIdOf;
|
|
869
|
+
/**
|
|
870
|
+
* Parses the session's persisted config, returning its `targetAgentID` plus any observability run
|
|
871
|
+
* ids (`coAgentRunID`/`promptRunID`). Throws when the config is missing/malformed or carries no
|
|
872
|
+
* target — a relay cannot proceed without a target. The owner can edit the config, so callers
|
|
873
|
+
* re-check what they act on.
|
|
826
874
|
*/
|
|
827
875
|
private readSessionConfig;
|
|
828
876
|
/** Like {@link readSessionConfig} but returns `undefined` instead of throwing (for best-effort reads). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeClientSessionResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/RealtimeClientSessionResolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"RealtimeClientSessionResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/RealtimeClientSessionResolver.ts"],"names":[],"mappings":"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"}
|