@adcp/sdk 14.0.0-beta.11 → 14.0.0-beta.13

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 (235) hide show
  1. package/bin/adcp-storyboard-sandbox.js +16 -0
  2. package/bin/adcp.js +28 -30
  3. package/dist/lib/index.d.mts +3 -3
  4. package/dist/lib/index.d.ts +3 -3
  5. package/dist/lib/index.d.ts.map +1 -1
  6. package/dist/lib/index.js +2 -0
  7. package/dist/lib/index.js.map +1 -1
  8. package/dist/lib/index.mjs +3 -1
  9. package/dist/lib/index.mjs.map +1 -1
  10. package/dist/lib/schemas/index.d.mts +385 -1
  11. package/dist/lib/schemas/index.d.ts +385 -1
  12. package/dist/lib/schemas/index.d.ts.map +1 -1
  13. package/dist/lib/schemas/index.js +13 -0
  14. package/dist/lib/schemas/index.js.map +1 -1
  15. package/dist/lib/schemas/index.mjs +11 -0
  16. package/dist/lib/schemas/index.mjs.map +1 -1
  17. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  18. package/dist/lib/server/create-adcp-server.d.mts +2 -2
  19. package/dist/lib/server/create-adcp-server.d.ts +2 -2
  20. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  21. package/dist/lib/server/create-adcp-server.js +6 -1
  22. package/dist/lib/server/create-adcp-server.js.map +1 -1
  23. package/dist/lib/server/create-adcp-server.mjs +6 -1
  24. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  25. package/dist/lib/server/decisioning/index.d.mts +3 -3
  26. package/dist/lib/server/decisioning/index.d.ts +3 -3
  27. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  28. package/dist/lib/server/decisioning/index.js.map +1 -1
  29. package/dist/lib/server/decisioning/index.mjs.map +1 -1
  30. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +24 -17
  31. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +24 -17
  32. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  33. package/dist/lib/server/decisioning/runtime/from-platform.js +71 -42
  34. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  35. package/dist/lib/server/decisioning/runtime/from-platform.mjs +75 -43
  36. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  37. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.mts +15 -21
  38. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts +15 -21
  39. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -1
  40. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +100 -30
  41. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -1
  42. package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs +100 -30
  43. package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs.map +1 -1
  44. package/dist/lib/server/decisioning/runtime/task-registry.d.mts +30 -16
  45. package/dist/lib/server/decisioning/runtime/task-registry.d.ts +30 -16
  46. package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -1
  47. package/dist/lib/server/decisioning/runtime/task-registry.js +40 -20
  48. package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -1
  49. package/dist/lib/server/decisioning/runtime/task-registry.mjs +38 -19
  50. package/dist/lib/server/decisioning/runtime/task-registry.mjs.map +1 -1
  51. package/dist/lib/server/decisioning/runtime/to-context.d.mts +2 -2
  52. package/dist/lib/server/decisioning/runtime/to-context.d.ts +2 -2
  53. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  54. package/dist/lib/server/decisioning/runtime/to-context.js +2 -2
  55. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  56. package/dist/lib/server/decisioning/runtime/to-context.mjs +2 -2
  57. package/dist/lib/server/decisioning/runtime/to-context.mjs.map +1 -1
  58. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.mts +3 -2
  59. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +3 -2
  60. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -1
  61. package/dist/lib/server/decisioning/specialisms/creative-ad-server.js.map +1 -1
  62. package/dist/lib/server/decisioning/specialisms/creative.d.mts +10 -10
  63. package/dist/lib/server/decisioning/specialisms/creative.d.ts +10 -10
  64. package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -1
  65. package/dist/lib/server/decisioning/specialisms/creative.js.map +1 -1
  66. package/dist/lib/server/index.d.mts +1 -1
  67. package/dist/lib/server/index.d.ts +1 -1
  68. package/dist/lib/server/index.d.ts.map +1 -1
  69. package/dist/lib/server/index.js.map +1 -1
  70. package/dist/lib/server/index.mjs.map +1 -1
  71. package/dist/lib/signing/agent-context.d.mts +1 -0
  72. package/dist/lib/signing/agent-context.d.ts +1 -0
  73. package/dist/lib/signing/agent-context.d.ts.map +1 -1
  74. package/dist/lib/signing/agent-context.js +37 -2
  75. package/dist/lib/signing/agent-context.js.map +1 -1
  76. package/dist/lib/signing/agent-context.mjs +38 -3
  77. package/dist/lib/signing/agent-context.mjs.map +1 -1
  78. package/dist/lib/signing/agent-fetch.d.mts +1 -2
  79. package/dist/lib/signing/agent-fetch.d.ts +1 -2
  80. package/dist/lib/signing/agent-fetch.d.ts.map +1 -1
  81. package/dist/lib/signing/agent-fetch.js +2 -0
  82. package/dist/lib/signing/agent-fetch.js.map +1 -1
  83. package/dist/lib/signing/agent-fetch.mjs +2 -0
  84. package/dist/lib/signing/agent-fetch.mjs.map +1 -1
  85. package/dist/lib/signing/agent-resolver/etld.js.map +1 -1
  86. package/dist/lib/signing/agent-resolver/etld.mjs.map +1 -1
  87. package/dist/lib/testing/client.d.mts +6 -0
  88. package/dist/lib/testing/client.d.ts +6 -0
  89. package/dist/lib/testing/client.d.ts.map +1 -1
  90. package/dist/lib/testing/client.js +76 -4
  91. package/dist/lib/testing/client.js.map +1 -1
  92. package/dist/lib/testing/client.mjs +75 -4
  93. package/dist/lib/testing/client.mjs.map +1 -1
  94. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  95. package/dist/lib/testing/compliance/comply.js +6 -0
  96. package/dist/lib/testing/compliance/comply.js.map +1 -1
  97. package/dist/lib/testing/compliance/comply.mjs +7 -1
  98. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  99. package/dist/lib/testing/storyboard/default-invariants.d.ts.map +1 -1
  100. package/dist/lib/testing/storyboard/default-invariants.js +11 -2
  101. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  102. package/dist/lib/testing/storyboard/default-invariants.mjs +11 -2
  103. package/dist/lib/testing/storyboard/default-invariants.mjs.map +1 -1
  104. package/dist/lib/testing/storyboard/index.d.mts +1 -1
  105. package/dist/lib/testing/storyboard/index.d.ts +1 -1
  106. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  107. package/dist/lib/testing/storyboard/index.js.map +1 -1
  108. package/dist/lib/testing/storyboard/index.mjs.map +1 -1
  109. package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
  110. package/dist/lib/testing/storyboard/loader.js +14 -0
  111. package/dist/lib/testing/storyboard/loader.js.map +1 -1
  112. package/dist/lib/testing/storyboard/loader.mjs +14 -0
  113. package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
  114. package/dist/lib/testing/storyboard/phase-condition.d.mts +41 -0
  115. package/dist/lib/testing/storyboard/phase-condition.d.ts +42 -0
  116. package/dist/lib/testing/storyboard/phase-condition.d.ts.map +1 -0
  117. package/dist/lib/testing/storyboard/phase-condition.js +215 -0
  118. package/dist/lib/testing/storyboard/phase-condition.js.map +1 -0
  119. package/dist/lib/testing/storyboard/phase-condition.mjs +189 -0
  120. package/dist/lib/testing/storyboard/phase-condition.mjs.map +1 -0
  121. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  122. package/dist/lib/testing/storyboard/request-builder.js +15 -2
  123. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  124. package/dist/lib/testing/storyboard/request-builder.mjs +15 -2
  125. package/dist/lib/testing/storyboard/request-builder.mjs.map +1 -1
  126. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.mts +15 -0
  127. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.ts +16 -0
  128. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.ts.map +1 -0
  129. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.js +106 -0
  130. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.js.map +1 -0
  131. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.mjs +82 -0
  132. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.mjs.map +1 -0
  133. package/dist/lib/testing/storyboard/request-signing/test-kit.d.mts +15 -0
  134. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts +15 -0
  135. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts.map +1 -1
  136. package/dist/lib/testing/storyboard/request-signing/test-kit.js +58 -0
  137. package/dist/lib/testing/storyboard/request-signing/test-kit.js.map +1 -1
  138. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs +58 -0
  139. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs.map +1 -1
  140. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.mts +2 -0
  141. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +2 -0
  142. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -1
  143. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +7 -1
  144. package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -1
  145. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +6 -1
  146. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
  147. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  148. package/dist/lib/testing/storyboard/runner.js +67 -24
  149. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  150. package/dist/lib/testing/storyboard/runner.mjs +67 -24
  151. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  152. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
  153. package/dist/lib/testing/storyboard/task-map.js +6 -2
  154. package/dist/lib/testing/storyboard/task-map.js.map +1 -1
  155. package/dist/lib/testing/storyboard/task-map.mjs +6 -2
  156. package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
  157. package/dist/lib/testing/storyboard/types.d.mts +5 -4
  158. package/dist/lib/testing/storyboard/types.d.ts +5 -4
  159. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  160. package/dist/lib/testing/storyboard/types.js.map +1 -1
  161. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  162. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  163. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  164. package/dist/lib/testing/storyboard/webhook-assertions.d.ts.map +1 -1
  165. package/dist/lib/testing/storyboard/webhook-assertions.js +60 -4
  166. package/dist/lib/testing/storyboard/webhook-assertions.js.map +1 -1
  167. package/dist/lib/testing/storyboard/webhook-assertions.mjs +60 -4
  168. package/dist/lib/testing/storyboard/webhook-assertions.mjs.map +1 -1
  169. package/dist/lib/testing/storyboard/webhook-receiver.d.mts +15 -0
  170. package/dist/lib/testing/storyboard/webhook-receiver.d.ts +15 -0
  171. package/dist/lib/testing/storyboard/webhook-receiver.d.ts.map +1 -1
  172. package/dist/lib/testing/storyboard/webhook-receiver.js +57 -6
  173. package/dist/lib/testing/storyboard/webhook-receiver.js.map +1 -1
  174. package/dist/lib/testing/storyboard/webhook-receiver.mjs +57 -6
  175. package/dist/lib/testing/storyboard/webhook-receiver.mjs.map +1 -1
  176. package/dist/lib/testing/types.d.mts +12 -0
  177. package/dist/lib/testing/types.d.ts +12 -0
  178. package/dist/lib/testing/types.d.ts.map +1 -1
  179. package/dist/lib/testing/types.js.map +1 -1
  180. package/dist/lib/types/comply-test-controller.d.ts +1 -14
  181. package/dist/lib/types/core.generated.d.mts +6 -3
  182. package/dist/lib/types/core.generated.d.ts +6 -3
  183. package/dist/lib/types/core.generated.d.ts.map +1 -1
  184. package/dist/lib/types/core.generated.js.map +1 -1
  185. package/dist/lib/types/get-products.d.ts +1 -14
  186. package/dist/lib/types/index.d.mts +1 -1
  187. package/dist/lib/types/index.d.ts +1 -1
  188. package/dist/lib/types/index.d.ts.map +1 -1
  189. package/dist/lib/types/index.js.map +1 -1
  190. package/dist/lib/types/index.mjs.map +1 -1
  191. package/dist/lib/types/list-transformers.d.ts +9 -5
  192. package/dist/lib/types/schemas.generated.d.ts +23 -352
  193. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  194. package/dist/lib/types/schemas.generated.js +7 -4
  195. package/dist/lib/types/schemas.generated.js.map +1 -1
  196. package/dist/lib/types/schemas.generated.mjs +6 -4
  197. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  198. package/dist/lib/types/server-payload-aliases.d.mts +2 -1
  199. package/dist/lib/types/server-payload-aliases.d.ts +2 -1
  200. package/dist/lib/types/server-payload-aliases.d.ts.map +1 -1
  201. package/dist/lib/types/server-payload-aliases.js.map +1 -1
  202. package/dist/lib/types/tools.generated.d.mts +6 -3
  203. package/dist/lib/types/tools.generated.d.ts +6 -3
  204. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  205. package/dist/lib/types/tools.generated.js.map +1 -1
  206. package/dist/lib/utils/build-creative-return-builders.d.mts +5 -1
  207. package/dist/lib/utils/build-creative-return-builders.d.ts +5 -1
  208. package/dist/lib/utils/build-creative-return-builders.d.ts.map +1 -1
  209. package/dist/lib/utils/build-creative-return-builders.js +9 -3
  210. package/dist/lib/utils/build-creative-return-builders.js.map +1 -1
  211. package/dist/lib/utils/build-creative-return-builders.mjs +7 -2
  212. package/dist/lib/utils/build-creative-return-builders.mjs.map +1 -1
  213. package/dist/lib/utils/response-unwrapper.js +1 -1
  214. package/dist/lib/utils/response-unwrapper.js.map +1 -1
  215. package/dist/lib/utils/response-unwrapper.mjs +1 -1
  216. package/dist/lib/utils/response-unwrapper.mjs.map +1 -1
  217. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  218. package/dist/lib/validation/schema-loader.js +16 -7
  219. package/dist/lib/validation/schema-loader.js.map +1 -1
  220. package/dist/lib/validation/schema-loader.mjs +16 -7
  221. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  222. package/dist/lib/version.d.mts +3 -3
  223. package/dist/lib/version.d.ts +3 -3
  224. package/dist/lib/version.js +3 -3
  225. package/dist/lib/version.js.map +1 -1
  226. package/dist/lib/version.mjs +3 -3
  227. package/dist/lib/version.mjs.map +1 -1
  228. package/docs/llms.txt +2 -2
  229. package/docs/migration-5.x-to-6.x.md +3 -2
  230. package/docs/migration-task-registry-scoping.md +61 -0
  231. package/examples/hello_seller_adapter_guaranteed.ts +1 -1
  232. package/package.json +5 -5
  233. package/skills/build-decisioning-creative-template/SKILL.md +2 -2
  234. package/skills/build-decisioning-platform/SKILL.md +4 -2
  235. package/skills/build-decisioning-platform/advanced/REFERENCE.md +7 -6
