@memberjunction/server 6.2.0-edge.0 → 6.2.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.d.ts +2 -0
- package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.js +5 -1
- package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
- package/dist/agentSessions/SessionManager.js +2 -2
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts +8 -0
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts.map +1 -1
- package/dist/agentSessions/remoteBrowserGoalEngine.js +21 -5
- package/dist/agentSessions/remoteBrowserGoalEngine.js.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.d.ts +2 -0
- package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.js +5 -1
- package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
- package/dist/auth/index.d.ts +20 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +20 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +8 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +21 -5
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
- package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
- package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
- package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +65 -51
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/magicLink/index.d.ts +2 -2
- package/dist/auth/magicLink/index.d.ts.map +1 -1
- package/dist/auth/magicLink/index.js +2 -2
- package/dist/auth/magicLink/index.js.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
- package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.js +61 -61
- package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
- package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
- package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
- package/dist/auth/magicLink/redeemLanding.js +12 -4
- package/dist/auth/magicLink/redeemLanding.js.map +1 -1
- package/dist/auth/magicLink/types.d.ts +4 -4
- package/dist/auth/principals.d.ts +2 -0
- package/dist/auth/principals.d.ts.map +1 -1
- package/dist/auth/principals.js +6 -2
- package/dist/auth/principals.js.map +1 -1
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +3 -1
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +346 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -4
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +27 -19
- package/dist/context.js.map +1 -1
- package/dist/directives/Public.d.ts +2 -0
- package/dist/directives/Public.d.ts.map +1 -1
- package/dist/directives/Public.js +3 -1
- package/dist/directives/Public.js.map +1 -1
- package/dist/directives/RequireSystemUser.d.ts +2 -0
- package/dist/directives/RequireSystemUser.d.ts.map +1 -1
- package/dist/directives/RequireSystemUser.js +3 -1
- package/dist/directives/RequireSystemUser.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj.d.ts +1021 -0
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +7368 -2145
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +94 -4
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
- package/dist/generic/CacheInvalidationResolver.js +122 -3
- package/dist/generic/CacheInvalidationResolver.js.map +1 -1
- package/dist/generic/DeleteOptionsInput.d.ts +8 -1
- package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
- package/dist/generic/DeleteOptionsInput.js +1 -1
- package/dist/generic/DeleteOptionsInput.js.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts +18 -2
- package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.js +24 -6
- package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts +31 -0
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -0
- package/dist/generic/OrphanedConversationDetailReconciler.js +215 -0
- package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -0
- package/dist/generic/PushStatusResolver.d.ts +48 -1
- package/dist/generic/PushStatusResolver.d.ts.map +1 -1
- package/dist/generic/PushStatusResolver.js +95 -4
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +18 -2
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +64 -55
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +120 -11
- package/dist/index.js.map +1 -1
- package/dist/integration/CustomColumnPromoter.d.ts +2 -0
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +5 -1
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/integration/EntityMapLifecycle.d.ts +4 -0
- package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
- package/dist/integration/EntityMapLifecycle.js +10 -2
- package/dist/integration/EntityMapLifecycle.js.map +1 -1
- package/dist/logging/NoLog.d.ts +4 -0
- package/dist/logging/NoLog.d.ts.map +1 -1
- package/dist/logging/NoLog.js +10 -2
- package/dist/logging/NoLog.js.map +1 -1
- package/dist/logging/StartupLogger.d.ts +2 -0
- package/dist/logging/StartupLogger.d.ts.map +1 -1
- package/dist/logging/StartupLogger.js +5 -1
- package/dist/logging/StartupLogger.js.map +1 -1
- package/dist/logging/bootAudit.d.ts +11 -7
- package/dist/logging/bootAudit.d.ts.map +1 -1
- package/dist/logging/bootAudit.js +15 -7
- package/dist/logging/bootAudit.js.map +1 -1
- package/dist/logging/boundaryLogPayload.d.ts +4 -0
- package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
- package/dist/logging/boundaryLogPayload.js +5 -1
- package/dist/logging/boundaryLogPayload.js.map +1 -1
- package/dist/logging/secretRedactor.d.ts +2 -0
- package/dist/logging/secretRedactor.d.ts.map +1 -1
- package/dist/logging/secretRedactor.js +8 -4
- package/dist/logging/secretRedactor.js.map +1 -1
- package/dist/logging/shortenForLog.d.ts +2 -0
- package/dist/logging/shortenForLog.d.ts.map +1 -1
- package/dist/logging/shortenForLog.js +7 -3
- package/dist/logging/shortenForLog.js.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
- package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.js +8 -6
- package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
- package/dist/metadataRefreshSignal.d.ts +19 -0
- package/dist/metadataRefreshSignal.d.ts.map +1 -0
- package/dist/metadataRefreshSignal.js +45 -0
- package/dist/metadataRefreshSignal.js.map +1 -0
- package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
- package/dist/multiTenancy/index.d.ts +8 -0
- package/dist/multiTenancy/index.d.ts.map +1 -1
- package/dist/multiTenancy/index.js +21 -5
- package/dist/multiTenancy/index.js.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
- package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.js +14 -10
- package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
- package/dist/realtimeWidget/WidgetSessionService.js +27 -27
- package/dist/realtimeWidget/host-identity.d.ts +5 -1
- package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
- package/dist/realtimeWidget/host-identity.js +11 -3
- package/dist/realtimeWidget/host-identity.js.map +1 -1
- package/dist/realtimeWidget/index.d.ts +2 -2
- package/dist/realtimeWidget/index.d.ts.map +1 -1
- package/dist/realtimeWidget/index.js +2 -2
- package/dist/realtimeWidget/index.js.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.js +16 -4
- package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
- package/dist/realtimeWidget/widgetCore.d.ts +48 -0
- package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetCore.js +38 -10
- package/dist/realtimeWidget/widgetCore.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +3 -3
- package/dist/resolvers/AgentRunStatusPublisher.d.ts +55 -0
- package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -0
- package/dist/resolvers/AgentRunStatusPublisher.js +141 -0
- package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -0
- package/dist/resolvers/ConversationRunEventsResolver.d.ts +90 -0
- package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -0
- package/dist/resolvers/ConversationRunEventsResolver.js +283 -0
- package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.d.ts +98 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.d.ts.map +1 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.js +227 -0
- package/dist/resolvers/DuplicateEntryCheckResolver.js.map +1 -0
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
- package/dist/resolvers/FetchEntityVectorsResolver.js +2 -1
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.js +3 -3
- package/dist/resolvers/GeoResolver.d.ts +2 -2
- package/dist/resolvers/GeoResolver.js +4 -4
- package/dist/resolvers/GetDataResolver.d.ts +14 -0
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +43 -15
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -2
- package/dist/resolvers/ListOperationsResolver.d.ts +20 -0
- package/dist/resolvers/ListOperationsResolver.d.ts.map +1 -1
- package/dist/resolvers/ListOperationsResolver.js +68 -28
- package/dist/resolvers/ListOperationsResolver.js.map +1 -1
- package/dist/resolvers/MCPResolver.d.ts +11 -1
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +7 -3
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts +7 -0
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +16 -2
- package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +44 -6
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +93 -37
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
- package/dist/resolvers/RunAIAgentResolver.d.ts +8 -18
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +85 -184
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +2 -2
- package/dist/resolvers/RunDecisionResolver.d.ts +149 -0
- package/dist/resolvers/RunDecisionResolver.d.ts.map +1 -0
- package/dist/resolvers/RunDecisionResolver.js +396 -0
- package/dist/resolvers/RunDecisionResolver.js.map +1 -0
- package/dist/resolvers/RunTestResolver.js +5 -5
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
- package/dist/resolvers/VectorizeEntityResolver.d.ts +1 -1
- package/dist/resolvers/VectorizeEntityResolver.d.ts.map +1 -1
- package/dist/resolvers/VectorizeEntityResolver.js +14 -10
- package/dist/resolvers/VectorizeEntityResolver.js.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
- package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.js +10 -2
- package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
- package/dist/resolvers/artifact-routing.d.ts +8 -8
- package/dist/resolvers/artifact-routing.js +2 -2
- package/dist/resolvers/artifact-routing.js.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
- package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.js +24 -8
- package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
- package/dist/resolvers/peaksSidecar.d.ts +4 -0
- package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
- package/dist/resolvers/peaksSidecar.js +10 -2
- package/dist/resolvers/peaksSidecar.js.map +1 -1
- package/dist/rest/EntityCRUDHandler.d.ts +28 -0
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +20 -4
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/MediaStreamHandler.d.ts +2 -0
- package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
- package/dist/rest/MediaStreamHandler.js +10 -6
- package/dist/rest/MediaStreamHandler.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +15 -3
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts +6 -4
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +15 -11
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
- package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
- package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
- package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
- package/dist/rest/SignatureWebhookHandler.js +5 -1
- package/dist/rest/SignatureWebhookHandler.js.map +1 -1
- package/dist/rest/UploadTokenManager.d.ts +24 -8
- package/dist/rest/UploadTokenManager.d.ts.map +1 -1
- package/dist/rest/UploadTokenManager.js +53 -21
- package/dist/rest/UploadTokenManager.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts +20 -0
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +20 -4
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/mediaRange.d.ts +4 -0
- package/dist/rest/mediaRange.d.ts.map +1 -1
- package/dist/rest/mediaRange.js +10 -2
- package/dist/rest/mediaRange.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +4 -0
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +13 -7
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/serverExtensionReservedRoots.d.ts +2 -0
- package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
- package/dist/serverExtensionReservedRoots.js +5 -1
- package/dist/serverExtensionReservedRoots.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +13 -8
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +16 -15
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -3
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +13 -5
- package/dist/util.js.map +1 -1
- package/package.json +94 -92
- package/src/__tests__/AgentRunStatusPublisher.test.ts +175 -0
- package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -0
- package/src/__tests__/DuplicateEntryCheckResolver.test.ts +300 -0
- package/src/__tests__/FileResolverPeaks.test.ts +13 -13
- package/src/__tests__/ListOperationsResolver.test.ts +17 -17
- package/src/__tests__/MediaStreamHandler.test.ts +28 -28
- package/src/__tests__/NoLog.test.ts +11 -11
- package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
- package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
- package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +216 -2
- package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
- package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
- package/src/__tests__/RemoteBrowserActionRecovery.test.ts +7 -1
- package/src/__tests__/RemoteBrowserAudioStream.test.ts +7 -1
- package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
- package/src/__tests__/RemoteBrowserSnapshot.test.ts +7 -1
- package/src/__tests__/ResolverBase.clientOldValues.test.ts +52 -0
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +398 -0
- package/src/__tests__/RunAIAgentResolver.streaming.test.ts +18 -27
- package/src/__tests__/RunDecisionResolver.test.ts +699 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +131 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
- package/src/__tests__/VectorizeEntityResolver.test.ts +106 -0
- package/src/__tests__/WidgetSessionService.test.ts +8 -4
- package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
- package/src/__tests__/bootAudit.test.ts +11 -11
- package/src/__tests__/boundaryLogPayload.test.ts +6 -6
- package/src/__tests__/cacheInvalidationRecordData.test.ts +177 -0
- package/src/__tests__/conversationRunEvents.test.ts +399 -0
- package/src/__tests__/databaseAbstraction.test.ts +12 -6
- package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
- package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
- package/src/__tests__/magicLink.test.ts +73 -134
- package/src/__tests__/magicLinkService.consume.test.ts +224 -0
- package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
- package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
- package/src/__tests__/multiTenancy.security.test.ts +40 -40
- package/src/__tests__/multiTenancy.test.ts +18 -18
- package/src/__tests__/newUsers.test.ts +24 -23
- package/src/__tests__/orphanedConversationDetailReconciler.test.ts +283 -0
- package/src/__tests__/principals.test.ts +22 -22
- package/src/__tests__/pushStatusFanOut.test.ts +206 -0
- package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
- package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
- package/src/__tests__/secretRedactor.test.ts +12 -12
- package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
- package/src/__tests__/subscriptionRedaction.test.ts +5 -5
- package/src/__tests__/unifiedAuth.test.ts +15 -9
- package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
- package/src/__tests__/widget.test.ts +45 -45
- package/src/__tests__/widgetGuestElevation.test.ts +7 -7
- package/src/__tests__/widgetHostIdentity.test.ts +14 -14
- package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
- package/src/agentSessions/SessionManager.ts +2 -2
- package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
- package/src/auth/AuthProviderCatalogRouter.ts +6 -1
- package/src/auth/__tests__/backward-compatibility.test.ts +4 -3
- package/src/auth/index.ts +43 -28
- package/src/auth/initializeProviders.ts +25 -5
- package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
- package/src/auth/magicLink/MagicLinkService.ts +71 -52
- package/src/auth/magicLink/index.ts +7 -7
- package/src/auth/magicLink/magicLinkCore.ts +96 -64
- package/src/auth/magicLink/redeemLanding.ts +14 -4
- package/src/auth/magicLink/types.ts +54 -54
- package/src/auth/newUsers.ts +1 -1
- package/src/auth/principals.ts +11 -2
- package/src/cache.ts +4 -1
- package/src/config.ts +37 -4
- package/src/context.ts +37 -24
- package/src/directives/Public.ts +4 -1
- package/src/directives/RequireSystemUser.ts +4 -1
- package/src/generated/graphql-schemas/__mj.ts +3674 -4
- package/src/generic/CacheInvalidationResolver.ts +148 -4
- package/src/generic/DeleteOptionsInput.ts +9 -2
- package/src/generic/FireAndForgetHeartbeat.ts +35 -16
- package/src/generic/OrphanedConversationDetailReconciler.ts +267 -0
- package/src/generic/PushStatusResolver.ts +118 -8
- package/src/generic/ResolverBase.ts +65 -57
- package/src/generic/RunViewResolver.ts +22 -22
- package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
- package/src/index.ts +137 -11
- package/src/integration/CustomColumnPromoter.ts +6 -1
- package/src/integration/EntityMapLifecycle.ts +20 -2
- package/src/logging/NoLog.ts +16 -2
- package/src/logging/StartupLogger.ts +6 -1
- package/src/logging/bootAudit.ts +26 -16
- package/src/logging/boundaryLogPayload.ts +8 -1
- package/src/logging/secretRedactor.ts +14 -9
- package/src/logging/shortenForLog.ts +8 -3
- package/src/logging/variablesLoggingMiddleware.ts +9 -6
- package/src/metadataRefreshSignal.ts +45 -0
- package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
- package/src/multiTenancy/index.ts +29 -5
- package/src/realtimeWidget/WidgetRouter.ts +15 -10
- package/src/realtimeWidget/WidgetSessionService.ts +76 -76
- package/src/realtimeWidget/host-identity.ts +24 -10
- package/src/realtimeWidget/index.ts +3 -3
- package/src/realtimeWidget/visitorIdentity.ts +39 -8
- package/src/realtimeWidget/widgetCore.ts +75 -10
- package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
- package/src/resolvers/AdhocQueryResolver.ts +3 -3
- package/src/resolvers/AgentRunStatusPublisher.ts +175 -0
- package/src/resolvers/AgentSessionResolver.ts +3 -3
- package/src/resolvers/ColorResolver.ts +6 -6
- package/src/resolvers/ComponentRegistryResolver.ts +36 -36
- package/src/resolvers/ConversationRunEventsResolver.ts +308 -0
- package/src/resolvers/DuplicateEntryCheckResolver.ts +232 -0
- package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
- package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
- package/src/resolvers/FetchEntityVectorsResolver.ts +2 -1
- package/src/resolvers/FileResolver.ts +42 -42
- package/src/resolvers/GeoResolver.ts +4 -4
- package/src/resolvers/GetDataResolver.ts +50 -15
- package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
- package/src/resolvers/ListOperationsResolver.ts +78 -28
- package/src/resolvers/MCPResolver.ts +30 -15
- package/src/resolvers/MergeRecordsResolver.ts +14 -2
- package/src/resolvers/QueryResolver.ts +13 -13
- package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
- package/src/resolvers/RealtimeClientSessionResolver.ts +96 -38
- package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
- package/src/resolvers/RunAIAgentResolver.ts +134 -239
- package/src/resolvers/RunAIPromptResolver.ts +22 -22
- package/src/resolvers/RunDecisionResolver.ts +435 -0
- package/src/resolvers/RunTemplateResolver.ts +4 -4
- package/src/resolvers/RunTestResolver.ts +25 -25
- package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
- package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
- package/src/resolvers/TelemetryResolver.ts +79 -79
- package/src/resolvers/VectorizeEntityResolver.ts +16 -11
- package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
- package/src/resolvers/__tests__/MergeRecordsResolver.test.ts +93 -0
- package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
- package/src/resolvers/adhoc-query-helpers.ts +19 -2
- package/src/resolvers/artifact-routing.ts +19 -19
- package/src/resolvers/meetingRecordingRegistration.ts +44 -10
- package/src/resolvers/peaksSidecar.ts +12 -2
- package/src/rest/EntityCRUDHandler.ts +24 -4
- package/src/rest/MediaStreamHandler.ts +11 -6
- package/src/rest/OAuthCallbackHandler.ts +25 -7
- package/src/rest/RESTEndpointHandler.ts +20 -15
- package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
- package/src/rest/SignatureWebhookHandler.ts +6 -1
- package/src/rest/UploadTokenManager.ts +66 -30
- package/src/rest/ViewOperationsHandler.ts +24 -4
- package/src/rest/mediaRange.ts +16 -6
- package/src/rest/setupRESTEndpoints.ts +24 -12
- package/src/serverExtensionReservedRoots.ts +6 -1
- package/src/services/TaskGraphActionRunner.ts +16 -15
- package/src/types.ts +21 -16
- package/src/util.ts +16 -6
|
@@ -6,8 +6,8 @@ import { RequireSystemUser } from '../directives/RequireSystemUser.js';
|
|
|
6
6
|
import { NoLog } from '../logging/NoLog.js';
|
|
7
7
|
import { v4 as uuidv4 } from 'uuid';
|
|
8
8
|
import { GetReadOnlyDataSource, GetReadOnlyProvider } from '../util.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { GetDbType } from '../index.js';
|
|
10
|
+
import { GetSystemUser } from '../auth/index.js';
|
|
11
11
|
import sql from 'mssql';
|
|
12
12
|
|
|
13
13
|
@InputType()
|
|
@@ -125,7 +125,7 @@ export class GetDataResolver {
|
|
|
125
125
|
LogStatus(`GetData invoked: ${input.Queries.length} queries`);
|
|
126
126
|
|
|
127
127
|
// validate the token
|
|
128
|
-
if (!
|
|
128
|
+
if (!IsTokenValid(input.Token)) {
|
|
129
129
|
throw new Error(`Token ${input.Token} is not valid or has expired`);
|
|
130
130
|
}
|
|
131
131
|
|
|
@@ -139,8 +139,8 @@ export class GetDataResolver {
|
|
|
139
139
|
// Queries may contain {{query:"CategoryPath/QueryName(params)"}} tokens that
|
|
140
140
|
// reference reusable queries. These must be resolved to CTEs before raw SQL execution.
|
|
141
141
|
const compositionEngine = new QueryCompositionEngine();
|
|
142
|
-
const platform =
|
|
143
|
-
const systemUser = await
|
|
142
|
+
const platform = GetDbType();
|
|
143
|
+
const systemUser = await GetSystemUser();
|
|
144
144
|
|
|
145
145
|
// Execute all queries in parallel, but execute each individual query in its own try catch block so that if one fails, the others can still be processed
|
|
146
146
|
// and also so that we can capture the error message for each query and return it
|
|
@@ -204,7 +204,7 @@ export class GetDataResolver {
|
|
|
204
204
|
Queries: input.Queries,
|
|
205
205
|
ErrorMessages: errorMessages }
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
RecordTokenUse(input.Token, {request: input, results: returnVal});
|
|
208
208
|
|
|
209
209
|
// Success below is derived from having no errorMessages, check that array
|
|
210
210
|
return returnVal;
|
|
@@ -296,7 +296,7 @@ const __defaultTokenLifeSpan = 1000 * 60 * 5; // 5 minutes
|
|
|
296
296
|
* Critical finding).
|
|
297
297
|
* @param now injectable for tests; defaults to the real current time
|
|
298
298
|
*/
|
|
299
|
-
export function
|
|
299
|
+
export function PruneExpiredTokens(now: Date = new Date()): void {
|
|
300
300
|
for (let i = __accessTokens.length - 1; i >= 0; i--) {
|
|
301
301
|
if (__accessTokens[i].ExpiresAt <= now) {
|
|
302
302
|
__accessTokens.splice(i, 1);
|
|
@@ -304,17 +304,27 @@ export function pruneExpiredTokens(now: Date = new Date()): void {
|
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
+
/** @deprecated Use {@link PruneExpiredTokens}. */
|
|
308
|
+
export function pruneExpiredTokens(now: Date = new Date()): void {
|
|
309
|
+
return PruneExpiredTokens(now);
|
|
310
|
+
}
|
|
311
|
+
|
|
307
312
|
/** Number of tokens currently tracked (post-sweep, at last mutation). Exposed for tests/diagnostics. */
|
|
308
|
-
export function
|
|
313
|
+
export function GetAccessTokenCount(): number {
|
|
309
314
|
return __accessTokens.length;
|
|
310
315
|
}
|
|
311
316
|
|
|
312
|
-
|
|
313
|
-
|
|
317
|
+
/** @deprecated Use {@link GetAccessTokenCount}. */
|
|
318
|
+
export function getAccessTokenCount(): number {
|
|
319
|
+
return GetAccessTokenCount();
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export function RegisterAccessToken(token?: string, lifeSpan: number = __defaultTokenLifeSpan, requestorPayload?: any): GetDataAccessToken {
|
|
323
|
+
PruneExpiredTokens();
|
|
314
324
|
|
|
315
325
|
const tokenToUse = token || uuidv4();
|
|
316
326
|
|
|
317
|
-
if (
|
|
327
|
+
if (TokenExists(tokenToUse)) {
|
|
318
328
|
// should never happen if we used the uuidv4() function but could happen if someone tries to use a custom token
|
|
319
329
|
throw new Error(`Token ${tokenToUse} already exists`);
|
|
320
330
|
}
|
|
@@ -327,7 +337,12 @@ export function registerAccessToken(token?: string, lifeSpan: number = __default
|
|
|
327
337
|
__accessTokens.push(newToken);
|
|
328
338
|
return newToken;
|
|
329
339
|
}
|
|
330
|
-
|
|
340
|
+
|
|
341
|
+
/** @deprecated Use {@link RegisterAccessToken}. */
|
|
342
|
+
export function registerAccessToken(token?: string, lifeSpan: number = __defaultTokenLifeSpan, requestorPayload?: any): GetDataAccessToken {
|
|
343
|
+
return RegisterAccessToken(token, lifeSpan, requestorPayload);
|
|
344
|
+
}
|
|
345
|
+
export function DeleteAccessToken(token: string) {
|
|
331
346
|
const index = __accessTokens.findIndex((t) => t.Token === token);
|
|
332
347
|
if (index >= 0) {
|
|
333
348
|
__accessTokens.splice(index, 1);
|
|
@@ -336,17 +351,32 @@ export function deleteAccessToken(token: string) {
|
|
|
336
351
|
throw new Error(`Token ${token} does not exist`);
|
|
337
352
|
}
|
|
338
353
|
}
|
|
339
|
-
|
|
354
|
+
|
|
355
|
+
/** @deprecated Use {@link DeleteAccessToken}. */
|
|
356
|
+
export function deleteAccessToken(token: string) {
|
|
357
|
+
return DeleteAccessToken(token);
|
|
358
|
+
}
|
|
359
|
+
export function TokenExists(token: string) {
|
|
340
360
|
return __accessTokens.find((t) => t.Token === token) !== undefined;
|
|
341
361
|
}
|
|
342
|
-
|
|
362
|
+
|
|
363
|
+
/** @deprecated Use {@link TokenExists}. */
|
|
364
|
+
export function tokenExists(token: string) {
|
|
365
|
+
return TokenExists(token);
|
|
366
|
+
}
|
|
367
|
+
export function IsTokenValid(token: string) {
|
|
343
368
|
const t = __accessTokens.find((t) => t.Token === token);
|
|
344
369
|
if (t) {
|
|
345
370
|
return t.ExpiresAt > new Date();
|
|
346
371
|
}
|
|
347
372
|
return false;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/** @deprecated Use {@link IsTokenValid}. */
|
|
376
|
+
export function isTokenValid(token: string) {
|
|
377
|
+
return IsTokenValid(token);
|
|
348
378
|
}
|
|
349
|
-
export function
|
|
379
|
+
export function RecordTokenUse(token: string, usePayload: any) {
|
|
350
380
|
const t = __accessTokens.find((t) => t.Token === token);
|
|
351
381
|
if (t) {
|
|
352
382
|
if (!t.TokenUses) {
|
|
@@ -358,3 +388,8 @@ export function recordTokenUse(token: string, usePayload: any) {
|
|
|
358
388
|
throw new Error(`Token ${token} does not exist`);
|
|
359
389
|
}
|
|
360
390
|
}
|
|
391
|
+
|
|
392
|
+
/** @deprecated Use {@link RecordTokenUse}. */
|
|
393
|
+
export function recordTokenUse(token: string, usePayload: any) {
|
|
394
|
+
return RecordTokenUse(token, usePayload);
|
|
395
|
+
}
|
|
@@ -56,7 +56,7 @@ import { IntegrationProgressEmitter, IntegrationProgressReader } from "@memberju
|
|
|
56
56
|
import type { IntegrationRunSnapshot, IntegrationRunKind } from "@memberjunction/integration-progress-artifacts";
|
|
57
57
|
import { ResolverBase } from "../generic/ResolverBase.js";
|
|
58
58
|
import { IntegrationCustomColumnPromoter } from "../integration/CustomColumnPromoter.js";
|
|
59
|
-
import { ComputeCascadeRemovalSet, ComputeRemovedDependencyWarnings,
|
|
59
|
+
import { ComputeCascadeRemovalSet, ComputeRemovedDependencyWarnings, DecideFieldMapReconcile, DisableUnselectedEntityMaps, ReenableFieldMapsForEntityMap, ResetPullWatermarks, SetEntityMapEnabled } from "../integration/EntityMapLifecycle.js";
|
|
60
60
|
import { ComputeInactiveRowWarnings } from "../integration/InactiveRowWarnings.js";
|
|
61
61
|
import { BuildCreateConnectionMessage, BuildDetachedRefreshMessage, BuildReactivateMessage, BuildUpdateConnectionMessage } from "../integration/SchemaRefreshLaunch.js";
|
|
62
62
|
// Type-only: the registered runtime class for 'MJ: Company Integrations'. Lets the create path name the
|
|
@@ -6418,7 +6418,7 @@ export class IntegrationDiscoveryResolver extends ResolverBase {
|
|
|
6418
6418
|
// The CHOICES live in a pure function (decideFieldMapReconcile — unit-tested); this method
|
|
6419
6419
|
// applies the EFFECTS. Inline, the decision was untestable: this resolver imports
|
|
6420
6420
|
// schema-builder and schema-engine, so it cannot be loaded in a unit test at all.
|
|
6421
|
-
const plan =
|
|
6421
|
+
const plan = DecideFieldMapReconcile(
|
|
6422
6422
|
activeFields.map(f => f.Name),
|
|
6423
6423
|
existingRows.map(fm => ({ SourceFieldName: fm.SourceFieldName, Status: fm.Status })),
|
|
6424
6424
|
mapEnabled,
|
|
@@ -239,7 +239,7 @@ export class ComposeListsInput {
|
|
|
239
239
|
// AppContext / type-graphql runtime.
|
|
240
240
|
// ---------------------------------------------------------------------------
|
|
241
241
|
|
|
242
|
-
export function
|
|
242
|
+
export function ToCoreSource(input: ListSourceInput): CoreListSource {
|
|
243
243
|
switch (input.Kind) {
|
|
244
244
|
case 'list':
|
|
245
245
|
if (!input.ListID) throw new Error("ListSourceInput.ListID is required when Kind='list'");
|
|
@@ -257,7 +257,12 @@ export function toCoreSource(input: ListSourceInput): CoreListSource {
|
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
|
|
260
|
+
/** @deprecated Use {@link ToCoreSource}. */
|
|
261
|
+
export function toCoreSource(input: ListSourceInput): CoreListSource {
|
|
262
|
+
return ToCoreSource(input);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export function FromCoreDelta(delta: CoreListDelta): ListDeltaType {
|
|
261
266
|
return {
|
|
262
267
|
TargetListId: delta.TargetListId,
|
|
263
268
|
EntityName: delta.EntityName,
|
|
@@ -265,12 +270,17 @@ export function fromCoreDelta(delta: CoreListDelta): ListDeltaType {
|
|
|
265
270
|
ToRemove: delta.ToRemove,
|
|
266
271
|
Unchanged: delta.Unchanged,
|
|
267
272
|
Counts: { ...delta.Counts },
|
|
268
|
-
Warnings: delta.Warnings.map(
|
|
273
|
+
Warnings: delta.Warnings.map(FromCoreWarning),
|
|
269
274
|
DeltaToken: delta.DeltaToken,
|
|
270
275
|
};
|
|
271
276
|
}
|
|
272
277
|
|
|
273
|
-
|
|
278
|
+
/** @deprecated Use {@link FromCoreDelta}. */
|
|
279
|
+
export function fromCoreDelta(delta: CoreListDelta): ListDeltaType {
|
|
280
|
+
return FromCoreDelta(delta);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export function FromCoreWarning(w: CoreListDeltaWarning): ListDeltaWarningType {
|
|
274
284
|
return {
|
|
275
285
|
Code: w.Code,
|
|
276
286
|
Message: w.Message,
|
|
@@ -278,7 +288,12 @@ export function fromCoreWarning(w: CoreListDeltaWarning): ListDeltaWarningType {
|
|
|
278
288
|
};
|
|
279
289
|
}
|
|
280
290
|
|
|
281
|
-
|
|
291
|
+
/** @deprecated Use {@link FromCoreWarning}. */
|
|
292
|
+
export function fromCoreWarning(w: CoreListDeltaWarning): ListDeltaWarningType {
|
|
293
|
+
return FromCoreWarning(w);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export function FromCoreApplyResult(r: CoreApplyResult): ApplyListResultType {
|
|
282
297
|
return {
|
|
283
298
|
Success: r.Success,
|
|
284
299
|
ResultCode: r.ResultCode,
|
|
@@ -292,8 +307,13 @@ export function fromCoreApplyResult(r: CoreApplyResult): ApplyListResultType {
|
|
|
292
307
|
};
|
|
293
308
|
}
|
|
294
309
|
|
|
310
|
+
/** @deprecated Use {@link FromCoreApplyResult}. */
|
|
311
|
+
export function fromCoreApplyResult(r: CoreApplyResult): ApplyListResultType {
|
|
312
|
+
return FromCoreApplyResult(r);
|
|
313
|
+
}
|
|
314
|
+
|
|
295
315
|
/** Convert a `ListShareSummary` from the core into the GraphQL DTO. */
|
|
296
|
-
export function
|
|
316
|
+
export function FromCoreShareSummary(s: ListShareSummary): ListShareSummaryType {
|
|
297
317
|
return {
|
|
298
318
|
PermissionID: s.PermissionID,
|
|
299
319
|
ListID: s.ListID,
|
|
@@ -308,28 +328,53 @@ export function fromCoreShareSummary(s: ListShareSummary): ListShareSummaryType
|
|
|
308
328
|
};
|
|
309
329
|
}
|
|
310
330
|
|
|
331
|
+
/** @deprecated Use {@link FromCoreShareSummary}. */
|
|
332
|
+
export function fromCoreShareSummary(s: ListShareSummary): ListShareSummaryType {
|
|
333
|
+
return FromCoreShareSummary(s);
|
|
334
|
+
}
|
|
335
|
+
|
|
311
336
|
/** Guard for required-when-Kind-X fields on discriminated inputs. */
|
|
312
|
-
export function
|
|
337
|
+
export function RequireField<T>(value: T | undefined, name: string): T {
|
|
313
338
|
if (value == null) throw new Error(`'${name}' is required`);
|
|
314
339
|
return value;
|
|
315
340
|
}
|
|
316
341
|
|
|
342
|
+
/** @deprecated Use {@link RequireField}. */
|
|
343
|
+
export function requireField<T>(value: T | undefined, name: string): T {
|
|
344
|
+
return RequireField(value, name);
|
|
345
|
+
}
|
|
346
|
+
|
|
317
347
|
/** Three failure helpers — one per output type — keep the try/catch
|
|
318
348
|
* sites in the resolver methods tiny. */
|
|
349
|
+
export function ShareUnexpected(e: unknown, op: string): ShareResultType {
|
|
350
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
351
|
+
return { Success: false, ResultCode: 'UNEXPECTED_ERROR', Message: `${op}: ${message}` };
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/** @deprecated Use {@link ShareUnexpected}. */
|
|
319
355
|
export function shareUnexpected(e: unknown, op: string): ShareResultType {
|
|
356
|
+
return ShareUnexpected(e, op);
|
|
357
|
+
}
|
|
358
|
+
export function InviteUnexpected(e: unknown, op: string): InviteResultType {
|
|
320
359
|
const message = e instanceof Error ? e.message : String(e);
|
|
321
360
|
return { Success: false, ResultCode: 'UNEXPECTED_ERROR', Message: `${op}: ${message}` };
|
|
322
361
|
}
|
|
362
|
+
|
|
363
|
+
/** @deprecated Use {@link InviteUnexpected}. */
|
|
323
364
|
export function inviteUnexpected(e: unknown, op: string): InviteResultType {
|
|
365
|
+
return InviteUnexpected(e, op);
|
|
366
|
+
}
|
|
367
|
+
export function AcceptInvitationUnexpected(e: unknown, op: string): AcceptInvitationResultType {
|
|
324
368
|
const message = e instanceof Error ? e.message : String(e);
|
|
325
369
|
return { Success: false, ResultCode: 'UNEXPECTED_ERROR', Message: `${op}: ${message}` };
|
|
326
370
|
}
|
|
371
|
+
|
|
372
|
+
/** @deprecated Use {@link AcceptInvitationUnexpected}. */
|
|
327
373
|
export function acceptInvitationUnexpected(e: unknown, op: string): AcceptInvitationResultType {
|
|
328
|
-
|
|
329
|
-
return { Success: false, ResultCode: 'UNEXPECTED_ERROR', Message: `${op}: ${message}` };
|
|
374
|
+
return AcceptInvitationUnexpected(e, op);
|
|
330
375
|
}
|
|
331
376
|
|
|
332
|
-
export function
|
|
377
|
+
export function RebuildDeltaFromInput(input: ApplyDeltaInput): CoreListDelta {
|
|
333
378
|
return {
|
|
334
379
|
TargetListId: input.TargetListId,
|
|
335
380
|
EntityName: input.EntityName,
|
|
@@ -348,6 +393,11 @@ export function rebuildDeltaFromInput(input: ApplyDeltaInput): CoreListDelta {
|
|
|
348
393
|
};
|
|
349
394
|
}
|
|
350
395
|
|
|
396
|
+
/** @deprecated Use {@link RebuildDeltaFromInput}. */
|
|
397
|
+
export function rebuildDeltaFromInput(input: ApplyDeltaInput): CoreListDelta {
|
|
398
|
+
return RebuildDeltaFromInput(input);
|
|
399
|
+
}
|
|
400
|
+
|
|
351
401
|
// ---------------------------------------------------------------------------
|
|
352
402
|
// Resolver
|
|
353
403
|
//
|
|
@@ -369,10 +419,10 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
369
419
|
@Ctx() ctx: AppContext,
|
|
370
420
|
): Promise<ListDeltaType> {
|
|
371
421
|
const ops = this.buildOps(ctx);
|
|
372
|
-
const source =
|
|
422
|
+
const source = ToCoreSource(input.Source);
|
|
373
423
|
const target = input.Target === 'new' ? 'new' : ({ kind: 'list', listId: input.Target } as const);
|
|
374
424
|
const delta = await ops.ComputeDelta(target, source, input.Mode);
|
|
375
|
-
return
|
|
425
|
+
return FromCoreDelta(delta);
|
|
376
426
|
}
|
|
377
427
|
|
|
378
428
|
@Mutation(() => ApplyListResultType, {
|
|
@@ -384,12 +434,12 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
384
434
|
): Promise<ApplyListResultType> {
|
|
385
435
|
const ops = this.buildOps(ctx);
|
|
386
436
|
try {
|
|
387
|
-
const delta =
|
|
437
|
+
const delta = RebuildDeltaFromInput(input);
|
|
388
438
|
const result = await ops.ApplyDelta(delta, {
|
|
389
439
|
ConfirmDrops: input.ConfirmDrops,
|
|
390
440
|
DeltaToken: input.DeltaToken,
|
|
391
441
|
});
|
|
392
|
-
return
|
|
442
|
+
return FromCoreApplyResult(result);
|
|
393
443
|
} catch (e) {
|
|
394
444
|
return this.unexpectedFailure(e, 'ApplyListDelta');
|
|
395
445
|
}
|
|
@@ -412,7 +462,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
412
462
|
RefreshMode: options.RefreshMode,
|
|
413
463
|
};
|
|
414
464
|
const result = await ops.MaterializeFromView(viewId, opts);
|
|
415
|
-
return
|
|
465
|
+
return FromCoreApplyResult(result);
|
|
416
466
|
} catch (e) {
|
|
417
467
|
return this.unexpectedFailure(e, 'MaterializeListFromView');
|
|
418
468
|
}
|
|
@@ -427,7 +477,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
427
477
|
const ops = this.buildOps(ctx);
|
|
428
478
|
try {
|
|
429
479
|
const result = await ops.AddViewResultsToList(viewId, listId);
|
|
430
|
-
return
|
|
480
|
+
return FromCoreApplyResult(result);
|
|
431
481
|
} catch (e) {
|
|
432
482
|
return this.unexpectedFailure(e, 'AddViewResultsToList');
|
|
433
483
|
}
|
|
@@ -443,7 +493,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
443
493
|
const ops = this.buildOps(ctx);
|
|
444
494
|
try {
|
|
445
495
|
const result = await ops.RefreshFromSource(listId, mode, { ConfirmDrops: confirmDrops });
|
|
446
|
-
return
|
|
496
|
+
return FromCoreApplyResult(result);
|
|
447
497
|
} catch (e) {
|
|
448
498
|
return this.unexpectedFailure(e, 'RefreshListFromSource');
|
|
449
499
|
}
|
|
@@ -458,10 +508,10 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
458
508
|
@Ctx() ctx: AppContext,
|
|
459
509
|
): Promise<ListDeltaType> {
|
|
460
510
|
const ops = this.buildOps(ctx);
|
|
461
|
-
const inputs = input.Inputs.map(
|
|
462
|
-
const target = input.Target ?
|
|
511
|
+
const inputs = input.Inputs.map(ToCoreSource);
|
|
512
|
+
const target = input.Target ? ToCoreSource(input.Target) : undefined;
|
|
463
513
|
const delta = await ops.ComputeSetOp(input.Op, inputs, target);
|
|
464
|
-
return
|
|
514
|
+
return FromCoreDelta(delta);
|
|
465
515
|
}
|
|
466
516
|
|
|
467
517
|
// -----------------------------------------------------------------------
|
|
@@ -480,8 +530,8 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
480
530
|
try {
|
|
481
531
|
const target: ShareTarget =
|
|
482
532
|
input.Target.Kind === 'user'
|
|
483
|
-
? { kind: 'user', userId:
|
|
484
|
-
: { kind: 'role', roleId:
|
|
533
|
+
? { kind: 'user', userId: RequireField(input.Target.UserID, 'Target.UserID') }
|
|
534
|
+
: { kind: 'role', roleId: RequireField(input.Target.RoleID, 'Target.RoleID') };
|
|
485
535
|
const result = await sharing.Share({
|
|
486
536
|
ListID: input.ListID,
|
|
487
537
|
Target: target,
|
|
@@ -489,7 +539,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
489
539
|
});
|
|
490
540
|
return result;
|
|
491
541
|
} catch (e) {
|
|
492
|
-
return
|
|
542
|
+
return ShareUnexpected(e, 'ShareList');
|
|
493
543
|
}
|
|
494
544
|
}
|
|
495
545
|
|
|
@@ -502,7 +552,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
502
552
|
try {
|
|
503
553
|
return await sharing.Unshare(permissionId);
|
|
504
554
|
} catch (e) {
|
|
505
|
-
return
|
|
555
|
+
return ShareUnexpected(e, 'UnshareList');
|
|
506
556
|
}
|
|
507
557
|
}
|
|
508
558
|
|
|
@@ -520,7 +570,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
520
570
|
TtlMs: input.TtlHours != null ? input.TtlHours * 60 * 60 * 1000 : undefined,
|
|
521
571
|
});
|
|
522
572
|
} catch (e) {
|
|
523
|
-
return
|
|
573
|
+
return InviteUnexpected(e, 'InviteToList');
|
|
524
574
|
}
|
|
525
575
|
}
|
|
526
576
|
|
|
@@ -533,7 +583,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
533
583
|
try {
|
|
534
584
|
return await sharing.AcceptInvitation(token);
|
|
535
585
|
} catch (e) {
|
|
536
|
-
return
|
|
586
|
+
return AcceptInvitationUnexpected(e, 'AcceptListInvitation');
|
|
537
587
|
}
|
|
538
588
|
}
|
|
539
589
|
|
|
@@ -546,7 +596,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
546
596
|
try {
|
|
547
597
|
return await sharing.RevokeInvitation(invitationId);
|
|
548
598
|
} catch (e) {
|
|
549
|
-
return
|
|
599
|
+
return ShareUnexpected(e, 'RevokeListInvitation');
|
|
550
600
|
}
|
|
551
601
|
}
|
|
552
602
|
|
|
@@ -557,7 +607,7 @@ export class ListOperationsResolver extends ResolverBase {
|
|
|
557
607
|
): Promise<ListShareSummaryType[]> {
|
|
558
608
|
const sharing = this.buildSharing(ctx);
|
|
559
609
|
const shares = await sharing.GetSharesForList(listId);
|
|
560
|
-
return shares.map(
|
|
610
|
+
return shares.map(FromCoreShareSummary);
|
|
561
611
|
}
|
|
562
612
|
|
|
563
613
|
@Query(() => [SharedListSummaryType])
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from '@memberjunction/ai-mcp-client';
|
|
20
20
|
import { AppContext } from '../types.js';
|
|
21
21
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
22
|
-
import {
|
|
22
|
+
import { PublishStatusUpdate } from '../generic/PushStatusResolver.js';
|
|
23
23
|
import { GraphQLJSONObject } from 'graphql-type-json';
|
|
24
24
|
import { configInfo } from '../config.js';
|
|
25
25
|
|
|
@@ -493,13 +493,13 @@ export class MCPToolSummary {
|
|
|
493
493
|
@ObjectType()
|
|
494
494
|
export class MCPToolPageResult {
|
|
495
495
|
@Field(() => [MCPToolSummary])
|
|
496
|
-
items: MCPToolSummary[];
|
|
496
|
+
items: MCPToolSummary[]; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
497
497
|
|
|
498
498
|
@Field(() => Int)
|
|
499
|
-
totalCount: number;
|
|
499
|
+
totalCount: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
500
500
|
|
|
501
501
|
@Field()
|
|
502
|
-
hasMore: boolean;
|
|
502
|
+
hasMore: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
/**
|
|
@@ -508,13 +508,13 @@ export class MCPToolPageResult {
|
|
|
508
508
|
@ObjectType()
|
|
509
509
|
export class MCPToolServerCount {
|
|
510
510
|
@Field()
|
|
511
|
-
serverID: string;
|
|
511
|
+
serverID: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
512
512
|
|
|
513
513
|
@Field()
|
|
514
|
-
serverName: string;
|
|
514
|
+
serverName: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
515
515
|
|
|
516
516
|
@Field(() => Int)
|
|
517
|
-
count: number;
|
|
517
|
+
count: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
518
518
|
}
|
|
519
519
|
|
|
520
520
|
/**
|
|
@@ -524,10 +524,10 @@ export class MCPToolServerCount {
|
|
|
524
524
|
@ObjectType()
|
|
525
525
|
export class MCPToolCategoryCount {
|
|
526
526
|
@Field()
|
|
527
|
-
category: string;
|
|
527
|
+
category: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
528
528
|
|
|
529
529
|
@Field(() => Int)
|
|
530
|
-
count: number;
|
|
530
|
+
count: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
531
531
|
}
|
|
532
532
|
|
|
533
533
|
/**
|
|
@@ -536,13 +536,13 @@ export class MCPToolCategoryCount {
|
|
|
536
536
|
@ObjectType()
|
|
537
537
|
export class MCPToolCountsResult {
|
|
538
538
|
@Field(() => Int)
|
|
539
|
-
totalCount: number;
|
|
539
|
+
totalCount: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
540
540
|
|
|
541
541
|
@Field(() => [MCPToolServerCount])
|
|
542
|
-
countByServer: MCPToolServerCount[];
|
|
542
|
+
countByServer: MCPToolServerCount[]; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
543
543
|
|
|
544
544
|
@Field(() => [MCPToolCategoryCount])
|
|
545
|
-
countByCategory: MCPToolCategoryCount[];
|
|
545
|
+
countByCategory: MCPToolCategoryCount[]; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
546
546
|
}
|
|
547
547
|
|
|
548
548
|
/**
|
|
@@ -1247,7 +1247,7 @@ export class MCPResolver extends ResolverBase {
|
|
|
1247
1247
|
* @returns OAuth event notification
|
|
1248
1248
|
*/
|
|
1249
1249
|
@Subscription(() => MCPOAuthEventNotification, { topics: MCP_OAUTH_EVENTS_TOPIC })
|
|
1250
|
-
onMCPOAuthEvent(
|
|
1250
|
+
onMCPOAuthEvent( // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
1251
1251
|
@Root() payload: MCPOAuthEventPayload
|
|
1252
1252
|
): MCPOAuthEventNotification {
|
|
1253
1253
|
return {
|
|
@@ -1361,7 +1361,7 @@ export class MCPResolver extends ResolverBase {
|
|
|
1361
1361
|
result
|
|
1362
1362
|
};
|
|
1363
1363
|
|
|
1364
|
-
|
|
1364
|
+
PublishStatusUpdate(pubSub, { sessionId, ownerUserId, message: JSON.stringify(progressMessage) });
|
|
1365
1365
|
}
|
|
1366
1366
|
|
|
1367
1367
|
/**
|
|
@@ -1653,7 +1653,7 @@ export class MCPResolver extends ResolverBase {
|
|
|
1653
1653
|
* @param pubSub - PubSub engine
|
|
1654
1654
|
* @param event - OAuth event details
|
|
1655
1655
|
*/
|
|
1656
|
-
export async function
|
|
1656
|
+
export async function PublishMCPOAuthEvent(
|
|
1657
1657
|
pubSub: PubSubEngine,
|
|
1658
1658
|
event: {
|
|
1659
1659
|
eventType: MCPOAuthEventType;
|
|
@@ -1676,3 +1676,18 @@ export async function publishMCPOAuthEvent(
|
|
|
1676
1676
|
|
|
1677
1677
|
await pubSub.publish(MCP_OAUTH_EVENTS_TOPIC, payload);
|
|
1678
1678
|
}
|
|
1679
|
+
|
|
1680
|
+
/** @deprecated Use {@link PublishMCPOAuthEvent}. */
|
|
1681
|
+
export async function publishMCPOAuthEvent(
|
|
1682
|
+
pubSub: PubSubEngine,
|
|
1683
|
+
event: {
|
|
1684
|
+
eventType: MCPOAuthEventType;
|
|
1685
|
+
connectionId: string;
|
|
1686
|
+
authorizationUrl?: string;
|
|
1687
|
+
stateParameter?: string;
|
|
1688
|
+
errorMessage?: string;
|
|
1689
|
+
requiresReauthorization?: boolean;
|
|
1690
|
+
}
|
|
1691
|
+
): Promise<void> {
|
|
1692
|
+
return PublishMCPOAuthEvent(pubSub, event);
|
|
1693
|
+
}
|
|
@@ -50,7 +50,17 @@ export class RecordDependencyResult {
|
|
|
50
50
|
FieldName: string; // required
|
|
51
51
|
|
|
52
52
|
@Field(() => CompositeKeyOutputType)
|
|
53
|
+
PrimaryKey: CompositeKey;
|
|
54
|
+
|
|
55
|
+
/** The same key under its pre-6.2 name, so older clients keep working. */
|
|
56
|
+
@Field(() => CompositeKeyOutputType, { deprecationReason: 'Use PrimaryKey. CompositeKey will be removed in a future release.' })
|
|
53
57
|
CompositeKey: CompositeKey;
|
|
58
|
+
|
|
59
|
+
@Field(() => Boolean, { nullable: true })
|
|
60
|
+
IsSoftLink?: boolean;
|
|
61
|
+
|
|
62
|
+
@Field(() => String, { nullable: true })
|
|
63
|
+
EntityIDFieldName?: string;
|
|
54
64
|
}
|
|
55
65
|
|
|
56
66
|
@Resolver(RecordDependencyResult)
|
|
@@ -67,12 +77,14 @@ export class RecordDependencyResolver {
|
|
|
67
77
|
const ck = new CompositeKey(ckInput.KeyValuePairs);
|
|
68
78
|
const result = await md.GetRecordDependencies(entityName, ck);
|
|
69
79
|
|
|
70
|
-
// Map PrimaryKey to CompositeKey for GraphQL response
|
|
71
80
|
return result.map(dep => ({
|
|
72
81
|
EntityName: dep.EntityName,
|
|
73
82
|
RelatedEntityName: dep.RelatedEntityName,
|
|
74
83
|
FieldName: dep.FieldName,
|
|
75
|
-
|
|
84
|
+
PrimaryKey: dep.PrimaryKey,
|
|
85
|
+
CompositeKey: dep.PrimaryKey,
|
|
86
|
+
IsSoftLink: dep.IsSoftLink,
|
|
87
|
+
EntityIDFieldName: dep.EntityIDFieldName,
|
|
76
88
|
}));
|
|
77
89
|
} catch (e) {
|
|
78
90
|
LogError(e);
|
|
@@ -97,34 +97,34 @@ export class RunQueryResultType {
|
|
|
97
97
|
@InputType()
|
|
98
98
|
export class RunQueryCacheStatusInput {
|
|
99
99
|
@Field(() => String, { description: 'The maximum __mj_UpdatedAt value from cached results' })
|
|
100
|
-
maxUpdatedAt: string;
|
|
100
|
+
maxUpdatedAt: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
101
101
|
|
|
102
102
|
@Field(() => Int, { description: 'The number of rows in cached results' })
|
|
103
|
-
rowCount: number;
|
|
103
|
+
rowCount: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
@InputType()
|
|
107
107
|
export class RunQueryWithCacheCheckInput {
|
|
108
108
|
@Field(() => RunQueryInput, { description: 'The RunQuery parameters' })
|
|
109
|
-
params: RunQueryInput;
|
|
109
|
+
params: RunQueryInput; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
110
110
|
|
|
111
111
|
@Field(() => RunQueryCacheStatusInput, {
|
|
112
112
|
nullable: true,
|
|
113
113
|
description: 'Optional cache status - if provided, server will check if cache is current'
|
|
114
114
|
})
|
|
115
|
-
cacheStatus?: RunQueryCacheStatusInput;
|
|
115
|
+
cacheStatus?: RunQueryCacheStatusInput; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
@ObjectType()
|
|
119
119
|
export class RunQueryWithCacheCheckResultOutput {
|
|
120
120
|
@Field(() => Int, { description: 'The index of this query in the batch request' })
|
|
121
|
-
queryIndex: number;
|
|
121
|
+
queryIndex: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
122
122
|
|
|
123
123
|
@Field(() => String, { description: 'The query ID' })
|
|
124
|
-
queryId: string;
|
|
124
|
+
queryId: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
125
125
|
|
|
126
126
|
@Field(() => String, { description: "'current', 'stale', 'no_validation', or 'error'" })
|
|
127
|
-
status: string;
|
|
127
|
+
status: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
128
128
|
|
|
129
129
|
@Field(() => String, {
|
|
130
130
|
nullable: true,
|
|
@@ -133,25 +133,25 @@ export class RunQueryWithCacheCheckResultOutput {
|
|
|
133
133
|
Results?: string;
|
|
134
134
|
|
|
135
135
|
@Field(() => String, { nullable: true, description: 'Max __mj_UpdatedAt from results when stale' })
|
|
136
|
-
maxUpdatedAt?: string;
|
|
136
|
+
maxUpdatedAt?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
137
137
|
|
|
138
138
|
@Field(() => Int, { nullable: true, description: 'Row count of results when stale' })
|
|
139
|
-
rowCount?: number;
|
|
139
|
+
rowCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
140
140
|
|
|
141
141
|
@Field(() => String, { nullable: true, description: 'Error message if status is error' })
|
|
142
|
-
errorMessage?: string;
|
|
142
|
+
errorMessage?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
@ObjectType()
|
|
146
146
|
export class RunQueriesWithCacheCheckOutput {
|
|
147
147
|
@Field(() => Boolean, { description: 'Whether the overall operation succeeded' })
|
|
148
|
-
success: boolean;
|
|
148
|
+
success: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
149
149
|
|
|
150
150
|
@Field(() => [RunQueryWithCacheCheckResultOutput], { description: 'Results for each query in the batch' })
|
|
151
|
-
results: RunQueryWithCacheCheckResultOutput[];
|
|
151
|
+
results: RunQueryWithCacheCheckResultOutput[]; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
152
152
|
|
|
153
153
|
@Field(() => String, { nullable: true, description: 'Overall error message if success is false' })
|
|
154
|
-
errorMessage?: string;
|
|
154
|
+
errorMessage?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
@Resolver()
|