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

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 (657) hide show
  1. package/README.md +2 -0
  2. package/bin/adcp-storyboard-summary.js +286 -0
  3. package/bin/adcp.js +221 -10
  4. package/dist/lib/conformance/schemaLoader.d.mts +1 -1
  5. package/dist/lib/conformance/schemaLoader.d.ts +1 -1
  6. package/dist/lib/core/AgentClient.d.mts +10 -4
  7. package/dist/lib/core/AgentClient.d.ts +10 -4
  8. package/dist/lib/core/AgentClient.js +9 -0
  9. package/dist/lib/core/AgentClient.mjs +9 -0
  10. package/dist/lib/core/AsyncHandler.d.mts +3 -0
  11. package/dist/lib/core/AsyncHandler.d.ts +3 -0
  12. package/dist/lib/core/AsyncHandler.js +3 -0
  13. package/dist/lib/core/AsyncHandler.mjs +3 -0
  14. package/dist/lib/core/ConversationTypes.d.mts +29 -0
  15. package/dist/lib/core/ConversationTypes.d.ts +29 -0
  16. package/dist/lib/core/SingleAgentClient.d.mts +9 -2
  17. package/dist/lib/core/SingleAgentClient.d.ts +9 -2
  18. package/dist/lib/core/SingleAgentClient.js +66 -18
  19. package/dist/lib/core/SingleAgentClient.mjs +68 -18
  20. package/dist/lib/core/TaskExecutor.d.mts +13 -1
  21. package/dist/lib/core/TaskExecutor.d.ts +13 -1
  22. package/dist/lib/core/TaskExecutor.js +216 -18
  23. package/dist/lib/core/TaskExecutor.mjs +216 -19
  24. package/dist/lib/discovery/adagents-redirects.d.mts +5 -1
  25. package/dist/lib/discovery/adagents-redirects.d.ts +5 -1
  26. package/dist/lib/discovery/adagents-redirects.js +10 -3
  27. package/dist/lib/discovery/adagents-redirects.mjs +10 -3
  28. package/dist/lib/discovery/types.d.mts +42 -0
  29. package/dist/lib/discovery/types.d.ts +42 -0
  30. package/dist/lib/index.d.mts +8 -3
  31. package/dist/lib/index.d.ts +8 -3
  32. package/dist/lib/index.js +12 -1
  33. package/dist/lib/index.mjs +11 -1
  34. package/dist/lib/media-buy/action-assessment.d.mts +77 -0
  35. package/dist/lib/media-buy/action-assessment.d.ts +77 -0
  36. package/dist/lib/media-buy/action-assessment.js +300 -0
  37. package/dist/lib/media-buy/action-assessment.mjs +284 -0
  38. package/dist/lib/media-buy/action-constraints.d.mts +9 -0
  39. package/dist/lib/media-buy/action-constraints.d.ts +9 -0
  40. package/dist/lib/media-buy/action-constraints.js +170 -0
  41. package/dist/lib/media-buy/action-constraints.mjs +146 -0
  42. package/dist/lib/media-buy/action-contracts.d.mts +40 -0
  43. package/dist/lib/media-buy/action-contracts.d.ts +40 -0
  44. package/dist/lib/media-buy/action-contracts.js +304 -0
  45. package/dist/lib/media-buy/action-contracts.mjs +267 -0
  46. package/dist/lib/media-buy/action-metadata.generated.d.mts +37 -0
  47. package/dist/lib/media-buy/action-metadata.generated.d.ts +37 -0
  48. package/dist/lib/media-buy/action-metadata.generated.js +128 -0
  49. package/dist/lib/media-buy/action-metadata.generated.mjs +101 -0
  50. package/dist/lib/media-buy/action-types.d.mts +106 -0
  51. package/dist/lib/media-buy/action-types.d.ts +106 -0
  52. package/dist/lib/{types/v3-1-beta/tools.generated.js → media-buy/action-types.js} +2 -2
  53. package/dist/lib/media-buy/actions.d.mts +6 -0
  54. package/dist/lib/media-buy/actions.d.ts +6 -0
  55. package/dist/lib/media-buy/actions.js +38 -0
  56. package/dist/lib/media-buy/actions.mjs +9 -0
  57. package/dist/lib/media-buy/available-actions.d.mts +2 -1
  58. package/dist/lib/media-buy/available-actions.d.ts +2 -1
  59. package/dist/lib/media-buy/available-actions.js +4 -3
  60. package/dist/lib/media-buy/available-actions.mjs +4 -3
  61. package/dist/lib/media-buy/compatibility.js +3 -0
  62. package/dist/lib/media-buy/compatibility.mjs +3 -0
  63. package/dist/lib/media-buy/index.d.mts +4 -0
  64. package/dist/lib/media-buy/index.d.ts +4 -0
  65. package/dist/lib/media-buy/index.js +3 -1
  66. package/dist/lib/media-buy/index.mjs +1 -0
  67. package/dist/lib/media-buy/legacy-action-ids.d.mts +1 -0
  68. package/dist/lib/media-buy/legacy-action-ids.d.ts +1 -0
  69. package/dist/lib/media-buy/legacy-action-ids.js +50 -0
  70. package/dist/lib/media-buy/legacy-action-ids.mjs +26 -0
  71. package/dist/lib/media-buy/mutations.d.mts +70 -0
  72. package/dist/lib/media-buy/mutations.d.ts +70 -0
  73. package/dist/lib/media-buy/mutations.js +525 -0
  74. package/dist/lib/media-buy/mutations.mjs +498 -0
  75. package/dist/lib/media-buy/preflight.d.mts +20 -69
  76. package/dist/lib/media-buy/preflight.d.ts +20 -69
  77. package/dist/lib/media-buy/preflight.js +100 -336
  78. package/dist/lib/media-buy/preflight.mjs +111 -333
  79. package/dist/lib/media-buy/targeting-input.d.mts +7 -4
  80. package/dist/lib/media-buy/targeting-input.d.ts +7 -4
  81. package/dist/lib/media-buy/types.d.mts +55 -7
  82. package/dist/lib/media-buy/types.d.ts +55 -7
  83. package/dist/lib/net/ssrf-fetch.js +47 -21
  84. package/dist/lib/net/ssrf-fetch.mjs +47 -21
  85. package/dist/lib/protocols/rawResponseCapture.d.mts +12 -0
  86. package/dist/lib/protocols/rawResponseCapture.d.ts +12 -0
  87. package/dist/lib/protocols/rawResponseCapture.js +33 -3
  88. package/dist/lib/protocols/rawResponseCapture.mjs +32 -3
  89. package/dist/lib/registry/index.d.mts +3 -0
  90. package/dist/lib/registry/index.d.ts +3 -0
  91. package/dist/lib/registry/index.js +8 -0
  92. package/dist/lib/registry/index.mjs +8 -0
  93. package/dist/lib/registry/types.d.mts +2 -1
  94. package/dist/lib/registry/types.d.ts +2 -1
  95. package/dist/lib/registry/types.generated.d.mts +377 -9
  96. package/dist/lib/registry/types.generated.d.ts +377 -9
  97. package/dist/lib/reporting/evidence.d.mts +1 -0
  98. package/dist/lib/reporting/evidence.d.ts +1 -0
  99. package/dist/lib/reporting/evidence.js +32 -3
  100. package/dist/lib/reporting/evidence.mjs +31 -3
  101. package/dist/lib/reporting/ledger/handler.d.mts +51 -1
  102. package/dist/lib/reporting/ledger/handler.d.ts +51 -1
  103. package/dist/lib/reporting/ledger/handler.js +306 -38
  104. package/dist/lib/reporting/ledger/handler.mjs +304 -37
  105. package/dist/lib/reporting/ledger/health.d.mts +12 -0
  106. package/dist/lib/reporting/ledger/health.d.ts +12 -0
  107. package/dist/lib/reporting/ledger/health.js +15 -2
  108. package/dist/lib/reporting/ledger/health.mjs +13 -1
  109. package/dist/lib/reporting/ledger/index.d.mts +3 -0
  110. package/dist/lib/reporting/ledger/index.d.ts +3 -0
  111. package/dist/lib/reporting/ledger/index.js +7 -1
  112. package/dist/lib/reporting/ledger/index.mjs +3 -0
  113. package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
  114. package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
  115. package/dist/lib/reporting/ledger/lifecycle.js +244 -37
  116. package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
  117. package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
  118. package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
  119. package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
  120. package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
  121. package/dist/lib/reporting/ledger/managed.d.mts +355 -0
  122. package/dist/lib/reporting/ledger/managed.d.ts +355 -0
  123. package/dist/lib/reporting/ledger/managed.js +661 -0
  124. package/dist/lib/reporting/ledger/managed.mjs +633 -0
  125. package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
  126. package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
  127. package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
  128. package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
  129. package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
  130. package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
  131. package/dist/lib/reporting/ledger/postgres.js +1153 -21
  132. package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
  133. package/dist/lib/reporting/ledger/producer.d.mts +8 -0
  134. package/dist/lib/reporting/ledger/producer.d.ts +8 -0
  135. package/dist/lib/reporting/ledger/producer.js +146 -52
  136. package/dist/lib/reporting/ledger/producer.mjs +146 -51
  137. package/dist/lib/reporting/ledger/types.d.mts +358 -1
  138. package/dist/lib/reporting/ledger/types.d.ts +358 -1
  139. package/dist/lib/reporting/ledger/types.js +3 -0
  140. package/dist/lib/reporting/ledger/types.mjs +2 -0
  141. package/dist/lib/reporting/service/conformance.d.mts +35 -0
  142. package/dist/lib/reporting/service/conformance.d.ts +35 -0
  143. package/dist/lib/reporting/service/conformance.js +89 -0
  144. package/dist/lib/reporting/service/conformance.mjs +68 -0
  145. package/dist/lib/reporting/service/index.d.mts +182 -0
  146. package/dist/lib/reporting/service/index.d.ts +182 -0
  147. package/dist/lib/reporting/service/index.js +793 -0
  148. package/dist/lib/reporting/service/index.mjs +787 -0
  149. package/dist/lib/reporting/source/index.d.mts +2 -1
  150. package/dist/lib/reporting/source/index.d.ts +2 -1
  151. package/dist/lib/reporting/source/index.js +16 -3
  152. package/dist/lib/reporting/source/index.mjs +12 -1
  153. package/dist/lib/reporting/source/inline.d.mts +88 -1
  154. package/dist/lib/reporting/source/inline.d.ts +88 -1
  155. package/dist/lib/reporting/source/inline.js +1161 -163
  156. package/dist/lib/reporting/source/inline.mjs +1166 -163
  157. package/dist/lib/reporting/source/manifest.js +12 -7
  158. package/dist/lib/reporting/source/manifest.mjs +12 -7
  159. package/dist/lib/reporting/source/source.d.mts +26 -0
  160. package/dist/lib/reporting/source/source.d.ts +26 -0
  161. package/dist/lib/reporting/source/source.js +71 -2
  162. package/dist/lib/reporting/source/source.mjs +65 -1
  163. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  164. package/dist/lib/server/create-adcp-server.d.mts +18 -0
  165. package/dist/lib/server/create-adcp-server.d.ts +18 -0
  166. package/dist/lib/server/create-adcp-server.js +52 -2
  167. package/dist/lib/server/create-adcp-server.mjs +52 -2
  168. package/dist/lib/server/decisioning/account.d.mts +1 -1
  169. package/dist/lib/server/decisioning/account.d.ts +1 -1
  170. package/dist/lib/server/decisioning/index.d.mts +1 -0
  171. package/dist/lib/server/decisioning/index.d.ts +1 -0
  172. package/dist/lib/server/decisioning/platform.d.mts +3 -0
  173. package/dist/lib/server/decisioning/platform.d.ts +3 -0
  174. package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
  175. package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
  176. package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
  177. package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
  178. package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
  179. package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
  180. package/dist/lib/server/index.d.mts +4 -2
  181. package/dist/lib/server/index.d.ts +4 -2
  182. package/dist/lib/server/index.js +5 -0
  183. package/dist/lib/server/index.mjs +4 -0
  184. package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
  185. package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
  186. package/dist/lib/server/media-buy-action-resolver.js +297 -0
  187. package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
  188. package/dist/lib/server/media-buy-actions.d.mts +7 -8
  189. package/dist/lib/server/media-buy-actions.d.ts +7 -8
  190. package/dist/lib/server/media-buy-actions.js +57 -14
  191. package/dist/lib/server/media-buy-actions.mjs +63 -14
  192. package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
  193. package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
  194. package/dist/lib/server/notification-subscriptions/index.js +2 -0
  195. package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
  196. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
  197. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
  198. package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
  199. package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
  200. package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
  201. package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
  202. package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
  203. package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
  204. package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
  205. package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
  206. package/dist/lib/server/webhook-emitter.d.mts +40 -5
  207. package/dist/lib/server/webhook-emitter.d.ts +40 -5
  208. package/dist/lib/server/webhook-emitter.js +23 -12
  209. package/dist/lib/server/webhook-emitter.mjs +23 -12
  210. package/dist/lib/storage/interfaces.d.mts +14 -2
  211. package/dist/lib/storage/interfaces.d.ts +14 -2
  212. package/dist/lib/supply-path/evaluate.d.mts +17 -0
  213. package/dist/lib/supply-path/evaluate.d.ts +17 -0
  214. package/dist/lib/supply-path/evaluate.js +436 -0
  215. package/dist/lib/supply-path/evaluate.mjs +407 -0
  216. package/dist/lib/supply-path/fetch-evidence.d.mts +36 -0
  217. package/dist/lib/supply-path/fetch-evidence.d.ts +36 -0
  218. package/dist/lib/supply-path/fetch-evidence.js +293 -0
  219. package/dist/lib/supply-path/fetch-evidence.mjs +268 -0
  220. package/dist/lib/supply-path/index.d.mts +6 -0
  221. package/dist/lib/supply-path/index.d.ts +6 -0
  222. package/dist/lib/supply-path/index.js +49 -0
  223. package/dist/lib/supply-path/index.mjs +23 -0
  224. package/dist/lib/supply-path/products.d.mts +41 -0
  225. package/dist/lib/supply-path/products.d.ts +41 -0
  226. package/dist/lib/supply-path/products.js +228 -0
  227. package/dist/lib/supply-path/products.mjs +204 -0
  228. package/dist/lib/supply-path/revocations.d.mts +55 -0
  229. package/dist/lib/supply-path/revocations.d.ts +55 -0
  230. package/dist/lib/supply-path/revocations.js +127 -0
  231. package/dist/lib/supply-path/revocations.mjs +99 -0
  232. package/dist/lib/supply-path/types.d.mts +168 -0
  233. package/dist/lib/supply-path/types.d.ts +168 -0
  234. package/dist/lib/supply-path/types.js +16 -0
  235. package/dist/lib/supply-path/types.mjs +0 -0
  236. package/dist/lib/supply-path/validation.d.mts +10 -0
  237. package/dist/lib/supply-path/validation.d.ts +10 -0
  238. package/dist/lib/supply-path/validation.js +152 -0
  239. package/dist/lib/supply-path/validation.mjs +122 -0
  240. package/dist/lib/supply-path/verify.d.mts +25 -0
  241. package/dist/lib/supply-path/verify.d.ts +25 -0
  242. package/dist/lib/supply-path/verify.js +218 -0
  243. package/dist/lib/supply-path/verify.mjs +203 -0
  244. package/dist/lib/testing/compliance/comply.d.mts +9 -3
  245. package/dist/lib/testing/compliance/comply.d.ts +9 -3
  246. package/dist/lib/testing/compliance/comply.js +158 -3
  247. package/dist/lib/testing/compliance/comply.mjs +159 -4
  248. package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
  249. package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
  250. package/dist/lib/testing/compliance/summary.js +10 -1
  251. package/dist/lib/testing/compliance/summary.mjs +10 -1
  252. package/dist/lib/testing/index.d.mts +1 -1
  253. package/dist/lib/testing/index.d.ts +1 -1
  254. package/dist/lib/testing/index.js +2 -0
  255. package/dist/lib/testing/index.mjs +3 -1
  256. package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
  257. package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
  258. package/dist/lib/testing/storyboard/agent-routing.js +75 -13
  259. package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
  260. package/dist/lib/testing/storyboard/index.d.mts +1 -0
  261. package/dist/lib/testing/storyboard/index.d.ts +1 -0
  262. package/dist/lib/testing/storyboard/index.js +3 -0
  263. package/dist/lib/testing/storyboard/index.mjs +2 -0
  264. package/dist/lib/testing/storyboard/junit.d.mts +1 -1
  265. package/dist/lib/testing/storyboard/junit.d.ts +1 -1
  266. package/dist/lib/testing/storyboard/junit.js +21 -2
  267. package/dist/lib/testing/storyboard/junit.mjs +21 -2
  268. package/dist/lib/testing/storyboard/probes.d.mts +130 -0
  269. package/dist/lib/testing/storyboard/probes.d.ts +130 -0
  270. package/dist/lib/testing/storyboard/probes.js +682 -10
  271. package/dist/lib/testing/storyboard/probes.mjs +683 -3
  272. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
  273. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
  274. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
  275. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
  276. package/dist/lib/testing/storyboard/request-signing/grader.js +65 -31
  277. package/dist/lib/testing/storyboard/request-signing/grader.mjs +62 -30
  278. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
  279. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
  280. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
  281. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
  282. package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
  283. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
  284. package/dist/lib/testing/storyboard/runner.d.mts +103 -0
  285. package/dist/lib/testing/storyboard/runner.d.ts +103 -0
  286. package/dist/lib/testing/storyboard/runner.js +1090 -268
  287. package/dist/lib/testing/storyboard/runner.mjs +1096 -261
  288. package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
  289. package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
  290. package/dist/lib/testing/storyboard/seeding.js +55 -24
  291. package/dist/lib/testing/storyboard/seeding.mjs +55 -24
  292. package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
  293. package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
  294. package/dist/lib/testing/storyboard/test-kit.js +8 -2
  295. package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
  296. package/dist/lib/testing/storyboard/types.d.mts +132 -10
  297. package/dist/lib/testing/storyboard/types.d.ts +132 -10
  298. package/dist/lib/testing/storyboard/types.js +17 -0
  299. package/dist/lib/testing/storyboard/types.mjs +16 -0
  300. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  301. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  302. package/dist/lib/testing/storyboard/validations.js +16 -0
  303. package/dist/lib/testing/storyboard/validations.mjs +16 -0
  304. package/dist/lib/testing/test-controller.d.mts +1 -1
  305. package/dist/lib/testing/test-controller.d.ts +1 -1
  306. package/dist/lib/types/buy-products.d.ts +71 -6
  307. package/dist/lib/types/control-media-buy.d.ts +25 -11
  308. package/dist/lib/types/core.generated.d.mts +69 -10
  309. package/dist/lib/types/core.generated.d.ts +69 -10
  310. package/dist/lib/types/create-media-buy.d.ts +71 -6
  311. package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
  312. package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
  313. package/dist/lib/types/index.d.mts +2 -2
  314. package/dist/lib/types/index.d.ts +2 -2
  315. package/dist/lib/types/schemas.generated.d.ts +8040 -8116
  316. package/dist/lib/types/schemas.generated.js +1074 -309
  317. package/dist/lib/types/schemas.generated.mjs +1068 -309
  318. package/dist/lib/types/tools.generated.d.mts +65 -6
  319. package/dist/lib/types/tools.generated.d.ts +65 -6
  320. package/dist/lib/types/update-media-buy.d.ts +71 -6
  321. package/dist/lib/utils/redact-secrets.d.mts +1 -1
  322. package/dist/lib/utils/redact-secrets.d.ts +1 -1
  323. package/dist/lib/utils/redact-secrets.js +1 -1
  324. package/dist/lib/utils/redact-secrets.mjs +1 -1
  325. package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
  326. package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
  327. package/dist/lib/v2/projection/cache-versions.js +1 -15
  328. package/dist/lib/v2/projection/cache-versions.mjs +1 -14
  329. package/dist/lib/v2/projection/canonical-properties.js +2 -2
  330. package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
  331. package/dist/lib/v2/projection/creative-delivery.d.mts +1 -1
  332. package/dist/lib/v2/projection/creative-delivery.d.ts +1 -1
  333. package/dist/lib/v2/projection/registry.d.mts +1 -1
  334. package/dist/lib/v2/projection/registry.d.ts +1 -1
  335. package/dist/lib/v2/projection/registry.js +2 -2
  336. package/dist/lib/v2/projection/registry.mjs +3 -3
  337. package/dist/lib/validation/schema-loader.js +7 -5
  338. package/dist/lib/validation/schema-loader.mjs +7 -5
  339. package/dist/lib/version.d.mts +5 -5
  340. package/dist/lib/version.d.ts +5 -5
  341. package/dist/lib/version.js +3 -8
  342. package/dist/lib/version.mjs +3 -8
  343. package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
  344. package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
  345. package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
  346. package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
  347. package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
  348. package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
  349. package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
  350. package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
  351. package/dist/lib/wholesale-feed-sync/sync.js +3 -1
  352. package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
  353. package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
  354. package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
  355. package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
  356. package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
  357. package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
  358. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
  359. package/docs/CLI.md +1 -1
  360. package/docs/TYPE-SUMMARY.md +118 -4
  361. package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
  362. package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
  363. package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
  364. package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
  365. package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
  366. package/docs/guides/EXISTING-PLATFORM.md +35 -0
  367. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +7 -3
  368. package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
  369. package/docs/guides/REPORTING-LEDGER.md +654 -3
  370. package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
  371. package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
  372. package/docs/guides/SUPPLY-PATH-VERIFICATION.md +101 -0
  373. package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
  374. package/docs/guides/idempotency-crash-recovery.md +4 -0
  375. package/docs/llms.txt +4 -2
  376. package/docs/migration-14.x-rc-worksheet.md +5 -5
  377. package/docs/migration-7.9-to-7.10.md +7 -5
  378. package/examples/README.md +19 -0
  379. package/examples/durable-buyer-writes/caller.ts +745 -0
  380. package/examples/durable-buyer-writes/worker.ts +240 -0
  381. package/examples/reliable-reporting-service/README.md +100 -0
  382. package/examples/seller-3.2-starter.ts +7 -8
  383. package/examples/supply-path-verification.ts +29 -0
  384. package/examples/targeting-input-existing-platform.ts +153 -0
  385. package/package.json +42 -29
  386. package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
  387. package/skills/cross-cutting.md +28 -11
  388. package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
  389. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  390. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
  391. package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
  392. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
  393. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  394. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
  395. package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
  396. package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
  397. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  398. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
  399. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  400. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
  401. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  402. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  403. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  404. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  405. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
  406. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
  407. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
  408. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  409. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  410. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  411. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
  412. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
  413. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
  414. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  415. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
  416. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  417. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  418. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
  419. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  420. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  421. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  422. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  423. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  424. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  425. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
  426. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  427. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  428. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  429. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  430. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  431. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  432. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  433. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
  434. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  435. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  436. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  437. package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
  438. package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
  439. package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
  440. package/compliance/cache/3.1.0-beta.7/index.json +0 -356
  441. package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
  442. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  443. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
  444. package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
  445. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
  446. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  447. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
  448. package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
  449. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
  450. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  451. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
  452. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  453. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
  454. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  455. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  456. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  457. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  458. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
  459. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
  460. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
  461. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  462. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  463. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  464. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
  465. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
  466. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
  467. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  468. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
  469. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  470. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  471. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
  472. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  473. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  474. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  475. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  476. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  477. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  478. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
  479. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  480. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  481. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  482. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  483. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  484. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  485. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  486. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
  487. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  488. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  489. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  490. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
  491. package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
  492. package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
  493. package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
  494. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
  495. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
  496. package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
  497. package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
  498. package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
  499. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
  500. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
  501. package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
  502. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
  503. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
  504. package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
  505. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
  506. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
  507. package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
  508. package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
  509. package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
  510. package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
  511. package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
  512. package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
  513. package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
  514. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
  515. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
  516. package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
  517. package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
  518. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
  519. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
  520. package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
  521. package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
  522. package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
  523. package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
  524. package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
  525. package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
  526. package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
  527. package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
  528. package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
  529. package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
  530. package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
  531. package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
  532. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
  533. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
  534. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
  535. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
  536. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
  537. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
  538. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
  539. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
  540. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
  541. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
  542. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
  543. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
  544. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
  545. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
  546. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
  547. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
  548. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
  549. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
  550. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
  551. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
  552. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
  553. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
  554. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
  555. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
  556. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
  557. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
  558. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
  559. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
  560. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
  561. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
  562. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
  563. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
  564. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
  565. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
  566. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
  567. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
  568. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
  569. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
  570. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
  571. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
  572. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
  573. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
  574. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
  575. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  576. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
  577. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
  578. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
  579. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
  580. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
  581. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
  582. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
  583. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
  584. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
  585. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
  586. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
  587. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
  588. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
  589. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
  590. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
  591. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
  592. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
  593. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
  594. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
  595. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
  596. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
  597. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
  598. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
  599. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
  600. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
  601. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
  602. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
  603. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
  604. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
  605. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
  606. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
  607. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
  608. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
  609. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
  610. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
  611. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
  612. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
  613. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
  614. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
  615. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
  616. package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
  617. package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
  618. package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
  619. package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
  620. package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
  621. package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
  622. package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
  623. package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
  624. package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
  625. package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
  626. package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
  627. package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
  628. package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
  629. package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
  630. package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
  631. package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
  632. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
  633. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
  634. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
  635. package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
  636. package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
  637. package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
  638. package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
  639. package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
  640. package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
  641. package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
  642. package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
  643. package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
  644. package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
  645. package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
  646. package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
  647. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
  648. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
  649. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
  650. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
  651. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
  652. package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
  653. package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
  654. package/dist/lib/types/v3-1-beta/index.mjs +0 -1
  655. package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
  656. package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
  657. /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
