@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
@@ -26,6 +26,7 @@ __export(testing_exports, {
26
26
  DISCOVERY_ARM_SCENARIOS: () => import_test_controller.DISCOVERY_ARM_SCENARIOS,
27
27
  FixtureBindingRegistry: () => import_storyboard.FixtureBindingRegistry,
28
28
  GovernanceAgentStub: () => import_stubs.GovernanceAgentStub,
29
+ MCP_SESSION_PROBE_TASK: () => import_storyboard.MCP_SESSION_PROBE_TASK,
29
30
  RATE_LIMIT_TRIP_CONTRACT: () => import_storyboard.RATE_LIMIT_TRIP_CONTRACT,
30
31
  RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS: () => import_storyboard.RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,
31
32
  RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX: () => import_storyboard.RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,
@@ -215,6 +216,7 @@ var import_storyboard = require('./storyboard/index.js');
215
216
  DISCOVERY_ARM_SCENARIOS,
216
217
  FixtureBindingRegistry,
217
218
  GovernanceAgentStub,
219
+ MCP_SESSION_PROBE_TASK,
218
220
  RATE_LIMIT_TRIP_CONTRACT,
219
221
  RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,
220
222
  RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,
@@ -180,7 +180,8 @@ import {
180
180
  normalizeOAuthResourceForComparison,
181
181
  redactOAuthUrlForOutput,
182
182
  BrandJsonSchema,
183
- AdagentsJsonSchema
183
+ AdagentsJsonSchema,
184
+ MCP_SESSION_PROBE_TASK
184
185
  } from "./storyboard/index.mjs";
185
186
  export {
186
187
  AdagentsJsonSchema,
@@ -191,6 +192,7 @@ export {
191
192
  DISCOVERY_ARM_SCENARIOS,
192
193
  FixtureBindingRegistry,
193
194
  GovernanceAgentStub,
195
+ MCP_SESSION_PROBE_TASK,
194
196
  RATE_LIMIT_TRIP_CONTRACT,
195
197
  RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,
196
198
  RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,
@@ -1,49 +1,18 @@
1
- /**
2
- * Per-specialism agent routing for the storyboard runner (#1066).
3
- *
4
- * Resolves each step's `task` to one of N agents in
5
- * `StoryboardRunOptions.agents` so storyboards that span specialisms
6
- * (e.g., a `signal_marketplace/governance_denied` flow that calls
7
- * `sync_governance` then `activate_signal`) can hit the tenant that
8
- * actually owns each tool.
9
- *
10
- * Resolution order per step:
11
- * 1. Explicit `step.agent` (escape hatch for cross-domain tools)
12
- * 2. `TASK_FEATURE_MAP` → first protocol → unique claimant in the agents map
13
- * 3. `options.default_agent`
14
- * 4. Throw `RoutingError`
15
- *
16
- * Multi-claim conflicts (two agents claim the same protocol AND a step
17
- * relying on that protocol lacks an explicit `agent:` override) fail-fast
18
- * at routing-context build time, BEFORE any non-discovery network calls.
19
- *
20
- * ## Webhook receiver topology in routed mode
21
- *
22
- * When `StoryboardRunOptions.webhook_receiver` is set alongside `agents`,
23
- * the receiver is **shared** across all tenants — one HTTP server, one base
24
- * URL. The runner does not create per-tenant receivers and does not need to:
25
- * delivery correlation is by **step-keyed URL** (`/step/<step_id>/<op_id>`),
26
- * not by source agent. If both a governance tenant and a signals tenant
27
- * emit webhooks during the same run, the assertion harness matches each
28
- * delivery to its `expect_webhook*` step by URL path, regardless of which
29
- * tenant posted it. This means:
30
- *
31
- * - `{{runner.webhook_base}}` substitutes the same URL for every step
32
- * across all agents — no per-agent variable needed.
33
- * - `{{runner.webhook_url:<step_id>}}` is always sufficient to pin a
34
- * delivery to the step that requested it, even when multiple tenants
35
- * emit concurrently.
36
- * - Per-tenant receivers are not supported; if a future storyboard needs
37
- * delivery-source disambiguation, use distinct step IDs (they already
38
- * produce distinct URL paths).
39
- *
40
- * See `StoryboardRunOptions.webhook_receiver` JSDoc and `webhook-receiver.ts`
41
- * for implementation details.
42
- */
43
1
  import type { TestClient } from '../client.mjs';
44
2
  import type { AgentProfile } from '../types.mjs';
45
3
  import { type AdcpProtocol } from '../../utils/capabilities.mjs';
46
- import type { Storyboard, StoryboardRunOptions, StoryboardStep } from './types.mjs';
4
+ import type { AgentEntry, Storyboard, StoryboardRunOptions, StoryboardStep } from './types.mjs';
5
+ /** Storyboard applicability is any-of; it does not authorize individual steps. */
6
+ export declare function hasAnyRequiredTool(required: readonly string[] | undefined, tools: readonly string[]): boolean;
7
+ /** Normalize legacy discovery entries, retaining the single-agent empty-list fallback. */
8
+ export declare function normalizeAgentToolNames(tools: unknown): string[] | undefined;
9
+ /**
10
+ * Resolve a `$test_kit.<path>` task reference against the runtime options.
11
+ * Falls back to `step.task_default`. Returns undefined when neither yields a string.
12
+ */
13
+ export declare function resolveTaskName(step: StoryboardStep, options: StoryboardRunOptions): string | undefined;
14
+ /** Bind execution gates and transport observations to the same agent as dispatch. */
15
+ export declare function routedAgentOptions(entry: AgentEntry, options: StoryboardRunOptions, profile: AgentProfile): StoryboardRunOptions;
47
16
  export interface AgentRoutingContext {
48
17
  /** Per-agent transport client. Lifecycle owned by the runner. */
49
18
  clients: Map<string, TestClient>;
@@ -1,49 +1,18 @@
1
- /**
2
- * Per-specialism agent routing for the storyboard runner (#1066).
3
- *
4
- * Resolves each step's `task` to one of N agents in
5
- * `StoryboardRunOptions.agents` so storyboards that span specialisms
6
- * (e.g., a `signal_marketplace/governance_denied` flow that calls
7
- * `sync_governance` then `activate_signal`) can hit the tenant that
8
- * actually owns each tool.
9
- *
10
- * Resolution order per step:
11
- * 1. Explicit `step.agent` (escape hatch for cross-domain tools)
12
- * 2. `TASK_FEATURE_MAP` → first protocol → unique claimant in the agents map
13
- * 3. `options.default_agent`
14
- * 4. Throw `RoutingError`
15
- *
16
- * Multi-claim conflicts (two agents claim the same protocol AND a step
17
- * relying on that protocol lacks an explicit `agent:` override) fail-fast
18
- * at routing-context build time, BEFORE any non-discovery network calls.
19
- *
20
- * ## Webhook receiver topology in routed mode
21
- *
22
- * When `StoryboardRunOptions.webhook_receiver` is set alongside `agents`,
23
- * the receiver is **shared** across all tenants — one HTTP server, one base
24
- * URL. The runner does not create per-tenant receivers and does not need to:
25
- * delivery correlation is by **step-keyed URL** (`/step/<step_id>/<op_id>`),
26
- * not by source agent. If both a governance tenant and a signals tenant
27
- * emit webhooks during the same run, the assertion harness matches each
28
- * delivery to its `expect_webhook*` step by URL path, regardless of which
29
- * tenant posted it. This means:
30
- *
31
- * - `{{runner.webhook_base}}` substitutes the same URL for every step
32
- * across all agents — no per-agent variable needed.
33
- * - `{{runner.webhook_url:<step_id>}}` is always sufficient to pin a
34
- * delivery to the step that requested it, even when multiple tenants
35
- * emit concurrently.
36
- * - Per-tenant receivers are not supported; if a future storyboard needs
37
- * delivery-source disambiguation, use distinct step IDs (they already
38
- * produce distinct URL paths).
39
- *
40
- * See `StoryboardRunOptions.webhook_receiver` JSDoc and `webhook-receiver.ts`
41
- * for implementation details.
42
- */
43
1
  import type { TestClient } from '../client';
44
2
  import type { AgentProfile } from '../types';
45
3
  import { type AdcpProtocol } from '../../utils/capabilities';
46
- import type { Storyboard, StoryboardRunOptions, StoryboardStep } from './types';
4
+ import type { AgentEntry, Storyboard, StoryboardRunOptions, StoryboardStep } from './types';
5
+ /** Storyboard applicability is any-of; it does not authorize individual steps. */
6
+ export declare function hasAnyRequiredTool(required: readonly string[] | undefined, tools: readonly string[]): boolean;
7
+ /** Normalize legacy discovery entries, retaining the single-agent empty-list fallback. */
8
+ export declare function normalizeAgentToolNames(tools: unknown): string[] | undefined;
9
+ /**
10
+ * Resolve a `$test_kit.<path>` task reference against the runtime options.
11
+ * Falls back to `step.task_default`. Returns undefined when neither yields a string.
12
+ */
13
+ export declare function resolveTaskName(step: StoryboardStep, options: StoryboardRunOptions): string | undefined;
14
+ /** Bind execution gates and transport observations to the same agent as dispatch. */
15
+ export declare function routedAgentOptions(entry: AgentEntry, options: StoryboardRunOptions, profile: AgentProfile): StoryboardRunOptions;
47
16
  export interface AgentRoutingContext {
48
17
  /** Per-agent transport client. Lifecycle owned by the runner. */
49
18
  clients: Map<string, TestClient>;
@@ -22,11 +22,46 @@ __export(agent_routing_exports, {
22
22
  RoutingError: () => RoutingError,
23
23
  buildRoutingContext: () => buildRoutingContext,
24
24
  buildRoutingContextFromProfiles: () => buildRoutingContextFromProfiles,
25
- resolveAgentForStep: () => resolveAgentForStep
25
+ hasAnyRequiredTool: () => hasAnyRequiredTool,
26
+ normalizeAgentToolNames: () => normalizeAgentToolNames,
27
+ resolveAgentForStep: () => resolveAgentForStep,
28
+ resolveTaskName: () => resolveTaskName,
29
+ routedAgentOptions: () => routedAgentOptions
26
30
  });
27
31
  module.exports = __toCommonJS(agent_routing_exports);
32
+ var import_oauth_metadata_graph = require('./oauth-metadata-graph/index.js');
33
+ var import_test_kit = require('./test-kit.js');
28
34
  var import_client = require('../client.js');
29
35
  var import_capabilities = require('../../utils/capabilities.js');
36
+ function hasAnyRequiredTool(required, tools) {
37
+ return !required?.length || required.some((tool) => tools.includes(tool));
38
+ }
39
+ function normalizeAgentToolNames(tools) {
40
+ if (!Array.isArray(tools)) return void 0;
41
+ const names = tools.flatMap((tool) => {
42
+ if (typeof tool === "string") return [tool];
43
+ if (tool && typeof tool === "object" && typeof tool.name === "string") return [tool.name];
44
+ return [];
45
+ });
46
+ return names.length > 0 ? names : void 0;
47
+ }
48
+ function resolveTaskName(step, options) {
49
+ if (!step.task.startsWith("$test_kit.")) return step.task;
50
+ const path = step.task.slice("$test_kit.".length).split(".");
51
+ let value = options.test_kit;
52
+ for (const segment of path) {
53
+ if (value == null || typeof value !== "object") {
54
+ value = void 0;
55
+ break;
56
+ }
57
+ value = value[segment];
58
+ }
59
+ const configured = typeof value === "string" && value.length > 0 ? value : step.task_default;
60
+ if (step.task === "$test_kit.auth.probe_task") {
61
+ return (0, import_test_kit.selectProbeTask)(configured, options.agentTools, { protocol: options.protocol });
62
+ }
63
+ return configured;
64
+ }
30
65
  const KNOWN_PROTOCOLS = /* @__PURE__ */ new Set([
31
66
  "media_buy",
32
67
  "signals",
@@ -38,7 +73,7 @@ const KNOWN_PROTOCOLS = /* @__PURE__ */ new Set([
38
73
  "brand"
39
74
  ]);
40
75
  function scrubAuthSecrets(text) {
41
- return text.replace(/(authorization\s*:\s*bearer\s+)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]").replace(/\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, "Bearer [REDACTED]").replace(/([?&]token=)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]");
76
+ return (0, import_oauth_metadata_graph.redactOAuthUrlsInText)(text).replace(/(authorization\s*:\s*bearer\s+)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]").replace(/\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, "Bearer [REDACTED]").replace(/([?&]token=)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]");
42
77
  }
43
78
  function buildAgentOptions(entry, options) {
44
79
  return {
@@ -55,10 +90,30 @@ function buildAgentOptions(entry, options) {
55
90
  // depends on.
56
91
  _client: void 0,
57
92
  _profile: void 0,
93
+ profile: void 0,
94
+ _controllerCapabilities: void 0,
58
95
  agents: void 0,
59
96
  agentTools: void 0
60
97
  };
61
98
  }
99
+ function routedAgentOptions(entry, options, profile) {
100
+ const tools = normalizeAgentToolNames(profile.tools) ?? [];
101
+ const raw = profile.raw_capabilities;
102
+ const compliance = raw && typeof raw === "object" && "compliance_testing" in raw ? raw.compliance_testing : void 0;
103
+ const scenarios = compliance && typeof compliance === "object" && "scenarios" in compliance ? compliance.scenarios : void 0;
104
+ return {
105
+ ...buildAgentOptions(entry, options),
106
+ // Scenario opt-in must be the selected agent's declaration too; a
107
+ // comply() caller's controller cache belongs to its single agent.
108
+ _controllerCapabilities: Array.isArray(scenarios) && scenarios.length > 0 && scenarios.every((s) => typeof s === "string") && tools.includes("comply_test_controller") ? {
109
+ detected: true,
110
+ scenarios
111
+ } : { detected: false },
112
+ profile,
113
+ _profile: profile,
114
+ agentTools: tools
115
+ };
116
+ }
62
117
  class RoutingError extends Error {
63
118
  constructor(message, task, hint) {
64
119
  super(message);
@@ -117,7 +172,7 @@ async function buildRoutingContext(storyboard, options) {
117
172
  if (!r.profile || r.step.passed === false) {
118
173
  const rawDetail = scrubAuthSecrets(r.step.error ?? "Discovery returned no profile.");
119
174
  const detail = rawDetail.length > 512 ? `${rawDetail.slice(0, 512)} \u2026(truncated)` : rawDetail;
120
- const baseMessage = `Discovery failed for agent "${r.key}" (${agents[r.key].url}): ${detail}`;
175
+ const baseMessage = `Discovery failed for agent "${r.key}" (${(0, import_oauth_metadata_graph.redactOAuthUrlForOutput)(agents[r.key].url)}): ${detail}`;
121
176
  const message = resilient ? baseMessage : `${baseMessage}
122
177
 
123
178
  If this is hello-cluster / exploratory CI and you want unrelated storyboards to complete despite this failure, set \`StoryboardRunOptions.discovery_resilient: true\`. Do NOT set it in production \u2014 a topology with a broken tenant is a hard misconfiguration there.`;
@@ -129,7 +184,7 @@ If this is hello-cluster / exploratory CI and you want unrelated storyboards to
129
184
  profiles.set(r.key, r.profile);
130
185
  }
131
186
  const protocolIndex = buildProtocolIndex(profiles);
132
- detectMultiClaimConflicts(storyboard, protocolIndex);
187
+ detectMultiClaimConflicts(storyboard, protocolIndex, options);
133
188
  return { clients, profiles, protocolIndex, agentMap, discoveryFailures };
134
189
  }
135
190
  function buildRoutingContextFromProfiles(storyboard, options, profiles) {
@@ -139,7 +194,7 @@ function buildRoutingContextFromProfiles(storyboard, options, profiles) {
139
194
  agentMap[key] = entry.url;
140
195
  }
141
196
  const protocolIndex = buildProtocolIndex(profiles);
142
- detectMultiClaimConflicts(storyboard, protocolIndex);
197
+ detectMultiClaimConflicts(storyboard, protocolIndex, options);
143
198
  return { clients: /* @__PURE__ */ new Map(), profiles, protocolIndex, agentMap, discoveryFailures: [] };
144
199
  }
145
200
  function buildProtocolIndex(profiles) {
@@ -157,21 +212,22 @@ function buildProtocolIndex(profiles) {
157
212
  for (const list of index.values()) list.sort();
158
213
  return index;
159
214
  }
160
- function detectMultiClaimConflicts(storyboard, protocolIndex) {
215
+ function detectMultiClaimConflicts(storyboard, protocolIndex, options) {
161
216
  const conflicts = [];
162
217
  for (const phase of storyboard.phases ?? []) {
163
218
  for (const step of phase.steps ?? []) {
164
219
  if (step.agent !== void 0) continue;
165
- const protocol = primaryProtocolFor(step.task);
220
+ const task = resolveTaskName(step, { ...options, agentTools: void 0 }) ?? step.task;
221
+ const protocol = primaryProtocolFor(task);
166
222
  if (!protocol) continue;
167
223
  const candidates = protocolIndex.get(protocol);
168
224
  if (!candidates || candidates.length < 2) continue;
169
- const existing = conflicts.find((c) => c.task === step.task && c.protocol === protocol);
225
+ const existing = conflicts.find((c) => c.task === task && c.protocol === protocol);
170
226
  if (existing) {
171
227
  existing.stepIds.push(step.id);
172
228
  } else {
173
229
  conflicts.push({
174
- task: step.task,
230
+ task,
175
231
  protocol,
176
232
  agents: candidates,
177
233
  stepIds: [step.id]
@@ -204,7 +260,7 @@ function resolveAgentForStep(step, options, ctx) {
204
260
  const failed = ctx.discoveryFailures.find((f) => f.agentKey === step.agent);
205
261
  if (failed) {
206
262
  throw new RoutingError(
207
- `Step "${step.id}" targets agent "${step.agent}" via \`step.agent\` override, but that agent's discovery failed: ${failed.underlying} (${failed.url}). Either remove the override, fix the agent, or route the step to a healthy agent.`,
263
+ `Step "${step.id}" targets agent "${step.agent}" via \`step.agent\` override, but that agent's discovery failed: ${failed.underlying} (${(0, import_oauth_metadata_graph.redactOAuthUrlForOutput)(failed.url)}). Either remove the override, fix the agent, or route the step to a healthy agent.`,
208
264
  step.task,
209
265
  `agent "${step.agent}" failed discovery`
210
266
  );
@@ -223,9 +279,11 @@ function resolveAgentForStep(step, options, ctx) {
223
279
  );
224
280
  }
225
281
  if (options.default_agent) return options.default_agent;
226
- const failedHint = ctx.discoveryFailures.length > 0 ? ` Discovery failed for: ${ctx.discoveryFailures.map((f) => `${f.agentKey} (${f.url})`).join(", ")}.` : "";
282
+ const failedHint = ctx.discoveryFailures.length > 0 ? ` Discovery failed for: ${ctx.discoveryFailures.map((f) => `${f.agentKey} (${(0, import_oauth_metadata_graph.redactOAuthUrlForOutput)(f.url)})`).join(", ")}.` : "";
283
+ const toolAdvertisedBy = [...ctx.profiles].filter(([, profile]) => (normalizeAgentToolNames(profile.tools) ?? []).includes(step.task)).map(([key]) => key);
284
+ const advertisedHint = toolAdvertisedBy.length ? ` Agent(s) [${toolAdvertisedBy.join(", ")}] advertise "${step.task}" but do not declare "${protocol}" in supported_protocols \u2014 fix that declaration, or pin the step with \`agent:\`.` : "";
227
285
  throw new RoutingError(
228
- `No agent in the map claims protocol "${protocol}" required by tool "${step.task}" (step "${step.id}"). Available agents: ${[...ctx.profiles.keys()].join(", ") || "(none \u2014 every agent failed discovery)"}.${failedHint} Add an agent that supports ${protocol}, or set \`default_agent\` to fall back.`,
286
+ `No agent in the map claims protocol "${protocol}" required by tool "${step.task}" (step "${step.id}"). Available agents: ${[...ctx.profiles.keys()].join(", ") || "(none \u2014 every agent failed discovery)"}.${failedHint} Add an agent that supports ${protocol}, or set \`default_agent\` to fall back.${advertisedHint}`,
229
287
  step.task,
230
288
  `protocol ${protocol} unclaimed`
231
289
  );
@@ -243,5 +301,9 @@ function resolveAgentForStep(step, options, ctx) {
243
301
  RoutingError,
244
302
  buildRoutingContext,
245
303
  buildRoutingContextFromProfiles,
246
- resolveAgentForStep
304
+ hasAnyRequiredTool,
305
+ normalizeAgentToolNames,
306
+ resolveAgentForStep,
307
+ resolveTaskName,
308
+ routedAgentOptions
247
309
  });
@@ -1,5 +1,36 @@
1
+ import { redactOAuthUrlForOutput, redactOAuthUrlsInText } from "./oauth-metadata-graph/index.mjs";
2
+ import { selectProbeTask } from "./test-kit.mjs";
1
3
  import { getOrCreateClient, getOrDiscoverProfile } from "../client.mjs";
2
4
  import { TASK_FEATURE_MAP } from "../../utils/capabilities.mjs";
5
+ function hasAnyRequiredTool(required, tools) {
6
+ return !required?.length || required.some((tool) => tools.includes(tool));
7
+ }
8
+ function normalizeAgentToolNames(tools) {
9
+ if (!Array.isArray(tools)) return void 0;
10
+ const names = tools.flatMap((tool) => {
11
+ if (typeof tool === "string") return [tool];
12
+ if (tool && typeof tool === "object" && typeof tool.name === "string") return [tool.name];
13
+ return [];
14
+ });
15
+ return names.length > 0 ? names : void 0;
16
+ }
17
+ function resolveTaskName(step, options) {
18
+ if (!step.task.startsWith("$test_kit.")) return step.task;
19
+ const path = step.task.slice("$test_kit.".length).split(".");
20
+ let value = options.test_kit;
21
+ for (const segment of path) {
22
+ if (value == null || typeof value !== "object") {
23
+ value = void 0;
24
+ break;
25
+ }
26
+ value = value[segment];
27
+ }
28
+ const configured = typeof value === "string" && value.length > 0 ? value : step.task_default;
29
+ if (step.task === "$test_kit.auth.probe_task") {
30
+ return selectProbeTask(configured, options.agentTools, { protocol: options.protocol });
31
+ }
32
+ return configured;
33
+ }
3
34
  const KNOWN_PROTOCOLS = /* @__PURE__ */ new Set([
4
35
  "media_buy",
5
36
  "signals",
@@ -11,7 +42,7 @@ const KNOWN_PROTOCOLS = /* @__PURE__ */ new Set([
11
42
  "brand"
12
43
  ]);
13
44
  function scrubAuthSecrets(text) {
14
- return text.replace(/(authorization\s*:\s*bearer\s+)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]").replace(/\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, "Bearer [REDACTED]").replace(/([?&]token=)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]");
45
+ return redactOAuthUrlsInText(text).replace(/(authorization\s*:\s*bearer\s+)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]").replace(/\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, "Bearer [REDACTED]").replace(/([?&]token=)[A-Za-z0-9._~+/=-]+/gi, "$1[REDACTED]");
15
46
  }
16
47
  function buildAgentOptions(entry, options) {
17
48
  return {
@@ -28,10 +59,30 @@ function buildAgentOptions(entry, options) {
28
59
  // depends on.
29
60
  _client: void 0,
30
61
  _profile: void 0,
62
+ profile: void 0,
63
+ _controllerCapabilities: void 0,
31
64
  agents: void 0,
32
65
  agentTools: void 0
33
66
  };
34
67
  }
68
+ function routedAgentOptions(entry, options, profile) {
69
+ const tools = normalizeAgentToolNames(profile.tools) ?? [];
70
+ const raw = profile.raw_capabilities;
71
+ const compliance = raw && typeof raw === "object" && "compliance_testing" in raw ? raw.compliance_testing : void 0;
72
+ const scenarios = compliance && typeof compliance === "object" && "scenarios" in compliance ? compliance.scenarios : void 0;
73
+ return {
74
+ ...buildAgentOptions(entry, options),
75
+ // Scenario opt-in must be the selected agent's declaration too; a
76
+ // comply() caller's controller cache belongs to its single agent.
77
+ _controllerCapabilities: Array.isArray(scenarios) && scenarios.length > 0 && scenarios.every((s) => typeof s === "string") && tools.includes("comply_test_controller") ? {
78
+ detected: true,
79
+ scenarios
80
+ } : { detected: false },
81
+ profile,
82
+ _profile: profile,
83
+ agentTools: tools
84
+ };
85
+ }
35
86
  class RoutingError extends Error {
36
87
  constructor(message, task, hint) {
37
88
  super(message);
@@ -90,7 +141,7 @@ async function buildRoutingContext(storyboard, options) {
90
141
  if (!r.profile || r.step.passed === false) {
91
142
  const rawDetail = scrubAuthSecrets(r.step.error ?? "Discovery returned no profile.");
92
143
  const detail = rawDetail.length > 512 ? `${rawDetail.slice(0, 512)} \u2026(truncated)` : rawDetail;
93
- const baseMessage = `Discovery failed for agent "${r.key}" (${agents[r.key].url}): ${detail}`;
144
+ const baseMessage = `Discovery failed for agent "${r.key}" (${redactOAuthUrlForOutput(agents[r.key].url)}): ${detail}`;
94
145
  const message = resilient ? baseMessage : `${baseMessage}
95
146
 
96
147
  If this is hello-cluster / exploratory CI and you want unrelated storyboards to complete despite this failure, set \`StoryboardRunOptions.discovery_resilient: true\`. Do NOT set it in production \u2014 a topology with a broken tenant is a hard misconfiguration there.`;
@@ -102,7 +153,7 @@ If this is hello-cluster / exploratory CI and you want unrelated storyboards to
102
153
  profiles.set(r.key, r.profile);
103
154
  }
104
155
  const protocolIndex = buildProtocolIndex(profiles);
105
- detectMultiClaimConflicts(storyboard, protocolIndex);
156
+ detectMultiClaimConflicts(storyboard, protocolIndex, options);
106
157
  return { clients, profiles, protocolIndex, agentMap, discoveryFailures };
107
158
  }
108
159
  function buildRoutingContextFromProfiles(storyboard, options, profiles) {
@@ -112,7 +163,7 @@ function buildRoutingContextFromProfiles(storyboard, options, profiles) {
112
163
  agentMap[key] = entry.url;
113
164
  }
114
165
  const protocolIndex = buildProtocolIndex(profiles);
115
- detectMultiClaimConflicts(storyboard, protocolIndex);
166
+ detectMultiClaimConflicts(storyboard, protocolIndex, options);
116
167
  return { clients: /* @__PURE__ */ new Map(), profiles, protocolIndex, agentMap, discoveryFailures: [] };
117
168
  }
118
169
  function buildProtocolIndex(profiles) {
@@ -130,21 +181,22 @@ function buildProtocolIndex(profiles) {
130
181
  for (const list of index.values()) list.sort();
131
182
  return index;
132
183
  }
133
- function detectMultiClaimConflicts(storyboard, protocolIndex) {
184
+ function detectMultiClaimConflicts(storyboard, protocolIndex, options) {
134
185
  const conflicts = [];
135
186
  for (const phase of storyboard.phases ?? []) {
136
187
  for (const step of phase.steps ?? []) {
137
188
  if (step.agent !== void 0) continue;
138
- const protocol = primaryProtocolFor(step.task);
189
+ const task = resolveTaskName(step, { ...options, agentTools: void 0 }) ?? step.task;
190
+ const protocol = primaryProtocolFor(task);
139
191
  if (!protocol) continue;
140
192
  const candidates = protocolIndex.get(protocol);
141
193
  if (!candidates || candidates.length < 2) continue;
142
- const existing = conflicts.find((c) => c.task === step.task && c.protocol === protocol);
194
+ const existing = conflicts.find((c) => c.task === task && c.protocol === protocol);
143
195
  if (existing) {
144
196
  existing.stepIds.push(step.id);
145
197
  } else {
146
198
  conflicts.push({
147
- task: step.task,
199
+ task,
148
200
  protocol,
149
201
  agents: candidates,
150
202
  stepIds: [step.id]
@@ -177,7 +229,7 @@ function resolveAgentForStep(step, options, ctx) {
177
229
  const failed = ctx.discoveryFailures.find((f) => f.agentKey === step.agent);
178
230
  if (failed) {
179
231
  throw new RoutingError(
180
- `Step "${step.id}" targets agent "${step.agent}" via \`step.agent\` override, but that agent's discovery failed: ${failed.underlying} (${failed.url}). Either remove the override, fix the agent, or route the step to a healthy agent.`,
232
+ `Step "${step.id}" targets agent "${step.agent}" via \`step.agent\` override, but that agent's discovery failed: ${failed.underlying} (${redactOAuthUrlForOutput(failed.url)}). Either remove the override, fix the agent, or route the step to a healthy agent.`,
181
233
  step.task,
182
234
  `agent "${step.agent}" failed discovery`
183
235
  );
@@ -196,9 +248,11 @@ function resolveAgentForStep(step, options, ctx) {
196
248
  );
197
249
  }
198
250
  if (options.default_agent) return options.default_agent;
199
- const failedHint = ctx.discoveryFailures.length > 0 ? ` Discovery failed for: ${ctx.discoveryFailures.map((f) => `${f.agentKey} (${f.url})`).join(", ")}.` : "";
251
+ const failedHint = ctx.discoveryFailures.length > 0 ? ` Discovery failed for: ${ctx.discoveryFailures.map((f) => `${f.agentKey} (${redactOAuthUrlForOutput(f.url)})`).join(", ")}.` : "";
252
+ const toolAdvertisedBy = [...ctx.profiles].filter(([, profile]) => (normalizeAgentToolNames(profile.tools) ?? []).includes(step.task)).map(([key]) => key);
253
+ const advertisedHint = toolAdvertisedBy.length ? ` Agent(s) [${toolAdvertisedBy.join(", ")}] advertise "${step.task}" but do not declare "${protocol}" in supported_protocols \u2014 fix that declaration, or pin the step with \`agent:\`.` : "";
200
254
  throw new RoutingError(
201
- `No agent in the map claims protocol "${protocol}" required by tool "${step.task}" (step "${step.id}"). Available agents: ${[...ctx.profiles.keys()].join(", ") || "(none \u2014 every agent failed discovery)"}.${failedHint} Add an agent that supports ${protocol}, or set \`default_agent\` to fall back.`,
255
+ `No agent in the map claims protocol "${protocol}" required by tool "${step.task}" (step "${step.id}"). Available agents: ${[...ctx.profiles.keys()].join(", ") || "(none \u2014 every agent failed discovery)"}.${failedHint} Add an agent that supports ${protocol}, or set \`default_agent\` to fall back.${advertisedHint}`,
202
256
  step.task,
203
257
  `protocol ${protocol} unclaimed`
204
258
  );
@@ -215,5 +269,9 @@ export {
215
269
  RoutingError,
216
270
  buildRoutingContext,
217
271
  buildRoutingContextFromProfiles,
218
- resolveAgentForStep
272
+ hasAnyRequiredTool,
273
+ normalizeAgentToolNames,
274
+ resolveAgentForStep,
275
+ resolveTaskName,
276
+ routedAgentOptions
219
277
  };
@@ -8,6 +8,7 @@
8
8
  */
9
9
  export type { A2ATaskEnvelope, AgentEntry, Storyboard, StoryboardFixtureResolution, FixtureResolutionStrategy, FixtureMatchOperator, FixtureMatchClause, FixtureResolutionDeclaration, ProductFixtureResolutionDeclaration, PricingOptionFixtureResolutionDeclaration, FixtureResolutionStatus, FixtureResolutionRecord, FixtureResolutionAttempt, FixtureResolutionEvidence, FixtureResolutionCoverageGap, StoryboardInvariants, StoryboardInvariantsObject, StepInvariantsObject, StoryboardPhase, StoryboardStep, RateLimitTripSpec, StoryboardValidation, StoryboardValidationCheck, WebhookFilterSpec, WebhookRetryTriggerSpec, WebhookAssertionErrorCode, ContextOutput, ContextInput, ContextProvenanceEntry, ContextValueRejectedHint, ShapeDriftHint, MissingRequiredFieldHint, FormatMismatchHint, MonotonicViolationHint, ImpairmentCoherenceHint, ImpairmentCoherenceNotApplicableHint, StoryboardContext, StoryboardRunOptions, TrustedMatchContextProviderEndpoint, TrustedMatchContextRegistrationContext, TrustedMatchContextRouterRunnerOptions, TrustedMatchPublisherAuthOperation, TrustedMatchPublisherCredentialState, TrustedMatchPublisherAuthTls, TrustedMatchPublisherAuthProbeConfiguration, TrustedMatchPublisherAuthRunner, ValidationResult, StoryboardStepPreview, StoryboardStepResult, StoryboardStepHint, StoryboardStepHintBase, StoryboardPhaseResult, StoryboardResult, AssertionResult, StrictValidationSummary, StrictValidationVerdict, UpstreamTrafficPayloadMatch, RunnerNotice, NoticeCode, NoticeSeverity, } from './types.mjs';
10
10
  export { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from './types.mjs';
11
+ export { MCP_SESSION_PROBE_TASK } from './types.mjs';
11
12
  export { registerAssertion, getAssertion, listAssertions, listDefaultAssertions, clearAssertionRegistry, resolveAssertions, } from './assertions.mjs';
12
13
  export type { AssertionSpec, AssertionContext, RegisterAssertionOptions } from './assertions.mjs';
13
14
  export { createWebhookReceiver } from './webhook-receiver.mjs';
@@ -8,6 +8,7 @@
8
8
  */
9
9
  export type { A2ATaskEnvelope, AgentEntry, Storyboard, StoryboardFixtureResolution, FixtureResolutionStrategy, FixtureMatchOperator, FixtureMatchClause, FixtureResolutionDeclaration, ProductFixtureResolutionDeclaration, PricingOptionFixtureResolutionDeclaration, FixtureResolutionStatus, FixtureResolutionRecord, FixtureResolutionAttempt, FixtureResolutionEvidence, FixtureResolutionCoverageGap, StoryboardInvariants, StoryboardInvariantsObject, StepInvariantsObject, StoryboardPhase, StoryboardStep, RateLimitTripSpec, StoryboardValidation, StoryboardValidationCheck, WebhookFilterSpec, WebhookRetryTriggerSpec, WebhookAssertionErrorCode, ContextOutput, ContextInput, ContextProvenanceEntry, ContextValueRejectedHint, ShapeDriftHint, MissingRequiredFieldHint, FormatMismatchHint, MonotonicViolationHint, ImpairmentCoherenceHint, ImpairmentCoherenceNotApplicableHint, StoryboardContext, StoryboardRunOptions, TrustedMatchContextProviderEndpoint, TrustedMatchContextRegistrationContext, TrustedMatchContextRouterRunnerOptions, TrustedMatchPublisherAuthOperation, TrustedMatchPublisherCredentialState, TrustedMatchPublisherAuthTls, TrustedMatchPublisherAuthProbeConfiguration, TrustedMatchPublisherAuthRunner, ValidationResult, StoryboardStepPreview, StoryboardStepResult, StoryboardStepHint, StoryboardStepHintBase, StoryboardPhaseResult, StoryboardResult, AssertionResult, StrictValidationSummary, StrictValidationVerdict, UpstreamTrafficPayloadMatch, RunnerNotice, NoticeCode, NoticeSeverity, } from './types';
10
10
  export { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from './types';
11
+ export { MCP_SESSION_PROBE_TASK } from './types';
11
12
  export { registerAssertion, getAssertion, listAssertions, listDefaultAssertions, clearAssertionRegistry, resolveAssertions, } from './assertions';
12
13
  export type { AssertionSpec, AssertionContext, RegisterAssertionOptions } from './assertions';
13
14
  export { createWebhookReceiver } from './webhook-receiver';
@@ -23,6 +23,7 @@ __export(storyboard_exports, {
23
23
  CONTEXT_EXTRACTORS: () => import_context2.CONTEXT_EXTRACTORS,
24
24
  CapabilityResolutionError: () => import_compliance.CapabilityResolutionError,
25
25
  FixtureBindingRegistry: () => import_fixture_resolution.FixtureBindingRegistry,
26
+ MCP_SESSION_PROBE_TASK: () => import_types2.MCP_SESSION_PROBE_TASK,
26
27
  PROBE_TASK_ALLOWLIST: () => import_test_kit.PROBE_TASK_ALLOWLIST,
27
28
  PROTOCOL_TO_PATH: () => import_compliance.PROTOCOL_TO_PATH,
28
29
  RATE_LIMIT_TRIP_CONTRACT: () => import_rate_limit_trip.RATE_LIMIT_TRIP_CONTRACT,
@@ -111,6 +112,7 @@ __export(storyboard_exports, {
111
112
  module.exports = __toCommonJS(storyboard_exports);
112
113
  var import_default_invariants = require('./default-invariants.js');
113
114
  var import_types = require('./types.js');
115
+ var import_types2 = require('./types.js');
114
116
  var import_assertions = require('./assertions.js');
115
117
  var import_webhook_receiver = require('./webhook-receiver.js');
116
118
  var import_context = require('./context.js');
@@ -139,6 +141,7 @@ var import_sandbox_entities = require('./sandbox-entities.js');
139
141
  CONTEXT_EXTRACTORS,
140
142
  CapabilityResolutionError,
141
143
  FixtureBindingRegistry,
144
+ MCP_SESSION_PROBE_TASK,
142
145
  PROBE_TASK_ALLOWLIST,
143
146
  PROTOCOL_TO_PATH,
144
147
  RATE_LIMIT_TRIP_CONTRACT,
@@ -1,6 +1,7 @@
1
1
  import { registerDefaultInvariants } from "./default-invariants.mjs";
2
2
  registerDefaultInvariants();
3
3
  import { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from "./types.mjs";
4
+ import { MCP_SESSION_PROBE_TASK } from "./types.mjs";
4
5
  import {
5
6
  registerAssertion,
6
7
  getAssertion,
@@ -100,6 +101,7 @@ export {
100
101
  CONTEXT_EXTRACTORS,
101
102
  CapabilityResolutionError,
102
103
  FixtureBindingRegistry,
104
+ MCP_SESSION_PROBE_TASK,
103
105
  PROBE_TASK_ALLOWLIST,
104
106
  PROTOCOL_TO_PATH,
105
107
  RATE_LIMIT_TRIP_CONTRACT,
@@ -1 +1 @@
1
- export {};
1
+ export declare function formatStoryboardResultsAsJUnit(results: StoryboardResult[]): string;
@@ -1 +1 @@
1
- export {};
1
+ export declare function formatStoryboardResultsAsJUnit(results: StoryboardResult[]): string;
@@ -24,8 +24,20 @@ module.exports = __toCommonJS(junit_exports);
24
24
  var import_storyboard_tracks = require('../compliance/storyboard-tracks.js');
25
25
  var import_node_crypto = require("node:crypto");
26
26
  function xmlEscape(s) {
27
- return String(s ?? "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
27
+ return xmlSafeText(String(s ?? "")).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
28
28
  }
29
+ function xmlSafeText(value) {
30
+ return value.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f]/g, escapeCodeUnit).replace(/[\uFDD0-\uFDEF\uFFFE\uFFFF]/g, escapeCodeUnit);
31
+ }
32
+ function escapeCodeUnit(char) {
33
+ return `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}`;
34
+ }
35
+ const RUNNER_AUTHORED_SKIP_REASONS = /* @__PURE__ */ new Set([
36
+ "capability_prerequisite_unavailable",
37
+ "session_probe_ungradable",
38
+ "fixture_unsatisfied"
39
+ ]);
40
+ const MAX_SKIP_DETAIL_CHARS = 400;
29
41
  function hintLines(hints) {
30
42
  if (!hints || hints.length === 0) return [];
31
43
  return hints.map((h) => `Hint (${h.kind}): ${h.message}`);
@@ -41,6 +53,13 @@ function fenceUntrustedText(value, max = 500) {
41
53
  function formatAdvisoryFinding(validation) {
42
54
  return `[ADVISORY] ${fenceUntrustedText(validation.description)}: ${fenceUntrustedText(validation.error || "failed")}`;
43
55
  }
56
+ function stepSkipMessage(step) {
57
+ const reason = step.skip_reason || "skipped";
58
+ const raw = step.skip?.detail;
59
+ if (raw === void 0 || !RUNNER_AUTHORED_SKIP_REASONS.has(step.skip_reason ?? "")) return reason;
60
+ const clipped = raw.length > MAX_SKIP_DETAIL_CHARS ? `${raw.slice(0, MAX_SKIP_DETAIL_CHARS)}\u2026` : raw;
61
+ return `${reason}: ${clipped}`;
62
+ }
44
63
  function formatStoryboardResultsAsJUnit(results) {
45
64
  let totalTests = 0;
46
65
  let totalFailures = 0;
@@ -63,7 +82,7 @@ function formatStoryboardResultsAsJUnit(results) {
63
82
  totalSkipped += 1;
64
83
  suiteCases.push(
65
84
  ` <testcase classname="${xmlEscape(sb.storyboard_id)}" name="${xmlEscape(name)}" time="${time}">
66
- <skipped message="${xmlEscape(step.skip_reason || "skipped")}"/>
85
+ <skipped message="${xmlEscape(stepSkipMessage(step))}"/>
67
86
  </testcase>`
68
87
  );
69
88
  continue;