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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/bin/adcp-storyboard-summary.js +286 -0
  2. package/bin/adcp.js +221 -10
  3. package/dist/lib/conformance/schemaLoader.d.mts +1 -1
  4. package/dist/lib/conformance/schemaLoader.d.ts +1 -1
  5. package/dist/lib/core/AgentClient.d.mts +6 -1
  6. package/dist/lib/core/AgentClient.d.ts +6 -1
  7. package/dist/lib/core/AgentClient.js +9 -0
  8. package/dist/lib/core/AgentClient.mjs +9 -0
  9. package/dist/lib/core/ConversationTypes.d.mts +29 -0
  10. package/dist/lib/core/ConversationTypes.d.ts +29 -0
  11. package/dist/lib/core/SingleAgentClient.d.mts +3 -1
  12. package/dist/lib/core/SingleAgentClient.d.ts +3 -1
  13. package/dist/lib/core/SingleAgentClient.js +9 -1
  14. package/dist/lib/core/SingleAgentClient.mjs +9 -1
  15. package/dist/lib/core/TaskExecutor.d.mts +13 -1
  16. package/dist/lib/core/TaskExecutor.d.ts +13 -1
  17. package/dist/lib/core/TaskExecutor.js +216 -18
  18. package/dist/lib/core/TaskExecutor.mjs +216 -19
  19. package/dist/lib/index.d.mts +5 -2
  20. package/dist/lib/index.d.ts +5 -2
  21. package/dist/lib/index.js +10 -1
  22. package/dist/lib/index.mjs +10 -1
  23. package/dist/lib/media-buy/action-assessment.d.mts +77 -0
  24. package/dist/lib/media-buy/action-assessment.d.ts +77 -0
  25. package/dist/lib/media-buy/action-assessment.js +300 -0
  26. package/dist/lib/media-buy/action-assessment.mjs +284 -0
  27. package/dist/lib/media-buy/action-constraints.d.mts +9 -0
  28. package/dist/lib/media-buy/action-constraints.d.ts +9 -0
  29. package/dist/lib/media-buy/action-constraints.js +170 -0
  30. package/dist/lib/media-buy/action-constraints.mjs +146 -0
  31. package/dist/lib/media-buy/action-contracts.d.mts +40 -0
  32. package/dist/lib/media-buy/action-contracts.d.ts +40 -0
  33. package/dist/lib/media-buy/action-contracts.js +304 -0
  34. package/dist/lib/media-buy/action-contracts.mjs +267 -0
  35. package/dist/lib/media-buy/action-metadata.generated.d.mts +37 -0
  36. package/dist/lib/media-buy/action-metadata.generated.d.ts +37 -0
  37. package/dist/lib/media-buy/action-metadata.generated.js +128 -0
  38. package/dist/lib/media-buy/action-metadata.generated.mjs +101 -0
  39. package/dist/lib/media-buy/action-types.d.mts +106 -0
  40. package/dist/lib/media-buy/action-types.d.ts +106 -0
  41. package/dist/lib/{types/v3-1-beta/tools.generated.js → media-buy/action-types.js} +2 -2
  42. package/dist/lib/media-buy/actions.d.mts +6 -0
  43. package/dist/lib/media-buy/actions.d.ts +6 -0
  44. package/dist/lib/media-buy/actions.js +38 -0
  45. package/dist/lib/media-buy/actions.mjs +9 -0
  46. package/dist/lib/media-buy/available-actions.d.mts +2 -1
  47. package/dist/lib/media-buy/available-actions.d.ts +2 -1
  48. package/dist/lib/media-buy/available-actions.js +4 -3
  49. package/dist/lib/media-buy/available-actions.mjs +4 -3
  50. package/dist/lib/media-buy/compatibility.js +3 -0
  51. package/dist/lib/media-buy/compatibility.mjs +3 -0
  52. package/dist/lib/media-buy/index.d.mts +4 -0
  53. package/dist/lib/media-buy/index.d.ts +4 -0
  54. package/dist/lib/media-buy/index.js +3 -1
  55. package/dist/lib/media-buy/index.mjs +1 -0
  56. package/dist/lib/media-buy/legacy-action-ids.d.mts +1 -0
  57. package/dist/lib/media-buy/legacy-action-ids.d.ts +1 -0
  58. package/dist/lib/media-buy/legacy-action-ids.js +50 -0
  59. package/dist/lib/media-buy/legacy-action-ids.mjs +26 -0
  60. package/dist/lib/media-buy/mutations.d.mts +70 -0
  61. package/dist/lib/media-buy/mutations.d.ts +70 -0
  62. package/dist/lib/media-buy/mutations.js +525 -0
  63. package/dist/lib/media-buy/mutations.mjs +498 -0
  64. package/dist/lib/media-buy/preflight.d.mts +20 -69
  65. package/dist/lib/media-buy/preflight.d.ts +20 -69
  66. package/dist/lib/media-buy/preflight.js +100 -336
  67. package/dist/lib/media-buy/preflight.mjs +111 -333
  68. package/dist/lib/media-buy/targeting-input.d.mts +7 -4
  69. package/dist/lib/media-buy/targeting-input.d.ts +7 -4
  70. package/dist/lib/media-buy/types.d.mts +55 -7
  71. package/dist/lib/media-buy/types.d.ts +55 -7
  72. package/dist/lib/protocols/rawResponseCapture.d.mts +12 -0
  73. package/dist/lib/protocols/rawResponseCapture.d.ts +12 -0
  74. package/dist/lib/protocols/rawResponseCapture.js +33 -3
  75. package/dist/lib/protocols/rawResponseCapture.mjs +32 -3
  76. package/dist/lib/registry/types.generated.d.mts +377 -9
  77. package/dist/lib/registry/types.generated.d.ts +377 -9
  78. package/dist/lib/reporting/content-mismatch.d.mts +126 -0
  79. package/dist/lib/reporting/content-mismatch.d.ts +126 -0
  80. package/dist/lib/reporting/content-mismatch.js +90 -0
  81. package/dist/lib/reporting/content-mismatch.mjs +66 -0
  82. package/dist/lib/reporting/evidence.d.mts +1 -0
  83. package/dist/lib/reporting/evidence.d.ts +1 -0
  84. package/dist/lib/reporting/evidence.js +32 -3
  85. package/dist/lib/reporting/evidence.mjs +31 -3
  86. package/dist/lib/reporting/index.d.mts +3 -1
  87. package/dist/lib/reporting/index.d.ts +3 -1
  88. package/dist/lib/reporting/index.js +3 -0
  89. package/dist/lib/reporting/index.mjs +2 -0
  90. package/dist/lib/reporting/ledger/handler.d.mts +51 -1
  91. package/dist/lib/reporting/ledger/handler.d.ts +51 -1
  92. package/dist/lib/reporting/ledger/handler.js +306 -38
  93. package/dist/lib/reporting/ledger/handler.mjs +304 -37
  94. package/dist/lib/reporting/ledger/health.d.mts +12 -0
  95. package/dist/lib/reporting/ledger/health.d.ts +12 -0
  96. package/dist/lib/reporting/ledger/health.js +15 -2
  97. package/dist/lib/reporting/ledger/health.mjs +13 -1
  98. package/dist/lib/reporting/ledger/index.d.mts +3 -0
  99. package/dist/lib/reporting/ledger/index.d.ts +3 -0
  100. package/dist/lib/reporting/ledger/index.js +7 -1
  101. package/dist/lib/reporting/ledger/index.mjs +3 -0
  102. package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
  103. package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
  104. package/dist/lib/reporting/ledger/lifecycle.js +244 -37
  105. package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
  106. package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
  107. package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
  108. package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
  109. package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
  110. package/dist/lib/reporting/ledger/managed.d.mts +355 -0
  111. package/dist/lib/reporting/ledger/managed.d.ts +355 -0
  112. package/dist/lib/reporting/ledger/managed.js +661 -0
  113. package/dist/lib/reporting/ledger/managed.mjs +633 -0
  114. package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
  115. package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
  116. package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
  117. package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
  118. package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
  119. package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
  120. package/dist/lib/reporting/ledger/postgres.js +1153 -21
  121. package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
  122. package/dist/lib/reporting/ledger/producer.d.mts +8 -0
  123. package/dist/lib/reporting/ledger/producer.d.ts +8 -0
  124. package/dist/lib/reporting/ledger/producer.js +146 -52
  125. package/dist/lib/reporting/ledger/producer.mjs +146 -51
  126. package/dist/lib/reporting/ledger/types.d.mts +358 -1
  127. package/dist/lib/reporting/ledger/types.d.ts +358 -1
  128. package/dist/lib/reporting/ledger/types.js +3 -0
  129. package/dist/lib/reporting/ledger/types.mjs +2 -0
  130. package/dist/lib/reporting/reconciliation.d.mts +362 -2
  131. package/dist/lib/reporting/reconciliation.d.ts +362 -2
  132. package/dist/lib/reporting/reconciliation.js +1051 -7
  133. package/dist/lib/reporting/reconciliation.mjs +1053 -7
  134. package/dist/lib/reporting/service/conformance.d.mts +35 -0
  135. package/dist/lib/reporting/service/conformance.d.ts +35 -0
  136. package/dist/lib/reporting/service/conformance.js +89 -0
  137. package/dist/lib/reporting/service/conformance.mjs +68 -0
  138. package/dist/lib/reporting/service/index.d.mts +182 -0
  139. package/dist/lib/reporting/service/index.d.ts +182 -0
  140. package/dist/lib/reporting/service/index.js +793 -0
  141. package/dist/lib/reporting/service/index.mjs +787 -0
  142. package/dist/lib/reporting/source/index.d.mts +2 -1
  143. package/dist/lib/reporting/source/index.d.ts +2 -1
  144. package/dist/lib/reporting/source/index.js +16 -3
  145. package/dist/lib/reporting/source/index.mjs +12 -1
  146. package/dist/lib/reporting/source/inline.d.mts +88 -1
  147. package/dist/lib/reporting/source/inline.d.ts +88 -1
  148. package/dist/lib/reporting/source/inline.js +1161 -163
  149. package/dist/lib/reporting/source/inline.mjs +1166 -163
  150. package/dist/lib/reporting/source/manifest.js +12 -7
  151. package/dist/lib/reporting/source/manifest.mjs +12 -7
  152. package/dist/lib/reporting/source/source.d.mts +26 -0
  153. package/dist/lib/reporting/source/source.d.ts +26 -0
  154. package/dist/lib/reporting/source/source.js +71 -2
  155. package/dist/lib/reporting/source/source.mjs +65 -1
  156. package/dist/lib/schemas/index.d.mts +22 -1
  157. package/dist/lib/schemas/index.d.ts +22 -1
  158. package/dist/lib/schemas/index.js +7 -0
  159. package/dist/lib/schemas/index.mjs +7 -0
  160. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  161. package/dist/lib/server/create-adcp-server.d.mts +18 -0
  162. package/dist/lib/server/create-adcp-server.d.ts +18 -0
  163. package/dist/lib/server/create-adcp-server.js +52 -2
  164. package/dist/lib/server/create-adcp-server.mjs +52 -2
  165. package/dist/lib/server/decisioning/account.d.mts +1 -1
  166. package/dist/lib/server/decisioning/account.d.ts +1 -1
  167. package/dist/lib/server/decisioning/index.d.mts +1 -0
  168. package/dist/lib/server/decisioning/index.d.ts +1 -0
  169. package/dist/lib/server/decisioning/platform.d.mts +3 -0
  170. package/dist/lib/server/decisioning/platform.d.ts +3 -0
  171. package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
  172. package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
  173. package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
  174. package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
  175. package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
  176. package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
  177. package/dist/lib/server/index.d.mts +4 -2
  178. package/dist/lib/server/index.d.ts +4 -2
  179. package/dist/lib/server/index.js +5 -0
  180. package/dist/lib/server/index.mjs +4 -0
  181. package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
  182. package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
  183. package/dist/lib/server/media-buy-action-resolver.js +297 -0
  184. package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
  185. package/dist/lib/server/media-buy-actions.d.mts +7 -8
  186. package/dist/lib/server/media-buy-actions.d.ts +7 -8
  187. package/dist/lib/server/media-buy-actions.js +57 -14
  188. package/dist/lib/server/media-buy-actions.mjs +63 -14
  189. package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
  190. package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
  191. package/dist/lib/server/notification-subscriptions/index.js +2 -0
  192. package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
  193. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
  194. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
  195. package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
  196. package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
  197. package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
  198. package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
  199. package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
  200. package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
  201. package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
  202. package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
  203. package/dist/lib/server/webhook-emitter.d.mts +40 -5
  204. package/dist/lib/server/webhook-emitter.d.ts +40 -5
  205. package/dist/lib/server/webhook-emitter.js +23 -12
  206. package/dist/lib/server/webhook-emitter.mjs +23 -12
  207. package/dist/lib/storage/interfaces.d.mts +14 -2
  208. package/dist/lib/storage/interfaces.d.ts +14 -2
  209. package/dist/lib/testing/compliance/comply.d.mts +9 -3
  210. package/dist/lib/testing/compliance/comply.d.ts +9 -3
  211. package/dist/lib/testing/compliance/comply.js +158 -3
  212. package/dist/lib/testing/compliance/comply.mjs +159 -4
  213. package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
  214. package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
  215. package/dist/lib/testing/compliance/summary.js +10 -1
  216. package/dist/lib/testing/compliance/summary.mjs +10 -1
  217. package/dist/lib/testing/index.d.mts +1 -1
  218. package/dist/lib/testing/index.d.ts +1 -1
  219. package/dist/lib/testing/index.js +2 -0
  220. package/dist/lib/testing/index.mjs +3 -1
  221. package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
  222. package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
  223. package/dist/lib/testing/storyboard/agent-routing.js +75 -13
  224. package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
  225. package/dist/lib/testing/storyboard/index.d.mts +1 -0
  226. package/dist/lib/testing/storyboard/index.d.ts +1 -0
  227. package/dist/lib/testing/storyboard/index.js +3 -0
  228. package/dist/lib/testing/storyboard/index.mjs +2 -0
  229. package/dist/lib/testing/storyboard/junit.d.mts +1 -1
  230. package/dist/lib/testing/storyboard/junit.d.ts +1 -1
  231. package/dist/lib/testing/storyboard/junit.js +21 -2
  232. package/dist/lib/testing/storyboard/junit.mjs +21 -2
  233. package/dist/lib/testing/storyboard/probes.d.mts +130 -0
  234. package/dist/lib/testing/storyboard/probes.d.ts +130 -0
  235. package/dist/lib/testing/storyboard/probes.js +682 -10
  236. package/dist/lib/testing/storyboard/probes.mjs +683 -3
  237. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
  238. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
  239. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
  240. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
  241. package/dist/lib/testing/storyboard/request-signing/grader.js +46 -22
  242. package/dist/lib/testing/storyboard/request-signing/grader.mjs +43 -21
  243. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
  244. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
  245. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
  246. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
  247. package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
  248. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
  249. package/dist/lib/testing/storyboard/runner.d.mts +103 -0
  250. package/dist/lib/testing/storyboard/runner.d.ts +103 -0
  251. package/dist/lib/testing/storyboard/runner.js +1090 -268
  252. package/dist/lib/testing/storyboard/runner.mjs +1096 -261
  253. package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
  254. package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
  255. package/dist/lib/testing/storyboard/seeding.js +55 -24
  256. package/dist/lib/testing/storyboard/seeding.mjs +55 -24
  257. package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
  258. package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
  259. package/dist/lib/testing/storyboard/test-kit.js +8 -2
  260. package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
  261. package/dist/lib/testing/storyboard/types.d.mts +132 -10
  262. package/dist/lib/testing/storyboard/types.d.ts +132 -10
  263. package/dist/lib/testing/storyboard/types.js +17 -0
  264. package/dist/lib/testing/storyboard/types.mjs +16 -0
  265. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  266. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  267. package/dist/lib/testing/storyboard/validations.js +16 -0
  268. package/dist/lib/testing/storyboard/validations.mjs +16 -0
  269. package/dist/lib/testing/test-controller.d.mts +1 -1
  270. package/dist/lib/testing/test-controller.d.ts +1 -1
  271. package/dist/lib/types/buy-products.d.ts +71 -6
  272. package/dist/lib/types/control-media-buy.d.ts +25 -11
  273. package/dist/lib/types/core.generated.d.mts +69 -10
  274. package/dist/lib/types/core.generated.d.ts +69 -10
  275. package/dist/lib/types/create-media-buy.d.ts +71 -6
  276. package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
  277. package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
  278. package/dist/lib/types/index.d.mts +2 -2
  279. package/dist/lib/types/index.d.ts +2 -2
  280. package/dist/lib/types/schemas.generated.d.ts +8040 -8116
  281. package/dist/lib/types/schemas.generated.js +1074 -309
  282. package/dist/lib/types/schemas.generated.mjs +1068 -309
  283. package/dist/lib/types/tools.generated.d.mts +65 -6
  284. package/dist/lib/types/tools.generated.d.ts +65 -6
  285. package/dist/lib/types/update-media-buy.d.ts +71 -6
  286. package/dist/lib/utils/redact-secrets.d.mts +1 -1
  287. package/dist/lib/utils/redact-secrets.d.ts +1 -1
  288. package/dist/lib/utils/redact-secrets.js +1 -1
  289. package/dist/lib/utils/redact-secrets.mjs +1 -1
  290. package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
  291. package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
  292. package/dist/lib/v2/projection/cache-versions.js +1 -15
  293. package/dist/lib/v2/projection/cache-versions.mjs +1 -14
  294. package/dist/lib/v2/projection/canonical-properties.js +2 -2
  295. package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
  296. package/dist/lib/v2/projection/registry.d.mts +1 -1
  297. package/dist/lib/v2/projection/registry.d.ts +1 -1
  298. package/dist/lib/v2/projection/registry.js +2 -2
  299. package/dist/lib/v2/projection/registry.mjs +3 -3
  300. package/dist/lib/validation/schema-loader.d.mts +9 -1
  301. package/dist/lib/validation/schema-loader.d.ts +9 -1
  302. package/dist/lib/validation/schema-loader.js +65 -8
  303. package/dist/lib/validation/schema-loader.mjs +64 -8
  304. package/dist/lib/version.d.mts +5 -5
  305. package/dist/lib/version.d.ts +5 -5
  306. package/dist/lib/version.js +3 -8
  307. package/dist/lib/version.mjs +3 -8
  308. package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
  309. package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
  310. package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
  311. package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
  312. package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
  313. package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
  314. package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
  315. package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
  316. package/dist/lib/wholesale-feed-sync/sync.js +3 -1
  317. package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
  318. package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
  319. package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
  320. package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
  321. package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
  322. package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
  323. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
  324. package/docs/CLI.md +1 -1
  325. package/docs/TYPE-SUMMARY.md +118 -4
  326. package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
  327. package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
  328. package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
  329. package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
  330. package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
  331. package/docs/guides/EXISTING-PLATFORM.md +80 -1
  332. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +57 -0
  333. package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
  334. package/docs/guides/REPORTING-LEDGER.md +654 -3
  335. package/docs/guides/REPORTING-RECONCILIATION.md +50 -0
  336. package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
  337. package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
  338. package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
  339. package/docs/guides/idempotency-crash-recovery.md +4 -0
  340. package/docs/llms.txt +4 -2
  341. package/docs/migration-14.x-rc-worksheet.md +60 -5
  342. package/docs/migration-7.9-to-7.10.md +7 -5
  343. package/examples/README.md +17 -0
  344. package/examples/durable-buyer-writes/caller.ts +745 -0
  345. package/examples/durable-buyer-writes/worker.ts +240 -0
  346. package/examples/reliable-reporting-service/README.md +100 -0
  347. package/examples/seller-3.2-starter.ts +7 -8
  348. package/examples/targeting-input-existing-platform.ts +153 -0
  349. package/package.json +41 -29
  350. package/skills/build-seller-agent/SKILL.md +2 -0
  351. package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
  352. package/skills/cross-cutting.md +28 -11
  353. package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
  354. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  355. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
  356. package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
  357. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
  358. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  359. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
  360. package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
  361. package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
  362. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  363. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
  364. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  365. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
  366. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  367. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  368. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  369. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  370. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
  371. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
  372. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
  373. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  374. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  375. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  376. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
  377. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
  378. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
  379. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  380. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
  381. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  382. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  383. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
  384. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  385. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  386. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  387. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  388. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  389. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  390. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
  391. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  392. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  393. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  394. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  395. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  396. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  397. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  398. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
  399. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  400. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  401. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  402. package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
  403. package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
  404. package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
  405. package/compliance/cache/3.1.0-beta.7/index.json +0 -356
  406. package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
  407. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  408. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
  409. package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
  410. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
  411. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  412. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
  413. package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
  414. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
  415. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  416. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
  417. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  418. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
  419. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  420. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  421. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  422. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  423. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
  424. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
  425. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
  426. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  427. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  428. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  429. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
  430. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
  431. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
  432. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  433. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
  434. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  435. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  436. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
  437. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  438. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  439. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  440. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  441. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  442. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  443. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
  444. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  445. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  446. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  447. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  448. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  449. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  450. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  451. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
  452. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  453. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  454. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  455. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
  456. package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
  457. package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
  458. package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
  459. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
  460. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
  461. package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
  462. package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
  463. package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
  464. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
  465. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
  466. package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
  467. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
  468. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
  469. package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
  470. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
  471. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
  472. package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
  473. package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
  474. package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
  475. package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
  476. package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
  477. package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
  478. package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
  479. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
  480. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
  481. package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
  482. package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
  483. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
  484. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
  485. package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
  486. package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
  487. package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
  488. package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
  489. package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
  490. package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
  491. package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
  492. package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
  493. package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
  494. package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
  495. package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
  496. package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
  497. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
  498. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
  499. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
  500. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
  501. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
  502. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
  503. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
  504. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
  505. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
  506. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
  507. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
  508. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
  509. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
  510. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
  511. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
  512. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
  513. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
  514. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
  515. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
  516. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
  517. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
  518. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
  519. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
  520. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
  521. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
  522. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
  523. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
  524. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
  525. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
  526. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
  527. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
  528. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
  529. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
  530. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
  531. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
  532. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
  533. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
  534. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
  535. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
  536. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
  537. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
  538. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
  539. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
  540. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  541. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
  542. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
  543. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
  544. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
  545. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
  546. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
  547. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
  548. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
  549. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
  550. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
  551. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
  552. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
  553. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
  554. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
  555. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
  556. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
  557. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
  558. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
  559. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
  560. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
  561. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
  562. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
  563. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
  564. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
  565. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
  566. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
  567. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
  568. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
  569. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
  570. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
  571. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
  572. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
  573. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
  574. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
  575. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
  576. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
  577. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
  578. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
  579. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
  580. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
  581. package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
  582. package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
  583. package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
  584. package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
  585. package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
  586. package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
  587. package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
  588. package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
  589. package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
  590. package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
  591. package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
  592. package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
  593. package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
  594. package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
  595. package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
  596. package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
  597. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
  598. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
  599. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
  600. package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
  601. package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
  602. package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
  603. package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
  604. package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
  605. package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
  606. package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
  607. package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
  608. package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
  609. package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
  610. package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
  611. package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
  612. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
  613. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
  614. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
  615. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
  616. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
  617. package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
  618. package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
  619. package/dist/lib/types/v3-1-beta/index.mjs +0 -1
  620. package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
  621. package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
  622. /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
