@memberjunction/server 6.2.0-edge.3 → 6.2.0-edge.5

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 (543) hide show
  1. package/README.md +20 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentSessions/BridgeHostInstance.d.ts +25 -0
  4. package/dist/agentSessions/BridgeHostInstance.d.ts.map +1 -0
  5. package/dist/agentSessions/BridgeHostInstance.js +30 -0
  6. package/dist/agentSessions/BridgeHostInstance.js.map +1 -0
  7. package/dist/agentSessions/HostInstance.d.ts +75 -11
  8. package/dist/agentSessions/HostInstance.d.ts.map +1 -1
  9. package/dist/agentSessions/HostInstance.js +99 -28
  10. package/dist/agentSessions/HostInstance.js.map +1 -1
  11. package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
  12. package/dist/agentSessions/ReturningVisitorRecap.js +7 -3
  13. package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
  14. package/dist/agentSessions/SessionJanitor.d.ts +236 -27
  15. package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
  16. package/dist/agentSessions/SessionJanitor.js +682 -54
  17. package/dist/agentSessions/SessionJanitor.js.map +1 -1
  18. package/dist/agentSessions/SessionManager.d.ts +48 -3
  19. package/dist/agentSessions/SessionManager.d.ts.map +1 -1
  20. package/dist/agentSessions/SessionManager.js +112 -9
  21. package/dist/agentSessions/SessionManager.js.map +1 -1
  22. package/dist/agentSessions/SessionRunIDVerifier.d.ts +63 -0
  23. package/dist/agentSessions/SessionRunIDVerifier.d.ts.map +1 -0
  24. package/dist/agentSessions/SessionRunIDVerifier.js +129 -0
  25. package/dist/agentSessions/SessionRunIDVerifier.js.map +1 -0
  26. package/dist/agentSessions/index.d.ts +2 -0
  27. package/dist/agentSessions/index.d.ts.map +1 -1
  28. package/dist/agentSessions/index.js +10 -3
  29. package/dist/agentSessions/index.js.map +1 -1
  30. package/dist/apiRoot.d.ts +32 -0
  31. package/dist/apiRoot.d.ts.map +1 -0
  32. package/dist/apiRoot.js +67 -0
  33. package/dist/apiRoot.js.map +1 -0
  34. package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
  35. package/dist/auth/AuthProviderCatalogRouter.js +25 -0
  36. package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
  37. package/dist/auth/LoginScreenEngine.d.ts +22 -0
  38. package/dist/auth/LoginScreenEngine.d.ts.map +1 -0
  39. package/dist/auth/LoginScreenEngine.js +57 -0
  40. package/dist/auth/LoginScreenEngine.js.map +1 -0
  41. package/dist/auth/actionAuthorization.d.ts +40 -0
  42. package/dist/auth/actionAuthorization.d.ts.map +1 -0
  43. package/dist/auth/actionAuthorization.js +94 -0
  44. package/dist/auth/actionAuthorization.js.map +1 -0
  45. package/dist/auth/index.d.ts +1 -0
  46. package/dist/auth/index.d.ts.map +1 -1
  47. package/dist/auth/index.js +4 -10
  48. package/dist/auth/index.js.map +1 -1
  49. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  50. package/dist/auth/magicLink/MagicLinkRouter.js +3 -2
  51. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  52. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  53. package/dist/auth/magicLink/MagicLinkService.js +6 -3
  54. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  55. package/dist/auth/newUsers.d.ts +10 -0
  56. package/dist/auth/newUsers.d.ts.map +1 -1
  57. package/dist/auth/newUsers.js +80 -11
  58. package/dist/auth/newUsers.js.map +1 -1
  59. package/dist/config.d.ts +2514 -22
  60. package/dist/config.d.ts.map +1 -1
  61. package/dist/config.js +166 -4
  62. package/dist/config.js.map +1 -1
  63. package/dist/context.d.ts +8 -0
  64. package/dist/context.d.ts.map +1 -1
  65. package/dist/context.js +14 -11
  66. package/dist/context.js.map +1 -1
  67. package/dist/coreRoutes.d.ts +29 -0
  68. package/dist/coreRoutes.d.ts.map +1 -0
  69. package/dist/coreRoutes.js +142 -0
  70. package/dist/coreRoutes.js.map +1 -0
  71. package/dist/generated/graphql-schemas/__mj.d.ts +504 -3
  72. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  73. package/dist/generated/graphql-schemas/__mj.js +2456 -7
  74. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  75. package/dist/generic/CacheInvalidationResolver.d.ts +43 -8
  76. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  77. package/dist/generic/CacheInvalidationResolver.js +59 -19
  78. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  79. package/dist/generic/OrphanedConversationDetailReconciler.js +3 -3
  80. package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
  81. package/dist/generic/PushStatusResolver.js +1 -1
  82. package/dist/generic/PushStatusResolver.js.map +1 -1
  83. package/dist/generic/ResolverBase.d.ts +123 -48
  84. package/dist/generic/ResolverBase.d.ts.map +1 -1
  85. package/dist/generic/ResolverBase.js +293 -305
  86. package/dist/generic/ResolverBase.js.map +1 -1
  87. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  88. package/dist/generic/RunViewResolver.js +16 -0
  89. package/dist/generic/RunViewResolver.js.map +1 -1
  90. package/dist/globalCors.d.ts +33 -0
  91. package/dist/globalCors.d.ts.map +1 -0
  92. package/dist/globalCors.js +58 -0
  93. package/dist/globalCors.js.map +1 -0
  94. package/dist/index.d.ts +17 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +219 -278
  97. package/dist/index.js.map +1 -1
  98. package/dist/isolatedProvider.d.ts +20 -0
  99. package/dist/isolatedProvider.d.ts.map +1 -0
  100. package/dist/isolatedProvider.js +22 -0
  101. package/dist/isolatedProvider.js.map +1 -0
  102. package/dist/multiTenancy/index.d.ts.map +1 -1
  103. package/dist/multiTenancy/index.js +22 -2
  104. package/dist/multiTenancy/index.js.map +1 -1
  105. package/dist/realtimeProxy/RealtimeProxyServer.d.ts +44 -4
  106. package/dist/realtimeProxy/RealtimeProxyServer.d.ts.map +1 -1
  107. package/dist/realtimeProxy/RealtimeProxyServer.js +121 -16
  108. package/dist/realtimeProxy/RealtimeProxyServer.js.map +1 -1
  109. package/dist/realtimeProxy/RealtimeRelayTunnel.d.ts +171 -0
  110. package/dist/realtimeProxy/RealtimeRelayTunnel.d.ts.map +1 -0
  111. package/dist/realtimeProxy/RealtimeRelayTunnel.js +532 -0
  112. package/dist/realtimeProxy/RealtimeRelayTunnel.js.map +1 -0
  113. package/dist/realtimeSessions/RealtimeSessionEventService.d.ts +148 -0
  114. package/dist/realtimeSessions/RealtimeSessionEventService.d.ts.map +1 -0
  115. package/dist/realtimeSessions/RealtimeSessionEventService.js +191 -0
  116. package/dist/realtimeSessions/RealtimeSessionEventService.js.map +1 -0
  117. package/dist/realtimeSessions/RealtimeSessionVerificationService.d.ts +66 -0
  118. package/dist/realtimeSessions/RealtimeSessionVerificationService.d.ts.map +1 -0
  119. package/dist/realtimeSessions/RealtimeSessionVerificationService.js +139 -0
  120. package/dist/realtimeSessions/RealtimeSessionVerificationService.js.map +1 -0
  121. package/dist/realtimeSessions/RealtimeVerifyRouter.d.ts +38 -0
  122. package/dist/realtimeSessions/RealtimeVerifyRouter.d.ts.map +1 -0
  123. package/dist/realtimeSessions/RealtimeVerifyRouter.js +99 -0
  124. package/dist/realtimeSessions/RealtimeVerifyRouter.js.map +1 -0
  125. package/dist/realtimeSessions/RecordingAssemblyScheduler.d.ts +100 -0
  126. package/dist/realtimeSessions/RecordingAssemblyScheduler.d.ts.map +1 -0
  127. package/dist/realtimeSessions/RecordingAssemblyScheduler.js +173 -0
  128. package/dist/realtimeSessions/RecordingAssemblyScheduler.js.map +1 -0
  129. package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts +61 -0
  130. package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts.map +1 -0
  131. package/dist/realtimeSessions/SessionVerificationPortsBase.js +149 -0
  132. package/dist/realtimeSessions/SessionVerificationPortsBase.js.map +1 -0
  133. package/dist/realtimeSessions/SlidingWindowRateLimiter.d.ts +57 -0
  134. package/dist/realtimeSessions/SlidingWindowRateLimiter.d.ts.map +1 -0
  135. package/dist/realtimeSessions/SlidingWindowRateLimiter.js +69 -0
  136. package/dist/realtimeSessions/SlidingWindowRateLimiter.js.map +1 -0
  137. package/dist/realtimeSessions/index.d.ts +19 -0
  138. package/dist/realtimeSessions/index.d.ts.map +1 -0
  139. package/dist/realtimeSessions/index.js +19 -0
  140. package/dist/realtimeSessions/index.js.map +1 -0
  141. package/dist/realtimeSessions/ownedRealtimeSession.d.ts +30 -0
  142. package/dist/realtimeSessions/ownedRealtimeSession.d.ts.map +1 -0
  143. package/dist/realtimeSessions/ownedRealtimeSession.js +47 -0
  144. package/dist/realtimeSessions/ownedRealtimeSession.js.map +1 -0
  145. package/dist/realtimeSessions/sessionAccess.d.ts +92 -0
  146. package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -0
  147. package/dist/realtimeSessions/sessionAccess.js +94 -0
  148. package/dist/realtimeSessions/sessionAccess.js.map +1 -0
  149. package/dist/realtimeSessions/sessionConfigStamps.d.ts +70 -0
  150. package/dist/realtimeSessions/sessionConfigStamps.d.ts.map +1 -0
  151. package/dist/realtimeSessions/sessionConfigStamps.js +93 -0
  152. package/dist/realtimeSessions/sessionConfigStamps.js.map +1 -0
  153. package/dist/realtimeSessions/subscriptionAuthorization.d.ts +65 -0
  154. package/dist/realtimeSessions/subscriptionAuthorization.d.ts.map +1 -0
  155. package/dist/realtimeSessions/subscriptionAuthorization.js +71 -0
  156. package/dist/realtimeSessions/subscriptionAuthorization.js.map +1 -0
  157. package/dist/realtimeSessions/verificationCore.d.ts +243 -0
  158. package/dist/realtimeSessions/verificationCore.d.ts.map +1 -0
  159. package/dist/realtimeSessions/verificationCore.js +356 -0
  160. package/dist/realtimeSessions/verificationCore.js.map +1 -0
  161. package/dist/realtimeSessions/verificationPages.d.ts +66 -0
  162. package/dist/realtimeSessions/verificationPages.d.ts.map +1 -0
  163. package/dist/realtimeSessions/verificationPages.js +110 -0
  164. package/dist/realtimeSessions/verificationPages.js.map +1 -0
  165. package/dist/realtimeSessions/verificationPolicy.d.ts +147 -0
  166. package/dist/realtimeSessions/verificationPolicy.d.ts.map +1 -0
  167. package/dist/realtimeSessions/verificationPolicy.js +249 -0
  168. package/dist/realtimeSessions/verificationPolicy.js.map +1 -0
  169. package/dist/realtimeSessions/verificationWorkflow.d.ts +263 -0
  170. package/dist/realtimeSessions/verificationWorkflow.d.ts.map +1 -0
  171. package/dist/realtimeSessions/verificationWorkflow.js +435 -0
  172. package/dist/realtimeSessions/verificationWorkflow.js.map +1 -0
  173. package/dist/realtimeWidget/widgetGuestElevation.d.ts +20 -2
  174. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  175. package/dist/realtimeWidget/widgetGuestElevation.js +31 -2
  176. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  177. package/dist/resolvers/ActionResolver.d.ts +31 -5
  178. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  179. package/dist/resolvers/ActionResolver.js +75 -14
  180. package/dist/resolvers/ActionResolver.js.map +1 -1
  181. package/dist/resolvers/AdhocQueryResolver.d.ts +14 -1
  182. package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
  183. package/dist/resolvers/AdhocQueryResolver.js +21 -5
  184. package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
  185. package/dist/resolvers/ArtifactFileResolver.d.ts +5 -1
  186. package/dist/resolvers/ArtifactFileResolver.d.ts.map +1 -1
  187. package/dist/resolvers/ArtifactFileResolver.js +9 -7
  188. package/dist/resolvers/ArtifactFileResolver.js.map +1 -1
  189. package/dist/resolvers/CacheStatsResolver.d.ts +27 -0
  190. package/dist/resolvers/CacheStatsResolver.d.ts.map +1 -1
  191. package/dist/resolvers/CacheStatsResolver.js +113 -2
  192. package/dist/resolvers/CacheStatsResolver.js.map +1 -1
  193. package/dist/resolvers/ClientToolRequestResolver.d.ts +4 -2
  194. package/dist/resolvers/ClientToolRequestResolver.d.ts.map +1 -1
  195. package/dist/resolvers/ClientToolRequestResolver.js +28 -10
  196. package/dist/resolvers/ClientToolRequestResolver.js.map +1 -1
  197. package/dist/resolvers/ConversationRunEventsResolver.d.ts +8 -4
  198. package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -1
  199. package/dist/resolvers/ConversationRunEventsResolver.js +6 -6
  200. package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -1
  201. package/dist/resolvers/DatasetResolver.d.ts +24 -3
  202. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  203. package/dist/resolvers/DatasetResolver.js +57 -8
  204. package/dist/resolvers/DatasetResolver.js.map +1 -1
  205. package/dist/resolvers/EntityRecordNameResolver.d.ts +2 -1
  206. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
  207. package/dist/resolvers/EntityRecordNameResolver.js +3 -2
  208. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  209. package/dist/resolvers/FetchEntityVectorsResolver.d.ts +27 -1
  210. package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
  211. package/dist/resolvers/FetchEntityVectorsResolver.js +148 -2
  212. package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
  213. package/dist/resolvers/FileResolver.d.ts +82 -11
  214. package/dist/resolvers/FileResolver.d.ts.map +1 -1
  215. package/dist/resolvers/FileResolver.js +279 -101
  216. package/dist/resolvers/FileResolver.js.map +1 -1
  217. package/dist/resolvers/GetDataContextDataResolver.d.ts +33 -7
  218. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  219. package/dist/resolvers/GetDataContextDataResolver.js +117 -38
  220. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  221. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  222. package/dist/resolvers/GetDataResolver.js +6 -3
  223. package/dist/resolvers/GetDataResolver.js.map +1 -1
  224. package/dist/resolvers/HumanHandoffResolver.d.ts.map +1 -1
  225. package/dist/resolvers/HumanHandoffResolver.js +7 -1
  226. package/dist/resolvers/HumanHandoffResolver.js.map +1 -1
  227. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
  228. package/dist/resolvers/IntegrationDiscoveryResolver.js +4 -2
  229. package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
  230. package/dist/resolvers/MCPResolver.d.ts.map +1 -1
  231. package/dist/resolvers/MCPResolver.js +9 -4
  232. package/dist/resolvers/MCPResolver.js.map +1 -1
  233. package/dist/resolvers/QueryResolver.d.ts +2 -0
  234. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  235. package/dist/resolvers/QueryResolver.js +13 -0
  236. package/dist/resolvers/QueryResolver.js.map +1 -1
  237. package/dist/resolvers/RealtimeBridgeResolver.d.ts +54 -2
  238. package/dist/resolvers/RealtimeBridgeResolver.d.ts.map +1 -1
  239. package/dist/resolvers/RealtimeBridgeResolver.js +155 -10
  240. package/dist/resolvers/RealtimeBridgeResolver.js.map +1 -1
  241. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +157 -33
  242. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  243. package/dist/resolvers/RealtimeClientSessionResolver.js +404 -116
  244. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  245. package/dist/resolvers/RealtimeSessionEventsResolver.d.ts +61 -0
  246. package/dist/resolvers/RealtimeSessionEventsResolver.d.ts.map +1 -0
  247. package/dist/resolvers/RealtimeSessionEventsResolver.js +130 -0
  248. package/dist/resolvers/RealtimeSessionEventsResolver.js.map +1 -0
  249. package/dist/resolvers/RealtimeSessionVerificationResolver.d.ts +85 -0
  250. package/dist/resolvers/RealtimeSessionVerificationResolver.d.ts.map +1 -0
  251. package/dist/resolvers/RealtimeSessionVerificationResolver.js +188 -0
  252. package/dist/resolvers/RealtimeSessionVerificationResolver.js.map +1 -0
  253. package/dist/resolvers/RemoteBrowserActionResolver.d.ts +2 -0
  254. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  255. package/dist/resolvers/RemoteBrowserActionResolver.js +5 -1
  256. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  257. package/dist/resolvers/RunAIAgentResolver.d.ts +10 -0
  258. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  259. package/dist/resolvers/RunAIAgentResolver.js +100 -14
  260. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  261. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  262. package/dist/resolvers/RunTemplateResolver.js +12 -11
  263. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  264. package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts +12 -1
  265. package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts.map +1 -1
  266. package/dist/resolvers/SearchKnowledgeStreamResolver.js +15 -2
  267. package/dist/resolvers/SearchKnowledgeStreamResolver.js.map +1 -1
  268. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  269. package/dist/resolvers/SqlLoggingConfigResolver.js +2 -3
  270. package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
  271. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  272. package/dist/resolvers/SyncDataResolver.js +6 -2
  273. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  274. package/dist/resolvers/SyncRolesUsersResolver.d.ts +2 -0
  275. package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
  276. package/dist/resolvers/SyncRolesUsersResolver.js +23 -6
  277. package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
  278. package/dist/resolvers/TaskGraphFrameResolver.d.ts +2 -1
  279. package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
  280. package/dist/resolvers/TaskGraphFrameResolver.js +28 -1
  281. package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
  282. package/dist/resolvers/TestQuerySQLResolver.d.ts +24 -0
  283. package/dist/resolvers/TestQuerySQLResolver.d.ts.map +1 -1
  284. package/dist/resolvers/TestQuerySQLResolver.js +65 -13
  285. package/dist/resolvers/TestQuerySQLResolver.js.map +1 -1
  286. package/dist/resolvers/TransactionGroupResolver.d.ts +19 -2
  287. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  288. package/dist/resolvers/TransactionGroupResolver.js +102 -24
  289. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  290. package/dist/resolvers/UserAvatarResolver.d.ts +16 -0
  291. package/dist/resolvers/UserAvatarResolver.d.ts.map +1 -0
  292. package/dist/resolvers/UserAvatarResolver.js +124 -0
  293. package/dist/resolvers/UserAvatarResolver.js.map +1 -0
  294. package/dist/resolvers/UserResolver.d.ts.map +1 -1
  295. package/dist/resolvers/UserResolver.js +2 -17
  296. package/dist/resolvers/UserResolver.js.map +1 -1
  297. package/dist/resolvers/agent-run-data-guard.d.ts +31 -0
  298. package/dist/resolvers/agent-run-data-guard.d.ts.map +1 -0
  299. package/dist/resolvers/agent-run-data-guard.js +72 -0
  300. package/dist/resolvers/agent-run-data-guard.js.map +1 -0
  301. package/dist/resolvers/agentVisionConsentAudit.d.ts +37 -0
  302. package/dist/resolvers/agentVisionConsentAudit.d.ts.map +1 -0
  303. package/dist/resolvers/agentVisionConsentAudit.js +63 -0
  304. package/dist/resolvers/agentVisionConsentAudit.js.map +1 -0
  305. package/dist/resolvers/avatarInputValidation.d.ts +40 -0
  306. package/dist/resolvers/avatarInputValidation.d.ts.map +1 -0
  307. package/dist/resolvers/avatarInputValidation.js +97 -0
  308. package/dist/resolvers/avatarInputValidation.js.map +1 -0
  309. package/dist/resolvers/currentUserRoles.d.ts +29 -0
  310. package/dist/resolvers/currentUserRoles.d.ts.map +1 -1
  311. package/dist/resolvers/currentUserRoles.js +30 -0
  312. package/dist/resolvers/currentUserRoles.js.map +1 -1
  313. package/dist/resolvers/meetings/meetingMutations.d.ts +6 -0
  314. package/dist/resolvers/meetings/meetingMutations.d.ts.map +1 -1
  315. package/dist/resolvers/meetings/meetingMutations.js +21 -0
  316. package/dist/resolvers/meetings/meetingMutations.js.map +1 -1
  317. package/dist/rest/RealtimeRecordingHandler.d.ts +49 -0
  318. package/dist/rest/RealtimeRecordingHandler.d.ts.map +1 -0
  319. package/dist/rest/RealtimeRecordingHandler.js +383 -0
  320. package/dist/rest/RealtimeRecordingHandler.js.map +1 -0
  321. package/dist/rest/ViewOperationsHandler.d.ts +3 -1
  322. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  323. package/dist/rest/ViewOperationsHandler.js +21 -12
  324. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  325. package/dist/rest/setupRESTEndpoints.d.ts +6 -0
  326. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  327. package/dist/rest/setupRESTEndpoints.js +6 -0
  328. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  329. package/dist/serverExtensionReservedRoots.d.ts +12 -10
  330. package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
  331. package/dist/serverExtensionReservedRoots.js +14 -17
  332. package/dist/serverExtensionReservedRoots.js.map +1 -1
  333. package/dist/services/MJStorageBlobStore.d.ts +8 -1
  334. package/dist/services/MJStorageBlobStore.d.ts.map +1 -1
  335. package/dist/services/MJStorageBlobStore.js +25 -19
  336. package/dist/services/MJStorageBlobStore.js.map +1 -1
  337. package/dist/services/StartTaskGraphDispatcher.js +2 -2
  338. package/dist/services/StartTaskGraphDispatcher.js.map +1 -1
  339. package/dist/services/TaskGraphActionRunner.d.ts +5 -3
  340. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  341. package/dist/services/TaskGraphActionRunner.js +27 -5
  342. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  343. package/dist/services/TaskGraphAgentRunner.d.ts +14 -2
  344. package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
  345. package/dist/services/TaskGraphAgentRunner.js +157 -9
  346. package/dist/services/TaskGraphAgentRunner.js.map +1 -1
  347. package/dist/services/TaskGraphContinuationDeliverer.d.ts +57 -4
  348. package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
  349. package/dist/services/TaskGraphContinuationDeliverer.js +607 -18
  350. package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
  351. package/dist/sharedCache.d.ts +105 -0
  352. package/dist/sharedCache.d.ts.map +1 -0
  353. package/dist/sharedCache.js +279 -0
  354. package/dist/sharedCache.js.map +1 -0
  355. package/dist/types.d.ts +6 -0
  356. package/dist/types.d.ts.map +1 -1
  357. package/dist/types.js.map +1 -1
  358. package/package.json +99 -96
  359. package/src/__tests__/ActionResolver.authorization.test.ts +353 -0
  360. package/src/__tests__/AdhocQueryResolver.sqlAuthorizer.test.ts +104 -0
  361. package/src/__tests__/BridgeHostInstance.test.ts +232 -0
  362. package/src/__tests__/ClientToolRequestResolver.test.ts +116 -0
  363. package/src/__tests__/DatasetResolver.itemFilters.test.ts +201 -0
  364. package/src/__tests__/EntityRecordNameResolver.rowSecurity.test.ts +152 -0
  365. package/src/__tests__/FetchEntityVectorsResolver.test.ts +433 -0
  366. package/src/__tests__/FileResolver.storageAccess.test.ts +562 -0
  367. package/src/__tests__/GetDataContextDataResolver.sqlItems.test.ts +416 -0
  368. package/src/__tests__/HostInstance.test.ts +84 -0
  369. package/src/__tests__/HumanHandoffResolver.test.ts +17 -0
  370. package/src/__tests__/ListOperationsResolver.adhocScreen.test.ts +137 -0
  371. package/src/__tests__/LoginScreenEngine.test.ts +86 -0
  372. package/src/__tests__/MJStorageBlobStore.storageGate.test.ts +63 -0
  373. package/src/__tests__/MeetingResolver.test.ts +75 -1
  374. package/src/__tests__/RealtimeBridgeResolver.test.ts +415 -6
  375. package/src/__tests__/RealtimeClientSessionResolver.configTamper.test.ts +383 -0
  376. package/src/__tests__/RealtimeClientSessionResolver.test.ts +682 -58
  377. package/src/__tests__/RealtimeProxyServer.test.ts +16 -1
  378. package/src/__tests__/RealtimeRelay.test.ts +876 -0
  379. package/src/__tests__/RecordingAssemblyScheduler.test.ts +178 -0
  380. package/src/__tests__/RemoteBrowserActionResolver.goalRunLink.test.ts +129 -0
  381. package/src/__tests__/ResolverBase.adhocReadScope.test.ts +133 -2
  382. package/src/__tests__/ResolverBase.aggregateScreen.test.ts +174 -0
  383. package/src/__tests__/ResolverBase.balancedClause.test.ts +155 -0
  384. package/src/__tests__/ResolverBase.clauseUnscopedRead.test.ts +127 -0
  385. package/src/__tests__/ResolverBase.clientOldValues.test.ts +212 -6
  386. package/src/__tests__/ResolverBase.filterEscaping.test.ts +5 -2
  387. package/src/__tests__/ReturningVisitorRecap.test.ts +115 -0
  388. package/src/__tests__/RunAIAgentResolver.branch.test.ts +170 -0
  389. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +6 -4
  390. package/src/__tests__/RunAIAgentResolver.runDataGuard.test.ts +258 -0
  391. package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +166 -0
  392. package/src/__tests__/RunTemplateResolver.test.ts +132 -0
  393. package/src/__tests__/RunViewResolver.cacheCheckForwarding.test.ts +63 -0
  394. package/src/__tests__/RunViewResolver.cacheCheckScreen.test.ts +165 -0
  395. package/src/__tests__/SearchKnowledgeStreamResolver.test.ts +161 -0
  396. package/src/__tests__/SessionJanitor.test.ts +1203 -21
  397. package/src/__tests__/SessionManager.test.ts +240 -17
  398. package/src/__tests__/SessionRunIDVerifier.test.ts +251 -0
  399. package/src/__tests__/SyncRolesUsersResolver.userRoles.test.ts +97 -0
  400. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +25 -0
  401. package/src/__tests__/TaskGraphAgentRunner.test.ts +266 -0
  402. package/src/__tests__/TaskGraphContinuationDeliverer.test.ts +403 -22
  403. package/src/__tests__/TaskGraphFrameResolver.test.ts +22 -0
  404. package/src/__tests__/TestQuerySQLResolver.test.ts +274 -0
  405. package/src/__tests__/TransactionGroupResolver.refusals.test.ts +98 -1
  406. package/src/__tests__/UpdateMJDataContextItem.oldValues.test.ts +220 -0
  407. package/src/__tests__/UserAvatarResolver.test.ts +255 -0
  408. package/src/__tests__/UserResolver.currentUser.test.ts +16 -1
  409. package/src/__tests__/ViewOperationsHandler.clauseScreen.test.ts +157 -0
  410. package/src/__tests__/actionAuthorization.test.ts +130 -0
  411. package/src/__tests__/agent-run-data-guard.test.ts +130 -0
  412. package/src/__tests__/agentVisionConsentAudit.test.ts +118 -0
  413. package/src/__tests__/apiRootBoot.test.ts +202 -0
  414. package/src/__tests__/avatarInputValidation.test.ts +160 -0
  415. package/src/__tests__/cacheInvalidationRecordData.test.ts +64 -0
  416. package/src/__tests__/conversationRunEvents.test.ts +56 -14
  417. package/src/__tests__/globalCors.test.ts +217 -0
  418. package/src/__tests__/isolatedProviderTransactions.test.ts +169 -0
  419. package/src/__tests__/magicLinkService.consume.test.ts +6 -0
  420. package/src/__tests__/magicLinkService.provisionLog.test.ts +5 -0
  421. package/src/__tests__/multiTenancy.postgresRewrite.test.ts +181 -0
  422. package/src/__tests__/multiTenancy.security.test.ts +51 -0
  423. package/src/__tests__/multiTenancy.test.ts +1 -1
  424. package/src/__tests__/newUsers.template.test.ts +151 -0
  425. package/src/__tests__/newUsers.test.ts +74 -5
  426. package/src/__tests__/orphanedConversationDetailReconciler.test.ts +17 -2
  427. package/src/__tests__/ownedRealtimeSession.test.ts +39 -0
  428. package/src/__tests__/pushStatusResolver.filter.test.ts +7 -0
  429. package/src/__tests__/realtimeRecordingHandler.test.ts +652 -0
  430. package/src/__tests__/realtimeSessions/RealtimeSessionEventService.test.ts +201 -0
  431. package/src/__tests__/realtimeSessions/RealtimeSessionEventsResolver.test.ts +215 -0
  432. package/src/__tests__/realtimeSessions/RealtimeSessionVerificationResolver.test.ts +102 -0
  433. package/src/__tests__/realtimeSessions/RealtimeSessionVerificationService.test.ts +349 -0
  434. package/src/__tests__/realtimeSessions/RealtimeVerifyRouter.test.ts +131 -0
  435. package/src/__tests__/realtimeSessions/SlidingWindowRateLimiter.test.ts +56 -0
  436. package/src/__tests__/realtimeSessions/helpers.ts +4 -0
  437. package/src/__tests__/realtimeSessions/sessionAccess.test.ts +129 -0
  438. package/src/__tests__/realtimeSessions/sessionConfigStamps.test.ts +124 -0
  439. package/src/__tests__/realtimeSessions/verificationCore.test.ts +355 -0
  440. package/src/__tests__/realtimeSessions/verificationPages.test.ts +84 -0
  441. package/src/__tests__/realtimeSessions/verificationPolicy.test.ts +226 -0
  442. package/src/__tests__/realtimeSessions/verificationWorkflow.test.ts +633 -0
  443. package/src/__tests__/resolverBase.fls.test.ts +87 -4
  444. package/src/__tests__/serverExtensionHostOverlay.test.ts +66 -0
  445. package/src/__tests__/serverExtensionReservedRoots.test.ts +11 -96
  446. package/src/__tests__/sharedCache.test.ts +312 -0
  447. package/src/__tests__/widgetGuestElevation.test.ts +44 -0
  448. package/src/agentSessions/BridgeHostInstance.ts +32 -0
  449. package/src/agentSessions/HostInstance.ts +124 -28
  450. package/src/agentSessions/ReturningVisitorRecap.ts +7 -3
  451. package/src/agentSessions/SessionJanitor.ts +821 -59
  452. package/src/agentSessions/SessionManager.ts +138 -26
  453. package/src/agentSessions/SessionRunIDVerifier.ts +171 -0
  454. package/src/agentSessions/index.ts +10 -3
  455. package/src/apiRoot.ts +78 -0
  456. package/src/auth/AuthProviderCatalogRouter.ts +26 -0
  457. package/src/auth/LoginScreenEngine.ts +50 -0
  458. package/src/auth/actionAuthorization.ts +116 -0
  459. package/src/auth/index.ts +4 -8
  460. package/src/auth/magicLink/MagicLinkRouter.ts +3 -2
  461. package/src/auth/magicLink/MagicLinkService.ts +6 -3
  462. package/src/auth/newUsers.ts +99 -11
  463. package/src/config.ts +171 -5
  464. package/src/context.ts +15 -10
  465. package/src/coreRoutes.ts +166 -0
  466. package/src/generated/graphql-schemas/__mj.ts +1815 -57
  467. package/src/generic/CacheInvalidationResolver.ts +73 -18
  468. package/src/generic/OrphanedConversationDetailReconciler.ts +3 -3
  469. package/src/generic/PushStatusResolver.ts +1 -1
  470. package/src/generic/ResolverBase.ts +335 -326
  471. package/src/generic/RunViewResolver.ts +21 -0
  472. package/src/globalCors.ts +71 -0
  473. package/src/index.ts +231 -300
  474. package/src/isolatedProvider.ts +22 -0
  475. package/src/multiTenancy/index.ts +24 -2
  476. package/src/realtimeProxy/RealtimeProxyServer.ts +148 -16
  477. package/src/realtimeProxy/RealtimeRelayTunnel.ts +645 -0
  478. package/src/realtimeSessions/README.md +179 -0
  479. package/src/realtimeSessions/RealtimeSessionEventService.ts +274 -0
  480. package/src/realtimeSessions/RealtimeSessionVerificationService.ts +168 -0
  481. package/src/realtimeSessions/RealtimeVerifyRouter.ts +109 -0
  482. package/src/realtimeSessions/RecordingAssemblyScheduler.ts +234 -0
  483. package/src/realtimeSessions/SessionVerificationPortsBase.ts +189 -0
  484. package/src/realtimeSessions/SlidingWindowRateLimiter.ts +92 -0
  485. package/src/realtimeSessions/index.ts +18 -0
  486. package/src/realtimeSessions/ownedRealtimeSession.ts +55 -0
  487. package/src/realtimeSessions/sessionAccess.ts +145 -0
  488. package/src/realtimeSessions/sessionConfigStamps.ts +123 -0
  489. package/src/realtimeSessions/subscriptionAuthorization.ts +116 -0
  490. package/src/realtimeSessions/verificationCore.ts +502 -0
  491. package/src/realtimeSessions/verificationPages.ts +149 -0
  492. package/src/realtimeSessions/verificationPolicy.ts +321 -0
  493. package/src/realtimeSessions/verificationWorkflow.ts +702 -0
  494. package/src/realtimeWidget/widgetGuestElevation.ts +34 -2
  495. package/src/resolvers/ActionResolver.ts +84 -21
  496. package/src/resolvers/AdhocQueryResolver.ts +24 -6
  497. package/src/resolvers/ArtifactFileResolver.ts +9 -8
  498. package/src/resolvers/CacheStatsResolver.ts +89 -2
  499. package/src/resolvers/ClientToolRequestResolver.ts +25 -7
  500. package/src/resolvers/ConversationRunEventsResolver.ts +15 -11
  501. package/src/resolvers/DatasetResolver.ts +70 -10
  502. package/src/resolvers/EntityRecordNameResolver.ts +3 -2
  503. package/src/resolvers/FetchEntityVectorsResolver.ts +179 -2
  504. package/src/resolvers/FileResolver.ts +321 -106
  505. package/src/resolvers/GetDataContextDataResolver.ts +139 -41
  506. package/src/resolvers/GetDataResolver.ts +6 -3
  507. package/src/resolvers/HumanHandoffResolver.ts +8 -0
  508. package/src/resolvers/IntegrationDiscoveryResolver.ts +4 -2
  509. package/src/resolvers/MCPResolver.ts +8 -5
  510. package/src/resolvers/QueryResolver.ts +11 -0
  511. package/src/resolvers/RealtimeBridgeResolver.ts +163 -11
  512. package/src/resolvers/RealtimeClientSessionResolver.ts +511 -129
  513. package/src/resolvers/RealtimeSessionEventsResolver.ts +133 -0
  514. package/src/resolvers/RealtimeSessionVerificationResolver.ts +174 -0
  515. package/src/resolvers/RemoteBrowserActionResolver.ts +11 -1
  516. package/src/resolvers/RunAIAgentResolver.ts +116 -14
  517. package/src/resolvers/RunTemplateResolver.ts +13 -12
  518. package/src/resolvers/SearchKnowledgeStreamResolver.ts +19 -3
  519. package/src/resolvers/SqlLoggingConfigResolver.ts +2 -4
  520. package/src/resolvers/SyncDataResolver.ts +6 -2
  521. package/src/resolvers/SyncRolesUsersResolver.ts +24 -6
  522. package/src/resolvers/TaskGraphFrameResolver.ts +33 -1
  523. package/src/resolvers/TestQuerySQLResolver.ts +68 -13
  524. package/src/resolvers/TransactionGroupResolver.ts +131 -27
  525. package/src/resolvers/UserAvatarResolver.ts +111 -0
  526. package/src/resolvers/UserResolver.ts +2 -16
  527. package/src/resolvers/__tests__/GetDataResolver.validation.test.ts +95 -0
  528. package/src/resolvers/agent-run-data-guard.ts +89 -0
  529. package/src/resolvers/agentVisionConsentAudit.ts +82 -0
  530. package/src/resolvers/avatarInputValidation.ts +123 -0
  531. package/src/resolvers/currentUserRoles.ts +32 -1
  532. package/src/resolvers/meetings/meetingMutations.ts +21 -0
  533. package/src/rest/RealtimeRecordingHandler.ts +464 -0
  534. package/src/rest/ViewOperationsHandler.ts +29 -13
  535. package/src/rest/setupRESTEndpoints.ts +6 -0
  536. package/src/serverExtensionReservedRoots.ts +14 -17
  537. package/src/services/MJStorageBlobStore.ts +31 -30
  538. package/src/services/StartTaskGraphDispatcher.ts +2 -2
  539. package/src/services/TaskGraphActionRunner.ts +25 -5
  540. package/src/services/TaskGraphAgentRunner.ts +188 -11
  541. package/src/services/TaskGraphContinuationDeliverer.ts +713 -17
  542. package/src/sharedCache.ts +305 -0
  543. package/src/types.ts +7 -0
