@adcp/sdk 13.0.4 → 13.1.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 (235) hide show
  1. package/bin/adcp-grade.js +4 -3
  2. package/bin/adcp.js +18 -0
  3. package/dist/lib/conformance/invariants/uniformError.d.ts.map +1 -1
  4. package/dist/lib/conformance/invariants/uniformError.js +21 -0
  5. package/dist/lib/conformance/invariants/uniformError.js.map +1 -1
  6. package/dist/lib/conformance/invariants/uniformError.mjs +22 -1
  7. package/dist/lib/conformance/invariants/uniformError.mjs.map +1 -1
  8. package/dist/lib/core/AgentClient.d.mts +1 -1
  9. package/dist/lib/core/AgentClient.d.ts +1 -1
  10. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  11. package/dist/lib/core/AgentClient.js +1 -1
  12. package/dist/lib/core/AgentClient.js.map +1 -1
  13. package/dist/lib/core/AgentClient.mjs +1 -1
  14. package/dist/lib/core/AgentClient.mjs.map +1 -1
  15. package/dist/lib/core/SingleAgentClient.d.mts +1 -1
  16. package/dist/lib/core/SingleAgentClient.d.ts +1 -1
  17. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  18. package/dist/lib/core/SingleAgentClient.js +88 -48
  19. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  20. package/dist/lib/core/SingleAgentClient.mjs +88 -48
  21. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  22. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  23. package/dist/lib/core/TaskExecutor.js +8 -4
  24. package/dist/lib/core/TaskExecutor.js.map +1 -1
  25. package/dist/lib/core/TaskExecutor.mjs +8 -4
  26. package/dist/lib/core/TaskExecutor.mjs.map +1 -1
  27. package/dist/lib/index.d.mts +1 -1
  28. package/dist/lib/index.d.ts +1 -1
  29. package/dist/lib/index.d.ts.map +1 -1
  30. package/dist/lib/index.js.map +1 -1
  31. package/dist/lib/index.mjs.map +1 -1
  32. package/dist/lib/net/agent-transport-fetch.d.mts +15 -0
  33. package/dist/lib/net/agent-transport-fetch.d.ts +15 -0
  34. package/dist/lib/net/agent-transport-fetch.d.ts.map +1 -1
  35. package/dist/lib/net/agent-transport-fetch.js +37 -2
  36. package/dist/lib/net/agent-transport-fetch.js.map +1 -1
  37. package/dist/lib/net/agent-transport-fetch.mjs +37 -2
  38. package/dist/lib/net/agent-transport-fetch.mjs.map +1 -1
  39. package/dist/lib/net/credential-headers.d.mts +1 -0
  40. package/dist/lib/net/credential-headers.d.ts +2 -0
  41. package/dist/lib/net/credential-headers.d.ts.map +1 -0
  42. package/dist/lib/net/credential-headers.js +34 -0
  43. package/dist/lib/net/credential-headers.js.map +1 -0
  44. package/dist/lib/net/credential-headers.mjs +10 -0
  45. package/dist/lib/net/credential-headers.mjs.map +1 -0
  46. package/dist/lib/protocols/a2a-native-v1.d.mts +18 -0
  47. package/dist/lib/protocols/a2a-native-v1.d.ts +19 -0
  48. package/dist/lib/protocols/a2a-native-v1.d.ts.map +1 -0
  49. package/dist/lib/protocols/a2a-native-v1.js +183 -0
  50. package/dist/lib/protocols/a2a-native-v1.js.map +1 -0
  51. package/dist/lib/protocols/a2a-native-v1.mjs +167 -0
  52. package/dist/lib/protocols/a2a-native-v1.mjs.map +1 -0
  53. package/dist/lib/protocols/a2a-push-notification.d.mts +13 -0
  54. package/dist/lib/protocols/a2a-push-notification.d.ts +14 -0
  55. package/dist/lib/protocols/a2a-push-notification.d.ts.map +1 -0
  56. package/dist/lib/protocols/a2a-push-notification.js +42 -0
  57. package/dist/lib/protocols/a2a-push-notification.js.map +1 -0
  58. package/dist/lib/protocols/a2a-push-notification.mjs +23 -0
  59. package/dist/lib/protocols/a2a-push-notification.mjs.map +1 -0
  60. package/dist/lib/protocols/a2a.d.mts +15 -5
  61. package/dist/lib/protocols/a2a.d.ts +15 -5
  62. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  63. package/dist/lib/protocols/a2a.js +102 -13
  64. package/dist/lib/protocols/a2a.js.map +1 -1
  65. package/dist/lib/protocols/a2a.mjs +90 -12
  66. package/dist/lib/protocols/a2a.mjs.map +1 -1
  67. package/dist/lib/protocols/index.d.mts +3 -0
  68. package/dist/lib/protocols/index.d.ts +3 -0
  69. package/dist/lib/protocols/index.d.ts.map +1 -1
  70. package/dist/lib/protocols/index.js +18 -6
  71. package/dist/lib/protocols/index.js.map +1 -1
  72. package/dist/lib/protocols/index.mjs +18 -6
  73. package/dist/lib/protocols/index.mjs.map +1 -1
  74. package/dist/lib/protocols/mcp-modern.d.ts.map +1 -1
  75. package/dist/lib/protocols/mcp-modern.js +3 -1
  76. package/dist/lib/protocols/mcp-modern.js.map +1 -1
  77. package/dist/lib/protocols/mcp-modern.mjs +3 -1
  78. package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
  79. package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -1
  80. package/dist/lib/protocols/mcp-tasks.js +2 -1
  81. package/dist/lib/protocols/mcp-tasks.js.map +1 -1
  82. package/dist/lib/protocols/mcp-tasks.mjs +2 -1
  83. package/dist/lib/protocols/mcp-tasks.mjs.map +1 -1
  84. package/dist/lib/protocols/mcp.d.mts +8 -5
  85. package/dist/lib/protocols/mcp.d.ts +8 -5
  86. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  87. package/dist/lib/protocols/mcp.js +12 -4
  88. package/dist/lib/protocols/mcp.js.map +1 -1
  89. package/dist/lib/protocols/mcp.mjs +12 -4
  90. package/dist/lib/protocols/mcp.mjs.map +1 -1
  91. package/dist/lib/protocols/rawResponseCapture.d.mts +9 -1
  92. package/dist/lib/protocols/rawResponseCapture.d.ts +9 -1
  93. package/dist/lib/protocols/rawResponseCapture.d.ts.map +1 -1
  94. package/dist/lib/protocols/rawResponseCapture.js +153 -10
  95. package/dist/lib/protocols/rawResponseCapture.js.map +1 -1
  96. package/dist/lib/protocols/rawResponseCapture.mjs +153 -10
  97. package/dist/lib/protocols/rawResponseCapture.mjs.map +1 -1
  98. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  99. package/dist/lib/signing/agent-fetch.d.mts +3 -1
  100. package/dist/lib/signing/agent-fetch.d.ts +3 -1
  101. package/dist/lib/signing/agent-fetch.d.ts.map +1 -1
  102. package/dist/lib/signing/agent-fetch.js +4 -2
  103. package/dist/lib/signing/agent-fetch.js.map +1 -1
  104. package/dist/lib/signing/agent-fetch.mjs +4 -2
  105. package/dist/lib/signing/agent-fetch.mjs.map +1 -1
  106. package/dist/lib/signing/protocol-methods.d.mts +24 -0
  107. package/dist/lib/signing/protocol-methods.d.ts +25 -0
  108. package/dist/lib/signing/protocol-methods.d.ts.map +1 -0
  109. package/dist/lib/signing/protocol-methods.js +51 -0
  110. package/dist/lib/signing/protocol-methods.js.map +1 -0
  111. package/dist/lib/signing/protocol-methods.mjs +25 -0
  112. package/dist/lib/signing/protocol-methods.mjs.map +1 -0
  113. package/dist/lib/signing/types.d.mts +2 -0
  114. package/dist/lib/signing/types.d.ts +2 -0
  115. package/dist/lib/signing/types.d.ts.map +1 -1
  116. package/dist/lib/signing/types.js.map +1 -1
  117. package/dist/lib/signing/types.mjs.map +1 -1
  118. package/dist/lib/signing/verifier.d.ts.map +1 -1
  119. package/dist/lib/signing/verifier.js +6 -2
  120. package/dist/lib/signing/verifier.js.map +1 -1
  121. package/dist/lib/signing/verifier.mjs +6 -2
  122. package/dist/lib/signing/verifier.mjs.map +1 -1
  123. package/dist/lib/testing/client.d.ts.map +1 -1
  124. package/dist/lib/testing/client.js +4 -1
  125. package/dist/lib/testing/client.js.map +1 -1
  126. package/dist/lib/testing/client.mjs +4 -1
  127. package/dist/lib/testing/client.mjs.map +1 -1
  128. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  129. package/dist/lib/testing/compliance/comply.js +3 -0
  130. package/dist/lib/testing/compliance/comply.js.map +1 -1
  131. package/dist/lib/testing/compliance/comply.mjs +3 -0
  132. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  133. package/dist/lib/testing/storyboard/agent-routing.d.mts +3 -1
  134. package/dist/lib/testing/storyboard/agent-routing.d.ts +3 -1
  135. package/dist/lib/testing/storyboard/agent-routing.d.ts.map +1 -1
  136. package/dist/lib/testing/storyboard/agent-routing.js +5 -2
  137. package/dist/lib/testing/storyboard/agent-routing.js.map +1 -1
  138. package/dist/lib/testing/storyboard/agent-routing.mjs +4 -2
  139. package/dist/lib/testing/storyboard/agent-routing.mjs.map +1 -1
  140. package/dist/lib/testing/storyboard/compliance.d.mts +1 -1
  141. package/dist/lib/testing/storyboard/compliance.d.ts +1 -1
  142. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  143. package/dist/lib/testing/storyboard/compliance.js +4 -1
  144. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  145. package/dist/lib/testing/storyboard/compliance.mjs +4 -1
  146. package/dist/lib/testing/storyboard/compliance.mjs.map +1 -1
  147. package/dist/lib/testing/storyboard/native-a2a-compliance.d.mts +7 -0
  148. package/dist/lib/testing/storyboard/native-a2a-compliance.d.ts +8 -0
  149. package/dist/lib/testing/storyboard/native-a2a-compliance.d.ts.map +1 -0
  150. package/dist/lib/testing/storyboard/native-a2a-compliance.js +45 -0
  151. package/dist/lib/testing/storyboard/native-a2a-compliance.js.map +1 -0
  152. package/dist/lib/testing/storyboard/native-a2a-compliance.mjs +21 -0
  153. package/dist/lib/testing/storyboard/native-a2a-compliance.mjs.map +1 -0
  154. package/dist/lib/testing/storyboard/probes.d.mts +2 -0
  155. package/dist/lib/testing/storyboard/probes.d.ts +2 -0
  156. package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
  157. package/dist/lib/testing/storyboard/probes.js +3 -2
  158. package/dist/lib/testing/storyboard/probes.js.map +1 -1
  159. package/dist/lib/testing/storyboard/probes.mjs +3 -2
  160. package/dist/lib/testing/storyboard/probes.mjs.map +1 -1
  161. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.d.mts +31 -0
  162. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.d.ts +32 -0
  163. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.d.ts.map +1 -0
  164. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.js +279 -0
  165. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.js.map +1 -0
  166. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.mjs +244 -0
  167. package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.mjs.map +1 -0
  168. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +4 -1
  169. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +4 -1
  170. package/dist/lib/testing/storyboard/request-signing/builder.d.ts.map +1 -1
  171. package/dist/lib/testing/storyboard/request-signing/builder.js +19 -0
  172. package/dist/lib/testing/storyboard/request-signing/builder.js.map +1 -1
  173. package/dist/lib/testing/storyboard/request-signing/builder.mjs +19 -0
  174. package/dist/lib/testing/storyboard/request-signing/builder.mjs.map +1 -1
  175. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +5 -6
  176. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +5 -6
  177. package/dist/lib/testing/storyboard/request-signing/grader.d.ts.map +1 -1
  178. package/dist/lib/testing/storyboard/request-signing/grader.js +82 -13
  179. package/dist/lib/testing/storyboard/request-signing/grader.js.map +1 -1
  180. package/dist/lib/testing/storyboard/request-signing/grader.mjs +86 -13
  181. package/dist/lib/testing/storyboard/request-signing/grader.mjs.map +1 -1
  182. package/dist/lib/testing/storyboard/request-signing/index.d.mts +1 -0
  183. package/dist/lib/testing/storyboard/request-signing/index.d.ts +1 -0
  184. package/dist/lib/testing/storyboard/request-signing/index.d.ts.map +1 -1
  185. package/dist/lib/testing/storyboard/request-signing/index.js +7 -0
  186. package/dist/lib/testing/storyboard/request-signing/index.js.map +1 -1
  187. package/dist/lib/testing/storyboard/request-signing/index.mjs +8 -0
  188. package/dist/lib/testing/storyboard/request-signing/index.mjs.map +1 -1
  189. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +2 -2
  190. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +2 -2
  191. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts.map +1 -1
  192. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +6 -5
  193. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js.map +1 -1
  194. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +6 -5
  195. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs.map +1 -1
  196. package/dist/lib/testing/storyboard/request-signing/types.d.mts +1 -0
  197. package/dist/lib/testing/storyboard/request-signing/types.d.ts +1 -0
  198. package/dist/lib/testing/storyboard/request-signing/types.d.ts.map +1 -1
  199. package/dist/lib/testing/storyboard/request-signing/types.js.map +1 -1
  200. package/dist/lib/testing/storyboard/request-signing/types.mjs.map +1 -1
  201. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -1
  202. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +1 -0
  203. package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -1
  204. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +1 -0
  205. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
  206. package/dist/lib/testing/storyboard/runner.d.mts +28 -1
  207. package/dist/lib/testing/storyboard/runner.d.ts +28 -1
  208. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  209. package/dist/lib/testing/storyboard/runner.js +251 -55
  210. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  211. package/dist/lib/testing/storyboard/runner.mjs +255 -60
  212. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  213. package/dist/lib/testing/storyboard/types.d.mts +4 -2
  214. package/dist/lib/testing/storyboard/types.d.ts +4 -2
  215. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  216. package/dist/lib/testing/storyboard/types.js +1 -0
  217. package/dist/lib/testing/storyboard/types.js.map +1 -1
  218. package/dist/lib/testing/storyboard/types.mjs +1 -0
  219. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  220. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  221. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  222. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  223. package/dist/lib/testing/storyboard/validations.js +97 -22
  224. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  225. package/dist/lib/testing/storyboard/validations.mjs +98 -22
  226. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  227. package/dist/lib/version.d.mts +3 -3
  228. package/dist/lib/version.d.ts +3 -3
  229. package/dist/lib/version.js +3 -3
  230. package/dist/lib/version.js.map +1 -1
  231. package/dist/lib/version.mjs +3 -3
  232. package/dist/lib/version.mjs.map +1 -1
  233. package/docs/guides/BUILD-AN-AGENT.md +1 -1
  234. package/docs/llms.txt +5 -3
  235. package/package.json +2 -1