@@ -1,22 +1,97 @@
1
1
  import type { HttpProbeResult, StoryboardRunOptions } from '../types';
2
2
  /**
3
- * Resolve the vector transport for a graded agent. Defaults to `'mcp'`: the
4
- * storyboard runner reaches agents through `tools/call` (MCP, or the
5
- * AdCP-over-A2A binding) — never through per-task HTTP paths — so replaying
6
- * the vectors' recorded REST targets (`/adcp/create_media_buy`, raw task
7
- * body) verbatim guarantees a routing 404 on every MCP-transport agent
8
- * before its verifier can run (adcontextprotocol/adcp#6548). Operators
9
- * grading a REST-binding agent opt back in with
10
- * `request_signing.transport: 'raw'`.
3
+ * Detail surfaced on each vector step an A2A run cannot frame. Written for
4
+ * the operator reading a conformance report: it has to say what coverage is
5
+ * missing and what would restore it.
6
+ *
7
+ * Reported as detailed reason `signing_transport_unavailable`, canonical
8
+ * `not_applicable` with the sub-reason token as `skip.detail` — the output
9
+ * contract's registered shape. What keeps the gap from reading as a pass is
10
+ * `signingCoverage` in the runner, not the reason: no vector reached the
11
+ * agent, so the storyboard cannot pass and the track grades `partial`
12
+ * instead of letting a sibling storyboard's passes roll it up green.
13
+ */
14
+ export declare const SIGNING_VECTORS_UNAVAILABLE_DETAIL: string;
15
+ /**
16
+ * Resolve the vector transport for a graded agent.
17
+ *
18
+ * Defaults to `'mcp'`: the storyboard runner reaches MCP agents through
19
+ * `tools/call` — never through per-task HTTP paths — so replaying the
20
+ * vectors' recorded REST targets (`/adcp/create_media_buy`, raw task body)
21
+ * verbatim guarantees a routing 404 on every MCP-transport agent before its
22
+ * verifier can run (adcontextprotocol/adcp#6548). Operators grading a
23
+ * REST-binding agent opt back in with `request_signing.transport: 'raw'`.
24
+ *
25
+ * Returns `undefined` on an A2A run that didn't pick a transport explicitly:
26
+ * neither dispatch shape this runner implements is an A2A request, so the
27
+ * caller skips those vectors as `signing_transport_unavailable` instead of
28
+ * POSTing an MCP envelope at an A2A
29
+ * endpoint and grading the resulting 405 as a signature failure
30
+ * (adcp-client#2954). An explicit `transport` still wins — that's the escape
31
+ * hatch for an agent whose MCP or REST binding answers on the same URL as its
32
+ * A2A card.
33
+ *
34
+ * There is no `'a2a'` member yet because the path isn't wired here, not
35
+ * because the official client is incapable: `@a2a-js/sdk` issues the JSON-RPC
36
+ * methods these vectors target, `tasks/cancel` included. Wiring it means
37
+ * signing a request the official client issues — applying each vector's RFC
38
+ * 9421 headers to that client's own request — plus an upstream answer for how
39
+ * a verifier scopes `required_for` over A2A methods. RFC 9421 conformance
40
+ * needs byte-level control of the request, which `builder.ts` has for the two
41
+ * bindings AdCP defines for these fixtures; there is no third binding to
42
+ * write bytes against, and picking one here would be the SDK inventing it.
43
+ * The only vectors that still grade are the ones needing no wire exchange at
44
+ * all — see `gradableWithoutVectorTransport`.
11
45
  */