@@ -44,7 +44,10 @@ import { _extractResponseSummaryEntry } from "../response-summary.mjs";
44
44
  import { productsResponse } from "../../responses.mjs";
45
45
  import { TOOL_ENTITY_FIELDS } from "./entity-hydration.generated.mjs";
46
46
  import { z } from "zod";
47
- import { createInMemoryTaskRegistry } from "./task-registry.mjs";
47
+ import {
48
+ createInMemoryTaskRegistry,
49
+ taskRecordMatchesScope
50
+ } from "./task-registry.mjs";
48
51
  import { protocolForTool, SPEC_WEBHOOK_TASK_TYPES } from "./protocol-for-tool.mjs";
49
52
  const DEFAULT_FRAMEWORK_LOGGER = {
50
53
  debug: () => {
@@ -1338,10 +1341,20 @@ function createAdcpServerFromPlatform(platform, opts) {
1338
1341
  }
1339
1342
  const pooledIdempotency = opts.pool && opts.idempotency === void 0 ? createIdempotencyStore({ backend: pgBackend(opts.pool) }) : void 0;
1340
1343
  const pooledCtxMetadata = opts.pool && opts.ctxMetadata === void 0 ? createCtxMetadataStore({ backend: pgCtxMetadataStore(opts.pool) }) : void 0;
1341
- const pooledTaskRegistry = opts.pool && opts.taskRegistry === void 0 ? createPostgresTaskRegistry({ pool: opts.pool }) : void 0;
1344
+ if (opts.pool && opts.taskRegistry === void 0 && opts.taskRegistryNamespace === void 0) {
1345
+ throw new PlatformConfigError(
1346
+ "taskRegistryNamespace is required when opts.pool supplies the task registry. Use the same trusted namespace with getAllAdcpMigrations({ taskRegistryNamespace }) or getDecisioningTaskRegistryMigration({ namespace })."
1347
+ );
1348
+ }
1349
+ const pooledTaskRegistry = opts.pool && opts.taskRegistry === void 0 ? createPostgresTaskRegistry({ pool: opts.pool, namespace: opts.taskRegistryNamespace }) : void 0;
1342
1350
  const effectiveIdempotency = opts.idempotency ?? pooledIdempotency;
1343
1351
  const effectiveCtxMetadata = opts.ctxMetadata ?? pooledCtxMetadata;
1344
1352
  const taskRegistry = opts.taskRegistry ?? pooledTaskRegistry ?? buildDefaultTaskRegistry();
1353
+ if (taskRegistry.scopeVersion !== 1) {
1354
+ throw new PlatformConfigError(
1355
+ "taskRegistry.scopeVersion must be 1. Migrate custom registries to the account/principal-scoped TaskRegistry signatures before use."
1356
+ );
1357
+ }
1345
1358
  const baseBus = opts.statusChangeBus ?? createInMemoryStatusChangeBus();
1346
1359
  const taskWebhookEmit = opts.taskWebhookEmitter?.emit;
1347
1360
  const observability = opts.observability;
@@ -2008,15 +2021,13 @@ function createAdcpServerFromPlatform(platform, opts) {
2008
2021
  }
2009
2022
  }
2010
2023
  return Object.assign(server, {
2011
- getTaskState: async (taskId, expectedAccountId) => {
2012
- const record = await taskRegistry.getTask(taskId);
2013
- if (record == null) return null;
2014
- if (expectedAccountId !== void 0 && record.accountId !== expectedAccountId) {
2015
- return null;
2016
- }
2017
- return record;
2024
+ getTaskState: async (taskId, scope) => {
2025
+ const record = await taskRegistry.getTask(taskId, scope);
2026
+ return record && taskRecordMatchesScope(record, scope) ? record : null;
2018
2027
  },
2019
- awaitTask: (taskId) => taskRegistry.awaitTask(taskId),
2028
+ getTaskStateUnsafe: (taskId) => taskRegistry._getTaskUnsafe(taskId),
2029
+ awaitTask: (taskId, scope) => taskRegistry.awaitTask(taskId, scope),
2030
+ awaitTaskUnsafe: (taskId) => taskRegistry._awaitTaskUnsafe(taskId),
2020
2031
  statusChange: statusChangeBus
2021
2032
  });
2022
2033
  }
@@ -2189,9 +2200,26 @@ function buildTasksGetTool(platform, taskRegistry, agentRegistry, logger, resolv
2189
2200
  });
