@adcp/sdk 12.0.0 → 12.0.1

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 (942) hide show
  1. package/dist/lib/adapters/content-standards-adapter.mjs +0 -6
  2. package/dist/lib/adapters/content-standards-adapter.mjs.map +1 -1
  3. package/dist/lib/adapters/derived-account-store.mjs +0 -6
  4. package/dist/lib/adapters/derived-account-store.mjs.map +1 -1
  5. package/dist/lib/adapters/governance-adapter.mjs +0 -6
  6. package/dist/lib/adapters/governance-adapter.mjs.map +1 -1
  7. package/dist/lib/adapters/implicit-account-store.mjs +0 -6
  8. package/dist/lib/adapters/implicit-account-store.mjs.map +1 -1
  9. package/dist/lib/adapters/index.mjs +0 -6
  10. package/dist/lib/adapters/index.mjs.map +1 -1
  11. package/dist/lib/adapters/legacy/v2-5/create_media_buy.mjs +0 -6
  12. package/dist/lib/adapters/legacy/v2-5/create_media_buy.mjs.map +1 -1
  13. package/dist/lib/adapters/legacy/v2-5/get_products.mjs +0 -6
  14. package/dist/lib/adapters/legacy/v2-5/get_products.mjs.map +1 -1
  15. package/dist/lib/adapters/legacy/v2-5/index.mjs +0 -6
  16. package/dist/lib/adapters/legacy/v2-5/index.mjs.map +1 -1
  17. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.mjs +0 -6
  18. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.mjs.map +1 -1
  19. package/dist/lib/adapters/legacy/v2-5/preview_creative.mjs +0 -6
  20. package/dist/lib/adapters/legacy/v2-5/preview_creative.mjs.map +1 -1
  21. package/dist/lib/adapters/legacy/v2-5/sync_creatives.mjs +0 -6
  22. package/dist/lib/adapters/legacy/v2-5/sync_creatives.mjs.map +1 -1
  23. package/dist/lib/adapters/legacy/v2-5/types.mjs +0 -6
  24. package/dist/lib/adapters/legacy/v2-5/update_media_buy.mjs +0 -6
  25. package/dist/lib/adapters/legacy/v2-5/update_media_buy.mjs.map +1 -1
  26. package/dist/lib/adapters/oauth-passthrough-resolver.mjs +0 -6
  27. package/dist/lib/adapters/oauth-passthrough-resolver.mjs.map +1 -1
  28. package/dist/lib/adapters/property-list-adapter.mjs +0 -6
  29. package/dist/lib/adapters/property-list-adapter.mjs.map +1 -1
  30. package/dist/lib/adapters/roster-account-store.mjs +0 -6
  31. package/dist/lib/adapters/roster-account-store.mjs.map +1 -1
  32. package/dist/lib/adapters/si-session-manager.mjs +0 -6
  33. package/dist/lib/adapters/si-session-manager.mjs.map +1 -1
  34. package/dist/lib/adapters/version/3.0/brand-fields.mjs +0 -6
  35. package/dist/lib/adapters/version/3.0/brand-fields.mjs.map +1 -1
  36. package/dist/lib/adapters/version/3.0/get-products.mjs +0 -6
  37. package/dist/lib/adapters/version/3.0/get-products.mjs.map +1 -1
  38. package/dist/lib/adapters/version/3.0/index.mjs +0 -6
  39. package/dist/lib/adapters/version/3.0/index.mjs.map +1 -1
  40. package/dist/lib/adapters/version/3.0/sync-accounts.mjs +0 -6
  41. package/dist/lib/adapters/version/3.0/sync-accounts.mjs.map +1 -1
  42. package/dist/lib/adapters/version/index.mjs +0 -6
  43. package/dist/lib/adapters/version/index.mjs.map +1 -1
  44. package/dist/lib/adapters/version/types.mjs +0 -6
  45. package/dist/lib/advanced.mjs +0 -6
  46. package/dist/lib/advanced.mjs.map +1 -1
  47. package/dist/lib/agents/index.generated.mjs +0 -6
  48. package/dist/lib/agents/index.generated.mjs.map +1 -1
  49. package/dist/lib/auth/index.mjs +0 -6
  50. package/dist/lib/auth/index.mjs.map +1 -1
  51. package/dist/lib/auth/oauth/CLIFlowHandler.mjs +0 -6
  52. package/dist/lib/auth/oauth/CLIFlowHandler.mjs.map +1 -1
  53. package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs +0 -6
  54. package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs.map +1 -1
  55. package/dist/lib/auth/oauth/MCPOAuthProvider.mjs +0 -6
  56. package/dist/lib/auth/oauth/MCPOAuthProvider.mjs.map +1 -1
  57. package/dist/lib/auth/oauth/NonInteractiveFlowHandler.mjs +0 -6
  58. package/dist/lib/auth/oauth/NonInteractiveFlowHandler.mjs.map +1 -1
  59. package/dist/lib/auth/oauth/authorization-required.mjs +0 -6
  60. package/dist/lib/auth/oauth/authorization-required.mjs.map +1 -1
  61. package/dist/lib/auth/oauth/diagnose.mjs +0 -6
  62. package/dist/lib/auth/oauth/diagnose.mjs.map +1 -1
  63. package/dist/lib/auth/oauth/diagnostics.mjs +0 -6
  64. package/dist/lib/auth/oauth/diagnostics.mjs.map +1 -1
  65. package/dist/lib/auth/oauth/discovery.mjs +0 -6
  66. package/dist/lib/auth/oauth/discovery.mjs.map +1 -1
  67. package/dist/lib/auth/oauth/file-storage.mjs +0 -6
  68. package/dist/lib/auth/oauth/file-storage.mjs.map +1 -1
  69. package/dist/lib/auth/oauth/index.mjs +0 -6
  70. package/dist/lib/auth/oauth/index.mjs.map +1 -1
  71. package/dist/lib/auth/oauth/secret-resolver.mjs +0 -6
  72. package/dist/lib/auth/oauth/secret-resolver.mjs.map +1 -1
  73. package/dist/lib/auth/oauth/storage-registry.mjs +0 -6
  74. package/dist/lib/auth/oauth/storage-registry.mjs.map +1 -1
  75. package/dist/lib/auth/oauth/types.mjs +0 -6
  76. package/dist/lib/auth/oauth/types.mjs.map +1 -1
  77. package/dist/lib/auth/oauth/web-flow.mjs +0 -6
  78. package/dist/lib/auth/oauth/web-flow.mjs.map +1 -1
  79. package/dist/lib/brand/index.mjs +0 -6
  80. package/dist/lib/brand/index.mjs.map +1 -1
  81. package/dist/lib/canonical-references/index.mjs +6 -7
  82. package/dist/lib/canonical-references/index.mjs.map +1 -1
  83. package/dist/lib/client/index.mjs +0 -6
  84. package/dist/lib/client/index.mjs.map +1 -1
  85. package/dist/lib/compliance/index.mjs +0 -6
  86. package/dist/lib/compliance/index.mjs.map +1 -1
  87. package/dist/lib/compliance-fixtures/index.mjs +0 -6
  88. package/dist/lib/compliance-fixtures/index.mjs.map +1 -1
  89. package/dist/lib/compliance-fixtures/test-authorization-server.mjs +0 -6
  90. package/dist/lib/compliance-fixtures/test-authorization-server.mjs.map +1 -1
  91. package/dist/lib/conformance/index.mjs +0 -6
  92. package/dist/lib/conformance/index.mjs.map +1 -1
  93. package/dist/lib/conformance/invariants/uniformError.mjs +0 -6
  94. package/dist/lib/conformance/invariants/uniformError.mjs.map +1 -1
  95. package/dist/lib/conformance/invariants/uniformErrorComparator.mjs +0 -6
  96. package/dist/lib/conformance/invariants/uniformErrorComparator.mjs.map +1 -1
  97. package/dist/lib/conformance/oracle.mjs +0 -6
  98. package/dist/lib/conformance/oracle.mjs.map +1 -1
  99. package/dist/lib/conformance/runConformance.mjs +0 -6
  100. package/dist/lib/conformance/runConformance.mjs.map +1 -1
  101. package/dist/lib/conformance/runners.mjs +0 -6
  102. package/dist/lib/conformance/runners.mjs.map +1 -1
  103. package/dist/lib/conformance/schemaArbitrary.mjs +0 -6
  104. package/dist/lib/conformance/schemaArbitrary.mjs.map +1 -1
  105. package/dist/lib/conformance/schemaLoader.mjs +5 -6
  106. package/dist/lib/conformance/schemaLoader.mjs.map +1 -1
  107. package/dist/lib/conformance/seeder.mjs +0 -6
  108. package/dist/lib/conformance/seeder.mjs.map +1 -1
  109. package/dist/lib/conformance/types.mjs +0 -6
  110. package/dist/lib/conformance/types.mjs.map +1 -1
  111. package/dist/lib/conformance/webhook.mjs +0 -6
  112. package/dist/lib/conformance/webhook.mjs.map +1 -1
  113. package/dist/lib/core/ADCPMultiAgentClient.mjs +0 -6
  114. package/dist/lib/core/ADCPMultiAgentClient.mjs.map +1 -1
  115. package/dist/lib/core/AgentClient.mjs +0 -6
  116. package/dist/lib/core/AgentClient.mjs.map +1 -1
  117. package/dist/lib/core/AsyncHandler.mjs +0 -6
  118. package/dist/lib/core/AsyncHandler.mjs.map +1 -1
  119. package/dist/lib/core/ConfigurationManager.mjs +0 -6
  120. package/dist/lib/core/ConfigurationManager.mjs.map +1 -1
  121. package/dist/lib/core/ConversationTypes.mjs +0 -6
  122. package/dist/lib/core/CreativeAgentClient.mjs +0 -6
  123. package/dist/lib/core/CreativeAgentClient.mjs.map +1 -1
  124. package/dist/lib/core/GovernanceMiddleware.mjs +0 -6
  125. package/dist/lib/core/GovernanceMiddleware.mjs.map +1 -1
  126. package/dist/lib/core/GovernanceTypes.mjs +0 -6
  127. package/dist/lib/core/GovernanceTypes.mjs.map +1 -1
  128. package/dist/lib/core/ProtocolResponseParser.mjs +0 -6
  129. package/dist/lib/core/ProtocolResponseParser.mjs.map +1 -1
  130. package/dist/lib/core/ResponseValidator.mjs +0 -6
  131. package/dist/lib/core/ResponseValidator.mjs.map +1 -1
  132. package/dist/lib/core/SingleAgentClient.mjs +0 -6
  133. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  134. package/dist/lib/core/TaskEventTypes.mjs +0 -6
  135. package/dist/lib/core/TaskEventTypes.mjs.map +1 -1
  136. package/dist/lib/core/TaskExecutor.mjs +0 -6
  137. package/dist/lib/core/TaskExecutor.mjs.map +1 -1
  138. package/dist/lib/core/match.mjs +0 -6
  139. package/dist/lib/core/match.mjs.map +1 -1
  140. package/dist/lib/core/task-status.mjs +0 -6
  141. package/dist/lib/core/task-status.mjs.map +1 -1
  142. package/dist/lib/core/webhook-url.mjs +0 -6
  143. package/dist/lib/core/webhook-url.mjs.map +1 -1
  144. package/dist/lib/discovery/adagents-redirects.mjs +0 -6
  145. package/dist/lib/discovery/adagents-redirects.mjs.map +1 -1
  146. package/dist/lib/discovery/agent-directory.mjs +0 -6
  147. package/dist/lib/discovery/agent-directory.mjs.map +1 -1
  148. package/dist/lib/discovery/inline-publisher-properties.mjs +0 -6
  149. package/dist/lib/discovery/inline-publisher-properties.mjs.map +1 -1
  150. package/dist/lib/discovery/network-consistency-checker.mjs +0 -6
  151. package/dist/lib/discovery/network-consistency-checker.mjs.map +1 -1
  152. package/dist/lib/discovery/property-crawler.mjs +0 -6
  153. package/dist/lib/discovery/property-crawler.mjs.map +1 -1
  154. package/dist/lib/discovery/property-index.mjs +0 -6
  155. package/dist/lib/discovery/property-index.mjs.map +1 -1
  156. package/dist/lib/discovery/publisher-property-selector.mjs +0 -6
  157. package/dist/lib/discovery/publisher-property-selector.mjs.map +1 -1
  158. package/dist/lib/discovery/resolve-agent-properties.mjs +0 -6
  159. package/dist/lib/discovery/resolve-agent-properties.mjs.map +1 -1
  160. package/dist/lib/discovery/types.mjs +0 -6
  161. package/dist/lib/discovery/validate-adagents.mjs +0 -6
  162. package/dist/lib/discovery/validate-adagents.mjs.map +1 -1
  163. package/dist/lib/enums.mjs +0 -6
  164. package/dist/lib/enums.mjs.map +1 -1
  165. package/dist/lib/errors/index.mjs +0 -6
  166. package/dist/lib/errors/index.mjs.map +1 -1
  167. package/dist/lib/express-mcp/index.mjs +0 -6
  168. package/dist/lib/express-mcp/index.mjs.map +1 -1
  169. package/dist/lib/governance/index.mjs +0 -6
  170. package/dist/lib/governance/index.mjs.map +1 -1
  171. package/dist/lib/handlers/types.mjs +0 -6
  172. package/dist/lib/handlers/types.mjs.map +1 -1
  173. package/dist/lib/index.mjs +0 -6
  174. package/dist/lib/index.mjs.map +1 -1
  175. package/dist/lib/media-buy/available-actions.mjs +0 -6
  176. package/dist/lib/media-buy/available-actions.mjs.map +1 -1
  177. package/dist/lib/media-buy/index.mjs +0 -6
  178. package/dist/lib/media-buy/index.mjs.map +1 -1
  179. package/dist/lib/media-buy/preflight.mjs +0 -6
  180. package/dist/lib/media-buy/preflight.mjs.map +1 -1
  181. package/dist/lib/media-buy/property-policy.mjs +0 -6
  182. package/dist/lib/media-buy/property-policy.mjs.map +1 -1
  183. package/dist/lib/media-buy/types.mjs +0 -6
  184. package/dist/lib/media-buy/types.mjs.map +1 -1
  185. package/dist/lib/media-buy/update-fields.generated.mjs +0 -6
  186. package/dist/lib/media-buy/update-fields.generated.mjs.map +1 -1
  187. package/dist/lib/mock-server/creative-ad-server/seed-data.mjs +0 -6
  188. package/dist/lib/mock-server/creative-ad-server/seed-data.mjs.map +1 -1
  189. package/dist/lib/mock-server/creative-ad-server/server.mjs +0 -6
  190. package/dist/lib/mock-server/creative-ad-server/server.mjs.map +1 -1
  191. package/dist/lib/mock-server/creative-template/seed-data.mjs +0 -6
  192. package/dist/lib/mock-server/creative-template/seed-data.mjs.map +1 -1
  193. package/dist/lib/mock-server/creative-template/server.mjs +0 -6
  194. package/dist/lib/mock-server/creative-template/server.mjs.map +1 -1
  195. package/dist/lib/mock-server/index.mjs +0 -6
  196. package/dist/lib/mock-server/index.mjs.map +1 -1
  197. package/dist/lib/mock-server/sales-guaranteed/recipe.mjs +0 -6
  198. package/dist/lib/mock-server/sales-guaranteed/recipe.mjs.map +1 -1
  199. package/dist/lib/mock-server/sales-guaranteed/seed-data.mjs +0 -6
  200. package/dist/lib/mock-server/sales-guaranteed/seed-data.mjs.map +1 -1
  201. package/dist/lib/mock-server/sales-guaranteed/server.mjs +0 -6
  202. package/dist/lib/mock-server/sales-guaranteed/server.mjs.map +1 -1
  203. package/dist/lib/mock-server/sales-non-guaranteed/recipe.mjs +0 -6
  204. package/dist/lib/mock-server/sales-non-guaranteed/recipe.mjs.map +1 -1
  205. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.mjs +0 -6
  206. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.mjs.map +1 -1
  207. package/dist/lib/mock-server/sales-non-guaranteed/server.mjs +0 -6
  208. package/dist/lib/mock-server/sales-non-guaranteed/server.mjs.map +1 -1
  209. package/dist/lib/mock-server/sales-social/seed-data.mjs +0 -6
  210. package/dist/lib/mock-server/sales-social/seed-data.mjs.map +1 -1
  211. package/dist/lib/mock-server/sales-social/server.mjs +0 -6
  212. package/dist/lib/mock-server/sales-social/server.mjs.map +1 -1
  213. package/dist/lib/mock-server/scenario.mjs +0 -6
  214. package/dist/lib/mock-server/scenario.mjs.map +1 -1
  215. package/dist/lib/mock-server/signal-marketplace/seed-data.mjs +0 -6
  216. package/dist/lib/mock-server/signal-marketplace/seed-data.mjs.map +1 -1
  217. package/dist/lib/mock-server/signal-marketplace/server.mjs +0 -6
  218. package/dist/lib/mock-server/signal-marketplace/server.mjs.map +1 -1
  219. package/dist/lib/mock-server/sponsored-intelligence/seed-data.mjs +0 -6
  220. package/dist/lib/mock-server/sponsored-intelligence/seed-data.mjs.map +1 -1
  221. package/dist/lib/mock-server/sponsored-intelligence/server.mjs +0 -6
  222. package/dist/lib/mock-server/sponsored-intelligence/server.mjs.map +1 -1
  223. package/dist/lib/net/address-guards.mjs +0 -6
  224. package/dist/lib/net/address-guards.mjs.map +1 -1
  225. package/dist/lib/net/index.mjs +0 -6
  226. package/dist/lib/net/index.mjs.map +1 -1
  227. package/dist/lib/net/ssrf-fetch.mjs +0 -6
  228. package/dist/lib/net/ssrf-fetch.mjs.map +1 -1
  229. package/dist/lib/observability/index.mjs +0 -6
  230. package/dist/lib/observability/index.mjs.map +1 -1
  231. package/dist/lib/observability/tracing.mjs +6 -7
  232. package/dist/lib/observability/tracing.mjs.map +1 -1
  233. package/dist/lib/protocols/a2a.mjs +0 -6
  234. package/dist/lib/protocols/a2a.mjs.map +1 -1
  235. package/dist/lib/protocols/abort.mjs +0 -6
  236. package/dist/lib/protocols/abort.mjs.map +1 -1
  237. package/dist/lib/protocols/index.mjs +0 -6
  238. package/dist/lib/protocols/index.mjs.map +1 -1
  239. package/dist/lib/protocols/mcp-modern.mjs +0 -6
  240. package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
  241. package/dist/lib/protocols/mcp-tasks.mjs +0 -6
  242. package/dist/lib/protocols/mcp-tasks.mjs.map +1 -1
  243. package/dist/lib/protocols/mcp.mjs +0 -6
  244. package/dist/lib/protocols/mcp.mjs.map +1 -1
  245. package/dist/lib/protocols/rawResponseCapture.mjs +0 -6
  246. package/dist/lib/protocols/rawResponseCapture.mjs.map +1 -1
  247. package/dist/lib/protocols/responseSizeLimit.mjs +0 -6
  248. package/dist/lib/protocols/responseSizeLimit.mjs.map +1 -1
  249. package/dist/lib/protocols/transportDiagnostics.mjs +0 -6
  250. package/dist/lib/protocols/transportDiagnostics.mjs.map +1 -1
  251. package/dist/lib/registry/cursor-store.mjs +0 -6
  252. package/dist/lib/registry/cursor-store.mjs.map +1 -1
  253. package/dist/lib/registry/feed-stream.mjs +0 -6
  254. package/dist/lib/registry/feed-stream.mjs.map +1 -1
  255. package/dist/lib/registry/index.mjs +0 -6
  256. package/dist/lib/registry/index.mjs.map +1 -1
  257. package/dist/lib/registry/property-registry.mjs +0 -6
  258. package/dist/lib/registry/property-registry.mjs.map +1 -1
  259. package/dist/lib/registry/sync.mjs +0 -6
  260. package/dist/lib/registry/sync.mjs.map +1 -1
  261. package/dist/lib/registry/types.generated.mjs +0 -6
  262. package/dist/lib/registry/types.mjs +0 -6
  263. package/dist/lib/schemas/index.mjs +0 -6
  264. package/dist/lib/schemas/index.mjs.map +1 -1
  265. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  266. package/dist/lib/server/a2a-adapter.mjs +0 -6
  267. package/dist/lib/server/a2a-adapter.mjs.map +1 -1
  268. package/dist/lib/server/account-mode.mjs +0 -6
  269. package/dist/lib/server/account-mode.mjs.map +1 -1
  270. package/dist/lib/server/adcp-server.mjs +0 -6
  271. package/dist/lib/server/adcp-server.mjs.map +1 -1
  272. package/dist/lib/server/auth-introspection.mjs +0 -6
  273. package/dist/lib/server/auth-introspection.mjs.map +1 -1
  274. package/dist/lib/server/auth-signature.mjs +0 -6
  275. package/dist/lib/server/auth-signature.mjs.map +1 -1
  276. package/dist/lib/server/auth.mjs +0 -6
  277. package/dist/lib/server/auth.mjs.map +1 -1
  278. package/dist/lib/server/create-adcp-server.mjs +0 -6
  279. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  280. package/dist/lib/server/credential-policy.mjs +0 -6
  281. package/dist/lib/server/credential-policy.mjs.map +1 -1
  282. package/dist/lib/server/ctx-metadata/backends/memory.mjs +0 -6
  283. package/dist/lib/server/ctx-metadata/backends/memory.mjs.map +1 -1
  284. package/dist/lib/server/ctx-metadata/backends/pg.mjs +0 -6
  285. package/dist/lib/server/ctx-metadata/backends/pg.mjs.map +1 -1
  286. package/dist/lib/server/ctx-metadata/backends/redis.mjs +0 -6
  287. package/dist/lib/server/ctx-metadata/backends/redis.mjs.map +1 -1
  288. package/dist/lib/server/ctx-metadata/index.mjs +0 -6
  289. package/dist/lib/server/ctx-metadata/index.mjs.map +1 -1
  290. package/dist/lib/server/ctx-metadata/store.mjs +0 -6
  291. package/dist/lib/server/ctx-metadata/store.mjs.map +1 -1
  292. package/dist/lib/server/ctx-metadata/wire-shape.mjs +0 -6
  293. package/dist/lib/server/ctx-metadata/wire-shape.mjs.map +1 -1
  294. package/dist/lib/server/decisioning/account.mjs +0 -6
  295. package/dist/lib/server/decisioning/account.mjs.map +1 -1
  296. package/dist/lib/server/decisioning/admin-router.mjs +0 -6
  297. package/dist/lib/server/decisioning/admin-router.mjs.map +1 -1
  298. package/dist/lib/server/decisioning/assembly-helpers.mjs +0 -6
  299. package/dist/lib/server/decisioning/assembly-helpers.mjs.map +1 -1
  300. package/dist/lib/server/decisioning/async-outcome.mjs +0 -6
  301. package/dist/lib/server/decisioning/async-outcome.mjs.map +1 -1
  302. package/dist/lib/server/decisioning/buyer-agent.mjs +0 -6
  303. package/dist/lib/server/decisioning/buyer-agent.mjs.map +1 -1
  304. package/dist/lib/server/decisioning/capabilities.mjs +0 -6
  305. package/dist/lib/server/decisioning/capabilities.mjs.map +1 -1
  306. package/dist/lib/server/decisioning/compose.mjs +0 -6
  307. package/dist/lib/server/decisioning/compose.mjs.map +1 -1
  308. package/dist/lib/server/decisioning/context.mjs +0 -6
  309. package/dist/lib/server/decisioning/errors-typed.mjs +0 -6
  310. package/dist/lib/server/decisioning/errors-typed.mjs.map +1 -1
  311. package/dist/lib/server/decisioning/helpers.mjs +0 -6
  312. package/dist/lib/server/decisioning/helpers.mjs.map +1 -1
  313. package/dist/lib/server/decisioning/index.mjs +0 -6
  314. package/dist/lib/server/decisioning/index.mjs.map +1 -1
  315. package/dist/lib/server/decisioning/list-helpers.mjs +0 -6
  316. package/dist/lib/server/decisioning/list-helpers.mjs.map +1 -1
  317. package/dist/lib/server/decisioning/manifest-helpers.mjs +0 -6
  318. package/dist/lib/server/decisioning/manifest-helpers.mjs.map +1 -1
  319. package/dist/lib/server/decisioning/pagination.mjs +0 -6
  320. package/dist/lib/server/decisioning/platform-helpers.mjs +0 -6
  321. package/dist/lib/server/decisioning/platform-helpers.mjs.map +1 -1
  322. package/dist/lib/server/decisioning/platform.mjs +0 -6
  323. package/dist/lib/server/decisioning/proposal/dispatch.mjs +0 -6
  324. package/dist/lib/server/decisioning/proposal/dispatch.mjs.map +1 -1
  325. package/dist/lib/server/decisioning/proposal/index.mjs +0 -6
  326. package/dist/lib/server/decisioning/proposal/index.mjs.map +1 -1
  327. package/dist/lib/server/decisioning/proposal/lifecycle.mjs +0 -6
  328. package/dist/lib/server/decisioning/proposal/lifecycle.mjs.map +1 -1
  329. package/dist/lib/server/decisioning/proposal/mock-manager.mjs +0 -6
  330. package/dist/lib/server/decisioning/proposal/mock-manager.mjs.map +1 -1
  331. package/dist/lib/server/decisioning/proposal/store.mjs +0 -6
  332. package/dist/lib/server/decisioning/proposal/store.mjs.map +1 -1
  333. package/dist/lib/server/decisioning/proposal/types.mjs +0 -6
  334. package/dist/lib/server/decisioning/proposal/types.mjs.map +1 -1
  335. package/dist/lib/server/decisioning/resolve-presets.mjs +0 -6
  336. package/dist/lib/server/decisioning/resolve-presets.mjs.map +1 -1
  337. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs +0 -6
  338. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
  339. package/dist/lib/server/decisioning/runtime/from-platform.mjs +0 -6
  340. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  341. package/dist/lib/server/decisioning/runtime/observed-modes.mjs +0 -6
  342. package/dist/lib/server/decisioning/runtime/observed-modes.mjs.map +1 -1
  343. package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs +0 -6
  344. package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs.map +1 -1
  345. package/dist/lib/server/decisioning/runtime/protocol-for-tool.mjs +0 -6
  346. package/dist/lib/server/decisioning/runtime/protocol-for-tool.mjs.map +1 -1
  347. package/dist/lib/server/decisioning/runtime/task-registry.mjs +0 -6
  348. package/dist/lib/server/decisioning/runtime/task-registry.mjs.map +1 -1
  349. package/dist/lib/server/decisioning/runtime/to-context.mjs +0 -6
  350. package/dist/lib/server/decisioning/runtime/to-context.mjs.map +1 -1
  351. package/dist/lib/server/decisioning/runtime/validate-platform.mjs +0 -6
  352. package/dist/lib/server/decisioning/runtime/validate-platform.mjs.map +1 -1
  353. package/dist/lib/server/decisioning/specialisms/audiences.mjs +0 -6
  354. package/dist/lib/server/decisioning/specialisms/brand-rights.mjs +0 -6
  355. package/dist/lib/server/decisioning/specialisms/campaign-governance.mjs +0 -6
  356. package/dist/lib/server/decisioning/specialisms/content-standards.mjs +0 -6
  357. package/dist/lib/server/decisioning/specialisms/creative-ad-server.mjs +0 -6
  358. package/dist/lib/server/decisioning/specialisms/creative.mjs +0 -6
  359. package/dist/lib/server/decisioning/specialisms/lists.mjs +0 -6
  360. package/dist/lib/server/decisioning/specialisms/sales.mjs +0 -6
  361. package/dist/lib/server/decisioning/specialisms/signals.mjs +0 -6
  362. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.mjs +0 -6
  363. package/dist/lib/server/decisioning/start-time.mjs +0 -6
  364. package/dist/lib/server/decisioning/start-time.mjs.map +1 -1
  365. package/dist/lib/server/decisioning/status-changes.mjs +0 -6
  366. package/dist/lib/server/decisioning/status-changes.mjs.map +1 -1
  367. package/dist/lib/server/decisioning/status-mappers.mjs +0 -6
  368. package/dist/lib/server/decisioning/status-mappers.mjs.map +1 -1
  369. package/dist/lib/server/decisioning/tenant-registry.mjs +0 -6
  370. package/dist/lib/server/decisioning/tenant-registry.mjs.map +1 -1
  371. package/dist/lib/server/decisioning/tenant-store.mjs +0 -6
  372. package/dist/lib/server/decisioning/tenant-store.mjs.map +1 -1
  373. package/dist/lib/server/decisioning/validate-specialisms.mjs +0 -6
  374. package/dist/lib/server/decisioning/validate-specialisms.mjs.map +1 -1
  375. package/dist/lib/server/dynamic-registry.mjs +0 -6
  376. package/dist/lib/server/dynamic-registry.mjs.map +1 -1
  377. package/dist/lib/server/envelope-allowlist.mjs +0 -6
  378. package/dist/lib/server/envelope-allowlist.mjs.map +1 -1
  379. package/dist/lib/server/error-arm-tools.mjs +5 -6
  380. package/dist/lib/server/error-arm-tools.mjs.map +1 -1
  381. package/dist/lib/server/errors.mjs +0 -6
  382. package/dist/lib/server/errors.mjs.map +1 -1
  383. package/dist/lib/server/example-tld-guard.mjs +0 -6
  384. package/dist/lib/server/example-tld-guard.mjs.map +1 -1
  385. package/dist/lib/server/express-adapter.mjs +0 -6
  386. package/dist/lib/server/express-adapter.mjs.map +1 -1
  387. package/dist/lib/server/governance.mjs +0 -6
  388. package/dist/lib/server/governance.mjs.map +1 -1
  389. package/dist/lib/server/idempotency/backends/lazy.mjs +0 -6
  390. package/dist/lib/server/idempotency/backends/lazy.mjs.map +1 -1
  391. package/dist/lib/server/idempotency/backends/memory.mjs +0 -6
  392. package/dist/lib/server/idempotency/backends/memory.mjs.map +1 -1
  393. package/dist/lib/server/idempotency/backends/pg.mjs +0 -6
  394. package/dist/lib/server/idempotency/backends/pg.mjs.map +1 -1
  395. package/dist/lib/server/idempotency/backends/redis.mjs +0 -6
  396. package/dist/lib/server/idempotency/backends/redis.mjs.map +1 -1
  397. package/dist/lib/server/idempotency/index.mjs +0 -6
  398. package/dist/lib/server/idempotency/index.mjs.map +1 -1
  399. package/dist/lib/server/idempotency/store.mjs +0 -6
  400. package/dist/lib/server/idempotency/store.mjs.map +1 -1
  401. package/dist/lib/server/index.mjs +0 -6
  402. package/dist/lib/server/index.mjs.map +1 -1
  403. package/dist/lib/server/legacy/v5/index.mjs +0 -6
  404. package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
  405. package/dist/lib/server/mcp-modern-server.mjs +0 -6
  406. package/dist/lib/server/mcp-modern-server.mjs.map +1 -1
  407. package/dist/lib/server/media-buy-actions.mjs +0 -6
  408. package/dist/lib/server/media-buy-actions.mjs.map +1 -1
  409. package/dist/lib/server/media-buy-helpers.mjs +0 -6
  410. package/dist/lib/server/media-buy-helpers.mjs.map +1 -1
  411. package/dist/lib/server/media-buy-store.mjs +0 -6
  412. package/dist/lib/server/media-buy-store.mjs.map +1 -1
  413. package/dist/lib/server/normalize-errors.mjs +0 -6
  414. package/dist/lib/server/normalize-errors.mjs.map +1 -1
  415. package/dist/lib/server/operational-platform.mjs +0 -6
  416. package/dist/lib/server/operational-platform.mjs.map +1 -1
  417. package/dist/lib/server/pick-safe-details.mjs +0 -6
  418. package/dist/lib/server/pick-safe-details.mjs.map +1 -1
  419. package/dist/lib/server/pin-and-bind-fetch.mjs +0 -6
  420. package/dist/lib/server/pin-and-bind-fetch.mjs.map +1 -1
  421. package/dist/lib/server/postgres-state-store.mjs +0 -6
  422. package/dist/lib/server/postgres-state-store.mjs.map +1 -1
  423. package/dist/lib/server/postgres-task-store.mjs +0 -6
  424. package/dist/lib/server/postgres-task-store.mjs.map +1 -1
  425. package/dist/lib/server/product-defaults.mjs +0 -6
  426. package/dist/lib/server/product-defaults.mjs.map +1 -1
  427. package/dist/lib/server/redact.mjs +0 -6
  428. package/dist/lib/server/redact.mjs.map +1 -1
  429. package/dist/lib/server/responses.mjs +0 -6
  430. package/dist/lib/server/responses.mjs.map +1 -1
  431. package/dist/lib/server/serve.mjs +0 -6
  432. package/dist/lib/server/serve.mjs.map +1 -1
  433. package/dist/lib/server/socket-mode/conformance-client.mjs +0 -6
  434. package/dist/lib/server/socket-mode/conformance-client.mjs.map +1 -1
  435. package/dist/lib/server/socket-mode/index.mjs +0 -6
  436. package/dist/lib/server/socket-mode/index.mjs.map +1 -1
  437. package/dist/lib/server/socket-mode/ws-transport.mjs +0 -6
  438. package/dist/lib/server/socket-mode/ws-transport.mjs.map +1 -1
  439. package/dist/lib/server/state-machine.mjs +0 -6
  440. package/dist/lib/server/state-machine.mjs.map +1 -1
  441. package/dist/lib/server/state-store.mjs +0 -6
  442. package/dist/lib/server/state-store.mjs.map +1 -1
  443. package/dist/lib/server/structured-serialize.mjs +0 -6
  444. package/dist/lib/server/structured-serialize.mjs.map +1 -1
  445. package/dist/lib/server/targeting-helpers.mjs +0 -6
  446. package/dist/lib/server/targeting-helpers.mjs.map +1 -1
  447. package/dist/lib/server/tasks.mjs +0 -6
  448. package/dist/lib/server/tasks.mjs.map +1 -1
  449. package/dist/lib/server/test-controller-bridge.mjs +0 -6
  450. package/dist/lib/server/test-controller-bridge.mjs.map +1 -1
  451. package/dist/lib/server/test-controller.mjs +0 -6
  452. package/dist/lib/server/test-controller.mjs.map +1 -1
  453. package/dist/lib/server/upstream-helpers.mjs +0 -6
  454. package/dist/lib/server/upstream-helpers.mjs.map +1 -1
  455. package/dist/lib/server/webhook-emitter.mjs +0 -6
  456. package/dist/lib/server/webhook-emitter.mjs.map +1 -1
  457. package/dist/lib/server/wire-safe.mjs +0 -6
  458. package/dist/lib/server/wire-safe.mjs.map +1 -1
  459. package/dist/lib/server/wire-spec-fields.generated.mjs +0 -6
  460. package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
  461. package/dist/lib/server/wrap-envelope.mjs +0 -6
  462. package/dist/lib/server/wrap-envelope.mjs.map +1 -1
  463. package/dist/lib/signing/agent-context.mjs +0 -6
  464. package/dist/lib/signing/agent-context.mjs.map +1 -1
  465. package/dist/lib/signing/agent-fetch.mjs +0 -6
  466. package/dist/lib/signing/agent-fetch.mjs.map +1 -1
  467. package/dist/lib/signing/agent-resolver/canonicalize.mjs +0 -6
  468. package/dist/lib/signing/agent-resolver/canonicalize.mjs.map +1 -1
  469. package/dist/lib/signing/agent-resolver/capabilities-types.mjs +0 -6
  470. package/dist/lib/signing/agent-resolver/capabilities-types.mjs.map +1 -1
  471. package/dist/lib/signing/agent-resolver/consistency.mjs +0 -6
  472. package/dist/lib/signing/agent-resolver/consistency.mjs.map +1 -1
  473. package/dist/lib/signing/agent-resolver/errors.mjs +0 -6
  474. package/dist/lib/signing/agent-resolver/errors.mjs.map +1 -1
  475. package/dist/lib/signing/agent-resolver/etld.mjs +0 -6
  476. package/dist/lib/signing/agent-resolver/etld.mjs.map +1 -1
  477. package/dist/lib/signing/agent-resolver/fetch-helpers.mjs +0 -6
  478. package/dist/lib/signing/agent-resolver/fetch-helpers.mjs.map +1 -1
  479. package/dist/lib/signing/agent-resolver/index.mjs +0 -6
  480. package/dist/lib/signing/agent-resolver/index.mjs.map +1 -1
  481. package/dist/lib/signing/agent-resolver/jwks-set.mjs +0 -6
  482. package/dist/lib/signing/agent-resolver/jwks-set.mjs.map +1 -1
  483. package/dist/lib/signing/agent-resolver/resolve-agent.mjs +0 -6
  484. package/dist/lib/signing/agent-resolver/resolve-agent.mjs.map +1 -1
  485. package/dist/lib/signing/agent-resolver/select-agent.mjs +0 -6
  486. package/dist/lib/signing/agent-resolver/select-agent.mjs.map +1 -1
  487. package/dist/lib/signing/agent-resolver/strict-json.mjs +0 -6
  488. package/dist/lib/signing/agent-resolver/strict-json.mjs.map +1 -1
  489. package/dist/lib/signing/brand-jwks.mjs +0 -6
  490. package/dist/lib/signing/brand-jwks.mjs.map +1 -1
  491. package/dist/lib/signing/canonicalize.mjs +0 -6
  492. package/dist/lib/signing/canonicalize.mjs.map +1 -1
  493. package/dist/lib/signing/capability-cache.mjs +0 -6
  494. package/dist/lib/signing/capability-cache.mjs.map +1 -1
  495. package/dist/lib/signing/capability-priming.mjs +0 -6
  496. package/dist/lib/signing/capability-priming.mjs.map +1 -1
  497. package/dist/lib/signing/client.mjs +0 -6
  498. package/dist/lib/signing/client.mjs.map +1 -1
  499. package/dist/lib/signing/content-digest.mjs +0 -6
  500. package/dist/lib/signing/content-digest.mjs.map +1 -1
  501. package/dist/lib/signing/crypto.mjs +0 -6
  502. package/dist/lib/signing/crypto.mjs.map +1 -1
  503. package/dist/lib/signing/ecdsa-encoding.mjs +0 -6
  504. package/dist/lib/signing/ecdsa-encoding.mjs.map +1 -1
  505. package/dist/lib/signing/errors.mjs +0 -6
  506. package/dist/lib/signing/errors.mjs.map +1 -1
  507. package/dist/lib/signing/fetch-async.mjs +0 -6
  508. package/dist/lib/signing/fetch-async.mjs.map +1 -1
  509. package/dist/lib/signing/fetch.mjs +0 -6
  510. package/dist/lib/signing/fetch.mjs.map +1 -1
  511. package/dist/lib/signing/index.mjs +0 -6
  512. package/dist/lib/signing/index.mjs.map +1 -1
  513. package/dist/lib/signing/jwks-helpers.mjs +0 -6
  514. package/dist/lib/signing/jwks-helpers.mjs.map +1 -1
  515. package/dist/lib/signing/jwks-https.mjs +0 -6
  516. package/dist/lib/signing/jwks-https.mjs.map +1 -1
  517. package/dist/lib/signing/jwks.mjs +0 -6
  518. package/dist/lib/signing/jwks.mjs.map +1 -1
  519. package/dist/lib/signing/middleware.mjs +0 -6
  520. package/dist/lib/signing/middleware.mjs.map +1 -1
  521. package/dist/lib/signing/parser.mjs +0 -6
  522. package/dist/lib/signing/parser.mjs.map +1 -1
  523. package/dist/lib/signing/postgres-replay-store.mjs +0 -6
  524. package/dist/lib/signing/postgres-replay-store.mjs.map +1 -1
  525. package/dist/lib/signing/protocol-response.mjs +0 -6
  526. package/dist/lib/signing/protocol-response.mjs.map +1 -1
  527. package/dist/lib/signing/provider.mjs +0 -6
  528. package/dist/lib/signing/redis-replay-store.mjs +0 -6
  529. package/dist/lib/signing/redis-replay-store.mjs.map +1 -1
  530. package/dist/lib/signing/replay.mjs +0 -6
  531. package/dist/lib/signing/replay.mjs.map +1 -1
  532. package/dist/lib/signing/request-context.mjs +0 -6
  533. package/dist/lib/signing/request-context.mjs.map +1 -1
  534. package/dist/lib/signing/revocation-https.mjs +0 -6
  535. package/dist/lib/signing/revocation-https.mjs.map +1 -1
  536. package/dist/lib/signing/revocation.mjs +0 -6
  537. package/dist/lib/signing/revocation.mjs.map +1 -1
  538. package/dist/lib/signing/server.mjs +0 -6
  539. package/dist/lib/signing/server.mjs.map +1 -1
  540. package/dist/lib/signing/signer-async.mjs +0 -6
  541. package/dist/lib/signing/signer-async.mjs.map +1 -1
  542. package/dist/lib/signing/signer.mjs +0 -6
  543. package/dist/lib/signing/signer.mjs.map +1 -1
  544. package/dist/lib/signing/testing.mjs +0 -6
  545. package/dist/lib/signing/testing.mjs.map +1 -1
  546. package/dist/lib/signing/types.mjs +0 -6
  547. package/dist/lib/signing/types.mjs.map +1 -1
  548. package/dist/lib/signing/verifier.mjs +0 -6
  549. package/dist/lib/signing/verifier.mjs.map +1 -1
  550. package/dist/lib/signing/webhook-auth-detection.mjs +0 -6
  551. package/dist/lib/signing/webhook-auth-detection.mjs.map +1 -1
  552. package/dist/lib/signing/webhook-verifier.mjs +0 -6
  553. package/dist/lib/signing/webhook-verifier.mjs.map +1 -1
  554. package/dist/lib/storage/MemoryStorage.mjs +0 -6
  555. package/dist/lib/storage/MemoryStorage.mjs.map +1 -1
  556. package/dist/lib/storage/interfaces.mjs +0 -6
  557. package/dist/lib/substitution/encoder/SubstitutionEncoder.mjs +0 -6
  558. package/dist/lib/substitution/encoder/SubstitutionEncoder.mjs.map +1 -1
  559. package/dist/lib/substitution/encoder/index.mjs +0 -6
  560. package/dist/lib/substitution/encoder/index.mjs.map +1 -1
  561. package/dist/lib/substitution/index.mjs +0 -6
  562. package/dist/lib/substitution/index.mjs.map +1 -1
  563. package/dist/lib/substitution/observer/SubstitutionObserver.mjs +0 -6
  564. package/dist/lib/substitution/observer/SubstitutionObserver.mjs.map +1 -1
  565. package/dist/lib/substitution/observer/alignment.mjs +0 -6
  566. package/dist/lib/substitution/observer/alignment.mjs.map +1 -1
  567. package/dist/lib/substitution/observer/assertions.mjs +0 -6
  568. package/dist/lib/substitution/observer/assertions.mjs.map +1 -1
  569. package/dist/lib/substitution/observer/html-parser.mjs +0 -6
  570. package/dist/lib/substitution/observer/html-parser.mjs.map +1 -1
  571. package/dist/lib/substitution/observer/index.mjs +0 -6
  572. package/dist/lib/substitution/observer/index.mjs.map +1 -1
  573. package/dist/lib/substitution/observer/ssrf.mjs +0 -6
  574. package/dist/lib/substitution/observer/ssrf.mjs.map +1 -1
  575. package/dist/lib/substitution/rfc3986.mjs +0 -6
  576. package/dist/lib/substitution/rfc3986.mjs.map +1 -1
  577. package/dist/lib/substitution/translate.mjs +0 -6
  578. package/dist/lib/substitution/translate.mjs.map +1 -1
  579. package/dist/lib/substitution/types.mjs +0 -6
  580. package/dist/lib/substitution/vectors.mjs +0 -6
  581. package/dist/lib/substitution/vectors.mjs.map +1 -1
  582. package/dist/lib/testing/agent-tester.mjs +0 -6
  583. package/dist/lib/testing/agent-tester.mjs.map +1 -1
  584. package/dist/lib/testing/client.mjs +0 -6
  585. package/dist/lib/testing/client.mjs.map +1 -1
  586. package/dist/lib/testing/compliance/briefs.mjs +0 -6
  587. package/dist/lib/testing/compliance/briefs.mjs.map +1 -1
  588. package/dist/lib/testing/compliance/comply.mjs +0 -6
  589. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  590. package/dist/lib/testing/compliance/index.mjs +0 -6
  591. package/dist/lib/testing/compliance/index.mjs.map +1 -1
  592. package/dist/lib/testing/compliance/spec-conformance.mjs +0 -6
  593. package/dist/lib/testing/compliance/spec-conformance.mjs.map +1 -1
  594. package/dist/lib/testing/compliance/storyboard-tracks.mjs +0 -6
  595. package/dist/lib/testing/compliance/storyboard-tracks.mjs.map +1 -1
  596. package/dist/lib/testing/compliance/summary.mjs +0 -6
  597. package/dist/lib/testing/compliance/summary.mjs.map +1 -1
  598. package/dist/lib/testing/compliance/types.mjs +0 -6
  599. package/dist/lib/testing/comply-controller.mjs +0 -6
  600. package/dist/lib/testing/comply-controller.mjs.map +1 -1
  601. package/dist/lib/testing/controller-assertions.mjs +0 -6
  602. package/dist/lib/testing/controller-assertions.mjs.map +1 -1
  603. package/dist/lib/testing/formatter.mjs +0 -6
  604. package/dist/lib/testing/formatter.mjs.map +1 -1
  605. package/dist/lib/testing/index.mjs +0 -6
  606. package/dist/lib/testing/index.mjs.map +1 -1
  607. package/dist/lib/testing/local-agent-runner.mjs +0 -6
  608. package/dist/lib/testing/local-agent-runner.mjs.map +1 -1
  609. package/dist/lib/testing/orchestrator.mjs +0 -6
  610. package/dist/lib/testing/orchestrator.mjs.map +1 -1
  611. package/dist/lib/testing/personas/index.mjs +0 -6
  612. package/dist/lib/testing/personas/index.mjs.map +1 -1
  613. package/dist/lib/testing/scenarios/brand-rights.mjs +0 -6
  614. package/dist/lib/testing/scenarios/brand-rights.mjs.map +1 -1
  615. package/dist/lib/testing/scenarios/capabilities.mjs +0 -6
  616. package/dist/lib/testing/scenarios/capabilities.mjs.map +1 -1
  617. package/dist/lib/testing/scenarios/creative.mjs +0 -6
  618. package/dist/lib/testing/scenarios/creative.mjs.map +1 -1
  619. package/dist/lib/testing/scenarios/deterministic.mjs +0 -6
  620. package/dist/lib/testing/scenarios/deterministic.mjs.map +1 -1
  621. package/dist/lib/testing/scenarios/discovery.mjs +0 -6
  622. package/dist/lib/testing/scenarios/discovery.mjs.map +1 -1
  623. package/dist/lib/testing/scenarios/edge-cases.mjs +0 -6
  624. package/dist/lib/testing/scenarios/edge-cases.mjs.map +1 -1
  625. package/dist/lib/testing/scenarios/error-compliance.mjs +0 -6
  626. package/dist/lib/testing/scenarios/error-compliance.mjs.map +1 -1
  627. package/dist/lib/testing/scenarios/governance.mjs +0 -6
  628. package/dist/lib/testing/scenarios/governance.mjs.map +1 -1
  629. package/dist/lib/testing/scenarios/health.mjs +0 -6
  630. package/dist/lib/testing/scenarios/health.mjs.map +1 -1
  631. package/dist/lib/testing/scenarios/index.mjs +0 -6
  632. package/dist/lib/testing/scenarios/index.mjs.map +1 -1
  633. package/dist/lib/testing/scenarios/media-buy.mjs +0 -6
  634. package/dist/lib/testing/scenarios/media-buy.mjs.map +1 -1
  635. package/dist/lib/testing/scenarios/schema-compliance.mjs +0 -6
  636. package/dist/lib/testing/scenarios/schema-compliance.mjs.map +1 -1
  637. package/dist/lib/testing/scenarios/signals.mjs +0 -6
  638. package/dist/lib/testing/scenarios/signals.mjs.map +1 -1
  639. package/dist/lib/testing/scenarios/sponsored-intelligence.mjs +0 -6
  640. package/dist/lib/testing/scenarios/sponsored-intelligence.mjs.map +1 -1
  641. package/dist/lib/testing/scenarios/trusted-match.mjs +0 -6
  642. package/dist/lib/testing/scenarios/trusted-match.mjs.map +1 -1
  643. package/dist/lib/testing/seed-merge.mjs +0 -6
  644. package/dist/lib/testing/seed-merge.mjs.map +1 -1
  645. package/dist/lib/testing/storyboard/agent-routing.mjs +0 -6
  646. package/dist/lib/testing/storyboard/agent-routing.mjs.map +1 -1
  647. package/dist/lib/testing/storyboard/assertions.mjs +0 -6
  648. package/dist/lib/testing/storyboard/assertions.mjs.map +1 -1
  649. package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +0 -6
  650. package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs.map +1 -1
  651. package/dist/lib/testing/storyboard/compliance.mjs +5 -6
  652. package/dist/lib/testing/storyboard/compliance.mjs.map +1 -1
  653. package/dist/lib/testing/storyboard/context.mjs +0 -6
  654. package/dist/lib/testing/storyboard/context.mjs.map +1 -1
  655. package/dist/lib/testing/storyboard/default-invariants.mjs +0 -6
  656. package/dist/lib/testing/storyboard/default-invariants.mjs.map +1 -1
  657. package/dist/lib/testing/storyboard/index.mjs +0 -6
  658. package/dist/lib/testing/storyboard/index.mjs.map +1 -1
  659. package/dist/lib/testing/storyboard/junit.mjs +0 -6
  660. package/dist/lib/testing/storyboard/junit.mjs.map +1 -1
  661. package/dist/lib/testing/storyboard/loader.mjs +0 -6
  662. package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
  663. package/dist/lib/testing/storyboard/parallel-dispatch.mjs +0 -6
  664. package/dist/lib/testing/storyboard/parallel-dispatch.mjs.map +1 -1
  665. package/dist/lib/testing/storyboard/path.mjs +0 -6
  666. package/dist/lib/testing/storyboard/path.mjs.map +1 -1
  667. package/dist/lib/testing/storyboard/probes.mjs +0 -6
  668. package/dist/lib/testing/storyboard/probes.mjs.map +1 -1
  669. package/dist/lib/testing/storyboard/rate-limit-trip.mjs +0 -6
  670. package/dist/lib/testing/storyboard/rate-limit-trip.mjs.map +1 -1
  671. package/dist/lib/testing/storyboard/rejection-hints.mjs +0 -6
  672. package/dist/lib/testing/storyboard/rejection-hints.mjs.map +1 -1
  673. package/dist/lib/testing/storyboard/request-builder.mjs +0 -6
  674. package/dist/lib/testing/storyboard/request-builder.mjs.map +1 -1
  675. package/dist/lib/testing/storyboard/request-signing/builder.mjs +0 -6
  676. package/dist/lib/testing/storyboard/request-signing/builder.mjs.map +1 -1
  677. package/dist/lib/testing/storyboard/request-signing/grader.mjs +0 -6
  678. package/dist/lib/testing/storyboard/request-signing/grader.mjs.map +1 -1
  679. package/dist/lib/testing/storyboard/request-signing/index.mjs +0 -6
  680. package/dist/lib/testing/storyboard/request-signing/index.mjs.map +1 -1
  681. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +0 -6
  682. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs.map +1 -1
  683. package/dist/lib/testing/storyboard/request-signing/probe.mjs +0 -6
  684. package/dist/lib/testing/storyboard/request-signing/probe.mjs.map +1 -1
  685. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +0 -6
  686. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs.map +1 -1
  687. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs +0 -6
  688. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs.map +1 -1
  689. package/dist/lib/testing/storyboard/request-signing/types.mjs +0 -6
  690. package/dist/lib/testing/storyboard/request-signing/types.mjs.map +1 -1
  691. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +0 -6
  692. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
  693. package/dist/lib/testing/storyboard/runner.mjs +0 -6
  694. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  695. package/dist/lib/testing/storyboard/sandbox-entities.mjs +0 -6
  696. package/dist/lib/testing/storyboard/sandbox-entities.mjs.map +1 -1
  697. package/dist/lib/testing/storyboard/seeding.mjs +0 -6
  698. package/dist/lib/testing/storyboard/seeding.mjs.map +1 -1
  699. package/dist/lib/testing/storyboard/shape-drift-hints.mjs +0 -6
  700. package/dist/lib/testing/storyboard/shape-drift-hints.mjs.map +1 -1
  701. package/dist/lib/testing/storyboard/signer-grader/grader.mjs +0 -6
  702. package/dist/lib/testing/storyboard/signer-grader/grader.mjs.map +1 -1
  703. package/dist/lib/testing/storyboard/signer-grader/index.mjs +0 -6
  704. package/dist/lib/testing/storyboard/signer-grader/index.mjs.map +1 -1
  705. package/dist/lib/testing/storyboard/signer-grader/types.mjs +0 -6
  706. package/dist/lib/testing/storyboard/strict-validation-hints.mjs +0 -6
  707. package/dist/lib/testing/storyboard/strict-validation-hints.mjs.map +1 -1
  708. package/dist/lib/testing/storyboard/task-map.mjs +0 -6
  709. package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
  710. package/dist/lib/testing/storyboard/test-kit.mjs +0 -6
  711. package/dist/lib/testing/storyboard/test-kit.mjs.map +1 -1
  712. package/dist/lib/testing/storyboard/types.mjs +0 -6
  713. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  714. package/dist/lib/testing/storyboard/validations.mjs +0 -6
  715. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  716. package/dist/lib/testing/storyboard/webhook-assertions.mjs +0 -6
  717. package/dist/lib/testing/storyboard/webhook-assertions.mjs.map +1 -1
  718. package/dist/lib/testing/storyboard/webhook-receiver.mjs +0 -6
  719. package/dist/lib/testing/storyboard/webhook-receiver.mjs.map +1 -1
  720. package/dist/lib/testing/stubs/governance-agent-stub.mjs +0 -6
  721. package/dist/lib/testing/stubs/governance-agent-stub.mjs.map +1 -1
  722. package/dist/lib/testing/stubs/index.mjs +0 -6
  723. package/dist/lib/testing/stubs/index.mjs.map +1 -1
  724. package/dist/lib/testing/test-controller.mjs +0 -6
  725. package/dist/lib/testing/test-controller.mjs.map +1 -1
  726. package/dist/lib/testing/test-helpers.mjs +0 -6
  727. package/dist/lib/testing/test-helpers.mjs.map +1 -1
  728. package/dist/lib/testing/types.mjs +0 -6
  729. package/dist/lib/types/adcp.mjs +0 -6
  730. package/dist/lib/types/adcp.mjs.map +1 -1
  731. package/dist/lib/types/asset-instances.mjs +0 -6
  732. package/dist/lib/types/compat.mjs +0 -6
  733. package/dist/lib/types/compat.mjs.map +1 -1
  734. package/dist/lib/types/core.generated.mjs +0 -6
  735. package/dist/lib/types/enums.generated.mjs +0 -6
  736. package/dist/lib/types/enums.generated.mjs.map +1 -1
  737. package/dist/lib/types/error-codes.mjs +0 -6
  738. package/dist/lib/types/error-codes.mjs.map +1 -1
  739. package/dist/lib/types/error-details.aliases.mjs +0 -6
  740. package/dist/lib/types/error-details.aliases.mjs.map +1 -1
  741. package/dist/lib/types/format-asset-slots.mjs +0 -6
  742. package/dist/lib/types/forward-compat-error-codes.mjs +0 -6
  743. package/dist/lib/types/forward-compat-error-codes.mjs.map +1 -1
  744. package/dist/lib/types/index.mjs +0 -6
  745. package/dist/lib/types/index.mjs.map +1 -1
  746. package/dist/lib/types/inline-enums.aliases.mjs +0 -6
  747. package/dist/lib/types/inline-enums.aliases.mjs.map +1 -1
  748. package/dist/lib/types/inline-enums.generated.mjs +0 -6
  749. package/dist/lib/types/inline-enums.generated.mjs.map +1 -1
  750. package/dist/lib/types/manifest.generated.mjs +0 -6
  751. package/dist/lib/types/manifest.generated.mjs.map +1 -1
  752. package/dist/lib/types/schemas.generated.mjs +0 -6
  753. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  754. package/dist/lib/types/server-payload-aliases.mjs +0 -6
  755. package/dist/lib/types/server-payload.mjs +0 -6
  756. package/dist/lib/types/sync-rows.mjs +0 -6
  757. package/dist/lib/types/tools.generated.mjs +0 -6
  758. package/dist/lib/types/v2-5/index.mjs +0 -6
  759. package/dist/lib/types/v2-5/index.mjs.map +1 -1
  760. package/dist/lib/types/v2-5/tools.generated.mjs +0 -6
  761. package/dist/lib/types/v3-1-beta/index.mjs +0 -6
  762. package/dist/lib/types/v3-1-beta/index.mjs.map +1 -1
  763. package/dist/lib/types/v3-1-beta/tools.generated.mjs +0 -6
  764. package/dist/lib/types/wellknown-schemas.generated.mjs +0 -6
  765. package/dist/lib/types/wellknown-schemas.generated.mjs.map +1 -1
  766. package/dist/lib/upstream-recorder/constants.mjs +0 -6
  767. package/dist/lib/upstream-recorder/constants.mjs.map +1 -1
  768. package/dist/lib/upstream-recorder/index.mjs +0 -6
  769. package/dist/lib/upstream-recorder/index.mjs.map +1 -1
  770. package/dist/lib/upstream-recorder/recorder.mjs +0 -6
  771. package/dist/lib/upstream-recorder/recorder.mjs.map +1 -1
  772. package/dist/lib/upstream-recorder/types.mjs +0 -6
  773. package/dist/lib/upstream-recorder/types.mjs.map +1 -1
  774. package/dist/lib/utils/a2a-artifacts.mjs +0 -6
  775. package/dist/lib/utils/a2a-artifacts.mjs.map +1 -1
  776. package/dist/lib/utils/a2a-discovery.mjs +0 -6
  777. package/dist/lib/utils/a2a-discovery.mjs.map +1 -1
  778. package/dist/lib/utils/activation-key-builders.mjs +0 -6
  779. package/dist/lib/utils/activation-key-builders.mjs.map +1 -1
  780. package/dist/lib/utils/adcp-version-config.mjs +0 -6
  781. package/dist/lib/utils/adcp-version-config.mjs.map +1 -1
  782. package/dist/lib/utils/asset-builders.mjs +0 -6
  783. package/dist/lib/utils/asset-builders.mjs.map +1 -1
  784. package/dist/lib/utils/build-creative-return-builders.mjs +0 -6
  785. package/dist/lib/utils/build-creative-return-builders.mjs.map +1 -1
  786. package/dist/lib/utils/buyer-retry-policy.mjs +0 -6
  787. package/dist/lib/utils/buyer-retry-policy.mjs.map +1 -1
  788. package/dist/lib/utils/capabilities.mjs +0 -6
  789. package/dist/lib/utils/capabilities.mjs.map +1 -1
  790. package/dist/lib/utils/capability-rollups.mjs +0 -6
  791. package/dist/lib/utils/capability-rollups.mjs.map +1 -1
  792. package/dist/lib/utils/creative-adapter.mjs +0 -6
  793. package/dist/lib/utils/creative-adapter.mjs.map +1 -1
  794. package/dist/lib/utils/creative-delivery.mjs +0 -6
  795. package/dist/lib/utils/creative-delivery.mjs.map +1 -1
  796. package/dist/lib/utils/deprecation.mjs +0 -6
  797. package/dist/lib/utils/deprecation.mjs.map +1 -1
  798. package/dist/lib/utils/envelope-status-compat.mjs +0 -6
  799. package/dist/lib/utils/envelope-status-compat.mjs.map +1 -1
  800. package/dist/lib/utils/error-extraction.mjs +0 -6
  801. package/dist/lib/utils/error-extraction.mjs.map +1 -1
  802. package/dist/lib/utils/extract-result.mjs +0 -6
  803. package/dist/lib/utils/extract-result.mjs.map +1 -1
  804. package/dist/lib/utils/format-asset-slot-builders.mjs +0 -6
  805. package/dist/lib/utils/format-asset-slot-builders.mjs.map +1 -1
  806. package/dist/lib/utils/format-assets.mjs +0 -6
  807. package/dist/lib/utils/format-assets.mjs.map +1 -1
  808. package/dist/lib/utils/format-render-builders.mjs +0 -6
  809. package/dist/lib/utils/format-render-builders.mjs.map +1 -1
  810. package/dist/lib/utils/format-renders.mjs +0 -6
  811. package/dist/lib/utils/format-renders.mjs.map +1 -1
  812. package/dist/lib/utils/get-products-cache-scope.mjs +0 -6
  813. package/dist/lib/utils/get-products-cache-scope.mjs.map +1 -1
  814. package/dist/lib/utils/glob.mjs +0 -6
  815. package/dist/lib/utils/glob.mjs.map +1 -1
  816. package/dist/lib/utils/global-async-local-storage.mjs +0 -6
  817. package/dist/lib/utils/global-async-local-storage.mjs.map +1 -1
  818. package/dist/lib/utils/idempotency.mjs +0 -6
  819. package/dist/lib/utils/idempotency.mjs.map +1 -1
  820. package/dist/lib/utils/index.mjs +0 -6
  821. package/dist/lib/utils/index.mjs.map +1 -1
  822. package/dist/lib/utils/jcs.mjs +0 -6
  823. package/dist/lib/utils/jcs.mjs.map +1 -1
  824. package/dist/lib/utils/json-depth.mjs +0 -6
  825. package/dist/lib/utils/json-depth.mjs.map +1 -1
  826. package/dist/lib/utils/logger.mjs +0 -6
  827. package/dist/lib/utils/logger.mjs.map +1 -1
  828. package/dist/lib/utils/media-buy-delivery-notification-builders.mjs +0 -6
  829. package/dist/lib/utils/media-buy-delivery-notification-builders.mjs.map +1 -1
  830. package/dist/lib/utils/media-buy-status.mjs +0 -6
  831. package/dist/lib/utils/media-buy-status.mjs.map +1 -1
  832. package/dist/lib/utils/pagination.mjs +0 -6
  833. package/dist/lib/utils/pagination.mjs.map +1 -1
  834. package/dist/lib/utils/preview-creative-builders.mjs +0 -6
  835. package/dist/lib/utils/preview-creative-builders.mjs.map +1 -1
  836. package/dist/lib/utils/preview-normalizer.mjs +0 -6
  837. package/dist/lib/utils/preview-normalizer.mjs.map +1 -1
  838. package/dist/lib/utils/preview-utils.mjs +0 -6
  839. package/dist/lib/utils/preview-utils.mjs.map +1 -1
  840. package/dist/lib/utils/pricing-adapter.mjs +0 -6
  841. package/dist/lib/utils/pricing-adapter.mjs.map +1 -1
  842. package/dist/lib/utils/probe-policy.mjs +0 -6
  843. package/dist/lib/utils/probe-policy.mjs.map +1 -1
  844. package/dist/lib/utils/protocol-detection.mjs +0 -6
  845. package/dist/lib/utils/protocol-detection.mjs.map +1 -1
  846. package/dist/lib/utils/redact-secrets.mjs +0 -6
  847. package/dist/lib/utils/redact-secrets.mjs.map +1 -1
  848. package/dist/lib/utils/redis-default-prefix-warn.mjs +0 -6
  849. package/dist/lib/utils/redis-default-prefix-warn.mjs.map +1 -1
  850. package/dist/lib/utils/render-builders.mjs +0 -6
  851. package/dist/lib/utils/render-builders.mjs.map +1 -1
  852. package/dist/lib/utils/request-normalizer.mjs +0 -6
  853. package/dist/lib/utils/request-normalizer.mjs.map +1 -1
  854. package/dist/lib/utils/response-schemas.mjs +0 -6
  855. package/dist/lib/utils/response-schemas.mjs.map +1 -1
  856. package/dist/lib/utils/response-unwrapper.mjs +0 -6
  857. package/dist/lib/utils/response-unwrapper.mjs.map +1 -1
  858. package/dist/lib/utils/retry.mjs +0 -6
  859. package/dist/lib/utils/retry.mjs.map +1 -1
  860. package/dist/lib/utils/signal-discovery-helpers.mjs +0 -6
  861. package/dist/lib/utils/signal-discovery-helpers.mjs.map +1 -1
  862. package/dist/lib/utils/signal-id-builders.mjs +0 -6
  863. package/dist/lib/utils/signal-id-builders.mjs.map +1 -1
  864. package/dist/lib/utils/sync-creatives-adapter.mjs +0 -6
  865. package/dist/lib/utils/sync-creatives-adapter.mjs.map +1 -1
  866. package/dist/lib/utils/task-state.mjs +0 -6
  867. package/dist/lib/utils/task-state.mjs.map +1 -1
  868. package/dist/lib/utils/tool-request-schemas.mjs +0 -6
  869. package/dist/lib/utils/tool-request-schemas.mjs.map +1 -1
  870. package/dist/lib/utils/typeGuards.mjs +0 -6
  871. package/dist/lib/utils/typeGuards.mjs.map +1 -1
  872. package/dist/lib/utils/union-errors.mjs +0 -6
  873. package/dist/lib/utils/union-errors.mjs.map +1 -1
  874. package/dist/lib/utils/validate-user-agent.mjs +0 -6
  875. package/dist/lib/utils/validate-user-agent.mjs.map +1 -1
  876. package/dist/lib/v2/format-schema/fetch.mjs +0 -6
  877. package/dist/lib/v2/format-schema/fetch.mjs.map +1 -1
  878. package/dist/lib/v2/format-schema/index.mjs +0 -6
  879. package/dist/lib/v2/format-schema/index.mjs.map +1 -1
  880. package/dist/lib/v2/format-schema/regex-safety.mjs +0 -6
  881. package/dist/lib/v2/format-schema/regex-safety.mjs.map +1 -1
  882. package/dist/lib/v2/format-schema/resolver.mjs +7 -8
  883. package/dist/lib/v2/format-schema/resolver.mjs.map +1 -1
  884. package/dist/lib/v2/format-schema/sandbox-refs.mjs +0 -6
  885. package/dist/lib/v2/format-schema/sandbox-refs.mjs.map +1 -1
  886. package/dist/lib/v2/projection/augment-response.mjs +0 -6
  887. package/dist/lib/v2/projection/augment-response.mjs.map +1 -1
  888. package/dist/lib/v2/projection/builders.mjs +0 -6
  889. package/dist/lib/v2/projection/builders.mjs.map +1 -1
  890. package/dist/lib/v2/projection/cache-versions.mjs +0 -6
  891. package/dist/lib/v2/projection/cache-versions.mjs.map +1 -1
  892. package/dist/lib/v2/projection/canonical-properties.mjs +5 -6
  893. package/dist/lib/v2/projection/canonical-properties.mjs.map +1 -1
  894. package/dist/lib/v2/projection/catalog.mjs +5 -6
  895. package/dist/lib/v2/projection/catalog.mjs.map +1 -1
  896. package/dist/lib/v2/projection/constants.mjs +0 -6
  897. package/dist/lib/v2/projection/constants.mjs.map +1 -1
  898. package/dist/lib/v2/projection/index.mjs +0 -6
  899. package/dist/lib/v2/projection/index.mjs.map +1 -1
  900. package/dist/lib/v2/projection/registry.mjs +5 -6
  901. package/dist/lib/v2/projection/registry.mjs.map +1 -1
  902. package/dist/lib/v2/projection/types.mjs +0 -6
  903. package/dist/lib/v2/projection/v1-to-v2.mjs +0 -6
  904. package/dist/lib/v2/projection/v1-to-v2.mjs.map +1 -1
  905. package/dist/lib/v2/projection/v2-to-v1.mjs +0 -6
  906. package/dist/lib/v2/projection/v2-to-v1.mjs.map +1 -1
  907. package/dist/lib/v2/projection/write-side.mjs +0 -6
  908. package/dist/lib/v2/projection/write-side.mjs.map +1 -1
  909. package/dist/lib/v2/publisher-catalog/formats.mjs +0 -6
  910. package/dist/lib/v2/publisher-catalog/formats.mjs.map +1 -1
  911. package/dist/lib/v2/publisher-catalog/index.mjs +0 -6
  912. package/dist/lib/v2/publisher-catalog/index.mjs.map +1 -1
  913. package/dist/lib/validation/client-hooks.mjs +0 -6
  914. package/dist/lib/validation/client-hooks.mjs.map +1 -1
  915. package/dist/lib/validation/hints.mjs +0 -6
  916. package/dist/lib/validation/hints.mjs.map +1 -1
  917. package/dist/lib/validation/index.mjs +0 -6
  918. package/dist/lib/validation/index.mjs.map +1 -1
  919. package/dist/lib/validation/schema-errors.mjs +0 -6
  920. package/dist/lib/validation/schema-errors.mjs.map +1 -1
  921. package/dist/lib/validation/schema-loader.mjs +5 -6
  922. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  923. package/dist/lib/validation/schema-validator.mjs +0 -6
  924. package/dist/lib/validation/schema-validator.mjs.map +1 -1
  925. package/dist/lib/validation/sync-creatives.mjs +0 -6
  926. package/dist/lib/validation/sync-creatives.mjs.map +1 -1
  927. package/dist/lib/version.d.mts +3 -3
  928. package/dist/lib/version.d.ts +3 -3
  929. package/dist/lib/version.js +3 -3
  930. package/dist/lib/version.js.map +1 -1
  931. package/dist/lib/version.mjs +3 -9
  932. package/dist/lib/version.mjs.map +1 -1
  933. package/dist/lib/webhooks/index.mjs +0 -6
  934. package/dist/lib/webhooks/index.mjs.map +1 -1
  935. package/dist/lib/wholesale-feed-sync/index.mjs +0 -6
  936. package/dist/lib/wholesale-feed-sync/index.mjs.map +1 -1
  937. package/dist/lib/wholesale-feed-sync/sync.mjs +0 -6
  938. package/dist/lib/wholesale-feed-sync/sync.mjs.map +1 -1
  939. package/dist/lib/wholesale-feed-sync/types.mjs +0 -6
  940. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +0 -6
  941. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs.map +1 -1
  942. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/enums.ts"],"sourcesContent":["// Lean, zero-dependency entry point for AdCP enum value arrays.\n//\n// Both re-exported modules are pure `as const` string-literal arrays with no\n// imports (codegen output), so importing from `@adcp/sdk/enums` pulls in only\n// the arrays a consumer names: no `./types` barrel, no zod. This is the safe\n// entry for zod-free consumers (e.g. browser bundles) that want an AdCP enum\n// as their single source of truth.\n//\n// import { EventTypeValues } from '@adcp/sdk/enums';\n//\n// enums.generated exposes `NameValues` arrays for named string-literal unions;\n// inline-enums.generated exposes `Parent_PropertyValues` arrays for anonymous\n// per-field unions.\nexport * from './types/enums.generated';\nexport * from './types/inline-enums.generated';\n"],"mappings":";;;;;;AAaA,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/enums.ts"],"sourcesContent":["// Lean, zero-dependency entry point for AdCP enum value arrays.\n//\n// Both re-exported modules are pure `as const` string-literal arrays with no\n// imports (codegen output), so importing from `@adcp/sdk/enums` pulls in only\n// the arrays a consumer names: no `./types` barrel, no zod. This is the safe\n// entry for zod-free consumers (e.g. browser bundles) that want an AdCP enum\n// as their single source of truth.\n//\n// import { EventTypeValues } from '@adcp/sdk/enums';\n//\n// enums.generated exposes `NameValues` arrays for named string-literal unions;\n// inline-enums.generated exposes `Parent_PropertyValues` arrays for anonymous\n// per-field unions.\nexport * from './types/enums.generated';\nexport * from './types/inline-enums.generated';\n"],"mappings":"AAaA,cAAc;AACd,cAAc;","names":[]}
