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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/bin/adcp-storyboard-sandbox.js +16 -0
  2. package/bin/adcp.js +28 -30
  3. package/dist/lib/index.d.mts +3 -3
  4. package/dist/lib/index.d.ts +3 -3
  5. package/dist/lib/index.d.ts.map +1 -1
  6. package/dist/lib/index.js +2 -0
  7. package/dist/lib/index.js.map +1 -1
  8. package/dist/lib/index.mjs +3 -1
  9. package/dist/lib/index.mjs.map +1 -1
  10. package/dist/lib/schemas/index.d.mts +385 -1
  11. package/dist/lib/schemas/index.d.ts +385 -1
  12. package/dist/lib/schemas/index.d.ts.map +1 -1
  13. package/dist/lib/schemas/index.js +13 -0
  14. package/dist/lib/schemas/index.js.map +1 -1
  15. package/dist/lib/schemas/index.mjs +11 -0
  16. package/dist/lib/schemas/index.mjs.map +1 -1
  17. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  18. package/dist/lib/server/create-adcp-server.d.mts +2 -2
  19. package/dist/lib/server/create-adcp-server.d.ts +2 -2
  20. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  21. package/dist/lib/server/create-adcp-server.js +6 -1
  22. package/dist/lib/server/create-adcp-server.js.map +1 -1
  23. package/dist/lib/server/create-adcp-server.mjs +6 -1
  24. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  25. package/dist/lib/server/decisioning/index.d.mts +3 -3
  26. package/dist/lib/server/decisioning/index.d.ts +3 -3
  27. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  28. package/dist/lib/server/decisioning/index.js.map +1 -1
  29. package/dist/lib/server/decisioning/index.mjs.map +1 -1
  30. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +24 -17
  31. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +24 -17
  32. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  33. package/dist/lib/server/decisioning/runtime/from-platform.js +71 -42
  34. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  35. package/dist/lib/server/decisioning/runtime/from-platform.mjs +75 -43
  36. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  37. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.mts +15 -21
  38. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts +15 -21
  39. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -1
  40. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +100 -30
  41. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -1
  42. package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs +100 -30
  43. package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs.map +1 -1
  44. package/dist/lib/server/decisioning/runtime/task-registry.d.mts +30 -16
  45. package/dist/lib/server/decisioning/runtime/task-registry.d.ts +30 -16
  46. package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -1
  47. package/dist/lib/server/decisioning/runtime/task-registry.js +40 -20
  48. package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -1
  49. package/dist/lib/server/decisioning/runtime/task-registry.mjs +38 -19
  50. package/dist/lib/server/decisioning/runtime/task-registry.mjs.map +1 -1
  51. package/dist/lib/server/decisioning/runtime/to-context.d.mts +2 -2
  52. package/dist/lib/server/decisioning/runtime/to-context.d.ts +2 -2
  53. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  54. package/dist/lib/server/decisioning/runtime/to-context.js +2 -2
  55. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  56. package/dist/lib/server/decisioning/runtime/to-context.mjs +2 -2
  57. package/dist/lib/server/decisioning/runtime/to-context.mjs.map +1 -1
  58. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.mts +3 -2
  59. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +3 -2
  60. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -1
  61. package/dist/lib/server/decisioning/specialisms/creative-ad-server.js.map +1 -1
  62. package/dist/lib/server/decisioning/specialisms/creative.d.mts +10 -10
  63. package/dist/lib/server/decisioning/specialisms/creative.d.ts +10 -10
  64. package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -1
  65. package/dist/lib/server/decisioning/specialisms/creative.js.map +1 -1
  66. package/dist/lib/server/index.d.mts +1 -1
  67. package/dist/lib/server/index.d.ts +1 -1
  68. package/dist/lib/server/index.d.ts.map +1 -1
  69. package/dist/lib/server/index.js.map +1 -1
  70. package/dist/lib/server/index.mjs.map +1 -1
  71. package/dist/lib/signing/agent-context.d.mts +1 -0
  72. package/dist/lib/signing/agent-context.d.ts +1 -0
  73. package/dist/lib/signing/agent-context.d.ts.map +1 -1
  74. package/dist/lib/signing/agent-context.js +37 -2
  75. package/dist/lib/signing/agent-context.js.map +1 -1
  76. package/dist/lib/signing/agent-context.mjs +38 -3
  77. package/dist/lib/signing/agent-context.mjs.map +1 -1
  78. package/dist/lib/signing/agent-fetch.d.mts +1 -2
  79. package/dist/lib/signing/agent-fetch.d.ts +1 -2
  80. package/dist/lib/signing/agent-fetch.d.ts.map +1 -1
  81. package/dist/lib/signing/agent-fetch.js +2 -0
  82. package/dist/lib/signing/agent-fetch.js.map +1 -1
  83. package/dist/lib/signing/agent-fetch.mjs +2 -0
  84. package/dist/lib/signing/agent-fetch.mjs.map +1 -1
  85. package/dist/lib/signing/agent-resolver/etld.js.map +1 -1
  86. package/dist/lib/signing/agent-resolver/etld.mjs.map +1 -1
  87. package/dist/lib/testing/client.d.mts +6 -0
  88. package/dist/lib/testing/client.d.ts +6 -0
  89. package/dist/lib/testing/client.d.ts.map +1 -1
  90. package/dist/lib/testing/client.js +76 -4
  91. package/dist/lib/testing/client.js.map +1 -1
  92. package/dist/lib/testing/client.mjs +75 -4
  93. package/dist/lib/testing/client.mjs.map +1 -1
  94. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  95. package/dist/lib/testing/compliance/comply.js +6 -0
  96. package/dist/lib/testing/compliance/comply.js.map +1 -1
  97. package/dist/lib/testing/compliance/comply.mjs +7 -1
  98. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  99. package/dist/lib/testing/storyboard/default-invariants.d.ts.map +1 -1
  100. package/dist/lib/testing/storyboard/default-invariants.js +11 -2
  101. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  102. package/dist/lib/testing/storyboard/default-invariants.mjs +11 -2
  103. package/dist/lib/testing/storyboard/default-invariants.mjs.map +1 -1
  104. package/dist/lib/testing/storyboard/index.d.mts +1 -1
  105. package/dist/lib/testing/storyboard/index.d.ts +1 -1
  106. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  107. package/dist/lib/testing/storyboard/index.js.map +1 -1
  108. package/dist/lib/testing/storyboard/index.mjs.map +1 -1
  109. package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
  110. package/dist/lib/testing/storyboard/loader.js +14 -0
  111. package/dist/lib/testing/storyboard/loader.js.map +1 -1
  112. package/dist/lib/testing/storyboard/loader.mjs +14 -0
  113. package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
  114. package/dist/lib/testing/storyboard/phase-condition.d.mts +41 -0
  115. package/dist/lib/testing/storyboard/phase-condition.d.ts +42 -0
  116. package/dist/lib/testing/storyboard/phase-condition.d.ts.map +1 -0
  117. package/dist/lib/testing/storyboard/phase-condition.js +215 -0
  118. package/dist/lib/testing/storyboard/phase-condition.js.map +1 -0
  119. package/dist/lib/testing/storyboard/phase-condition.mjs +189 -0
  120. package/dist/lib/testing/storyboard/phase-condition.mjs.map +1 -0
  121. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  122. package/dist/lib/testing/storyboard/request-builder.js +15 -2
  123. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  124. package/dist/lib/testing/storyboard/request-builder.mjs +15 -2
  125. package/dist/lib/testing/storyboard/request-builder.mjs.map +1 -1
  126. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.mts +15 -0
  127. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.ts +16 -0
  128. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.ts.map +1 -0
  129. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.js +106 -0
  130. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.js.map +1 -0
  131. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.mjs +82 -0
  132. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.mjs.map +1 -0
  133. package/dist/lib/testing/storyboard/request-signing/test-kit.d.mts +15 -0
  134. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts +15 -0
  135. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts.map +1 -1
  136. package/dist/lib/testing/storyboard/request-signing/test-kit.js +58 -0
  137. package/dist/lib/testing/storyboard/request-signing/test-kit.js.map +1 -1
  138. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs +58 -0
  139. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs.map +1 -1
  140. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.mts +2 -0
  141. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +2 -0
  142. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -1
  143. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +7 -1
  144. package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -1
  145. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +6 -1
  146. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
  147. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  148. package/dist/lib/testing/storyboard/runner.js +67 -24
  149. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  150. package/dist/lib/testing/storyboard/runner.mjs +67 -24
  151. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  152. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
  153. package/dist/lib/testing/storyboard/task-map.js +6 -2
  154. package/dist/lib/testing/storyboard/task-map.js.map +1 -1
  155. package/dist/lib/testing/storyboard/task-map.mjs +6 -2
  156. package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
  157. package/dist/lib/testing/storyboard/types.d.mts +5 -4
  158. package/dist/lib/testing/storyboard/types.d.ts +5 -4
  159. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  160. package/dist/lib/testing/storyboard/types.js.map +1 -1
  161. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  162. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  163. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  164. package/dist/lib/testing/storyboard/webhook-assertions.d.ts.map +1 -1
  165. package/dist/lib/testing/storyboard/webhook-assertions.js +60 -4
  166. package/dist/lib/testing/storyboard/webhook-assertions.js.map +1 -1
  167. package/dist/lib/testing/storyboard/webhook-assertions.mjs +60 -4
  168. package/dist/lib/testing/storyboard/webhook-assertions.mjs.map +1 -1
  169. package/dist/lib/testing/storyboard/webhook-receiver.d.mts +15 -0
  170. package/dist/lib/testing/storyboard/webhook-receiver.d.ts +15 -0
  171. package/dist/lib/testing/storyboard/webhook-receiver.d.ts.map +1 -1
  172. package/dist/lib/testing/storyboard/webhook-receiver.js +57 -6
  173. package/dist/lib/testing/storyboard/webhook-receiver.js.map +1 -1
  174. package/dist/lib/testing/storyboard/webhook-receiver.mjs +57 -6
  175. package/dist/lib/testing/storyboard/webhook-receiver.mjs.map +1 -1
  176. package/dist/lib/testing/types.d.mts +12 -0
  177. package/dist/lib/testing/types.d.ts +12 -0
  178. package/dist/lib/testing/types.d.ts.map +1 -1
  179. package/dist/lib/testing/types.js.map +1 -1
  180. package/dist/lib/types/comply-test-controller.d.ts +1 -14
  181. package/dist/lib/types/core.generated.d.mts +6 -3
  182. package/dist/lib/types/core.generated.d.ts +6 -3
  183. package/dist/lib/types/core.generated.d.ts.map +1 -1
  184. package/dist/lib/types/core.generated.js.map +1 -1
  185. package/dist/lib/types/get-products.d.ts +1 -14
  186. package/dist/lib/types/index.d.mts +1 -1
  187. package/dist/lib/types/index.d.ts +1 -1
  188. package/dist/lib/types/index.d.ts.map +1 -1
  189. package/dist/lib/types/index.js.map +1 -1
  190. package/dist/lib/types/index.mjs.map +1 -1
  191. package/dist/lib/types/list-transformers.d.ts +9 -5
  192. package/dist/lib/types/schemas.generated.d.ts +23 -352
  193. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  194. package/dist/lib/types/schemas.generated.js +7 -4
  195. package/dist/lib/types/schemas.generated.js.map +1 -1
  196. package/dist/lib/types/schemas.generated.mjs +6 -4
  197. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  198. package/dist/lib/types/server-payload-aliases.d.mts +2 -1
  199. package/dist/lib/types/server-payload-aliases.d.ts +2 -1
  200. package/dist/lib/types/server-payload-aliases.d.ts.map +1 -1
  201. package/dist/lib/types/server-payload-aliases.js.map +1 -1
  202. package/dist/lib/types/tools.generated.d.mts +6 -3
  203. package/dist/lib/types/tools.generated.d.ts +6 -3
  204. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  205. package/dist/lib/types/tools.generated.js.map +1 -1
  206. package/dist/lib/utils/build-creative-return-builders.d.mts +5 -1
  207. package/dist/lib/utils/build-creative-return-builders.d.ts +5 -1
  208. package/dist/lib/utils/build-creative-return-builders.d.ts.map +1 -1
  209. package/dist/lib/utils/build-creative-return-builders.js +9 -3
  210. package/dist/lib/utils/build-creative-return-builders.js.map +1 -1
  211. package/dist/lib/utils/build-creative-return-builders.mjs +7 -2
  212. package/dist/lib/utils/build-creative-return-builders.mjs.map +1 -1
  213. package/dist/lib/utils/response-unwrapper.js +1 -1
  214. package/dist/lib/utils/response-unwrapper.js.map +1 -1
  215. package/dist/lib/utils/response-unwrapper.mjs +1 -1
  216. package/dist/lib/utils/response-unwrapper.mjs.map +1 -1
  217. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  218. package/dist/lib/validation/schema-loader.js +16 -7
  219. package/dist/lib/validation/schema-loader.js.map +1 -1
  220. package/dist/lib/validation/schema-loader.mjs +16 -7
  221. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  222. package/dist/lib/version.d.mts +3 -3
  223. package/dist/lib/version.d.ts +3 -3
  224. package/dist/lib/version.js +3 -3
  225. package/dist/lib/version.js.map +1 -1
  226. package/dist/lib/version.mjs +3 -3
  227. package/dist/lib/version.mjs.map +1 -1
  228. package/docs/llms.txt +2 -2
  229. package/docs/migration-5.x-to-6.x.md +3 -2
  230. package/docs/migration-task-registry-scoping.md +61 -0
  231. package/examples/hello_seller_adapter_guaranteed.ts +1 -1
  232. package/package.json +5 -5
  233. package/skills/build-decisioning-creative-template/SKILL.md +2 -2
  234. package/skills/build-decisioning-platform/SKILL.md +4 -2
  235. package/skills/build-decisioning-platform/advanced/REFERENCE.md +7 -6
