@adcp/client 2.3.1 → 2.4.0
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/README.md +101 -0
- package/bin/adcp.js +358 -0
- package/dist/lib/core/ADCPClient.d.ts +58 -2
- package/dist/lib/core/ADCPClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPClient.js +200 -7
- package/dist/lib/core/ADCPClient.js.map +1 -1
- package/dist/lib/discovery/property-crawler.d.ts +44 -0
- package/dist/lib/discovery/property-crawler.d.ts.map +1 -0
- package/dist/lib/discovery/property-crawler.js +140 -0
- package/dist/lib/discovery/property-crawler.js.map +1 -0
- package/dist/lib/discovery/property-index.d.ts +68 -0
- package/dist/lib/discovery/property-index.d.ts.map +1 -0
- package/dist/lib/discovery/property-index.js +151 -0
- package/dist/lib/discovery/property-index.js.map +1 -0
- package/dist/lib/discovery/types.d.ts +35 -0
- package/dist/lib/discovery/types.d.ts.map +1 -0
- package/dist/lib/discovery/types.js +7 -0
- package/dist/lib/discovery/types.js.map +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +8 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/protocols/a2a.d.ts.map +1 -1
- package/dist/lib/protocols/a2a.js +53 -20
- package/dist/lib/protocols/a2a.js.map +1 -1
- package/dist/lib/protocols/mcp.d.ts.map +1 -1
- package/dist/lib/protocols/mcp.js +41 -39
- package/dist/lib/protocols/mcp.js.map +1 -1
- package/dist/lib/types/core.generated.d.ts +81 -61
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/schemas.generated.d.ts +61 -270
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +31 -22
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +81 -76
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/package.json +12 -2
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Property Index for AdCP v2.2.0
|
|
4
|
+
*
|
|
5
|
+
* In-memory index for O(1) lookups:
|
|
6
|
+
* - Query 1: Who can sell this property? (property identifier → agents)
|
|
7
|
+
* - Query 2: What properties can this agent sell? (agent → properties)
|
|
8
|
+
* - Query 3: What publisher domains does this agent represent? (agent → domains)
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PropertyIndex = void 0;
|
|
12
|
+
exports.getPropertyIndex = getPropertyIndex;
|
|
13
|
+
exports.resetPropertyIndex = resetPropertyIndex;
|
|
14
|
+
/**
|
|
15
|
+
* Singleton in-memory property index
|
|
16
|
+
*/
|
|
17
|
+
class PropertyIndex {
|
|
18
|
+
// property_identifier_key → PropertyMatch[]
|
|
19
|
+
identifierIndex = new Map();
|
|
20
|
+
// agent_url → AgentAuthorization
|
|
21
|
+
agentIndex = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Query 1: Find agents that can sell a specific property
|
|
24
|
+
*/
|
|
25
|
+
findAgentsForProperty(identifierType, identifierValue) {
|
|
26
|
+
const key = this.makeIdentifierKey(identifierType, identifierValue);
|
|
27
|
+
return this.identifierIndex.get(key) || [];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Query 2: Get all properties an agent can sell
|
|
31
|
+
*/
|
|
32
|
+
getAgentAuthorizations(agentUrl) {
|
|
33
|
+
return this.agentIndex.get(agentUrl) || null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Query 3: Find agents by property tags
|
|
37
|
+
*/
|
|
38
|
+
findAgentsByPropertyTags(tags) {
|
|
39
|
+
const matches = [];
|
|
40
|
+
const seen = new Set();
|
|
41
|
+
for (const auth of this.agentIndex.values()) {
|
|
42
|
+
for (const property of auth.properties) {
|
|
43
|
+
if (!property.tags)
|
|
44
|
+
continue;
|
|
45
|
+
// Check if property has any of the requested tags
|
|
46
|
+
const hasTag = tags.some(tag => property.tags?.includes(tag));
|
|
47
|
+
if (hasTag) {
|
|
48
|
+
const key = `${auth.agent_url}:${property.property_id || property.name}`;
|
|
49
|
+
if (!seen.has(key)) {
|
|
50
|
+
seen.add(key);
|
|
51
|
+
matches.push({
|
|
52
|
+
property,
|
|
53
|
+
agent_url: auth.agent_url,
|
|
54
|
+
publisher_domain: property.publisher_domain || ''
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return matches;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Add a property to the index
|
|
64
|
+
*/
|
|
65
|
+
addProperty(property, agentUrl, publisherDomain) {
|
|
66
|
+
// Add to identifier index for all identifiers
|
|
67
|
+
for (const identifier of property.identifiers) {
|
|
68
|
+
const key = this.makeIdentifierKey(identifier.type, identifier.value);
|
|
69
|
+
const match = {
|
|
70
|
+
property: { ...property, publisher_domain: publisherDomain },
|
|
71
|
+
agent_url: agentUrl,
|
|
72
|
+
publisher_domain: publisherDomain
|
|
73
|
+
};
|
|
74
|
+
const existing = this.identifierIndex.get(key) || [];
|
|
75
|
+
existing.push(match);
|
|
76
|
+
this.identifierIndex.set(key, existing);
|
|
77
|
+
}
|
|
78
|
+
// Add to agent index
|
|
79
|
+
let agentAuth = this.agentIndex.get(agentUrl);
|
|
80
|
+
if (!agentAuth) {
|
|
81
|
+
agentAuth = {
|
|
82
|
+
agent_url: agentUrl,
|
|
83
|
+
publisher_domains: [],
|
|
84
|
+
properties: []
|
|
85
|
+
};
|
|
86
|
+
this.agentIndex.set(agentUrl, agentAuth);
|
|
87
|
+
}
|
|
88
|
+
agentAuth.properties.push({ ...property, publisher_domain: publisherDomain });
|
|
89
|
+
if (!agentAuth.publisher_domains.includes(publisherDomain)) {
|
|
90
|
+
agentAuth.publisher_domains.push(publisherDomain);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add agent → publisher_domains authorization
|
|
95
|
+
*/
|
|
96
|
+
addAgentAuthorization(agentUrl, publisherDomains) {
|
|
97
|
+
let agentAuth = this.agentIndex.get(agentUrl);
|
|
98
|
+
if (!agentAuth) {
|
|
99
|
+
agentAuth = {
|
|
100
|
+
agent_url: agentUrl,
|
|
101
|
+
publisher_domains: [],
|
|
102
|
+
properties: []
|
|
103
|
+
};
|
|
104
|
+
this.agentIndex.set(agentUrl, agentAuth);
|
|
105
|
+
}
|
|
106
|
+
for (const domain of publisherDomains) {
|
|
107
|
+
if (!agentAuth.publisher_domains.includes(domain)) {
|
|
108
|
+
agentAuth.publisher_domains.push(domain);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Clear all data from the index
|
|
114
|
+
*/
|
|
115
|
+
clear() {
|
|
116
|
+
this.identifierIndex.clear();
|
|
117
|
+
this.agentIndex.clear();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get statistics about the index
|
|
121
|
+
*/
|
|
122
|
+
getStats() {
|
|
123
|
+
return {
|
|
124
|
+
totalIdentifiers: this.identifierIndex.size,
|
|
125
|
+
totalAgents: this.agentIndex.size,
|
|
126
|
+
totalProperties: Array.from(this.agentIndex.values()).reduce((sum, auth) => sum + auth.properties.length, 0)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
makeIdentifierKey(type, value) {
|
|
130
|
+
return `${type}:${value.toLowerCase()}`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.PropertyIndex = PropertyIndex;
|
|
134
|
+
// Singleton instance
|
|
135
|
+
let propertyIndexInstance = null;
|
|
136
|
+
/**
|
|
137
|
+
* Get the singleton PropertyIndex instance
|
|
138
|
+
*/
|
|
139
|
+
function getPropertyIndex() {
|
|
140
|
+
if (!propertyIndexInstance) {
|
|
141
|
+
propertyIndexInstance = new PropertyIndex();
|
|
142
|
+
}
|
|
143
|
+
return propertyIndexInstance;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Reset the singleton instance (useful for testing)
|
|
147
|
+
*/
|
|
148
|
+
function resetPropertyIndex() {
|
|
149
|
+
propertyIndexInstance = null;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=property-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-index.js","sourceRoot":"","sources":["../../../src/lib/discovery/property-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Discovery Types
|
|
3
|
+
* Based on AdCP v2.2.0 specification
|
|
4
|
+
*/
|
|
5
|
+
/** Property identifier types from AdCP spec */
|
|
6
|
+
export type PropertyIdentifierType = 'domain' | 'subdomain' | 'ios_bundle' | 'android_package' | 'apple_app_store_id' | 'google_play_id' | 'amazon_app_store_id' | 'roku_channel_id' | 'samsung_app_id' | 'lg_channel_id' | 'vizio_app_id' | 'fire_tv_app_id' | 'dooh_venue_id' | 'podcast_rss_feed' | 'spotify_show_id' | 'apple_podcast_id' | 'iab_tech_lab_domain_id' | 'custom';
|
|
7
|
+
/** Property identifier */
|
|
8
|
+
export interface PropertyIdentifier {
|
|
9
|
+
type: PropertyIdentifierType;
|
|
10
|
+
value: string;
|
|
11
|
+
}
|
|
12
|
+
/** Property types */
|
|
13
|
+
export type PropertyType = 'website' | 'mobile_app' | 'ctv_app' | 'dooh' | 'podcast' | 'radio' | 'streaming_audio';
|
|
14
|
+
/** Advertising property definition from adagents.json */
|
|
15
|
+
export interface Property {
|
|
16
|
+
property_id?: string;
|
|
17
|
+
property_type: PropertyType;
|
|
18
|
+
name: string;
|
|
19
|
+
identifiers: PropertyIdentifier[];
|
|
20
|
+
tags?: string[];
|
|
21
|
+
publisher_domain?: string;
|
|
22
|
+
}
|
|
23
|
+
/** adagents.json structure including properties */
|
|
24
|
+
export interface AdAgentsJson {
|
|
25
|
+
$schema?: string;
|
|
26
|
+
authorized_agents: AuthorizedAgent[];
|
|
27
|
+
properties?: Property[];
|
|
28
|
+
last_updated?: string;
|
|
29
|
+
}
|
|
30
|
+
/** Authorized agent from adagents.json */
|
|
31
|
+
export interface AuthorizedAgent {
|
|
32
|
+
url: string;
|
|
33
|
+
authorized_for: string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,qBAAqB,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,wBAAwB,GACxB,QAAQ,CAAC;AAEb,0BAA0B;AAC1B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAqB;AACrB,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,YAAY,GACZ,SAAS,GACT,MAAM,GACN,SAAS,GACT,OAAO,GACP,iBAAiB,CAAC;AAEtB,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,YAAY,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,eAAe,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/discovery/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { PropertyIndex, getPropertyIndex, resetPropertyIndex, type PropertyMatch, type AgentAuthorization } from './discovery/property-index';
|
|
2
|
+
export { PropertyCrawler, type AgentInfo, type CrawlResult } from './discovery/property-crawler';
|
|
3
|
+
export type { Property, PropertyIdentifier, PropertyIdentifierType, PropertyType, AdAgentsJson } from './discovery/types';
|
|
1
4
|
export { ADCPClient, createADCPClient } from './core/ADCPClient';
|
|
2
5
|
export type { ADCPClientConfig } from './core/ADCPClient';
|
|
3
6
|
export { AgentClient, type TaskResponseTypeMap, type AdcpTaskName } from './core/AgentClient';
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.js
CHANGED
|
@@ -16,9 +16,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.AdCPClient = exports.AgentCollection = exports.Agent = exports.getStandardFormats = exports.InputRequiredError = exports.extractErrorInfo = exports.isErrorOfType = exports.isADCPError = exports.ConfigurationError = exports.InvalidContextError = exports.MissingInputHandlerError = exports.ADCPValidationError = exports.ProtocolError = exports.UnsupportedTaskError = exports.AgentNotFoundError = exports.TaskAbortedError = exports.DeferredTaskError = exports.MaxClarificationError = exports.TaskTimeoutError = exports.ADCPError = exports.createMemoryStorageConfig = exports.createMemoryStorage = exports.MemoryStorage = exports.createAsyncHandler = exports.AsyncHandler = exports.createOperationId = exports.responseValidator = exports.ResponseValidator = exports.ADCP_STATUS = exports.responseParser = exports.ProtocolResponseParser = exports.TaskExecutor = exports.STANDARD_CREATIVE_AGENTS = exports.createCreativeAgentClient = exports.CreativeAgentClient = exports.ConfigurationManager = exports.createADCPMultiAgentClient = exports.NewAgentCollection = exports.ADCPMultiAgentClient = exports.AgentClient = exports.createADCPClient = exports.ADCPClient = void 0;
|
|
19
|
+
exports.AdCPClient = exports.AgentCollection = exports.Agent = exports.getStandardFormats = exports.InputRequiredError = exports.extractErrorInfo = exports.isErrorOfType = exports.isADCPError = exports.ConfigurationError = exports.InvalidContextError = exports.MissingInputHandlerError = exports.ADCPValidationError = exports.ProtocolError = exports.UnsupportedTaskError = exports.AgentNotFoundError = exports.TaskAbortedError = exports.DeferredTaskError = exports.MaxClarificationError = exports.TaskTimeoutError = exports.ADCPError = exports.createMemoryStorageConfig = exports.createMemoryStorage = exports.MemoryStorage = exports.createAsyncHandler = exports.AsyncHandler = exports.createOperationId = exports.responseValidator = exports.ResponseValidator = exports.ADCP_STATUS = exports.responseParser = exports.ProtocolResponseParser = exports.TaskExecutor = exports.STANDARD_CREATIVE_AGENTS = exports.createCreativeAgentClient = exports.CreativeAgentClient = exports.ConfigurationManager = exports.createADCPMultiAgentClient = exports.NewAgentCollection = exports.ADCPMultiAgentClient = exports.AgentClient = exports.createADCPClient = exports.ADCPClient = exports.PropertyCrawler = exports.resetPropertyIndex = exports.getPropertyIndex = exports.PropertyIndex = void 0;
|
|
20
20
|
exports.createAdCPClient = createAdCPClient;
|
|
21
21
|
exports.createAdCPClientFromEnv = createAdCPClientFromEnv;
|
|
22
|
+
// ====== PROPERTY DISCOVERY (AdCP v2.2.0) ======
|
|
23
|
+
var property_index_1 = require("./discovery/property-index");
|
|
24
|
+
Object.defineProperty(exports, "PropertyIndex", { enumerable: true, get: function () { return property_index_1.PropertyIndex; } });
|
|
25
|
+
Object.defineProperty(exports, "getPropertyIndex", { enumerable: true, get: function () { return property_index_1.getPropertyIndex; } });
|
|
26
|
+
Object.defineProperty(exports, "resetPropertyIndex", { enumerable: true, get: function () { return property_index_1.resetPropertyIndex; } });
|
|
27
|
+
var property_crawler_1 = require("./discovery/property-crawler");
|
|
28
|
+
Object.defineProperty(exports, "PropertyCrawler", { enumerable: true, get: function () { return property_crawler_1.PropertyCrawler; } });
|
|
22
29
|
// ====== CORE CONVERSATION-AWARE CLIENTS ======
|
|
23
30
|
// New conversation-aware clients with input handler pattern
|
|
24
31
|
var ADCPClient_1 = require("./core/ADCPClient");
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,sEAAsE;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/a2a.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,GAAG,EAAO,GACpB,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/a2a.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,GAAG,EAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CAkHd"}
|
|
@@ -8,32 +8,58 @@ if (!A2AClient) {
|
|
|
8
8
|
throw new Error('A2A SDK client is required. Please install @a2a-js/sdk');
|
|
9
9
|
}
|
|
10
10
|
async function callA2ATool(agentUrl, toolName, parameters, authToken, debugLogs = []) {
|
|
11
|
-
// Create authenticated fetch
|
|
12
|
-
//
|
|
13
|
-
const fetchImpl =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
// Create authenticated fetch that wraps native fetch
|
|
12
|
+
// This ensures ALL requests (including agent card fetching) include auth headers
|
|
13
|
+
const fetchImpl = async (url, options) => {
|
|
14
|
+
// Build headers - always start with existing headers, then add auth if available
|
|
15
|
+
const existingHeaders = {};
|
|
16
|
+
if (options?.headers) {
|
|
17
|
+
if (options.headers instanceof Headers) {
|
|
18
|
+
options.headers.forEach((value, key) => {
|
|
19
|
+
existingHeaders[key] = value;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
else if (Array.isArray(options.headers)) {
|
|
23
|
+
for (const [key, value] of options.headers) {
|
|
24
|
+
existingHeaders[key] = value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
Object.assign(existingHeaders, options.headers);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Add auth headers if token is provided - these override any existing auth headers
|
|
32
|
+
const headers = {
|
|
33
|
+
...existingHeaders,
|
|
34
|
+
...(authToken && {
|
|
17
35
|
'Authorization': `Bearer ${authToken}`,
|
|
18
36
|
'x-adcp-auth': authToken
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
debugLogs.push({
|
|
40
|
+
type: 'info',
|
|
41
|
+
message: `A2A: Fetch to ${typeof url === 'string' ? url : url.toString()}`,
|
|
42
|
+
timestamp: new Date().toISOString(),
|
|
43
|
+
hasAuth: !!authToken,
|
|
44
|
+
headers: authToken
|
|
45
|
+
? { ...headers, 'Authorization': 'Bearer ***', 'x-adcp-auth': '***' }
|
|
46
|
+
: headers
|
|
47
|
+
});
|
|
48
|
+
return fetch(url, {
|
|
49
|
+
...options,
|
|
50
|
+
headers
|
|
51
|
+
});
|
|
52
|
+
};
|
|
32
53
|
// Create A2A client using the recommended fromCardUrl method
|
|
33
54
|
// Ensure the URL points to the agent card endpoint
|
|
34
55
|
const cardUrl = agentUrl.endsWith('/.well-known/agent-card.json')
|
|
35
56
|
? agentUrl
|
|
36
57
|
: agentUrl.replace(/\/$/, '') + '/.well-known/agent-card.json';
|
|
58
|
+
debugLogs.push({
|
|
59
|
+
type: 'info',
|
|
60
|
+
message: `A2A: Creating client for ${cardUrl}`,
|
|
61
|
+
timestamp: new Date().toISOString()
|
|
62
|
+
});
|
|
37
63
|
const a2aClient = await A2AClient.fromCardUrl(cardUrl, {
|
|
38
64
|
fetchImpl
|
|
39
65
|
});
|
|
@@ -62,13 +88,20 @@ async function callA2ATool(agentUrl, toolName, parameters, authToken, debugLogs
|
|
|
62
88
|
actualPayload: requestPayload
|
|
63
89
|
});
|
|
64
90
|
// Send message using A2A protocol
|
|
91
|
+
debugLogs.push({
|
|
92
|
+
type: 'info',
|
|
93
|
+
message: `A2A: Sending message via sendMessage()`,
|
|
94
|
+
timestamp: new Date().toISOString(),
|
|
95
|
+
skill: toolName
|
|
96
|
+
});
|
|
65
97
|
const messageResponse = await a2aClient.sendMessage(requestPayload);
|
|
66
98
|
// Add debug log for A2A response
|
|
67
99
|
debugLogs.push({
|
|
68
100
|
type: messageResponse?.error ? 'error' : 'success',
|
|
69
101
|
message: `A2A: Response received (${messageResponse?.error ? 'error' : 'success'})`,
|
|
70
102
|
timestamp: new Date().toISOString(),
|
|
71
|
-
response: messageResponse
|
|
103
|
+
response: messageResponse,
|
|
104
|
+
skill: toolName
|
|
72
105
|
});
|
|
73
106
|
// Check for JSON-RPC error in response
|
|
74
107
|
if (messageResponse?.error || messageResponse?.result?.error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/lib/protocols/a2a.ts"],"names":[],"mappings":";;AAQA,
|
|
1
|
+
{"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/lib/protocols/a2a.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/mcp.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,GAAG,EAAO,GACpB,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/mcp.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,GAAG,EAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CAqMd"}
|
|
@@ -10,60 +10,62 @@ async function callMCPTool(agentUrl, toolName, args, authToken, debugLogs = [])
|
|
|
10
10
|
let mcpClient = undefined;
|
|
11
11
|
const baseUrl = new URL(agentUrl);
|
|
12
12
|
// Create a custom fetch function that adds auth headers to every request
|
|
13
|
-
//
|
|
14
|
-
|
|
13
|
+
// Always provide a custom fetch to ensure consistent header handling across all MCP requests
|
|
14
|
+
const authHeaders = authToken ? (0, auth_1.createMCPAuthHeaders)(authToken) : {};
|
|
15
15
|
if (authToken) {
|
|
16
|
-
|
|
17
|
-
// Add to debug logs
|
|
16
|
+
// Add to debug logs only when auth is configured
|
|
18
17
|
debugLogs.push({
|
|
19
18
|
type: 'info',
|
|
20
19
|
message: `MCP: Auth token provided (${authToken.substring(0, 10)}...) for tool ${toolName}`,
|
|
21
20
|
timestamp: new Date().toISOString(),
|
|
22
21
|
headers: authHeaders
|
|
23
22
|
});
|
|
24
|
-
// Log the exact headers being set for debugging
|
|
25
23
|
debugLogs.push({
|
|
26
24
|
type: 'info',
|
|
27
25
|
message: `MCP: Setting auth headers: ${JSON.stringify(authHeaders)}`,
|
|
28
26
|
timestamp: new Date().toISOString()
|
|
29
27
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
else {
|
|
46
|
-
existingHeaders = { ...init.headers };
|
|
28
|
+
}
|
|
29
|
+
// Create custom fetch that injects auth headers into every request
|
|
30
|
+
// This ensures ALL requests (including initialization) include auth headers when needed
|
|
31
|
+
const customFetch = async (input, init) => {
|
|
32
|
+
// Convert existing headers to plain object for merging
|
|
33
|
+
let existingHeaders = {};
|
|
34
|
+
if (init?.headers) {
|
|
35
|
+
if (init.headers instanceof Headers) {
|
|
36
|
+
init.headers.forEach((value, key) => {
|
|
37
|
+
existingHeaders[key] = value;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
else if (Array.isArray(init.headers)) {
|
|
41
|
+
for (const [key, value] of init.headers) {
|
|
42
|
+
existingHeaders[key] = value;
|
|
47
43
|
}
|
|
48
44
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
};
|
|
58
|
-
debugLogs.push({
|
|
59
|
-
type: 'info',
|
|
60
|
-
message: `MCP: Fetch called for ${input} with merged headers`,
|
|
61
|
-
timestamp: new Date().toISOString(),
|
|
62
|
-
headers: mergedHeaders
|
|
63
|
-
});
|
|
64
|
-
return fetch(input, mergedInit);
|
|
45
|
+
else {
|
|
46
|
+
existingHeaders = { ...init.headers };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Merge auth headers with existing headers - auth headers take precedence
|
|
50
|
+
const mergedHeaders = {
|
|
51
|
+
...existingHeaders,
|
|
52
|
+
...authHeaders
|
|
65
53
|
};
|
|
66
|
-
|
|
54
|
+
const mergedInit = {
|
|
55
|
+
...init,
|
|
56
|
+
headers: mergedHeaders
|
|
57
|
+
};
|
|
58
|
+
debugLogs.push({
|
|
59
|
+
type: 'info',
|
|
60
|
+
message: `MCP: Fetch to ${typeof input === 'string' ? input : input.toString()}`,
|
|
61
|
+
timestamp: new Date().toISOString(),
|
|
62
|
+
hasAuth: !!authToken,
|
|
63
|
+
headers: authToken
|
|
64
|
+
? { ...mergedHeaders, 'x-adcp-auth': '***' }
|
|
65
|
+
: mergedHeaders
|
|
66
|
+
});
|
|
67
|
+
return fetch(input, mergedInit);
|
|
68
|
+
};
|
|
67
69
|
try {
|
|
68
70
|
// First, try to connect using StreamableHTTPClientTransport
|
|
69
71
|
debugLogs.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/lib/protocols/mcp.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/lib/protocols/mcp.ts"],"names":[],"mappings":"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"}
|