@memberjunction/server 6.2.0-edge.0 → 6.2.0-edge.2

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