@memberjunction/server 6.1.4 → 6.1.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 (227) hide show
  1. package/README.md +30 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentSessions/SessionManager.d.ts +5 -2
  4. package/dist/agentSessions/SessionManager.d.ts.map +1 -1
  5. package/dist/agentSessions/SessionManager.js +17 -8
  6. package/dist/agentSessions/SessionManager.js.map +1 -1
  7. package/dist/agentSessions/SessionRunIDVerifier.d.ts +63 -0
  8. package/dist/agentSessions/SessionRunIDVerifier.d.ts.map +1 -0
  9. package/dist/agentSessions/SessionRunIDVerifier.js +129 -0
  10. package/dist/agentSessions/SessionRunIDVerifier.js.map +1 -0
  11. package/dist/agentSessions/index.d.ts +1 -0
  12. package/dist/agentSessions/index.d.ts.map +1 -1
  13. package/dist/agentSessions/index.js +1 -0
  14. package/dist/agentSessions/index.js.map +1 -1
  15. package/dist/auth/actionAuthorization.d.ts +40 -0
  16. package/dist/auth/actionAuthorization.d.ts.map +1 -0
  17. package/dist/auth/actionAuthorization.js +94 -0
  18. package/dist/auth/actionAuthorization.js.map +1 -0
  19. package/dist/auth/exampleNewUserSubClass.js +2 -1
  20. package/dist/auth/exampleNewUserSubClass.js.map +1 -1
  21. package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
  22. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  23. package/dist/auth/magicLink/MagicLinkService.js +55 -38
  24. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  25. package/dist/auth/magicLink/magicLinkCore.d.ts +14 -33
  26. package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
  27. package/dist/auth/magicLink/magicLinkCore.js +20 -52
  28. package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
  29. package/dist/auth/newUsers.d.ts.map +1 -1
  30. package/dist/auth/newUsers.js +15 -11
  31. package/dist/auth/newUsers.js.map +1 -1
  32. package/dist/context.d.ts +6 -0
  33. package/dist/context.d.ts.map +1 -1
  34. package/dist/context.js +24 -34
  35. package/dist/context.js.map +1 -1
  36. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  37. package/dist/generated/graphql-schemas/__mj.js +3417 -3428
  38. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  39. package/dist/generic/CacheInvalidationResolver.d.ts +44 -8
  40. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  41. package/dist/generic/CacheInvalidationResolver.js +59 -19
  42. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  43. package/dist/generic/ResolverBase.d.ts +95 -11
  44. package/dist/generic/ResolverBase.d.ts.map +1 -1
  45. package/dist/generic/ResolverBase.js +186 -76
  46. package/dist/generic/ResolverBase.js.map +1 -1
  47. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  48. package/dist/generic/RunViewResolver.js +12 -0
  49. package/dist/generic/RunViewResolver.js.map +1 -1
  50. package/dist/index.d.ts +1 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +44 -45
  53. package/dist/index.js.map +1 -1
  54. package/dist/isolatedProvider.d.ts +20 -0
  55. package/dist/isolatedProvider.d.ts.map +1 -0
  56. package/dist/isolatedProvider.js +22 -0
  57. package/dist/isolatedProvider.js.map +1 -0
  58. package/dist/multiTenancy/index.d.ts.map +1 -1
  59. package/dist/multiTenancy/index.js +22 -2
  60. package/dist/multiTenancy/index.js.map +1 -1
  61. package/dist/postgresqlCompat.d.ts +8 -0
  62. package/dist/postgresqlCompat.d.ts.map +1 -0
  63. package/dist/postgresqlCompat.js +19 -0
  64. package/dist/postgresqlCompat.js.map +1 -0
  65. package/dist/postgresqlPoolSettings.d.ts +108 -0
  66. package/dist/postgresqlPoolSettings.d.ts.map +1 -0
  67. package/dist/postgresqlPoolSettings.js +134 -0
  68. package/dist/postgresqlPoolSettings.js.map +1 -0
  69. package/dist/realtimeWidget/widgetGuestElevation.d.ts +4 -2
  70. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  71. package/dist/realtimeWidget/widgetGuestElevation.js +4 -2
  72. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  73. package/dist/resolvers/ActionResolver.d.ts +31 -5
  74. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  75. package/dist/resolvers/ActionResolver.js +75 -14
  76. package/dist/resolvers/ActionResolver.js.map +1 -1
  77. package/dist/resolvers/AdhocQueryResolver.d.ts +35 -17
  78. package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
  79. package/dist/resolvers/AdhocQueryResolver.js +92 -166
  80. package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
  81. package/dist/resolvers/DatasetResolver.d.ts +24 -3
  82. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  83. package/dist/resolvers/DatasetResolver.js +57 -8
  84. package/dist/resolvers/DatasetResolver.js.map +1 -1
  85. package/dist/resolvers/EntityRecordNameResolver.d.ts +8 -23
  86. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
  87. package/dist/resolvers/EntityRecordNameResolver.js +11 -48
  88. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  89. package/dist/resolvers/FetchEntityVectorsResolver.js +2 -2
  90. package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
  91. package/dist/resolvers/GetDataContextDataResolver.d.ts +33 -7
  92. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  93. package/dist/resolvers/GetDataContextDataResolver.js +117 -38
  94. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  95. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  96. package/dist/resolvers/GetDataResolver.js +13 -1
  97. package/dist/resolvers/GetDataResolver.js.map +1 -1
  98. package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
  99. package/dist/resolvers/QuerySystemUserResolver.js +2 -1
  100. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  101. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +83 -22
  102. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  103. package/dist/resolvers/RealtimeClientSessionResolver.js +174 -72
  104. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  105. package/dist/resolvers/RemoteBrowserActionResolver.d.ts +2 -0
  106. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  107. package/dist/resolvers/RemoteBrowserActionResolver.js +5 -1
  108. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  109. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  110. package/dist/resolvers/RunAIAgentResolver.js +2 -1
  111. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  112. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  113. package/dist/resolvers/RunTemplateResolver.js +12 -11
  114. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  115. package/dist/resolvers/SearchKnowledgeResolver.d.ts +1 -0
  116. package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
  117. package/dist/resolvers/SearchKnowledgeResolver.js +5 -0
  118. package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
  119. package/dist/resolvers/SearchKnowledgeSystemUserResolver.d.ts.map +1 -1
  120. package/dist/resolvers/SearchKnowledgeSystemUserResolver.js +1 -0
  121. package/dist/resolvers/SearchKnowledgeSystemUserResolver.js.map +1 -1
  122. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  123. package/dist/resolvers/SyncDataResolver.js +6 -2
  124. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  125. package/dist/resolvers/VectorizeEntityResolver.d.ts +1 -1
  126. package/dist/resolvers/VectorizeEntityResolver.d.ts.map +1 -1
  127. package/dist/resolvers/VectorizeEntityResolver.js +14 -10
  128. package/dist/resolvers/VectorizeEntityResolver.js.map +1 -1
  129. package/dist/resolvers/adhocTimeout.d.ts +7 -0
  130. package/dist/resolvers/adhocTimeout.d.ts.map +1 -0
  131. package/dist/resolvers/adhocTimeout.js +12 -0
  132. package/dist/resolvers/adhocTimeout.js.map +1 -0
  133. package/dist/rest/ViewOperationsHandler.d.ts +3 -1
  134. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  135. package/dist/rest/ViewOperationsHandler.js +29 -17
  136. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  137. package/dist/services/TaskGraphActionRunner.d.ts +21 -8
  138. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  139. package/dist/services/TaskGraphActionRunner.js +43 -16
  140. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  141. package/package.json +92 -92
  142. package/src/__tests__/ActionResolver.authorization.test.ts +353 -0
  143. package/src/__tests__/AdhocQueryResolver.bugs.test.ts +14 -35
  144. package/src/__tests__/AdhocQueryResolver.pagination.test.ts +6 -2
  145. package/src/__tests__/AdhocQueryResolver.scopeGuard.test.ts +3 -3
  146. package/src/__tests__/AdhocQueryResolver.sqlAuthorizer.test.ts +104 -0
  147. package/src/__tests__/DatasetResolver.itemFilters.test.ts +201 -0
  148. package/src/__tests__/EntityRecordNameResolver.fieldSecurity.test.ts +27 -72
  149. package/src/__tests__/EntityRecordNameResolver.rowSecurity.test.ts +152 -0
  150. package/src/__tests__/GetDataContextDataResolver.sqlItems.test.ts +416 -0
  151. package/src/__tests__/ListOperationsResolver.adhocScreen.test.ts +137 -0
  152. package/src/__tests__/RealtimeClientSessionResolver.configTamper.test.ts +383 -0
  153. package/src/__tests__/RealtimeClientSessionResolver.test.ts +310 -31
  154. package/src/__tests__/RemoteBrowserActionResolver.goalRunLink.test.ts +129 -0
  155. package/src/__tests__/ResolverBase.adhocReadScope.test.ts +227 -0
  156. package/src/__tests__/ResolverBase.aggregateScreen.test.ts +174 -0
  157. package/src/__tests__/ResolverBase.balancedClause.test.ts +155 -0
  158. package/src/__tests__/ResolverBase.clauseUnscopedRead.test.ts +127 -0
  159. package/src/__tests__/ResolverBase.filterEscaping.test.ts +24 -2
  160. package/src/__tests__/ResolverBase.isaPromotionCreate.test.ts +412 -0
  161. package/src/__tests__/RunTemplateResolver.test.ts +132 -0
  162. package/src/__tests__/RunViewResolver.cacheCheckScreen.test.ts +165 -0
  163. package/src/__tests__/SessionManager.test.ts +94 -17
  164. package/src/__tests__/SessionRunIDVerifier.test.ts +251 -0
  165. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +131 -0
  166. package/src/__tests__/TaskGraphActionRunner.storableOutputs.test.ts +76 -0
  167. package/src/__tests__/UpdateMJDataContextItem.oldValues.test.ts +220 -0
  168. package/src/__tests__/VectorizeEntityResolver.test.ts +106 -0
  169. package/src/__tests__/ViewOperationsHandler.clauseScreen.test.ts +157 -0
  170. package/src/__tests__/actionAuthorization.test.ts +130 -0
  171. package/src/__tests__/adhocTimeoutClamp.test.ts +26 -0
  172. package/src/__tests__/cacheInvalidationRecordData.test.ts +64 -0
  173. package/src/__tests__/isolatedProviderTransactions.test.ts +169 -0
  174. package/src/__tests__/magicLink.test.ts +15 -76
  175. package/src/__tests__/magicLinkService.consume.test.ts +230 -0
  176. package/src/__tests__/magicLinkService.provisionLog.test.ts +5 -0
  177. package/src/__tests__/multiTenancy.postgresRewrite.test.ts +181 -0
  178. package/src/__tests__/multiTenancy.security.test.ts +51 -0
  179. package/src/__tests__/multiTenancy.test.ts +1 -1
  180. package/src/__tests__/newUsers.test.ts +62 -5
  181. package/src/__tests__/postgresqlPoolSettings.test.ts +131 -0
  182. package/src/__tests__/translateBracketsToPG.test.ts +20 -0
  183. package/src/agentSessions/SessionManager.ts +23 -25
  184. package/src/agentSessions/SessionRunIDVerifier.ts +171 -0
  185. package/src/agentSessions/index.ts +1 -0
  186. package/src/auth/actionAuthorization.ts +119 -0
  187. package/src/auth/exampleNewUserSubClass.ts +2 -2
  188. package/src/auth/magicLink/MagicLinkService.ts +61 -39
  189. package/src/auth/magicLink/magicLinkCore.ts +19 -56
  190. package/src/auth/newUsers.ts +15 -11
  191. package/src/context.ts +25 -34
  192. package/src/generated/graphql-schemas/__mj.ts +3417 -3428
  193. package/src/generic/CacheInvalidationResolver.ts +74 -19
  194. package/src/generic/ResolverBase.ts +207 -80
  195. package/src/generic/RunViewResolver.ts +17 -0
  196. package/src/index.ts +49 -46
  197. package/src/isolatedProvider.ts +22 -0
  198. package/src/multiTenancy/index.ts +24 -2
  199. package/src/postgresqlCompat.ts +21 -0
  200. package/src/postgresqlPoolSettings.ts +213 -0
  201. package/src/realtimeWidget/widgetGuestElevation.ts +4 -2
  202. package/src/resolvers/ActionResolver.ts +84 -21
  203. package/src/resolvers/AdhocQueryResolver.ts +105 -187
  204. package/src/resolvers/DatasetResolver.ts +70 -10
  205. package/src/resolvers/EntityRecordNameResolver.ts +11 -52
  206. package/src/resolvers/FetchEntityVectorsResolver.ts +2 -2
  207. package/src/resolvers/GetDataContextDataResolver.ts +139 -41
  208. package/src/resolvers/GetDataResolver.ts +14 -1
  209. package/src/resolvers/QuerySystemUserResolver.ts +2 -1
  210. package/src/resolvers/RealtimeClientSessionResolver.ts +196 -77
  211. package/src/resolvers/RemoteBrowserActionResolver.ts +11 -1
  212. package/src/resolvers/RunAIAgentResolver.ts +4 -1
  213. package/src/resolvers/RunTemplateResolver.ts +13 -12
  214. package/src/resolvers/SearchKnowledgeResolver.ts +4 -0
  215. package/src/resolvers/SearchKnowledgeSystemUserResolver.ts +1 -0
  216. package/src/resolvers/SyncDataResolver.ts +6 -2
  217. package/src/resolvers/VectorizeEntityResolver.ts +16 -11
  218. package/src/resolvers/__tests__/GetDataResolver.validation.test.ts +95 -0
  219. package/src/resolvers/adhocTimeout.ts +12 -0
  220. package/src/rest/ViewOperationsHandler.ts +37 -18
  221. package/src/services/TaskGraphActionRunner.ts +45 -16
  222. package/dist/resolvers/adhoc-query-helpers.d.ts +0 -27
  223. package/dist/resolvers/adhoc-query-helpers.d.ts.map +0 -1
  224. package/dist/resolvers/adhoc-query-helpers.js +0 -42
  225. package/dist/resolvers/adhoc-query-helpers.js.map +0 -1
  226. package/src/__tests__/adhoc-query-helpers.test.ts +0 -50
  227. package/src/resolvers/adhoc-query-helpers.ts +0 -50