package/bin/adcp-grade.js CHANGED
@@ -42,7 +42,8 @@ Options:
42
42
  --transport <mode> \`raw\` (default) posts to per-operation AdCP
43
43
  endpoints; \`mcp\` wraps each vector body in a
44
44
  JSON-RPC tools/call envelope and posts to the
45
- agent's MCP mount (see #612).
45
+ agent's MCP mount; \`a2a\` signs the request
46
+ emitted by the official A2A client.
46
47
  --timeout <ms> Per-probe timeout (default 10000)
47
48
  --json Emit the full GradeReport as JSON
48
49
  -h, --help Show this help
@@ -193,8 +194,8 @@ async function runRequestSigningGrader(args) {
193
194
  break;
194
195
  case '--transport': {
195
196
  const mode = args[++i];
196
- if (mode !== 'raw' && mode !== 'mcp') {
197
- console.error(`ERROR: --transport must be \"raw\" or \"mcp\", got \"${mode}\"\n`);
197
+ if (mode !== 'raw' && mode !== 'mcp' && mode !== 'a2a') {
198
+ console.error(`ERROR: --transport must be \"raw\", \"mcp\", or \"a2a\", got \"${mode}\"\n`);
198
199
  process.exit(2);
199
200
  }
200
201
  options.transport = mode;
