@adcp/sdk 14.0.0-rc.38 → 14.0.0-rc.39

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 (600) hide show
  1. package/bin/adcp-storyboard-summary.js +286 -0
  2. package/bin/adcp.js +221 -10
  3. package/dist/lib/conformance/schemaLoader.d.mts +1 -1
  4. package/dist/lib/conformance/schemaLoader.d.ts +1 -1
  5. package/dist/lib/core/AgentClient.d.mts +6 -1
  6. package/dist/lib/core/AgentClient.d.ts +6 -1
  7. package/dist/lib/core/AgentClient.js +9 -0
  8. package/dist/lib/core/AgentClient.mjs +9 -0
  9. package/dist/lib/core/ConversationTypes.d.mts +29 -0
  10. package/dist/lib/core/ConversationTypes.d.ts +29 -0
  11. package/dist/lib/core/SingleAgentClient.d.mts +3 -1
  12. package/dist/lib/core/SingleAgentClient.d.ts +3 -1
  13. package/dist/lib/core/SingleAgentClient.js +9 -1
  14. package/dist/lib/core/SingleAgentClient.mjs +9 -1
  15. package/dist/lib/core/TaskExecutor.d.mts +13 -1
  16. package/dist/lib/core/TaskExecutor.d.ts +13 -1
  17. package/dist/lib/core/TaskExecutor.js +216 -18
  18. package/dist/lib/core/TaskExecutor.mjs +216 -19
  19. package/dist/lib/index.d.mts +5 -2
  20. package/dist/lib/index.d.ts +5 -2
  21. package/dist/lib/index.js +10 -1
  22. package/dist/lib/index.mjs +10 -1
  23. package/dist/lib/media-buy/action-assessment.d.mts +77 -0
  24. package/dist/lib/media-buy/action-assessment.d.ts +77 -0
  25. package/dist/lib/media-buy/action-assessment.js +300 -0
  26. package/dist/lib/media-buy/action-assessment.mjs +284 -0
  27. package/dist/lib/media-buy/action-constraints.d.mts +9 -0
  28. package/dist/lib/media-buy/action-constraints.d.ts +9 -0
  29. package/dist/lib/media-buy/action-constraints.js +170 -0
  30. package/dist/lib/media-buy/action-constraints.mjs +146 -0
  31. package/dist/lib/media-buy/action-contracts.d.mts +40 -0
  32. package/dist/lib/media-buy/action-contracts.d.ts +40 -0
  33. package/dist/lib/media-buy/action-contracts.js +304 -0
  34. package/dist/lib/media-buy/action-contracts.mjs +267 -0
  35. package/dist/lib/media-buy/action-metadata.generated.d.mts +37 -0
  36. package/dist/lib/media-buy/action-metadata.generated.d.ts +37 -0
  37. package/dist/lib/media-buy/action-metadata.generated.js +128 -0
  38. package/dist/lib/media-buy/action-metadata.generated.mjs +101 -0
  39. package/dist/lib/media-buy/action-types.d.mts +106 -0
  40. package/dist/lib/media-buy/action-types.d.ts +106 -0
  41. package/dist/lib/{types/v3-1-beta/tools.generated.js → media-buy/action-types.js} +2 -2
  42. package/dist/lib/media-buy/actions.d.mts +6 -0
  43. package/dist/lib/media-buy/actions.d.ts +6 -0
  44. package/dist/lib/media-buy/actions.js +38 -0
  45. package/dist/lib/media-buy/actions.mjs +9 -0
  46. package/dist/lib/media-buy/available-actions.d.mts +2 -1
  47. package/dist/lib/media-buy/available-actions.d.ts +2 -1
  48. package/dist/lib/media-buy/available-actions.js +4 -3
  49. package/dist/lib/media-buy/available-actions.mjs +4 -3
  50. package/dist/lib/media-buy/compatibility.js +3 -0
  51. package/dist/lib/media-buy/compatibility.mjs +3 -0
  52. package/dist/lib/media-buy/index.d.mts +4 -0
  53. package/dist/lib/media-buy/index.d.ts +4 -0
  54. package/dist/lib/media-buy/index.js +3 -1
  55. package/dist/lib/media-buy/index.mjs +1 -0
  56. package/dist/lib/media-buy/legacy-action-ids.d.mts +1 -0
  57. package/dist/lib/media-buy/legacy-action-ids.d.ts +1 -0
  58. package/dist/lib/media-buy/legacy-action-ids.js +50 -0
  59. package/dist/lib/media-buy/legacy-action-ids.mjs +26 -0
  60. package/dist/lib/media-buy/mutations.d.mts +70 -0
  61. package/dist/lib/media-buy/mutations.d.ts +70 -0
  62. package/dist/lib/media-buy/mutations.js +525 -0
  63. package/dist/lib/media-buy/mutations.mjs +498 -0
  64. package/dist/lib/media-buy/preflight.d.mts +20 -69
  65. package/dist/lib/media-buy/preflight.d.ts +20 -69
  66. package/dist/lib/media-buy/preflight.js +100 -336
  67. package/dist/lib/media-buy/preflight.mjs +111 -333
  68. package/dist/lib/media-buy/targeting-input.d.mts +7 -4
  69. package/dist/lib/media-buy/targeting-input.d.ts +7 -4
  70. package/dist/lib/media-buy/types.d.mts +55 -7
  71. package/dist/lib/media-buy/types.d.ts +55 -7
  72. package/dist/lib/protocols/rawResponseCapture.d.mts +12 -0
  73. package/dist/lib/protocols/rawResponseCapture.d.ts +12 -0
  74. package/dist/lib/protocols/rawResponseCapture.js +33 -3
  75. package/dist/lib/protocols/rawResponseCapture.mjs +32 -3
  76. package/dist/lib/registry/types.generated.d.mts +377 -9
  77. package/dist/lib/registry/types.generated.d.ts +377 -9
  78. package/dist/lib/reporting/evidence.d.mts +1 -0
  79. package/dist/lib/reporting/evidence.d.ts +1 -0
  80. package/dist/lib/reporting/evidence.js +32 -3
  81. package/dist/lib/reporting/evidence.mjs +31 -3
  82. package/dist/lib/reporting/ledger/handler.d.mts +51 -1
  83. package/dist/lib/reporting/ledger/handler.d.ts +51 -1
  84. package/dist/lib/reporting/ledger/handler.js +306 -38
  85. package/dist/lib/reporting/ledger/handler.mjs +304 -37
  86. package/dist/lib/reporting/ledger/health.d.mts +12 -0
  87. package/dist/lib/reporting/ledger/health.d.ts +12 -0
  88. package/dist/lib/reporting/ledger/health.js +15 -2
  89. package/dist/lib/reporting/ledger/health.mjs +13 -1
  90. package/dist/lib/reporting/ledger/index.d.mts +3 -0
  91. package/dist/lib/reporting/ledger/index.d.ts +3 -0
  92. package/dist/lib/reporting/ledger/index.js +7 -1
  93. package/dist/lib/reporting/ledger/index.mjs +3 -0
  94. package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
  95. package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
  96. package/dist/lib/reporting/ledger/lifecycle.js +244 -37
  97. package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
  98. package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
  99. package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
  100. package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
  101. package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
  102. package/dist/lib/reporting/ledger/managed.d.mts +355 -0
  103. package/dist/lib/reporting/ledger/managed.d.ts +355 -0
  104. package/dist/lib/reporting/ledger/managed.js +661 -0
  105. package/dist/lib/reporting/ledger/managed.mjs +633 -0
  106. package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
  107. package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
  108. package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
  109. package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
  110. package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
  111. package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
  112. package/dist/lib/reporting/ledger/postgres.js +1153 -21
  113. package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
  114. package/dist/lib/reporting/ledger/producer.d.mts +8 -0
  115. package/dist/lib/reporting/ledger/producer.d.ts +8 -0
  116. package/dist/lib/reporting/ledger/producer.js +146 -52
  117. package/dist/lib/reporting/ledger/producer.mjs +146 -51
  118. package/dist/lib/reporting/ledger/types.d.mts +358 -1
  119. package/dist/lib/reporting/ledger/types.d.ts +358 -1
  120. package/dist/lib/reporting/ledger/types.js +3 -0
  121. package/dist/lib/reporting/ledger/types.mjs +2 -0
  122. package/dist/lib/reporting/service/conformance.d.mts +35 -0
  123. package/dist/lib/reporting/service/conformance.d.ts +35 -0
  124. package/dist/lib/reporting/service/conformance.js +89 -0
  125. package/dist/lib/reporting/service/conformance.mjs +68 -0
  126. package/dist/lib/reporting/service/index.d.mts +182 -0
  127. package/dist/lib/reporting/service/index.d.ts +182 -0
  128. package/dist/lib/reporting/service/index.js +793 -0
  129. package/dist/lib/reporting/service/index.mjs +787 -0
  130. package/dist/lib/reporting/source/index.d.mts +2 -1
  131. package/dist/lib/reporting/source/index.d.ts +2 -1
  132. package/dist/lib/reporting/source/index.js +16 -3
  133. package/dist/lib/reporting/source/index.mjs +12 -1
  134. package/dist/lib/reporting/source/inline.d.mts +88 -1
  135. package/dist/lib/reporting/source/inline.d.ts +88 -1
  136. package/dist/lib/reporting/source/inline.js +1161 -163
  137. package/dist/lib/reporting/source/inline.mjs +1166 -163
  138. package/dist/lib/reporting/source/manifest.js +12 -7
  139. package/dist/lib/reporting/source/manifest.mjs +12 -7
  140. package/dist/lib/reporting/source/source.d.mts +26 -0
  141. package/dist/lib/reporting/source/source.d.ts +26 -0
  142. package/dist/lib/reporting/source/source.js +71 -2
  143. package/dist/lib/reporting/source/source.mjs +65 -1
  144. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  145. package/dist/lib/server/create-adcp-server.d.mts +18 -0
  146. package/dist/lib/server/create-adcp-server.d.ts +18 -0
  147. package/dist/lib/server/create-adcp-server.js +52 -2
  148. package/dist/lib/server/create-adcp-server.mjs +52 -2
  149. package/dist/lib/server/decisioning/account.d.mts +1 -1
  150. package/dist/lib/server/decisioning/account.d.ts +1 -1
  151. package/dist/lib/server/decisioning/index.d.mts +1 -0
  152. package/dist/lib/server/decisioning/index.d.ts +1 -0
  153. package/dist/lib/server/decisioning/platform.d.mts +3 -0
  154. package/dist/lib/server/decisioning/platform.d.ts +3 -0
  155. package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
  156. package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
  157. package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
  158. package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
  159. package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
  160. package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
  161. package/dist/lib/server/index.d.mts +4 -2
  162. package/dist/lib/server/index.d.ts +4 -2
  163. package/dist/lib/server/index.js +5 -0
  164. package/dist/lib/server/index.mjs +4 -0
  165. package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
  166. package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
  167. package/dist/lib/server/media-buy-action-resolver.js +297 -0
  168. package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
  169. package/dist/lib/server/media-buy-actions.d.mts +7 -8
  170. package/dist/lib/server/media-buy-actions.d.ts +7 -8
  171. package/dist/lib/server/media-buy-actions.js +57 -14
  172. package/dist/lib/server/media-buy-actions.mjs +63 -14
  173. package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
  174. package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
  175. package/dist/lib/server/notification-subscriptions/index.js +2 -0
  176. package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
  177. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
  178. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
  179. package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
  180. package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
  181. package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
  182. package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
  183. package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
  184. package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
  185. package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
  186. package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
  187. package/dist/lib/server/webhook-emitter.d.mts +40 -5
  188. package/dist/lib/server/webhook-emitter.d.ts +40 -5
  189. package/dist/lib/server/webhook-emitter.js +23 -12
  190. package/dist/lib/server/webhook-emitter.mjs +23 -12
  191. package/dist/lib/storage/interfaces.d.mts +14 -2
  192. package/dist/lib/storage/interfaces.d.ts +14 -2
  193. package/dist/lib/testing/compliance/comply.d.mts +9 -3
  194. package/dist/lib/testing/compliance/comply.d.ts +9 -3
  195. package/dist/lib/testing/compliance/comply.js +158 -3
  196. package/dist/lib/testing/compliance/comply.mjs +159 -4
  197. package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
  198. package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
  199. package/dist/lib/testing/compliance/summary.js +10 -1
  200. package/dist/lib/testing/compliance/summary.mjs +10 -1
  201. package/dist/lib/testing/index.d.mts +1 -1
  202. package/dist/lib/testing/index.d.ts +1 -1
  203. package/dist/lib/testing/index.js +2 -0
  204. package/dist/lib/testing/index.mjs +3 -1
  205. package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
  206. package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
  207. package/dist/lib/testing/storyboard/agent-routing.js +75 -13
  208. package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
  209. package/dist/lib/testing/storyboard/index.d.mts +1 -0
  210. package/dist/lib/testing/storyboard/index.d.ts +1 -0
  211. package/dist/lib/testing/storyboard/index.js +3 -0
  212. package/dist/lib/testing/storyboard/index.mjs +2 -0
  213. package/dist/lib/testing/storyboard/junit.d.mts +1 -1
  214. package/dist/lib/testing/storyboard/junit.d.ts +1 -1
  215. package/dist/lib/testing/storyboard/junit.js +21 -2
  216. package/dist/lib/testing/storyboard/junit.mjs +21 -2
  217. package/dist/lib/testing/storyboard/probes.d.mts +130 -0
  218. package/dist/lib/testing/storyboard/probes.d.ts +130 -0
  219. package/dist/lib/testing/storyboard/probes.js +682 -10
  220. package/dist/lib/testing/storyboard/probes.mjs +683 -3
  221. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
  222. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
  223. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
  224. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
  225. package/dist/lib/testing/storyboard/request-signing/grader.js +46 -22
  226. package/dist/lib/testing/storyboard/request-signing/grader.mjs +43 -21
  227. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
  228. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
  229. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
  230. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
  231. package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
  232. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
  233. package/dist/lib/testing/storyboard/runner.d.mts +103 -0
  234. package/dist/lib/testing/storyboard/runner.d.ts +103 -0
  235. package/dist/lib/testing/storyboard/runner.js +1090 -268
  236. package/dist/lib/testing/storyboard/runner.mjs +1096 -261
  237. package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
  238. package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
  239. package/dist/lib/testing/storyboard/seeding.js +55 -24
  240. package/dist/lib/testing/storyboard/seeding.mjs +55 -24
  241. package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
  242. package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
  243. package/dist/lib/testing/storyboard/test-kit.js +8 -2
  244. package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
  245. package/dist/lib/testing/storyboard/types.d.mts +132 -10
  246. package/dist/lib/testing/storyboard/types.d.ts +132 -10
  247. package/dist/lib/testing/storyboard/types.js +17 -0
  248. package/dist/lib/testing/storyboard/types.mjs +16 -0
  249. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  250. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  251. package/dist/lib/testing/storyboard/validations.js +16 -0
  252. package/dist/lib/testing/storyboard/validations.mjs +16 -0
  253. package/dist/lib/testing/test-controller.d.mts +1 -1
  254. package/dist/lib/testing/test-controller.d.ts +1 -1
  255. package/dist/lib/types/buy-products.d.ts +71 -6
  256. package/dist/lib/types/control-media-buy.d.ts +25 -11
  257. package/dist/lib/types/core.generated.d.mts +69 -10
  258. package/dist/lib/types/core.generated.d.ts +69 -10
  259. package/dist/lib/types/create-media-buy.d.ts +71 -6
  260. package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
  261. package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
  262. package/dist/lib/types/index.d.mts +2 -2
  263. package/dist/lib/types/index.d.ts +2 -2
  264. package/dist/lib/types/schemas.generated.d.ts +8040 -8116
  265. package/dist/lib/types/schemas.generated.js +1074 -309
  266. package/dist/lib/types/schemas.generated.mjs +1068 -309
  267. package/dist/lib/types/tools.generated.d.mts +65 -6
  268. package/dist/lib/types/tools.generated.d.ts +65 -6
  269. package/dist/lib/types/update-media-buy.d.ts +71 -6
  270. package/dist/lib/utils/redact-secrets.d.mts +1 -1
  271. package/dist/lib/utils/redact-secrets.d.ts +1 -1
  272. package/dist/lib/utils/redact-secrets.js +1 -1
  273. package/dist/lib/utils/redact-secrets.mjs +1 -1
  274. package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
  275. package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
  276. package/dist/lib/v2/projection/cache-versions.js +1 -15
  277. package/dist/lib/v2/projection/cache-versions.mjs +1 -14
  278. package/dist/lib/v2/projection/canonical-properties.js +2 -2
  279. package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
  280. package/dist/lib/v2/projection/registry.d.mts +1 -1
  281. package/dist/lib/v2/projection/registry.d.ts +1 -1
  282. package/dist/lib/v2/projection/registry.js +2 -2
  283. package/dist/lib/v2/projection/registry.mjs +3 -3
  284. package/dist/lib/version.d.mts +5 -5
  285. package/dist/lib/version.d.ts +5 -5
  286. package/dist/lib/version.js +3 -8
  287. package/dist/lib/version.mjs +3 -8
  288. package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
  289. package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
  290. package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
  291. package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
  292. package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
  293. package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
  294. package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
  295. package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
  296. package/dist/lib/wholesale-feed-sync/sync.js +3 -1
  297. package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
  298. package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
  299. package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
  300. package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
  301. package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
  302. package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
  303. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
  304. package/docs/CLI.md +1 -1
  305. package/docs/TYPE-SUMMARY.md +118 -4
  306. package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
  307. package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
  308. package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
  309. package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
  310. package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
  311. package/docs/guides/EXISTING-PLATFORM.md +35 -0
  312. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +7 -3
  313. package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
  314. package/docs/guides/REPORTING-LEDGER.md +654 -3
  315. package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
  316. package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
  317. package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
  318. package/docs/guides/idempotency-crash-recovery.md +4 -0
  319. package/docs/llms.txt +4 -2
  320. package/docs/migration-14.x-rc-worksheet.md +5 -5
  321. package/docs/migration-7.9-to-7.10.md +7 -5
  322. package/examples/README.md +17 -0
  323. package/examples/durable-buyer-writes/caller.ts +745 -0
  324. package/examples/durable-buyer-writes/worker.ts +240 -0
  325. package/examples/reliable-reporting-service/README.md +100 -0
  326. package/examples/seller-3.2-starter.ts +7 -8
  327. package/examples/targeting-input-existing-platform.ts +153 -0
  328. package/package.json +41 -29
  329. package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
  330. package/skills/cross-cutting.md +28 -11
  331. package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
  332. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  333. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
  334. package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
  335. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
  336. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  337. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
  338. package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
  339. package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
  340. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  341. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
  342. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  343. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
  344. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  345. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  346. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  347. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  348. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
  349. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
  350. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
  351. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  352. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  353. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  354. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
  355. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
  356. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
  357. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  358. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
  359. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  360. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  361. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
  362. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  363. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  364. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  365. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  366. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  367. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  368. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
  369. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  370. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  371. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  372. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  373. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  374. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  375. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  376. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
  377. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  378. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  379. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  380. package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
  381. package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
  382. package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
  383. package/compliance/cache/3.1.0-beta.7/index.json +0 -356
  384. package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
  385. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  386. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
  387. package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
  388. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
  389. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  390. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
  391. package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
  392. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
  393. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  394. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
  395. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  396. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
  397. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  398. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  399. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  400. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  401. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
  402. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
  403. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
  404. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  405. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  406. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  407. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
  408. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
  409. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
  410. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  411. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
  412. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  413. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  414. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
  415. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  416. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  417. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  418. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  419. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  420. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  421. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
  422. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  423. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  424. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  425. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  426. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  427. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  428. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  429. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
  430. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  431. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  432. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  433. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
  434. package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
  435. package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
  436. package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
  437. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
  438. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
  439. package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
  440. package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
  441. package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
  442. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
  443. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
  444. package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
  445. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
  446. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
  447. package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
  448. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
  449. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
  450. package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
  451. package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
  452. package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
  453. package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
  454. package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
  455. package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
  456. package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
  457. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
  458. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
  459. package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
  460. package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
  461. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
  462. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
  463. package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
  464. package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
  465. package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
  466. package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
  467. package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
  468. package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
  469. package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
  470. package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
  471. package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
  472. package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
  473. package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
  474. package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
  475. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
  476. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
  477. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
  478. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
  479. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
  480. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
  481. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
  482. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
  483. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
  484. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
  485. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
  486. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
  487. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
  488. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
  489. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
  490. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
  491. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
  492. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
  493. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
  494. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
  495. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
  496. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
  497. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
  498. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
  499. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
  500. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
  501. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
  502. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
  503. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
  504. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
  505. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
  506. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
  507. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
  508. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
  509. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
  510. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
  511. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
  512. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
  513. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
  514. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
  515. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
  516. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
  517. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
  518. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  519. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
  520. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
  521. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
  522. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
  523. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
  524. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
  525. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
  526. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
  527. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
  528. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
  529. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
  530. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
  531. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
  532. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
  533. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
  534. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
  535. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
  536. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
  537. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
  538. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
  539. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
  540. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
  541. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
  542. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
  543. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
  544. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
  545. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
  546. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
  547. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
  548. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
  549. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
  550. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
  551. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
  552. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
  553. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
  554. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
  555. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
  556. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
  557. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
  558. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
  559. package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
  560. package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
  561. package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
  562. package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
  563. package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
  564. package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
  565. package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
  566. package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
  567. package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
  568. package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
  569. package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
  570. package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
  571. package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
  572. package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
  573. package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
  574. package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
  575. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
  576. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
  577. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
  578. package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
  579. package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
  580. package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
  581. package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
  582. package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
  583. package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
  584. package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
  585. package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
  586. package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
  587. package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
  588. package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
  589. package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
  590. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
  591. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
  592. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
  593. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
  594. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
  595. package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
  596. package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
  597. package/dist/lib/types/v3-1-beta/index.mjs +0 -1
  598. package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
  599. package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
  600. /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