@@ -1,9 +1,3 @@
1
- import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
2
- import { dirname as __adcpDirname } from 'node:path';
3
- import { createRequire as __adcpCreateRequire } from 'node:module';
4
- const __filename = __adcpFileURLToPath(import.meta.url);
5
- const __dirname = __adcpDirname(__filename);
6
- const require = __adcpCreateRequire(import.meta.url);
7
1
  class ADCPError extends Error {
8
2
  constructor(message, details) {
9
3
  super(message);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/errors/index.ts"],"sourcesContent":["// Custom error classes for ADCP client library\n\n/**\n * Base class for all ADCP client errors\n */\nexport abstract class ADCPError extends Error {\n abstract readonly code: string;\n\n constructor(\n message: string,\n public details?: unknown\n ) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\n/**\n * Error thrown when a task times out\n */\nexport class TaskTimeoutError extends ADCPError {\n readonly code = 'TASK_TIMEOUT';\n\n constructor(\n public readonly taskId: string,\n public readonly timeout: number\n ) {\n super(`Task ${taskId} timed out after ${timeout}ms`);\n }\n}\n\n/**\n * Error thrown when maximum clarification attempts are exceeded\n */\nexport class MaxClarificationError extends ADCPError {\n readonly code = 'MAX_CLARIFICATIONS';\n\n constructor(\n public readonly taskId: string,\n public readonly maxAttempts: number\n ) {\n super(`Task ${taskId} exceeded maximum clarification attempts: ${maxAttempts}`);\n }\n}\n\n/**\n * Error thrown when a task is deferred to human\n * Contains the token needed to resume the task\n */\nexport class DeferredTaskError extends ADCPError {\n readonly code = 'TASK_DEFERRED';\n\n constructor(public readonly token: string) {\n super(`Task deferred with token: ${token}`);\n }\n}\n\n/**\n * Error thrown when a task is aborted\n */\nexport class TaskAbortedError extends ADCPError {\n readonly code = 'TASK_ABORTED';\n\n constructor(\n public readonly taskId: string,\n public readonly reason?: string\n ) {\n super(`Task ${taskId} aborted: ${reason || 'No reason provided'}`);\n }\n}\n\n/**\n * Error thrown when an agent is not found\n */\nexport class AgentNotFoundError extends ADCPError {\n readonly code = 'AGENT_NOT_FOUND';\n\n constructor(\n public readonly agentId: string,\n public readonly availableAgents: string[]\n ) {\n super(`Agent '${agentId}' not found. Available agents: ${availableAgents.join(', ')}`);\n }\n}\n\n/**\n * Error thrown when an agent doesn't support a task\n */\nexport class UnsupportedTaskError extends ADCPError {\n readonly code = 'UNSUPPORTED_TASK';\n\n constructor(\n public readonly agentId: string,\n public readonly taskName: string,\n public readonly supportedTasks?: string[]\n ) {\n const tasksMsg = supportedTasks ? ` Supported tasks: ${supportedTasks.join(', ')}` : '';\n super(`Agent '${agentId}' does not support task '${taskName}'.${tasksMsg}`);\n }\n}\n\n/**\n * Error thrown when protocol communication fails\n */\nexport class ProtocolError extends ADCPError {\n readonly code = 'PROTOCOL_ERROR';\n\n constructor(\n public readonly protocol: 'mcp' | 'a2a',\n message: string,\n public readonly originalError?: Error\n ) {\n super(`${protocol.toUpperCase()} protocol error: ${message}`);\n this.details = { originalError };\n }\n}\n\n/**\n * Error thrown when validation fails\n */\nexport class ValidationError extends ADCPError {\n readonly code = 'VALIDATION_ERROR';\n\n constructor(\n public readonly field: string,\n public readonly value: unknown,\n public readonly constraint: string\n ) {\n super(`Validation failed for field '${field}': ${constraint}`);\n this.details = { field, value, constraint };\n }\n}\n\n/**\n * Error thrown when input handler is missing but required\n */\nexport class MissingInputHandlerError extends ADCPError {\n readonly code = 'MISSING_INPUT_HANDLER';\n\n constructor(\n public readonly taskId: string,\n public readonly question: string\n ) {\n super(`Agent requested input but no handler provided. Task: ${taskId}, Question: ${question}`);\n }\n}\n\n/**\n * Error thrown when conversation context is invalid\n */\nexport class InvalidContextError extends ADCPError {\n readonly code = 'INVALID_CONTEXT';\n\n constructor(\n public readonly contextId: string,\n reason: string\n ) {\n super(`Invalid conversation context '${contextId}': ${reason}`);\n }\n}\n\n/**\n * Error thrown when configuration is invalid\n */\nexport class ConfigurationError extends ADCPError {\n readonly code = 'CONFIGURATION_ERROR';\n\n constructor(\n message: string,\n public readonly configField?: string\n ) {\n super(`Configuration error: ${message}`);\n this.details = { configField };\n }\n}\n\n/**\n * OAuth metadata for authentication guidance\n */\nexport interface OAuthMetadataInfo {\n /** URL of the authorization endpoint */\n authorization_endpoint: string;\n /** URL of the token endpoint */\n token_endpoint: string;\n /** URL of the dynamic client registration endpoint (optional) */\n registration_endpoint?: string;\n /** Issuer identifier */\n issuer?: string;\n}\n\n/**\n * Subset of the parsed `WWW-Authenticate` challenge surfaced on\n * {@link AuthenticationRequiredError}. Mirrors the public shape of\n * `WWWAuthenticateChallenge` from `@adcp/sdk/auth/oauth` without forcing the\n * errors module to depend on the auth subtree (the dependency would invert\n * the build graph).\n *\n * `scheme` is lowercased per RFC 9110 §11.6.1.\n */\nexport interface AuthChallengeInfo {\n scheme: string;\n realm?: string;\n scope?: string;\n error?: string;\n error_description?: string;\n}\n\n/**\n * Error thrown when authentication is required to access an MCP endpoint\n *\n * This error is thrown during MCP endpoint discovery when the server returns\n * a 401 Unauthorized response. The shape of the remediation depends on what\n * the 401 disclosed:\n *\n * - OAuth metadata (RFC 9728 PRM walk succeeded) → `oauthMetadata` set,\n * message points at the authorization endpoint.\n * - A `WWW-Authenticate` challenge with a non-Bearer scheme (e.g. Basic\n * behind an Apigee/Kong/AWS API GW gateway) → `challenge` set, message\n * names the scheme and the SDK / CLI surface that configures it.\n * - Plain 401 with no metadata → fallback \"provide auth_token\" message.\n *\n * Consumers branching on `error.challenge?.scheme === 'basic'` can route\n * straight to `auth: { type: 'basic', username, password }` instead of\n * retrying Bearer indefinitely.\n *\n * @example\n * ```typescript\n * try {\n * await client.getProducts({ brief: 'test' });\n * } catch (error) {\n * if (error instanceof AuthenticationRequiredError) {\n * if (error.challenge?.scheme === 'basic') {\n * // Gateway-fronted agent — configure HTTP Basic\n * reconnect({ auth: { type: 'basic', username, password } });\n * } else if (error.oauthMetadata) {\n * // Redirect user to OAuth flow\n * const authUrl = error.oauthMetadata.authorization_endpoint;\n * console.log(`Please authenticate at: ${authUrl}`);\n * } else {\n * console.log('Authentication required but no scheme metadata available');\n * }\n * }\n * }\n * ```\n */\nexport class AuthenticationRequiredError extends ADCPError {\n readonly code = 'AUTHENTICATION_REQUIRED';\n\n constructor(\n public readonly agentUrl: string,\n public readonly oauthMetadata?: OAuthMetadataInfo,\n message?: string,\n public readonly challenge?: AuthChallengeInfo\n ) {\n const defaultMessage = buildAuthRequiredMessage(agentUrl, oauthMetadata, challenge);\n super(message || defaultMessage);\n // `details` is serialized through error envelopes; surfacing the challenge\n // here lets non-CLI consumers (LLM agents, dashboards, programmatic\n // callers) branch on the scheme without instanceof-checking.\n this.details = { agentUrl, oauthMetadata, challenge };\n }\n\n /**\n * Check if OAuth authentication is available\n */\n get hasOAuth(): boolean {\n return this.oauthMetadata !== undefined;\n }\n\n /**\n * Get the authorization URL if OAuth is available\n */\n get authorizationUrl(): string | undefined {\n return this.oauthMetadata?.authorization_endpoint;\n }\n\n /**\n * Lowercased scheme from the `WWW-Authenticate` challenge, when present.\n * `'basic'` is the common non-OAuth case — gateway-fronted agents speaking\n * RFC 7617.\n */\n get suggestedScheme(): string | undefined {\n return this.challenge?.scheme;\n }\n}\n\n/**\n * Build the default error message. Branches on what the 401 disclosed:\n * - non-Bearer challenge (Basic, Digest, …) → scheme-specific remediation\n * - OAuth metadata → point at the authorization endpoint\n * - nothing → fallback \"provide auth_token\"\n *\n * The Basic branch names both the SDK shape (`createTestClient({ auth: …\n * type: 'basic' })`) and the CLI shape (`--auth user:pass --auth-scheme\n * basic`) so the same error envelope serves library and CLI consumers.\n */\nfunction buildAuthRequiredMessage(\n agentUrl: string,\n oauthMetadata: OAuthMetadataInfo | undefined,\n challenge: AuthChallengeInfo | undefined\n): string {\n if (challenge && challenge.scheme !== 'bearer') {\n if (challenge.scheme === 'basic') {\n return (\n `Authentication required for ${agentUrl}. Agent (or its fronting gateway) speaks HTTP Basic ` +\n `(RFC 7617). Configure via createTestClient({ auth: { type: 'basic', username, password } }) ` +\n `— or from the CLI, --auth <user:pass> --auth-scheme basic.`\n );\n }\n // Digest / Negotiate / NTLM / vendor schemes: we don't have first-class\n // support but the scheme name in the message saves a discovery round-trip.\n const realmHint = challenge.realm ? ` (realm: ${challenge.realm})` : '';\n return (\n `Authentication required for ${agentUrl}. Agent speaks ${challenge.scheme}${realmHint}, ` +\n `which is not natively supported by @adcp/sdk. Configure auth at the transport layer ` +\n `(custom fetch wrapper, reverse-proxy header injection) or contact the agent operator ` +\n `about Bearer / Basic / OAuth support.`\n );\n }\n if (oauthMetadata) {\n return `Authentication required for ${agentUrl}. OAuth available at: ${oauthMetadata.authorization_endpoint}`;\n }\n return `Authentication required for ${agentUrl}. No OAuth metadata available - provide auth_token in agent config.`;\n}\n\n/**\n * Error thrown when a request reused an `idempotency_key` with a different\n * canonical payload within the seller's replay window.\n *\n * Recovery: `correctable` — the caller either reused a key by mistake (mint\n * a fresh UUID v4 for the new request) or re-planned with a different payload\n * (an agent whose LLM re-ran and emitted a different request must treat that\n * as a new intent, not a retry).\n *\n * @example\n * ```typescript\n * try {\n * await client.createMediaBuy({...});\n * } catch (error) {\n * if (error instanceof IdempotencyConflictError) {\n * // Either the key was reused by mistake, or the agent re-planned with\n * // a different payload. Mint a fresh key and try again.\n * }\n * }\n * ```\n */\nexport class IdempotencyConflictError extends ADCPError {\n readonly code = 'IDEMPOTENCY_CONFLICT';\n\n // Exposed via the getter so `console.log(err)` and JSON.stringify don't\n // leak the key (it's a retry-pattern oracle within the seller's TTL).\n // Callers reading `err.idempotencyKey` get it normally.\n readonly idempotencyKey: string | undefined;\n\n constructor(idempotencyKey: string | undefined, message?: string) {\n super(\n message ||\n 'idempotency_key was used earlier with a different canonical payload. ' +\n 'Use a fresh UUID v4 for the new request, or resend the exact original payload to get the cached response.'\n );\n Object.defineProperty(this, 'idempotencyKey', {\n value: idempotencyKey,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n}\n\n/**\n * Error thrown when a request carries an `idempotency_key` that is past the\n * seller's declared replay window (plus clock-skew tolerance).\n *\n * Recovery: `correctable`. If the caller knows the prior call succeeded\n * (e.g., they saw the response once, then crashed), they SHOULD fall back\n * to a natural-key lookup (e.g., `get_media_buys` by\n * `context.internal_campaign_id`) rather than minting a new key — otherwise\n * the seller treats the new request as fresh and silently creates a duplicate.\n *\n * If the caller doesn't know whether the prior call succeeded, a fresh key\n * is safe.\n */\nexport class IdempotencyExpiredError extends ADCPError {\n readonly code = 'IDEMPOTENCY_EXPIRED';\n\n // Non-enumerable so `console.log(err)` / JSON.stringify don't leak it —\n // same reasoning as IdempotencyConflictError.idempotencyKey.\n readonly idempotencyKey: string | undefined;\n\n constructor(idempotencyKey: string | undefined, message?: string) {\n super(\n message ||\n \"idempotency_key is past the seller's replay window. \" +\n 'If you know the prior call succeeded, look up the resource by natural key before retrying. Otherwise, mint a fresh UUID v4.'\n );\n Object.defineProperty(this, 'idempotencyKey', {\n value: idempotencyKey,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n}\n\nexport interface FeatureUnsupportedErrorOptions {\n message?: string;\n details?: Record<string, unknown>;\n}\n\nexport type ClientPreflightAdcpErrorRecovery = 'transient' | 'correctable' | 'terminal';\n\n/**\n * Protocol-shaped error metadata attached to SDK-local preflight throws.\n * Mirrors the public `TaskResult.adcpError` fields without importing core\n * task types into the errors module.\n */\nexport interface ClientPreflightAdcpErrorInfo {\n code: string;\n message: string;\n recovery?: ClientPreflightAdcpErrorRecovery;\n field?: string;\n suggestion?: string;\n details?: Record<string, unknown>;\n}\n\nexport interface ProtocolFeatureUnsupportedErrorOptions extends FeatureUnsupportedErrorOptions {\n field?: string;\n suggestion?: string;\n recovery?: ClientPreflightAdcpErrorRecovery;\n}\n\nexport const SDK_ERROR_TO_PROTOCOL_ERROR_CODE = {\n FEATURE_UNSUPPORTED: 'UNSUPPORTED_FEATURE',\n} as const;\n\nexport function mapSdkErrorCodeToProtocolErrorCode(code: string): string | undefined {\n return SDK_ERROR_TO_PROTOCOL_ERROR_CODE[code as keyof typeof SDK_ERROR_TO_PROTOCOL_ERROR_CODE];\n}\n\n/**\n * Error thrown when a required feature is not supported by the seller or by\n * the configured AdCP version.\n */\nexport class FeatureUnsupportedError extends ADCPError {\n readonly code: string = 'FEATURE_UNSUPPORTED';\n\n constructor(\n public readonly unsupportedFeatures: string[],\n public readonly declaredFeatures: string[],\n public readonly agentUrl?: string,\n options: FeatureUnsupportedErrorOptions = {}\n ) {\n const missing = unsupportedFeatures.join(', ');\n const declared = declaredFeatures.length > 0 ? declaredFeatures.join(', ') : '(none)';\n const urlPart = agentUrl ? ` at ${agentUrl}` : '';\n super(options.message ?? `Seller${urlPart} does not support: ${missing}\\n Declared features: ${declared}`);\n this.details = {\n unsupported_features: unsupportedFeatures,\n declared_features: declaredFeatures,\n ...(options.details ?? {}),\n };\n }\n}\n\n/**\n * Version-gate error for requests that use a protocol feature outside the\n * configured AdCP release. Kept as a FeatureUnsupportedError subclass so\n * existing catch sites keep working, while `code` carries the AdCP wire code\n * expected by probe/recovery layers.\n */\nexport class ProtocolFeatureUnsupportedError extends FeatureUnsupportedError {\n readonly code: string = 'UNSUPPORTED_FEATURE';\n\n readonly adcpError: ClientPreflightAdcpErrorInfo;\n\n constructor(\n unsupportedFeatures: string[],\n declaredFeatures: string[],\n agentUrl?: string,\n options: ProtocolFeatureUnsupportedErrorOptions = {}\n ) {\n super(unsupportedFeatures, declaredFeatures, agentUrl, options);\n this.adcpError = {\n code: this.code,\n message: this.message,\n recovery: options.recovery ?? 'correctable',\n ...(options.field && { field: options.field }),\n ...(options.suggestion && { suggestion: options.suggestion }),\n ...(isRecord(this.details) && { details: this.details }),\n };\n }\n}\n\nexport function getClientPreflightAdcpError(error: unknown): ClientPreflightAdcpErrorInfo | undefined {\n if (error instanceof ProtocolFeatureUnsupportedError) {\n return error.adcpError;\n }\n return undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * Error thrown when a response body exceeds the configured `maxResponseBytes`\n * cap on the transport. Surfaced when crawling untrusted agents (registries,\n * federated discovery layers) to prevent a hostile vendor from buffering a\n * large reply before schema validation runs.\n *\n * Recovery: `terminal` from the SDK's view — repeating the call against the\n * same agent will hit the same cap. The buyer's options are to widen the\n * cap (per-call `transport.maxResponseBytes`) when the agent's payload is\n * legitimately large, or to flag the agent as misbehaving.\n */\nexport class ResponseTooLargeError extends ADCPError {\n readonly code = 'RESPONSE_TOO_LARGE';\n\n constructor(\n public readonly limit: number,\n public readonly bytesRead: number,\n public readonly url: string,\n /**\n * The parsed value of the `Content-Length` response header when the cap\n * was tripped on the pre-check (before any body bytes were read). Undefined\n * when the response was streamed and exceeded the cap mid-flight, or when\n * the server omitted the header.\n */\n public readonly contentLengthHeader?: number\n ) {\n super(\n contentLengthHeader !== undefined\n ? `Response body declared ${contentLengthHeader} bytes, exceeds maxResponseBytes cap of ${limit} (${url})`\n : `Response body exceeded maxResponseBytes cap of ${limit} after reading ${bytesRead} bytes (${url})`\n );\n this.details = { limit, bytesRead, url, contentLengthHeader };\n }\n}\n\n/**\n * Error thrown when an `update_media_buy` request is rejected because the\n * action it maps to isn't currently allowed on the buy (AdCP 3.1, RFC #4480).\n *\n * Typed `details` payload follows `error-details/action-not-allowed.json`:\n * `attempted_action`, `reason`, optional `currently_available_actions[]`.\n *\n * Recovery branches on `reason`:\n * - `wrong_status`: transition the buy (or wait) to an allowed status.\n * - `not_supported_on_product`: terminal for this buy; pick a different\n * product for future buys that need the action.\n * - `not_supported_on_buy`: terminal; renegotiate buy terms.\n * - `mode_mismatch`: `recovery` is set to a typed hint indicating the\n * required flow (`createProposal`, `waitForApproval`, `reissueAsDirect`)\n * instead of a plain retry.\n */\nexport class ActionNotAllowedError extends ADCPError {\n readonly code = 'ACTION_NOT_ALLOWED';\n\n readonly attemptedAction: ActionNotAllowedErrorDetails['attempted_action'];\n readonly reason: ActionNotAllowedErrorDetails['reason'];\n readonly currentlyAvailableActions: ReadonlyArray<ActionNotAllowedAvailableAction>;\n readonly recovery?: ActionNotAllowedRecovery;\n\n constructor(detailsPayload: ActionNotAllowedErrorDetails, message?: string) {\n super(message ?? buildActionNotAllowedMessage(detailsPayload));\n this.attemptedAction = detailsPayload.attempted_action;\n this.reason = detailsPayload.reason;\n this.currentlyAvailableActions = detailsPayload.currently_available_actions ?? [];\n this.recovery = detailsPayload.reason === 'mode_mismatch' ? buildModeMismatchRecovery(detailsPayload) : undefined;\n this.details = detailsPayload;\n }\n}\n\n/**\n * Inline copy of the structured payload - duplicated here rather than\n * imported from `media-buy/types` to keep the errors module free of\n * cross-module imports (matches the convention used for the other typed\n * errors in this file).\n */\nexport interface ActionNotAllowedErrorDetails {\n attempted_action: ActionNotAllowedAttemptedAction;\n reason: ActionNotAllowedReasonValue;\n currently_available_actions?: ActionNotAllowedAvailableAction[];\n}\n\nexport type ActionNotAllowedReasonValue =\n | 'wrong_status'\n | 'not_supported_on_product'\n | 'not_supported_on_buy'\n | 'mode_mismatch';\n\nexport type ActionNotAllowedAttemptedAction = string;\n\nexport interface ActionNotAllowedAvailableAction {\n action: ActionNotAllowedAttemptedAction;\n mode: 'self_serve' | 'conditional_self_serve' | 'requires_proposal' | 'requires_approval';\n sla?: unknown;\n terms_ref?: string;\n}\n\nexport type ActionNotAllowedRecovery =\n | { kind: 'createProposal'; message: string }\n | { kind: 'waitForApproval'; message: string }\n | { kind: 'reissueAsDirect'; message: string };\n\nfunction buildActionNotAllowedMessage(details: ActionNotAllowedErrorDetails): string {\n const prefix = `update_media_buy rejected: \\`${details.attempted_action}\\` not allowed (${details.reason}).`;\n switch (details.reason) {\n case 'wrong_status':\n return `${prefix} transition the buy to an allowed status before retrying.`;\n case 'not_supported_on_product':\n return `${prefix} product does not declare this action; pick a different product for future buys needing it.`;\n case 'not_supported_on_buy':\n return `${prefix} buy was negotiated without this capability; renegotiate buy terms.`;\n case 'mode_mismatch':\n return `${prefix} mode shifted between preflight and dispatch; re-issue through the appropriate flow indicated by available_actions.`;\n }\n}\n\nfunction buildModeMismatchRecovery(details: ActionNotAllowedErrorDetails): ActionNotAllowedRecovery | undefined {\n const match = details.currently_available_actions?.find(a => a.action === details.attempted_action);\n if (!match) return undefined;\n switch (match.mode) {\n case 'requires_proposal':\n return {\n kind: 'createProposal',\n message:\n `seller now resolves \\`${details.attempted_action}\\` as requires_proposal. ` +\n 'reissue via the proposal lifecycle (`create_proposal` / `finalize_proposal`).',\n };\n case 'requires_approval':\n return {\n kind: 'waitForApproval',\n message:\n `seller now resolves \\`${details.attempted_action}\\` as requires_approval. ` +\n 'expect an async approval callback rather than a direct response.',\n };\n case 'conditional_self_serve':\n return {\n kind: 'reissueAsDirect',\n message:\n `seller resolves \\`${details.attempted_action}\\` as conditional_self_serve: ` +\n 'small mutations clear automatically, larger ones queue. retry; expect a possible async escalation.',\n };\n case 'self_serve':\n return {\n kind: 'reissueAsDirect',\n message: `seller resolves \\`${details.attempted_action}\\` as self_serve. retry the same request.`,\n };\n }\n}\n\n/**\n * Reason the v3 guard refused a mutating dispatch.\n * - `version`: seller's `major_versions` does not include 3\n * - `idempotency`: seller reports v3 but omits the required\n * `adcp.idempotency.replay_ttl_seconds` declaration\n * - `synthetic`: @deprecated — kept in the union for downstream\n * consumers that pattern-match on the union literal, but the SDK no\n * longer emits it. Sellers whose capabilities are synthesized from\n * `tools/list` are routed through the v2 adapter with a one-time\n * warning; gate retry behavior on `SingleAgentClient.isSyntheticV2()`.\n */\nexport type VersionUnsupportedReason =\n | 'version'\n | 'idempotency'\n /** @deprecated SDK no longer emits this reason. See union JSDoc. */\n | 'synthetic';\n\n/**\n * Error thrown when a mutating call would dispatch to a seller whose\n * capabilities cannot be corroborated as v3. Provides an explicit\n * pre-flight signal so callers don't silently mutate state on agents\n * that have not negotiated the expected major version.\n *\n * Agent URL is exposed on the instance (`agentUrl`) but omitted from the\n * default message to avoid leaking seller identity into shared log sinks.\n */\nexport class VersionUnsupportedError extends ADCPError {\n readonly code = 'VERSION_UNSUPPORTED';\n\n constructor(\n public readonly taskType: string,\n public readonly reason: VersionUnsupportedReason,\n public readonly actualVersion: 'v2' | 'v3',\n public readonly agentUrl?: string\n ) {\n super(\n `Refusing to dispatch mutating task '${taskType}': ` +\n VersionUnsupportedError.explain(reason, actualVersion) +\n ` Pass allowV2: true or requireV3ForMutations: false to override.`\n );\n }\n\n private static explain(reason: VersionUnsupportedReason, actualVersion: 'v2' | 'v3'): string {\n switch (reason) {\n case 'version':\n return `seller advertises major version '${actualVersion}' but v3 is required.`;\n case 'idempotency':\n return `seller reports v3 but omits adcp.idempotency.replay_ttl_seconds (required by spec).`;\n case 'synthetic':\n return `capabilities were synthesized from a tool list, v3 claim is unverifiable.`;\n }\n }\n}\n\n/**\n * Check if an error indicates a 401 Unauthorized response\n *\n * This helper centralizes the fragile logic of detecting 401 errors from\n * various sources (HTTP status codes, error messages, wrapped errors).\n * Used during endpoint discovery to detect authentication requirements.\n *\n * @param error - The error to check\n * @param got401Flag - Optional flag that was set by tracking HTTP responses\n * @returns true if the error appears to be a 401 authentication error\n */\nexport function is401Error(error: unknown, got401Flag = false): boolean {\n if (got401Flag) {\n return true;\n }\n\n if (!error) {\n return false;\n }\n\n // Check for status property (common in HTTP errors). MCP SDK's\n // `StreamableHTTPClientTransport` throws errors with the HTTP status on\n // `.code`, so we check that too.\n const errorObj = error as Record<string, unknown>;\n const status =\n (errorObj as { status?: number })?.status ||\n (errorObj as { response?: { status?: number } })?.response?.status ||\n (errorObj as { cause?: { status?: number } })?.cause?.status ||\n (errorObj as { code?: unknown })?.code;\n if (status === 401) {\n return true;\n }\n\n // Fall back to string matching in error message. Use word boundaries so\n // we don't misidentify things like \"product prod-401-xyz\" as an HTTP 401,\n // and require \"Unauthorized\" as a whole word rather than as a substring.\n const message = (errorObj as { message?: string })?.message || '';\n return /\\b401\\b/.test(message) || /\\bunauthorized\\b/i.test(message);\n}\n\n/**\n * Map a structured AdCP error (code + message) to a typed ADCPError subclass\n * when the code has a dedicated class. Returns `undefined` for codes that\n * don't have a typed mapping — callers should continue to use the untyped\n * `AdcpErrorInfo` for those.\n *\n * Pass the `idempotencyKey` the SDK sent so the constructed error carries it\n * for the caller's recovery logic. The server intentionally omits the key\n * from error bodies (it's a read-oracle), so the transport-layer caller is\n * the authoritative source.\n */\nexport function adcpErrorToTypedError(\n adcpError: { code: string; message?: string; details?: unknown },\n idempotencyKey?: string\n): ADCPError | undefined {\n switch (adcpError.code) {\n case 'IDEMPOTENCY_CONFLICT':\n return new IdempotencyConflictError(idempotencyKey, adcpError.message);\n case 'IDEMPOTENCY_EXPIRED':\n return new IdempotencyExpiredError(idempotencyKey, adcpError.message);\n case 'ACTION_NOT_ALLOWED': {\n const parsed = parseActionNotAllowedDetails(adcpError.details);\n if (!parsed) return undefined;\n return new ActionNotAllowedError(parsed, adcpError.message);\n }\n default:\n return undefined;\n }\n}\n\nfunction parseActionNotAllowedDetails(raw: unknown): ActionNotAllowedErrorDetails | undefined {\n if (!raw || typeof raw !== 'object') return undefined;\n const obj = raw as Record<string, unknown>;\n const attempted = obj['attempted_action'];\n const reason = obj['reason'];\n if (typeof attempted !== 'string' || typeof reason !== 'string') return undefined;\n if (!isActionNotAllowedReason(reason)) return undefined;\n\n const rawList = obj['currently_available_actions'];\n let currently: ActionNotAllowedAvailableAction[] | undefined;\n if (Array.isArray(rawList)) {\n currently = [];\n for (const entry of rawList) {\n if (!entry || typeof entry !== 'object') continue;\n const e = entry as Record<string, unknown>;\n const action = e['action'];\n const mode = e['mode'];\n if (typeof action !== 'string' || typeof mode !== 'string') continue;\n if (!isActionMode(mode)) continue;\n const parsedEntry: ActionNotAllowedAvailableAction = { action, mode };\n if (typeof e['terms_ref'] === 'string') parsedEntry.terms_ref = e['terms_ref'];\n if (e['sla'] !== undefined) parsedEntry.sla = e['sla'];\n currently.push(parsedEntry);\n }\n }\n\n return {\n attempted_action: attempted,\n reason,\n currently_available_actions: currently,\n };\n}\n\nfunction isActionNotAllowedReason(value: string): value is ActionNotAllowedReasonValue {\n return (\n value === 'wrong_status' ||\n value === 'not_supported_on_product' ||\n value === 'not_supported_on_buy' ||\n value === 'mode_mismatch'\n );\n}\n\nfunction isActionMode(value: string): value is ActionNotAllowedAvailableAction['mode'] {\n return (\n value === 'self_serve' ||\n value === 'conditional_self_serve' ||\n value === 'requires_proposal' ||\n value === 'requires_approval'\n );\n}\n\n/**\n * Type guard to check if an error is an ADCP error\n */\nexport function isADCPError(error: unknown): error is ADCPError {\n return error instanceof ADCPError;\n}\n\n/**\n * Type guard to check if an error is a specific ADCP error type\n */\nexport function isErrorOfType<T extends ADCPError>(error: unknown, ErrorClass: new (...args: any[]) => T): error is T {\n return error instanceof ErrorClass;\n}\n\n/**\n * Utility to extract error information for logging/debugging\n */\nexport function extractErrorInfo(error: unknown): {\n message: string;\n code?: string;\n details?: unknown;\n stack?: string;\n} {\n if (isADCPError(error)) {\n return {\n message: error.message,\n code: error.code,\n details: error.details,\n stack: error.stack,\n };\n }\n\n if (error instanceof Error) {\n return {\n message: error.message,\n stack: error.stack,\n };\n }\n\n return {\n message: String(error),\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/errors/index.ts"],"sourcesContent":["// Custom error classes for ADCP client library\n\n/**\n * Base class for all ADCP client errors\n */\nexport abstract class ADCPError extends Error {\n abstract readonly code: string;\n\n constructor(\n message: string,\n public details?: unknown\n ) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\n/**\n * Error thrown when a task times out\n */\nexport class TaskTimeoutError extends ADCPError {\n readonly code = 'TASK_TIMEOUT';\n\n constructor(\n public readonly taskId: string,\n public readonly timeout: number\n ) {\n super(`Task ${taskId} timed out after ${timeout}ms`);\n }\n}\n\n/**\n * Error thrown when maximum clarification attempts are exceeded\n */\nexport class MaxClarificationError extends ADCPError {\n readonly code = 'MAX_CLARIFICATIONS';\n\n constructor(\n public readonly taskId: string,\n public readonly maxAttempts: number\n ) {\n super(`Task ${taskId} exceeded maximum clarification attempts: ${maxAttempts}`);\n }\n}\n\n/**\n * Error thrown when a task is deferred to human\n * Contains the token needed to resume the task\n */\nexport class DeferredTaskError extends ADCPError {\n readonly code = 'TASK_DEFERRED';\n\n constructor(public readonly token: string) {\n super(`Task deferred with token: ${token}`);\n }\n}\n\n/**\n * Error thrown when a task is aborted\n */\nexport class TaskAbortedError extends ADCPError {\n readonly code = 'TASK_ABORTED';\n\n constructor(\n public readonly taskId: string,\n public readonly reason?: string\n ) {\n super(`Task ${taskId} aborted: ${reason || 'No reason provided'}`);\n }\n}\n\n/**\n * Error thrown when an agent is not found\n */\nexport class AgentNotFoundError extends ADCPError {\n readonly code = 'AGENT_NOT_FOUND';\n\n constructor(\n public readonly agentId: string,\n public readonly availableAgents: string[]\n ) {\n super(`Agent '${agentId}' not found. Available agents: ${availableAgents.join(', ')}`);\n }\n}\n\n/**\n * Error thrown when an agent doesn't support a task\n */\nexport class UnsupportedTaskError extends ADCPError {\n readonly code = 'UNSUPPORTED_TASK';\n\n constructor(\n public readonly agentId: string,\n public readonly taskName: string,\n public readonly supportedTasks?: string[]\n ) {\n const tasksMsg = supportedTasks ? ` Supported tasks: ${supportedTasks.join(', ')}` : '';\n super(`Agent '${agentId}' does not support task '${taskName}'.${tasksMsg}`);\n }\n}\n\n/**\n * Error thrown when protocol communication fails\n */\nexport class ProtocolError extends ADCPError {\n readonly code = 'PROTOCOL_ERROR';\n\n constructor(\n public readonly protocol: 'mcp' | 'a2a',\n message: string,\n public readonly originalError?: Error\n ) {\n super(`${protocol.toUpperCase()} protocol error: ${message}`);\n this.details = { originalError };\n }\n}\n\n/**\n * Error thrown when validation fails\n */\nexport class ValidationError extends ADCPError {\n readonly code = 'VALIDATION_ERROR';\n\n constructor(\n public readonly field: string,\n public readonly value: unknown,\n public readonly constraint: string\n ) {\n super(`Validation failed for field '${field}': ${constraint}`);\n this.details = { field, value, constraint };\n }\n}\n\n/**\n * Error thrown when input handler is missing but required\n */\nexport class MissingInputHandlerError extends ADCPError {\n readonly code = 'MISSING_INPUT_HANDLER';\n\n constructor(\n public readonly taskId: string,\n public readonly question: string\n ) {\n super(`Agent requested input but no handler provided. Task: ${taskId}, Question: ${question}`);\n }\n}\n\n/**\n * Error thrown when conversation context is invalid\n */\nexport class InvalidContextError extends ADCPError {\n readonly code = 'INVALID_CONTEXT';\n\n constructor(\n public readonly contextId: string,\n reason: string\n ) {\n super(`Invalid conversation context '${contextId}': ${reason}`);\n }\n}\n\n/**\n * Error thrown when configuration is invalid\n */\nexport class ConfigurationError extends ADCPError {\n readonly code = 'CONFIGURATION_ERROR';\n\n constructor(\n message: string,\n public readonly configField?: string\n ) {\n super(`Configuration error: ${message}`);\n this.details = { configField };\n }\n}\n\n/**\n * OAuth metadata for authentication guidance\n */\nexport interface OAuthMetadataInfo {\n /** URL of the authorization endpoint */\n authorization_endpoint: string;\n /** URL of the token endpoint */\n token_endpoint: string;\n /** URL of the dynamic client registration endpoint (optional) */\n registration_endpoint?: string;\n /** Issuer identifier */\n issuer?: string;\n}\n\n/**\n * Subset of the parsed `WWW-Authenticate` challenge surfaced on\n * {@link AuthenticationRequiredError}. Mirrors the public shape of\n * `WWWAuthenticateChallenge` from `@adcp/sdk/auth/oauth` without forcing the\n * errors module to depend on the auth subtree (the dependency would invert\n * the build graph).\n *\n * `scheme` is lowercased per RFC 9110 §11.6.1.\n */\nexport interface AuthChallengeInfo {\n scheme: string;\n realm?: string;\n scope?: string;\n error?: string;\n error_description?: string;\n}\n\n/**\n * Error thrown when authentication is required to access an MCP endpoint\n *\n * This error is thrown during MCP endpoint discovery when the server returns\n * a 401 Unauthorized response. The shape of the remediation depends on what\n * the 401 disclosed:\n *\n * - OAuth metadata (RFC 9728 PRM walk succeeded) → `oauthMetadata` set,\n * message points at the authorization endpoint.\n * - A `WWW-Authenticate` challenge with a non-Bearer scheme (e.g. Basic\n * behind an Apigee/Kong/AWS API GW gateway) → `challenge` set, message\n * names the scheme and the SDK / CLI surface that configures it.\n * - Plain 401 with no metadata → fallback \"provide auth_token\" message.\n *\n * Consumers branching on `error.challenge?.scheme === 'basic'` can route\n * straight to `auth: { type: 'basic', username, password }` instead of\n * retrying Bearer indefinitely.\n *\n * @example\n * ```typescript\n * try {\n * await client.getProducts({ brief: 'test' });\n * } catch (error) {\n * if (error instanceof AuthenticationRequiredError) {\n * if (error.challenge?.scheme === 'basic') {\n * // Gateway-fronted agent — configure HTTP Basic\n * reconnect({ auth: { type: 'basic', username, password } });\n * } else if (error.oauthMetadata) {\n * // Redirect user to OAuth flow\n * const authUrl = error.oauthMetadata.authorization_endpoint;\n * console.log(`Please authenticate at: ${authUrl}`);\n * } else {\n * console.log('Authentication required but no scheme metadata available');\n * }\n * }\n * }\n * ```\n */\nexport class AuthenticationRequiredError extends ADCPError {\n readonly code = 'AUTHENTICATION_REQUIRED';\n\n constructor(\n public readonly agentUrl: string,\n public readonly oauthMetadata?: OAuthMetadataInfo,\n message?: string,\n public readonly challenge?: AuthChallengeInfo\n ) {\n const defaultMessage = buildAuthRequiredMessage(agentUrl, oauthMetadata, challenge);\n super(message || defaultMessage);\n // `details` is serialized through error envelopes; surfacing the challenge\n // here lets non-CLI consumers (LLM agents, dashboards, programmatic\n // callers) branch on the scheme without instanceof-checking.\n this.details = { agentUrl, oauthMetadata, challenge };\n }\n\n /**\n * Check if OAuth authentication is available\n */\n get hasOAuth(): boolean {\n return this.oauthMetadata !== undefined;\n }\n\n /**\n * Get the authorization URL if OAuth is available\n */\n get authorizationUrl(): string | undefined {\n return this.oauthMetadata?.authorization_endpoint;\n }\n\n /**\n * Lowercased scheme from the `WWW-Authenticate` challenge, when present.\n * `'basic'` is the common non-OAuth case — gateway-fronted agents speaking\n * RFC 7617.\n */\n get suggestedScheme(): string | undefined {\n return this.challenge?.scheme;\n }\n}\n\n/**\n * Build the default error message. Branches on what the 401 disclosed:\n * - non-Bearer challenge (Basic, Digest, …) → scheme-specific remediation\n * - OAuth metadata → point at the authorization endpoint\n * - nothing → fallback \"provide auth_token\"\n *\n * The Basic branch names both the SDK shape (`createTestClient({ auth: …\n * type: 'basic' })`) and the CLI shape (`--auth user:pass --auth-scheme\n * basic`) so the same error envelope serves library and CLI consumers.\n */\nfunction buildAuthRequiredMessage(\n agentUrl: string,\n oauthMetadata: OAuthMetadataInfo | undefined,\n challenge: AuthChallengeInfo | undefined\n): string {\n if (challenge && challenge.scheme !== 'bearer') {\n if (challenge.scheme === 'basic') {\n return (\n `Authentication required for ${agentUrl}. Agent (or its fronting gateway) speaks HTTP Basic ` +\n `(RFC 7617). Configure via createTestClient({ auth: { type: 'basic', username, password } }) ` +\n `— or from the CLI, --auth <user:pass> --auth-scheme basic.`\n );\n }\n // Digest / Negotiate / NTLM / vendor schemes: we don't have first-class\n // support but the scheme name in the message saves a discovery round-trip.\n const realmHint = challenge.realm ? ` (realm: ${challenge.realm})` : '';\n return (\n `Authentication required for ${agentUrl}. Agent speaks ${challenge.scheme}${realmHint}, ` +\n `which is not natively supported by @adcp/sdk. Configure auth at the transport layer ` +\n `(custom fetch wrapper, reverse-proxy header injection) or contact the agent operator ` +\n `about Bearer / Basic / OAuth support.`\n );\n }\n if (oauthMetadata) {\n return `Authentication required for ${agentUrl}. OAuth available at: ${oauthMetadata.authorization_endpoint}`;\n }\n return `Authentication required for ${agentUrl}. No OAuth metadata available - provide auth_token in agent config.`;\n}\n\n/**\n * Error thrown when a request reused an `idempotency_key` with a different\n * canonical payload within the seller's replay window.\n *\n * Recovery: `correctable` — the caller either reused a key by mistake (mint\n * a fresh UUID v4 for the new request) or re-planned with a different payload\n * (an agent whose LLM re-ran and emitted a different request must treat that\n * as a new intent, not a retry).\n *\n * @example\n * ```typescript\n * try {\n * await client.createMediaBuy({...});\n * } catch (error) {\n * if (error instanceof IdempotencyConflictError) {\n * // Either the key was reused by mistake, or the agent re-planned with\n * // a different payload. Mint a fresh key and try again.\n * }\n * }\n * ```\n */\nexport class IdempotencyConflictError extends ADCPError {\n readonly code = 'IDEMPOTENCY_CONFLICT';\n\n // Exposed via the getter so `console.log(err)` and JSON.stringify don't\n // leak the key (it's a retry-pattern oracle within the seller's TTL).\n // Callers reading `err.idempotencyKey` get it normally.\n readonly idempotencyKey: string | undefined;\n\n constructor(idempotencyKey: string | undefined, message?: string) {\n super(\n message ||\n 'idempotency_key was used earlier with a different canonical payload. ' +\n 'Use a fresh UUID v4 for the new request, or resend the exact original payload to get the cached response.'\n );\n Object.defineProperty(this, 'idempotencyKey', {\n value: idempotencyKey,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n}\n\n/**\n * Error thrown when a request carries an `idempotency_key` that is past the\n * seller's declared replay window (plus clock-skew tolerance).\n *\n * Recovery: `correctable`. If the caller knows the prior call succeeded\n * (e.g., they saw the response once, then crashed), they SHOULD fall back\n * to a natural-key lookup (e.g., `get_media_buys` by\n * `context.internal_campaign_id`) rather than minting a new key — otherwise\n * the seller treats the new request as fresh and silently creates a duplicate.\n *\n * If the caller doesn't know whether the prior call succeeded, a fresh key\n * is safe.\n */\nexport class IdempotencyExpiredError extends ADCPError {\n readonly code = 'IDEMPOTENCY_EXPIRED';\n\n // Non-enumerable so `console.log(err)` / JSON.stringify don't leak it —\n // same reasoning as IdempotencyConflictError.idempotencyKey.\n readonly idempotencyKey: string | undefined;\n\n constructor(idempotencyKey: string | undefined, message?: string) {\n super(\n message ||\n \"idempotency_key is past the seller's replay window. \" +\n 'If you know the prior call succeeded, look up the resource by natural key before retrying. Otherwise, mint a fresh UUID v4.'\n );\n Object.defineProperty(this, 'idempotencyKey', {\n value: idempotencyKey,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n}\n\nexport interface FeatureUnsupportedErrorOptions {\n message?: string;\n details?: Record<string, unknown>;\n}\n\nexport type ClientPreflightAdcpErrorRecovery = 'transient' | 'correctable' | 'terminal';\n\n/**\n * Protocol-shaped error metadata attached to SDK-local preflight throws.\n * Mirrors the public `TaskResult.adcpError` fields without importing core\n * task types into the errors module.\n */\nexport interface ClientPreflightAdcpErrorInfo {\n code: string;\n message: string;\n recovery?: ClientPreflightAdcpErrorRecovery;\n field?: string;\n suggestion?: string;\n details?: Record<string, unknown>;\n}\n\nexport interface ProtocolFeatureUnsupportedErrorOptions extends FeatureUnsupportedErrorOptions {\n field?: string;\n suggestion?: string;\n recovery?: ClientPreflightAdcpErrorRecovery;\n}\n\nexport const SDK_ERROR_TO_PROTOCOL_ERROR_CODE = {\n FEATURE_UNSUPPORTED: 'UNSUPPORTED_FEATURE',\n} as const;\n\nexport function mapSdkErrorCodeToProtocolErrorCode(code: string): string | undefined {\n return SDK_ERROR_TO_PROTOCOL_ERROR_CODE[code as keyof typeof SDK_ERROR_TO_PROTOCOL_ERROR_CODE];\n}\n\n/**\n * Error thrown when a required feature is not supported by the seller or by\n * the configured AdCP version.\n */\nexport class FeatureUnsupportedError extends ADCPError {\n readonly code: string = 'FEATURE_UNSUPPORTED';\n\n constructor(\n public readonly unsupportedFeatures: string[],\n public readonly declaredFeatures: string[],\n public readonly agentUrl?: string,\n options: FeatureUnsupportedErrorOptions = {}\n ) {\n const missing = unsupportedFeatures.join(', ');\n const declared = declaredFeatures.length > 0 ? declaredFeatures.join(', ') : '(none)';\n const urlPart = agentUrl ? ` at ${agentUrl}` : '';\n super(options.message ?? `Seller${urlPart} does not support: ${missing}\\n Declared features: ${declared}`);\n this.details = {\n unsupported_features: unsupportedFeatures,\n declared_features: declaredFeatures,\n ...(options.details ?? {}),\n };\n }\n}\n\n/**\n * Version-gate error for requests that use a protocol feature outside the\n * configured AdCP release. Kept as a FeatureUnsupportedError subclass so\n * existing catch sites keep working, while `code` carries the AdCP wire code\n * expected by probe/recovery layers.\n */\nexport class ProtocolFeatureUnsupportedError extends FeatureUnsupportedError {\n readonly code: string = 'UNSUPPORTED_FEATURE';\n\n readonly adcpError: ClientPreflightAdcpErrorInfo;\n\n constructor(\n unsupportedFeatures: string[],\n declaredFeatures: string[],\n agentUrl?: string,\n options: ProtocolFeatureUnsupportedErrorOptions = {}\n ) {\n super(unsupportedFeatures, declaredFeatures, agentUrl, options);\n this.adcpError = {\n code: this.code,\n message: this.message,\n recovery: options.recovery ?? 'correctable',\n ...(options.field && { field: options.field }),\n ...(options.suggestion && { suggestion: options.suggestion }),\n ...(isRecord(this.details) && { details: this.details }),\n };\n }\n}\n\nexport function getClientPreflightAdcpError(error: unknown): ClientPreflightAdcpErrorInfo | undefined {\n if (error instanceof ProtocolFeatureUnsupportedError) {\n return error.adcpError;\n }\n return undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * Error thrown when a response body exceeds the configured `maxResponseBytes`\n * cap on the transport. Surfaced when crawling untrusted agents (registries,\n * federated discovery layers) to prevent a hostile vendor from buffering a\n * large reply before schema validation runs.\n *\n * Recovery: `terminal` from the SDK's view — repeating the call against the\n * same agent will hit the same cap. The buyer's options are to widen the\n * cap (per-call `transport.maxResponseBytes`) when the agent's payload is\n * legitimately large, or to flag the agent as misbehaving.\n */\nexport class ResponseTooLargeError extends ADCPError {\n readonly code = 'RESPONSE_TOO_LARGE';\n\n constructor(\n public readonly limit: number,\n public readonly bytesRead: number,\n public readonly url: string,\n /**\n * The parsed value of the `Content-Length` response header when the cap\n * was tripped on the pre-check (before any body bytes were read). Undefined\n * when the response was streamed and exceeded the cap mid-flight, or when\n * the server omitted the header.\n */\n public readonly contentLengthHeader?: number\n ) {\n super(\n contentLengthHeader !== undefined\n ? `Response body declared ${contentLengthHeader} bytes, exceeds maxResponseBytes cap of ${limit} (${url})`\n : `Response body exceeded maxResponseBytes cap of ${limit} after reading ${bytesRead} bytes (${url})`\n );\n this.details = { limit, bytesRead, url, contentLengthHeader };\n }\n}\n\n/**\n * Error thrown when an `update_media_buy` request is rejected because the\n * action it maps to isn't currently allowed on the buy (AdCP 3.1, RFC #4480).\n *\n * Typed `details` payload follows `error-details/action-not-allowed.json`:\n * `attempted_action`, `reason`, optional `currently_available_actions[]`.\n *\n * Recovery branches on `reason`:\n * - `wrong_status`: transition the buy (or wait) to an allowed status.\n * - `not_supported_on_product`: terminal for this buy; pick a different\n * product for future buys that need the action.\n * - `not_supported_on_buy`: terminal; renegotiate buy terms.\n * - `mode_mismatch`: `recovery` is set to a typed hint indicating the\n * required flow (`createProposal`, `waitForApproval`, `reissueAsDirect`)\n * instead of a plain retry.\n */\nexport class ActionNotAllowedError extends ADCPError {\n readonly code = 'ACTION_NOT_ALLOWED';\n\n readonly attemptedAction: ActionNotAllowedErrorDetails['attempted_action'];\n readonly reason: ActionNotAllowedErrorDetails['reason'];\n readonly currentlyAvailableActions: ReadonlyArray<ActionNotAllowedAvailableAction>;\n readonly recovery?: ActionNotAllowedRecovery;\n\n constructor(detailsPayload: ActionNotAllowedErrorDetails, message?: string) {\n super(message ?? buildActionNotAllowedMessage(detailsPayload));\n this.attemptedAction = detailsPayload.attempted_action;\n this.reason = detailsPayload.reason;\n this.currentlyAvailableActions = detailsPayload.currently_available_actions ?? [];\n this.recovery = detailsPayload.reason === 'mode_mismatch' ? buildModeMismatchRecovery(detailsPayload) : undefined;\n this.details = detailsPayload;\n }\n}\n\n/**\n * Inline copy of the structured payload - duplicated here rather than\n * imported from `media-buy/types` to keep the errors module free of\n * cross-module imports (matches the convention used for the other typed\n * errors in this file).\n */\nexport interface ActionNotAllowedErrorDetails {\n attempted_action: ActionNotAllowedAttemptedAction;\n reason: ActionNotAllowedReasonValue;\n currently_available_actions?: ActionNotAllowedAvailableAction[];\n}\n\nexport type ActionNotAllowedReasonValue =\n | 'wrong_status'\n | 'not_supported_on_product'\n | 'not_supported_on_buy'\n | 'mode_mismatch';\n\nexport type ActionNotAllowedAttemptedAction = string;\n\nexport interface ActionNotAllowedAvailableAction {\n action: ActionNotAllowedAttemptedAction;\n mode: 'self_serve' | 'conditional_self_serve' | 'requires_proposal' | 'requires_approval';\n sla?: unknown;\n terms_ref?: string;\n}\n\nexport type ActionNotAllowedRecovery =\n | { kind: 'createProposal'; message: string }\n | { kind: 'waitForApproval'; message: string }\n | { kind: 'reissueAsDirect'; message: string };\n\nfunction buildActionNotAllowedMessage(details: ActionNotAllowedErrorDetails): string {\n const prefix = `update_media_buy rejected: \\`${details.attempted_action}\\` not allowed (${details.reason}).`;\n switch (details.reason) {\n case 'wrong_status':\n return `${prefix} transition the buy to an allowed status before retrying.`;\n case 'not_supported_on_product':\n return `${prefix} product does not declare this action; pick a different product for future buys needing it.`;\n case 'not_supported_on_buy':\n return `${prefix} buy was negotiated without this capability; renegotiate buy terms.`;\n case 'mode_mismatch':\n return `${prefix} mode shifted between preflight and dispatch; re-issue through the appropriate flow indicated by available_actions.`;\n }\n}\n\nfunction buildModeMismatchRecovery(details: ActionNotAllowedErrorDetails): ActionNotAllowedRecovery | undefined {\n const match = details.currently_available_actions?.find(a => a.action === details.attempted_action);\n if (!match) return undefined;\n switch (match.mode) {\n case 'requires_proposal':\n return {\n kind: 'createProposal',\n message:\n `seller now resolves \\`${details.attempted_action}\\` as requires_proposal. ` +\n 'reissue via the proposal lifecycle (`create_proposal` / `finalize_proposal`).',\n };\n case 'requires_approval':\n return {\n kind: 'waitForApproval',\n message:\n `seller now resolves \\`${details.attempted_action}\\` as requires_approval. ` +\n 'expect an async approval callback rather than a direct response.',\n };\n case 'conditional_self_serve':\n return {\n kind: 'reissueAsDirect',\n message:\n `seller resolves \\`${details.attempted_action}\\` as conditional_self_serve: ` +\n 'small mutations clear automatically, larger ones queue. retry; expect a possible async escalation.',\n };\n case 'self_serve':\n return {\n kind: 'reissueAsDirect',\n message: `seller resolves \\`${details.attempted_action}\\` as self_serve. retry the same request.`,\n };\n }\n}\n\n/**\n * Reason the v3 guard refused a mutating dispatch.\n * - `version`: seller's `major_versions` does not include 3\n * - `idempotency`: seller reports v3 but omits the required\n * `adcp.idempotency.replay_ttl_seconds` declaration\n * - `synthetic`: @deprecated — kept in the union for downstream\n * consumers that pattern-match on the union literal, but the SDK no\n * longer emits it. Sellers whose capabilities are synthesized from\n * `tools/list` are routed through the v2 adapter with a one-time\n * warning; gate retry behavior on `SingleAgentClient.isSyntheticV2()`.\n */\nexport type VersionUnsupportedReason =\n | 'version'\n | 'idempotency'\n /** @deprecated SDK no longer emits this reason. See union JSDoc. */\n | 'synthetic';\n\n/**\n * Error thrown when a mutating call would dispatch to a seller whose\n * capabilities cannot be corroborated as v3. Provides an explicit\n * pre-flight signal so callers don't silently mutate state on agents\n * that have not negotiated the expected major version.\n *\n * Agent URL is exposed on the instance (`agentUrl`) but omitted from the\n * default message to avoid leaking seller identity into shared log sinks.\n */\nexport class VersionUnsupportedError extends ADCPError {\n readonly code = 'VERSION_UNSUPPORTED';\n\n constructor(\n public readonly taskType: string,\n public readonly reason: VersionUnsupportedReason,\n public readonly actualVersion: 'v2' | 'v3',\n public readonly agentUrl?: string\n ) {\n super(\n `Refusing to dispatch mutating task '${taskType}': ` +\n VersionUnsupportedError.explain(reason, actualVersion) +\n ` Pass allowV2: true or requireV3ForMutations: false to override.`\n );\n }\n\n private static explain(reason: VersionUnsupportedReason, actualVersion: 'v2' | 'v3'): string {\n switch (reason) {\n case 'version':\n return `seller advertises major version '${actualVersion}' but v3 is required.`;\n case 'idempotency':\n return `seller reports v3 but omits adcp.idempotency.replay_ttl_seconds (required by spec).`;\n case 'synthetic':\n return `capabilities were synthesized from a tool list, v3 claim is unverifiable.`;\n }\n }\n}\n\n/**\n * Check if an error indicates a 401 Unauthorized response\n *\n * This helper centralizes the fragile logic of detecting 401 errors from\n * various sources (HTTP status codes, error messages, wrapped errors).\n * Used during endpoint discovery to detect authentication requirements.\n *\n * @param error - The error to check\n * @param got401Flag - Optional flag that was set by tracking HTTP responses\n * @returns true if the error appears to be a 401 authentication error\n */\nexport function is401Error(error: unknown, got401Flag = false): boolean {\n if (got401Flag) {\n return true;\n }\n\n if (!error) {\n return false;\n }\n\n // Check for status property (common in HTTP errors). MCP SDK's\n // `StreamableHTTPClientTransport` throws errors with the HTTP status on\n // `.code`, so we check that too.\n const errorObj = error as Record<string, unknown>;\n const status =\n (errorObj as { status?: number })?.status ||\n (errorObj as { response?: { status?: number } })?.response?.status ||\n (errorObj as { cause?: { status?: number } })?.cause?.status ||\n (errorObj as { code?: unknown })?.code;\n if (status === 401) {\n return true;\n }\n\n // Fall back to string matching in error message. Use word boundaries so\n // we don't misidentify things like \"product prod-401-xyz\" as an HTTP 401,\n // and require \"Unauthorized\" as a whole word rather than as a substring.\n const message = (errorObj as { message?: string })?.message || '';\n return /\\b401\\b/.test(message) || /\\bunauthorized\\b/i.test(message);\n}\n\n/**\n * Map a structured AdCP error (code + message) to a typed ADCPError subclass\n * when the code has a dedicated class. Returns `undefined` for codes that\n * don't have a typed mapping — callers should continue to use the untyped\n * `AdcpErrorInfo` for those.\n *\n * Pass the `idempotencyKey` the SDK sent so the constructed error carries it\n * for the caller's recovery logic. The server intentionally omits the key\n * from error bodies (it's a read-oracle), so the transport-layer caller is\n * the authoritative source.\n */\nexport function adcpErrorToTypedError(\n adcpError: { code: string; message?: string; details?: unknown },\n idempotencyKey?: string\n): ADCPError | undefined {\n switch (adcpError.code) {\n case 'IDEMPOTENCY_CONFLICT':\n return new IdempotencyConflictError(idempotencyKey, adcpError.message);\n case 'IDEMPOTENCY_EXPIRED':\n return new IdempotencyExpiredError(idempotencyKey, adcpError.message);\n case 'ACTION_NOT_ALLOWED': {\n const parsed = parseActionNotAllowedDetails(adcpError.details);\n if (!parsed) return undefined;\n return new ActionNotAllowedError(parsed, adcpError.message);\n }\n default:\n return undefined;\n }\n}\n\nfunction parseActionNotAllowedDetails(raw: unknown): ActionNotAllowedErrorDetails | undefined {\n if (!raw || typeof raw !== 'object') return undefined;\n const obj = raw as Record<string, unknown>;\n const attempted = obj['attempted_action'];\n const reason = obj['reason'];\n if (typeof attempted !== 'string' || typeof reason !== 'string') return undefined;\n if (!isActionNotAllowedReason(reason)) return undefined;\n\n const rawList = obj['currently_available_actions'];\n let currently: ActionNotAllowedAvailableAction[] | undefined;\n if (Array.isArray(rawList)) {\n currently = [];\n for (const entry of rawList) {\n if (!entry || typeof entry !== 'object') continue;\n const e = entry as Record<string, unknown>;\n const action = e['action'];\n const mode = e['mode'];\n if (typeof action !== 'string' || typeof mode !== 'string') continue;\n if (!isActionMode(mode)) continue;\n const parsedEntry: ActionNotAllowedAvailableAction = { action, mode };\n if (typeof e['terms_ref'] === 'string') parsedEntry.terms_ref = e['terms_ref'];\n if (e['sla'] !== undefined) parsedEntry.sla = e['sla'];\n currently.push(parsedEntry);\n }\n }\n\n return {\n attempted_action: attempted,\n reason,\n currently_available_actions: currently,\n };\n}\n\nfunction isActionNotAllowedReason(value: string): value is ActionNotAllowedReasonValue {\n return (\n value === 'wrong_status' ||\n value === 'not_supported_on_product' ||\n value === 'not_supported_on_buy' ||\n value === 'mode_mismatch'\n );\n}\n\nfunction isActionMode(value: string): value is ActionNotAllowedAvailableAction['mode'] {\n return (\n value === 'self_serve' ||\n value === 'conditional_self_serve' ||\n value === 'requires_proposal' ||\n value === 'requires_approval'\n );\n}\n\n/**\n * Type guard to check if an error is an ADCP error\n */\nexport function isADCPError(error: unknown): error is ADCPError {\n return error instanceof ADCPError;\n}\n\n/**\n * Type guard to check if an error is a specific ADCP error type\n */\nexport function isErrorOfType<T extends ADCPError>(error: unknown, ErrorClass: new (...args: any[]) => T): error is T {\n return error instanceof ErrorClass;\n}\n\n/**\n * Utility to extract error information for logging/debugging\n */\nexport function extractErrorInfo(error: unknown): {\n message: string;\n code?: string;\n details?: unknown;\n stack?: string;\n} {\n if (isADCPError(error)) {\n return {\n message: error.message,\n code: error.code,\n details: error.details,\n stack: error.stack,\n };\n }\n\n if (error instanceof Error) {\n return {\n message: error.message,\n stack: error.stack,\n };\n }\n\n return {\n message: String(error),\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,3 @@
1
- import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
2
- import { dirname as __adcpDirname } from 'node:path';
3
- import { createRequire as __adcpCreateRequire } from 'node:module';
4
- const __filename = __adcpFileURLToPath(import.meta.url);
5
- const __dirname = __adcpDirname(__filename);
6
- const require = __adcpCreateRequire(import.meta.url);
7
1
  const JSON_TYPE = "application/json";
8
2
  const SSE_TYPE = "text/event-stream";
9
3
  function acceptsType(accept, type) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/express-mcp/index.ts"],"sourcesContent":["/**\n * Express middleware that normalizes the `Accept` header so requests reach\n * `StreamableHTTPServerTransport` without tripping its 406 check.\n *\n * The MCP SDK's POST handler requires both `application/json` and\n * `text/event-stream` in `Accept` even when constructed with\n * `enableJsonResponse: true` (pure request/response mode — no SSE in play).\n * Buyer agents and validators that send `Accept: application/json` hit a\n * 406 Not Acceptable.\n *\n * This middleware rewrites `Accept: application/json` (JSON alone) to\n * `application/json, text/event-stream` on the incoming request, so the\n * transport's strict check passes. Headers that already advertise both,\n * or don't advertise JSON, are left alone.\n *\n * The rewrite touches BOTH `req.headers.accept` AND the matching entries in\n * `req.rawHeaders`. `StreamableHTTPServerTransport.handleRequest` runs the\n * incoming `IncomingMessage` through `@hono/node-server`'s\n * `newHeadersFromIncoming`, which rebuilds the Fetch `Headers` from\n * `rawHeaders` and ignores `req.headers`. Patching only the parsed map\n * leaves the transport reading the original unmodified value and the 406\n * still fires — the pair has to move together.\n *\n * **Edge case, intentionally NOT auto-synthesized:** if `req.headers.accept`\n * exists but `req.rawHeaders` has no Accept entry (some reverse proxies\n * mutate `req.headers` without rebuilding `rawHeaders`), the middleware\n * still patches `req.headers.accept` but leaves `rawHeaders` as-is. The\n * transport then sees no Accept at all on the `rawHeaders` rebuild and\n * falls through to its missing-Accept path. Adding a phantom `['Accept',\n * '…']` pair would diverge `req.rawHeaders` from the wire-level headers\n * and can confuse other middleware (RFC 9421 verifiers, request-signing\n * canonicalizers) that use `rawHeaders` as authoritative. If you hit\n * this divergence in practice, fix the upstream proxy — don't monkey-\n * patch here.\n *\n * Mount BEFORE the MCP transport handler:\n *\n * ```ts\n * import express from 'express';\n * import { mcpAcceptHeaderMiddleware } from '@adcp/sdk/express-mcp';\n *\n * const app = express();\n * app.use('/mcp', mcpAcceptHeaderMiddleware());\n * // then mount the MCP transport (StreamableHTTPServerTransport.handleRequest)\n * ```\n *\n * This is a local escape hatch pending upstream SDK fix\n * (https://github.com/modelcontextprotocol/typescript-sdk/issues/1944).\n * Remove once the SDK loosens the Accept check for `enableJsonResponse: true`.\n */\n\nimport type { IncomingMessage, ServerResponse } from 'http';\n\n/** Minimal next callback shape — avoids a dependency on `@types/express`. */\ntype NextFn = (err?: unknown) => void;\n\n/** Minimal Express-compatible handler signature. */\nexport type McpAcceptHeaderHandler = (req: IncomingMessage, res: ServerResponse, next: NextFn) => void;\n\nconst JSON_TYPE = 'application/json';\nconst SSE_TYPE = 'text/event-stream';\n\n/**\n * Does the raw `Accept` value advertise `type`? Case-insensitive, tolerant\n * of parameters (`application/json;q=0.9`) and surrounding whitespace.\n */\nfunction acceptsType(accept: string, type: string): boolean {\n const lower = accept.toLowerCase();\n const target = type.toLowerCase();\n for (const raw of lower.split(',')) {\n const mediaType = raw.split(';')[0]?.trim();\n if (mediaType === target) return true;\n }\n return false;\n}\n\n/**\n * Create the middleware. No options today; exported as a factory for\n * symmetry with Express convention and future extensibility.\n */\nexport function mcpAcceptHeaderMiddleware(): McpAcceptHeaderHandler {\n return function mcpAcceptHeader(req, _res, next) {\n const accept = req.headers.accept;\n\n // No Accept header at all — leave it to the SDK to handle however it does.\n if (typeof accept !== 'string' || accept.length === 0) {\n next();\n return;\n }\n\n const hasJson = acceptsType(accept, JSON_TYPE);\n const hasSse = acceptsType(accept, SSE_TYPE);\n\n // Only rewrite the JSON-only case. If the request already advertises\n // both, or doesn't advertise JSON at all (e.g. `*/*`, a stray\n // `text/plain`, or a malformed value), leave the header untouched and\n // let the transport decide.\n if (hasJson && !hasSse) {\n const rewritten = `${JSON_TYPE}, ${SSE_TYPE}`;\n req.headers.accept = rewritten;\n rewriteRawAcceptHeader(req, rewritten);\n }\n\n next();\n };\n}\n\n/**\n * Rewrite every `Accept` entry in `req.rawHeaders` to `rewritten`.\n *\n * `rawHeaders` is a flat `[name, value, name, value, ...]` array where\n * header names preserve the wire-level casing. The scan is case-insensitive\n * so `Accept` / `ACCEPT` / `accept` all match. Duplicates (rare, but\n * allowed by HTTP) are ALL rewritten so a later copy can't shadow the\n * patched one. If the header is absent we don't append — adding it here\n * would diverge from the pre-middleware request shape and could surprise\n * other middleware that reads `rawHeaders` directly.\n */\nfunction rewriteRawAcceptHeader(req: IncomingMessage, rewritten: string): void {\n const raw = (req as { rawHeaders?: unknown }).rawHeaders;\n if (!Array.isArray(raw)) return;\n for (let i = 0; i < raw.length - 1; i += 2) {\n const name = raw[i];\n if (typeof name === 'string' && name.toLowerCase() === 'accept') {\n raw[i + 1] = rewritten;\n }\n }\n}\n"],"mappings":";;;;;;AA2DA,MAAM,YAAY;AAClB,MAAM,WAAW;AAMjB,SAAS,YAAY,QAAgB,MAAuB;AAC1D,QAAM,QAAQ,OAAO,YAAY;AACjC,QAAM,SAAS,KAAK,YAAY;AAChC,aAAW,OAAO,MAAM,MAAM,GAAG,GAAG;AAClC,UAAM,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK;AAC1C,QAAI,cAAc,OAAQ,QAAO;AAAA,EACnC;AACA,SAAO;AACT;AAMO,SAAS,4BAAoD;AAClE,SAAO,SAAS,gBAAgB,KAAK,MAAM,MAAM;AAC/C,UAAM,SAAS,IAAI,QAAQ;AAG3B,QAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AACrD,WAAK;AACL;AAAA,IACF;AAEA,UAAM,UAAU,YAAY,QAAQ,SAAS;AAC7C,UAAM,SAAS,YAAY,QAAQ,QAAQ;AAM3C,QAAI,WAAW,CAAC,QAAQ;AACtB,YAAM,YAAY,GAAG,SAAS,KAAK,QAAQ;AAC3C,UAAI,QAAQ,SAAS;AACrB,6BAAuB,KAAK,SAAS;AAAA,IACvC;AAEA,SAAK;AAAA,EACP;AACF;AAaA,SAAS,uBAAuB,KAAsB,WAAyB;AAC7E,QAAM,MAAO,IAAiC;AAC9C,MAAI,CAAC,MAAM,QAAQ,GAAG,EAAG;AACzB,WAAS,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG;AAC1C,UAAM,OAAO,IAAI,CAAC;AAClB,QAAI,OAAO,SAAS,YAAY,KAAK,YAAY,MAAM,UAAU;AAC/D,UAAI,IAAI,CAAC,IAAI;AAAA,IACf;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/express-mcp/index.ts"],"sourcesContent":["/**\n * Express middleware that normalizes the `Accept` header so requests reach\n * `StreamableHTTPServerTransport` without tripping its 406 check.\n *\n * The MCP SDK's POST handler requires both `application/json` and\n * `text/event-stream` in `Accept` even when constructed with\n * `enableJsonResponse: true` (pure request/response mode — no SSE in play).\n * Buyer agents and validators that send `Accept: application/json` hit a\n * 406 Not Acceptable.\n *\n * This middleware rewrites `Accept: application/json` (JSON alone) to\n * `application/json, text/event-stream` on the incoming request, so the\n * transport's strict check passes. Headers that already advertise both,\n * or don't advertise JSON, are left alone.\n *\n * The rewrite touches BOTH `req.headers.accept` AND the matching entries in\n * `req.rawHeaders`. `StreamableHTTPServerTransport.handleRequest` runs the\n * incoming `IncomingMessage` through `@hono/node-server`'s\n * `newHeadersFromIncoming`, which rebuilds the Fetch `Headers` from\n * `rawHeaders` and ignores `req.headers`. Patching only the parsed map\n * leaves the transport reading the original unmodified value and the 406\n * still fires — the pair has to move together.\n *\n * **Edge case, intentionally NOT auto-synthesized:** if `req.headers.accept`\n * exists but `req.rawHeaders` has no Accept entry (some reverse proxies\n * mutate `req.headers` without rebuilding `rawHeaders`), the middleware\n * still patches `req.headers.accept` but leaves `rawHeaders` as-is. The\n * transport then sees no Accept at all on the `rawHeaders` rebuild and\n * falls through to its missing-Accept path. Adding a phantom `['Accept',\n * '…']` pair would diverge `req.rawHeaders` from the wire-level headers\n * and can confuse other middleware (RFC 9421 verifiers, request-signing\n * canonicalizers) that use `rawHeaders` as authoritative. If you hit\n * this divergence in practice, fix the upstream proxy — don't monkey-\n * patch here.\n *\n * Mount BEFORE the MCP transport handler:\n *\n * ```ts\n * import express from 'express';\n * import { mcpAcceptHeaderMiddleware } from '@adcp/sdk/express-mcp';\n *\n * const app = express();\n * app.use('/mcp', mcpAcceptHeaderMiddleware());\n * // then mount the MCP transport (StreamableHTTPServerTransport.handleRequest)\n * ```\n *\n * This is a local escape hatch pending upstream SDK fix\n * (https://github.com/modelcontextprotocol/typescript-sdk/issues/1944).\n * Remove once the SDK loosens the Accept check for `enableJsonResponse: true`.\n */\n\nimport type { IncomingMessage, ServerResponse } from 'http';\n\n/** Minimal next callback shape — avoids a dependency on `@types/express`. */\ntype NextFn = (err?: unknown) => void;\n\n/** Minimal Express-compatible handler signature. */\nexport type McpAcceptHeaderHandler = (req: IncomingMessage, res: ServerResponse, next: NextFn) => void;\n\nconst JSON_TYPE = 'application/json';\nconst SSE_TYPE = 'text/event-stream';\n\n/**\n * Does the raw `Accept` value advertise `type`? Case-insensitive, tolerant\n * of parameters (`application/json;q=0.9`) and surrounding whitespace.\n */\nfunction acceptsType(accept: string, type: string): boolean {\n const lower = accept.toLowerCase();\n const target = type.toLowerCase();\n for (const raw of lower.split(',')) {\n const mediaType = raw.split(';')[0]?.trim();\n if (mediaType === target) return true;\n }\n return false;\n}\n\n/**\n * Create the middleware. No options today; exported as a factory for\n * symmetry with Express convention and future extensibility.\n */\nexport function mcpAcceptHeaderMiddleware(): McpAcceptHeaderHandler {\n return function mcpAcceptHeader(req, _res, next) {\n const accept = req.headers.accept;\n\n // No Accept header at all — leave it to the SDK to handle however it does.\n if (typeof accept !== 'string' || accept.length === 0) {\n next();\n return;\n }\n\n const hasJson = acceptsType(accept, JSON_TYPE);\n const hasSse = acceptsType(accept, SSE_TYPE);\n\n // Only rewrite the JSON-only case. If the request already advertises\n // both, or doesn't advertise JSON at all (e.g. `*/*`, a stray\n // `text/plain`, or a malformed value), leave the header untouched and\n // let the transport decide.\n if (hasJson && !hasSse) {\n const rewritten = `${JSON_TYPE}, ${SSE_TYPE}`;\n req.headers.accept = rewritten;\n rewriteRawAcceptHeader(req, rewritten);\n }\n\n next();\n };\n}\n\n/**\n * Rewrite every `Accept` entry in `req.rawHeaders` to `rewritten`.\n *\n * `rawHeaders` is a flat `[name, value, name, value, ...]` array where\n * header names preserve the wire-level casing. The scan is case-insensitive\n * so `Accept` / `ACCEPT` / `accept` all match. Duplicates (rare, but\n * allowed by HTTP) are ALL rewritten so a later copy can't shadow the\n * patched one. If the header is absent we don't append — adding it here\n * would diverge from the pre-middleware request shape and could surprise\n * other middleware that reads `rawHeaders` directly.\n */\nfunction rewriteRawAcceptHeader(req: IncomingMessage, rewritten: string): void {\n const raw = (req as { rawHeaders?: unknown }).rawHeaders;\n if (!Array.isArray(raw)) return;\n for (let i = 0; i < raw.length - 1; i += 2) {\n const name = raw[i];\n if (typeof name === 'string' && name.toLowerCase() === 'accept') {\n raw[i + 1] = rewritten;\n }\n }\n}\n"],"mappings":"AA2DA,MAAM,YAAY;AAClB,MAAM,WAAW;AAMjB,SAAS,YAAY,QAAgB,MAAuB;AAC1D,QAAM,QAAQ,OAAO,YAAY;AACjC,QAAM,SAAS,KAAK,YAAY;AAChC,aAAW,OAAO,MAAM,MAAM,GAAG,GAAG;AAClC,UAAM,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK;AAC1C,QAAI,cAAc,OAAQ,QAAO;AAAA,EACnC;AACA,SAAO;AACT;AAMO,SAAS,4BAAoD;AAClE,SAAO,SAAS,gBAAgB,KAAK,MAAM,MAAM;AAC/C,UAAM,SAAS,IAAI,QAAQ;AAG3B,QAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AACrD,WAAK;AACL;AAAA,IACF;AAEA,UAAM,UAAU,YAAY,QAAQ,SAAS;AAC7C,UAAM,SAAS,YAAY,QAAQ,QAAQ;AAM3C,QAAI,WAAW,CAAC,QAAQ;AACtB,YAAM,YAAY,GAAG,SAAS,KAAK,QAAQ;AAC3C,UAAI,QAAQ,SAAS;AACrB,6BAAuB,KAAK,SAAS;AAAA,IACvC;AAEA,SAAK;AAAA,EACP;AACF;AAaA,SAAS,uBAAuB,KAAsB,WAAyB;AAC7E,QAAM,MAAO,IAAiC;AAC9C,MAAI,CAAC,MAAM,QAAQ,GAAG,EAAG;AACzB,WAAS,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG;AAC1C,UAAM,OAAO,IAAI,CAAC;AAClB,QAAI,OAAO,SAAS,YAAY,KAAK,YAAY,MAAM,UAAU;AAC/D,UAAI,IAAI,CAAC,IAAI;AAAA,IACf;AAAA,EACF;AACF;","names":[]}
@@ -1,9 +1,3 @@
1
- import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
2
- import { dirname as __adcpDirname } from 'node:path';
3
- import { createRequire as __adcpCreateRequire } from 'node:module';
4
- const __filename = __adcpFileURLToPath(import.meta.url);
5
- const __dirname = __adcpDirname(__filename);
6
- const require = __adcpCreateRequire(import.meta.url);
7
1
  const REGULATED_HUMAN_REVIEW_CATEGORIES = Object.freeze([
8
2
  "fair_housing",
9
3
  "fair_lending",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/governance/index.ts"],"sourcesContent":["/**\n * Governance plan helpers — GDPR Art 22 / EU AI Act Annex III invariants.\n *\n * These helpers complement the Zod-generated request schemas by exposing\n * constraints that `datamodel-code-generator`-style codegen commonly drops\n * from `if/then` and `oneOf`:\n * - budget reallocation autonomy is exactly one of `reallocation_threshold`\n * or `reallocation_unlimited`\n * - regulated-vertical `policy_categories` / Annex III `policy_ids` require\n * `human_review_required: true`\n *\n * The helpers never mutate their inputs. The validator is intentionally\n * advisory — the authoritative check happens in the governance agent, which\n * resolves category synonyms and custom policies server-side.\n */\n\n/**\n * `policy_categories` values that MUST set `human_review_required: true`\n * under GDPR Art 22 / EU AI Act Annex III. Matches the schema's `if/then`\n * constraint on `sync-plans-request.json`. Governance agents resolve\n * synonyms and custom policies server-side; this list is the client-side\n * minimum for pre-submit validation.\n */\nexport const REGULATED_HUMAN_REVIEW_CATEGORIES = Object.freeze([\n 'fair_housing',\n 'fair_lending',\n 'fair_employment',\n 'pharmaceutical_advertising',\n] as const);\n\n/**\n * `policy_ids` values that MUST set `human_review_required: true`.\n * Client-enforced minimum; server-side resolution remains authoritative.\n */\nexport const ANNEX_III_POLICY_IDS = Object.freeze(['eu_ai_act_annex_iii'] as const);\n\n/**\n * Budget reallocation autonomy. Exactly one field must be set; the runtime\n * validator `validateGovernancePlan` is the source of truth. The structural\n * type does not enforce mutual exclusion because `PlanBudget` carries an\n * index signature for forward-compatibility with schema additions.\n */\nexport type ReallocationAutonomy = { reallocation_unlimited: true } | { reallocation_threshold: number };\n\nexport interface PlanBudget {\n total: number;\n currency: string;\n reallocation_threshold?: number;\n reallocation_unlimited?: boolean;\n [k: string]: unknown;\n}\n\nexport interface DataSubjectContestation {\n url?: string;\n email?: string;\n languages?: string[];\n [k: string]: unknown;\n}\n\nexport interface HumanOverride {\n reason: string;\n approver: string;\n approved_at: string;\n}\n\nexport interface GovernancePlan {\n plan_id: string;\n brand: { domain: string; [k: string]: unknown };\n objectives: string;\n budget: PlanBudget;\n flight: { start: string; end: string; [k: string]: unknown };\n policy_categories?: string[];\n policy_ids?: string[];\n human_review_required?: boolean;\n human_override?: HumanOverride;\n data_subject_contestation?: DataSubjectContestation;\n [k: string]: unknown;\n}\n\nexport interface BuildHumanReviewPlanInput {\n plan_id: string;\n brand: { domain: string; [k: string]: unknown };\n objectives: string;\n budget: Omit<PlanBudget, 'reallocation_threshold' | 'reallocation_unlimited'> & ReallocationAutonomy;\n flight: { start: string; end: string; [k: string]: unknown };\n policy_categories?: string[];\n policy_ids?: string[];\n data_subject_contestation?: DataSubjectContestation;\n [k: string]: unknown;\n}\n\n/**\n * Stamp `human_review_required: true` on a plan. The caller remains\n * responsible for declaring the reason for human review through\n * `policy_categories` (e.g. `'fair_lending'`) or `policy_ids` (e.g.\n * `'eu_ai_act_annex_iii'`). This helper does not infer or set either.\n *\n * Call `validateGovernancePlan` on the returned plan before `sync_plans`\n * to verify the reallocation autonomy and regulated-vertical invariants.\n */\nexport function buildHumanReviewPlan(input: BuildHumanReviewPlanInput): GovernancePlan {\n return {\n ...input,\n human_review_required: true,\n } as GovernancePlan;\n}\n\nexport interface BuildHumanOverrideInput {\n reason: string;\n approver: string;\n approvedAt?: string | Date;\n}\n\nconst EMAIL_PATTERN = /^[^\\s@.]+(?:\\.[^\\s@.]+)*@[^\\s@.]+(?:\\.[^\\s@.]+)*\\.[^\\s@.]{2,}$/;\nconst CONTROL_CHAR_PATTERN = /[\\x00-\\x1F\\x7F]/;\nconst MIN_REASON_LENGTH = 20;\n\nfunction assertParseableIsoTimestamp(value: string, field: string): void {\n const parsed = Date.parse(value);\n if (Number.isNaN(parsed)) {\n throw new Error(`${field} must be a parseable ISO 8601 timestamp (got \"${value}\")`);\n }\n}\n\n/**\n * Build a `human_override` artifact for downgrading `human_review_required`\n * on a plan re-sync. Validates that the reason is substantive (≥20\n * characters after trimming edge whitespace), the approver is an email,\n * and no control characters appear in either field (audit-log safety).\n *\n * `approvedAt` defaults to the current ISO timestamp. Callers recording\n * a retroactive approval should pass the human's decision time explicitly.\n *\n * Throws `Error` with a descriptive message on invalid input.\n */\nexport function buildHumanOverride(input: BuildHumanOverrideInput): HumanOverride {\n const reason = input.reason.trim();\n if (reason.length < MIN_REASON_LENGTH) {\n throw new Error(`human_override.reason must be at least ${MIN_REASON_LENGTH} characters (got ${reason.length})`);\n }\n if (CONTROL_CHAR_PATTERN.test(reason)) {\n throw new Error('human_override.reason must not contain control characters');\n }\n\n const approver = input.approver.trim();\n if (CONTROL_CHAR_PATTERN.test(approver)) {\n throw new Error('human_override.approver must not contain control characters');\n }\n if (!EMAIL_PATTERN.test(approver)) {\n throw new Error(`human_override.approver must be an email address (got \"${approver}\")`);\n }\n\n let approvedAt: string;\n if (input.approvedAt instanceof Date) {\n if (Number.isNaN(input.approvedAt.getTime())) {\n throw new Error('human_override.approvedAt is an invalid Date');\n }\n approvedAt = input.approvedAt.toISOString();\n } else if (typeof input.approvedAt === 'string') {\n assertParseableIsoTimestamp(input.approvedAt, 'human_override.approvedAt');\n approvedAt = input.approvedAt;\n } else {\n approvedAt = new Date().toISOString();\n }\n\n return { reason, approver, approved_at: approvedAt };\n}\n\nexport interface GovernanceValidationIssue {\n code:\n | 'budget.reallocation_both_set'\n | 'budget.reallocation_missing'\n | 'budget.reallocation_threshold_negative'\n | 'plan.human_review_required_missing';\n path: string;\n message: string;\n}\n\n/**\n * Client-side check for plan-level invariants that generated types often\n * drop from `if/then` / `oneOf`. Complements the Zod request schema, which\n * covers structural validation (required fields, value types).\n *\n * Runs two checks:\n *\n * - When `budget` is present: exactly one of `reallocation_threshold` /\n * `reallocation_unlimited` must be set, and `reallocation_threshold`\n * must be ≥ 0. Missing `budget` is **not** flagged — leave structural\n * validation to the Zod schema.\n * - When `policy_categories` includes a value in\n * `REGULATED_HUMAN_REVIEW_CATEGORIES`, or `policy_ids` includes a value\n * in `ANNEX_III_POLICY_IDS`, `human_review_required: true` is required.\n * Governance agents resolve synonyms and custom policies server-side;\n * this check is a best-effort pre-submit guard for the canonical names.\n *\n * Returns `[]` when no client-detectable invariants are violated. Callers\n * should still treat the governance agent as authoritative.\n */\nexport function validateGovernancePlan(plan: Partial<GovernancePlan>): GovernanceValidationIssue[] {\n const issues: GovernanceValidationIssue[] = [];\n\n if (plan.budget) {\n const hasThreshold = typeof plan.budget.reallocation_threshold === 'number';\n const hasUnlimited = plan.budget.reallocation_unlimited === true;\n\n if (hasThreshold && hasUnlimited) {\n issues.push({\n code: 'budget.reallocation_both_set',\n path: 'budget',\n message: 'budget.reallocation_threshold and budget.reallocation_unlimited are mutually exclusive',\n });\n } else if (!hasThreshold && !hasUnlimited) {\n issues.push({\n code: 'budget.reallocation_missing',\n path: 'budget',\n message: 'budget must set exactly one of reallocation_threshold or reallocation_unlimited',\n });\n }\n\n if (hasThreshold && (plan.budget.reallocation_threshold as number) < 0) {\n issues.push({\n code: 'budget.reallocation_threshold_negative',\n path: 'budget.reallocation_threshold',\n message: 'budget.reallocation_threshold must be ≥ 0',\n });\n }\n }\n\n const regulatedCategories = (plan.policy_categories ?? []).filter(c =>\n (REGULATED_HUMAN_REVIEW_CATEGORIES as readonly string[]).includes(c)\n );\n const annexIIIIds = (plan.policy_ids ?? []).filter(id => (ANNEX_III_POLICY_IDS as readonly string[]).includes(id));\n\n if ((regulatedCategories.length > 0 || annexIIIIds.length > 0) && plan.human_review_required !== true) {\n const reasons: string[] = [];\n if (regulatedCategories.length > 0) {\n reasons.push(`policy_categories includes [${regulatedCategories.join(', ')}]`);\n }\n if (annexIIIIds.length > 0) {\n reasons.push(`policy_ids includes [${annexIIIIds.join(', ')}]`);\n }\n issues.push({\n code: 'plan.human_review_required_missing',\n path: 'human_review_required',\n message: `human_review_required must be true when ${reasons.join(' or ')}`,\n });\n }\n\n return issues;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/governance/index.ts"],"sourcesContent":["/**\n * Governance plan helpers — GDPR Art 22 / EU AI Act Annex III invariants.\n *\n * These helpers complement the Zod-generated request schemas by exposing\n * constraints that `datamodel-code-generator`-style codegen commonly drops\n * from `if/then` and `oneOf`:\n * - budget reallocation autonomy is exactly one of `reallocation_threshold`\n * or `reallocation_unlimited`\n * - regulated-vertical `policy_categories` / Annex III `policy_ids` require\n * `human_review_required: true`\n *\n * The helpers never mutate their inputs. The validator is intentionally\n * advisory — the authoritative check happens in the governance agent, which\n * resolves category synonyms and custom policies server-side.\n */\n\n/**\n * `policy_categories` values that MUST set `human_review_required: true`\n * under GDPR Art 22 / EU AI Act Annex III. Matches the schema's `if/then`\n * constraint on `sync-plans-request.json`. Governance agents resolve\n * synonyms and custom policies server-side; this list is the client-side\n * minimum for pre-submit validation.\n */\nexport const REGULATED_HUMAN_REVIEW_CATEGORIES = Object.freeze([\n 'fair_housing',\n 'fair_lending',\n 'fair_employment',\n 'pharmaceutical_advertising',\n] as const);\n\n/**\n * `policy_ids` values that MUST set `human_review_required: true`.\n * Client-enforced minimum; server-side resolution remains authoritative.\n */\nexport const ANNEX_III_POLICY_IDS = Object.freeze(['eu_ai_act_annex_iii'] as const);\n\n/**\n * Budget reallocation autonomy. Exactly one field must be set; the runtime\n * validator `validateGovernancePlan` is the source of truth. The structural\n * type does not enforce mutual exclusion because `PlanBudget` carries an\n * index signature for forward-compatibility with schema additions.\n */\nexport type ReallocationAutonomy = { reallocation_unlimited: true } | { reallocation_threshold: number };\n\nexport interface PlanBudget {\n total: number;\n currency: string;\n reallocation_threshold?: number;\n reallocation_unlimited?: boolean;\n [k: string]: unknown;\n}\n\nexport interface DataSubjectContestation {\n url?: string;\n email?: string;\n languages?: string[];\n [k: string]: unknown;\n}\n\nexport interface HumanOverride {\n reason: string;\n approver: string;\n approved_at: string;\n}\n\nexport interface GovernancePlan {\n plan_id: string;\n brand: { domain: string; [k: string]: unknown };\n objectives: string;\n budget: PlanBudget;\n flight: { start: string; end: string; [k: string]: unknown };\n policy_categories?: string[];\n policy_ids?: string[];\n human_review_required?: boolean;\n human_override?: HumanOverride;\n data_subject_contestation?: DataSubjectContestation;\n [k: string]: unknown;\n}\n\nexport interface BuildHumanReviewPlanInput {\n plan_id: string;\n brand: { domain: string; [k: string]: unknown };\n objectives: string;\n budget: Omit<PlanBudget, 'reallocation_threshold' | 'reallocation_unlimited'> & ReallocationAutonomy;\n flight: { start: string; end: string; [k: string]: unknown };\n policy_categories?: string[];\n policy_ids?: string[];\n data_subject_contestation?: DataSubjectContestation;\n [k: string]: unknown;\n}\n\n/**\n * Stamp `human_review_required: true` on a plan. The caller remains\n * responsible for declaring the reason for human review through\n * `policy_categories` (e.g. `'fair_lending'`) or `policy_ids` (e.g.\n * `'eu_ai_act_annex_iii'`). This helper does not infer or set either.\n *\n * Call `validateGovernancePlan` on the returned plan before `sync_plans`\n * to verify the reallocation autonomy and regulated-vertical invariants.\n */\nexport function buildHumanReviewPlan(input: BuildHumanReviewPlanInput): GovernancePlan {\n return {\n ...input,\n human_review_required: true,\n } as GovernancePlan;\n}\n\nexport interface BuildHumanOverrideInput {\n reason: string;\n approver: string;\n approvedAt?: string | Date;\n}\n\nconst EMAIL_PATTERN = /^[^\\s@.]+(?:\\.[^\\s@.]+)*@[^\\s@.]+(?:\\.[^\\s@.]+)*\\.[^\\s@.]{2,}$/;\nconst CONTROL_CHAR_PATTERN = /[\\x00-\\x1F\\x7F]/;\nconst MIN_REASON_LENGTH = 20;\n\nfunction assertParseableIsoTimestamp(value: string, field: string): void {\n const parsed = Date.parse(value);\n if (Number.isNaN(parsed)) {\n throw new Error(`${field} must be a parseable ISO 8601 timestamp (got \"${value}\")`);\n }\n}\n\n/**\n * Build a `human_override` artifact for downgrading `human_review_required`\n * on a plan re-sync. Validates that the reason is substantive (≥20\n * characters after trimming edge whitespace), the approver is an email,\n * and no control characters appear in either field (audit-log safety).\n *\n * `approvedAt` defaults to the current ISO timestamp. Callers recording\n * a retroactive approval should pass the human's decision time explicitly.\n *\n * Throws `Error` with a descriptive message on invalid input.\n */\nexport function buildHumanOverride(input: BuildHumanOverrideInput): HumanOverride {\n const reason = input.reason.trim();\n if (reason.length < MIN_REASON_LENGTH) {\n throw new Error(`human_override.reason must be at least ${MIN_REASON_LENGTH} characters (got ${reason.length})`);\n }\n if (CONTROL_CHAR_PATTERN.test(reason)) {\n throw new Error('human_override.reason must not contain control characters');\n }\n\n const approver = input.approver.trim();\n if (CONTROL_CHAR_PATTERN.test(approver)) {\n throw new Error('human_override.approver must not contain control characters');\n }\n if (!EMAIL_PATTERN.test(approver)) {\n throw new Error(`human_override.approver must be an email address (got \"${approver}\")`);\n }\n\n let approvedAt: string;\n if (input.approvedAt instanceof Date) {\n if (Number.isNaN(input.approvedAt.getTime())) {\n throw new Error('human_override.approvedAt is an invalid Date');\n }\n approvedAt = input.approvedAt.toISOString();\n } else if (typeof input.approvedAt === 'string') {\n assertParseableIsoTimestamp(input.approvedAt, 'human_override.approvedAt');\n approvedAt = input.approvedAt;\n } else {\n approvedAt = new Date().toISOString();\n }\n\n return { reason, approver, approved_at: approvedAt };\n}\n\nexport interface GovernanceValidationIssue {\n code:\n | 'budget.reallocation_both_set'\n | 'budget.reallocation_missing'\n | 'budget.reallocation_threshold_negative'\n | 'plan.human_review_required_missing';\n path: string;\n message: string;\n}\n\n/**\n * Client-side check for plan-level invariants that generated types often\n * drop from `if/then` / `oneOf`. Complements the Zod request schema, which\n * covers structural validation (required fields, value types).\n *\n * Runs two checks:\n *\n * - When `budget` is present: exactly one of `reallocation_threshold` /\n * `reallocation_unlimited` must be set, and `reallocation_threshold`\n * must be ≥ 0. Missing `budget` is **not** flagged — leave structural\n * validation to the Zod schema.\n * - When `policy_categories` includes a value in\n * `REGULATED_HUMAN_REVIEW_CATEGORIES`, or `policy_ids` includes a value\n * in `ANNEX_III_POLICY_IDS`, `human_review_required: true` is required.\n * Governance agents resolve synonyms and custom policies server-side;\n * this check is a best-effort pre-submit guard for the canonical names.\n *\n * Returns `[]` when no client-detectable invariants are violated. Callers\n * should still treat the governance agent as authoritative.\n */\nexport function validateGovernancePlan(plan: Partial<GovernancePlan>): GovernanceValidationIssue[] {\n const issues: GovernanceValidationIssue[] = [];\n\n if (plan.budget) {\n const hasThreshold = typeof plan.budget.reallocation_threshold === 'number';\n const hasUnlimited = plan.budget.reallocation_unlimited === true;\n\n if (hasThreshold && hasUnlimited) {\n issues.push({\n code: 'budget.reallocation_both_set',\n path: 'budget',\n message: 'budget.reallocation_threshold and budget.reallocation_unlimited are mutually exclusive',\n });\n } else if (!hasThreshold && !hasUnlimited) {\n issues.push({\n code: 'budget.reallocation_missing',\n path: 'budget',\n message: 'budget must set exactly one of reallocation_threshold or reallocation_unlimited',\n });\n }\n\n if (hasThreshold && (plan.budget.reallocation_threshold as number) < 0) {\n issues.push({\n code: 'budget.reallocation_threshold_negative',\n path: 'budget.reallocation_threshold',\n message: 'budget.reallocation_threshold must be ≥ 0',\n });\n }\n }\n\n const regulatedCategories = (plan.policy_categories ?? []).filter(c =>\n (REGULATED_HUMAN_REVIEW_CATEGORIES as readonly string[]).includes(c)\n );\n const annexIIIIds = (plan.policy_ids ?? []).filter(id => (ANNEX_III_POLICY_IDS as readonly string[]).includes(id));\n\n if ((regulatedCategories.length > 0 || annexIIIIds.length > 0) && plan.human_review_required !== true) {\n const reasons: string[] = [];\n if (regulatedCategories.length > 0) {\n reasons.push(`policy_categories includes [${regulatedCategories.join(', ')}]`);\n }\n if (annexIIIIds.length > 0) {\n reasons.push(`policy_ids includes [${annexIIIIds.join(', ')}]`);\n }\n issues.push({\n code: 'plan.human_review_required_missing',\n path: 'human_review_required',\n message: `human_review_required must be true when ${reasons.join(' or ')}`,\n });\n }\n\n return issues;\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,3 @@
1
- import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
2
- import { dirname as __adcpDirname } from 'node:path';
3
- import { createRequire as __adcpCreateRequire } from 'node:module';
4
- const __filename = __adcpFileURLToPath(import.meta.url);
5
- const __dirname = __adcpDirname(__filename);
6
- const require = __adcpCreateRequire(import.meta.url);
7
1
  const autoApproveHandler = (context) => {
8
2
  return true;
9
3
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/handlers/types.ts"],"sourcesContent":["// Input handler types and utilities for ADCP conversation flow\n\nimport type { InputHandler, InputHandlerResponse, ConversationContext } from '../core/ConversationTypes';\n\n/**\n * Pre-built input handler for automatic approval\n * Always returns true for any input request\n */\nexport const autoApproveHandler: InputHandler = (context: ConversationContext) => {\n return true;\n};\n\n/**\n * Pre-built input handler that defers everything to humans\n * Useful for production scenarios where human oversight is required\n */\nexport const deferAllHandler: InputHandler = async (context: ConversationContext) => {\n return context.deferToHuman();\n};\n\n/**\n * Field-specific handler configuration\n */\nexport interface FieldHandlerConfig {\n [fieldName: string]: any | ((context: ConversationContext) => any);\n}\n\n/**\n * Create a field-specific handler that provides different responses based on the field being requested\n *\n * @param fieldMap - Map of field names to responses or response functions\n * @param defaultResponse - Default response for unmapped fields (defaults to defer)\n *\n * @example\n * ```typescript\n * const handler = createFieldHandler({\n * budget: 50000,\n * targeting: ['US', 'CA'],\n * approval: (context) => context.attempt === 1 ? true : false\n * });\n * ```\n */\nexport function createFieldHandler(fieldMap: FieldHandlerConfig, defaultResponse?: any | InputHandler): InputHandler {\n return async (context: ConversationContext) => {\n const field = context.inputRequest.field;\n\n if (field && field in fieldMap) {\n const response = fieldMap[field];\n if (typeof response === 'function') {\n return response(context);\n }\n return response;\n }\n\n // Use default response or defer to human\n if (defaultResponse !== undefined) {\n if (typeof defaultResponse === 'function') {\n return defaultResponse(context);\n }\n return defaultResponse;\n }\n\n return context.deferToHuman();\n };\n}\n\n/**\n * Create a conditional handler that applies different logic based on context\n *\n * @param conditions - Array of condition/handler pairs\n * @param defaultHandler - Handler to use if no conditions match\n *\n * @example\n * ```typescript\n * const handler = createConditionalHandler([\n * {\n * condition: (ctx) => ctx.inputRequest.field === 'budget',\n * handler: (ctx) => ctx.attempt === 1 ? 100000 : 50000\n * },\n * {\n * condition: (ctx) => ctx.agent.name.includes('Premium'),\n * handler: autoApproveHandler\n * }\n * ], deferAllHandler);\n * ```\n */\nexport function createConditionalHandler(\n conditions: Array<{\n condition: (context: ConversationContext) => boolean;\n handler: InputHandler;\n }>,\n defaultHandler: InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n for (const { condition, handler } of conditions) {\n if (condition(context)) {\n return handler(context);\n }\n }\n return defaultHandler(context);\n };\n}\n\n/**\n * Create a retry handler that provides different responses based on attempt number\n *\n * @param responses - Array of responses for each attempt (1-indexed)\n * @param defaultResponse - Response to use for attempts beyond the array length\n *\n * @example\n * ```typescript\n * const handler = createRetryHandler([\n * 100000, // First attempt\n * 50000, // Second attempt\n * 25000 // Third attempt\n * ], deferAllHandler);\n * ```\n */\nexport function createRetryHandler(\n responses: any[],\n defaultResponse: any | InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n const attemptIndex = context.attempt - 1;\n\n if (attemptIndex < responses.length) {\n const response = responses[attemptIndex];\n if (typeof response === 'function') {\n return response(context);\n }\n return response;\n }\n\n if (typeof defaultResponse === 'function') {\n return defaultResponse(context);\n }\n return defaultResponse;\n };\n}\n\n/**\n * Create a suggestion-based handler that uses agent suggestions when available\n *\n * @param suggestionIndex - Index of suggestion to use (0 = first, -1 = last)\n * @param fallbackHandler - Handler to use if no suggestions available\n *\n * @example\n * ```typescript\n * const handler = createSuggestionHandler(0, deferAllHandler); // Use first suggestion\n * ```\n */\nexport function createSuggestionHandler(\n suggestionIndex: number = 0,\n fallbackHandler: InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n const suggestions = context.inputRequest.suggestions;\n\n if (suggestions && suggestions.length > 0) {\n if (suggestionIndex === -1) {\n return suggestions[suggestions.length - 1];\n }\n if (suggestionIndex >= 0 && suggestionIndex < suggestions.length) {\n return suggestions[suggestionIndex];\n }\n }\n\n return fallbackHandler(context);\n };\n}\n\n/**\n * Create a validation-aware handler that respects input validation rules\n *\n * @param value - Value to return\n * @param fallbackHandler - Handler to use if value doesn't pass validation\n */\nexport function createValidatedHandler(value: any, fallbackHandler: InputHandler = deferAllHandler): InputHandler {\n return async (context: ConversationContext) => {\n const validation = context.inputRequest.validation;\n\n if (!validation) {\n return value;\n }\n\n // Basic validation checks\n if (validation.enum && !validation.enum.includes(value)) {\n return fallbackHandler(context);\n }\n\n if (typeof value === 'number') {\n if (validation.min !== undefined && value < validation.min) {\n return fallbackHandler(context);\n }\n if (validation.max !== undefined && value > validation.max) {\n return fallbackHandler(context);\n }\n }\n\n if (typeof value === 'string' && validation.pattern) {\n const regex = new RegExp(validation.pattern);\n if (!regex.test(value)) {\n return fallbackHandler(context);\n }\n }\n\n return value;\n };\n}\n\n/**\n * Combine multiple handlers with fallback logic\n * Tries each handler in order until one succeeds (doesn't defer or abort)\n *\n * @param handlers - Array of handlers to try in order\n * @param defaultHandler - Final fallback handler\n */\nexport function combineHandlers(\n handlers: InputHandler[],\n defaultHandler: InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n for (const handler of handlers) {\n try {\n const result = await handler(context);\n\n // If result is a defer object, try next handler\n if (typeof result === 'object' && result?.defer === true) {\n continue;\n }\n\n // If result is an abort object, try next handler\n if (typeof result === 'object' && result?.abort === true) {\n continue;\n }\n\n return result;\n } catch (error) {\n // If handler throws, try next one\n continue;\n }\n }\n\n return defaultHandler(context);\n };\n}\n\n/**\n * Type guard to check if a response is a defer response\n */\nexport function isDeferResponse(response: any): response is { defer: true; token: string } {\n return typeof response === 'object' && response?.defer === true && typeof response?.token === 'string';\n}\n\n/**\n * Type guard to check if a response is an abort response\n */\nexport function isAbortResponse(response: any): response is { abort: true; reason?: string } {\n return typeof response === 'object' && response?.abort === true;\n}\n\n/**\n * Utility to normalize handler responses\n */\nexport async function normalizeHandlerResponse(\n response: InputHandlerResponse,\n context: ConversationContext\n): Promise<any> {\n const resolved = await response;\n\n if (isDeferResponse(resolved)) {\n throw new Error(`Task deferred with token: ${resolved.token}`);\n }\n\n if (isAbortResponse(resolved)) {\n throw new Error(`Task aborted: ${resolved.reason || 'No reason provided'}`);\n }\n\n return resolved;\n}\n"],"mappings":";;;;;;AAQO,MAAM,qBAAmC,CAAC,YAAiC;AAChF,SAAO;AACT;AAMO,MAAM,kBAAgC,OAAO,YAAiC;AACnF,SAAO,QAAQ,aAAa;AAC9B;AAwBO,SAAS,mBAAmB,UAA8B,iBAAoD;AACnH,SAAO,OAAO,YAAiC;AAC7C,UAAM,QAAQ,QAAQ,aAAa;AAEnC,QAAI,SAAS,SAAS,UAAU;AAC9B,YAAM,WAAW,SAAS,KAAK;AAC/B,UAAI,OAAO,aAAa,YAAY;AAClC,eAAO,SAAS,OAAO;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAGA,QAAI,oBAAoB,QAAW;AACjC,UAAI,OAAO,oBAAoB,YAAY;AACzC,eAAO,gBAAgB,OAAO;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,aAAa;AAAA,EAC9B;AACF;AAsBO,SAAS,yBACd,YAIA,iBAA+B,iBACjB;AACd,SAAO,OAAO,YAAiC;AAC7C,eAAW,EAAE,WAAW,QAAQ,KAAK,YAAY;AAC/C,UAAI,UAAU,OAAO,GAAG;AACtB,eAAO,QAAQ,OAAO;AAAA,MACxB;AAAA,IACF;AACA,WAAO,eAAe,OAAO;AAAA,EAC/B;AACF;AAiBO,SAAS,mBACd,WACA,kBAAsC,iBACxB;AACd,SAAO,OAAO,YAAiC;AAC7C,UAAM,eAAe,QAAQ,UAAU;AAEvC,QAAI,eAAe,UAAU,QAAQ;AACnC,YAAM,WAAW,UAAU,YAAY;AACvC,UAAI,OAAO,aAAa,YAAY;AAClC,eAAO,SAAS,OAAO;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,oBAAoB,YAAY;AACzC,aAAO,gBAAgB,OAAO;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACF;AAaO,SAAS,wBACd,kBAA0B,GAC1B,kBAAgC,iBAClB;AACd,SAAO,OAAO,YAAiC;AAC7C,UAAM,cAAc,QAAQ,aAAa;AAEzC,QAAI,eAAe,YAAY,SAAS,GAAG;AACzC,UAAI,oBAAoB,IAAI;AAC1B,eAAO,YAAY,YAAY,SAAS,CAAC;AAAA,MAC3C;AACA,UAAI,mBAAmB,KAAK,kBAAkB,YAAY,QAAQ;AAChE,eAAO,YAAY,eAAe;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,gBAAgB,OAAO;AAAA,EAChC;AACF;AAQO,SAAS,uBAAuB,OAAY,kBAAgC,iBAA+B;AAChH,SAAO,OAAO,YAAiC;AAC7C,UAAM,aAAa,QAAQ,aAAa;AAExC,QAAI,CAAC,YAAY;AACf,aAAO;AAAA,IACT;AAGA,QAAI,WAAW,QAAQ,CAAC,WAAW,KAAK,SAAS,KAAK,GAAG;AACvD,aAAO,gBAAgB,OAAO;AAAA,IAChC;AAEA,QAAI,OAAO,UAAU,UAAU;AAC7B,UAAI,WAAW,QAAQ,UAAa,QAAQ,WAAW,KAAK;AAC1D,eAAO,gBAAgB,OAAO;AAAA,MAChC;AACA,UAAI,WAAW,QAAQ,UAAa,QAAQ,WAAW,KAAK;AAC1D,eAAO,gBAAgB,OAAO;AAAA,MAChC;AAAA,IACF;AAEA,QAAI,OAAO,UAAU,YAAY,WAAW,SAAS;AACnD,YAAM,QAAQ,IAAI,OAAO,WAAW,OAAO;AAC3C,UAAI,CAAC,MAAM,KAAK,KAAK,GAAG;AACtB,eAAO,gBAAgB,OAAO;AAAA,MAChC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AASO,SAAS,gBACd,UACA,iBAA+B,iBACjB;AACd,SAAO,OAAO,YAAiC;AAC7C,eAAW,WAAW,UAAU;AAC9B,UAAI;AACF,cAAM,SAAS,MAAM,QAAQ,OAAO;AAGpC,YAAI,OAAO,WAAW,YAAY,QAAQ,UAAU,MAAM;AACxD;AAAA,QACF;AAGA,YAAI,OAAO,WAAW,YAAY,QAAQ,UAAU,MAAM;AACxD;AAAA,QACF;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AAEd;AAAA,MACF;AAAA,IACF;AAEA,WAAO,eAAe,OAAO;AAAA,EAC/B;AACF;AAKO,SAAS,gBAAgB,UAA2D;AACzF,SAAO,OAAO,aAAa,YAAY,UAAU,UAAU,QAAQ,OAAO,UAAU,UAAU;AAChG;AAKO,SAAS,gBAAgB,UAA6D;AAC3F,SAAO,OAAO,aAAa,YAAY,UAAU,UAAU;AAC7D;AAKA,eAAsB,yBACpB,UACA,SACc;AACd,QAAM,WAAW,MAAM;AAEvB,MAAI,gBAAgB,QAAQ,GAAG;AAC7B,UAAM,IAAI,MAAM,6BAA6B,SAAS,KAAK,EAAE;AAAA,EAC/D;AAEA,MAAI,gBAAgB,QAAQ,GAAG;AAC7B,UAAM,IAAI,MAAM,iBAAiB,SAAS,UAAU,oBAAoB,EAAE;AAAA,EAC5E;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/handlers/types.ts"],"sourcesContent":["// Input handler types and utilities for ADCP conversation flow\n\nimport type { InputHandler, InputHandlerResponse, ConversationContext } from '../core/ConversationTypes';\n\n/**\n * Pre-built input handler for automatic approval\n * Always returns true for any input request\n */\nexport const autoApproveHandler: InputHandler = (context: ConversationContext) => {\n return true;\n};\n\n/**\n * Pre-built input handler that defers everything to humans\n * Useful for production scenarios where human oversight is required\n */\nexport const deferAllHandler: InputHandler = async (context: ConversationContext) => {\n return context.deferToHuman();\n};\n\n/**\n * Field-specific handler configuration\n */\nexport interface FieldHandlerConfig {\n [fieldName: string]: any | ((context: ConversationContext) => any);\n}\n\n/**\n * Create a field-specific handler that provides different responses based on the field being requested\n *\n * @param fieldMap - Map of field names to responses or response functions\n * @param defaultResponse - Default response for unmapped fields (defaults to defer)\n *\n * @example\n * ```typescript\n * const handler = createFieldHandler({\n * budget: 50000,\n * targeting: ['US', 'CA'],\n * approval: (context) => context.attempt === 1 ? true : false\n * });\n * ```\n */\nexport function createFieldHandler(fieldMap: FieldHandlerConfig, defaultResponse?: any | InputHandler): InputHandler {\n return async (context: ConversationContext) => {\n const field = context.inputRequest.field;\n\n if (field && field in fieldMap) {\n const response = fieldMap[field];\n if (typeof response === 'function') {\n return response(context);\n }\n return response;\n }\n\n // Use default response or defer to human\n if (defaultResponse !== undefined) {\n if (typeof defaultResponse === 'function') {\n return defaultResponse(context);\n }\n return defaultResponse;\n }\n\n return context.deferToHuman();\n };\n}\n\n/**\n * Create a conditional handler that applies different logic based on context\n *\n * @param conditions - Array of condition/handler pairs\n * @param defaultHandler - Handler to use if no conditions match\n *\n * @example\n * ```typescript\n * const handler = createConditionalHandler([\n * {\n * condition: (ctx) => ctx.inputRequest.field === 'budget',\n * handler: (ctx) => ctx.attempt === 1 ? 100000 : 50000\n * },\n * {\n * condition: (ctx) => ctx.agent.name.includes('Premium'),\n * handler: autoApproveHandler\n * }\n * ], deferAllHandler);\n * ```\n */\nexport function createConditionalHandler(\n conditions: Array<{\n condition: (context: ConversationContext) => boolean;\n handler: InputHandler;\n }>,\n defaultHandler: InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n for (const { condition, handler } of conditions) {\n if (condition(context)) {\n return handler(context);\n }\n }\n return defaultHandler(context);\n };\n}\n\n/**\n * Create a retry handler that provides different responses based on attempt number\n *\n * @param responses - Array of responses for each attempt (1-indexed)\n * @param defaultResponse - Response to use for attempts beyond the array length\n *\n * @example\n * ```typescript\n * const handler = createRetryHandler([\n * 100000, // First attempt\n * 50000, // Second attempt\n * 25000 // Third attempt\n * ], deferAllHandler);\n * ```\n */\nexport function createRetryHandler(\n responses: any[],\n defaultResponse: any | InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n const attemptIndex = context.attempt - 1;\n\n if (attemptIndex < responses.length) {\n const response = responses[attemptIndex];\n if (typeof response === 'function') {\n return response(context);\n }\n return response;\n }\n\n if (typeof defaultResponse === 'function') {\n return defaultResponse(context);\n }\n return defaultResponse;\n };\n}\n\n/**\n * Create a suggestion-based handler that uses agent suggestions when available\n *\n * @param suggestionIndex - Index of suggestion to use (0 = first, -1 = last)\n * @param fallbackHandler - Handler to use if no suggestions available\n *\n * @example\n * ```typescript\n * const handler = createSuggestionHandler(0, deferAllHandler); // Use first suggestion\n * ```\n */\nexport function createSuggestionHandler(\n suggestionIndex: number = 0,\n fallbackHandler: InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n const suggestions = context.inputRequest.suggestions;\n\n if (suggestions && suggestions.length > 0) {\n if (suggestionIndex === -1) {\n return suggestions[suggestions.length - 1];\n }\n if (suggestionIndex >= 0 && suggestionIndex < suggestions.length) {\n return suggestions[suggestionIndex];\n }\n }\n\n return fallbackHandler(context);\n };\n}\n\n/**\n * Create a validation-aware handler that respects input validation rules\n *\n * @param value - Value to return\n * @param fallbackHandler - Handler to use if value doesn't pass validation\n */\nexport function createValidatedHandler(value: any, fallbackHandler: InputHandler = deferAllHandler): InputHandler {\n return async (context: ConversationContext) => {\n const validation = context.inputRequest.validation;\n\n if (!validation) {\n return value;\n }\n\n // Basic validation checks\n if (validation.enum && !validation.enum.includes(value)) {\n return fallbackHandler(context);\n }\n\n if (typeof value === 'number') {\n if (validation.min !== undefined && value < validation.min) {\n return fallbackHandler(context);\n }\n if (validation.max !== undefined && value > validation.max) {\n return fallbackHandler(context);\n }\n }\n\n if (typeof value === 'string' && validation.pattern) {\n const regex = new RegExp(validation.pattern);\n if (!regex.test(value)) {\n return fallbackHandler(context);\n }\n }\n\n return value;\n };\n}\n\n/**\n * Combine multiple handlers with fallback logic\n * Tries each handler in order until one succeeds (doesn't defer or abort)\n *\n * @param handlers - Array of handlers to try in order\n * @param defaultHandler - Final fallback handler\n */\nexport function combineHandlers(\n handlers: InputHandler[],\n defaultHandler: InputHandler = deferAllHandler\n): InputHandler {\n return async (context: ConversationContext) => {\n for (const handler of handlers) {\n try {\n const result = await handler(context);\n\n // If result is a defer object, try next handler\n if (typeof result === 'object' && result?.defer === true) {\n continue;\n }\n\n // If result is an abort object, try next handler\n if (typeof result === 'object' && result?.abort === true) {\n continue;\n }\n\n return result;\n } catch (error) {\n // If handler throws, try next one\n continue;\n }\n }\n\n return defaultHandler(context);\n };\n}\n\n/**\n * Type guard to check if a response is a defer response\n */\nexport function isDeferResponse(response: any): response is { defer: true; token: string } {\n return typeof response === 'object' && response?.defer === true && typeof response?.token === 'string';\n}\n\n/**\n * Type guard to check if a response is an abort response\n */\nexport function isAbortResponse(response: any): response is { abort: true; reason?: string } {\n return typeof response === 'object' && response?.abort === true;\n}\n\n/**\n * Utility to normalize handler responses\n */\nexport async function normalizeHandlerResponse(\n response: InputHandlerResponse,\n context: ConversationContext\n): Promise<any> {\n const resolved = await response;\n\n if (isDeferResponse(resolved)) {\n throw new Error(`Task deferred with token: ${resolved.token}`);\n }\n\n if (isAbortResponse(resolved)) {\n throw new Error(`Task aborted: ${resolved.reason || 'No reason provided'}`);\n }\n\n return resolved;\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,3 @@
1
- import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
2
- import { dirname as __adcpDirname } from 'node:path';
3
- import { createRequire as __adcpCreateRequire } from 'node:module';
4
- const __filename = __adcpFileURLToPath(import.meta.url);
5
- const __dirname = __adcpDirname(__filename);
6
- const require = __adcpCreateRequire(import.meta.url);
7
1
  import {
8
2
  RegistryClient,
9
3
  RegistrySync,