@adcp/client 3.7.1 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/bin/adcp.js +51 -12
  2. package/dist/lib/adapters/content-standards-adapter.d.ts +106 -0
  3. package/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -0
  4. package/dist/lib/adapters/content-standards-adapter.js +199 -0
  5. package/dist/lib/adapters/content-standards-adapter.js.map +1 -0
  6. package/dist/lib/adapters/index.d.ts +18 -0
  7. package/dist/lib/adapters/index.d.ts.map +1 -0
  8. package/dist/lib/adapters/index.js +41 -0
  9. package/dist/lib/adapters/index.js.map +1 -0
  10. package/dist/lib/adapters/property-list-adapter.d.ts +123 -0
  11. package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -0
  12. package/dist/lib/adapters/property-list-adapter.js +212 -0
  13. package/dist/lib/adapters/property-list-adapter.js.map +1 -0
  14. package/dist/lib/adapters/proposal-manager.d.ts +142 -0
  15. package/dist/lib/adapters/proposal-manager.d.ts.map +1 -0
  16. package/dist/lib/adapters/proposal-manager.js +184 -0
  17. package/dist/lib/adapters/proposal-manager.js.map +1 -0
  18. package/dist/lib/adapters/si-session-manager.d.ts +161 -0
  19. package/dist/lib/adapters/si-session-manager.d.ts.map +1 -0
  20. package/dist/lib/adapters/si-session-manager.js +320 -0
  21. package/dist/lib/adapters/si-session-manager.js.map +1 -0
  22. package/dist/lib/agents/index.generated.d.ts +109 -33
  23. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  24. package/dist/lib/agents/index.generated.js +162 -36
  25. package/dist/lib/agents/index.generated.js.map +1 -1
  26. package/dist/lib/core/ADCPMultiAgentClient.d.ts +5 -7
  27. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  28. package/dist/lib/core/ADCPMultiAgentClient.js +47 -35
  29. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  30. package/dist/lib/core/AgentClient.d.ts +13 -6
  31. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  32. package/dist/lib/core/AgentClient.js +23 -13
  33. package/dist/lib/core/AgentClient.js.map +1 -1
  34. package/dist/lib/core/AsyncHandler.d.ts +1 -2
  35. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  36. package/dist/lib/core/AsyncHandler.js +0 -3
  37. package/dist/lib/core/AsyncHandler.js.map +1 -1
  38. package/dist/lib/core/ResponseValidator.d.ts.map +1 -1
  39. package/dist/lib/core/ResponseValidator.js +0 -1
  40. package/dist/lib/core/ResponseValidator.js.map +1 -1
  41. package/dist/lib/core/SingleAgentClient.d.ts +102 -10
  42. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  43. package/dist/lib/core/SingleAgentClient.js +244 -17
  44. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  45. package/dist/lib/core/TaskExecutor.d.ts +7 -0
  46. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  47. package/dist/lib/core/TaskExecutor.js +25 -1
  48. package/dist/lib/core/TaskExecutor.js.map +1 -1
  49. package/dist/lib/discovery/property-crawler.d.ts +13 -2
  50. package/dist/lib/discovery/property-crawler.d.ts.map +1 -1
  51. package/dist/lib/discovery/property-crawler.js +48 -13
  52. package/dist/lib/discovery/property-crawler.js.map +1 -1
  53. package/dist/lib/discovery/types.d.ts +7 -1
  54. package/dist/lib/discovery/types.d.ts.map +1 -1
  55. package/dist/lib/index.d.ts +13 -4
  56. package/dist/lib/index.d.ts.map +1 -1
  57. package/dist/lib/index.js +79 -5
  58. package/dist/lib/index.js.map +1 -1
  59. package/dist/lib/types/core.generated.d.ts +502 -238
  60. package/dist/lib/types/core.generated.d.ts.map +1 -1
  61. package/dist/lib/types/core.generated.js +2 -2
  62. package/dist/lib/types/core.generated.js.map +1 -1
  63. package/dist/lib/types/schemas.generated.d.ts +7237 -2284
  64. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  65. package/dist/lib/types/schemas.generated.js +1368 -461
  66. package/dist/lib/types/schemas.generated.js.map +1 -1
  67. package/dist/lib/types/tools.generated.d.ts +3128 -507
  68. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  69. package/dist/lib/types/tools.generated.js +1 -1
  70. package/dist/lib/types/tools.generated.js.map +1 -1
  71. package/dist/lib/utils/capabilities.d.ts +98 -0
  72. package/dist/lib/utils/capabilities.d.ts.map +1 -0
  73. package/dist/lib/utils/capabilities.js +155 -0
  74. package/dist/lib/utils/capabilities.js.map +1 -0
  75. package/dist/lib/utils/creative-adapter.d.ts +87 -0
  76. package/dist/lib/utils/creative-adapter.d.ts.map +1 -0
  77. package/dist/lib/utils/creative-adapter.js +125 -0
  78. package/dist/lib/utils/creative-adapter.js.map +1 -0
  79. package/dist/lib/utils/format-assets.d.ts +4 -16
  80. package/dist/lib/utils/format-assets.d.ts.map +1 -1
  81. package/dist/lib/utils/format-assets.js +16 -14
  82. package/dist/lib/utils/format-assets.js.map +1 -1
  83. package/dist/lib/utils/format-renders.d.ts +82 -0
  84. package/dist/lib/utils/format-renders.d.ts.map +1 -0
  85. package/dist/lib/utils/format-renders.js +137 -0
  86. package/dist/lib/utils/format-renders.js.map +1 -0
  87. package/dist/lib/utils/index.d.ts +2 -1
  88. package/dist/lib/utils/index.d.ts.map +1 -1
  89. package/dist/lib/utils/index.js +13 -3
  90. package/dist/lib/utils/index.js.map +1 -1
  91. package/dist/lib/utils/preview-normalizer.d.ts +109 -0
  92. package/dist/lib/utils/preview-normalizer.d.ts.map +1 -0
  93. package/dist/lib/utils/preview-normalizer.js +122 -0
  94. package/dist/lib/utils/preview-normalizer.js.map +1 -0
  95. package/dist/lib/utils/pricing-adapter.d.ts +121 -0
  96. package/dist/lib/utils/pricing-adapter.d.ts.map +1 -0
  97. package/dist/lib/utils/pricing-adapter.js +213 -0
  98. package/dist/lib/utils/pricing-adapter.js.map +1 -0
  99. package/dist/lib/utils/response-unwrapper.d.ts +2 -2
  100. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -1
  101. package/dist/lib/utils/response-unwrapper.js +2 -2
  102. package/dist/lib/utils/response-unwrapper.js.map +1 -1
  103. package/dist/lib/version.d.ts +15 -7
  104. package/dist/lib/version.d.ts.map +1 -1
  105. package/dist/lib/version.js +20 -11
  106. package/dist/lib/version.js.map +1 -1
  107. package/package.json +3 -3