@@ -0,0 +1,77 @@
1
+ import type { ActionNotAllowedReason, UpdateMediaBuyRequestLike } from './types';
2
+ import type { ActionBuy, ActionProduct, ActionProposal, ConstraintAssessment, LiveMediaBuyAction, MediaBuyAction, MediaBuyStatus, MediaBuyTask, ProductActionAssessment, ProposalActionAssessment, ProposalChangeTerm } from './action-types';
3
+ import { type ConstraintEvaluationOptions } from './action-constraints';
4
+ export interface ActionAssessmentOptions extends ConstraintEvaluationOptions {
5
+ /** Seller-served wire version. 3.1 term references are always opaque. Defaults to the current 3.2 shape. */
6
+ adcpVersion?: string;
7
+ /** Explicit 3.2 compatibility projection declaring terms_ref an alias for change_term_id. */
8
+ termsRefIsAlias?: boolean;
9
+ /** Current accepted snapshot when it is stored separately from the buy. An embedded snapshot takes precedence. */
10
+ proposal?: ActionProposal;
11
+ /** Optional route being attempted. update_media_buy can subsume compact tasks as a compatibility facade. */
12
+ task?: MediaBuyTask;
13
+ request?: UpdateMediaBuyRequestLike;
14
+ }
15
+ export type ActionAvailability = {
16
+ status: 'available_now';
17
+ action: MediaBuyAction;
18
+ mode: LiveMediaBuyAction['mode'];
19
+ nonDefaultRoute?: MediaBuyTask;
20
+ /** Metadata changes have live seller authority and no commercial promise. */
21
+ authority: 'accepted_term' | 'live_metadata';
22
+ term?: ProposalChangeTerm;
23
+ entry: LiveMediaBuyAction;
24
+ revision?: number;
25
+ constraints?: ConstraintAssessment;
26
+ } | {
27
+ status: 'currently_unavailable';
28
+ action: MediaBuyAction;
29
+ reason: ActionNotAllowedReason;
30
+ message: string;
31
+ certainty: 'blocked' | 'unknown';
32
+ allowedStatuses?: MediaBuyStatus[];
33
+ nonDefaultRoute?: MediaBuyTask;
34
+ constraints?: ConstraintAssessment;
35
+ code?: 'REQUOTE_REQUIRED' | 'CONFLICT';
36
+ compat?: {
37
+ reason: 'no_change_terms';
38
+ message: string;
39
+ };
40
+ };
41
+ export interface MediaBuyActionAssessment {
42
+ action: MediaBuyAction;
43
+ possibility: ProductActionAssessment;
44
+ promise: ProposalActionAssessment;
45
+ availability: ActionAvailability;
46
+ }
47
+ /** Product templates are possibility, including their advisory bounds, never acceptance. */
48
+ export declare function assessProductAction(product: ActionProduct | undefined, action: MediaBuyAction): ProductActionAssessment;
49
+ /** Reports what the proposal promises; it does not verify a digest or accept the proposal. */
50
+ export declare function assessProposalAction(proposal: ActionProposal | undefined, action: MediaBuyAction): ProposalActionAssessment;
51
+ /**
52
+ * Join the current accepted snapshot and action projection. Pure, synchronous,
53
+ * browser-safe, and read-only. This is preflight evidence, not authorization or
54
+ * an atomic revision check. Submit with the existing client lifecycle safeguards.
55
+ */
56
+ export declare function assessActionAvailability(buy: ActionBuy | undefined, action: MediaBuyAction, options?: ActionAssessmentOptions): ActionAvailability;
57
+ /** Render possible / promised / available-now from one call. Product data never creates a promise. */
58
+ export declare function assessMediaBuyAction(input: {
59
+ action: MediaBuyAction;
60
+ product?: ActionProduct;
61
+ proposal?: ActionProposal;
62
+ buy?: ActionBuy;
63
+ } & ActionAssessmentOptions): MediaBuyActionAssessment;
64
+ /** ACTION_NOT_ALLOWED echoes replace the action set, including an explicit empty set. They never update revision or accepted terms. */
65
+ export declare function refreshMediaBuyActions<T extends ActionBuy>(buy: T, details: unknown): T;
66
+ export type MediaBuyActionsPreflight = {
67
+ ok: true;
68
+ assessments: Extract<ActionAvailability, {
69
+ status: 'available_now';
70
+ }>[];
71
+ } | {
72
+ ok: false;
73
+ assessments: ActionAvailability[];
74
+ message?: string;
75
+ };
76
+ /** Assess every decomposed action atomically; never send a partial multi-action request. */
77
+ export declare function preflightMediaBuyActions(buy: ActionBuy, request: UpdateMediaBuyRequestLike, options?: Omit<ActionAssessmentOptions, 'request'>): MediaBuyActionsPreflight;
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var action_assessment_exports = {};
20
+ __export(action_assessment_exports, {
21
+ assessActionAvailability: () => assessActionAvailability,
22
+ assessMediaBuyAction: () => assessMediaBuyAction,
23
+ assessProductAction: () => assessProductAction,
24
+ assessProposalAction: () => assessProposalAction,
25
+ preflightMediaBuyActions: () => preflightMediaBuyActions,
26
+ refreshMediaBuyActions: () => refreshMediaBuyActions
27
+ });
28
+ module.exports = __toCommonJS(action_assessment_exports);
29
+ var import_action_contracts = require('./action-contracts.js');
30
+ var import_action_constraints = require('./action-constraints.js');
31
+ var import_mutations = require('./mutations.js');
32
+ function assessProductAction(product, action) {
33
+ if (product?.allowed_actions === void 0)
34
+ return { status: "unknown", binding: false, message: "Product action information is absent." };
35
+ if ((0, import_action_contracts.productTemplateIssues)(product.allowed_actions).length)
36
+ return { status: "unknown", binding: false, message: "Product action information is invalid or ambiguous." };
37
+ const template = (0, import_action_contracts.findProductAction)(product.allowed_actions, action);
38
+ return template ? { status: "possible", binding: false, template } : { status: "unsupported", binding: false };
39
+ }
40
+ function assessProposalAction(proposal, action) {
41
+ const terms = proposal?.commercial_terms?.change_terms;
42
+ if (terms === void 0) return { status: "unknown", message: "Proposal change terms are absent." };
43
+ if ((0, import_action_contracts.changeTermIssues)(terms).length)
44
+ return { status: "unknown", message: "Proposal change terms are invalid or ambiguous." };
45
+ const term = terms.find((t) => t.action === action);
46
+ return term ? { status: "promised", term } : { status: "not_negotiated" };
47
+ }
48
+ function assessActionAvailability(buy, action, options = {}) {
49
+ const deny = (reason, message, certainty = "blocked", extra = {}) => ({ status: "currently_unavailable", action, reason, message, certainty, ...extra });
50
+ if (options.request !== void 0 && (0, import_mutations.mutationShapeIssue)(options.request))
51
+ return deny(
52
+ "condition_unresolved",
53
+ "Invalid mutation field shape; validate against the selected wire schema.",
54
+ "unknown"
55
+ );
56
+ if (!buy) return deny("condition_unresolved", "Current MediaBuy state is missing.", "unknown");
57
+ if (options.request?.packages?.length) {
58
+ const requested = options.request.packages.map((p) => p.package_id);
59
+ const current = buy.packages?.map((p) => p.package_id);
60
+ if (!current || new Set(requested).size !== requested.length || new Set(current).size !== current.length || requested.some((id) => !id || !current.includes(id)))
61
+ return deny(
62
+ "condition_unresolved",
63
+ "Package identities or current package state are missing or ambiguous.",
64
+ "unknown"
65
+ );
66
+ }
67
+ if (buy.accepted_proposal === void 0 && options.proposal !== void 0) {
68
+ const supplied = options.proposal;
69
+ const linked = buy.accepted_proposal_id !== void 0 && supplied.proposal_id === buy.accepted_proposal_id || buy.media_buy_id !== void 0 && supplied.media_buy_id === buy.media_buy_id;
70
+ if (!linked || supplied.proposal_status !== "accepted")
71
+ return deny(
72
+ "condition_unresolved",
73
+ "The separately supplied snapshot must be accepted and explicitly linked to this MediaBuy.",
74
+ "unknown"
75
+ );
76
+ }
77
+ buy = (0, import_action_contracts.withActionProposal)(buy, options);
78
+ const decomposition = options.request ? (0, import_mutations.decomposeUpdateMediaBuy)(buy, options.request) : void 0;
79
+ if (options.request && decomposition && (0, import_mutations.hasUnmappedMutation)(options.request, decomposition))
80
+ return deny(
81
+ "condition_unresolved",
82
+ "At least one requested field has no supported action mapping; executable-now assessment requires a fully mapped request.",
83
+ "unknown"
84
+ );
85
+ const metadataOnly = action === "update_name";
86
+ const proposal = buy.accepted_proposal;
87
+ const terms = proposal?.commercial_terms?.change_terms;
88
+ if (terms === void 0 && !metadataOnly)
89
+ return deny("condition_unresolved", "Accepted change rights are unknown.", "unknown", {
90
+ compat: {
91
+ reason: "no_change_terms",
92
+ message: "Legacy action hints and opaque references do not establish a negotiated change right."
93
+ }
94
+ });
95
+ if (!(0, import_action_contracts.mediaBuyActionTasks)(action).length)
96
+ return deny(
97
+ "condition_unresolved",
98
+ "A canonical action cannot be inferred from this legacy or incomplete mutation state.",
99
+ "unknown"
100
+ );
101
+ if (proposal !== void 0 && buy.accepted_proposal_id !== void 0 && proposal.proposal_id !== buy.accepted_proposal_id || proposal?.media_buy_id !== void 0 && proposal.media_buy_id !== buy.media_buy_id || proposal?.proposal_status !== void 0 && proposal.proposal_status !== "accepted")
102
+ return deny("condition_unresolved", "The supplied proposal is not the current accepted snapshot.", "unknown");
103
+ const promise = assessProposalAction(proposal, action);
104
+ if (!metadataOnly && promise.status === "unknown") return deny("condition_unresolved", promise.message, "unknown");
105
+ if (!metadataOnly && promise.status === "not_negotiated")
106
+ return deny("not_supported_on_buy", "This action was not negotiated in the accepted proposal.");
107
+ const term = promise.status === "promised" ? promise.term : void 0;
108
+ const packageLifecycle = ["pause", "resume"].includes(action) && options.request?.packages?.filter((p) => p.paused !== void 0 && (p.paused ? "pause" : "resume") === action);
109
+ const scopedLifecycle = packageLifecycle && packageLifecycle.length > 0 && options.request?.paused === void 0;
110
+ const packageControlStatuses = scopedLifecycle ? [...(0, import_action_contracts.actionAllowedStatuses)({ action: "pause" }), ...(0, import_action_contracts.actionAllowedStatuses)({ action: "resume" })] : [];
111
+ const allowedStatuses = metadataOnly ? [...import_action_contracts.NON_TERMINAL_ACTION_STATUSES] : scopedLifecycle ? import_action_contracts.NON_TERMINAL_ACTION_STATUSES.filter(
112
+ (status) => term?.allowed_statuses ? term.allowed_statuses.includes(status) : packageControlStatuses.includes(status)
113
+ ) : (0, import_action_contracts.actionAllowedStatuses)(term);
114
+ for (const pkg of packageLifecycle || []) {
115
+ const current = buy.packages?.find((p) => p.package_id === pkg.package_id);
116
+ const status = (0, import_action_contracts.packageActionStatus)(current);
117
+ if (!status) return deny("condition_unresolved", "Current package lifecycle state is missing.", "unknown");
118
+ if (!(0, import_action_contracts.actionAllowedStatuses)({ action }).includes(status))
119
+ return deny("wrong_status", "The action is not meaningful in the current package status.");
120
+ }
121
+ if (buy.status === void 0) return deny("condition_unresolved", "Current MediaBuy status is missing.", "unknown");
122
+ if (!allowedStatuses.includes(buy.status))
123
+ return deny("wrong_status", "The negotiated action is latent in the current status.", "blocked", {
124
+ allowedStatuses
125
+ });
126
+ if (options.request?.revision !== void 0 && (buy.revision === void 0 || options.request.revision !== buy.revision))
127
+ return deny("condition_unresolved", "Refresh the MediaBuy revision and reassess before submitting.", "unknown", {
128
+ code: "CONFLICT"
129
+ });
130
+ if (term?.conditions?.length)
131
+ return deny(
132
+ "condition_unresolved",
133
+ "Opaque conditions require seller evaluation; their identifiers grant no authority.",
134
+ "unknown"
135
+ );
136
+ const entries = buy.available_actions;
137
+ if (entries === void 0)
138
+ return deny(
139
+ "condition_unresolved",
140
+ "A current structured action projection is required; legacy hints have no mode or term identity.",
141
+ "unknown"
142
+ );
143
+ if ((0, import_action_contracts.liveActionIssues)(entries).length)
144
+ return deny("condition_unresolved", "The live action projection is invalid or ambiguous.", "unknown");
145
+ const entry = entries.find((e) => e.action === action);
146
+ if (options.adcpVersion && entry && !(0, import_action_contracts.liveActionFitsVersion)(entry, options.adcpVersion))
147
+ return deny(
148
+ "condition_unresolved",
149
+ "The action uses metadata introduced after the supplied seller version.",
150
+ "unknown"
151
+ );
152
+ if (!entry)
153
+ return deny("not_supported_on_buy", "The seller has not made this negotiated action available now.", "unknown");
154
+ if (!metadataOnly && options.adcpVersion && !(0, import_action_contracts.supportsChangeTermIdentity)(options.adcpVersion))
155
+ return deny(
156
+ "condition_unresolved",
157
+ "The supplied seller version cannot link accepted change terms; legacy terms_ref remains opaque.",
158
+ "unknown"
159
+ );
160
+ if (!metadataOnly && (entry.change_term_id === void 0 || entry.change_term_id !== term.term_id))
161
+ return deny("condition_unresolved", "The live action does not identify its accepted change term.", "unknown");
162
+ if (options.termsRefIsAlias && entry.change_term_id !== void 0 && entry.terms_ref !== void 0 && entry.terms_ref !== entry.change_term_id)
163
+ return deny("condition_unresolved", "The deliberately emitted term aliases disagree.", "unknown");
164
+ if (metadataOnly && entry.change_term_id !== void 0)
165
+ return deny("condition_unresolved", "Metadata-only actions cannot identify a commercial change term.", "unknown");
166
+ if (!["self_serve", "conditional_self_serve", "seller_managed", "requires_approval"].includes(entry.mode))
167
+ return deny("condition_unresolved", "Unknown live action mode; refresh the seller declaration.", "unknown");
168
+ if (term && (entry.mode !== term.service_mode || !(0, import_action_contracts.slaWithin)(term.processing_sla, entry.sla)))
169
+ return deny("mode_mismatch", "The live mode or SLA exceeds the accepted commitment.");
170
+ if (entry.task !== void 0 && !(0, import_action_contracts.mediaBuyActionTasks)(action).includes(entry.task))
171
+ return deny("mode_mismatch", "The live action has no compatible canonical task.");
172
+ const task = entry.task ?? "update_media_buy";
173
+ const nonDefaultRoute = task === "update_media_buy" ? void 0 : task;
174
+ if (options.task !== void 0 && options.task !== "update_media_buy" && options.task !== task)
175
+ return deny(
176
+ "mode_mismatch",
177
+ entry.task === void 0 ? "This task-less entry uses update_media_buy. Refresh get_media_buys for a canonical task projection before changing routes." : "Use the task declared by the live action; seller_managed uses its standard async lifecycle.",
178
+ "blocked",
179
+ { nonDefaultRoute }
180
+ );
181
+ const mutations = decomposition?.mutations ?? [];
182
+ if (entry.applicable_package_ids !== void 0) {
183
+ const ids = entry.applicable_package_ids;
184
+ if (!Array.isArray(ids) || !ids.length || ids.some((id) => typeof id !== "string" || !id.length) || new Set(ids).size !== ids.length)
185
+ return deny("condition_unresolved", "Invalid live package scope.", "unknown");
186
+ const relevant = mutations.filter((m) => m.action === action);
187
+ if (!relevant.length)
188
+ return deny(
189
+ "condition_unresolved",
190
+ "Supply the requested packages to evaluate the live package scope.",
191
+ "unknown"
192
+ );
193
+ if (relevant.some((m) => m.scope !== "package" || !m.package_id || !ids.includes(m.package_id)))
194
+ return deny("not_supported_on_buy", "The action is not available for every requested package.");
195
+ }
196
+ let constraints;
197
+ if (term && (term.constraints !== void 0 || options.request)) {
198
+ constraints = options.request ? (0, import_action_constraints.evaluateChangeTermConstraints)(term, buy, options.request, mutations, options) : {
199
+ status: "unknown",
200
+ constraint: "request",
201
+ path: action,
202
+ message: "Supply the requested mutation to evaluate portable bounds."
203
+ };
204
+ if (constraints.status !== "satisfied")
205
+ return deny(
206
+ "condition_unresolved",
207
+ constraints.message,
208
+ constraints.status === "unknown" ? "unknown" : "blocked",
209
+ {
210
+ constraints,
211
+ ...constraints.status === "exceeded" && { code: "REQUOTE_REQUIRED" }
212
+ }
213
+ );
214
+ }
215
+ if (action === "add_packages" && options.request?.new_packages) {
216
+ const index = options.request.new_packages.findIndex(
217
+ (pkg) => pkg !== null && typeof pkg === "object" && ["budget", "min_spend_target", "daily_budget_cap"].some(
218
+ (field) => Object.hasOwn(pkg, field) && pkg[field] !== void 0
219
+ )
220
+ );
221
+ if (index !== -1)
222
+ return deny(
223
+ "condition_unresolved",
224
+ "Added-package monetary commitments cannot be assessed from package-count rights alone.",
225
+ "unknown",
226
+ {
227
+ constraints: {
228
+ status: "unknown",
229
+ constraint: "added_package_budget",
230
+ path: `new_packages[${index}]`,
231
+ message: "Supply a verified commercial amendment for the added package commitments; their budget baseline is not represented by this portable patch assessment."
232
+ }
233
+ }
234
+ );
235
+ }
236
+ return {
237
+ status: "available_now",
238
+ action,
239
+ mode: entry.mode,
240
+ nonDefaultRoute,
241
+ authority: metadataOnly ? "live_metadata" : "accepted_term",
242
+ ...term && { term },
243
+ entry,
244
+ revision: buy.revision,
245
+ ...constraints && { constraints }
246
+ };
247
+ }
248
+ function assessMediaBuyAction(input) {
249
+ const possibility = assessProductAction(input.product, input.action);
250
+ const promise = assessProposalAction(input.buy?.accepted_proposal ?? input.proposal, input.action);
251
+ const availability = assessActionAvailability(input.buy, input.action, input);
252
+ return { action: input.action, possibility, promise, availability };
253
+ }
254
+ function refreshMediaBuyActions(buy, details) {
255
+ if (!details || typeof details !== "object" || !("currently_available_actions" in details) || details.currently_available_actions === void 0)
256
+ return buy;
257
+ const entries = details.currently_available_actions;
258
+ if ((0, import_action_contracts.liveActionIssues)(entries).length) throw new TypeError("Invalid ACTION_NOT_ALLOWED action echo.");
259
+ return { ...buy, available_actions: structuredClone(entries) };
260
+ }
261
+ function preflightMediaBuyActions(buy, request, options = {}) {
262
+ const assessmentBuy = buy;
263
+ buy = (0, import_action_contracts.withActionProposal)(buy, options);
264
+ const shapeIssue = (0, import_mutations.mutationShapeIssue)(request);
265
+ if (shapeIssue) return { ok: false, assessments: [], message: `Invalid mutation field shape at ${shapeIssue}.` };
266
+ const decomposition = (0, import_mutations.decomposeUpdateMediaBuy)(buy, request);
267
+ const unresolvedField = (0, import_mutations.hasUnmappedMutation)(request, decomposition);
268
+ if (unresolvedField)
269
+ return {
270
+ ok: false,
271
+ assessments: [],
272
+ message: "At least one requested field has no supported action mapping; do not submit a partial mutation."
273
+ };
274
+ if (!decomposition.actions.length)
275
+ return { ok: false, assessments: [], message: "No recognized mutation could be assessed." };
276
+ const assessments = decomposition.actions.map(
277
+ ({ action }) => assessActionAvailability(assessmentBuy, action, { ...options, request })
278
+ );
279
+ if (assessments.every(
280
+ (a) => a.status === "available_now"
281
+ )) {
282
+ if (options.task !== "update_media_buy" && new Set(assessments.map((a) => a.nonDefaultRoute ?? "update_media_buy")).size > 1)
283
+ return {
284
+ ok: false,
285
+ assessments,
286
+ message: "The requested actions declare different compact tasks. Pass task: update_media_buy to assess the whole mutation through the compatibility facade."
287
+ };
288
+ return { ok: true, assessments };
289
+ }
290
+ return { ok: false, assessments };
291
+ }
292
+ // Annotate the CommonJS export names for ESM import in node:
293
+ 0 && (module.exports = {
294
+ assessActionAvailability,
295
+ assessMediaBuyAction,
296
+ assessProductAction,
297
+ assessProposalAction,
298
+ preflightMediaBuyActions,
299
+ refreshMediaBuyActions
300
+ });
@@ -0,0 +1,284 @@
1
+ import {
2
+ actionAllowedStatuses,
3
+ changeTermIssues,
4
+ mediaBuyActionTasks,
5
+ productTemplateIssues,
6
+ slaWithin,
7
+ findProductAction,
8
+ NON_TERMINAL_ACTION_STATUSES,
9
+ liveActionIssues,
10
+ liveActionFitsVersion,
11
+ supportsChangeTermIdentity,
12
+ withActionProposal,
13
+ packageActionStatus
14
+ } from "./action-contracts.mjs";
15
+ import { evaluateChangeTermConstraints } from "./action-constraints.mjs";
16
+ import { decomposeUpdateMediaBuy, hasUnmappedMutation, mutationShapeIssue } from "./mutations.mjs";
17
+ function assessProductAction(product, action) {
18
+ if (product?.allowed_actions === void 0)
19
+ return { status: "unknown", binding: false, message: "Product action information is absent." };
20
+ if (productTemplateIssues(product.allowed_actions).length)
21
+ return { status: "unknown", binding: false, message: "Product action information is invalid or ambiguous." };
22
+ const template = findProductAction(product.allowed_actions, action);
23
+ return template ? { status: "possible", binding: false, template } : { status: "unsupported", binding: false };
24
+ }
25
+ function assessProposalAction(proposal, action) {
26
+ const terms = proposal?.commercial_terms?.change_terms;
27
+ if (terms === void 0) return { status: "unknown", message: "Proposal change terms are absent." };
28
+ if (changeTermIssues(terms).length)
29
+ return { status: "unknown", message: "Proposal change terms are invalid or ambiguous." };
30
+ const term = terms.find((t) => t.action === action);
31
+ return term ? { status: "promised", term } : { status: "not_negotiated" };
32
+ }
33
+ function assessActionAvailability(buy, action, options = {}) {
34
+ const deny = (reason, message, certainty = "blocked", extra = {}) => ({ status: "currently_unavailable", action, reason, message, certainty, ...extra });
35
+ if (options.request !== void 0 && mutationShapeIssue(options.request))
36
+ return deny(
37
+ "condition_unresolved",
38
+ "Invalid mutation field shape; validate against the selected wire schema.",
39
+ "unknown"
40
+ );
41
+ if (!buy) return deny("condition_unresolved", "Current MediaBuy state is missing.", "unknown");
42
+ if (options.request?.packages?.length) {
43
+ const requested = options.request.packages.map((p) => p.package_id);
44
+ const current = buy.packages?.map((p) => p.package_id);
45
+ if (!current || new Set(requested).size !== requested.length || new Set(current).size !== current.length || requested.some((id) => !id || !current.includes(id)))
46
+ return deny(
47
+ "condition_unresolved",
48
+ "Package identities or current package state are missing or ambiguous.",
49
+ "unknown"
50
+ );
51
+ }
52
+ if (buy.accepted_proposal === void 0 && options.proposal !== void 0) {
53
+ const supplied = options.proposal;
54
+ const linked = buy.accepted_proposal_id !== void 0 && supplied.proposal_id === buy.accepted_proposal_id || buy.media_buy_id !== void 0 && supplied.media_buy_id === buy.media_buy_id;
55
+ if (!linked || supplied.proposal_status !== "accepted")
56
+ return deny(
57
+ "condition_unresolved",
58
+ "The separately supplied snapshot must be accepted and explicitly linked to this MediaBuy.",
59
+ "unknown"
60
+ );
61
+ }
62
+ buy = withActionProposal(buy, options);
63
+ const decomposition = options.request ? decomposeUpdateMediaBuy(buy, options.request) : void 0;
64
+ if (options.request && decomposition && hasUnmappedMutation(options.request, decomposition))
65
+ return deny(
66
+ "condition_unresolved",
67
+ "At least one requested field has no supported action mapping; executable-now assessment requires a fully mapped request.",
68
+ "unknown"
69
+ );
70
+ const metadataOnly = action === "update_name";
71
+ const proposal = buy.accepted_proposal;
72
+ const terms = proposal?.commercial_terms?.change_terms;
73
+ if (terms === void 0 && !metadataOnly)
74
+ return deny("condition_unresolved", "Accepted change rights are unknown.", "unknown", {
75
+ compat: {
76
+ reason: "no_change_terms",
77
+ message: "Legacy action hints and opaque references do not establish a negotiated change right."
78
+ }
79
+ });
80
+ if (!mediaBuyActionTasks(action).length)
81
+ return deny(
82
+ "condition_unresolved",
83
+ "A canonical action cannot be inferred from this legacy or incomplete mutation state.",
84
+ "unknown"
85
+ );
86
+ if (proposal !== void 0 && buy.accepted_proposal_id !== void 0 && proposal.proposal_id !== buy.accepted_proposal_id || proposal?.media_buy_id !== void 0 && proposal.media_buy_id !== buy.media_buy_id || proposal?.proposal_status !== void 0 && proposal.proposal_status !== "accepted")
87
+ return deny("condition_unresolved", "The supplied proposal is not the current accepted snapshot.", "unknown");
88
+ const promise = assessProposalAction(proposal, action);
89
+ if (!metadataOnly && promise.status === "unknown") return deny("condition_unresolved", promise.message, "unknown");
90
+ if (!metadataOnly && promise.status === "not_negotiated")
91
+ return deny("not_supported_on_buy", "This action was not negotiated in the accepted proposal.");
92
+ const term = promise.status === "promised" ? promise.term : void 0;
93
+ const packageLifecycle = ["pause", "resume"].includes(action) && options.request?.packages?.filter((p) => p.paused !== void 0 && (p.paused ? "pause" : "resume") === action);
94
+ const scopedLifecycle = packageLifecycle && packageLifecycle.length > 0 && options.request?.paused === void 0;
95
+ const packageControlStatuses = scopedLifecycle ? [...actionAllowedStatuses({ action: "pause" }), ...actionAllowedStatuses({ action: "resume" })] : [];
96
+ const allowedStatuses = metadataOnly ? [...NON_TERMINAL_ACTION_STATUSES] : scopedLifecycle ? NON_TERMINAL_ACTION_STATUSES.filter(
97
+ (status) => term?.allowed_statuses ? term.allowed_statuses.includes(status) : packageControlStatuses.includes(status)
98
+ ) : actionAllowedStatuses(term);
99
+ for (const pkg of packageLifecycle || []) {
100
+ const current = buy.packages?.find((p) => p.package_id === pkg.package_id);
101
+ const status = packageActionStatus(current);
102
+ if (!status) return deny("condition_unresolved", "Current package lifecycle state is missing.", "unknown");
103
+ if (!actionAllowedStatuses({ action }).includes(status))
104
+ return deny("wrong_status", "The action is not meaningful in the current package status.");
105
+ }
106
+ if (buy.status === void 0) return deny("condition_unresolved", "Current MediaBuy status is missing.", "unknown");
107
+ if (!allowedStatuses.includes(buy.status))
108
+ return deny("wrong_status", "The negotiated action is latent in the current status.", "blocked", {
109
+ allowedStatuses
110
+ });
111
+ if (options.request?.revision !== void 0 && (buy.revision === void 0 || options.request.revision !== buy.revision))
112
+ return deny("condition_unresolved", "Refresh the MediaBuy revision and reassess before submitting.", "unknown", {
113
+ code: "CONFLICT"
114
+ });
115
+ if (term?.conditions?.length)
116
+ return deny(
117
+ "condition_unresolved",
118
+ "Opaque conditions require seller evaluation; their identifiers grant no authority.",
119
+ "unknown"
120
+ );
121
+ const entries = buy.available_actions;
122
+ if (entries === void 0)
123
+ return deny(
124
+ "condition_unresolved",
125
+ "A current structured action projection is required; legacy hints have no mode or term identity.",
126
+ "unknown"
127
+ );
128
+ if (liveActionIssues(entries).length)
129
+ return deny("condition_unresolved", "The live action projection is invalid or ambiguous.", "unknown");
130
+ const entry = entries.find((e) => e.action === action);
131
+ if (options.adcpVersion && entry && !liveActionFitsVersion(entry, options.adcpVersion))
132
+ return deny(
133
+ "condition_unresolved",
134
+ "The action uses metadata introduced after the supplied seller version.",
135
+ "unknown"
136
+ );
137
+ if (!entry)
138
+ return deny("not_supported_on_buy", "The seller has not made this negotiated action available now.", "unknown");
139
+ if (!metadataOnly && options.adcpVersion && !supportsChangeTermIdentity(options.adcpVersion))
140
+ return deny(
141
+ "condition_unresolved",
142
+ "The supplied seller version cannot link accepted change terms; legacy terms_ref remains opaque.",
143
+ "unknown"
144
+ );
145
+ if (!metadataOnly && (entry.change_term_id === void 0 || entry.change_term_id !== term.term_id))
146
+ return deny("condition_unresolved", "The live action does not identify its accepted change term.", "unknown");
147
+ if (options.termsRefIsAlias && entry.change_term_id !== void 0 && entry.terms_ref !== void 0 && entry.terms_ref !== entry.change_term_id)
148
+ return deny("condition_unresolved", "The deliberately emitted term aliases disagree.", "unknown");
149
+ if (metadataOnly && entry.change_term_id !== void 0)
150
+ return deny("condition_unresolved", "Metadata-only actions cannot identify a commercial change term.", "unknown");
151
+ if (!["self_serve", "conditional_self_serve", "seller_managed", "requires_approval"].includes(entry.mode))
152
+ return deny("condition_unresolved", "Unknown live action mode; refresh the seller declaration.", "unknown");
153
+ if (term && (entry.mode !== term.service_mode || !slaWithin(term.processing_sla, entry.sla)))
154
+ return deny("mode_mismatch", "The live mode or SLA exceeds the accepted commitment.");
155
+ if (entry.task !== void 0 && !mediaBuyActionTasks(action).includes(entry.task))
156
+ return deny("mode_mismatch", "The live action has no compatible canonical task.");
157
+ const task = entry.task ?? "update_media_buy";
158
+ const nonDefaultRoute = task === "update_media_buy" ? void 0 : task;
159
+ if (options.task !== void 0 && options.task !== "update_media_buy" && options.task !== task)
160
+ return deny(
161
+ "mode_mismatch",
162
+ entry.task === void 0 ? "This task-less entry uses update_media_buy. Refresh get_media_buys for a canonical task projection before changing routes." : "Use the task declared by the live action; seller_managed uses its standard async lifecycle.",
163
+ "blocked",
164
+ { nonDefaultRoute }
165
+ );
166
+ const mutations = decomposition?.mutations ?? [];
167
+ if (entry.applicable_package_ids !== void 0) {
168
+ const ids = entry.applicable_package_ids;
169
+ if (!Array.isArray(ids) || !ids.length || ids.some((id) => typeof id !== "string" || !id.length) || new Set(ids).size !== ids.length)
170
+ return deny("condition_unresolved", "Invalid live package scope.", "unknown");
171
+ const relevant = mutations.filter((m) => m.action === action);
172
+ if (!relevant.length)
173
+ return deny(
174
+ "condition_unresolved",
175
+ "Supply the requested packages to evaluate the live package scope.",
176
+ "unknown"
177
+ );
178
+ if (relevant.some((m) => m.scope !== "package" || !m.package_id || !ids.includes(m.package_id)))
179
+ return deny("not_supported_on_buy", "The action is not available for every requested package.");
180
+ }
181
+ let constraints;
182
+ if (term && (term.constraints !== void 0 || options.request)) {
183
+ constraints = options.request ? evaluateChangeTermConstraints(term, buy, options.request, mutations, options) : {
184
+ status: "unknown",
185
+ constraint: "request",
186
+ path: action,
187
+ message: "Supply the requested mutation to evaluate portable bounds."
188
+ };
189
+ if (constraints.status !== "satisfied")
190
+ return deny(
191
+ "condition_unresolved",
192
+ constraints.message,
193
+ constraints.status === "unknown" ? "unknown" : "blocked",
194
+ {
195
+ constraints,
196
+ ...constraints.status === "exceeded" && { code: "REQUOTE_REQUIRED" }
197
+ }
198
+ );
199
+ }
200
+ if (action === "add_packages" && options.request?.new_packages) {
201
+ const index = options.request.new_packages.findIndex(
202
+ (pkg) => pkg !== null && typeof pkg === "object" && ["budget", "min_spend_target", "daily_budget_cap"].some(
203
+ (field) => Object.hasOwn(pkg, field) && pkg[field] !== void 0
204
+ )
205
+ );
206
+ if (index !== -1)
207
+ return deny(
208
+ "condition_unresolved",
209
+ "Added-package monetary commitments cannot be assessed from package-count rights alone.",
210
+ "unknown",
211
+ {
212
+ constraints: {
213
+ status: "unknown",
214
+ constraint: "added_package_budget",
215
+ path: `new_packages[${index}]`,
216
+ message: "Supply a verified commercial amendment for the added package commitments; their budget baseline is not represented by this portable patch assessment."
217
+ }
218
+ }
219
+ );
220
+ }
221
+ return {
222
+ status: "available_now",
223
+ action,
224
+ mode: entry.mode,
225
+ nonDefaultRoute,
226
+ authority: metadataOnly ? "live_metadata" : "accepted_term",
227
+ ...term && { term },
228
+ entry,
229
+ revision: buy.revision,
230
+ ...constraints && { constraints }
231
+ };
232
+ }
233
+ function assessMediaBuyAction(input) {
234
+ const possibility = assessProductAction(input.product, input.action);
235
+ const promise = assessProposalAction(input.buy?.accepted_proposal ?? input.proposal, input.action);
236
+ const availability = assessActionAvailability(input.buy, input.action, input);
237
+ return { action: input.action, possibility, promise, availability };
238
+ }
239
+ function refreshMediaBuyActions(buy, details) {
240
+ if (!details || typeof details !== "object" || !("currently_available_actions" in details) || details.currently_available_actions === void 0)
241
+ return buy;
242
+ const entries = details.currently_available_actions;
243
+ if (liveActionIssues(entries).length) throw new TypeError("Invalid ACTION_NOT_ALLOWED action echo.");
244
+ return { ...buy, available_actions: structuredClone(entries) };
245
+ }
246
+ function preflightMediaBuyActions(buy, request, options = {}) {
247
+ const assessmentBuy = buy;
248
+ buy = withActionProposal(buy, options);
249
+ const shapeIssue = mutationShapeIssue(request);
250
+ if (shapeIssue) return { ok: false, assessments: [], message: `Invalid mutation field shape at ${shapeIssue}.` };
251
+ const decomposition = decomposeUpdateMediaBuy(buy, request);
252
+ const unresolvedField = hasUnmappedMutation(request, decomposition);
253
+ if (unresolvedField)
254
+ return {
255
+ ok: false,
256
+ assessments: [],
257
+ message: "At least one requested field has no supported action mapping; do not submit a partial mutation."
258
+ };
259
+ if (!decomposition.actions.length)
260
+ return { ok: false, assessments: [], message: "No recognized mutation could be assessed." };
261
+ const assessments = decomposition.actions.map(
262
+ ({ action }) => assessActionAvailability(assessmentBuy, action, { ...options, request })
263
+ );
264
+ if (assessments.every(
265
+ (a) => a.status === "available_now"
266
+ )) {
267
+ if (options.task !== "update_media_buy" && new Set(assessments.map((a) => a.nonDefaultRoute ?? "update_media_buy")).size > 1)
268
+ return {
269
+ ok: false,
270
+ assessments,
271
+ message: "The requested actions declare different compact tasks. Pass task: update_media_buy to assess the whole mutation through the compatibility facade."
272
+ };
273
+ return { ok: true, assessments };
274
+ }
275
+ return { ok: false, assessments };
276
+ }
277
+ export {
278
+ assessActionAvailability,
279
+ assessMediaBuyAction,
280
+ assessProductAction,
281
+ assessProposalAction,
282
+ preflightMediaBuyActions,
283
+ refreshMediaBuyActions
284
+ };