12
46
  export declare function resolveVectorTransport(rsOpts: {
13
47
  transport?: 'raw' | 'mcp';
14
- }): 'raw' | 'mcp';
48
+ }, protocol?: 'mcp' | 'a2a'): 'raw' | 'mcp' | undefined;
15
49
  /**
16
50
  * Dispatch a synthesized request-signing step. The step ID encodes the vector
17
51
  * (`positive-<id>` / `negative-<id>`); this helper decodes it, runs the
18
52
  * grader's per-vector logic, and maps the `VectorGradeResult` to an
19
- * `HttpProbeResult`-shaped return so the existing validation pipeline
20
- * (`http_status`, `http_status_in`) works unchanged.
53
+ * `HttpProbeResult`-shaped return so the HTTP validation pipeline
54
+ * (`http_status`, `http_status_in`) works unchanged for probed vectors.
55
+ *
56
+ * Vectors the grader decides in-library rather than over HTTP (the
57
+ * `jwks_override` negatives) carry `http_status: 0` by contract — there is no
58
+ * wire exchange to report. Their verdict travels on `error`: unset when the
59
+ * library verifier produced the expected rejection, set to the grader's
60
+ * diagnostic otherwise. `synthesizeNegativeStep` pairs those vectors with a
61
+ * `probe_passed` validation that reads exactly that field; asserting an HTTP
62
+ * status against them would compare a grade to a status code that no
63
+ * implementation can move (adcp-client#2955).
21
64
  */