@@ -9,6 +9,7 @@ import {
9
9
  } from "../../protocols/index.mjs";
10
10
  import { getCapturesFromError, withRawResponseCapture } from "../../protocols/rawResponseCapture.mjs";
11
11
  import { defaultStoryboardResponseProjection, executeStoryboardTask } from "./task-map.mjs";
12
+ import { applyFunctionalRequestSigning } from "./request-signing/functional-dispatch.mjs";
12
13
  import {
13
14
  extractContextWithProvenance,
14
15
  injectContext,
@@ -68,6 +69,7 @@ import { readBrandJsonUrl } from "../../signing/agent-resolver/capabilities-type
68
69
  import { selectAgentByUrl } from "../../signing/agent-resolver/select-agent.mjs";
69
70
  import { resolveDeclaredTestKit, selectProbeTask, validateTestKit } from "./test-kit.mjs";
70
71
  import { validateStoryboardShape } from "./loader.mjs";
72
+ import { evaluatePhaseCondition, phaseConditionUsesContext } from "./phase-condition.mjs";
71
73
  import { trustedStoryboardComplianceRoot } from "./provenance.mjs";
72
74
  import { probeRequestSigningVector } from "./request-signing/probe-dispatch.mjs";
73
75
  import { createWebhookReceiver } from "./webhook-receiver.mjs";
@@ -667,6 +669,10 @@ async function runStoryboard(agentUrlOrUrls, storyboard, options = {}) {
667
669
  return withMCPConnectionScope(
668
670
  async () => {
669
671
  options = applyStoryboardVersionOptions(storyboard, options);
672
+ options = applyFunctionalRequestSigning(options, {
673
+ ...options.complianceDir && { complianceDir: options.complianceDir },
674
+ ...options.adcpVersion && { version: options.adcpVersion }
675
+ });
670
676
  options = resolveDeclaredTestKit(storyboard, options);
671
677
  options = { ...options, transport: normalizeTransportOptions(options.transport) };
672
678
  const schemaRoot = getRunSchemaRoot(options);
@@ -1575,9 +1581,10 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
1575
1581
  storyboard,
1576
1582
  phaseCapabilitySkipDetails
1577
1583
  );
1578
- const capabilitySkippedPhaseIds = /* @__PURE__ */ new Set([
1584
+ const preflightExcludedPhaseIds = /* @__PURE__ */ new Set([
1579
1585
  ...phaseCapabilitySkipDetails.keys(),
1580
- ...storyboard.phases.filter((phase) => shouldSkipPhase(phase, options)).map((phase) => phase.id)
1586
+ ...storyboard.phases.filter((phase) => shouldSkipPhaseBeforeRun(phase, options)).map((phase) => phase.id),
1587
+ ...storyboard.phases.filter((phase) => phaseUsesRuntimeContext(phase)).map((phase) => phase.id)
1581
1588
  ]);
1582
1589
  let creativeAssetFixtureGap = preflightRemainingCreativeAssetDirectives(
1583
1590
  allSteps,
@@ -1600,7 +1607,7 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
1600
1607
  storyboardRequiresRequestSigner: allRequires.includes("request_signer"),
1601
1608
  storyboardRequiresPublisherAuthRunner: storyboard.requires?.includes("trusted_match_publisher_auth_runner") === true
1602
1609
  },
1603
- capabilitySkippedPhaseIds
1610
+ preflightExcludedPhaseIds
1604
1611
  );
1605
1612
  let creativeAssetFixtureGapRecorded = false;
1606
1613
  if (!hasExecutableSteps) {
@@ -1732,7 +1739,7 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
1732
1739
  context,
1733
1740
  options,
1734
1741
  buildExecutionState(),
1735
- capabilitySkippedPhaseIds
1742
+ preflightExcludedPhaseIds
1736
1743
  );
1737
1744
  }
1738
1745
  for (const phase of storyboard.phases) {
@@ -1811,7 +1818,7 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
1811
1818
  const phaseStatefulStepIds = phase.steps.filter((s) => s.stateful).map((s) => s.id);
1812
1819
  let phaseAbsent = false;
1813
1820
  let presenceDetected = false;
1814
- if (shouldSkipPhase(phase, options)) {
1821
+ if (shouldSkipPhase(phase, options, context)) {
1815
1822
  phaseResults.push({
1816
1823
  phase_id: phase.id,
1817
1824
  phase_title: phase.title,
@@ -1822,6 +1829,41 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
1822
1829
  });
1823
1830
  continue;
1824
1831
  }
1832
+ if (phaseUsesRuntimeContext(phase)) {
1833
+ preflightExcludedPhaseIds.delete(phase.id);
1834
+ const firstPhaseStepIndex = allSteps.find((target) => target.phaseId === phase.id)?.globalIndex ?? 0;
1835
+ creativeAssetFixtureGap = preflightRemainingCreativeAssetDirectives(
1836
+ allSteps,
1837
+ firstPhaseStepIndex - 1,
1838
+ context,
1839
+ options,
1840
+ buildExecutionState(),
1841
+ preflightExcludedPhaseIds
1842
+ );
1843
+ if (creativeAssetFixtureGap?.target.phaseId === phase.id) {
1844
+ const gapStep = buildCreativeAssetFixtureUnavailableStep(
1845
+ creativeAssetFixtureGap.target.step,
1846
+ phase.id,
1847
+ context,
1848
+ allSteps,
1849
+ buildExecutionState(),
1850
+ creativeAssetFixtureGap.failure
1851
+ );
1852
+ gapStep.storyboard_id = storyboard.id;
1853
+ priorStepResults.set(gapStep.step_id, gapStep);
1854
+ skippedCount++;
1855
+ creativeAssetFixtureGapRecorded = true;
1856
+ phaseResults.push({
1857
+ phase_id: phase.id,
1858
+ phase_title: phase.title,
1859
+ passed: true,
1860
+ steps: [gapStep],
1861
+ duration_ms: Date.now() - phaseStart
1862
+ });
1863
+ priorPhaseIds.push(phase.id);
1864
+ continue;
1865
+ }
1866
+ }
1825
1867
  if (!phaseAbsent && phaseContainsOauthMetadataProbe(phase) && !agentAdvertisesOauth(profile)) {
1826
1868
  phaseAbsent = true;
1827
1869
  }
@@ -2106,7 +2148,7 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
2106
2148
  context,
2107
2149
  options,
2108
2150
  stepExecutionState,
2109
- capabilitySkippedPhaseIds
2151
+ preflightExcludedPhaseIds
2110
2152
  );
2111
2153
  }
2112
2154
  if (creativeAssetFixtureGap) {
@@ -2320,7 +2362,8 @@ async function runMultiPass(agentUrls, storyboard, options) {
2320
2362
  );
2321
2363
  const preSeedExcludedPhaseIds = /* @__PURE__ */ new Set([
2322
2364
  ...phaseCapabilitySkipDetails.keys(),
2323
- ...storyboard.phases.filter((phase) => shouldSkipPhase(phase, options)).map((phase) => phase.id)
2365
+ ...storyboard.phases.filter((phase) => shouldSkipPhaseBeforeRun(phase, options)).map((phase) => phase.id),
2366
+ ...storyboard.phases.filter((phase) => phaseUsesRuntimeContext(phase)).map((phase) => phase.id)
2324
2367
  ]);
2325
2368
  const preSeedFixtureGap = preflightRemainingCreativeAssetDirectives(
2326
2369
  flattenSteps(storyboard),
@@ -2495,6 +2538,10 @@ async function runStoryboardStep(agentUrl, storyboard, stepId, options = {}) {
2495
2538
  async () => {
2496
2539
  validateStoryboardShape(storyboard);
2497
2540
  options = applyStoryboardVersionOptions(storyboard, options);
2541
+ options = applyFunctionalRequestSigning(options, {
2542
+ ...options.complianceDir && { complianceDir: options.complianceDir },
2543
+ ...options.adcpVersion && { version: options.adcpVersion }
2544
+ });
2498
2545
  options = resolveDeclaredTestKit(storyboard, options);
2499
2546
  const schemaRoot = getRunSchemaRoot(options);
2500
2547
  if (schemaRoot) {
@@ -3094,7 +3141,7 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
3094
3141
  runState.agentProfile?.raw_capabilities,
3095
3142
  "request_signing.required_for"
3096
3143
  );
3097
- if (taskResult?.adcp_error?.code === "request_signature_required" && Array.isArray(requiredForSigning) && requiredForSigning.includes(effectiveStep.task) && runState.storyboardRequiresRequestSigner !== true) {
3144
+ if (taskResult?.adcp_error?.code === "request_signature_required" && Array.isArray(requiredForSigning) && requiredForSigning.includes(effectiveStep.task) && options.functional_request_signing === void 0 && runState.storyboardRequiresRequestSigner !== true) {
3098
3145
  const next2 = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
3099
3146
  const detail = `Agent declared request_signing.required_for includes "${effectiveStep.task}" and rejected the unsigned request with request_signature_required; storyboard "${storyboardId}" does not require request_signer.`;
3100
3147
  return {
@@ -4631,23 +4678,19 @@ function agentAdvertisesOauth(profile) {
4631
4678
  const endpoint = resolveCapabilityPath(rawCaps, "account.authorization_endpoint");
4632
4679
  return typeof endpoint === "string" && endpoint.length > 0;
4633
4680
  }
4634
- function shouldSkipPhase(phase, options) {
4681
+ function shouldSkipPhase(phase, options, context) {
4635
4682
  const expr = phase.skip_if?.trim();
4636
4683
  if (!expr) return false;
4637
- const match = /^(!?)test_kit\.([a-zA-Z0-9_.]+)$/.exec(expr);
4638
- if (!match) return false;
4639
- const negated = match[1] === "!";
4640
- const path = match[2].split(".");
4641
- let value = options.test_kit;
4642
- for (const segment of path) {
4643
- if (value == null || typeof value !== "object") {
4644
- value = void 0;
4645
- break;
4646
- }
4647
- value = value[segment];
4648
- }
4649
- const truthy = Boolean(value);
4650
- return negated ? !truthy : truthy;
4684
+ return evaluatePhaseCondition(expr, { context, test_kit: options.test_kit });
4685
+ }
4686
+ function shouldSkipPhaseBeforeRun(phase, options) {
4687
+ const expr = phase.skip_if?.trim();
4688
+ if (!expr || phaseConditionUsesContext(expr)) return false;
4689
+ return evaluatePhaseCondition(expr, { test_kit: options.test_kit });
4690
+ }
4691
+ function phaseUsesRuntimeContext(phase) {
4692
+ const expr = phase.skip_if?.trim();
4693
+ return expr ? phaseConditionUsesContext(expr) : false;
4651
4694
  }
4652
4695
  function resolveTaskName(step, options) {
4653
4696
  if (!step.task.startsWith("$test_kit.")) return step.task;
@@ -4809,7 +4852,7 @@ function applyBrandInvariant(request, options, taskName, stepFlags) {
4809
4852
  const acct = existingAccount;
4810
4853
  const isNaturalKeyVariant = "brand" in acct || "operator" in acct;
4811
4854
  if (isNaturalKeyVariant) {
4812
- const preserveWholesaleAccountBrand = taskName === "get_products" && request.buying_mode === "wholesale" && acct.brand !== void 0;
4855
+ const preserveWholesaleAccountBrand = (taskName === "get_products" && request.buying_mode === "wholesale" || taskName === "get_signals" && request.discovery_mode === "wholesale") && acct.brand !== void 0;
4813
4856
  const merged = {
4814
4857
  ...acct,
4815
4858
  brand: preserveWholesaleAccountBrand ? acct.brand : brand