@memberjunction/server 6.2.0-edge.4 → 6.2.0-edge.6

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 (560) hide show
  1. package/README.md +47 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentSessions/SessionJanitor.d.ts +91 -30
  4. package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
  5. package/dist/agentSessions/SessionJanitor.js +311 -81
  6. package/dist/agentSessions/SessionJanitor.js.map +1 -1
  7. package/dist/agentSessions/SessionManager.d.ts +17 -3
  8. package/dist/agentSessions/SessionManager.d.ts.map +1 -1
  9. package/dist/agentSessions/SessionManager.js +44 -10
  10. package/dist/agentSessions/SessionManager.js.map +1 -1
  11. package/dist/apiRoot.d.ts +32 -0
  12. package/dist/apiRoot.d.ts.map +1 -0
  13. package/dist/apiRoot.js +67 -0
  14. package/dist/apiRoot.js.map +1 -0
  15. package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
  16. package/dist/auth/AuthProviderCatalogRouter.js +27 -0
  17. package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
  18. package/dist/auth/LoginScreenEngine.d.ts +22 -0
  19. package/dist/auth/LoginScreenEngine.d.ts.map +1 -0
  20. package/dist/auth/LoginScreenEngine.js +57 -0
  21. package/dist/auth/LoginScreenEngine.js.map +1 -0
  22. package/dist/auth/index.d.ts +1 -0
  23. package/dist/auth/index.d.ts.map +1 -1
  24. package/dist/auth/index.js +52 -10
  25. package/dist/auth/index.js.map +1 -1
  26. package/dist/auth/initializeProviders.d.ts +10 -0
  27. package/dist/auth/initializeProviders.d.ts.map +1 -1
  28. package/dist/auth/initializeProviders.js +37 -1
  29. package/dist/auth/initializeProviders.js.map +1 -1
  30. package/dist/auth/localDevAuth.d.ts +79 -0
  31. package/dist/auth/localDevAuth.d.ts.map +1 -0
  32. package/dist/auth/localDevAuth.js +439 -0
  33. package/dist/auth/localDevAuth.js.map +1 -0
  34. package/dist/auth/magicLink/MagicLinkKeys.d.ts +2 -2
  35. package/dist/auth/magicLink/MagicLinkKeys.d.ts.map +1 -1
  36. package/dist/auth/magicLink/MagicLinkKeys.js +1 -1
  37. package/dist/auth/magicLink/MagicLinkKeys.js.map +1 -1
  38. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  39. package/dist/auth/magicLink/MagicLinkRouter.js +3 -2
  40. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  41. package/dist/auth/magicLink/types.d.ts +12 -0
  42. package/dist/auth/magicLink/types.d.ts.map +1 -1
  43. package/dist/auth/sessionUserClone.d.ts +1 -1
  44. package/dist/auth/sessionUserClone.d.ts.map +1 -1
  45. package/dist/auth/sessionUserClone.js +3 -2
  46. package/dist/auth/sessionUserClone.js.map +1 -1
  47. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts +292 -0
  48. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts.map +1 -0
  49. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js +442 -0
  50. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js.map +1 -0
  51. package/dist/broadcast/index.d.ts +6 -0
  52. package/dist/broadcast/index.d.ts.map +1 -0
  53. package/dist/broadcast/index.js +6 -0
  54. package/dist/broadcast/index.js.map +1 -0
  55. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.d.ts +43 -0
  56. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.d.ts.map +1 -0
  57. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.js +144 -0
  58. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.js.map +1 -0
  59. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.d.ts +46 -0
  60. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.d.ts.map +1 -0
  61. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.js +149 -0
  62. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.js.map +1 -0
  63. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.d.ts +49 -0
  64. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.d.ts.map +1 -0
  65. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.js +131 -0
  66. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.js.map +1 -0
  67. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.d.ts +24 -0
  68. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.d.ts.map +1 -0
  69. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.js +51 -0
  70. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.js.map +1 -0
  71. package/dist/cache.d.ts +3 -2
  72. package/dist/cache.d.ts.map +1 -1
  73. package/dist/cache.js.map +1 -1
  74. package/dist/config.d.ts +632 -22
  75. package/dist/config.d.ts.map +1 -1
  76. package/dist/config.js +104 -4
  77. package/dist/config.js.map +1 -1
  78. package/dist/context.d.ts +3 -1
  79. package/dist/context.d.ts.map +1 -1
  80. package/dist/context.js +29 -8
  81. package/dist/context.js.map +1 -1
  82. package/dist/coreRoutes.d.ts +29 -0
  83. package/dist/coreRoutes.d.ts.map +1 -0
  84. package/dist/coreRoutes.js +156 -0
  85. package/dist/coreRoutes.js.map +1 -0
  86. package/dist/generated/graphql-schemas/__mj.d.ts +1016 -29
  87. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  88. package/dist/generated/graphql-schemas/__mj.js +5125 -434
  89. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  90. package/dist/generic/CacheInvalidationResolver.d.ts +85 -30
  91. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  92. package/dist/generic/CacheInvalidationResolver.js +175 -60
  93. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  94. package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -1
  95. package/dist/generic/OrphanedConversationDetailReconciler.js +2 -0
  96. package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
  97. package/dist/generic/PubSubManager.d.ts +10 -0
  98. package/dist/generic/PubSubManager.d.ts.map +1 -1
  99. package/dist/generic/PubSubManager.js +44 -1
  100. package/dist/generic/PubSubManager.js.map +1 -1
  101. package/dist/generic/PushStatusResolver.d.ts +39 -6
  102. package/dist/generic/PushStatusResolver.d.ts.map +1 -1
  103. package/dist/generic/PushStatusResolver.js +94 -12
  104. package/dist/generic/PushStatusResolver.js.map +1 -1
  105. package/dist/generic/ResolverBase.d.ts +168 -69
  106. package/dist/generic/ResolverBase.d.ts.map +1 -1
  107. package/dist/generic/ResolverBase.js +464 -405
  108. package/dist/generic/ResolverBase.js.map +1 -1
  109. package/dist/generic/RunViewResolver.d.ts +11 -3
  110. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  111. package/dist/generic/RunViewResolver.js +91 -13
  112. package/dist/generic/RunViewResolver.js.map +1 -1
  113. package/dist/generic/actionOutputFieldSecurity.d.ts +26 -0
  114. package/dist/generic/actionOutputFieldSecurity.d.ts.map +1 -0
  115. package/dist/generic/actionOutputFieldSecurity.js +47 -0
  116. package/dist/generic/actionOutputFieldSecurity.js.map +1 -0
  117. package/dist/generic/fieldSecurityTransport.d.ts +30 -0
  118. package/dist/generic/fieldSecurityTransport.d.ts.map +1 -0
  119. package/dist/generic/fieldSecurityTransport.js +30 -0
  120. package/dist/generic/fieldSecurityTransport.js.map +1 -0
  121. package/dist/globalCors.d.ts +33 -0
  122. package/dist/globalCors.d.ts.map +1 -0
  123. package/dist/globalCors.js +58 -0
  124. package/dist/globalCors.js.map +1 -0
  125. package/dist/index.d.ts +14 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +230 -222
  128. package/dist/index.js.map +1 -1
  129. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  130. package/dist/integration/CustomColumnPromoter.js +6 -1
  131. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  132. package/dist/logging/variablesLoggingMiddleware.d.ts +12 -0
  133. package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
  134. package/dist/logging/variablesLoggingMiddleware.js +50 -1
  135. package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
  136. package/dist/multiTenancy/index.d.ts.map +1 -1
  137. package/dist/multiTenancy/index.js +22 -2
  138. package/dist/multiTenancy/index.js.map +1 -1
  139. package/dist/realtimeSessions/RealtimeSessionVerificationService.d.ts.map +1 -1
  140. package/dist/realtimeSessions/RealtimeSessionVerificationService.js +2 -1
  141. package/dist/realtimeSessions/RealtimeSessionVerificationService.js.map +1 -1
  142. package/dist/realtimeSessions/RealtimeVerifyRouter.d.ts.map +1 -1
  143. package/dist/realtimeSessions/RealtimeVerifyRouter.js +2 -1
  144. package/dist/realtimeSessions/RealtimeVerifyRouter.js.map +1 -1
  145. package/dist/realtimeSessions/RecordingAssemblyScheduler.d.ts +100 -0
  146. package/dist/realtimeSessions/RecordingAssemblyScheduler.d.ts.map +1 -0
  147. package/dist/realtimeSessions/RecordingAssemblyScheduler.js +173 -0
  148. package/dist/realtimeSessions/RecordingAssemblyScheduler.js.map +1 -0
  149. package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts.map +1 -1
  150. package/dist/realtimeSessions/SessionVerificationPortsBase.js +1 -0
  151. package/dist/realtimeSessions/SessionVerificationPortsBase.js.map +1 -1
  152. package/dist/realtimeSessions/index.d.ts +2 -0
  153. package/dist/realtimeSessions/index.d.ts.map +1 -1
  154. package/dist/realtimeSessions/index.js +2 -0
  155. package/dist/realtimeSessions/index.js.map +1 -1
  156. package/dist/realtimeSessions/ownedRealtimeSession.d.ts +32 -0
  157. package/dist/realtimeSessions/ownedRealtimeSession.d.ts.map +1 -0
  158. package/dist/realtimeSessions/ownedRealtimeSession.js +56 -0
  159. package/dist/realtimeSessions/ownedRealtimeSession.js.map +1 -0
  160. package/dist/realtimeSessions/sessionAccess.d.ts +91 -8
  161. package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -1
  162. package/dist/realtimeSessions/sessionAccess.js +127 -20
  163. package/dist/realtimeSessions/sessionAccess.js.map +1 -1
  164. package/dist/realtimeSessions/sessionConfigStamps.js +1 -1
  165. package/dist/realtimeSessions/sessionConfigStamps.js.map +1 -1
  166. package/dist/realtimeSessions/subscriptionAuthorization.d.ts.map +1 -1
  167. package/dist/realtimeSessions/subscriptionAuthorization.js +5 -2
  168. package/dist/realtimeSessions/subscriptionAuthorization.js.map +1 -1
  169. package/dist/realtimeSessions/verificationWorkflow.d.ts +2 -0
  170. package/dist/realtimeSessions/verificationWorkflow.d.ts.map +1 -1
  171. package/dist/realtimeSessions/verificationWorkflow.js +1 -1
  172. package/dist/realtimeSessions/verificationWorkflow.js.map +1 -1
  173. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
  174. package/dist/realtimeWidget/WidgetRouter.js +19 -3
  175. package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
  176. package/dist/realtimeWidget/WidgetSessionService.d.ts +67 -7
  177. package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -1
  178. package/dist/realtimeWidget/WidgetSessionService.js +201 -19
  179. package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
  180. package/dist/realtimeWidget/host-identity.d.ts +1 -1
  181. package/dist/realtimeWidget/host-identity.js +1 -1
  182. package/dist/realtimeWidget/widgetCore.d.ts +20 -1
  183. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
  184. package/dist/realtimeWidget/widgetCore.js +17 -1
  185. package/dist/realtimeWidget/widgetCore.js.map +1 -1
  186. package/dist/realtimeWidget/widgetGuestElevation.d.ts +1 -1
  187. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  188. package/dist/realtimeWidget/widgetGuestElevation.js +2 -1
  189. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  190. package/dist/resolvers/ActionResolver.d.ts +19 -1
  191. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  192. package/dist/resolvers/ActionResolver.js +63 -12
  193. package/dist/resolvers/ActionResolver.js.map +1 -1
  194. package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
  195. package/dist/resolvers/AdhocQueryResolver.js +1 -0
  196. package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
  197. package/dist/resolvers/AgentRunStatusPublisher.d.ts +18 -4
  198. package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -1
  199. package/dist/resolvers/AgentRunStatusPublisher.js +32 -8
  200. package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -1
  201. package/dist/resolvers/AgentSessionResolver.d.ts +10 -4
  202. package/dist/resolvers/AgentSessionResolver.d.ts.map +1 -1
  203. package/dist/resolvers/AgentSessionResolver.js +40 -17
  204. package/dist/resolvers/AgentSessionResolver.js.map +1 -1
  205. package/dist/resolvers/ArtifactFileResolver.d.ts +5 -1
  206. package/dist/resolvers/ArtifactFileResolver.d.ts.map +1 -1
  207. package/dist/resolvers/ArtifactFileResolver.js +9 -7
  208. package/dist/resolvers/ArtifactFileResolver.js.map +1 -1
  209. package/dist/resolvers/ConversationRunEventsResolver.d.ts +8 -4
  210. package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -1
  211. package/dist/resolvers/ConversationRunEventsResolver.js +6 -6
  212. package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -1
  213. package/dist/resolvers/DatasetResolver.d.ts +24 -3
  214. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  215. package/dist/resolvers/DatasetResolver.js +57 -8
  216. package/dist/resolvers/DatasetResolver.js.map +1 -1
  217. package/dist/resolvers/EntityCommunicationsResolver.d.ts +13 -1
  218. package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
  219. package/dist/resolvers/EntityCommunicationsResolver.js +50 -14
  220. package/dist/resolvers/EntityCommunicationsResolver.js.map +1 -1
  221. package/dist/resolvers/EntityRecordNameResolver.d.ts +2 -1
  222. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
  223. package/dist/resolvers/EntityRecordNameResolver.js +3 -2
  224. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  225. package/dist/resolvers/FetchEntityVectorsResolver.d.ts +46 -3
  226. package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
  227. package/dist/resolvers/FetchEntityVectorsResolver.js +211 -50
  228. package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
  229. package/dist/resolvers/FileCategoryResolver.d.ts.map +1 -1
  230. package/dist/resolvers/FileCategoryResolver.js +1 -0
  231. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  232. package/dist/resolvers/FileResolver.d.ts +87 -11
  233. package/dist/resolvers/FileResolver.d.ts.map +1 -1
  234. package/dist/resolvers/FileResolver.js +292 -105
  235. package/dist/resolvers/FileResolver.js.map +1 -1
  236. package/dist/resolvers/GetDataContextDataResolver.d.ts +33 -7
  237. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  238. package/dist/resolvers/GetDataContextDataResolver.js +117 -38
  239. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  240. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  241. package/dist/resolvers/GetDataResolver.js +6 -3
  242. package/dist/resolvers/GetDataResolver.js.map +1 -1
  243. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
  244. package/dist/resolvers/IntegrationDiscoveryResolver.js +49 -9
  245. package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
  246. package/dist/resolvers/MergeRecordsResolver.d.ts +8 -1
  247. package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
  248. package/dist/resolvers/MergeRecordsResolver.js +31 -3
  249. package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
  250. package/dist/resolvers/PipelineProgressResolver.d.ts +6 -0
  251. package/dist/resolvers/PipelineProgressResolver.d.ts.map +1 -1
  252. package/dist/resolvers/PipelineProgressResolver.js +5 -3
  253. package/dist/resolvers/PipelineProgressResolver.js.map +1 -1
  254. package/dist/resolvers/QueryResolver.d.ts +2 -0
  255. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  256. package/dist/resolvers/QueryResolver.js +33 -6
  257. package/dist/resolvers/QueryResolver.js.map +1 -1
  258. package/dist/resolvers/QuerySystemUserResolver.d.ts +2 -0
  259. package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
  260. package/dist/resolvers/QuerySystemUserResolver.js +15 -6
  261. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  262. package/dist/resolvers/RSUResolver.d.ts.map +1 -1
  263. package/dist/resolvers/RSUResolver.js +12 -0
  264. package/dist/resolvers/RSUResolver.js.map +1 -1
  265. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +18 -10
  266. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  267. package/dist/resolvers/RealtimeClientSessionResolver.js +92 -54
  268. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  269. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  270. package/dist/resolvers/RemoteBrowserActionResolver.js +11 -9
  271. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  272. package/dist/resolvers/RunAIAgentResolver.d.ts +56 -8
  273. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  274. package/dist/resolvers/RunAIAgentResolver.js +241 -67
  275. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  276. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  277. package/dist/resolvers/RunTemplateResolver.js +4 -4
  278. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  279. package/dist/resolvers/RunTestResolver.d.ts.map +1 -1
  280. package/dist/resolvers/RunTestResolver.js +3 -1
  281. package/dist/resolvers/RunTestResolver.js.map +1 -1
  282. package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts +12 -1
  283. package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts.map +1 -1
  284. package/dist/resolvers/SearchKnowledgeStreamResolver.js +15 -2
  285. package/dist/resolvers/SearchKnowledgeStreamResolver.js.map +1 -1
  286. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  287. package/dist/resolvers/SqlLoggingConfigResolver.js +2 -3
  288. package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
  289. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  290. package/dist/resolvers/SyncDataResolver.js +4 -0
  291. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  292. package/dist/resolvers/TaskGraphFrameResolver.d.ts +2 -1
  293. package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
  294. package/dist/resolvers/TaskGraphFrameResolver.js +28 -1
  295. package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
  296. package/dist/resolvers/TestQuerySQLResolver.d.ts +24 -0
  297. package/dist/resolvers/TestQuerySQLResolver.d.ts.map +1 -1
  298. package/dist/resolvers/TestQuerySQLResolver.js +66 -13
  299. package/dist/resolvers/TestQuerySQLResolver.js.map +1 -1
  300. package/dist/resolvers/TransactionGroupResolver.d.ts +34 -2
  301. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  302. package/dist/resolvers/TransactionGroupResolver.js +150 -27
  303. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  304. package/dist/resolvers/UserViewResolver.d.ts +1 -1
  305. package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
  306. package/dist/resolvers/UserViewResolver.js +2 -1
  307. package/dist/resolvers/UserViewResolver.js.map +1 -1
  308. package/dist/resolvers/agent-run-data-guard.d.ts +31 -0
  309. package/dist/resolvers/agent-run-data-guard.d.ts.map +1 -0
  310. package/dist/resolvers/agent-run-data-guard.js +72 -0
  311. package/dist/resolvers/agent-run-data-guard.js.map +1 -0
  312. package/dist/rest/EntityCRUDHandler.d.ts +6 -0
  313. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  314. package/dist/rest/EntityCRUDHandler.js +19 -5
  315. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  316. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  317. package/dist/rest/RESTEndpointHandler.js +8 -5
  318. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  319. package/dist/rest/RealtimeRecordingHandler.d.ts +49 -0
  320. package/dist/rest/RealtimeRecordingHandler.d.ts.map +1 -0
  321. package/dist/rest/RealtimeRecordingHandler.js +383 -0
  322. package/dist/rest/RealtimeRecordingHandler.js.map +1 -0
  323. package/dist/rest/ViewOperationsHandler.d.ts +9 -1
  324. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  325. package/dist/rest/ViewOperationsHandler.js +43 -17
  326. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  327. package/dist/rest/setupRESTEndpoints.d.ts +6 -0
  328. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  329. package/dist/rest/setupRESTEndpoints.js +6 -0
  330. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  331. package/dist/serverExtensionReservedRoots.d.ts +12 -10
  332. package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
  333. package/dist/serverExtensionReservedRoots.js +14 -17
  334. package/dist/serverExtensionReservedRoots.js.map +1 -1
  335. package/dist/serverRoleConfigUnits.d.ts +29 -0
  336. package/dist/serverRoleConfigUnits.d.ts.map +1 -0
  337. package/dist/serverRoleConfigUnits.js +33 -0
  338. package/dist/serverRoleConfigUnits.js.map +1 -0
  339. package/dist/services/MJStorageBlobStore.d.ts +8 -1
  340. package/dist/services/MJStorageBlobStore.d.ts.map +1 -1
  341. package/dist/services/MJStorageBlobStore.js +25 -19
  342. package/dist/services/MJStorageBlobStore.js.map +1 -1
  343. package/dist/services/StartTaskGraphDispatcher.js +2 -2
  344. package/dist/services/StartTaskGraphDispatcher.js.map +1 -1
  345. package/dist/services/TaskGraphActionRunner.d.ts +5 -3
  346. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  347. package/dist/services/TaskGraphActionRunner.js +27 -5
  348. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  349. package/dist/services/TaskGraphAgentRunner.d.ts +14 -2
  350. package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
  351. package/dist/services/TaskGraphAgentRunner.js +157 -9
  352. package/dist/services/TaskGraphAgentRunner.js.map +1 -1
  353. package/dist/services/TaskGraphContinuationDeliverer.d.ts +59 -2
  354. package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
  355. package/dist/services/TaskGraphContinuationDeliverer.js +626 -16
  356. package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
  357. package/dist/sharedCache.d.ts.map +1 -1
  358. package/dist/sharedCache.js +3 -0
  359. package/dist/sharedCache.js.map +1 -1
  360. package/dist/types.d.ts +23 -1
  361. package/dist/types.d.ts.map +1 -1
  362. package/dist/types.js.map +1 -1
  363. package/package.json +99 -98
  364. package/src/__tests__/ActionResolver.fieldSecurity.test.ts +237 -0
  365. package/src/__tests__/AdhocQueryResolver.dialect.test.ts +137 -0
  366. package/src/__tests__/AgentRunStatusPublisher.test.ts +49 -0
  367. package/src/__tests__/AgentSessionResolver.ownership.test.ts +137 -0
  368. package/src/__tests__/CustomColumnPromoterOnePass.test.ts +15 -1
  369. package/src/__tests__/DatasetResolver.itemFilters.test.ts +201 -0
  370. package/src/__tests__/EntityCommunicationsResolver.actingUser.test.ts +151 -0
  371. package/src/__tests__/EntityRecordNameResolver.rowSecurity.test.ts +152 -0
  372. package/src/__tests__/EvolutionActsOnWhatItDetects.test.ts +113 -0
  373. package/src/__tests__/FetchEntityVectorsResolver.test.ts +369 -18
  374. package/src/__tests__/FileResolver.fieldSecurity.test.ts +82 -0
  375. package/src/__tests__/FileResolver.storageAccess.test.ts +562 -0
  376. package/src/__tests__/GetDataContextDataResolver.sqlItems.test.ts +416 -0
  377. package/src/__tests__/ListOperationsResolver.adhocScreen.test.ts +137 -0
  378. package/src/__tests__/LoginScreenEngine.test.ts +86 -0
  379. package/src/__tests__/MJStorageBlobStore.storageGate.test.ts +63 -0
  380. package/src/__tests__/PipelineProgressResolver.filter.test.ts +58 -0
  381. package/src/__tests__/QuerySystemUserResolver.fieldSecurity.test.ts +49 -0
  382. package/src/__tests__/RESTEndpointHandler.test.ts +25 -0
  383. package/src/__tests__/RealtimeClientSessionResolver.configTamper.test.ts +23 -3
  384. package/src/__tests__/RealtimeClientSessionResolver.test.ts +324 -46
  385. package/src/__tests__/RecordingAssemblyScheduler.test.ts +178 -0
  386. package/src/__tests__/RemoteBrowserActionResolver.ownership.test.ts +98 -0
  387. package/src/__tests__/ResolverBase.adhocReadScope.test.ts +133 -2
  388. package/src/__tests__/ResolverBase.balancedClause.test.ts +155 -0
  389. package/src/__tests__/ResolverBase.clauseUnscopedRead.test.ts +127 -0
  390. package/src/__tests__/ResolverBase.clientOldValues.test.ts +243 -7
  391. package/src/__tests__/ResolverBase.deleteReturnProjection.test.ts +52 -0
  392. package/src/__tests__/ResolverBase.entityMessageRelay.test.ts +176 -0
  393. package/src/__tests__/ResolverBase.filterEscaping.test.ts +5 -2
  394. package/src/__tests__/ResolverBase.includeBinaryFields.test.ts +23 -1
  395. package/src/__tests__/ResolverBase.publishStatusUpdate.test.ts +68 -0
  396. package/src/__tests__/ResolverBase.userViewCacheAndDedup.test.ts +130 -0
  397. package/src/__tests__/RunAIAgentResolver.branch.test.ts +69 -13
  398. package/src/__tests__/RunAIAgentResolver.conversationWriter.test.ts +210 -0
  399. package/src/__tests__/RunAIAgentResolver.fireAndForgetCompletion.test.ts +209 -0
  400. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +20 -28
  401. package/src/__tests__/RunAIAgentResolver.runDataGuard.test.ts +264 -0
  402. package/src/__tests__/RunAIAgentResolver.serverReply.test.ts +358 -0
  403. package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +4 -1
  404. package/src/__tests__/RunTemplateResolver.test.ts +35 -2
  405. package/src/__tests__/RunViewResolver.cacheCheckForwarding.test.ts +11 -0
  406. package/src/__tests__/RunViewResolver.cacheCheckScreen.test.ts +165 -0
  407. package/src/__tests__/SearchKnowledgeStreamResolver.test.ts +161 -0
  408. package/src/__tests__/SessionJanitor.test.ts +365 -10
  409. package/src/__tests__/SessionManager.test.ts +122 -0
  410. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +25 -0
  411. package/src/__tests__/TaskGraphAgentRunner.test.ts +266 -0
  412. package/src/__tests__/TaskGraphContinuationDeliverer.test.ts +468 -23
  413. package/src/__tests__/TaskGraphFrameResolver.test.ts +22 -0
  414. package/src/__tests__/TestQuerySQLResolver.test.ts +274 -0
  415. package/src/__tests__/TransactionGroupResolver.fieldSecurity.test.ts +199 -0
  416. package/src/__tests__/TransactionGroupResolver.refusals.test.ts +98 -1
  417. package/src/__tests__/UpdateMJDataContextItem.oldValues.test.ts +220 -0
  418. package/src/__tests__/UserViewResolver.updateWhereClause.test.ts +15 -0
  419. package/src/__tests__/ViewOperationsHandler.clauseScreen.test.ts +157 -0
  420. package/src/__tests__/ViewOperationsHandler.test.ts +7 -2
  421. package/src/__tests__/WidgetSessionService.test.ts +583 -4
  422. package/src/__tests__/agent-run-data-guard.test.ts +130 -0
  423. package/src/__tests__/apiRootBoot.test.ts +202 -0
  424. package/src/__tests__/buildMagicLinkSessionUser.test.ts +96 -0
  425. package/src/__tests__/cacheBroadcastProviders.test.ts +403 -0
  426. package/src/__tests__/cacheInvalidationRecordData.test.ts +109 -0
  427. package/src/__tests__/conversationRunEvents.test.ts +56 -14
  428. package/src/__tests__/fieldSecurityFixtures.ts +91 -0
  429. package/src/__tests__/globalCors.test.ts +217 -0
  430. package/src/__tests__/localDevAuth.test.ts +196 -0
  431. package/src/__tests__/multiTenancy.postgresRewrite.test.ts +181 -0
  432. package/src/__tests__/multiTenancy.security.test.ts +51 -0
  433. package/src/__tests__/multiTenancy.test.ts +1 -1
  434. package/src/__tests__/orphanedConversationDetailReconciler.test.ts +10 -0
  435. package/src/__tests__/ownedRealtimeSession.test.ts +39 -0
  436. package/src/__tests__/pushStatusResolver.filter.test.ts +64 -1
  437. package/src/__tests__/realtimeRecordingHandler.test.ts +669 -0
  438. package/src/__tests__/realtimeSessions/RealtimeSessionEventsResolver.test.ts +29 -1
  439. package/src/__tests__/realtimeSessions/ownedRealtimeSession.anonymous.test.ts +31 -0
  440. package/src/__tests__/realtimeSessions/ownedRealtimeSession.namedScoped.test.ts +37 -0
  441. package/src/__tests__/realtimeSessions/sessionAccess.test.ts +146 -7
  442. package/src/__tests__/realtimeSessions/sessionConfigStamps.test.ts +1 -1
  443. package/src/__tests__/realtimeSessions/verificationWorkflow.test.ts +25 -4
  444. package/src/__tests__/resolverBase.cloudEventChangedFields.test.ts +157 -0
  445. package/src/__tests__/resolverBase.fieldSecurityTransport.test.ts +222 -0
  446. package/src/__tests__/resolverBase.fls.test.ts +146 -97
  447. package/src/__tests__/restTransport.fieldSecurity.test.ts +148 -0
  448. package/src/__tests__/runParamsTimeZone.test.ts +179 -0
  449. package/src/__tests__/runStreams.fieldSecurity.test.ts +100 -0
  450. package/src/__tests__/runViewProperties.test.ts +114 -0
  451. package/src/__tests__/scalabilityBenchmarks.test.ts +765 -0
  452. package/src/__tests__/scalabilityDatabaseIntegration.test.ts +207 -0
  453. package/src/__tests__/serverExtensionHostOverlay.test.ts +66 -0
  454. package/src/__tests__/serverExtensionReservedRoots.test.ts +11 -98
  455. package/src/__tests__/sessionUserClone.test.ts +5 -1
  456. package/src/__tests__/sharedCache.test.ts +5 -3
  457. package/src/__tests__/startupSweepOrder.test.ts +40 -0
  458. package/src/__tests__/unifiedAuth.test.ts +28 -0
  459. package/src/__tests__/widgetGuestElevation.test.ts +2 -0
  460. package/src/agentSessions/SessionJanitor.ts +369 -93
  461. package/src/agentSessions/SessionManager.ts +45 -10
  462. package/src/apiRoot.ts +78 -0
  463. package/src/auth/AuthProviderCatalogRouter.ts +29 -0
  464. package/src/auth/LoginScreenEngine.ts +50 -0
  465. package/src/auth/index.ts +57 -12
  466. package/src/auth/initializeProviders.ts +43 -1
  467. package/src/auth/localDevAuth.ts +528 -0
  468. package/src/auth/magicLink/MagicLinkKeys.ts +2 -2
  469. package/src/auth/magicLink/MagicLinkRouter.ts +3 -2
  470. package/src/auth/magicLink/types.ts +10 -0
  471. package/src/auth/sessionUserClone.ts +3 -2
  472. package/src/broadcast/BaseCacheInvalidationBroadcastProvider.ts +674 -0
  473. package/src/broadcast/index.ts +5 -0
  474. package/src/broadcast/providers/AWSIoTCoreBroadcastProvider.ts +180 -0
  475. package/src/broadcast/providers/AzureWebPubSubBroadcastProvider.ts +182 -0
  476. package/src/broadcast/providers/GCPPubSubBroadcastProvider.ts +169 -0
  477. package/src/broadcast/providers/SequencedRoleBucketBroadcastProvider.ts +57 -0
  478. package/src/cache.ts +2 -1
  479. package/src/config.ts +115 -5
  480. package/src/context.ts +32 -8
  481. package/src/coreRoutes.ts +181 -0
  482. package/src/generated/graphql-schemas/__mj.ts +3684 -284
  483. package/src/generic/CacheInvalidationResolver.ts +172 -60
  484. package/src/generic/OrphanedConversationDetailReconciler.ts +4 -2
  485. package/src/generic/PubSubManager.ts +54 -1
  486. package/src/generic/PushStatusResolver.ts +109 -12
  487. package/src/generic/ResolverBase.ts +540 -431
  488. package/src/generic/RunViewResolver.ts +97 -15
  489. package/src/generic/actionOutputFieldSecurity.ts +75 -0
  490. package/src/generic/fieldSecurityTransport.ts +62 -0
  491. package/src/globalCors.ts +71 -0
  492. package/src/index.ts +239 -238
  493. package/src/integration/CustomColumnPromoter.ts +6 -1
  494. package/src/logging/variablesLoggingMiddleware.ts +59 -3
  495. package/src/multiTenancy/index.ts +24 -2
  496. package/src/realtimeSessions/README.md +7 -3
  497. package/src/realtimeSessions/RealtimeSessionVerificationService.ts +2 -1
  498. package/src/realtimeSessions/RealtimeVerifyRouter.ts +2 -1
  499. package/src/realtimeSessions/RecordingAssemblyScheduler.ts +234 -0
  500. package/src/realtimeSessions/SessionVerificationPortsBase.ts +1 -0
  501. package/src/realtimeSessions/index.ts +2 -0
  502. package/src/realtimeSessions/ownedRealtimeSession.ts +69 -0
  503. package/src/realtimeSessions/sessionAccess.ts +183 -23
  504. package/src/realtimeSessions/sessionConfigStamps.ts +1 -1
  505. package/src/realtimeSessions/subscriptionAuthorization.ts +4 -2
  506. package/src/realtimeSessions/verificationWorkflow.ts +3 -1
  507. package/src/realtimeWidget/WidgetRouter.ts +22 -4
  508. package/src/realtimeWidget/WidgetSessionService.ts +252 -17
  509. package/src/realtimeWidget/host-identity.ts +1 -1
  510. package/src/realtimeWidget/widgetCore.ts +30 -1
  511. package/src/realtimeWidget/widgetGuestElevation.ts +2 -1
  512. package/src/resolvers/ActionResolver.ts +78 -15
  513. package/src/resolvers/AdhocQueryResolver.ts +1 -0
  514. package/src/resolvers/AgentRunStatusPublisher.ts +36 -8
  515. package/src/resolvers/AgentSessionResolver.ts +46 -18
  516. package/src/resolvers/ArtifactFileResolver.ts +9 -8
  517. package/src/resolvers/ConversationRunEventsResolver.ts +15 -11
  518. package/src/resolvers/DatasetResolver.ts +70 -10
  519. package/src/resolvers/EntityCommunicationsResolver.ts +56 -15
  520. package/src/resolvers/EntityRecordNameResolver.ts +3 -2
  521. package/src/resolvers/FetchEntityVectorsResolver.ts +248 -55
  522. package/src/resolvers/FileCategoryResolver.ts +1 -0
  523. package/src/resolvers/FileResolver.ts +334 -109
  524. package/src/resolvers/GetDataContextDataResolver.ts +139 -41
  525. package/src/resolvers/GetDataResolver.ts +6 -3
  526. package/src/resolvers/IntegrationDiscoveryResolver.ts +53 -9
  527. package/src/resolvers/MergeRecordsResolver.ts +23 -2
  528. package/src/resolvers/PipelineProgressResolver.ts +12 -3
  529. package/src/resolvers/QueryResolver.ts +31 -6
  530. package/src/resolvers/QuerySystemUserResolver.ts +15 -6
  531. package/src/resolvers/RSUResolver.ts +12 -0
  532. package/src/resolvers/RealtimeClientSessionResolver.ts +114 -66
  533. package/src/resolvers/RemoteBrowserActionResolver.ts +15 -10
  534. package/src/resolvers/RunAIAgentResolver.ts +296 -85
  535. package/src/resolvers/RunTemplateResolver.ts +6 -4
  536. package/src/resolvers/RunTestResolver.ts +3 -1
  537. package/src/resolvers/SearchKnowledgeStreamResolver.ts +19 -3
  538. package/src/resolvers/SqlLoggingConfigResolver.ts +2 -4
  539. package/src/resolvers/SyncDataResolver.ts +4 -0
  540. package/src/resolvers/TaskGraphFrameResolver.ts +33 -1
  541. package/src/resolvers/TestQuerySQLResolver.ts +69 -13
  542. package/src/resolvers/TransactionGroupResolver.ts +185 -30
  543. package/src/resolvers/UserViewResolver.ts +2 -1
  544. package/src/resolvers/__tests__/GetDataResolver.validation.test.ts +95 -0
  545. package/src/resolvers/__tests__/MergeRecordsResolver.test.ts +43 -0
  546. package/src/resolvers/agent-run-data-guard.ts +89 -0
  547. package/src/rest/EntityCRUDHandler.ts +22 -5
  548. package/src/rest/RESTEndpointHandler.ts +8 -5
  549. package/src/rest/RealtimeRecordingHandler.ts +467 -0
  550. package/src/rest/ViewOperationsHandler.ts +52 -18
  551. package/src/rest/setupRESTEndpoints.ts +6 -0
  552. package/src/serverExtensionReservedRoots.ts +14 -17
  553. package/src/serverRoleConfigUnits.ts +48 -0
  554. package/src/services/MJStorageBlobStore.ts +31 -30
  555. package/src/services/StartTaskGraphDispatcher.ts +2 -2
  556. package/src/services/TaskGraphActionRunner.ts +25 -5
  557. package/src/services/TaskGraphAgentRunner.ts +188 -11
  558. package/src/services/TaskGraphContinuationDeliverer.ts +738 -16
  559. package/src/sharedCache.ts +3 -0
  560. package/src/types.ts +23 -1