22
65
  export declare function probeRequestSigningVector(stepId: string, agentUrl: string, options: StoryboardRunOptions): Promise<HttpProbeResult>;
66
+ /**
67
+ * Wire-name grammar for `request_signing.protocol_methods_*`, mirroring the
68
+ * `items` constraint the capabilities schema ships for each AdCP line:
69
+ *
70
+ * - 3.2+ — slash paths of one or more segments (`tasks/cancel`,
71
+ * `tasks/pushNotificationConfig/set`) or A2A 1.0 PascalCase names
72
+ * (`CancelTask`), 256 characters max, and never `tools/call`.
73
+ * - pre-3.2 — a single lowercase slash pair (`tasks/cancel`), with no
74
+ * length cap, because that line's schema declares none.
75
+ *
76
+ * Keyed by line rather than taking the union of both, because the union is
77
+ * unsafe in one direction: honouring a 3.2-only name on a 3.1 run accepts a
78
+ * declaration that line's schema rejects, and any accepted declaration
79
+ * omitting the vector's method suppresses that vector.
80
+ *
81
+ * Pinned against both shipped schemas by test — a grammar that drifts wider
82
+ * than the schema re-opens exactly that hole.
83
+ */
84
+ export declare const PROTOCOL_METHOD_GRAMMARS: {
85
+ readonly since_3_2: {
86
+ readonly pattern: RegExp;
87
+ readonly maxLength: number | undefined;
88
+ readonly forbidden: readonly string[];
89
+ };
90
+ readonly pre_3_2: {
91
+ readonly pattern: RegExp;
92
+ readonly maxLength: number | undefined;
93
+ readonly forbidden: readonly string[];
94
+ };
95
+ };
96
+ /** Token validator for an AdCP version string, per `PROTOCOL_METHOD_GRAMMARS`. */
97
+ export declare function protocolMethodGrammarFor(version: string): (token: string) => boolean;
@@ -18,15 +18,23 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var probe_dispatch_exports = {};
20
20
  __export(probe_dispatch_exports, {
21
+ PROTOCOL_METHOD_GRAMMARS: () => PROTOCOL_METHOD_GRAMMARS,
22
+ SIGNING_VECTORS_UNAVAILABLE_DETAIL: () => SIGNING_VECTORS_UNAVAILABLE_DETAIL,
21
23
  probeRequestSigningVector: () => probeRequestSigningVector,
24
+ protocolMethodGrammarFor: () => protocolMethodGrammarFor,
22
25
  resolveVectorTransport: () => resolveVectorTransport
23
26
  });
