@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.
Files changed (403) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/agentSessions/ReturningVisitorRecap.d.ts +2 -0
  3. package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
  4. package/dist/agentSessions/ReturningVisitorRecap.js +5 -1
  5. package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
  6. package/dist/agentSessions/SessionManager.js +2 -2
  7. package/dist/agentSessions/remoteBrowserGoalEngine.d.ts +8 -0
  8. package/dist/agentSessions/remoteBrowserGoalEngine.d.ts.map +1 -1
  9. package/dist/agentSessions/remoteBrowserGoalEngine.js +21 -5
  10. package/dist/agentSessions/remoteBrowserGoalEngine.js.map +1 -1
  11. package/dist/auth/AuthProviderCatalogRouter.d.ts +2 -0
  12. package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
  13. package/dist/auth/AuthProviderCatalogRouter.js +5 -1
  14. package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
  15. package/dist/auth/index.d.ts +20 -1
  16. package/dist/auth/index.d.ts.map +1 -1
  17. package/dist/auth/index.js +20 -10
  18. package/dist/auth/index.js.map +1 -1
  19. package/dist/auth/initializeProviders.d.ts +8 -0
  20. package/dist/auth/initializeProviders.d.ts.map +1 -1
  21. package/dist/auth/initializeProviders.js +21 -5
  22. package/dist/auth/initializeProviders.js.map +1 -1
  23. package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
  24. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  25. package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
  26. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  27. package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
  28. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  29. package/dist/auth/magicLink/MagicLinkService.js +65 -51
  30. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  31. package/dist/auth/magicLink/index.d.ts +2 -2
  32. package/dist/auth/magicLink/index.d.ts.map +1 -1
  33. package/dist/auth/magicLink/index.js +2 -2
  34. package/dist/auth/magicLink/index.js.map +1 -1
  35. package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
  36. package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
  37. package/dist/auth/magicLink/magicLinkCore.js +61 -61
  38. package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
  39. package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
  40. package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
  41. package/dist/auth/magicLink/redeemLanding.js +12 -4
  42. package/dist/auth/magicLink/redeemLanding.js.map +1 -1
  43. package/dist/auth/magicLink/types.d.ts +4 -4
  44. package/dist/auth/principals.d.ts +2 -0
  45. package/dist/auth/principals.d.ts.map +1 -1
  46. package/dist/auth/principals.js +6 -2
  47. package/dist/auth/principals.js.map +1 -1
  48. package/dist/cache.d.ts +2 -0
  49. package/dist/cache.d.ts.map +1 -1
  50. package/dist/cache.js +3 -1
  51. package/dist/cache.js.map +1 -1
  52. package/dist/config.d.ts +346 -2
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +34 -4
  55. package/dist/config.js.map +1 -1
  56. package/dist/context.d.ts +20 -0
  57. package/dist/context.d.ts.map +1 -1
  58. package/dist/context.js +27 -19
  59. package/dist/context.js.map +1 -1
  60. package/dist/directives/Public.d.ts +2 -0
  61. package/dist/directives/Public.d.ts.map +1 -1
  62. package/dist/directives/Public.js +3 -1
  63. package/dist/directives/Public.js.map +1 -1
  64. package/dist/directives/RequireSystemUser.d.ts +2 -0
  65. package/dist/directives/RequireSystemUser.d.ts.map +1 -1
  66. package/dist/directives/RequireSystemUser.js +3 -1
  67. package/dist/directives/RequireSystemUser.js.map +1 -1
  68. package/dist/generated/graphql-schemas/__mj.d.ts +11 -0
  69. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  70. package/dist/generated/graphql-schemas/__mj.js +48 -0
  71. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  72. package/dist/generic/CacheInvalidationResolver.d.ts +94 -4
  73. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  74. package/dist/generic/CacheInvalidationResolver.js +122 -3
  75. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  76. package/dist/generic/DeleteOptionsInput.d.ts +8 -1
  77. package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
  78. package/dist/generic/DeleteOptionsInput.js +1 -1
  79. package/dist/generic/DeleteOptionsInput.js.map +1 -1
  80. package/dist/generic/FireAndForgetHeartbeat.d.ts +3 -1
  81. package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
  82. package/dist/generic/FireAndForgetHeartbeat.js +8 -4
  83. package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
  84. package/dist/generic/PushStatusResolver.d.ts +10 -1
  85. package/dist/generic/PushStatusResolver.d.ts.map +1 -1
  86. package/dist/generic/PushStatusResolver.js +11 -3
  87. package/dist/generic/PushStatusResolver.js.map +1 -1
  88. package/dist/generic/ResolverBase.d.ts +5 -1
  89. package/dist/generic/ResolverBase.d.ts.map +1 -1
  90. package/dist/generic/ResolverBase.js +15 -8
  91. package/dist/generic/ResolverBase.js.map +1 -1
  92. package/dist/index.d.ts +6 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +30 -9
  95. package/dist/index.js.map +1 -1
  96. package/dist/integration/CustomColumnPromoter.d.ts +2 -0
  97. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  98. package/dist/integration/CustomColumnPromoter.js +5 -1
  99. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  100. package/dist/integration/EntityMapLifecycle.d.ts +4 -0
  101. package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
  102. package/dist/integration/EntityMapLifecycle.js +10 -2
  103. package/dist/integration/EntityMapLifecycle.js.map +1 -1
  104. package/dist/logging/NoLog.d.ts +4 -0
  105. package/dist/logging/NoLog.d.ts.map +1 -1
  106. package/dist/logging/NoLog.js +10 -2
  107. package/dist/logging/NoLog.js.map +1 -1
  108. package/dist/logging/StartupLogger.d.ts +2 -0
  109. package/dist/logging/StartupLogger.d.ts.map +1 -1
  110. package/dist/logging/StartupLogger.js +5 -1
  111. package/dist/logging/StartupLogger.js.map +1 -1
  112. package/dist/logging/bootAudit.d.ts +11 -7
  113. package/dist/logging/bootAudit.d.ts.map +1 -1
  114. package/dist/logging/bootAudit.js +15 -7
  115. package/dist/logging/bootAudit.js.map +1 -1
  116. package/dist/logging/boundaryLogPayload.d.ts +4 -0
  117. package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
  118. package/dist/logging/boundaryLogPayload.js +5 -1
  119. package/dist/logging/boundaryLogPayload.js.map +1 -1
  120. package/dist/logging/secretRedactor.d.ts +2 -0
  121. package/dist/logging/secretRedactor.d.ts.map +1 -1
  122. package/dist/logging/secretRedactor.js +8 -4
  123. package/dist/logging/secretRedactor.js.map +1 -1
  124. package/dist/logging/shortenForLog.d.ts +2 -0
  125. package/dist/logging/shortenForLog.d.ts.map +1 -1
  126. package/dist/logging/shortenForLog.js +7 -3
  127. package/dist/logging/shortenForLog.js.map +1 -1
  128. package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
  129. package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
  130. package/dist/logging/variablesLoggingMiddleware.js +8 -6
  131. package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
  132. package/dist/metadataRefreshSignal.d.ts +19 -0
  133. package/dist/metadataRefreshSignal.d.ts.map +1 -0
  134. package/dist/metadataRefreshSignal.js +45 -0
  135. package/dist/metadataRefreshSignal.js.map +1 -0
  136. package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
  137. package/dist/multiTenancy/index.d.ts +8 -0
  138. package/dist/multiTenancy/index.d.ts.map +1 -1
  139. package/dist/multiTenancy/index.js +21 -5
  140. package/dist/multiTenancy/index.js.map +1 -1
  141. package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
  142. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
  143. package/dist/realtimeWidget/WidgetRouter.js +14 -10
  144. package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
  145. package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
  146. package/dist/realtimeWidget/WidgetSessionService.js +27 -27
  147. package/dist/realtimeWidget/host-identity.d.ts +5 -1
  148. package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
  149. package/dist/realtimeWidget/host-identity.js +11 -3
  150. package/dist/realtimeWidget/host-identity.js.map +1 -1
  151. package/dist/realtimeWidget/index.d.ts +2 -2
  152. package/dist/realtimeWidget/index.d.ts.map +1 -1
  153. package/dist/realtimeWidget/index.js +2 -2
  154. package/dist/realtimeWidget/index.js.map +1 -1
  155. package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
  156. package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
  157. package/dist/realtimeWidget/visitorIdentity.js +16 -4
  158. package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
  159. package/dist/realtimeWidget/widgetCore.d.ts +48 -0
  160. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
  161. package/dist/realtimeWidget/widgetCore.js +38 -10
  162. package/dist/realtimeWidget/widgetCore.js.map +1 -1
  163. package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
  164. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  165. package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
  166. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  167. package/dist/resolvers/AdhocQueryResolver.js +3 -3
  168. package/dist/resolvers/FileResolver.js +3 -3
  169. package/dist/resolvers/GeoResolver.d.ts +2 -2
  170. package/dist/resolvers/GeoResolver.js +4 -4
  171. package/dist/resolvers/GetDataResolver.d.ts +14 -0
  172. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  173. package/dist/resolvers/GetDataResolver.js +43 -15
  174. package/dist/resolvers/GetDataResolver.js.map +1 -1
  175. package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -2
  176. package/dist/resolvers/ListOperationsResolver.d.ts +20 -0
  177. package/dist/resolvers/ListOperationsResolver.d.ts.map +1 -1
  178. package/dist/resolvers/ListOperationsResolver.js +68 -28
  179. package/dist/resolvers/ListOperationsResolver.js.map +1 -1
  180. package/dist/resolvers/MCPResolver.d.ts +11 -1
  181. package/dist/resolvers/MCPResolver.d.ts.map +1 -1
  182. package/dist/resolvers/MCPResolver.js +7 -3
  183. package/dist/resolvers/MCPResolver.js.map +1 -1
  184. package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
  185. package/dist/resolvers/RealtimeClientSessionResolver.js +3 -3
  186. package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
  187. package/dist/resolvers/RunAIAgentResolver.d.ts +10 -4
  188. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  189. package/dist/resolvers/RunAIAgentResolver.js +69 -38
  190. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  191. package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
  192. package/dist/resolvers/RunAIPromptResolver.js +2 -2
  193. package/dist/resolvers/RunTestResolver.js +5 -5
  194. package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
  195. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  196. package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
  197. package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
  198. package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
  199. package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
  200. package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
  201. package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
  202. package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
  203. package/dist/resolvers/adhoc-query-helpers.js +10 -2
  204. package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
  205. package/dist/resolvers/artifact-routing.d.ts +8 -8
  206. package/dist/resolvers/artifact-routing.js +2 -2
  207. package/dist/resolvers/artifact-routing.js.map +1 -1
  208. package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
  209. package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
  210. package/dist/resolvers/meetingRecordingRegistration.js +24 -8
  211. package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
  212. package/dist/resolvers/peaksSidecar.d.ts +4 -0
  213. package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
  214. package/dist/resolvers/peaksSidecar.js +10 -2
  215. package/dist/resolvers/peaksSidecar.js.map +1 -1
  216. package/dist/rest/EntityCRUDHandler.d.ts +28 -0
  217. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  218. package/dist/rest/EntityCRUDHandler.js +20 -4
  219. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  220. package/dist/rest/MediaStreamHandler.d.ts +2 -0
  221. package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
  222. package/dist/rest/MediaStreamHandler.js +10 -6
  223. package/dist/rest/MediaStreamHandler.js.map +1 -1
  224. package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
  225. package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
  226. package/dist/rest/OAuthCallbackHandler.js +15 -3
  227. package/dist/rest/OAuthCallbackHandler.js.map +1 -1
  228. package/dist/rest/RESTEndpointHandler.d.ts +6 -4
  229. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  230. package/dist/rest/RESTEndpointHandler.js +15 -11
  231. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  232. package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
  233. package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
  234. package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
  235. package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
  236. package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
  237. package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
  238. package/dist/rest/SignatureWebhookHandler.js +5 -1
  239. package/dist/rest/SignatureWebhookHandler.js.map +1 -1
  240. package/dist/rest/UploadTokenManager.d.ts +24 -8
  241. package/dist/rest/UploadTokenManager.d.ts.map +1 -1
  242. package/dist/rest/UploadTokenManager.js +53 -21
  243. package/dist/rest/UploadTokenManager.js.map +1 -1
  244. package/dist/rest/ViewOperationsHandler.d.ts +20 -0
  245. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  246. package/dist/rest/ViewOperationsHandler.js +20 -4
  247. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  248. package/dist/rest/mediaRange.d.ts +4 -0
  249. package/dist/rest/mediaRange.d.ts.map +1 -1
  250. package/dist/rest/mediaRange.js +10 -2
  251. package/dist/rest/mediaRange.js.map +1 -1
  252. package/dist/rest/setupRESTEndpoints.d.ts +4 -0
  253. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  254. package/dist/rest/setupRESTEndpoints.js +13 -7
  255. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  256. package/dist/serverExtensionReservedRoots.d.ts +2 -0
  257. package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
  258. package/dist/serverExtensionReservedRoots.js +5 -1
  259. package/dist/serverExtensionReservedRoots.js.map +1 -1
  260. package/dist/services/TaskGraphActionRunner.d.ts +13 -8
  261. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  262. package/dist/services/TaskGraphActionRunner.js +16 -15
  263. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  264. package/dist/types.d.ts +2 -0
  265. package/dist/types.d.ts.map +1 -1
  266. package/dist/types.js +7 -3
  267. package/dist/types.js.map +1 -1
  268. package/dist/util.d.ts +6 -0
  269. package/dist/util.d.ts.map +1 -1
  270. package/dist/util.js +13 -5
  271. package/dist/util.js.map +1 -1
  272. package/package.json +92 -92
  273. package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -0
  274. package/src/__tests__/FileResolverPeaks.test.ts +13 -13
  275. package/src/__tests__/ListOperationsResolver.test.ts +17 -17
  276. package/src/__tests__/MediaStreamHandler.test.ts +28 -28
  277. package/src/__tests__/NoLog.test.ts +11 -11
  278. package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
  279. package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
  280. package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
  281. package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
  282. package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
  283. package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
  284. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
  285. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
  286. package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
  287. package/src/__tests__/WidgetSessionService.test.ts +8 -4
  288. package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
  289. package/src/__tests__/bootAudit.test.ts +11 -11
  290. package/src/__tests__/boundaryLogPayload.test.ts +6 -6
  291. package/src/__tests__/cacheInvalidationRecordData.test.ts +177 -0
  292. package/src/__tests__/databaseAbstraction.test.ts +12 -6
  293. package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
  294. package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
  295. package/src/__tests__/magicLink.test.ts +73 -134
  296. package/src/__tests__/magicLinkService.consume.test.ts +224 -0
  297. package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
  298. package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
  299. package/src/__tests__/multiTenancy.security.test.ts +40 -40
  300. package/src/__tests__/multiTenancy.test.ts +18 -18
  301. package/src/__tests__/newUsers.test.ts +24 -23
  302. package/src/__tests__/principals.test.ts +22 -22
  303. package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
  304. package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
  305. package/src/__tests__/secretRedactor.test.ts +12 -12
  306. package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
  307. package/src/__tests__/subscriptionRedaction.test.ts +5 -5
  308. package/src/__tests__/unifiedAuth.test.ts +15 -9
  309. package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
  310. package/src/__tests__/widget.test.ts +45 -45
  311. package/src/__tests__/widgetGuestElevation.test.ts +7 -7
  312. package/src/__tests__/widgetHostIdentity.test.ts +14 -14
  313. package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
  314. package/src/agentSessions/SessionManager.ts +2 -2
  315. package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
  316. package/src/auth/AuthProviderCatalogRouter.ts +6 -1
  317. package/src/auth/__tests__/backward-compatibility.test.ts +3 -3
  318. package/src/auth/index.ts +43 -28
  319. package/src/auth/initializeProviders.ts +25 -5
  320. package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
  321. package/src/auth/magicLink/MagicLinkService.ts +71 -52
  322. package/src/auth/magicLink/index.ts +7 -7
  323. package/src/auth/magicLink/magicLinkCore.ts +96 -64
  324. package/src/auth/magicLink/redeemLanding.ts +14 -4
  325. package/src/auth/magicLink/types.ts +54 -54
  326. package/src/auth/newUsers.ts +1 -1
  327. package/src/auth/principals.ts +11 -2
  328. package/src/cache.ts +4 -1
  329. package/src/config.ts +37 -4
  330. package/src/context.ts +37 -24
  331. package/src/directives/Public.ts +4 -1
  332. package/src/directives/RequireSystemUser.ts +4 -1
  333. package/src/generated/graphql-schemas/__mj.ts +37 -0
  334. package/src/generic/CacheInvalidationResolver.ts +148 -4
  335. package/src/generic/DeleteOptionsInput.ts +9 -2
  336. package/src/generic/FireAndForgetHeartbeat.ts +19 -14
  337. package/src/generic/PushStatusResolver.ts +21 -7
  338. package/src/generic/ResolverBase.ts +16 -8
  339. package/src/generic/RunViewResolver.ts +22 -22
  340. package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
  341. package/src/index.ts +35 -9
  342. package/src/integration/CustomColumnPromoter.ts +6 -1
  343. package/src/integration/EntityMapLifecycle.ts +20 -2
  344. package/src/logging/NoLog.ts +16 -2
  345. package/src/logging/StartupLogger.ts +6 -1
  346. package/src/logging/bootAudit.ts +26 -16
  347. package/src/logging/boundaryLogPayload.ts +8 -1
  348. package/src/logging/secretRedactor.ts +14 -9
  349. package/src/logging/shortenForLog.ts +8 -3
  350. package/src/logging/variablesLoggingMiddleware.ts +9 -6
  351. package/src/metadataRefreshSignal.ts +45 -0
  352. package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
  353. package/src/multiTenancy/index.ts +29 -5
  354. package/src/realtimeWidget/WidgetRouter.ts +15 -10
  355. package/src/realtimeWidget/WidgetSessionService.ts +76 -76
  356. package/src/realtimeWidget/host-identity.ts +24 -10
  357. package/src/realtimeWidget/index.ts +3 -3
  358. package/src/realtimeWidget/visitorIdentity.ts +39 -8
  359. package/src/realtimeWidget/widgetCore.ts +75 -10
  360. package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
  361. package/src/resolvers/AdhocQueryResolver.ts +3 -3
  362. package/src/resolvers/AgentSessionResolver.ts +3 -3
  363. package/src/resolvers/ColorResolver.ts +6 -6
  364. package/src/resolvers/ComponentRegistryResolver.ts +36 -36
  365. package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
  366. package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
  367. package/src/resolvers/FileResolver.ts +42 -42
  368. package/src/resolvers/GeoResolver.ts +4 -4
  369. package/src/resolvers/GetDataResolver.ts +50 -15
  370. package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
  371. package/src/resolvers/ListOperationsResolver.ts +78 -28
  372. package/src/resolvers/MCPResolver.ts +30 -15
  373. package/src/resolvers/QueryResolver.ts +13 -13
  374. package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
  375. package/src/resolvers/RealtimeClientSessionResolver.ts +3 -3
  376. package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
  377. package/src/resolvers/RunAIAgentResolver.ts +113 -72
  378. package/src/resolvers/RunAIPromptResolver.ts +22 -22
  379. package/src/resolvers/RunTemplateResolver.ts +4 -4
  380. package/src/resolvers/RunTestResolver.ts +25 -25
  381. package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
  382. package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
  383. package/src/resolvers/TelemetryResolver.ts +79 -79
  384. package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
  385. package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
  386. package/src/resolvers/adhoc-query-helpers.ts +19 -2
  387. package/src/resolvers/artifact-routing.ts +19 -19
  388. package/src/resolvers/meetingRecordingRegistration.ts +44 -10
  389. package/src/resolvers/peaksSidecar.ts +12 -2
  390. package/src/rest/EntityCRUDHandler.ts +24 -4
  391. package/src/rest/MediaStreamHandler.ts +11 -6
  392. package/src/rest/OAuthCallbackHandler.ts +25 -7
  393. package/src/rest/RESTEndpointHandler.ts +20 -15
  394. package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
  395. package/src/rest/SignatureWebhookHandler.ts +6 -1
  396. package/src/rest/UploadTokenManager.ts +66 -30
  397. package/src/rest/ViewOperationsHandler.ts +24 -4
  398. package/src/rest/mediaRange.ts +16 -6
  399. package/src/rest/setupRESTEndpoints.ts +24 -12
  400. package/src/serverExtensionReservedRoots.ts +6 -1
  401. package/src/services/TaskGraphActionRunner.ts +16 -15
  402. package/src/types.ts +21 -16
  403. 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 { startLivenessPulse } from '../generic/FireAndForgetHeartbeat.js';
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 = startLivenessPulse({ pubSub, sessionId: userPayload.sessionId, ownerUserId: userPayload.userRecord.ID, resolver: 'RunTestResolver' });
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.stop());
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 = startLivenessPulse({ pubSub, sessionId: userPayload.sessionId, ownerUserId: userPayload.userRecord.ID, resolver: 'RunTestResolver' });
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.stop());
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 { loadConfig } from '../config.js';
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 loadConfig();
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 loadConfig();
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 loadConfig();
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 loadConfig();
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 taskGraphFrameFilter(data: {
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
- taskGraphFrameFilter(data),
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 {