package/bin/adcp.js CHANGED
@@ -48,7 +48,14 @@ const {
48
48
  writeSummaryFile,
49
49
  printSoftFailBlock,
50
50
  defaultComplianceTimeoutSeconds,
51
+ escapeTerminalControlChars,
52
+ formatStepSkipLines,
53
+ formatStepVerdictLines,
54
+ isCoverageUnavailableStep,
55
+ unverifiedSigningCoverage,
56
+ parseRequestSigningFlags,
51
57
  } = require('./adcp-storyboard-summary.js');
58
+
52
59
  const { scheduleVersionCheck } = require('./adcp-version-check.js');
53
60
  const { formatStoryboardResultsAsJUnit } = require('../dist/lib/testing/storyboard/junit.js');
54
61
  const { ADCP_VERSION, LIBRARY_VERSION } = require('../dist/lib/version.js');
@@ -1166,6 +1173,12 @@ function parseAgentOptions(args) {
1166
1173
  ? args[invariantsIdx + 1]
1167
1174
  : null;
1168
1175
 
1176
+ // Request-signing vector knobs are captured here solely so their values are
1177
+ // excluded from `positionalArgs`. The authoritative parse (validation +
1178
+ // error exits) lives in `extractRequestSigningOptions(args)`.
1179
+ const signingTransportValue = readFlagValue(args, '--signing-transport');
1180
+ const signingSkipVectorsValue = readFlagValue(args, '--signing-skip-vectors');
1181
+
1169
1182
  const localAgentIdx = args.indexOf('--local-agent');
1170
1183
  const localAgentValue =
1171
1184
  localAgentIdx !== -1 && localAgentIdx + 1 < args.length && !args[localAgentIdx + 1].startsWith('--')
@@ -1239,6 +1252,8 @@ function parseAgentOptions(args) {
1239
1252
  webhookReceiverTlsCertValue,
1240
1253
  webhookReceiverTlsKeyValue,
1241
1254
  invariantsValue,
1255
+ signingTransportValue,
1256
+ signingSkipVectorsValue,
1242
1257
  localAgentValue,
1243
1258
  formatValue,
1244
1259
  summaryOutputValue,
@@ -2164,6 +2179,35 @@ WEBHOOK OPTIONS:
2164
2179
  direct child only).
2165
2180
  HTTP-on-the-wire — spec-compliant.
2166
2181
 
2182
+ REQUEST-SIGNING VECTOR OPTIONS (signed_requests storyboard):
2183
+ --signing-transport raw|mcp How the RFC 9421 conformance vectors are
2184
+ framed on the wire. NOT the same as
2185
+ --transport/--protocol, which selects how the
2186
+ storyboard itself talks to the agent. Default:
2187
+ inferred from the resolved protocol — an MCP
2188
+ run wraps each vector in a tools/call envelope
2189
+ (mcp); an A2A run reports the vectors
2190
+ signing_transport_unavailable (COVERAGE
2191
+ UNAVAILABLE; the track cannot pass) because
2192
+ the fixtures have no A2A framing. Pass raw for
2193
+ agents that
2194
+ expose AdCP tools as per-operation HTTP
2195
+ endpoints. Mirrors
2196
+ \`adcp grade request-signing --transport\`.
2197
+ --signing-skip-vectors IDS Comma-separated vector ids to skip (graded
2198
+ operator_skip), e.g.
2199
+ 025-jwk-alg-crv-mismatch. Unknown ids are
2200
+ rejected — a typo would otherwise skip
2201
+ nothing, silently.
2202
+ --signing-skip-rate-abuse Skip the rate-abuse vector, which floods
2203
+ cap+1 requests at the agent. Boolean: pass
2204
+ the bare flag (=false is rejected, not read
2205
+ as "off").
2206
+
2207
+ A run whose signing vectors were never dispatched exits 3 even though its
2208
+ steps are skip-shaped: nothing about the verifier was graded. --soft-fail
2209
+ reports it and exits 0.
2210
+
2167
2211
  PARALLEL DISPATCH OPTIONS:
2168
2212
  --parallel-dispatch Enable process-local concurrent dispatches
2169
2213
  for storyboards that require the
@@ -2762,6 +2806,42 @@ async function resolveFileComplianceRunOptions(args, opts) {
2762
2806
  return { adcpVersion, complianceDir, schemaRoot };
2763
2807
  }
2764
2808
 
2809
+ // Only render runner-authored capability dependency details here. Other skip
2810
+ // details can contain raw seller diagnostics and retain their existing surface.
2811
+ function printCapabilityPrerequisiteSkip(step) {
2812
+ if (!step.skipped || step.skip_reason !== 'capability_prerequisite_unavailable' || !step.skip?.detail || step.error)
2813
+ return;
2814
+ console.log(` Skipped: ${escapeTerminalControlChars(step.skip.detail)}`);
2815
+ }
2816
+
2817
+ // `printCapabilityPrerequisiteSkip` already phrases this one.
2818
+ const SKIP_REASONS_PRINTED_ELSEWHERE = new Set(['capability_prerequisite_unavailable']);
2819
+
2820
+ /**
2821
+ * Print why a step was skipped, naming runner-owned coverage gaps as gaps
2822
+ * and echoing the remedy the runner supplied. Without this a skipped-only
2823
+ * run prints a green-looking `0 passed` line and nothing else.
2824
+ */
2825
+ // Remedy strings already printed in this invocation. A whole-storyboard
2826
+ // coverage gap repeats one ~550-character remedy per vector; on a routed run
2827
+ // that is ~38 identical copies, which buries the rest of the report.
2828
+ const PRINTED_SKIP_REMEDIES = new Set();
2829
+
2830
+ function printStepSkipDetail(step) {
2831
+ const lines = formatStepSkipLines(step, { handledReasons: SKIP_REASONS_PRINTED_ELSEWHERE });
2832
+ for (const [index, line] of lines.entries()) {
2833
+ // Line 0 is the reason; any line after it is the detail/remedy.
2834
+ if (index > 0 && line.length > 200) {
2835
+ if (PRINTED_SKIP_REMEDIES.has(line)) {
2836
+ console.log(' (same remedy as above)');
2837
+ continue;
2838
+ }
2839
+ PRINTED_SKIP_REMEDIES.add(line);
2840
+ }
2841
+ console.log(line);
2842
+ }
2843
+ }
2844
+
2765
2845
  async function handleStoryboardRun(args) {
2766
2846
  let opts = parseAgentOptions(args);
2767
2847
  let {
@@ -2849,6 +2929,12 @@ async function handleStoryboardRun(args) {
2849
2929
  process.exit(2);
2850
2930
  }
2851
2931
 
2932
+ // Usage gate before any network work: a mistyped signing flag should exit 2
2933
+ // without protocol autodetection, and certainly without the inline OAuth
2934
+ // browser flow below. The authoritative parse runs again downstream, on the
2935
+ // path that actually consumes the options.
2936
+ extractRequestSigningOptions(args);
2937
+
2852
2938
  // Inline OAuth: if --oauth is set and the agent is a saved alias that
2853
2939
  // doesn't have valid tokens, run the browser flow now so the downstream
2854
2940
  // runner sees freshly-saved tokens via getAgent().
@@ -2903,6 +2989,7 @@ async function handleStoryboardRun(args) {
2903
2989
  const webhookAutoTunnel = args.includes('--webhook-receiver-auto-tunnel');
2904
2990
  const webhookReceiverBase = extractWebhookReceiverOptions(args);
2905
2991
  const parallelDispatchOpts = extractParallelDispatchOptions(args);
2992
+ const requestSigningOpts = extractRequestSigningOptions(args);
2906
2993
  validateAutoTunnelArgs(args, webhookReceiverBase);
2907
2994
 
2908
2995
  // Load invariants before the dry-run gate so `--dry-run --invariants` fails
@@ -2977,6 +3064,7 @@ async function handleStoryboardRun(args) {
2977
3064
  }),
2978
3065
  ...(mergedRunHeaders && { headers: mergedRunHeaders }),
2979
3066
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
3067
+ ...(requestSigningOpts ?? {}),
2980
3068
  };
2981
3069
 
2982
3070
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -3020,6 +3108,7 @@ async function handleStoryboardRun(args) {
3020
3108
  not_applicable: ' [not applicable]',
3021
3109
  no_phases: ' [no phases]',
3022
3110
  prerequisite_failed: ' [prerequisite failed]',
3111
+ capability_prerequisite_unavailable: ' [capability prerequisite unavailable]',
3023
3112
  unsatisfied_contract: ' [contract out of scope]',
3024
3113
  };
3025
3114
  for (const step of phase.steps) {
@@ -3027,8 +3116,10 @@ async function handleStoryboardRun(args) {
3027
3116
  const skipLabel = SKIP_LABELS[step.skip_reason] ?? '';
3028
3117
  console.log(`\n${icon} ${step.title}${skipLabel} (${step.duration_ms}ms)`);
3029
3118
  console.log(` Task: ${step.task}`);
3119
+ printCapabilityPrerequisiteSkip(step);
3120
+ printStepSkipDetail(step);
3030
3121
  if (step.error) {
3031
- console.log(` Error: ${step.error}`);
3122
+ console.log(` Error: ${escapeTerminalControlChars(step.error)}`);
3032
3123
  }
3033
3124
  for (const v of step.validations) {
3034
3125
  const vIcon = v.passed ? '✅' : '❌';
@@ -3254,6 +3345,54 @@ function extractParallelDispatchOptions(args) {
3254
3345
  return args.includes('--parallel-dispatch') ? { contracts: ['parallel_dispatch_runner'] } : null;
3255
3346
  }
3256
3347
 
3348
+ /**
3349
+ * CLI wrapper over `parseRequestSigningFlags`: turn a rejected flag into a
3350
+ * usage message and exit 2 rather than silently falling back — a mistyped
3351
+ * transport would otherwise surface as 38 unexplained vector failures.
3352
+ */
3353
+ function extractRequestSigningOptions(args) {
3354
+ const parsed = parseRequestSigningFlags(
3355
+ flag => readFlagValue(args, flag),
3356
+ flag => args.includes(flag) || args.some(a => a.startsWith(`${flag}=`)),
3357
+ {
3358
+ readInlineValue: flag => {
3359
+ const eqArg = args.find(a => a.startsWith(`${flag}=`));
3360
+ return eqArg ? eqArg.slice(flag.length + 1) : null;
3361
+ },
3362
+ knownVectorIds: args.some(a => a === '--signing-skip-vectors' || a.startsWith('--signing-skip-vectors='))
3363
+ ? knownSigningVectorIds(args)
3364
+ : null,
3365
+ }
3366
+ );
3367
+ if (!parsed.ok) {
3368
+ console.error(`ERROR: ${parsed.error}`);
3369
+ process.exit(2);
3370
+ }
3371
+ return parsed.options;
3372
+ }
3373
+
3374
+ /**
3375
+ * Vector ids from the compliance cache this run will actually grade against,
3376
+ * for validating `--signing-skip-vectors`.
3377
+ *
3378
+ * Returns `null` when the cache can't be read: a missing cache is the run's
3379
+ * problem to report where it matters (the runner says so with a remedy), not
3380
+ * a reason to refuse an otherwise valid flag.
3381
+ */
3382
+ function knownSigningVectorIds(args) {
3383
+ try {
3384
+ const { loadRequestSigningVectors } = require('../dist/lib/testing/storyboard/request-signing/index.js');
3385
+ const { complianceVersion, complianceDir } = parseComplianceSelection(args);
3386
+ const loaded = loadRequestSigningVectors({
3387
+ ...(complianceVersion && { version: complianceVersion }),
3388
+ ...(complianceDir && { complianceDir }),
3389
+ });
3390
+ return [...loaded.positive, ...loaded.negative].map(v => v.id);
3391
+ } catch {
3392
+ return null;
3393
+ }
3394
+ }
3395
+
3257
3396
  /**
3258
3397
  * Combine independently requested storyboard-runner contracts. Both webhook
3259
3398
  * receiver and parallel dispatch are opt-ins, so a run that requests both
@@ -3939,6 +4078,7 @@ async function handleLocalAgentStoryboardRun(modulePath, args, opts) {
3939
4078
 
3940
4079
  const storyboardsSpec = storyboardId ? [storyboardId] : 'all';
3941
4080
  const parallelDispatchOpts = extractParallelDispatchOptions(args);
4081
+ const requestSigningOpts = extractRequestSigningOptions(args);
3942
4082
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
3943
4083
  let result;
3944
4084
  try {
@@ -3957,6 +4097,7 @@ async function handleLocalAgentStoryboardRun(modulePath, args, opts) {
3957
4097
  }),
3958
4098
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
3959
4099
  ...mergeStoryboardContracts(parallelDispatchOpts),
4100
+ ...(requestSigningOpts ?? {}),
3960
4101
  },
3961
4102
  onStoryboardComplete:
3962
4103
  jsonOutput || format === 'junit'
@@ -4168,6 +4309,7 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
4168
4309
  const webhookAutoTunnel = args.includes('--webhook-receiver-auto-tunnel');
4169
4310
  const webhookReceiverBase = extractWebhookReceiverOptions(args);
4170
4311
  const parallelDispatchOpts = extractParallelDispatchOptions(args);
4312
+ const requestSigningOpts = extractRequestSigningOptions(args);
4171
4313
  validateAutoTunnelArgs(args, webhookReceiverBase);
4172
4314
  if ((webhookReceiverBase || webhookAutoTunnel) && strategy === 'multi-pass') {
4173
4315
  // The runner throws on this combination (each pass binds a fresh receiver
@@ -4394,6 +4536,7 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
4394
4536
  mediaBuyLifecycleCompatibility: opts.mediaBuyLifecycleCompatibility,
4395
4537
  }),
4396
4538
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
4539
+ ...(requestSigningOpts ?? {}),
4397
4540
  };
4398
4541
 
4399
4542
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -4439,8 +4582,10 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
4439
4582
  const instTag = step.agent_index ? `[#${step.agent_index}] ` : '';
4440
4583
  console.log(`\n${icon} ${instTag}${step.title}${skipLabel} (${step.duration_ms}ms)`);
4441
4584
  console.log(` Task: ${step.task}`);
4585
+ printCapabilityPrerequisiteSkip(step);
4586
+ printStepSkipDetail(step);
4442
4587
  if (step.error) {
4443
- console.log(` Error: ${step.error}`);
4588
+ console.log(` Error: ${escapeTerminalControlChars(step.error)}`);
4444
4589
  }
4445
4590
  for (const v of step.validations) {
4446
4591
  const vIcon = v.passed ? '✅' : '❌';
@@ -4506,6 +4651,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
4506
4651
  const webhookAutoTunnel = args.includes('--webhook-receiver-auto-tunnel');
4507
4652
  const webhookReceiverBase = extractWebhookReceiverOptions(args);
4508
4653
  const parallelDispatchOpts = extractParallelDispatchOptions(args);
4654
+ const requestSigningOpts = extractRequestSigningOptions(args);
4509
4655
  validateAutoTunnelArgs(args, webhookReceiverBase);
4510
4656
 
4511
4657
  // Strip per-flag values that may have leaked into positionals via parseAgentOptions.
@@ -4680,6 +4826,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
4680
4826
  mediaBuyLifecycleCompatibility: opts.mediaBuyLifecycleCompatibility,
4681
4827
  }),
4682
4828
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
4829
+ ...(requestSigningOpts ?? {}),
4683
4830
  };