package/bin/adcp.js CHANGED
@@ -1047,6 +1047,10 @@ function parseAgentOptions(args) {
1047
1047
  const debug = args.includes('--debug') || process.env.ADCP_DEBUG === 'true';
1048
1048
  const dryRun = args.includes('--dry-run');
1049
1049
  const allowHttp = args.includes('--allow-http');
1050
+ // Stable 13.x keeps its public/server adapter on official A2A SDK 0.3.
1051
+ // Compliance defaults to native 1.0; this explicit flag lets the runner
1052
+ // grade maintained 0.3 agents without changing the public peer.
1053
+ const a2aLegacyCompat = args.includes('--a2a-legacy-compat');
1050
1054
  // Migration escape hatch for compatibility harnesses that are testing
1051
1055
  // transport/version behavior against a known schema-invalid legacy seller.
1052
1056
  // Normal local compliance runs remain strict by default.
@@ -1189,6 +1193,7 @@ function parseAgentOptions(args) {
1189
1193
  debug,
1190
1194
  dryRun,
1191
1195
  allowHttp,
1196
+ a2aLegacyCompat,
1192
1197
  strictResponseSchemaValidation,
1193
1198
  noSandbox,
1194
1199
  assertsSeededState,
@@ -1991,6 +1996,9 @@ RUN OPTIONS (full assessment):
1991
1996
  --hosted-stable-line-alias VERSION
1992
1997
  Hosted badge mode: allow a stable line (e.g. 3.1)
1993
1998
  to resolve against a prerelease compliance cache.
1999
+ --a2a-legacy-compat Use the maintained official A2A 0.3 client path instead
2000
+ of native A2A 1.0. Required when grading the 13.x A2A
2001
+ server adapter or another agent advertising 0.3 only.
1994
2002
  --file PATH Run an ad-hoc storyboard YAML (spec evolution)
1995
2003
  --test-kit PATH Load test-kit YAML for either run or step, overriding any
1996
2004
  cache-declared kit. If an ancestor index.json declares
@@ -2866,6 +2874,7 @@ async function handleStoryboardRun(args) {
2866
2874
  ...(opts.assertsSeededState && { assertsSeededState: true }),
2867
2875
  ...(mergedRunHeaders && { headers: mergedRunHeaders }),
2868
2876
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
2877
+ ...(opts.a2aLegacyCompat && { transport: { legacyCompat: { enabled: true } } }),
2869
2878
  };
2870
2879
 
2871
2880
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -3703,6 +3712,7 @@ async function handleLocalAgentStoryboardRun(modulePath, args, opts) {
3703
3712
  !opts.strictResponseSchemaValidation ||
3704
3713
  opts.noSandbox ||
3705
3714
  opts.assertsSeededState ||
3715
+ opts.a2aLegacyCompat ||
3706
3716
  opts.loadedTestKit !== undefined
3707
3717
  ? {
3708
3718
  runStoryboardOptions: {
@@ -3712,6 +3722,7 @@ async function handleLocalAgentStoryboardRun(modulePath, args, opts) {
3712
3722
  ...(opts.noSandbox && { sandbox: false, disable_sandbox: true }),
3713
3723
  ...(opts.assertsSeededState && { assertsSeededState: true }),
3714
3724
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
3725
+ ...(opts.a2aLegacyCompat && { transport: { legacyCompat: { enabled: true } } }),
3715
3726
  },
3716
3727
  }
3717
3728
  : {}),
@@ -4146,6 +4157,7 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
4146
4157
  ...(opts.noSandbox && { sandbox: false, disable_sandbox: true }),
4147
4158
  ...(opts.assertsSeededState && { assertsSeededState: true }),
4148
4159
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
4160
+ ...(opts.a2aLegacyCompat && { transport: { legacyCompat: { enabled: true } } }),
4149
4161
  };
4150
4162
 
4151
4163
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -4427,6 +4439,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
4427
4439
  ...(opts.noSandbox && { sandbox: false, disable_sandbox: true }),
4428
4440
  ...(opts.assertsSeededState && { assertsSeededState: true }),
4429
4441
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
4442
+ ...(opts.a2aLegacyCompat && { transport: { legacyCompat: { enabled: true } } }),
4430
4443
  };
4431
4444
 
4432
4445
  const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
@@ -4638,6 +4651,7 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
4638
4651
  ...(opts.schemaRoot && { schemaRoot: opts.schemaRoot }),
4639
4652
  ...(!opts.strictResponseSchemaValidation && { strictResponseSchemaValidation: false }),
4640
4653
  ...(opts.hostedStableLineAlias && { hostedStableLineAlias: opts.hostedStableLineAlias }),
4654
+ ...(opts.a2aLegacyCompat && { transport: { legacyCompat: { enabled: true } } }),
4641
4655
  };
4642
4656
 
