@adcp/sdk 13.0.0-rc.8 → 13.0.0-rc.9

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 (200) hide show
  1. package/dist/lib/adapters/roster-account-store.d.mts +9 -8
  2. package/dist/lib/adapters/roster-account-store.d.ts +9 -8
  3. package/dist/lib/adapters/roster-account-store.d.ts.map +1 -1
  4. package/dist/lib/adapters/roster-account-store.js +2 -1
  5. package/dist/lib/adapters/roster-account-store.js.map +1 -1
  6. package/dist/lib/adapters/roster-account-store.mjs +2 -1
  7. package/dist/lib/adapters/roster-account-store.mjs.map +1 -1
  8. package/dist/lib/net/address-guards.d.ts.map +1 -1
  9. package/dist/lib/net/address-guards.js +6 -0
  10. package/dist/lib/net/address-guards.js.map +1 -1
  11. package/dist/lib/net/address-guards.mjs +6 -0
  12. package/dist/lib/net/address-guards.mjs.map +1 -1
  13. package/dist/lib/net/ssrf-fetch.d.ts.map +1 -1
  14. package/dist/lib/net/ssrf-fetch.js +66 -53
  15. package/dist/lib/net/ssrf-fetch.js.map +1 -1
  16. package/dist/lib/net/ssrf-fetch.mjs +66 -53
  17. package/dist/lib/net/ssrf-fetch.mjs.map +1 -1
  18. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  19. package/dist/lib/server/account-mode.d.mts +2 -1
  20. package/dist/lib/server/account-mode.d.ts +2 -1
  21. package/dist/lib/server/account-mode.d.ts.map +1 -1
  22. package/dist/lib/server/account-mode.js +1 -0
  23. package/dist/lib/server/account-mode.js.map +1 -1
  24. package/dist/lib/server/account-mode.mjs +1 -0
  25. package/dist/lib/server/account-mode.mjs.map +1 -1
  26. package/dist/lib/server/create-adcp-server.d.mts +10 -6
  27. package/dist/lib/server/create-adcp-server.d.ts +10 -6
  28. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  29. package/dist/lib/server/create-adcp-server.js +2 -1
  30. package/dist/lib/server/create-adcp-server.js.map +1 -1
  31. package/dist/lib/server/create-adcp-server.mjs +2 -1
  32. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  33. package/dist/lib/server/decisioning/account.d.mts +16 -11
  34. package/dist/lib/server/decisioning/account.d.ts +16 -11
  35. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  36. package/dist/lib/server/decisioning/account.js.map +1 -1
  37. package/dist/lib/server/decisioning/account.mjs.map +1 -1
  38. package/dist/lib/server/decisioning/pagination.d.mts +2 -0
  39. package/dist/lib/server/decisioning/pagination.d.ts +2 -0
  40. package/dist/lib/server/decisioning/pagination.d.ts.map +1 -1
  41. package/dist/lib/server/decisioning/pagination.js.map +1 -1
  42. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +20 -14
  43. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +20 -14
  44. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  45. package/dist/lib/server/decisioning/runtime/from-platform.js +32 -6
  46. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  47. package/dist/lib/server/decisioning/runtime/from-platform.mjs +32 -6
  48. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  49. package/dist/lib/server/decisioning/specialisms/sales.d.mts +16 -4
  50. package/dist/lib/server/decisioning/specialisms/sales.d.ts +16 -4
  51. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  52. package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -1
  53. package/dist/lib/server/index.d.ts.map +1 -1
  54. package/dist/lib/server/index.js.map +1 -1
  55. package/dist/lib/server/index.mjs.map +1 -1
  56. package/dist/lib/server/legacy/v5/index.d.mts +2 -1
  57. package/dist/lib/server/legacy/v5/index.d.ts +2 -1
  58. package/dist/lib/server/legacy/v5/index.d.ts.map +1 -1
  59. package/dist/lib/server/legacy/v5/index.js.map +1 -1
  60. package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
  61. package/dist/lib/testing/compliance/comply.d.mts +2 -0
  62. package/dist/lib/testing/compliance/comply.d.ts +2 -0
  63. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  64. package/dist/lib/testing/compliance/comply.js +45 -14
  65. package/dist/lib/testing/compliance/comply.js.map +1 -1
  66. package/dist/lib/testing/compliance/comply.mjs +45 -14
  67. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  68. package/dist/lib/testing/compliance/index.d.mts +1 -1
  69. package/dist/lib/testing/compliance/index.d.ts +1 -1
  70. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  71. package/dist/lib/testing/compliance/index.js.map +1 -1
  72. package/dist/lib/testing/compliance/index.mjs.map +1 -1
  73. package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -1
  74. package/dist/lib/testing/compliance/storyboard-tracks.js +9 -1
  75. package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -1
  76. package/dist/lib/testing/compliance/storyboard-tracks.mjs +9 -1
  77. package/dist/lib/testing/compliance/storyboard-tracks.mjs.map +1 -1
  78. package/dist/lib/testing/compliance/types.d.mts +26 -25
  79. package/dist/lib/testing/compliance/types.d.ts +26 -25
  80. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  81. package/dist/lib/testing/compliance/types.js.map +1 -1
  82. package/dist/lib/testing/index.d.mts +2 -2
  83. package/dist/lib/testing/index.d.ts +2 -2
  84. package/dist/lib/testing/index.d.ts.map +1 -1
  85. package/dist/lib/testing/index.js +16 -0
  86. package/dist/lib/testing/index.js.map +1 -1
  87. package/dist/lib/testing/index.mjs +16 -0
  88. package/dist/lib/testing/index.mjs.map +1 -1
  89. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  90. package/dist/lib/testing/scenarios/media-buy.js +20 -12
  91. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  92. package/dist/lib/testing/scenarios/media-buy.mjs +20 -12
  93. package/dist/lib/testing/scenarios/media-buy.mjs.map +1 -1
  94. package/dist/lib/testing/storyboard/creative-assets.d.mts +23 -0
  95. package/dist/lib/testing/storyboard/creative-assets.d.ts +23 -0
  96. package/dist/lib/testing/storyboard/creative-assets.d.ts.map +1 -1
  97. package/dist/lib/testing/storyboard/creative-assets.js +322 -45
  98. package/dist/lib/testing/storyboard/creative-assets.js.map +1 -1
  99. package/dist/lib/testing/storyboard/creative-assets.mjs +321 -45
  100. package/dist/lib/testing/storyboard/creative-assets.mjs.map +1 -1
  101. package/dist/lib/testing/storyboard/index.d.mts +4 -1
  102. package/dist/lib/testing/storyboard/index.d.ts +4 -1
  103. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  104. package/dist/lib/testing/storyboard/index.js +20 -0
  105. package/dist/lib/testing/storyboard/index.js.map +1 -1
  106. package/dist/lib/testing/storyboard/index.mjs +19 -0
  107. package/dist/lib/testing/storyboard/index.mjs.map +1 -1
  108. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.d.mts +21 -0
  109. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.d.ts +22 -0
  110. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.d.ts.map +1 -0
  111. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.js +668 -0
  112. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.js.map +1 -0
  113. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.mjs +638 -0
  114. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.mjs.map +1 -0
  115. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.d.mts +5 -0
  116. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.d.ts +6 -0
  117. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.d.ts.map +1 -0
  118. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.js +44 -0
  119. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.js.map +1 -0
  120. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.mjs +20 -0
  121. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.mjs.map +1 -0
  122. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.d.mts +38 -0
  123. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.d.ts +39 -0
  124. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.d.ts.map +1 -0
  125. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.js +17 -0
  126. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.js.map +1 -0
  127. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.mjs +1 -0
  128. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.mjs.map +1 -0
  129. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.d.mts +32 -0
  130. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.d.ts +33 -0
  131. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.d.ts.map +1 -0
  132. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.js +105 -0
  133. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.js.map +1 -0
  134. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.mjs +80 -0
  135. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.mjs.map +1 -0
  136. package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
  137. package/dist/lib/testing/storyboard/probes.js +2 -1
  138. package/dist/lib/testing/storyboard/probes.js.map +1 -1
  139. package/dist/lib/testing/storyboard/probes.mjs +2 -1
  140. package/dist/lib/testing/storyboard/probes.mjs.map +1 -1
  141. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  142. package/dist/lib/testing/storyboard/runner.js +382 -69
  143. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  144. package/dist/lib/testing/storyboard/runner.mjs +387 -70
  145. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  146. package/dist/lib/testing/storyboard/seeding.js +3 -1
  147. package/dist/lib/testing/storyboard/seeding.js.map +1 -1
  148. package/dist/lib/testing/storyboard/seeding.mjs +3 -1
  149. package/dist/lib/testing/storyboard/seeding.mjs.map +1 -1
  150. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
  151. package/dist/lib/testing/storyboard/task-map.js +16 -2
  152. package/dist/lib/testing/storyboard/task-map.js.map +1 -1
  153. package/dist/lib/testing/storyboard/task-map.mjs +16 -2
  154. package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
  155. package/dist/lib/testing/storyboard/trusted-match-context-replay.d.mts +11 -0
  156. package/dist/lib/testing/storyboard/trusted-match-context-replay.d.ts +12 -0
  157. package/dist/lib/testing/storyboard/trusted-match-context-replay.d.ts.map +1 -0
  158. package/dist/lib/testing/storyboard/trusted-match-context-replay.js +340 -0
  159. package/dist/lib/testing/storyboard/trusted-match-context-replay.js.map +1 -0
  160. package/dist/lib/testing/storyboard/trusted-match-context-replay.mjs +316 -0
  161. package/dist/lib/testing/storyboard/trusted-match-context-replay.mjs.map +1 -0
  162. package/dist/lib/testing/storyboard/types.d.mts +84 -15
  163. package/dist/lib/testing/storyboard/types.d.ts +84 -15
  164. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  165. package/dist/lib/testing/storyboard/types.js +2 -0
  166. package/dist/lib/testing/storyboard/types.js.map +1 -1
  167. package/dist/lib/testing/storyboard/types.mjs +2 -0
  168. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  169. package/dist/lib/testing/storyboard/validations.d.mts +3 -0
  170. package/dist/lib/testing/storyboard/validations.d.ts +3 -0
  171. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  172. package/dist/lib/testing/storyboard/validations.js +64 -24
  173. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  174. package/dist/lib/testing/storyboard/validations.mjs +64 -24
  175. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  176. package/dist/lib/types/server-payload-aliases.d.mts +8 -2
  177. package/dist/lib/types/server-payload-aliases.d.ts +8 -2
  178. package/dist/lib/types/server-payload-aliases.d.ts.map +1 -1
  179. package/dist/lib/types/server-payload-aliases.js.map +1 -1
  180. package/dist/lib/upstream-recorder/recorder.d.mts +7 -18
  181. package/dist/lib/upstream-recorder/recorder.d.ts +7 -18
  182. package/dist/lib/upstream-recorder/recorder.d.ts.map +1 -1
  183. package/dist/lib/upstream-recorder/recorder.js +17 -10
  184. package/dist/lib/upstream-recorder/recorder.js.map +1 -1
  185. package/dist/lib/upstream-recorder/recorder.mjs +12 -5
  186. package/dist/lib/upstream-recorder/recorder.mjs.map +1 -1
  187. package/dist/lib/utils/redact-secrets.d.ts.map +1 -1
  188. package/dist/lib/utils/redact-secrets.js +7 -1
  189. package/dist/lib/utils/redact-secrets.js.map +1 -1
  190. package/dist/lib/utils/redact-secrets.mjs +7 -1
  191. package/dist/lib/utils/redact-secrets.mjs.map +1 -1
  192. package/dist/lib/version.d.mts +3 -3
  193. package/dist/lib/version.d.ts +3 -3
  194. package/dist/lib/version.js +3 -3
  195. package/dist/lib/version.js.map +1 -1
  196. package/dist/lib/version.mjs +3 -3
  197. package/dist/lib/version.mjs.map +1 -1
  198. package/docs/guides/BUILD-AN-AGENT.md +4 -2
  199. package/docs/llms.txt +1 -1
  200. package/package.json +2 -2