4684
4831
 
4685
4832
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -4733,6 +4880,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
4733
4880
  not_applicable: ' [not applicable]',
4734
4881
  no_phases: ' [no phases]',
4735
4882
  prerequisite_failed: ' [prerequisite failed]',
4883
+ capability_prerequisite_unavailable: ' [capability prerequisite unavailable]',
4736
4884
  unsatisfied_contract: ' [contract out of scope]',
4737
4885
  };
4738
4886
  for (const result of results) {
@@ -4748,12 +4896,15 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
4748
4896
  // routing decisions are visible in the human-readable output.
4749
4897
  let agentTag = '';
4750
4898
  if (step.agent_url && result.agent_map) {
4751
- const key = Object.entries(result.agent_map).find(([, url]) => url === step.agent_url)?.[0];
4899
+ const entries = Object.entries(result.agent_map);
4900
+ const key = entries[step.agent_index - 1]?.[0] ?? entries.find(([, url]) => url === step.agent_url)?.[0];
4752
4901
  if (key) agentTag = `[${key}] `;
4753
4902
  }
4754
4903
  console.log(`\n${icon} ${agentTag}${step.title}${skipLabel} (${step.duration_ms}ms)`);
4755
4904
  console.log(` Task: ${step.task}`);
4756
- if (step.error) console.log(` Error: ${step.error}`);
4905
+ printCapabilityPrerequisiteSkip(step);
4906
+ printStepSkipDetail(step);
4907
+ if (step.error) console.log(` Error: ${escapeTerminalControlChars(step.error)}`);
4757
4908
  for (const v of step.validations) {
4758
4909
  const vIcon = v.passed ? '✅' : '❌';
4759
4910
  console.log(` ${vIcon} ${v.description}`);
@@ -4795,6 +4946,22 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
4795
4946
  }
4796
4947
 
4797
4948
  // Shared implementation: run all matching storyboards against an agent
4949
+ // One remedy per way a run can end with no graded vector. Keeping them
4950
+ // distinct matters: an unreachable agent and an over-broad
4951
+ // `--signing-skip-vectors` need opposite actions from the operator.
4952
+ const SIGNING_COVERAGE_REMEDIES = {
4953
+ probe_errored: 'the probes could not complete — fix the transport or auth failure reported above, then re-run',
4954
+ transport_unverified:
4955
+ 'this runner has no request-signing dispatch for the run protocol — grade the MCP or REST binding, ' +
4956
+ 'or set --signing-transport when that binding answers at the same URL',
4957
+ scope_excluded:
4958
+ "every vector was excluded by this run's own selection — drop the --signing-skip-vectors entries you did " +
4959
+ 'not mean to exclude',
4960
+ self_check_only:
4961
+ 'only the in-library SDK self-check ran, and it never contacts your agent — widen the selection so a wire ' +
4962
+ 'vector is graded',
4963
+ };
4964
+
4798
4965
  async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
4799
4966
  const opts = parsedOpts || parseAgentOptions(rawArgs);
4800
4967
 
@@ -4875,6 +5042,10 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
4875
5042
  resolvedOauthClientCredentials: oauthClientCredentials,
4876
5043
  });
