@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
|
@@ -49,8 +49,10 @@ var import_task_deadline = require('./task-deadline.js');
|
|
|
49
49
|
var import_auth = require('../auth/index.js');
|
|
50
50
|
var import_abort = require('../protocols/abort.js');
|
|
51
51
|
var import_protocols = require('../protocols/index.js');
|
|
52
|
+
var import_a2a = require('../protocols/a2a.js');
|
|
52
53
|
var import_errors = require('../errors/index.js');
|
|
53
54
|
var import_net = require('../net/index.js');
|
|
55
|
+
var import_credential_headers = require('../net/credential-headers.js');
|
|
54
56
|
var import_authorization_required = require('../auth/oauth/authorization-required.js');
|
|
55
57
|
var import_discovery = require('../auth/oauth/discovery.js');
|
|
56
58
|
var import_AsyncHandler = require('./AsyncHandler.js');
|
|
@@ -971,20 +973,22 @@ class SingleAgentClient {
|
|
|
971
973
|
const sizeLimitedFetch = wrapFetchWithSizeLimit(
|
|
972
974
|
(0, import_net.createAgentTransportFetch)(agentUri, {
|
|
973
975
|
trustedFetchFn: transport?.trustedFetchFn,
|
|
974
|
-
allowPrivateIp: transport?.allowPrivateIp
|
|
976
|
+
allowPrivateIp: transport?.allowPrivateIp,
|
|
977
|
+
originBoundHeaders: Object.keys(this.normalizedAgent.headers ?? {}),
|
|
978
|
+
crossOriginCredentialPolicy: transport?.legacyCompat?.enabled === false ? "refuse" : "strip"
|
|
975
979
|
})
|
|
976
980
|
);
|
|
977
981
|
const authToken = this.normalizedAgent.oauth_client_credentials ? this.normalizedAgent.oauth_tokens?.access_token : this.normalizedAgent.auth_token;
|
|
978
982
|
let got401 = false;
|
|
979
983
|
const fetchImpl = async (url, requestInit) => {
|
|
980
|
-
const headers =
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
984
|
+
const headers = buildA2ADiscoveryHeaders(requestInit?.headers, this.normalizedAgent.headers, authToken);
|
|
985
|
+
assertNativeA2ADiscoveryCredentialOrigin(
|
|
986
|
+
agentUri,
|
|
987
|
+
url,
|
|
988
|
+
transport?.legacyCompat?.enabled,
|
|
989
|
+
headers,
|
|
990
|
+
this.normalizedAgent.headers
|
|
991
|
+
);
|
|
988
992
|
const response = await (0, import_abort2.withAbortSignal)(
|
|
989
993
|
[readOptions?.signal, requestInit?.signal],
|
|
990
994
|
requestTimeoutMs,
|
|
@@ -1001,7 +1005,10 @@ class SingleAgentClient {
|
|
|
1001
1005
|
let lastError = new Error(`A2A agent card not found at ${cardUrls.join(", ")}`);
|
|
1002
1006
|
for (const cardUrl of cardUrls) {
|
|
1003
1007
|
try {
|
|
1004
|
-
client = await withResponseSizeLimit(
|
|
1008
|
+
client = await withResponseSizeLimit(
|
|
1009
|
+
maxResponseBytes,
|
|
1010
|
+
() => (0, import_a2a.createA2AClientFromCardUrl)(cardUrl, fetchImpl, transport?.legacyCompat)
|
|
1011
|
+
);
|
|
1005
1012
|
break;
|
|
1006
1013
|
} catch (err) {
|
|
1007
1014
|
lastError = err;
|
|
@@ -1011,11 +1018,18 @@ class SingleAgentClient {
|
|
|
1011
1018
|
if (!client) {
|
|
1012
1019
|
throw lastError;
|
|
1013
1020
|
}
|
|
1014
|
-
const agentCard = await withResponseSizeLimit(
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1021
|
+
const agentCard = await withResponseSizeLimit(maxResponseBytes, async () => {
|
|
1022
|
+
if (transport?.legacyCompat?.enabled === false) {
|
|
1023
|
+
return client.getAgentCard();
|
|
1024
|
+
}
|
|
1025
|
+
const compatibleClient = client;
|
|
1026
|
+
return typeof compatibleClient.getAgentCard === "function" ? compatibleClient.getAgentCard() : compatibleClient.agentCardPromise ?? compatibleClient.agentCard;
|
|
1027
|
+
});
|
|
1028
|
+
if (transport?.legacyCompat?.enabled === false) {
|
|
1029
|
+
const nativeJsonRpc = selectNativeJsonRpcInterface(agentCard);
|
|
1030
|
+
if (nativeJsonRpc) return nativeJsonRpc.url;
|
|
1031
|
+
}
|
|
1032
|
+
if (agentCard && "url" in agentCard && typeof agentCard.url === "string" && agentCard.url.length > 0) {
|
|
1019
1033
|
return agentCard.url;
|
|
1020
1034
|
}
|
|
1021
1035
|
return this.computeBaseUrl(agentUri);
|
|
@@ -3797,7 +3811,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
3797
3811
|
* Get the fully resolved agent configuration
|
|
3798
3812
|
*
|
|
3799
3813
|
* This async method ensures the agent config has the canonical URL resolved:
|
|
3800
|
-
* - For A2A: Fetches the agent card and uses its
|
|
3814
|
+
* - For A2A: Fetches the agent card and uses its selected native interface or legacy `url`
|
|
3801
3815
|
* - For MCP: Performs endpoint discovery
|
|
3802
3816
|
*
|
|
3803
3817
|
* @returns Promise resolving to agent config with canonical URL
|
|
@@ -3860,7 +3874,8 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
3860
3874
|
return this.canonicalBaseUrl;
|
|
3861
3875
|
}
|
|
3862
3876
|
if (this.normalizedAgent.protocol === "a2a") {
|
|
3863
|
-
await this.ensureCanonicalUrlResolved();
|
|
3877
|
+
const resolved = await this.ensureCanonicalUrlResolved();
|
|
3878
|
+
return resolved.agent_uri;
|
|
3864
3879
|
} else if (this.normalizedAgent.protocol === "mcp") {
|
|
3865
3880
|
await this.ensureEndpointDiscovered();
|
|
3866
3881
|
}
|
|
@@ -4210,34 +4225,22 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
4210
4225
|
const authToken = await ensureReadAuthToken();
|
|
4211
4226
|
const agentHeaders = this.normalizedAgent.headers ?? {};
|
|
4212
4227
|
const sizeLimitedFetch = wrapFetchWithSizeLimit(
|
|
4213
|
-
(
|
|
4228
|
+
(0, import_net.createAgentTransportFetch)(this.normalizedAgent.agent_uri, {
|
|
4229
|
+
trustedFetchFn: transport?.trustedFetchFn,
|
|
4230
|
+
allowPrivateIp: transport?.allowPrivateIp,
|
|
4231
|
+
originBoundHeaders: Object.keys(agentHeaders),
|
|
4232
|
+
crossOriginCredentialPolicy: transport?.legacyCompat?.enabled === false ? "refuse" : "strip"
|
|
4233
|
+
})
|
|
4214
4234
|
);
|
|
4215
|
-
const normalizeHeaders = (headers) => {
|
|
4216
|
-
const normalized = {};
|
|
4217
|
-
if (!headers) return normalized;
|
|
4218
|
-
if (headers instanceof Headers) {
|
|
4219
|
-
headers.forEach((value, key) => {
|
|
4220
|
-
normalized[key] = value;
|
|
4221
|
-
});
|
|
4222
|
-
} else if (Array.isArray(headers)) {
|
|
4223
|
-
for (const [key, value] of headers) {
|
|
4224
|
-
normalized[key] = value;
|
|
4225
|
-
}
|
|
4226
|
-
} else {
|
|
4227
|
-
Object.assign(normalized, headers);
|
|
4228
|
-
}
|
|
4229
|
-
return normalized;
|
|
4230
|
-
};
|
|
4231
|
-
const buildHeaders = (requestInit) => ({
|
|
4232
|
-
...normalizeHeaders(requestInit?.headers),
|
|
4233
|
-
...agentHeaders,
|
|
4234
|
-
...authToken && {
|
|
4235
|
-
Authorization: `Bearer ${authToken}`,
|
|
4236
|
-
"x-adcp-auth": authToken
|
|
4237
|
-
}
|
|
4238
|
-
});
|
|
4239
4235
|
const fetchImpl = async (url, requestInit) => {
|
|
4240
|
-
const headers =
|
|
4236
|
+
const headers = buildA2ADiscoveryHeaders(requestInit?.headers, agentHeaders, authToken);
|
|
4237
|
+
assertNativeA2ADiscoveryCredentialOrigin(
|
|
4238
|
+
this.normalizedAgent.agent_uri,
|
|
4239
|
+
url,
|
|
4240
|
+
transport?.legacyCompat?.enabled,
|
|
4241
|
+
headers,
|
|
4242
|
+
agentHeaders
|
|
4243
|
+
);
|
|
4241
4244
|
return (0, import_abort2.withAbortSignal)(
|
|
4242
4245
|
[options?.signal, requestInit?.signal],
|
|
4243
4246
|
requestTimeoutMs,
|
|
@@ -4249,7 +4252,10 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
4249
4252
|
let lastCardError = new Error(`A2A agent card not found at ${cardUrls.join(", ")}`);
|
|
4250
4253
|
for (const cardUrl of cardUrls) {
|
|
4251
4254
|
try {
|
|
4252
|
-
client = await withResponseSizeLimit(
|
|
4255
|
+
client = await withResponseSizeLimit(
|
|
4256
|
+
maxResponseBytes,
|
|
4257
|
+
() => (0, import_a2a.createA2AClientFromCardUrl)(cardUrl, fetchImpl, transport?.legacyCompat)
|
|
4258
|
+
);
|
|
4253
4259
|
break;
|
|
4254
4260
|
} catch (err) {
|
|
4255
4261
|
lastCardError = err;
|
|
@@ -4258,10 +4264,10 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
4258
4264
|
if (!client) {
|
|
4259
4265
|
throw lastCardError;
|
|
4260
4266
|
}
|
|
4261
|
-
const agentCard = await withResponseSizeLimit(
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
);
|
|
4267
|
+
const agentCard = await withResponseSizeLimit(maxResponseBytes, async () => {
|
|
4268
|
+
const compatibleClient = client;
|
|
4269
|
+
return typeof compatibleClient.getAgentCard === "function" ? compatibleClient.getAgentCard() : compatibleClient.agentCardPromise ?? compatibleClient.agentCard;
|
|
4270
|
+
});
|
|
4265
4271
|
const tools = agentCard?.skills ? agentCard.skills.map(
|
|
4266
4272
|
(skill) => ({
|
|
4267
4273
|
name: skill.id || skill.name,
|
|
@@ -4790,6 +4796,40 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
4790
4796
|
return schemaMap[taskType] || null;
|
|
4791
4797
|
}
|
|
4792
4798
|
}
|
|
4799
|
+
function selectNativeJsonRpcInterface(card) {
|
|
4800
|
+
let selected;
|
|
4801
|
+
for (const agentInterface of card.supportedInterfaces ?? []) {
|
|
4802
|
+
if (agentInterface.protocolBinding.toUpperCase() !== "JSONRPC") continue;
|
|
4803
|
+
if (!selected || agentInterface.protocolVersion === "1.0") selected = agentInterface;
|
|
4804
|
+
}
|
|
4805
|
+
return selected;
|
|
4806
|
+
}
|
|
4807
|
+
function buildA2ADiscoveryHeaders(requestHeaders, agentHeaders, authToken) {
|
|
4808
|
+
const headers = new Headers(requestHeaders);
|
|
4809
|
+
for (const [name, value] of Object.entries(agentHeaders ?? {})) {
|
|
4810
|
+
headers.set(name, value);
|
|
4811
|
+
}
|
|
4812
|
+
if (authToken) {
|
|
4813
|
+
headers.set("authorization", `Bearer ${authToken}`);
|
|
4814
|
+
headers.set("x-adcp-auth", authToken);
|
|
4815
|
+
}
|
|
4816
|
+
return headers;
|
|
4817
|
+
}
|
|
4818
|
+
function assertNativeA2ADiscoveryCredentialOrigin(agentUrl, requestUrl, legacyCompatEnabled, headers, configuredHeaders) {
|
|
4819
|
+
if (legacyCompatEnabled !== false) return;
|
|
4820
|
+
const targetUrl = requestUrl instanceof Request ? requestUrl.url : requestUrl.toString();
|
|
4821
|
+
if (new URL(targetUrl).origin === new URL(agentUrl).origin) return;
|
|
4822
|
+
const configuredHeaderNames = new Set(Object.keys(configuredHeaders ?? {}).map((name) => name.toLowerCase()));
|
|
4823
|
+
const credentialHeaders = [];
|
|
4824
|
+
headers.forEach((_value, name) => {
|
|
4825
|
+
if (configuredHeaderNames.has(name.toLowerCase()) || (0, import_credential_headers.isCredentialHeaderName)(name)) credentialHeaders.push(name);
|
|
4826
|
+
});
|
|
4827
|
+
if (credentialHeaders.length === 0) return;
|
|
4828
|
+
const targetOrigin = new URL(targetUrl).origin;
|
|
4829
|
+
throw new Error(
|
|
4830
|
+
`A2A native discovery refused credentialed cross-origin dispatch to ${targetOrigin}; credential headers: ${credentialHeaders.map((name) => name.toLowerCase()).sort().join(", ")}`
|
|
4831
|
+
);
|
|
4832
|
+
}
|
|
4793
4833
|
let hasWarnedAboutUnverifiedWebhookReceive = false;
|
|
4794
4834
|
function warnUnverifiedWebhookReceive() {
|
|
4795
4835
|
if (hasWarnedAboutUnverifiedWebhookReceive) return;
|