@@ -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, 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, 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';
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, MJCalendarEventLinkEntity, MJCalendarSyncStateEntity, MJClusterAnalysisEntity, MJClusterAnalysisClusterEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationObjectFieldEntity, MJCompanyIntegrationObjectEntity, 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, MJEntityAlternateBaseViewEntity, 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."})
@@ -6503,6 +6531,9 @@ export class MJAIAgentRun_ {
6503
6531
  @Field(() => Int, {nullable: true, description: "How many task-graph continuations led to this run. 0 (the default, and the value every ordinary run carries) means the run was not started by a finished graph. A run started because a graph declared continuation='reinvoke' records its source graph's depth plus one, and any graph that run subsequently submits inherits that value — which is what allows MAX_REINVOKE_DEPTH to bound a chain of graph-reinvokes-agent-emits-graph. Without a durable value here the cap could never fire, because a reinvoked agent has no other way to learn it was a continuation. Distinct from ParentRunID, which tracks sub-agent lineage within a single turn; a continuation is a NEW top-level turn caused by work that already completed."})
6504
6532
  ContinuationDepth?: number;
6505
6533
 
6534
+ @Field({nullable: true, description: "The run's bound action parameters (ExecuteAgentParams.boundActionParams) as JSON, keyed by Action ID and then parameter name. Written when the run starts, so a run resumed from a stored request applies the same bindings. Null when the run had none."})
6535
+ BoundActionParams?: string;
6536
+
6506
6537
  @Field({nullable: true})
6507
6538
  @MaxLength(255)
6508
6539
  Agent?: string;
@@ -6730,6 +6761,9 @@ export class CreateMJAIAgentRunInput {
6730
6761
  @Field(() => Int, { nullable: true })
6731
6762
  ContinuationDepth?: number;
6732
6763
 
6764
+ @Field({ nullable: true })
6765
+ BoundActionParams: string | null;
6766
+
6733
6767
  @Field(() => RestoreContextInput, { nullable: true })
6734
6768
  RestoreContext___?: RestoreContextInput;
6735
6769
  }
@@ -6893,6 +6927,9 @@ export class UpdateMJAIAgentRunInput {
6893
6927
  @Field(() => Int, { nullable: true })
6894
6928
  ContinuationDepth?: number;
6895
6929
 
6930
+ @Field({ nullable: true })
6931
+ BoundActionParams?: string | null;
6932
+
6896
6933
  @Field(() => [KeyValuePairInput], { nullable: true })
6897
6934
  OldValues___?: KeyValuePairInput[];
6898
6935
 
@@ -7963,6 +8000,214 @@ export class MJAIAgentSessionChannelResolver extends ResolverBase {
7963
8000
 
7964
8001
  }
7965
8002
 
8003
+ //****************************************************************************
8004
+ // ENTITY CLASS for MJ: AI Agent Session Recording Shards
8005
+ //****************************************************************************
8006
+ @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." })
8007
+ export class MJAIAgentSessionRecordingShard_ {
8008
+ @Field()
8009
+ @MaxLength(36)
8010
+ ID: string;
8011
+
8012
+ @Field({nullable: true})
8013
+ @MaxLength(36)
8014
+ AgentSessionID?: string;
8015
+
8016
+ @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."})
8017
+ Index?: number;
8018
+
8019
+ @Field(() => Int, {nullable: true, description: "Sample position (48 kHz) where this shard's audio starts in the recording."})
8020
+ StartSample?: number;
8021
+
8022
+ @Field(() => Int, {nullable: true, description: "Number of audio samples (48 kHz) the shard covers."})
8023
+ SampleCount?: number;
8024
+
8025
+ @Field(() => Int, {nullable: true, description: "Size of Data in bytes."})
8026
+ Bytes?: number;
8027
+
8028
+ @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."})
8029
+ @MaxLength(64)
8030
+ Sha256?: string;
8031
+
8032
+ @Field({nullable: true, description: "The shard bytes as uploaded (MJOPUS1 header followed by length-prefixed Opus packets)."})
8033
+ Data?: string;
8034
+
8035
+ @Field({nullable: true, description: "When the server first stored this shard."})
8036
+ ReceivedAt?: Date;
8037
+
8038
+ @Field()
8039
+ _mj__CreatedAt: Date;
8040
+
8041
+ @Field()
8042
+ _mj__UpdatedAt: Date;
8043
+
8044
+ @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.` })
8045
+ ReadableFields___?: string[];
8046
+
8047
+ }
8048
+
8049
+ //****************************************************************************
8050
+ // INPUT TYPE for MJ: AI Agent Session Recording Shards
8051
+ //****************************************************************************
8052
+ @InputType()
8053
+ export class CreateMJAIAgentSessionRecordingShardInput {
8054
+ @Field({ nullable: true })
8055
+ ID?: string;
8056
+
8057
+ @Field({ nullable: true })
8058
+ AgentSessionID?: string;
8059
+
8060
+ @Field(() => Int, { nullable: true })
8061
+ Index?: number;
8062
+
8063
+ @Field(() => Int, { nullable: true })
8064
+ StartSample?: number;
8065
+
8066
+ @Field(() => Int, { nullable: true })
8067
+ SampleCount?: number;
8068
+
8069
+ @Field(() => Int, { nullable: true })
8070
+ Bytes?: number;
8071
+
8072
+ @Field({ nullable: true })
8073
+ Sha256?: string;
8074
+
8075
+ @Field({ nullable: true })
8076
+ Data?: string;
8077
+
8078
+ @Field({ nullable: true })
8079
+ ReceivedAt?: Date;
8080
+
8081
+ @Field(() => RestoreContextInput, { nullable: true })
8082
+ RestoreContext___?: RestoreContextInput;
8083
+ }
8084
+
8085
+
8086
+ //****************************************************************************
8087
+ // INPUT TYPE for MJ: AI Agent Session Recording Shards
8088
+ //****************************************************************************
8089
+ @InputType()
8090
+ export class UpdateMJAIAgentSessionRecordingShardInput {
8091
+ @Field()
8092
+ ID: string;
8093
+
8094
+ @Field({ nullable: true })
8095
+ AgentSessionID?: string;
8096
+
8097
+ @Field(() => Int, { nullable: true })
8098
+ Index?: number;
8099
+
8100
+ @Field(() => Int, { nullable: true })
8101
+ StartSample?: number;
8102
+
8103
+ @Field(() => Int, { nullable: true })
8104
+ SampleCount?: number;
8105
+
8106
+ @Field(() => Int, { nullable: true })
8107
+ Bytes?: number;
8108
+
8109
+ @Field({ nullable: true })
8110
+ Sha256?: string;
8111
+
8112
+ @Field({ nullable: true })
8113
+ Data?: string;
8114
+
8115
+ @Field({ nullable: true })
8116
+ ReceivedAt?: Date;
8117
+
8118
+ @Field(() => [KeyValuePairInput], { nullable: true })
8119
+ OldValues___?: KeyValuePairInput[];
8120
+
8121
+ @Field(() => RestoreContextInput, { nullable: true })
8122
+ RestoreContext___?: RestoreContextInput;
8123
+ }
8124
+
8125
+ //****************************************************************************
8126
+ // RESOLVER for MJ: AI Agent Session Recording Shards
8127
+ //****************************************************************************
8128
+ @ObjectType()
8129
+ export class RunMJAIAgentSessionRecordingShardViewResult {
8130
+ @Field(() => [MJAIAgentSessionRecordingShard_])
8131
+ Results: MJAIAgentSessionRecordingShard_[];
8132
+
8133
+ @Field(() => String, {nullable: true})
8134
+ UserViewRunID?: string;
8135
+
8136
+ @Field(() => Int, {nullable: true})
8137
+ RowCount: number;
8138
+
8139
+ @Field(() => Int, {nullable: true})
8140
+ TotalRowCount: number;
8141
+
8142
+ @Field(() => Int, {nullable: true})
8143
+ ExecutionTime: number;
8144
+
8145
+ @Field({nullable: true})
8146
+ ErrorMessage?: string;
8147
+
8148
+ @Field(() => Boolean, {nullable: false})
8149
+ Success: boolean;
8150
+ }
8151
+
8152
+ @Resolver(MJAIAgentSessionRecordingShard_)
8153
+ export class MJAIAgentSessionRecordingShardResolver extends ResolverBase {
8154
+ @Query(() => RunMJAIAgentSessionRecordingShardViewResult)
8155
+ async RunMJAIAgentSessionRecordingShardViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8156
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8157
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
8158
+ }
8159
+
8160
+ @Query(() => RunMJAIAgentSessionRecordingShardViewResult)
8161
+ async RunMJAIAgentSessionRecordingShardViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8162
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8163
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
8164
+ }
8165
+
8166
+ @Query(() => RunMJAIAgentSessionRecordingShardViewResult)
8167
+ async RunMJAIAgentSessionRecordingShardDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8168
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8169
+ input.EntityName = 'MJ: AI Agent Session Recording Shards';
8170
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
8171
+ }
8172
+ @Query(() => MJAIAgentSessionRecordingShard_, { nullable: true })
8173
+ async MJAIAgentSessionRecordingShard(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJAIAgentSessionRecordingShard_ | null> {
8174
+ this.CheckUserReadPermissions('MJ: AI Agent Session Recording Shards', userPayload);
8175
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
8176
+ 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');
8177
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
8178
+ const result = await this.MapFieldNamesToCodeNames('MJ: AI Agent Session Recording Shards', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
8179
+ return result;
8180
+ }
8181
+
8182
+ @Mutation(() => MJAIAgentSessionRecordingShard_)
8183
+ async CreateMJAIAgentSessionRecordingShard(
8184
+ @Arg('input', () => CreateMJAIAgentSessionRecordingShardInput) input: CreateMJAIAgentSessionRecordingShardInput,
8185
+ @Ctx() { providers, userPayload }: AppContext,
8186
+ @PubSub() pubSub: PubSubEngine
8187
+ ) {
8188
+ const provider = GetReadWriteProvider(providers);
8189
+ return this.CreateRecord('MJ: AI Agent Session Recording Shards', input, provider, userPayload, pubSub)
8190
+ }
8191
+
8192
+ @Mutation(() => MJAIAgentSessionRecordingShard_)
8193
+ async UpdateMJAIAgentSessionRecordingShard(
8194
+ @Arg('input', () => UpdateMJAIAgentSessionRecordingShardInput) input: UpdateMJAIAgentSessionRecordingShardInput,
8195
+ @Ctx() { providers, userPayload }: AppContext,
8196
+ @PubSub() pubSub: PubSubEngine
8197
+ ) {
8198
+ const provider = GetReadWriteProvider(providers);
8199
+ return this.UpdateRecord('MJ: AI Agent Session Recording Shards', input, provider, userPayload, pubSub);
8200
+ }
8201
+
8202
+ @Mutation(() => MJAIAgentSessionRecordingShard_)
8203
+ async DeleteMJAIAgentSessionRecordingShard(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
8204
+ const provider = GetReadWriteProvider(providers);
8205
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
8206
+ return this.DeleteRecord('MJ: AI Agent Session Recording Shards', key, options, provider, userPayload, pubSub);
8207
+ }
8208
+
8209
+ }
8210
+
7966
8211
  //****************************************************************************
7967
8212
  // ENTITY CLASS for MJ: AI Agent Sessions
7968
8213
  //****************************************************************************
@@ -8034,6 +8279,22 @@ export class MJAIAgentSession_ {
8034
8279
  @MaxLength(500)
8035
8280
  LinkedRecordID?: string;
8036
8281
 
8282
+ @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."})
8283
+ @MaxLength(20)
8284
+ RecordingStatus?: string;
8285
+
8286
+ @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."})
8287
+ RecordingExpectedShards?: number;
8288
+
8289
+ @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."})
8290
+ RecordingCapturedSamples?: number;
8291
+
8292
+ @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."})
8293
+ RecordingGaps?: string;
8294
+
8295
+ @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."})
8296
+ RecordingAssemblyVersion?: number;
8297
+
8037
8298
  @Field({nullable: true})
8038
8299
  @MaxLength(255)
8039
8300
  Agent?: string;
@@ -8097,15 +8358,9 @@ export class CreateMJAIAgentSessionInput {
8097
8358
  @Field({ nullable: true })
8098
8359
  CloseReason: string | null;
8099
8360
 
8100
- @Field({ nullable: true })
8101
- RecordingMedia: string | null;
8102
-
8103
8361
  @Field({ nullable: true })
8104
8362
  RecordingStartedAt: Date | null;
8105
8363
 
8106
- @Field({ nullable: true })
8107
- RecordingFileID: string | null;
8108
-
8109
8364
  @Field({ nullable: true })
8110
8365
  LinkedEntityID: string | null;
8111
8366
 
@@ -8155,15 +8410,9 @@ export class UpdateMJAIAgentSessionInput {
8155
8410
  @Field({ nullable: true })
8156
8411
  CloseReason?: string | null;
8157
8412
 
8158
- @Field({ nullable: true })
8159
- RecordingMedia?: string | null;
8160
-
8161
8413
  @Field({ nullable: true })
8162
8414
  RecordingStartedAt?: Date | null;
8163
8415
 
8164
- @Field({ nullable: true })
8165
- RecordingFileID?: string | null;
8166
-
8167
8416
  @Field({ nullable: true })
8168
8417
  LinkedEntityID?: string | null;
8169
8418
 
@@ -9321,6 +9570,353 @@ export class MJAIAgentTypeResolver extends ResolverBase {
9321
9570
 
9322
9571
  }
9323
9572
 
9573
+ //****************************************************************************
9574
+ // ENTITY CLASS for MJ: AI Agent User Policies
9575
+ //****************************************************************************
9576
+ @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." })
9577
+ export class MJAIAgentUserPolicy_ {
9578
+ @Field()
9579
+ @MaxLength(36)
9580
+ ID: string;
9581
+
9582
+ @Field({nullable: true, description: "The AI Agent governed by this user policy."})
9583
+ @MaxLength(36)
9584
+ AgentID?: string;
9585
+
9586
+ @Field({nullable: true, description: "The MJ User who owns this policy and under whose security principal the agent executes."})
9587
+ @MaxLength(36)
9588
+ UserID?: string;
9589
+
9590
+ @Field({nullable: true, description: "Optional user-personalized display name for this agent (e.g., \"Maya\" for a user's Chief of Staff)."})
9591
+ @MaxLength(100)
9592
+ DisplayNameOverride?: string;
9593
+
9594
+ @Field({nullable: true, description: "Optional AI Persona selected by the user for this agent's voice and communication style."})
9595
+ @MaxLength(36)
9596
+ PreferredPersonaID?: string;
9597
+
9598
+ @Field({nullable: true, description: "Policy lifecycle status: Active, Paused (autonomous wakes suspended), or Disabled."})
9599
+ @MaxLength(20)
9600
+ Status?: string;
9601
+
9602
+ @Field({nullable: true, description: "Onboarding progression for this user-agent pair: NotStarted, InProgress, or Completed."})
9603
+ @MaxLength(20)
9604
+ OnboardingStatus?: string;
9605
+
9606
+ @Field({nullable: true, description: "Timestamp when the user completed onboarding for this agent."})
9607
+ OnboardedAt?: Date;
9608
+
9609
+ @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)."})
9610
+ @MaxLength(20)
9611
+ CoordinationMode?: string;
9612
+
9613
+ @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)."})
9614
+ @MaxLength(20)
9615
+ DefaultDataAccessMode?: string;
9616
+
9617
+ @Field({nullable: true, description: "Email channel permission level: Disabled, ReadOnly, DraftOnly, SendAsAgent, or SendAsUser."})
9618
+ @MaxLength(20)
9619
+ EmailChannelMode?: string;
9620
+
9621
+ @Field({nullable: true, description: "Telephony channel permission level: Disabled, InboundOnly, OutboundWithApproval, or OutboundAutonomous."})
9622
+ @MaxLength(20)
9623
+ PhoneChannelMode?: string;
9624
+
9625
+ @Field({nullable: true, description: "Messaging channel permission level (Slack/Teams/In-App): Disabled or Enabled."})
9626
+ @MaxLength(20)
9627
+ MessagingChannelMode?: string;
9628
+
9629
+ @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."})
9630
+ @MaxLength(30)
9631
+ CalendarChannelMode?: string;
9632
+
9633
+ @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."})
9634
+ AllowInterAgentCoordination?: boolean;
9635
+
9636
+ @Field(() => Boolean, {nullable: true, description: "When 1, any external email, message, or outbound call to non-internal recipients requires explicit user approval via AIAgentRequest."})
9637
+ RequireApprovalForExternalComms?: boolean;
9638
+
9639
+ @Field(() => Boolean, {nullable: true, description: "When 1, financial commitments, purchases, or accounting/order approvals require explicit user approval."})
9640
+ RequireApprovalForFinancials?: boolean;
9641
+
9642
+ @Field(() => Boolean, {nullable: true, description: "When 1, deleting records or cancelling active workflows requires explicit user approval."})
9643
+ RequireApprovalForDestructiveActions?: boolean;
9644
+
9645
+ @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."})
9646
+ AutoApproveAmountThreshold?: number;
9647
+
9648
+ @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."})
9649
+ EntityAccessRules?: string;
9650
+
9651
+ @Field({nullable: true, description: "JSON array of IAgentUserActionPolicyRule objects defining per-action Allow/RequireApproval/Deny policies, SafeExpressionEvaluator parameter conditions, and allowed time windows."})
9652
+ ActionPolicyRules?: string;
9653
+
9654
+ @Field({nullable: true, description: "Optional user-specific standing instructions injected into the agent's system context on every run."})
9655
+ InstructionsOverride?: string;
9656
+
9657
+ @Field()
9658
+ _mj__CreatedAt: Date;
9659
+
9660
+ @Field()
9661
+ _mj__UpdatedAt: Date;
9662
+
9663
+ @Field({nullable: true})
9664
+ @MaxLength(255)
9665
+ Agent?: string;
9666
+
9667
+ @Field({nullable: true})
9668
+ @MaxLength(100)
9669
+ User?: string;
9670
+
9671
+ @Field({nullable: true})
9672
+ @MaxLength(100)
9673
+ PreferredPersona?: string;
9674
+
9675
+ @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.` })
9676
+ ReadableFields___?: string[];
9677
+
9678
+ }
9679
+
9680
+ //****************************************************************************
9681
+ // INPUT TYPE for MJ: AI Agent User Policies
9682
+ //****************************************************************************
9683
+ @InputType()
9684
+ export class CreateMJAIAgentUserPolicyInput {
9685
+ @Field({ nullable: true })
9686
+ ID?: string;
9687
+
9688
+ @Field({ nullable: true })
9689
+ AgentID?: string;
9690
+
9691
+ @Field({ nullable: true })
9692
+ UserID?: string;
9693
+
9694
+ @Field({ nullable: true })
9695
+ DisplayNameOverride: string | null;
9696
+
9697
+ @Field({ nullable: true })
9698
+ PreferredPersonaID: string | null;
9699
+
9700
+ @Field({ nullable: true })
9701
+ Status?: string;
9702
+
9703
+ @Field({ nullable: true })
9704
+ OnboardingStatus?: string;
9705
+
9706
+ @Field({ nullable: true })
9707
+ OnboardedAt: Date | null;
9708
+
9709
+ @Field({ nullable: true })
9710
+ CoordinationMode?: string;
9711
+
9712
+ @Field({ nullable: true })
9713
+ DefaultDataAccessMode?: string;
9714
+
9715
+ @Field({ nullable: true })
9716
+ EmailChannelMode?: string;
9717
+
9718
+ @Field({ nullable: true })
9719
+ PhoneChannelMode?: string;
9720
+
9721
+ @Field({ nullable: true })
9722
+ MessagingChannelMode?: string;
9723
+
9724
+ @Field({ nullable: true })
9725
+ CalendarChannelMode?: string;
9726
+
9727
+ @Field(() => Boolean, { nullable: true })
9728
+ AllowInterAgentCoordination?: boolean;
9729
+
9730
+ @Field(() => Boolean, { nullable: true })
9731
+ RequireApprovalForExternalComms?: boolean;
9732
+
9733
+ @Field(() => Boolean, { nullable: true })
9734
+ RequireApprovalForFinancials?: boolean;
9735
+
9736
+ @Field(() => Boolean, { nullable: true })
9737
+ RequireApprovalForDestructiveActions?: boolean;
9738
+
9739
+ @Field(() => Float, { nullable: true })
9740
+ AutoApproveAmountThreshold: number | null;
9741
+
9742
+ @Field({ nullable: true })
9743
+ EntityAccessRules: string | null;
9744
+
9745
+ @Field({ nullable: true })
9746
+ ActionPolicyRules: string | null;
9747
+
9748
+ @Field({ nullable: true })
9749
+ InstructionsOverride: string | null;
9750
+
9751
+ @Field(() => RestoreContextInput, { nullable: true })
9752
+ RestoreContext___?: RestoreContextInput;
9753
+ }
9754
+
9755
+
9756
+ //****************************************************************************
9757
+ // INPUT TYPE for MJ: AI Agent User Policies
9758
+ //****************************************************************************
9759
+ @InputType()
9760
+ export class UpdateMJAIAgentUserPolicyInput {
9761
+ @Field()
9762
+ ID: string;
9763
+
9764
+ @Field({ nullable: true })
9765
+ AgentID?: string;
9766
+
9767
+ @Field({ nullable: true })
9768
+ UserID?: string;
9769
+
9770
+ @Field({ nullable: true })
9771
+ DisplayNameOverride?: string | null;
9772
+
9773
+ @Field({ nullable: true })
9774
+ PreferredPersonaID?: string | null;
9775
+
9776
+ @Field({ nullable: true })
9777
+ Status?: string;
9778
+
9779
+ @Field({ nullable: true })
9780
+ OnboardingStatus?: string;
9781
+
9782
+ @Field({ nullable: true })
9783
+ OnboardedAt?: Date | null;
9784
+
9785
+ @Field({ nullable: true })
9786
+ CoordinationMode?: string;
9787
+
9788
+ @Field({ nullable: true })
9789
+ DefaultDataAccessMode?: string;
9790
+
9791
+ @Field({ nullable: true })
9792
+ EmailChannelMode?: string;
9793
+
9794
+ @Field({ nullable: true })
9795
+ PhoneChannelMode?: string;
9796
+
9797
+ @Field({ nullable: true })
9798
+ MessagingChannelMode?: string;
9799
+
9800
+ @Field({ nullable: true })
9801
+ CalendarChannelMode?: string;
9802
+
9803
+ @Field(() => Boolean, { nullable: true })
9804
+ AllowInterAgentCoordination?: boolean;
9805
+
9806
+ @Field(() => Boolean, { nullable: true })
9807
+ RequireApprovalForExternalComms?: boolean;
9808
+
9809
+ @Field(() => Boolean, { nullable: true })
9810
+ RequireApprovalForFinancials?: boolean;
9811
+
9812
+ @Field(() => Boolean, { nullable: true })
9813
+ RequireApprovalForDestructiveActions?: boolean;
9814
+
9815
+ @Field(() => Float, { nullable: true })
9816
+ AutoApproveAmountThreshold?: number | null;
9817
+
9818
+ @Field({ nullable: true })
9819
+ EntityAccessRules?: string | null;
9820
+
9821
+ @Field({ nullable: true })
9822
+ ActionPolicyRules?: string | null;
9823
+
9824
+ @Field({ nullable: true })
9825
+ InstructionsOverride?: string | null;
9826
+
9827
+ @Field(() => [KeyValuePairInput], { nullable: true })
9828
+ OldValues___?: KeyValuePairInput[];
9829
+
9830
+ @Field(() => RestoreContextInput, { nullable: true })
9831
+ RestoreContext___?: RestoreContextInput;
9832
+ }
9833
+
9834
+ //****************************************************************************
9835
+ // RESOLVER for MJ: AI Agent User Policies
9836
+ //****************************************************************************
9837
+ @ObjectType()
9838
+ export class RunMJAIAgentUserPolicyViewResult {
9839
+ @Field(() => [MJAIAgentUserPolicy_])
9840
+ Results: MJAIAgentUserPolicy_[];
9841
+
9842
+ @Field(() => String, {nullable: true})
9843
+ UserViewRunID?: string;
9844
+
9845
+ @Field(() => Int, {nullable: true})
9846
+ RowCount: number;
9847
+
9848
+ @Field(() => Int, {nullable: true})
9849
+ TotalRowCount: number;
9850
+
9851
+ @Field(() => Int, {nullable: true})
9852
+ ExecutionTime: number;
9853
+
9854
+ @Field({nullable: true})
9855
+ ErrorMessage?: string;
9856
+
9857
+ @Field(() => Boolean, {nullable: false})
9858
+ Success: boolean;
9859
+ }
9860
+
9861
+ @Resolver(MJAIAgentUserPolicy_)
9862
+ export class MJAIAgentUserPolicyResolver extends ResolverBase {
9863
+ @Query(() => RunMJAIAgentUserPolicyViewResult)
9864
+ async RunMJAIAgentUserPolicyViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9865
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9866
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
9867
+ }
9868
+
9869
+ @Query(() => RunMJAIAgentUserPolicyViewResult)
9870
+ async RunMJAIAgentUserPolicyViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9871
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9872
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
9873
+ }
9874
+
9875
+ @Query(() => RunMJAIAgentUserPolicyViewResult)
9876
+ async RunMJAIAgentUserPolicyDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9877
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9878
+ input.EntityName = 'MJ: AI Agent User Policies';
9879
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
9880
+ }
9881
+ @Query(() => MJAIAgentUserPolicy_, { nullable: true })
9882
+ async MJAIAgentUserPolicy(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJAIAgentUserPolicy_ | null> {
9883
+ this.CheckUserReadPermissions('MJ: AI Agent User Policies', userPayload);
9884
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9885
+ 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');
9886
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
9887
+ const result = await this.MapFieldNamesToCodeNames('MJ: AI Agent User Policies', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
9888
+ return result;
9889
+ }
9890
+
9891
+ @Mutation(() => MJAIAgentUserPolicy_)
9892
+ async CreateMJAIAgentUserPolicy(
9893
+ @Arg('input', () => CreateMJAIAgentUserPolicyInput) input: CreateMJAIAgentUserPolicyInput,
9894
+ @Ctx() { providers, userPayload }: AppContext,
9895
+ @PubSub() pubSub: PubSubEngine
9896
+ ) {
9897
+ const provider = GetReadWriteProvider(providers);
9898
+ return this.CreateRecord('MJ: AI Agent User Policies', input, provider, userPayload, pubSub)
9899
+ }
9900
+
9901
+ @Mutation(() => MJAIAgentUserPolicy_)
9902
+ async UpdateMJAIAgentUserPolicy(
9903
+ @Arg('input', () => UpdateMJAIAgentUserPolicyInput) input: UpdateMJAIAgentUserPolicyInput,
9904
+ @Ctx() { providers, userPayload }: AppContext,
9905
+ @PubSub() pubSub: PubSubEngine
9906
+ ) {
9907
+ const provider = GetReadWriteProvider(providers);
9908
+ return this.UpdateRecord('MJ: AI Agent User Policies', input, provider, userPayload, pubSub);
9909
+ }
9910
+
9911
+ @Mutation(() => MJAIAgentUserPolicy_)
9912
+ async DeleteMJAIAgentUserPolicy(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
9913
+ const provider = GetReadWriteProvider(providers);
9914
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
9915
+ return this.DeleteRecord('MJ: AI Agent User Policies', key, options, provider, userPayload, pubSub);
9916
+ }
9917
+
9918
+ }
9919
+
9324
9920
  //****************************************************************************
9325
9921
  // ENTITY CLASS for MJ: AI Agents
9326
9922
  //****************************************************************************
@@ -10516,6 +11112,10 @@ export class MJAIBridgeAgentIdentity_ {
10516
11112
  @Field()
10517
11113
  _mj__UpdatedAt: Date;
10518
11114
 
11115
+ @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."})
11116
+ @MaxLength(36)
11117
+ UserID?: string;
11118
+
10519
11119
  @Field({nullable: true})
10520
11120
  @MaxLength(255)
10521
11121
  Agent?: string;
@@ -10524,6 +11124,10 @@ export class MJAIBridgeAgentIdentity_ {
10524
11124
  @MaxLength(100)
10525
11125
  Provider?: string;
10526
11126
 
11127
+ @Field({nullable: true})
11128
+ @MaxLength(100)
11129
+ User?: string;
11130
+
10527
11131
  @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
11132
  ReadableFields___?: string[];
10529
11133
 
@@ -10558,6 +11162,9 @@ export class CreateMJAIBridgeAgentIdentityInput {
10558
11162
  @Field({ nullable: true })
10559
11163
  Configuration: string | null;
10560
11164
 
11165
+ @Field({ nullable: true })
11166
+ UserID: string | null;
11167
+
10561
11168
  @Field(() => RestoreContextInput, { nullable: true })
10562
11169
  RestoreContext___?: RestoreContextInput;
10563
11170
  }
@@ -10592,6 +11199,9 @@ export class UpdateMJAIBridgeAgentIdentityInput {
10592
11199
  @Field({ nullable: true })
10593
11200
  Configuration?: string | null;
10594
11201
 
11202
+ @Field({ nullable: true })
11203
+ UserID?: string | null;
11204
+
10595
11205
  @Field(() => [KeyValuePairInput], { nullable: true })
10596
11206
  OldValues___?: KeyValuePairInput[];
10597
11207
 
@@ -17016,6 +17626,10 @@ export class MJAIPrompt_ {
17016
17626
  @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
17627
  PromptConfiguration?: string;
17018
17628
 
17629
+ @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."})
17630
+ @MaxLength(20)
17631
+ TemplateDataCapture?: string;
17632
+
17019
17633
  @Field({nullable: true})
17020
17634
  @MaxLength(255)
17021
17635
  Template?: string;
@@ -17205,6 +17819,9 @@ export class CreateMJAIPromptInput {
17205
17819
  @Field({ nullable: true })
17206
17820
  PromptConfiguration: string | null;
17207
17821
 
17822
+ @Field({ nullable: true })
17823
+ TemplateDataCapture: string | null;
17824
+
17208
17825
  @Field(() => RestoreContextInput, { nullable: true })
17209
17826
  RestoreContext___?: RestoreContextInput;
17210
17827
  }
@@ -17374,6 +17991,9 @@ export class UpdateMJAIPromptInput {
17374
17991
  @Field({ nullable: true })
17375
17992
  PromptConfiguration?: string | null;
17376
17993
 
17994
+ @Field({ nullable: true })
17995
+ TemplateDataCapture?: string | null;
17996
+
17377
17997
  @Field(() => [KeyValuePairInput], { nullable: true })
17378
17998
  OldValues___?: KeyValuePairInput[];
17379
17999
 
@@ -22716,6 +23336,9 @@ export class MJActionParam_ {
22716
23336
  @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
23337
  LogValue?: boolean;
22718
23338
 
23339
+ @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."})
23340
+ ValueSchema?: string;
23341
+
22719
23342
  @Field({nullable: true})
22720
23343
  @MaxLength(425)
22721
23344
  Action?: string;
@@ -22763,6 +23386,9 @@ export class CreateMJActionParamInput {
22763
23386
  @Field(() => Boolean, { nullable: true })
22764
23387
  LogValue?: boolean;
22765
23388
 
23389
+ @Field({ nullable: true })
23390
+ ValueSchema: string | null;
23391
+
22766
23392
  @Field(() => RestoreContextInput, { nullable: true })
22767
23393
  RestoreContext___?: RestoreContextInput;
22768
23394
  }
@@ -22806,6 +23432,9 @@ export class UpdateMJActionParamInput {
22806
23432
  @Field(() => Boolean, { nullable: true })
22807
23433
  LogValue?: boolean;
22808
23434
 
23435
+ @Field({ nullable: true })
23436
+ ValueSchema?: string | null;
23437
+
22809
23438
  @Field(() => [KeyValuePairInput], { nullable: true })
22810
23439
  OldValues___?: KeyValuePairInput[];
22811
23440
 
@@ -24640,6 +25269,10 @@ export class MJArchiveConfiguration_ {
24640
25269
  @Field()
24641
25270
  _mj__UpdatedAt: Date;
24642
25271
 
25272
+ @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."})
25273
+ @MaxLength(20)
25274
+ StorageMode?: string;
25275
+
24643
25276
  @Field({nullable: true})
24644
25277
  @MaxLength(200)
24645
25278
  StorageAccount?: string;
@@ -24697,6 +25330,9 @@ export class CreateMJArchiveConfigurationInput {
24697
25330
  @Field({ nullable: true })
24698
25331
  CreatedByUserID?: string;
24699
25332
 
25333
+ @Field({ nullable: true })
25334
+ StorageMode?: string;
25335
+
24700
25336
  @Field(() => RestoreContextInput, { nullable: true })
24701
25337
  RestoreContext___?: RestoreContextInput;
24702
25338
  }
@@ -24746,6 +25382,9 @@ export class UpdateMJArchiveConfigurationInput {
24746
25382
  @Field({ nullable: true })
24747
25383
  CreatedByUserID?: string;
24748
25384
 
25385
+ @Field({ nullable: true })
25386
+ StorageMode?: string;
25387
+
24749
25388
  @Field(() => [KeyValuePairInput], { nullable: true })
24750
25389
  OldValues___?: KeyValuePairInput[];
24751
25390
 
@@ -24900,7 +25539,8 @@ export class MJArchiveRunDetail_ {
24900
25539
  _mj__UpdatedAt: Date;
24901
25540
 
24902
25541
  @Field({nullable: true})
24903
- ArchiveRun?: Date;
25542
+ @MaxLength(255)
25543
+ ArchiveRun?: string;
24904
25544
 
24905
25545
  @Field({nullable: true})
24906
25546
  @MaxLength(255)
@@ -25146,6 +25786,10 @@ export class MJArchiveRun_ {
25146
25786
  @Field()
25147
25787
  _mj__UpdatedAt: Date;
25148
25788
 
25789
+ @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)."})
25790
+ @MaxLength(20)
25791
+ StorageMode?: string;
25792
+
25149
25793
  @Field({nullable: true})
25150
25794
  @MaxLength(255)
25151
25795
  ArchiveConfiguration?: string;
@@ -25200,6 +25844,9 @@ export class CreateMJArchiveRunInput {
25200
25844
  @Field({ nullable: true })
25201
25845
  UserID?: string;
25202
25846
 
25847
+ @Field({ nullable: true })
25848
+ StorageMode?: string;
25849
+
25203
25850
  @Field(() => RestoreContextInput, { nullable: true })
25204
25851
  RestoreContext___?: RestoreContextInput;
25205
25852
  }
@@ -25246,6 +25893,9 @@ export class UpdateMJArchiveRunInput {
25246
25893
  @Field({ nullable: true })
25247
25894
  UserID?: string;
25248
25895
 
25896
+ @Field({ nullable: true })
25897
+ StorageMode?: string;
25898
+
25249
25899
  @Field(() => [KeyValuePairInput], { nullable: true })
25250
25900
  OldValues___?: KeyValuePairInput[];
25251
25901
 
@@ -27851,6 +28501,433 @@ export class MJAuthorizationResolver extends ResolverBase {
27851
28501
 
27852
28502
  }
27853
28503
 
28504
+ //****************************************************************************
28505
+ // ENTITY CLASS for MJ: Calendar Event Links
28506
+ //****************************************************************************
28507
+ @ObjectType({ description: "Ties a record to an event in an external calendar (MS Graph, Google Calendar), so any record can be linked to an event without a calendar column on its own table." })
28508
+ export class MJCalendarEventLink_ {
28509
+ @Field()
28510
+ @MaxLength(36)
28511
+ ID: string;
28512
+
28513
+ @Field({nullable: true})
28514
+ @MaxLength(36)
28515
+ CommunicationProviderID?: string;
28516
+
28517
+ @Field({nullable: true, description: "The calendar account the event lives in: a mailbox address for MS Graph, the account for Google. Later syncs and changes go to the same account."})
28518
+ @MaxLength(255)
28519
+ AccountIdentifier?: string;
28520
+
28521
+ @Field({nullable: true, description: "The calendar within the account. Null means the account's default calendar."})
28522
+ @MaxLength(500)
28523
+ CalendarID?: string;
28524
+
28525
+ @Field({nullable: true, description: "The provider's ID for the event in this account. It differs between attendees' calendars; match across calendars on ICalUID."})
28526
+ @MaxLength(500)
28527
+ ExternalEventID?: string;
28528
+
28529
+ @Field({nullable: true, description: "The provider's ID for the recurring series this event belongs to, when it is an occurrence or exception of one."})
28530
+ @MaxLength(500)
28531
+ ExternalSeriesID?: string;
28532
+
28533
+ @Field({nullable: true, description: "The event's iCalendar UID (Graph iCalUId, Google iCalUID). The same in every attendee's calendar, so other apps match an imported event to this link by it."})
28534
+ @MaxLength(1000)
28535
+ ICalUID?: string;
28536
+
28537
+ @Field({nullable: true, description: "The entity of the linked record."})
28538
+ @MaxLength(36)
28539
+ EntityID?: string;
28540
+
28541
+ @Field({nullable: true, description: "The linked record's primary key, in the compact URL-segment form (a bare value for a single-column key)."})
28542
+ @MaxLength(450)
28543
+ RecordID?: string;
28544
+
28545
+ @Field({nullable: true, description: "Active, or Cancelled once the event is cancelled, in the calendar or through MemberJunction."})
28546
+ @MaxLength(20)
28547
+ Status?: string;
28548
+
28549
+ @Field({nullable: true, description: "When a change to this event was last read from or written to the calendar."})
28550
+ LastSyncedAt?: Date;
28551
+
28552
+ @Field()
28553
+ _mj__CreatedAt: Date;
28554
+
28555
+ @Field()
28556
+ _mj__UpdatedAt: Date;
28557
+
28558
+ @Field({nullable: true})
28559
+ @MaxLength(255)
28560
+ CommunicationProvider?: string;
28561
+
28562
+ @Field({nullable: true})
28563
+ @MaxLength(255)
28564
+ Entity?: string;
28565
+
28566
+ @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.` })
28567
+ ReadableFields___?: string[];
28568
+
28569
+ }
28570
+
28571
+ //****************************************************************************
28572
+ // INPUT TYPE for MJ: Calendar Event Links
28573
+ //****************************************************************************
28574
+ @InputType()
28575
+ export class CreateMJCalendarEventLinkInput {
28576
+ @Field({ nullable: true })
28577
+ ID?: string;
28578
+
28579
+ @Field({ nullable: true })
28580
+ CommunicationProviderID?: string;
28581
+
28582
+ @Field({ nullable: true })
28583
+ AccountIdentifier?: string;
28584
+
28585
+ @Field({ nullable: true })
28586
+ CalendarID: string | null;
28587
+
28588
+ @Field({ nullable: true })
28589
+ ExternalEventID?: string;
28590
+
28591
+ @Field({ nullable: true })
28592
+ ExternalSeriesID: string | null;
28593
+
28594
+ @Field({ nullable: true })
28595
+ ICalUID: string | null;
28596
+
28597
+ @Field({ nullable: true })
28598
+ EntityID?: string;
28599
+
28600
+ @Field({ nullable: true })
28601
+ RecordID?: string;
28602
+
28603
+ @Field({ nullable: true })
28604
+ Status?: string;
28605
+
28606
+ @Field({ nullable: true })
28607
+ LastSyncedAt: Date | null;
28608
+
28609
+ @Field(() => RestoreContextInput, { nullable: true })
28610
+ RestoreContext___?: RestoreContextInput;
28611
+ }
28612
+
28613
+
28614
+ //****************************************************************************
28615
+ // INPUT TYPE for MJ: Calendar Event Links
28616
+ //****************************************************************************
28617
+ @InputType()
28618
+ export class UpdateMJCalendarEventLinkInput {
28619
+ @Field()
28620
+ ID: string;
28621
+
28622
+ @Field({ nullable: true })
28623
+ CommunicationProviderID?: string;
28624
+
28625
+ @Field({ nullable: true })
28626
+ AccountIdentifier?: string;
28627
+
28628
+ @Field({ nullable: true })
28629
+ CalendarID?: string | null;
28630
+
28631
+ @Field({ nullable: true })
28632
+ ExternalEventID?: string;
28633
+
28634
+ @Field({ nullable: true })
28635
+ ExternalSeriesID?: string | null;
28636
+
28637
+ @Field({ nullable: true })
28638
+ ICalUID?: string | null;
28639
+
28640
+ @Field({ nullable: true })
28641
+ EntityID?: string;
28642
+
28643
+ @Field({ nullable: true })
28644
+ RecordID?: string;
28645
+
28646
+ @Field({ nullable: true })
28647
+ Status?: string;
28648
+
28649
+ @Field({ nullable: true })
28650
+ LastSyncedAt?: Date | null;
28651
+
28652
+ @Field(() => [KeyValuePairInput], { nullable: true })
28653
+ OldValues___?: KeyValuePairInput[];
28654
+
28655
+ @Field(() => RestoreContextInput, { nullable: true })
28656
+ RestoreContext___?: RestoreContextInput;
28657
+ }
28658
+
28659
+ //****************************************************************************
28660
+ // RESOLVER for MJ: Calendar Event Links
28661
+ //****************************************************************************
28662
+ @ObjectType()
28663
+ export class RunMJCalendarEventLinkViewResult {
28664
+ @Field(() => [MJCalendarEventLink_])
28665
+ Results: MJCalendarEventLink_[];
28666
+
28667
+ @Field(() => String, {nullable: true})
28668
+ UserViewRunID?: string;
28669
+
28670
+ @Field(() => Int, {nullable: true})
28671
+ RowCount: number;
28672
+
28673
+ @Field(() => Int, {nullable: true})
28674
+ TotalRowCount: number;
28675
+
28676
+ @Field(() => Int, {nullable: true})
28677
+ ExecutionTime: number;
28678
+
28679
+ @Field({nullable: true})
28680
+ ErrorMessage?: string;
28681
+
28682
+ @Field(() => Boolean, {nullable: false})
28683
+ Success: boolean;
28684
+ }
28685
+
28686
+ @Resolver(MJCalendarEventLink_)
28687
+ export class MJCalendarEventLinkResolver extends ResolverBase {
28688
+ @Query(() => RunMJCalendarEventLinkViewResult)
28689
+ async RunMJCalendarEventLinkViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28690
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28691
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
28692
+ }
28693
+
28694
+ @Query(() => RunMJCalendarEventLinkViewResult)
28695
+ async RunMJCalendarEventLinkViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28696
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28697
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
28698
+ }
28699
+
28700
+ @Query(() => RunMJCalendarEventLinkViewResult)
28701
+ async RunMJCalendarEventLinkDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28702
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28703
+ input.EntityName = 'MJ: Calendar Event Links';
28704
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
28705
+ }
28706
+ @Query(() => MJCalendarEventLink_, { nullable: true })
28707
+ async MJCalendarEventLink(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCalendarEventLink_ | null> {
28708
+ this.CheckUserReadPermissions('MJ: Calendar Event Links', userPayload);
28709
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28710
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCalendarEventLinks')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Calendar Event Links', userPayload, EntityPermissionType.Read, 'AND');
28711
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
28712
+ const result = await this.MapFieldNamesToCodeNames('MJ: Calendar Event Links', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
28713
+ return result;
28714
+ }
28715
+
28716
+ @Mutation(() => MJCalendarEventLink_)
28717
+ async CreateMJCalendarEventLink(
28718
+ @Arg('input', () => CreateMJCalendarEventLinkInput) input: CreateMJCalendarEventLinkInput,
28719
+ @Ctx() { providers, userPayload }: AppContext,
28720
+ @PubSub() pubSub: PubSubEngine
28721
+ ) {
28722
+ const provider = GetReadWriteProvider(providers);
28723
+ return this.CreateRecord('MJ: Calendar Event Links', input, provider, userPayload, pubSub)
28724
+ }
28725
+
28726
+ @Mutation(() => MJCalendarEventLink_)
28727
+ async UpdateMJCalendarEventLink(
28728
+ @Arg('input', () => UpdateMJCalendarEventLinkInput) input: UpdateMJCalendarEventLinkInput,
28729
+ @Ctx() { providers, userPayload }: AppContext,
28730
+ @PubSub() pubSub: PubSubEngine
28731
+ ) {
28732
+ const provider = GetReadWriteProvider(providers);
28733
+ return this.UpdateRecord('MJ: Calendar Event Links', input, provider, userPayload, pubSub);
28734
+ }
28735
+
28736
+ @Mutation(() => MJCalendarEventLink_)
28737
+ async DeleteMJCalendarEventLink(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28738
+ const provider = GetReadWriteProvider(providers);
28739
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
28740
+ return this.DeleteRecord('MJ: Calendar Event Links', key, options, provider, userPayload, pubSub);
28741
+ }
28742
+
28743
+ }
28744
+
28745
+ //****************************************************************************
28746
+ // ENTITY CLASS for MJ: Calendar Sync States
28747
+ //****************************************************************************
28748
+ @ObjectType({ description: "One sync cursor per external calendar, so an incremental sync reads only what changed since the last one." })
28749
+ export class MJCalendarSyncState_ {
28750
+ @Field()
28751
+ @MaxLength(36)
28752
+ ID: string;
28753
+
28754
+ @Field({nullable: true})
28755
+ @MaxLength(36)
28756
+ CommunicationProviderID?: string;
28757
+
28758
+ @Field({nullable: true, description: "The calendar account: a mailbox address for MS Graph, the account for Google."})
28759
+ @MaxLength(255)
28760
+ AccountIdentifier?: string;
28761
+
28762
+ @Field({nullable: true, description: "The calendar within the account. Null means the account's default calendar."})
28763
+ @MaxLength(500)
28764
+ CalendarID?: string;
28765
+
28766
+ @Field({nullable: true, description: "The provider's cursor for the next incremental sync: a Graph delta link or a Google sync token. Null until the first sync."})
28767
+ SyncToken?: string;
28768
+
28769
+ @Field({nullable: true, description: "When this calendar was last synced."})
28770
+ LastSyncedAt?: Date;
28771
+
28772
+ @Field()
28773
+ _mj__CreatedAt: Date;
28774
+
28775
+ @Field()
28776
+ _mj__UpdatedAt: Date;
28777
+
28778
+ @Field({nullable: true})
28779
+ @MaxLength(255)
28780
+ CommunicationProvider?: string;
28781
+
28782
+ @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.` })
28783
+ ReadableFields___?: string[];
28784
+
28785
+ }
28786
+
28787
+ //****************************************************************************
28788
+ // INPUT TYPE for MJ: Calendar Sync States
28789
+ //****************************************************************************
28790
+ @InputType()
28791
+ export class CreateMJCalendarSyncStateInput {
28792
+ @Field({ nullable: true })
28793
+ ID?: string;
28794
+
28795
+ @Field({ nullable: true })
28796
+ CommunicationProviderID?: string;
28797
+
28798
+ @Field({ nullable: true })
28799
+ AccountIdentifier?: string;
28800
+
28801
+ @Field({ nullable: true })
28802
+ CalendarID: string | null;
28803
+
28804
+ @Field({ nullable: true })
28805
+ SyncToken: string | null;
28806
+
28807
+ @Field({ nullable: true })
28808
+ LastSyncedAt: Date | null;
28809
+
28810
+ @Field(() => RestoreContextInput, { nullable: true })
28811
+ RestoreContext___?: RestoreContextInput;
28812
+ }
28813
+
28814
+
28815
+ //****************************************************************************
28816
+ // INPUT TYPE for MJ: Calendar Sync States
28817
+ //****************************************************************************
28818
+ @InputType()
28819
+ export class UpdateMJCalendarSyncStateInput {
28820
+ @Field()
28821
+ ID: string;
28822
+
28823
+ @Field({ nullable: true })
28824
+ CommunicationProviderID?: string;
28825
+
28826
+ @Field({ nullable: true })
28827
+ AccountIdentifier?: string;
28828
+
28829
+ @Field({ nullable: true })
28830
+ CalendarID?: string | null;
28831
+
28832
+ @Field({ nullable: true })
28833
+ SyncToken?: string | null;
28834
+
28835
+ @Field({ nullable: true })
28836
+ LastSyncedAt?: Date | null;
28837
+
28838
+ @Field(() => [KeyValuePairInput], { nullable: true })
28839
+ OldValues___?: KeyValuePairInput[];
28840
+
28841
+ @Field(() => RestoreContextInput, { nullable: true })
28842
+ RestoreContext___?: RestoreContextInput;
28843
+ }
28844
+
28845
+ //****************************************************************************
28846
+ // RESOLVER for MJ: Calendar Sync States
28847
+ //****************************************************************************
28848
+ @ObjectType()
28849
+ export class RunMJCalendarSyncStateViewResult {
28850
+ @Field(() => [MJCalendarSyncState_])
28851
+ Results: MJCalendarSyncState_[];
28852
+
28853
+ @Field(() => String, {nullable: true})
28854
+ UserViewRunID?: string;
28855
+
28856
+ @Field(() => Int, {nullable: true})
28857
+ RowCount: number;
28858
+
28859
+ @Field(() => Int, {nullable: true})
28860
+ TotalRowCount: number;
28861
+
28862
+ @Field(() => Int, {nullable: true})
28863
+ ExecutionTime: number;
28864
+
28865
+ @Field({nullable: true})
28866
+ ErrorMessage?: string;
28867
+
28868
+ @Field(() => Boolean, {nullable: false})
28869
+ Success: boolean;
28870
+ }
28871
+
28872
+ @Resolver(MJCalendarSyncState_)
28873
+ export class MJCalendarSyncStateResolver extends ResolverBase {
28874
+ @Query(() => RunMJCalendarSyncStateViewResult)
28875
+ async RunMJCalendarSyncStateViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28876
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28877
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
28878
+ }
28879
+
28880
+ @Query(() => RunMJCalendarSyncStateViewResult)
28881
+ async RunMJCalendarSyncStateViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28882
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28883
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
28884
+ }
28885
+
28886
+ @Query(() => RunMJCalendarSyncStateViewResult)
28887
+ async RunMJCalendarSyncStateDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28888
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28889
+ input.EntityName = 'MJ: Calendar Sync States';
28890
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
28891
+ }
28892
+ @Query(() => MJCalendarSyncState_, { nullable: true })
28893
+ async MJCalendarSyncState(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCalendarSyncState_ | null> {
28894
+ this.CheckUserReadPermissions('MJ: Calendar Sync States', userPayload);
28895
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
28896
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCalendarSyncStates')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Calendar Sync States', userPayload, EntityPermissionType.Read, 'AND');
28897
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
28898
+ const result = await this.MapFieldNamesToCodeNames('MJ: Calendar Sync States', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
28899
+ return result;
28900
+ }
28901
+
28902
+ @Mutation(() => MJCalendarSyncState_)
28903
+ async CreateMJCalendarSyncState(
28904
+ @Arg('input', () => CreateMJCalendarSyncStateInput) input: CreateMJCalendarSyncStateInput,
28905
+ @Ctx() { providers, userPayload }: AppContext,
28906
+ @PubSub() pubSub: PubSubEngine
28907
+ ) {
28908
+ const provider = GetReadWriteProvider(providers);
28909
+ return this.CreateRecord('MJ: Calendar Sync States', input, provider, userPayload, pubSub)
28910
+ }
28911
+
28912
+ @Mutation(() => MJCalendarSyncState_)
28913
+ async UpdateMJCalendarSyncState(
28914
+ @Arg('input', () => UpdateMJCalendarSyncStateInput) input: UpdateMJCalendarSyncStateInput,
28915
+ @Ctx() { providers, userPayload }: AppContext,
28916
+ @PubSub() pubSub: PubSubEngine
28917
+ ) {
28918
+ const provider = GetReadWriteProvider(providers);
28919
+ return this.UpdateRecord('MJ: Calendar Sync States', input, provider, userPayload, pubSub);
28920
+ }
28921
+
28922
+ @Mutation(() => MJCalendarSyncState_)
28923
+ async DeleteMJCalendarSyncState(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
28924
+ const provider = GetReadWriteProvider(providers);
28925
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
28926
+ return this.DeleteRecord('MJ: Calendar Sync States', key, options, provider, userPayload, pubSub);
28927
+ }
28928
+
28929
+ }
28930
+
27854
28931
  //****************************************************************************
27855
28932
  // ENTITY CLASS for MJ: Cluster Analysis
27856
28933
  //****************************************************************************
@@ -29562,6 +30639,35 @@ export class MJCommunicationProvider_ {
29562
30639
  @Field(() => Boolean, {nullable: true, description: "Whether or not the provider supports creating draft messages"})
29563
30640
  SupportsDrafts?: boolean;
29564
30641
 
30642
+ @Field(() => Boolean, {nullable: true, description: "Whether the provider supports calendar event reading, creation, updating, and invitation responses."})
30643
+ SupportsCalendar?: boolean;
30644
+
30645
+ @Field(() => Boolean, {nullable: true, description: "Whether the provider supports checking free/busy schedules and finding optimal meeting times."})
30646
+ SupportsFreeBusy?: boolean;
30647
+
30648
+ @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."})
30649
+ @MaxLength(40)
30650
+ EnterpriseScopeMode?: string;
30651
+
30652
+ @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\")."})
30653
+ @MaxLength(500)
30654
+ AllowedEmailDomains?: string;
30655
+
30656
+ @Field({nullable: true, description: "Optional default MJ Credential used by this communication provider when no per-request credential override is supplied."})
30657
+ @MaxLength(36)
30658
+ DefaultCredentialID?: string;
30659
+
30660
+ @Field(() => Boolean, {nullable: true, description: "Posture 3 master switch (Gate 1). When 1, users may connect their own mailbox/calendar to this provider through per-user delegated OAuth 2.0 (3LO) with PKCE, subject to AllowedEmailDomains and AllowedOAuthTenantIDs. Default 0: no user can initiate a personal OAuth flow."})
30661
+ AllowUserDelegatedOAuth?: boolean;
30662
+
30663
+ @Field({nullable: true, description: "Optional comma-separated allowlist of identity tenant identifiers (Gate 3) that a user-delegated OAuth token must carry: Azure AD tenant IDs (tid) or Google Workspace hosted domains (hd). NULL means no tenant restriction beyond AllowedEmailDomains."})
30664
+ @MaxLength(1000)
30665
+ AllowedOAuthTenantIDs?: string;
30666
+
30667
+ @Field({nullable: true})
30668
+ @MaxLength(200)
30669
+ DefaultCredential?: string;
30670
+
29565
30671
  @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
30672
  ReadableFields___?: string[];
29567
30673
 
@@ -29602,6 +30708,27 @@ export class CreateMJCommunicationProviderInput {
29602
30708
  @Field(() => Boolean, { nullable: true })
29603
30709
  SupportsDrafts?: boolean;
29604
30710
 
30711
+ @Field(() => Boolean, { nullable: true })
30712
+ SupportsCalendar?: boolean;
30713
+
30714
+ @Field(() => Boolean, { nullable: true })
30715
+ SupportsFreeBusy?: boolean;
30716
+
30717
+ @Field({ nullable: true })
30718
+ EnterpriseScopeMode?: string;
30719
+
30720
+ @Field({ nullable: true })
30721
+ AllowedEmailDomains: string | null;
30722
+
30723
+ @Field({ nullable: true })
30724
+ DefaultCredentialID: string | null;
30725
+
30726
+ @Field(() => Boolean, { nullable: true })
30727
+ AllowUserDelegatedOAuth?: boolean;
30728
+
30729
+ @Field({ nullable: true })
30730
+ AllowedOAuthTenantIDs: string | null;
30731
+
29605
30732
  @Field(() => RestoreContextInput, { nullable: true })
29606
30733
  RestoreContext___?: RestoreContextInput;
29607
30734
  }
@@ -29642,6 +30769,27 @@ export class UpdateMJCommunicationProviderInput {
29642
30769
  @Field(() => Boolean, { nullable: true })
29643
30770
  SupportsDrafts?: boolean;
29644
30771
 
30772
+ @Field(() => Boolean, { nullable: true })
30773
+ SupportsCalendar?: boolean;
30774
+
30775
+ @Field(() => Boolean, { nullable: true })
30776
+ SupportsFreeBusy?: boolean;
30777
+
30778
+ @Field({ nullable: true })
30779
+ EnterpriseScopeMode?: string;
30780
+
30781
+ @Field({ nullable: true })
30782
+ AllowedEmailDomains?: string | null;
30783
+
30784
+ @Field({ nullable: true })
30785
+ DefaultCredentialID?: string | null;
30786
+
30787
+ @Field(() => Boolean, { nullable: true })
30788
+ AllowUserDelegatedOAuth?: boolean;
30789
+
30790
+ @Field({ nullable: true })
30791
+ AllowedOAuthTenantIDs?: string | null;
30792
+
29645
30793
  @Field(() => [KeyValuePairInput], { nullable: true })
29646
30794
  OldValues___?: KeyValuePairInput[];
29647
30795
 
@@ -30205,49 +31353,1242 @@ export class MJCompanyIntegrationEntityMap_ {
30205
31353
 
30206
31354
  }
30207
31355
 
30208
- //****************************************************************************
30209
- // INPUT TYPE for MJ: Company Integration Entity Maps
30210
- //****************************************************************************
30211
- @InputType()
30212
- export class CreateMJCompanyIntegrationEntityMapInput {
31356
+ //****************************************************************************
31357
+ // INPUT TYPE for MJ: Company Integration Entity Maps
31358
+ //****************************************************************************
31359
+ @InputType()
31360
+ export class CreateMJCompanyIntegrationEntityMapInput {
31361
+ @Field({ nullable: true })
31362
+ ID?: string;
31363
+
31364
+ @Field({ nullable: true })
31365
+ CompanyIntegrationID?: string;
31366
+
31367
+ @Field({ nullable: true })
31368
+ ExternalObjectName?: string;
31369
+
31370
+ @Field({ nullable: true })
31371
+ ExternalObjectLabel: string | null;
31372
+
31373
+ @Field({ nullable: true })
31374
+ EntityID?: string;
31375
+
31376
+ @Field({ nullable: true })
31377
+ SyncDirection?: string;
31378
+
31379
+ @Field(() => Boolean, { nullable: true })
31380
+ SyncEnabled?: boolean;
31381
+
31382
+ @Field({ nullable: true })
31383
+ MatchStrategy: string | null;
31384
+
31385
+ @Field({ nullable: true })
31386
+ ConflictResolution?: string;
31387
+
31388
+ @Field(() => Int, { nullable: true })
31389
+ Priority?: number;
31390
+
31391
+ @Field({ nullable: true })
31392
+ DeleteBehavior?: string;
31393
+
31394
+ @Field({ nullable: true })
31395
+ Status?: string;
31396
+
31397
+ @Field({ nullable: true })
31398
+ Configuration: string | null;
31399
+
31400
+ @Field(() => RestoreContextInput, { nullable: true })
31401
+ RestoreContext___?: RestoreContextInput;
31402
+ }
31403
+
31404
+
31405
+ //****************************************************************************
31406
+ // INPUT TYPE for MJ: Company Integration Entity Maps
31407
+ //****************************************************************************
31408
+ @InputType()
31409
+ export class UpdateMJCompanyIntegrationEntityMapInput {
31410
+ @Field()
31411
+ ID: string;
31412
+
31413
+ @Field({ nullable: true })
31414
+ CompanyIntegrationID?: string;
31415
+
31416
+ @Field({ nullable: true })
31417
+ ExternalObjectName?: string;
31418
+
31419
+ @Field({ nullable: true })
31420
+ ExternalObjectLabel?: string | null;
31421
+
31422
+ @Field({ nullable: true })
31423
+ EntityID?: string;
31424
+
31425
+ @Field({ nullable: true })
31426
+ SyncDirection?: string;
31427
+
31428
+ @Field(() => Boolean, { nullable: true })
31429
+ SyncEnabled?: boolean;
31430
+
31431
+ @Field({ nullable: true })
31432
+ MatchStrategy?: string | null;
31433
+
31434
+ @Field({ nullable: true })
31435
+ ConflictResolution?: string;
31436
+
31437
+ @Field(() => Int, { nullable: true })
31438
+ Priority?: number;
31439
+
31440
+ @Field({ nullable: true })
31441
+ DeleteBehavior?: string;
31442
+
31443
+ @Field({ nullable: true })
31444
+ Status?: string;
31445
+
31446
+ @Field({ nullable: true })
31447
+ Configuration?: string | null;
31448
+
31449
+ @Field(() => [KeyValuePairInput], { nullable: true })
31450
+ OldValues___?: KeyValuePairInput[];
31451
+
31452
+ @Field(() => RestoreContextInput, { nullable: true })
31453
+ RestoreContext___?: RestoreContextInput;
31454
+ }
31455
+
31456
+ //****************************************************************************
31457
+ // RESOLVER for MJ: Company Integration Entity Maps
31458
+ //****************************************************************************
31459
+ @ObjectType()
31460
+ export class RunMJCompanyIntegrationEntityMapViewResult {
31461
+ @Field(() => [MJCompanyIntegrationEntityMap_])
31462
+ Results: MJCompanyIntegrationEntityMap_[];
31463
+
31464
+ @Field(() => String, {nullable: true})
31465
+ UserViewRunID?: string;
31466
+
31467
+ @Field(() => Int, {nullable: true})
31468
+ RowCount: number;
31469
+
31470
+ @Field(() => Int, {nullable: true})
31471
+ TotalRowCount: number;
31472
+
31473
+ @Field(() => Int, {nullable: true})
31474
+ ExecutionTime: number;
31475
+
31476
+ @Field({nullable: true})
31477
+ ErrorMessage?: string;
31478
+
31479
+ @Field(() => Boolean, {nullable: false})
31480
+ Success: boolean;
31481
+ }
31482
+
31483
+ @Resolver(MJCompanyIntegrationEntityMap_)
31484
+ export class MJCompanyIntegrationEntityMapResolver extends ResolverBase {
31485
+ @Query(() => RunMJCompanyIntegrationEntityMapViewResult)
31486
+ async RunMJCompanyIntegrationEntityMapViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31487
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31488
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
31489
+ }
31490
+
31491
+ @Query(() => RunMJCompanyIntegrationEntityMapViewResult)
31492
+ async RunMJCompanyIntegrationEntityMapViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31493
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31494
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
31495
+ }
31496
+
31497
+ @Query(() => RunMJCompanyIntegrationEntityMapViewResult)
31498
+ async RunMJCompanyIntegrationEntityMapDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31499
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31500
+ input.EntityName = 'MJ: Company Integration Entity Maps';
31501
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
31502
+ }
31503
+ @Query(() => MJCompanyIntegrationEntityMap_, { nullable: true })
31504
+ async MJCompanyIntegrationEntityMap(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationEntityMap_ | null> {
31505
+ this.CheckUserReadPermissions('MJ: Company Integration Entity Maps', userPayload);
31506
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31507
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCompanyIntegrationEntityMaps')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Company Integration Entity Maps', userPayload, EntityPermissionType.Read, 'AND');
31508
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
31509
+ const result = await this.MapFieldNamesToCodeNames('MJ: Company Integration Entity Maps', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
31510
+ return result;
31511
+ }
31512
+
31513
+ @Mutation(() => MJCompanyIntegrationEntityMap_)
31514
+ async CreateMJCompanyIntegrationEntityMap(
31515
+ @Arg('input', () => CreateMJCompanyIntegrationEntityMapInput) input: CreateMJCompanyIntegrationEntityMapInput,
31516
+ @Ctx() { providers, userPayload }: AppContext,
31517
+ @PubSub() pubSub: PubSubEngine
31518
+ ) {
31519
+ const provider = GetReadWriteProvider(providers);
31520
+ return this.CreateRecord('MJ: Company Integration Entity Maps', input, provider, userPayload, pubSub)
31521
+ }
31522
+
31523
+ @Mutation(() => MJCompanyIntegrationEntityMap_)
31524
+ async UpdateMJCompanyIntegrationEntityMap(
31525
+ @Arg('input', () => UpdateMJCompanyIntegrationEntityMapInput) input: UpdateMJCompanyIntegrationEntityMapInput,
31526
+ @Ctx() { providers, userPayload }: AppContext,
31527
+ @PubSub() pubSub: PubSubEngine
31528
+ ) {
31529
+ const provider = GetReadWriteProvider(providers);
31530
+ return this.UpdateRecord('MJ: Company Integration Entity Maps', input, provider, userPayload, pubSub);
31531
+ }
31532
+
31533
+ @Mutation(() => MJCompanyIntegrationEntityMap_)
31534
+ async DeleteMJCompanyIntegrationEntityMap(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31535
+ const provider = GetReadWriteProvider(providers);
31536
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
31537
+ return this.DeleteRecord('MJ: Company Integration Entity Maps', key, options, provider, userPayload, pubSub);
31538
+ }
31539
+
31540
+ }
31541
+
31542
+ //****************************************************************************
31543
+ // ENTITY CLASS for MJ: Company Integration Field Maps
31544
+ //****************************************************************************
31545
+ @ObjectType({ description: "Maps individual fields between an external source object and a MemberJunction entity, with optional transform pipeline." })
31546
+ export class MJCompanyIntegrationFieldMap_ {
31547
+ @Field()
31548
+ @MaxLength(36)
31549
+ ID: string;
31550
+
31551
+ @Field({nullable: true})
31552
+ @MaxLength(36)
31553
+ EntityMapID?: string;
31554
+
31555
+ @Field({nullable: true, description: "The field/column name in the external source system."})
31556
+ @MaxLength(500)
31557
+ SourceFieldName?: string;
31558
+
31559
+ @Field({nullable: true, description: "Optional human-friendly label for the source field."})
31560
+ @MaxLength(500)
31561
+ SourceFieldLabel?: string;
31562
+
31563
+ @Field({nullable: true, description: "The MJ entity field name this source field maps to."})
31564
+ @MaxLength(500)
31565
+ DestinationFieldName?: string;
31566
+
31567
+ @Field({nullable: true, description: "Optional human-friendly label for the destination field."})
31568
+ @MaxLength(500)
31569
+ DestinationFieldLabel?: string;
31570
+
31571
+ @Field({nullable: true, description: "Direction of field mapping: SourceToDest, DestToSource, or Both."})
31572
+ @MaxLength(50)
31573
+ Direction?: string;
31574
+
31575
+ @Field({nullable: true, description: "JSON array of transform names to apply in order (e.g. [\"trim\", \"uppercase\"]). See FieldMappingEngine for available transforms."})
31576
+ TransformPipeline?: string;
31577
+
31578
+ @Field(() => Boolean, {nullable: true, description: "When true, this field is used by the MatchEngine to find existing records during sync."})
31579
+ IsKeyField?: boolean;
31580
+
31581
+ @Field(() => Boolean, {nullable: true, description: "When true, a sync record is rejected if this field has no value."})
31582
+ IsRequired?: boolean;
31583
+
31584
+ @Field({nullable: true, description: "Default value to use when the source field is null or missing."})
31585
+ DefaultValue?: string;
31586
+
31587
+ @Field(() => Int, {nullable: true, description: "Processing order for this field mapping within the entity map."})
31588
+ Priority?: number;
31589
+
31590
+ @Field({nullable: true, description: "Whether this field mapping is Active or Inactive."})
31591
+ @MaxLength(50)
31592
+ Status?: string;
31593
+
31594
+ @Field()
31595
+ _mj__CreatedAt: Date;
31596
+
31597
+ @Field()
31598
+ _mj__UpdatedAt: Date;
31599
+
31600
+ @Field({nullable: true})
31601
+ @MaxLength(500)
31602
+ EntityMap?: string;
31603
+
31604
+ @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.` })
31605
+ ReadableFields___?: string[];
31606
+
31607
+ }
31608
+
31609
+ //****************************************************************************
31610
+ // INPUT TYPE for MJ: Company Integration Field Maps
31611
+ //****************************************************************************
31612
+ @InputType()
31613
+ export class CreateMJCompanyIntegrationFieldMapInput {
31614
+ @Field({ nullable: true })
31615
+ ID?: string;
31616
+
31617
+ @Field({ nullable: true })
31618
+ EntityMapID?: string;
31619
+
31620
+ @Field({ nullable: true })
31621
+ SourceFieldName?: string;
31622
+
31623
+ @Field({ nullable: true })
31624
+ SourceFieldLabel: string | null;
31625
+
31626
+ @Field({ nullable: true })
31627
+ DestinationFieldName?: string;
31628
+
31629
+ @Field({ nullable: true })
31630
+ DestinationFieldLabel: string | null;
31631
+
31632
+ @Field({ nullable: true })
31633
+ Direction?: string;
31634
+
31635
+ @Field({ nullable: true })
31636
+ TransformPipeline: string | null;
31637
+
31638
+ @Field(() => Boolean, { nullable: true })
31639
+ IsKeyField?: boolean;
31640
+
31641
+ @Field(() => Boolean, { nullable: true })
31642
+ IsRequired?: boolean;
31643
+
31644
+ @Field({ nullable: true })
31645
+ DefaultValue: string | null;
31646
+
31647
+ @Field(() => Int, { nullable: true })
31648
+ Priority?: number;
31649
+
31650
+ @Field({ nullable: true })
31651
+ Status?: string;
31652
+
31653
+ @Field(() => RestoreContextInput, { nullable: true })
31654
+ RestoreContext___?: RestoreContextInput;
31655
+ }
31656
+
31657
+
31658
+ //****************************************************************************
31659
+ // INPUT TYPE for MJ: Company Integration Field Maps
31660
+ //****************************************************************************
31661
+ @InputType()
31662
+ export class UpdateMJCompanyIntegrationFieldMapInput {
31663
+ @Field()
31664
+ ID: string;
31665
+
31666
+ @Field({ nullable: true })
31667
+ EntityMapID?: string;
31668
+
31669
+ @Field({ nullable: true })
31670
+ SourceFieldName?: string;
31671
+
31672
+ @Field({ nullable: true })
31673
+ SourceFieldLabel?: string | null;
31674
+
31675
+ @Field({ nullable: true })
31676
+ DestinationFieldName?: string;
31677
+
31678
+ @Field({ nullable: true })
31679
+ DestinationFieldLabel?: string | null;
31680
+
31681
+ @Field({ nullable: true })
31682
+ Direction?: string;
31683
+
31684
+ @Field({ nullable: true })
31685
+ TransformPipeline?: string | null;
31686
+
31687
+ @Field(() => Boolean, { nullable: true })
31688
+ IsKeyField?: boolean;
31689
+
31690
+ @Field(() => Boolean, { nullable: true })
31691
+ IsRequired?: boolean;
31692
+
31693
+ @Field({ nullable: true })
31694
+ DefaultValue?: string | null;
31695
+
31696
+ @Field(() => Int, { nullable: true })
31697
+ Priority?: number;
31698
+
31699
+ @Field({ nullable: true })
31700
+ Status?: string;
31701
+
31702
+ @Field(() => [KeyValuePairInput], { nullable: true })
31703
+ OldValues___?: KeyValuePairInput[];
31704
+
31705
+ @Field(() => RestoreContextInput, { nullable: true })
31706
+ RestoreContext___?: RestoreContextInput;
31707
+ }
31708
+
31709
+ //****************************************************************************
31710
+ // RESOLVER for MJ: Company Integration Field Maps
31711
+ //****************************************************************************
31712
+ @ObjectType()
31713
+ export class RunMJCompanyIntegrationFieldMapViewResult {
31714
+ @Field(() => [MJCompanyIntegrationFieldMap_])
31715
+ Results: MJCompanyIntegrationFieldMap_[];
31716
+
31717
+ @Field(() => String, {nullable: true})
31718
+ UserViewRunID?: string;
31719
+
31720
+ @Field(() => Int, {nullable: true})
31721
+ RowCount: number;
31722
+
31723
+ @Field(() => Int, {nullable: true})
31724
+ TotalRowCount: number;
31725
+
31726
+ @Field(() => Int, {nullable: true})
31727
+ ExecutionTime: number;
31728
+
31729
+ @Field({nullable: true})
31730
+ ErrorMessage?: string;
31731
+
31732
+ @Field(() => Boolean, {nullable: false})
31733
+ Success: boolean;
31734
+ }
31735
+
31736
+ @Resolver(MJCompanyIntegrationFieldMap_)
31737
+ export class MJCompanyIntegrationFieldMapResolver extends ResolverBase {
31738
+ @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
31739
+ async RunMJCompanyIntegrationFieldMapViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31740
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31741
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
31742
+ }
31743
+
31744
+ @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
31745
+ async RunMJCompanyIntegrationFieldMapViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31746
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31747
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
31748
+ }
31749
+
31750
+ @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
31751
+ async RunMJCompanyIntegrationFieldMapDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31752
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31753
+ input.EntityName = 'MJ: Company Integration Field Maps';
31754
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
31755
+ }
31756
+ @Query(() => MJCompanyIntegrationFieldMap_, { nullable: true })
31757
+ async MJCompanyIntegrationFieldMap(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationFieldMap_ | null> {
31758
+ this.CheckUserReadPermissions('MJ: Company Integration Field Maps', userPayload);
31759
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31760
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCompanyIntegrationFieldMaps')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Company Integration Field Maps', userPayload, EntityPermissionType.Read, 'AND');
31761
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
31762
+ const result = await this.MapFieldNamesToCodeNames('MJ: Company Integration Field Maps', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
31763
+ return result;
31764
+ }
31765
+
31766
+ @Mutation(() => MJCompanyIntegrationFieldMap_)
31767
+ async CreateMJCompanyIntegrationFieldMap(
31768
+ @Arg('input', () => CreateMJCompanyIntegrationFieldMapInput) input: CreateMJCompanyIntegrationFieldMapInput,
31769
+ @Ctx() { providers, userPayload }: AppContext,
31770
+ @PubSub() pubSub: PubSubEngine
31771
+ ) {
31772
+ const provider = GetReadWriteProvider(providers);
31773
+ return this.CreateRecord('MJ: Company Integration Field Maps', input, provider, userPayload, pubSub)
31774
+ }
31775
+
31776
+ @Mutation(() => MJCompanyIntegrationFieldMap_)
31777
+ async UpdateMJCompanyIntegrationFieldMap(
31778
+ @Arg('input', () => UpdateMJCompanyIntegrationFieldMapInput) input: UpdateMJCompanyIntegrationFieldMapInput,
31779
+ @Ctx() { providers, userPayload }: AppContext,
31780
+ @PubSub() pubSub: PubSubEngine
31781
+ ) {
31782
+ const provider = GetReadWriteProvider(providers);
31783
+ return this.UpdateRecord('MJ: Company Integration Field Maps', input, provider, userPayload, pubSub);
31784
+ }
31785
+
31786
+ @Mutation(() => MJCompanyIntegrationFieldMap_)
31787
+ async DeleteMJCompanyIntegrationFieldMap(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
31788
+ const provider = GetReadWriteProvider(providers);
31789
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
31790
+ return this.DeleteRecord('MJ: Company Integration Field Maps', key, options, provider, userPayload, pubSub);
31791
+ }
31792
+
31793
+ }
31794
+
31795
+ //****************************************************************************
31796
+ // ENTITY CLASS for MJ: Company Integration Object Fields
31797
+ //****************************************************************************
31798
+ @ObjectType({ description: "A field of a CompanyIntegrationObject: the declared field definition rebased with this connection's own discovery and sampling (observed width, provenance), with selection separate from Status." })
31799
+ export class MJCompanyIntegrationObjectField_ {
31800
+ @Field()
31801
+ @MaxLength(36)
31802
+ ID: string;
31803
+
31804
+ @Field({nullable: true, description: "Field name as returned by the external API"})
31805
+ @MaxLength(255)
31806
+ Name?: string;
31807
+
31808
+ @Field({nullable: true, description: "Human-friendly display label for the field"})
31809
+ @MaxLength(255)
31810
+ DisplayName?: string;
31811
+
31812
+ @Field({nullable: true, description: "Description of what this field represents"})
31813
+ Description?: string;
31814
+
31815
+ @Field({nullable: true, description: "UI grouping category within the object"})
31816
+ @MaxLength(100)
31817
+ Category?: string;
31818
+
31819
+ @Field({nullable: true, description: "Data type of the field (e.g., nvarchar, int, datetime, decimal, bit). Uses same type vocabulary as EntityField."})
31820
+ @MaxLength(100)
31821
+ Type?: string;
31822
+
31823
+ @Field(() => Int, {nullable: true, description: "Maximum length for string types"})
31824
+ Length?: number;
31825
+
31826
+ @Field(() => Int, {nullable: true, description: "Numeric precision"})
31827
+ Precision?: number;
31828
+
31829
+ @Field(() => Int, {nullable: true, description: "Numeric scale"})
31830
+ Scale?: number;
31831
+
31832
+ @Field(() => Boolean, {nullable: true, description: "Whether the field can contain NULL values"})
31833
+ AllowsNull?: boolean;
31834
+
31835
+ @Field({nullable: true, description: "Default value from the source system"})
31836
+ @MaxLength(255)
31837
+ DefaultValue?: string;
31838
+
31839
+ @Field(() => Boolean, {nullable: true, description: "Whether this field is part of the object primary key"})
31840
+ IsPrimaryKey?: boolean;
31841
+
31842
+ @Field(() => Boolean, {nullable: true, description: "Whether values must be unique across all records"})
31843
+ IsUniqueKey?: boolean;
31844
+
31845
+ @Field(() => Boolean, {nullable: true, description: "Whether this field cannot be written back to the source system"})
31846
+ IsReadOnly?: boolean;
31847
+
31848
+ @Field(() => Boolean, {nullable: true, description: "Whether this field is required for create/update operations"})
31849
+ IsRequired?: boolean;
31850
+
31851
+ @Field({nullable: true, description: "The field name on the related IntegrationObject that this FK points to (typically the PK field)"})
31852
+ @MaxLength(255)
31853
+ RelatedIntegrationObjectFieldName?: string;
31854
+
31855
+ @Field(() => Int, {nullable: true, description: "Display and processing order within the object. Lower numbers appear first."})
31856
+ Sequence?: number;
31857
+
31858
+ @Field({nullable: true, description: "Freeform JSON for connector-specific field configuration"})
31859
+ Configuration?: string;
31860
+
31861
+ @Field({nullable: true, description: "Active, Deprecated, or Disabled. Mirrors EntityField status values."})
31862
+ @MaxLength(25)
31863
+ Status?: string;
31864
+
31865
+ @Field(() => Boolean, {nullable: true, description: "When true, this field was dynamically discovered by IntrospectSchema and is not defined in static connector metadata."})
31866
+ IsCustom?: boolean;
31867
+
31868
+ @Field({nullable: true, description: "Provenance of this CompanyIntegrationObjectField row: Declared (from static research/docs), Discovered (from runtime API introspection), Custom (customer-defined custom field, e.g., HubSpot custom property on standard object). Drives merge precedence — discovered/runtime wins for type/constraints; declared wins for description/label/sequence/category."})
31869
+ @MaxLength(20)
31870
+ MetadataSource?: string;
31871
+
31872
+ @Field({nullable: true})
31873
+ @MaxLength(36)
31874
+ CompanyIntegrationObjectID?: string;
31875
+
31876
+ @Field({nullable: true})
31877
+ @MaxLength(36)
31878
+ RelatedCompanyIntegrationObjectID?: string;
31879
+
31880
+ @Field({nullable: true})
31881
+ @MaxLength(36)
31882
+ IntegrationObjectFieldID?: string;
31883
+
31884
+ @Field(() => Int, {nullable: true, description: "The longest value sampling actually saw, kept SEPARATE from Length. Length carries the padded width the schema builder will use; this carries the evidence. Without both, a width cannot be audited and a truncation cannot be distinguished from a bad guess."})
31885
+ ObservedMaxLength?: number;
31886
+
31887
+ @Field({nullable: true, description: "Where this row came from: Declared (the connector shipped catalog), Endpoint (the source listed it) or Sampled (only streaming records revealed it). Answers \"whose is this\" for a connection whose catalog no longer matches the connector default."})
31888
+ @MaxLength(20)
31889
+ Provenance?: string;
31890
+
31891
+ @Field({nullable: true, description: "The per-attribute merge log for this row: which side won each overlay decision and why. The persist already computes this and throws it away, so the operator has never been able to see why a width or a key looks the way it does."})
31892
+ ProvenanceDetail?: string;
31893
+
31894
+ @Field(() => Boolean, {nullable: true, description: "Whether this connection syncs this item. THE AXIS THAT MAKES THE CONTRACT SATISFIABLE: Status says whether the item is in the catalog at all, IsSelected says whether the customer chose it. Conflating the two is why a newly discovered object had to arrive ENABLED — a disabled object was excluded from schema introspection, so it never reached key inference and never reached a migration."})
31895
+ IsSelected?: boolean;
31896
+
31897
+ @Field({nullable: true, description: "When the selection last changed. Lets the UI distinguish \"never chosen\" from \"deliberately deselected\"."})
31898
+ SelectedAt?: Date;
31899
+
31900
+ @Field({nullable: true, description: "When this connection first observed this item. Set once and never updated, so a catalog can be read as a history of what the source exposed and when."})
31901
+ FirstSeenAt?: Date;
31902
+
31903
+ @Field({nullable: true, description: "When this connection most recently observed this item. A row whose LastSeenAt is older than the connection last discovery is what \"absent from the source\" means."})
31904
+ LastSeenAt?: Date;
31905
+
31906
+ @Field({nullable: true, description: "When sampling last streamed records for this item. Distinct from LastSeenAt: an item can be listed by an endpoint without ever being sampled, and unsampled items are exactly the ones whose widths and keys came from the declared catalog rather than from data."})
31907
+ LastSampledAt?: Date;
31908
+
31909
+ @Field()
31910
+ _mj__CreatedAt: Date;
31911
+
31912
+ @Field()
31913
+ _mj__UpdatedAt: Date;
31914
+
31915
+ @Field({nullable: true})
31916
+ @MaxLength(255)
31917
+ CompanyIntegrationObject?: string;
31918
+
31919
+ @Field({nullable: true})
31920
+ @MaxLength(255)
31921
+ RelatedCompanyIntegrationObject?: string;
31922
+
31923
+ @Field({nullable: true})
31924
+ @MaxLength(255)
31925
+ IntegrationObjectField?: string;
31926
+
31927
+ @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.` })
31928
+ ReadableFields___?: string[];
31929
+
31930
+ }
31931
+
31932
+ //****************************************************************************
31933
+ // INPUT TYPE for MJ: Company Integration Object Fields
31934
+ //****************************************************************************
31935
+ @InputType()
31936
+ export class CreateMJCompanyIntegrationObjectFieldInput {
31937
+ @Field({ nullable: true })
31938
+ ID?: string;
31939
+
31940
+ @Field({ nullable: true })
31941
+ Name?: string;
31942
+
31943
+ @Field({ nullable: true })
31944
+ DisplayName: string | null;
31945
+
31946
+ @Field({ nullable: true })
31947
+ Description: string | null;
31948
+
31949
+ @Field({ nullable: true })
31950
+ Category: string | null;
31951
+
31952
+ @Field({ nullable: true })
31953
+ Type?: string;
31954
+
31955
+ @Field(() => Int, { nullable: true })
31956
+ Length: number | null;
31957
+
31958
+ @Field(() => Int, { nullable: true })
31959
+ Precision: number | null;
31960
+
31961
+ @Field(() => Int, { nullable: true })
31962
+ Scale: number | null;
31963
+
31964
+ @Field(() => Boolean, { nullable: true })
31965
+ AllowsNull?: boolean;
31966
+
31967
+ @Field({ nullable: true })
31968
+ DefaultValue: string | null;
31969
+
31970
+ @Field(() => Boolean, { nullable: true })
31971
+ IsPrimaryKey?: boolean;
31972
+
31973
+ @Field(() => Boolean, { nullable: true })
31974
+ IsUniqueKey?: boolean;
31975
+
31976
+ @Field(() => Boolean, { nullable: true })
31977
+ IsReadOnly?: boolean;
31978
+
31979
+ @Field(() => Boolean, { nullable: true })
31980
+ IsRequired?: boolean;
31981
+
31982
+ @Field({ nullable: true })
31983
+ RelatedIntegrationObjectFieldName: string | null;
31984
+
31985
+ @Field(() => Int, { nullable: true })
31986
+ Sequence?: number;
31987
+
31988
+ @Field({ nullable: true })
31989
+ Configuration: string | null;
31990
+
31991
+ @Field({ nullable: true })
31992
+ Status?: string;
31993
+
31994
+ @Field(() => Boolean, { nullable: true })
31995
+ IsCustom?: boolean;
31996
+
31997
+ @Field({ nullable: true })
31998
+ MetadataSource?: string;
31999
+
32000
+ @Field({ nullable: true })
32001
+ CompanyIntegrationObjectID?: string;
32002
+
32003
+ @Field({ nullable: true })
32004
+ RelatedCompanyIntegrationObjectID: string | null;
32005
+
32006
+ @Field({ nullable: true })
32007
+ IntegrationObjectFieldID: string | null;
32008
+
32009
+ @Field(() => Int, { nullable: true })
32010
+ ObservedMaxLength: number | null;
32011
+
32012
+ @Field({ nullable: true })
32013
+ Provenance?: string;
32014
+
32015
+ @Field({ nullable: true })
32016
+ ProvenanceDetail: string | null;
32017
+
32018
+ @Field(() => Boolean, { nullable: true })
32019
+ IsSelected?: boolean;
32020
+
32021
+ @Field({ nullable: true })
32022
+ SelectedAt: Date | null;
32023
+
32024
+ @Field({ nullable: true })
32025
+ FirstSeenAt: Date | null;
32026
+
32027
+ @Field({ nullable: true })
32028
+ LastSeenAt: Date | null;
32029
+
32030
+ @Field({ nullable: true })
32031
+ LastSampledAt: Date | null;
32032
+
32033
+ @Field(() => RestoreContextInput, { nullable: true })
32034
+ RestoreContext___?: RestoreContextInput;
32035
+ }
32036
+
32037
+
32038
+ //****************************************************************************
32039
+ // INPUT TYPE for MJ: Company Integration Object Fields
32040
+ //****************************************************************************
32041
+ @InputType()
32042
+ export class UpdateMJCompanyIntegrationObjectFieldInput {
32043
+ @Field()
32044
+ ID: string;
32045
+
32046
+ @Field({ nullable: true })
32047
+ Name?: string;
32048
+
32049
+ @Field({ nullable: true })
32050
+ DisplayName?: string | null;
32051
+
32052
+ @Field({ nullable: true })
32053
+ Description?: string | null;
32054
+
32055
+ @Field({ nullable: true })
32056
+ Category?: string | null;
32057
+
32058
+ @Field({ nullable: true })
32059
+ Type?: string;
32060
+
32061
+ @Field(() => Int, { nullable: true })
32062
+ Length?: number | null;
32063
+
32064
+ @Field(() => Int, { nullable: true })
32065
+ Precision?: number | null;
32066
+
32067
+ @Field(() => Int, { nullable: true })
32068
+ Scale?: number | null;
32069
+
32070
+ @Field(() => Boolean, { nullable: true })
32071
+ AllowsNull?: boolean;
32072
+
32073
+ @Field({ nullable: true })
32074
+ DefaultValue?: string | null;
32075
+
32076
+ @Field(() => Boolean, { nullable: true })
32077
+ IsPrimaryKey?: boolean;
32078
+
32079
+ @Field(() => Boolean, { nullable: true })
32080
+ IsUniqueKey?: boolean;
32081
+
32082
+ @Field(() => Boolean, { nullable: true })
32083
+ IsReadOnly?: boolean;
32084
+
32085
+ @Field(() => Boolean, { nullable: true })
32086
+ IsRequired?: boolean;
32087
+
32088
+ @Field({ nullable: true })
32089
+ RelatedIntegrationObjectFieldName?: string | null;
32090
+
32091
+ @Field(() => Int, { nullable: true })
32092
+ Sequence?: number;
32093
+
32094
+ @Field({ nullable: true })
32095
+ Configuration?: string | null;
32096
+
32097
+ @Field({ nullable: true })
32098
+ Status?: string;
32099
+
32100
+ @Field(() => Boolean, { nullable: true })
32101
+ IsCustom?: boolean;
32102
+
32103
+ @Field({ nullable: true })
32104
+ MetadataSource?: string;
32105
+
32106
+ @Field({ nullable: true })
32107
+ CompanyIntegrationObjectID?: string;
32108
+
32109
+ @Field({ nullable: true })
32110
+ RelatedCompanyIntegrationObjectID?: string | null;
32111
+
32112
+ @Field({ nullable: true })
32113
+ IntegrationObjectFieldID?: string | null;
32114
+
32115
+ @Field(() => Int, { nullable: true })
32116
+ ObservedMaxLength?: number | null;
32117
+
32118
+ @Field({ nullable: true })
32119
+ Provenance?: string;
32120
+
32121
+ @Field({ nullable: true })
32122
+ ProvenanceDetail?: string | null;
32123
+
32124
+ @Field(() => Boolean, { nullable: true })
32125
+ IsSelected?: boolean;
32126
+
32127
+ @Field({ nullable: true })
32128
+ SelectedAt?: Date | null;
32129
+
32130
+ @Field({ nullable: true })
32131
+ FirstSeenAt?: Date | null;
32132
+
32133
+ @Field({ nullable: true })
32134
+ LastSeenAt?: Date | null;
32135
+
32136
+ @Field({ nullable: true })
32137
+ LastSampledAt?: Date | null;
32138
+
32139
+ @Field(() => [KeyValuePairInput], { nullable: true })
32140
+ OldValues___?: KeyValuePairInput[];
32141
+
32142
+ @Field(() => RestoreContextInput, { nullable: true })
32143
+ RestoreContext___?: RestoreContextInput;
32144
+ }
32145
+
32146
+ //****************************************************************************
32147
+ // RESOLVER for MJ: Company Integration Object Fields
32148
+ //****************************************************************************
32149
+ @ObjectType()
32150
+ export class RunMJCompanyIntegrationObjectFieldViewResult {
32151
+ @Field(() => [MJCompanyIntegrationObjectField_])
32152
+ Results: MJCompanyIntegrationObjectField_[];
32153
+
32154
+ @Field(() => String, {nullable: true})
32155
+ UserViewRunID?: string;
32156
+
32157
+ @Field(() => Int, {nullable: true})
32158
+ RowCount: number;
32159
+
32160
+ @Field(() => Int, {nullable: true})
32161
+ TotalRowCount: number;
32162
+
32163
+ @Field(() => Int, {nullable: true})
32164
+ ExecutionTime: number;
32165
+
32166
+ @Field({nullable: true})
32167
+ ErrorMessage?: string;
32168
+
32169
+ @Field(() => Boolean, {nullable: false})
32170
+ Success: boolean;
32171
+ }
32172
+
32173
+ @Resolver(MJCompanyIntegrationObjectField_)
32174
+ export class MJCompanyIntegrationObjectFieldResolver extends ResolverBase {
32175
+ @Query(() => RunMJCompanyIntegrationObjectFieldViewResult)
32176
+ async RunMJCompanyIntegrationObjectFieldViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32177
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
32178
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
32179
+ }
32180
+
32181
+ @Query(() => RunMJCompanyIntegrationObjectFieldViewResult)
32182
+ async RunMJCompanyIntegrationObjectFieldViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32183
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
32184
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
32185
+ }
32186
+
32187
+ @Query(() => RunMJCompanyIntegrationObjectFieldViewResult)
32188
+ async RunMJCompanyIntegrationObjectFieldDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32189
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
32190
+ input.EntityName = 'MJ: Company Integration Object Fields';
32191
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
32192
+ }
32193
+ @Query(() => MJCompanyIntegrationObjectField_, { nullable: true })
32194
+ async MJCompanyIntegrationObjectField(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationObjectField_ | null> {
32195
+ this.CheckUserReadPermissions('MJ: Company Integration Object Fields', userPayload);
32196
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
32197
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCompanyIntegrationObjectFields')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Company Integration Object Fields', userPayload, EntityPermissionType.Read, 'AND');
32198
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
32199
+ const result = await this.MapFieldNamesToCodeNames('MJ: Company Integration Object Fields', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
32200
+ return result;
32201
+ }
32202
+
32203
+ @Mutation(() => MJCompanyIntegrationObjectField_)
32204
+ async CreateMJCompanyIntegrationObjectField(
32205
+ @Arg('input', () => CreateMJCompanyIntegrationObjectFieldInput) input: CreateMJCompanyIntegrationObjectFieldInput,
32206
+ @Ctx() { providers, userPayload }: AppContext,
32207
+ @PubSub() pubSub: PubSubEngine
32208
+ ) {
32209
+ const provider = GetReadWriteProvider(providers);
32210
+ return this.CreateRecord('MJ: Company Integration Object Fields', input, provider, userPayload, pubSub)
32211
+ }
32212
+
32213
+ @Mutation(() => MJCompanyIntegrationObjectField_)
32214
+ async UpdateMJCompanyIntegrationObjectField(
32215
+ @Arg('input', () => UpdateMJCompanyIntegrationObjectFieldInput) input: UpdateMJCompanyIntegrationObjectFieldInput,
32216
+ @Ctx() { providers, userPayload }: AppContext,
32217
+ @PubSub() pubSub: PubSubEngine
32218
+ ) {
32219
+ const provider = GetReadWriteProvider(providers);
32220
+ return this.UpdateRecord('MJ: Company Integration Object Fields', input, provider, userPayload, pubSub);
32221
+ }
32222
+
32223
+ @Mutation(() => MJCompanyIntegrationObjectField_)
32224
+ async DeleteMJCompanyIntegrationObjectField(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32225
+ const provider = GetReadWriteProvider(providers);
32226
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
32227
+ return this.DeleteRecord('MJ: Company Integration Object Fields', key, options, provider, userPayload, pubSub);
32228
+ }
32229
+
32230
+ }
32231
+
32232
+ //****************************************************************************
32233
+ // ENTITY CLASS for MJ: Company Integration Objects
32234
+ //****************************************************************************
32235
+ @ObjectType({ description: "One connection's (CompanyIntegration's) own copy of an integration object: the vendor's declared definition rebased with what THIS connection discovered and sampled, with provenance, and with selection (IsSelected) as an axis separate from Status. Replaces reading IntegrationObject directly so two connections of one connector no longer overwrite each other." })
32236
+ export class MJCompanyIntegrationObject_ {
32237
+ @Field()
32238
+ @MaxLength(36)
32239
+ ID: string;
32240
+
32241
+ @Field({nullable: true, description: "The integration (connector) this object belongs to. Always the IntegrationID of the owning CompanyIntegration, copied onto the row by the catalog writer so the per-connection catalog can be read through the same projection as the shared IntegrationObject catalog."})
32242
+ @MaxLength(36)
32243
+ IntegrationID?: string;
32244
+
32245
+ @Field({nullable: true, description: "Internal/programmatic name of the external object (e.g., Members, Events)"})
32246
+ @MaxLength(255)
32247
+ Name?: string;
32248
+
32249
+ @Field({nullable: true, description: "Human-friendly display label"})
32250
+ @MaxLength(255)
32251
+ DisplayName?: string;
32252
+
32253
+ @Field({nullable: true, description: "Description of what this external object represents"})
32254
+ Description?: string;
32255
+
32256
+ @Field({nullable: true, description: "UI grouping category (e.g., Membership, Events, Finance)"})
32257
+ @MaxLength(100)
32258
+ Category?: string;
32259
+
32260
+ @Field({nullable: true, description: "API endpoint path, may include template variables like {ProfileID} that are resolved at runtime from parent object records"})
32261
+ @MaxLength(500)
32262
+ APIPath?: string;
32263
+
32264
+ @Field({nullable: true, description: "JSON key used to extract the data array from the API response envelope. NULL means the response is a root-level array."})
32265
+ @MaxLength(255)
32266
+ ResponseDataKey?: string;
32267
+
32268
+ @Field(() => Int, {nullable: true, description: "Number of records to request per page from the API"})
32269
+ DefaultPageSize?: number;
32270
+
32271
+ @Field(() => Boolean, {nullable: true, description: "Whether this endpoint supports paginated fetching"})
32272
+ SupportsPagination?: boolean;
32273
+
32274
+ @Field({nullable: true, description: "Pagination strategy: PageNumber (page index), Offset (record offset), Cursor (opaque token), or None"})
32275
+ @MaxLength(20)
32276
+ PaginationType?: string;
32277
+
32278
+ @Field(() => Boolean, {nullable: true, description: "Whether this object supports watermark-based incremental sync"})
32279
+ SupportsIncrementalSync?: boolean;
32280
+
32281
+ @Field(() => Boolean, {nullable: true, description: "Whether data can be pushed back to this object via the API"})
32282
+ SupportsWrite?: boolean;
32283
+
32284
+ @Field({nullable: true, description: "JSON object of default query parameters to include with every API request for this object"})
32285
+ DefaultQueryParams?: string;
32286
+
32287
+ @Field({nullable: true, description: "Freeform JSON for connector-specific configuration not covered by standard columns"})
32288
+ Configuration?: string;
32289
+
32290
+ @Field(() => Int, {nullable: true, description: "Processing and display order. Lower numbers are processed first."})
32291
+ Sequence?: number;
32292
+
32293
+ @Field({nullable: true, description: "Active, Deprecated, or Disabled. Mirrors EntityField status values."})
32294
+ @MaxLength(25)
32295
+ Status?: string;
32296
+
32297
+ @Field({nullable: true, description: "API path for create/update operations when different from the read APIPath. If NULL, the read APIPath is used for writes as well."})
32298
+ @MaxLength(500)
32299
+ WriteAPIPath?: string;
32300
+
32301
+ @Field({nullable: true, description: "HTTP method for create operations. Defaults to POST."})
32302
+ @MaxLength(10)
32303
+ WriteMethod?: string;
32304
+
32305
+ @Field({nullable: true, description: "HTTP method for delete operations. Defaults to DELETE."})
32306
+ @MaxLength(10)
32307
+ DeleteMethod?: string;
32308
+
32309
+ @Field(() => Boolean, {nullable: true, description: "When true, this object was dynamically discovered by IntrospectSchema and is not defined in static connector metadata."})
32310
+ IsCustom?: boolean;
32311
+
32312
+ @Field({nullable: true, description: "HTTP path template for create operations. Generic CRUD in BaseRESTIntegrationConnector substitutes parent IDs into {var} placeholders. NULL means create not supported via metadata-driven path."})
32313
+ CreateAPIPath?: string;
32314
+
32315
+ @Field({nullable: true, description: "HTTP method for create (typically POST). NULL means create not supported via metadata-driven path."})
32316
+ @MaxLength(20)
32317
+ CreateMethod?: string;
32318
+
32319
+ @Field({nullable: true, description: "Request body shape for create: flat (top-level fields), wrapped (under CreateBodyKey), or literal (connector overrides CreateRecord and supplies own body)."})
32320
+ @MaxLength(50)
32321
+ CreateBodyShape?: string;
32322
+
32323
+ @Field({nullable: true, description: "Wrapper key for create body when CreateBodyShape=wrapped. Example: 'member' for YourMembership which wraps body as {member:{...}}."})
32324
+ @MaxLength(100)
32325
+ CreateBodyKey?: string;
32326
+
32327
+ @Field({nullable: true, description: "Where the created record ID is found in the create response: path (URL of returned Location header), body (parsed from JSON response), header (specific named header)."})
32328
+ @MaxLength(20)
32329
+ CreateIDLocation?: string;
32330
+
32331
+ @Field({nullable: true, description: "HTTP path template for update operations. Typically contains {ID} placeholder substituted with the record ExternalID at runtime."})
32332
+ UpdateAPIPath?: string;
32333
+
32334
+ @Field({nullable: true, description: "HTTP method for update (typically PATCH or PUT)."})
32335
+ @MaxLength(20)
32336
+ UpdateMethod?: string;
32337
+
32338
+ @Field({nullable: true, description: "Request body shape for update: flat | wrapped | literal. See CreateBodyShape."})
32339
+ @MaxLength(50)
32340
+ UpdateBodyShape?: string;
32341
+
32342
+ @Field({nullable: true, description: "Wrapper key for update body when UpdateBodyShape=wrapped."})
32343
+ @MaxLength(100)
32344
+ UpdateBodyKey?: string;
32345
+
32346
+ @Field({nullable: true, description: "For update: where the target record ID is located in the request — typically 'path' (substituted into UpdateAPIPath URL template)."})
32347
+ @MaxLength(20)
32348
+ UpdateIDLocation?: string;
32349
+
32350
+ @Field({nullable: true, description: "HTTP path template for delete operations. Typically contains {ID} placeholder. NULL means delete not supported via metadata-driven path. (Existing DeleteMethod column carries the verb.)"})
32351
+ DeleteAPIPath?: string;
32352
+
32353
+ @Field({nullable: true, description: "For delete: where the target record ID is located — typically 'path'."})
32354
+ @MaxLength(20)
32355
+ DeleteIDLocation?: string;
32356
+
32357
+ @Field({nullable: true, description: "Vendor field name marking \"last changed\" — drives incremental sync filter when SupportsIncrementalSync=1. The exact filter syntax (e.g., $filter=Modified gt {value} or modified_since={value}) lives in Configuration.incrementalFilterFormat. Provable-only: leave NULL if docs do not name a watermark field."})
32358
+ @MaxLength(255)
32359
+ IncrementalWatermarkField?: string;
32360
+
32361
+ @Field({nullable: true, description: "Provenance of this CompanyIntegrationObject row: Declared (from static research/docs), Discovered (from runtime API introspection like Salesforce /describe), Custom (genuinely customer-created, e.g., HubSpot custom objects). Drives merge precedence in IntegrationSchemaSync."})
32362
+ @MaxLength(20)
32363
+ MetadataSource?: string;
32364
+
32365
+ @Field(() => Boolean, {nullable: true, description: "Whether this object supports record creation in the external system (per-operation granularity beyond SupportsWrite). Drives whether the generic CreateRecord path is wired and whether the object is offered for write-back create."})
32366
+ SupportsCreate?: boolean;
32367
+
32368
+ @Field(() => Boolean, {nullable: true, description: "Whether this object supports record updates in the external system (per-operation granularity beyond SupportsWrite)."})
32369
+ SupportsUpdate?: boolean;
32370
+
32371
+ @Field(() => Boolean, {nullable: true, description: "Whether this object supports record deletion/tombstoning in the external system (per-operation granularity beyond SupportsWrite)."})
32372
+ SupportsDelete?: boolean;
32373
+
32374
+ @Field({nullable: true, description: "Declared incremental sync strategy for this object (e.g. WatermarkIncremental, ContentHash, FullSnapshot). Informs how the engine narrows subsequent syncs."})
32375
+ @MaxLength(50)
32376
+ SyncStrategy?: string;
32377
+
32378
+ @Field(() => Boolean, {nullable: true, description: "Whether per-record content hashing is meaningful for this object (false for append-only/event streams where every row is new). Controls whether the engine uses content-hash to skip unchanged-row writes."})
32379
+ ContentHashApplicable?: boolean;
32380
+
32381
+ @Field({nullable: true, description: "Stable, monotonic ordering column (usually the PK) used for keyset/no-watermark resume of a scan. Null when the object has no stable key."})
32382
+ @MaxLength(255)
32383
+ StableOrderingKey?: string;
32384
+
32385
+ @Field({nullable: true})
32386
+ @MaxLength(36)
32387
+ CompanyIntegrationID?: string;
32388
+
32389
+ @Field({nullable: true})
32390
+ @MaxLength(36)
32391
+ IntegrationObjectID?: string;
32392
+
32393
+ @Field({nullable: true, description: "Where this row came from: Declared (the connector shipped catalog), Endpoint (the source listed it) or Sampled (only streaming records revealed it). Answers \"whose is this\" for a connection whose catalog no longer matches the connector default."})
32394
+ @MaxLength(20)
32395
+ Provenance?: string;
32396
+
32397
+ @Field({nullable: true, description: "The per-attribute merge log for this row: which side won each overlay decision and why. The persist already computes this and throws it away, so the operator has never been able to see why a width or a key looks the way it does."})
32398
+ ProvenanceDetail?: string;
32399
+
32400
+ @Field(() => Boolean, {nullable: true, description: "Whether this connection syncs this item. THE AXIS THAT MAKES THE CONTRACT SATISFIABLE: Status says whether the item is in the catalog at all, IsSelected says whether the customer chose it. Conflating the two is why a newly discovered object had to arrive ENABLED — a disabled object was excluded from schema introspection, so it never reached key inference and never reached a migration."})
32401
+ IsSelected?: boolean;
32402
+
32403
+ @Field({nullable: true, description: "When the selection last changed. Lets the UI distinguish \"never chosen\" from \"deliberately deselected\"."})
32404
+ SelectedAt?: Date;
32405
+
32406
+ @Field({nullable: true, description: "When this connection first observed this item. Set once and never updated, so a catalog can be read as a history of what the source exposed and when."})
32407
+ FirstSeenAt?: Date;
32408
+
32409
+ @Field({nullable: true, description: "When this connection most recently observed this item. A row whose LastSeenAt is older than the connection last discovery is what \"absent from the source\" means."})
32410
+ LastSeenAt?: Date;
32411
+
32412
+ @Field({nullable: true, description: "When sampling last streamed records for this item. Distinct from LastSeenAt: an item can be listed by an endpoint without ever being sampled, and unsampled items are exactly the ones whose widths and keys came from the declared catalog rather than from data."})
32413
+ LastSampledAt?: Date;
32414
+
32415
+ @Field()
32416
+ _mj__CreatedAt: Date;
32417
+
32418
+ @Field()
32419
+ _mj__UpdatedAt: Date;
32420
+
32421
+ @Field({nullable: true})
32422
+ @MaxLength(100)
32423
+ Integration?: string;
32424
+
32425
+ @Field({nullable: true})
32426
+ @MaxLength(255)
32427
+ CompanyIntegration?: string;
32428
+
32429
+ @Field({nullable: true})
32430
+ @MaxLength(255)
32431
+ IntegrationObject?: string;
32432
+
32433
+ @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.` })
32434
+ ReadableFields___?: string[];
32435
+
32436
+ }
32437
+
32438
+ //****************************************************************************
32439
+ // INPUT TYPE for MJ: Company Integration Objects
32440
+ //****************************************************************************
32441
+ @InputType()
32442
+ export class CreateMJCompanyIntegrationObjectInput {
32443
+ @Field({ nullable: true })
32444
+ ID?: string;
32445
+
32446
+ @Field({ nullable: true })
32447
+ IntegrationID?: string;
32448
+
32449
+ @Field({ nullable: true })
32450
+ Name?: string;
32451
+
32452
+ @Field({ nullable: true })
32453
+ DisplayName: string | null;
32454
+
32455
+ @Field({ nullable: true })
32456
+ Description: string | null;
32457
+
32458
+ @Field({ nullable: true })
32459
+ Category: string | null;
32460
+
32461
+ @Field({ nullable: true })
32462
+ APIPath?: string;
32463
+
32464
+ @Field({ nullable: true })
32465
+ ResponseDataKey: string | null;
32466
+
32467
+ @Field(() => Int, { nullable: true })
32468
+ DefaultPageSize?: number;
32469
+
32470
+ @Field(() => Boolean, { nullable: true })
32471
+ SupportsPagination?: boolean;
32472
+
32473
+ @Field({ nullable: true })
32474
+ PaginationType?: string;
32475
+
32476
+ @Field(() => Boolean, { nullable: true })
32477
+ SupportsIncrementalSync?: boolean;
32478
+
32479
+ @Field(() => Boolean, { nullable: true })
32480
+ SupportsWrite?: boolean;
32481
+
32482
+ @Field({ nullable: true })
32483
+ DefaultQueryParams: string | null;
32484
+
32485
+ @Field({ nullable: true })
32486
+ Configuration: string | null;
32487
+
32488
+ @Field(() => Int, { nullable: true })
32489
+ Sequence?: number;
32490
+
32491
+ @Field({ nullable: true })
32492
+ Status?: string;
32493
+
32494
+ @Field({ nullable: true })
32495
+ WriteAPIPath: string | null;
32496
+
32497
+ @Field({ nullable: true })
32498
+ WriteMethod?: string | null;
32499
+
32500
+ @Field({ nullable: true })
32501
+ DeleteMethod?: string | null;
32502
+
32503
+ @Field(() => Boolean, { nullable: true })
32504
+ IsCustom?: boolean;
32505
+
32506
+ @Field({ nullable: true })
32507
+ CreateAPIPath: string | null;
32508
+
32509
+ @Field({ nullable: true })
32510
+ CreateMethod: string | null;
32511
+
32512
+ @Field({ nullable: true })
32513
+ CreateBodyShape: string | null;
32514
+
32515
+ @Field({ nullable: true })
32516
+ CreateBodyKey: string | null;
32517
+
32518
+ @Field({ nullable: true })
32519
+ CreateIDLocation: string | null;
32520
+
30213
32521
  @Field({ nullable: true })
30214
- ID?: string;
32522
+ UpdateAPIPath: string | null;
30215
32523
 
30216
32524
  @Field({ nullable: true })
30217
- CompanyIntegrationID?: string;
32525
+ UpdateMethod: string | null;
30218
32526
 
30219
32527
  @Field({ nullable: true })
30220
- ExternalObjectName?: string;
32528
+ UpdateBodyShape: string | null;
30221
32529
 
30222
32530
  @Field({ nullable: true })
30223
- ExternalObjectLabel: string | null;
32531
+ UpdateBodyKey: string | null;
30224
32532
 
30225
32533
  @Field({ nullable: true })
30226
- EntityID?: string;
32534
+ UpdateIDLocation: string | null;
30227
32535
 
30228
32536
  @Field({ nullable: true })
30229
- SyncDirection?: string;
32537
+ DeleteAPIPath: string | null;
32538
+
32539
+ @Field({ nullable: true })
32540
+ DeleteIDLocation: string | null;
32541
+
32542
+ @Field({ nullable: true })
32543
+ IncrementalWatermarkField: string | null;
32544
+
32545
+ @Field({ nullable: true })
32546
+ MetadataSource?: string;
30230
32547
 
30231
32548
  @Field(() => Boolean, { nullable: true })
30232
- SyncEnabled?: boolean;
32549
+ SupportsCreate?: boolean;
32550
+
32551
+ @Field(() => Boolean, { nullable: true })
32552
+ SupportsUpdate?: boolean;
32553
+
32554
+ @Field(() => Boolean, { nullable: true })
32555
+ SupportsDelete?: boolean;
30233
32556
 
30234
32557
  @Field({ nullable: true })
30235
- MatchStrategy: string | null;
32558
+ SyncStrategy: string | null;
32559
+
32560
+ @Field(() => Boolean, { nullable: true })
32561
+ ContentHashApplicable?: boolean;
30236
32562
 
30237
32563
  @Field({ nullable: true })
30238
- ConflictResolution?: string;
32564
+ StableOrderingKey: string | null;
30239
32565
 
30240
- @Field(() => Int, { nullable: true })
30241
- Priority?: number;
32566
+ @Field({ nullable: true })
32567
+ CompanyIntegrationID?: string;
30242
32568
 
30243
32569
  @Field({ nullable: true })
30244
- DeleteBehavior?: string;
32570
+ IntegrationObjectID: string | null;
30245
32571
 
30246
32572
  @Field({ nullable: true })
30247
- Status?: string;
32573
+ Provenance?: string;
30248
32574
 
30249
32575
  @Field({ nullable: true })
30250
- Configuration: string | null;
32576
+ ProvenanceDetail: string | null;
32577
+
32578
+ @Field(() => Boolean, { nullable: true })
32579
+ IsSelected?: boolean;
32580
+
32581
+ @Field({ nullable: true })
32582
+ SelectedAt: Date | null;
32583
+
32584
+ @Field({ nullable: true })
32585
+ FirstSeenAt: Date | null;
32586
+
32587
+ @Field({ nullable: true })
32588
+ LastSeenAt: Date | null;
32589
+
32590
+ @Field({ nullable: true })
32591
+ LastSampledAt: Date | null;
30251
32592
 
30252
32593
  @Field(() => RestoreContextInput, { nullable: true })
30253
32594
  RestoreContext___?: RestoreContextInput;
@@ -30255,301 +32596,159 @@ export class CreateMJCompanyIntegrationEntityMapInput {
30255
32596
 
30256
32597
 
30257
32598
  //****************************************************************************
30258
- // INPUT TYPE for MJ: Company Integration Entity Maps
32599
+ // INPUT TYPE for MJ: Company Integration Objects
30259
32600
  //****************************************************************************
30260
32601
  @InputType()
30261
- export class UpdateMJCompanyIntegrationEntityMapInput {
32602
+ export class UpdateMJCompanyIntegrationObjectInput {
30262
32603
  @Field()
30263
32604
  ID: string;
30264
32605
 
30265
32606
  @Field({ nullable: true })
30266
- CompanyIntegrationID?: string;
32607
+ IntegrationID?: string;
30267
32608
 
30268
32609
  @Field({ nullable: true })
30269
- ExternalObjectName?: string;
32610
+ Name?: string;
30270
32611
 
30271
32612
  @Field({ nullable: true })
30272
- ExternalObjectLabel?: string | null;
32613
+ DisplayName?: string | null;
30273
32614
 
30274
32615
  @Field({ nullable: true })
30275
- EntityID?: string;
32616
+ Description?: string | null;
30276
32617
 
30277
32618
  @Field({ nullable: true })
30278
- SyncDirection?: string;
30279
-
30280
- @Field(() => Boolean, { nullable: true })
30281
- SyncEnabled?: boolean;
32619
+ Category?: string | null;
30282
32620
 
30283
32621
  @Field({ nullable: true })
30284
- MatchStrategy?: string | null;
32622
+ APIPath?: string;
30285
32623
 
30286
32624
  @Field({ nullable: true })
30287
- ConflictResolution?: string;
32625
+ ResponseDataKey?: string | null;
30288
32626
 
30289
32627
  @Field(() => Int, { nullable: true })
30290
- Priority?: number;
32628
+ DefaultPageSize?: number;
32629
+
32630
+ @Field(() => Boolean, { nullable: true })
32631
+ SupportsPagination?: boolean;
30291
32632
 
30292
32633
  @Field({ nullable: true })
30293
- DeleteBehavior?: string;
32634
+ PaginationType?: string;
32635
+
32636
+ @Field(() => Boolean, { nullable: true })
32637
+ SupportsIncrementalSync?: boolean;
32638
+
32639
+ @Field(() => Boolean, { nullable: true })
32640
+ SupportsWrite?: boolean;
30294
32641
 
30295
32642
  @Field({ nullable: true })
30296
- Status?: string;
32643
+ DefaultQueryParams?: string | null;
30297
32644
 
30298
32645
  @Field({ nullable: true })
30299
32646
  Configuration?: string | null;
30300
32647
 
30301
- @Field(() => [KeyValuePairInput], { nullable: true })
30302
- OldValues___?: KeyValuePairInput[];
32648
+ @Field(() => Int, { nullable: true })
32649
+ Sequence?: number;
30303
32650
 
30304
- @Field(() => RestoreContextInput, { nullable: true })
30305
- RestoreContext___?: RestoreContextInput;
30306
- }
30307
-
30308
- //****************************************************************************
30309
- // RESOLVER for MJ: Company Integration Entity Maps
30310
- //****************************************************************************
30311
- @ObjectType()
30312
- export class RunMJCompanyIntegrationEntityMapViewResult {
30313
- @Field(() => [MJCompanyIntegrationEntityMap_])
30314
- Results: MJCompanyIntegrationEntityMap_[];
32651
+ @Field({ nullable: true })
32652
+ Status?: string;
30315
32653
 
30316
- @Field(() => String, {nullable: true})
30317
- UserViewRunID?: string;
32654
+ @Field({ nullable: true })
32655
+ WriteAPIPath?: string | null;
30318
32656
 
30319
- @Field(() => Int, {nullable: true})
30320
- RowCount: number;
32657
+ @Field({ nullable: true })
32658
+ WriteMethod?: string | null;
30321
32659
 
30322
- @Field(() => Int, {nullable: true})
30323
- TotalRowCount: number;
32660
+ @Field({ nullable: true })
32661
+ DeleteMethod?: string | null;
30324
32662
 
30325
- @Field(() => Int, {nullable: true})
30326
- ExecutionTime: number;
32663
+ @Field(() => Boolean, { nullable: true })
32664
+ IsCustom?: boolean;
30327
32665
 
30328
- @Field({nullable: true})
30329
- ErrorMessage?: string;
32666
+ @Field({ nullable: true })
32667
+ CreateAPIPath?: string | null;
30330
32668
 
30331
- @Field(() => Boolean, {nullable: false})
30332
- Success: boolean;
30333
- }
32669
+ @Field({ nullable: true })
32670
+ CreateMethod?: string | null;
30334
32671
 
30335
- @Resolver(MJCompanyIntegrationEntityMap_)
30336
- export class MJCompanyIntegrationEntityMapResolver extends ResolverBase {
30337
- @Query(() => RunMJCompanyIntegrationEntityMapViewResult)
30338
- async RunMJCompanyIntegrationEntityMapViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30339
- const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30340
- return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
30341
- }
32672
+ @Field({ nullable: true })
32673
+ CreateBodyShape?: string | null;
30342
32674
 
30343
- @Query(() => RunMJCompanyIntegrationEntityMapViewResult)
30344
- async RunMJCompanyIntegrationEntityMapViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30345
- const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30346
- return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
30347
- }
32675
+ @Field({ nullable: true })
32676
+ CreateBodyKey?: string | null;
30348
32677
 
30349
- @Query(() => RunMJCompanyIntegrationEntityMapViewResult)
30350
- async RunMJCompanyIntegrationEntityMapDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30351
- const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30352
- input.EntityName = 'MJ: Company Integration Entity Maps';
30353
- return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
30354
- }
30355
- @Query(() => MJCompanyIntegrationEntityMap_, { nullable: true })
30356
- async MJCompanyIntegrationEntityMap(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationEntityMap_ | null> {
30357
- this.CheckUserReadPermissions('MJ: Company Integration Entity Maps', userPayload);
30358
- const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30359
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCompanyIntegrationEntityMaps')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Company Integration Entity Maps', userPayload, EntityPermissionType.Read, 'AND');
30360
- const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
30361
- const result = await this.MapFieldNamesToCodeNames('MJ: Company Integration Entity Maps', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
30362
- return result;
30363
- }
30364
-
30365
- @Mutation(() => MJCompanyIntegrationEntityMap_)
30366
- async CreateMJCompanyIntegrationEntityMap(
30367
- @Arg('input', () => CreateMJCompanyIntegrationEntityMapInput) input: CreateMJCompanyIntegrationEntityMapInput,
30368
- @Ctx() { providers, userPayload }: AppContext,
30369
- @PubSub() pubSub: PubSubEngine
30370
- ) {
30371
- const provider = GetReadWriteProvider(providers);
30372
- return this.CreateRecord('MJ: Company Integration Entity Maps', input, provider, userPayload, pubSub)
30373
- }
30374
-
30375
- @Mutation(() => MJCompanyIntegrationEntityMap_)
30376
- async UpdateMJCompanyIntegrationEntityMap(
30377
- @Arg('input', () => UpdateMJCompanyIntegrationEntityMapInput) input: UpdateMJCompanyIntegrationEntityMapInput,
30378
- @Ctx() { providers, userPayload }: AppContext,
30379
- @PubSub() pubSub: PubSubEngine
30380
- ) {
30381
- const provider = GetReadWriteProvider(providers);
30382
- return this.UpdateRecord('MJ: Company Integration Entity Maps', input, provider, userPayload, pubSub);
30383
- }
30384
-
30385
- @Mutation(() => MJCompanyIntegrationEntityMap_)
30386
- async DeleteMJCompanyIntegrationEntityMap(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30387
- const provider = GetReadWriteProvider(providers);
30388
- const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
30389
- return this.DeleteRecord('MJ: Company Integration Entity Maps', key, options, provider, userPayload, pubSub);
30390
- }
30391
-
30392
- }
32678
+ @Field({ nullable: true })
32679
+ CreateIDLocation?: string | null;
30393
32680
 
30394
- //****************************************************************************
30395
- // ENTITY CLASS for MJ: Company Integration Field Maps
30396
- //****************************************************************************
30397
- @ObjectType({ description: "Maps individual fields between an external source object and a MemberJunction entity, with optional transform pipeline." })
30398
- export class MJCompanyIntegrationFieldMap_ {
30399
- @Field()
30400
- @MaxLength(36)
30401
- ID: string;
30402
-
30403
- @Field({nullable: true})
30404
- @MaxLength(36)
30405
- EntityMapID?: string;
30406
-
30407
- @Field({nullable: true, description: "The field/column name in the external source system."})
30408
- @MaxLength(500)
30409
- SourceFieldName?: string;
30410
-
30411
- @Field({nullable: true, description: "Optional human-friendly label for the source field."})
30412
- @MaxLength(500)
30413
- SourceFieldLabel?: string;
30414
-
30415
- @Field({nullable: true, description: "The MJ entity field name this source field maps to."})
30416
- @MaxLength(500)
30417
- DestinationFieldName?: string;
30418
-
30419
- @Field({nullable: true, description: "Optional human-friendly label for the destination field."})
30420
- @MaxLength(500)
30421
- DestinationFieldLabel?: string;
30422
-
30423
- @Field({nullable: true, description: "Direction of field mapping: SourceToDest, DestToSource, or Both."})
30424
- @MaxLength(50)
30425
- Direction?: string;
30426
-
30427
- @Field({nullable: true, description: "JSON array of transform names to apply in order (e.g. [\"trim\", \"uppercase\"]). See FieldMappingEngine for available transforms."})
30428
- TransformPipeline?: string;
30429
-
30430
- @Field(() => Boolean, {nullable: true, description: "When true, this field is used by the MatchEngine to find existing records during sync."})
30431
- IsKeyField?: boolean;
30432
-
30433
- @Field(() => Boolean, {nullable: true, description: "When true, a sync record is rejected if this field has no value."})
30434
- IsRequired?: boolean;
30435
-
30436
- @Field({nullable: true, description: "Default value to use when the source field is null or missing."})
30437
- DefaultValue?: string;
30438
-
30439
- @Field(() => Int, {nullable: true, description: "Processing order for this field mapping within the entity map."})
30440
- Priority?: number;
30441
-
30442
- @Field({nullable: true, description: "Whether this field mapping is Active or Inactive."})
30443
- @MaxLength(50)
30444
- Status?: string;
30445
-
30446
- @Field()
30447
- _mj__CreatedAt: Date;
30448
-
30449
- @Field()
30450
- _mj__UpdatedAt: Date;
30451
-
30452
- @Field({nullable: true})
30453
- @MaxLength(500)
30454
- EntityMap?: string;
30455
-
30456
- @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.` })
30457
- ReadableFields___?: string[];
30458
-
30459
- }
32681
+ @Field({ nullable: true })
32682
+ UpdateAPIPath?: string | null;
30460
32683
 
30461
- //****************************************************************************
30462
- // INPUT TYPE for MJ: Company Integration Field Maps
30463
- //****************************************************************************
30464
- @InputType()
30465
- export class CreateMJCompanyIntegrationFieldMapInput {
30466
32684
  @Field({ nullable: true })
30467
- ID?: string;
32685
+ UpdateMethod?: string | null;
30468
32686
 
30469
32687
  @Field({ nullable: true })
30470
- EntityMapID?: string;
32688
+ UpdateBodyShape?: string | null;
30471
32689
 
30472
32690
  @Field({ nullable: true })
30473
- SourceFieldName?: string;
32691
+ UpdateBodyKey?: string | null;
30474
32692
 
30475
32693
  @Field({ nullable: true })
30476
- SourceFieldLabel: string | null;
32694
+ UpdateIDLocation?: string | null;
30477
32695
 
30478
32696
  @Field({ nullable: true })
30479
- DestinationFieldName?: string;
32697
+ DeleteAPIPath?: string | null;
30480
32698
 
30481
32699
  @Field({ nullable: true })
30482
- DestinationFieldLabel: string | null;
32700
+ DeleteIDLocation?: string | null;
30483
32701
 
30484
32702
  @Field({ nullable: true })
30485
- Direction?: string;
32703
+ IncrementalWatermarkField?: string | null;
30486
32704
 
30487
32705
  @Field({ nullable: true })
30488
- TransformPipeline: string | null;
32706
+ MetadataSource?: string;
30489
32707
 
30490
32708
  @Field(() => Boolean, { nullable: true })
30491
- IsKeyField?: boolean;
32709
+ SupportsCreate?: boolean;
30492
32710
 
30493
32711
  @Field(() => Boolean, { nullable: true })
30494
- IsRequired?: boolean;
30495
-
30496
- @Field({ nullable: true })
30497
- DefaultValue: string | null;
30498
-
30499
- @Field(() => Int, { nullable: true })
30500
- Priority?: number;
30501
-
30502
- @Field({ nullable: true })
30503
- Status?: string;
30504
-
30505
- @Field(() => RestoreContextInput, { nullable: true })
30506
- RestoreContext___?: RestoreContextInput;
30507
- }
30508
-
32712
+ SupportsUpdate?: boolean;
30509
32713
 
30510
- //****************************************************************************
30511
- // INPUT TYPE for MJ: Company Integration Field Maps
30512
- //****************************************************************************
30513
- @InputType()
30514
- export class UpdateMJCompanyIntegrationFieldMapInput {
30515
- @Field()
30516
- ID: string;
32714
+ @Field(() => Boolean, { nullable: true })
32715
+ SupportsDelete?: boolean;
30517
32716
 
30518
32717
  @Field({ nullable: true })
30519
- EntityMapID?: string;
32718
+ SyncStrategy?: string | null;
30520
32719
 
30521
- @Field({ nullable: true })
30522
- SourceFieldName?: string;
32720
+ @Field(() => Boolean, { nullable: true })
32721
+ ContentHashApplicable?: boolean;
30523
32722
 
30524
32723
  @Field({ nullable: true })
30525
- SourceFieldLabel?: string | null;
32724
+ StableOrderingKey?: string | null;
30526
32725
 
30527
32726
  @Field({ nullable: true })
30528
- DestinationFieldName?: string;
32727
+ CompanyIntegrationID?: string;
30529
32728
 
30530
32729
  @Field({ nullable: true })
30531
- DestinationFieldLabel?: string | null;
32730
+ IntegrationObjectID?: string | null;
30532
32731
 
30533
32732
  @Field({ nullable: true })
30534
- Direction?: string;
32733
+ Provenance?: string;
30535
32734
 
30536
32735
  @Field({ nullable: true })
30537
- TransformPipeline?: string | null;
32736
+ ProvenanceDetail?: string | null;
30538
32737
 
30539
32738
  @Field(() => Boolean, { nullable: true })
30540
- IsKeyField?: boolean;
32739
+ IsSelected?: boolean;
30541
32740
 
30542
- @Field(() => Boolean, { nullable: true })
30543
- IsRequired?: boolean;
32741
+ @Field({ nullable: true })
32742
+ SelectedAt?: Date | null;
30544
32743
 
30545
32744
  @Field({ nullable: true })
30546
- DefaultValue?: string | null;
32745
+ FirstSeenAt?: Date | null;
30547
32746
 
30548
- @Field(() => Int, { nullable: true })
30549
- Priority?: number;
32747
+ @Field({ nullable: true })
32748
+ LastSeenAt?: Date | null;
30550
32749
 
30551
32750
  @Field({ nullable: true })
30552
- Status?: string;
32751
+ LastSampledAt?: Date | null;
30553
32752
 
30554
32753
  @Field(() => [KeyValuePairInput], { nullable: true })
30555
32754
  OldValues___?: KeyValuePairInput[];
@@ -30559,12 +32758,12 @@ export class UpdateMJCompanyIntegrationFieldMapInput {
30559
32758
  }
30560
32759
 
30561
32760
  //****************************************************************************
30562
- // RESOLVER for MJ: Company Integration Field Maps
32761
+ // RESOLVER for MJ: Company Integration Objects
30563
32762
  //****************************************************************************
30564
32763
  @ObjectType()
30565
- export class RunMJCompanyIntegrationFieldMapViewResult {
30566
- @Field(() => [MJCompanyIntegrationFieldMap_])
30567
- Results: MJCompanyIntegrationFieldMap_[];
32764
+ export class RunMJCompanyIntegrationObjectViewResult {
32765
+ @Field(() => [MJCompanyIntegrationObject_])
32766
+ Results: MJCompanyIntegrationObject_[];
30568
32767
 
30569
32768
  @Field(() => String, {nullable: true})
30570
32769
  UserViewRunID?: string;
@@ -30585,61 +32784,61 @@ export class RunMJCompanyIntegrationFieldMapViewResult {
30585
32784
  Success: boolean;
30586
32785
  }
30587
32786
 
30588
- @Resolver(MJCompanyIntegrationFieldMap_)
30589
- export class MJCompanyIntegrationFieldMapResolver extends ResolverBase {
30590
- @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
30591
- async RunMJCompanyIntegrationFieldMapViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32787
+ @Resolver(MJCompanyIntegrationObject_)
32788
+ export class MJCompanyIntegrationObjectResolver extends ResolverBase {
32789
+ @Query(() => RunMJCompanyIntegrationObjectViewResult)
32790
+ async RunMJCompanyIntegrationObjectViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30592
32791
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30593
32792
  return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
30594
32793
  }
30595
32794
 
30596
- @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
30597
- async RunMJCompanyIntegrationFieldMapViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32795
+ @Query(() => RunMJCompanyIntegrationObjectViewResult)
32796
+ async RunMJCompanyIntegrationObjectViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30598
32797
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30599
32798
  return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
30600
32799
  }
30601
32800
 
30602
- @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
30603
- async RunMJCompanyIntegrationFieldMapDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32801
+ @Query(() => RunMJCompanyIntegrationObjectViewResult)
32802
+ async RunMJCompanyIntegrationObjectDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30604
32803
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30605
- input.EntityName = 'MJ: Company Integration Field Maps';
32804
+ input.EntityName = 'MJ: Company Integration Objects';
30606
32805
  return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
30607
32806
  }
30608
- @Query(() => MJCompanyIntegrationFieldMap_, { nullable: true })
30609
- async MJCompanyIntegrationFieldMap(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationFieldMap_ | null> {
30610
- this.CheckUserReadPermissions('MJ: Company Integration Field Maps', userPayload);
32807
+ @Query(() => MJCompanyIntegrationObject_, { nullable: true })
32808
+ async MJCompanyIntegrationObject(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationObject_ | null> {
32809
+ this.CheckUserReadPermissions('MJ: Company Integration Objects', userPayload);
30611
32810
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
30612
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCompanyIntegrationFieldMaps')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Company Integration Field Maps', userPayload, EntityPermissionType.Read, 'AND');
32811
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwCompanyIntegrationObjects')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Company Integration Objects', userPayload, EntityPermissionType.Read, 'AND');
30613
32812
  const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
30614
- const result = await this.MapFieldNamesToCodeNames('MJ: Company Integration Field Maps', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
32813
+ const result = await this.MapFieldNamesToCodeNames('MJ: Company Integration Objects', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
30615
32814
  return result;
30616
32815
  }
30617
32816
 
30618
- @Mutation(() => MJCompanyIntegrationFieldMap_)
30619
- async CreateMJCompanyIntegrationFieldMap(
30620
- @Arg('input', () => CreateMJCompanyIntegrationFieldMapInput) input: CreateMJCompanyIntegrationFieldMapInput,
32817
+ @Mutation(() => MJCompanyIntegrationObject_)
32818
+ async CreateMJCompanyIntegrationObject(
32819
+ @Arg('input', () => CreateMJCompanyIntegrationObjectInput) input: CreateMJCompanyIntegrationObjectInput,
30621
32820
  @Ctx() { providers, userPayload }: AppContext,
30622
32821
  @PubSub() pubSub: PubSubEngine
30623
32822
  ) {
30624
32823
  const provider = GetReadWriteProvider(providers);
30625
- return this.CreateRecord('MJ: Company Integration Field Maps', input, provider, userPayload, pubSub)
32824
+ return this.CreateRecord('MJ: Company Integration Objects', input, provider, userPayload, pubSub)
30626
32825
  }
30627
32826
 
30628
- @Mutation(() => MJCompanyIntegrationFieldMap_)
30629
- async UpdateMJCompanyIntegrationFieldMap(
30630
- @Arg('input', () => UpdateMJCompanyIntegrationFieldMapInput) input: UpdateMJCompanyIntegrationFieldMapInput,
32827
+ @Mutation(() => MJCompanyIntegrationObject_)
32828
+ async UpdateMJCompanyIntegrationObject(
32829
+ @Arg('input', () => UpdateMJCompanyIntegrationObjectInput) input: UpdateMJCompanyIntegrationObjectInput,
30631
32830
  @Ctx() { providers, userPayload }: AppContext,
30632
32831
  @PubSub() pubSub: PubSubEngine
30633
32832
  ) {
30634
32833
  const provider = GetReadWriteProvider(providers);
30635
- return this.UpdateRecord('MJ: Company Integration Field Maps', input, provider, userPayload, pubSub);
32834
+ return this.UpdateRecord('MJ: Company Integration Objects', input, provider, userPayload, pubSub);
30636
32835
  }
30637
32836
 
30638
- @Mutation(() => MJCompanyIntegrationFieldMap_)
30639
- async DeleteMJCompanyIntegrationFieldMap(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
32837
+ @Mutation(() => MJCompanyIntegrationObject_)
32838
+ async DeleteMJCompanyIntegrationObject(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
30640
32839
  const provider = GetReadWriteProvider(providers);
30641
32840
  const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
30642
- return this.DeleteRecord('MJ: Company Integration Field Maps', key, options, provider, userPayload, pubSub);
32841
+ return this.DeleteRecord('MJ: Company Integration Objects', key, options, provider, userPayload, pubSub);
30643
32842
  }
30644
32843
 
30645
32844
  }
@@ -33026,10 +35225,32 @@ export class MJComponent_ {
33026
35225
  @Field({nullable: true, description: "The technical-design embedding as little-endian IEEE-754 float32 bytes (4 bytes per dimension): the compact form of TechnicalDesignVector. Written alongside TechnicalDesignVector; readers prefer it and fall back to TechnicalDesignVector when it is NULL."})
33027
35226
  TechnicalDesignVectorBinary?: string;
33028
35227
 
35228
+ @Field({nullable: true, description: "Whether this component version's definition is approved: Pending, Approved or Rejected. Separate from Status, which is publication. An approval is current only while ApprovedFingerprint matches the current definition."})
35229
+ @MaxLength(20)
35230
+ ApprovalStatus?: string;
35231
+
35232
+ @Field({nullable: true, description: "Reviewer comments recorded with the approval decision, such as the tests the definition passed."})
35233
+ ApprovalComments?: string;
35234
+
35235
+ @Field({nullable: true, description: "The user who approved this component version."})
35236
+ @MaxLength(36)
35237
+ ApprovedByUserID?: string;
35238
+
35239
+ @Field({nullable: true, description: "When this component version was approved."})
35240
+ ApprovedAt?: Date;
35241
+
35242
+ @Field({nullable: true, description: "SHA-256 fingerprint of the definition that was approved: the component's specification for this version. The approval is current only while this matches the fingerprint of the current definition."})
35243
+ @MaxLength(100)
35244
+ ApprovedFingerprint?: string;
35245
+
33029
35246
  @Field({nullable: true})
33030
35247
  @MaxLength(255)
33031
35248
  SourceRegistry?: string;
33032
35249
 
35250
+ @Field({nullable: true})
35251
+ @MaxLength(100)
35252
+ ApprovedByUser?: string;
35253
+
33033
35254
  @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.` })
33034
35255
  ReadableFields___?: string[];
33035
35256
 
@@ -33127,6 +35348,21 @@ export class CreateMJComponentInput {
33127
35348
  @Field({ nullable: true })
33128
35349
  TechnicalDesignVectorBinary: string | null;
33129
35350
 
35351
+ @Field({ nullable: true })
35352
+ ApprovalStatus?: string;
35353
+
35354
+ @Field({ nullable: true })
35355
+ ApprovalComments: string | null;
35356
+
35357
+ @Field({ nullable: true })
35358
+ ApprovedByUserID: string | null;
35359
+
35360
+ @Field({ nullable: true })
35361
+ ApprovedAt: Date | null;
35362
+
35363
+ @Field({ nullable: true })
35364
+ ApprovedFingerprint: string | null;
35365
+
33130
35366
  @Field(() => RestoreContextInput, { nullable: true })
33131
35367
  RestoreContext___?: RestoreContextInput;
33132
35368
  }
@@ -33224,6 +35460,21 @@ export class UpdateMJComponentInput {
33224
35460
  @Field({ nullable: true })
33225
35461
  TechnicalDesignVectorBinary?: string | null;
33226
35462
 
35463
+ @Field({ nullable: true })
35464
+ ApprovalStatus?: string;
35465
+
35466
+ @Field({ nullable: true })
35467
+ ApprovalComments?: string | null;
35468
+
35469
+ @Field({ nullable: true })
35470
+ ApprovedByUserID?: string | null;
35471
+
35472
+ @Field({ nullable: true })
35473
+ ApprovedAt?: Date | null;
35474
+
35475
+ @Field({ nullable: true })
35476
+ ApprovedFingerprint?: string | null;
35477
+
33227
35478
  @Field(() => [KeyValuePairInput], { nullable: true })
33228
35479
  OldValues___?: KeyValuePairInput[];
33229
35480
 
@@ -33340,6 +35591,16 @@ export class MJContentFileType_ {
33340
35591
  @Field()
33341
35592
  _mj__UpdatedAt: Date;
33342
35593
 
35594
+ @Field({nullable: true, description: "How this file type is recognised from its own content, as JSON. Either magic bytes - {\"Magic\":[37,80,68,70],\"Offset\":0,\"Unambiguous\":true} - or, for a text format, the characters it opens with: {\"TextPrefix\":[\"<!doctype html\",\"<html\"]}, matched after a byte-order mark and leading whitespace are stripped and case is folded. Unambiguous means a match may override a declared type; a container format such as zip recognises without identifying, so it may not."})
35595
+ ByteSignature?: string;
35596
+
35597
+ @Field(() => Boolean, {nullable: true, description: "Whether this file type is text. Decides whether an unrecognised file is attempted as plain text or routed down the multi-modal path. NULL means unknown, and the pipeline falls back to inspecting the bytes."})
35598
+ IsText?: boolean;
35599
+
35600
+ @Field({nullable: true, description: "The registered content extractor that reads this file type. Lets a deployment add support for a format by pointing its file type at an extractor, rather than editing the extractor's own list of what it supports."})
35601
+ @MaxLength(100)
35602
+ ExtractorKey?: string;
35603
+
33343
35604
  @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.` })
33344
35605
  ReadableFields___?: string[];
33345
35606
 
@@ -33359,6 +35620,15 @@ export class CreateMJContentFileTypeInput {
33359
35620
  @Field({ nullable: true })
33360
35621
  FileExtension: string | null;
33361
35622
 
35623
+ @Field({ nullable: true })
35624
+ ByteSignature: string | null;
35625
+
35626
+ @Field(() => Boolean, { nullable: true })
35627
+ IsText: boolean | null;
35628
+
35629
+ @Field({ nullable: true })
35630
+ ExtractorKey: string | null;
35631
+
33362
35632
  @Field(() => RestoreContextInput, { nullable: true })
33363
35633
  RestoreContext___?: RestoreContextInput;
33364
35634
  }
@@ -33378,6 +35648,15 @@ export class UpdateMJContentFileTypeInput {
33378
35648
  @Field({ nullable: true })
33379
35649
  FileExtension?: string | null;
33380
35650
 
35651
+ @Field({ nullable: true })
35652
+ ByteSignature?: string | null;
35653
+
35654
+ @Field(() => Boolean, { nullable: true })
35655
+ IsText?: boolean | null;
35656
+
35657
+ @Field({ nullable: true })
35658
+ ExtractorKey?: string | null;
35659
+
33381
35660
  @Field(() => [KeyValuePairInput], { nullable: true })
33382
35661
  OldValues___?: KeyValuePairInput[];
33383
35662
 
@@ -33725,6 +36004,12 @@ export class MJContentItemChunk_ {
33725
36004
  @MaxLength(36)
33726
36005
  ParentChunkID?: string;
33727
36006
 
36007
+ @Field({nullable: true, description: "Per-field provenance for the pipeline: for each well-known field, the confidence the winning stage had and which stage set it."})
36008
+ FieldConfidence?: string;
36009
+
36010
+ @Field({nullable: true, description: "Text that accompanies this chunk so it still makes sense retrieved on its own — normally inherited from its parent item. Kept as its own field rather than prefixed into Text so it stays separately searchable and can be revised without rewriting the chunk."})
36011
+ Decorator?: string;
36012
+
33728
36013
  @Field({nullable: true})
33729
36014
  @MaxLength(250)
33730
36015
  ContentItem?: string;
@@ -33825,6 +36110,12 @@ export class CreateMJContentItemChunkInput {
33825
36110
  @Field({ nullable: true })
33826
36111
  ParentChunkID: string | null;
33827
36112
 
36113
+ @Field({ nullable: true })
36114
+ FieldConfidence: string | null;
36115
+
36116
+ @Field({ nullable: true })
36117
+ Decorator: string | null;
36118
+
33828
36119
  @Field(() => RestoreContextInput, { nullable: true })
33829
36120
  RestoreContext___?: RestoreContextInput;
33830
36121
  }
@@ -33901,6 +36192,12 @@ export class UpdateMJContentItemChunkInput {
33901
36192
  @Field({ nullable: true })
33902
36193
  ParentChunkID?: string | null;
33903
36194
 
36195
+ @Field({ nullable: true })
36196
+ FieldConfidence?: string | null;
36197
+
36198
+ @Field({ nullable: true })
36199
+ Decorator?: string | null;
36200
+
33904
36201
  @Field(() => [KeyValuePairInput], { nullable: true })
33905
36202
  OldValues___?: KeyValuePairInput[];
33906
36203
 
@@ -34505,6 +36802,43 @@ export class MJContentItem_ {
34505
36802
  @MaxLength(2000)
34506
36803
  DisplayLink?: string;
34507
36804
 
36805
+ @Field({nullable: true, description: "Per-field provenance for the pipeline: for each well-known field, the confidence the winning stage had and which stage set it. Lets two stages that know nothing about each other resolve a shared field on merit rather than by running order."})
36806
+ FieldConfidence?: string;
36807
+
36808
+ @Field({nullable: true, description: "Status of the Extract stage for this item: Pending, Processing, Complete, Failed or Skipped."})
36809
+ @MaxLength(40)
36810
+ ExtractionStatus?: string;
36811
+
36812
+ @Field({nullable: true, description: "Status of the Segment stage for this item: Pending, Processing, Complete, Failed or Skipped."})
36813
+ @MaxLength(40)
36814
+ SegmentationStatus?: string;
36815
+
36816
+ @Field({nullable: true, description: "Soft-delete marker: Pending once something has been removed at the source, Deleted once the Delete stage has cleaned up everything downstream of it. Marking rather than deleting keeps the outside-system cleanup in one place and makes it retryable."})
36817
+ @MaxLength(20)
36818
+ DeleteStatus?: string;
36819
+
36820
+ @Field({nullable: true, description: "The registered content extractor that actually read this item, recorded as a receipt of what ran. Distinct from the defaults on Content Type and in the source configuration, which say what should run."})
36821
+ @MaxLength(100)
36822
+ ExtractorKey?: string;
36823
+
36824
+ @Field({nullable: true, description: "Forces a specific content extractor for this item, overriding every default in the cascade. Set by a splitting extractor that already knows what one of its own children is, and by an operator correcting a misrouted item."})
36825
+ @MaxLength(100)
36826
+ ExtractorKeyOverride?: string;
36827
+
36828
+ @Field({nullable: true, description: "What kind of content this item holds: text, image, audio, video or multimodal. Determines whether the item can be embedded without extracted text."})
36829
+ @MaxLength(20)
36830
+ Modality?: string;
36831
+
36832
+ @Field({nullable: true, description: "The date the content itself carries — published, issued or authored — as opposed to when this row was created."})
36833
+ Date?: Date;
36834
+
36835
+ @Field({nullable: true, description: "Text that accompanies this item so it still makes sense retrieved on its own. Kept as its own field rather than prefixed into Text so it stays separately searchable and can be revised without rewriting the content."})
36836
+ Decorator?: string;
36837
+
36838
+ @Field({nullable: true, description: "The durable copy of the fetched artifact, held as an MJ File so the bytes live in whichever storage provider the source is configured for rather than in this database."})
36839
+ @MaxLength(36)
36840
+ FileID?: string;
36841
+
34508
36842
  @Field({nullable: true})
34509
36843
  @MaxLength(255)
34510
36844
  ContentSource?: string;
@@ -34533,6 +36867,10 @@ export class MJContentItem_ {
34533
36867
  @MaxLength(250)
34534
36868
  Parent?: string;
34535
36869
 
36870
+ @Field({nullable: true})
36871
+ @MaxLength(500)
36872
+ File?: string;
36873
+
34536
36874
  @Field({nullable: true})
34537
36875
  @MaxLength(36)
34538
36876
  RootParentID?: string;
@@ -34616,6 +36954,36 @@ export class CreateMJContentItemInput {
34616
36954
  @Field({ nullable: true })
34617
36955
  DisplayLink: string | null;
34618
36956
 
36957
+ @Field({ nullable: true })
36958
+ FieldConfidence: string | null;
36959
+
36960
+ @Field({ nullable: true })
36961
+ ExtractionStatus: string | null;
36962
+
36963
+ @Field({ nullable: true })
36964
+ SegmentationStatus: string | null;
36965
+
36966
+ @Field({ nullable: true })
36967
+ DeleteStatus: string | null;
36968
+
36969
+ @Field({ nullable: true })
36970
+ ExtractorKey: string | null;
36971
+
36972
+ @Field({ nullable: true })
36973
+ ExtractorKeyOverride: string | null;
36974
+
36975
+ @Field({ nullable: true })
36976
+ Modality: string | null;
36977
+
36978
+ @Field({ nullable: true })
36979
+ Date: Date | null;
36980
+
36981
+ @Field({ nullable: true })
36982
+ Decorator: string | null;
36983
+
36984
+ @Field({ nullable: true })
36985
+ FileID: string | null;
36986
+
34619
36987
  @Field(() => RestoreContextInput, { nullable: true })
34620
36988
  RestoreContext___?: RestoreContextInput;
34621
36989
  }
@@ -34683,6 +37051,36 @@ export class UpdateMJContentItemInput {
34683
37051
  @Field({ nullable: true })
34684
37052
  DisplayLink?: string | null;
34685
37053
 
37054
+ @Field({ nullable: true })
37055
+ FieldConfidence?: string | null;
37056
+
37057
+ @Field({ nullable: true })
37058
+ ExtractionStatus?: string | null;
37059
+
37060
+ @Field({ nullable: true })
37061
+ SegmentationStatus?: string | null;
37062
+
37063
+ @Field({ nullable: true })
37064
+ DeleteStatus?: string | null;
37065
+
37066
+ @Field({ nullable: true })
37067
+ ExtractorKey?: string | null;
37068
+
37069
+ @Field({ nullable: true })
37070
+ ExtractorKeyOverride?: string | null;
37071
+
37072
+ @Field({ nullable: true })
37073
+ Modality?: string | null;
37074
+
37075
+ @Field({ nullable: true })
37076
+ Date?: Date | null;
37077
+
37078
+ @Field({ nullable: true })
37079
+ Decorator?: string | null;
37080
+
37081
+ @Field({ nullable: true })
37082
+ FileID?: string | null;
37083
+
34686
37084
  @Field(() => [KeyValuePairInput], { nullable: true })
34687
37085
  OldValues___?: KeyValuePairInput[];
34688
37086
 
@@ -36060,6 +38458,18 @@ export class MJContentSource_ {
36060
38458
  @MaxLength(36)
36061
38459
  ScheduledJobID?: string;
36062
38460
 
38461
+ @Field({nullable: true, description: "Per-field provenance for the pipeline: for each well-known field, the confidence the winning stage had and which stage set it."})
38462
+ FieldConfidence?: string;
38463
+
38464
+ @Field(() => Boolean, {nullable: true, description: "Walk this source on the next pass regardless of its schedule. A one-shot: the Discover stage clears it when the walk completes. Scheduling is deployment-owned and the shipped Discover process selects ForceDiscovery = 1, which is why there is no discovery status column to re-arm."})
38465
+ ForceDiscovery?: boolean;
38466
+
38467
+ @Field({nullable: true, description: "When this source was last walked by the Discover stage. Stamped with the time a completed walk started, and passed back as Since on subsequent incremental walks."})
38468
+ LastDiscoveredAt?: Date;
38469
+
38470
+ @Field({nullable: true, description: "When this source last completed a full Sync walk (reconciling removals). Stamped with the time a completed sync walk started. The shipped Sync Record Process selects sources by LastSyncedAt (LastSyncedAt IS NULL OR LastSyncedAt < DATEADD(day, -30, GETUTCDATE())), never by ForceDiscovery; to force a sync, set LastSyncedAt back or to NULL."})
38471
+ LastSyncedAt?: Date;
38472
+
36063
38473
  @Field({nullable: true})
36064
38474
  @MaxLength(255)
36065
38475
  ContentType?: string;
@@ -36144,6 +38554,18 @@ export class CreateMJContentSourceInput {
36144
38554
  @Field({ nullable: true })
36145
38555
  ScheduledJobID: string | null;
36146
38556
 
38557
+ @Field({ nullable: true })
38558
+ FieldConfidence: string | null;
38559
+
38560
+ @Field(() => Boolean, { nullable: true })
38561
+ ForceDiscovery?: boolean;
38562
+
38563
+ @Field({ nullable: true })
38564
+ LastDiscoveredAt: Date | null;
38565
+
38566
+ @Field({ nullable: true })
38567
+ LastSyncedAt: Date | null;
38568
+
36147
38569
  @Field(() => RestoreContextInput, { nullable: true })
36148
38570
  RestoreContext___?: RestoreContextInput;
36149
38571
  }
@@ -36196,6 +38618,18 @@ export class UpdateMJContentSourceInput {
36196
38618
  @Field({ nullable: true })
36197
38619
  ScheduledJobID?: string | null;
36198
38620
 
38621
+ @Field({ nullable: true })
38622
+ FieldConfidence?: string | null;
38623
+
38624
+ @Field(() => Boolean, { nullable: true })
38625
+ ForceDiscovery?: boolean;
38626
+
38627
+ @Field({ nullable: true })
38628
+ LastDiscoveredAt?: Date | null;
38629
+
38630
+ @Field({ nullable: true })
38631
+ LastSyncedAt?: Date | null;
38632
+
36199
38633
  @Field(() => [KeyValuePairInput], { nullable: true })
36200
38634
  OldValues___?: KeyValuePairInput[];
36201
38635
 
@@ -36512,6 +38946,10 @@ export class MJContentType_ {
36512
38946
  @MaxLength(100)
36513
38947
  CleanerKey?: string;
36514
38948
 
38949
+ @Field({nullable: true, description: "The default content extractor for items of this content type, beside SegmenterKey and CleanerKey. A per-type default has no home in a source's Configuration, and reading it from a run's Options would make it per-run."})
38950
+ @MaxLength(100)
38951
+ ExtractorKey?: string;
38952
+
36515
38953
  @Field({nullable: true})
36516
38954
  @MaxLength(50)
36517
38955
  AIModel?: string;
@@ -36567,6 +39005,9 @@ export class CreateMJContentTypeInput {
36567
39005
  @Field({ nullable: true })
36568
39006
  CleanerKey: string | null;
36569
39007
 
39008
+ @Field({ nullable: true })
39009
+ ExtractorKey: string | null;
39010
+
36570
39011
  @Field(() => RestoreContextInput, { nullable: true })
36571
39012
  RestoreContext___?: RestoreContextInput;
36572
39013
  }
@@ -36610,6 +39051,9 @@ export class UpdateMJContentTypeInput {
36610
39051
  @Field({ nullable: true })
36611
39052
  CleanerKey?: string | null;
36612
39053
 
39054
+ @Field({ nullable: true })
39055
+ ExtractorKey?: string | null;
39056
+
36613
39057
  @Field(() => [KeyValuePairInput], { nullable: true })
36614
39058
  OldValues___?: KeyValuePairInput[];
36615
39059
 
@@ -41917,6 +44361,24 @@ export class MJDashboard_ {
41917
44361
  @MaxLength(36)
41918
44362
  EnvironmentID?: string;
41919
44363
 
44364
+ @Field({nullable: true, description: "Whether this dashboard's definition is approved: Pending, Approved or Rejected. An approval is current only while ApprovedFingerprint matches the current definition."})
44365
+ @MaxLength(20)
44366
+ ApprovalStatus?: string;
44367
+
44368
+ @Field({nullable: true, description: "Reviewer comments recorded with the approval decision, such as the tests the definition passed."})
44369
+ ApprovalComments?: string;
44370
+
44371
+ @Field({nullable: true, description: "The user who approved this dashboard."})
44372
+ @MaxLength(36)
44373
+ ApprovedByUserID?: string;
44374
+
44375
+ @Field({nullable: true, description: "When this dashboard was approved."})
44376
+ ApprovedAt?: Date;
44377
+
44378
+ @Field({nullable: true, description: "SHA-256 fingerprint of the definition that was approved: its layout, parts, property mappings, wires and code. The approval is current only while this matches the fingerprint of the current definition."})
44379
+ @MaxLength(100)
44380
+ ApprovedFingerprint?: string;
44381
+
41920
44382
  @Field({nullable: true})
41921
44383
  @MaxLength(100)
41922
44384
  User?: string;
@@ -41933,6 +44395,10 @@ export class MJDashboard_ {
41933
44395
  @MaxLength(255)
41934
44396
  Environment?: string;
41935
44397
 
44398
+ @Field({nullable: true})
44399
+ @MaxLength(100)
44400
+ ApprovedByUser?: string;
44401
+
41936
44402
  @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.` })
41937
44403
  ReadableFields___?: string[];
41938
44404
 
@@ -41982,6 +44448,21 @@ export class CreateMJDashboardInput {
41982
44448
  @Field({ nullable: true })
41983
44449
  EnvironmentID?: string;
41984
44450
 
44451
+ @Field({ nullable: true })
44452
+ ApprovalStatus?: string;
44453
+
44454
+ @Field({ nullable: true })
44455
+ ApprovalComments: string | null;
44456
+
44457
+ @Field({ nullable: true })
44458
+ ApprovedByUserID: string | null;
44459
+
44460
+ @Field({ nullable: true })
44461
+ ApprovedAt: Date | null;
44462
+
44463
+ @Field({ nullable: true })
44464
+ ApprovedFingerprint: string | null;
44465
+
41985
44466
  @Field(() => RestoreContextInput, { nullable: true })
41986
44467
  RestoreContext___?: RestoreContextInput;
41987
44468
  }
@@ -42031,6 +44512,21 @@ export class UpdateMJDashboardInput {
42031
44512
  @Field({ nullable: true })
42032
44513
  EnvironmentID?: string;
42033
44514
 
44515
+ @Field({ nullable: true })
44516
+ ApprovalStatus?: string;
44517
+
44518
+ @Field({ nullable: true })
44519
+ ApprovalComments?: string | null;
44520
+
44521
+ @Field({ nullable: true })
44522
+ ApprovedByUserID?: string | null;
44523
+
44524
+ @Field({ nullable: true })
44525
+ ApprovedAt?: Date | null;
44526
+
44527
+ @Field({ nullable: true })
44528
+ ApprovedFingerprint?: string | null;
44529
+
42034
44530
  @Field(() => [KeyValuePairInput], { nullable: true })
42035
44531
  OldValues___?: KeyValuePairInput[];
42036
44532
 
@@ -43548,6 +46044,10 @@ export class MJDuplicateRun_ {
43548
46044
  @Field(() => Boolean, {nullable: true, description: "When set to 1, duplicate detection stops after the current batch. Used for pause/cancel."})
43549
46045
  CancellationRequested?: boolean;
43550
46046
 
46047
+ @Field({nullable: true, description: "The Entity Document this run used: its template, vectors, match thresholds and LLM reasoning settings produced the run's matches."})
46048
+ @MaxLength(36)
46049
+ EntityDocumentID?: string;
46050
+
43551
46051
  @Field({nullable: true})
43552
46052
  @MaxLength(255)
43553
46053
  Entity?: string;
@@ -43564,6 +46064,10 @@ export class MJDuplicateRun_ {
43564
46064
  @MaxLength(100)
43565
46065
  ApprovedByUser?: string;
43566
46066
 
46067
+ @Field({nullable: true})
46068
+ @MaxLength(250)
46069
+ EntityDocument?: string;
46070
+
43567
46071
  @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.` })
43568
46072
  ReadableFields___?: string[];
43569
46073
 
@@ -43622,6 +46126,9 @@ export class CreateMJDuplicateRunInput {
43622
46126
  @Field(() => Boolean, { nullable: true })
43623
46127
  CancellationRequested?: boolean;
43624
46128
 
46129
+ @Field({ nullable: true })
46130
+ EntityDocumentID?: string;
46131
+
43625
46132
  @Field(() => RestoreContextInput, { nullable: true })
43626
46133
  RestoreContext___?: RestoreContextInput;
43627
46134
  }
@@ -43680,6 +46187,9 @@ export class UpdateMJDuplicateRunInput {
43680
46187
  @Field(() => Boolean, { nullable: true })
43681
46188
  CancellationRequested?: boolean;
43682
46189
 
46190
+ @Field({ nullable: true })
46191
+ EntityDocumentID?: string;
46192
+
43683
46193
  @Field(() => [KeyValuePairInput], { nullable: true })
43684
46194
  OldValues___?: KeyValuePairInput[];
43685
46195
 
@@ -47208,6 +49718,246 @@ export class MJEntityActionResolver extends ResolverBase {
47208
49718
 
47209
49719
  }
47210
49720
 
49721
+ //****************************************************************************
49722
+ // ENTITY CLASS for MJ: Entity Alternate Base Views
49723
+ //****************************************************************************
49724
+ @ObjectType({ description: "Registers alternate base views for an entity: SQL views that expose the same columns as the entity's BaseView while returning a canonical row subset (such as Active Members or Open Orders)." })
49725
+ export class MJEntityAlternateBaseView_ {
49726
+ @Field()
49727
+ @MaxLength(36)
49728
+ ID: string;
49729
+
49730
+ @Field({nullable: true, description: "Owning entity whose column contract this alternate base view shares."})
49731
+ @MaxLength(36)
49732
+ EntityID?: string;
49733
+
49734
+ @Field({nullable: true, description: "Optional parent alternate base view on the same entity that this view derives from (e.g. an Active Auto-Renew Members view built on top of Active Members). NULL when the view selects directly from the entity's BaseView. Automatically populated on save via SQL AST extraction when the view's FROM clause references another registered alternate base view."})
49735
+ @MaxLength(36)
49736
+ ParentID?: string;
49737
+
49738
+ @Field({nullable: true, description: "Logical name of the alternate base view, unique per entity (case-insensitive). Cannot contain pipe (|) or colon (:) characters. Callers pass this name via RunViewParams.AlternateBaseView or pin it on a User View."})
49739
+ @MaxLength(100)
49740
+ Name?: string;
49741
+
49742
+ @Field({nullable: true, description: "Human-friendly label shown in UI pickers and badges. Falls back to Name when NULL."})
49743
+ @MaxLength(255)
49744
+ DisplayName?: string;
49745
+
49746
+ @Field({nullable: true, description: "Plain-language definition of which rows this alternate base view includes. Surfaced as help text in pickers and in agent and QueryGen discovery context."})
49747
+ Description?: string;
49748
+
49749
+ @Field({nullable: true, description: "Database schema of ViewName. When NULL, defaults to the owning entity's SchemaName. Cross-schema views allow an Open App to register an alternate view in its own schema on an upstream entity."})
49750
+ @MaxLength(255)
49751
+ SchemaName?: string;
49752
+
49753
+ @Field({nullable: true, description: "Physical SQL view name in the database. Must select all columns from the owning entity's BaseView."})
49754
+ @MaxLength(255)
49755
+ ViewName?: string;
49756
+
49757
+ @Field({nullable: true, description: "Controls RunView caching for this alternate view: Default caches results under an isolated abv: fingerprint segment and invalidates on entity writes; Bypass disables caching for views whose predicates depend on the clock or other tables."})
49758
+ @MaxLength(20)
49759
+ CachePolicy?: string;
49760
+
49761
+ @Field({nullable: true, description: "Lifecycle status of the alternate view: Active (selectable and shown in pickers and agent context), Deprecated (executable with a warning, hidden from pickers and agents), or Disabled (rejected at runtime)."})
49762
+ @MaxLength(20)
49763
+ Status?: string;
49764
+
49765
+ @Field(() => Int, {nullable: true, description: "Display ordering of this alternate view within its owning entity (lower numbers appear first)."})
49766
+ Sequence?: number;
49767
+
49768
+ @Field()
49769
+ _mj__CreatedAt: Date;
49770
+
49771
+ @Field()
49772
+ _mj__UpdatedAt: Date;
49773
+
49774
+ @Field({nullable: true})
49775
+ @MaxLength(255)
49776
+ Entity?: string;
49777
+
49778
+ @Field({nullable: true})
49779
+ @MaxLength(100)
49780
+ Parent?: string;
49781
+
49782
+ @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.` })
49783
+ ReadableFields___?: string[];
49784
+
49785
+ }
49786
+
49787
+ //****************************************************************************
49788
+ // INPUT TYPE for MJ: Entity Alternate Base Views
49789
+ //****************************************************************************
49790
+ @InputType()
49791
+ export class CreateMJEntityAlternateBaseViewInput {
49792
+ @Field({ nullable: true })
49793
+ ID?: string;
49794
+
49795
+ @Field({ nullable: true })
49796
+ EntityID?: string;
49797
+
49798
+ @Field({ nullable: true })
49799
+ ParentID: string | null;
49800
+
49801
+ @Field({ nullable: true })
49802
+ Name?: string;
49803
+
49804
+ @Field({ nullable: true })
49805
+ DisplayName: string | null;
49806
+
49807
+ @Field({ nullable: true })
49808
+ Description?: string;
49809
+
49810
+ @Field({ nullable: true })
49811
+ SchemaName: string | null;
49812
+
49813
+ @Field({ nullable: true })
49814
+ ViewName?: string;
49815
+
49816
+ @Field({ nullable: true })
49817
+ CachePolicy?: string;
49818
+
49819
+ @Field({ nullable: true })
49820
+ Status?: string;
49821
+
49822
+ @Field(() => Int, { nullable: true })
49823
+ Sequence?: number;
49824
+
49825
+ @Field(() => RestoreContextInput, { nullable: true })
49826
+ RestoreContext___?: RestoreContextInput;
49827
+ }
49828
+
49829
+
49830
+ //****************************************************************************
49831
+ // INPUT TYPE for MJ: Entity Alternate Base Views
49832
+ //****************************************************************************
49833
+ @InputType()
49834
+ export class UpdateMJEntityAlternateBaseViewInput {
49835
+ @Field()
49836
+ ID: string;
49837
+
49838
+ @Field({ nullable: true })
49839
+ EntityID?: string;
49840
+
49841
+ @Field({ nullable: true })
49842
+ ParentID?: string | null;
49843
+
49844
+ @Field({ nullable: true })
49845
+ Name?: string;
49846
+
49847
+ @Field({ nullable: true })
49848
+ DisplayName?: string | null;
49849
+
49850
+ @Field({ nullable: true })
49851
+ Description?: string;
49852
+
49853
+ @Field({ nullable: true })
49854
+ SchemaName?: string | null;
49855
+
49856
+ @Field({ nullable: true })
49857
+ ViewName?: string;
49858
+
49859
+ @Field({ nullable: true })
49860
+ CachePolicy?: string;
49861
+
49862
+ @Field({ nullable: true })
49863
+ Status?: string;
49864
+
49865
+ @Field(() => Int, { nullable: true })
49866
+ Sequence?: number;
49867
+
49868
+ @Field(() => [KeyValuePairInput], { nullable: true })
49869
+ OldValues___?: KeyValuePairInput[];
49870
+
49871
+ @Field(() => RestoreContextInput, { nullable: true })
49872
+ RestoreContext___?: RestoreContextInput;
49873
+ }
49874
+
49875
+ //****************************************************************************
49876
+ // RESOLVER for MJ: Entity Alternate Base Views
49877
+ //****************************************************************************
49878
+ @ObjectType()
49879
+ export class RunMJEntityAlternateBaseViewViewResult {
49880
+ @Field(() => [MJEntityAlternateBaseView_])
49881
+ Results: MJEntityAlternateBaseView_[];
49882
+
49883
+ @Field(() => String, {nullable: true})
49884
+ UserViewRunID?: string;
49885
+
49886
+ @Field(() => Int, {nullable: true})
49887
+ RowCount: number;
49888
+
49889
+ @Field(() => Int, {nullable: true})
49890
+ TotalRowCount: number;
49891
+
49892
+ @Field(() => Int, {nullable: true})
49893
+ ExecutionTime: number;
49894
+
49895
+ @Field({nullable: true})
49896
+ ErrorMessage?: string;
49897
+
49898
+ @Field(() => Boolean, {nullable: false})
49899
+ Success: boolean;
49900
+ }
49901
+
49902
+ @Resolver(MJEntityAlternateBaseView_)
49903
+ export class MJEntityAlternateBaseViewResolver extends ResolverBase {
49904
+ @Query(() => RunMJEntityAlternateBaseViewViewResult)
49905
+ async RunMJEntityAlternateBaseViewViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
49906
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
49907
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
49908
+ }
49909
+
49910
+ @Query(() => RunMJEntityAlternateBaseViewViewResult)
49911
+ async RunMJEntityAlternateBaseViewViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
49912
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
49913
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
49914
+ }
49915
+
49916
+ @Query(() => RunMJEntityAlternateBaseViewViewResult)
49917
+ async RunMJEntityAlternateBaseViewDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
49918
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
49919
+ input.EntityName = 'MJ: Entity Alternate Base Views';
49920
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
49921
+ }
49922
+ @Query(() => MJEntityAlternateBaseView_, { nullable: true })
49923
+ async MJEntityAlternateBaseView(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJEntityAlternateBaseView_ | null> {
49924
+ this.CheckUserReadPermissions('MJ: Entity Alternate Base Views', userPayload);
49925
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
49926
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwEntityAlternateBaseViews')} WHERE ${provider.QuoteIdentifier('ID')}=${provider.BuildParameterPlaceholder(0)} ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Entity Alternate Base Views', userPayload, EntityPermissionType.Read, 'AND');
49927
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
49928
+ const result = await this.MapFieldNamesToCodeNames('MJ: Entity Alternate Base Views', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
49929
+ return result;
49930
+ }
49931
+
49932
+ @Mutation(() => MJEntityAlternateBaseView_)
49933
+ async CreateMJEntityAlternateBaseView(
49934
+ @Arg('input', () => CreateMJEntityAlternateBaseViewInput) input: CreateMJEntityAlternateBaseViewInput,
49935
+ @Ctx() { providers, userPayload }: AppContext,
49936
+ @PubSub() pubSub: PubSubEngine
49937
+ ) {
49938
+ const provider = GetReadWriteProvider(providers);
49939
+ return this.CreateRecord('MJ: Entity Alternate Base Views', input, provider, userPayload, pubSub)
49940
+ }
49941
+
49942
+ @Mutation(() => MJEntityAlternateBaseView_)
49943
+ async UpdateMJEntityAlternateBaseView(
49944
+ @Arg('input', () => UpdateMJEntityAlternateBaseViewInput) input: UpdateMJEntityAlternateBaseViewInput,
49945
+ @Ctx() { providers, userPayload }: AppContext,
49946
+ @PubSub() pubSub: PubSubEngine
49947
+ ) {
49948
+ const provider = GetReadWriteProvider(providers);
49949
+ return this.UpdateRecord('MJ: Entity Alternate Base Views', input, provider, userPayload, pubSub);
49950
+ }
49951
+
49952
+ @Mutation(() => MJEntityAlternateBaseView_)
49953
+ async DeleteMJEntityAlternateBaseView(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
49954
+ const provider = GetReadWriteProvider(providers);
49955
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
49956
+ return this.DeleteRecord('MJ: Entity Alternate Base Views', key, options, provider, userPayload, pubSub);
49957
+ }
49958
+
49959
+ }
49960
+
47211
49961
  //****************************************************************************
47212
49962
  // ENTITY CLASS for MJ: Entity Communication Fields
47213
49963
  //****************************************************************************
@@ -53822,6 +56572,383 @@ export class MJFeaturePipelineTypeResolver extends ResolverBase {
53822
56572
 
53823
56573
  }
53824
56574
 
56575
+ //****************************************************************************
56576
+ // ENTITY CLASS for MJ: Feature Pipeline Versions
56577
+ //****************************************************************************
56578
+ @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." })
56579
+ export class MJFeaturePipelineVersion_ {
56580
+ @Field()
56581
+ @MaxLength(36)
56582
+ ID: string;
56583
+
56584
+ @Field({nullable: true})
56585
+ @MaxLength(36)
56586
+ RecordProcessID?: string;
56587
+
56588
+ @Field(() => Int, {nullable: true, description: "Monotonic version number within the pipeline (1, 2, ...)."})
56589
+ Version?: number;
56590
+
56591
+ @Field({nullable: true, description: "SHA-256 of the pin (SpecHash, PromptVersionHash, AIModelID, ParametersHash). Unique per pipeline."})
56592
+ @MaxLength(64)
56593
+ PinHash?: string;
56594
+
56595
+ @Field({nullable: true, description: "SHA-256 of the output-affecting parts of the DataFeatureSpec (Context, Outputs, PipelineType, Escalation, PromptID, ProcessorExtensionKey) and the OutputMapping."})
56596
+ @MaxLength(64)
56597
+ SpecHash?: string;
56598
+
56599
+ @Field({nullable: true, description: "The pipeline prompt this version runs."})
56600
+ @MaxLength(36)
56601
+ PromptID?: string;
56602
+
56603
+ @Field({nullable: true, description: "Prompt version hash (template text, outputs, constraint block, pipeline type, escalation) of this version."})
56604
+ @MaxLength(64)
56605
+ PromptVersionHash?: string;
56606
+
56607
+ @Field({nullable: true, description: "Primary AI model of the prompt for this version."})
56608
+ @MaxLength(36)
56609
+ AIModelID?: string;
56610
+
56611
+ @Field({nullable: true, description: "SHA-256 of the prompt inference parameters for this version."})
56612
+ @MaxLength(64)
56613
+ ParametersHash?: string;
56614
+
56615
+ @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)."})
56616
+ @MaxLength(20)
56617
+ Status?: string;
56618
+
56619
+ @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."})
56620
+ Gated?: boolean;
56621
+
56622
+ @Field({nullable: true, description: "The MJ: Tests row holding the golden set this version was evaluated on."})
56623
+ @MaxLength(36)
56624
+ GoldenSetTestID?: string;
56625
+
56626
+ @Field({nullable: true, description: "The MJ: Test Runs row of the evaluation whose result is stored here."})
56627
+ @MaxLength(36)
56628
+ GoldenSetTestRunID?: string;
56629
+
56630
+ @Field({nullable: true, description: "Metric of the stored result: accuracy."})
56631
+ @MaxLength(20)
56632
+ Metric?: string;
56633
+
56634
+ @Field(() => Float, {nullable: true, description: "Declared activation threshold copied from DataFeatureSpec.Activation at evaluation time."})
56635
+ Threshold?: number;
56636
+
56637
+ @Field(() => Float, {nullable: true, description: "Point estimate of the metric (the lowest per-output value when the pipeline has several outputs)."})
56638
+ ResultValue?: number;
56639
+
56640
+ @Field(() => Float, {nullable: true, description: "Lower bound of the 95% Wilson interval of ResultValue."})
56641
+ ResultLower?: number;
56642
+
56643
+ @Field(() => Float, {nullable: true, description: "Upper bound of the 95% Wilson interval of ResultValue."})
56644
+ ResultUpper?: number;
56645
+
56646
+ @Field(() => Int, {nullable: true, description: "Number of golden cases scored."})
56647
+ ResultN?: number;
56648
+
56649
+ @Field({nullable: true, description: "JSON per-output results (correct, n, value, interval) and the per-case answers of the evaluation."})
56650
+ ResultDetails?: string;
56651
+
56652
+ @Field({nullable: true, description: "When the version became Active."})
56653
+ ActivatedAt?: Date;
56654
+
56655
+ @Field({nullable: true, description: "The user whose run activated the version (for an unattended activation, the Feature Pipeline Version Steward job's user)."})
56656
+ @MaxLength(36)
56657
+ ApprovedByUserID?: string;
56658
+
56659
+ @Field({nullable: true, description: "When a later Active version superseded this one."})
56660
+ RetiredAt?: Date;
56661
+
56662
+ @Field({nullable: true, description: "When the Feature Pipeline Version Steward finished the one backfill run of this activation of the version."})
56663
+ BackfilledAt?: Date;
56664
+
56665
+ @Field()
56666
+ _mj__CreatedAt: Date;
56667
+
56668
+ @Field()
56669
+ _mj__UpdatedAt: Date;
56670
+
56671
+ @Field({nullable: true})
56672
+ @MaxLength(255)
56673
+ RecordProcess?: string;
56674
+
56675
+ @Field({nullable: true})
56676
+ @MaxLength(255)
56677
+ Prompt?: string;
56678
+
56679
+ @Field({nullable: true})
56680
+ @MaxLength(50)
56681
+ AIModel?: string;
56682
+
56683
+ @Field({nullable: true})
56684
+ @MaxLength(255)
56685
+ GoldenSetTest?: string;
56686
+
56687
+ @Field({nullable: true})
56688
+ @MaxLength(255)
56689
+ GoldenSetTestRun?: string;
56690
+
56691
+ @Field({nullable: true})
56692
+ @MaxLength(100)
56693
+ ApprovedByUser?: string;
56694
+
56695
+ @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.` })
56696
+ ReadableFields___?: string[];
56697
+
56698
+ }
56699
+
56700
+ //****************************************************************************
56701
+ // INPUT TYPE for MJ: Feature Pipeline Versions
56702
+ //****************************************************************************
56703
+ @InputType()
56704
+ export class CreateMJFeaturePipelineVersionInput {
56705
+ @Field({ nullable: true })
56706
+ ID?: string;
56707
+
56708
+ @Field({ nullable: true })
56709
+ RecordProcessID?: string;
56710
+
56711
+ @Field(() => Int, { nullable: true })
56712
+ Version?: number;
56713
+
56714
+ @Field({ nullable: true })
56715
+ PinHash?: string;
56716
+
56717
+ @Field({ nullable: true })
56718
+ SpecHash?: string;
56719
+
56720
+ @Field({ nullable: true })
56721
+ PromptID: string | null;
56722
+
56723
+ @Field({ nullable: true })
56724
+ PromptVersionHash: string | null;
56725
+
56726
+ @Field({ nullable: true })
56727
+ AIModelID: string | null;
56728
+
56729
+ @Field({ nullable: true })
56730
+ ParametersHash: string | null;
56731
+
56732
+ @Field({ nullable: true })
56733
+ Status?: string;
56734
+
56735
+ @Field(() => Boolean, { nullable: true })
56736
+ Gated?: boolean;
56737
+
56738
+ @Field({ nullable: true })
56739
+ GoldenSetTestID: string | null;
56740
+
56741
+ @Field({ nullable: true })
56742
+ GoldenSetTestRunID: string | null;
56743
+
56744
+ @Field({ nullable: true })
56745
+ Metric: string | null;
56746
+
56747
+ @Field(() => Float, { nullable: true })
56748
+ Threshold: number | null;
56749
+
56750
+ @Field(() => Float, { nullable: true })
56751
+ ResultValue: number | null;
56752
+
56753
+ @Field(() => Float, { nullable: true })
56754
+ ResultLower: number | null;
56755
+
56756
+ @Field(() => Float, { nullable: true })
56757
+ ResultUpper: number | null;
56758
+
56759
+ @Field(() => Int, { nullable: true })
56760
+ ResultN: number | null;
56761
+
56762
+ @Field({ nullable: true })
56763
+ ResultDetails: string | null;
56764
+
56765
+ @Field({ nullable: true })
56766
+ ActivatedAt: Date | null;
56767
+
56768
+ @Field({ nullable: true })
56769
+ ApprovedByUserID: string | null;
56770
+
56771
+ @Field({ nullable: true })
56772
+ RetiredAt: Date | null;
56773
+
56774
+ @Field({ nullable: true })
56775
+ BackfilledAt: Date | null;
56776
+
56777
+ @Field(() => RestoreContextInput, { nullable: true })
56778
+ RestoreContext___?: RestoreContextInput;
56779
+ }
56780
+
56781
+
56782
+ //****************************************************************************
56783
+ // INPUT TYPE for MJ: Feature Pipeline Versions
56784
+ //****************************************************************************
56785
+ @InputType()
56786
+ export class UpdateMJFeaturePipelineVersionInput {
56787
+ @Field()
56788
+ ID: string;
56789
+
56790
+ @Field({ nullable: true })
56791
+ RecordProcessID?: string;
56792
+
56793
+ @Field(() => Int, { nullable: true })
56794
+ Version?: number;
56795
+
56796
+ @Field({ nullable: true })
56797
+ PinHash?: string;
56798
+
56799
+ @Field({ nullable: true })
56800
+ SpecHash?: string;
56801
+
56802
+ @Field({ nullable: true })
56803
+ PromptID?: string | null;
56804
+
56805
+ @Field({ nullable: true })
56806
+ PromptVersionHash?: string | null;
56807
+
56808
+ @Field({ nullable: true })
56809
+ AIModelID?: string | null;
56810
+
56811
+ @Field({ nullable: true })
56812
+ ParametersHash?: string | null;
56813
+
56814
+ @Field({ nullable: true })
56815
+ Status?: string;
56816
+
56817
+ @Field(() => Boolean, { nullable: true })
56818
+ Gated?: boolean;
56819
+
56820
+ @Field({ nullable: true })
56821
+ GoldenSetTestID?: string | null;
56822
+
56823
+ @Field({ nullable: true })
56824
+ GoldenSetTestRunID?: string | null;
56825
+
56826
+ @Field({ nullable: true })
56827
+ Metric?: string | null;
56828
+
56829
+ @Field(() => Float, { nullable: true })
56830
+ Threshold?: number | null;
56831
+
56832
+ @Field(() => Float, { nullable: true })
56833
+ ResultValue?: number | null;
56834
+
56835
+ @Field(() => Float, { nullable: true })
56836
+ ResultLower?: number | null;
56837
+
56838
+ @Field(() => Float, { nullable: true })
56839
+ ResultUpper?: number | null;
56840
+
56841
+ @Field(() => Int, { nullable: true })
56842
+ ResultN?: number | null;
56843
+
56844
+ @Field({ nullable: true })
56845
+ ResultDetails?: string | null;
56846
+
56847
+ @Field({ nullable: true })
56848
+ ActivatedAt?: Date | null;
56849
+
56850
+ @Field({ nullable: true })
56851
+ ApprovedByUserID?: string | null;
56852
+
56853
+ @Field({ nullable: true })
56854
+ RetiredAt?: Date | null;
56855
+
56856
+ @Field({ nullable: true })
56857
+ BackfilledAt?: Date | null;
56858
+
56859
+ @Field(() => [KeyValuePairInput], { nullable: true })
56860
+ OldValues___?: KeyValuePairInput[];
56861
+
56862
+ @Field(() => RestoreContextInput, { nullable: true })
56863
+ RestoreContext___?: RestoreContextInput;
56864
+ }
56865
+
56866
+ //****************************************************************************
56867
+ // RESOLVER for MJ: Feature Pipeline Versions
56868
+ //****************************************************************************
56869
+ @ObjectType()
56870
+ export class RunMJFeaturePipelineVersionViewResult {
56871
+ @Field(() => [MJFeaturePipelineVersion_])
56872
+ Results: MJFeaturePipelineVersion_[];
56873
+
56874
+ @Field(() => String, {nullable: true})
56875
+ UserViewRunID?: string;
56876
+
56877
+ @Field(() => Int, {nullable: true})
56878
+ RowCount: number;
56879
+
56880
+ @Field(() => Int, {nullable: true})
56881
+ TotalRowCount: number;
56882
+
56883
+ @Field(() => Int, {nullable: true})
56884
+ ExecutionTime: number;
56885
+
56886
+ @Field({nullable: true})
56887
+ ErrorMessage?: string;
56888
+
56889
+ @Field(() => Boolean, {nullable: false})
56890
+ Success: boolean;
56891
+ }
56892
+
56893
+ @Resolver(MJFeaturePipelineVersion_)
56894
+ export class MJFeaturePipelineVersionResolver extends ResolverBase {
56895
+ @Query(() => RunMJFeaturePipelineVersionViewResult)
56896
+ async RunMJFeaturePipelineVersionViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56897
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56898
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
56899
+ }
56900
+
56901
+ @Query(() => RunMJFeaturePipelineVersionViewResult)
56902
+ async RunMJFeaturePipelineVersionViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56903
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56904
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
56905
+ }
56906
+
56907
+ @Query(() => RunMJFeaturePipelineVersionViewResult)
56908
+ async RunMJFeaturePipelineVersionDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56909
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56910
+ input.EntityName = 'MJ: Feature Pipeline Versions';
56911
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
56912
+ }
56913
+ @Query(() => MJFeaturePipelineVersion_, { nullable: true })
56914
+ async MJFeaturePipelineVersion(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJFeaturePipelineVersion_ | null> {
56915
+ this.CheckUserReadPermissions('MJ: Feature Pipeline Versions', userPayload);
56916
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56917
+ 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');
56918
+ const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
56919
+ const result = await this.MapFieldNamesToCodeNames('MJ: Feature Pipeline Versions', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
56920
+ return result;
56921
+ }
56922
+
56923
+ @Mutation(() => MJFeaturePipelineVersion_)
56924
+ async CreateMJFeaturePipelineVersion(
56925
+ @Arg('input', () => CreateMJFeaturePipelineVersionInput) input: CreateMJFeaturePipelineVersionInput,
56926
+ @Ctx() { providers, userPayload }: AppContext,
56927
+ @PubSub() pubSub: PubSubEngine
56928
+ ) {
56929
+ const provider = GetReadWriteProvider(providers);
56930
+ return this.CreateRecord('MJ: Feature Pipeline Versions', input, provider, userPayload, pubSub)
56931
+ }
56932
+
56933
+ @Mutation(() => MJFeaturePipelineVersion_)
56934
+ async UpdateMJFeaturePipelineVersion(
56935
+ @Arg('input', () => UpdateMJFeaturePipelineVersionInput) input: UpdateMJFeaturePipelineVersionInput,
56936
+ @Ctx() { providers, userPayload }: AppContext,
56937
+ @PubSub() pubSub: PubSubEngine
56938
+ ) {
56939
+ const provider = GetReadWriteProvider(providers);
56940
+ return this.UpdateRecord('MJ: Feature Pipeline Versions', input, provider, userPayload, pubSub);
56941
+ }
56942
+
56943
+ @Mutation(() => MJFeaturePipelineVersion_)
56944
+ async DeleteMJFeaturePipelineVersion(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56945
+ const provider = GetReadWriteProvider(providers);
56946
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
56947
+ return this.DeleteRecord('MJ: Feature Pipeline Versions', key, options, provider, userPayload, pubSub);
56948
+ }
56949
+
56950
+ }
56951
+
53825
56952
  //****************************************************************************
53826
56953
  // ENTITY CLASS for MJ: Feature Value Caches
53827
56954
  //****************************************************************************
@@ -53886,6 +57013,14 @@ export class MJFeatureValueCache_ {
53886
57013
  @Field({description: "Timestamp when this record was last updated."})
53887
57014
  _mj__UpdatedAt: Date;
53888
57015
 
57016
+ @Field({nullable: true, description: "Primary AI model of the prompt that computed this cached result. Part of the cache key."})
57017
+ @MaxLength(36)
57018
+ AIModelID?: string;
57019
+
57020
+ @Field({nullable: true, description: "SHA-256 of the prompt's inference parameters when this result was computed. Part of the cache key."})
57021
+ @MaxLength(64)
57022
+ ParametersHash?: string;
57023
+
53889
57024
  @Field({nullable: true})
53890
57025
  @MaxLength(255)
53891
57026
  RecordProcess?: string;
@@ -53894,6 +57029,10 @@ export class MJFeatureValueCache_ {
53894
57029
  @MaxLength(255)
53895
57030
  Prompt?: string;
53896
57031
 
57032
+ @Field({nullable: true})
57033
+ @MaxLength(50)
57034
+ AIModel?: string;
57035
+
53897
57036
  @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.` })
53898
57037
  ReadableFields___?: string[];
53899
57038
 
@@ -53949,6 +57088,12 @@ export class CreateMJFeatureValueCacheInput {
53949
57088
  @Field({ nullable: true })
53950
57089
  ExpiresAt: Date | null;
53951
57090
 
57091
+ @Field({ nullable: true })
57092
+ AIModelID: string | null;
57093
+
57094
+ @Field({ nullable: true })
57095
+ ParametersHash: string | null;
57096
+
53952
57097
  @Field(() => RestoreContextInput, { nullable: true })
53953
57098
  RestoreContext___?: RestoreContextInput;
53954
57099
  }
@@ -54004,6 +57149,12 @@ export class UpdateMJFeatureValueCacheInput {
54004
57149
  @Field({ nullable: true })
54005
57150
  ExpiresAt?: Date | null;
54006
57151
 
57152
+ @Field({ nullable: true })
57153
+ AIModelID?: string | null;
57154
+
57155
+ @Field({ nullable: true })
57156
+ ParametersHash?: string | null;
57157
+
54007
57158
  @Field(() => [KeyValuePairInput], { nullable: true })
54008
57159
  OldValues___?: KeyValuePairInput[];
54009
57160
 
@@ -54100,7 +57251,7 @@ export class MJFeatureValueCacheResolver extends ResolverBase {
54100
57251
  //****************************************************************************
54101
57252
  // ENTITY CLASS for MJ: Feature Values
54102
57253
  //****************************************************************************
54103
- @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." })
57254
+ @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." })
54104
57255
  export class MJFeatureValue_ {
54105
57256
  @Field({description: "Unique identifier for this feature value history record."})
54106
57257
  @MaxLength(36)
@@ -54180,6 +57331,29 @@ export class MJFeatureValue_ {
54180
57331
  @Field({description: "Timestamp when this record was last updated."})
54181
57332
  _mj__UpdatedAt: Date;
54182
57333
 
57334
+ @Field(() => Int, {nullable: true, description: "Version of the Feature Pipeline (MJ: Feature Pipeline Versions.Version) that computed this value; part of the FeatureValueKey."})
57335
+ PipelineVersion?: number;
57336
+
57337
+ @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."})
57338
+ @MaxLength(36)
57339
+ AIModelID?: string;
57340
+
57341
+ @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."})
57342
+ @MaxLength(64)
57343
+ ParametersHash?: string;
57344
+
57345
+ @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."})
57346
+ @MaxLength(64)
57347
+ InputHash?: string;
57348
+
57349
+ @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."})
57350
+ @MaxLength(64)
57351
+ ValueKeyHash?: string;
57352
+
57353
+ @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)."})
57354
+ @MaxLength(20)
57355
+ Source?: string;
57356
+
54183
57357
  @Field({nullable: true})
54184
57358
  @MaxLength(255)
54185
57359
  RecordProcess?: string;
@@ -54200,6 +57374,10 @@ export class MJFeatureValue_ {
54200
57374
  @MaxLength(500)
54201
57375
  FeatureValueCache?: string;
54202
57376
 
57377
+ @Field({nullable: true})
57378
+ @MaxLength(50)
57379
+ AIModel?: string;
57380
+
54203
57381
  @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.` })
54204
57382
  ReadableFields___?: string[];
54205
57383
 
@@ -54270,6 +57448,24 @@ export class CreateMJFeatureValueInput {
54270
57448
  @Field({ nullable: true })
54271
57449
  ComputedAt?: Date;
54272
57450
 
57451
+ @Field(() => Int, { nullable: true })
57452
+ PipelineVersion: number | null;
57453
+
57454
+ @Field({ nullable: true })
57455
+ AIModelID: string | null;
57456
+
57457
+ @Field({ nullable: true })
57458
+ ParametersHash: string | null;
57459
+
57460
+ @Field({ nullable: true })
57461
+ InputHash: string | null;
57462
+
57463
+ @Field({ nullable: true })
57464
+ ValueKeyHash: string | null;
57465
+
57466
+ @Field({ nullable: true })
57467
+ Source?: string;
57468
+
54273
57469
  @Field(() => RestoreContextInput, { nullable: true })
54274
57470
  RestoreContext___?: RestoreContextInput;
54275
57471
  }
@@ -54340,6 +57536,24 @@ export class UpdateMJFeatureValueInput {
54340
57536
  @Field({ nullable: true })
54341
57537
  ComputedAt?: Date;
54342
57538
 
57539
+ @Field(() => Int, { nullable: true })
57540
+ PipelineVersion?: number | null;
57541
+
57542
+ @Field({ nullable: true })
57543
+ AIModelID?: string | null;
57544
+
57545
+ @Field({ nullable: true })
57546
+ ParametersHash?: string | null;
57547
+
57548
+ @Field({ nullable: true })
57549
+ InputHash?: string | null;
57550
+
57551
+ @Field({ nullable: true })
57552
+ ValueKeyHash?: string | null;
57553
+
57554
+ @Field({ nullable: true })
57555
+ Source?: string;
57556
+
54343
57557
  @Field(() => [KeyValuePairInput], { nullable: true })
54344
57558
  OldValues___?: KeyValuePairInput[];
54345
57559
 
@@ -69269,6 +72483,9 @@ export class MJProcessRunDetail_ {
69269
72483
  @Field()
69270
72484
  _mj__UpdatedAt: Date;
69271
72485
 
72486
+ @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."})
72487
+ Warnings?: string;
72488
+
69272
72489
  @Field({nullable: true})
69273
72490
  @MaxLength(255)
69274
72491
  Entity?: string;
@@ -69330,6 +72547,9 @@ export class CreateMJProcessRunDetailInput {
69330
72547
  @Field({ nullable: true })
69331
72548
  AIAgentRunID: string | null;
69332
72549
 
72550
+ @Field({ nullable: true })
72551
+ Warnings: string | null;
72552
+
69333
72553
  @Field(() => RestoreContextInput, { nullable: true })
69334
72554
  RestoreContext___?: RestoreContextInput;
69335
72555
  }
@@ -69379,6 +72599,9 @@ export class UpdateMJProcessRunDetailInput {
69379
72599
  @Field({ nullable: true })
69380
72600
  AIAgentRunID?: string | null;
69381
72601
 
72602
+ @Field({ nullable: true })
72603
+ Warnings?: string | null;
72604
+
69382
72605
  @Field(() => [KeyValuePairInput], { nullable: true })
69383
72606
  OldValues___?: KeyValuePairInput[];
69384
72607
 
@@ -69565,6 +72788,9 @@ export class MJProcessRun_ {
69565
72788
  @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."})
69566
72789
  DryRun?: boolean;
69567
72790
 
72791
+ @Field({nullable: true, description: "JSON summary of a Feature Pipeline run (FeaturePipelineRunResult); NULL for other work types."})
72792
+ ResultSummary?: string;
72793
+
69568
72794
  @Field({nullable: true})
69569
72795
  @MaxLength(255)
69570
72796
  RecordProcess?: string;
@@ -69663,6 +72889,9 @@ export class CreateMJProcessRunInput {
69663
72889
  @Field(() => Boolean, { nullable: true })
69664
72890
  DryRun?: boolean;
69665
72891
 
72892
+ @Field({ nullable: true })
72893
+ ResultSummary: string | null;
72894
+
69666
72895
  @Field(() => RestoreContextInput, { nullable: true })
69667
72896
  RestoreContext___?: RestoreContextInput;
69668
72897
  }
@@ -69745,6 +72974,9 @@ export class UpdateMJProcessRunInput {
69745
72974
  @Field(() => Boolean, { nullable: true })
69746
72975
  DryRun?: boolean;
69747
72976
 
72977
+ @Field({ nullable: true })
72978
+ ResultSummary?: string | null;
72979
+
69748
72980
  @Field(() => [KeyValuePairInput], { nullable: true })
69749
72981
  OldValues___?: KeyValuePairInput[];
69750
72982
 
@@ -70398,6 +73630,20 @@ export class MJQuery_ {
70398
73630
  @Field({nullable: true, description: "The query embedding as little-endian IEEE-754 float32 bytes (4 bytes per dimension): the compact form of EmbeddingVector. Written alongside EmbeddingVector; readers prefer it and fall back to EmbeddingVector when it is NULL."})
70399
73631
  EmbeddingVectorBinary?: string;
70400
73632
 
73633
+ @Field({nullable: true, description: "Reviewer comments recorded with the approval decision, such as the tests the definition passed."})
73634
+ ApprovalComments?: string;
73635
+
73636
+ @Field({nullable: true, description: "The user who approved this query."})
73637
+ @MaxLength(36)
73638
+ ApprovedByUserID?: string;
73639
+
73640
+ @Field({nullable: true, description: "When this query was approved."})
73641
+ ApprovedAt?: Date;
73642
+
73643
+ @Field({nullable: true, description: "SHA-256 fingerprint of the definition that was approved: its SQL, dialect variants and parameter contract. The approval is current only while this matches the fingerprint of the current definition."})
73644
+ @MaxLength(100)
73645
+ ApprovedFingerprint?: string;
73646
+
70401
73647
  @Field({nullable: true})
70402
73648
  @MaxLength(50)
70403
73649
  Category?: string;
@@ -70414,6 +73660,10 @@ export class MJQuery_ {
70414
73660
  @MaxLength(100)
70415
73661
  ExternalDataSource?: string;
70416
73662
 
73663
+ @Field({nullable: true})
73664
+ @MaxLength(100)
73665
+ ApprovedByUser?: string;
73666
+
70417
73667
  @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.` })
70418
73668
  ReadableFields___?: string[];
70419
73669
 
@@ -70502,6 +73752,18 @@ export class CreateMJQueryInput {
70502
73752
  @Field({ nullable: true })
70503
73753
  EmbeddingVectorBinary: string | null;
70504
73754
 
73755
+ @Field({ nullable: true })
73756
+ ApprovalComments: string | null;
73757
+
73758
+ @Field({ nullable: true })
73759
+ ApprovedByUserID: string | null;
73760
+
73761
+ @Field({ nullable: true })
73762
+ ApprovedAt: Date | null;
73763
+
73764
+ @Field({ nullable: true })
73765
+ ApprovedFingerprint: string | null;
73766
+
70505
73767
  @Field(() => RestoreContextInput, { nullable: true })
70506
73768
  RestoreContext___?: RestoreContextInput;
70507
73769
  }
@@ -70590,6 +73852,18 @@ export class UpdateMJQueryInput {
70590
73852
  @Field({ nullable: true })
70591
73853
  EmbeddingVectorBinary?: string | null;
70592
73854
 
73855
+ @Field({ nullable: true })
73856
+ ApprovalComments?: string | null;
73857
+
73858
+ @Field({ nullable: true })
73859
+ ApprovedByUserID?: string | null;
73860
+
73861
+ @Field({ nullable: true })
73862
+ ApprovedAt?: Date | null;
73863
+
73864
+ @Field({ nullable: true })
73865
+ ApprovedFingerprint?: string | null;
73866
+
70593
73867
  @Field(() => [KeyValuePairInput], { nullable: true })
70594
73868
  OldValues___?: KeyValuePairInput[];
70595
73869
 
@@ -71147,6 +74421,10 @@ export class MJQueryEntity_ {
71147
74421
  @Field(() => Float, {nullable: true, description: "Confidence score (0.00-1.00) indicating how certain the AI was that this entity is actually used in the query. Only populated when DetectionMethod=\"AI\". Considers factors like: direct table references vs indirect joins, clear entity names vs ambiguous aliases, and context from the query purpose. Lower scores might indicate the entity is only peripherally involved or the detection was uncertain."})
71148
74422
  AutoDetectConfidenceScore?: number;
71149
74423
 
74424
+ @Field({nullable: true, description: "When this query references an alternate base view rather than the entity's primary BaseView, records the specific MJ: Entity Alternate Base Views row while EntityID continues to reference the owning entity."})
74425
+ @MaxLength(36)
74426
+ AlternateBaseViewID?: string;
74427
+
71150
74428
  @Field({nullable: true})
71151
74429
  @MaxLength(255)
71152
74430
  Query?: string;
@@ -71155,6 +74433,10 @@ export class MJQueryEntity_ {
71155
74433
  @MaxLength(255)
71156
74434
  Entity?: string;
71157
74435
 
74436
+ @Field({nullable: true})
74437
+ @MaxLength(100)
74438
+ AlternateBaseView?: string;
74439
+
71158
74440
  @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.` })
71159
74441
  ReadableFields___?: string[];
71160
74442
 
@@ -71180,6 +74462,9 @@ export class CreateMJQueryEntityInput {
71180
74462
  @Field(() => Float, { nullable: true })
71181
74463
  AutoDetectConfidenceScore: number | null;
71182
74464
 
74465
+ @Field({ nullable: true })
74466
+ AlternateBaseViewID: string | null;
74467
+
71183
74468
  @Field(() => RestoreContextInput, { nullable: true })
71184
74469
  RestoreContext___?: RestoreContextInput;
71185
74470
  }
@@ -71205,6 +74490,9 @@ export class UpdateMJQueryEntityInput {
71205
74490
  @Field(() => Float, { nullable: true })
71206
74491
  AutoDetectConfidenceScore?: number | null;
71207
74492
 
74493
+ @Field({ nullable: true })
74494
+ AlternateBaseViewID?: string | null;
74495
+
71208
74496
  @Field(() => [KeyValuePairInput], { nullable: true })
71209
74497
  OldValues___?: KeyValuePairInput[];
71210
74498
 
@@ -71622,6 +74910,9 @@ export class MJQueryParameter_ {
71622
74910
  @Field()
71623
74911
  _mj__UpdatedAt: Date;
71624
74912
 
74913
+ @Field(() => Boolean, {nullable: true, description: "When true, only server code may supply this parameter's value (RunQueryParams.ServerParameters). A value for it from a client is refused."})
74914
+ IsServerSet?: boolean;
74915
+
71625
74916
  @Field({nullable: true})
71626
74917
  @MaxLength(255)
71627
74918
  Query?: string;
@@ -71669,6 +74960,9 @@ export class CreateMJQueryParameterInput {
71669
74960
  @Field(() => Float, { nullable: true })
71670
74961
  AutoDetectConfidenceScore: number | null;
71671
74962
 
74963
+ @Field(() => Boolean, { nullable: true })
74964
+ IsServerSet?: boolean;
74965
+
71672
74966
  @Field(() => RestoreContextInput, { nullable: true })
71673
74967
  RestoreContext___?: RestoreContextInput;
71674
74968
  }
@@ -71712,6 +75006,9 @@ export class UpdateMJQueryParameterInput {
71712
75006
  @Field(() => Float, { nullable: true })
71713
75007
  AutoDetectConfidenceScore?: number | null;
71714
75008
 
75009
+ @Field(() => Boolean, { nullable: true })
75010
+ IsServerSet?: boolean;
75011
+
71715
75012
  @Field(() => [KeyValuePairInput], { nullable: true })
71716
75013
  OldValues___?: KeyValuePairInput[];
71717
75014
 
@@ -92343,6 +95640,12 @@ export class MJTheme_ {
92343
95640
  @Field()
92344
95641
  _mj__UpdatedAt: Date;
92345
95642
 
95643
+ @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."})
95644
+ LoginScreen?: string;
95645
+
95646
+ @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."})
95647
+ LoginScreenDraft?: string;
95648
+
92346
95649
  @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.` })
92347
95650
  ReadableFields___?: string[];
92348
95651
 
@@ -92389,6 +95692,12 @@ export class CreateMJThemeInput {
92389
95692
  @Field({ nullable: true })
92390
95693
  CustomCSS: string | null;
92391
95694
 
95695
+ @Field({ nullable: true })
95696
+ LoginScreen: string | null;
95697
+
95698
+ @Field({ nullable: true })
95699
+ LoginScreenDraft: string | null;
95700
+
92392
95701
  @Field(() => RestoreContextInput, { nullable: true })
92393
95702
  RestoreContext___?: RestoreContextInput;
92394
95703
  }
@@ -92435,6 +95744,12 @@ export class UpdateMJThemeInput {
92435
95744
  @Field({ nullable: true })
92436
95745
  CustomCSS?: string | null;
92437
95746
 
95747
+ @Field({ nullable: true })
95748
+ LoginScreen?: string | null;
95749
+
95750
+ @Field({ nullable: true })
95751
+ LoginScreenDraft?: string | null;
95752
+
92438
95753
  @Field(() => [KeyValuePairInput], { nullable: true })
92439
95754
  OldValues___?: KeyValuePairInput[];
92440
95755
 
@@ -94606,7 +97921,7 @@ export class MJUserRoutine_ {
94606
97921
  @MaxLength(20)
94607
97922
  Status?: string;
94608
97923
 
94609
- @Field({nullable: true, description: "Scheduled (always notify per NotifyCondition) or Monitoring (intended for OnChange detection via result hashing)."})
97924
+ @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)."})
94610
97925
  @MaxLength(20)
94611
97926
  RoutineType?: string;
94612
97927
 
@@ -94627,7 +97942,7 @@ export class MJUserRoutine_ {
94627
97942
  @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."})
94628
97943
  RequestedSkillIDs?: string;
94629
97944
 
94630
- @Field({nullable: true, description: "Standard cron expression evaluated by the dispatcher to determine when the routine is due."})
97945
+ @Field({nullable: true, description: "Standard cron expression evaluated by the dispatcher for Recurring and Adaptive routines. NULL when ScheduleMode is OneShot."})
94631
97946
  @MaxLength(100)
94632
97947
  CronExpression?: string;
94633
97948
 
@@ -94679,6 +97994,16 @@ export class MJUserRoutine_ {
94679
97994
  @MaxLength(36)
94680
97995
  ConversationID?: string;
94681
97996
 
97997
+ @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)."})
97998
+ @MaxLength(20)
97999
+ ScheduleMode?: string;
98000
+
98001
+ @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)."})
98002
+ WakeConfiguration?: string;
98003
+
98004
+ @Field({nullable: true, description: "Timestamp when the dispatcher last evaluated this routine's watched entities and wake gate conditions."})
98005
+ LastCheckedAt?: Date;
98006
+
94682
98007
  @Field({nullable: true})
94683
98008
  @MaxLength(100)
94684
98009
  User?: string;
@@ -94742,7 +98067,7 @@ export class CreateMJUserRoutineInput {
94742
98067
  RequestedSkillIDs: string | null;
94743
98068
 
94744
98069
  @Field({ nullable: true })
94745
- CronExpression?: string;
98070
+ CronExpression: string | null;
94746
98071
 
94747
98072
  @Field({ nullable: true })
94748
98073
  StartAt: Date | null;
@@ -94780,6 +98105,15 @@ export class CreateMJUserRoutineInput {
94780
98105
  @Field({ nullable: true })
94781
98106
  ConversationID: string | null;
94782
98107
 
98108
+ @Field({ nullable: true })
98109
+ ScheduleMode?: string;
98110
+
98111
+ @Field({ nullable: true })
98112
+ WakeConfiguration: string | null;
98113
+
98114
+ @Field({ nullable: true })
98115
+ LastCheckedAt: Date | null;
98116
+
94783
98117
  @Field(() => RestoreContextInput, { nullable: true })
94784
98118
  RestoreContext___?: RestoreContextInput;
94785
98119
  }
@@ -94827,7 +98161,7 @@ export class UpdateMJUserRoutineInput {
94827
98161
  RequestedSkillIDs?: string | null;
94828
98162
 
94829
98163
  @Field({ nullable: true })
94830
- CronExpression?: string;
98164
+ CronExpression?: string | null;
94831
98165
 
94832
98166
  @Field({ nullable: true })
94833
98167
  StartAt?: Date | null;
@@ -94865,6 +98199,15 @@ export class UpdateMJUserRoutineInput {
94865
98199
  @Field({ nullable: true })
94866
98200
  ConversationID?: string | null;
94867
98201
 
98202
+ @Field({ nullable: true })
98203
+ ScheduleMode?: string;
98204
+
98205
+ @Field({ nullable: true })
98206
+ WakeConfiguration?: string | null;
98207
+
98208
+ @Field({ nullable: true })
98209
+ LastCheckedAt?: Date | null;
98210
+
94868
98211
  @Field(() => [KeyValuePairInput], { nullable: true })
94869
98212
  OldValues___?: KeyValuePairInput[];
94870
98213
 
@@ -95756,6 +99099,27 @@ export class MJUserView_ {
95756
99099
  @MaxLength(36)
95757
99100
  ViewTypeID?: string;
95758
99101
 
99102
+ @Field({nullable: true, description: "JSON array of the view's declared properties: named, typed inputs, each of which adds one predicate on a target field when a run gives it a value or it has a default. A property with AllowOverride false may be set only by server code. Null for a view with no properties."})
99103
+ Properties?: string;
99104
+
99105
+ @Field({nullable: true, description: "Whether this view's definition is approved: Pending, Approved or Rejected. An approval is current only while ApprovedFingerprint matches the current definition."})
99106
+ @MaxLength(20)
99107
+ ApprovalStatus?: string;
99108
+
99109
+ @Field({nullable: true, description: "Reviewer comments recorded with the approval decision, such as the tests the definition passed."})
99110
+ ApprovalComments?: string;
99111
+
99112
+ @Field({nullable: true, description: "The user who approved this view."})
99113
+ @MaxLength(36)
99114
+ ApprovedByUserID?: string;
99115
+
99116
+ @Field({nullable: true, description: "When this view was approved."})
99117
+ ApprovedAt?: Date;
99118
+
99119
+ @Field({nullable: true, description: "SHA-256 fingerprint of the definition that was approved: its entity, filters and properties. The approval is current only while this matches the fingerprint of the current definition."})
99120
+ @MaxLength(100)
99121
+ ApprovedFingerprint?: string;
99122
+
95759
99123
  @Field({nullable: true})
95760
99124
  @MaxLength(100)
95761
99125
  UserName?: string;
@@ -95856,6 +99220,24 @@ export class CreateMJUserViewInput {
95856
99220
  @Field({ nullable: true })
95857
99221
  ViewTypeID: string | null;
95858
99222
 
99223
+ @Field({ nullable: true })
99224
+ Properties: string | null;
99225
+
99226
+ @Field({ nullable: true })
99227
+ ApprovalStatus?: string;
99228
+
99229
+ @Field({ nullable: true })
99230
+ ApprovalComments: string | null;
99231
+
99232
+ @Field({ nullable: true })
99233
+ ApprovedByUserID: string | null;
99234
+
99235
+ @Field({ nullable: true })
99236
+ ApprovedAt: Date | null;
99237
+
99238
+ @Field({ nullable: true })
99239
+ ApprovedFingerprint: string | null;
99240
+
95859
99241
  @Field(() => RestoreContextInput, { nullable: true })
95860
99242
  RestoreContext___?: RestoreContextInput;
95861
99243
  }
@@ -95932,6 +99314,24 @@ export class UpdateMJUserViewInput {
95932
99314
  @Field({ nullable: true })
95933
99315
  ViewTypeID?: string | null;
95934
99316
 
99317
+ @Field({ nullable: true })
99318
+ Properties?: string | null;
99319
+
99320
+ @Field({ nullable: true })
99321
+ ApprovalStatus?: string;
99322
+
99323
+ @Field({ nullable: true })
99324
+ ApprovalComments?: string | null;
99325
+
99326
+ @Field({ nullable: true })
99327
+ ApprovedByUserID?: string | null;
99328
+
99329
+ @Field({ nullable: true })
99330
+ ApprovedAt?: Date | null;
99331
+
99332
+ @Field({ nullable: true })
99333
+ ApprovedFingerprint?: string | null;
99334
+
95935
99335
  @Field(() => [KeyValuePairInput], { nullable: true })
95936
99336
  OldValues___?: KeyValuePairInput[];
95937
99337