4877
5044
 
5045
+ // Validate the signing flags before `resolveWebhookReceiverOptions`, which
5046
+ // may spawn a tunnel child process: a bad flag value should exit 2 without
5047
+ // standing infrastructure up first.
5048
+ const requestSigningOpts = extractRequestSigningOptions(rawArgs);
4878
5049
  const webhookReceiverOpts = await resolveWebhookReceiverOptions(rawArgs, { jsonOutput: opts.jsonOutput });
4879
5050
  const parallelDispatchOpts = extractParallelDispatchOptions(rawArgs);
4880
5051
 
@@ -4904,6 +5075,7 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
4904
5075
  ...(opts.schemaRoot && { schemaRoot: opts.schemaRoot }),
4905
5076
  ...(!opts.strictResponseSchemaValidation && { strictResponseSchemaValidation: false }),
4906
5077
  ...(opts.hostedStableLineAlias && { hostedStableLineAlias: opts.hostedStableLineAlias }),
5078
+ ...(requestSigningOpts ?? {}),
4907
5079
  };
4908
5080
 
4909
5081
  if (!opts.jsonOutput) {
@@ -5007,14 +5179,34 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
5007
5179
  // exercised its tracks and they passed" is a CI failure. `partial`
5008
5180
  // is preserved as exit 0 because some tracks were silent (wired but
5009
5181
  // unexercised) — that's a reportable observation, not a hard failure.
5182
+ //
5183
+ // One narrow exception (adcp-client#2954): a run whose request-signing
5184
+ // vectors were never dispatched verified nothing about the verifier, and
5185
+ // its steps are skip-shaped, so every count above reads clean. That is
5186
+ // the case #2956 exists to make visible in CI, so it exits nonzero — on
5187
+ // its own signal, without touching how any other `partial` run exits.
5188
+ const unverifiedSigning = unverifiedSigningCoverage(result);
5010
5189
  const isFailingExit =
5011
5190
  result.overall_status === 'failing' ||
5012
5191
  result.overall_status === 'unreachable' ||
5013
- result.overall_status === 'auth_required';
5192
+ result.overall_status === 'auth_required' ||
5193
+ unverifiedSigning.length > 0;
5014
5194
 
5195
+ if (unverifiedSigning.length > 0 && !opts.jsonOutput) {
5196
+ for (const gap of unverifiedSigning) {
5197
+ console.error(
5198
+ `\n❌ ${escapeTerminalControlChars(gap.storyboard_id)}: no request-signing vector reached the agent. ` +
5199
+ `${SIGNING_COVERAGE_REMEDIES[gap.coverage] ?? 'no vector was graded'}.`
5200
+ );
5201
+ }
5202
+ if (!opts.softFail) {
5203
+ console.error(' Pass --soft-fail to report this without failing the job.');
5204
+ }
5205
+ }
5015
5206
  if (opts.softFail && isFailingExit) {
5016
5207
  const failedNames = result.failures?.map(f => f.storyboard_id).filter((v, i, a) => a.indexOf(v) === i) ?? [];
5017
- printSoftFailBlock(failedNames, opts.jsonOutput);
5208
+ const unverifiedNames = unverifiedSigning.map(gap => gap.storyboard_id);
5209
+ printSoftFailBlock([...new Set([...failedNames, ...unverifiedNames])], opts.jsonOutput);
5018
5210
  }
5019
5211
  process.exit(opts.softFail ? 0 : isFailingExit ? 3 : 0);
5020
5212
  } catch (error) {
@@ -5095,6 +5287,10 @@ async function handleStoryboardStepCmd(args) {
5095
5287
  process.exit(2);
5096
5288
  }
5097
5289
 
5290
+ // Same usage gate as `storyboard run`: fail a bad signing flag before the
5291
+ // OAuth browser flow and agent resolution.
5292
+ extractRequestSigningOptions(args);
5293
+
5098
5294
  await maybeRunInlineOAuth(agentArg, args, { jsonOutput });
5099
5295
 
5100
5296
  const {
@@ -5145,6 +5341,7 @@ async function handleStoryboardStepCmd(args) {
5145
5341
  resolvedOauthClient,
5146
5342
  resolvedOauthClientCredentials,
5147
5343
  }),
5344
+ ...(extractRequestSigningOptions(args) ?? {}),
5148
5345
  };