24
27
  module.exports = __toCommonJS(probe_dispatch_exports);
28
+ var import_path = require("path");
25
29
  var import_grader = require('./grader.js');
26
30
  var import_synthesize = require('./synthesize.js');
27
31
  var import_vector_loader = require('./vector-loader.js');
28
- function resolveVectorTransport(rsOpts) {
29
- return rsOpts.transport ?? "mcp";
32
+ var import_version = require('../../../version.js');
33
+ const SIGNING_VECTORS_UNAVAILABLE_DETAIL = "Coverage unavailable: this runner dispatches request-signing vectors two ways \u2014 a verbatim replay of the vector's recorded REST request (`raw`), or the same body re-framed as an MCP `tools/call` envelope (`mcp`) \u2014 and it does not yet dispatch them through the official A2A client, so nothing about this agent's verifier was graded on this run (adcontextprotocol/adcp-client#2954). Remedy: grade the verifier through the agent's MCP or REST binding, or set `request_signing.transport` (CLI `--signing-transport`) when that binding answers at this same URL.";
34
+ function resolveVectorTransport(rsOpts, protocol) {
35
+ if (rsOpts.transport) return rsOpts.transport;
36
+ if (protocol === "a2a") return void 0;
37
+ return "mcp";
30
38
  }
31
39
  async function probeRequestSigningVector(stepId, agentUrl, options) {
32
40
  const parsed = (0, import_synthesize.parseRequestSigningStepId)(stepId);
@@ -40,22 +48,42 @@ async function probeRequestSigningVector(stepId, agentUrl, options) {
40
48
  };
41
49
  }
42
50
  const rsOpts = options.request_signing ?? {};
43
- if (parsed.kind === "negative" && rsOpts.skipRateAbuse) {
44
- try {
45
- const loaded = (0, import_vector_loader.loadRequestSigningVectors)({
46
- version: options.adcpVersion,
47
- complianceDir: options.complianceDir
48
- });
49
- const vector = loaded.negative.find((v) => v.id === parsed.vector_id);
50
- if (vector?.requires_contract === "rate_abuse") {
51
- return skipProbe(agentUrl, "rate_abuse_opt_out");
52
- }
53
- } catch {
54
- }
51
+ const transport = resolveVectorTransport(rsOpts, options.protocol);
52
+ if (rsOpts.onlyVectors && !rsOpts.onlyVectors.includes(parsed.vector_id)) {
53
+ return skipProbe(agentUrl, "not_in_only_vectors");
55
54
  }
56
55
  if (rsOpts.skipVectors?.includes(parsed.vector_id)) {
57
56
  return skipProbe(agentUrl, "operator_skip");
58
57
  }
58
+ let loaded;
59
+ try {
60
+ loaded = (0, import_vector_loader.loadRequestSigningVectors)({
61
+ version: options.adcpVersion,
62
+ complianceDir: options.complianceDir
63
+ });
64
+ } catch (err) {
65
+ return probeError(
66
+ agentUrl,
67
+ `request_signing_probe: could not load request-signing vectors: ${err instanceof Error ? err.message : String(err)}`
68
+ );
69
+ }
70
+ const vector = parsed.kind === "negative" ? loaded.negative.find((v) => v.id === parsed.vector_id) : loaded.positive.find((v) => v.id === parsed.vector_id);
71
+ if (!vector) {
72
+ return probeError(
73
+ agentUrl,
74
+ `request_signing_probe: ${parsed.kind} vector "${parsed.vector_id}" is not in the vector set this run loaded`
75
+ );
76
+ }
77
+ const semantic = (0, import_grader.semanticVectorExclusion)(vector, declaredProtocolMethodCoverage(options, loaded.sourceDir));
78
+ if (semantic) {
79
+ return skipProbe(agentUrl, semantic.skip_reason, semantic.diagnostic);
80
+ }
81
+ if (parsed.kind === "negative" && rsOpts.skipRateAbuse && vector.requires_contract === "rate_abuse") {
82
+ return skipProbe(agentUrl, "rate_abuse_opt_out");
83
+ }
84
+ if (!transport && !gradableWithoutVectorTransport(parsed.kind, vector)) {
85
+ return skipProbe(agentUrl, "signing_transport_unavailable", SIGNING_VECTORS_UNAVAILABLE_DETAIL);
86
+ }
59
87
  try {
60
88
  const result = await (0, import_grader.gradeOneVector)(parsed.vector_id, parsed.kind, agentUrl, {
61
89
  ...options.adcpVersion && { version: options.adcpVersion },
@@ -66,7 +94,10 @@ async function probeRequestSigningVector(stepId, agentUrl, options) {
66
94
  onlyVectors: rsOpts.onlyVectors,
67
95
  skipVectors: rsOpts.skipVectors,
68
96
  skipRateAbuse: rsOpts.skipRateAbuse,
69
- transport: resolveVectorTransport(rsOpts),
97
+ // A vector reaching here without a resolved transport is in-library
98
+ // only (`gradableWithoutVectorTransport`); the grader never probes it,
99
+ // so the value is inert.
100
+ transport: transport ?? "mcp",
70
101
  // The auto-initialize handshake authenticates like any MCP client;
71
102
  // agents commonly require auth on `initialize` (the signed vectors
72
103
  // themselves stay bearer-less — the signature is their auth).
@@ -86,23 +117,86 @@ async function probeRequestSigningVector(stepId, agentUrl, options) {
86
117
  status: result.http_status,
87
118
  headers,
88
119
  body: result.diagnostic ?? null,
89
- error: result.passed ? void 0 : result.diagnostic ?? "vector grade failed"
120
+ error: result.passed ? void 0 : result.diagnostic ?? "vector grade failed",
121
+ // Carry the grader's transport-fault provenance through. Without it a
122
+ // DNS or connect failure reaches the coverage classifier looking like
123
+ // an in-library grade — `status: 0` with text — and the report tells
124
+ // the operator only the SDK self-check ran, which is false and points
125
+ // them away from the connection they need to fix.
126
+ ...result.transport_error === true && { probe_error: true }
90
127
  };
91
128
  } catch (err) {
92
- return {
93
- url: agentUrl,
94
- status: 0,
95
- headers: {},
96
- body: null,
97
- error: `request_signing_probe threw: ${err instanceof Error ? err.message : String(err)}`
98
- };
129
+ return probeError(agentUrl, `request_signing_probe threw: ${err instanceof Error ? err.message : String(err)}`);
99
130
  }
100
131
  }
101
- function skipProbe(url, reason) {
102
- return { url, status: 0, headers: {}, body: null, skipped: true, skip_reason: reason };
132
+ function gradableWithoutVectorTransport(kind, vector) {
133
+ return kind === "negative" && vector.jwks_override !== void 0;
134
+ }
135
+ function declaredProtocolMethodCoverage(options, sourceDir) {
136
+ const raw = options._profile?.raw_capabilities;
137
+ if (!raw || typeof raw !== "object") return void 0;
138
+ const block = raw.request_signing;
139
+ if (!block || typeof block !== "object") return void 0;
140
+ const declared = block;
141
+ if (declared.supported !== true) return void 0;
142
+ const bucket = declaredProtocolMethods(
143
+ declared.protocol_methods_required_for,
144
+ protocolMethodGrammarFor(complianceLineOf(sourceDir) ?? options.adcpVersion ?? import_version.ADCP_VERSION)
145
+ );
146
+ if (!bucket.ok) return void 0;
147
+ return { ...bucket.value && { protocol_methods_required_for: bucket.value } };
148
+ }
149
+ function complianceLineOf(sourceDir) {
150
+ const version = (0, import_path.basename)((0, import_path.dirname)((0, import_path.dirname)(sourceDir)));
151
+ return /^\d+\.\d+/.test(version) ? version : void 0;
152
+ }
153
+ function declaredProtocolMethods(value, isValidToken) {
154
+ if (value === void 0) return { ok: true };
155
+ if (!Array.isArray(value)) return { ok: false };
156
+ return value.every((entry) => typeof entry === "string" && isValidToken(entry)) ? { ok: true, value } : { ok: false };
157
+ }
158
+ const PROTOCOL_METHOD_GRAMMARS = {
159
+ since_3_2: {
160
+ pattern: /^(?:[a-z][A-Za-z0-9_]*(?:\/[A-Za-z][A-Za-z0-9_]*)+|[A-Z][A-Za-z0-9_]*)$/,
161
+ maxLength: 256,
162
+ forbidden: ["tools/call"]
163
+ },
164
+ // 3.1 declares no `maxLength`, so imposing one would reject a name that
165
+ // line's schema accepts — and a rejected declaration is graded, which
166
+ // fails a vector the agent never claimed. Each line matches its own schema.
167
+ pre_3_2: {
168
+ pattern: /^[a-z][a-z0-9_]*\/[a-z][a-z0-9_]*$/,
169
+ maxLength: void 0,
170
+ forbidden: []
171
+ }
172
+ };
173
+ function protocolMethodGrammarFor(version) {
174
+ const trimmed = version.startsWith("v") ? version.slice(1) : version;
175
+ const match = /^(\d+)(?:\.(\d+))?/.exec(trimmed);
176
+ const major = Number.parseInt(match?.[1] ?? "0", 10);
177
+ const minor = Number.parseInt(match?.[2] ?? "0", 10);
178
+ const grammar = major > 3 || major === 3 && minor >= 2 ? PROTOCOL_METHOD_GRAMMARS.since_3_2 : PROTOCOL_METHOD_GRAMMARS.pre_3_2;
179
+ return (token) => (grammar.maxLength === void 0 || token.length <= grammar.maxLength) && grammar.pattern.test(token) && !grammar.forbidden.includes(token);
180
+ }
181
+ function probeError(url, message) {
182
+ return { url, status: 0, headers: {}, body: null, error: message, probe_error: true };
183
+ }
184
+ function skipProbe(url, reason, detail) {
185
+ return {
186
+ url,
187
+ status: 0,
188
+ headers: {},
189
+ body: null,
190
+ skipped: true,
191
+ skip_reason: reason,
192
+ ...detail && { error: detail }
193
+ };
103
194
  }
104
195
  // Annotate the CommonJS export names for ESM import in node:
105
196
  0 && (module.exports = {
197
+ PROTOCOL_METHOD_GRAMMARS,
198
+ SIGNING_VECTORS_UNAVAILABLE_DETAIL,
106
199
  probeRequestSigningVector,
200
+ protocolMethodGrammarFor,
107
201
  resolveVectorTransport
108
202
  });
@@ -1,8 +1,13 @@
1
- import { gradeOneVector } from "./grader.mjs";
1
+ import { basename, dirname } from "path";
2
+ import { gradeOneVector, semanticVectorExclusion } from "./grader.mjs";
2
3
  import { parseRequestSigningStepId } from "./synthesize.mjs";
3
4
  import { loadRequestSigningVectors } from "./vector-loader.mjs";
4
- function resolveVectorTransport(rsOpts) {
5
- return rsOpts.transport ?? "mcp";
5
+ import { ADCP_VERSION } from "../../../version.mjs";
6
+ const SIGNING_VECTORS_UNAVAILABLE_DETAIL = "Coverage unavailable: this runner dispatches request-signing vectors two ways \u2014 a verbatim replay of the vector's recorded REST request (`raw`), or the same body re-framed as an MCP `tools/call` envelope (`mcp`) \u2014 and it does not yet dispatch them through the official A2A client, so nothing about this agent's verifier was graded on this run (adcontextprotocol/adcp-client#2954). Remedy: grade the verifier through the agent's MCP or REST binding, or set `request_signing.transport` (CLI `--signing-transport`) when that binding answers at this same URL.";
7
+ function resolveVectorTransport(rsOpts, protocol) {
8
+ if (rsOpts.transport) return rsOpts.transport;
9
+ if (protocol === "a2a") return void 0;
10
+ return "mcp";
6
11
  }
7
12
  async function probeRequestSigningVector(stepId, agentUrl, options) {
8
13
  const parsed = parseRequestSigningStepId(stepId);
@@ -16,22 +21,42 @@ async function probeRequestSigningVector(stepId, agentUrl, options) {
16
21
  };
17
22
  }
18
23
  const rsOpts = options.request_signing ?? {};
19
- if (parsed.kind === "negative" && rsOpts.skipRateAbuse) {
20
- try {
21
- const loaded = loadRequestSigningVectors({
22
- version: options.adcpVersion,
23
- complianceDir: options.complianceDir
24
- });
25
- const vector = loaded.negative.find((v) => v.id === parsed.vector_id);
26
- if (vector?.requires_contract === "rate_abuse") {
27
- return skipProbe(agentUrl, "rate_abuse_opt_out");
28
- }
29
- } catch {
30
- }
24
+ const transport = resolveVectorTransport(rsOpts, options.protocol);
25
+ if (rsOpts.onlyVectors && !rsOpts.onlyVectors.includes(parsed.vector_id)) {
26
+ return skipProbe(agentUrl, "not_in_only_vectors");
31
27
  }
32
28
  if (rsOpts.skipVectors?.includes(parsed.vector_id)) {
33
29
  return skipProbe(agentUrl, "operator_skip");
34
30
  }
31
+ let loaded;
32
+ try {
33
+ loaded = loadRequestSigningVectors({
34
+ version: options.adcpVersion,
35
+ complianceDir: options.complianceDir
36
+ });
37
+ } catch (err) {
38
+ return probeError(
39
+ agentUrl,
40
+ `request_signing_probe: could not load request-signing vectors: ${err instanceof Error ? err.message : String(err)}`
41
+ );
42
+ }
43
+ const vector = parsed.kind === "negative" ? loaded.negative.find((v) => v.id === parsed.vector_id) : loaded.positive.find((v) => v.id === parsed.vector_id);
44
+ if (!vector) {
45
+ return probeError(
46
+ agentUrl,
47
+ `request_signing_probe: ${parsed.kind} vector "${parsed.vector_id}" is not in the vector set this run loaded`
48
+ );
49
+ }
50
+ const semantic = semanticVectorExclusion(vector, declaredProtocolMethodCoverage(options, loaded.sourceDir));
51
+ if (semantic) {
52
+ return skipProbe(agentUrl, semantic.skip_reason, semantic.diagnostic);
53
+ }
54
+ if (parsed.kind === "negative" && rsOpts.skipRateAbuse && vector.requires_contract === "rate_abuse") {
55
+ return skipProbe(agentUrl, "rate_abuse_opt_out");
56
+ }
57
+ if (!transport && !gradableWithoutVectorTransport(parsed.kind, vector)) {
58
+ return skipProbe(agentUrl, "signing_transport_unavailable", SIGNING_VECTORS_UNAVAILABLE_DETAIL);
59
+ }
35
60
  try {
36
61
  const result = await gradeOneVector(parsed.vector_id, parsed.kind, agentUrl, {
37
62
  ...options.adcpVersion && { version: options.adcpVersion },
@@ -42,7 +67,10 @@ async function probeRequestSigningVector(stepId, agentUrl, options) {
42
67
  onlyVectors: rsOpts.onlyVectors,
43
68
  skipVectors: rsOpts.skipVectors,
44
69
  skipRateAbuse: rsOpts.skipRateAbuse,
45
- transport: resolveVectorTransport(rsOpts),
70
+ // A vector reaching here without a resolved transport is in-library
71
+ // only (`gradableWithoutVectorTransport`); the grader never probes it,
72
+ // so the value is inert.
73
+ transport: transport ?? "mcp",
46
74
  // The auto-initialize handshake authenticates like any MCP client;
47
75
  // agents commonly require auth on `initialize` (the signed vectors
48
76
  // themselves stay bearer-less — the signature is their auth).
@@ -62,22 +90,85 @@ async function probeRequestSigningVector(stepId, agentUrl, options) {
62
90
  status: result.http_status,
63
91
  headers,
64
92
  body: result.diagnostic ?? null,
65
- error: result.passed ? void 0 : result.diagnostic ?? "vector grade failed"
93
+ error: result.passed ? void 0 : result.diagnostic ?? "vector grade failed",
94
+ // Carry the grader's transport-fault provenance through. Without it a
95
+ // DNS or connect failure reaches the coverage classifier looking like
96
+ // an in-library grade — `status: 0` with text — and the report tells
97
+ // the operator only the SDK self-check ran, which is false and points
98
+ // them away from the connection they need to fix.
99
+ ...result.transport_error === true && { probe_error: true }
66
100
  };
67
101
  } catch (err) {
68
- return {
69
- url: agentUrl,
70
- status: 0,
71
- headers: {},
72
- body: null,
73
- error: `request_signing_probe threw: ${err instanceof Error ? err.message : String(err)}`
74
- };
102
+ return probeError(agentUrl, `request_signing_probe threw: ${err instanceof Error ? err.message : String(err)}`);
75
103
  }
76
104
  }
77
- function skipProbe(url, reason) {
78
- return { url, status: 0, headers: {}, body: null, skipped: true, skip_reason: reason };
105
+ function gradableWithoutVectorTransport(kind, vector) {
106
+ return kind === "negative" && vector.jwks_override !== void 0;
107
+ }
108
+ function declaredProtocolMethodCoverage(options, sourceDir) {
109
+ const raw = options._profile?.raw_capabilities;
110
+ if (!raw || typeof raw !== "object") return void 0;
111
+ const block = raw.request_signing;
112
+ if (!block || typeof block !== "object") return void 0;
113
+ const declared = block;
114
+ if (declared.supported !== true) return void 0;
115
+ const bucket = declaredProtocolMethods(
116
+ declared.protocol_methods_required_for,
117
+ protocolMethodGrammarFor(complianceLineOf(sourceDir) ?? options.adcpVersion ?? ADCP_VERSION)
118
+ );
119
+ if (!bucket.ok) return void 0;
120
+ return { ...bucket.value && { protocol_methods_required_for: bucket.value } };
121
+ }
122
+ function complianceLineOf(sourceDir) {
123
+ const version = basename(dirname(dirname(sourceDir)));
124
+ return /^\d+\.\d+/.test(version) ? version : void 0;
125
+ }
126
+ function declaredProtocolMethods(value, isValidToken) {
127
+ if (value === void 0) return { ok: true };
128
+ if (!Array.isArray(value)) return { ok: false };
129
+ return value.every((entry) => typeof entry === "string" && isValidToken(entry)) ? { ok: true, value } : { ok: false };
130
+ }
131
+ const PROTOCOL_METHOD_GRAMMARS = {
132
+ since_3_2: {
133
+ pattern: /^(?:[a-z][A-Za-z0-9_]*(?:\/[A-Za-z][A-Za-z0-9_]*)+|[A-Z][A-Za-z0-9_]*)$/,
134
+ maxLength: 256,
135
+ forbidden: ["tools/call"]
136
+ },
137
+ // 3.1 declares no `maxLength`, so imposing one would reject a name that
138
+ // line's schema accepts — and a rejected declaration is graded, which
139
+ // fails a vector the agent never claimed. Each line matches its own schema.
140
+ pre_3_2: {
141
+ pattern: /^[a-z][a-z0-9_]*\/[a-z][a-z0-9_]*$/,
142
+ maxLength: void 0,
143
+ forbidden: []
144
+ }
145
+ };
146
+ function protocolMethodGrammarFor(version) {
147
+ const trimmed = version.startsWith("v") ? version.slice(1) : version;
148
+ const match = /^(\d+)(?:\.(\d+))?/.exec(trimmed);
149
+ const major = Number.parseInt(match?.[1] ?? "0", 10);
150
+ const minor = Number.parseInt(match?.[2] ?? "0", 10);
151
+ const grammar = major > 3 || major === 3 && minor >= 2 ? PROTOCOL_METHOD_GRAMMARS.since_3_2 : PROTOCOL_METHOD_GRAMMARS.pre_3_2;
152
+ return (token) => (grammar.maxLength === void 0 || token.length <= grammar.maxLength) && grammar.pattern.test(token) && !grammar.forbidden.includes(token);
153
+ }
154
+ function probeError(url, message) {
155
+ return { url, status: 0, headers: {}, body: null, error: message, probe_error: true };
156
+ }
157
+ function skipProbe(url, reason, detail) {
158
+ return {
159
+ url,
160
+ status: 0,
161
+ headers: {},
162
+ body: null,
163
+ skipped: true,
164
+ skip_reason: reason,
165
+ ...detail && { error: detail }
166
+ };
79
167
  }
80
168
  export {
169
+ PROTOCOL_METHOD_GRAMMARS,
170
+ SIGNING_VECTORS_UNAVAILABLE_DETAIL,
81
171
  probeRequestSigningVector,
172
+ protocolMethodGrammarFor,
82
173
  resolveVectorTransport
83
174
  };
@@ -60,10 +60,30 @@ function synthesizePositiveStep(vector) {
60
60
  };
61
61
  }
62
62
  function synthesizeNegativeStep(vector) {
63
- return {
63
+ const base = {
64
64
  id: `${NEGATIVE_STEP_PREFIX}${vector.id}`,
65
65
  title: `Negative: ${vector.name}`,
66
- task: REQUEST_SIGNING_PROBE_TASK,
66
+ task: REQUEST_SIGNING_PROBE_TASK
67
+ };
68
+ const inLibraryTitle = `Negative (SDK verifier self-check, agent not contacted): ${vector.name}`;
69
+ if (vector.jwks_override) {
70
+ return {
71
+ ...base,
72
+ title: inLibraryTitle,
73
+ narrative: `Vector ${vector.id} publishes an inline malformed JWK, so it is graded against the library verifier rather than sent to the agent; expect rejection with error="${vector.expected_error_code}".`,
74
+ validations: [
75
+ {
76
+ check: "probe_passed",
77
+ // Name the grading plane in the description: this step reports on
78
+ // the SDK verifier, not on the agent under test, and a report
79
+ // reader counting graded vectors has to be able to tell.
80
+ description: `SDK verifier rejects ${vector.id} with error="${vector.expected_error_code}" (graded in-library; the agent under test is not contacted)`
81
+ }
82
+ ]
83
+ };
84
+ }
85
+ return {
86
+ ...base,
67
87
  narrative: `Build vector ${vector.id} with its documented mutation and send to the agent; expect 401 with WWW-Authenticate: Signature error="${vector.expected_error_code}".`,
68
88
  validations: [
69
89
  {
@@ -33,10 +33,30 @@ function synthesizePositiveStep(vector) {
33
33
  };
34
34
  }
35
35
  function synthesizeNegativeStep(vector) {
36
- return {
36
+ const base = {
37
37
  id: `${NEGATIVE_STEP_PREFIX}${vector.id}`,
38
38
  title: `Negative: ${vector.name}`,
39
- task: REQUEST_SIGNING_PROBE_TASK,
39
+ task: REQUEST_SIGNING_PROBE_TASK
40
+ };
41
+ const inLibraryTitle = `Negative (SDK verifier self-check, agent not contacted): ${vector.name}`;
42
+ if (vector.jwks_override) {
43
+ return {
44
+ ...base,
45
+ title: inLibraryTitle,
46
+ narrative: `Vector ${vector.id} publishes an inline malformed JWK, so it is graded against the library verifier rather than sent to the agent; expect rejection with error="${vector.expected_error_code}".`,
47
+ validations: [
48
+ {
49
+ check: "probe_passed",
50
+ // Name the grading plane in the description: this step reports on
51
+ // the SDK verifier, not on the agent under test, and a report
52
+ // reader counting graded vectors has to be able to tell.
53
+ description: `SDK verifier rejects ${vector.id} with error="${vector.expected_error_code}" (graded in-library; the agent under test is not contacted)`
54
+ }
55
+ ]
56
+ };
57
+ }
58
+ return {
59
+ ...base,
40
60
  narrative: `Build vector ${vector.id} with its documented mutation and send to the agent; expect 401 with WWW-Authenticate: Signature error="${vector.expected_error_code}".`,
41
61
  validations: [
42
62
  {