@@ -41,8 +41,10 @@ __export(storyboard_exports, {
41
41
  applyContextOutputsWithProvenance: () => import_context2.applyContextOutputsWithProvenance,
42
42
  applyFixtureBindingsToRequest: () => import_fixture_resolution.applyFixtureBindingsToRequest,
43
43
  applyStoryboardVersionOptions: () => import_runner.applyStoryboardVersionOptions,
44
+ buildAuthorizationServerMetadataUrl: () => import_oauth_metadata_graph.buildAuthorizationServerMetadataUrl,
44
45
  buildDiscoveryFailedResult: () => import_runner.buildDiscoveryFailedResult,
45
46
  buildFixtureResolutionSpecs: () => import_fixture_resolution.buildFixtureResolutionSpecs,
47
+ buildProtectedResourceMetadataUrl: () => import_oauth_metadata_graph.buildProtectedResourceMetadataUrl,
46
48
  buildRequest: () => import_request_builder.buildRequest,
47
49
  clearAssertionRegistry: () => import_assertions.clearAssertionRegistry,
48
50
  clearSandboxCache: () => import_sandbox_entities.clearSandboxCache,
@@ -51,10 +53,12 @@ __export(storyboard_exports, {
51
53
  detectContextRejectionHints: () => import_rejection_hints.detectContextRejectionHints,
52
54
  evaluateCapabilityPredicate: () => import_runner.evaluateCapabilityPredicate,
53
55
  executeStoryboardTask: () => import_task_map.executeStoryboardTask,
56
+ expandCreativeAssetDirectives: () => import_creative_assets.expandCreativeAssetDirectives,
54
57
  extractContext: () => import_context2.extractContext,
55
58
  extractContextWithProvenance: () => import_context2.extractContextWithProvenance,
56
59
  extractTaskAdcpError: () => import_rate_limit_trip.extractTaskAdcpError,
57
60
  findBundleById: () => import_compliance.findBundleById,
61
+ findUnresolvedCreativeAssetDirectives: () => import_creative_assets.findUnresolvedCreativeAssetDirectives,
58
62
  getAssertion: () => import_assertions.getAssertion,
59
63
  getComplianceCacheDir: () => import_compliance.getComplianceCacheDir,
60
64
  getComplianceStoryboardById: () => import_compliance.getComplianceStoryboardById,
@@ -63,6 +67,8 @@ __export(storyboard_exports, {
63
67
  getSandboxBrand: () => import_sandbox_entities.getSandboxBrand,
64
68
  getSandboxBrands: () => import_sandbox_entities.getSandboxBrands,
65
69
  getSandboxEntities: () => import_sandbox_entities.getSandboxEntities,
70
+ gradeOAuthMetadataGraph: () => import_oauth_metadata_graph.gradeOAuthMetadataGraph,
71
+ gradeOAuthMetadataGraphVector: () => import_oauth_metadata_graph.gradeOAuthMetadataGraphVector,
66
72
  hasRequestBuilder: () => import_request_builder.hasRequestBuilder,
67
73
  injectContext: () => import_context2.injectContext,
68
74
  isComplianceVersionSupported: () => import_compliance.isComplianceVersionSupported,
@@ -75,12 +81,15 @@ __export(storyboard_exports, {
75
81
  listStrictOnlyFailures: () => import_runner.listStrictOnlyFailures,
76
82
  loadBundleStoryboards: () => import_compliance.loadBundleStoryboards,
77
83
  loadComplianceIndex: () => import_compliance.loadComplianceIndex,
84
+ loadOAuthMetadataGraphVectors: () => import_oauth_metadata_graph.loadOAuthMetadataGraphVectors,
78
85
  loadSpecialismDetail: () => import_compliance.loadSpecialismDetail,
79
86
  loadStoryboardFile: () => import_loader.loadStoryboardFile,
80
87
  matchesFixtureRequirements: () => import_fixture_resolution.matchesFixtureRequirements,
81
88
  normalizeFixtureMatchExpression: () => import_fixture_resolution.normalizeFixtureMatchExpression,
89
+ normalizeOAuthResourceForComparison: () => import_oauth_metadata_graph.normalizeOAuthResourceForComparison,
82
90
  parsePath: () => import_path.parsePath,
83
91
  parseStoryboard: () => import_loader.parseStoryboard,
92
+ redactOAuthUrlForOutput: () => import_oauth_metadata_graph.redactOAuthUrlForOutput,
84
93
  registerAssertion: () => import_assertions.registerAssertion,
85
94
  resolveAssertions: () => import_assertions.resolveAssertions,
86
95
  resolveBundleOrStoryboard: () => import_compliance.resolveBundleOrStoryboard,
@@ -108,11 +117,13 @@ var import_loader = require('./loader.js');
108
117
  var import_fixture_resolution = require('./fixture-resolution.js');
109
118
  var import_compliance = require('./compliance.js');
110
119
  var import_task_map = require('./task-map.js');
120
+ var import_creative_assets = require('./creative-assets.js');
111
121
  var import_path = require('./path.js');
112
122
  var import_context2 = require('./context.js');
113
123
  var import_rejection_hints = require('./rejection-hints.js');
114
124
  var import_request_builder = require('./request-builder.js');
115
125
  var import_validations = require('./validations.js');
126
+ var import_oauth_metadata_graph = require('./oauth-metadata-graph/index.js');
116
127
  var import_rate_limit_trip = require('./rate-limit-trip.js');
117
128
  var import_test_kit = require('./test-kit.js');
118
129
  var import_wellknown_schemas = require('../../types/wellknown-schemas.generated.js');
@@ -143,8 +154,10 @@ var import_sandbox_entities = require('./sandbox-entities.js');
143
154
  applyContextOutputsWithProvenance,
144
155
  applyFixtureBindingsToRequest,
145
156
  applyStoryboardVersionOptions,
157
+ buildAuthorizationServerMetadataUrl,
146
158
  buildDiscoveryFailedResult,
147
159
  buildFixtureResolutionSpecs,
160
+ buildProtectedResourceMetadataUrl,
148
161
  buildRequest,
149
162
  clearAssertionRegistry,
150
163
  clearSandboxCache,
@@ -153,10 +166,12 @@ var import_sandbox_entities = require('./sandbox-entities.js');
153
166
  detectContextRejectionHints,
154
167
  evaluateCapabilityPredicate,
155
168
  executeStoryboardTask,
169
+ expandCreativeAssetDirectives,
156
170
  extractContext,
157
171
  extractContextWithProvenance,
158
172
  extractTaskAdcpError,
159
173
  findBundleById,
174
+ findUnresolvedCreativeAssetDirectives,
160
175
  getAssertion,
161
176
  getComplianceCacheDir,
162
177
  getComplianceStoryboardById,
@@ -165,6 +180,8 @@ var import_sandbox_entities = require('./sandbox-entities.js');
165
180
  getSandboxBrand,
166
181
  getSandboxBrands,
167
182
  getSandboxEntities,
183
+ gradeOAuthMetadataGraph,
184
+ gradeOAuthMetadataGraphVector,
168
185
  hasRequestBuilder,
169
186
  injectContext,
170
187
  isComplianceVersionSupported,
@@ -177,12 +194,15 @@ var import_sandbox_entities = require('./sandbox-entities.js');
177
194
  listStrictOnlyFailures,
178
195
  loadBundleStoryboards,
179
196
  loadComplianceIndex,
197
+ loadOAuthMetadataGraphVectors,
180
198
  loadSpecialismDetail,
181
199
  loadStoryboardFile,
182
200
  matchesFixtureRequirements,
183
201
  normalizeFixtureMatchExpression,
202
+ normalizeOAuthResourceForComparison,
184
203
  parsePath,
185
204
  parseStoryboard,
205
+ redactOAuthUrlForOutput,
186
206
  registerAssertion,
187
207
  resolveAssertions,
188
208
  resolveBundleOrStoryboard,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/testing/storyboard/index.ts"],"sourcesContent":["/**\n * Storyboard-driven testing for AdCP agents.\n *\n * Storyboards are YAML-defined workflows that map directly to\n * SingleAgentClient methods, enabling step-by-step agent testing.\n * The canonical storyboard set lives in the AdCP compliance tarball\n * and is pulled into `compliance/cache/{version}/` via `npm run sync-schemas`.\n */\n\n// Side-effect import: registers the default cross-step assertions that\n// upstream storyboards reference by id (idempotency.conflict_no_payload_leak,\n// context.no_secret_echo, governance.denial_blocks_mutation). Without this\n// registration here, any `runStoryboard` call against a storyboard declaring\n// `invariants: [...]` would throw at start on unresolved ids. Consumers who\n// want to replace the defaults can `clearAssertionRegistry()` first.\nimport { registerDefaultInvariants } from './default-invariants';\n\nregisterDefaultInvariants();\n\n// Types\nexport type {\n A2ATaskEnvelope,\n AgentEntry,\n Storyboard,\n StoryboardFixtureResolution,\n FixtureResolutionStrategy,\n FixtureMatchOperator,\n FixtureMatchClause,\n FixtureResolutionDeclaration,\n ProductFixtureResolutionDeclaration,\n PricingOptionFixtureResolutionDeclaration,\n FixtureResolutionStatus,\n FixtureResolutionRecord,\n FixtureResolutionAttempt,\n FixtureResolutionEvidence,\n FixtureResolutionCoverageGap,\n StoryboardInvariants,\n StoryboardInvariantsObject,\n StepInvariantsObject,\n StoryboardPhase,\n StoryboardStep,\n RateLimitTripSpec,\n StoryboardValidation,\n StoryboardValidationCheck,\n WebhookFilterSpec,\n WebhookRetryTriggerSpec,\n WebhookAssertionErrorCode,\n ContextOutput,\n ContextInput,\n ContextProvenanceEntry,\n ContextValueRejectedHint,\n ShapeDriftHint,\n MissingRequiredFieldHint,\n FormatMismatchHint,\n MonotonicViolationHint,\n ImpairmentCoherenceHint,\n ImpairmentCoherenceNotApplicableHint,\n StoryboardContext,\n StoryboardRunOptions,\n ValidationResult,\n StoryboardStepPreview,\n StoryboardStepResult,\n StoryboardStepHint,\n StoryboardStepHintBase,\n StoryboardPhaseResult,\n StoryboardResult,\n AssertionResult,\n StrictValidationSummary,\n StrictValidationVerdict,\n UpstreamTrafficPayloadMatch,\n RunnerNotice,\n NoticeCode,\n NoticeSeverity,\n} from './types';\nexport { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from './types';\n\n// Cross-step assertion registry (adcontextprotocol/adcp#2639)\nexport {\n registerAssertion,\n getAssertion,\n listAssertions,\n listDefaultAssertions,\n clearAssertionRegistry,\n resolveAssertions,\n} from './assertions';\nexport type { AssertionSpec, AssertionContext, RegisterAssertionOptions } from './assertions';\n\n// Webhook receiver (outbound-webhook conformance testing per adcontextprotocol/adcp#2431)\nexport { createWebhookReceiver } from './webhook-receiver';\nexport type {\n CapturedWebhook,\n CreateWebhookReceiverOptions,\n RetryReplayPolicy,\n WebhookFilter,\n WebhookReceiver,\n WebhookWaitResult,\n} from './webhook-receiver';\n\n// Runner-variable substitution (`{{runner.*}}` / `{{prior_step.*.operation_id}}`)\nexport { createRunnerVariables } from './context';\nexport type { RunnerVariables } from './context';\n\n// Webhook-assertion pseudo-tasks\nexport { WEBHOOK_ASSERTION_TASKS } from './webhook-assertions';\n\n// Runner\nexport {\n runStoryboard,\n runStoryboardStep,\n applyAdcpVersionRunOptions,\n applyStoryboardVersionOptions,\n getFirstStepPreview,\n summarizeStrictValidation,\n listStrictOnlyFailures,\n resolveCapabilityPath,\n evaluateCapabilityPredicate,\n buildDiscoveryFailedResult,\n} from './runner';\n\n// Parser (single-file load for spec evolution / targeted testing)\nexport { parseStoryboard, loadStoryboardFile } from './loader';\n\n// AdCP 3.2 fixture-handle resolution\nexport {\n applyFixtureBindingsToRequest,\n buildFixtureResolutionSpecs,\n FixtureBindingRegistry,\n matchesFixtureRequirements,\n normalizeFixtureMatchExpression,\n validateFixtureResolutionDeclarations,\n} from './fixture-resolution';\n\n// Compliance cache: capability-driven resolution\nexport {\n getComplianceCacheDir,\n getExternalSchemaRootForCompliance,\n loadComplianceIndex,\n listBundles,\n loadBundleStoryboards,\n listAllComplianceStoryboards,\n getComplianceStoryboardById,\n findBundleById,\n resolveBundleOrStoryboard,\n resolveStoryboardsForCapabilities,\n isComplianceVersionSupported,\n loadSpecialismDetail,\n listSpecialisms,\n CapabilityResolutionError,\n PROTOCOL_TO_PATH,\n UNBASELINED_SUPPORTED_PROTOCOLS,\n} from './compliance';\nexport type {\n AgentCapabilities,\n BundleKind,\n BundleRef,\n CapabilityResolutionCode,\n ComplianceIndex,\n ComplianceIndexProtocol,\n ComplianceIndexSpecialism,\n NotApplicableStoryboard,\n ResolveOptions,\n ResolvedBundle,\n ResolvedStoryboards,\n SpecialismDetail,\n} from './compliance';\n\n// Task mapping\nexport { TASK_TO_METHOD, executeStoryboardTask } from './task-map';\n\n// Path utilities\nexport { parsePath, resolvePath, setPath } from './path';\n\n// Context\nexport {\n CONTEXT_EXTRACTORS,\n extractContext,\n extractContextWithProvenance,\n injectContext,\n applyContextOutputs,\n applyContextOutputsWithProvenance,\n applyContextInputs,\n} from './context';\nexport type { ContextWriteResult } from './context';\n\n// Rejection-hint detection (issue #870)\nexport { detectContextRejectionHints } from './rejection-hints';\n\n// Request builder\nexport { buildRequest, hasRequestBuilder } from './request-builder';\n\n// Validations\nexport { runValidations } from './validations';\nexport {\n RateLimitTripObserver,\n RATE_LIMIT_TRIP_CONTRACT,\n RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MIN,\n extractTaskAdcpError,\n validateRateLimitTripSpec,\n type RateLimitTripFailureCode,\n type RateLimitTripClient,\n type RateLimitTripObservation,\n type RateLimitTripObserverOptions,\n type RateLimitTripResponseSnapshot,\n type RateLimitTripStructuredResult,\n type RateLimitTripTaskOptions,\n} from './rate-limit-trip';\n\n// `./junit` is deliberately NOT re-exported. The CLI requires it\n// directly from `dist/lib/testing/storyboard/junit.js` and the function\n// is marked `@internal` (stripped from the generated `.d.ts`). Add a\n// re-export here only if/when we promote it to a public API surface.\n\n// Test-kit schema validation\nexport { validateTestKit, TestKitValidationError, PROBE_TASK_ALLOWLIST } from './test-kit';\n\n// Sandbox entities\nexport type { SandboxBrand, SandboxAgent, SandboxEntities, BrandJson } from './sandbox-entities';\nexport { BrandJsonSchema, AdagentsJsonSchema } from '../../types/wellknown-schemas.generated';\nexport type { AdagentsJson } from '../../types/wellknown-schemas.generated';\nexport {\n getSandboxEntities,\n getSandboxBrands,\n getSandboxBrand,\n isSandboxDomain,\n clearSandboxCache,\n} from './sandbox-entities';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,gCAA0C;AA2D1C,mBAAgD;AAGhD,wBAOO;AAIP,8BAAsC;AAWtC,qBAAsC;AAItC,gCAAwC;AAGxC,oBAWO;AAGP,oBAAoD;AAGpD,gCAOO;AAGP,wBAiBO;AAiBP,sBAAsD;AAGtD,kBAAgD;AAGhD,IAAAA,kBAQO;AAIP,6BAA4C;AAG5C,6BAAgD;AAGhD,yBAA+B;AAC/B,6BAeO;AAQP,sBAA8E;AAI9E,+BAAoD;AAEpD,8BAMO;AAAA,IAlNP,qDAA0B;","names":["import_context"]}
1
+ {"version":3,"sources":["../../../../src/lib/testing/storyboard/index.ts"],"sourcesContent":["/**\n * Storyboard-driven testing for AdCP agents.\n *\n * Storyboards are YAML-defined workflows that map directly to\n * SingleAgentClient methods, enabling step-by-step agent testing.\n * The canonical storyboard set lives in the AdCP compliance tarball\n * and is pulled into `compliance/cache/{version}/` via `npm run sync-schemas`.\n */\n\n// Side-effect import: registers the default cross-step assertions that\n// upstream storyboards reference by id (idempotency.conflict_no_payload_leak,\n// context.no_secret_echo, governance.denial_blocks_mutation). Without this\n// registration here, any `runStoryboard` call against a storyboard declaring\n// `invariants: [...]` would throw at start on unresolved ids. Consumers who\n// want to replace the defaults can `clearAssertionRegistry()` first.\nimport { registerDefaultInvariants } from './default-invariants';\n\nregisterDefaultInvariants();\n\n// Types\nexport type {\n A2ATaskEnvelope,\n AgentEntry,\n Storyboard,\n StoryboardFixtureResolution,\n FixtureResolutionStrategy,\n FixtureMatchOperator,\n FixtureMatchClause,\n FixtureResolutionDeclaration,\n ProductFixtureResolutionDeclaration,\n PricingOptionFixtureResolutionDeclaration,\n FixtureResolutionStatus,\n FixtureResolutionRecord,\n FixtureResolutionAttempt,\n FixtureResolutionEvidence,\n FixtureResolutionCoverageGap,\n StoryboardInvariants,\n StoryboardInvariantsObject,\n StepInvariantsObject,\n StoryboardPhase,\n StoryboardStep,\n RateLimitTripSpec,\n StoryboardValidation,\n StoryboardValidationCheck,\n WebhookFilterSpec,\n WebhookRetryTriggerSpec,\n WebhookAssertionErrorCode,\n ContextOutput,\n ContextInput,\n ContextProvenanceEntry,\n ContextValueRejectedHint,\n ShapeDriftHint,\n MissingRequiredFieldHint,\n FormatMismatchHint,\n MonotonicViolationHint,\n ImpairmentCoherenceHint,\n ImpairmentCoherenceNotApplicableHint,\n StoryboardContext,\n StoryboardRunOptions,\n TrustedMatchContextProviderEndpoint,\n TrustedMatchContextRegistrationContext,\n TrustedMatchContextRouterRunnerOptions,\n ValidationResult,\n StoryboardStepPreview,\n StoryboardStepResult,\n StoryboardStepHint,\n StoryboardStepHintBase,\n StoryboardPhaseResult,\n StoryboardResult,\n AssertionResult,\n StrictValidationSummary,\n StrictValidationVerdict,\n UpstreamTrafficPayloadMatch,\n RunnerNotice,\n NoticeCode,\n NoticeSeverity,\n} from './types';\nexport { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from './types';\n\n// Cross-step assertion registry (adcontextprotocol/adcp#2639)\nexport {\n registerAssertion,\n getAssertion,\n listAssertions,\n listDefaultAssertions,\n clearAssertionRegistry,\n resolveAssertions,\n} from './assertions';\nexport type { AssertionSpec, AssertionContext, RegisterAssertionOptions } from './assertions';\n\n// Webhook receiver (outbound-webhook conformance testing per adcontextprotocol/adcp#2431)\nexport { createWebhookReceiver } from './webhook-receiver';\nexport type {\n CapturedWebhook,\n CreateWebhookReceiverOptions,\n RetryReplayPolicy,\n WebhookFilter,\n WebhookReceiver,\n WebhookWaitResult,\n} from './webhook-receiver';\n\n// Runner-variable substitution (`{{runner.*}}` / `{{prior_step.*.operation_id}}`)\nexport { createRunnerVariables } from './context';\nexport type { RunnerVariables } from './context';\n\n// Webhook-assertion pseudo-tasks\nexport { WEBHOOK_ASSERTION_TASKS } from './webhook-assertions';\n\n// Runner\nexport {\n runStoryboard,\n runStoryboardStep,\n applyAdcpVersionRunOptions,\n applyStoryboardVersionOptions,\n getFirstStepPreview,\n summarizeStrictValidation,\n listStrictOnlyFailures,\n resolveCapabilityPath,\n evaluateCapabilityPredicate,\n buildDiscoveryFailedResult,\n} from './runner';\n\n// Parser (single-file load for spec evolution / targeted testing)\nexport { parseStoryboard, loadStoryboardFile } from './loader';\n\n// AdCP 3.2 fixture-handle resolution\nexport {\n applyFixtureBindingsToRequest,\n buildFixtureResolutionSpecs,\n FixtureBindingRegistry,\n matchesFixtureRequirements,\n normalizeFixtureMatchExpression,\n validateFixtureResolutionDeclarations,\n} from './fixture-resolution';\n\n// Compliance cache: capability-driven resolution\nexport {\n getComplianceCacheDir,\n getExternalSchemaRootForCompliance,\n loadComplianceIndex,\n listBundles,\n loadBundleStoryboards,\n listAllComplianceStoryboards,\n getComplianceStoryboardById,\n findBundleById,\n resolveBundleOrStoryboard,\n resolveStoryboardsForCapabilities,\n isComplianceVersionSupported,\n loadSpecialismDetail,\n listSpecialisms,\n CapabilityResolutionError,\n PROTOCOL_TO_PATH,\n UNBASELINED_SUPPORTED_PROTOCOLS,\n} from './compliance';\nexport type {\n AgentCapabilities,\n BundleKind,\n BundleRef,\n CapabilityResolutionCode,\n ComplianceIndex,\n ComplianceIndexProtocol,\n ComplianceIndexSpecialism,\n NotApplicableStoryboard,\n ResolveOptions,\n ResolvedBundle,\n ResolvedStoryboards,\n SpecialismDetail,\n} from './compliance';\n\n// Task mapping\nexport { TASK_TO_METHOD, executeStoryboardTask } from './task-map';\n\n// Storyboard-only creative asset directives\nexport { expandCreativeAssetDirectives, findUnresolvedCreativeAssetDirectives } from './creative-assets';\n\n// Path utilities\nexport { parsePath, resolvePath, setPath } from './path';\n\n// Context\nexport {\n CONTEXT_EXTRACTORS,\n extractContext,\n extractContextWithProvenance,\n injectContext,\n applyContextOutputs,\n applyContextOutputsWithProvenance,\n applyContextInputs,\n} from './context';\nexport type { ContextWriteResult } from './context';\n\n// Rejection-hint detection (issue #870)\nexport { detectContextRejectionHints } from './rejection-hints';\n\n// Request builder\nexport { buildRequest, hasRequestBuilder } from './request-builder';\n\n// Validations\nexport { runValidations } from './validations';\nexport {\n gradeOAuthMetadataGraph,\n gradeOAuthMetadataGraphVector,\n loadOAuthMetadataGraphVectors,\n buildAuthorizationServerMetadataUrl,\n buildProtectedResourceMetadataUrl,\n normalizeOAuthResourceForComparison,\n redactOAuthUrlForOutput,\n} from './oauth-metadata-graph';\nexport type {\n GradeOAuthMetadataGraphOptions,\n OAuthMetadataFetchResponse,\n OAuthMetadataFetchTransport,\n OAuthMetadataGraphErrorCode,\n OAuthMetadataGraphFinding,\n OAuthMetadataGraphGrade,\n OAuthMetadataGraphObservation,\n OAuthMetadataGraphVector,\n OAuthMetadataGraphVectorCorpus,\n} from './oauth-metadata-graph';\nexport {\n RateLimitTripObserver,\n RATE_LIMIT_TRIP_CONTRACT,\n RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MIN,\n extractTaskAdcpError,\n validateRateLimitTripSpec,\n type RateLimitTripFailureCode,\n type RateLimitTripClient,\n type RateLimitTripObservation,\n type RateLimitTripObserverOptions,\n type RateLimitTripResponseSnapshot,\n type RateLimitTripStructuredResult,\n type RateLimitTripTaskOptions,\n} from './rate-limit-trip';\n\n// `./junit` is deliberately NOT re-exported. The CLI requires it\n// directly from `dist/lib/testing/storyboard/junit.js` and the function\n// is marked `@internal` (stripped from the generated `.d.ts`). Add a\n// re-export here only if/when we promote it to a public API surface.\n\n// Test-kit schema validation\nexport { validateTestKit, TestKitValidationError, PROBE_TASK_ALLOWLIST } from './test-kit';\n\n// Sandbox entities\nexport type { SandboxBrand, SandboxAgent, SandboxEntities, BrandJson } from './sandbox-entities';\nexport { BrandJsonSchema, AdagentsJsonSchema } from '../../types/wellknown-schemas.generated';\nexport type { AdagentsJson } from '../../types/wellknown-schemas.generated';\nexport {\n getSandboxEntities,\n getSandboxBrands,\n getSandboxBrand,\n isSandboxDomain,\n clearSandboxCache,\n} from './sandbox-entities';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,gCAA0C;AA8D1C,mBAAgD;AAGhD,wBAOO;AAIP,8BAAsC;AAWtC,qBAAsC;AAItC,gCAAwC;AAGxC,oBAWO;AAGP,oBAAoD;AAGpD,gCAOO;AAGP,wBAiBO;AAiBP,sBAAsD;AAGtD,6BAAqF;AAGrF,kBAAgD;AAGhD,IAAAA,kBAQO;AAIP,6BAA4C;AAG5C,6BAAgD;AAGhD,yBAA+B;AAC/B,kCAQO;AAYP,6BAeO;AAQP,sBAA8E;AAI9E,+BAAoD;AAEpD,8BAMO;AAAA,IA5OP,qDAA0B;","names":["import_context"]}
@@ -52,6 +52,7 @@ import {
52
52
  UNBASELINED_SUPPORTED_PROTOCOLS
53
53
  } from "./compliance.mjs";
54
54
  import { TASK_TO_METHOD, executeStoryboardTask } from "./task-map.mjs";
55
+ import { expandCreativeAssetDirectives, findUnresolvedCreativeAssetDirectives } from "./creative-assets.mjs";
55
56
  import { parsePath, resolvePath, setPath } from "./path.mjs";
56
57
  import {
57
58
  CONTEXT_EXTRACTORS,
@@ -65,6 +66,15 @@ import {
65
66
  import { detectContextRejectionHints } from "./rejection-hints.mjs";
66
67
  import { buildRequest, hasRequestBuilder } from "./request-builder.mjs";
67
68
  import { runValidations } from "./validations.mjs";
69
+ import {
70
+ gradeOAuthMetadataGraph,
71
+ gradeOAuthMetadataGraphVector,
72
+ loadOAuthMetadataGraphVectors,
73
+ buildAuthorizationServerMetadataUrl,
74
+ buildProtectedResourceMetadataUrl,
75
+ normalizeOAuthResourceForComparison,
76
+ redactOAuthUrlForOutput
77
+ } from "./oauth-metadata-graph/index.mjs";
68
78
  import {
69
79
  RateLimitTripObserver,
70
80
  RATE_LIMIT_TRIP_CONTRACT,
@@ -107,8 +117,10 @@ export {
107
117
  applyContextOutputsWithProvenance,
108
118
  applyFixtureBindingsToRequest,
109
119
  applyStoryboardVersionOptions,
120
+ buildAuthorizationServerMetadataUrl,
110
121
  buildDiscoveryFailedResult,
111
122
  buildFixtureResolutionSpecs,
123
+ buildProtectedResourceMetadataUrl,
112
124
  buildRequest,
113
125
  clearAssertionRegistry,
114
126
  clearSandboxCache,
@@ -117,10 +129,12 @@ export {
117
129
  detectContextRejectionHints,
118
130
  evaluateCapabilityPredicate,
119
131
  executeStoryboardTask,
132
+ expandCreativeAssetDirectives,
120
133
  extractContext,
121
134
  extractContextWithProvenance,
122
135
  extractTaskAdcpError,
123
136
  findBundleById,
137
+ findUnresolvedCreativeAssetDirectives,
124
138
  getAssertion,
125
139
  getComplianceCacheDir,
126
140
  getComplianceStoryboardById,
@@ -129,6 +143,8 @@ export {
129
143
  getSandboxBrand,
130
144
  getSandboxBrands,
131
145
  getSandboxEntities,
146
+ gradeOAuthMetadataGraph,
147
+ gradeOAuthMetadataGraphVector,
132
148
  hasRequestBuilder,
133
149
  injectContext,
134
150
  isComplianceVersionSupported,
@@ -141,12 +157,15 @@ export {
141
157
  listStrictOnlyFailures,
142
158
  loadBundleStoryboards,
143
159
  loadComplianceIndex,
160
+ loadOAuthMetadataGraphVectors,
144
161
  loadSpecialismDetail,
145
162
  loadStoryboardFile,
146
163
  matchesFixtureRequirements,
147
164
  normalizeFixtureMatchExpression,
165
+ normalizeOAuthResourceForComparison,
148
166
  parsePath,
149
167
  parseStoryboard,
168
+ redactOAuthUrlForOutput,
150
169
  registerAssertion,
151
170
  resolveAssertions,
152
171
  resolveBundleOrStoryboard,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/testing/storyboard/index.ts"],"sourcesContent":["/**\n * Storyboard-driven testing for AdCP agents.\n *\n * Storyboards are YAML-defined workflows that map directly to\n * SingleAgentClient methods, enabling step-by-step agent testing.\n * The canonical storyboard set lives in the AdCP compliance tarball\n * and is pulled into `compliance/cache/{version}/` via `npm run sync-schemas`.\n */\n\n// Side-effect import: registers the default cross-step assertions that\n// upstream storyboards reference by id (idempotency.conflict_no_payload_leak,\n// context.no_secret_echo, governance.denial_blocks_mutation). Without this\n// registration here, any `runStoryboard` call against a storyboard declaring\n// `invariants: [...]` would throw at start on unresolved ids. Consumers who\n// want to replace the defaults can `clearAssertionRegistry()` first.\nimport { registerDefaultInvariants } from './default-invariants';\n\nregisterDefaultInvariants();\n\n// Types\nexport type {\n A2ATaskEnvelope,\n AgentEntry,\n Storyboard,\n StoryboardFixtureResolution,\n FixtureResolutionStrategy,\n FixtureMatchOperator,\n FixtureMatchClause,\n FixtureResolutionDeclaration,\n ProductFixtureResolutionDeclaration,\n PricingOptionFixtureResolutionDeclaration,\n FixtureResolutionStatus,\n FixtureResolutionRecord,\n FixtureResolutionAttempt,\n FixtureResolutionEvidence,\n FixtureResolutionCoverageGap,\n StoryboardInvariants,\n StoryboardInvariantsObject,\n StepInvariantsObject,\n StoryboardPhase,\n StoryboardStep,\n RateLimitTripSpec,\n StoryboardValidation,\n StoryboardValidationCheck,\n WebhookFilterSpec,\n WebhookRetryTriggerSpec,\n WebhookAssertionErrorCode,\n ContextOutput,\n ContextInput,\n ContextProvenanceEntry,\n ContextValueRejectedHint,\n ShapeDriftHint,\n MissingRequiredFieldHint,\n FormatMismatchHint,\n MonotonicViolationHint,\n ImpairmentCoherenceHint,\n ImpairmentCoherenceNotApplicableHint,\n StoryboardContext,\n StoryboardRunOptions,\n ValidationResult,\n StoryboardStepPreview,\n StoryboardStepResult,\n StoryboardStepHint,\n StoryboardStepHintBase,\n StoryboardPhaseResult,\n StoryboardResult,\n AssertionResult,\n StrictValidationSummary,\n StrictValidationVerdict,\n UpstreamTrafficPayloadMatch,\n RunnerNotice,\n NoticeCode,\n NoticeSeverity,\n} from './types';\nexport { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from './types';\n\n// Cross-step assertion registry (adcontextprotocol/adcp#2639)\nexport {\n registerAssertion,\n getAssertion,\n listAssertions,\n listDefaultAssertions,\n clearAssertionRegistry,\n resolveAssertions,\n} from './assertions';\nexport type { AssertionSpec, AssertionContext, RegisterAssertionOptions } from './assertions';\n\n// Webhook receiver (outbound-webhook conformance testing per adcontextprotocol/adcp#2431)\nexport { createWebhookReceiver } from './webhook-receiver';\nexport type {\n CapturedWebhook,\n CreateWebhookReceiverOptions,\n RetryReplayPolicy,\n WebhookFilter,\n WebhookReceiver,\n WebhookWaitResult,\n} from './webhook-receiver';\n\n// Runner-variable substitution (`{{runner.*}}` / `{{prior_step.*.operation_id}}`)\nexport { createRunnerVariables } from './context';\nexport type { RunnerVariables } from './context';\n\n// Webhook-assertion pseudo-tasks\nexport { WEBHOOK_ASSERTION_TASKS } from './webhook-assertions';\n\n// Runner\nexport {\n runStoryboard,\n runStoryboardStep,\n applyAdcpVersionRunOptions,\n applyStoryboardVersionOptions,\n getFirstStepPreview,\n summarizeStrictValidation,\n listStrictOnlyFailures,\n resolveCapabilityPath,\n evaluateCapabilityPredicate,\n buildDiscoveryFailedResult,\n} from './runner';\n\n// Parser (single-file load for spec evolution / targeted testing)\nexport { parseStoryboard, loadStoryboardFile } from './loader';\n\n// AdCP 3.2 fixture-handle resolution\nexport {\n applyFixtureBindingsToRequest,\n buildFixtureResolutionSpecs,\n FixtureBindingRegistry,\n matchesFixtureRequirements,\n normalizeFixtureMatchExpression,\n validateFixtureResolutionDeclarations,\n} from './fixture-resolution';\n\n// Compliance cache: capability-driven resolution\nexport {\n getComplianceCacheDir,\n getExternalSchemaRootForCompliance,\n loadComplianceIndex,\n listBundles,\n loadBundleStoryboards,\n listAllComplianceStoryboards,\n getComplianceStoryboardById,\n findBundleById,\n resolveBundleOrStoryboard,\n resolveStoryboardsForCapabilities,\n isComplianceVersionSupported,\n loadSpecialismDetail,\n listSpecialisms,\n CapabilityResolutionError,\n PROTOCOL_TO_PATH,\n UNBASELINED_SUPPORTED_PROTOCOLS,\n} from './compliance';\nexport type {\n AgentCapabilities,\n BundleKind,\n BundleRef,\n CapabilityResolutionCode,\n ComplianceIndex,\n ComplianceIndexProtocol,\n ComplianceIndexSpecialism,\n NotApplicableStoryboard,\n ResolveOptions,\n ResolvedBundle,\n ResolvedStoryboards,\n SpecialismDetail,\n} from './compliance';\n\n// Task mapping\nexport { TASK_TO_METHOD, executeStoryboardTask } from './task-map';\n\n// Path utilities\nexport { parsePath, resolvePath, setPath } from './path';\n\n// Context\nexport {\n CONTEXT_EXTRACTORS,\n extractContext,\n extractContextWithProvenance,\n injectContext,\n applyContextOutputs,\n applyContextOutputsWithProvenance,\n applyContextInputs,\n} from './context';\nexport type { ContextWriteResult } from './context';\n\n// Rejection-hint detection (issue #870)\nexport { detectContextRejectionHints } from './rejection-hints';\n\n// Request builder\nexport { buildRequest, hasRequestBuilder } from './request-builder';\n\n// Validations\nexport { runValidations } from './validations';\nexport {\n RateLimitTripObserver,\n RATE_LIMIT_TRIP_CONTRACT,\n RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MIN,\n extractTaskAdcpError,\n validateRateLimitTripSpec,\n type RateLimitTripFailureCode,\n type RateLimitTripClient,\n type RateLimitTripObservation,\n type RateLimitTripObserverOptions,\n type RateLimitTripResponseSnapshot,\n type RateLimitTripStructuredResult,\n type RateLimitTripTaskOptions,\n} from './rate-limit-trip';\n\n// `./junit` is deliberately NOT re-exported. The CLI requires it\n// directly from `dist/lib/testing/storyboard/junit.js` and the function\n// is marked `@internal` (stripped from the generated `.d.ts`). Add a\n// re-export here only if/when we promote it to a public API surface.\n\n// Test-kit schema validation\nexport { validateTestKit, TestKitValidationError, PROBE_TASK_ALLOWLIST } from './test-kit';\n\n// Sandbox entities\nexport type { SandboxBrand, SandboxAgent, SandboxEntities, BrandJson } from './sandbox-entities';\nexport { BrandJsonSchema, AdagentsJsonSchema } from '../../types/wellknown-schemas.generated';\nexport type { AdagentsJson } from '../../types/wellknown-schemas.generated';\nexport {\n getSandboxEntities,\n getSandboxBrands,\n getSandboxBrand,\n isSandboxDomain,\n clearSandboxCache,\n} from './sandbox-entities';\n"],"mappings":"AAeA,SAAS,iCAAiC;AAE1C,0BAA0B;AAyD1B,SAAS,uCAAuC;AAGhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,6BAA6B;AAWtC,SAAS,6BAA6B;AAItC,SAAS,+BAA+B;AAGxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAiB,0BAA0B;AAGpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAiBP,SAAS,gBAAgB,6BAA6B;AAGtD,SAAS,WAAW,aAAa,eAAe;AAGhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,mCAAmC;AAG5C,SAAS,cAAc,yBAAyB;AAGhD,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AAQP,SAAS,iBAAiB,wBAAwB,4BAA4B;AAI9E,SAAS,iBAAiB,0BAA0B;AAEpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/testing/storyboard/index.ts"],"sourcesContent":["/**\n * Storyboard-driven testing for AdCP agents.\n *\n * Storyboards are YAML-defined workflows that map directly to\n * SingleAgentClient methods, enabling step-by-step agent testing.\n * The canonical storyboard set lives in the AdCP compliance tarball\n * and is pulled into `compliance/cache/{version}/` via `npm run sync-schemas`.\n */\n\n// Side-effect import: registers the default cross-step assertions that\n// upstream storyboards reference by id (idempotency.conflict_no_payload_leak,\n// context.no_secret_echo, governance.denial_blocks_mutation). Without this\n// registration here, any `runStoryboard` call against a storyboard declaring\n// `invariants: [...]` would throw at start on unresolved ids. Consumers who\n// want to replace the defaults can `clearAssertionRegistry()` first.\nimport { registerDefaultInvariants } from './default-invariants';\n\nregisterDefaultInvariants();\n\n// Types\nexport type {\n A2ATaskEnvelope,\n AgentEntry,\n Storyboard,\n StoryboardFixtureResolution,\n FixtureResolutionStrategy,\n FixtureMatchOperator,\n FixtureMatchClause,\n FixtureResolutionDeclaration,\n ProductFixtureResolutionDeclaration,\n PricingOptionFixtureResolutionDeclaration,\n FixtureResolutionStatus,\n FixtureResolutionRecord,\n FixtureResolutionAttempt,\n FixtureResolutionEvidence,\n FixtureResolutionCoverageGap,\n StoryboardInvariants,\n StoryboardInvariantsObject,\n StepInvariantsObject,\n StoryboardPhase,\n StoryboardStep,\n RateLimitTripSpec,\n StoryboardValidation,\n StoryboardValidationCheck,\n WebhookFilterSpec,\n WebhookRetryTriggerSpec,\n WebhookAssertionErrorCode,\n ContextOutput,\n ContextInput,\n ContextProvenanceEntry,\n ContextValueRejectedHint,\n ShapeDriftHint,\n MissingRequiredFieldHint,\n FormatMismatchHint,\n MonotonicViolationHint,\n ImpairmentCoherenceHint,\n ImpairmentCoherenceNotApplicableHint,\n StoryboardContext,\n StoryboardRunOptions,\n TrustedMatchContextProviderEndpoint,\n TrustedMatchContextRegistrationContext,\n TrustedMatchContextRouterRunnerOptions,\n ValidationResult,\n StoryboardStepPreview,\n StoryboardStepResult,\n StoryboardStepHint,\n StoryboardStepHintBase,\n StoryboardPhaseResult,\n StoryboardResult,\n AssertionResult,\n StrictValidationSummary,\n StrictValidationVerdict,\n UpstreamTrafficPayloadMatch,\n RunnerNotice,\n NoticeCode,\n NoticeSeverity,\n} from './types';\nexport { WEBHOOK_IDEMPOTENCY_KEY_PATTERN } from './types';\n\n// Cross-step assertion registry (adcontextprotocol/adcp#2639)\nexport {\n registerAssertion,\n getAssertion,\n listAssertions,\n listDefaultAssertions,\n clearAssertionRegistry,\n resolveAssertions,\n} from './assertions';\nexport type { AssertionSpec, AssertionContext, RegisterAssertionOptions } from './assertions';\n\n// Webhook receiver (outbound-webhook conformance testing per adcontextprotocol/adcp#2431)\nexport { createWebhookReceiver } from './webhook-receiver';\nexport type {\n CapturedWebhook,\n CreateWebhookReceiverOptions,\n RetryReplayPolicy,\n WebhookFilter,\n WebhookReceiver,\n WebhookWaitResult,\n} from './webhook-receiver';\n\n// Runner-variable substitution (`{{runner.*}}` / `{{prior_step.*.operation_id}}`)\nexport { createRunnerVariables } from './context';\nexport type { RunnerVariables } from './context';\n\n// Webhook-assertion pseudo-tasks\nexport { WEBHOOK_ASSERTION_TASKS } from './webhook-assertions';\n\n// Runner\nexport {\n runStoryboard,\n runStoryboardStep,\n applyAdcpVersionRunOptions,\n applyStoryboardVersionOptions,\n getFirstStepPreview,\n summarizeStrictValidation,\n listStrictOnlyFailures,\n resolveCapabilityPath,\n evaluateCapabilityPredicate,\n buildDiscoveryFailedResult,\n} from './runner';\n\n// Parser (single-file load for spec evolution / targeted testing)\nexport { parseStoryboard, loadStoryboardFile } from './loader';\n\n// AdCP 3.2 fixture-handle resolution\nexport {\n applyFixtureBindingsToRequest,\n buildFixtureResolutionSpecs,\n FixtureBindingRegistry,\n matchesFixtureRequirements,\n normalizeFixtureMatchExpression,\n validateFixtureResolutionDeclarations,\n} from './fixture-resolution';\n\n// Compliance cache: capability-driven resolution\nexport {\n getComplianceCacheDir,\n getExternalSchemaRootForCompliance,\n loadComplianceIndex,\n listBundles,\n loadBundleStoryboards,\n listAllComplianceStoryboards,\n getComplianceStoryboardById,\n findBundleById,\n resolveBundleOrStoryboard,\n resolveStoryboardsForCapabilities,\n isComplianceVersionSupported,\n loadSpecialismDetail,\n listSpecialisms,\n CapabilityResolutionError,\n PROTOCOL_TO_PATH,\n UNBASELINED_SUPPORTED_PROTOCOLS,\n} from './compliance';\nexport type {\n AgentCapabilities,\n BundleKind,\n BundleRef,\n CapabilityResolutionCode,\n ComplianceIndex,\n ComplianceIndexProtocol,\n ComplianceIndexSpecialism,\n NotApplicableStoryboard,\n ResolveOptions,\n ResolvedBundle,\n ResolvedStoryboards,\n SpecialismDetail,\n} from './compliance';\n\n// Task mapping\nexport { TASK_TO_METHOD, executeStoryboardTask } from './task-map';\n\n// Storyboard-only creative asset directives\nexport { expandCreativeAssetDirectives, findUnresolvedCreativeAssetDirectives } from './creative-assets';\n\n// Path utilities\nexport { parsePath, resolvePath, setPath } from './path';\n\n// Context\nexport {\n CONTEXT_EXTRACTORS,\n extractContext,\n extractContextWithProvenance,\n injectContext,\n applyContextOutputs,\n applyContextOutputsWithProvenance,\n applyContextInputs,\n} from './context';\nexport type { ContextWriteResult } from './context';\n\n// Rejection-hint detection (issue #870)\nexport { detectContextRejectionHints } from './rejection-hints';\n\n// Request builder\nexport { buildRequest, hasRequestBuilder } from './request-builder';\n\n// Validations\nexport { runValidations } from './validations';\nexport {\n gradeOAuthMetadataGraph,\n gradeOAuthMetadataGraphVector,\n loadOAuthMetadataGraphVectors,\n buildAuthorizationServerMetadataUrl,\n buildProtectedResourceMetadataUrl,\n normalizeOAuthResourceForComparison,\n redactOAuthUrlForOutput,\n} from './oauth-metadata-graph';\nexport type {\n GradeOAuthMetadataGraphOptions,\n OAuthMetadataFetchResponse,\n OAuthMetadataFetchTransport,\n OAuthMetadataGraphErrorCode,\n OAuthMetadataGraphFinding,\n OAuthMetadataGraphGrade,\n OAuthMetadataGraphObservation,\n OAuthMetadataGraphVector,\n OAuthMetadataGraphVectorCorpus,\n} from './oauth-metadata-graph';\nexport {\n RateLimitTripObserver,\n RATE_LIMIT_TRIP_CONTRACT,\n RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MIN,\n extractTaskAdcpError,\n validateRateLimitTripSpec,\n type RateLimitTripFailureCode,\n type RateLimitTripClient,\n type RateLimitTripObservation,\n type RateLimitTripObserverOptions,\n type RateLimitTripResponseSnapshot,\n type RateLimitTripStructuredResult,\n type RateLimitTripTaskOptions,\n} from './rate-limit-trip';\n\n// `./junit` is deliberately NOT re-exported. The CLI requires it\n// directly from `dist/lib/testing/storyboard/junit.js` and the function\n// is marked `@internal` (stripped from the generated `.d.ts`). Add a\n// re-export here only if/when we promote it to a public API surface.\n\n// Test-kit schema validation\nexport { validateTestKit, TestKitValidationError, PROBE_TASK_ALLOWLIST } from './test-kit';\n\n// Sandbox entities\nexport type { SandboxBrand, SandboxAgent, SandboxEntities, BrandJson } from './sandbox-entities';\nexport { BrandJsonSchema, AdagentsJsonSchema } from '../../types/wellknown-schemas.generated';\nexport type { AdagentsJson } from '../../types/wellknown-schemas.generated';\nexport {\n getSandboxEntities,\n getSandboxBrands,\n getSandboxBrand,\n isSandboxDomain,\n clearSandboxCache,\n} from './sandbox-entities';\n"],"mappings":"AAeA,SAAS,iCAAiC;AAE1C,0BAA0B;AA4D1B,SAAS,uCAAuC;AAGhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,6BAA6B;AAWtC,SAAS,6BAA6B;AAItC,SAAS,+BAA+B;AAGxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAiB,0BAA0B;AAGpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAiBP,SAAS,gBAAgB,6BAA6B;AAGtD,SAAS,+BAA+B,6CAA6C;AAGrF,SAAS,WAAW,aAAa,eAAe;AAGhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,mCAAmC;AAG5C,SAAS,cAAc,yBAAyB;AAGhD,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAYP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AAQP,SAAS,iBAAiB,wBAAwB,4BAA4B;AAI9E,SAAS,iBAAiB,0BAA0B;AAEpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -0,0 +1,21 @@
1
+ import type { OAuthMetadataGraphGrade } from './types.mjs';
2
+ export interface GradeOAuthMetadataGraphOptions {
3
+ /** Explicit local-development opt-in. Production grading remains HTTPS-only. */
4
+ allowHttp?: boolean;
5
+ signal?: AbortSignal;
6
+ /** Trusted scoped fetch supplied by a hosted runner; it must enforce peer-address binding. */
7
+ trustedFetchFn?: typeof fetch;
8
+ }
9
+ /**
10
+ * Shared RFC 9728 comparison semantics used by security.yaml and oauth_setup.
11
+ * Only scheme and host are case-folded and default ports are elided. The
12
+ * path, query, fragment, userinfo, and trailing slash remain significant.
13
+ */
14
+ export declare function normalizeOAuthResourceForComparison(value: string): string;
15
+ /** Redact sensitive URL components before including a URL in a report. */
16
+ export declare function redactOAuthUrlForOutput(value: string): string;
17
+ /** Redact absolute URLs embedded in diagnostic text before report serialization. */
18
+ export declare function redactOAuthUrlsInText(value: string): string;
19
+ export declare function buildProtectedResourceMetadataUrl(agentUrl: string): string;
20
+ export declare function buildAuthorizationServerMetadataUrl(issuer: string): string;
21
+ export declare function gradeOAuthMetadataGraph(agentUrl: string, options?: GradeOAuthMetadataGraphOptions): Promise<OAuthMetadataGraphGrade>;
@@ -0,0 +1,22 @@
1
+ import type { OAuthMetadataGraphGrade } from './types';
2
+ export interface GradeOAuthMetadataGraphOptions {
3
+ /** Explicit local-development opt-in. Production grading remains HTTPS-only. */
4
+ allowHttp?: boolean;
5
+ signal?: AbortSignal;
6
+ /** Trusted scoped fetch supplied by a hosted runner; it must enforce peer-address binding. */
7
+ trustedFetchFn?: typeof fetch;
8
+ }
9
+ /**
10
+ * Shared RFC 9728 comparison semantics used by security.yaml and oauth_setup.
11
+ * Only scheme and host are case-folded and default ports are elided. The
12
+ * path, query, fragment, userinfo, and trailing slash remain significant.
13
+ */
14
+ export declare function normalizeOAuthResourceForComparison(value: string): string;
15
+ /** Redact sensitive URL components before including a URL in a report. */
16
+ export declare function redactOAuthUrlForOutput(value: string): string;
17
+ /** Redact absolute URLs embedded in diagnostic text before report serialization. */
18
+ export declare function redactOAuthUrlsInText(value: string): string;
19
+ export declare function buildProtectedResourceMetadataUrl(agentUrl: string): string;
20
+ export declare function buildAuthorizationServerMetadataUrl(issuer: string): string;
21
+ export declare function gradeOAuthMetadataGraph(agentUrl: string, options?: GradeOAuthMetadataGraphOptions): Promise<OAuthMetadataGraphGrade>;
22
+ //# sourceMappingURL=grader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grader.d.ts","sourceRoot":"","sources":["../../../../../src/lib/testing/storyboard/oauth-metadata-graph/grader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,SAAS,CAAC;AA4BjB,MAAM,WAAW,8BAA8B;IAC7C,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,KAAK,CAAC;CAC/B;AA8BD;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoCzE;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAa7D;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,uBAAuB,CAAC,CAElC"}