@memberjunction/server 6.2.0-edge.5 → 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 (401) hide show
  1. package/README.md +27 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentSessions/SessionJanitor.d.ts +3 -3
  4. package/dist/agentSessions/SessionJanitor.js +3 -3
  5. package/dist/agentSessions/SessionManager.d.ts +15 -5
  6. package/dist/agentSessions/SessionManager.d.ts.map +1 -1
  7. package/dist/agentSessions/SessionManager.js +34 -12
  8. package/dist/agentSessions/SessionManager.js.map +1 -1
  9. package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
  10. package/dist/auth/AuthProviderCatalogRouter.js +2 -0
  11. package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
  12. package/dist/auth/index.d.ts.map +1 -1
  13. package/dist/auth/index.js +51 -10
  14. package/dist/auth/index.js.map +1 -1
  15. package/dist/auth/initializeProviders.d.ts +10 -0
  16. package/dist/auth/initializeProviders.d.ts.map +1 -1
  17. package/dist/auth/initializeProviders.js +37 -1
  18. package/dist/auth/initializeProviders.js.map +1 -1
  19. package/dist/auth/localDevAuth.d.ts +79 -0
  20. package/dist/auth/localDevAuth.d.ts.map +1 -0
  21. package/dist/auth/localDevAuth.js +439 -0
  22. package/dist/auth/localDevAuth.js.map +1 -0
  23. package/dist/auth/magicLink/MagicLinkKeys.d.ts +2 -2
  24. package/dist/auth/magicLink/MagicLinkKeys.d.ts.map +1 -1
  25. package/dist/auth/magicLink/MagicLinkKeys.js +1 -1
  26. package/dist/auth/magicLink/MagicLinkKeys.js.map +1 -1
  27. package/dist/auth/magicLink/types.d.ts +12 -0
  28. package/dist/auth/magicLink/types.d.ts.map +1 -1
  29. package/dist/auth/sessionUserClone.d.ts +1 -1
  30. package/dist/auth/sessionUserClone.d.ts.map +1 -1
  31. package/dist/auth/sessionUserClone.js +3 -2
  32. package/dist/auth/sessionUserClone.js.map +1 -1
  33. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts +292 -0
  34. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts.map +1 -0
  35. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js +442 -0
  36. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js.map +1 -0
  37. package/dist/broadcast/index.d.ts +6 -0
  38. package/dist/broadcast/index.d.ts.map +1 -0
  39. package/dist/broadcast/index.js +6 -0
  40. package/dist/broadcast/index.js.map +1 -0
  41. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.d.ts +43 -0
  42. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.d.ts.map +1 -0
  43. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.js +144 -0
  44. package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.js.map +1 -0
  45. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.d.ts +46 -0
  46. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.d.ts.map +1 -0
  47. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.js +149 -0
  48. package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.js.map +1 -0
  49. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.d.ts +49 -0
  50. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.d.ts.map +1 -0
  51. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.js +131 -0
  52. package/dist/broadcast/providers/GCPPubSubBroadcastProvider.js.map +1 -0
  53. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.d.ts +24 -0
  54. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.d.ts.map +1 -0
  55. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.js +51 -0
  56. package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.js.map +1 -0
  57. package/dist/cache.d.ts +3 -2
  58. package/dist/cache.d.ts.map +1 -1
  59. package/dist/cache.js.map +1 -1
  60. package/dist/config.d.ts +496 -0
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +61 -0
  63. package/dist/config.js.map +1 -1
  64. package/dist/context.d.ts +3 -1
  65. package/dist/context.d.ts.map +1 -1
  66. package/dist/context.js +29 -8
  67. package/dist/context.js.map +1 -1
  68. package/dist/coreRoutes.d.ts.map +1 -1
  69. package/dist/coreRoutes.js +14 -0
  70. package/dist/coreRoutes.js.map +1 -1
  71. package/dist/generated/graphql-schemas/__mj.d.ts +635 -14
  72. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  73. package/dist/generated/graphql-schemas/__mj.js +3366 -418
  74. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  75. package/dist/generic/CacheInvalidationResolver.d.ts +50 -30
  76. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  77. package/dist/generic/CacheInvalidationResolver.js +154 -79
  78. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  79. package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -1
  80. package/dist/generic/OrphanedConversationDetailReconciler.js +2 -0
  81. package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
  82. package/dist/generic/PubSubManager.d.ts +10 -0
  83. package/dist/generic/PubSubManager.d.ts.map +1 -1
  84. package/dist/generic/PubSubManager.js +44 -1
  85. package/dist/generic/PubSubManager.js.map +1 -1
  86. package/dist/generic/PushStatusResolver.d.ts +39 -6
  87. package/dist/generic/PushStatusResolver.d.ts.map +1 -1
  88. package/dist/generic/PushStatusResolver.js +93 -11
  89. package/dist/generic/PushStatusResolver.js.map +1 -1
  90. package/dist/generic/ResolverBase.d.ts +65 -25
  91. package/dist/generic/ResolverBase.d.ts.map +1 -1
  92. package/dist/generic/ResolverBase.js +201 -101
  93. package/dist/generic/ResolverBase.js.map +1 -1
  94. package/dist/generic/RunViewResolver.d.ts +11 -3
  95. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  96. package/dist/generic/RunViewResolver.js +79 -13
  97. package/dist/generic/RunViewResolver.js.map +1 -1
  98. package/dist/generic/actionOutputFieldSecurity.d.ts +26 -0
  99. package/dist/generic/actionOutputFieldSecurity.d.ts.map +1 -0
  100. package/dist/generic/actionOutputFieldSecurity.js +47 -0
  101. package/dist/generic/actionOutputFieldSecurity.js.map +1 -0
  102. package/dist/generic/fieldSecurityTransport.d.ts +30 -0
  103. package/dist/generic/fieldSecurityTransport.d.ts.map +1 -0
  104. package/dist/generic/fieldSecurityTransport.js +30 -0
  105. package/dist/generic/fieldSecurityTransport.js.map +1 -0
  106. package/dist/index.d.ts +3 -0
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +122 -66
  109. package/dist/index.js.map +1 -1
  110. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  111. package/dist/integration/CustomColumnPromoter.js +6 -1
  112. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  113. package/dist/logging/variablesLoggingMiddleware.d.ts +12 -0
  114. package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
  115. package/dist/logging/variablesLoggingMiddleware.js +50 -1
  116. package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
  117. package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts.map +1 -1
  118. package/dist/realtimeSessions/SessionVerificationPortsBase.js +1 -0
  119. package/dist/realtimeSessions/SessionVerificationPortsBase.js.map +1 -1
  120. package/dist/realtimeSessions/ownedRealtimeSession.d.ts +8 -6
  121. package/dist/realtimeSessions/ownedRealtimeSession.d.ts.map +1 -1
  122. package/dist/realtimeSessions/ownedRealtimeSession.js +15 -6
  123. package/dist/realtimeSessions/ownedRealtimeSession.js.map +1 -1
  124. package/dist/realtimeSessions/sessionAccess.d.ts +88 -11
  125. package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -1
  126. package/dist/realtimeSessions/sessionAccess.js +125 -22
  127. package/dist/realtimeSessions/sessionAccess.js.map +1 -1
  128. package/dist/realtimeSessions/sessionConfigStamps.js +1 -1
  129. package/dist/realtimeSessions/sessionConfigStamps.js.map +1 -1
  130. package/dist/realtimeSessions/subscriptionAuthorization.d.ts.map +1 -1
  131. package/dist/realtimeSessions/subscriptionAuthorization.js +5 -2
  132. package/dist/realtimeSessions/subscriptionAuthorization.js.map +1 -1
  133. package/dist/realtimeSessions/verificationWorkflow.d.ts +2 -0
  134. package/dist/realtimeSessions/verificationWorkflow.d.ts.map +1 -1
  135. package/dist/realtimeSessions/verificationWorkflow.js +1 -1
  136. package/dist/realtimeSessions/verificationWorkflow.js.map +1 -1
  137. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
  138. package/dist/realtimeWidget/WidgetRouter.js +19 -3
  139. package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
  140. package/dist/realtimeWidget/WidgetSessionService.d.ts +67 -7
  141. package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -1
  142. package/dist/realtimeWidget/WidgetSessionService.js +201 -19
  143. package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
  144. package/dist/realtimeWidget/host-identity.d.ts +1 -1
  145. package/dist/realtimeWidget/host-identity.js +1 -1
  146. package/dist/realtimeWidget/widgetCore.d.ts +20 -1
  147. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
  148. package/dist/realtimeWidget/widgetCore.js +17 -1
  149. package/dist/realtimeWidget/widgetCore.js.map +1 -1
  150. package/dist/realtimeWidget/widgetGuestElevation.d.ts +1 -1
  151. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  152. package/dist/realtimeWidget/widgetGuestElevation.js +2 -1
  153. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  154. package/dist/resolvers/ActionResolver.d.ts +19 -1
  155. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  156. package/dist/resolvers/ActionResolver.js +63 -12
  157. package/dist/resolvers/ActionResolver.js.map +1 -1
  158. package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
  159. package/dist/resolvers/AdhocQueryResolver.js +1 -0
  160. package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
  161. package/dist/resolvers/AgentRunStatusPublisher.d.ts +18 -4
  162. package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -1
  163. package/dist/resolvers/AgentRunStatusPublisher.js +32 -8
  164. package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -1
  165. package/dist/resolvers/AgentSessionResolver.d.ts +10 -4
  166. package/dist/resolvers/AgentSessionResolver.d.ts.map +1 -1
  167. package/dist/resolvers/AgentSessionResolver.js +40 -17
  168. package/dist/resolvers/AgentSessionResolver.js.map +1 -1
  169. package/dist/resolvers/EntityCommunicationsResolver.d.ts +13 -1
  170. package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
  171. package/dist/resolvers/EntityCommunicationsResolver.js +50 -14
  172. package/dist/resolvers/EntityCommunicationsResolver.js.map +1 -1
  173. package/dist/resolvers/FetchEntityVectorsResolver.d.ts +28 -0
  174. package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
  175. package/dist/resolvers/FetchEntityVectorsResolver.js +117 -21
  176. package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
  177. package/dist/resolvers/FileCategoryResolver.d.ts.map +1 -1
  178. package/dist/resolvers/FileCategoryResolver.js +1 -0
  179. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  180. package/dist/resolvers/FileResolver.d.ts +5 -0
  181. package/dist/resolvers/FileResolver.d.ts.map +1 -1
  182. package/dist/resolvers/FileResolver.js +13 -4
  183. package/dist/resolvers/FileResolver.js.map +1 -1
  184. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
  185. package/dist/resolvers/IntegrationDiscoveryResolver.js +45 -7
  186. package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
  187. package/dist/resolvers/MergeRecordsResolver.d.ts +8 -1
  188. package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
  189. package/dist/resolvers/MergeRecordsResolver.js +31 -3
  190. package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
  191. package/dist/resolvers/PipelineProgressResolver.d.ts +6 -0
  192. package/dist/resolvers/PipelineProgressResolver.d.ts.map +1 -1
  193. package/dist/resolvers/PipelineProgressResolver.js +5 -3
  194. package/dist/resolvers/PipelineProgressResolver.js.map +1 -1
  195. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  196. package/dist/resolvers/QueryResolver.js +20 -6
  197. package/dist/resolvers/QueryResolver.js.map +1 -1
  198. package/dist/resolvers/QuerySystemUserResolver.d.ts +2 -0
  199. package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
  200. package/dist/resolvers/QuerySystemUserResolver.js +15 -6
  201. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  202. package/dist/resolvers/RSUResolver.d.ts.map +1 -1
  203. package/dist/resolvers/RSUResolver.js +12 -0
  204. package/dist/resolvers/RSUResolver.js.map +1 -1
  205. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +16 -2
  206. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  207. package/dist/resolvers/RealtimeClientSessionResolver.js +82 -28
  208. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  209. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  210. package/dist/resolvers/RemoteBrowserActionResolver.js +11 -9
  211. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  212. package/dist/resolvers/RunAIAgentResolver.d.ts +56 -8
  213. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  214. package/dist/resolvers/RunAIAgentResolver.js +209 -64
  215. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  216. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  217. package/dist/resolvers/RunTemplateResolver.js +4 -4
  218. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  219. package/dist/resolvers/RunTestResolver.d.ts.map +1 -1
  220. package/dist/resolvers/RunTestResolver.js +3 -1
  221. package/dist/resolvers/RunTestResolver.js.map +1 -1
  222. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  223. package/dist/resolvers/SyncDataResolver.js +4 -0
  224. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  225. package/dist/resolvers/TestQuerySQLResolver.d.ts.map +1 -1
  226. package/dist/resolvers/TestQuerySQLResolver.js +1 -0
  227. package/dist/resolvers/TestQuerySQLResolver.js.map +1 -1
  228. package/dist/resolvers/TransactionGroupResolver.d.ts +17 -2
  229. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  230. package/dist/resolvers/TransactionGroupResolver.js +60 -15
  231. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  232. package/dist/resolvers/UserViewResolver.d.ts +1 -1
  233. package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
  234. package/dist/resolvers/UserViewResolver.js +2 -1
  235. package/dist/resolvers/UserViewResolver.js.map +1 -1
  236. package/dist/rest/EntityCRUDHandler.d.ts +6 -0
  237. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  238. package/dist/rest/EntityCRUDHandler.js +19 -5
  239. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  240. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  241. package/dist/rest/RESTEndpointHandler.js +8 -5
  242. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  243. package/dist/rest/RealtimeRecordingHandler.d.ts +3 -3
  244. package/dist/rest/RealtimeRecordingHandler.d.ts.map +1 -1
  245. package/dist/rest/RealtimeRecordingHandler.js +7 -7
  246. package/dist/rest/RealtimeRecordingHandler.js.map +1 -1
  247. package/dist/rest/ViewOperationsHandler.d.ts +6 -0
  248. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  249. package/dist/rest/ViewOperationsHandler.js +22 -5
  250. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  251. package/dist/serverRoleConfigUnits.d.ts +29 -0
  252. package/dist/serverRoleConfigUnits.d.ts.map +1 -0
  253. package/dist/serverRoleConfigUnits.js +33 -0
  254. package/dist/serverRoleConfigUnits.js.map +1 -0
  255. package/dist/services/TaskGraphContinuationDeliverer.d.ts +5 -0
  256. package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
  257. package/dist/services/TaskGraphContinuationDeliverer.js +42 -15
  258. package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
  259. package/dist/types.d.ts +23 -1
  260. package/dist/types.d.ts.map +1 -1
  261. package/dist/types.js.map +1 -1
  262. package/package.json +98 -98
  263. package/src/__tests__/ActionResolver.fieldSecurity.test.ts +237 -0
  264. package/src/__tests__/AdhocQueryResolver.dialect.test.ts +137 -0
  265. package/src/__tests__/AgentRunStatusPublisher.test.ts +49 -0
  266. package/src/__tests__/AgentSessionResolver.ownership.test.ts +137 -0
  267. package/src/__tests__/CustomColumnPromoterOnePass.test.ts +15 -1
  268. package/src/__tests__/EntityCommunicationsResolver.actingUser.test.ts +151 -0
  269. package/src/__tests__/EvolutionActsOnWhatItDetects.test.ts +113 -0
  270. package/src/__tests__/FetchEntityVectorsResolver.test.ts +206 -3
  271. package/src/__tests__/FileResolver.fieldSecurity.test.ts +82 -0
  272. package/src/__tests__/PipelineProgressResolver.filter.test.ts +58 -0
  273. package/src/__tests__/QuerySystemUserResolver.fieldSecurity.test.ts +49 -0
  274. package/src/__tests__/RESTEndpointHandler.test.ts +25 -0
  275. package/src/__tests__/RealtimeClientSessionResolver.configTamper.test.ts +23 -3
  276. package/src/__tests__/RealtimeClientSessionResolver.test.ts +324 -46
  277. package/src/__tests__/RemoteBrowserActionResolver.ownership.test.ts +98 -0
  278. package/src/__tests__/ResolverBase.clientOldValues.test.ts +37 -4
  279. package/src/__tests__/ResolverBase.deleteReturnProjection.test.ts +52 -0
  280. package/src/__tests__/ResolverBase.entityMessageRelay.test.ts +176 -0
  281. package/src/__tests__/ResolverBase.includeBinaryFields.test.ts +23 -1
  282. package/src/__tests__/ResolverBase.publishStatusUpdate.test.ts +68 -0
  283. package/src/__tests__/ResolverBase.userViewCacheAndDedup.test.ts +130 -0
  284. package/src/__tests__/RunAIAgentResolver.branch.test.ts +68 -13
  285. package/src/__tests__/RunAIAgentResolver.conversationWriter.test.ts +210 -0
  286. package/src/__tests__/RunAIAgentResolver.fireAndForgetCompletion.test.ts +209 -0
  287. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +17 -27
  288. package/src/__tests__/RunAIAgentResolver.runDataGuard.test.ts +8 -2
  289. package/src/__tests__/RunAIAgentResolver.serverReply.test.ts +358 -0
  290. package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +4 -1
  291. package/src/__tests__/RunTemplateResolver.test.ts +35 -2
  292. package/src/__tests__/RunViewResolver.cacheCheckForwarding.test.ts +11 -0
  293. package/src/__tests__/SessionManager.test.ts +95 -0
  294. package/src/__tests__/TaskGraphContinuationDeliverer.test.ts +114 -3
  295. package/src/__tests__/TransactionGroupResolver.fieldSecurity.test.ts +199 -0
  296. package/src/__tests__/UserViewResolver.updateWhereClause.test.ts +15 -0
  297. package/src/__tests__/ViewOperationsHandler.test.ts +7 -2
  298. package/src/__tests__/WidgetSessionService.test.ts +583 -4
  299. package/src/__tests__/apiRootBoot.test.ts +1 -1
  300. package/src/__tests__/buildMagicLinkSessionUser.test.ts +96 -0
  301. package/src/__tests__/cacheBroadcastProviders.test.ts +403 -0
  302. package/src/__tests__/cacheInvalidationRecordData.test.ts +45 -0
  303. package/src/__tests__/fieldSecurityFixtures.ts +91 -0
  304. package/src/__tests__/globalCors.test.ts +3 -3
  305. package/src/__tests__/localDevAuth.test.ts +196 -0
  306. package/src/__tests__/orphanedConversationDetailReconciler.test.ts +10 -0
  307. package/src/__tests__/pushStatusResolver.filter.test.ts +57 -1
  308. package/src/__tests__/realtimeRecordingHandler.test.ts +19 -2
  309. package/src/__tests__/realtimeSessions/RealtimeSessionEventsResolver.test.ts +29 -1
  310. package/src/__tests__/realtimeSessions/ownedRealtimeSession.anonymous.test.ts +31 -0
  311. package/src/__tests__/realtimeSessions/ownedRealtimeSession.namedScoped.test.ts +37 -0
  312. package/src/__tests__/realtimeSessions/sessionAccess.test.ts +146 -7
  313. package/src/__tests__/realtimeSessions/sessionConfigStamps.test.ts +1 -1
  314. package/src/__tests__/realtimeSessions/verificationWorkflow.test.ts +25 -4
  315. package/src/__tests__/resolverBase.cloudEventChangedFields.test.ts +157 -0
  316. package/src/__tests__/resolverBase.fieldSecurityTransport.test.ts +222 -0
  317. package/src/__tests__/resolverBase.fls.test.ts +146 -97
  318. package/src/__tests__/restTransport.fieldSecurity.test.ts +148 -0
  319. package/src/__tests__/runParamsTimeZone.test.ts +179 -0
  320. package/src/__tests__/runStreams.fieldSecurity.test.ts +100 -0
  321. package/src/__tests__/runViewProperties.test.ts +114 -0
  322. package/src/__tests__/scalabilityBenchmarks.test.ts +765 -0
  323. package/src/__tests__/scalabilityDatabaseIntegration.test.ts +207 -0
  324. package/src/__tests__/sessionUserClone.test.ts +5 -1
  325. package/src/__tests__/startupSweepOrder.test.ts +40 -0
  326. package/src/__tests__/unifiedAuth.test.ts +28 -0
  327. package/src/__tests__/widgetGuestElevation.test.ts +2 -0
  328. package/src/agentSessions/SessionJanitor.ts +3 -3
  329. package/src/agentSessions/SessionManager.ts +35 -12
  330. package/src/auth/AuthProviderCatalogRouter.ts +3 -0
  331. package/src/auth/index.ts +56 -12
  332. package/src/auth/initializeProviders.ts +43 -1
  333. package/src/auth/localDevAuth.ts +528 -0
  334. package/src/auth/magicLink/MagicLinkKeys.ts +2 -2
  335. package/src/auth/magicLink/types.ts +10 -0
  336. package/src/auth/sessionUserClone.ts +3 -2
  337. package/src/broadcast/BaseCacheInvalidationBroadcastProvider.ts +674 -0
  338. package/src/broadcast/index.ts +5 -0
  339. package/src/broadcast/providers/AWSIoTCoreBroadcastProvider.ts +180 -0
  340. package/src/broadcast/providers/AzureWebPubSubBroadcastProvider.ts +182 -0
  341. package/src/broadcast/providers/GCPPubSubBroadcastProvider.ts +169 -0
  342. package/src/broadcast/providers/SequencedRoleBucketBroadcastProvider.ts +57 -0
  343. package/src/cache.ts +2 -1
  344. package/src/config.ts +69 -0
  345. package/src/context.ts +32 -8
  346. package/src/coreRoutes.ts +15 -0
  347. package/src/generated/graphql-schemas/__mj.ts +2239 -102
  348. package/src/generic/CacheInvalidationResolver.ts +135 -78
  349. package/src/generic/OrphanedConversationDetailReconciler.ts +4 -2
  350. package/src/generic/PubSubManager.ts +54 -1
  351. package/src/generic/PushStatusResolver.ts +108 -11
  352. package/src/generic/ResolverBase.ts +237 -107
  353. package/src/generic/RunViewResolver.ts +80 -15
  354. package/src/generic/actionOutputFieldSecurity.ts +75 -0
  355. package/src/generic/fieldSecurityTransport.ts +62 -0
  356. package/src/index.ts +127 -68
  357. package/src/integration/CustomColumnPromoter.ts +6 -1
  358. package/src/logging/variablesLoggingMiddleware.ts +59 -3
  359. package/src/realtimeSessions/README.md +7 -3
  360. package/src/realtimeSessions/SessionVerificationPortsBase.ts +1 -0
  361. package/src/realtimeSessions/ownedRealtimeSession.ts +20 -6
  362. package/src/realtimeSessions/sessionAccess.ts +181 -25
  363. package/src/realtimeSessions/sessionConfigStamps.ts +1 -1
  364. package/src/realtimeSessions/subscriptionAuthorization.ts +4 -2
  365. package/src/realtimeSessions/verificationWorkflow.ts +3 -1
  366. package/src/realtimeWidget/WidgetRouter.ts +22 -4
  367. package/src/realtimeWidget/WidgetSessionService.ts +252 -17
  368. package/src/realtimeWidget/host-identity.ts +1 -1
  369. package/src/realtimeWidget/widgetCore.ts +30 -1
  370. package/src/realtimeWidget/widgetGuestElevation.ts +2 -1
  371. package/src/resolvers/ActionResolver.ts +78 -15
  372. package/src/resolvers/AdhocQueryResolver.ts +1 -0
  373. package/src/resolvers/AgentRunStatusPublisher.ts +36 -8
  374. package/src/resolvers/AgentSessionResolver.ts +46 -18
  375. package/src/resolvers/EntityCommunicationsResolver.ts +56 -15
  376. package/src/resolvers/FetchEntityVectorsResolver.ts +132 -21
  377. package/src/resolvers/FileCategoryResolver.ts +1 -0
  378. package/src/resolvers/FileResolver.ts +14 -4
  379. package/src/resolvers/IntegrationDiscoveryResolver.ts +49 -7
  380. package/src/resolvers/MergeRecordsResolver.ts +23 -2
  381. package/src/resolvers/PipelineProgressResolver.ts +12 -3
  382. package/src/resolvers/QueryResolver.ts +20 -6
  383. package/src/resolvers/QuerySystemUserResolver.ts +15 -6
  384. package/src/resolvers/RSUResolver.ts +12 -0
  385. package/src/resolvers/RealtimeClientSessionResolver.ts +104 -33
  386. package/src/resolvers/RemoteBrowserActionResolver.ts +15 -10
  387. package/src/resolvers/RunAIAgentResolver.ts +258 -82
  388. package/src/resolvers/RunTemplateResolver.ts +6 -4
  389. package/src/resolvers/RunTestResolver.ts +3 -1
  390. package/src/resolvers/SyncDataResolver.ts +4 -0
  391. package/src/resolvers/TestQuerySQLResolver.ts +1 -0
  392. package/src/resolvers/TransactionGroupResolver.ts +66 -15
  393. package/src/resolvers/UserViewResolver.ts +2 -1
  394. package/src/resolvers/__tests__/MergeRecordsResolver.test.ts +43 -0
  395. package/src/rest/EntityCRUDHandler.ts +22 -5
  396. package/src/rest/RESTEndpointHandler.ts +8 -5
  397. package/src/rest/RealtimeRecordingHandler.ts +13 -10
  398. package/src/rest/ViewOperationsHandler.ts +24 -6
  399. package/src/serverRoleConfigUnits.ts +48 -0
  400. package/src/services/TaskGraphContinuationDeliverer.ts +52 -20
  401. 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, MJAIAgentSessionRecordingShardEntity, MJAIAgentSessionEntity, MJAIAgentSkillEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentUserPolicyEntity, MJAIAgentEntity, MJAIArchitectureEntity, MJAIBridgeAgentIdentityEntity, MJAIBridgeProviderChannelEntity, MJAIBridgeProviderEntity, MJAIClientToolDefinitionEntity, MJAIConfigurationParamEntity, MJAIConfigurationEntity, MJAICredentialBindingEntity, MJAIModalityEntity, MJAIModelActionEntity, MJAIModelArchitectureEntity, MJAIModelCostEntity, MJAIModelModalityEntity, MJAIModelPersonaEntity, MJAIModelPriceTypeEntity, MJAIModelPriceUnitTypeEntity, MJAIModelTypeEntity, MJAIModelVendorEntity, MJAIModelEntity, MJAIPersonaVendorEntity, MJAIPersonaEntity, MJAIPromptCategoryEntity, MJAIPromptModelEntity, MJAIPromptRunMediaEntity, MJAIPromptRunEntity, MJAIPromptTypeEntity, MJAIPromptEntity, MJAIRemoteBrowserProviderEntity, MJAIResultCacheEntity, MJAISkillActionEntity, MJAISkillPermissionEntity, MJAISkillSearchScopeEntity, MJAISkillSubAgentEntity, MJAISkillEntity, MJAIUsageTypeEntity, MJAIVendorTypeDefinitionEntity, MJAIVendorTypeEntity, MJAIVendorEntity, MJAPIApplicationScopeEntity, MJAPIApplicationEntity, MJAPIKeyApplicationEntity, MJAPIKeyScopeEntity, MJAPIKeyUsageLogEntity, MJAPIKeyEntity, MJAPIScopeEntity, MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJApplicationEntityEntity, MJApplicationRoleEntity, MJApplicationSettingEntity, MJApplicationEntity, MJArchiveConfigurationEntityEntity, MJArchiveConfigurationEntity, MJArchiveRunDetailEntity, MJArchiveRunEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthenticationProviderEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJClusterAnalysisEntity, MJClusterAnalysisClusterEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationSyncWatermarkEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemChunkEntity, MJContentItemDuplicateEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunDetailEntity, MJContentProcessRunPromptRunEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationBranchEntity, MJConversationCompactionRunEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationSkillEntity, MJConversationWidgetInstanceEntity, MJConversationEntity, MJCountryEntity, MJCredentialCategoryEntity, MJCredentialTypeEntity, MJCredentialEntity, MJDashboardCategoryEntity, MJDashboardCategoryLinkEntity, MJDashboardCategoryPermissionEntity, MJDashboardPartTypeEntity, MJDashboardPermissionEntity, MJDashboardUserPreferenceEntity, MJDashboardUserStateEntity, MJDashboardEntity, MJDataContextItemEntity, MJDataContextEntity, MJDatasetItemEntity, MJDatasetEntity, MJDuplicateRunDetailMatchEntity, MJDuplicateRunDetailEntity, MJDuplicateRunEntity, MJEmployeeCompanyIntegrationEntity, MJEmployeeRoleEntity, MJEmployeeSkillEntity, MJEmployeeEntity, MJEncryptionAlgorithmEntity, MJEncryptionKeySourceEntity, MJEncryptionKeyEntity, MJEntityEntity, MJEntityAIActionEntity, MJEntityActionFilterEntity, MJEntityActionInvocationTypeEntity, MJEntityActionInvocationEntity, MJEntityActionParamEntity, MJEntityActionEntity, MJEntityCommunicationFieldEntity, MJEntityCommunicationMessageTypeEntity, MJEntityDocumentRunEntity, MJEntityDocumentSettingEntity, MJEntityDocumentTypeEntity, MJEntityDocumentEntity, MJEntityFieldPermissionEntity, MJEntityFieldValueEntity, MJEntityFieldEntity, MJEntityFormContributionEntity, MJEntityFormOverrideEntity, MJEntityOrganicKeyRelatedEntityEntity, MJEntityOrganicKeyEntity, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExperimentSessionIterationEntity, MJExperimentSessionEntity, MJExperimentEntity, MJExplorerNavigationItemEntity, MJExternalDataSourceTypeEntity, MJExternalDataSourceEntity, MJFeaturePipelineTypeEntity, MJFeaturePipelineVersionEntity, MJFeatureValueCacheEntity, MJFeatureValueEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountPermissionEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJFormChromeRuleEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJIdentityClaimTypeEntity, MJIdentityClaimEntity, MJInstanceConfigurationEntity, MJIntegrationObjectFieldEntity, MJIntegrationObjectEntity, MJIntegrationSourceTypeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJInteractionEventEntity, MJInteractionLinkEntity, MJInteractionOfferEntity, MJInteractionEntity, MJKnowledgeHubSavedSearchEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJMCPToolFavoriteEntity, MJMLAlgorithmUseCaseRankingEntity, MJMLAlgorithmUseCaseEntity, MJMLAlgorithmEntity, MJMLModelScoringBindingEntity, MJMLModelEntity, MJMLTrainingPipelineEntity, MJMLTrainingRunEntity, MJMagicLinkInviteAllowedDomainEntity, MJMagicLinkInviteAllowedPathEntity, MJMagicLinkInviteApplicationEntity, MJMagicLinkInviteRoleEntity, MJMagicLinkInviteEntity, MJMagicLinkRedemptionEntity, MJMaterializedResultQueryEntity, MJMaterializedResultEntity, MJMeetingParticipantEntity, MJMeetingEntity, MJNumberPoolEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJPermissionDomainEntity, MJPhoneNumberEntity, MJProcessRunDetailEntity, MJProcessRunEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryDependencyEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQuerySQLEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRSUPendingWorkEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordCloneLogItemEntity, MJRecordCloneLogEntity, MJRecordGeoCodeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJRecordProcessCategoryEntity, MJRecordProcessWatermarkEntity, MJRecordProcessEntity, MJRemoteOperationCategoryEntity, MJRemoteOperationEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJRubricBandEntity, MJRubricCategoryEntity, MJRubricCriterionEntity, MJRubricCriterionLevelEntity, MJRubricEvaluationScoreEntity, MJRubricEvaluationEntity, MJRubricScaleLevelEntity, MJRubricScaleEntity, MJRubricVersionEntity, MJRubricEntity, MJSQLDialectEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJScopedNotificationConfigEntity, MJScopedPromptConfigEntity, MJScopedPromptPartEntity, MJSearchExecutionLogEntity, MJSearchProviderEntity, MJSearchScopeEntityEntity, MJSearchScopeExternalIndexEntity, MJSearchScopePermissionEntity, MJSearchScopeProviderEntity, MJSearchScopeStorageAccountEntity, MJSearchScopeTestQueryEntity, MJSearchScopeEntity, MJSignatureAccountEntity, MJSignatureProviderEntity, MJSignatureRequestDocumentEntity, MJSignatureRequestLogEntity, MJSignatureRequestRecipientEntity, MJSignatureRequestEntity, MJSkillEntity, MJStateProvinceEntity, MJTagAuditLogEntity, MJTagCoOccurrenceEntity, MJTagScopeEntity, MJTagSuggestionEntity, MJTagSynonymEntity, MJTaggedItemEntity, MJTagEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJTaskEntity, MJTemplateCategoryEntity, MJTemplateContentTypeEntity, MJTemplateContentEntity, MJTemplateParamEntity, MJTemplateEntity, MJTestRubricEntity, MJTestRunFeedbackEntity, MJTestRunOutputTypeEntity, MJTestRunOutputEntity, MJTestRunEntity, MJTestSuiteRunEntity, MJTestSuiteTestEntity, MJTestSuiteEntity, MJTestTypeEntity, MJTestEntity, MJThemeEntity, MJUserApplicationEntityEntity, MJUserApplicationEntity, MJUserFavoriteEntity, MJUserNotificationPreferenceEntity, MJUserNotificationTypeEntity, MJUserNotificationEntity, MJUserRecordLogEntity, MJUserRoleEntity, MJUserRoutineRecipientEntity, MJUserRoutineRunEntity, MJUserRoutineEntity, MJUserSettingEntity, MJUserViewCategoryEntity, MJUserViewRunDetailEntity, MJUserViewRunEntity, MJUserViewEntity, MJUserEntity, MJVectorDatabaseEntity, MJVectorIndexEntity, MJVersionInstallationEntity, MJVersionLabelItemEntity, MJVersionLabelRestoreEntity, MJVersionLabelEntity, MJViewTypeEntity, MJWebSearchProviderEntity, MJWorkQueueDeduplicationEntity, MJWorkQueueDeliveryEntity, MJWorkQueueMessageEntity, MJWorkQueueSubscriptionEntity, MJWorkQueueTopicEntity, MJWorkQueueTransportEntity, MJWorkspaceItemEntity, MJWorkspaceEntity } from '@memberjunction/core-entities';
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
  //****************************************************************************
