@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
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @module @memberjunction/server/widget
13
13
  */
14
- import { buildSessionClaims } from '../auth/magicLink/magicLinkCore.js';
14
+ import { BuildSessionClaims } from '../auth/magicLink/magicLinkCore.js';
15
15
  /**
16
16
  * The magic-link resource-scope `resourceType` used for a widget guest session. Pairs with the
17
17
  * opaque session id as `resourceId` so the synthesized principal's MagicLinkScope.ResourceID is
@@ -24,7 +24,7 @@ export const WIDGET_SESSION_RESOURCE_TYPE = 'Widget Session';
24
24
  * comma-separated string (tolerated). Returns an empty array for null/blank/garbage
25
25
  * — which makes the allowlist FAIL-CLOSED (no origin is allowed) by construction.
26
26
  */
27
- export function parseAllowedOrigins(allowedOrigins) {
27
+ export function ParseAllowedOrigins(allowedOrigins) {
28
28
  const raw = allowedOrigins?.trim();
29
29
  if (!raw) {
30
30
  return [];
@@ -42,6 +42,10 @@ export function parseAllowedOrigins(allowedOrigins) {
42
42
  }
43
43
  return list.filter((s) => typeof s === 'string').map(normalizeOrigin).filter((s) => !!s);
44
44
  }
45
+ /** @deprecated Use {@link ParseAllowedOrigins}. */
46
+ export function parseAllowedOrigins(allowedOrigins) {
47
+ return ParseAllowedOrigins(allowedOrigins);
48
+ }
45
49
  /** Lowercases + trims an origin and strips a trailing slash for stable comparison. */
46
50
  function normalizeOrigin(origin) {
47
51
  return origin.trim().toLowerCase().replace(/\/+$/, '');
@@ -51,7 +55,7 @@ function normalizeOrigin(origin) {
51
55
  * JSON array (preferred, e.g. `["Whiteboard"]`) or a comma-separated string (tolerated). Returns an
52
56
  * empty array for null/blank/garbage — the backwards-compatible default (no channels attached).
53
57
  */
54
- export function parseEnabledChannels(enabledChannels) {
58
+ export function ParseEnabledChannels(enabledChannels) {
55
59
  const raw = enabledChannels?.trim();
56
60
  if (!raw) {
57
61
  return [];
@@ -65,41 +69,57 @@ export function parseEnabledChannels(enabledChannels) {
65
69
  return clean(raw.split(','));
66
70
  }
67
71
  }
72
+ /** @deprecated Use {@link ParseEnabledChannels}. */
73
+ export function parseEnabledChannels(enabledChannels) {
74
+ return ParseEnabledChannels(enabledChannels);
75
+ }
68
76
  /**
69
77
  * FAIL-CLOSED origin check. The request's `Origin` header must exactly match one of
70
78
  * the widget's allowed origins (after normalization). A missing request origin, or
71
79
  * an empty allowlist, is rejected — a public mint endpoint must never accept "*".
72
80
  */
73
- export function isOriginAllowed(requestOrigin, allowedOrigins) {
81
+ export function IsOriginAllowed(requestOrigin, allowedOrigins) {
74
82
  if (!requestOrigin || allowedOrigins.length === 0) {
75
83
  return false;
76
84
  }
77
85
  const candidate = normalizeOrigin(requestOrigin);
78
86
  return allowedOrigins.some((o) => o === candidate);
79
87
  }
88
+ /** @deprecated Use {@link IsOriginAllowed}. */
89
+ export function isOriginAllowed(requestOrigin, allowedOrigins) {
90
+ return IsOriginAllowed(requestOrigin, allowedOrigins);
91
+ }
80
92
  /** True when the requested modality (or the widget's default render) is enabled by the instance. */
81
- export function isModalityEnabled(widgetModality, requested) {
93
+ export function IsModalityEnabled(widgetModality, requested) {
82
94
  const m = widgetModality.trim().toLowerCase();
83
95
  if (m === 'both') {
84
96
  return true;
85
97
  }
86
98
  return m === requested.toLowerCase();
87
99
  }
100
+ /** @deprecated Use {@link IsModalityEnabled}. */
101
+ export function isModalityEnabled(widgetModality, requested) {
102
+ return IsModalityEnabled(widgetModality, requested);
103
+ }
88
104
  /**
89
105
  * Pure eligibility check for a mint: the widget must be Active and the request's
90
106
  * origin must be on the allowlist. Returns an error code on the first failure so the
91
107
  * router can map it to a precise HTTP status. Modality is checked separately by the
92
108
  * voice path (W4) since a text mint is always permitted for an enabled widget.
93
109
  */
94
- export function evaluateWidgetMint(widget, requestOrigin) {
110
+ export function EvaluateWidgetMint(widget, requestOrigin) {
95
111
  if (widget.Status.trim().toLowerCase() !== 'active') {
96
112
  return { ok: false, errorCode: 'disabled' };
97
113
  }
98
- if (!isOriginAllowed(requestOrigin, parseAllowedOrigins(widget.AllowedOrigins))) {
114
+ if (!IsOriginAllowed(requestOrigin, ParseAllowedOrigins(widget.AllowedOrigins))) {
99
115
  return { ok: false, errorCode: 'origin_not_allowed' };
100
116
  }
101
117
  return { ok: true };
102
118
  }
119
+ /** @deprecated Use {@link EvaluateWidgetMint}. */
120
+ export function evaluateWidgetMint(widget, requestOrigin) {
121
+ return EvaluateWidgetMint(widget, requestOrigin);
122
+ }
103
123
  /**
104
124
  * Known automated-client User-Agent substrings (lowercased). A public mint endpoint is a cheap
105
125
  * target for crawlers and scripted abuse; this catches the obvious non-browser callers. It is a
@@ -117,13 +137,17 @@ const BOT_USER_AGENT_MARKERS = [
117
137
  * known automation marker. Deliberately conservative to avoid false positives on real browsers; pair
118
138
  * with the origin allowlist + rate limits, which are the hard controls.
119
139
  */
120
- export function looksLikeBot(userAgent) {
140
+ export function LooksLikeBot(userAgent) {
121
141
  const ua = (userAgent ?? '').trim().toLowerCase();
122
142
  if (!ua) {
123
143
  return true;
124
144
  }
125
145
  return BOT_USER_AGENT_MARKERS.some((marker) => ua.includes(marker));
126
146
  }
147
+ /** @deprecated Use {@link LooksLikeBot}. */
148
+ export function looksLikeBot(userAgent) {
149
+ return LooksLikeBot(userAgent);
150
+ }
127
151
  /**
128
152
  * Builds the guest-session JWT claims for a widget visitor. Reuses magic-link's
129
153
  * `buildSessionClaims` (anonymous mode → the shared Anonymous principal + claims-based
@@ -131,8 +155,8 @@ export function looksLikeBot(userAgent) {
131
155
  * principal is locked to one widget instance. The role name carried here is the
132
156
  * widget's restricted guest role (D5 backstop).
133
157
  */
134
- export function buildWidgetGuestClaims(args) {
135
- const claims = buildSessionClaims({
158
+ export function BuildWidgetGuestClaims(args) {
159
+ const claims = BuildSessionClaims({
136
160
  issuer: args.issuer,
137
161
  audience: args.audience,
138
162
  // No invite row for a direct-mint guest; the opaque session id stands in as the
@@ -170,4 +194,8 @@ export function buildWidgetGuestClaims(args) {
170
194
  }
171
195
  return claims;
172
196
  }
197
+ /** @deprecated Use {@link BuildWidgetGuestClaims}. */
198
+ export function buildWidgetGuestClaims(args) {
199
+ return BuildWidgetGuestClaims(args);
200
+ }
173
201
  //# sourceMappingURL=widgetCore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widgetCore.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widgetCore.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetCore.ts"],"names":[],"mappings":"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"}
@@ -17,19 +17,19 @@ import type { MJConversationWidgetInstanceEntity } from '@memberjunction/core-en
17
17
  import type { UserPayload } from '../types.js';
18
18
  /**
19
19
  * Resolved elevation context for a widget-guest agent run. Returned only when the request is a
20
- * widget guest; the dispatch resolver runs the agent under {@link WidgetGuestRunContext.elevatedUser}
21
- * with {@link WidgetGuestRunContext.pinnedAgentId} (authoritative), keeping ownership checks under
20
+ * widget guest; the dispatch resolver runs the agent under {@link WidgetGuestRunContext.ElevatedUser}
21
+ * with {@link WidgetGuestRunContext.PinnedAgentId} (authoritative), keeping ownership checks under
22
22
  * the guest principal.
23
23
  */
24
24
  export interface WidgetGuestRunContext {
25
25
  /** The trusted server principal under which the agent run (and its run-entity writes) executes. */
26
- elevatedUser: UserInfo;
26
+ ElevatedUser: UserInfo;
27
27
  /** The widget instance the guest session is bound to (authoritative config). */
28
- widget: MJConversationWidgetInstanceEntity;
28
+ Widget: MJConversationWidgetInstanceEntity;
29
29
  /** The authoritative pinned support agent id — overrides any client-supplied agent id (D5). */
30
- pinnedAgentId: string;
30
+ PinnedAgentId: string;
31
31
  /** The guest's per-session scope id (Conversation.ExternalID), used to validate conversation ownership. */
32
- sessionScopeId?: string;
32
+ SessionScopeId?: string;
33
33
  }
34
34
  /**
35
35
  * Returns elevation context when the request is a public web-widget guest, else `null` (the common
@@ -41,6 +41,8 @@ export interface WidgetGuestRunContext {
41
41
  * Never throws: a resolution failure (no system user, widget not found, read error) returns `null`,
42
42
  * so the caller falls back to the normal (guest-principal) path rather than failing the request.
43
43
  */
44
+ export declare function ResolveWidgetGuestRunContext(userPayload: UserPayload, provider: DatabaseProviderBase): Promise<WidgetGuestRunContext | null>;
45
+ /** @deprecated Use {@link ResolveWidgetGuestRunContext}. */
44
46
  export declare function resolveWidgetGuestRunContext(userPayload: UserPayload, provider: DatabaseProviderBase): Promise<WidgetGuestRunContext | null>;
45
47
  /**
46
48
  * Returns the identity a realtime session's AI-RUN-ENTITY work (delegated tool dispatch +
@@ -69,5 +71,7 @@ export declare function ResolveScopedAnonymousRunUser(contextUser: UserInfo): Us
69
71
  * preserving the guest's `sessionId` — so progress/streaming PubSub still routes to the guest's
70
72
  * live websocket, but all AI run-entity writes happen under the trusted server principal.
71
73
  */
74
+ export declare function ElevateUserPayload(userPayload: UserPayload, elevatedUser: UserInfo): UserPayload;
75
+ /** @deprecated Use {@link ElevateUserPayload}. */
72
76
  export declare function elevateUserPayload(userPayload: UserPayload, elevatedUser: UserInfo): UserPayload;
73
77
  //# sourceMappingURL=widgetGuestElevation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widgetGuestElevation.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,YAAY,EAAE,QAAQ,CAAC;IACvB,gFAAgF;IAChF,MAAM,EAAE,kCAAkC,CAAC;IAC3C,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAyBvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAkB7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,CAOhG"}
1
+ {"version":3,"file":"widgetGuestElevation.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,YAAY,EAAE,QAAQ,CAAC;IACvB,gFAAgF;IAChF,MAAM,EAAE,kCAAkC,CAAC;IAC3C,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAyBvC;AAED,4DAA4D;AAC5D,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAEvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAkB7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,CAOhG;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,CAEhG"}
@@ -25,7 +25,7 @@ const WIDGET_ENTITY = 'MJ: Conversation Widget Instances';
25
25
  * Never throws: a resolution failure (no system user, widget not found, read error) returns `null`,
26
26
  * so the caller falls back to the normal (guest-principal) path rather than failing the request.
27
27
  */
28
- export async function resolveWidgetGuestRunContext(userPayload, provider) {
28
+ export async function ResolveWidgetGuestRunContext(userPayload, provider) {
29
29
  const guest = userPayload?.userRecord;
30
30
  const widgetId = guest?.WidgetGuestContext?.WidgetID;
31
31
  if (!guest?.IsMagicLinkAnonymous || !widgetId) {
@@ -42,12 +42,16 @@ export async function resolveWidgetGuestRunContext(userPayload, provider) {
42
42
  return null;
43
43
  }
44
44
  return {
45
- elevatedUser,
46
- widget,
47
- pinnedAgentId: widget.PinnedAgentID,
48
- sessionScopeId: guest.MagicLinkScope?.ResourceID,
45
+ ElevatedUser: elevatedUser,
46
+ Widget: widget,
47
+ PinnedAgentId: widget.PinnedAgentID,
48
+ SessionScopeId: guest.MagicLinkScope?.ResourceID,
49
49
  };
50
50
  }
51
+ /** @deprecated Use {@link ResolveWidgetGuestRunContext}. */
52
+ export async function resolveWidgetGuestRunContext(userPayload, provider) {
53
+ return ResolveWidgetGuestRunContext(userPayload, provider);
54
+ }
51
55
  /**
52
56
  * Returns the identity a realtime session's AI-RUN-ENTITY work (delegated tool dispatch +
53
57
  * observability run creation/append/finalize) should execute as: the trusted SYSTEM principal when
@@ -89,7 +93,7 @@ export function ResolveScopedAnonymousRunUser(contextUser) {
89
93
  * preserving the guest's `sessionId` — so progress/streaming PubSub still routes to the guest's
90
94
  * live websocket, but all AI run-entity writes happen under the trusted server principal.
91
95
  */
92
- export function elevateUserPayload(userPayload, elevatedUser) {
96
+ export function ElevateUserPayload(userPayload, elevatedUser) {
93
97
  return {
94
98
  ...userPayload,
95
99
  email: elevatedUser.Email,
@@ -97,6 +101,10 @@ export function elevateUserPayload(userPayload, elevatedUser) {
97
101
  isSystemUser: true,
98
102
  };
99
103
  }
104
+ /** @deprecated Use {@link ElevateUserPayload}. */
105
+ export function elevateUserPayload(userPayload, elevatedUser) {
106
+ return ElevateUserPayload(userPayload, elevatedUser);
107
+ }
100
108
  /** Loads a single widget instance by id under the elevated principal (read-only). */
101
109
  async function loadWidgetById(widgetId, elevatedUser, provider) {
102
110
  const rv = new RunView(provider);
@@ -1 +1 @@
1
- {"version":3,"file":"widgetGuestElevation.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widgetGuestElevation.js","sourceRoot":"","sources":["../../src/realtimeWidget/widgetGuestElevation.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ import { GetReadOnlyDataSource, GetReadOnlyProvider } from '../util.js';
18
18
  import { ResolverBase } from '../generic/ResolverBase.js';
19
19
  import { IsScopeLimitedPrincipal } from '../auth/scopeLimitedPrincipal.js';
20
20
  import { RunQueryResultType } from './QueryResolver.js';
21
- import { exactTotalFromPage, resolveAdhocTotalRowCount } from './adhoc-query-helpers.js';
21
+ import { ExactTotalFromPage, ResolveAdhocTotalRowCount } from './adhoc-query-helpers.js';
22
22
  import sql from 'mssql';
23
23
  /**
24
24
  * Input type for executing ad-hoc SQL queries directly.
@@ -195,7 +195,7 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
195
195
  const dataResult = await this.runSqlWithDeadline(ds, dataSQL, deadline);
196
196
  const recordset = (dataResult.recordset ?? []);
197
197
  // Total already known from the page alone (unpaged, or a short page)? Skip the count.
198
- const exact = exactTotalFromPage(startRow, recordset.length, maxRows);
198
+ const exact = ExactTotalFromPage(startRow, recordset.length, maxRows);
199
199
  if (exact != null || !countSQL) {
200
200
  return { recordset, totalRowCount: exact ?? recordset.length };
201
201
  }
@@ -203,7 +203,7 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
203
203
  const lowerBound = startRow + recordset.length;
204
204
  try {
205
205
  const countResult = await this.runSqlWithDeadline(ds, countSQL, deadline);
206
- return { recordset, totalRowCount: resolveAdhocTotalRowCount(countResult.recordset, lowerBound) };
206
+ return { recordset, totalRowCount: ResolveAdhocTotalRowCount(countResult.recordset, lowerBound) };
207
207
  }
208
208
  catch (countErr) {
209
209
  const msg = countErr instanceof Error ? countErr.message : String(countErr);
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Publishes one agent run's live status on the caller's session.
3
+ *
4
+ * `RunAIAgentResolver` uses this for every status it sends. A host whose
5
+ * `AgentTurnHandler` answers with an In-Progress reply uses the same publisher,
6
+ * on that caller's session, so the chat follows the turn: significant-step
7
+ * progress, streamed text, the partial result, and the completion. When the
8
+ * turn throws instead of returning a result, call `PublishFailure` with the
9
+ * reply row's id and the error.
10
+ */
11
+ import type { PubSubEngine } from 'type-graphql';
12
+ import type { AgentExecutionProgressCallback, AgentExecutionStreamingCallback, ExecuteAgentResult } from '@memberjunction/ai-core-plus';
13
+ import type { UserPayload } from '../types.js';
14
+ /** The run fields the published messages read. Entities and test fakes both satisfy this. */
15
+ interface StatusRun {
16
+ ID?: string;
17
+ ConversationDetailID?: string;
18
+ ErrorMessage?: string;
19
+ Steps?: Array<{
20
+ StepName?: string;
21
+ }>;
22
+ GetAll?: () => unknown;
23
+ }
24
+ export declare class AgentRunStatusPublisher {
25
+ private readonly pubSub;
26
+ private readonly userPayload;
27
+ private readonly sessionId;
28
+ private run;
29
+ /**
30
+ * @param sessionId Session stamped on the message body. Defaults to the payload's session.
31
+ * The push itself is always addressed to `userPayload.sessionId`, matching the resolver.
32
+ */
33
+ constructor(pubSub: PubSubEngine, userPayload: UserPayload, sessionId?: string);
34
+ /** Latest run observed from a progress event, including steps that are not published. */
35
+ get AgentRun(): StatusRun | null;
36
+ /** AgentRunner's progress callback. Noise steps are kept for {@link AgentRun} and not published. */
37
+ get OnProgress(): AgentExecutionProgressCallback;
38
+ /** AgentRunner's streaming callback. Publishes nothing until a progress event has carried the run. */
39
+ get OnStreaming(): AgentExecutionStreamingCallback;
40
+ /**
41
+ * The partial result, then the completion. `conversationDetailId` is the reply row the
42
+ * chat should update. When omitted, the completion uses the run's own detail id.
43
+ */
44
+ PublishFinal(result: ExecuteAgentResult, conversationDetailId?: string, resultJson?: string): void;
45
+ /**
46
+ * Completion for a failure that has no run. The fire-and-forget path uses this when
47
+ * `executeAIAgent` rejects. A host uses it the same way: when the turn throws
48
+ * instead of returning a result, call `PublishFailure` with the reply row's id
49
+ * and the error. That completion is what tells the chat the reply finished.
50
+ */
51
+ PublishFailure(conversationDetailId: string | undefined, errorMessage: string): void;
52
+ private publish;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=AgentRunStatusPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRunStatusPublisher.d.ts","sourceRoot":"","sources":["../../src/resolvers/AgentRunStatusPublisher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACR,8BAA8B,EAC9B,+BAA+B,EAC/B,kBAAkB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,6FAA6F;AAC7F,UAAU,SAAS;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,qBAAa,uBAAuB;IAQ5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT9B,OAAO,CAAC,GAAG,CAA0B;IAErC;;;OAGG;gBAEkB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,GAAE,MAA8B;IAG9D,yFAAyF;IACzF,IAAW,QAAQ,IAAI,SAAS,GAAG,IAAI,CAEtC;IAED,oGAAoG;IACpG,IAAW,UAAU,IAAI,8BAA8B,CAgCtD;IAED,sGAAsG;IACtG,IAAW,WAAW,IAAI,+BAA+B,CAsBxD;IAED;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IA+BzG;;;;;OAKG;IACI,cAAc,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAa3F,OAAO,CAAC,OAAO;CAYlB"}
@@ -0,0 +1,141 @@
1
+ import { PublishStatusUpdate } from '../generic/PushStatusResolver.js';
2
+ const SIGNIFICANT_STEPS = ['prompt_execution', 'action_execution', 'subagent_execution', 'decision_processing'];
3
+ export class AgentRunStatusPublisher {
4
+ /**
5
+ * @param sessionId Session stamped on the message body. Defaults to the payload's session.
6
+ * The push itself is always addressed to `userPayload.sessionId`, matching the resolver.
7
+ */
8
+ constructor(pubSub, userPayload, sessionId = userPayload.sessionId) {
9
+ this.pubSub = pubSub;
10
+ this.userPayload = userPayload;
11
+ this.sessionId = sessionId;
12
+ this.run = null;
13
+ }
14
+ /** Latest run observed from a progress event, including steps that are not published. */
15
+ get AgentRun() {
16
+ return this.run;
17
+ }
18
+ /** AgentRunner's progress callback. Noise steps are kept for {@link AgentRun} and not published. */
19
+ get OnProgress() {
20
+ return (progress) => {
21
+ const fromEvent = progress.metadata?.agentRun;
22
+ if (fromEvent) {
23
+ this.run = fromEvent;
24
+ }
25
+ if (!SIGNIFICANT_STEPS.includes(progress.step)) {
26
+ return;
27
+ }
28
+ const agentRun = fromEvent || this.run;
29
+ if (!agentRun?.ID) {
30
+ // A host that streams before the first progress event otherwise sees nothing and no reason.
31
+ console.error('❌ No agent run available for progress callback');
32
+ return;
33
+ }
34
+ this.publish('ExecutionProgress', {
35
+ sessionId: this.sessionId,
36
+ agentRunId: agentRun.ID,
37
+ type: 'progress',
38
+ agentRun: agentRun.GetAll ? agentRun.GetAll() : agentRun,
39
+ progress: {
40
+ currentStep: progress.step,
41
+ percentage: progress.percentage,
42
+ message: progress.message,
43
+ agentName: progress.metadata?.agentName,
44
+ agentType: progress.metadata?.agentType,
45
+ stepCount: progress.metadata?.stepCount,
46
+ hierarchicalStep: progress.metadata?.hierarchicalStep,
47
+ },
48
+ timestamp: new Date(),
49
+ });
50
+ };
51
+ }
52
+ /** AgentRunner's streaming callback. Publishes nothing until a progress event has carried the run. */
53
+ get OnStreaming() {
54
+ return (chunk) => {
55
+ const agentRun = this.run;
56
+ if (!agentRun?.ID) {
57
+ console.error('❌ No agent run available for streaming callback');
58
+ return;
59
+ }
60
+ this.publish('StreamingContent', {
61
+ sessionId: this.sessionId,
62
+ agentRunId: agentRun.ID,
63
+ type: 'streaming',
64
+ agentRun: agentRun.GetAll ? agentRun.GetAll() : agentRun,
65
+ streaming: {
66
+ content: chunk.content,
67
+ isPartial: !chunk.isComplete,
68
+ stepName: chunk.stepType,
69
+ agentName: chunk.modelName,
70
+ kind: chunk.kind,
71
+ },
72
+ timestamp: new Date(),
73
+ });
74
+ };
75
+ }
76
+ /**
77
+ * The partial result, then the completion. `conversationDetailId` is the reply row the
78
+ * chat should update. When omitted, the completion uses the run's own detail id.
79
+ */
80
+ PublishFinal(result, conversationDetailId, resultJson) {
81
+ const agentRun = result.agentRun;
82
+ if (agentRun?.ID) {
83
+ let lastStep = 'Completed';
84
+ const steps = agentRun.Steps;
85
+ if (steps && steps.length > 0) {
86
+ lastStep = steps[steps.length - 1]?.StepName || 'Completed';
87
+ }
88
+ this.publish('StreamingContent', {
89
+ sessionId: this.sessionId,
90
+ agentRunId: agentRun.ID,
91
+ type: 'partial_result',
92
+ partialResult: {
93
+ currentStep: lastStep,
94
+ partialOutput: result.payload || undefined,
95
+ },
96
+ timestamp: new Date(),
97
+ });
98
+ }
99
+ this.publish('StreamingContent', {
100
+ sessionId: this.sessionId,
101
+ agentRunId: agentRun?.ID || 'unknown',
102
+ type: 'complete',
103
+ timestamp: new Date(),
104
+ conversationDetailId: conversationDetailId || agentRun?.ConversationDetailID,
105
+ success: result.success,
106
+ errorMessage: agentRun?.ErrorMessage || undefined,
107
+ result: resultJson || undefined,
108
+ });
109
+ }
110
+ /**
111
+ * Completion for a failure that has no run. The fire-and-forget path uses this when
112
+ * `executeAIAgent` rejects. A host uses it the same way: when the turn throws
113
+ * instead of returning a result, call `PublishFailure` with the reply row's id
114
+ * and the error. That completion is what tells the chat the reply finished.
115
+ */
116
+ PublishFailure(conversationDetailId, errorMessage) {
117
+ this.publish('StreamingContent', {
118
+ sessionId: this.sessionId,
119
+ agentRunId: 'unknown',
120
+ type: 'complete',
121
+ timestamp: new Date(),
122
+ conversationDetailId,
123
+ success: false,
124
+ errorMessage,
125
+ result: JSON.stringify({ success: false, errorMessage }),
126
+ });
127
+ }
128
+ publish(type, data) {
129
+ PublishStatusUpdate(this.pubSub, {
130
+ sessionId: this.userPayload.sessionId,
131
+ ownerUserId: this.userPayload?.userRecord?.ID ?? '',
132
+ message: JSON.stringify({
133
+ resolver: 'RunAIAgentResolver',
134
+ type,
135
+ status: 'ok',
136
+ data,
137
+ }),
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=AgentRunStatusPublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRunStatusPublisher.js","sourceRoot":"","sources":["../../src/resolvers/AgentRunStatusPublisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import type { AppContext } from '../types.js';
2
+ /**
3
+ * One step of an agent run, projected for the client's progress view.
4
+ *
5
+ * Carries metadata only. `InputData`, `OutputData` and the payload snapshots are
6
+ * deliberately excluded: they are the largest columns on the row and a run can hold
7
+ * hundreds of steps, so including them would let a single tail call return tens of
8
+ * megabytes. The final result is delivered once, via `FinalPayload`, when the run
9
+ * reaches a terminal state.
10
+ */
11
+ export declare class ConversationRunEvent {
12
+ /** Monotonic position within the run. The cursor a client pages from. */
13
+ Seq: number;
14
+ StepType: string;
15
+ StepName: string;
16
+ Status: string;
17
+ Success?: boolean;
18
+ ErrorMessage?: string;
19
+ StartedAt: Date;
20
+ CompletedAt?: Date;
21
+ }
22
+ /** Result of a tail call. */
23
+ export declare class ConversationRunEventsOutput {
24
+ Success: boolean;
25
+ Message: string;
26
+ Events: ConversationRunEvent[];
27
+ /**
28
+ * Highest `Seq` the caller has now seen. Pass it back as `sinceSeq` on the next call.
29
+ * Echoes the request's `sinceSeq` when nothing new has landed, so a client that polls
30
+ * a quiet run never rewinds.
31
+ */
32
+ LatestSeq: number;
33
+ /**
34
+ * True while the run is still executing, including a run `Paused` on a workflow that is still
35
+ * running. False means terminal — stop tailing, and `FinalPayload` / `RunStatus` hold the
36
+ * outcome. A failed call (`Success` false) reports true, because it knows nothing about the run.
37
+ */
38
+ IsInFlight: boolean;
39
+ RunID?: string;
40
+ RunStatus?: string;
41
+ /**
42
+ * The run's answer, returned only once the run is terminal.
43
+ *
44
+ * Sourced from `AIAgentRun.Result`, falling back to the conversation detail's message because
45
+ * `Result` is agent-dependent and null on many successful runs. Still nullable: a caller must
46
+ * decide a message is finished from {@link IsInFlight} / {@link DetailStatus}, never from the
47
+ * presence of this field, or it will wait forever on an agent that writes neither.
48
+ */
49
+ FinalPayload?: string;
50
+ /** `ConversationDetail.Status` — the value the chat UI renders from. */
51
+ DetailStatus?: string;
52
+ }
53
+ /**
54
+ * Durable, resumable read of an agent run's progress (MJ #4222).
55
+ *
56
+ * The `statusUpdates` subscription is the only live path a conversation has, and it has no
57
+ * replay: the server topic is an in-memory PubSub and the client subject is explicitly
58
+ * unbuffered. Anything published while a socket is half-open is gone, and the client cannot
59
+ * tell the difference between "nothing happened" and "I missed everything".
60
+ *
61
+ * This query is the durable counterpart, mirroring `IntegrationTailRunEvents` — the same
62
+ * shape the integration subsystem already uses, where the subscription is a latency
63
+ * optimization over a log rather than the only delivery path. A client keeps the `LatestSeq`
64
+ * it has seen and re-reads from there after any interruption.
65
+ *
66
+ * It is a READ MODEL over tables that already exist. `AIAgentRunStep` rows are inserted when
67
+ * a step starts and updated when it finishes, so progress is visible mid-run, and
68
+ * `StepNumber` is already monotonic per run. No new table and no migration.
69
+ *
70
+ * Authorization is delegated to `RunView` executed as the calling user, so MJ's existing
71
+ * row-level security decides what is visible. A caller who cannot read the conversation
72
+ * detail gets the same answer as one asking about a detail that does not exist.
73
+ */
74
+ export declare class ConversationRunEventsResolver {
75
+ TailConversationEvents(conversationDetailID: string, ctx: AppContext, sinceSeq?: number): Promise<ConversationRunEventsOutput>;
76
+ /** Loads the conversation detail as the calling user; null when absent or not permitted. */
77
+ private loadDetail;
78
+ /**
79
+ * Newest run for the detail. A conversation detail can be retried, and the latest run is
80
+ * the one the UI is showing.
81
+ */
82
+ private loadLatestRun;
83
+ /** Steps after `sinceSeq`, oldest first, bounded by {@link MAX_EVENTS_PER_TAIL}. */
84
+ private loadSteps;
85
+ /** Projects a plain step row to an event. Plain rows may carry dates as strings. */
86
+ private toEvent;
87
+ /** Escapes a value for the `ExtraFilter` string. Ids are UUIDs, but never trust the shape. */
88
+ private escape;
89
+ }
90
+ //# sourceMappingURL=ConversationRunEventsResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationRunEventsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ConversationRunEventsResolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C;;;;;;;;GAQG;AACH,qBACa,oBAAoB;IAC7B,yEAAyE;IAEzE,GAAG,EAAE,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,IAAI,CAAC;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,6BAA6B;AAC7B,qBACa,2BAA2B;IAEpC,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAE/B;;;;OAIG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IAEH,UAAU,EAAE,OAAO,CAAC;IAGpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IAExE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,6BAA6B;IAEhC,sBAAsB,CACmB,oBAAoB,EAAE,MAAM,EAChE,GAAG,EAAE,UAAU,EAC2B,QAAQ,CAAC,EAAE,MAAM,GACnE,OAAO,CAAC,2BAA2B,CAAC;IAoEvC,4FAA4F;YAC9E,UAAU;IAmBxB;;;OAGG;YACW,aAAa;IAqB3B,oFAAoF;YACtE,SAAS;IAsBvB,oFAAoF;IACpF,OAAO,CAAC,OAAO;IAaf,8FAA8F;IAC9F,OAAO,CAAC,MAAM;CAGjB"}