@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.
- package/bin/adcp-grade.js +4 -3
- package/bin/adcp.js +18 -0
- package/dist/lib/conformance/invariants/uniformError.d.ts.map +1 -1
- package/dist/lib/conformance/invariants/uniformError.js +21 -0
- package/dist/lib/conformance/invariants/uniformError.js.map +1 -1
- package/dist/lib/conformance/invariants/uniformError.mjs +22 -1
- package/dist/lib/conformance/invariants/uniformError.mjs.map +1 -1
- package/dist/lib/core/AgentClient.d.mts +1 -1
- package/dist/lib/core/AgentClient.d.ts +1 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/AgentClient.js +1 -1
- package/dist/lib/core/AgentClient.js.map +1 -1
- package/dist/lib/core/AgentClient.mjs +1 -1
- package/dist/lib/core/AgentClient.mjs.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.mts +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +88 -48
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/core/SingleAgentClient.mjs +88 -48
- package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +8 -4
- package/dist/lib/core/TaskExecutor.js.map +1 -1
- package/dist/lib/core/TaskExecutor.mjs +8 -4
- package/dist/lib/core/TaskExecutor.mjs.map +1 -1
- package/dist/lib/index.d.mts +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/net/agent-transport-fetch.d.mts +15 -0
- package/dist/lib/net/agent-transport-fetch.d.ts +15 -0
- package/dist/lib/net/agent-transport-fetch.d.ts.map +1 -1
- package/dist/lib/net/agent-transport-fetch.js +37 -2
- package/dist/lib/net/agent-transport-fetch.js.map +1 -1
- package/dist/lib/net/agent-transport-fetch.mjs +37 -2
- package/dist/lib/net/agent-transport-fetch.mjs.map +1 -1
- package/dist/lib/net/credential-headers.d.mts +1 -0
- package/dist/lib/net/credential-headers.d.ts +2 -0
- package/dist/lib/net/credential-headers.d.ts.map +1 -0
- package/dist/lib/net/credential-headers.js +34 -0
- package/dist/lib/net/credential-headers.js.map +1 -0
- package/dist/lib/net/credential-headers.mjs +10 -0
- package/dist/lib/net/credential-headers.mjs.map +1 -0
- package/dist/lib/protocols/a2a-native-v1.d.mts +18 -0
- package/dist/lib/protocols/a2a-native-v1.d.ts +19 -0
- package/dist/lib/protocols/a2a-native-v1.d.ts.map +1 -0
- package/dist/lib/protocols/a2a-native-v1.js +183 -0
- package/dist/lib/protocols/a2a-native-v1.js.map +1 -0
- package/dist/lib/protocols/a2a-native-v1.mjs +167 -0
- package/dist/lib/protocols/a2a-native-v1.mjs.map +1 -0
- package/dist/lib/protocols/a2a-push-notification.d.mts +13 -0
- package/dist/lib/protocols/a2a-push-notification.d.ts +14 -0
- package/dist/lib/protocols/a2a-push-notification.d.ts.map +1 -0
- package/dist/lib/protocols/a2a-push-notification.js +42 -0
- package/dist/lib/protocols/a2a-push-notification.js.map +1 -0
- package/dist/lib/protocols/a2a-push-notification.mjs +23 -0
- package/dist/lib/protocols/a2a-push-notification.mjs.map +1 -0
- package/dist/lib/protocols/a2a.d.mts +15 -5
- package/dist/lib/protocols/a2a.d.ts +15 -5
- package/dist/lib/protocols/a2a.d.ts.map +1 -1
- package/dist/lib/protocols/a2a.js +102 -13
- package/dist/lib/protocols/a2a.js.map +1 -1
- package/dist/lib/protocols/a2a.mjs +90 -12
- package/dist/lib/protocols/a2a.mjs.map +1 -1
- package/dist/lib/protocols/index.d.mts +3 -0
- package/dist/lib/protocols/index.d.ts +3 -0
- package/dist/lib/protocols/index.d.ts.map +1 -1
- package/dist/lib/protocols/index.js +18 -6
- package/dist/lib/protocols/index.js.map +1 -1
- package/dist/lib/protocols/index.mjs +18 -6
- package/dist/lib/protocols/index.mjs.map +1 -1
- package/dist/lib/protocols/mcp-modern.d.ts.map +1 -1
- package/dist/lib/protocols/mcp-modern.js +3 -1
- package/dist/lib/protocols/mcp-modern.js.map +1 -1
- package/dist/lib/protocols/mcp-modern.mjs +3 -1
- package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
- package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -1
- package/dist/lib/protocols/mcp-tasks.js +2 -1
- package/dist/lib/protocols/mcp-tasks.js.map +1 -1
- package/dist/lib/protocols/mcp-tasks.mjs +2 -1
- package/dist/lib/protocols/mcp-tasks.mjs.map +1 -1
- package/dist/lib/protocols/mcp.d.mts +8 -5
- package/dist/lib/protocols/mcp.d.ts +8 -5
- package/dist/lib/protocols/mcp.d.ts.map +1 -1
- package/dist/lib/protocols/mcp.js +12 -4
- package/dist/lib/protocols/mcp.js.map +1 -1
- package/dist/lib/protocols/mcp.mjs +12 -4
- package/dist/lib/protocols/mcp.mjs.map +1 -1
- package/dist/lib/protocols/rawResponseCapture.d.mts +9 -1
- package/dist/lib/protocols/rawResponseCapture.d.ts +9 -1
- package/dist/lib/protocols/rawResponseCapture.d.ts.map +1 -1
- package/dist/lib/protocols/rawResponseCapture.js +153 -10
- package/dist/lib/protocols/rawResponseCapture.js.map +1 -1
- package/dist/lib/protocols/rawResponseCapture.mjs +153 -10
- package/dist/lib/protocols/rawResponseCapture.mjs.map +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/signing/agent-fetch.d.mts +3 -1
- package/dist/lib/signing/agent-fetch.d.ts +3 -1
- package/dist/lib/signing/agent-fetch.d.ts.map +1 -1
- package/dist/lib/signing/agent-fetch.js +4 -2
- package/dist/lib/signing/agent-fetch.js.map +1 -1
- package/dist/lib/signing/agent-fetch.mjs +4 -2
- package/dist/lib/signing/agent-fetch.mjs.map +1 -1
- package/dist/lib/signing/protocol-methods.d.mts +24 -0
- package/dist/lib/signing/protocol-methods.d.ts +25 -0
- package/dist/lib/signing/protocol-methods.d.ts.map +1 -0
- package/dist/lib/signing/protocol-methods.js +51 -0
- package/dist/lib/signing/protocol-methods.js.map +1 -0
- package/dist/lib/signing/protocol-methods.mjs +25 -0
- package/dist/lib/signing/protocol-methods.mjs.map +1 -0
- package/dist/lib/signing/types.d.mts +2 -0
- package/dist/lib/signing/types.d.ts +2 -0
- package/dist/lib/signing/types.d.ts.map +1 -1
- package/dist/lib/signing/types.js.map +1 -1
- package/dist/lib/signing/types.mjs.map +1 -1
- package/dist/lib/signing/verifier.d.ts.map +1 -1
- package/dist/lib/signing/verifier.js +6 -2
- package/dist/lib/signing/verifier.js.map +1 -1
- package/dist/lib/signing/verifier.mjs +6 -2
- package/dist/lib/signing/verifier.mjs.map +1 -1
- package/dist/lib/testing/client.d.ts.map +1 -1
- package/dist/lib/testing/client.js +4 -1
- package/dist/lib/testing/client.js.map +1 -1
- package/dist/lib/testing/client.mjs +4 -1
- package/dist/lib/testing/client.mjs.map +1 -1
- package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
- package/dist/lib/testing/compliance/comply.js +3 -0
- package/dist/lib/testing/compliance/comply.js.map +1 -1
- package/dist/lib/testing/compliance/comply.mjs +3 -0
- package/dist/lib/testing/compliance/comply.mjs.map +1 -1
- package/dist/lib/testing/storyboard/agent-routing.d.mts +3 -1
- package/dist/lib/testing/storyboard/agent-routing.d.ts +3 -1
- package/dist/lib/testing/storyboard/agent-routing.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/agent-routing.js +5 -2
- package/dist/lib/testing/storyboard/agent-routing.js.map +1 -1
- package/dist/lib/testing/storyboard/agent-routing.mjs +4 -2
- package/dist/lib/testing/storyboard/agent-routing.mjs.map +1 -1
- package/dist/lib/testing/storyboard/compliance.d.mts +1 -1
- package/dist/lib/testing/storyboard/compliance.d.ts +1 -1
- package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/compliance.js +4 -1
- package/dist/lib/testing/storyboard/compliance.js.map +1 -1
- package/dist/lib/testing/storyboard/compliance.mjs +4 -1
- package/dist/lib/testing/storyboard/compliance.mjs.map +1 -1
- package/dist/lib/testing/storyboard/native-a2a-compliance.d.mts +7 -0
- package/dist/lib/testing/storyboard/native-a2a-compliance.d.ts +8 -0
- package/dist/lib/testing/storyboard/native-a2a-compliance.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/native-a2a-compliance.js +45 -0
- package/dist/lib/testing/storyboard/native-a2a-compliance.js.map +1 -0
- package/dist/lib/testing/storyboard/native-a2a-compliance.mjs +21 -0
- package/dist/lib/testing/storyboard/native-a2a-compliance.mjs.map +1 -0
- package/dist/lib/testing/storyboard/probes.d.mts +2 -0
- package/dist/lib/testing/storyboard/probes.d.ts +2 -0
- package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/probes.js +3 -2
- package/dist/lib/testing/storyboard/probes.js.map +1 -1
- package/dist/lib/testing/storyboard/probes.mjs +3 -2
- package/dist/lib/testing/storyboard/probes.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.d.mts +31 -0
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.d.ts +32 -0
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.js +279 -0
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.mjs +244 -0
- package/dist/lib/testing/storyboard/request-signing/a2a-dispatch.mjs.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/builder.d.mts +4 -1
- package/dist/lib/testing/storyboard/request-signing/builder.d.ts +4 -1
- package/dist/lib/testing/storyboard/request-signing/builder.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/builder.js +19 -0
- package/dist/lib/testing/storyboard/request-signing/builder.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/builder.mjs +19 -0
- package/dist/lib/testing/storyboard/request-signing/builder.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/grader.d.mts +5 -6
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts +5 -6
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/grader.js +82 -13
- package/dist/lib/testing/storyboard/request-signing/grader.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/grader.mjs +86 -13
- package/dist/lib/testing/storyboard/request-signing/grader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/index.d.mts +1 -0
- package/dist/lib/testing/storyboard/request-signing/index.d.ts +1 -0
- package/dist/lib/testing/storyboard/request-signing/index.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/index.js +7 -0
- package/dist/lib/testing/storyboard/request-signing/index.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/index.mjs +8 -0
- package/dist/lib/testing/storyboard/request-signing/index.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +2 -2
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +2 -2
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +6 -5
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +6 -5
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/types.d.mts +1 -0
- package/dist/lib/testing/storyboard/request-signing/types.d.ts +1 -0
- package/dist/lib/testing/storyboard/request-signing/types.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/types.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/types.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/vector-loader.js +1 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +1 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.mts +28 -1
- package/dist/lib/testing/storyboard/runner.d.ts +28 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +251 -55
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.mjs +255 -60
- package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
- package/dist/lib/testing/storyboard/types.d.mts +4 -2
- package/dist/lib/testing/storyboard/types.d.ts +4 -2
- package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/types.js +1 -0
- package/dist/lib/testing/storyboard/types.js.map +1 -1
- package/dist/lib/testing/storyboard/types.mjs +1 -0
- package/dist/lib/testing/storyboard/types.mjs.map +1 -1
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/validations.js +97 -22
- package/dist/lib/testing/storyboard/validations.js.map +1 -1
- package/dist/lib/testing/storyboard/validations.mjs +98 -22
- package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/version.mjs +3 -3
- package/dist/lib/version.mjs.map +1 -1
- package/docs/guides/BUILD-AN-AGENT.md +1 -1
- package/docs/llms.txt +5 -3
- 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
|
|
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 \"
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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`).
|