@@ -6531,6 +6531,9 @@ export class MJAIAgentRun_ {
6531
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."})
6532
6532
  ContinuationDepth?: number;
6533
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
+
6534
6537
  @Field({nullable: true})
6535
6538
  @MaxLength(255)
6536
6539
  Agent?: string;
@@ -6758,6 +6761,9 @@ export class CreateMJAIAgentRunInput {
6758
6761
  @Field(() => Int, { nullable: true })
6759
6762
  ContinuationDepth?: number;
6760
6763
 
6764
+ @Field({ nullable: true })
6765
+ BoundActionParams: string | null;
6766
+
6761
6767
  @Field(() => RestoreContextInput, { nullable: true })
6762
6768
  RestoreContext___?: RestoreContextInput;
6763
6769
  }
@@ -6921,6 +6927,9 @@ export class UpdateMJAIAgentRunInput {
6921
6927
  @Field(() => Int, { nullable: true })
6922
6928
  ContinuationDepth?: number;
6923
6929
 
6930
+ @Field({ nullable: true })
6931
+ BoundActionParams?: string | null;
6932
+
6924
6933
  @Field(() => [KeyValuePairInput], { nullable: true })
6925
6934
  OldValues___?: KeyValuePairInput[];
6926
6935
 
@@ -8349,36 +8358,15 @@ export class CreateMJAIAgentSessionInput {
8349
8358
  @Field({ nullable: true })
8350
8359
  CloseReason: string | null;
8351
8360
 
8352
- @Field({ nullable: true })
8353
- RecordingMedia: string | null;
8354
-
8355
8361
  @Field({ nullable: true })
8356
8362
  RecordingStartedAt: Date | null;
8357
8363
 
8358
- @Field({ nullable: true })
8359
- RecordingFileID: string | null;
8360
-
8361
8364
  @Field({ nullable: true })
8362
8365
  LinkedEntityID: string | null;
8363
8366
 
8364
8367
  @Field({ nullable: true })
8365
8368
  LinkedRecordID: string | null;
8366
8369
 
8367
- @Field({ nullable: true })
8368
- RecordingStatus: string | null;
8369
-
8370
- @Field(() => Int, { nullable: true })
8371
- RecordingExpectedShards: number | null;
8372
-
8373
- @Field(() => Int, { nullable: true })
8374
- RecordingCapturedSamples: number | null;
8375
-
8376
- @Field({ nullable: true })
8377
- RecordingGaps: string | null;
8378
-
8379
- @Field(() => Int, { nullable: true })
8380
- RecordingAssemblyVersion?: number;
8381
-
8382
8370
  @Field(() => RestoreContextInput, { nullable: true })
8383
8371
  RestoreContext___?: RestoreContextInput;
8384
8372
  }
@@ -8422,36 +8410,15 @@ export class UpdateMJAIAgentSessionInput {
8422
8410
  @Field({ nullable: true })
8423
8411
  CloseReason?: string | null;
8424
8412
 
8425
- @Field({ nullable: true })
8426
- RecordingMedia?: string | null;
8427
-
8428
8413
  @Field({ nullable: true })
8429
8414
  RecordingStartedAt?: Date | null;
8430
8415
 
8431
- @Field({ nullable: true })
8432
- RecordingFileID?: string | null;
8433
-
8434
8416
  @Field({ nullable: true })
8435
8417
  LinkedEntityID?: string | null;
8436
8418
 
8437
8419
  @Field({ nullable: true })
8438
8420
  LinkedRecordID?: string | null;
8439
8421
 
8440
- @Field({ nullable: true })
8441
- RecordingStatus?: string | null;
8442
-
8443
- @Field(() => Int, { nullable: true })
8444
- RecordingExpectedShards?: number | null;
8445
-
8446
- @Field(() => Int, { nullable: true })
8447
- RecordingCapturedSamples?: number | null;
8448
-
8449
- @Field({ nullable: true })
8450
- RecordingGaps?: string | null;
8451
-
8452
- @Field(() => Int, { nullable: true })
8453
- RecordingAssemblyVersion?: number;
8454
-
8455
8422
  @Field(() => [KeyValuePairInput], { nullable: true })
8456
8423
  OldValues___?: KeyValuePairInput[];
8457
8424
 
@@ -28534,6 +28501,433 @@ export class MJAuthorizationResolver extends ResolverBase {
28534
28501
 
28535
28502
  }
28536
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
+
28537
28931
  //****************************************************************************
28538
28932
  // ENTITY CLASS for MJ: Cluster Analysis
28539
28933
  //****************************************************************************
@@ -30263,6 +30657,13 @@ export class MJCommunicationProvider_ {
30263
30657
  @MaxLength(36)
30264
30658
  DefaultCredentialID?: string;
30265
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
+
30266
30667
  @Field({nullable: true})
30267
30668
  @MaxLength(200)
30268
30669
  DefaultCredential?: string;
@@ -30322,6 +30723,12 @@ export class CreateMJCommunicationProviderInput {
30322
30723
  @Field({ nullable: true })
30323
30724
  DefaultCredentialID: string | null;
30324
30725
 
30726
+ @Field(() => Boolean, { nullable: true })
30727
+ AllowUserDelegatedOAuth?: boolean;
30728
+
30729
+ @Field({ nullable: true })
30730
+ AllowedOAuthTenantIDs: string | null;
30731
+
30325
30732
  @Field(() => RestoreContextInput, { nullable: true })
30326
30733
  RestoreContext___?: RestoreContextInput;
30327
30734
  }
@@ -30377,6 +30784,12 @@ export class UpdateMJCommunicationProviderInput {
30377
30784
  @Field({ nullable: true })
30378
30785
  DefaultCredentialID?: string | null;
30379
30786
 
30787
+ @Field(() => Boolean, { nullable: true })
30788
+ AllowUserDelegatedOAuth?: boolean;
30789
+
30790
+ @Field({ nullable: true })
30791
+ AllowedOAuthTenantIDs?: string | null;
30792
+
30380
30793
  @Field(() => [KeyValuePairInput], { nullable: true })
30381
30794
  OldValues___?: KeyValuePairInput[];
30382
30795
 
@@ -31181,12 +31594,841 @@ export class MJCompanyIntegrationFieldMap_ {
31181
31594
  @Field()
31182
31595
  _mj__CreatedAt: Date;
31183
31596
 
31184
- @Field()
31185
- _mj__UpdatedAt: Date;
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;
31186
32428
 
31187
32429
  @Field({nullable: true})
31188
- @MaxLength(500)
31189
- EntityMap?: string;
32430
+ @MaxLength(255)
32431
+ IntegrationObject?: string;
31190
32432
 
31191
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.` })
31192
32434
  ReadableFields___?: string[];
@@ -31194,98 +32436,320 @@ export class MJCompanyIntegrationFieldMap_ {
31194
32436
  }
31195
32437
 
31196
32438
  //****************************************************************************
31197
- // INPUT TYPE for MJ: Company Integration Field Maps
32439
+ // INPUT TYPE for MJ: Company Integration Objects
31198
32440
  //****************************************************************************
31199
32441
  @InputType()
31200
- export class CreateMJCompanyIntegrationFieldMapInput {
32442
+ export class CreateMJCompanyIntegrationObjectInput {
31201
32443
  @Field({ nullable: true })
31202
32444
  ID?: string;
31203
32445
 
31204
32446
  @Field({ nullable: true })
31205
- EntityMapID?: string;
32447
+ IntegrationID?: string;
31206
32448
 
31207
32449
  @Field({ nullable: true })
31208
- SourceFieldName?: string;
32450
+ Name?: string;
31209
32451
 
31210
32452
  @Field({ nullable: true })
31211
- SourceFieldLabel: string | null;
32453
+ DisplayName: string | null;
31212
32454
 
31213
32455
  @Field({ nullable: true })
31214
- DestinationFieldName?: string;
32456
+ Description: string | null;
31215
32457
 
31216
32458
  @Field({ nullable: true })
31217
- DestinationFieldLabel: string | null;
32459
+ Category: string | null;
31218
32460
 
31219
32461
  @Field({ nullable: true })
31220
- Direction?: string;
32462
+ APIPath?: string;
31221
32463
 
31222
32464
  @Field({ nullable: true })
31223
- TransformPipeline: string | null;
32465
+ ResponseDataKey: string | null;
32466
+
32467
+ @Field(() => Int, { nullable: true })
32468
+ DefaultPageSize?: number;
31224
32469
 
31225
32470
  @Field(() => Boolean, { nullable: true })
31226
- IsKeyField?: boolean;
32471
+ SupportsPagination?: boolean;
32472
+
32473
+ @Field({ nullable: true })
32474
+ PaginationType?: string;
31227
32475
 
31228
32476
  @Field(() => Boolean, { nullable: true })
31229
- IsRequired?: boolean;
32477
+ SupportsIncrementalSync?: boolean;
32478
+
32479
+ @Field(() => Boolean, { nullable: true })
32480
+ SupportsWrite?: boolean;
31230
32481
 
31231
32482
  @Field({ nullable: true })
31232
- DefaultValue: string | null;
32483
+ DefaultQueryParams: string | null;
32484
+
32485
+ @Field({ nullable: true })
32486
+ Configuration: string | null;
31233
32487
 
31234
32488
  @Field(() => Int, { nullable: true })
31235
- Priority?: number;
32489
+ Sequence?: number;
31236
32490
 
31237
32491
  @Field({ nullable: true })
31238
32492
  Status?: string;
31239
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
+
32521
+ @Field({ nullable: true })
32522
+ UpdateAPIPath: string | null;
32523
+
32524
+ @Field({ nullable: true })
32525
+ UpdateMethod: string | null;
32526
+
32527
+ @Field({ nullable: true })
32528
+ UpdateBodyShape: string | null;
32529
+
32530
+ @Field({ nullable: true })
32531
+ UpdateBodyKey: string | null;
32532
+
32533
+ @Field({ nullable: true })
32534
+ UpdateIDLocation: string | null;
32535
+
32536
+ @Field({ nullable: true })
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;
32547
+
32548
+ @Field(() => Boolean, { nullable: true })
32549
+ SupportsCreate?: boolean;
32550
+
32551
+ @Field(() => Boolean, { nullable: true })
32552
+ SupportsUpdate?: boolean;
32553
+
32554
+ @Field(() => Boolean, { nullable: true })
32555
+ SupportsDelete?: boolean;
32556
+
32557
+ @Field({ nullable: true })
32558
+ SyncStrategy: string | null;
32559
+
32560
+ @Field(() => Boolean, { nullable: true })
32561
+ ContentHashApplicable?: boolean;
32562
+
32563
+ @Field({ nullable: true })
32564
+ StableOrderingKey: string | null;
32565
+
32566
+ @Field({ nullable: true })
32567
+ CompanyIntegrationID?: string;
32568
+
32569
+ @Field({ nullable: true })
32570
+ IntegrationObjectID: string | null;
32571
+
32572
+ @Field({ nullable: true })
32573
+ Provenance?: string;
32574
+
32575
+ @Field({ nullable: true })
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;
32592
+
31240
32593
  @Field(() => RestoreContextInput, { nullable: true })
31241
32594
  RestoreContext___?: RestoreContextInput;
31242
32595
  }
31243
32596
 
31244
32597
 
31245
32598
  //****************************************************************************
31246
- // INPUT TYPE for MJ: Company Integration Field Maps
32599
+ // INPUT TYPE for MJ: Company Integration Objects
31247
32600
  //****************************************************************************
31248
32601
  @InputType()
31249
- export class UpdateMJCompanyIntegrationFieldMapInput {
32602
+ export class UpdateMJCompanyIntegrationObjectInput {
31250
32603
  @Field()
31251
32604
  ID: string;
31252
32605
 
31253
32606
  @Field({ nullable: true })
31254
- EntityMapID?: string;
32607
+ IntegrationID?: string;
31255
32608
 
31256
32609
  @Field({ nullable: true })
31257
- SourceFieldName?: string;
32610
+ Name?: string;
31258
32611
 
31259
32612
  @Field({ nullable: true })
31260
- SourceFieldLabel?: string | null;
32613
+ DisplayName?: string | null;
31261
32614
 
31262
32615
  @Field({ nullable: true })
31263
- DestinationFieldName?: string;
32616
+ Description?: string | null;
31264
32617
 
31265
32618
  @Field({ nullable: true })
31266
- DestinationFieldLabel?: string | null;
32619
+ Category?: string | null;
31267
32620
 
31268
32621
  @Field({ nullable: true })
31269
- Direction?: string;
32622
+ APIPath?: string;
31270
32623
 
31271
32624
  @Field({ nullable: true })
31272
- TransformPipeline?: string | null;
32625
+ ResponseDataKey?: string | null;
32626
+
32627
+ @Field(() => Int, { nullable: true })
32628
+ DefaultPageSize?: number;
31273
32629
 
31274
32630
  @Field(() => Boolean, { nullable: true })
31275
- IsKeyField?: boolean;
32631
+ SupportsPagination?: boolean;
32632
+
32633
+ @Field({ nullable: true })
32634
+ PaginationType?: string;
31276
32635
 
31277
32636
  @Field(() => Boolean, { nullable: true })
31278
- IsRequired?: boolean;
32637
+ SupportsIncrementalSync?: boolean;
32638
+
32639
+ @Field(() => Boolean, { nullable: true })
32640
+ SupportsWrite?: boolean;
31279
32641
 
31280
32642
  @Field({ nullable: true })
31281
- DefaultValue?: string | null;
32643
+ DefaultQueryParams?: string | null;
32644
+
32645
+ @Field({ nullable: true })
32646
+ Configuration?: string | null;
31282
32647
 
31283
32648
  @Field(() => Int, { nullable: true })
31284
- Priority?: number;
32649
+ Sequence?: number;
31285
32650
 
31286
32651
  @Field({ nullable: true })
31287
32652
  Status?: string;
31288
32653
 
32654
+ @Field({ nullable: true })
32655
+ WriteAPIPath?: string | null;
32656
+
32657
+ @Field({ nullable: true })
32658
+ WriteMethod?: string | null;
32659
+
32660
+ @Field({ nullable: true })
32661
+ DeleteMethod?: string | null;
32662
+
32663
+ @Field(() => Boolean, { nullable: true })
32664
+ IsCustom?: boolean;
32665
+
32666
+ @Field({ nullable: true })
32667
+ CreateAPIPath?: string | null;
32668
+
32669
+ @Field({ nullable: true })
32670
+ CreateMethod?: string | null;
32671
+
32672
+ @Field({ nullable: true })
32673
+ CreateBodyShape?: string | null;
32674
+
32675
+ @Field({ nullable: true })
32676
+ CreateBodyKey?: string | null;
32677
+
32678
+ @Field({ nullable: true })
32679
+ CreateIDLocation?: string | null;
32680
+
32681
+ @Field({ nullable: true })
32682
+ UpdateAPIPath?: string | null;
32683
+
32684
+ @Field({ nullable: true })
32685
+ UpdateMethod?: string | null;
32686
+
32687
+ @Field({ nullable: true })
32688
+ UpdateBodyShape?: string | null;
32689
+
32690
+ @Field({ nullable: true })
32691
+ UpdateBodyKey?: string | null;
32692
+
32693
+ @Field({ nullable: true })
32694
+ UpdateIDLocation?: string | null;
32695
+
32696
+ @Field({ nullable: true })
32697
+ DeleteAPIPath?: string | null;
32698
+
32699
+ @Field({ nullable: true })
32700
+ DeleteIDLocation?: string | null;
32701
+
32702
+ @Field({ nullable: true })
32703
+ IncrementalWatermarkField?: string | null;
32704
+
32705
+ @Field({ nullable: true })
32706
+ MetadataSource?: string;
32707
+
32708
+ @Field(() => Boolean, { nullable: true })
32709
+ SupportsCreate?: boolean;
32710
+
32711
+ @Field(() => Boolean, { nullable: true })
32712
+ SupportsUpdate?: boolean;
32713
+
32714
+ @Field(() => Boolean, { nullable: true })
32715
+ SupportsDelete?: boolean;
32716
+
32717
+ @Field({ nullable: true })
32718
+ SyncStrategy?: string | null;
32719
+
32720
+ @Field(() => Boolean, { nullable: true })
32721
+ ContentHashApplicable?: boolean;
32722
+
32723
+ @Field({ nullable: true })
32724
+ StableOrderingKey?: string | null;
32725
+
32726
+ @Field({ nullable: true })
32727
+ CompanyIntegrationID?: string;
32728
+
32729
+ @Field({ nullable: true })
32730
+ IntegrationObjectID?: string | null;
32731
+
32732
+ @Field({ nullable: true })
32733
+ Provenance?: string;
32734
+
32735
+ @Field({ nullable: true })
32736
+ ProvenanceDetail?: string | null;
32737
+
32738
+ @Field(() => Boolean, { nullable: true })
32739
+ IsSelected?: boolean;
32740
+
32741
+ @Field({ nullable: true })
32742
+ SelectedAt?: Date | null;
32743
+
32744
+ @Field({ nullable: true })
32745
+ FirstSeenAt?: Date | null;
32746
+
32747
+ @Field({ nullable: true })
32748
+ LastSeenAt?: Date | null;
32749
+
32750
+ @Field({ nullable: true })
32751
+ LastSampledAt?: Date | null;
32752
+
31289
32753
  @Field(() => [KeyValuePairInput], { nullable: true })
31290
32754
  OldValues___?: KeyValuePairInput[];
31291
32755
 
@@ -31294,12 +32758,12 @@ export class UpdateMJCompanyIntegrationFieldMapInput {
31294
32758
  }
31295
32759
 
31296
32760
  //****************************************************************************
31297
- // RESOLVER for MJ: Company Integration Field Maps
32761
+ // RESOLVER for MJ: Company Integration Objects
31298
32762
  //****************************************************************************
31299
32763
  @ObjectType()
31300
- export class RunMJCompanyIntegrationFieldMapViewResult {
31301
- @Field(() => [MJCompanyIntegrationFieldMap_])
31302
- Results: MJCompanyIntegrationFieldMap_[];
32764
+ export class RunMJCompanyIntegrationObjectViewResult {
32765
+ @Field(() => [MJCompanyIntegrationObject_])
32766
+ Results: MJCompanyIntegrationObject_[];
31303
32767
 
31304
32768
  @Field(() => String, {nullable: true})
31305
32769
  UserViewRunID?: string;
@@ -31320,61 +32784,61 @@ export class RunMJCompanyIntegrationFieldMapViewResult {
31320
32784
  Success: boolean;
31321
32785
  }
31322
32786
 
31323
- @Resolver(MJCompanyIntegrationFieldMap_)
31324
- export class MJCompanyIntegrationFieldMapResolver extends ResolverBase {
31325
- @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
31326
- 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) {
31327
32791
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31328
32792
  return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
31329
32793
  }
31330
32794
 
31331
- @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
31332
- 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) {
31333
32797
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31334
32798
  return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
31335
32799
  }
31336
32800
 
31337
- @Query(() => RunMJCompanyIntegrationFieldMapViewResult)
31338
- 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) {
31339
32803
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31340
- input.EntityName = 'MJ: Company Integration Field Maps';
32804
+ input.EntityName = 'MJ: Company Integration Objects';
31341
32805
  return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
31342
32806
  }
31343
- @Query(() => MJCompanyIntegrationFieldMap_, { nullable: true })
31344
- async MJCompanyIntegrationFieldMap(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJCompanyIntegrationFieldMap_ | null> {
31345
- 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);
31346
32810
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
31347
- 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');
31348
32812
  const rows = await provider.ExecuteSQL(sSQL, [ID], undefined, this.GetUserFromPayload(userPayload));
31349
- 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));
31350
32814
  return result;
31351
32815
  }
31352
32816
 
31353
- @Mutation(() => MJCompanyIntegrationFieldMap_)
31354
- async CreateMJCompanyIntegrationFieldMap(
31355
- @Arg('input', () => CreateMJCompanyIntegrationFieldMapInput) input: CreateMJCompanyIntegrationFieldMapInput,
32817
+ @Mutation(() => MJCompanyIntegrationObject_)
32818
+ async CreateMJCompanyIntegrationObject(
32819
+ @Arg('input', () => CreateMJCompanyIntegrationObjectInput) input: CreateMJCompanyIntegrationObjectInput,
31356
32820
  @Ctx() { providers, userPayload }: AppContext,
31357
32821
  @PubSub() pubSub: PubSubEngine
31358
32822
  ) {
31359
32823
  const provider = GetReadWriteProvider(providers);
31360
- return this.CreateRecord('MJ: Company Integration Field Maps', input, provider, userPayload, pubSub)
32824
+ return this.CreateRecord('MJ: Company Integration Objects', input, provider, userPayload, pubSub)
31361
32825
  }
31362
32826
 
31363
- @Mutation(() => MJCompanyIntegrationFieldMap_)
31364
- async UpdateMJCompanyIntegrationFieldMap(
31365
- @Arg('input', () => UpdateMJCompanyIntegrationFieldMapInput) input: UpdateMJCompanyIntegrationFieldMapInput,
32827
+ @Mutation(() => MJCompanyIntegrationObject_)
32828
+ async UpdateMJCompanyIntegrationObject(
32829
+ @Arg('input', () => UpdateMJCompanyIntegrationObjectInput) input: UpdateMJCompanyIntegrationObjectInput,
31366
32830
  @Ctx() { providers, userPayload }: AppContext,
31367
32831
  @PubSub() pubSub: PubSubEngine
31368
32832
  ) {
31369
32833
  const provider = GetReadWriteProvider(providers);
31370
- return this.UpdateRecord('MJ: Company Integration Field Maps', input, provider, userPayload, pubSub);
32834
+ return this.UpdateRecord('MJ: Company Integration Objects', input, provider, userPayload, pubSub);
31371
32835
  }
31372
32836
 
31373
- @Mutation(() => MJCompanyIntegrationFieldMap_)
31374
- 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) {
31375
32839
  const provider = GetReadWriteProvider(providers);
31376
32840
  const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
31377
- 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);
31378
32842
  }
31379
32843
 
31380
32844
  }
@@ -33761,10 +35225,32 @@ export class MJComponent_ {
33761
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."})
33762
35226
  TechnicalDesignVectorBinary?: string;
33763
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
+
33764
35246
  @Field({nullable: true})
33765
35247
  @MaxLength(255)
33766
35248
  SourceRegistry?: string;
33767
35249
 
35250
+ @Field({nullable: true})
35251
+ @MaxLength(100)
35252
+ ApprovedByUser?: string;
35253
+
33768
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.` })
33769
35255
  ReadableFields___?: string[];
33770
35256
 
@@ -33862,6 +35348,21 @@ export class CreateMJComponentInput {
33862
35348
  @Field({ nullable: true })
33863
35349
  TechnicalDesignVectorBinary: string | null;
33864
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
+
33865
35366
  @Field(() => RestoreContextInput, { nullable: true })
33866
35367
  RestoreContext___?: RestoreContextInput;
33867
35368
  }
@@ -33959,6 +35460,21 @@ export class UpdateMJComponentInput {
33959
35460
  @Field({ nullable: true })
33960
35461
  TechnicalDesignVectorBinary?: string | null;
33961
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
+
33962
35478
  @Field(() => [KeyValuePairInput], { nullable: true })
33963
35479
  OldValues___?: KeyValuePairInput[];
33964
35480
 
@@ -34075,6 +35591,16 @@ export class MJContentFileType_ {
34075
35591
  @Field()
34076
35592
  _mj__UpdatedAt: Date;
34077
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
+
34078
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.` })
34079
35605
  ReadableFields___?: string[];
34080
35606
 
@@ -34094,6 +35620,15 @@ export class CreateMJContentFileTypeInput {
34094
35620
  @Field({ nullable: true })
34095
35621
  FileExtension: string | null;
34096
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
+
34097
35632
  @Field(() => RestoreContextInput, { nullable: true })
34098
35633
  RestoreContext___?: RestoreContextInput;
34099
35634
  }
@@ -34113,6 +35648,15 @@ export class UpdateMJContentFileTypeInput {
34113
35648
  @Field({ nullable: true })
34114
35649
  FileExtension?: string | null;
34115
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
+
34116
35660
  @Field(() => [KeyValuePairInput], { nullable: true })
34117
35661
  OldValues___?: KeyValuePairInput[];
34118
35662
 
@@ -34460,6 +36004,12 @@ export class MJContentItemChunk_ {
34460
36004
  @MaxLength(36)
34461
36005
  ParentChunkID?: string;
34462
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
+
34463
36013
  @Field({nullable: true})
34464
36014
  @MaxLength(250)
34465
36015
  ContentItem?: string;
@@ -34560,6 +36110,12 @@ export class CreateMJContentItemChunkInput {
34560
36110
  @Field({ nullable: true })
34561
36111
  ParentChunkID: string | null;
34562
36112
 
36113
+ @Field({ nullable: true })
36114
+ FieldConfidence: string | null;
36115
+
36116
+ @Field({ nullable: true })
36117
+ Decorator: string | null;
36118
+
34563
36119
  @Field(() => RestoreContextInput, { nullable: true })
34564
36120
  RestoreContext___?: RestoreContextInput;
34565
36121
  }
@@ -34636,6 +36192,12 @@ export class UpdateMJContentItemChunkInput {
34636
36192
  @Field({ nullable: true })
34637
36193
  ParentChunkID?: string | null;
34638
36194
 
36195
+ @Field({ nullable: true })
36196
+ FieldConfidence?: string | null;
36197
+
36198
+ @Field({ nullable: true })
36199
+ Decorator?: string | null;
36200
+
34639
36201
  @Field(() => [KeyValuePairInput], { nullable: true })
34640
36202
  OldValues___?: KeyValuePairInput[];
34641
36203
 
@@ -35240,6 +36802,43 @@ export class MJContentItem_ {
35240
36802
  @MaxLength(2000)
35241
36803
  DisplayLink?: string;
35242
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
+
35243
36842
  @Field({nullable: true})
35244
36843
  @MaxLength(255)
35245
36844
  ContentSource?: string;
@@ -35268,6 +36867,10 @@ export class MJContentItem_ {
35268
36867
  @MaxLength(250)
35269
36868
  Parent?: string;
35270
36869
 
36870
+ @Field({nullable: true})
36871
+ @MaxLength(500)
36872
+ File?: string;
36873
+
35271
36874
  @Field({nullable: true})
35272
36875
  @MaxLength(36)
35273
36876
  RootParentID?: string;
@@ -35351,6 +36954,36 @@ export class CreateMJContentItemInput {
35351
36954
  @Field({ nullable: true })
35352
36955
  DisplayLink: string | null;
35353
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
+
35354
36987
  @Field(() => RestoreContextInput, { nullable: true })
35355
36988
  RestoreContext___?: RestoreContextInput;
35356
36989
  }
@@ -35418,6 +37051,36 @@ export class UpdateMJContentItemInput {
35418
37051
  @Field({ nullable: true })
35419
37052
  DisplayLink?: string | null;
35420
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
+
35421
37084
  @Field(() => [KeyValuePairInput], { nullable: true })
35422
37085
  OldValues___?: KeyValuePairInput[];
35423
37086
 
@@ -36795,6 +38458,18 @@ export class MJContentSource_ {
36795
38458
  @MaxLength(36)
36796
38459
  ScheduledJobID?: string;
36797
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
+
36798
38473
  @Field({nullable: true})
36799
38474
  @MaxLength(255)
36800
38475
  ContentType?: string;
@@ -36879,6 +38554,18 @@ export class CreateMJContentSourceInput {
36879
38554
  @Field({ nullable: true })
36880
38555
  ScheduledJobID: string | null;
36881
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
+
36882
38569
  @Field(() => RestoreContextInput, { nullable: true })
36883
38570
  RestoreContext___?: RestoreContextInput;
36884
38571
  }
@@ -36931,6 +38618,18 @@ export class UpdateMJContentSourceInput {
36931
38618
  @Field({ nullable: true })
36932
38619
  ScheduledJobID?: string | null;
36933
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
+
36934
38633
  @Field(() => [KeyValuePairInput], { nullable: true })
36935
38634
  OldValues___?: KeyValuePairInput[];
36936
38635
 
@@ -37247,6 +38946,10 @@ export class MJContentType_ {
37247
38946
  @MaxLength(100)
37248
38947
  CleanerKey?: string;
37249
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
+
37250
38953
  @Field({nullable: true})
37251
38954
  @MaxLength(50)
37252
38955
  AIModel?: string;
@@ -37302,6 +39005,9 @@ export class CreateMJContentTypeInput {
37302
39005
  @Field({ nullable: true })
37303
39006
  CleanerKey: string | null;
37304
39007
 
39008
+ @Field({ nullable: true })
39009
+ ExtractorKey: string | null;
39010
+
37305
39011
  @Field(() => RestoreContextInput, { nullable: true })
37306
39012
  RestoreContext___?: RestoreContextInput;
37307
39013
  }
@@ -37345,6 +39051,9 @@ export class UpdateMJContentTypeInput {
37345
39051
  @Field({ nullable: true })
37346
39052
  CleanerKey?: string | null;
37347
39053
 
39054
+ @Field({ nullable: true })
39055
+ ExtractorKey?: string | null;
39056
+
37348
39057
  @Field(() => [KeyValuePairInput], { nullable: true })
37349
39058
  OldValues___?: KeyValuePairInput[];
37350
39059
 
@@ -42652,6 +44361,24 @@ export class MJDashboard_ {
42652
44361
  @MaxLength(36)
42653
44362
  EnvironmentID?: string;
42654
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
+
42655
44382
  @Field({nullable: true})
42656
44383
  @MaxLength(100)
42657
44384
  User?: string;
@@ -42668,6 +44395,10 @@ export class MJDashboard_ {
42668
44395
  @MaxLength(255)
42669
44396
  Environment?: string;
42670
44397
 
44398
+ @Field({nullable: true})
44399
+ @MaxLength(100)
44400
+ ApprovedByUser?: string;
44401
+
42671
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.` })
42672
44403
  ReadableFields___?: string[];
42673
44404
 
@@ -42717,6 +44448,21 @@ export class CreateMJDashboardInput {
42717
44448
  @Field({ nullable: true })
42718
44449
  EnvironmentID?: string;
42719
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
+
42720
44466
  @Field(() => RestoreContextInput, { nullable: true })
42721
44467
  RestoreContext___?: RestoreContextInput;
42722
44468
  }
@@ -42766,6 +44512,21 @@ export class UpdateMJDashboardInput {
42766
44512
  @Field({ nullable: true })
42767
44513
  EnvironmentID?: string;
42768
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
+
42769
44530
  @Field(() => [KeyValuePairInput], { nullable: true })
42770
44531
  OldValues___?: KeyValuePairInput[];
42771
44532
 
@@ -44283,6 +46044,10 @@ export class MJDuplicateRun_ {
44283
46044
  @Field(() => Boolean, {nullable: true, description: "When set to 1, duplicate detection stops after the current batch. Used for pause/cancel."})
44284
46045
  CancellationRequested?: boolean;
44285
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
+
44286
46051
  @Field({nullable: true})
44287
46052
  @MaxLength(255)
44288
46053
  Entity?: string;
@@ -44299,6 +46064,10 @@ export class MJDuplicateRun_ {
44299
46064
  @MaxLength(100)
44300
46065
  ApprovedByUser?: string;
44301
46066
 
46067
+ @Field({nullable: true})
46068
+ @MaxLength(250)
46069
+ EntityDocument?: string;
46070
+
44302
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.` })
44303
46072
  ReadableFields___?: string[];
44304
46073
 
@@ -44357,6 +46126,9 @@ export class CreateMJDuplicateRunInput {
44357
46126
  @Field(() => Boolean, { nullable: true })
44358
46127
  CancellationRequested?: boolean;
44359
46128
 
46129
+ @Field({ nullable: true })
46130
+ EntityDocumentID?: string;
46131
+
44360
46132
  @Field(() => RestoreContextInput, { nullable: true })
44361
46133
  RestoreContext___?: RestoreContextInput;
44362
46134
  }
@@ -44415,6 +46187,9 @@ export class UpdateMJDuplicateRunInput {
44415
46187
  @Field(() => Boolean, { nullable: true })
44416
46188
  CancellationRequested?: boolean;
44417
46189
 
46190
+ @Field({ nullable: true })
46191
+ EntityDocumentID?: string;
46192
+
44418
46193
  @Field(() => [KeyValuePairInput], { nullable: true })
44419
46194
  OldValues___?: KeyValuePairInput[];
44420
46195
 
@@ -47943,6 +49718,246 @@ export class MJEntityActionResolver extends ResolverBase {
47943
49718
 
47944
49719
  }
47945
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
+
47946
49961
  //****************************************************************************
47947
49962
  // ENTITY CLASS for MJ: Entity Communication Fields
47948
49963
  //****************************************************************************
@@ -71615,6 +73630,20 @@ export class MJQuery_ {
71615
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."})
71616
73631
  EmbeddingVectorBinary?: string;
71617
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
+
71618
73647
  @Field({nullable: true})
71619
73648
  @MaxLength(50)
71620
73649
  Category?: string;
@@ -71631,6 +73660,10 @@ export class MJQuery_ {
71631
73660
  @MaxLength(100)
71632
73661
  ExternalDataSource?: string;
71633
73662
 
73663
+ @Field({nullable: true})
73664
+ @MaxLength(100)
73665
+ ApprovedByUser?: string;
73666
+
71634
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.` })
71635
73668
  ReadableFields___?: string[];
71636
73669
 
@@ -71719,6 +73752,18 @@ export class CreateMJQueryInput {
71719
73752
  @Field({ nullable: true })
71720
73753
  EmbeddingVectorBinary: string | null;
71721
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
+
71722
73767
  @Field(() => RestoreContextInput, { nullable: true })
71723
73768
  RestoreContext___?: RestoreContextInput;
71724
73769
  }
@@ -71807,6 +73852,18 @@ export class UpdateMJQueryInput {
71807
73852
  @Field({ nullable: true })
71808
73853
  EmbeddingVectorBinary?: string | null;
71809
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
+
71810
73867
  @Field(() => [KeyValuePairInput], { nullable: true })
71811
73868
  OldValues___?: KeyValuePairInput[];
71812
73869
 
@@ -72364,6 +74421,10 @@ export class MJQueryEntity_ {
72364
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."})
72365
74422
  AutoDetectConfidenceScore?: number;
72366
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
+
72367
74428
  @Field({nullable: true})
72368
74429
  @MaxLength(255)
72369
74430
  Query?: string;
@@ -72372,6 +74433,10 @@ export class MJQueryEntity_ {
72372
74433
  @MaxLength(255)
72373
74434
  Entity?: string;
72374
74435
 
74436
+ @Field({nullable: true})
74437
+ @MaxLength(100)
74438
+ AlternateBaseView?: string;
74439
+
72375
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.` })
72376
74441
  ReadableFields___?: string[];
72377
74442
 
@@ -72397,6 +74462,9 @@ export class CreateMJQueryEntityInput {
72397
74462
  @Field(() => Float, { nullable: true })
72398
74463
  AutoDetectConfidenceScore: number | null;
72399
74464
 
74465
+ @Field({ nullable: true })
74466
+ AlternateBaseViewID: string | null;
74467
+
72400
74468
  @Field(() => RestoreContextInput, { nullable: true })
72401
74469
  RestoreContext___?: RestoreContextInput;
72402
74470
  }
@@ -72422,6 +74490,9 @@ export class UpdateMJQueryEntityInput {
72422
74490
  @Field(() => Float, { nullable: true })
72423
74491
  AutoDetectConfidenceScore?: number | null;
72424
74492
 
74493
+ @Field({ nullable: true })
74494
+ AlternateBaseViewID?: string | null;
74495
+
72425
74496
  @Field(() => [KeyValuePairInput], { nullable: true })
72426
74497
  OldValues___?: KeyValuePairInput[];
72427
74498
 
@@ -72839,6 +74910,9 @@ export class MJQueryParameter_ {
72839
74910
  @Field()
72840
74911
  _mj__UpdatedAt: Date;
72841
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
+
72842
74916
  @Field({nullable: true})
72843
74917
  @MaxLength(255)
72844
74918
  Query?: string;
@@ -72886,6 +74960,9 @@ export class CreateMJQueryParameterInput {
72886
74960
  @Field(() => Float, { nullable: true })
72887
74961
  AutoDetectConfidenceScore: number | null;
72888
74962
 
74963
+ @Field(() => Boolean, { nullable: true })
74964
+ IsServerSet?: boolean;
74965
+
72889
74966
  @Field(() => RestoreContextInput, { nullable: true })
72890
74967
  RestoreContext___?: RestoreContextInput;
72891
74968
  }
@@ -72929,6 +75006,9 @@ export class UpdateMJQueryParameterInput {
72929
75006
  @Field(() => Float, { nullable: true })
72930
75007
  AutoDetectConfidenceScore?: number | null;
72931
75008
 
75009
+ @Field(() => Boolean, { nullable: true })
75010
+ IsServerSet?: boolean;
75011
+
72932
75012
  @Field(() => [KeyValuePairInput], { nullable: true })
72933
75013
  OldValues___?: KeyValuePairInput[];
72934
75014
 
@@ -97019,6 +99099,27 @@ export class MJUserView_ {
97019
99099
  @MaxLength(36)
97020
99100
  ViewTypeID?: string;
97021
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
+
97022
99123
  @Field({nullable: true})
97023
99124
  @MaxLength(100)
97024
99125
  UserName?: string;
@@ -97119,6 +99220,24 @@ export class CreateMJUserViewInput {
97119
99220
  @Field({ nullable: true })
97120
99221
  ViewTypeID: string | null;
97121
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
+
97122
99241
  @Field(() => RestoreContextInput, { nullable: true })
97123
99242
  RestoreContext___?: RestoreContextInput;
97124
99243
  }
@@ -97195,6 +99314,24 @@ export class UpdateMJUserViewInput {
97195
99314
  @Field({ nullable: true })
97196
99315
  ViewTypeID?: string | null;
97197
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
+
97198
99335
  @Field(() => [KeyValuePairInput], { nullable: true })
97199
99336
  OldValues___?: KeyValuePairInput[];
97200
99337