@adcp/client 2.3.1 → 2.3.2
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 +76 -0
- 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 +8 -2
package/README.md
CHANGED
|
@@ -347,6 +347,82 @@ All AdCP tools with full type safety:
|
|
|
347
347
|
- `activateSignal()` - Activate audience signals
|
|
348
348
|
- `providePerformanceFeedback()` - Send performance feedback
|
|
349
349
|
|
|
350
|
+
## Property Discovery (AdCP v2.2.0)
|
|
351
|
+
|
|
352
|
+
Build agent registries by discovering properties agents can sell. Works with AdCP v2.2.0's publisher-domain model.
|
|
353
|
+
|
|
354
|
+
### How It Works
|
|
355
|
+
|
|
356
|
+
1. **Agents return publisher domains**: Call `listAuthorizedProperties()` → get `publisher_domains[]`
|
|
357
|
+
2. **Fetch property definitions**: Get `https://{domain}/.well-known/adagents.json` from each domain
|
|
358
|
+
3. **Index properties**: Build fast lookups for "who can sell X?" and "what can agent Y sell?"
|
|
359
|
+
|
|
360
|
+
### Three Key Queries
|
|
361
|
+
|
|
362
|
+
```typescript
|
|
363
|
+
import { PropertyCrawler, getPropertyIndex } from '@adcp/client';
|
|
364
|
+
|
|
365
|
+
// First, crawl agents to discover properties
|
|
366
|
+
const crawler = new PropertyCrawler();
|
|
367
|
+
await crawler.crawlAgents([
|
|
368
|
+
{ agent_url: 'https://agent-x.com', protocol: 'a2a' },
|
|
369
|
+
{ agent_url: 'https://agent-y.com/mcp/', protocol: 'mcp' }
|
|
370
|
+
]);
|
|
371
|
+
|
|
372
|
+
const index = getPropertyIndex();
|
|
373
|
+
|
|
374
|
+
// Query 1: Who can sell this property?
|
|
375
|
+
const matches = index.findAgentsForProperty('domain', 'cnn.com');
|
|
376
|
+
// Returns: [{ property, agent_url, publisher_domain }]
|
|
377
|
+
|
|
378
|
+
// Query 2: What can this agent sell?
|
|
379
|
+
const auth = index.getAgentAuthorizations('https://agent-x.com');
|
|
380
|
+
// Returns: { agent_url, publisher_domains: [...], properties: [...] }
|
|
381
|
+
|
|
382
|
+
// Query 3: Find by tags
|
|
383
|
+
const premiumProperties = index.findAgentsByPropertyTags(['premium', 'ctv']);
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Full Example
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
import { PropertyCrawler, getPropertyIndex } from '@adcp/client';
|
|
390
|
+
|
|
391
|
+
const crawler = new PropertyCrawler();
|
|
392
|
+
|
|
393
|
+
// Crawl agents - gets publisher_domains from each, then fetches adagents.json
|
|
394
|
+
const result = await crawler.crawlAgents([
|
|
395
|
+
{ agent_url: 'https://sales.cnn.com' },
|
|
396
|
+
{ agent_url: 'https://sales.espn.com' }
|
|
397
|
+
]);
|
|
398
|
+
|
|
399
|
+
console.log(`✅ ${result.successfulAgents} agents`);
|
|
400
|
+
console.log(`📡 ${result.totalPublisherDomains} publisher domains`);
|
|
401
|
+
console.log(`📦 ${result.totalProperties} properties indexed`);
|
|
402
|
+
|
|
403
|
+
// Now query
|
|
404
|
+
const index = getPropertyIndex();
|
|
405
|
+
const whoCanSell = index.findAgentsForProperty('ios_bundle', 'com.cnn.app');
|
|
406
|
+
|
|
407
|
+
for (const match of whoCanSell) {
|
|
408
|
+
console.log(`${match.agent_url} can sell ${match.property.name}`);
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### Property Types
|
|
413
|
+
|
|
414
|
+
Supports 18 identifier types: `domain`, `subdomain`, `ios_bundle`, `android_package`, `apple_app_store_id`, `google_play_id`, `roku_channel_id`, `podcast_rss_feed`, and more.
|
|
415
|
+
|
|
416
|
+
### Use Case
|
|
417
|
+
|
|
418
|
+
Build a registry service that:
|
|
419
|
+
- Periodically crawls agents with `PropertyCrawler`
|
|
420
|
+
- Persists discovered properties to a database
|
|
421
|
+
- Exposes fast query APIs using the in-memory index patterns
|
|
422
|
+
- Provides web UI for browsing properties and agents
|
|
423
|
+
|
|
424
|
+
Library provides discovery logic - you add persistence layer.
|
|
425
|
+
|
|
350
426
|
## Database Schema
|
|
351
427
|
|
|
352
428
|
Simple unified event log for all operations:
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Crawler for AdCP v2.2.0
|
|
3
|
+
*
|
|
4
|
+
* Discovers properties by:
|
|
5
|
+
* 1. Calling listAuthorizedProperties() on agents → get publisher_domains[]
|
|
6
|
+
* 2. Fetching /.well-known/adagents.json from each publisher domain
|
|
7
|
+
* 3. Extracting Property definitions from adagents.json
|
|
8
|
+
* 4. Building property → agents mapping
|
|
9
|
+
*/
|
|
10
|
+
import type { Property } from './types';
|
|
11
|
+
export interface AgentInfo {
|
|
12
|
+
agent_url: string;
|
|
13
|
+
protocol?: 'a2a' | 'mcp';
|
|
14
|
+
auth_token?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CrawlResult {
|
|
17
|
+
successfulAgents: number;
|
|
18
|
+
failedAgents: number;
|
|
19
|
+
totalPublisherDomains: number;
|
|
20
|
+
totalProperties: number;
|
|
21
|
+
errors: Array<{
|
|
22
|
+
agent_url: string;
|
|
23
|
+
error: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export declare class PropertyCrawler {
|
|
27
|
+
/**
|
|
28
|
+
* Crawl multiple agents to discover their publisher domains and properties
|
|
29
|
+
*/
|
|
30
|
+
crawlAgents(agents: AgentInfo[]): Promise<CrawlResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Crawl a single agent to get its authorized publisher domains
|
|
33
|
+
*/
|
|
34
|
+
crawlAgent(agentInfo: AgentInfo): Promise<string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Fetch adagents.json from multiple publisher domains
|
|
37
|
+
*/
|
|
38
|
+
fetchPublisherProperties(domains: string[]): Promise<Record<string, Property[]>>;
|
|
39
|
+
/**
|
|
40
|
+
* Fetch and parse adagents.json from a publisher domain
|
|
41
|
+
*/
|
|
42
|
+
fetchAdAgentsJson(domain: string): Promise<Property[]>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=property-crawler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-crawler.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/property-crawler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,qBAAa,eAAe;IAC1B;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA6D5D;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBzD;;OAEG;IACG,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAoBtF;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAwB7D"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Property Crawler for AdCP v2.2.0
|
|
4
|
+
*
|
|
5
|
+
* Discovers properties by:
|
|
6
|
+
* 1. Calling listAuthorizedProperties() on agents → get publisher_domains[]
|
|
7
|
+
* 2. Fetching /.well-known/adagents.json from each publisher domain
|
|
8
|
+
* 3. Extracting Property definitions from adagents.json
|
|
9
|
+
* 4. Building property → agents mapping
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PropertyCrawler = void 0;
|
|
13
|
+
const ADCPClient_1 = require("../core/ADCPClient");
|
|
14
|
+
const property_index_1 = require("./property-index");
|
|
15
|
+
class PropertyCrawler {
|
|
16
|
+
/**
|
|
17
|
+
* Crawl multiple agents to discover their publisher domains and properties
|
|
18
|
+
*/
|
|
19
|
+
async crawlAgents(agents) {
|
|
20
|
+
const result = {
|
|
21
|
+
successfulAgents: 0,
|
|
22
|
+
failedAgents: 0,
|
|
23
|
+
totalPublisherDomains: 0,
|
|
24
|
+
totalProperties: 0,
|
|
25
|
+
errors: []
|
|
26
|
+
};
|
|
27
|
+
const index = (0, property_index_1.getPropertyIndex)();
|
|
28
|
+
const allPublisherDomains = new Set();
|
|
29
|
+
// Step 1: Call listAuthorizedProperties on each agent
|
|
30
|
+
for (const agentInfo of agents) {
|
|
31
|
+
try {
|
|
32
|
+
const domains = await this.crawlAgent(agentInfo);
|
|
33
|
+
if (domains.length > 0) {
|
|
34
|
+
result.successfulAgents++;
|
|
35
|
+
domains.forEach(d => allPublisherDomains.add(d));
|
|
36
|
+
// Store agent → publisher_domains mapping
|
|
37
|
+
index.addAgentAuthorization(agentInfo.agent_url, domains);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
result.failedAgents++;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
result.failedAgents++;
|
|
45
|
+
result.errors.push({
|
|
46
|
+
agent_url: agentInfo.agent_url,
|
|
47
|
+
error: error instanceof Error ? error.message : String(error)
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
result.totalPublisherDomains = allPublisherDomains.size;
|
|
52
|
+
// Step 2: Fetch adagents.json from each unique publisher domain
|
|
53
|
+
const domainProperties = await this.fetchPublisherProperties(Array.from(allPublisherDomains));
|
|
54
|
+
// Step 3: Build property → agents index
|
|
55
|
+
for (const [domain, properties] of Object.entries(domainProperties)) {
|
|
56
|
+
for (const property of properties) {
|
|
57
|
+
// Find which agents are authorized for this publisher domain
|
|
58
|
+
const authorizedAgents = agents
|
|
59
|
+
.map(a => a.agent_url)
|
|
60
|
+
.filter(agentUrl => {
|
|
61
|
+
const auth = index.getAgentAuthorizations(agentUrl);
|
|
62
|
+
return auth?.publisher_domains.includes(domain);
|
|
63
|
+
});
|
|
64
|
+
// Add property to index for each authorized agent
|
|
65
|
+
for (const agentUrl of authorizedAgents) {
|
|
66
|
+
index.addProperty(property, agentUrl, domain);
|
|
67
|
+
result.totalProperties++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Crawl a single agent to get its authorized publisher domains
|
|
75
|
+
*/
|
|
76
|
+
async crawlAgent(agentInfo) {
|
|
77
|
+
const client = new ADCPClient_1.ADCPClient({
|
|
78
|
+
id: 'crawler',
|
|
79
|
+
name: 'Property Crawler',
|
|
80
|
+
agent_uri: agentInfo.agent_url,
|
|
81
|
+
protocol: agentInfo.protocol || 'mcp',
|
|
82
|
+
...(agentInfo.auth_token && { auth_token_env: agentInfo.auth_token })
|
|
83
|
+
});
|
|
84
|
+
try {
|
|
85
|
+
const result = await client.listAuthorizedProperties({});
|
|
86
|
+
if (!result.success || !result.data) {
|
|
87
|
+
throw new Error(result.error || 'Failed to fetch publisher domains');
|
|
88
|
+
}
|
|
89
|
+
return result.data.publisher_domains || [];
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
throw new Error(`Failed to crawl agent: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Fetch adagents.json from multiple publisher domains
|
|
97
|
+
*/
|
|
98
|
+
async fetchPublisherProperties(domains) {
|
|
99
|
+
const result = {};
|
|
100
|
+
await Promise.all(domains.map(async (domain) => {
|
|
101
|
+
try {
|
|
102
|
+
const properties = await this.fetchAdAgentsJson(domain);
|
|
103
|
+
if (properties.length > 0) {
|
|
104
|
+
result[domain] = properties;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
// Silently skip domains that don't have adagents.json
|
|
109
|
+
console.warn(`Failed to fetch adagents.json from ${domain}:`, error);
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Fetch and parse adagents.json from a publisher domain
|
|
116
|
+
*/
|
|
117
|
+
async fetchAdAgentsJson(domain) {
|
|
118
|
+
const url = `https://${domain}/.well-known/adagents.json`;
|
|
119
|
+
try {
|
|
120
|
+
const response = await fetch(url);
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
123
|
+
}
|
|
124
|
+
const data = await response.json();
|
|
125
|
+
if (!data.properties || !Array.isArray(data.properties)) {
|
|
126
|
+
return [];
|
|
127
|
+
}
|
|
128
|
+
// Add publisher_domain to each property if not present
|
|
129
|
+
return data.properties.map(prop => ({
|
|
130
|
+
...prop,
|
|
131
|
+
publisher_domain: prop.publisher_domain || domain
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
throw new Error(`Failed to fetch adagents.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.PropertyCrawler = PropertyCrawler;
|
|
140
|
+
//# sourceMappingURL=property-crawler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-crawler.js","sourceRoot":"","sources":["../../../src/lib/discovery/property-crawler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Index for AdCP v2.2.0
|
|
3
|
+
*
|
|
4
|
+
* In-memory index for O(1) lookups:
|
|
5
|
+
* - Query 1: Who can sell this property? (property identifier → agents)
|
|
6
|
+
* - Query 2: What properties can this agent sell? (agent → properties)
|
|
7
|
+
* - Query 3: What publisher domains does this agent represent? (agent → domains)
|
|
8
|
+
*/
|
|
9
|
+
import type { Property, PropertyIdentifierType } from './types';
|
|
10
|
+
export interface PropertyMatch {
|
|
11
|
+
property: Property;
|
|
12
|
+
agent_url: string;
|
|
13
|
+
publisher_domain: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AgentAuthorization {
|
|
16
|
+
agent_url: string;
|
|
17
|
+
publisher_domains: string[];
|
|
18
|
+
properties: Property[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Singleton in-memory property index
|
|
22
|
+
*/
|
|
23
|
+
export declare class PropertyIndex {
|
|
24
|
+
private identifierIndex;
|
|
25
|
+
private agentIndex;
|
|
26
|
+
/**
|
|
27
|
+
* Query 1: Find agents that can sell a specific property
|
|
28
|
+
*/
|
|
29
|
+
findAgentsForProperty(identifierType: PropertyIdentifierType, identifierValue: string): PropertyMatch[];
|
|
30
|
+
/**
|
|
31
|
+
* Query 2: Get all properties an agent can sell
|
|
32
|
+
*/
|
|
33
|
+
getAgentAuthorizations(agentUrl: string): AgentAuthorization | null;
|
|
34
|
+
/**
|
|
35
|
+
* Query 3: Find agents by property tags
|
|
36
|
+
*/
|
|
37
|
+
findAgentsByPropertyTags(tags: string[]): PropertyMatch[];
|
|
38
|
+
/**
|
|
39
|
+
* Add a property to the index
|
|
40
|
+
*/
|
|
41
|
+
addProperty(property: Property, agentUrl: string, publisherDomain: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Add agent → publisher_domains authorization
|
|
44
|
+
*/
|
|
45
|
+
addAgentAuthorization(agentUrl: string, publisherDomains: string[]): void;
|
|
46
|
+
/**
|
|
47
|
+
* Clear all data from the index
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get statistics about the index
|
|
52
|
+
*/
|
|
53
|
+
getStats(): {
|
|
54
|
+
totalIdentifiers: number;
|
|
55
|
+
totalAgents: number;
|
|
56
|
+
totalProperties: number;
|
|
57
|
+
};
|
|
58
|
+
private makeIdentifierKey;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get the singleton PropertyIndex instance
|
|
62
|
+
*/
|
|
63
|
+
export declare function getPropertyIndex(): PropertyIndex;
|
|
64
|
+
/**
|
|
65
|
+
* Reset the singleton instance (useful for testing)
|
|
66
|
+
*/
|
|
67
|
+
export declare function resetPropertyIndex(): void;
|
|
68
|
+
//# sourceMappingURL=property-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-index.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/property-index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,aAAa;IAExB,OAAO,CAAC,eAAe,CAA2C;IAGlE,OAAO,CAAC,UAAU,CAA8C;IAEhE;;OAEG;IACH,qBAAqB,CACnB,cAAc,EAAE,sBAAsB,EACtC,eAAe,EAAE,MAAM,GACtB,aAAa,EAAE;IAKlB;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAInE;;OAEG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE;IA2BzD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAiChF;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI;IAkBzE;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,QAAQ;;;;;IAWR,OAAO,CAAC,iBAAiB;CAG1B;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -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"}
|