@memberjunction/server 6.2.0-edge.0 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.d.ts +2 -0
- package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.js +5 -1
- package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
- package/dist/agentSessions/SessionManager.js +2 -2
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts +8 -0
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts.map +1 -1
- package/dist/agentSessions/remoteBrowserGoalEngine.js +21 -5
- package/dist/agentSessions/remoteBrowserGoalEngine.js.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.d.ts +2 -0
- package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.js +5 -1
- package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
- package/dist/auth/index.d.ts +20 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +20 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +8 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +21 -5
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
- package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
- package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
- package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +65 -51
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/magicLink/index.d.ts +2 -2
- package/dist/auth/magicLink/index.d.ts.map +1 -1
- package/dist/auth/magicLink/index.js +2 -2
- package/dist/auth/magicLink/index.js.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
- package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.js +61 -61
- package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
- package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
- package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
- package/dist/auth/magicLink/redeemLanding.js +12 -4
- package/dist/auth/magicLink/redeemLanding.js.map +1 -1
- package/dist/auth/magicLink/types.d.ts +4 -4
- package/dist/auth/principals.d.ts +2 -0
- package/dist/auth/principals.d.ts.map +1 -1
- package/dist/auth/principals.js +6 -2
- package/dist/auth/principals.js.map +1 -1
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +3 -1
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +346 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -4
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +27 -19
- package/dist/context.js.map +1 -1
- package/dist/directives/Public.d.ts +2 -0
- package/dist/directives/Public.d.ts.map +1 -1
- package/dist/directives/Public.js +3 -1
- package/dist/directives/Public.js.map +1 -1
- package/dist/directives/RequireSystemUser.d.ts +2 -0
- package/dist/directives/RequireSystemUser.d.ts.map +1 -1
- package/dist/directives/RequireSystemUser.js +3 -1
- package/dist/directives/RequireSystemUser.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj.d.ts +11 -0
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +48 -0
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +94 -4
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
- package/dist/generic/CacheInvalidationResolver.js +122 -3
- package/dist/generic/CacheInvalidationResolver.js.map +1 -1
- package/dist/generic/DeleteOptionsInput.d.ts +8 -1
- package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
- package/dist/generic/DeleteOptionsInput.js +1 -1
- package/dist/generic/DeleteOptionsInput.js.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts +3 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.js +8 -4
- package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
- package/dist/generic/PushStatusResolver.d.ts +10 -1
- package/dist/generic/PushStatusResolver.d.ts.map +1 -1
- package/dist/generic/PushStatusResolver.js +11 -3
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +5 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +15 -8
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -9
- package/dist/index.js.map +1 -1
- package/dist/integration/CustomColumnPromoter.d.ts +2 -0
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +5 -1
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/integration/EntityMapLifecycle.d.ts +4 -0
- package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
- package/dist/integration/EntityMapLifecycle.js +10 -2
- package/dist/integration/EntityMapLifecycle.js.map +1 -1
- package/dist/logging/NoLog.d.ts +4 -0
- package/dist/logging/NoLog.d.ts.map +1 -1
- package/dist/logging/NoLog.js +10 -2
- package/dist/logging/NoLog.js.map +1 -1
- package/dist/logging/StartupLogger.d.ts +2 -0
- package/dist/logging/StartupLogger.d.ts.map +1 -1
- package/dist/logging/StartupLogger.js +5 -1
- package/dist/logging/StartupLogger.js.map +1 -1
- package/dist/logging/bootAudit.d.ts +11 -7
- package/dist/logging/bootAudit.d.ts.map +1 -1
- package/dist/logging/bootAudit.js +15 -7
- package/dist/logging/bootAudit.js.map +1 -1
- package/dist/logging/boundaryLogPayload.d.ts +4 -0
- package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
- package/dist/logging/boundaryLogPayload.js +5 -1
- package/dist/logging/boundaryLogPayload.js.map +1 -1
- package/dist/logging/secretRedactor.d.ts +2 -0
- package/dist/logging/secretRedactor.d.ts.map +1 -1
- package/dist/logging/secretRedactor.js +8 -4
- package/dist/logging/secretRedactor.js.map +1 -1
- package/dist/logging/shortenForLog.d.ts +2 -0
- package/dist/logging/shortenForLog.d.ts.map +1 -1
- package/dist/logging/shortenForLog.js +7 -3
- package/dist/logging/shortenForLog.js.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
- package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.js +8 -6
- package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
- package/dist/metadataRefreshSignal.d.ts +19 -0
- package/dist/metadataRefreshSignal.d.ts.map +1 -0
- package/dist/metadataRefreshSignal.js +45 -0
- package/dist/metadataRefreshSignal.js.map +1 -0
- package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
- package/dist/multiTenancy/index.d.ts +8 -0
- package/dist/multiTenancy/index.d.ts.map +1 -1
- package/dist/multiTenancy/index.js +21 -5
- package/dist/multiTenancy/index.js.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
- package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.js +14 -10
- package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
- package/dist/realtimeWidget/WidgetSessionService.js +27 -27
- package/dist/realtimeWidget/host-identity.d.ts +5 -1
- package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
- package/dist/realtimeWidget/host-identity.js +11 -3
- package/dist/realtimeWidget/host-identity.js.map +1 -1
- package/dist/realtimeWidget/index.d.ts +2 -2
- package/dist/realtimeWidget/index.d.ts.map +1 -1
- package/dist/realtimeWidget/index.js +2 -2
- package/dist/realtimeWidget/index.js.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.js +16 -4
- package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
- package/dist/realtimeWidget/widgetCore.d.ts +48 -0
- package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetCore.js +38 -10
- package/dist/realtimeWidget/widgetCore.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +3 -3
- package/dist/resolvers/FileResolver.js +3 -3
- package/dist/resolvers/GeoResolver.d.ts +2 -2
- package/dist/resolvers/GeoResolver.js +4 -4
- package/dist/resolvers/GetDataResolver.d.ts +14 -0
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +43 -15
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -2
- package/dist/resolvers/ListOperationsResolver.d.ts +20 -0
- package/dist/resolvers/ListOperationsResolver.d.ts.map +1 -1
- package/dist/resolvers/ListOperationsResolver.js +68 -28
- package/dist/resolvers/ListOperationsResolver.js.map +1 -1
- package/dist/resolvers/MCPResolver.d.ts +11 -1
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +7 -3
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
- package/dist/resolvers/RealtimeClientSessionResolver.js +3 -3
- package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
- package/dist/resolvers/RunAIAgentResolver.d.ts +10 -4
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +69 -38
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +2 -2
- package/dist/resolvers/RunTestResolver.js +5 -5
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
- package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.js +10 -2
- package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
- package/dist/resolvers/artifact-routing.d.ts +8 -8
- package/dist/resolvers/artifact-routing.js +2 -2
- package/dist/resolvers/artifact-routing.js.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
- package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.js +24 -8
- package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
- package/dist/resolvers/peaksSidecar.d.ts +4 -0
- package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
- package/dist/resolvers/peaksSidecar.js +10 -2
- package/dist/resolvers/peaksSidecar.js.map +1 -1
- package/dist/rest/EntityCRUDHandler.d.ts +28 -0
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +20 -4
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/MediaStreamHandler.d.ts +2 -0
- package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
- package/dist/rest/MediaStreamHandler.js +10 -6
- package/dist/rest/MediaStreamHandler.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +15 -3
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts +6 -4
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +15 -11
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
- package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
- package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
- package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
- package/dist/rest/SignatureWebhookHandler.js +5 -1
- package/dist/rest/SignatureWebhookHandler.js.map +1 -1
- package/dist/rest/UploadTokenManager.d.ts +24 -8
- package/dist/rest/UploadTokenManager.d.ts.map +1 -1
- package/dist/rest/UploadTokenManager.js +53 -21
- package/dist/rest/UploadTokenManager.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts +20 -0
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +20 -4
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/mediaRange.d.ts +4 -0
- package/dist/rest/mediaRange.d.ts.map +1 -1
- package/dist/rest/mediaRange.js +10 -2
- package/dist/rest/mediaRange.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +4 -0
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +13 -7
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/serverExtensionReservedRoots.d.ts +2 -0
- package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
- package/dist/serverExtensionReservedRoots.js +5 -1
- package/dist/serverExtensionReservedRoots.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +13 -8
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +16 -15
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -3
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +13 -5
- package/dist/util.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -0
- package/src/__tests__/FileResolverPeaks.test.ts +13 -13
- package/src/__tests__/ListOperationsResolver.test.ts +17 -17
- package/src/__tests__/MediaStreamHandler.test.ts +28 -28
- package/src/__tests__/NoLog.test.ts +11 -11
- package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
- package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
- package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
- package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
- package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
- package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
- package/src/__tests__/WidgetSessionService.test.ts +8 -4
- package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
- package/src/__tests__/bootAudit.test.ts +11 -11
- package/src/__tests__/boundaryLogPayload.test.ts +6 -6
- package/src/__tests__/cacheInvalidationRecordData.test.ts +177 -0
- package/src/__tests__/databaseAbstraction.test.ts +12 -6
- package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
- package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
- package/src/__tests__/magicLink.test.ts +73 -134
- package/src/__tests__/magicLinkService.consume.test.ts +224 -0
- package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
- package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
- package/src/__tests__/multiTenancy.security.test.ts +40 -40
- package/src/__tests__/multiTenancy.test.ts +18 -18
- package/src/__tests__/newUsers.test.ts +24 -23
- package/src/__tests__/principals.test.ts +22 -22
- package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
- package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
- package/src/__tests__/secretRedactor.test.ts +12 -12
- package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
- package/src/__tests__/subscriptionRedaction.test.ts +5 -5
- package/src/__tests__/unifiedAuth.test.ts +15 -9
- package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
- package/src/__tests__/widget.test.ts +45 -45
- package/src/__tests__/widgetGuestElevation.test.ts +7 -7
- package/src/__tests__/widgetHostIdentity.test.ts +14 -14
- package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
- package/src/agentSessions/SessionManager.ts +2 -2
- package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
- package/src/auth/AuthProviderCatalogRouter.ts +6 -1
- package/src/auth/__tests__/backward-compatibility.test.ts +3 -3
- package/src/auth/index.ts +43 -28
- package/src/auth/initializeProviders.ts +25 -5
- package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
- package/src/auth/magicLink/MagicLinkService.ts +71 -52
- package/src/auth/magicLink/index.ts +7 -7
- package/src/auth/magicLink/magicLinkCore.ts +96 -64
- package/src/auth/magicLink/redeemLanding.ts +14 -4
- package/src/auth/magicLink/types.ts +54 -54
- package/src/auth/newUsers.ts +1 -1
- package/src/auth/principals.ts +11 -2
- package/src/cache.ts +4 -1
- package/src/config.ts +37 -4
- package/src/context.ts +37 -24
- package/src/directives/Public.ts +4 -1
- package/src/directives/RequireSystemUser.ts +4 -1
- package/src/generated/graphql-schemas/__mj.ts +37 -0
- package/src/generic/CacheInvalidationResolver.ts +148 -4
- package/src/generic/DeleteOptionsInput.ts +9 -2
- package/src/generic/FireAndForgetHeartbeat.ts +19 -14
- package/src/generic/PushStatusResolver.ts +21 -7
- package/src/generic/ResolverBase.ts +16 -8
- package/src/generic/RunViewResolver.ts +22 -22
- package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
- package/src/index.ts +35 -9
- package/src/integration/CustomColumnPromoter.ts +6 -1
- package/src/integration/EntityMapLifecycle.ts +20 -2
- package/src/logging/NoLog.ts +16 -2
- package/src/logging/StartupLogger.ts +6 -1
- package/src/logging/bootAudit.ts +26 -16
- package/src/logging/boundaryLogPayload.ts +8 -1
- package/src/logging/secretRedactor.ts +14 -9
- package/src/logging/shortenForLog.ts +8 -3
- package/src/logging/variablesLoggingMiddleware.ts +9 -6
- package/src/metadataRefreshSignal.ts +45 -0
- package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
- package/src/multiTenancy/index.ts +29 -5
- package/src/realtimeWidget/WidgetRouter.ts +15 -10
- package/src/realtimeWidget/WidgetSessionService.ts +76 -76
- package/src/realtimeWidget/host-identity.ts +24 -10
- package/src/realtimeWidget/index.ts +3 -3
- package/src/realtimeWidget/visitorIdentity.ts +39 -8
- package/src/realtimeWidget/widgetCore.ts +75 -10
- package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
- package/src/resolvers/AdhocQueryResolver.ts +3 -3
- package/src/resolvers/AgentSessionResolver.ts +3 -3
- package/src/resolvers/ColorResolver.ts +6 -6
- package/src/resolvers/ComponentRegistryResolver.ts +36 -36
- package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
- package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
- package/src/resolvers/FileResolver.ts +42 -42
- package/src/resolvers/GeoResolver.ts +4 -4
- package/src/resolvers/GetDataResolver.ts +50 -15
- package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
- package/src/resolvers/ListOperationsResolver.ts +78 -28
- package/src/resolvers/MCPResolver.ts +30 -15
- package/src/resolvers/QueryResolver.ts +13 -13
- package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
- package/src/resolvers/RealtimeClientSessionResolver.ts +3 -3
- package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
- package/src/resolvers/RunAIAgentResolver.ts +113 -72
- package/src/resolvers/RunAIPromptResolver.ts +22 -22
- package/src/resolvers/RunTemplateResolver.ts +4 -4
- package/src/resolvers/RunTestResolver.ts +25 -25
- package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
- package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
- package/src/resolvers/TelemetryResolver.ts +79 -79
- package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
- package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
- package/src/resolvers/adhoc-query-helpers.ts +19 -2
- package/src/resolvers/artifact-routing.ts +19 -19
- package/src/resolvers/meetingRecordingRegistration.ts +44 -10
- package/src/resolvers/peaksSidecar.ts +12 -2
- package/src/rest/EntityCRUDHandler.ts +24 -4
- package/src/rest/MediaStreamHandler.ts +11 -6
- package/src/rest/OAuthCallbackHandler.ts +25 -7
- package/src/rest/RESTEndpointHandler.ts +20 -15
- package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
- package/src/rest/SignatureWebhookHandler.ts +6 -1
- package/src/rest/UploadTokenManager.ts +66 -30
- package/src/rest/ViewOperationsHandler.ts +24 -4
- package/src/rest/mediaRange.ts +16 -6
- package/src/rest/setupRESTEndpoints.ts +24 -12
- package/src/serverExtensionReservedRoots.ts +6 -1
- package/src/services/TaskGraphActionRunner.ts +16 -15
- package/src/types.ts +21 -16
- package/src/util.ts +16 -6
|
@@ -15,7 +15,7 @@ import { AppContext, UserPayload } from '../types.js';
|
|
|
15
15
|
import { LogError, LogStatus, UserInfo } from '@memberjunction/core';
|
|
16
16
|
import { TestEngine } from '@memberjunction/testing-engine';
|
|
17
17
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
18
|
-
import {
|
|
18
|
+
import { StartLivenessPulse } from '../generic/FireAndForgetHeartbeat.js';
|
|
19
19
|
import { TestRunVariables, TestLogMessage, TestRunResult as EngineTestRunResult } from '@memberjunction/testing-engine-base';
|
|
20
20
|
|
|
21
21
|
// ===== GraphQL Types =====
|
|
@@ -23,73 +23,73 @@ import { TestRunVariables, TestLogMessage, TestRunResult as EngineTestRunResult
|
|
|
23
23
|
@ObjectType()
|
|
24
24
|
export class TestRunResult {
|
|
25
25
|
@Field()
|
|
26
|
-
success: boolean;
|
|
26
|
+
success: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
27
27
|
|
|
28
28
|
@Field({ nullable: true })
|
|
29
|
-
errorMessage?: string;
|
|
29
|
+
errorMessage?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
30
30
|
|
|
31
31
|
@Field({ nullable: true })
|
|
32
|
-
executionTimeMs?: number;
|
|
32
|
+
executionTimeMs?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
33
33
|
|
|
34
34
|
@Field()
|
|
35
|
-
result: string; // JSON serialized TestRunResult
|
|
35
|
+
result: string; // JSON serialized TestRunResult — case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
@ObjectType()
|
|
39
39
|
export class TestSuiteRunResult {
|
|
40
40
|
@Field()
|
|
41
|
-
success: boolean;
|
|
41
|
+
success: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
42
42
|
|
|
43
43
|
@Field({ nullable: true })
|
|
44
|
-
errorMessage?: string;
|
|
44
|
+
errorMessage?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
45
45
|
|
|
46
46
|
@Field({ nullable: true })
|
|
47
|
-
executionTimeMs?: number;
|
|
47
|
+
executionTimeMs?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
48
48
|
|
|
49
49
|
@Field()
|
|
50
|
-
result: string; // JSON serialized TestSuiteRunResult
|
|
50
|
+
result: string; // JSON serialized TestSuiteRunResult — case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
@ObjectType()
|
|
54
54
|
export class TestExecutionProgress {
|
|
55
55
|
@Field()
|
|
56
|
-
currentStep: string;
|
|
56
|
+
currentStep: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
57
57
|
|
|
58
58
|
@Field(() => Int)
|
|
59
|
-
percentage: number;
|
|
59
|
+
percentage: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
60
60
|
|
|
61
61
|
@Field()
|
|
62
|
-
message: string;
|
|
62
|
+
message: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
63
63
|
|
|
64
64
|
@Field({ nullable: true })
|
|
65
|
-
testName?: string;
|
|
65
|
+
testName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
66
66
|
|
|
67
67
|
@Field({ nullable: true })
|
|
68
|
-
driverType?: string;
|
|
68
|
+
driverType?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
69
69
|
|
|
70
70
|
@Field({ nullable: true })
|
|
71
|
-
oracleEvaluation?: string;
|
|
71
|
+
oracleEvaluation?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
@ObjectType()
|
|
75
75
|
export class TestExecutionStreamMessage {
|
|
76
76
|
@Field(() => ID)
|
|
77
|
-
sessionId: string;
|
|
77
|
+
sessionId: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
78
78
|
|
|
79
79
|
@Field(() => ID)
|
|
80
|
-
testRunId: string;
|
|
80
|
+
testRunId: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
81
81
|
|
|
82
82
|
@Field()
|
|
83
|
-
type: 'progress' | 'oracle_eval' | 'complete' | 'error';
|
|
83
|
+
type: 'progress' | 'oracle_eval' | 'complete' | 'error'; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
84
84
|
|
|
85
85
|
@Field({ nullable: true })
|
|
86
|
-
progress?: TestExecutionProgress;
|
|
86
|
+
progress?: TestExecutionProgress; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
87
87
|
|
|
88
88
|
@Field()
|
|
89
|
-
timestamp: Date;
|
|
89
|
+
timestamp: Date; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
90
90
|
|
|
91
91
|
// Not a GraphQL field - used internally
|
|
92
|
-
testRun?: Record<string, unknown>;
|
|
92
|
+
testRun?: Record<string, unknown>; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
// ===== Resolver =====
|
|
@@ -256,7 +256,7 @@ export class RunTestResolver extends ResolverBase {
|
|
|
256
256
|
): void {
|
|
257
257
|
// Keep-alive pulse so a long-running test never trips the client idle timeout.
|
|
258
258
|
// The client captures the testRunId from progress events for reconciliation.
|
|
259
|
-
const pulse =
|
|
259
|
+
const pulse = StartLivenessPulse({ pubSub, sessionId: userPayload.sessionId, ownerUserId: userPayload.userRecord.ID, resolver: 'RunTestResolver' });
|
|
260
260
|
|
|
261
261
|
this.executeTest(testId, verbose, environment, tags, variables, pubSub, userPayload, user)
|
|
262
262
|
.catch((error: unknown) => {
|
|
@@ -264,7 +264,7 @@ export class RunTestResolver extends ResolverBase {
|
|
|
264
264
|
LogError(`🔥 Fire-and-forget test execution failed: ${errorMessage}`, undefined, error);
|
|
265
265
|
this.publishFireAndForgetError(pubSub, userPayload, testId, errorMessage);
|
|
266
266
|
})
|
|
267
|
-
.finally(() => pulse.
|
|
267
|
+
.finally(() => pulse.Stop());
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
/**
|
|
@@ -352,7 +352,7 @@ export class RunTestResolver extends ResolverBase {
|
|
|
352
352
|
// (Suite reconciliation isn't wired: suite progress carries the per-test run id, not the
|
|
353
353
|
// Test Suite Run id, so the client has no handle to reconcile against — the pulse is the
|
|
354
354
|
// protection here.)
|
|
355
|
-
const pulse =
|
|
355
|
+
const pulse = StartLivenessPulse({ pubSub, sessionId: userPayload.sessionId, ownerUserId: userPayload.userRecord.ID, resolver: 'RunTestResolver' });
|
|
356
356
|
|
|
357
357
|
this.executeSuite(
|
|
358
358
|
suiteId, verbose, environment, parallel, tags, variables,
|
|
@@ -361,7 +361,7 @@ export class RunTestResolver extends ResolverBase {
|
|
|
361
361
|
const errorMessage = (error instanceof Error) ? error.message : 'Unknown background suite execution error';
|
|
362
362
|
LogError(`🔥 Fire-and-forget suite execution failed: ${errorMessage}`, undefined, error);
|
|
363
363
|
this.publishFireAndForgetSuiteError(pubSub, userPayload, suiteId, errorMessage);
|
|
364
|
-
}).finally(() => pulse.
|
|
364
|
+
}).finally(() => pulse.Stop());
|
|
365
365
|
}
|
|
366
366
|
|
|
367
367
|
// ===== Result Building =====
|
|
@@ -5,7 +5,7 @@ import { SQLServerDataProvider } from '@memberjunction/sqlserver-dataprovider';
|
|
|
5
5
|
import { v4 as uuidv4 } from 'uuid';
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import * as fs from 'fs/promises';
|
|
8
|
-
import {
|
|
8
|
+
import { LoadConfig } from '../config.js';
|
|
9
9
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
10
10
|
import { GetReadOnlyProvider } from '../util.js';
|
|
11
11
|
import { UserCache, SqlLoggingOptions as ProviderSqlLoggingOptions } from '@memberjunction/generic-database-provider';
|
|
@@ -18,187 +18,187 @@ import { UserCache, SqlLoggingOptions as ProviderSqlLoggingOptions } from '@memb
|
|
|
18
18
|
export class SqlLoggingOptions {
|
|
19
19
|
/** Whether to format SQL output as a database migration file with proper headers */
|
|
20
20
|
@Field(() => Boolean, { nullable: true })
|
|
21
|
-
formatAsMigration?: boolean;
|
|
21
|
+
formatAsMigration?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
22
22
|
|
|
23
23
|
/** Optional description or notes for this logging configuration */
|
|
24
24
|
@Field(() => String, { nullable: true })
|
|
25
|
-
description?: string;
|
|
25
|
+
description?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
26
26
|
|
|
27
27
|
/** Types of SQL statements to capture: 'queries', 'mutations', or 'both' */
|
|
28
28
|
@Field(() => String, { nullable: true })
|
|
29
|
-
statementTypes?: 'queries' | 'mutations' | 'both';
|
|
29
|
+
statementTypes?: 'queries' | 'mutations' | 'both'; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
30
30
|
|
|
31
31
|
/** String separator to use between SQL statements (e.g., 'GO' for SQL Server) */
|
|
32
32
|
@Field(() => String, { nullable: true })
|
|
33
|
-
batchSeparator?: string;
|
|
33
|
+
batchSeparator?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
34
34
|
|
|
35
35
|
/** Whether to format SQL with proper indentation and line breaks */
|
|
36
36
|
@Field(() => Boolean, { nullable: true })
|
|
37
|
-
prettyPrint?: boolean;
|
|
37
|
+
prettyPrint?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
38
38
|
|
|
39
39
|
/** Whether to include metadata about record changes in the log output */
|
|
40
40
|
@Field(() => Boolean, { nullable: true })
|
|
41
|
-
logRecordChangeMetadata?: boolean;
|
|
41
|
+
logRecordChangeMetadata?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
42
42
|
|
|
43
43
|
/** Whether to keep log files even if they contain no SQL statements */
|
|
44
44
|
@Field(() => Boolean, { nullable: true })
|
|
45
|
-
retainEmptyLogFiles?: boolean;
|
|
45
|
+
retainEmptyLogFiles?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
46
46
|
|
|
47
47
|
/** Email address to filter SQL statements by user (when filtering is enabled) */
|
|
48
48
|
@Field(() => String, { nullable: true })
|
|
49
|
-
filterByUserId?: string;
|
|
49
|
+
filterByUserId?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
50
50
|
|
|
51
51
|
/** Array of regex/wildcard patterns to filter SQL statements */
|
|
52
52
|
@Field(() => [String], { nullable: true })
|
|
53
|
-
filterPatterns?: string[];
|
|
53
|
+
filterPatterns?: string[]; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
54
54
|
|
|
55
55
|
/** How to apply patterns: 'include' or 'exclude' (default: exclude) */
|
|
56
56
|
@Field(() => String, { nullable: true })
|
|
57
|
-
filterType?: 'include' | 'exclude';
|
|
57
|
+
filterType?: 'include' | 'exclude'; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
58
58
|
|
|
59
59
|
/** Whether to output verbose debug information to console */
|
|
60
60
|
@Field(() => Boolean, { nullable: true })
|
|
61
|
-
verboseOutput?: boolean;
|
|
61
|
+
verboseOutput?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
62
62
|
|
|
63
63
|
/** Default schema name for Flyway migration placeholder replacement */
|
|
64
64
|
@Field(() => String, { nullable: true })
|
|
65
|
-
defaultSchemaName?: string;
|
|
65
|
+
defaultSchemaName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
66
66
|
|
|
67
67
|
/** Human-readable name for the logging session */
|
|
68
68
|
@Field(() => String, { nullable: true })
|
|
69
|
-
sessionName?: string;
|
|
69
|
+
sessionName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
@ObjectType()
|
|
73
73
|
export class SqlLoggingSession {
|
|
74
74
|
/** Unique identifier for this logging session */
|
|
75
75
|
@Field(() => String)
|
|
76
|
-
id: string;
|
|
76
|
+
id: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
77
77
|
|
|
78
78
|
/** Absolute file path where SQL statements are being logged */
|
|
79
79
|
@Field(() => String)
|
|
80
|
-
filePath: string;
|
|
80
|
+
filePath: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
81
81
|
|
|
82
82
|
/** Timestamp when this logging session was started */
|
|
83
83
|
@Field(() => Date)
|
|
84
|
-
startTime: Date;
|
|
84
|
+
startTime: Date; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
85
85
|
|
|
86
86
|
/** Number of SQL statements captured so far in this session */
|
|
87
87
|
@Field(() => Int)
|
|
88
|
-
statementCount: number;
|
|
88
|
+
statementCount: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
89
89
|
|
|
90
90
|
/** Configuration options applied to this logging session */
|
|
91
91
|
@Field(() => SqlLoggingOptions)
|
|
92
|
-
options: SqlLoggingOptions;
|
|
92
|
+
options: SqlLoggingOptions; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
93
93
|
|
|
94
94
|
/** Human-readable name for this logging session */
|
|
95
95
|
@Field(() => String, { nullable: true })
|
|
96
|
-
sessionName?: string;
|
|
96
|
+
sessionName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
97
97
|
|
|
98
98
|
/** Email address of user whose SQL is being filtered (if filtering enabled) */
|
|
99
99
|
@Field(() => String, { nullable: true })
|
|
100
|
-
filterByUserId?: string;
|
|
100
|
+
filterByUserId?: 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
|
|
|
103
103
|
@InputType()
|
|
104
104
|
export class SqlLoggingOptionsInput {
|
|
105
105
|
/** Whether to format SQL output as a database migration file with proper headers */
|
|
106
106
|
@Field(() => Boolean, { nullable: true })
|
|
107
|
-
formatAsMigration?: boolean;
|
|
107
|
+
formatAsMigration?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
108
108
|
|
|
109
109
|
/** Optional description or notes for this logging configuration */
|
|
110
110
|
@Field(() => String, { nullable: true })
|
|
111
|
-
description?: string;
|
|
111
|
+
description?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
112
112
|
|
|
113
113
|
/** Types of SQL statements to capture: 'queries', 'mutations', or 'both' */
|
|
114
114
|
@Field(() => String, { nullable: true })
|
|
115
|
-
statementTypes?: 'queries' | 'mutations' | 'both';
|
|
115
|
+
statementTypes?: 'queries' | 'mutations' | 'both'; // 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
|
/** String separator to use between SQL statements (e.g., 'GO' for SQL Server) */
|
|
118
118
|
@Field(() => String, { nullable: true })
|
|
119
|
-
batchSeparator?: string;
|
|
119
|
+
batchSeparator?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
120
120
|
|
|
121
121
|
/** Whether to format SQL with proper indentation and line breaks */
|
|
122
122
|
@Field(() => Boolean, { nullable: true })
|
|
123
|
-
prettyPrint?: boolean;
|
|
123
|
+
prettyPrint?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
124
124
|
|
|
125
125
|
/** Whether to include metadata about record changes in the log output */
|
|
126
126
|
@Field(() => Boolean, { nullable: true })
|
|
127
|
-
logRecordChangeMetadata?: boolean;
|
|
127
|
+
logRecordChangeMetadata?: boolean; // 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
|
/** Whether to keep log files even if they contain no SQL statements */
|
|
130
130
|
@Field(() => Boolean, { nullable: true })
|
|
131
|
-
retainEmptyLogFiles?: boolean;
|
|
131
|
+
retainEmptyLogFiles?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
132
132
|
|
|
133
133
|
/** Email address to filter SQL statements by user (when filtering is enabled) */
|
|
134
134
|
@Field(() => String, { nullable: true })
|
|
135
|
-
filterByUserId?: string;
|
|
135
|
+
filterByUserId?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
136
136
|
|
|
137
137
|
/** Array of regex/wildcard patterns to filter SQL statements */
|
|
138
138
|
@Field(() => [String], { nullable: true })
|
|
139
|
-
filterPatterns?: string[];
|
|
139
|
+
filterPatterns?: string[]; // 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
|
/** How to apply patterns: 'include' or 'exclude' (default: exclude) */
|
|
142
142
|
@Field(() => String, { nullable: true })
|
|
143
|
-
filterType?: 'include' | 'exclude';
|
|
143
|
+
filterType?: 'include' | 'exclude'; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
144
144
|
|
|
145
145
|
/** Whether to output verbose debug information to console */
|
|
146
146
|
@Field(() => Boolean, { nullable: true })
|
|
147
|
-
verboseOutput?: boolean;
|
|
147
|
+
verboseOutput?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
148
148
|
|
|
149
149
|
/** Default schema name for Flyway migration placeholder replacement */
|
|
150
150
|
@Field(() => String, { nullable: true })
|
|
151
|
-
defaultSchemaName?: string;
|
|
151
|
+
defaultSchemaName?: string; // 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
|
/** Human-readable name for the logging session */
|
|
154
154
|
@Field(() => String, { nullable: true })
|
|
155
|
-
sessionName?: string;
|
|
155
|
+
sessionName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
@InputType()
|
|
159
159
|
export class StartSqlLoggingInput {
|
|
160
160
|
/** Optional custom filename for the SQL log file (auto-generated if not provided) */
|
|
161
161
|
@Field(() => String, { nullable: true })
|
|
162
|
-
fileName?: string;
|
|
162
|
+
fileName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
163
163
|
|
|
164
164
|
/** Configuration options for the logging session (merged with server defaults) */
|
|
165
165
|
@Field(() => SqlLoggingOptionsInput, { nullable: true })
|
|
166
|
-
options?: SqlLoggingOptionsInput;
|
|
166
|
+
options?: SqlLoggingOptionsInput; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
167
167
|
|
|
168
168
|
/** Whether to filter SQL statements to only those from the current user */
|
|
169
169
|
@Field(() => Boolean, { nullable: true })
|
|
170
|
-
filterToCurrentUser?: boolean;
|
|
170
|
+
filterToCurrentUser?: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
@ObjectType()
|
|
174
174
|
export class SqlLoggingConfig {
|
|
175
175
|
/** Whether SQL logging is enabled in the server configuration */
|
|
176
176
|
@Field(() => Boolean)
|
|
177
|
-
enabled: boolean;
|
|
177
|
+
enabled: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
178
178
|
|
|
179
179
|
/** Default logging options applied to new sessions (can be overridden) */
|
|
180
180
|
@Field(() => SqlLoggingOptions)
|
|
181
|
-
defaultOptions: SqlLoggingOptions;
|
|
181
|
+
defaultOptions: SqlLoggingOptions; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
182
182
|
|
|
183
183
|
/** Directory path where SQL log files are allowed to be created */
|
|
184
184
|
@Field(() => String)
|
|
185
|
-
allowedLogDirectory: string;
|
|
185
|
+
allowedLogDirectory: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
186
186
|
|
|
187
187
|
/** Maximum number of concurrent SQL logging sessions allowed */
|
|
188
188
|
@Field(() => Int)
|
|
189
|
-
maxActiveSessions: number;
|
|
189
|
+
maxActiveSessions: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
190
190
|
|
|
191
191
|
/** Whether to automatically delete log files that contain no SQL statements */
|
|
192
192
|
@Field(() => Boolean)
|
|
193
|
-
autoCleanupEmptyFiles: boolean;
|
|
193
|
+
autoCleanupEmptyFiles: boolean; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
194
194
|
|
|
195
195
|
/** Timeout in milliseconds after which inactive sessions are automatically stopped */
|
|
196
196
|
@Field(() => Int)
|
|
197
|
-
sessionTimeout: number;
|
|
197
|
+
sessionTimeout: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
198
198
|
|
|
199
199
|
/** Current number of active SQL logging sessions */
|
|
200
200
|
@Field(() => Int)
|
|
201
|
-
activeSessionCount: number;
|
|
201
|
+
activeSessionCount: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
/**
|
|
@@ -312,9 +312,9 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
312
312
|
* ```
|
|
313
313
|
*/
|
|
314
314
|
@Query(() => SqlLoggingConfig)
|
|
315
|
-
async sqlLoggingConfig(@Ctx() context: AppContext): Promise<SqlLoggingConfig> {
|
|
315
|
+
async sqlLoggingConfig(@Ctx() context: AppContext): Promise<SqlLoggingConfig> { // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
316
316
|
await this.checkOwnerAccess(context);
|
|
317
|
-
const config = await
|
|
317
|
+
const config = await LoadConfig();
|
|
318
318
|
const provider = GetReadOnlyProvider(context.providers, {allowFallbackToReadWrite: true}) as unknown as SQLServerDataProvider;
|
|
319
319
|
const activeSessions = provider.GetActiveSqlLoggingSessions();
|
|
320
320
|
|
|
@@ -368,7 +368,7 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
368
368
|
* ```
|
|
369
369
|
*/
|
|
370
370
|
@Query(() => [SqlLoggingSession])
|
|
371
|
-
async activeSqlLoggingSessions(@Ctx() context: AppContext): Promise<SqlLoggingSession[]> {
|
|
371
|
+
async activeSqlLoggingSessions(@Ctx() context: AppContext): Promise<SqlLoggingSession[]> { // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
372
372
|
await this.checkOwnerAccess(context);
|
|
373
373
|
const provider = GetReadOnlyProvider(context.providers, {allowFallbackToReadWrite: true}) as unknown as SQLServerDataProvider;
|
|
374
374
|
const sessions = provider.GetActiveSqlLoggingSessions();
|
|
@@ -422,12 +422,12 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
422
422
|
* ```
|
|
423
423
|
*/
|
|
424
424
|
@Mutation(() => SqlLoggingSession)
|
|
425
|
-
async startSqlLogging(
|
|
425
|
+
async startSqlLogging( // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
426
426
|
@Arg('input', () => StartSqlLoggingInput) input: StartSqlLoggingInput,
|
|
427
427
|
@Ctx() context: AppContext
|
|
428
428
|
): Promise<SqlLoggingSession> {
|
|
429
429
|
await this.checkOwnerAccess(context);
|
|
430
|
-
const config = await
|
|
430
|
+
const config = await LoadConfig();
|
|
431
431
|
|
|
432
432
|
// Check if SQL logging is enabled
|
|
433
433
|
if (!config.sqlLogging?.enabled) {
|
|
@@ -516,7 +516,7 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
516
516
|
* ```
|
|
517
517
|
*/
|
|
518
518
|
@Mutation(() => Boolean)
|
|
519
|
-
async stopSqlLogging(
|
|
519
|
+
async stopSqlLogging( // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
520
520
|
@Arg('sessionId', () => String) sessionId: string,
|
|
521
521
|
@Ctx() context: AppContext
|
|
522
522
|
): Promise<boolean> {
|
|
@@ -562,7 +562,7 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
562
562
|
* ```
|
|
563
563
|
*/
|
|
564
564
|
@Mutation(() => Boolean)
|
|
565
|
-
async stopAllSqlLogging(@Ctx() context: AppContext): Promise<boolean> {
|
|
565
|
+
async stopAllSqlLogging(@Ctx() context: AppContext): Promise<boolean> { // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
566
566
|
await this.checkOwnerAccess(context);
|
|
567
567
|
const provider = GetReadOnlyProvider(context.providers, {allowFallbackToReadWrite: true}) as unknown as SQLServerDataProvider;
|
|
568
568
|
await provider.DisposeAllSqlLoggingSessions();
|
|
@@ -597,14 +597,14 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
597
597
|
* ```
|
|
598
598
|
*/
|
|
599
599
|
@Mutation(() => SqlLoggingOptions)
|
|
600
|
-
async updateSqlLoggingDefaults(
|
|
600
|
+
async updateSqlLoggingDefaults( // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
601
601
|
@Arg('options', () => SqlLoggingOptionsInput) options: SqlLoggingOptionsInput,
|
|
602
602
|
@Ctx() context: AppContext
|
|
603
603
|
): Promise<SqlLoggingOptions> {
|
|
604
604
|
await this.checkOwnerAccess(context);
|
|
605
605
|
// Note: This updates the runtime configuration only, not the file
|
|
606
606
|
// In a production system, you might want to persist this to a database
|
|
607
|
-
const config = await
|
|
607
|
+
const config = await LoadConfig();
|
|
608
608
|
if (!config.sqlLogging) {
|
|
609
609
|
throw new Error('SQL logging configuration not found');
|
|
610
610
|
}
|
|
@@ -640,13 +640,13 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
640
640
|
* ```
|
|
641
641
|
*/
|
|
642
642
|
@Query(() => String)
|
|
643
|
-
async readSqlLogFile(
|
|
643
|
+
async readSqlLogFile( // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
644
644
|
@Arg('sessionId', () => String) sessionId: string,
|
|
645
645
|
@Arg('maxLines', () => Int, { nullable: true }) maxLines: number | null,
|
|
646
646
|
@Ctx() context: AppContext
|
|
647
647
|
): Promise<string> {
|
|
648
648
|
await this.checkOwnerAccess(context);
|
|
649
|
-
const config = await
|
|
649
|
+
const config = await LoadConfig();
|
|
650
650
|
|
|
651
651
|
// Check if SQL logging is enabled
|
|
652
652
|
if (!config.sqlLogging?.enabled) {
|
|
@@ -707,7 +707,7 @@ export class SqlLoggingConfigResolver extends ResolverBase {
|
|
|
707
707
|
* @throws Error if user doesn't have Owner privileges
|
|
708
708
|
*/
|
|
709
709
|
@Query(() => String)
|
|
710
|
-
async debugCurrentUserEmail(@Ctx() context: AppContext): Promise<string> {
|
|
710
|
+
async debugCurrentUserEmail(@Ctx() context: AppContext): Promise<string> { // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
711
711
|
await this.checkOwnerAccess(context);
|
|
712
712
|
|
|
713
713
|
const contextUserEmail = context.userPayload?.email || 'NOT_SET';
|
|
@@ -26,86 +26,86 @@ export const TASK_GRAPH_FRAMES_TOPIC = 'TASK_GRAPH_FRAMES';
|
|
|
26
26
|
@ObjectType()
|
|
27
27
|
export class TaskGraphFrameNotification {
|
|
28
28
|
@Field(() => String)
|
|
29
|
-
kind!: string;
|
|
29
|
+
kind!: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
30
30
|
|
|
31
31
|
@Field(() => ID)
|
|
32
|
-
parentTaskId!: string;
|
|
32
|
+
parentTaskId!: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
33
33
|
|
|
34
34
|
@Field(() => ID, { nullable: true })
|
|
35
|
-
taskId?: string;
|
|
35
|
+
taskId?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
36
36
|
|
|
37
37
|
@Field(() => String, { nullable: true })
|
|
38
|
-
taskName?: string;
|
|
38
|
+
taskName?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
39
39
|
|
|
40
40
|
@Field(() => String, { nullable: true })
|
|
41
|
-
status?: string;
|
|
41
|
+
status?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
42
42
|
|
|
43
43
|
@Field(() => String, { nullable: true })
|
|
44
|
-
errorMessage?: string;
|
|
44
|
+
errorMessage?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
45
45
|
|
|
46
46
|
@Field(() => ID, { nullable: true })
|
|
47
|
-
assignedUserId?: string;
|
|
47
|
+
assignedUserId?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
48
48
|
|
|
49
49
|
@Field(() => Number, { nullable: true })
|
|
50
|
-
completedCount?: number;
|
|
50
|
+
completedCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
51
51
|
|
|
52
52
|
@Field(() => Number, { nullable: true })
|
|
53
|
-
totalCount?: number;
|
|
53
|
+
totalCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
54
54
|
|
|
55
55
|
// ── GateDecision ──────────────────────────────────────────────────────────
|
|
56
56
|
@Field(() => ID, { nullable: true })
|
|
57
|
-
edgeId?: string;
|
|
57
|
+
edgeId?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
58
58
|
|
|
59
59
|
@Field(() => ID, { nullable: true })
|
|
60
|
-
dependsOnTaskId?: string;
|
|
60
|
+
dependsOnTaskId?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
61
61
|
|
|
62
62
|
/** 'satisfied' | 'notTaken' | 'held' */
|
|
63
63
|
@Field(() => String, { nullable: true })
|
|
64
|
-
verdict?: string;
|
|
64
|
+
verdict?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
65
65
|
|
|
66
66
|
@Field(() => String, { nullable: true })
|
|
67
|
-
conditionText?: string;
|
|
67
|
+
conditionText?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
68
68
|
|
|
69
69
|
@Field(() => String, { nullable: true })
|
|
70
|
-
reason?: string;
|
|
70
|
+
reason?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
71
71
|
|
|
72
72
|
// ── ClaimChanged ──────────────────────────────────────────────────────────
|
|
73
73
|
/** 'claimed' | 'heartbeat-lost' | 'reclaimed' */
|
|
74
74
|
@Field(() => String, { nullable: true })
|
|
75
|
-
claimEvent?: string;
|
|
75
|
+
claimEvent?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
76
76
|
|
|
77
77
|
@Field(() => String, { nullable: true })
|
|
78
|
-
claimedBy?: string;
|
|
78
|
+
claimedBy?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
79
79
|
|
|
80
80
|
@Field(() => String, { nullable: true })
|
|
81
|
-
claimExpiresAt?: string;
|
|
81
|
+
claimExpiresAt?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
82
82
|
|
|
83
83
|
// ── PassCompleted ─────────────────────────────────────────────────────────
|
|
84
84
|
@Field(() => Number, { nullable: true })
|
|
85
|
-
passNumber?: number;
|
|
85
|
+
passNumber?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
86
86
|
|
|
87
87
|
@Field(() => Number, { nullable: true })
|
|
88
|
-
eligibleCount?: number;
|
|
88
|
+
eligibleCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
89
89
|
|
|
90
90
|
@Field(() => Number, { nullable: true })
|
|
91
|
-
heldCount?: number;
|
|
91
|
+
heldCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
92
92
|
|
|
93
93
|
@Field(() => Number, { nullable: true })
|
|
94
|
-
claimedCount?: number;
|
|
94
|
+
claimedCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
95
95
|
|
|
96
96
|
/** The dispatcher instance's own load across every graph — not this graph's in-flight count. */
|
|
97
97
|
@Field(() => Number, { nullable: true })
|
|
98
|
-
instanceInFlightCount?: number;
|
|
98
|
+
instanceInFlightCount?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
99
99
|
|
|
100
100
|
// ── NodeProgress ──────────────────────────────────────────────────────────
|
|
101
101
|
@Field(() => String, { nullable: true })
|
|
102
|
-
progressMessage?: string;
|
|
102
|
+
progressMessage?: string; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
103
103
|
|
|
104
104
|
@Field(() => Number, { nullable: true })
|
|
105
|
-
progressPercent?: number;
|
|
105
|
+
progressPercent?: number; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
106
106
|
|
|
107
107
|
@Field(() => Date)
|
|
108
|
-
date!: Date;
|
|
108
|
+
date!: Date; // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
/**
|
|
@@ -137,7 +137,7 @@ export interface TaskGraphFrameFilterContext {
|
|
|
137
137
|
* another user's workflow — including its per-step error messages. **Fails closed** — a missing
|
|
138
138
|
* identity on either side never matches.
|
|
139
139
|
*/
|
|
140
|
-
export function
|
|
140
|
+
export function TaskGraphFrameFilter(data: {
|
|
141
141
|
payload: TaskGraphFramePayload;
|
|
142
142
|
args: TaskGraphFrameArgs;
|
|
143
143
|
context: TaskGraphFrameFilterContext | undefined;
|
|
@@ -156,6 +156,15 @@ export function taskGraphFrameFilter(data: {
|
|
|
156
156
|
return UUIDsEqual(payload.ownerUserId, connectionUserId);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
+
/** @deprecated Use {@link TaskGraphFrameFilter}. */
|
|
160
|
+
export function taskGraphFrameFilter(data: {
|
|
161
|
+
payload: TaskGraphFramePayload;
|
|
162
|
+
args: TaskGraphFrameArgs;
|
|
163
|
+
context: TaskGraphFrameFilterContext | undefined;
|
|
164
|
+
}): boolean {
|
|
165
|
+
return TaskGraphFrameFilter(data);
|
|
166
|
+
}
|
|
167
|
+
|
|
159
168
|
/**
|
|
160
169
|
* MJServer's `TaskGraphObserver` — turns dispatcher frames into a PubSub publish.
|
|
161
170
|
*
|
|
@@ -189,9 +198,9 @@ export class TaskGraphFrameResolver {
|
|
|
189
198
|
@Subscription(() => TaskGraphFrameNotification, {
|
|
190
199
|
topics: TASK_GRAPH_FRAMES_TOPIC,
|
|
191
200
|
filter: (data: ResolverFilterData<TaskGraphFramePayload, TaskGraphFrameArgs, TaskGraphFrameFilterContext>) =>
|
|
192
|
-
|
|
201
|
+
TaskGraphFrameFilter(data),
|
|
193
202
|
})
|
|
194
|
-
taskGraphFrames(
|
|
203
|
+
taskGraphFrames( // case-violation-ok-legacy-back-compat: the property name is the GraphQL schema field name — renaming it breaks every client query
|
|
195
204
|
@Root() payload: TaskGraphFramePayload,
|
|
196
205
|
@Arg('parentTaskId', () => ID) parentTaskId: string
|
|
197
206
|
): TaskGraphFrameNotification {
|