4643
4657
  if (!opts.jsonOutput) {
@@ -4652,6 +4666,9 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
4652
4666
  : 'bearer';
4653
4667
  console.log(`\nRunning storyboard assessment against ${agentUrl}`);
4654
4668
  console.log(` Protocol: ${protocol.toUpperCase()}`);
4669
+ if (protocol === 'a2a' && opts.a2aLegacyCompat) {
4670
+ console.log(' A2A mode: official 0.3 compatibility (--a2a-legacy-compat)');
4671
+ }
4655
4672
  if (storyboards) console.log(` Storyboards: ${storyboards.join(', ')}`);
4656
4673
  console.log(` Timeout: ${timeoutMs / 1000}s`);
4657
4674
  console.log(` Auth: ${authLabel}`);
@@ -4865,6 +4882,7 @@ async function handleStoryboardStepCmd(args) {
4865
4882
  ...(schemaRoot && { schemaRoot }),
4866
4883
  ...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
4867
4884
  ...(!strictResponseSchemaValidation && { strictResponseSchemaValidation: false }),
4885
+ ...(opts.a2aLegacyCompat && { transport: { legacyCompat: { enabled: true } } }),
4868
4886
  ...buildResolvedAuthOption({
4869
4887
  resolvedAuth,
4870
4888
  resolvedAuthScheme,
@@ -1 +1 @@
1
- {"version":3,"file":"uniformError.d.ts","sourceRoot":"","sources":["../../../../src/lib/conformance/invariants/uniformError.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGzE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,kCAAkC;IAClC,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC;IAClC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE;QACP,qBAAqB,EAAE,YAAY,CAAC;QACpC,mBAAmB,EAAE,YAAY,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;CACxB;AA6ED,6EAA6E;AAC7E,wBAAgB,4BAA4B,IAAI,mBAAmB,EAAE,CAEpE;AAED,MAAM,WAAW,YAAY;IAC3B,8FAA8F;IAC9F,MAAM,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,4FAA4F;IAC5F,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,kBAAkB,CAAC,CA0D7B"}
1
+ {"version":3,"file":"uniformError.d.ts","sourceRoot":"","sources":["../../../../src/lib/conformance/invariants/uniformError.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGzE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,kCAAkC;IAClC,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC;IAClC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE;QACP,qBAAqB,EAAE,YAAY,CAAC;QACpC,mBAAmB,EAAE,YAAY,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;CACxB;AA6ED,6EAA6E;AAC7E,wBAAgB,4BAA4B,IAAI,mBAAmB,EAAE,CAEpE;AAED,MAAM,WAAW,YAAY;IAC3B,8FAA8F;IAC9F,MAAM,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,4FAA4F;IAC5F,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAkE7B"}
@@ -98,6 +98,14 @@ async function runUniformErrorInvariant(tool, options) {
98
98
  const probeB = await capturedProbe(options.prober, tool, config.buildRequest(idB), captureOpts);
99
99
  if (!probeA.capture || !probeB.capture) {
100
100
  const reason = probeA.error ?? probeB.error ?? "no capture observed";
101
+ if (probeA.captureIncomplete || probeB.captureIncomplete) {
102
+ return {
103
+ tool,
104
+ mode,
105
+ verdict: "fail",
106
+ differences: [`raw response capture incomplete: ${reason}`]
107
+ };
108
+ }
101
109
  return {
102
110
  tool,
103
111
  mode,
@@ -126,8 +134,21 @@ async function capturedProbe(agent, tool, request, options) {
126
134
  if (!toolCallCapture) {
127
135
  return { error: "captured only non-POST traffic" };
128
136
  }
137
+ if (toolCallCapture.bodyTruncated) {
138
+ return {
139
+ error: toolCallCapture.bodyCaptureError ?? "Raw response capture was incomplete; uniform-error validation cannot compare partial bytes",
140
+ captureIncomplete: true
141
+ };
142
+ }
129
143
  return { capture: toolCallCapture };
130
144
  } catch (err) {
145
+ const toolCallCapture = lastPostCapture((0, import_rawResponseCapture.getCapturesFromError)(err) ?? []);
146
+ if (toolCallCapture?.bodyTruncated) {
147
+ return {
148
+ error: toolCallCapture.bodyCaptureError ?? "Raw response capture was incomplete; uniform-error validation cannot compare partial bytes",
149
+ captureIncomplete: true
150
+ };
151
+ }
131
152
  return { error: err instanceof Error ? err.message : String(err) };
132
153
  }
133
154
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/conformance/invariants/uniformError.ts"],"sourcesContent":["// Uniform error response invariant (adcp spec § error-handling).\n//\n// The spec MUSTs that a seller returns byte-equivalent responses for\n// \"the id exists but the caller lacks access\" vs \"the id does not\n// exist\" — through every observable channel (error code/message/field/\n// details, HTTP status, A2A task state / MCP isError, response headers,\n// latency distribution). Distinguishing the two leaks cross-tenant\n// existence information.\n//\n// This invariant exercises the MUST with a paired probe: two requests\n// to the same tool, compared byte-for-byte.\n//\n// Pairing modes:\n// - baseline: two fresh UUIDs, single auth token. Catches id-echo\n// leaks, header divergence, and grossly different latency. Does\n// not catch cross-tenant leaks — both ids are impossible, so the\n// \"inaccessible vs unknown\" branch never fires.\n// - cross-tenant: one seeded id owned by tenant A plus one fresh\n// UUID, both probed as tenant B. Catches the full MUST.\n//\n// Tool coverage is keyed by TOOL_ID_CONFIG below. A tool must expose\n// a single scalar \"lookup id\" field and have a matching seeder before\n// it can be probed.\n\nimport { AgentClient } from '../../core/AgentClient';\nimport { randomUUID } from 'node:crypto';\nimport { withRawResponseCapture, type RawHttpCapture } from '../../protocols/rawResponseCapture';\nimport type { ConformanceFixtures, ConformanceToolName } from '../types';\nimport { compareProbes, type ProbeComparisonResult } from './uniformErrorComparator';\n\nexport type UniformErrorVerdict = 'pass' | 'fail' | 'skipped';\n\nexport interface UniformErrorReport {\n tool: ConformanceToolName;\n /** Which pairing actually ran. */\n mode: 'baseline' | 'cross-tenant';\n verdict: UniformErrorVerdict;\n /** Populated on verdict === 'skipped'. */\n skipReason?: string;\n /** Populated on verdict !== 'skipped'. */\n differences?: string[];\n /** Probe summaries for diagnostics. Sanitized via `summarizeCapture`. */\n probes?: {\n inaccessibleOrRandomA: ProbeSummary;\n impossibleOrRandomB: ProbeSummary;\n };\n}\n\nexport interface ProbeSummary {\n /** Label describing what kind of id was probed. */\n label: 'cross-tenant' | 'impossible' | 'random-a' | 'random-b';\n status: number | null;\n headers: Record<string, string>;\n body: string;\n latencyMs: number;\n /** Whether the capture body was truncated. */\n bodyTruncated: boolean;\n}\n\n/**\n * Per-tool configuration for the invariant. Each tool that can be\n * probed declares:\n * - the single id field to mutate\n * - the fixture key that holds a seeded id (for cross-tenant mode)\n * - a minimal request builder given the id\n *\n * Extending coverage to more tools is additive — populate a new entry.\n */\ninterface ToolIdConfig {\n idField: string;\n /**\n * Fixture pool that holds a seeded \"accessible to tenant A\" id for\n * cross-tenant mode. When omitted, cross-tenant mode is unavailable\n * for this tool — baseline is the only mode. Useful for tools whose\n * ids don't come from a seeder (catalog-style lookups, provider-\n * owned signals, etc.).\n */\n fixtureKey?: keyof ConformanceFixtures;\n buildRequest: (id: string) => Record<string, unknown>;\n}\n\nconst TOOL_ID_CONFIG: Partial<Record<ConformanceToolName, ToolIdConfig>> = {\n get_property_list: {\n idField: 'list_id',\n fixtureKey: 'list_ids',\n buildRequest: id => ({ list_id: id }),\n },\n get_content_standards: {\n idField: 'standards_id',\n fixtureKey: 'standards_ids',\n buildRequest: id => ({ standards_id: id }),\n },\n get_media_buy_delivery: {\n idField: 'media_buy_id',\n fixtureKey: 'media_buy_ids',\n buildRequest: id => {\n // Spec-min request: one buy id + a date range wide enough to avoid\n // per-seller reporting-window rejection. Dates are arbitrary — the\n // resolution happens before access-check per the spec, so the\n // response must be byte-equivalent regardless of window.\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { media_buy_ids: [id], start_date: start, end_date: end };\n },\n },\n get_creative_delivery: {\n idField: 'creative_id',\n fixtureKey: 'creative_ids',\n buildRequest: id => {\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { creative_ids: [id], start_date: start, end_date: end };\n },\n },\n tasks_get: {\n idField: 'task_id',\n fixtureKey: 'task_ids',\n buildRequest: id => ({ task_id: id }),\n },\n get_signals: {\n idField: 'signal_ids',\n // No seeder for signals today (catalog signals are provider-\n // controlled, not agent-created). Baseline-only: two fresh UUIDs\n // wrapped in a SignalID shape, probed under the single caller\n // token. Cross-tenant mode becomes available when the signals\n // protocol grows a create/sync path and a seeder produces ids.\n buildRequest: id => ({\n signal_ids: [{ source: 'catalog', data_provider_domain: 'conformance.example', id }],\n }),\n },\n};\n\n/** Tools eligible for the uniform-error probe. Used by the runner wiring. */\nexport function toolsEligibleForUniformError(): ConformanceToolName[] {\n return Object.keys(TOOL_ID_CONFIG) as ConformanceToolName[];\n}\n\nexport interface ProbeOptions {\n /** Agent client that probes with the \"caller\" credentials (tenant B in cross-tenant mode). */\n prober: AgentClient;\n /** Fixtures accumulated so far — drawn from for cross-tenant mode. */\n fixtures: ConformanceFixtures;\n /** Whether a distinct cross-tenant token was configured. When false, mode is 'baseline'. */\n crossTenantConfigured: boolean;\n /**\n * Cap individual probe body size in the capture. Defaults to the\n * rawResponseCapture default. Not usually worth overriding.\n */\n maxBodyBytes?: number;\n}\n\nexport async function runUniformErrorInvariant(\n tool: ConformanceToolName,\n options: ProbeOptions\n): Promise<UniformErrorReport> {\n const config = TOOL_ID_CONFIG[tool];\n if (!config) {\n return {\n tool,\n mode: options.crossTenantConfigured ? 'cross-tenant' : 'baseline',\n verdict: 'skipped',\n skipReason: 'tool not in TOOL_ID_CONFIG',\n };\n }\n\n // Resolve the pair of ids under probe.\n //\n // Cross-tenant mode needs a seeded id (tenant A owns the resource;\n // tenant B is probing it — that's the \"exists but inaccessible\" leg).\n // Missing seeded id (or a tool with no fixtureKey at all, like\n // get_signals) → fall back to baseline rather than skipping; the\n // baseline still catches id-echo and header-divergence leaks.\n const seededPool = config.fixtureKey ? (options.fixtures[config.fixtureKey] ?? []) : [];\n const seededId = seededPool[0];\n const mode: UniformErrorReport['mode'] = options.crossTenantConfigured && seededId ? 'cross-tenant' : 'baseline';\n\n const idA = mode === 'cross-tenant' ? (seededId as string) : randomUUID();\n const idB = randomUUID();\n const labelA: ProbeSummary['label'] = mode === 'cross-tenant' ? 'cross-tenant' : 'random-a';\n const labelB: ProbeSummary['label'] = mode === 'cross-tenant' ? 'impossible' : 'random-b';\n\n const captureOpts = { maxBodyBytes: options.maxBodyBytes };\n\n const probeA = await capturedProbe(options.prober, tool, config.buildRequest(idA), captureOpts);\n const probeB = await capturedProbe(options.prober, tool, config.buildRequest(idB), captureOpts);\n\n if (!probeA.capture || !probeB.capture) {\n // One side didn't produce a capture — the underlying transport\n // surfaced an error before we could observe the response (e.g.,\n // the SDK threw an AuthenticationRequiredError). Report the root\n // cause so the operator knows why the invariant skipped.\n const reason = probeA.error ?? probeB.error ?? 'no capture observed';\n return {\n tool,\n mode,\n verdict: 'skipped',\n skipReason: `probe did not produce a raw capture (${reason})`,\n };\n }\n\n const comparison = compareProbes(probeA.capture, probeB.capture);\n\n return {\n tool,\n mode,\n verdict: comparison.equivalent ? 'pass' : 'fail',\n differences: comparison.differences,\n probes: {\n inaccessibleOrRandomA: summarizeCapture(probeA.capture, labelA),\n impossibleOrRandomB: summarizeCapture(probeB.capture, labelB),\n },\n };\n}\n\ninterface ProbeOutcome {\n capture?: RawHttpCapture;\n /** Error message when executeTask threw before producing a capture. */\n error?: string;\n}\n\n/**\n * Execute a probe inside a capture context and return the tool-call\n * response. Filters captures to POST — MCP's tool call and A2A's\n * `sendMessage` are both POSTs, while A2A's `/.well-known/agent.json`\n * discovery (issued on a fresh client) is a GET that we must not\n * confuse with the tool response.\n */\nasync function capturedProbe(\n agent: AgentClient,\n tool: ConformanceToolName,\n request: Record<string, unknown>,\n options: { maxBodyBytes?: number }\n): Promise<ProbeOutcome> {\n try {\n const { captures } = await withRawResponseCapture(async () => {\n await agent.executeTaskLegacy(tool, request);\n }, options);\n const toolCallCapture = lastPostCapture(captures);\n if (!toolCallCapture) {\n return { error: 'captured only non-POST traffic' };\n }\n return { capture: toolCallCapture };\n } catch (err) {\n return { error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nfunction lastPostCapture(captures: readonly RawHttpCapture[]): RawHttpCapture | undefined {\n for (let i = captures.length - 1; i >= 0; i--) {\n const cap = captures[i];\n if (cap && cap.method === 'POST') return cap;\n }\n return undefined;\n}\n\nfunction summarizeCapture(cap: RawHttpCapture, label: ProbeSummary['label']): ProbeSummary {\n return {\n label,\n status: cap.status,\n headers: cap.headers,\n body: cap.body,\n latencyMs: cap.latencyMs,\n bodyTruncated: cap.bodyTruncated,\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/conformance/invariants/uniformError.ts"],"sourcesContent":["// Uniform error response invariant (adcp spec § error-handling).\n//\n// The spec MUSTs that a seller returns byte-equivalent responses for\n// \"the id exists but the caller lacks access\" vs \"the id does not\n// exist\" — through every observable channel (error code/message/field/\n// details, HTTP status, A2A task state / MCP isError, response headers,\n// latency distribution). Distinguishing the two leaks cross-tenant\n// existence information.\n//\n// This invariant exercises the MUST with a paired probe: two requests\n// to the same tool, compared byte-for-byte.\n//\n// Pairing modes:\n// - baseline: two fresh UUIDs, single auth token. Catches id-echo\n// leaks, header divergence, and grossly different latency. Does\n// not catch cross-tenant leaks — both ids are impossible, so the\n// \"inaccessible vs unknown\" branch never fires.\n// - cross-tenant: one seeded id owned by tenant A plus one fresh\n// UUID, both probed as tenant B. Catches the full MUST.\n//\n// Tool coverage is keyed by TOOL_ID_CONFIG below. A tool must expose\n// a single scalar \"lookup id\" field and have a matching seeder before\n// it can be probed.\n\nimport { AgentClient } from '../../core/AgentClient';\nimport { randomUUID } from 'node:crypto';\nimport { getCapturesFromError, withRawResponseCapture, type RawHttpCapture } from '../../protocols/rawResponseCapture';\nimport type { ConformanceFixtures, ConformanceToolName } from '../types';\nimport { compareProbes, type ProbeComparisonResult } from './uniformErrorComparator';\n\nexport type UniformErrorVerdict = 'pass' | 'fail' | 'skipped';\n\nexport interface UniformErrorReport {\n tool: ConformanceToolName;\n /** Which pairing actually ran. */\n mode: 'baseline' | 'cross-tenant';\n verdict: UniformErrorVerdict;\n /** Populated on verdict === 'skipped'. */\n skipReason?: string;\n /** Populated on verdict !== 'skipped'. */\n differences?: string[];\n /** Probe summaries for diagnostics. Sanitized via `summarizeCapture`. */\n probes?: {\n inaccessibleOrRandomA: ProbeSummary;\n impossibleOrRandomB: ProbeSummary;\n };\n}\n\nexport interface ProbeSummary {\n /** Label describing what kind of id was probed. */\n label: 'cross-tenant' | 'impossible' | 'random-a' | 'random-b';\n status: number | null;\n headers: Record<string, string>;\n body: string;\n latencyMs: number;\n /** Whether the capture body was truncated. */\n bodyTruncated: boolean;\n}\n\n/**\n * Per-tool configuration for the invariant. Each tool that can be\n * probed declares:\n * - the single id field to mutate\n * - the fixture key that holds a seeded id (for cross-tenant mode)\n * - a minimal request builder given the id\n *\n * Extending coverage to more tools is additive — populate a new entry.\n */\ninterface ToolIdConfig {\n idField: string;\n /**\n * Fixture pool that holds a seeded \"accessible to tenant A\" id for\n * cross-tenant mode. When omitted, cross-tenant mode is unavailable\n * for this tool — baseline is the only mode. Useful for tools whose\n * ids don't come from a seeder (catalog-style lookups, provider-\n * owned signals, etc.).\n */\n fixtureKey?: keyof ConformanceFixtures;\n buildRequest: (id: string) => Record<string, unknown>;\n}\n\nconst TOOL_ID_CONFIG: Partial<Record<ConformanceToolName, ToolIdConfig>> = {\n get_property_list: {\n idField: 'list_id',\n fixtureKey: 'list_ids',\n buildRequest: id => ({ list_id: id }),\n },\n get_content_standards: {\n idField: 'standards_id',\n fixtureKey: 'standards_ids',\n buildRequest: id => ({ standards_id: id }),\n },\n get_media_buy_delivery: {\n idField: 'media_buy_id',\n fixtureKey: 'media_buy_ids',\n buildRequest: id => {\n // Spec-min request: one buy id + a date range wide enough to avoid\n // per-seller reporting-window rejection. Dates are arbitrary — the\n // resolution happens before access-check per the spec, so the\n // response must be byte-equivalent regardless of window.\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { media_buy_ids: [id], start_date: start, end_date: end };\n },\n },\n get_creative_delivery: {\n idField: 'creative_id',\n fixtureKey: 'creative_ids',\n buildRequest: id => {\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { creative_ids: [id], start_date: start, end_date: end };\n },\n },\n tasks_get: {\n idField: 'task_id',\n fixtureKey: 'task_ids',\n buildRequest: id => ({ task_id: id }),\n },\n get_signals: {\n idField: 'signal_ids',\n // No seeder for signals today (catalog signals are provider-\n // controlled, not agent-created). Baseline-only: two fresh UUIDs\n // wrapped in a SignalID shape, probed under the single caller\n // token. Cross-tenant mode becomes available when the signals\n // protocol grows a create/sync path and a seeder produces ids.\n buildRequest: id => ({\n signal_ids: [{ source: 'catalog', data_provider_domain: 'conformance.example', id }],\n }),\n },\n};\n\n/** Tools eligible for the uniform-error probe. Used by the runner wiring. */\nexport function toolsEligibleForUniformError(): ConformanceToolName[] {\n return Object.keys(TOOL_ID_CONFIG) as ConformanceToolName[];\n}\n\nexport interface ProbeOptions {\n /** Agent client that probes with the \"caller\" credentials (tenant B in cross-tenant mode). */\n prober: AgentClient;\n /** Fixtures accumulated so far — drawn from for cross-tenant mode. */\n fixtures: ConformanceFixtures;\n /** Whether a distinct cross-tenant token was configured. When false, mode is 'baseline'. */\n crossTenantConfigured: boolean;\n /**\n * Cap individual probe body size in the capture. Defaults to the\n * rawResponseCapture default. Not usually worth overriding.\n */\n maxBodyBytes?: number;\n}\n\nexport async function runUniformErrorInvariant(\n tool: ConformanceToolName,\n options: ProbeOptions\n): Promise<UniformErrorReport> {\n const config = TOOL_ID_CONFIG[tool];\n if (!config) {\n return {\n tool,\n mode: options.crossTenantConfigured ? 'cross-tenant' : 'baseline',\n verdict: 'skipped',\n skipReason: 'tool not in TOOL_ID_CONFIG',\n };\n }\n\n // Resolve the pair of ids under probe.\n //\n // Cross-tenant mode needs a seeded id (tenant A owns the resource;\n // tenant B is probing it — that's the \"exists but inaccessible\" leg).\n // Missing seeded id (or a tool with no fixtureKey at all, like\n // get_signals) → fall back to baseline rather than skipping; the\n // baseline still catches id-echo and header-divergence leaks.\n const seededPool = config.fixtureKey ? (options.fixtures[config.fixtureKey] ?? []) : [];\n const seededId = seededPool[0];\n const mode: UniformErrorReport['mode'] = options.crossTenantConfigured && seededId ? 'cross-tenant' : 'baseline';\n\n const idA = mode === 'cross-tenant' ? (seededId as string) : randomUUID();\n const idB = randomUUID();\n const labelA: ProbeSummary['label'] = mode === 'cross-tenant' ? 'cross-tenant' : 'random-a';\n const labelB: ProbeSummary['label'] = mode === 'cross-tenant' ? 'impossible' : 'random-b';\n\n const captureOpts = { maxBodyBytes: options.maxBodyBytes };\n\n const probeA = await capturedProbe(options.prober, tool, config.buildRequest(idA), captureOpts);\n const probeB = await capturedProbe(options.prober, tool, config.buildRequest(idB), captureOpts);\n\n if (!probeA.capture || !probeB.capture) {\n // One side didn't produce a capture — the underlying transport\n // surfaced an error before we could observe the response (e.g.,\n // the SDK threw an AuthenticationRequiredError). Report the root\n // cause so the operator knows why the invariant skipped.\n const reason = probeA.error ?? probeB.error ?? 'no capture observed';\n if (probeA.captureIncomplete || probeB.captureIncomplete) {\n return {\n tool,\n mode,\n verdict: 'fail',\n differences: [`raw response capture incomplete: ${reason}`],\n };\n }\n return {\n tool,\n mode,\n verdict: 'skipped',\n skipReason: `probe did not produce a raw capture (${reason})`,\n };\n }\n\n const comparison = compareProbes(probeA.capture, probeB.capture);\n\n return {\n tool,\n mode,\n verdict: comparison.equivalent ? 'pass' : 'fail',\n differences: comparison.differences,\n probes: {\n inaccessibleOrRandomA: summarizeCapture(probeA.capture, labelA),\n impossibleOrRandomB: summarizeCapture(probeB.capture, labelB),\n },\n };\n}\n\ninterface ProbeOutcome {\n capture?: RawHttpCapture;\n /** Error message when executeTask threw before producing a capture. */\n error?: string;\n /** Incomplete wire bytes are a validation failure, never a skipped invariant. */\n captureIncomplete?: boolean;\n}\n\n/**\n * Execute a probe inside a capture context and return the tool-call\n * response. Filters captures to POST — MCP's tool call and A2A's\n * `sendMessage` are both POSTs, while A2A's `/.well-known/agent.json`\n * discovery (issued on a fresh client) is a GET that we must not\n * confuse with the tool response.\n */\nasync function capturedProbe(\n agent: AgentClient,\n tool: ConformanceToolName,\n request: Record<string, unknown>,\n options: { maxBodyBytes?: number }\n): Promise<ProbeOutcome> {\n try {\n const { captures } = await withRawResponseCapture(async () => {\n await agent.executeTaskLegacy(tool, request);\n }, options);\n const toolCallCapture = lastPostCapture(captures);\n if (!toolCallCapture) {\n return { error: 'captured only non-POST traffic' };\n }\n if (toolCallCapture.bodyTruncated) {\n return {\n error:\n toolCallCapture.bodyCaptureError ??\n 'Raw response capture was incomplete; uniform-error validation cannot compare partial bytes',\n captureIncomplete: true,\n };\n }\n return { capture: toolCallCapture };\n } catch (err) {\n const toolCallCapture = lastPostCapture(getCapturesFromError(err) ?? []);\n if (toolCallCapture?.bodyTruncated) {\n return {\n error:\n toolCallCapture.bodyCaptureError ??\n 'Raw response capture was incomplete; uniform-error validation cannot compare partial bytes',\n captureIncomplete: true,\n };\n }\n return { error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nfunction lastPostCapture(captures: readonly RawHttpCapture[]): RawHttpCapture | undefined {\n for (let i = captures.length - 1; i >= 0; i--) {\n const cap = captures[i];\n if (cap && cap.method === 'POST') return cap;\n }\n return undefined;\n}\n\nfunction summarizeCapture(cap: RawHttpCapture, label: ProbeSummary['label']): ProbeSummary {\n return {\n label,\n status: cap.status,\n headers: cap.headers,\n body: cap.body,\n latencyMs: cap.latencyMs,\n bodyTruncated: cap.bodyTruncated,\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { withRawResponseCapture } from "../../protocols/rawResponseCapture.mjs";
2
+ import { getCapturesFromError, withRawResponseCapture } from "../../protocols/rawResponseCapture.mjs";
3
3
  import { compareProbes } from "./uniformErrorComparator.mjs";
4
4
  const TOOL_ID_CONFIG = {
5
5
  get_property_list: {
@@ -74,6 +74,14 @@ async function runUniformErrorInvariant(tool, options) {
74
74
  const probeB = await capturedProbe(options.prober, tool, config.buildRequest(idB), captureOpts);
75
75
  if (!probeA.capture || !probeB.capture) {
76
76
  const reason = probeA.error ?? probeB.error ?? "no capture observed";
77
+ if (probeA.captureIncomplete || probeB.captureIncomplete) {
78
+ return {
79
+ tool,
80
+ mode,
81
+ verdict: "fail",
82
+ differences: [`raw response capture incomplete: ${reason}`]
83
+ };
84
+ }
77
85
  return {
78
86
  tool,
79
87
  mode,
@@ -102,8 +110,21 @@ async function capturedProbe(agent, tool, request, options) {
102
110
  if (!toolCallCapture) {
103
111
  return { error: "captured only non-POST traffic" };
104
112
  }
113
+ if (toolCallCapture.bodyTruncated) {
114
+ return {
115
+ error: toolCallCapture.bodyCaptureError ?? "Raw response capture was incomplete; uniform-error validation cannot compare partial bytes",
116
+ captureIncomplete: true
117
+ };
118
+ }
105
119
  return { capture: toolCallCapture };
106
120
  } catch (err) {
121
+ const toolCallCapture = lastPostCapture(getCapturesFromError(err) ?? []);
122
+ if (toolCallCapture?.bodyTruncated) {
123
+ return {
124
+ error: toolCallCapture.bodyCaptureError ?? "Raw response capture was incomplete; uniform-error validation cannot compare partial bytes",
125
+ captureIncomplete: true
126
+ };
127
+ }
107
128
  return { error: err instanceof Error ? err.message : String(err) };
108
129
  }
109
130
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/conformance/invariants/uniformError.ts"],"sourcesContent":["// Uniform error response invariant (adcp spec § error-handling).\n//\n// The spec MUSTs that a seller returns byte-equivalent responses for\n// \"the id exists but the caller lacks access\" vs \"the id does not\n// exist\" — through every observable channel (error code/message/field/\n// details, HTTP status, A2A task state / MCP isError, response headers,\n// latency distribution). Distinguishing the two leaks cross-tenant\n// existence information.\n//\n// This invariant exercises the MUST with a paired probe: two requests\n// to the same tool, compared byte-for-byte.\n//\n// Pairing modes:\n// - baseline: two fresh UUIDs, single auth token. Catches id-echo\n// leaks, header divergence, and grossly different latency. Does\n// not catch cross-tenant leaks — both ids are impossible, so the\n// \"inaccessible vs unknown\" branch never fires.\n// - cross-tenant: one seeded id owned by tenant A plus one fresh\n// UUID, both probed as tenant B. Catches the full MUST.\n//\n// Tool coverage is keyed by TOOL_ID_CONFIG below. A tool must expose\n// a single scalar \"lookup id\" field and have a matching seeder before\n// it can be probed.\n\nimport { AgentClient } from '../../core/AgentClient';\nimport { randomUUID } from 'node:crypto';\nimport { withRawResponseCapture, type RawHttpCapture } from '../../protocols/rawResponseCapture';\nimport type { ConformanceFixtures, ConformanceToolName } from '../types';\nimport { compareProbes, type ProbeComparisonResult } from './uniformErrorComparator';\n\nexport type UniformErrorVerdict = 'pass' | 'fail' | 'skipped';\n\nexport interface UniformErrorReport {\n tool: ConformanceToolName;\n /** Which pairing actually ran. */\n mode: 'baseline' | 'cross-tenant';\n verdict: UniformErrorVerdict;\n /** Populated on verdict === 'skipped'. */\n skipReason?: string;\n /** Populated on verdict !== 'skipped'. */\n differences?: string[];\n /** Probe summaries for diagnostics. Sanitized via `summarizeCapture`. */\n probes?: {\n inaccessibleOrRandomA: ProbeSummary;\n impossibleOrRandomB: ProbeSummary;\n };\n}\n\nexport interface ProbeSummary {\n /** Label describing what kind of id was probed. */\n label: 'cross-tenant' | 'impossible' | 'random-a' | 'random-b';\n status: number | null;\n headers: Record<string, string>;\n body: string;\n latencyMs: number;\n /** Whether the capture body was truncated. */\n bodyTruncated: boolean;\n}\n\n/**\n * Per-tool configuration for the invariant. Each tool that can be\n * probed declares:\n * - the single id field to mutate\n * - the fixture key that holds a seeded id (for cross-tenant mode)\n * - a minimal request builder given the id\n *\n * Extending coverage to more tools is additive — populate a new entry.\n */\ninterface ToolIdConfig {\n idField: string;\n /**\n * Fixture pool that holds a seeded \"accessible to tenant A\" id for\n * cross-tenant mode. When omitted, cross-tenant mode is unavailable\n * for this tool — baseline is the only mode. Useful for tools whose\n * ids don't come from a seeder (catalog-style lookups, provider-\n * owned signals, etc.).\n */\n fixtureKey?: keyof ConformanceFixtures;\n buildRequest: (id: string) => Record<string, unknown>;\n}\n\nconst TOOL_ID_CONFIG: Partial<Record<ConformanceToolName, ToolIdConfig>> = {\n get_property_list: {\n idField: 'list_id',\n fixtureKey: 'list_ids',\n buildRequest: id => ({ list_id: id }),\n },\n get_content_standards: {\n idField: 'standards_id',\n fixtureKey: 'standards_ids',\n buildRequest: id => ({ standards_id: id }),\n },\n get_media_buy_delivery: {\n idField: 'media_buy_id',\n fixtureKey: 'media_buy_ids',\n buildRequest: id => {\n // Spec-min request: one buy id + a date range wide enough to avoid\n // per-seller reporting-window rejection. Dates are arbitrary — the\n // resolution happens before access-check per the spec, so the\n // response must be byte-equivalent regardless of window.\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { media_buy_ids: [id], start_date: start, end_date: end };\n },\n },\n get_creative_delivery: {\n idField: 'creative_id',\n fixtureKey: 'creative_ids',\n buildRequest: id => {\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { creative_ids: [id], start_date: start, end_date: end };\n },\n },\n tasks_get: {\n idField: 'task_id',\n fixtureKey: 'task_ids',\n buildRequest: id => ({ task_id: id }),\n },\n get_signals: {\n idField: 'signal_ids',\n // No seeder for signals today (catalog signals are provider-\n // controlled, not agent-created). Baseline-only: two fresh UUIDs\n // wrapped in a SignalID shape, probed under the single caller\n // token. Cross-tenant mode becomes available when the signals\n // protocol grows a create/sync path and a seeder produces ids.\n buildRequest: id => ({\n signal_ids: [{ source: 'catalog', data_provider_domain: 'conformance.example', id }],\n }),\n },\n};\n\n/** Tools eligible for the uniform-error probe. Used by the runner wiring. */\nexport function toolsEligibleForUniformError(): ConformanceToolName[] {\n return Object.keys(TOOL_ID_CONFIG) as ConformanceToolName[];\n}\n\nexport interface ProbeOptions {\n /** Agent client that probes with the \"caller\" credentials (tenant B in cross-tenant mode). */\n prober: AgentClient;\n /** Fixtures accumulated so far — drawn from for cross-tenant mode. */\n fixtures: ConformanceFixtures;\n /** Whether a distinct cross-tenant token was configured. When false, mode is 'baseline'. */\n crossTenantConfigured: boolean;\n /**\n * Cap individual probe body size in the capture. Defaults to the\n * rawResponseCapture default. Not usually worth overriding.\n */\n maxBodyBytes?: number;\n}\n\nexport async function runUniformErrorInvariant(\n tool: ConformanceToolName,\n options: ProbeOptions\n): Promise<UniformErrorReport> {\n const config = TOOL_ID_CONFIG[tool];\n if (!config) {\n return {\n tool,\n mode: options.crossTenantConfigured ? 'cross-tenant' : 'baseline',\n verdict: 'skipped',\n skipReason: 'tool not in TOOL_ID_CONFIG',\n };\n }\n\n // Resolve the pair of ids under probe.\n //\n // Cross-tenant mode needs a seeded id (tenant A owns the resource;\n // tenant B is probing it — that's the \"exists but inaccessible\" leg).\n // Missing seeded id (or a tool with no fixtureKey at all, like\n // get_signals) → fall back to baseline rather than skipping; the\n // baseline still catches id-echo and header-divergence leaks.\n const seededPool = config.fixtureKey ? (options.fixtures[config.fixtureKey] ?? []) : [];\n const seededId = seededPool[0];\n const mode: UniformErrorReport['mode'] = options.crossTenantConfigured && seededId ? 'cross-tenant' : 'baseline';\n\n const idA = mode === 'cross-tenant' ? (seededId as string) : randomUUID();\n const idB = randomUUID();\n const labelA: ProbeSummary['label'] = mode === 'cross-tenant' ? 'cross-tenant' : 'random-a';\n const labelB: ProbeSummary['label'] = mode === 'cross-tenant' ? 'impossible' : 'random-b';\n\n const captureOpts = { maxBodyBytes: options.maxBodyBytes };\n\n const probeA = await capturedProbe(options.prober, tool, config.buildRequest(idA), captureOpts);\n const probeB = await capturedProbe(options.prober, tool, config.buildRequest(idB), captureOpts);\n\n if (!probeA.capture || !probeB.capture) {\n // One side didn't produce a capture — the underlying transport\n // surfaced an error before we could observe the response (e.g.,\n // the SDK threw an AuthenticationRequiredError). Report the root\n // cause so the operator knows why the invariant skipped.\n const reason = probeA.error ?? probeB.error ?? 'no capture observed';\n return {\n tool,\n mode,\n verdict: 'skipped',\n skipReason: `probe did not produce a raw capture (${reason})`,\n };\n }\n\n const comparison = compareProbes(probeA.capture, probeB.capture);\n\n return {\n tool,\n mode,\n verdict: comparison.equivalent ? 'pass' : 'fail',\n differences: comparison.differences,\n probes: {\n inaccessibleOrRandomA: summarizeCapture(probeA.capture, labelA),\n impossibleOrRandomB: summarizeCapture(probeB.capture, labelB),\n },\n };\n}\n\ninterface ProbeOutcome {\n capture?: RawHttpCapture;\n /** Error message when executeTask threw before producing a capture. */\n error?: string;\n}\n\n/**\n * Execute a probe inside a capture context and return the tool-call\n * response. Filters captures to POST — MCP's tool call and A2A's\n * `sendMessage` are both POSTs, while A2A's `/.well-known/agent.json`\n * discovery (issued on a fresh client) is a GET that we must not\n * confuse with the tool response.\n */\nasync function capturedProbe(\n agent: AgentClient,\n tool: ConformanceToolName,\n request: Record<string, unknown>,\n options: { maxBodyBytes?: number }\n): Promise<ProbeOutcome> {\n try {\n const { captures } = await withRawResponseCapture(async () => {\n await agent.executeTaskLegacy(tool, request);\n }, options);\n const toolCallCapture = lastPostCapture(captures);\n if (!toolCallCapture) {\n return { error: 'captured only non-POST traffic' };\n }\n return { capture: toolCallCapture };\n } catch (err) {\n return { error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nfunction lastPostCapture(captures: readonly RawHttpCapture[]): RawHttpCapture | undefined {\n for (let i = captures.length - 1; i >= 0; i--) {\n const cap = captures[i];\n if (cap && cap.method === 'POST') return cap;\n }\n return undefined;\n}\n\nfunction summarizeCapture(cap: RawHttpCapture, label: ProbeSummary['label']): ProbeSummary {\n return {\n label,\n status: cap.status,\n headers: cap.headers,\n body: cap.body,\n latencyMs: cap.latencyMs,\n bodyTruncated: cap.bodyTruncated,\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/conformance/invariants/uniformError.ts"],"sourcesContent":["// Uniform error response invariant (adcp spec § error-handling).\n//\n// The spec MUSTs that a seller returns byte-equivalent responses for\n// \"the id exists but the caller lacks access\" vs \"the id does not\n// exist\" — through every observable channel (error code/message/field/\n// details, HTTP status, A2A task state / MCP isError, response headers,\n// latency distribution). Distinguishing the two leaks cross-tenant\n// existence information.\n//\n// This invariant exercises the MUST with a paired probe: two requests\n// to the same tool, compared byte-for-byte.\n//\n// Pairing modes:\n// - baseline: two fresh UUIDs, single auth token. Catches id-echo\n// leaks, header divergence, and grossly different latency. Does\n// not catch cross-tenant leaks — both ids are impossible, so the\n// \"inaccessible vs unknown\" branch never fires.\n// - cross-tenant: one seeded id owned by tenant A plus one fresh\n// UUID, both probed as tenant B. Catches the full MUST.\n//\n// Tool coverage is keyed by TOOL_ID_CONFIG below. A tool must expose\n// a single scalar \"lookup id\" field and have a matching seeder before\n// it can be probed.\n\nimport { AgentClient } from '../../core/AgentClient';\nimport { randomUUID } from 'node:crypto';\nimport { getCapturesFromError, withRawResponseCapture, type RawHttpCapture } from '../../protocols/rawResponseCapture';\nimport type { ConformanceFixtures, ConformanceToolName } from '../types';\nimport { compareProbes, type ProbeComparisonResult } from './uniformErrorComparator';\n\nexport type UniformErrorVerdict = 'pass' | 'fail' | 'skipped';\n\nexport interface UniformErrorReport {\n tool: ConformanceToolName;\n /** Which pairing actually ran. */\n mode: 'baseline' | 'cross-tenant';\n verdict: UniformErrorVerdict;\n /** Populated on verdict === 'skipped'. */\n skipReason?: string;\n /** Populated on verdict !== 'skipped'. */\n differences?: string[];\n /** Probe summaries for diagnostics. Sanitized via `summarizeCapture`. */\n probes?: {\n inaccessibleOrRandomA: ProbeSummary;\n impossibleOrRandomB: ProbeSummary;\n };\n}\n\nexport interface ProbeSummary {\n /** Label describing what kind of id was probed. */\n label: 'cross-tenant' | 'impossible' | 'random-a' | 'random-b';\n status: number | null;\n headers: Record<string, string>;\n body: string;\n latencyMs: number;\n /** Whether the capture body was truncated. */\n bodyTruncated: boolean;\n}\n\n/**\n * Per-tool configuration for the invariant. Each tool that can be\n * probed declares:\n * - the single id field to mutate\n * - the fixture key that holds a seeded id (for cross-tenant mode)\n * - a minimal request builder given the id\n *\n * Extending coverage to more tools is additive — populate a new entry.\n */\ninterface ToolIdConfig {\n idField: string;\n /**\n * Fixture pool that holds a seeded \"accessible to tenant A\" id for\n * cross-tenant mode. When omitted, cross-tenant mode is unavailable\n * for this tool — baseline is the only mode. Useful for tools whose\n * ids don't come from a seeder (catalog-style lookups, provider-\n * owned signals, etc.).\n */\n fixtureKey?: keyof ConformanceFixtures;\n buildRequest: (id: string) => Record<string, unknown>;\n}\n\nconst TOOL_ID_CONFIG: Partial<Record<ConformanceToolName, ToolIdConfig>> = {\n get_property_list: {\n idField: 'list_id',\n fixtureKey: 'list_ids',\n buildRequest: id => ({ list_id: id }),\n },\n get_content_standards: {\n idField: 'standards_id',\n fixtureKey: 'standards_ids',\n buildRequest: id => ({ standards_id: id }),\n },\n get_media_buy_delivery: {\n idField: 'media_buy_id',\n fixtureKey: 'media_buy_ids',\n buildRequest: id => {\n // Spec-min request: one buy id + a date range wide enough to avoid\n // per-seller reporting-window rejection. Dates are arbitrary — the\n // resolution happens before access-check per the spec, so the\n // response must be byte-equivalent regardless of window.\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { media_buy_ids: [id], start_date: start, end_date: end };\n },\n },\n get_creative_delivery: {\n idField: 'creative_id',\n fixtureKey: 'creative_ids',\n buildRequest: id => {\n const now = new Date();\n const start = new Date(now.getTime() - 7 * 86400_000).toISOString().slice(0, 10);\n const end = new Date(now.getTime() + 7 * 86400_000).toISOString().slice(0, 10);\n return { creative_ids: [id], start_date: start, end_date: end };\n },\n },\n tasks_get: {\n idField: 'task_id',\n fixtureKey: 'task_ids',\n buildRequest: id => ({ task_id: id }),\n },\n get_signals: {\n idField: 'signal_ids',\n // No seeder for signals today (catalog signals are provider-\n // controlled, not agent-created). Baseline-only: two fresh UUIDs\n // wrapped in a SignalID shape, probed under the single caller\n // token. Cross-tenant mode becomes available when the signals\n // protocol grows a create/sync path and a seeder produces ids.\n buildRequest: id => ({\n signal_ids: [{ source: 'catalog', data_provider_domain: 'conformance.example', id }],\n }),\n },\n};\n\n/** Tools eligible for the uniform-error probe. Used by the runner wiring. */\nexport function toolsEligibleForUniformError(): ConformanceToolName[] {\n return Object.keys(TOOL_ID_CONFIG) as ConformanceToolName[];\n}\n\nexport interface ProbeOptions {\n /** Agent client that probes with the \"caller\" credentials (tenant B in cross-tenant mode). */\n prober: AgentClient;\n /** Fixtures accumulated so far — drawn from for cross-tenant mode. */\n fixtures: ConformanceFixtures;\n /** Whether a distinct cross-tenant token was configured. When false, mode is 'baseline'. */\n crossTenantConfigured: boolean;\n /**\n * Cap individual probe body size in the capture. Defaults to the\n * rawResponseCapture default. Not usually worth overriding.\n */\n maxBodyBytes?: number;\n}\n\nexport async function runUniformErrorInvariant(\n tool: ConformanceToolName,\n options: ProbeOptions\n): Promise<UniformErrorReport> {\n const config = TOOL_ID_CONFIG[tool];\n if (!config) {\n return {\n tool,\n mode: options.crossTenantConfigured ? 'cross-tenant' : 'baseline',\n verdict: 'skipped',\n skipReason: 'tool not in TOOL_ID_CONFIG',\n };\n }\n\n // Resolve the pair of ids under probe.\n //\n // Cross-tenant mode needs a seeded id (tenant A owns the resource;\n // tenant B is probing it — that's the \"exists but inaccessible\" leg).\n // Missing seeded id (or a tool with no fixtureKey at all, like\n // get_signals) → fall back to baseline rather than skipping; the\n // baseline still catches id-echo and header-divergence leaks.\n const seededPool = config.fixtureKey ? (options.fixtures[config.fixtureKey] ?? []) : [];\n const seededId = seededPool[0];\n const mode: UniformErrorReport['mode'] = options.crossTenantConfigured && seededId ? 'cross-tenant' : 'baseline';\n\n const idA = mode === 'cross-tenant' ? (seededId as string) : randomUUID();\n const idB = randomUUID();\n const labelA: ProbeSummary['label'] = mode === 'cross-tenant' ? 'cross-tenant' : 'random-a';\n const labelB: ProbeSummary['label'] = mode === 'cross-tenant' ? 'impossible' : 'random-b';\n\n const captureOpts = { maxBodyBytes: options.maxBodyBytes };\n\n const probeA = await capturedProbe(options.prober, tool, config.buildRequest(idA), captureOpts);\n const probeB = await capturedProbe(options.prober, tool, config.buildRequest(idB), captureOpts);\n\n if (!probeA.capture || !probeB.capture) {\n // One side didn't produce a capture — the underlying transport\n // surfaced an error before we could observe the response (e.g.,\n // the SDK threw an AuthenticationRequiredError). Report the root\n // cause so the operator knows why the invariant skipped.\n const reason = probeA.error ?? probeB.error ?? 'no capture observed';\n if (probeA.captureIncomplete || probeB.captureIncomplete) {\n return {\n tool,\n mode,\n verdict: 'fail',\n differences: [`raw response capture incomplete: ${reason}`],\n };\n }\n return {\n tool,\n mode,\n verdict: 'skipped',\n skipReason: `probe did not produce a raw capture (${reason})`,\n };\n }\n\n const comparison = compareProbes(probeA.capture, probeB.capture);\n\n return {\n tool,\n mode,\n verdict: comparison.equivalent ? 'pass' : 'fail',\n differences: comparison.differences,\n probes: {\n inaccessibleOrRandomA: summarizeCapture(probeA.capture, labelA),\n impossibleOrRandomB: summarizeCapture(probeB.capture, labelB),\n },\n };\n}\n\ninterface ProbeOutcome {\n capture?: RawHttpCapture;\n /** Error message when executeTask threw before producing a capture. */\n error?: string;\n /** Incomplete wire bytes are a validation failure, never a skipped invariant. */\n captureIncomplete?: boolean;\n}\n\n/**\n * Execute a probe inside a capture context and return the tool-call\n * response. Filters captures to POST — MCP's tool call and A2A's\n * `sendMessage` are both POSTs, while A2A's `/.well-known/agent.json`\n * discovery (issued on a fresh client) is a GET that we must not\n * confuse with the tool response.\n */\nasync function capturedProbe(\n agent: AgentClient,\n tool: ConformanceToolName,\n request: Record<string, unknown>,\n options: { maxBodyBytes?: number }\n): Promise<ProbeOutcome> {\n try {\n const { captures } = await withRawResponseCapture(async () => {\n await agent.executeTaskLegacy(tool, request);\n }, options);\n const toolCallCapture = lastPostCapture(captures);\n if (!toolCallCapture) {\n return { error: 'captured only non-POST traffic' };\n }\n if (toolCallCapture.bodyTruncated) {\n return {\n error:\n toolCallCapture.bodyCaptureError ??\n 'Raw response capture was incomplete; uniform-error validation cannot compare partial bytes',\n captureIncomplete: true,\n };\n }\n return { capture: toolCallCapture };\n } catch (err) {\n const toolCallCapture = lastPostCapture(getCapturesFromError(err) ?? []);\n if (toolCallCapture?.bodyTruncated) {\n return {\n error:\n toolCallCapture.bodyCaptureError ??\n 'Raw response capture was incomplete; uniform-error validation cannot compare partial bytes',\n captureIncomplete: true,\n };\n }\n return { error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nfunction lastPostCapture(captures: readonly RawHttpCapture[]): RawHttpCapture | undefined {\n for (let i = captures.length - 1; i >= 0; i--) {\n const cap = captures[i];\n if (cap && cap.method === 'POST') return cap;\n }\n return undefined;\n}\n\nfunction summarizeCapture(cap: RawHttpCapture, label: ProbeSummary['label']): ProbeSummary {\n return {\n label,\n status: cap.status,\n headers: cap.headers,\n body: cap.body,\n latencyMs: cap.latencyMs,\n bodyTruncated: cap.bodyTruncated,\n };\n}\n"],"mappings":"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","names":[]}
@@ -600,7 +600,7 @@ export declare class AgentClient {
600
600
  /**
601
601
  * Resolve and return the canonical base URL for this agent
602
602
  *
603
- * For A2A: Fetches the agent card and uses its 'url' field
603
+ * For A2A: Fetches the agent card and uses its selected native interface or legacy `url`
604
604
  * For MCP: Performs endpoint discovery and strips /mcp suffix
605
605
  *
606
606
  * **Not supported on in-process instances** (created via `fromMCPClient`).
@@ -600,7 +600,7 @@ export declare class AgentClient {
600
600
  /**
601
601
  * Resolve and return the canonical base URL for this agent
602
602
  *
603
- * For A2A: Fetches the agent card and uses its 'url' field
603
+ * For A2A: Fetches the agent card and uses its selected native interface or legacy `url`
604
604
  * For MCP: Performs endpoint discovery and strips /mcp suffix
605
605
  *
606
606
  * **Not supported on in-process instances** (created via `fromMCPClient`).
@@ -1 +1 @@
1
- {"version":3,"file":"AgentClient.d.ts","sourceRoot":"","sources":["../../../src/lib/core/AgentClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentClient.d.ts","sourceRoot":"","sources":["../../../src/lib/core/AgentClient.ts"],"names":[],"mappings":"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"}
@@ -861,7 +861,7 @@ class AgentClient {
861
861
  /**
862
862
  * Resolve and return the canonical base URL for this agent
863
863
  *
864
- * For A2A: Fetches the agent card and uses its 'url' field
864
+ * For A2A: Fetches the agent card and uses its selected native interface or legacy `url`
865
865
  * For MCP: Performs endpoint discovery and strips /mcp suffix
866
866
  *
867
867
  * **Not supported on in-process instances** (created via `fromMCPClient`).