5149
5346
 
5150
5347
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -5158,10 +5355,12 @@ async function handleStoryboardStepCmd(args) {
5158
5355
  if (jsonOutput) {
5159
5356
  await writeJsonOutput(result);
5160
5357
  } else {
5161
- const icon = result.passed ? '✅' : '❌';
5162
5358
  console.log(`\n── Step: ${result.title} ──────────────────────────────`);
5163
5359
  console.log(`Task: ${result.task}`);
5164
- console.log(`\n${icon} ${result.passed ? 'Passed' : 'Failed'} (${result.duration_ms}ms)`);
5360
+ console.log('');
5361
+ for (const line of formatStepVerdictLines(result, { durationMs: result.duration_ms })) {
5362
+ console.log(line);
5363
+ }
5165
5364
 
5166
5365
  if (result.error) {
5167
5366
  console.log(`Error: ${result.error}`);
@@ -5196,7 +5395,19 @@ async function handleStoryboardStepCmd(args) {
5196
5395
  }
5197
5396
  }
5198
5397
 
5199
- process.exit(result.passed ? 0 : 3);
5398
+ // A skipped step is `passed: true` — skip is not failure. That is right for
5399
+ // a step the agent opted out of, and wrong for one the runner could not
5400
+ // grade: `adcp storyboard step … && echo ok` would print ok for a vector
5401
+ // nothing verified. Exit 3 on that gap, matching what the verdict lines
5402
+ // above already say (adcp-client#2954) — and honour `--soft-fail` here as
5403
+ // every other exit site in this file does, because the help text and the
5404
+ // guide both offer it as the opt-out for exactly this.
5405
+ const stepFailed = !result.passed || isCoverageUnavailableStep(result);
5406
+ if (stepFailed && opts.softFail) {
5407
+ printSoftFailBlock([`${storyboardId}/${stepId}`], jsonOutput);
5408
+ process.exit(0);
5409
+ }
5410
+ process.exit(stepFailed ? 3 : 0);
5200
5411
  }
5201
5412
 
5202
5413
  async function handleCheckNetworkCommand(args) {
@@ -5493,7 +5704,7 @@ function renderDiagnosisReport(report) {
5493
5704
  const label = STEP_LABELS[step.name] || step.name;
5494
5705
  const prefix = ` • ${label}`;
5495
5706
  if (step.error) {
5496
- console.log(`${prefix} ↳ skipped: ${step.error}`);
5707
+ console.log(`${prefix} ↳ skipped: ${escapeTerminalControlChars(step.error)}`);
5497
5708
  continue;
5498
5709
  }
5499
5710
  if (step.http) {
@@ -3,7 +3,7 @@ type JsonSchema = Record<string, unknown>;
3
3
  export interface ConformanceSchemaOptions {
4
4
  /** AdCP schema/cache version to load. Defaults to the SDK-pinned version. */
5
5
  version?: string;
6
- /** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.1.0-beta.7`. */
6
+ /** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.2.0-rc.3`. */
7
7
  schemaRoot?: string;
8
8
  }
9
9
  export declare function loadRequestSchema(tool: ConformanceToolName, options?: ConformanceSchemaOptions): JsonSchema;
@@ -3,7 +3,7 @@ type JsonSchema = Record<string, unknown>;
3
3
  export interface ConformanceSchemaOptions {
4
4
  /** AdCP schema/cache version to load. Defaults to the SDK-pinned version. */
5
5
  version?: string;
6
- /** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.1.0-beta.7`. */
6
+ /** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.2.0-rc.3`. */
7
7
  schemaRoot?: string;
8
8
  }
9
9
  export declare function loadRequestSchema(tool: ConformanceToolName, options?: ConformanceSchemaOptions): JsonSchema;
@@ -3,10 +3,11 @@ import type { AgentConfig } from '../types/index.mjs';
3
3
  import type { MCPWebhookPayload, GetBrandIdentityRequest, GetBrandIdentityResponse, ContextMatchRequest, ContextMatchResponse, IdentityMatchRequest, IdentityMatchResponseRouterPublisher } from '../types/core.generated.mjs';
4
4
  import type { Task as A2ATask, TaskStatusUpdateEvent } from '@a2a-js/sdk';
5
5
  import { type CanonicalReadTaskOptions, type CreativeDeliveryTaskOptions, type SingleAgentClientConfig, type SyncCreativesTaskOptions, type VerifyAndParseWebhookOptions, type WebhookHandlerAdapter, type WebhookParseResult, type WebhookRequestContext } from './SingleAgentClient.mjs';
6
- import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message } from './ConversationTypes.mjs';
6
+ import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message, DirectPauseRecoveryRequest } from './ConversationTypes.mjs';
7
7
  import type { AdcpCapabilities } from '../utils/capabilities.mjs';
8
8
  import type { WebhookHeaderValue } from '../webhooks/index.mjs';
9
- import type { GetProductsRequest, GetProductsResponse, ListProductsRequest, ListProductsResponse, RequestProposalsRequest, RequestProposalsResponse, DeclineProposalsRequest, DeclineProposalsResponse, BuyProductsRequest, BuyProductsResponse, AcceptProposalRequest, AcceptProposalResponse, ControlMediaBuyRequest, ControlMediaBuyResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuysRequest, GetMediaBuysResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetReportingStatusRequest, GetReportingStatusResponse, SyncReportingStatusRequest, SyncReportingStatusResponse, SyncReportingReceiptsRequest, SyncReportingReceiptsResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse, PreviewCreativeRequest, PreviewCreativeResponse, BuildCreativeRequest, BuildCreativeResponse, ListAccountChangesRequest, ListAccountChangesResponse, ListAccountsRequest, ListAccountsResponse, SyncAccountsRequest, SyncAccountsResponse, SyncAudiencesRequest, SyncAudiencesResponse, CreatePropertyListRequest, CreatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse, ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, SIGetOfferingRequest, SIGetOfferingResponse, SIInitiateSessionRequest, SIInitiateSessionResponse, SISendMessageRequest, SISendMessageResponse, SITerminateSessionRequest, SITerminateSessionResponse, SyncPlansRequest, SyncPlansResponse, CheckGovernanceRequest, CheckGovernanceResponse, ReportPlanOutcomeRequest, ReportPlanOutcomeResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, GetPlanAuditLogsRequest, GetPlanAuditLogsResponse, ListTransformersRequest, ListTransformersResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse } from '../types/tools.generated.mjs';
9
+ import type { ListProductsResponseWithSupplyPath } from '../supply-path/index.mjs';
10
+ import type { GetProductsRequest, GetProductsResponse, ListProductsRequest, RequestProposalsRequest, RequestProposalsResponse, DeclineProposalsRequest, DeclineProposalsResponse, BuyProductsRequest, BuyProductsResponse, AcceptProposalRequest, AcceptProposalResponse, ControlMediaBuyRequest, ControlMediaBuyResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuysRequest, GetMediaBuysResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetReportingStatusRequest, GetReportingStatusResponse, SyncReportingStatusRequest, SyncReportingStatusResponse, SyncReportingReceiptsRequest, SyncReportingReceiptsResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse, PreviewCreativeRequest, PreviewCreativeResponse, BuildCreativeRequest, BuildCreativeResponse, ListAccountChangesRequest, ListAccountChangesResponse, ListAccountsRequest, ListAccountsResponse, SyncAccountsRequest, SyncAccountsResponse, SyncAudiencesRequest, SyncAudiencesResponse, CreatePropertyListRequest, CreatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse, ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, SIGetOfferingRequest, SIGetOfferingResponse, SIInitiateSessionRequest, SIInitiateSessionResponse, SISendMessageRequest, SISendMessageResponse, SITerminateSessionRequest, SITerminateSessionResponse, SyncPlansRequest, SyncPlansResponse, CheckGovernanceRequest, CheckGovernanceResponse, ReportPlanOutcomeRequest, ReportPlanOutcomeResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, GetPlanAuditLogsRequest, GetPlanAuditLogsResponse, ListTransformersRequest, ListTransformersResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse } from '../types/tools.generated.mjs';
10
11
  import type { MutatingRequestInput } from '../utils/idempotency.mjs';
11
12
  import { MediaBuyLifecycleCoordinator, type MediaBuyLifecycleCoordinatorOptions } from '../media-buy/compatibility.mjs';
12
13
  import type { ProposalRefinementCapabilities, RefineProposalsInput, RefineProposalsResponse } from '../negotiation/types.mjs';
@@ -45,7 +46,7 @@ export type V2AugmentedGetProductsResponse = CanonicalGetProductsResponse;
45
46
  */
46
47
  export type TaskResponseTypeMap = {
47
48
  get_products: CanonicalGetProductsResponse;
48
- list_products: ListProductsResponse;
49
+ list_products: ListProductsResponseWithSupplyPath;
49
50
  request_proposals: RequestProposalsResponse;
50
51
  refine_proposals: RefineProposalsResponse;
51
52
  decline_proposals: DeclineProposalsResponse;
@@ -175,6 +176,11 @@ export declare class AgentClient {
175
176
  private readonly sessionTrackedDeferredContinuations;
176
177
  private readonly _isInProcess;
177
178
  constructor(agent: AgentConfig, config?: SingleAgentClientConfig);
179
+ /**
180
+ * Recover the current A2A pause generation for a direct mutation that opted
181
+ * into `TaskOptions.durableContinuationRecovery`.
182
+ */
183
+ recoverDirectPauseContinuation<T>(request: DirectPauseRecoveryRequest): Promise<TaskResult<T>>;
178
184
  /**
179
185
  * Returns the AdCP protocol version this client speaks. Mirrors
180
186
  * `SingleAgentClient.getAdcpVersion()`. See {@link SingleAgentClientConfig.adcpVersion}.
@@ -322,7 +328,7 @@ export declare class AgentClient {
322
328
  */
323
329
  getProducts(params: CanonicalGetProductsRequest, inputHandler?: InputHandler, options?: CanonicalProjectionTaskOptions): Promise<TaskResult<CanonicalGetProductsResponse>>;
324
330
  /** Discover products through the compact AdCP 3.2 catalog task. */
325
- listProducts(params: ListProductsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListProductsResponse>>;
331
+ listProducts(params: ListProductsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListProductsResponseWithSupplyPath>>;
326
332
  /** Request one or more compact AdCP 3.2 proposals. */
327
333
  requestProposals(params: MutatingRequestInput<RequestProposalsRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<RequestProposalsResponse>>;
328
334
  /** Decline outstanding proposals. */
@@ -3,10 +3,11 @@ import type { AgentConfig } from '../types';
3
3
  import type { MCPWebhookPayload, GetBrandIdentityRequest, GetBrandIdentityResponse, ContextMatchRequest, ContextMatchResponse, IdentityMatchRequest, IdentityMatchResponseRouterPublisher } from '../types/core.generated';
4
4
  import type { Task as A2ATask, TaskStatusUpdateEvent } from '@a2a-js/sdk';
5
5
  import { type CanonicalReadTaskOptions, type CreativeDeliveryTaskOptions, type SingleAgentClientConfig, type SyncCreativesTaskOptions, type VerifyAndParseWebhookOptions, type WebhookHandlerAdapter, type WebhookParseResult, type WebhookRequestContext } from './SingleAgentClient';
6
- import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message } from './ConversationTypes';
6
+ import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message, DirectPauseRecoveryRequest } from './ConversationTypes';
7
7
  import type { AdcpCapabilities } from '../utils/capabilities';
8
8
  import type { WebhookHeaderValue } from '../webhooks';
9
- import type { GetProductsRequest, GetProductsResponse, ListProductsRequest, ListProductsResponse, RequestProposalsRequest, RequestProposalsResponse, DeclineProposalsRequest, DeclineProposalsResponse, BuyProductsRequest, BuyProductsResponse, AcceptProposalRequest, AcceptProposalResponse, ControlMediaBuyRequest, ControlMediaBuyResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuysRequest, GetMediaBuysResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetReportingStatusRequest, GetReportingStatusResponse, SyncReportingStatusRequest, SyncReportingStatusResponse, SyncReportingReceiptsRequest, SyncReportingReceiptsResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse, PreviewCreativeRequest, PreviewCreativeResponse, BuildCreativeRequest, BuildCreativeResponse, ListAccountChangesRequest, ListAccountChangesResponse, ListAccountsRequest, ListAccountsResponse, SyncAccountsRequest, SyncAccountsResponse, SyncAudiencesRequest, SyncAudiencesResponse, CreatePropertyListRequest, CreatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse, ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, SIGetOfferingRequest, SIGetOfferingResponse, SIInitiateSessionRequest, SIInitiateSessionResponse, SISendMessageRequest, SISendMessageResponse, SITerminateSessionRequest, SITerminateSessionResponse, SyncPlansRequest, SyncPlansResponse, CheckGovernanceRequest, CheckGovernanceResponse, ReportPlanOutcomeRequest, ReportPlanOutcomeResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, GetPlanAuditLogsRequest, GetPlanAuditLogsResponse, ListTransformersRequest, ListTransformersResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse } from '../types/tools.generated';
9
+ import type { ListProductsResponseWithSupplyPath } from '../supply-path';
10
+ import type { GetProductsRequest, GetProductsResponse, ListProductsRequest, RequestProposalsRequest, RequestProposalsResponse, DeclineProposalsRequest, DeclineProposalsResponse, BuyProductsRequest, BuyProductsResponse, AcceptProposalRequest, AcceptProposalResponse, ControlMediaBuyRequest, ControlMediaBuyResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuysRequest, GetMediaBuysResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetReportingStatusRequest, GetReportingStatusResponse, SyncReportingStatusRequest, SyncReportingStatusResponse, SyncReportingReceiptsRequest, SyncReportingReceiptsResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse, PreviewCreativeRequest, PreviewCreativeResponse, BuildCreativeRequest, BuildCreativeResponse, ListAccountChangesRequest, ListAccountChangesResponse, ListAccountsRequest, ListAccountsResponse, SyncAccountsRequest, SyncAccountsResponse, SyncAudiencesRequest, SyncAudiencesResponse, CreatePropertyListRequest, CreatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse, ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, SIGetOfferingRequest, SIGetOfferingResponse, SIInitiateSessionRequest, SIInitiateSessionResponse, SISendMessageRequest, SISendMessageResponse, SITerminateSessionRequest, SITerminateSessionResponse, SyncPlansRequest, SyncPlansResponse, CheckGovernanceRequest, CheckGovernanceResponse, ReportPlanOutcomeRequest, ReportPlanOutcomeResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, GetPlanAuditLogsRequest, GetPlanAuditLogsResponse, ListTransformersRequest, ListTransformersResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse } from '../types/tools.generated';
10
11
  import type { MutatingRequestInput } from '../utils/idempotency';
11
12
  import { MediaBuyLifecycleCoordinator, type MediaBuyLifecycleCoordinatorOptions } from '../media-buy/compatibility';
12
13
  import type { ProposalRefinementCapabilities, RefineProposalsInput, RefineProposalsResponse } from '../negotiation/types';
@@ -45,7 +46,7 @@ export type V2AugmentedGetProductsResponse = CanonicalGetProductsResponse;
45
46
  */
46
47
  export type TaskResponseTypeMap = {
47
48
  get_products: CanonicalGetProductsResponse;
48
- list_products: ListProductsResponse;
49
+ list_products: ListProductsResponseWithSupplyPath;
49
50
  request_proposals: RequestProposalsResponse;
50
51
  refine_proposals: RefineProposalsResponse;
51
52
  decline_proposals: DeclineProposalsResponse;
@@ -175,6 +176,11 @@ export declare class AgentClient {
175
176
  private readonly sessionTrackedDeferredContinuations;
176
177
  private readonly _isInProcess;
177
178
  constructor(agent: AgentConfig, config?: SingleAgentClientConfig);
179
+ /**
180
+ * Recover the current A2A pause generation for a direct mutation that opted
181
+ * into `TaskOptions.durableContinuationRecovery`.
182
+ */
183
+ recoverDirectPauseContinuation<T>(request: DirectPauseRecoveryRequest): Promise<TaskResult<T>>;
178
184
  /**
179
185
  * Returns the AdCP protocol version this client speaks. Mirrors
180
186
  * `SingleAgentClient.getAdcpVersion()`. See {@link SingleAgentClientConfig.adcpVersion}.
@@ -322,7 +328,7 @@ export declare class AgentClient {
322
328
  */
323
329
  getProducts(params: CanonicalGetProductsRequest, inputHandler?: InputHandler, options?: CanonicalProjectionTaskOptions): Promise<TaskResult<CanonicalGetProductsResponse>>;
324
330
  /** Discover products through the compact AdCP 3.2 catalog task. */
325
- listProducts(params: ListProductsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListProductsResponse>>;
331
+ listProducts(params: ListProductsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListProductsResponseWithSupplyPath>>;
326
332
  /** Request one or more compact AdCP 3.2 proposals. */
327
333
  requestProposals(params: MutatingRequestInput<RequestProposalsRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<RequestProposalsResponse>>;
328
334
  /** Decline outstanding proposals. */
@@ -101,6 +101,15 @@ class AgentClient {
101
101
  recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus = true) {
102
102
  return this.client.recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus);
103
103
  }
104
+ /**
105
+ * Recover the current A2A pause generation for a direct mutation that opted
106
+ * into `TaskOptions.durableContinuationRecovery`.
107
+ */
108
+ async recoverDirectPauseContinuation(request) {
109
+ const result = await this.client.recoverDirectPauseContinuation(request);
110
+ this.retainSession(result);
111
+ return result;
112
+ }
104
113
  /** Bridge a store-recovered callback into the deferred terminal checkpoint. @internal */
105
114
  checkpointExternalDeferredSettlement(token, operationId, terminalResult) {
106
115
  return this.client.checkpointExternalDeferredSettlement(token, operationId, terminalResult);
@@ -80,6 +80,15 @@ class AgentClient {
80
80
  recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus = true) {
81
81
  return this.client.recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus);
82
82
  }
83
+ /**
84
+ * Recover the current A2A pause generation for a direct mutation that opted
85
+ * into `TaskOptions.durableContinuationRecovery`.
86
+ */
87
+ async recoverDirectPauseContinuation(request) {
88
+ const result = await this.client.recoverDirectPauseContinuation(request);
89
+ this.retainSession(result);
90
+ return result;
91
+ }
83
92
  /** Bridge a store-recovered callback into the deferred terminal checkpoint. @internal */
84
93
  checkpointExternalDeferredSettlement(token, operationId, terminalResult) {
85
94
  return this.client.checkpointExternalDeferredSettlement(token, operationId, terminalResult);
@@ -7,6 +7,7 @@ import type { ListCreativeFormatsResponse, PreviewCreativeResponse, BuildCreativ
7
7
  import type { AdCPAsyncResponseData, CreateMediaBuyAsyncInputRequired, CreateMediaBuyAsyncSubmitted, CreateMediaBuyAsyncWorking, GetProductsAsyncInputRequired, GetProductsAsyncSubmitted, GetProductsAsyncWorking, SyncCreativesAsyncInputRequired, SyncCreativesAsyncSubmitted, SyncCreativesAsyncWorking, UpdateMediaBuyAsyncInputRequired, UpdateMediaBuyAsyncSubmitted, UpdateMediaBuyAsyncWorking } from '../types/core.generated.mjs';
8
8
  import type { TaskResultMetadata } from './ConversationTypes.mjs';
9
9
  import type { CanonicalCreativeResponse, CanonicalGetProductsResponse, CanonicalListCreativesResponse } from '../v2/projection/creative-delivery.mjs';
10
+ import type { ListProductsResponseWithSupplyPath } from '../supply-path/products.mjs';
10
11
  /**
11
12
  * Metadata provided with webhook responses
12
13
  */
@@ -76,6 +77,7 @@ export interface NotificationMetadata extends WebhookMetadata {
76
77
  next_expected_at?: string;
77
78
  }
78
79
  export type GetProductsStatusChangeHandler = (response: CanonicalGetProductsResponse | GetProductsAsyncSubmitted | GetProductsAsyncWorking | GetProductsAsyncInputRequired, metadata: WebhookMetadata) => void | Promise<void>;
80
+ export type ListProductsStatusChangeHandler = (response: ListProductsResponseWithSupplyPath, metadata: WebhookMetadata) => void | Promise<void>;
79
81
  export type CreateMediaBuyStatusChangeHandler = (response: CanonicalCreativeResponse<CreateMediaBuyResponse | CreateMediaBuyAsyncSubmitted | CreateMediaBuyAsyncWorking | CreateMediaBuyAsyncInputRequired>, metadata: WebhookMetadata) => void | Promise<void>;
80
82
  export type UpdateMediaBuyStatusChangeHandler = (response: CanonicalCreativeResponse<UpdateMediaBuyResponse | UpdateMediaBuyAsyncSubmitted | UpdateMediaBuyAsyncWorking | UpdateMediaBuyAsyncInputRequired>, metadata: WebhookMetadata) => void | Promise<void>;
81
83
  export type SyncCreativesStatusChangeHandler = (response: CanonicalCreativeResponse<SyncCreativesResponse | SyncCreativesAsyncSubmitted | SyncCreativesAsyncWorking | SyncCreativesAsyncInputRequired>, metadata: WebhookMetadata) => void | Promise<void>;
@@ -139,6 +141,7 @@ export interface Activity {
139
141
  */
140
142
  export interface AsyncHandlerConfig {
141
143
  onGetProductsStatusChange?: GetProductsStatusChangeHandler;
144
+ onListProductsStatusChange?: ListProductsStatusChangeHandler;
142
145
  onListCreativeFormatsLegacyStatusChange?: (data: ListCreativeFormatsResponse, metadata: WebhookMetadata) => void | Promise<void>;
143
146
  onCreateMediaBuyStatusChange?: CreateMediaBuyStatusChangeHandler;
144
147
  onUpdateMediaBuyStatusChange?: UpdateMediaBuyStatusChangeHandler;
@@ -7,6 +7,7 @@ import type { ListCreativeFormatsResponse, PreviewCreativeResponse, BuildCreativ
7
7
  import type { AdCPAsyncResponseData, CreateMediaBuyAsyncInputRequired, CreateMediaBuyAsyncSubmitted, CreateMediaBuyAsyncWorking, GetProductsAsyncInputRequired, GetProductsAsyncSubmitted, GetProductsAsyncWorking, SyncCreativesAsyncInputRequired, SyncCreativesAsyncSubmitted, SyncCreativesAsyncWorking, UpdateMediaBuyAsyncInputRequired, UpdateMediaBuyAsyncSubmitted, UpdateMediaBuyAsyncWorking } from '../types/core.generated';
8
8
  import type { TaskResultMetadata } from './ConversationTypes';
9
9
  import type { CanonicalCreativeResponse, CanonicalGetProductsResponse, CanonicalListCreativesResponse } from '../v2/projection/creative-delivery';
10
+ import type { ListProductsResponseWithSupplyPath } from '../supply-path/products';
10
11
  /**
11
12
  * Metadata provided with webhook responses
12
13
  */
@@ -76,6 +77,7 @@ export interface NotificationMetadata extends WebhookMetadata {
76
77
  next_expected_at?: string;
77
78
  }
78
79
  export type GetProductsStatusChangeHandler = (response: CanonicalGetProductsResponse | GetProductsAsyncSubmitted | GetProductsAsyncWorking | GetProductsAsyncInputRequired, metadata: WebhookMetadata) => void | Promise<void>;
80
+ export type ListProductsStatusChangeHandler = (response: ListProductsResponseWithSupplyPath, metadata: WebhookMetadata) => void | Promise<void>;
79
81
  export type CreateMediaBuyStatusChangeHandler = (response: CanonicalCreativeResponse<CreateMediaBuyResponse | CreateMediaBuyAsyncSubmitted | CreateMediaBuyAsyncWorking | CreateMediaBuyAsyncInputRequired>, metadata: WebhookMetadata) => void | Promise<void>;
80
82
  export type UpdateMediaBuyStatusChangeHandler = (response: CanonicalCreativeResponse<UpdateMediaBuyResponse | UpdateMediaBuyAsyncSubmitted | UpdateMediaBuyAsyncWorking | UpdateMediaBuyAsyncInputRequired>, metadata: WebhookMetadata) => void | Promise<void>;
81
83
  export type SyncCreativesStatusChangeHandler = (response: CanonicalCreativeResponse<SyncCreativesResponse | SyncCreativesAsyncSubmitted | SyncCreativesAsyncWorking | SyncCreativesAsyncInputRequired>, metadata: WebhookMetadata) => void | Promise<void>;
@@ -139,6 +141,7 @@ export interface Activity {
139
141
  */
140
142
  export interface AsyncHandlerConfig {
141
143
  onGetProductsStatusChange?: GetProductsStatusChangeHandler;
144
+ onListProductsStatusChange?: ListProductsStatusChangeHandler;
142
145
  onListCreativeFormatsLegacyStatusChange?: (data: ListCreativeFormatsResponse, metadata: WebhookMetadata) => void | Promise<void>;
143
146
  onCreateMediaBuyStatusChange?: CreateMediaBuyStatusChangeHandler;
144
147
  onUpdateMediaBuyStatusChange?: UpdateMediaBuyStatusChangeHandler;