@@ -18,7 +18,7 @@ import { mj_core_schema } from '../../config.js';
18
18
 
19
19
 
20
20
 
21
- import { MJAIActionEntity, MJAIAgentActionEntity, MJAIAgentArtifactTypeEntity, MJAIAgentCategoryEntity, MJAIAgentChannelEntity, MJAIAgentClientToolEntity, MJAIAgentCoAgentEntity, MJAIAgentConfigurationEntity, MJAIAgentCredentialEntity, MJAIAgentDataSourceEntity, MJAIAgentExampleEntity, MJAIAgentHarnessEntity, MJAIAgentLearningCycleEntity, MJAIAgentModalityEntity, MJAIAgentModelEntity, MJAIAgentNoteTypeEntity, MJAIAgentNoteEntity, MJAIAgentPermissionEntity, MJAIAgentPersonaEntity, MJAIAgentPromptEntity, MJAIAgentRelationshipEntity, MJAIAgentRequestTypeEntity, MJAIAgentRequestEntity, MJAIAgentRubricEntity, MJAIAgentRunMediaEntity, MJAIAgentRunStepEntity, MJAIAgentRunEntity, MJAIAgentSearchScopeEntity, MJAIAgentSessionBridgeParticipantEntity, MJAIAgentSessionBridgeEntity, MJAIAgentSessionChannelEntity, MJAIAgentSessionEntity, MJAIAgentSkillEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentEntity, MJAIArchitectureEntity, MJAIBridgeAgentIdentityEntity, MJAIBridgeProviderChannelEntity, MJAIBridgeProviderEntity, MJAIClientToolDefinitionEntity, MJAIConfigurationParamEntity, MJAIConfigurationEntity, MJAICredentialBindingEntity, MJAIModalityEntity, MJAIModelActionEntity, MJAIModelArchitectureEntity, MJAIModelCostEntity, MJAIModelModalityEntity, MJAIModelPersonaEntity, MJAIModelPriceTypeEntity, MJAIModelPriceUnitTypeEntity, MJAIModelTypeEntity, MJAIModelVendorEntity, MJAIModelEntity, MJAIPersonaVendorEntity, MJAIPersonaEntity, MJAIPromptCategoryEntity, MJAIPromptModelEntity, MJAIPromptRunMediaEntity, MJAIPromptRunEntity, MJAIPromptTypeEntity, MJAIPromptEntity, MJAIRemoteBrowserProviderEntity, MJAIResultCacheEntity, MJAISkillActionEntity, MJAISkillPermissionEntity, MJAISkillSearchScopeEntity, MJAISkillSubAgentEntity, MJAISkillEntity, MJAIUsageTypeEntity, MJAIVendorTypeDefinitionEntity, MJAIVendorTypeEntity, MJAIVendorEntity, MJAPIApplicationScopeEntity, MJAPIApplicationEntity, MJAPIKeyApplicationEntity, MJAPIKeyScopeEntity, MJAPIKeyUsageLogEntity, MJAPIKeyEntity, MJAPIScopeEntity, MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJApplicationEntityEntity, MJApplicationRoleEntity, MJApplicationSettingEntity, MJApplicationEntity, MJArchiveConfigurationEntityEntity, MJArchiveConfigurationEntity, MJArchiveRunDetailEntity, MJArchiveRunEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthenticationProviderEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJClusterAnalysisEntity, MJClusterAnalysisClusterEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationSyncWatermarkEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemChunkEntity, MJContentItemDuplicateEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunDetailEntity, MJContentProcessRunPromptRunEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationCompactionRunEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationSkillEntity, MJConversationWidgetInstanceEntity, MJConversationEntity, MJCountryEntity, MJCredentialCategoryEntity, MJCredentialTypeEntity, MJCredentialEntity, MJDashboardCategoryEntity, MJDashboardCategoryLinkEntity, MJDashboardCategoryPermissionEntity, MJDashboardPartTypeEntity, MJDashboardPermissionEntity, MJDashboardUserPreferenceEntity, MJDashboardUserStateEntity, MJDashboardEntity, MJDataContextItemEntity, MJDataContextEntity, MJDatasetItemEntity, MJDatasetEntity, MJDuplicateRunDetailMatchEntity, MJDuplicateRunDetailEntity, MJDuplicateRunEntity, MJEmployeeCompanyIntegrationEntity, MJEmployeeRoleEntity, MJEmployeeSkillEntity, MJEmployeeEntity, MJEncryptionAlgorithmEntity, MJEncryptionKeySourceEntity, MJEncryptionKeyEntity, MJEntityEntity, MJEntityAIActionEntity, MJEntityActionFilterEntity, MJEntityActionInvocationTypeEntity, MJEntityActionInvocationEntity, MJEntityActionParamEntity, MJEntityActionEntity, MJEntityCommunicationFieldEntity, MJEntityCommunicationMessageTypeEntity, MJEntityDocumentRunEntity, MJEntityDocumentSettingEntity, MJEntityDocumentTypeEntity, MJEntityDocumentEntity, MJEntityFieldPermissionEntity, MJEntityFieldValueEntity, MJEntityFieldEntity, MJEntityFormContributionEntity, MJEntityFormOverrideEntity, MJEntityOrganicKeyRelatedEntityEntity, MJEntityOrganicKeyEntity, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExperimentSessionIterationEntity, MJExperimentSessionEntity, MJExperimentEntity, MJExplorerNavigationItemEntity, MJExternalDataSourceTypeEntity, MJExternalDataSourceEntity, MJFeaturePipelineTypeEntity, MJFeatureValueCacheEntity, MJFeatureValueEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountPermissionEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJFormChromeRuleEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJIdentityClaimTypeEntity, MJIdentityClaimEntity, MJInstanceConfigurationEntity, MJIntegrationObjectFieldEntity, MJIntegrationObjectEntity, MJIntegrationSourceTypeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJInteractionEventEntity, MJInteractionLinkEntity, MJInteractionOfferEntity, MJInteractionEntity, MJKnowledgeHubSavedSearchEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJMCPToolFavoriteEntity, MJMLAlgorithmUseCaseRankingEntity, MJMLAlgorithmUseCaseEntity, MJMLAlgorithmEntity, MJMLModelScoringBindingEntity, MJMLModelEntity, MJMLTrainingPipelineEntity, MJMLTrainingRunEntity, MJMagicLinkInviteAllowedDomainEntity, MJMagicLinkInviteAllowedPathEntity, MJMagicLinkInviteApplicationEntity, MJMagicLinkInviteRoleEntity, MJMagicLinkInviteEntity, MJMagicLinkRedemptionEntity, MJMaterializedResultQueryEntity, MJMaterializedResultEntity, MJMeetingParticipantEntity, MJMeetingEntity, MJNumberPoolEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJPermissionDomainEntity, MJPhoneNumberEntity, MJProcessRunDetailEntity, MJProcessRunEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryDependencyEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQuerySQLEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRSUPendingWorkEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordCloneLogItemEntity, MJRecordCloneLogEntity, MJRecordGeoCodeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJRecordProcessCategoryEntity, MJRecordProcessWatermarkEntity, MJRecordProcessEntity, MJRemoteOperationCategoryEntity, MJRemoteOperationEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJRubricBandEntity, MJRubricCategoryEntity, MJRubricCriterionEntity, MJRubricCriterionLevelEntity, MJRubricEvaluationScoreEntity, MJRubricEvaluationEntity, MJRubricScaleLevelEntity, MJRubricScaleEntity, MJRubricVersionEntity, MJRubricEntity, MJSQLDialectEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJScopedPromptConfigEntity, MJScopedPromptPartEntity, MJSearchExecutionLogEntity, MJSearchProviderEntity, MJSearchScopeEntityEntity, MJSearchScopeExternalIndexEntity, MJSearchScopePermissionEntity, MJSearchScopeProviderEntity, MJSearchScopeStorageAccountEntity, MJSearchScopeTestQueryEntity, MJSearchScopeEntity, MJSignatureAccountEntity, MJSignatureProviderEntity, MJSignatureRequestDocumentEntity, MJSignatureRequestLogEntity, MJSignatureRequestRecipientEntity, MJSignatureRequestEntity, MJSkillEntity, MJStateProvinceEntity, MJTagAuditLogEntity, MJTagCoOccurrenceEntity, MJTagScopeEntity, MJTagSuggestionEntity, MJTagSynonymEntity, MJTaggedItemEntity, MJTagEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJTaskEntity, MJTemplateCategoryEntity, MJTemplateContentTypeEntity, MJTemplateContentEntity, MJTemplateParamEntity, MJTemplateEntity, MJTestRubricEntity, MJTestRunFeedbackEntity, MJTestRunOutputTypeEntity, MJTestRunOutputEntity, MJTestRunEntity, MJTestSuiteRunEntity, MJTestSuiteTestEntity, MJTestSuiteEntity, MJTestTypeEntity, MJTestEntity, MJThemeEntity, MJUserApplicationEntityEntity, MJUserApplicationEntity, MJUserFavoriteEntity, MJUserNotificationPreferenceEntity, MJUserNotificationTypeEntity, MJUserNotificationEntity, MJUserRecordLogEntity, MJUserRoleEntity, MJUserRoutineRecipientEntity, MJUserRoutineRunEntity, MJUserRoutineEntity, MJUserSettingEntity, MJUserViewCategoryEntity, MJUserViewRunDetailEntity, MJUserViewRunEntity, MJUserViewEntity, MJUserEntity, MJVectorDatabaseEntity, MJVectorIndexEntity, MJVersionInstallationEntity, MJVersionLabelItemEntity, MJVersionLabelRestoreEntity, MJVersionLabelEntity, MJViewTypeEntity, MJWebSearchProviderEntity, MJWorkQueueDeduplicationEntity, MJWorkQueueDeliveryEntity, MJWorkQueueMessageEntity, MJWorkQueueSubscriptionEntity, MJWorkQueueTopicEntity, MJWorkQueueTransportEntity, MJWorkspaceItemEntity, MJWorkspaceEntity } from '@memberjunction/core-entities';
21
+ import { MJAIActionEntity, MJAIAgentActionEntity, MJAIAgentArtifactTypeEntity, MJAIAgentCategoryEntity, MJAIAgentChannelEntity, MJAIAgentClientToolEntity, MJAIAgentCoAgentEntity, MJAIAgentConfigurationEntity, MJAIAgentCredentialEntity, MJAIAgentDataSourceEntity, MJAIAgentExampleEntity, MJAIAgentHarnessEntity, MJAIAgentLearningCycleEntity, MJAIAgentModalityEntity, MJAIAgentModelEntity, MJAIAgentNoteTypeEntity, MJAIAgentNoteEntity, MJAIAgentPermissionEntity, MJAIAgentPersonaEntity, MJAIAgentPromptEntity, MJAIAgentRelationshipEntity, MJAIAgentRequestTypeEntity, MJAIAgentRequestEntity, MJAIAgentRubricEntity, MJAIAgentRunMediaEntity, MJAIAgentRunStepEntity, MJAIAgentRunEntity, MJAIAgentSearchScopeEntity, MJAIAgentSessionBridgeParticipantEntity, MJAIAgentSessionBridgeEntity, MJAIAgentSessionChannelEntity, MJAIAgentSessionRecordingShardEntity, MJAIAgentSessionEntity, MJAIAgentSkillEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentUserPolicyEntity, MJAIAgentEntity, MJAIArchitectureEntity, MJAIBridgeAgentIdentityEntity, MJAIBridgeProviderChannelEntity, MJAIBridgeProviderEntity, MJAIClientToolDefinitionEntity, MJAIConfigurationParamEntity, MJAIConfigurationEntity, MJAICredentialBindingEntity, MJAIModalityEntity, MJAIModelActionEntity, MJAIModelArchitectureEntity, MJAIModelCostEntity, MJAIModelModalityEntity, MJAIModelPersonaEntity, MJAIModelPriceTypeEntity, MJAIModelPriceUnitTypeEntity, MJAIModelTypeEntity, MJAIModelVendorEntity, MJAIModelEntity, MJAIPersonaVendorEntity, MJAIPersonaEntity, MJAIPromptCategoryEntity, MJAIPromptModelEntity, MJAIPromptRunMediaEntity, MJAIPromptRunEntity, MJAIPromptTypeEntity, MJAIPromptEntity, MJAIRemoteBrowserProviderEntity, MJAIResultCacheEntity, MJAISkillActionEntity, MJAISkillPermissionEntity, MJAISkillSearchScopeEntity, MJAISkillSubAgentEntity, MJAISkillEntity, MJAIUsageTypeEntity, MJAIVendorTypeDefinitionEntity, MJAIVendorTypeEntity, MJAIVendorEntity, MJAPIApplicationScopeEntity, MJAPIApplicationEntity, MJAPIKeyApplicationEntity, MJAPIKeyScopeEntity, MJAPIKeyUsageLogEntity, MJAPIKeyEntity, MJAPIScopeEntity, MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJApplicationEntityEntity, MJApplicationRoleEntity, MJApplicationSettingEntity, MJApplicationEntity, MJArchiveConfigurationEntityEntity, MJArchiveConfigurationEntity, MJArchiveRunDetailEntity, MJArchiveRunEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthenticationProviderEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJClusterAnalysisEntity, MJClusterAnalysisClusterEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationSyncWatermarkEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemChunkEntity, MJContentItemDuplicateEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunDetailEntity, MJContentProcessRunPromptRunEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationBranchEntity, MJConversationCompactionRunEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationSkillEntity, MJConversationWidgetInstanceEntity, MJConversationEntity, MJCountryEntity, MJCredentialCategoryEntity, MJCredentialTypeEntity, MJCredentialEntity, MJDashboardCategoryEntity, MJDashboardCategoryLinkEntity, MJDashboardCategoryPermissionEntity, MJDashboardPartTypeEntity, MJDashboardPermissionEntity, MJDashboardUserPreferenceEntity, MJDashboardUserStateEntity, MJDashboardEntity, MJDataContextItemEntity, MJDataContextEntity, MJDatasetItemEntity, MJDatasetEntity, MJDuplicateRunDetailMatchEntity, MJDuplicateRunDetailEntity, MJDuplicateRunEntity, MJEmployeeCompanyIntegrationEntity, MJEmployeeRoleEntity, MJEmployeeSkillEntity, MJEmployeeEntity, MJEncryptionAlgorithmEntity, MJEncryptionKeySourceEntity, MJEncryptionKeyEntity, MJEntityEntity, MJEntityAIActionEntity, MJEntityActionFilterEntity, MJEntityActionInvocationTypeEntity, MJEntityActionInvocationEntity, MJEntityActionParamEntity, MJEntityActionEntity, MJEntityCommunicationFieldEntity, MJEntityCommunicationMessageTypeEntity, MJEntityDocumentRunEntity, MJEntityDocumentSettingEntity, MJEntityDocumentTypeEntity, MJEntityDocumentEntity, MJEntityFieldPermissionEntity, MJEntityFieldValueEntity, MJEntityFieldEntity, MJEntityFormContributionEntity, MJEntityFormOverrideEntity, MJEntityOrganicKeyRelatedEntityEntity, MJEntityOrganicKeyEntity, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExperimentSessionIterationEntity, MJExperimentSessionEntity, MJExperimentEntity, MJExplorerNavigationItemEntity, MJExternalDataSourceTypeEntity, MJExternalDataSourceEntity, MJFeaturePipelineTypeEntity, MJFeaturePipelineVersionEntity, MJFeatureValueCacheEntity, MJFeatureValueEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountPermissionEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJFormChromeRuleEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJIdentityClaimTypeEntity, MJIdentityClaimEntity, MJInstanceConfigurationEntity, MJIntegrationObjectFieldEntity, MJIntegrationObjectEntity, MJIntegrationSourceTypeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJInteractionEventEntity, MJInteractionLinkEntity, MJInteractionOfferEntity, MJInteractionEntity, MJKnowledgeHubSavedSearchEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJMCPToolFavoriteEntity, MJMLAlgorithmUseCaseRankingEntity, MJMLAlgorithmUseCaseEntity, MJMLAlgorithmEntity, MJMLModelScoringBindingEntity, MJMLModelEntity, MJMLTrainingPipelineEntity, MJMLTrainingRunEntity, MJMagicLinkInviteAllowedDomainEntity, MJMagicLinkInviteAllowedPathEntity, MJMagicLinkInviteApplicationEntity, MJMagicLinkInviteRoleEntity, MJMagicLinkInviteEntity, MJMagicLinkRedemptionEntity, MJMaterializedResultQueryEntity, MJMaterializedResultEntity, MJMeetingParticipantEntity, MJMeetingEntity, MJNumberPoolEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJPermissionDomainEntity, MJPhoneNumberEntity, MJProcessRunDetailEntity, MJProcessRunEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryDependencyEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQuerySQLEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRSUPendingWorkEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordCloneLogItemEntity, MJRecordCloneLogEntity, MJRecordGeoCodeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJRecordProcessCategoryEntity, MJRecordProcessWatermarkEntity, MJRecordProcessEntity, MJRemoteOperationCategoryEntity, MJRemoteOperationEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJRubricBandEntity, MJRubricCategoryEntity, MJRubricCriterionEntity, MJRubricCriterionLevelEntity, MJRubricEvaluationScoreEntity, MJRubricEvaluationEntity, MJRubricScaleLevelEntity, MJRubricScaleEntity, MJRubricVersionEntity, MJRubricEntity, MJSQLDialectEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJScopedNotificationConfigEntity, MJScopedPromptConfigEntity, MJScopedPromptPartEntity, MJSearchExecutionLogEntity, MJSearchProviderEntity, MJSearchScopeEntityEntity, MJSearchScopeExternalIndexEntity, MJSearchScopePermissionEntity, MJSearchScopeProviderEntity, MJSearchScopeStorageAccountEntity, MJSearchScopeTestQueryEntity, MJSearchScopeEntity, MJSignatureAccountEntity, MJSignatureProviderEntity, MJSignatureRequestDocumentEntity, MJSignatureRequestLogEntity, MJSignatureRequestRecipientEntity, MJSignatureRequestEntity, MJSkillEntity, MJStateProvinceEntity, MJTagAuditLogEntity, MJTagCoOccurrenceEntity, MJTagScopeEntity, MJTagSuggestionEntity, MJTagSynonymEntity, MJTaggedItemEntity, MJTagEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJTaskEntity, MJTemplateCategoryEntity, MJTemplateContentTypeEntity, MJTemplateContentEntity, MJTemplateParamEntity, MJTemplateEntity, MJTestRubricEntity, MJTestRunFeedbackEntity, MJTestRunOutputTypeEntity, MJTestRunOutputEntity, MJTestRunEntity, MJTestSuiteRunEntity, MJTestSuiteTestEntity, MJTestSuiteEntity, MJTestTypeEntity, MJTestEntity, MJThemeEntity, MJUserApplicationEntityEntity, MJUserApplicationEntity, MJUserFavoriteEntity, MJUserNotificationPreferenceEntity, MJUserNotificationTypeEntity, MJUserNotificationEntity, MJUserRecordLogEntity, MJUserRoleEntity, MJUserRoutineRecipientEntity, MJUserRoutineRunEntity, MJUserRoutineEntity, MJUserSettingEntity, MJUserViewCategoryEntity, MJUserViewRunDetailEntity, MJUserViewRunEntity, MJUserViewEntity, MJUserEntity, MJVectorDatabaseEntity, MJVectorIndexEntity, MJVersionInstallationEntity, MJVersionLabelItemEntity, MJVersionLabelRestoreEntity, MJVersionLabelEntity, MJViewTypeEntity, MJWebSearchProviderEntity, MJWorkQueueDeduplicationEntity, MJWorkQueueDeliveryEntity, MJWorkQueueMessageEntity, MJWorkQueueSubscriptionEntity, MJWorkQueueTopicEntity, MJWorkQueueTransportEntity, MJWorkspaceItemEntity, MJWorkspaceEntity } from '@memberjunction/core-entities';
22
22
 