package/bin/adcp.js CHANGED
@@ -41,7 +41,7 @@ const TEST_SCENARIOS = [
41
41
  // Note: These tokens are intentionally public for the AdCP test infrastructure.
42
42
  // They provide rate-limited access to test agents for SDK development and examples.
43
43
  const BUILT_IN_AGENTS = {
44
- test: {
44
+ 'test-mcp': {
45
45
  url: 'https://test-agent.adcontextprotocol.org/mcp/',
46
46
  protocol: 'mcp',
47
47
  auth_token: '1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ',
@@ -125,14 +125,30 @@ function extractProtocolMessage(conversation, protocol) {
125
125
  }
126
126
 
127
127
  /**
128
- * Display agent info - just calls library method
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 info = await client.agent(agentConfig.id).getAgentInfo();
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
- console.log(JSON.stringify(info, null, 2));
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) {
@@ -279,7 +318,7 @@ async function handleTestCommand(args) {
279
318
  agentUrl = agentArg;
280
319
  } else {
281
320
  console.error(`ERROR: '${agentArg}' is not a valid agent alias or URL\n`);
282
- console.error('Built-in aliases: test, test-a2a, creative');
321
+ console.error('Built-in aliases: test-mcp, test-a2a, creative');
283
322
  console.error(`Saved aliases: ${Object.keys(listAgents()).join(', ') || 'none'}\n`);
284
323
  process.exit(2);
285
324
  }
@@ -363,7 +402,7 @@ USAGE:
363
402
  npx @adcp/client <agent-alias|url> [tool-name] [payload] [options]
364
403
 
365
404
  ARGUMENTS:
366
- agent-alias|url Saved agent alias (e.g., 'test') or full URL to agent endpoint
405
+ agent-alias|url Saved agent alias (e.g., 'test-mcp') or full URL to agent endpoint
367
406
  tool-name Name of the tool to call (optional - omit to list available tools)
368
407
  payload JSON payload for the tool (default: {})
369
408
  - Can be inline JSON: '{"brief":"text"}'
@@ -381,7 +420,7 @@ OPTIONS:
381
420
  --debug Show debug information
382
421
 
383
422
  BUILT-IN TEST AGENTS:
384
- test AdCP public test agent (MCP, with auth)
423
+ test-mcp AdCP public test agent (MCP, with auth)
385
424
  test-a2a AdCP public test agent (A2A, with auth)
386
425
  test-no-auth AdCP public test agent (MCP, no auth - demonstrates errors)
387
426
  test-a2a-no-auth AdCP public test agent (A2A, no auth - demonstrates errors)
@@ -404,8 +443,8 @@ AGENT TESTING:
404
443
 
405
444
  EXAMPLES:
406
445
  # Use built-in test agent (zero config!)
407
- npx @adcp/client test
408
- npx @adcp/client test get_products '{"brief":"coffee brands"}'
446
+ npx @adcp/client test-mcp
447
+ npx @adcp/client test-mcp get_products '{"brief":"coffee brands"}'
409
448
  npx @adcp/client creative list_creative_formats
410
449
 
411
450
  # Use built-in test agent with A2A protocol
@@ -451,9 +490,9 @@ EXAMPLES:
451
490
  adcp myagent get_products '{"brief":"travel"}' --json | jq '.products[0]'
452
491
 
453
492
  # Run agent tests
454
- adcp test test # Test built-in test agent with discovery scenario
455
- adcp test test discovery # Explicit discovery scenario
456
- adcp test test full_sales_flow # Full media buy lifecycle test
493
+ adcp test test-mcp # Test built-in test agent with discovery scenario
494
+ adcp test test-mcp discovery # Explicit discovery scenario
495
+ adcp test test-mcp full_sales_flow # Full media buy lifecycle test
457
496
  adcp test https://my-agent.com discovery --auth $TOKEN
458
497
  adcp test myagent error_handling --json # JSON output for CI
459
498
  adcp test --list-scenarios # Show all available scenarios
@@ -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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"}