@@ -16,23 +16,24 @@ import { ResolverBase } from '../generic/ResolverBase.js';
16
16
  import { EntityVectorSyncer } from '@memberjunction/ai-vector-sync';
17
17
  import { PubSubManager } from '../generic/PubSubManager.js';
18
18
  import { v4 as uuidv4 } from 'uuid';
19
+ import { GetReadWriteProvider } from '../util.js';
19
20
  const PIPELINE_PROGRESS_TOPIC = 'PIPELINE_PROGRESS';
20
21
  let VectorizeEntityResult = class VectorizeEntityResult {
21
22
  };
22
23
  __decorate([
23
- Field(),
24
+ Field(() => Boolean),
24
25
  __metadata("design:type", Boolean)
25
26
  ], VectorizeEntityResult.prototype, "Success", void 0);
26
27
  __decorate([
27
- Field({ nullable: true }),
28
+ Field(() => String, { nullable: true }),
28
29
  __metadata("design:type", String)
29
30
  ], VectorizeEntityResult.prototype, "Status", void 0);
30
31
  __decorate([
31
- Field({ nullable: true }),
32
+ Field(() => String, { nullable: true }),
32
33
  __metadata("design:type", String)
33
34
  ], VectorizeEntityResult.prototype, "ErrorMessage", void 0);