23
23
 
24
24
  //****************************************************************************
@@ -5994,10 +5994,10 @@ export class MJAIAgentRunStep_ {
5994
5994
  @MaxLength(36)
5995
5995
  TargetLogID?: string;
5996
5996
 
5997
- @Field({nullable: true, description: "JSON serialization of the Payload state at the start of this step"})
5997
+ @Field({nullable: true, description: "JSON serialization of the Payload state at the start of this step. NULL when PayloadAtStartSourceStepID is set; the starting payload is then the PayloadAtEnd of that step."})
5998
5998
  PayloadAtStart?: string;
5999
5999
 
6000
- @Field({nullable: true, description: "JSON serialization of the Payload state at the end of this step"})
6000
+ @Field({nullable: true, description: "JSON serialization of the Payload state at the end of this step. NULL when PayloadAtEndSourceStepID is set; the ending payload is then the PayloadAtEnd of that step."})
6001
6001
  PayloadAtEnd?: string;
6002
6002
 
6003
6003
  @Field({nullable: true, description: "Result of the final payload validation for this step. Pass indicates successful\nvalidation, Retry means validation failed but will retry, Fail means validation failed\npermanently, Warn means validation failed but execution continues."})
@@ -6030,6 +6030,14 @@ export class MJAIAgentRunStep_ {
6030
6030
  @Field(() => Boolean, {nullable: true, description: "For native tool-calling steps: 1 = the results of this step's tool calls were returned to the model as native tool-result turns, 0 = as the markdown action-results user message. NULL for envelope steps and for rows predating the feature."})
6031
6031
  NativeToolResultsSent?: boolean;
6032
6032
 
6033
+ @Field({nullable: true, description: "When set, PayloadAtStart is not stored on this row because it equals the PayloadAtEnd of the referenced step in the same run. Read that step's PayloadAtEnd to get this step's starting payload."})
6034
+ @MaxLength(36)
6035
+ PayloadAtStartSourceStepID?: string;
6036
+
6037
+ @Field({nullable: true, description: "When set, PayloadAtEnd is not stored on this row because it equals the PayloadAtEnd of the referenced step in the same run. Read that step's PayloadAtEnd to get this step's ending payload."})
6038
+ @MaxLength(36)
6039
+ PayloadAtEndSourceStepID?: string;
6040
+
6033
6041
  @Field({nullable: true})
6034
6042
  @MaxLength(255)
6035
6043
  AgentRun?: string;
@@ -6038,6 +6046,14 @@ export class MJAIAgentRunStep_ {
6038
6046
  @MaxLength(255)
6039
6047
  Parent?: string;
6040
6048
 
6049
+ @Field({nullable: true})
6050
+ @MaxLength(255)
6051
+ PayloadAtStartSourceStep?: string;
6052
+
6053
+ @Field({nullable: true})
6054
+ @MaxLength(255)
6055
+ PayloadAtEndSourceStep?: string;
6056
+
6041
6057
  @Field({nullable: true})
6042
6058
  @MaxLength(36)
6043
6059
  RootParentID?: string;
@@ -6139,6 +6155,12 @@ export class CreateMJAIAgentRunStepInput {
6139
6155
  @Field(() => Boolean, { nullable: true })
6140
6156
  NativeToolResultsSent: boolean | null;
6141
6157
 
6158
+ @Field({ nullable: true })
6159
+ PayloadAtStartSourceStepID: string | null;
6160
+
6161
+ @Field({ nullable: true })
6162
+ PayloadAtEndSourceStepID: string | null;
6163
+
6142
6164
  @Field(() => RestoreContextInput, { nullable: true })
6143
6165
  RestoreContext___?: RestoreContextInput;
6144
6166
  }
@@ -6224,6 +6246,12 @@ export class UpdateMJAIAgentRunStepInput {
6224
6246
  @Field(() => Boolean, { nullable: true })
6225
6247
  NativeToolResultsSent?: boolean | null;
6226
6248
 
6249
+ @Field({ nullable: true })
6250
+ PayloadAtStartSourceStepID?: string | null;
6251
+
6252
+ @Field({ nullable: true })
6253
+ PayloadAtEndSourceStepID?: string | null;
6254
+
6227
6255
  @Field(() => [KeyValuePairInput], { nullable: true })
6228
6256
  OldValues___?: KeyValuePairInput[];
6229
6257
 
@@ -6358,7 +6386,7 @@ export class MJAIAgentRun_ {
6358
6386
  @MaxLength(36)
6359
6387
  UserID?: string;
6360
6388
 
6361
- @Field({nullable: true, description: "Final result or output from the agent execution, stored as JSON or text"})
6389
+ @Field({nullable: true, description: "Deprecated. No longer written by agent runs; use FinalPayload, which holds the same value. Kept for existing rows and external readers."})
6362
6390
  Result?: string;
6363
6391
 
6364
6392
  @Field({nullable: true, description: "JSON serialization of the complete agent state, including conversation context, variables, and execution state. Enables pause/resume functionality."})
@@ -7963,6 +7991,214 @@ export class MJAIAgentSessionChannelResolver extends ResolverBase {
7963
7991
 
7964
7992
  }
7965
7993
 
7994
+ //****************************************************************************
7995
+ // ENTITY CLASS for MJ: AI Agent Session Recording Shards
7996
+ //****************************************************************************
7997
+ @ObjectType({ description: "One 5-second Opus recording shard (MJOPUS1 format) uploaded by the browser during a client-direct realtime call, staged here until the server assembles the session recording. Deleted once the recording is Complete, or by the session janitor after its lookback window." })
7998
+ export class MJAIAgentSessionRecordingShard_ {
7999
+ @Field()
8000
+ @MaxLength(36)
8001
+ ID: string;
8002
+
8003
+ @Field({nullable: true})
8004
+ @MaxLength(36)
8005
+ AgentSessionID?: string;
8006
+
8007
+ @Field(() => Int, {nullable: true, description: "Zero-based position of the shard in the recording. Unique per session; a retry of the same index with the same bytes is acknowledged, with different bytes it is refused."})
8008
+ Index?: number;
8009
+
8010
+ @Field(() => Int, {nullable: true, description: "Sample position (48 kHz) where this shard's audio starts in the recording."})
8011
+ StartSample?: number;
8012
+
8013
+ @Field(() => Int, {nullable: true, description: "Number of audio samples (48 kHz) the shard covers."})
8014
+ SampleCount?: number;
8015
+
8016
+ @Field(() => Int, {nullable: true, description: "Size of Data in bytes."})
8017
+ Bytes?: number;
8018
+
8019
+ @Field({nullable: true, description: "Lowercase hex SHA-256 of Data; decides whether a repeated upload of the same index is a retry or a conflict."})
8020
+ @MaxLength(64)
8021
+ Sha256?: string;
8022
+
8023
+ @Field({nullable: true, description: "The shard bytes as uploaded (MJOPUS1 header followed by length-prefixed Opus packets)."})
8024
+ Data?: string;
8025
+
8026
+ @Field({nullable: true, description: "When the server first stored this shard."})
8027
+ ReceivedAt?: Date;
8028
+
8029
+ @Field()
8030
+ _mj__CreatedAt: Date;
8031
+
8032
+ @Field()
8033
+ _mj__UpdatedAt: Date;
8034
+
8035
+ @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
8036
+ ReadableFields___?: string[];
8037
+
8038
+ }
8039
+
8040
+ //****************************************************************************
8041
+ // INPUT TYPE for MJ: AI Agent Session Recording Shards
8042
+ //****************************************************************************
8043
+ @InputType()
8044
+ export class CreateMJAIAgentSessionRecordingShardInput {
8045
+ @Field({ nullable: true })
8046
+ ID?: string;
8047
+
8048
+ @Field({ nullable: true })
8049
+ AgentSessionID?: string;
8050
+
8051
+ @Field(() => Int, { nullable: true })
8052
+ Index?: number;
8053
+
8054
+ @Field(() => Int, { nullable: true })
8055
+ StartSample?: number;
8056
+
8057
+ @Field(() => Int, { nullable: true })
8058
+ SampleCount?: number;
8059
+
8060
+ @Field(() => Int, { nullable: true })
8061
+ Bytes?: number;
8062
+
8063
+ @Field({ nullable: true })
8064
+ Sha256?: string;
8065
+
8066
+ @Field({ nullable: true })
8067
+ Data?: string;
8068
+
8069
+ @Field({ nullable: true })
8070
+ ReceivedAt?: Date;
8071
+
8072
+ @Field(() => RestoreContextInput, { nullable: true })
8073
+ RestoreContext___?: RestoreContextInput;
8074
+ }
8075
+
8076
+
8077
+ //****************************************************************************
8078
+ // INPUT TYPE for MJ: AI Agent Session Recording Shards
8079
+ //****************************************************************************
8080
+ @InputType()
8081
+ export class UpdateMJAIAgentSessionRecordingShardInput {
8082
+ @Field()
8083
+ ID: string;
8084
+
8085
+ @Field({ nullable: true })
8086
+ AgentSessionID?: string;
8087
+
8088
+ @Field(() => Int, { nullable: true })
8089
+ Index?: number;
8090
+
8091
+ @Field(() => Int, { nullable: true })
8092
+ StartSample?: number;
8093
+
8094
+ @Field(() => Int, { nullable: true })
8095
+ SampleCount?: number;
8096
+
8097
+ @Field(() => Int, { nullable: true })
8098
+ Bytes?: number;
8099
+
8100
+ @Field({ nullable: true })
8101
+ Sha256?: string;
8102
+
8103
+ @Field({ nullable: true })
8104
+ Data?: string;
8105
+
8106
+ @Field({ nullable: true })
8107
+ ReceivedAt?: Date;
8108
+
8109
+ @Field(() => [KeyValuePairInput], { nullable: true })
8110
+ OldValues___?: KeyValuePairInput[];
8111
+
8112
+ @Field(() => RestoreContextInput, { nullable: true })
8113
+ RestoreContext___?: RestoreContextInput;
8114
+ }
8115
+
8116
+ //****************************************************************************
8117
+ // RESOLVER for MJ: AI Agent Session Recording Shards
8118
+ //****************************************************************************
8119
+ @ObjectType()
8120
+ export class RunMJAIAgentSessionRecordingShardViewResult {
8121
+ @Field(() => [MJAIAgentSessionRecordingShard_])
8122
+ Results: MJAIAgentSessionRecordingShard_[];
8123
+
8124
+ @Field(() => String, {nullable: true})
8125
+ UserViewRunID?: string;
8126
+
8127
+ @Field(() => Int, {nullable: true})
8128
+ RowCount: number;
8129
+
8130
+ @Field(() => Int, {nullable: true})
8131
+ TotalRowCount: number;
8132
+
8133
+ @Field(() => Int, {nullable: true})
8134
+ ExecutionTime: number;
8135
+
8136
+ @Field({nullable: true})
8137
+ ErrorMessage?: string;
8138
+
8139
+ @Field(() => Boolean, {nullable: false})
8140
+ Success: boolean;
8141
+ }
8142
+
8143
+ @Resolver(MJAIAgentSessionRecordingShard_)
8144
+ export class MJAIAgentSessionRecordingShardResolver extends ResolverBase {
8145
+ @Query(() => RunMJAIAgentSessionRecordingShardViewResult)
8146
+ async RunMJAIAgentSessionRecordingShardViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8147
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8148
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
8149
+ }
8150
+
8151
+ @Query(() => RunMJAIAgentSessionRecordingShardViewResult)
8152
+ async RunMJAIAgentSessionRecordingShardViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8153
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8154
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
8155
+ }
8156
+
8157
+ @Query(() => RunMJAIAgentSessionRecordingShardViewResult)
8158
+ async RunMJAIAgentSessionRecordingShardDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8159
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8160
+ input.EntityName = 'MJ: AI Agent Session Recording Shards';
8161
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
8162
+ }
8163
+ @Query(() => MJAIAgentSessionRecordingShard_, { nullable: true })
8164
+ async MJAIAgentSessionRecordingShard(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJAIAgentSessionRecordingShard_ | null> {
8165
+ this.CheckUserReadPermissions('MJ: AI Agent Session Recording Shards', userPayload);
8166
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8167
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwAIAgentSessionRecordingShards')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: AI Agent Session Recording Shards', userPayload, EntityPermissionType.Read, 'AND');
8168
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
8169
+ const result = await this.MapFieldNamesToCodeNames('MJ: AI Agent Session Recording Shards', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
8170
+ return result;
8171
+ }
8172
+
8173
+ @Mutation(() => MJAIAgentSessionRecordingShard_)
8174
+ async CreateMJAIAgentSessionRecordingShard(
8175
+ @Arg('input', () => CreateMJAIAgentSessionRecordingShardInput) input: CreateMJAIAgentSessionRecordingShardInput,
8176
+ @Ctx() { providers, userPayload }: AppContext,
8177
+ @PubSub() pubSub: PubSubEngine
8178
+ ) {
8179
+ const provider = GetReadWriteProvider(providers);
8180
+ return this.CreateRecord('MJ: AI Agent Session Recording Shards', input, provider, userPayload, pubSub)
8181
+ }
8182
+
8183
+ @Mutation(() => MJAIAgentSessionRecordingShard_)
8184
+ async UpdateMJAIAgentSessionRecordingShard(
8185
+ @Arg('input', () => UpdateMJAIAgentSessionRecordingShardInput) input: UpdateMJAIAgentSessionRecordingShardInput,
8186
+ @Ctx() { providers, userPayload }: AppContext,
8187
+ @PubSub() pubSub: PubSubEngine
8188
+ ) {
8189
+ const provider = GetReadWriteProvider(providers);
8190
+ return this.UpdateRecord('MJ: AI Agent Session Recording Shards', input, provider, userPayload, pubSub);
8191
+ }
8192
+
8193
+ @Mutation(() => MJAIAgentSessionRecordingShard_)
8194
+ async DeleteMJAIAgentSessionRecordingShard(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8195
+ const provider = GetReadWriteProvider(providers);
8196
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
8197
+ return this.DeleteRecord('MJ: AI Agent Session Recording Shards', key, options, provider, userPayload, pubSub);
8198
+ }
8199
+
8200
+ }
8201
+
7966
8202
  //****************************************************************************
7967
8203
  // ENTITY CLASS for MJ: AI Agent Sessions
7968
8204
  //****************************************************************************
@@ -8034,6 +8270,22 @@ export class MJAIAgentSession_ {
8034
8270
  @MaxLength(500)
8035
8271
  LinkedRecordID?: string;
8036
8272
 
8273
+ @Field({nullable: true, description: "State of the server-side recording assembly for a client-direct session recorded as Opus shards: Pending (shards or a terminal signal are waiting to be assembled), Assembling (claimed by one server instance), Complete (recording.wav holds every captured sample), Partial (assembled with silent gaps, listed in RecordingGaps), Failed (a shard conflict or an assembly error needs a human). NULL when the session was not recorded this way."})
8274
+ @MaxLength(20)
8275
+ RecordingStatus?: string;
8276
+
8277
+ @Field(() => Int, {nullable: true, description: "Number of recording shards the browser reported in its terminal signal (last shard index + 1). NULL until a terminal signal arrives."})
8278
+ RecordingExpectedShards?: number;
8279
+
8280
+ @Field(() => Int, {nullable: true, description: "Total audio samples (48 kHz mono) the browser captured, from its terminal signal. The assembled recording.wav is exactly this long. NULL until a terminal signal arrives."})
8281
+ RecordingCapturedSamples?: number;
8282
+
8283
+ @Field({nullable: true, description: "JSON array of the silent gaps in a Partial recording: [{startSample, sampleCount, indexes}], sample positions at 48 kHz and the shard indexes that were missing. Empty or NULL when nothing is missing."})
8284
+ RecordingGaps?: string;
8285
+
8286
+ @Field(() => Int, {nullable: true, description: "Incremented by every assembly claim. The assembler finishes only if the version is still the one it claimed, so a newer assembly always wins over a slower older one."})
8287
+ RecordingAssemblyVersion?: number;
8288
+
8037
8289
  @Field({nullable: true})
8038
8290
  @MaxLength(255)
8039
8291
  Agent?: string;
@@ -8112,6 +8364,21 @@ export class CreateMJAIAgentSessionInput {
8112
8364
  @Field({ nullable: true })
8113
8365
  LinkedRecordID: string | null;
8114
8366
 
8367
+ @Field({ nullable: true })
8368
+ RecordingStatus: string | null;
8369
+
8370
+ @Field(() => Int, { nullable: true })
8371
+ RecordingExpectedShards: number | null;
8372
+
8373
+ @Field(() => Int, { nullable: true })
8374
+ RecordingCapturedSamples: number | null;
8375
+
8376
+ @Field({ nullable: true })
8377
+ RecordingGaps: string | null;
8378
+
8379
+ @Field(() => Int, { nullable: true })
8380
+ RecordingAssemblyVersion?: number;
8381
+
8115
8382
  @Field(() => RestoreContextInput, { nullable: true })
8116
8383
  RestoreContext___?: RestoreContextInput;
8117
8384
  }
@@ -8170,6 +8437,21 @@ export class UpdateMJAIAgentSessionInput {
8170
8437
  @Field({ nullable: true })
8171
8438
  LinkedRecordID?: string | null;
8172
8439
 
8440
+ @Field({ nullable: true })
8441
+ RecordingStatus?: string | null;
8442
+
8443
+ @Field(() => Int, { nullable: true })
8444
+ RecordingExpectedShards?: number | null;
8445
+
8446
+ @Field(() => Int, { nullable: true })
8447
+ RecordingCapturedSamples?: number | null;
8448
+
8449
+ @Field({ nullable: true })
8450
+ RecordingGaps?: string | null;
8451
+
8452
+ @Field(() => Int, { nullable: true })
8453
+ RecordingAssemblyVersion?: number;
8454
+
8173
8455
  @Field(() => [KeyValuePairInput], { nullable: true })
8174
8456
  OldValues___?: KeyValuePairInput[];
8175
8457
 
@@ -9321,6 +9603,353 @@ export class MJAIAgentTypeResolver extends ResolverBase {
9321
9603
 
9322
9604
  }
9323
9605
 
9606
+ //****************************************************************************
9607
+ // ENTITY CLASS for MJ: AI Agent User Policies
9608
+ //****************************************************************************
9609
+ @ObjectType({ description: "Per-(Agent, User) policy and personalization record. The owning user's MJ permissions (Entity CRUD, Role RLS, Role FLS) form the hard ceiling; this table defines strict narrowing rules, channel modes, time windows, and approval gates." })
9610
+ export class MJAIAgentUserPolicy_ {
9611
+ @Field()
9612
+ @MaxLength(36)
9613
+ ID: string;
9614
+
9615
+ @Field({nullable: true, description: "The AI Agent governed by this user policy."})
9616
+ @MaxLength(36)
9617
+ AgentID?: string;
9618
+
9619
+ @Field({nullable: true, description: "The MJ User who owns this policy and under whose security principal the agent executes."})
9620
+ @MaxLength(36)
9621
+ UserID?: string;
9622
+
9623
+ @Field({nullable: true, description: "Optional user-personalized display name for this agent (e.g., \"Maya\" for a user's Chief of Staff)."})
9624
+ @MaxLength(100)
9625
+ DisplayNameOverride?: string;
9626
+
9627
+ @Field({nullable: true, description: "Optional AI Persona selected by the user for this agent's voice and communication style."})
9628
+ @MaxLength(36)
9629
+ PreferredPersonaID?: string;
9630
+
9631
+ @Field({nullable: true, description: "Policy lifecycle status: Active, Paused (autonomous wakes suspended), or Disabled."})
9632
+ @MaxLength(20)
9633
+ Status?: string;
9634
+
9635
+ @Field({nullable: true, description: "Onboarding progression for this user-agent pair: NotStarted, InProgress, or Completed."})
9636
+ @MaxLength(20)
9637
+ OnboardingStatus?: string;
9638
+
9639
+ @Field({nullable: true, description: "Timestamp when the user completed onboarding for this agent."})
9640
+ OnboardedAt?: Date;
9641
+
9642
+ @Field({nullable: true, description: "Operating posture: Observer (tracks and reports only; never nudges others), Coordinator (nudges internal task/priority owners and peer CoS agents), or Autonomous (proactively coordinates within approval boundaries)."})
9643
+ @MaxLength(20)
9644
+ CoordinationMode?: string;
9645
+
9646
+ @Field({nullable: true, description: "Default entity access ceiling when no explicit rule in EntityAccessRules matches: UserCeiling (inherit user's MJ permissions), ReadOnly (read permitted entities, block all writes unless explicitly allowed), or AllowListOnly (deny all entities not listed in EntityAccessRules)."})
9647
+ @MaxLength(20)
9648
+ DefaultDataAccessMode?: string;
9649
+
9650
+ @Field({nullable: true, description: "Email channel permission level: Disabled, ReadOnly, DraftOnly, SendAsAgent, or SendAsUser."})
9651
+ @MaxLength(20)
9652
+ EmailChannelMode?: string;
9653
+
9654
+ @Field({nullable: true, description: "Telephony channel permission level: Disabled, InboundOnly, OutboundWithApproval, or OutboundAutonomous."})
9655
+ @MaxLength(20)
9656
+ PhoneChannelMode?: string;
9657
+
9658
+ @Field({nullable: true, description: "Messaging channel permission level (Slack/Teams/In-App): Disabled or Enabled."})
9659
+ @MaxLength(20)
9660
+ MessagingChannelMode?: string;
9661
+
9662
+ @Field({nullable: true, description: "Calendar channel permission level: Disabled, ReadOnly (check events & free/busy only), ProposeWithApproval (create/modify events or send invites only with explicit user approval), or Autonomous."})
9663
+ @MaxLength(30)
9664
+ CalendarChannelMode?: string;
9665
+
9666
+ @Field(() => Boolean, {nullable: true, description: "Whether this user's agent may send or respond to structured coordination requests from other users' Chief of Staff agents."})
9667
+ AllowInterAgentCoordination?: boolean;
9668
+
9669
+ @Field(() => Boolean, {nullable: true, description: "When 1, any external email, message, or outbound call to non-internal recipients requires explicit user approval via AIAgentRequest."})
9670
+ RequireApprovalForExternalComms?: boolean;
9671
+
9672
+ @Field(() => Boolean, {nullable: true, description: "When 1, financial commitments, purchases, or accounting/order approvals require explicit user approval."})
9673
+ RequireApprovalForFinancials?: boolean;
9674
+
9675
+ @Field(() => Boolean, {nullable: true, description: "When 1, deleting records or cancelling active workflows requires explicit user approval."})
9676
+ RequireApprovalForDestructiveActions?: boolean;
9677
+
9678
+ @Field(() => Float, {nullable: true, description: "Optional monetary threshold below which low-risk financial actions may proceed when RequireApprovalForFinancials is 0. NULL means no automatic monetary threshold."})
9679
+ AutoApproveAmountThreshold?: number;
9680
+
9681
+ @Field({nullable: true, description: "JSON array of IAgentUserEntityAccessRule objects defining per-entity or wildcard CRUD narrowing, additional Row-Level Security (RLS) filters, additional Field-Level Security (FLS) field masks, and allowed time windows."})
9682
+ EntityAccessRules?: string;
9683
+
9684
+ @Field({nullable: true, description: "JSON array of IAgentUserActionPolicyRule objects defining per-action Allow/RequireApproval/Deny policies, SafeExpressionEvaluator parameter conditions, and allowed time windows."})
9685
+ ActionPolicyRules?: string;
9686
+
9687
+ @Field({nullable: true, description: "Optional user-specific standing instructions injected into the agent's system context on every run."})
9688
+ InstructionsOverride?: string;
9689
+
9690
+ @Field()
9691
+ _mj__CreatedAt: Date;
9692
+
9693
+ @Field()
9694
+ _mj__UpdatedAt: Date;
9695
+
9696
+ @Field({nullable: true})
9697
+ @MaxLength(255)
9698
+ Agent?: string;
9699
+
9700
+ @Field({nullable: true})
9701
+ @MaxLength(100)
9702
+ User?: string;
9703
+
9704
+ @Field({nullable: true})
9705
+ @MaxLength(100)
9706
+ PreferredPersona?: string;
9707
+
9708
+ @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
9709
+ ReadableFields___?: string[];
9710
+
9711
+ }
9712
+
9713
+ //****************************************************************************
9714
+ // INPUT TYPE for MJ: AI Agent User Policies
9715
+ //****************************************************************************
9716
+ @InputType()
9717
+ export class CreateMJAIAgentUserPolicyInput {
9718
+ @Field({ nullable: true })
9719
+ ID?: string;
9720
+
9721
+ @Field({ nullable: true })
9722
+ AgentID?: string;
9723
+
9724
+ @Field({ nullable: true })
9725
+ UserID?: string;
9726
+
9727
+ @Field({ nullable: true })
9728
+ DisplayNameOverride: string | null;
9729
+
9730
+ @Field({ nullable: true })
9731
+ PreferredPersonaID: string | null;
9732
+
9733
+ @Field({ nullable: true })
9734
+ Status?: string;
9735
+
9736
+ @Field({ nullable: true })
9737
+ OnboardingStatus?: string;
9738
+
9739
+ @Field({ nullable: true })
9740
+ OnboardedAt: Date | null;
9741
+
9742
+ @Field({ nullable: true })
9743
+ CoordinationMode?: string;
9744
+
9745
+ @Field({ nullable: true })
9746
+ DefaultDataAccessMode?: string;
9747
+
9748
+ @Field({ nullable: true })
9749
+ EmailChannelMode?: string;
9750
+
9751
+ @Field({ nullable: true })
9752
+ PhoneChannelMode?: string;
9753
+
9754
+ @Field({ nullable: true })
9755
+ MessagingChannelMode?: string;
9756
+
9757
+ @Field({ nullable: true })
9758
+ CalendarChannelMode?: string;
9759
+
9760
+ @Field(() => Boolean, { nullable: true })
9761
+ AllowInterAgentCoordination?: boolean;
9762
+
9763
+ @Field(() => Boolean, { nullable: true })
9764
+ RequireApprovalForExternalComms?: boolean;
9765
+
9766
+ @Field(() => Boolean, { nullable: true })
9767
+ RequireApprovalForFinancials?: boolean;
9768
+
9769
+ @Field(() => Boolean, { nullable: true })
9770
+ RequireApprovalForDestructiveActions?: boolean;
9771
+
9772
+ @Field(() => Float, { nullable: true })
9773
+ AutoApproveAmountThreshold: number | null;
9774
+
9775
+ @Field({ nullable: true })
9776
+ EntityAccessRules: string | null;
9777
+
9778
+ @Field({ nullable: true })
9779
+ ActionPolicyRules: string | null;
9780
+
9781
+ @Field({ nullable: true })
9782
+ InstructionsOverride: string | null;
9783
+
9784
+ @Field(() => RestoreContextInput, { nullable: true })
9785
+ RestoreContext___?: RestoreContextInput;
9786
+ }
9787
+
9788
+
9789
+ //****************************************************************************
9790
+ // INPUT TYPE for MJ: AI Agent User Policies
9791
+ //****************************************************************************
9792
+ @InputType()
9793
+ export class UpdateMJAIAgentUserPolicyInput {
9794
+ @Field()
9795
+ ID: string;
9796
+
9797
+ @Field({ nullable: true })
9798
+ AgentID?: string;
9799
+
9800
+ @Field({ nullable: true })
9801
+ UserID?: string;
9802
+
9803
+ @Field({ nullable: true })
9804
+ DisplayNameOverride?: string | null;
9805
+
9806
+ @Field({ nullable: true })
9807
+ PreferredPersonaID?: string | null;
9808
+
9809
+ @Field({ nullable: true })
9810
+ Status?: string;
9811
+
9812
+ @Field({ nullable: true })
9813
+ OnboardingStatus?: string;
9814
+
9815
+ @Field({ nullable: true })
9816
+ OnboardedAt?: Date | null;
9817
+
9818
+ @Field({ nullable: true })
9819
+ CoordinationMode?: string;
9820
+
9821
+ @Field({ nullable: true })
9822
+ DefaultDataAccessMode?: string;
9823
+
9824
+ @Field({ nullable: true })
9825
+ EmailChannelMode?: string;
9826
+
9827
+ @Field({ nullable: true })
9828
+ PhoneChannelMode?: string;
9829
+
9830
+ @Field({ nullable: true })
9831
+ MessagingChannelMode?: string;
9832
+
9833
+ @Field({ nullable: true })
9834
+ CalendarChannelMode?: string;
9835
+
9836
+ @Field(() => Boolean, { nullable: true })
9837
+ AllowInterAgentCoordination?: boolean;
9838
+
9839
+ @Field(() => Boolean, { nullable: true })
9840
+ RequireApprovalForExternalComms?: boolean;
9841
+
9842
+ @Field(() => Boolean, { nullable: true })
9843
+ RequireApprovalForFinancials?: boolean;
9844
+
9845
+ @Field(() => Boolean, { nullable: true })
9846
+ RequireApprovalForDestructiveActions?: boolean;
9847
+
9848
+ @Field(() => Float, { nullable: true })
9849
+ AutoApproveAmountThreshold?: number | null;
9850
+
9851
+ @Field({ nullable: true })
9852
+ EntityAccessRules?: string | null;
9853
+
9854
+ @Field({ nullable: true })
9855
+ ActionPolicyRules?: string | null;
9856
+
9857
+ @Field({ nullable: true })
9858
+ InstructionsOverride?: string | null;
9859
+
9860
+ @Field(() => [KeyValuePairInput], { nullable: true })
9861
+ OldValues___?: KeyValuePairInput[];
9862
+
9863
+ @Field(() => RestoreContextInput, { nullable: true })
9864
+ RestoreContext___?: RestoreContextInput;
9865
+ }
9866
+
9867
+ //****************************************************************************
9868
+ // RESOLVER for MJ: AI Agent User Policies
9869
+ //****************************************************************************
9870
+ @ObjectType()
9871
+ export class RunMJAIAgentUserPolicyViewResult {
9872
+ @Field(() => [MJAIAgentUserPolicy_])
9873
+ Results: MJAIAgentUserPolicy_[];
9874
+
9875
+ @Field(() => String, {nullable: true})
9876
+ UserViewRunID?: string;
9877
+
9878
+ @Field(() => Int, {nullable: true})
9879
+ RowCount: number;
9880
+
9881
+ @Field(() => Int, {nullable: true})
9882
+ TotalRowCount: number;
9883
+
9884
+ @Field(() => Int, {nullable: true})
9885
+ ExecutionTime: number;
9886
+
9887
+ @Field({nullable: true})
9888
+ ErrorMessage?: string;
9889
+
9890
+ @Field(() => Boolean, {nullable: false})
9891
+ Success: boolean;
9892
+ }
9893
+
9894
+ @Resolver(MJAIAgentUserPolicy_)
9895
+ export class MJAIAgentUserPolicyResolver extends ResolverBase {
9896
+ @Query(() => RunMJAIAgentUserPolicyViewResult)
9897
+ async RunMJAIAgentUserPolicyViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9898
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9899
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
9900
+ }
9901
+
9902
+ @Query(() => RunMJAIAgentUserPolicyViewResult)
9903
+ async RunMJAIAgentUserPolicyViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9904
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9905
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
9906
+ }
9907
+
9908
+ @Query(() => RunMJAIAgentUserPolicyViewResult)
9909
+ async RunMJAIAgentUserPolicyDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9910
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9911
+ input.EntityName = 'MJ: AI Agent User Policies';
9912
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
9913
+ }
9914
+ @Query(() => MJAIAgentUserPolicy_, { nullable: true })
9915
+ async MJAIAgentUserPolicy(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJAIAgentUserPolicy_ | null> {
9916
+ this.CheckUserReadPermissions('MJ: AI Agent User Policies', userPayload);
9917
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9918
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwAIAgentUserPolicies')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: AI Agent User Policies', userPayload, EntityPermissionType.Read, 'AND');
9919
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
9920
+ const result = await this.MapFieldNamesToCodeNames('MJ: AI Agent User Policies', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
9921
+ return result;
9922
+ }
9923
+
9924
+ @Mutation(() => MJAIAgentUserPolicy_)
9925
+ async CreateMJAIAgentUserPolicy(
9926
+ @Arg('input', () => CreateMJAIAgentUserPolicyInput) input: CreateMJAIAgentUserPolicyInput,
9927
+ @Ctx() { providers, userPayload }: AppContext,
9928
+ @PubSub() pubSub: PubSubEngine
9929
+ ) {
9930
+ const provider = GetReadWriteProvider(providers);
9931
+ return this.CreateRecord('MJ: AI Agent User Policies', input, provider, userPayload, pubSub)
9932
+ }
9933
+
9934
+ @Mutation(() => MJAIAgentUserPolicy_)
9935
+ async UpdateMJAIAgentUserPolicy(
9936
+ @Arg('input', () => UpdateMJAIAgentUserPolicyInput) input: UpdateMJAIAgentUserPolicyInput,
9937
+ @Ctx() { providers, userPayload }: AppContext,
9938
+ @PubSub() pubSub: PubSubEngine
9939
+ ) {
9940
+ const provider = GetReadWriteProvider(providers);
9941
+ return this.UpdateRecord('MJ: AI Agent User Policies', input, provider, userPayload, pubSub);
9942
+ }
9943
+
9944
+ @Mutation(() => MJAIAgentUserPolicy_)
9945
+ async DeleteMJAIAgentUserPolicy(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9946
+ const provider = GetReadWriteProvider(providers);
9947
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
9948
+ return this.DeleteRecord('MJ: AI Agent User Policies', key, options, provider, userPayload, pubSub);
9949
+ }
9950
+
9951
+ }
9952
+
9324
9953
  //****************************************************************************
9325
9954
  // ENTITY CLASS for MJ: AI Agents
9326
9955
  //****************************************************************************
@@ -10516,6 +11145,10 @@ export class MJAIBridgeAgentIdentity_ {
10516
11145
  @Field()
10517
11146
  _mj__UpdatedAt: Date;
10518
11147
 
11148
+ @Field({nullable: true, description: "Optional owning MJ User when this email address, phone DID, or platform account identity is dedicated to a specific user's personal agent instance (such as their Chief of Staff). NULL for shared/org-wide agent identities."})
11149
+ @MaxLength(36)
11150
+ UserID?: string;
11151
+
10519
11152
  @Field({nullable: true})
10520
11153
  @MaxLength(255)
10521
11154
  Agent?: string;
@@ -10524,6 +11157,10 @@ export class MJAIBridgeAgentIdentity_ {
10524
11157
  @MaxLength(100)
10525
11158
  Provider?: string;
10526
11159
 
11160
+ @Field({nullable: true})
11161
+ @MaxLength(100)
11162
+ User?: string;
11163
+
10527
11164
  @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
10528
11165
  ReadableFields___?: string[];
10529
11166
 
@@ -10558,6 +11195,9 @@ export class CreateMJAIBridgeAgentIdentityInput {
10558
11195
  @Field({ nullable: true })
10559
11196
  Configuration: string | null;
10560
11197
 
11198
+ @Field({ nullable: true })
11199
+ UserID: string | null;
11200
+
10561
11201
  @Field(() => RestoreContextInput, { nullable: true })
10562
11202
  RestoreContext___?: RestoreContextInput;
10563
11203
  }
@@ -10592,6 +11232,9 @@ export class UpdateMJAIBridgeAgentIdentityInput {
10592
11232
  @Field({ nullable: true })
10593
11233
  Configuration?: string | null;
10594
11234
 
11235
+ @Field({ nullable: true })
11236
+ UserID?: string | null;
11237
+
10595
11238
  @Field(() => [KeyValuePairInput], { nullable: true })
10596
11239
  OldValues___?: KeyValuePairInput[];
10597
11240
 
@@ -17016,6 +17659,10 @@ export class MJAIPrompt_ {
17016
17659
  @Field({nullable: true, description: "Per-prompt call-time configuration bag (JSON, IAIPromptConfiguration shape: LLM / Realtime / Vision / Audio sections). Base layer of the prompt Configuration cascade — AIPromptModel rows inherit from it per key and may override — and itself layered on top of the resolved AIModel/AIModelVendor ModelConfiguration. NULL = contributes nothing."})
17017
17660
  PromptConfiguration?: string;
17018
17661
 
17662
+ @Field({nullable: true, description: "Which template inputs (data, templateData) prompt runs store in Messages: None (shape only), Referenced (only keys the template uses) or Full. NULL uses the server default."})
17663
+ @MaxLength(20)
17664
+ TemplateDataCapture?: string;
17665
+
17019
17666
  @Field({nullable: true})
17020
17667
  @MaxLength(255)
17021
17668
  Template?: string;
@@ -17205,6 +17852,9 @@ export class CreateMJAIPromptInput {
17205
17852
  @Field({ nullable: true })
17206
17853
  PromptConfiguration: string | null;
17207
17854
 
17855
+ @Field({ nullable: true })
17856
+ TemplateDataCapture: string | null;
17857
+
17208
17858
  @Field(() => RestoreContextInput, { nullable: true })
17209
17859
  RestoreContext___?: RestoreContextInput;
17210
17860
  }
@@ -17374,6 +18024,9 @@ export class UpdateMJAIPromptInput {
17374
18024
  @Field({ nullable: true })
17375
18025
  PromptConfiguration?: string | null;
17376
18026
 
18027
+ @Field({ nullable: true })
18028
+ TemplateDataCapture?: string | null;
18029
+
17377
18030
  @Field(() => [KeyValuePairInput], { nullable: true })
17378
18031
  OldValues___?: KeyValuePairInput[];
17379
18032
 
@@ -22716,6 +23369,9 @@ export class MJActionParam_ {
22716
23369
  @Field(() => Boolean, {nullable: true, description: "Whether this parameter's VALUE may be written to ActionExecutionLog.Params. Default 1. Set to 0 for parameters that carry records, credentials or personal data - for example the Data payload of Execute Agent. Independent of the hard rule that Entity Action params of ValueType 'Entity Object' or 'Entity Object Data' are never logged regardless of this flag. When logging is suppressed the log records the parameter name, its type and a redaction marker, never the value."})
22717
23370
  LogValue?: boolean;
22718
23371
 
23372
+ @Field({nullable: true, description: "Optional JSON Schema fragment describing this parameter's value, limited to the cross-provider subset: type, description, enum, items, properties and required. When set, the native tool builder declares it to the model in place of the coarse ValueType mapping, and argument coercion follows it. For an IsArray parameter it describes one element. When NULL, the schema is derived from ValueType."})
23373
+ ValueSchema?: string;
23374
+
22719
23375
  @Field({nullable: true})
22720
23376
  @MaxLength(425)
22721
23377
  Action?: string;
@@ -22763,6 +23419,9 @@ export class CreateMJActionParamInput {
22763
23419
  @Field(() => Boolean, { nullable: true })
22764
23420
  LogValue?: boolean;
22765
23421
 
23422
+ @Field({ nullable: true })
23423
+ ValueSchema: string | null;
23424
+
22766
23425
  @Field(() => RestoreContextInput, { nullable: true })
22767
23426
  RestoreContext___?: RestoreContextInput;
22768
23427
  }
@@ -22806,6 +23465,9 @@ export class UpdateMJActionParamInput {
22806
23465
  @Field(() => Boolean, { nullable: true })
22807
23466
  LogValue?: boolean;
22808
23467
 
23468
+ @Field({ nullable: true })
23469
+ ValueSchema?: string | null;
23470
+
22809
23471
  @Field(() => [KeyValuePairInput], { nullable: true })
22810
23472
  OldValues___?: KeyValuePairInput[];
22811
23473
 
@@ -24640,6 +25302,10 @@ export class MJArchiveConfiguration_ {
24640
25302
  @Field()
24641
25303
  _mj__UpdatedAt: Date;
24642
25304
 
25305
+ @Field({nullable: true, description: "Whether runs keep a copy of the data they remove. Store (default): each record's archive document is written to the storage account before the mode changes the source row. Purge: the mode is applied with no copy written, StorageAccountID is not needed, and cleared data cannot be restored. A Purge run refuses entities in ArchiveOnly mode, entities missing from metadata, entities that track Record Changes, entities whose driver is not registered or does not support purge, and HardDelete entities that use soft delete or whose delete cascade reaches an entity that tracks Record Changes or uses soft delete."})
25306
+ @MaxLength(20)
25307
+ StorageMode?: string;
25308
+
24643
25309
  @Field({nullable: true})
24644
25310
  @MaxLength(200)
24645
25311
  StorageAccount?: string;
@@ -24697,54 +25363,60 @@ export class CreateMJArchiveConfigurationInput {
24697
25363
  @Field({ nullable: true })
24698
25364
  CreatedByUserID?: string;
24699
25365
 
24700
- @Field(() => RestoreContextInput, { nullable: true })
24701
- RestoreContext___?: RestoreContextInput;
24702
- }
24703
-
24704
-
24705
- //****************************************************************************
24706
- // INPUT TYPE for MJ: Archive Configurations
24707
- //****************************************************************************
24708
- @InputType()
24709
- export class UpdateMJArchiveConfigurationInput {
24710
- @Field()
24711
- ID: string;
24712
-
24713
- @Field({ nullable: true })
24714
- Name?: string;
24715
-
24716
- @Field({ nullable: true })
24717
- Description?: string | null;
24718
-
24719
- @Field({ nullable: true })
24720
- StorageAccountID?: string | null;
24721
-
24722
- @Field({ nullable: true })
24723
- RootPath?: string;
24724
-
24725
- @Field({ nullable: true })
24726
- ArchiveFormat?: string;
24727
-
24728
- @Field(() => Boolean, { nullable: true })
24729
- IsActive?: boolean;
24730
-
24731
- @Field(() => Int, { nullable: true })
24732
- DefaultRetentionDays?: number;
24733
-
24734
25366
  @Field({ nullable: true })
24735
- DefaultMode?: string;
24736
-
24737
- @Field(() => Int, { nullable: true })
24738
- DefaultBatchSize?: number;
24739
-
24740
- @Field(() => Boolean, { nullable: true })
24741
- ArchiveRelatedRecordChanges?: boolean;
24742
-
24743
- @Field({ nullable: true })
24744
- Status?: string;
24745
-
24746
- @Field({ nullable: true })
24747
- CreatedByUserID?: string;
25367
+ StorageMode?: string;
25368
+
25369
+ @Field(() => RestoreContextInput, { nullable: true })
25370
+ RestoreContext___?: RestoreContextInput;
25371
+ }
25372
+
25373
+
25374
+ //****************************************************************************
25375
+ // INPUT TYPE for MJ: Archive Configurations
25376
+ //****************************************************************************
25377
+ @InputType()
25378
+ export class UpdateMJArchiveConfigurationInput {
25379
+ @Field()
25380
+ ID: string;
25381
+
25382
+ @Field({ nullable: true })
25383
+ Name?: string;
25384
+
25385
+ @Field({ nullable: true })
25386
+ Description?: string | null;
25387
+
25388
+ @Field({ nullable: true })
25389
+ StorageAccountID?: string | null;
25390
+
25391
+ @Field({ nullable: true })
25392
+ RootPath?: string;
25393
+
25394
+ @Field({ nullable: true })
25395
+ ArchiveFormat?: string;
25396
+
25397
+ @Field(() => Boolean, { nullable: true })
25398
+ IsActive?: boolean;
25399
+
25400
+ @Field(() => Int, { nullable: true })
25401
+ DefaultRetentionDays?: number;
25402
+
25403
+ @Field({ nullable: true })
25404
+ DefaultMode?: string;
25405
+
25406
+ @Field(() => Int, { nullable: true })
25407
+ DefaultBatchSize?: number;
25408
+
25409
+ @Field(() => Boolean, { nullable: true })
25410
+ ArchiveRelatedRecordChanges?: boolean;
25411
+
25412
+ @Field({ nullable: true })
25413
+ Status?: string;
25414
+
25415
+ @Field({ nullable: true })
25416
+ CreatedByUserID?: string;
25417
+
25418
+ @Field({ nullable: true })
25419
+ StorageMode?: string;
24748
25420
 
24749
25421
  @Field(() => [KeyValuePairInput], { nullable: true })
24750
25422
  OldValues___?: KeyValuePairInput[];
@@ -24900,7 +25572,8 @@ export class MJArchiveRunDetail_ {
24900
25572
  _mj__UpdatedAt: Date;
24901
25573
 
24902
25574
  @Field({nullable: true})
24903
- ArchiveRun?: Date;
25575
+ @MaxLength(255)
25576
+ ArchiveRun?: string;
24904
25577
 
24905
25578
  @Field({nullable: true})
24906
25579
  @MaxLength(255)
@@ -25146,6 +25819,10 @@ export class MJArchiveRun_ {
25146
25819
  @Field()
25147
25820
  _mj__UpdatedAt: Date;
25148
25821
 
25822
+ @Field({nullable: true, description: "The configuration's StorageMode when this run started: Store (copies written to storage) or Purge (no copies kept; only failed records get an ArchiveRunDetail row)."})
25823
+ @MaxLength(20)
25824
+ StorageMode?: string;
25825
+
25149
25826
  @Field({nullable: true})
25150
25827
  @MaxLength(255)
25151
25828
  ArchiveConfiguration?: string;
@@ -25200,6 +25877,9 @@ export class CreateMJArchiveRunInput {
25200
25877
  @Field({ nullable: true })
25201
25878
  UserID?: string;
25202
25879
 
25880
+ @Field({ nullable: true })
25881
+ StorageMode?: string;
25882
+
25203
25883
  @Field(() => RestoreContextInput, { nullable: true })
25204
25884
  RestoreContext___?: RestoreContextInput;
25205
25885
  }
@@ -25246,6 +25926,9 @@ export class UpdateMJArchiveRunInput {
25246
25926
  @Field({ nullable: true })
25247
25927
  UserID?: string;
25248
25928
 
25929
+ @Field({ nullable: true })
25930
+ StorageMode?: string;
25931
+
25249
25932
  @Field(() => [KeyValuePairInput], { nullable: true })
25250
25933
  OldValues___?: KeyValuePairInput[];
25251
25934
 
@@ -29562,6 +30245,28 @@ export class MJCommunicationProvider_ {
29562
30245
  @Field(() => Boolean, {nullable: true, description: "Whether or not the provider supports creating draft messages"})
29563
30246
  SupportsDrafts?: boolean;
29564
30247
 
30248
+ @Field(() => Boolean, {nullable: true, description: "Whether the provider supports calendar event reading, creation, updating, and invitation responses."})
30249
+ SupportsCalendar?: boolean;
30250
+
30251
+ @Field(() => Boolean, {nullable: true, description: "Whether the provider supports checking free/busy schedules and finding optimal meeting times."})
30252
+ SupportsFreeBusy?: boolean;
30253
+
30254
+ @Field({nullable: true, description: "Enterprise mailbox scope posture for this provider: UtilityMailboxesOnly (restricted to shared/agent utility mailboxes), SecurityGroupScoped (Exchange RBAC / Workspace group-scoped user mailboxes), or TenantWide."})
30255
+ @MaxLength(40)
30256
+ EnterpriseScopeMode?: string;
30257
+
30258
+ @Field({nullable: true, description: "Optional comma-separated list of corporate email domains permitted for user-scoped mailbox and calendar operations (e.g., \"company.com,subsidiary.com\")."})
30259
+ @MaxLength(500)
30260
+ AllowedEmailDomains?: string;
30261
+
30262
+ @Field({nullable: true, description: "Optional default MJ Credential used by this communication provider when no per-request credential override is supplied."})
30263
+ @MaxLength(36)
30264
+ DefaultCredentialID?: string;
30265
+
30266
+ @Field({nullable: true})
30267
+ @MaxLength(200)
30268
+ DefaultCredential?: string;
30269
+
29565
30270
  @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
29566
30271
  ReadableFields___?: string[];
29567
30272
 
@@ -29602,6 +30307,21 @@ export class CreateMJCommunicationProviderInput {
29602
30307
  @Field(() => Boolean, { nullable: true })
29603
30308
  SupportsDrafts?: boolean;
29604
30309
 
30310
+ @Field(() => Boolean, { nullable: true })
30311
+ SupportsCalendar?: boolean;
30312
+
30313
+ @Field(() => Boolean, { nullable: true })
30314
+ SupportsFreeBusy?: boolean;
30315
+
30316
+ @Field({ nullable: true })
30317
+ EnterpriseScopeMode?: string;
30318
+
30319
+ @Field({ nullable: true })
30320
+ AllowedEmailDomains: string | null;
30321
+
30322
+ @Field({ nullable: true })
30323
+ DefaultCredentialID: string | null;
30324
+
29605
30325
  @Field(() => RestoreContextInput, { nullable: true })
29606
30326
  RestoreContext___?: RestoreContextInput;
29607
30327
  }
@@ -29642,6 +30362,21 @@ export class UpdateMJCommunicationProviderInput {
29642
30362
  @Field(() => Boolean, { nullable: true })
29643
30363
  SupportsDrafts?: boolean;
29644
30364
 
30365
+ @Field(() => Boolean, { nullable: true })
30366
+ SupportsCalendar?: boolean;
30367
+
30368
+ @Field(() => Boolean, { nullable: true })
30369
+ SupportsFreeBusy?: boolean;
30370
+
30371
+ @Field({ nullable: true })
30372
+ EnterpriseScopeMode?: string;
30373
+
30374
+ @Field({ nullable: true })
30375
+ AllowedEmailDomains?: string | null;
30376
+
30377
+ @Field({ nullable: true })
30378
+ DefaultCredentialID?: string | null;
30379
+
29645
30380
  @Field(() => [KeyValuePairInput], { nullable: true })
29646
30381
  OldValues___?: KeyValuePairInput[];
29647
30382
 
@@ -37255,6 +37990,221 @@ export class MJConversationArtifactResolver extends ResolverBase {
37255
37990
 
37256
37991
  }
37257
37992
 
37993
+ //****************************************************************************
37994
+ // ENTITY CLASS for MJ: Conversation Branches
37995
+ //****************************************************************************
37996
+ @ObjectType({ description: "A fork of a conversation: another path that starts at a message. Main (the trunk) is the messages with no branch. A fork's path is its own messages plus each ancestor's messages up to that ancestor's ForkFromSequence." })
37997
+ export class MJConversationBranch_ {
37998
+ @Field()
37999
+ @MaxLength(36)
38000
+ ID: string;
38001
+
38002
+ @Field({nullable: true, description: "The conversation this fork belongs to."})
38003
+ @MaxLength(36)
38004
+ ConversationID?: string;
38005
+
38006
+ @Field({nullable: true, description: "The fork this one started from. NULL means it started from Main, or before the first message when ForkFromSequence is also NULL."})
38007
+ @MaxLength(36)
38008
+ ParentBranchID?: string;
38009
+
38010
+ @Field(() => Int, {nullable: true, description: "Sequence of the last message shared with the parent path. NULL means the fork starts before the first message, in which case ParentBranchID is also NULL."})
38011
+ ForkFromSequence?: number;
38012
+
38013
+ @Field({nullable: true, description: "Optional name of the fork. With no name, the UI shows a default label from Kind: a Fork is named from its first message."})
38014
+ @MaxLength(255)
38015
+ Name?: string;
38016
+
38017
+ @Field({nullable: true, description: "How the fork started: Fork (Fork from here), Edit (a sent message was edited) or Regenerate (an answer was regenerated)."})
38018
+ @MaxLength(20)
38019
+ Kind?: string;
38020
+
38021
+ @Field({nullable: true, description: "The edited message (Kind Edit) or the replaced answer (Kind Regenerate); NULL otherwise. Not a foreign key, to avoid a CodeGen cascade cycle with ConversationDetail."})
38022
+ @MaxLength(36)
38023
+ SourceDetailID?: string;
38024
+
38025
+ @Field({nullable: true, description: "The person who started the fork."})
38026
+ @MaxLength(36)
38027
+ UserID?: string;
38028
+
38029
+ @Field()
38030
+ _mj__CreatedAt: Date;
38031
+
38032
+ @Field()
38033
+ _mj__UpdatedAt: Date;
38034
+
38035
+ @Field({nullable: true})
38036
+ @MaxLength(255)
38037
+ Conversation?: string;
38038
+
38039
+ @Field({nullable: true})
38040
+ @MaxLength(255)
38041
+ ParentBranch?: string;
38042
+
38043
+ @Field({nullable: true})
38044
+ @MaxLength(100)
38045
+ User?: string;
38046
+
38047
+ @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
38048
+ ReadableFields___?: string[];
38049
+
38050
+ }
38051
+
38052
+ //****************************************************************************
38053
+ // INPUT TYPE for MJ: Conversation Branches
38054
+ //****************************************************************************
38055
+ @InputType()
38056
+ export class CreateMJConversationBranchInput {
38057
+ @Field({ nullable: true })
38058
+ ID?: string;
38059
+
38060
+ @Field({ nullable: true })
38061
+ ConversationID?: string;
38062
+
38063
+ @Field({ nullable: true })
38064
+ ParentBranchID: string | null;
38065
+
38066
+ @Field(() => Int, { nullable: true })
38067
+ ForkFromSequence: number | null;
38068
+
38069
+ @Field({ nullable: true })
38070
+ Name: string | null;
38071
+
38072
+ @Field({ nullable: true })
38073
+ Kind?: string;
38074
+
38075
+ @Field({ nullable: true })
38076
+ SourceDetailID: string | null;
38077
+
38078
+ @Field({ nullable: true })
38079
+ UserID?: string;
38080
+
38081
+ @Field(() => RestoreContextInput, { nullable: true })
38082
+ RestoreContext___?: RestoreContextInput;
38083
+ }
38084
+
38085
+
38086
+ //****************************************************************************
38087
+ // INPUT TYPE for MJ: Conversation Branches
38088
+ //****************************************************************************
38089
+ @InputType()
38090
+ export class UpdateMJConversationBranchInput {
38091
+ @Field()
38092
+ ID: string;
38093
+
38094
+ @Field({ nullable: true })
38095
+ ConversationID?: string;
38096
+
38097
+ @Field({ nullable: true })
38098
+ ParentBranchID?: string | null;
38099
+
38100
+ @Field(() => Int, { nullable: true })
38101
+ ForkFromSequence?: number | null;
38102
+
38103
+ @Field({ nullable: true })
38104
+ Name?: string | null;
38105
+
38106
+ @Field({ nullable: true })
38107
+ Kind?: string;
38108
+
38109
+ @Field({ nullable: true })
38110
+ SourceDetailID?: string | null;
38111
+
38112
+ @Field({ nullable: true })
38113
+ UserID?: string;
38114
+
38115
+ @Field(() => [KeyValuePairInput], { nullable: true })
38116
+ OldValues___?: KeyValuePairInput[];
38117
+
38118
+ @Field(() => RestoreContextInput, { nullable: true })
38119
+ RestoreContext___?: RestoreContextInput;
38120
+ }
38121
+
38122
+ //****************************************************************************
38123
+ // RESOLVER for MJ: Conversation Branches
38124
+ //****************************************************************************
38125
+ @ObjectType()
38126
+ export class RunMJConversationBranchViewResult {
38127
+ @Field(() => [MJConversationBranch_])
38128
+ Results: MJConversationBranch_[];
38129
+
38130
+ @Field(() => String, {nullable: true})
38131
+ UserViewRunID?: string;
38132
+
38133
+ @Field(() => Int, {nullable: true})
38134
+ RowCount: number;
38135
+
38136
+ @Field(() => Int, {nullable: true})
38137
+ TotalRowCount: number;
38138
+
38139
+ @Field(() => Int, {nullable: true})
38140
+ ExecutionTime: number;
38141
+
38142
+ @Field({nullable: true})
38143
+ ErrorMessage?: string;
38144
+
38145
+ @Field(() => Boolean, {nullable: false})
38146
+ Success: boolean;
38147
+ }
38148
+
38149
+ @Resolver(MJConversationBranch_)
38150
+ export class MJConversationBranchResolver extends ResolverBase {
38151
+ @Query(() => RunMJConversationBranchViewResult)
38152
+ async RunMJConversationBranchViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
38153
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
38154
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
38155
+ }
38156
+
38157
+ @Query(() => RunMJConversationBranchViewResult)
38158
+ async RunMJConversationBranchViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
38159
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
38160
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
38161
+ }
38162
+
38163
+ @Query(() => RunMJConversationBranchViewResult)
38164
+ async RunMJConversationBranchDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
38165
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
38166
+ input.EntityName = 'MJ: Conversation Branches';
38167
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
38168
+ }
38169
+ @Query(() => MJConversationBranch_, { nullable: true })
38170
+ async MJConversationBranch(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJConversationBranch_ | null> {
38171
+ this.CheckUserReadPermissions('MJ: Conversation Branches', userPayload);
38172
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
38173
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwConversationBranches')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Conversation Branches', userPayload, EntityPermissionType.Read, 'AND');
38174
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
38175
+ const result = await this.MapFieldNamesToCodeNames('MJ: Conversation Branches', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
38176
+ return result;
38177
+ }
38178
+
38179
+ @Mutation(() => MJConversationBranch_)
38180
+ async CreateMJConversationBranch(
38181
+ @Arg('input', () => CreateMJConversationBranchInput) input: CreateMJConversationBranchInput,
38182
+ @Ctx() { providers, userPayload }: AppContext,
38183
+ @PubSub() pubSub: PubSubEngine
38184
+ ) {
38185
+ const provider = GetReadWriteProvider(providers);
38186
+ return this.CreateRecord('MJ: Conversation Branches', input, provider, userPayload, pubSub)
38187
+ }
38188
+
38189
+ @Mutation(() => MJConversationBranch_)
38190
+ async UpdateMJConversationBranch(
38191
+ @Arg('input', () => UpdateMJConversationBranchInput) input: UpdateMJConversationBranchInput,
38192
+ @Ctx() { providers, userPayload }: AppContext,
38193
+ @PubSub() pubSub: PubSubEngine
38194
+ ) {
38195
+ const provider = GetReadWriteProvider(providers);
38196
+ return this.UpdateRecord('MJ: Conversation Branches', input, provider, userPayload, pubSub);
38197
+ }
38198
+
38199
+ @Mutation(() => MJConversationBranch_)
38200
+ async DeleteMJConversationBranch(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
38201
+ const provider = GetReadWriteProvider(providers);
38202
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
38203
+ return this.DeleteRecord('MJ: Conversation Branches', key, options, provider, userPayload, pubSub);
38204
+ }
38205
+
38206
+ }
38207
+
37258
38208
  //****************************************************************************
37259
38209
  // ENTITY CLASS for MJ: Conversation Compaction Runs
37260
38210
  //****************************************************************************
@@ -38168,6 +39118,13 @@ export class MJConversationDetail_ {
38168
39118
  @Field(() => Int, {nullable: true, description: "Monotonic, per-conversation ordinal assigned on insert (1-based). Provides a stable symbolic handle used by conversation-history retrieval tools and by the sequence markers embedded in compaction summaries. A summary stored in SummaryOfEarlierConversation on a given row covers all rows with a lower Sequence in the same conversation."})
38169
39119
  Sequence?: number;
38170
39120
 
39121
+ @Field({nullable: true, description: "The fork this message belongs to. NULL means Main (the trunk). Every writer sets it explicitly."})
39122
+ @MaxLength(36)
39123
+ BranchID?: string;
39124
+
39125
+ @Field({nullable: true, description: "When a rerun of this message's turn replaced it (Regenerate or Save and resend while forking is off). A replaced row is kept for audit, is hidden from the user and is never sent to an agent. NULL means the row is live."})
39126
+ ReplacedAt?: Date;
39127
+
38171
39128
  @Field({nullable: true})
38172
39129
  @MaxLength(255)
38173
39130
  Conversation?: string;
@@ -38196,6 +39153,10 @@ export class MJConversationDetail_ {
38196
39153
  @MaxLength(255)
38197
39154
  TestRun?: string;
38198
39155
 
39156
+ @Field({nullable: true})
39157
+ @MaxLength(255)
39158
+ Branch?: string;
39159
+
38199
39160
  @Field({nullable: true})
38200
39161
  @MaxLength(36)
38201
39162
  RootParentID?: string;
@@ -38312,6 +39273,12 @@ export class CreateMJConversationDetailInput {
38312
39273
  @Field({ nullable: true })
38313
39274
  MediaType: string | null;
38314
39275
 
39276
+ @Field({ nullable: true })
39277
+ BranchID: string | null;
39278
+
39279
+ @Field({ nullable: true })
39280
+ ReplacedAt: Date | null;
39281
+
38315
39282
  @Field(() => RestoreContextInput, { nullable: true })
38316
39283
  RestoreContext___?: RestoreContextInput;
38317
39284
  }
@@ -38412,6 +39379,12 @@ export class UpdateMJConversationDetailInput {
38412
39379
  @Field({ nullable: true })
38413
39380
  MediaType?: string | null;
38414
39381
 
39382
+ @Field({ nullable: true })
39383
+ BranchID?: string | null;
39384
+
39385
+ @Field({ nullable: true })
39386
+ ReplacedAt?: Date | null;
39387
+
38415
39388
  @Field(() => [KeyValuePairInput], { nullable: true })
38416
39389
  OldValues___?: KeyValuePairInput[];
38417
39390
 
@@ -53584,6 +54557,383 @@ export class MJFeaturePipelineTypeResolver extends ResolverBase {
53584
54557
 
53585
54558
  }
53586
54559
 
54560
+ //****************************************************************************
54561
+ // ENTITY CLASS for MJ: Feature Pipeline Versions
54562
+ //****************************************************************************
54563
+ @ObjectType({ description: "One version of a Feature Pipeline: a distinct pin (spec hash, prompt version hash, primary AI model, parameters hash). A gated pipeline runs only under an Active version, and a version becomes Active only with a stored golden-set result at or above its declared threshold." })
54564
+ export class MJFeaturePipelineVersion_ {
54565
+ @Field()
54566
+ @MaxLength(36)
54567
+ ID: string;
54568
+
54569
+ @Field({nullable: true})
54570
+ @MaxLength(36)
54571
+ RecordProcessID?: string;
54572
+
54573
+ @Field(() => Int, {nullable: true, description: "Monotonic version number within the pipeline (1, 2, ...)."})
54574
+ Version?: number;
54575
+
54576
+ @Field({nullable: true, description: "SHA-256 of the pin (SpecHash, PromptVersionHash, AIModelID, ParametersHash). Unique per pipeline."})
54577
+ @MaxLength(64)
54578
+ PinHash?: string;
54579
+
54580
+ @Field({nullable: true, description: "SHA-256 of the output-affecting parts of the DataFeatureSpec (Context, Outputs, PipelineType, Escalation, PromptID, ProcessorExtensionKey) and the OutputMapping."})
54581
+ @MaxLength(64)
54582
+ SpecHash?: string;
54583
+
54584
+ @Field({nullable: true, description: "The pipeline prompt this version runs."})
54585
+ @MaxLength(36)
54586
+ PromptID?: string;
54587
+
54588
+ @Field({nullable: true, description: "Prompt version hash (template text, outputs, constraint block, pipeline type, escalation) of this version."})
54589
+ @MaxLength(64)
54590
+ PromptVersionHash?: string;
54591
+
54592
+ @Field({nullable: true, description: "Primary AI model of the prompt for this version."})
54593
+ @MaxLength(36)
54594
+ AIModelID?: string;
54595
+
54596
+ @Field({nullable: true, description: "SHA-256 of the prompt inference parameters for this version."})
54597
+ @MaxLength(64)
54598
+ ParametersHash?: string;
54599
+
54600
+ @Field({nullable: true, description: "Candidate (registered, not yet allowed to write), Active (the version runs write), Refused (golden-set result below threshold), Retired (superseded by a later Active version)."})
54601
+ @MaxLength(20)
54602
+ Status?: string;
54603
+
54604
+ @Field(() => Boolean, {nullable: true, description: "True when the pipeline declares DataFeatureSpec.Activation: the version can become Active only through a stored golden-set result at or above Threshold."})
54605
+ Gated?: boolean;
54606
+
54607
+ @Field({nullable: true, description: "The MJ: Tests row holding the golden set this version was evaluated on."})
54608
+ @MaxLength(36)
54609
+ GoldenSetTestID?: string;
54610
+
54611
+ @Field({nullable: true, description: "The MJ: Test Runs row of the evaluation whose result is stored here."})
54612
+ @MaxLength(36)
54613
+ GoldenSetTestRunID?: string;
54614
+
54615
+ @Field({nullable: true, description: "Metric of the stored result: accuracy."})
54616
+ @MaxLength(20)
54617
+ Metric?: string;
54618
+
54619
+ @Field(() => Float, {nullable: true, description: "Declared activation threshold copied from DataFeatureSpec.Activation at evaluation time."})
54620
+ Threshold?: number;
54621
+
54622
+ @Field(() => Float, {nullable: true, description: "Point estimate of the metric (the lowest per-output value when the pipeline has several outputs)."})
54623
+ ResultValue?: number;
54624
+
54625
+ @Field(() => Float, {nullable: true, description: "Lower bound of the 95% Wilson interval of ResultValue."})
54626
+ ResultLower?: number;
54627
+
54628
+ @Field(() => Float, {nullable: true, description: "Upper bound of the 95% Wilson interval of ResultValue."})
54629
+ ResultUpper?: number;
54630
+
54631
+ @Field(() => Int, {nullable: true, description: "Number of golden cases scored."})
54632
+ ResultN?: number;
54633
+
54634
+ @Field({nullable: true, description: "JSON per-output results (correct, n, value, interval) and the per-case answers of the evaluation."})
54635
+ ResultDetails?: string;
54636
+
54637
+ @Field({nullable: true, description: "When the version became Active."})
54638
+ ActivatedAt?: Date;
54639
+
54640
+ @Field({nullable: true, description: "The user whose run activated the version (for an unattended activation, the Feature Pipeline Version Steward job's user)."})
54641
+ @MaxLength(36)
54642
+ ApprovedByUserID?: string;
54643
+
54644
+ @Field({nullable: true, description: "When a later Active version superseded this one."})
54645
+ RetiredAt?: Date;
54646
+
54647
+ @Field({nullable: true, description: "When the Feature Pipeline Version Steward finished the one backfill run of this activation of the version."})
54648
+ BackfilledAt?: Date;
54649
+
54650
+ @Field()
54651
+ _mj__CreatedAt: Date;
54652
+
54653
+ @Field()
54654
+ _mj__UpdatedAt: Date;
54655
+
54656
+ @Field({nullable: true})
54657
+ @MaxLength(255)
54658
+ RecordProcess?: string;
54659
+
54660
+ @Field({nullable: true})
54661
+ @MaxLength(255)
54662
+ Prompt?: string;
54663
+
54664
+ @Field({nullable: true})
54665
+ @MaxLength(50)
54666
+ AIModel?: string;
54667
+
54668
+ @Field({nullable: true})
54669
+ @MaxLength(255)
54670
+ GoldenSetTest?: string;
54671
+
54672
+ @Field({nullable: true})
54673
+ @MaxLength(255)
54674
+ GoldenSetTestRun?: string;
54675
+
54676
+ @Field({nullable: true})
54677
+ @MaxLength(100)
54678
+ ApprovedByUser?: string;
54679
+
54680
+ @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
54681
+ ReadableFields___?: string[];
54682
+
54683
+ }
54684
+
54685
+ //****************************************************************************
54686
+ // INPUT TYPE for MJ: Feature Pipeline Versions
54687
+ //****************************************************************************
54688
+ @InputType()
54689
+ export class CreateMJFeaturePipelineVersionInput {
54690
+ @Field({ nullable: true })
54691
+ ID?: string;
54692
+
54693
+ @Field({ nullable: true })
54694
+ RecordProcessID?: string;
54695
+
54696
+ @Field(() => Int, { nullable: true })
54697
+ Version?: number;
54698
+
54699
+ @Field({ nullable: true })
54700
+ PinHash?: string;
54701
+
54702
+ @Field({ nullable: true })
54703
+ SpecHash?: string;
54704
+
54705
+ @Field({ nullable: true })
54706
+ PromptID: string | null;
54707
+
54708
+ @Field({ nullable: true })
54709
+ PromptVersionHash: string | null;
54710
+
54711
+ @Field({ nullable: true })
54712
+ AIModelID: string | null;
54713
+
54714
+ @Field({ nullable: true })
54715
+ ParametersHash: string | null;
54716
+
54717
+ @Field({ nullable: true })
54718
+ Status?: string;
54719
+
54720
+ @Field(() => Boolean, { nullable: true })
54721
+ Gated?: boolean;
54722
+
54723
+ @Field({ nullable: true })
54724
+ GoldenSetTestID: string | null;
54725
+
54726
+ @Field({ nullable: true })
54727
+ GoldenSetTestRunID: string | null;
54728
+
54729
+ @Field({ nullable: true })
54730
+ Metric: string | null;
54731
+
54732
+ @Field(() => Float, { nullable: true })
54733
+ Threshold: number | null;
54734
+
54735
+ @Field(() => Float, { nullable: true })
54736
+ ResultValue: number | null;
54737
+
54738
+ @Field(() => Float, { nullable: true })
54739
+ ResultLower: number | null;
54740
+
54741
+ @Field(() => Float, { nullable: true })
54742
+ ResultUpper: number | null;
54743
+
54744
+ @Field(() => Int, { nullable: true })
54745
+ ResultN: number | null;
54746
+
54747
+ @Field({ nullable: true })
54748
+ ResultDetails: string | null;
54749
+
54750
+ @Field({ nullable: true })
54751
+ ActivatedAt: Date | null;
54752
+
54753
+ @Field({ nullable: true })
54754
+ ApprovedByUserID: string | null;
54755
+
54756
+ @Field({ nullable: true })
54757
+ RetiredAt: Date | null;
54758
+
54759
+ @Field({ nullable: true })
54760
+ BackfilledAt: Date | null;
54761
+
54762
+ @Field(() => RestoreContextInput, { nullable: true })
54763
+ RestoreContext___?: RestoreContextInput;
54764
+ }
54765
+
54766
+
54767
+ //****************************************************************************
54768
+ // INPUT TYPE for MJ: Feature Pipeline Versions
54769
+ //****************************************************************************
54770
+ @InputType()
54771
+ export class UpdateMJFeaturePipelineVersionInput {
54772
+ @Field()
54773
+ ID: string;
54774
+
54775
+ @Field({ nullable: true })
54776
+ RecordProcessID?: string;
54777
+
54778
+ @Field(() => Int, { nullable: true })
54779
+ Version?: number;
54780
+
54781
+ @Field({ nullable: true })
54782
+ PinHash?: string;
54783
+
54784
+ @Field({ nullable: true })
54785
+ SpecHash?: string;
54786
+
54787
+ @Field({ nullable: true })
54788
+ PromptID?: string | null;
54789
+
54790
+ @Field({ nullable: true })
54791
+ PromptVersionHash?: string | null;
54792
+
54793
+ @Field({ nullable: true })
54794
+ AIModelID?: string | null;
54795
+
54796
+ @Field({ nullable: true })
54797
+ ParametersHash?: string | null;
54798
+
54799
+ @Field({ nullable: true })
54800
+ Status?: string;
54801
+
54802
+ @Field(() => Boolean, { nullable: true })
54803
+ Gated?: boolean;
54804
+
54805
+ @Field({ nullable: true })
54806
+ GoldenSetTestID?: string | null;
54807
+
54808
+ @Field({ nullable: true })
54809
+ GoldenSetTestRunID?: string | null;
54810
+
54811
+ @Field({ nullable: true })
54812
+ Metric?: string | null;
54813
+
54814
+ @Field(() => Float, { nullable: true })
54815
+ Threshold?: number | null;
54816
+
54817
+ @Field(() => Float, { nullable: true })
54818
+ ResultValue?: number | null;
54819
+
54820
+ @Field(() => Float, { nullable: true })
54821
+ ResultLower?: number | null;
54822
+
54823
+ @Field(() => Float, { nullable: true })
54824
+ ResultUpper?: number | null;
54825
+
54826
+ @Field(() => Int, { nullable: true })
54827
+ ResultN?: number | null;
54828
+
54829
+ @Field({ nullable: true })
54830
+ ResultDetails?: string | null;
54831
+
54832
+ @Field({ nullable: true })
54833
+ ActivatedAt?: Date | null;
54834
+
54835
+ @Field({ nullable: true })
54836
+ ApprovedByUserID?: string | null;
54837
+
54838
+ @Field({ nullable: true })
54839
+ RetiredAt?: Date | null;
54840
+
54841
+ @Field({ nullable: true })
54842
+ BackfilledAt?: Date | null;
54843
+
54844
+ @Field(() => [KeyValuePairInput], { nullable: true })
54845
+ OldValues___?: KeyValuePairInput[];
54846
+
54847
+ @Field(() => RestoreContextInput, { nullable: true })
54848
+ RestoreContext___?: RestoreContextInput;
54849
+ }
54850
+
54851
+ //****************************************************************************
54852
+ // RESOLVER for MJ: Feature Pipeline Versions
54853
+ //****************************************************************************
54854
+ @ObjectType()
54855
+ export class RunMJFeaturePipelineVersionViewResult {
54856
+ @Field(() => [MJFeaturePipelineVersion_])
54857
+ Results: MJFeaturePipelineVersion_[];
54858
+
54859
+ @Field(() => String, {nullable: true})
54860
+ UserViewRunID?: string;
54861
+
54862
+ @Field(() => Int, {nullable: true})
54863
+ RowCount: number;
54864
+
54865
+ @Field(() => Int, {nullable: true})
54866
+ TotalRowCount: number;
54867
+
54868
+ @Field(() => Int, {nullable: true})
54869
+ ExecutionTime: number;
54870
+
54871
+ @Field({nullable: true})
54872
+ ErrorMessage?: string;
54873
+
54874
+ @Field(() => Boolean, {nullable: false})
54875
+ Success: boolean;
54876
+ }
54877
+
54878
+ @Resolver(MJFeaturePipelineVersion_)
54879
+ export class MJFeaturePipelineVersionResolver extends ResolverBase {
54880
+ @Query(() => RunMJFeaturePipelineVersionViewResult)
54881
+ async RunMJFeaturePipelineVersionViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
54882
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
54883
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
54884
+ }
54885
+
54886
+ @Query(() => RunMJFeaturePipelineVersionViewResult)
54887
+ async RunMJFeaturePipelineVersionViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
54888
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
54889
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
54890
+ }
54891
+
54892
+ @Query(() => RunMJFeaturePipelineVersionViewResult)
54893
+ async RunMJFeaturePipelineVersionDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
54894
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
54895
+ input.EntityName = 'MJ: Feature Pipeline Versions';
54896
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
54897
+ }
54898
+ @Query(() => MJFeaturePipelineVersion_, { nullable: true })
54899
+ async MJFeaturePipelineVersion(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJFeaturePipelineVersion_ | null> {
54900
+ this.CheckUserReadPermissions('MJ: Feature Pipeline Versions', userPayload);
54901
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
54902
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwFeaturePipelineVersions')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Feature Pipeline Versions', userPayload, EntityPermissionType.Read, 'AND');
54903
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
54904
+ const result = await this.MapFieldNamesToCodeNames('MJ: Feature Pipeline Versions', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
54905
+ return result;
54906
+ }
54907
+
54908
+ @Mutation(() => MJFeaturePipelineVersion_)
54909
+ async CreateMJFeaturePipelineVersion(
54910
+ @Arg('input', () => CreateMJFeaturePipelineVersionInput) input: CreateMJFeaturePipelineVersionInput,
54911
+ @Ctx() { providers, userPayload }: AppContext,
54912
+ @PubSub() pubSub: PubSubEngine
54913
+ ) {
54914
+ const provider = GetReadWriteProvider(providers);
54915
+ return this.CreateRecord('MJ: Feature Pipeline Versions', input, provider, userPayload, pubSub)
54916
+ }
54917
+
54918
+ @Mutation(() => MJFeaturePipelineVersion_)
54919
+ async UpdateMJFeaturePipelineVersion(
54920
+ @Arg('input', () => UpdateMJFeaturePipelineVersionInput) input: UpdateMJFeaturePipelineVersionInput,
54921
+ @Ctx() { providers, userPayload }: AppContext,
54922
+ @PubSub() pubSub: PubSubEngine
54923
+ ) {
54924
+ const provider = GetReadWriteProvider(providers);
54925
+ return this.UpdateRecord('MJ: Feature Pipeline Versions', input, provider, userPayload, pubSub);
54926
+ }
54927
+
54928
+ @Mutation(() => MJFeaturePipelineVersion_)
54929
+ async DeleteMJFeaturePipelineVersion(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
54930
+ const provider = GetReadWriteProvider(providers);
54931
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
54932
+ return this.DeleteRecord('MJ: Feature Pipeline Versions', key, options, provider, userPayload, pubSub);
54933
+ }
54934
+
54935
+ }
54936
+
53587
54937
  //****************************************************************************
53588
54938
  // ENTITY CLASS for MJ: Feature Value Caches
53589
54939
  //****************************************************************************
@@ -53648,6 +54998,14 @@ export class MJFeatureValueCache_ {
53648
54998
  @Field({description: "Timestamp when this record was last updated."})
53649
54999
  _mj__UpdatedAt: Date;
53650
55000
 
55001
+ @Field({nullable: true, description: "Primary AI model of the prompt that computed this cached result. Part of the cache key."})
55002
+ @MaxLength(36)
55003
+ AIModelID?: string;
55004
+
55005
+ @Field({nullable: true, description: "SHA-256 of the prompt's inference parameters when this result was computed. Part of the cache key."})
55006
+ @MaxLength(64)
55007
+ ParametersHash?: string;
55008
+
53651
55009
  @Field({nullable: true})
53652
55010
  @MaxLength(255)
53653
55011
  RecordProcess?: string;
@@ -53656,6 +55014,10 @@ export class MJFeatureValueCache_ {
53656
55014
  @MaxLength(255)
53657
55015
  Prompt?: string;
53658
55016
 
55017
+ @Field({nullable: true})
55018
+ @MaxLength(50)
55019
+ AIModel?: string;
55020
+
53659
55021
  @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
53660
55022
  ReadableFields___?: string[];
53661
55023
 
@@ -53711,6 +55073,12 @@ export class CreateMJFeatureValueCacheInput {
53711
55073
  @Field({ nullable: true })
53712
55074
  ExpiresAt: Date | null;
53713
55075
 
55076
+ @Field({ nullable: true })
55077
+ AIModelID: string | null;
55078
+
55079
+ @Field({ nullable: true })
55080
+ ParametersHash: string | null;
55081
+
53714
55082
  @Field(() => RestoreContextInput, { nullable: true })
53715
55083
  RestoreContext___?: RestoreContextInput;
53716
55084
  }
@@ -53766,6 +55134,12 @@ export class UpdateMJFeatureValueCacheInput {
53766
55134
  @Field({ nullable: true })
53767
55135
  ExpiresAt?: Date | null;
53768
55136
 
55137
+ @Field({ nullable: true })
55138
+ AIModelID?: string | null;
55139
+
55140
+ @Field({ nullable: true })
55141
+ ParametersHash?: string | null;
55142
+
53769
55143
  @Field(() => [KeyValuePairInput], { nullable: true })
53770
55144
  OldValues___?: KeyValuePairInput[];
53771
55145
 
@@ -53862,7 +55236,7 @@ export class MJFeatureValueCacheResolver extends ResolverBase {
53862
55236
  //****************************************************************************
53863
55237
  // ENTITY CLASS for MJ: Feature Values
53864
55238
  //****************************************************************************
53865
- @ObjectType({ description: "Complete historical audit table for Feature Pipelines. Records every feature value ever computed per entity record, with full provenance, model reasoning, and run back-links." })
55239
+ @ObjectType({ description: "Feature values computed by Feature Pipelines (or entered by people), one row per Feature Value key, updated in place when the same key is recomputed." })
53866
55240
  export class MJFeatureValue_ {
53867
55241
  @Field({description: "Unique identifier for this feature value history record."})
53868
55242
  @MaxLength(36)
@@ -53942,6 +55316,29 @@ export class MJFeatureValue_ {
53942
55316
  @Field({description: "Timestamp when this record was last updated."})
53943
55317
  _mj__UpdatedAt: Date;
53944
55318
 
55319
+ @Field(() => Int, {nullable: true, description: "Version of the Feature Pipeline (MJ: Feature Pipeline Versions.Version) that computed this value; part of the FeatureValueKey."})
55320
+ PipelineVersion?: number;
55321
+
55322
+ @Field({nullable: true, description: "Primary AI model the pipeline's prompt is configured to run (highest-priority Active AI Prompt Model). Part of the FeatureValueKey; the model that actually answered is on the linked AI Prompt Run."})
55323
+ @MaxLength(36)
55324
+ AIModelID?: string;
55325
+
55326
+ @Field({nullable: true, description: "SHA-256 of the prompt's inference parameters (temperature, topP, topK, minP, penalties, seed, response format, effort level, model parameters). Part of the FeatureValueKey."})
55327
+ @MaxLength(64)
55328
+ ParametersHash?: string;
55329
+
55330
+ @Field({nullable: true, description: "SHA-256 of the normalized input the value was computed from (the Dedup Cache key hash when the pipeline caches). Part of the FeatureValueKey."})
55331
+ @MaxLength(64)
55332
+ InputHash?: string;
55333
+
55334
+ @Field({nullable: true, description: "SHA-256 of the canonical FeatureValueKey (entity, record, feature, pipeline version, prompt version hash, AI model, parameters hash, input hash, source). Unique per pipeline: re-computing the same key updates the row instead of inserting a duplicate."})
55335
+ @MaxLength(64)
55336
+ ValueKeyHash?: string;
55337
+
55338
+ @Field({nullable: true, description: "Who produced the value: Pipeline (computed by the Feature Pipeline) or Human (entered by a person, which write-back leaves in place)."})
55339
+ @MaxLength(20)
55340
+ Source?: string;
55341
+
53945
55342
  @Field({nullable: true})
53946
55343
  @MaxLength(255)
53947
55344
  RecordProcess?: string;
@@ -53962,6 +55359,10 @@ export class MJFeatureValue_ {
53962
55359
  @MaxLength(500)
53963
55360
  FeatureValueCache?: string;
53964
55361
 
55362
+ @Field({nullable: true})
55363
+ @MaxLength(50)
55364
+ AIModel?: string;
55365
+
53965
55366
  @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
53966
55367
  ReadableFields___?: string[];
53967
55368
 
@@ -54032,6 +55433,24 @@ export class CreateMJFeatureValueInput {
54032
55433
  @Field({ nullable: true })
54033
55434
  ComputedAt?: Date;
54034
55435
 
55436
+ @Field(() => Int, { nullable: true })
55437
+ PipelineVersion: number | null;
55438
+
55439
+ @Field({ nullable: true })
55440
+ AIModelID: string | null;
55441
+
55442
+ @Field({ nullable: true })
55443
+ ParametersHash: string | null;
55444
+
55445
+ @Field({ nullable: true })
55446
+ InputHash: string | null;
55447
+
55448
+ @Field({ nullable: true })
55449
+ ValueKeyHash: string | null;
55450
+
55451
+ @Field({ nullable: true })
55452
+ Source?: string;
55453
+
54035
55454
  @Field(() => RestoreContextInput, { nullable: true })
54036
55455
  RestoreContext___?: RestoreContextInput;
54037
55456
  }
@@ -54102,6 +55521,24 @@ export class UpdateMJFeatureValueInput {
54102
55521
  @Field({ nullable: true })
54103
55522
  ComputedAt?: Date;
54104
55523
 
55524
+ @Field(() => Int, { nullable: true })
55525
+ PipelineVersion?: number | null;
55526
+
55527
+ @Field({ nullable: true })
55528
+ AIModelID?: string | null;
55529
+
55530
+ @Field({ nullable: true })
55531
+ ParametersHash?: string | null;
55532
+
55533
+ @Field({ nullable: true })
55534
+ InputHash?: string | null;
55535
+
55536
+ @Field({ nullable: true })
55537
+ ValueKeyHash?: string | null;
55538
+
55539
+ @Field({ nullable: true })
55540
+ Source?: string;
55541
+
54105
55542
  @Field(() => [KeyValuePairInput], { nullable: true })
54106
55543
  OldValues___?: KeyValuePairInput[];
54107
55544
 
@@ -69031,6 +70468,9 @@ export class MJProcessRunDetail_ {
69031
70468
  @Field()
69032
70469
  _mj__UpdatedAt: Date;
69033
70470
 
70471
+ @Field({nullable: true, description: "JSON array of the record's non-fatal problems (for example, its Dedup Cache entry could not be stored) on a record that otherwise succeeded. NULL when there were none. Failures are in ErrorMessage, never here."})
70472
+ Warnings?: string;
70473
+
69034
70474
  @Field({nullable: true})
69035
70475
  @MaxLength(255)
69036
70476
  Entity?: string;
@@ -69092,6 +70532,9 @@ export class CreateMJProcessRunDetailInput {
69092
70532
  @Field({ nullable: true })
69093
70533
  AIAgentRunID: string | null;
69094
70534
 
70535
+ @Field({ nullable: true })
70536
+ Warnings: string | null;
70537
+
69095
70538
  @Field(() => RestoreContextInput, { nullable: true })
69096
70539
  RestoreContext___?: RestoreContextInput;
69097
70540
  }
@@ -69141,6 +70584,9 @@ export class UpdateMJProcessRunDetailInput {
69141
70584
  @Field({ nullable: true })
69142
70585
  AIAgentRunID?: string | null;
69143
70586
 
70587
+ @Field({ nullable: true })
70588
+ Warnings?: string | null;
70589
+
69144
70590
  @Field(() => [KeyValuePairInput], { nullable: true })
69145
70591
  OldValues___?: KeyValuePairInput[];
69146
70592
 
@@ -69327,6 +70773,9 @@ export class MJProcessRun_ {
69327
70773
  @Field(() => Boolean, {nullable: true, description: "When 1, this run was a dry-run (compute-only) preview: the per-record diffs were computed and persisted as Process Run Details, but no changes were written back to the target records. When 0, the run applied its changes."})
69328
70774
  DryRun?: boolean;
69329
70775
 
70776
+ @Field({nullable: true, description: "JSON summary of a Feature Pipeline run (FeaturePipelineRunResult); NULL for other work types."})
70777
+ ResultSummary?: string;
70778
+
69330
70779
  @Field({nullable: true})
69331
70780
  @MaxLength(255)
69332
70781
  RecordProcess?: string;
@@ -69425,6 +70874,9 @@ export class CreateMJProcessRunInput {
69425
70874
  @Field(() => Boolean, { nullable: true })
69426
70875
  DryRun?: boolean;
69427
70876
 
70877
+ @Field({ nullable: true })
70878
+ ResultSummary: string | null;
70879
+
69428
70880
  @Field(() => RestoreContextInput, { nullable: true })
69429
70881
  RestoreContext___?: RestoreContextInput;
69430
70882
  }
@@ -69507,6 +70959,9 @@ export class UpdateMJProcessRunInput {
69507
70959
  @Field(() => Boolean, { nullable: true })
69508
70960
  DryRun?: boolean;
69509
70961
 
70962
+ @Field({ nullable: true })
70963
+ ResultSummary?: string | null;
70964
+
69510
70965
  @Field(() => [KeyValuePairInput], { nullable: true })
69511
70966
  OldValues___?: KeyValuePairInput[];
69512
70967
 
@@ -81676,6 +83131,254 @@ export class MJSchemaInfoResolver extends ResolverBase {
81676
83131
 
81677
83132
  }
81678
83133
 
83134
+ //****************************************************************************
83135
+ // ENTITY CLASS for MJ: Scoped Notification Configs
83136
+ //****************************************************************************
83137
+ @ObjectType({ description: "A notification config at one scope: the level between a notification type's defaults and a recipient's preference where an application, a role, a user or the notice's origin can allow or deny a channel. Scoped by the same primary record + secondary dimensions as Scoped Prompt Configs. Resolution: most specific in-scope row wins per channel; at equal specificity Deny beats Allow; a locked Deny caps every level below it, the recipient's preference included." })
83138
+ export class MJScopedNotificationConfig_ {
83139
+ @Field()
83140
+ @MaxLength(36)
83141
+ ID: string;
83142
+
83143
+ @Field({nullable: true, description: "The notification type this config is for."})
83144
+ @MaxLength(36)
83145
+ NotificationTypeID?: string;
83146
+
83147
+ @Field({nullable: true, description: "Why the row exists, for the administrator who finds it."})
83148
+ Description?: string;
83149
+
83150
+ @Field({nullable: true, description: "The entity of the primary scope record (Applications, Roles, Users, Companies, ...). NULL with PrimaryScopeRecordID NULL = a global row."})
83151
+ @MaxLength(36)
83152
+ PrimaryScopeEntityID?: string;
83153
+
83154
+ @Field({nullable: true, description: "The record ID within the primary scope entity this config is scoped to. NULL = global. In scope when it is the caller's primary scope record, the recipient, or a role the recipient holds."})
83155
+ @MaxLength(100)
83156
+ PrimaryScopeRecordID?: string;
83157
+
83158
+ @Field({nullable: true, description: "JSON object of additional scope dimensions, e.g. {\"origin\":\"System\"}. Every dimension named must match the notice's scope for the row to apply. origin is Person, System (the Owner-type user) or Automation."})
83159
+ SecondaryScopes?: string;
83160
+
83161
+ @Field({nullable: true, description: "The in-app channel: Allow, Deny, or NULL to leave it to the next row."})
83162
+ @MaxLength(20)
83163
+ InApp?: string;
83164
+
83165
+ @Field({nullable: true, description: "The email channel: Allow, Deny, or NULL to leave it to the next row."})
83166
+ @MaxLength(20)
83167
+ Email?: string;
83168
+
83169
+ @Field({nullable: true, description: "The SMS channel: Allow, Deny, or NULL to leave it to the next row."})
83170
+ @MaxLength(20)
83171
+ SMS?: string;
83172
+
83173
+ @Field(() => Boolean, {nullable: true, description: "When set, a Deny on this row is absorbing: no less specific row and no recipient preference may turn the channel on. The way a notification type's AllowUserPreference caps the recipient today."})
83174
+ IsLocked?: boolean;
83175
+
83176
+ @Field(() => Int, {nullable: true, description: "Tie-break for resolution. Higher wins when two rows tie on scope specificity and neither denies. Default 0."})
83177
+ Priority?: number;
83178
+
83179
+ @Field({nullable: true, description: "Lifecycle: Active (live), Provisional (staged; eligible), Archived (excluded from resolution)."})
83180
+ @MaxLength(20)
83181
+ Status?: string;
83182
+
83183
+ @Field()
83184
+ _mj__CreatedAt: Date;
83185
+
83186
+ @Field()
83187
+ _mj__UpdatedAt: Date;
83188
+
83189
+ @Field({nullable: true})
83190
+ @MaxLength(100)
83191
+ NotificationType?: string;
83192
+
83193
+ @Field({nullable: true})
83194
+ @MaxLength(255)
83195
+ PrimaryScopeEntity?: string;
83196
+
83197
+ @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
83198
+ ReadableFields___?: string[];
83199
+
83200
+ }
83201
+
83202
+ //****************************************************************************
83203
+ // INPUT TYPE for MJ: Scoped Notification Configs
83204
+ //****************************************************************************
83205
+ @InputType()
83206
+ export class CreateMJScopedNotificationConfigInput {
83207
+ @Field({ nullable: true })
83208
+ ID?: string;
83209
+
83210
+ @Field({ nullable: true })
83211
+ NotificationTypeID?: string;
83212
+
83213
+ @Field({ nullable: true })
83214
+ Description: string | null;
83215
+
83216
+ @Field({ nullable: true })
83217
+ PrimaryScopeEntityID: string | null;
83218
+
83219
+ @Field({ nullable: true })
83220
+ PrimaryScopeRecordID: string | null;
83221
+
83222
+ @Field({ nullable: true })
83223
+ SecondaryScopes: string | null;
83224
+
83225
+ @Field({ nullable: true })
83226
+ InApp: string | null;
83227
+
83228
+ @Field({ nullable: true })
83229
+ Email: string | null;
83230
+
83231
+ @Field({ nullable: true })
83232
+ SMS: string | null;
83233
+
83234
+ @Field(() => Boolean, { nullable: true })
83235
+ IsLocked?: boolean;
83236
+
83237
+ @Field(() => Int, { nullable: true })
83238
+ Priority?: number;
83239
+
83240
+ @Field({ nullable: true })
83241
+ Status?: string;
83242
+
83243
+ @Field(() => RestoreContextInput, { nullable: true })
83244
+ RestoreContext___?: RestoreContextInput;
83245
+ }
83246
+
83247
+
83248
+ //****************************************************************************
83249
+ // INPUT TYPE for MJ: Scoped Notification Configs
83250
+ //****************************************************************************
83251
+ @InputType()
83252
+ export class UpdateMJScopedNotificationConfigInput {
83253
+ @Field()
83254
+ ID: string;
83255
+
83256
+ @Field({ nullable: true })
83257
+ NotificationTypeID?: string;
83258
+
83259
+ @Field({ nullable: true })
83260
+ Description?: string | null;
83261
+
83262
+ @Field({ nullable: true })
83263
+ PrimaryScopeEntityID?: string | null;
83264
+
83265
+ @Field({ nullable: true })
83266
+ PrimaryScopeRecordID?: string | null;
83267
+
83268
+ @Field({ nullable: true })
83269
+ SecondaryScopes?: string | null;
83270
+
83271
+ @Field({ nullable: true })
83272
+ InApp?: string | null;
83273
+
83274
+ @Field({ nullable: true })
83275
+ Email?: string | null;
83276
+
83277
+ @Field({ nullable: true })
83278
+ SMS?: string | null;
83279
+
83280
+ @Field(() => Boolean, { nullable: true })
83281
+ IsLocked?: boolean;
83282
+
83283
+ @Field(() => Int, { nullable: true })
83284
+ Priority?: number;
83285
+
83286
+ @Field({ nullable: true })
83287
+ Status?: string;
83288
+
83289
+ @Field(() => [KeyValuePairInput], { nullable: true })
83290
+ OldValues___?: KeyValuePairInput[];
83291
+
83292
+ @Field(() => RestoreContextInput, { nullable: true })
83293
+ RestoreContext___?: RestoreContextInput;
83294
+ }
83295
+
83296
+ //****************************************************************************
83297
+ // RESOLVER for MJ: Scoped Notification Configs
83298
+ //****************************************************************************
83299
+ @ObjectType()
83300
+ export class RunMJScopedNotificationConfigViewResult {
83301
+ @Field(() => [MJScopedNotificationConfig_])
83302
+ Results: MJScopedNotificationConfig_[];
83303
+
83304
+ @Field(() => String, {nullable: true})
83305
+ UserViewRunID?: string;
83306
+
83307
+ @Field(() => Int, {nullable: true})
83308
+ RowCount: number;
83309
+
83310
+ @Field(() => Int, {nullable: true})
83311
+ TotalRowCount: number;
83312
+
83313
+ @Field(() => Int, {nullable: true})
83314
+ ExecutionTime: number;
83315
+
83316
+ @Field({nullable: true})
83317
+ ErrorMessage?: string;
83318
+
83319
+ @Field(() => Boolean, {nullable: false})
83320
+ Success: boolean;
83321
+ }
83322
+
83323
+ @Resolver(MJScopedNotificationConfig_)
83324
+ export class MJScopedNotificationConfigResolver extends ResolverBase {
83325
+ @Query(() => RunMJScopedNotificationConfigViewResult)
83326
+ async RunMJScopedNotificationConfigViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
83327
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
83328
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
83329
+ }
83330
+
83331
+ @Query(() => RunMJScopedNotificationConfigViewResult)
83332
+ async RunMJScopedNotificationConfigViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
83333
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
83334
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
83335
+ }
83336
+
83337
+ @Query(() => RunMJScopedNotificationConfigViewResult)
83338
+ async RunMJScopedNotificationConfigDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
83339
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
83340
+ input.EntityName = 'MJ: Scoped Notification Configs';
83341
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
83342
+ }
83343
+ @Query(() => MJScopedNotificationConfig_, { nullable: true })
83344
+ async MJScopedNotificationConfig(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJScopedNotificationConfig_ | null> {
83345
+ this.CheckUserReadPermissions('MJ: Scoped Notification Configs', userPayload);
83346
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
83347
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwScopedNotificationConfigs')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Scoped Notification Configs', userPayload, EntityPermissionType.Read, 'AND');
83348
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
83349
+ const result = await this.MapFieldNamesToCodeNames('MJ: Scoped Notification Configs', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
83350
+ return result;
83351
+ }
83352
+
83353
+ @Mutation(() => MJScopedNotificationConfig_)
83354
+ async CreateMJScopedNotificationConfig(
83355
+ @Arg('input', () => CreateMJScopedNotificationConfigInput) input: CreateMJScopedNotificationConfigInput,
83356
+ @Ctx() { providers, userPayload }: AppContext,
83357
+ @PubSub() pubSub: PubSubEngine
83358
+ ) {
83359
+ const provider = GetReadWriteProvider(providers);
83360
+ return this.CreateRecord('MJ: Scoped Notification Configs', input, provider, userPayload, pubSub)
83361
+ }
83362
+
83363
+ @Mutation(() => MJScopedNotificationConfig_)
83364
+ async UpdateMJScopedNotificationConfig(
83365
+ @Arg('input', () => UpdateMJScopedNotificationConfigInput) input: UpdateMJScopedNotificationConfigInput,
83366
+ @Ctx() { providers, userPayload }: AppContext,
83367
+ @PubSub() pubSub: PubSubEngine
83368
+ ) {
83369
+ const provider = GetReadWriteProvider(providers);
83370
+ return this.UpdateRecord('MJ: Scoped Notification Configs', input, provider, userPayload, pubSub);
83371
+ }
83372
+
83373
+ @Mutation(() => MJScopedNotificationConfig_)
83374
+ async DeleteMJScopedNotificationConfig(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
83375
+ const provider = GetReadWriteProvider(providers);
83376
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
83377
+ return this.DeleteRecord('MJ: Scoped Notification Configs', key, options, provider, userPayload, pubSub);
83378
+ }
83379
+
83380
+ }
83381
+
81679
83382
  //****************************************************************************
81680
83383
  // ENTITY CLASS for MJ: Scoped Prompt Configs
81681
83384
  //****************************************************************************
@@ -91857,6 +93560,12 @@ export class MJTheme_ {
91857
93560
  @Field()
91858
93561
  _mj__UpdatedAt: Date;
91859
93562
 
93563
+ @Field({nullable: true, description: "The published sign-in page design as JSON (the LoginDesign shape from @memberjunction/theme-engine): layout, background, colors and the blocks in each login-screen region. The default Active theme's value is served unauthenticated to draw the Explorer login screen. NULL means the stock login screen."})
93564
+ LoginScreen?: string;
93565
+
93566
+ @Field({nullable: true, description: "The sign-in page design being edited in Login Studio, as JSON in the same shape as LoginScreen. Never served publicly; publishing copies it to LoginScreen. NULL means no draft."})
93567
+ LoginScreenDraft?: string;
93568
+
91860
93569
  @Field(() => [String], { nullable: true, description: `Field-level security: when non-null, the fields on this entity the calling user may read. Any other field arriving as null was withheld by the server rather than genuinely empty. Null for callers with no field restrictions.` })
91861
93570
  ReadableFields___?: string[];
91862
93571
 
@@ -91903,6 +93612,12 @@ export class CreateMJThemeInput {
91903
93612
  @Field({ nullable: true })
91904
93613
  CustomCSS: string | null;
91905
93614
 
93615
+ @Field({ nullable: true })
93616
+ LoginScreen: string | null;
93617
+
93618
+ @Field({ nullable: true })
93619
+ LoginScreenDraft: string | null;
93620
+
91906
93621
  @Field(() => RestoreContextInput, { nullable: true })
91907
93622
  RestoreContext___?: RestoreContextInput;
91908
93623
  }
@@ -91949,6 +93664,12 @@ export class UpdateMJThemeInput {
91949
93664
  @Field({ nullable: true })
91950
93665
  CustomCSS?: string | null;
91951
93666
 
93667
+ @Field({ nullable: true })
93668
+ LoginScreen?: string | null;
93669
+
93670
+ @Field({ nullable: true })
93671
+ LoginScreenDraft?: string | null;
93672
+
91952
93673
  @Field(() => [KeyValuePairInput], { nullable: true })
91953
93674
  OldValues___?: KeyValuePairInput[];
91954
93675
 
@@ -94120,7 +95841,7 @@ export class MJUserRoutine_ {
94120
95841
  @MaxLength(20)
94121
95842
  Status?: string;
94122
95843
 
94123
- @Field({nullable: true, description: "Scheduled (always notify per NotifyCondition) or Monitoring (intended for OnChange detection via result hashing)."})
95844
+ @Field({nullable: true, description: "Scheduled (user cron routine), Monitoring (OnChange detection via result hashing), or AgentWake (autonomous agent self-scheduled wake/monitor entry, hidden from the default user cron list)."})
94124
95845
  @MaxLength(20)
94125
95846
  RoutineType?: string;
94126
95847
 
@@ -94141,7 +95862,7 @@ export class MJUserRoutine_ {
94141
95862
  @Field({nullable: true, description: "Optional JSON array of MJ: AI Skills IDs to pre-activate when the routine target is an Agent — threaded as ExecuteAgentParams.requestedSkillIDs so the agent starts each scheduled run with the requested skills' instructions and tools in effect (subject to all availability gates; ActivationMode does not gate this explicit-request path). Ignored for Action/Prompt targets."})
94142
95863
  RequestedSkillIDs?: string;
94143
95864
 
94144
- @Field({nullable: true, description: "Standard cron expression evaluated by the dispatcher to determine when the routine is due."})
95865
+ @Field({nullable: true, description: "Standard cron expression evaluated by the dispatcher for Recurring and Adaptive routines. NULL when ScheduleMode is OneShot."})
94145
95866
  @MaxLength(100)
94146
95867
  CronExpression?: string;
94147
95868
 
@@ -94193,6 +95914,16 @@ export class MJUserRoutine_ {
94193
95914
  @MaxLength(36)
94194
95915
  ConversationID?: string;
94195
95916
 
95917
+ @Field({nullable: true, description: "Scheduling mode: Recurring (fixed cron schedule), OneShot (single future wake at NextRunAt, auto-disables after firing unless rescheduled by the agent), or Adaptive (fallback CronExpression combined with agent-set NextRunAt and event/condition wake gates)."})
95918
+ @MaxLength(20)
95919
+ ScheduleMode?: string;
95920
+
95921
+ @Field({nullable: true, description: "Optional JSON configuration (IRoutineWakeConfiguration) specifying watchedEntities for durable watermark/RecordChange polling and the 3-tier wake gate (Tier 1 SafeExpressionEvaluator, Tier 2 AIDecisionRunner fast decision model, Tier 3 AIPromptRunner metadata prompt)."})
95922
+ WakeConfiguration?: string;
95923
+
95924
+ @Field({nullable: true, description: "Timestamp when the dispatcher last evaluated this routine's watched entities and wake gate conditions."})
95925
+ LastCheckedAt?: Date;
95926
+
94196
95927
  @Field({nullable: true})
94197
95928
  @MaxLength(100)
94198
95929
  User?: string;
@@ -94256,7 +95987,7 @@ export class CreateMJUserRoutineInput {
94256
95987
  RequestedSkillIDs: string | null;
94257
95988
 
94258
95989
  @Field({ nullable: true })
94259
- CronExpression?: string;
95990
+ CronExpression: string | null;
94260
95991
 
94261
95992
  @Field({ nullable: true })
94262
95993
  StartAt: Date | null;
@@ -94294,6 +96025,15 @@ export class CreateMJUserRoutineInput {
94294
96025
  @Field({ nullable: true })
94295
96026
  ConversationID: string | null;
94296
96027
 
96028
+ @Field({ nullable: true })
96029
+ ScheduleMode?: string;
96030
+
96031
+ @Field({ nullable: true })
96032
+ WakeConfiguration: string | null;
96033
+
96034
+ @Field({ nullable: true })
96035
+ LastCheckedAt: Date | null;
96036
+
94297
96037
  @Field(() => RestoreContextInput, { nullable: true })
94298
96038
  RestoreContext___?: RestoreContextInput;
94299
96039
  }
@@ -94341,7 +96081,7 @@ export class UpdateMJUserRoutineInput {
94341
96081
  RequestedSkillIDs?: string | null;
94342
96082
 
94343
96083
  @Field({ nullable: true })
94344
- CronExpression?: string;
96084
+ CronExpression?: string | null;
94345
96085
 
94346
96086
  @Field({ nullable: true })
94347
96087
  StartAt?: Date | null;
@@ -94379,6 +96119,15 @@ export class UpdateMJUserRoutineInput {
94379
96119
  @Field({ nullable: true })
94380
96120
  ConversationID?: string | null;
94381
96121
 
96122
+ @Field({ nullable: true })
96123
+ ScheduleMode?: string;
96124
+
96125
+ @Field({ nullable: true })
96126
+ WakeConfiguration?: string | null;
96127
+
96128
+ @Field({ nullable: true })
96129
+ LastCheckedAt?: Date | null;
96130
+
94382
96131
  @Field(() => [KeyValuePairInput], { nullable: true })
94383
96132
  OldValues___?: KeyValuePairInput[];
94384
96133
 
@@ -95614,6 +97363,9 @@ export class MJUser_ {
95614
97363
  @MaxLength(100)
95615
97364
  UserImageIconClass?: string;
95616
97365
 
97366
+ @Field(() => Boolean, {nullable: true, description: "When true, this user is a template: its configuration (pinned apps, views, settings, dashboards, conversations) is copied to new users through the template clone preset or userHandling.newUserTemplate. Template users are for setting things up, not for everyday use; Explorer shows a banner while one is signed in."})
97367
+ IsTemplate?: boolean;
97368
+
95617
97369
  @Field({nullable: true})
95618
97370
  @MaxLength(101)
95619
97371
  FirstLast?: string;
@@ -95690,6 +97442,9 @@ export class CreateMJUserInput {
95690
97442
  @Field({ nullable: true })
95691
97443
  UserImageIconClass: string | null;
95692
97444
 
97445
+ @Field(() => Boolean, { nullable: true })
97446
+ IsTemplate?: boolean;
97447
+
95693
97448
  @Field(() => RestoreContextInput, { nullable: true })
95694
97449
  RestoreContext___?: RestoreContextInput;
95695
97450
  }
@@ -95742,6 +97497,9 @@ export class UpdateMJUserInput {
95742
97497
  @Field({ nullable: true })
95743
97498
  UserImageIconClass?: string | null;
95744
97499
 
97500
+ @Field(() => Boolean, { nullable: true })
97501
+ IsTemplate?: boolean;
97502
+
95745
97503
  @Field(() => [KeyValuePairInput], { nullable: true })
95746
97504
  OldValues___?: KeyValuePairInput[];
95747
97505