@adcp/client 3.7.0 → 3.8.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/bin/adcp.js +42 -3
- package/dist/lib/adapters/content-standards-adapter.d.ts +106 -0
- package/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -0
- package/dist/lib/adapters/content-standards-adapter.js +199 -0
- package/dist/lib/adapters/content-standards-adapter.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +18 -0
- package/dist/lib/adapters/index.d.ts.map +1 -0
- package/dist/lib/adapters/index.js +41 -0
- package/dist/lib/adapters/index.js.map +1 -0
- package/dist/lib/adapters/property-list-adapter.d.ts +123 -0
- package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -0
- package/dist/lib/adapters/property-list-adapter.js +212 -0
- package/dist/lib/adapters/property-list-adapter.js.map +1 -0
- package/dist/lib/adapters/proposal-manager.d.ts +142 -0
- package/dist/lib/adapters/proposal-manager.d.ts.map +1 -0
- package/dist/lib/adapters/proposal-manager.js +184 -0
- package/dist/lib/adapters/proposal-manager.js.map +1 -0
- package/dist/lib/adapters/si-session-manager.d.ts +161 -0
- package/dist/lib/adapters/si-session-manager.d.ts.map +1 -0
- package/dist/lib/adapters/si-session-manager.js +320 -0
- package/dist/lib/adapters/si-session-manager.js.map +1 -0
- package/dist/lib/agents/index.generated.d.ts +109 -33
- package/dist/lib/agents/index.generated.d.ts.map +1 -1
- package/dist/lib/agents/index.generated.js +162 -36
- package/dist/lib/agents/index.generated.js.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +5 -7
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.js +47 -35
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
- package/dist/lib/core/AgentClient.d.ts +13 -6
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/AgentClient.js +23 -13
- package/dist/lib/core/AgentClient.js.map +1 -1
- package/dist/lib/core/AsyncHandler.d.ts +1 -2
- package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
- package/dist/lib/core/AsyncHandler.js +0 -3
- package/dist/lib/core/AsyncHandler.js.map +1 -1
- package/dist/lib/core/ResponseValidator.d.ts.map +1 -1
- package/dist/lib/core/ResponseValidator.js +0 -1
- package/dist/lib/core/ResponseValidator.js.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts +102 -10
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +244 -17
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/discovery/property-crawler.d.ts +13 -2
- package/dist/lib/discovery/property-crawler.d.ts.map +1 -1
- package/dist/lib/discovery/property-crawler.js +48 -13
- package/dist/lib/discovery/property-crawler.js.map +1 -1
- package/dist/lib/discovery/types.d.ts +7 -1
- package/dist/lib/discovery/types.d.ts.map +1 -1
- package/dist/lib/index.d.ts +13 -4
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +79 -5
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/types/core.generated.d.ts +507 -239
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +2 -2
- package/dist/lib/types/core.generated.js.map +1 -1
- package/dist/lib/types/schemas.generated.d.ts +7246 -2278
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +1376 -460
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +3202 -551
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.js +1 -1
- package/dist/lib/types/tools.generated.js.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +98 -0
- package/dist/lib/utils/capabilities.d.ts.map +1 -0
- package/dist/lib/utils/capabilities.js +155 -0
- package/dist/lib/utils/capabilities.js.map +1 -0
- package/dist/lib/utils/creative-adapter.d.ts +87 -0
- package/dist/lib/utils/creative-adapter.d.ts.map +1 -0
- package/dist/lib/utils/creative-adapter.js +125 -0
- package/dist/lib/utils/creative-adapter.js.map +1 -0
- package/dist/lib/utils/format-assets.d.ts +4 -16
- package/dist/lib/utils/format-assets.d.ts.map +1 -1
- package/dist/lib/utils/format-assets.js +16 -14
- package/dist/lib/utils/format-assets.js.map +1 -1
- package/dist/lib/utils/format-renders.d.ts +82 -0
- package/dist/lib/utils/format-renders.d.ts.map +1 -0
- package/dist/lib/utils/format-renders.js +137 -0
- package/dist/lib/utils/format-renders.js.map +1 -0
- package/dist/lib/utils/index.d.ts +2 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +13 -3
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/preview-normalizer.d.ts +109 -0
- package/dist/lib/utils/preview-normalizer.d.ts.map +1 -0
- package/dist/lib/utils/preview-normalizer.js +122 -0
- package/dist/lib/utils/preview-normalizer.js.map +1 -0
- package/dist/lib/utils/pricing-adapter.d.ts +121 -0
- package/dist/lib/utils/pricing-adapter.d.ts.map +1 -0
- package/dist/lib/utils/pricing-adapter.js +213 -0
- package/dist/lib/utils/pricing-adapter.js.map +1 -0
- package/dist/lib/utils/response-unwrapper.d.ts +2 -2
- package/dist/lib/utils/response-unwrapper.d.ts.map +1 -1
- package/dist/lib/utils/response-unwrapper.js +2 -2
- package/dist/lib/utils/response-unwrapper.js.map +1 -1
- package/dist/lib/version.d.ts +15 -7
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +20 -11
- package/dist/lib/version.js.map +1 -1
- package/package.json +3 -3
package/bin/adcp.js
CHANGED
|
@@ -125,14 +125,30 @@ function extractProtocolMessage(conversation, protocol) {
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
/**
|
|
128
|
-
* Display agent info -
|
|
128
|
+
* Display agent info - includes capabilities detection for v3.0
|
|
129
129
|
*/
|
|
130
130
|
async function displayAgentInfo(agentConfig, jsonOutput) {
|
|
131
131
|
const client = new AdCPClient([agentConfig]);
|
|
132
|
-
const
|
|
132
|
+
const agentClient = client.agent(agentConfig.id);
|
|
133
|
+
const info = await agentClient.getAgentInfo();
|
|
134
|
+
|
|
135
|
+
// Try to get capabilities (v3.0 feature detection)
|
|
136
|
+
let capabilities = null;
|
|
137
|
+
try {
|
|
138
|
+
if (typeof agentClient.getCapabilities === 'function') {
|
|
139
|
+
capabilities = await agentClient.getCapabilities();
|
|
140
|
+
}
|
|
141
|
+
} catch (e) {
|
|
142
|
+
// Capabilities detection failed - continue without
|
|
143
|
+
}
|
|
133
144
|
|
|
134
145
|
if (jsonOutput) {
|
|
135
|
-
|
|
146
|
+
// Include capabilities in JSON output
|
|
147
|
+
const output = {
|
|
148
|
+
...info,
|
|
149
|
+
...(capabilities && { capabilities }),
|
|
150
|
+
};
|
|
151
|
+
console.log(JSON.stringify(output, null, 2));
|
|
136
152
|
} else {
|
|
137
153
|
console.log(`\n📋 Agent Information\n`);
|
|
138
154
|
console.log(`Name: ${info.name}`);
|
|
@@ -141,6 +157,29 @@ async function displayAgentInfo(agentConfig, jsonOutput) {
|
|
|
141
157
|
}
|
|
142
158
|
console.log(`Protocol: ${info.protocol.toUpperCase()}`);
|
|
143
159
|
console.log(`URL: ${info.url}`);
|
|
160
|
+
|
|
161
|
+
// Display capabilities if available
|
|
162
|
+
if (capabilities) {
|
|
163
|
+
console.log(`\n🔧 Capabilities:\n`);
|
|
164
|
+
console.log(` AdCP Version: ${capabilities.version}${capabilities._synthetic ? ' (detected)' : ''}`);
|
|
165
|
+
if (capabilities.protocols && capabilities.protocols.length > 0) {
|
|
166
|
+
console.log(` Supported Protocols: ${capabilities.protocols.join(', ')}`);
|
|
167
|
+
}
|
|
168
|
+
if (capabilities.features) {
|
|
169
|
+
const features = [];
|
|
170
|
+
if (capabilities.features.supportsCreativeAssignments) features.push('creative_assignments');
|
|
171
|
+
if (capabilities.features.supportsRenders) features.push('renders');
|
|
172
|
+
if (capabilities.features.supportsPropertyListFiltering) features.push('property_list_filtering');
|
|
173
|
+
if (capabilities.features.supportsContentStandards) features.push('content_standards');
|
|
174
|
+
if (features.length > 0) {
|
|
175
|
+
console.log(` v3.0 Features: ${features.join(', ')}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (capabilities.extensions && capabilities.extensions.length > 0) {
|
|
179
|
+
console.log(` Extensions: ${capabilities.extensions.join(', ')}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
144
183
|
console.log(`\nAvailable Tools (${info.tools.length}):\n`);
|
|
145
184
|
|
|
146
185
|
if (info.tools.length === 0) {
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Standards Adapter
|
|
3
|
+
*
|
|
4
|
+
* Server-side adapter for implementing content standards evaluation logic.
|
|
5
|
+
* Publishers use this to plug in their brand safety/suitability evaluation systems.
|
|
6
|
+
*
|
|
7
|
+
* This is a stub implementation that returns not-supported responses.
|
|
8
|
+
* Publishers should extend or replace this with their actual evaluation logic.
|
|
9
|
+
*/
|
|
10
|
+
import type { ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CreateContentStandardsRequest, CreateContentStandardsResponse, UpdateContentStandardsRequest, UpdateContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, Artifact } from '../types/tools.generated';
|
|
11
|
+
/**
|
|
12
|
+
* Content evaluation result from the adapter
|
|
13
|
+
*/
|
|
14
|
+
export interface ContentEvaluationResult {
|
|
15
|
+
verdict: 'pass' | 'fail';
|
|
16
|
+
confidence?: number;
|
|
17
|
+
explanation?: string;
|
|
18
|
+
features?: {
|
|
19
|
+
feature_id: string;
|
|
20
|
+
status: 'passed' | 'failed' | 'warning' | 'unevaluated';
|
|
21
|
+
explanation?: string;
|
|
22
|
+
}[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Abstract interface for content standards adapters.
|
|
26
|
+
* Publishers implement this to provide their evaluation logic.
|
|
27
|
+
*/
|
|
28
|
+
export interface IContentStandardsAdapter {
|
|
29
|
+
/**
|
|
30
|
+
* Check if content standards are supported by this server
|
|
31
|
+
*/
|
|
32
|
+
isSupported(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* List available content standards configurations
|
|
35
|
+
*/
|
|
36
|
+
listStandards(request: ListContentStandardsRequest): Promise<ListContentStandardsResponse>;
|
|
37
|
+
/**
|
|
38
|
+
* Get a specific content standards configuration
|
|
39
|
+
*/
|
|
40
|
+
getStandards(request: GetContentStandardsRequest): Promise<GetContentStandardsResponse>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new content standards configuration
|
|
43
|
+
*/
|
|
44
|
+
createStandards(request: CreateContentStandardsRequest): Promise<CreateContentStandardsResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* Update an existing content standards configuration
|
|
47
|
+
*/
|
|
48
|
+
updateStandards(request: UpdateContentStandardsRequest): Promise<UpdateContentStandardsResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* Calibrate content against standards (interactive feedback loop)
|
|
51
|
+
*/
|
|
52
|
+
calibrateContent(request: CalibrateContentRequest): Promise<CalibrateContentResponse>;
|
|
53
|
+
/**
|
|
54
|
+
* Validate delivery records against content standards (batch validation)
|
|
55
|
+
*/
|
|
56
|
+
validateContentDelivery(request: ValidateContentDeliveryRequest): Promise<ValidateContentDeliveryResponse>;
|
|
57
|
+
/**
|
|
58
|
+
* Evaluate a single artifact against standards.
|
|
59
|
+
* Used internally by get_products and create_media_buy to filter content.
|
|
60
|
+
*/
|
|
61
|
+
evaluateArtifact(standardsId: string, artifact: Artifact): Promise<ContentEvaluationResult>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Error codes for content standards operations
|
|
65
|
+
*/
|
|
66
|
+
export declare const ContentStandardsErrorCodes: {
|
|
67
|
+
readonly NOT_SUPPORTED: "content_standards_not_supported";
|
|
68
|
+
readonly STANDARDS_NOT_FOUND: "standards_not_found";
|
|
69
|
+
readonly INVALID_STANDARDS: "invalid_standards";
|
|
70
|
+
readonly EVALUATION_FAILED: "evaluation_failed";
|
|
71
|
+
readonly QUOTA_EXCEEDED: "quota_exceeded";
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Stub implementation of ContentStandardsAdapter.
|
|
75
|
+
* Returns not-supported errors for all operations.
|
|
76
|
+
*
|
|
77
|
+
* Publishers should extend this class or provide their own implementation
|
|
78
|
+
* that integrates with their brand safety systems.
|
|
79
|
+
*/
|
|
80
|
+
export declare class ContentStandardsAdapter implements IContentStandardsAdapter {
|
|
81
|
+
/**
|
|
82
|
+
* Check if content standards are supported.
|
|
83
|
+
* Override this to return true when implementing real logic.
|
|
84
|
+
*/
|
|
85
|
+
isSupported(): boolean;
|
|
86
|
+
listStandards(request: ListContentStandardsRequest): Promise<ListContentStandardsResponse>;
|
|
87
|
+
getStandards(request: GetContentStandardsRequest): Promise<GetContentStandardsResponse>;
|
|
88
|
+
createStandards(request: CreateContentStandardsRequest): Promise<CreateContentStandardsResponse>;
|
|
89
|
+
updateStandards(request: UpdateContentStandardsRequest): Promise<UpdateContentStandardsResponse>;
|
|
90
|
+
calibrateContent(request: CalibrateContentRequest): Promise<CalibrateContentResponse>;
|
|
91
|
+
validateContentDelivery(request: ValidateContentDeliveryRequest): Promise<ValidateContentDeliveryResponse>;
|
|
92
|
+
/**
|
|
93
|
+
* Evaluate a single artifact against content standards.
|
|
94
|
+
* Used by get_products and create_media_buy to filter content.
|
|
95
|
+
*/
|
|
96
|
+
evaluateArtifact(standardsId: string, artifact: Artifact): Promise<ContentEvaluationResult>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Helper to check if a response is an error response
|
|
100
|
+
*/
|
|
101
|
+
export declare function isContentStandardsError(response: ListContentStandardsResponse | GetContentStandardsResponse | CreateContentStandardsResponse): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Default singleton instance for servers that don't need content standards
|
|
104
|
+
*/
|
|
105
|
+
export declare const defaultContentStandardsAdapter: ContentStandardsAdapter;
|
|
106
|
+
//# sourceMappingURL=content-standards-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-standards-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/content-standards-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAE/B,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;QACxD,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACL;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAE3F;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAExF;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAEjG;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAEjG;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEtF;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAE3G;;;OAGG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC7F;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;CAM7B,CAAC;AAEX;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,wBAAwB;IACtE;;;OAGG;IACH,WAAW,IAAI,OAAO;IAIhB,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAmB1F,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAuBvF,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAuBhG,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAuBhG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuBrF,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IA6BhH;;;OAGG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAiBlG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,4BAA4B,GAAG,2BAA2B,GAAG,8BAA8B,GACpG,OAAO,CAET;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,yBAAgC,CAAC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Content Standards Adapter
|
|
4
|
+
*
|
|
5
|
+
* Server-side adapter for implementing content standards evaluation logic.
|
|
6
|
+
* Publishers use this to plug in their brand safety/suitability evaluation systems.
|
|
7
|
+
*
|
|
8
|
+
* This is a stub implementation that returns not-supported responses.
|
|
9
|
+
* Publishers should extend or replace this with their actual evaluation logic.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.defaultContentStandardsAdapter = exports.ContentStandardsAdapter = exports.ContentStandardsErrorCodes = void 0;
|
|
13
|
+
exports.isContentStandardsError = isContentStandardsError;
|
|
14
|
+
/**
|
|
15
|
+
* Error codes for content standards operations
|
|
16
|
+
*/
|
|
17
|
+
exports.ContentStandardsErrorCodes = {
|
|
18
|
+
NOT_SUPPORTED: 'content_standards_not_supported',
|
|
19
|
+
STANDARDS_NOT_FOUND: 'standards_not_found',
|
|
20
|
+
INVALID_STANDARDS: 'invalid_standards',
|
|
21
|
+
EVALUATION_FAILED: 'evaluation_failed',
|
|
22
|
+
QUOTA_EXCEEDED: 'quota_exceeded',
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Stub implementation of ContentStandardsAdapter.
|
|
26
|
+
* Returns not-supported errors for all operations.
|
|
27
|
+
*
|
|
28
|
+
* Publishers should extend this class or provide their own implementation
|
|
29
|
+
* that integrates with their brand safety systems.
|
|
30
|
+
*/
|
|
31
|
+
class ContentStandardsAdapter {
|
|
32
|
+
/**
|
|
33
|
+
* Check if content standards are supported.
|
|
34
|
+
* Override this to return true when implementing real logic.
|
|
35
|
+
*/
|
|
36
|
+
isSupported() {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
async listStandards(request) {
|
|
40
|
+
if (!this.isSupported()) {
|
|
41
|
+
return {
|
|
42
|
+
errors: [
|
|
43
|
+
{
|
|
44
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
45
|
+
message: 'Content standards are not supported by this server',
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Override in subclass to return actual standards
|
|
51
|
+
return {
|
|
52
|
+
standards: [],
|
|
53
|
+
context: request.context,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async getStandards(request) {
|
|
57
|
+
if (!this.isSupported()) {
|
|
58
|
+
return {
|
|
59
|
+
errors: [
|
|
60
|
+
{
|
|
61
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
62
|
+
message: 'Content standards are not supported by this server',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Override in subclass to return actual standards
|
|
68
|
+
return {
|
|
69
|
+
errors: [
|
|
70
|
+
{
|
|
71
|
+
code: exports.ContentStandardsErrorCodes.STANDARDS_NOT_FOUND,
|
|
72
|
+
message: `Standards not found: ${request.standards_id}`,
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async createStandards(request) {
|
|
78
|
+
if (!this.isSupported()) {
|
|
79
|
+
return {
|
|
80
|
+
errors: [
|
|
81
|
+
{
|
|
82
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
83
|
+
message: 'Content standards are not supported by this server',
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Override in subclass to implement creation logic
|
|
89
|
+
return {
|
|
90
|
+
errors: [
|
|
91
|
+
{
|
|
92
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
93
|
+
message: 'Creating content standards is not implemented',
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
async updateStandards(request) {
|
|
99
|
+
if (!this.isSupported()) {
|
|
100
|
+
return {
|
|
101
|
+
errors: [
|
|
102
|
+
{
|
|
103
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
104
|
+
message: 'Content standards are not supported by this server',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Override in subclass to implement update logic
|
|
110
|
+
return {
|
|
111
|
+
errors: [
|
|
112
|
+
{
|
|
113
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
114
|
+
message: 'Updating content standards is not implemented',
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
async calibrateContent(request) {
|
|
120
|
+
if (!this.isSupported()) {
|
|
121
|
+
return {
|
|
122
|
+
errors: [
|
|
123
|
+
{
|
|
124
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
125
|
+
message: 'Content standards calibration is not supported by this server',
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
// Override in subclass to implement calibration logic
|
|
131
|
+
return {
|
|
132
|
+
errors: [
|
|
133
|
+
{
|
|
134
|
+
code: exports.ContentStandardsErrorCodes.EVALUATION_FAILED,
|
|
135
|
+
message: 'Content calibration is not implemented',
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
async validateContentDelivery(request) {
|
|
141
|
+
if (!this.isSupported()) {
|
|
142
|
+
return {
|
|
143
|
+
errors: [
|
|
144
|
+
{
|
|
145
|
+
code: exports.ContentStandardsErrorCodes.NOT_SUPPORTED,
|
|
146
|
+
message: 'Content delivery validation is not supported by this server',
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
context: request.context,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// Override in subclass to implement validation logic
|
|
153
|
+
// Stub returns all records as passed (no filtering)
|
|
154
|
+
return {
|
|
155
|
+
summary: {
|
|
156
|
+
total_records: request.records.length,
|
|
157
|
+
passed_records: request.records.length,
|
|
158
|
+
failed_records: 0,
|
|
159
|
+
},
|
|
160
|
+
results: request.records.map(record => ({
|
|
161
|
+
record_id: record.record_id,
|
|
162
|
+
verdict: 'pass',
|
|
163
|
+
})),
|
|
164
|
+
context: request.context,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Evaluate a single artifact against content standards.
|
|
169
|
+
* Used by get_products and create_media_buy to filter content.
|
|
170
|
+
*/
|
|
171
|
+
async evaluateArtifact(standardsId, artifact) {
|
|
172
|
+
if (!this.isSupported()) {
|
|
173
|
+
// When not supported, all content passes (no filtering)
|
|
174
|
+
return {
|
|
175
|
+
verdict: 'pass',
|
|
176
|
+
confidence: 1.0,
|
|
177
|
+
explanation: 'Content standards evaluation not enabled',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// Override in subclass to implement actual evaluation
|
|
181
|
+
return {
|
|
182
|
+
verdict: 'pass',
|
|
183
|
+
confidence: 1.0,
|
|
184
|
+
explanation: 'Default pass-through (no evaluation implemented)',
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.ContentStandardsAdapter = ContentStandardsAdapter;
|
|
189
|
+
/**
|
|
190
|
+
* Helper to check if a response is an error response
|
|
191
|
+
*/
|
|
192
|
+
function isContentStandardsError(response) {
|
|
193
|
+
return 'errors' in response && Array.isArray(response.errors) && response.errors.length > 0;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Default singleton instance for servers that don't need content standards
|
|
197
|
+
*/
|
|
198
|
+
exports.defaultContentStandardsAdapter = new ContentStandardsAdapter();
|
|
199
|
+
//# sourceMappingURL=content-standards-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-standards-adapter.js","sourceRoot":"","sources":["../../../src/lib/adapters/content-standards-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-Side Adapters
|
|
3
|
+
*
|
|
4
|
+
* These adapters allow publishers/brands to plug in their business logic
|
|
5
|
+
* when implementing AdCP servers. Each adapter provides a stub implementation
|
|
6
|
+
* that can be extended or replaced.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* - ContentStandardsAdapter: Implement brand safety/suitability evaluation
|
|
10
|
+
* - PropertyListAdapter: Manage buyer-defined property lists
|
|
11
|
+
* - ProposalManager: Generate and refine media plan proposals
|
|
12
|
+
* - SISessionManager: Handle Sponsored Intelligence conversational sessions
|
|
13
|
+
*/
|
|
14
|
+
export { ContentStandardsAdapter, type IContentStandardsAdapter, type ContentEvaluationResult, ContentStandardsErrorCodes, isContentStandardsError, defaultContentStandardsAdapter, } from './content-standards-adapter';
|
|
15
|
+
export { PropertyListAdapter, type IPropertyListAdapter, type ResolvedProperty, PropertyListErrorCodes, isPropertyListError, defaultPropertyListAdapter, } from './property-list-adapter';
|
|
16
|
+
export { ProposalManager, AIProposalManager, type IProposalManager, type ProposalContext, ProposalErrorCodes, defaultProposalManager, } from './proposal-manager';
|
|
17
|
+
export { SISessionManager, AISISessionManager, type ISISessionManager, type SISession, SIErrorCodes, defaultSISessionManager, } from './si-session-manager';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Server-Side Adapters
|
|
4
|
+
*
|
|
5
|
+
* These adapters allow publishers/brands to plug in their business logic
|
|
6
|
+
* when implementing AdCP servers. Each adapter provides a stub implementation
|
|
7
|
+
* that can be extended or replaced.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* - ContentStandardsAdapter: Implement brand safety/suitability evaluation
|
|
11
|
+
* - PropertyListAdapter: Manage buyer-defined property lists
|
|
12
|
+
* - ProposalManager: Generate and refine media plan proposals
|
|
13
|
+
* - SISessionManager: Handle Sponsored Intelligence conversational sessions
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.defaultSISessionManager = exports.SIErrorCodes = exports.AISISessionManager = exports.SISessionManager = exports.defaultProposalManager = exports.ProposalErrorCodes = exports.AIProposalManager = exports.ProposalManager = exports.defaultPropertyListAdapter = exports.isPropertyListError = exports.PropertyListErrorCodes = exports.PropertyListAdapter = exports.defaultContentStandardsAdapter = exports.isContentStandardsError = exports.ContentStandardsErrorCodes = exports.ContentStandardsAdapter = void 0;
|
|
17
|
+
// Content Standards
|
|
18
|
+
var content_standards_adapter_1 = require("./content-standards-adapter");
|
|
19
|
+
Object.defineProperty(exports, "ContentStandardsAdapter", { enumerable: true, get: function () { return content_standards_adapter_1.ContentStandardsAdapter; } });
|
|
20
|
+
Object.defineProperty(exports, "ContentStandardsErrorCodes", { enumerable: true, get: function () { return content_standards_adapter_1.ContentStandardsErrorCodes; } });
|
|
21
|
+
Object.defineProperty(exports, "isContentStandardsError", { enumerable: true, get: function () { return content_standards_adapter_1.isContentStandardsError; } });
|
|
22
|
+
Object.defineProperty(exports, "defaultContentStandardsAdapter", { enumerable: true, get: function () { return content_standards_adapter_1.defaultContentStandardsAdapter; } });
|
|
23
|
+
// Property Lists
|
|
24
|
+
var property_list_adapter_1 = require("./property-list-adapter");
|
|
25
|
+
Object.defineProperty(exports, "PropertyListAdapter", { enumerable: true, get: function () { return property_list_adapter_1.PropertyListAdapter; } });
|
|
26
|
+
Object.defineProperty(exports, "PropertyListErrorCodes", { enumerable: true, get: function () { return property_list_adapter_1.PropertyListErrorCodes; } });
|
|
27
|
+
Object.defineProperty(exports, "isPropertyListError", { enumerable: true, get: function () { return property_list_adapter_1.isPropertyListError; } });
|
|
28
|
+
Object.defineProperty(exports, "defaultPropertyListAdapter", { enumerable: true, get: function () { return property_list_adapter_1.defaultPropertyListAdapter; } });
|
|
29
|
+
// Proposal Management
|
|
30
|
+
var proposal_manager_1 = require("./proposal-manager");
|
|
31
|
+
Object.defineProperty(exports, "ProposalManager", { enumerable: true, get: function () { return proposal_manager_1.ProposalManager; } });
|
|
32
|
+
Object.defineProperty(exports, "AIProposalManager", { enumerable: true, get: function () { return proposal_manager_1.AIProposalManager; } });
|
|
33
|
+
Object.defineProperty(exports, "ProposalErrorCodes", { enumerable: true, get: function () { return proposal_manager_1.ProposalErrorCodes; } });
|
|
34
|
+
Object.defineProperty(exports, "defaultProposalManager", { enumerable: true, get: function () { return proposal_manager_1.defaultProposalManager; } });
|
|
35
|
+
// Sponsored Intelligence Sessions
|
|
36
|
+
var si_session_manager_1 = require("./si-session-manager");
|
|
37
|
+
Object.defineProperty(exports, "SISessionManager", { enumerable: true, get: function () { return si_session_manager_1.SISessionManager; } });
|
|
38
|
+
Object.defineProperty(exports, "AISISessionManager", { enumerable: true, get: function () { return si_session_manager_1.AISISessionManager; } });
|
|
39
|
+
Object.defineProperty(exports, "SIErrorCodes", { enumerable: true, get: function () { return si_session_manager_1.SIErrorCodes; } });
|
|
40
|
+
Object.defineProperty(exports, "defaultSISessionManager", { enumerable: true, get: function () { return si_session_manager_1.defaultSISessionManager; } });
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,oBAAoB;AACpB,yEAOqC;AANnC,oIAAA,uBAAuB,OAAA;AAGvB,uIAAA,0BAA0B,OAAA;AAC1B,oIAAA,uBAAuB,OAAA;AACvB,2IAAA,8BAA8B,OAAA;AAGhC,iBAAiB;AACjB,iEAOiC;AAN/B,4HAAA,mBAAmB,OAAA;AAGnB,+HAAA,sBAAsB,OAAA;AACtB,4HAAA,mBAAmB,OAAA;AACnB,mIAAA,0BAA0B,OAAA;AAG5B,sBAAsB;AACtB,uDAO4B;AAN1B,mHAAA,eAAe,OAAA;AACf,qHAAA,iBAAiB,OAAA;AAGjB,sHAAA,kBAAkB,OAAA;AAClB,0HAAA,sBAAsB,OAAA;AAGxB,kCAAkC;AAClC,2DAO8B;AAN5B,sHAAA,gBAAgB,OAAA;AAChB,wHAAA,kBAAkB,OAAA;AAGlB,kHAAA,YAAY,OAAA;AACZ,6HAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property List Adapter
|
|
3
|
+
*
|
|
4
|
+
* Server-side adapter for implementing property list management logic.
|
|
5
|
+
* Publishers use this to manage buyer-defined property lists for filtering
|
|
6
|
+
* available inventory.
|
|
7
|
+
*
|
|
8
|
+
* This is a stub implementation that stores lists in memory.
|
|
9
|
+
* Publishers should extend or replace this with persistent storage.
|
|
10
|
+
*/
|
|
11
|
+
import type { CreatePropertyListRequest, CreatePropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse } from '../types/tools.generated';
|
|
12
|
+
/**
|
|
13
|
+
* Resolved property identifier
|
|
14
|
+
*/
|
|
15
|
+
export interface ResolvedProperty {
|
|
16
|
+
identifier_type: string;
|
|
17
|
+
identifier_value: string;
|
|
18
|
+
publisher_domain?: string;
|
|
19
|
+
display_name?: string;
|
|
20
|
+
status?: 'active' | 'inactive' | 'pending';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Error thrown when property list operations fail
|
|
24
|
+
*/
|
|
25
|
+
export declare class PropertyListError extends Error {
|
|
26
|
+
code: string;
|
|
27
|
+
constructor(code: string, message: string);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Abstract interface for property list adapters.
|
|
31
|
+
* Publishers implement this to provide their storage and resolution logic.
|
|
32
|
+
*/
|
|
33
|
+
export interface IPropertyListAdapter {
|
|
34
|
+
/**
|
|
35
|
+
* Check if property list management is supported by this server
|
|
36
|
+
*/
|
|
37
|
+
isSupported(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Create a new property list
|
|
40
|
+
*/
|
|
41
|
+
createList(request: CreatePropertyListRequest): Promise<CreatePropertyListResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* Update an existing property list
|
|
44
|
+
*/
|
|
45
|
+
updateList(request: UpdatePropertyListRequest): Promise<UpdatePropertyListResponse>;
|
|
46
|
+
/**
|
|
47
|
+
* Get a property list with optional resolution
|
|
48
|
+
*/
|
|
49
|
+
getList(request: GetPropertyListRequest): Promise<GetPropertyListResponse>;
|
|
50
|
+
/**
|
|
51
|
+
* List all property lists for a principal
|
|
52
|
+
*/
|
|
53
|
+
listLists(request: ListPropertyListsRequest): Promise<ListPropertyListsResponse>;
|
|
54
|
+
/**
|
|
55
|
+
* Delete a property list
|
|
56
|
+
*/
|
|
57
|
+
deleteList(request: DeletePropertyListRequest): Promise<DeletePropertyListResponse>;
|
|
58
|
+
/**
|
|
59
|
+
* Check if a property identifier is in a property list.
|
|
60
|
+
* Used by get_products and create_media_buy for filtering.
|
|
61
|
+
*/
|
|
62
|
+
isPropertyInList(listId: string, identifierType: string, identifierValue: string): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve a property list to its constituent identifiers.
|
|
65
|
+
* Applies filters and returns matching properties.
|
|
66
|
+
*/
|
|
67
|
+
resolveList(listId: string, maxResults?: number, cursor?: string): Promise<ResolvedProperty[]>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Error codes for property list operations
|
|
71
|
+
*/
|
|
72
|
+
export declare const PropertyListErrorCodes: {
|
|
73
|
+
readonly NOT_SUPPORTED: "property_lists_not_supported";
|
|
74
|
+
readonly LIST_NOT_FOUND: "list_not_found";
|
|
75
|
+
readonly INVALID_LIST: "invalid_list";
|
|
76
|
+
readonly PERMISSION_DENIED: "permission_denied";
|
|
77
|
+
readonly QUOTA_EXCEEDED: "quota_exceeded";
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Stub implementation of PropertyListAdapter.
|
|
81
|
+
* Uses in-memory storage for development and testing.
|
|
82
|
+
*
|
|
83
|
+
* Publishers should extend this class or provide their own implementation
|
|
84
|
+
* that integrates with their property management systems.
|
|
85
|
+
*/
|
|
86
|
+
export declare class PropertyListAdapter implements IPropertyListAdapter {
|
|
87
|
+
private lists;
|
|
88
|
+
private authTokens;
|
|
89
|
+
private nextId;
|
|
90
|
+
/**
|
|
91
|
+
* Check if property list management is supported.
|
|
92
|
+
* Override this to return true when implementing real logic.
|
|
93
|
+
*/
|
|
94
|
+
isSupported(): boolean;
|
|
95
|
+
createList(request: CreatePropertyListRequest): Promise<CreatePropertyListResponse>;
|
|
96
|
+
updateList(request: UpdatePropertyListRequest): Promise<UpdatePropertyListResponse>;
|
|
97
|
+
getList(request: GetPropertyListRequest): Promise<GetPropertyListResponse>;
|
|
98
|
+
listLists(request: ListPropertyListsRequest): Promise<ListPropertyListsResponse>;
|
|
99
|
+
deleteList(request: DeletePropertyListRequest): Promise<DeletePropertyListResponse>;
|
|
100
|
+
/**
|
|
101
|
+
* Check if a property is in a list.
|
|
102
|
+
* Stub implementation returns false (property not found).
|
|
103
|
+
*/
|
|
104
|
+
isPropertyInList(listId: string, identifierType: string, identifierValue: string): Promise<boolean>;
|
|
105
|
+
/**
|
|
106
|
+
* Resolve a property list to identifiers.
|
|
107
|
+
* Stub implementation returns empty array.
|
|
108
|
+
*/
|
|
109
|
+
resolveList(listId: string, maxResults?: number, cursor?: string): Promise<ResolvedProperty[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Generate a random token for auth
|
|
112
|
+
*/
|
|
113
|
+
protected generateToken(): string;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Helper to check if an error is a PropertyListError
|
|
117
|
+
*/
|
|
118
|
+
export declare function isPropertyListError(error: unknown): error is PropertyListError;
|
|
119
|
+
/**
|
|
120
|
+
* Default singleton instance for servers that don't need property list management
|
|
121
|
+
*/
|
|
122
|
+
export declare const defaultPropertyListAdapter: PropertyListAdapter;
|
|
123
|
+
//# sourceMappingURL=property-list-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-list-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/property-list-adapter.ts"],"names":[],"mappings":"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"}
|