34
35
  __decorate([
35
- Field({ nullable: true }),
36
+ Field(() => String, { nullable: true }),
36
37
  __metadata("design:type", String)
37
38
  ], VectorizeEntityResult.prototype, "PipelineRunID", void 0);
38
39
  VectorizeEntityResult = __decorate([
@@ -40,17 +41,20 @@ VectorizeEntityResult = __decorate([
40
41
  ], VectorizeEntityResult);
41
42
  export { VectorizeEntityResult };
42
43
  let VectorizeEntityResolver = class VectorizeEntityResolver extends ResolverBase {
43
- async VectorizeEntity(entityDocumentID, entityID, batchSize, { userPayload } = {}) {
44
+ async VectorizeEntity(entityDocumentID, entityID, batchSize, { userPayload, providers } = {}) {
44
45
  try {
45
46
  const currentUser = this.GetUserFromPayload(userPayload);
46
47
  if (!currentUser) {
47
48
  return { Success: false, Status: 'Error', ErrorMessage: 'Unable to determine current user' };
48
49
  }
50
+ // Capture the request's provider before returning, so the background run writes through the
51
+ // same connection the caller used. It is also the colocated vector host (#4910).
52
+ const provider = GetReadWriteProvider(providers, { allowFallbackToReadOnly: true }) ?? undefined;
49
53
  const pipelineRunID = uuidv4();
50
54
  LogStatus(`VectorizeEntity: starting pipeline ${pipelineRunID} for entity document ${entityDocumentID}`);
51
55
  // Fire-and-forget: start the pipeline in the background and return immediately.
52
56
  // Progress is delivered to the client via the PipelineProgress GraphQL subscription.
53
- this.runPipelineInBackground(pipelineRunID, entityDocumentID, entityID, batchSize, currentUser);
57
+ this.runPipelineInBackground(pipelineRunID, entityDocumentID, entityID, batchSize, currentUser, provider);
54
58
  return {
55
59
  Success: true,
56
60
  Status: 'Started',
@@ -71,9 +75,9 @@ let VectorizeEntityResolver = class VectorizeEntityResolver extends ResolverBase
71
75
  * Runs the vectorization pipeline in the background, publishing progress
72
76
  * updates via PubSub so the client can subscribe via PipelineProgress.
73
77
  */
74
- async runPipelineInBackground(pipelineRunID, entityDocumentID, entityID, batchSize, currentUser) {
78
+ async runPipelineInBackground(pipelineRunID, entityDocumentID, entityID, batchSize, currentUser, provider) {
75
79
  try {
76
- const syncer = new EntityVectorSyncer();
80
+ const syncer = new EntityVectorSyncer(provider);
77
81
  await syncer.Config(true, currentUser);
78
82
  const params = {
79
83
  entityDocumentID,
@@ -132,8 +136,8 @@ let VectorizeEntityResolver = class VectorizeEntityResolver extends ResolverBase
132
136
  };
133
137
  __decorate([
134
138
  Mutation(() => VectorizeEntityResult),
135
- __param(0, Arg('entityDocumentID')),
136
- __param(1, Arg('entityID')),
139
+ __param(0, Arg('entityDocumentID', () => String)),
140
+ __param(1, Arg('entityID', () => String)),
137
141
  __param(2, Arg('batchSize', () => Float, { nullable: true })),
138
142
  __param(3, Ctx()),
139
143
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"VectorizeEntityResolver.js","sourceRoot":"","sources":["../../src/resolvers/VectorizeEntityResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEtF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAkD,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAG7C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAYjC,CAAA;AAVG;IADC,KAAK,EAAE;;sDACS;AAGjB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACV;AAGhB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACJ;AAGtB;IADC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4DACH;AAXd,qBAAqB;IADjC,UAAU,EAAE;GACA,qBAAqB,CAYjC;;AAGM,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,YAAY;IAE/C,AAAN,KAAK,CAAC,eAAe,CACQ,gBAAwB,EAChC,QAAgB,EACkB,SAAkB,EAC9D,EAAE,WAAW,KAAiB,EAAgB;QAErD,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,kCAAkC,EAAE,CAAC;YACjG,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;YAC/B,SAAS,CAAC,sCAAsC,aAAa,wBAAwB,gBAAgB,EAAE,CAAC,CAAC;YAEzG,gFAAgF;YAChF,qFAAqF;YACrF,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAEhG,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,aAAa;aAC/B,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;YACpD,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,GAAG;aACpB,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,uBAAuB,CACjC,aAAqB,EACrB,gBAAwB,EACxB,QAAgB,EAChB,SAA6B,EAC7B,WAAqB;QAErB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACxC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAEvC,MAAM,MAAM,GAA0B;gBAClC,gBAAgB;gBAChB,QAAQ;gBACR,cAAc,EAAE,SAAS,IAAI,EAAE;gBAC/B,mBAAmB,EAAE,SAAS,IAAI,EAAE;gBACpC,gBAAgB,EAAE,SAAS,IAAI,EAAE;gBACjC,UAAU,EAAE,CAAC,MAA+B,EAAE,EAAE;oBAC5C,SAAS,CAAC,4BAA4B,aAAa,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;oBACvJ,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;gBAChD,CAAC;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,SAAS,CAAC,4BAA4B,aAAa,yBAAyB,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,+EAA+E;gBAC/E,mFAAmF;gBACnF,QAAQ,CAAC,4BAA4B,aAAa,kCAAkC,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAClI,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,4BAA4B,aAAa,YAAY,GAAG,EAAE,CAAC,CAAC;YAErE,qEAAqE;YACrE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;gBAChC,YAAY,EAAE,CAAC;gBACf,gBAAgB,EAAE,CAAC;gBACnB,KAAK,EAAE,OAAO;gBACd,eAAe,EAAE,CAAC;gBAClB,SAAS,EAAE,CAAC;aACf,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,aAAqB,EAAE,MAA+B;QAC1E,8FAA8F;QAC9F,oEAAoE;QACpE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAC1D,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,4BAA4B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;YAC/E,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,YAAY,GAAiC;YAC/C,aAAa,EAAE,aAAa;YAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,YAAY;YAC/B,cAAc,EAAE,MAAM,CAAC,gBAAgB;YACvC,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;SAC1C,CAAC;QACF,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IACjF,CAAC;CACJ,CAAA;AA1GS;IADL,QAAQ,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC;IAEjC,WAAA,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACvB,WAAA,GAAG,CAAC,UAAU,CAAC,CAAA;IACf,WAAA,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,WAAA,GAAG,EAAE,CAAA;;;;8DA6BT;AAnCQ,uBAAuB;IADnC,QAAQ,EAAE;GACE,uBAAuB,CA4GnC"}
1
+ {"version":3,"file":"VectorizeEntityResolver.js","sourceRoot":"","sources":["../../src/resolvers/VectorizeEntityResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The timeout an ad-hoc query runs with: what the caller asked for (or the default), but never
3
+ * longer than the server's `requestTimeout`, so a caller cannot hold a read-only connection longer
4
+ * than any other request may. `requestTimeoutMs` of 0 or less means the server sets no limit.
5
+ */
6
+ export declare function ClampAdhocTimeoutSeconds(requested: number | undefined, requestTimeoutMs: number): number;
7
+ //# sourceMappingURL=adhocTimeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adhocTimeout.d.ts","sourceRoot":"","sources":["../../src/resolvers/adhocTimeout.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAGxG"}
@@ -0,0 +1,12 @@
1
+ /** The timeout an ad-hoc query gets when the caller names none. */
2
+ const DEFAULT_TIMEOUT_SECONDS = 30;
3
+ /**
4
+ * The timeout an ad-hoc query runs with: what the caller asked for (or the default), but never
5
+ * longer than the server's `requestTimeout`, so a caller cannot hold a read-only connection longer
6
+ * than any other request may. `requestTimeoutMs` of 0 or less means the server sets no limit.
7
+ */
8
+ export function ClampAdhocTimeoutSeconds(requested, requestTimeoutMs) {
9
+ const seconds = requested != null && requested > 0 ? requested : DEFAULT_TIMEOUT_SECONDS;
10
+ return requestTimeoutMs > 0 ? Math.min(seconds, Math.max(1, Math.floor(requestTimeoutMs / 1000))) : seconds;
11
+ }
12
+ //# sourceMappingURL=adhocTimeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adhocTimeout.js","sourceRoot":"","sources":["../../src/resolvers/adhocTimeout.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAA6B,EAAE,gBAAwB;IAC5F,MAAM,OAAO,GAAG,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC;IACzF,OAAO,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChH,CAAC"}
@@ -33,7 +33,9 @@ export declare class ViewOperationsHandler {
33
33
  error?: string;
34
34
  }>;
35
35
  /**
36
- * Sanitize and validate RunViewParams
36
+ * Sanitize and validate RunViewParams. Client filter and sort text passes the same clause
37
+ * screen as the GraphQL RunView resolvers, parsed in the dialect of `provider`, the provider
38
+ * that runs the view.
37
39
  */
38
40
  private static sanitizeRunViewParams;
39
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewOperationsHandler.d.ts","sourceRoot":"","sources":["../../src/rest/ViewOperationsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAC0B,aAAa,EAC1C,aAAa,EAAE,QAAQ,EAC1B,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,qBAAqB;IAC9B;;OAEG;WACU,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAmClI;;OAEG;WACU,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC7I;;OAEG;WACU,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BxF;;OAEG;WACU,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqD7H;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA6BvC"}
1
+ {"version":3,"file":"ViewOperationsHandler.d.ts","sourceRoot":"","sources":["../../src/rest/ViewOperationsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACsC,aAAa,EACtD,aAAa,EAAE,QAAQ,EAC1B,MAAM,sBAAsB,CAAC;AAG9B;;;GAGG;AACH,qBAAa,qBAAqB;IAC9B;;OAEG;WACU,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAmClI;;OAEG;WACU,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC7I;;OAEG;WACU,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BxF;;OAEG;WACU,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqD7H;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA6CvC"}
@@ -1,4 +1,5 @@
1
- import { LogError, Metadata, RunView } from '@memberjunction/core';
1
+ import { BaseEntity, LogError, Metadata, RunView } from '@memberjunction/core';
2
+ import { ClientClauseScreen } from '@memberjunction/generic-database-provider';
2
3
  /**
3
4
  * View Operations Implementation for REST endpoints
4
5
  * These functions handle running views through the REST API
@@ -26,10 +27,10 @@ export class ViewOperationsHandler {
26
27
  error: `User ${user.Name} does not have permission to read ${params.EntityName} records`
27
28
  };
28
29
  }
29
- // Sanitize and validate parameters
30
- this.sanitizeRunViewParams(params);
31
- // Execute the view
30
+ // Sanitize and validate parameters against the provider that runs the view
32
31
  const runView = new RunView();
32
+ this.sanitizeRunViewParams(params, md, runView.ProviderToUse, user);
33
+ // Execute the view
33
34
  const result = await runView.RunView(params, user);
34
35
  return { success: true, result };
35
36
  }
@@ -43,8 +44,9 @@ export class ViewOperationsHandler {
43
44
  */
44
45
  static async runViews(paramsArray, user) {
45
46
  try {
46
- // Validate and sanitize each set of parameters
47
+ // Validate and sanitize each set of parameters against the provider that runs the views
47
48
  const md = new Metadata(); // global-provider-ok: REST endpoint — no per-request provider injection in REST middleware yet
49
+ const runView = new RunView();
48
50
  for (const params of paramsArray) {
49
51
  // Validate entity exists
50
52
  const entity = md.Entities.find(e => e.Name === params.EntityName);
@@ -63,10 +65,9 @@ export class ViewOperationsHandler {
63
65
  };
64
66
  }
65
67
  // Sanitize parameters
66
- this.sanitizeRunViewParams(params);
68
+ this.sanitizeRunViewParams(params, md, runView.ProviderToUse, user);
67
69
  }
68
70
  // Execute the views
69
- const runView = new RunView();
70
71
  const results = await runView.RunViews(paramsArray, user);
71
72
  return { success: true, results };
72
73
  }
@@ -90,10 +91,10 @@ export class ViewOperationsHandler {
90
91
  if (!permissions.CanRead) {
91
92
  throw new Error(`User ${user.Name} does not have permission to read ${params.EntityName} records`);
92
93
  }
93
- // Sanitize and validate parameters
94
- this.sanitizeRunViewParams(params);
95
- // Execute the view
94
+ // Sanitize and validate parameters against the provider that runs the view
96
95
  const runView = new RunView();
96
+ this.sanitizeRunViewParams(params, md, runView.ProviderToUse, user);
97
+ // Execute the view
97
98
  return await runView.RunView(params, user);
98
99
  }
99
100
  catch (error) {
@@ -152,32 +153,43 @@ export class ViewOperationsHandler {
152
153
  }
153
154
  }
154
155
  /**
155
- * Sanitize and validate RunViewParams
156
+ * Sanitize and validate RunViewParams. Client filter and sort text passes the same clause
157
+ * screen as the GraphQL RunView resolvers, parsed in the dialect of `provider`, the provider
158
+ * that runs the view.
156
159
  */
157
- static sanitizeRunViewParams(params) {
160
+ static sanitizeRunViewParams(params, md, provider, user) {
158
161
  // Ensure EntityName is provided
159
162
  if (!params.EntityName) {
160
163
  throw new Error('EntityName is required');
161
164
  }
165
+ // A loaded view entity cannot arrive over JSON; the provider would trust a plain object's
166
+ // fields (its ID is spliced into view SQL). REST callers name a saved view by ViewID or ViewName.
167
+ if (params.ViewEntity != null && !(params.ViewEntity instanceof BaseEntity)) {
168
+ throw new Error('ViewEntity is not accepted over REST; use ViewID or ViewName');
169
+ }
162
170
  // Convert string arrays if they came in as comma-separated strings
163
171
  if (params.Fields && typeof params.Fields === 'string') {
164
172
  params.Fields = params.Fields.split(',');
165
173
  }
166
- // Sanitize numeric values
174
+ // Sanitize numeric values: base-10, integral, and clamped to a sane range so a
175
+ // negative/garbage value can never reach the SQL layer.
167
176
  if (params.MaxRows !== undefined) {
168
- params.MaxRows = typeof params.MaxRows === 'string'
169
- ? parseInt(params.MaxRows)
177
+ const parsed = typeof params.MaxRows === 'string'
178
+ ? parseInt(params.MaxRows, 10)
170
179
  : params.MaxRows;
180
+ params.MaxRows = Number.isFinite(parsed) ? Math.max(0, Math.floor(parsed)) : undefined;
171
181
  }
172
182
  if (params.StartRow !== undefined) {
173
- params.StartRow = typeof params.StartRow === 'string'
174
- ? parseInt(params.StartRow)
183
+ const parsed = typeof params.StartRow === 'string'
184
+ ? parseInt(params.StartRow, 10)
175
185
  : params.StartRow;
186
+ params.StartRow = Number.isFinite(parsed) ? Math.max(0, Math.floor(parsed)) : undefined;
176
187
  }
177
188
  // Default ResultType if not provided
178
189
  if (!params.ResultType) {
179
190
  params.ResultType = 'simple';
180
191
  }
192
+ ClientClauseScreen.ScreenViewClauses({ ExtraFilter: params.ExtraFilter, OrderBy: params.OrderBy, OverrideExcludeFilter: params.OverrideExcludeFilter }, md.Entities, ClientClauseScreen.DialectFor(provider), user);
181
193
  }
182
194
  }
183
195
  //# sourceMappingURL=ViewOperationsHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewOperationsHandler.js","sourceRoot":"","sources":["../../src/rest/ViewOperationsHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewOperationsHandler.js","sourceRoot":"","sources":["../../src/rest/ViewOperationsHandler.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  import type { TaskActionRunner, TaskActionRunParams, TaskActionRunResult } from '@memberjunction/task-graph';
2
2
  export declare class TaskGraphActionRunner implements TaskActionRunner {
3
3
  RunActionForTask(params: TaskActionRunParams): Promise<TaskActionRunResult>;
4
+ /**
5
+ * The first output param that cannot be written to the Task row as JSON, or null.
6
+ *
7
+ * Checked here because this is the last place that knows the action's and the param's NAMES: the
8
+ * dispatcher serializes the whole Output later and, for a live object (an entity, an observable),
9
+ * fails with a bare "Converting circular structure to JSON" that names neither.
10
+ */
11
+ private findUnstorableOutput;
4
12
  /**
5
13
  * Projects the action's parameters onto the flat result a workflow step is expected to produce.
6
14
  *
@@ -18,16 +26,21 @@ export declare class TaskGraphActionRunner implements TaskActionRunner {
18
26
  */
19
27
  private buildOutput;
20
28
  /**
21
- * Rebuilds the action's parameters from the task's stored payload.
29
+ * Rebuilds the action's parameters from the task's input, one parameter per key.
22
30
  *
23
- * **The values here have been through redaction**, because `Task.InputPayload` is persistent,
24
- * user-visible storage and nothing writes a raw `ActionParam[]` there. A parameter the binding
25
- * marked as not-logged therefore arrives absent rather than secret — the action sees a missing
26
- * value, which is the honest consequence of choosing not to persist it, and the reason durable
27
- * dispatch is opt-in per binding rather than the default.
31
+ * For a **durable entity-action** graph the input was written by `RedactParamsToRecord`
32
+ * (`@memberjunction/actions-base`) at deferral time, so its values have been through redaction:
33
+ * a parameter the binding marked as not-logged arrives absent rather than secret — the action
34
+ * sees a missing value, which is the honest consequence of choosing not to persist it, and the
35
+ * reason durable dispatch is opt-in per binding rather than the default. Every other graph's
36
+ * input is whatever its spec authored. This method re-applies no redaction rule in either case.
28
37
  *
29
- * Dependency outputs are merged underneath the task's own input so a node's explicit parameters
30
- * always win over an upstream node that happened to emit the same key.
38
+ * `InputPayload` already carries the dependency outputs: the dispatcher merges them underneath
39
+ * the task's own input (`mergedPayload`) before calling this runner, so a node's explicit
40
+ * parameters win and a step with an input mapping gets exactly the parameters it declared.
41
+ * `DependencyOutputs` is keyed by upstream task ID, not by parameter name, so it is deliberately
42
+ * not read here — spreading it would hand the action one extra parameter per dependency, named
43
+ * by a GUID and holding that task's whole output.
31
44
  */
32
45
  private buildParams;
33
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGraphActionRunner.d.ts","sourceRoot":"","sources":["../../src/services/TaskGraphActionRunner.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE7G,qBAAa,qBAAsB,YAAW,gBAAgB;IAC7C,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmCxF;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,WAAW;CAUtB"}
1
+ {"version":3,"file":"TaskGraphActionRunner.d.ts","sourceRoot":"","sources":["../../src/services/TaskGraphActionRunner.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE7G,qBAAa,qBAAsB,YAAW,gBAAgB;IAC7C,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6CxF;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,WAAW;CAMtB"}
@@ -30,9 +30,17 @@ export class TaskGraphActionRunner {
30
30
  // transition question with nothing to answer it, and fail closed on every retry.
31
31
  Filters: [],
32
32
  });
33
+ const output = this.buildOutput(result.Params);
34
+ const unstorable = this.findUnstorableOutput(output);
35
+ if (unstorable) {
36
+ const message = `Action "${action.Name}" returned output param "${unstorable.Name}", which cannot be stored ` +
37
+ `as the step's result: ${unstorable.Reason}. Output params of a durable step must be plain data.`;
38
+ LogError(`[TaskGraphActionRunner] Task ${params.TaskID}: ${message}`);
39
+ return { Success: false, ErrorMessage: message, ActionLogID: result.LogEntry?.ID };
40
+ }
33
41
  return {
34
42
  Success: result.Success,
35
- Output: this.buildOutput(result.Params),
43
+ Output: output,
36
44
  ErrorMessage: result.Success ? undefined : result.Message,
37
45
  // The engine already wrote the log; this is the only place its id is in hand. Without
38
46
  // carrying it out, a workflow's action step has no path back to its own execution
@@ -46,6 +54,24 @@ export class TaskGraphActionRunner {
46
54
  return { Success: false, ErrorMessage: message };
47
55
  }
48
56
  }
57
+ /**
58
+ * The first output param that cannot be written to the Task row as JSON, or null.
59
+ *
60
+ * Checked here because this is the last place that knows the action's and the param's NAMES: the
61
+ * dispatcher serializes the whole Output later and, for a live object (an entity, an observable),
62
+ * fails with a bare "Converting circular structure to JSON" that names neither.
63
+ */
64
+ findUnstorableOutput(output) {
65
+ for (const [Name, value] of Object.entries(output)) {
66
+ try {
67
+ JSON.stringify(value);
68
+ }
69
+ catch (e) {
70
+ return { Name, Reason: e instanceof Error ? e.message.split('\n')[0] : String(e) };
71
+ }
72
+ }
73
+ return null;
74
+ }
49
75
  /**
50
76
  * Projects the action's parameters onto the flat result a workflow step is expected to produce.
51
77
  *
@@ -70,26 +96,27 @@ export class TaskGraphActionRunner {
70
96
  return output;
71
97
  }
72
98
  /**
73
- * Rebuilds the action's parameters from the task's stored payload.
99
+ * Rebuilds the action's parameters from the task's input, one parameter per key.
74
100
  *
75
- * **The values here have been through redaction**, because `Task.InputPayload` is persistent,
76
- * user-visible storage and nothing writes a raw `ActionParam[]` there. A parameter the binding
77
- * marked as not-logged therefore arrives absent rather than secret — the action sees a missing
78
- * value, which is the honest consequence of choosing not to persist it, and the reason durable
79
- * dispatch is opt-in per binding rather than the default.
101
+ * For a **durable entity-action** graph the input was written by `RedactParamsToRecord`
102
+ * (`@memberjunction/actions-base`) at deferral time, so its values have been through redaction:
103
+ * a parameter the binding marked as not-logged arrives absent rather than secret — the action
104
+ * sees a missing value, which is the honest consequence of choosing not to persist it, and the
105
+ * reason durable dispatch is opt-in per binding rather than the default. Every other graph's
106
+ * input is whatever its spec authored. This method re-applies no redaction rule in either case.
80
107
  *
81
- * Dependency outputs are merged underneath the task's own input so a node's explicit parameters
82
- * always win over an upstream node that happened to emit the same key.
108
+ * `InputPayload` already carries the dependency outputs: the dispatcher merges them underneath
109
+ * the task's own input (`mergedPayload`) before calling this runner, so a node's explicit
110
+ * parameters win and a step with an input mapping gets exactly the parameters it declared.
111
+ * `DependencyOutputs` is keyed by upstream task ID, not by parameter name, so it is deliberately
112
+ * not read here — spreading it would hand the action one extra parameter per dependency, named
113
+ * by a GUID and holding that task's whole output.
83
114
  */
84
115
  buildParams(params) {
85
- const merged = {};
86
- for (const [name, value] of params.DependencyOutputs) {
87
- merged[name] = value;
88
- }
89
- if (params.InputPayload && typeof params.InputPayload === 'object') {
90
- Object.assign(merged, params.InputPayload);
116
+ if (!params.InputPayload || typeof params.InputPayload !== 'object') {
117
+ return [];
91
118
  }
92
- return Object.entries(merged).map(([Name, Value]) => ({ Name, Value, Type: 'Input' }));
119
+ return Object.entries(params.InputPayload).map(([Name, Value]) => ({ Name, Value, Type: 'Input' }));
93
120
  }
94
121
  }
95
122
  //# sourceMappingURL=TaskGraphActionRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGraphActionRunner.js","sourceRoot":"","sources":["../../src/services/TaskGraphActionRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskGraphActionRunner.js","sourceRoot":"","sources":["../../src/services/TaskGraphActionRunner.ts"],"names":[],"mappings":"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"}