2190
2201
  }
2191
2202
  }
2203
+ if (resolvedAccountId === void 0) {
2204
+ return adcpError("REFERENCE_NOT_FOUND", {
2205
+ message: `Task ${args.task_id} not found`,
2206
+ field: "task_id"
2207
+ });
2208
+ }
2209
+ const ownerCtx = {
2210
+ store: {},
2211
+ ...extra?.authInfo !== void 0 && { authInfo: extra.authInfo },
2212
+ ...agent !== void 0 && { agent },
2213
+ ...sessionKey !== void 0 && { sessionKey },
2214
+ account: resolvedAccount ?? { id: resolvedAccountId }
2215
+ };
2216
+ const expectedOwnerScope = taskOwnerScopeFor(ownerCtx, resolvedAccountId);
2192
2217
  let record;
2193
2218
  try {
2194
- record = await taskRegistry.getTask(args.task_id);
2219
+ record = await taskRegistry.getTask(args.task_id, {
2220
+ accountId: resolvedAccountId,
2221
+ ownerScope: expectedOwnerScope
2222
+ });
2195
2223
  } catch (err) {
2196
2224
  logger.error?.("Task registry read failed during tasks_get poll", {
2197
2225
  error: err instanceof Error ? err.message : String(err)
@@ -2204,34 +2232,15 @@ function buildTasksGetTool(platform, taskRegistry, agentRegistry, logger, resolv
2204
2232
  field: "task_id"
2205
2233
  });
2206
2234
  }
2207
- if (resolvedAccountId === void 0 && record.accountId) {
2235
+ if (!taskRecordMatchesScope(record, {
2236
+ accountId: resolvedAccountId,
2237
+ ownerScope: expectedOwnerScope
2238
+ })) {
2208
2239
  return adcpError("REFERENCE_NOT_FOUND", {
2209
2240
  message: `Task ${args.task_id} not found`,
2210
2241
  field: "task_id"
2211
2242
  });
2212
2243
  }
2213
- if (resolvedAccountId !== void 0 && record.accountId !== resolvedAccountId) {
2214
- return adcpError("REFERENCE_NOT_FOUND", {
2215
- message: `Task ${args.task_id} not found`,
2216
- field: "task_id"
2217
- });
2218
- }
2219
- if (resolvedAccountId !== void 0) {
2220
- const ownerCtx = {
2221
- store: {},
2222
- ...extra?.authInfo !== void 0 && { authInfo: extra.authInfo },
2223
- ...agent !== void 0 && { agent },
2224
- ...sessionKey !== void 0 && { sessionKey },
2225
- account: resolvedAccount ?? { id: resolvedAccountId }
2226
- };
2227
- const expectedOwnerScope = taskOwnerScopeFor(ownerCtx, resolvedAccountId);
2228
- if (record.ownerScope === void 0 ? expectedOwnerScope !== `account:${resolvedAccountId}` : record.ownerScope !== expectedOwnerScope) {
2229
- return adcpError("REFERENCE_NOT_FOUND", {
2230
- message: `Task ${args.task_id} not found`,
2231
- field: "task_id"
2232
- });
2233
- }
2234
- }
2235
2244
  const payload = {
2236
2245
  task_id: record.taskId,
2237
2246
  task_type: record.tool,
@@ -2375,8 +2384,17 @@ function wrapBusWithObservability(bus, observability) {
2375
2384
  recent: bus.recent.bind(bus)
2376
2385
  };
2377
2386
  }
2378
- function getAllAdcpMigrations() {
2379
- return [getIdempotencyMigration(), getCtxMetadataMigration(), getDecisioningTaskRegistryMigration()].join("\n\n");
2387
+ function getAllAdcpMigrations(options) {
2388
+ if (!options) {
2389
+ throw new PlatformConfigError(
2390
+ "getAllAdcpMigrations requires { taskRegistryNamespace }; use a stable, trusted deployment or tenant namespace."
2391
+ );
2392
+ }
2393
+ return [
2394
+ getIdempotencyMigration(),
2395
+ getCtxMetadataMigration(),
2396
+ getDecisioningTaskRegistryMigration({ namespace: options.taskRegistryNamespace })
2397
+ ].join("\n\n");
2380
2398
  }
2381
2399
  function buildDefaultTaskRegistry() {
2382
2400
  const env = process.env.NODE_ENV;
@@ -2384,7 +2402,7 @@ function buildDefaultTaskRegistry() {
2384
2402
  const ack = process.env.ADCP_DECISIONING_ALLOW_INMEMORY_TASKS === "1";
2385
2403
  if (!safe && !ack) {
2386
2404
  throw new Error(
2387
- 'createAdcpServerFromPlatform: in-memory task registry refused outside {NODE_ENV=test, NODE_ENV=development}. Production deployments need a durable task registry \u2014 pick one of:\n 1. (Recommended) Pass `taskRegistry: createPostgresTaskRegistry({ pool })` to keep HITL tasks across restarts. See `@adcp/sdk/server/decisioning` for `getDecisioningTaskRegistryMigration()` \u2014 run it once against your DB.\n 2. Pass `taskRegistry: createInMemoryTaskRegistry()` explicitly if you accept that in-flight tasks are lost on process restart. The explicit pass-in is the contract \u2014 saying "yes I want in-memory in production" in code is the right shape.\n 3. ADCP_DECISIONING_ALLOW_INMEMORY_TASKS=1 env flag is the ops escape hatch (same effect as #2 but config-only); prefer #2 in adopter code.'
2405
+ 'createAdcpServerFromPlatform: in-memory task registry refused outside {NODE_ENV=test, NODE_ENV=development}. Production deployments need a durable task registry \u2014 pick one of:\n 1. (Recommended) Pass `taskRegistry: createPostgresTaskRegistry({ pool, namespace: tenantId })` to keep HITL tasks across restarts. See `@adcp/sdk/server/decisioning` for `getDecisioningTaskRegistryMigration({ namespace })` \u2014 run it once against your DB.\n 2. Pass `taskRegistry: createInMemoryTaskRegistry()` explicitly if you accept that in-flight tasks are lost on process restart. The explicit pass-in is the contract \u2014 saying "yes I want in-memory in production" in code is the right shape.\n 3. ADCP_DECISIONING_ALLOW_INMEMORY_TASKS=1 env flag is the ops escape hatch (same effect as #2 but config-only); prefer #2 in adopter code.'
2388
2406
  );
2389
2407
  }
2390
2408
  return createInMemoryTaskRegistry();
@@ -2519,7 +2537,12 @@ async function routeIfHandoff(taskRegistry, opts, result, project) {
2519
2537
  taskRegistry,
2520
2538
  opts,
2521
2539
  async (taskId) => {
2522
- const inner = await taskFn(buildHandoffContext(taskRegistry, taskId));
2540
+ const inner = await taskFn(
2541
+ buildHandoffContext(taskRegistry, taskId, {
2542
+ accountId: opts.accountId,
2543
+ ownerScope: opts.ownerScope ?? `account:${opts.accountId}`
2544
+ })
2545
+ );
2523
2546
  rejectResponseSummary(inner);
2524
2547
  return await project(inner);
2525
2548
  },
@@ -2567,6 +2590,10 @@ async function dispatchHitl(taskRegistry, opts, taskFn, overrideTaskId) {
2567
2590
  );
2568
2591
  };
2569
2592
  const completion = (async () => {
2593
+ const registryScope = {
2594
+ accountId: opts.accountId,
2595
+ ownerScope: opts.ownerScope ?? `account:${opts.accountId}`
2596
+ };
2570
2597
  let result;
2571
2598
  let taskFnError;
2572
2599
  try {
@@ -2580,10 +2607,10 @@ async function dispatchHitl(taskRegistry, opts, taskFn, overrideTaskId) {
2580
2607
  stripImplementationConfig(result);
2581
2608
  }
2582
2609
  try {
2583
- await taskRegistry.complete(taskId, result);
2610
+ await taskRegistry.complete(taskId, registryScope, result);
2584
2611
  } catch (registryErr) {
2585
2612
  opts.logger.error(
2586
- `[adcp/decisioning] task ${taskId} (${opts.tool}) completed but registry write failed \u2014 manual reconciliation required. Webhook not emitted; buyer state will diverge until resolved. Error: ${registryErr instanceof Error ? registryErr.message : String(registryErr)}`
2613
+ `[adcp/decisioning] task ${taskId} (${opts.tool}) completed but registry write failed \u2014 manual reconciliation required. Webhook not emitted; buyer state will diverge until resolved. Error type: ${registryErr instanceof Error ? "Error" : typeof registryErr}`
2587
2614
  );
2588
2615
  fireTransition("failed", "REGISTRY_WRITE_FAILED");
2589
2616
  return;
@@ -2603,10 +2630,10 @@ async function dispatchHitl(taskRegistry, opts, taskFn, overrideTaskId) {
2603
2630
  );
2604
2631
  const failureArtifact = { errors: [structured] };
2605
2632
  try {
2606
- await taskRegistry.fail(taskId, structured, failureArtifact);
2633
+ await taskRegistry.fail(taskId, registryScope, structured, failureArtifact);
2607
2634
  } catch (registryErr) {
2608
2635
  opts.logger.error(
2609
- `[adcp/decisioning] task ${taskId} (${opts.tool}) failed AND registry fail-write also failed \u2014 manual reconciliation required. Webhook not emitted. taskFn error: ${structured.message}; registry error: ${registryErr instanceof Error ? registryErr.message : String(registryErr)}`
2636
+ `[adcp/decisioning] task ${taskId} (${opts.tool}) failed AND registry fail-write also failed \u2014 manual reconciliation required. Webhook not emitted. Task error code: ${structured.code}; registry error type: ${registryErr instanceof Error ? "Error" : typeof registryErr}`
2610
2637
  );
2611
2638
  fireTransition("failed", "REGISTRY_WRITE_FAILED");
2612
2639
  return;
@@ -2616,7 +2643,11 @@ async function dispatchHitl(taskRegistry, opts, taskFn, overrideTaskId) {
2616
2643
  task: { task_id: taskId, status: "failed", result: failureArtifact, error: structured }
2617
2644
  });
2618
2645
  })();
2619
- taskRegistry._registerBackground(taskId, completion);
2646
+ taskRegistry._registerBackground(
2647
+ taskId,
2648
+ { accountId: opts.accountId, ownerScope: opts.ownerScope ?? `account:${opts.accountId}` },
2649
+ completion
2650
+ );
2620
2651
  return { status: "submitted", task_id: taskId };
2621
2652
  }
2622
2653
  function buildTaskWebhookPayload(opts, taskId, status, artifact) {
@@ -3835,6 +3866,7 @@ function buildMediaBuyHandlers(platform, taskRegistry, taskWebhookEmit, observab
3835
3866
  }
3836
3867
  function projectBuildCreativeReturn(ret) {
3837
3868
  if (ret != null && typeof ret === "object" && !Array.isArray(ret)) {
3869
+ if ("creatives" in ret) return ret;
3838
3870
  if ("creative_manifest" in ret) return ret;
3839
3871
  if ("creative_manifests" in ret) return ret;
3840
3872
  }