@adcp/client 4.9.0 → 4.11.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 +232 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.d.ts +10 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.d.ts.map +1 -1
- package/dist/lib/auth/oauth/MCPOAuthProvider.js +19 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.js.map +1 -1
- package/dist/lib/core/AgentClient.d.ts +92 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/AgentClient.js +237 -0
- package/dist/lib/core/AgentClient.js.map +1 -1
- package/dist/lib/core/AsyncHandler.d.ts +18 -1
- package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
- package/dist/lib/core/AsyncHandler.js.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts +70 -2
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +106 -0
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/registry/types.generated.d.ts +12 -12
- package/dist/lib/registry/types.generated.js +1 -1
- package/dist/lib/testing/agent-tester.d.ts.map +1 -1
- package/dist/lib/testing/agent-tester.js.map +1 -1
- package/dist/lib/testing/client.d.ts +6 -1
- package/dist/lib/testing/client.d.ts.map +1 -1
- package/dist/lib/testing/client.js +36 -19
- package/dist/lib/testing/client.js.map +1 -1
- package/dist/lib/testing/compliance/briefs.d.ts +11 -0
- package/dist/lib/testing/compliance/briefs.d.ts.map +1 -0
- package/dist/lib/testing/compliance/briefs.js +156 -0
- package/dist/lib/testing/compliance/briefs.js.map +1 -0
- package/dist/lib/testing/compliance/comply.d.ts +28 -0
- package/dist/lib/testing/compliance/comply.d.ts.map +1 -0
- package/dist/lib/testing/compliance/comply.js +617 -0
- package/dist/lib/testing/compliance/comply.js.map +1 -0
- package/dist/lib/testing/compliance/index.d.ts +12 -0
- package/dist/lib/testing/compliance/index.d.ts.map +1 -0
- package/dist/lib/testing/compliance/index.js +20 -0
- package/dist/lib/testing/compliance/index.js.map +1 -0
- package/dist/lib/testing/compliance/profiles.d.ts +30 -0
- package/dist/lib/testing/compliance/profiles.d.ts.map +1 -0
- package/dist/lib/testing/compliance/profiles.js +388 -0
- package/dist/lib/testing/compliance/profiles.js.map +1 -0
- package/dist/lib/testing/compliance/types.d.ts +121 -0
- package/dist/lib/testing/compliance/types.d.ts.map +1 -0
- package/dist/lib/testing/compliance/types.js +6 -0
- package/dist/lib/testing/compliance/types.js.map +1 -0
- package/dist/lib/testing/index.d.ts +1 -0
- package/dist/lib/testing/index.d.ts.map +1 -1
- package/dist/lib/testing/index.js +13 -1
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/capabilities.js +14 -13
- package/dist/lib/testing/scenarios/capabilities.js.map +1 -1
- package/dist/lib/testing/scenarios/creative.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/creative.js +21 -14
- package/dist/lib/testing/scenarios/creative.js.map +1 -1
- package/dist/lib/testing/scenarios/discovery.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/discovery.js +7 -5
- package/dist/lib/testing/scenarios/discovery.js.map +1 -1
- package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/edge-cases.js +90 -112
- package/dist/lib/testing/scenarios/edge-cases.js.map +1 -1
- package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/governance.js +50 -39
- package/dist/lib/testing/scenarios/governance.js.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.d.ts +6 -5
- package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.js +141 -51
- package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.js +26 -22
- package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -1
- package/dist/lib/testing/scenarios/signals.d.ts +4 -8
- package/dist/lib/testing/scenarios/signals.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/signals.js +17 -59
- package/dist/lib/testing/scenarios/signals.js.map +1 -1
- package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/sponsored-intelligence.js +23 -19
- package/dist/lib/testing/scenarios/sponsored-intelligence.js.map +1 -1
- package/dist/lib/testing/types.d.ts +2 -1
- package/dist/lib/testing/types.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +22 -104
- 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 +75 -187
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +16 -44
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +23 -105
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +1 -1
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +6 -6
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/dist/lib/utils/request-normalizer.d.ts.map +1 -1
- package/dist/lib/utils/request-normalizer.js +12 -0
- package/dist/lib/utils/request-normalizer.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AdCP Compliance Assessment
|
|
4
|
+
*
|
|
5
|
+
* comply → "Your agent works" (deterministic, per-track)
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.getAllPlatformTypes = exports.getPlatformProfile = exports.getBriefsByVertical = exports.getBriefById = exports.SAMPLE_BRIEFS = exports.formatComplianceResultsJSON = exports.formatComplianceResults = exports.comply = void 0;
|
|
9
|
+
var comply_1 = require("./comply");
|
|
10
|
+
Object.defineProperty(exports, "comply", { enumerable: true, get: function () { return comply_1.comply; } });
|
|
11
|
+
Object.defineProperty(exports, "formatComplianceResults", { enumerable: true, get: function () { return comply_1.formatComplianceResults; } });
|
|
12
|
+
Object.defineProperty(exports, "formatComplianceResultsJSON", { enumerable: true, get: function () { return comply_1.formatComplianceResultsJSON; } });
|
|
13
|
+
var briefs_1 = require("./briefs");
|
|
14
|
+
Object.defineProperty(exports, "SAMPLE_BRIEFS", { enumerable: true, get: function () { return briefs_1.SAMPLE_BRIEFS; } });
|
|
15
|
+
Object.defineProperty(exports, "getBriefById", { enumerable: true, get: function () { return briefs_1.getBriefById; } });
|
|
16
|
+
Object.defineProperty(exports, "getBriefsByVertical", { enumerable: true, get: function () { return briefs_1.getBriefsByVertical; } });
|
|
17
|
+
var profiles_1 = require("./profiles");
|
|
18
|
+
Object.defineProperty(exports, "getPlatformProfile", { enumerable: true, get: function () { return profiles_1.getPlatformProfile; } });
|
|
19
|
+
Object.defineProperty(exports, "getAllPlatformTypes", { enumerable: true, get: function () { return profiles_1.getAllPlatformTypes; } });
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/testing/compliance/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,mCAAwF;AAA/E,gGAAA,MAAM,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AAAE,qHAAA,2BAA2B,OAAA;AAGrE,mCAA4E;AAAnE,uGAAA,aAAa,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAEzD,uCAAqE;AAA5D,8GAAA,kBAAkB,OAAA;AAAE,+GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform compliance profiles.
|
|
3
|
+
*
|
|
4
|
+
* Each profile defines what an agent of that platform type is expected
|
|
5
|
+
* to support, and runs coherence checks against the discovered agent profile.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentProfile } from '../types';
|
|
8
|
+
import type { ComplianceTrack, PlatformType, CoherenceFinding } from './types';
|
|
9
|
+
export interface PlatformProfile {
|
|
10
|
+
type: PlatformType;
|
|
11
|
+
label: string;
|
|
12
|
+
/** Tracks this platform type is expected to support */
|
|
13
|
+
expected_tracks: ComplianceTrack[];
|
|
14
|
+
/** Tools the agent should have for this platform type */
|
|
15
|
+
expected_tools: string[];
|
|
16
|
+
/** Channels that make sense for this platform type (at least one expected in products) */
|
|
17
|
+
expected_channels?: string[];
|
|
18
|
+
/** Run coherence checks against discovered agent profile */
|
|
19
|
+
checkCoherence: (profile: AgentProfile) => CoherenceFinding[];
|
|
20
|
+
}
|
|
21
|
+
export declare const PLATFORM_PROFILES: Record<PlatformType, PlatformProfile>;
|
|
22
|
+
/**
|
|
23
|
+
* Get the compliance profile for a platform type.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getPlatformProfile(type: PlatformType): PlatformProfile;
|
|
26
|
+
/**
|
|
27
|
+
* Get all available platform types.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAllPlatformTypes(): PlatformType[];
|
|
30
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/compliance/profiles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,yDAAyD;IACzD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,gBAAgB,EAAE,CAAC;CAC/D;AA6CD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CA4ZnE,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAKtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAEpD"}
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Platform compliance profiles.
|
|
4
|
+
*
|
|
5
|
+
* Each profile defines what an agent of that platform type is expected
|
|
6
|
+
* to support, and runs coherence checks against the discovered agent profile.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PLATFORM_PROFILES = void 0;
|
|
10
|
+
exports.getPlatformProfile = getPlatformProfile;
|
|
11
|
+
exports.getAllPlatformTypes = getAllPlatformTypes;
|
|
12
|
+
// ────────────────────────────────────────────────────────────
|
|
13
|
+
// Helpers
|
|
14
|
+
// ────────────────────────────────────────────────────────────
|
|
15
|
+
function missingTools(profile, expected) {
|
|
16
|
+
return expected.filter(t => !profile.tools.includes(t));
|
|
17
|
+
}
|
|
18
|
+
function toolFinding(tool, context) {
|
|
19
|
+
return {
|
|
20
|
+
expected: `Agent has ${tool}`,
|
|
21
|
+
actual: `${tool} not found in tool list`,
|
|
22
|
+
guidance: context,
|
|
23
|
+
severity: 'warning',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function channelSuggestion(expectedChannels) {
|
|
27
|
+
return {
|
|
28
|
+
expected: `Products include ${expectedChannels.join(' or ')} channel`,
|
|
29
|
+
actual: 'Cannot verify channels without running get_products',
|
|
30
|
+
guidance: `Ensure your products declare ${expectedChannels.join('/')} in their channels array.`,
|
|
31
|
+
severity: 'suggestion',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// ────────────────────────────────────────────────────────────
|
|
35
|
+
// Sales platform coherence checks
|
|
36
|
+
// ────────────────────────────────────────────────────────────
|
|
37
|
+
function salesBaseCheck(profile) {
|
|
38
|
+
const findings = [];
|
|
39
|
+
const coreSalesTools = ['get_products', 'create_media_buy'];
|
|
40
|
+
for (const tool of missingTools(profile, coreSalesTools)) {
|
|
41
|
+
findings.push(toolFinding(tool, `All sales platforms need ${tool} for the buy workflow.`));
|
|
42
|
+
}
|
|
43
|
+
return findings;
|
|
44
|
+
}
|
|
45
|
+
// ────────────────────────────────────────────────────────────
|
|
46
|
+
// Profile definitions
|
|
47
|
+
// ────────────────────────────────────────────────────────────
|
|
48
|
+
exports.PLATFORM_PROFILES = {
|
|
49
|
+
// ── Sales platforms ──────────────────────────────────────
|
|
50
|
+
display_ad_server: {
|
|
51
|
+
type: 'display_ad_server',
|
|
52
|
+
label: 'Display Ad Server',
|
|
53
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting'],
|
|
54
|
+
expected_tools: ['get_products', 'create_media_buy', 'list_creative_formats', 'sync_creatives'],
|
|
55
|
+
expected_channels: ['display'],
|
|
56
|
+
checkCoherence(profile) {
|
|
57
|
+
const findings = salesBaseCheck(profile);
|
|
58
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
59
|
+
findings.push(toolFinding(tool, 'Display ad servers need list_creative_formats so buyers know what tag/image formats you accept.'));
|
|
60
|
+
}
|
|
61
|
+
for (const tool of missingTools(profile, ['sync_creatives'])) {
|
|
62
|
+
findings.push(toolFinding(tool, 'Buyers deliver HTML tags and image assets via sync_creatives.'));
|
|
63
|
+
}
|
|
64
|
+
findings.push(channelSuggestion(['display']));
|
|
65
|
+
return findings;
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
video_ad_server: {
|
|
69
|
+
type: 'video_ad_server',
|
|
70
|
+
label: 'Video Ad Server',
|
|
71
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting'],
|
|
72
|
+
expected_tools: ['get_products', 'create_media_buy', 'list_creative_formats', 'sync_creatives'],
|
|
73
|
+
expected_channels: ['ctv', 'olv'],
|
|
74
|
+
checkCoherence(profile) {
|
|
75
|
+
const findings = salesBaseCheck(profile);
|
|
76
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
77
|
+
findings.push(toolFinding(tool, 'Video ad servers need list_creative_formats to declare VAST/video format support.'));
|
|
78
|
+
}
|
|
79
|
+
for (const tool of missingTools(profile, ['sync_creatives'])) {
|
|
80
|
+
findings.push(toolFinding(tool, 'Buyers deliver VAST tags and video assets via sync_creatives.'));
|
|
81
|
+
}
|
|
82
|
+
findings.push(channelSuggestion(['ctv', 'olv']));
|
|
83
|
+
return findings;
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
social_platform: {
|
|
87
|
+
type: 'social_platform',
|
|
88
|
+
label: 'Social Platform',
|
|
89
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting', 'audiences'],
|
|
90
|
+
expected_tools: ['get_products', 'create_media_buy', 'list_creative_formats', 'sync_audiences'],
|
|
91
|
+
expected_channels: ['social'],
|
|
92
|
+
checkCoherence(profile) {
|
|
93
|
+
const findings = salesBaseCheck(profile);
|
|
94
|
+
for (const tool of missingTools(profile, ['sync_audiences'])) {
|
|
95
|
+
findings.push(toolFinding(tool, 'Social platforms need sync_audiences — audience targeting is core to social advertising.'));
|
|
96
|
+
}
|
|
97
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
98
|
+
findings.push(toolFinding(tool, 'Social platforms need list_creative_formats to declare native ad formats (carousel, story, feed).'));
|
|
99
|
+
}
|
|
100
|
+
findings.push(channelSuggestion(['social']));
|
|
101
|
+
return findings;
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
pmax_platform: {
|
|
105
|
+
type: 'pmax_platform',
|
|
106
|
+
label: 'Performance Max Platform',
|
|
107
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting', 'audiences', 'signals'],
|
|
108
|
+
expected_tools: [
|
|
109
|
+
'get_products',
|
|
110
|
+
'create_media_buy',
|
|
111
|
+
'list_creative_formats',
|
|
112
|
+
'build_creative',
|
|
113
|
+
'sync_audiences',
|
|
114
|
+
'get_signals',
|
|
115
|
+
],
|
|
116
|
+
checkCoherence(profile) {
|
|
117
|
+
const findings = salesBaseCheck(profile);
|
|
118
|
+
for (const tool of missingTools(profile, ['build_creative'])) {
|
|
119
|
+
findings.push(toolFinding(tool, 'pMax platforms generate creative from brand assets — build_creative is the generative entry point.'));
|
|
120
|
+
}
|
|
121
|
+
for (const tool of missingTools(profile, ['sync_audiences'])) {
|
|
122
|
+
findings.push(toolFinding(tool, 'pMax platforms optimize across audience segments — sync_audiences enables first-party data.'));
|
|
123
|
+
}
|
|
124
|
+
for (const tool of missingTools(profile, ['get_signals'])) {
|
|
125
|
+
findings.push(toolFinding(tool, 'pMax platforms use signals for cross-channel optimization.'));
|
|
126
|
+
}
|
|
127
|
+
return findings;
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
dsp: {
|
|
131
|
+
type: 'dsp',
|
|
132
|
+
label: 'DSP / Ad Network',
|
|
133
|
+
expected_tracks: ['core', 'products', 'media_buy', 'reporting', 'governance'],
|
|
134
|
+
expected_tools: ['get_products', 'create_media_buy', 'get_media_buy_delivery'],
|
|
135
|
+
checkCoherence(profile) {
|
|
136
|
+
const findings = salesBaseCheck(profile);
|
|
137
|
+
for (const tool of missingTools(profile, ['get_media_buy_delivery'])) {
|
|
138
|
+
findings.push(toolFinding(tool, 'DSPs need get_media_buy_delivery for programmatic reporting and pacing data.'));
|
|
139
|
+
}
|
|
140
|
+
const hasGovernance = profile.tools.some(t => ['create_property_list', 'list_content_standards'].includes(t));
|
|
141
|
+
if (!hasGovernance) {
|
|
142
|
+
findings.push({
|
|
143
|
+
expected: 'Governance tools for brand safety controls',
|
|
144
|
+
actual: 'No governance tools found',
|
|
145
|
+
guidance: 'DSPs typically support property lists and content standards for brand safety.',
|
|
146
|
+
severity: 'suggestion',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return findings;
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
retail_media: {
|
|
153
|
+
type: 'retail_media',
|
|
154
|
+
label: 'Retail Media Network',
|
|
155
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting', 'audiences'],
|
|
156
|
+
expected_tools: ['get_products', 'create_media_buy', 'list_creative_formats', 'sync_audiences'],
|
|
157
|
+
expected_channels: ['retail_media'],
|
|
158
|
+
checkCoherence(profile) {
|
|
159
|
+
const findings = salesBaseCheck(profile);
|
|
160
|
+
for (const tool of missingTools(profile, ['sync_audiences'])) {
|
|
161
|
+
findings.push(toolFinding(tool, 'Retail media networks need sync_audiences for shopper audience segments.'));
|
|
162
|
+
}
|
|
163
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
164
|
+
findings.push(toolFinding(tool, 'Retail media networks need list_creative_formats to declare sponsored product and display formats.'));
|
|
165
|
+
}
|
|
166
|
+
findings.push(channelSuggestion(['retail_media']));
|
|
167
|
+
return findings;
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
search_platform: {
|
|
171
|
+
type: 'search_platform',
|
|
172
|
+
label: 'Search Platform',
|
|
173
|
+
expected_tracks: ['core', 'products', 'media_buy', 'reporting'],
|
|
174
|
+
expected_tools: ['get_products', 'create_media_buy'],
|
|
175
|
+
expected_channels: ['search'],
|
|
176
|
+
checkCoherence(profile) {
|
|
177
|
+
const findings = salesBaseCheck(profile);
|
|
178
|
+
findings.push(channelSuggestion(['search']));
|
|
179
|
+
findings.push({
|
|
180
|
+
expected: 'Products support keyword targeting via targeting_overlay',
|
|
181
|
+
actual: 'Cannot verify without running create_media_buy',
|
|
182
|
+
guidance: 'Search platforms should accept keyword_targets in the targeting overlay with broad/phrase/exact match types.',
|
|
183
|
+
severity: 'suggestion',
|
|
184
|
+
});
|
|
185
|
+
return findings;
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
audio_platform: {
|
|
189
|
+
type: 'audio_platform',
|
|
190
|
+
label: 'Audio / Podcast Platform',
|
|
191
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting'],
|
|
192
|
+
expected_tools: ['get_products', 'create_media_buy', 'list_creative_formats'],
|
|
193
|
+
expected_channels: ['podcast', 'streaming_audio'],
|
|
194
|
+
checkCoherence(profile) {
|
|
195
|
+
const findings = salesBaseCheck(profile);
|
|
196
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
197
|
+
findings.push(toolFinding(tool, 'Audio platforms need list_creative_formats to declare audio/DAAST format support.'));
|
|
198
|
+
}
|
|
199
|
+
findings.push(channelSuggestion(['podcast', 'streaming_audio']));
|
|
200
|
+
return findings;
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
// ── Creative agents ──────────────────────────────────────
|
|
204
|
+
creative_transformer: {
|
|
205
|
+
type: 'creative_transformer',
|
|
206
|
+
label: 'Creative Transformer',
|
|
207
|
+
expected_tracks: ['core', 'creative'],
|
|
208
|
+
expected_tools: ['build_creative', 'preview_creative', 'list_creative_formats'],
|
|
209
|
+
checkCoherence(profile) {
|
|
210
|
+
const findings = [];
|
|
211
|
+
for (const tool of missingTools(profile, ['build_creative'])) {
|
|
212
|
+
findings.push(toolFinding(tool, 'Creative transformers need build_creative — it is the core tool for accepting assets and returning transformed creative.'));
|
|
213
|
+
}
|
|
214
|
+
for (const tool of missingTools(profile, ['preview_creative'])) {
|
|
215
|
+
findings.push(toolFinding(tool, 'preview_creative lets buyers verify transformed output before going live.'));
|
|
216
|
+
}
|
|
217
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
218
|
+
findings.push(toolFinding(tool, 'list_creative_formats declares what input/output format transformations you support.'));
|
|
219
|
+
}
|
|
220
|
+
// Warn if stateful tools present — suggests this is actually a creative_ad_server
|
|
221
|
+
const statefulTools = ['sync_creatives', 'list_creatives'].filter(t => profile.tools.includes(t));
|
|
222
|
+
if (statefulTools.length > 0) {
|
|
223
|
+
findings.push({
|
|
224
|
+
expected: 'Stateless transformer (no creative library)',
|
|
225
|
+
actual: `Agent has stateful tools: ${statefulTools.join(', ')}`,
|
|
226
|
+
guidance: 'If your agent manages a creative library, consider using creative_ad_server as your platform type.',
|
|
227
|
+
severity: 'suggestion',
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
return findings;
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
creative_library: {
|
|
234
|
+
type: 'creative_library',
|
|
235
|
+
label: 'Creative Format Library',
|
|
236
|
+
expected_tracks: ['core', 'creative'],
|
|
237
|
+
expected_tools: ['preview_creative', 'list_creative_formats'],
|
|
238
|
+
checkCoherence(profile) {
|
|
239
|
+
const findings = [];
|
|
240
|
+
for (const tool of missingTools(profile, ['list_creative_formats'])) {
|
|
241
|
+
findings.push(toolFinding(tool, 'Creative libraries need list_creative_formats — it is how buyers discover your available formats.'));
|
|
242
|
+
}
|
|
243
|
+
for (const tool of missingTools(profile, ['preview_creative'])) {
|
|
244
|
+
findings.push(toolFinding(tool, 'preview_creative lets buyers see how formats render.'));
|
|
245
|
+
}
|
|
246
|
+
if (profile.tools.includes('build_creative')) {
|
|
247
|
+
findings.push({
|
|
248
|
+
expected: 'Format library (no creative generation)',
|
|
249
|
+
actual: 'Agent has build_creative',
|
|
250
|
+
guidance: 'If your agent generates creative, consider using creative_transformer or creative_ad_server as your platform type.',
|
|
251
|
+
severity: 'suggestion',
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
return findings;
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
creative_ad_server: {
|
|
258
|
+
type: 'creative_ad_server',
|
|
259
|
+
label: 'Creative Ad Server',
|
|
260
|
+
expected_tracks: ['core', 'creative'],
|
|
261
|
+
expected_tools: ['build_creative', 'list_creatives', 'sync_creatives', 'preview_creative', 'list_creative_formats'],
|
|
262
|
+
checkCoherence(profile) {
|
|
263
|
+
const findings = [];
|
|
264
|
+
const allExpected = [
|
|
265
|
+
'build_creative',
|
|
266
|
+
'list_creatives',
|
|
267
|
+
'sync_creatives',
|
|
268
|
+
'preview_creative',
|
|
269
|
+
'list_creative_formats',
|
|
270
|
+
];
|
|
271
|
+
for (const tool of missingTools(profile, allExpected)) {
|
|
272
|
+
const descriptions = {
|
|
273
|
+
build_creative: 'build_creative handles creative generation and assembly.',
|
|
274
|
+
list_creatives: 'list_creatives lets buyers browse the creative library.',
|
|
275
|
+
sync_creatives: 'sync_creatives manages the creative approval/rejection lifecycle.',
|
|
276
|
+
preview_creative: 'preview_creative lets buyers verify creative before going live.',
|
|
277
|
+
list_creative_formats: 'list_creative_formats declares supported format specifications.',
|
|
278
|
+
};
|
|
279
|
+
findings.push(toolFinding(tool, descriptions[tool] ?? `Creative ad servers need ${tool}.`));
|
|
280
|
+
}
|
|
281
|
+
return findings;
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
// ── Sponsored intelligence ───────────────────────────────
|
|
285
|
+
si_platform: {
|
|
286
|
+
type: 'si_platform',
|
|
287
|
+
label: 'Sponsored Intelligence Platform',
|
|
288
|
+
expected_tracks: ['core', 'si'],
|
|
289
|
+
expected_tools: ['si_get_offering', 'si_initiate_session', 'si_send_message', 'si_terminate_session'],
|
|
290
|
+
expected_channels: ['sponsored_intelligence'],
|
|
291
|
+
checkCoherence(profile) {
|
|
292
|
+
const findings = [];
|
|
293
|
+
const siTools = ['si_get_offering', 'si_initiate_session', 'si_send_message', 'si_terminate_session'];
|
|
294
|
+
for (const tool of missingTools(profile, siTools)) {
|
|
295
|
+
findings.push(toolFinding(tool, `SI platforms need the full session lifecycle. ${tool} is required.`));
|
|
296
|
+
}
|
|
297
|
+
findings.push(channelSuggestion(['sponsored_intelligence']));
|
|
298
|
+
return findings;
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
// ── AI-native platforms ──────────────────────────────────
|
|
302
|
+
ai_ad_network: {
|
|
303
|
+
type: 'ai_ad_network',
|
|
304
|
+
label: 'AI Ad Network',
|
|
305
|
+
expected_tracks: ['core', 'products', 'media_buy', 'si', 'reporting', 'governance'],
|
|
306
|
+
expected_tools: [
|
|
307
|
+
'get_products',
|
|
308
|
+
'create_media_buy',
|
|
309
|
+
'si_get_offering',
|
|
310
|
+
'si_initiate_session',
|
|
311
|
+
'si_send_message',
|
|
312
|
+
'si_terminate_session',
|
|
313
|
+
],
|
|
314
|
+
checkCoherence(profile) {
|
|
315
|
+
const findings = salesBaseCheck(profile);
|
|
316
|
+
const siTools = ['si_get_offering', 'si_initiate_session', 'si_send_message', 'si_terminate_session'];
|
|
317
|
+
for (const tool of missingTools(profile, siTools)) {
|
|
318
|
+
findings.push(toolFinding(tool, 'AI ad networks aggregate AI-powered inventory — SI tools enable conversational ad surfaces.'));
|
|
319
|
+
}
|
|
320
|
+
const hasGovernance = profile.tools.some(t => ['create_property_list', 'list_content_standards'].includes(t));
|
|
321
|
+
if (!hasGovernance) {
|
|
322
|
+
findings.push({
|
|
323
|
+
expected: 'Governance tools for cross-property brand safety',
|
|
324
|
+
actual: 'No governance tools found',
|
|
325
|
+
guidance: 'AI ad networks routing across properties should support governance for brand safety controls.',
|
|
326
|
+
severity: 'suggestion',
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
return findings;
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
ai_platform: {
|
|
333
|
+
type: 'ai_platform',
|
|
334
|
+
label: 'AI Platform',
|
|
335
|
+
expected_tracks: ['core', 'products', 'media_buy', 'si', 'reporting'],
|
|
336
|
+
expected_tools: [
|
|
337
|
+
'get_products',
|
|
338
|
+
'create_media_buy',
|
|
339
|
+
'si_get_offering',
|
|
340
|
+
'si_initiate_session',
|
|
341
|
+
'si_send_message',
|
|
342
|
+
'si_terminate_session',
|
|
343
|
+
],
|
|
344
|
+
checkCoherence(profile) {
|
|
345
|
+
const findings = salesBaseCheck(profile);
|
|
346
|
+
const siTools = ['si_get_offering', 'si_initiate_session', 'si_send_message', 'si_terminate_session'];
|
|
347
|
+
for (const tool of missingTools(profile, siTools)) {
|
|
348
|
+
findings.push(toolFinding(tool, 'AI platforms monetize via sponsored conversations — SI tools are the conversational ad surface.'));
|
|
349
|
+
}
|
|
350
|
+
return findings;
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
generative_dsp: {
|
|
354
|
+
type: 'generative_dsp',
|
|
355
|
+
label: 'Generative DSP',
|
|
356
|
+
expected_tracks: ['core', 'products', 'media_buy', 'creative', 'reporting', 'audiences', 'governance'],
|
|
357
|
+
expected_tools: ['get_products', 'create_media_buy', 'build_creative', 'sync_audiences', 'get_media_buy_delivery'],
|
|
358
|
+
checkCoherence(profile) {
|
|
359
|
+
const findings = salesBaseCheck(profile);
|
|
360
|
+
for (const tool of missingTools(profile, ['build_creative'])) {
|
|
361
|
+
findings.push(toolFinding(tool, 'Generative DSPs create creative on the fly — build_creative is the generative entry point.'));
|
|
362
|
+
}
|
|
363
|
+
for (const tool of missingTools(profile, ['sync_audiences'])) {
|
|
364
|
+
findings.push(toolFinding(tool, 'Generative DSPs optimize across audience segments — sync_audiences enables first-party data.'));
|
|
365
|
+
}
|
|
366
|
+
for (const tool of missingTools(profile, ['get_media_buy_delivery'])) {
|
|
367
|
+
findings.push(toolFinding(tool, 'DSPs need get_media_buy_delivery for programmatic reporting and pacing data.'));
|
|
368
|
+
}
|
|
369
|
+
return findings;
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
};
|
|
373
|
+
/**
|
|
374
|
+
* Get the compliance profile for a platform type.
|
|
375
|
+
*/
|
|
376
|
+
function getPlatformProfile(type) {
|
|
377
|
+
if (!Object.prototype.hasOwnProperty.call(exports.PLATFORM_PROFILES, type)) {
|
|
378
|
+
throw new Error(`Unknown platform type: ${type}`);
|
|
379
|
+
}
|
|
380
|
+
return exports.PLATFORM_PROFILES[type];
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Get all available platform types.
|
|
384
|
+
*/
|
|
385
|
+
function getAllPlatformTypes() {
|
|
386
|
+
return Object.keys(exports.PLATFORM_PROFILES);
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/lib/testing/compliance/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for AdCP Agent Compliance Assessment
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentProfile, TestResult, TestScenario } from '../types';
|
|
5
|
+
/**
|
|
6
|
+
* Capability tracks are independent areas of protocol compliance.
|
|
7
|
+
* An agent can be strong in creative but skip media buy — tracks
|
|
8
|
+
* are assessed independently, not as linear levels.
|
|
9
|
+
*/
|
|
10
|
+
export type ComplianceTrack = 'core' | 'products' | 'media_buy' | 'creative' | 'reporting' | 'governance' | 'signals' | 'si' | 'audiences';
|
|
11
|
+
export type TrackStatus = 'pass' | 'fail' | 'skip' | 'partial' | 'expected';
|
|
12
|
+
export interface TrackResult {
|
|
13
|
+
track: ComplianceTrack;
|
|
14
|
+
status: TrackStatus;
|
|
15
|
+
/** Human-readable label for this track */
|
|
16
|
+
label: string;
|
|
17
|
+
/** Scenarios that were run for this track */
|
|
18
|
+
scenarios: TestResult[];
|
|
19
|
+
/** Scenarios skipped (agent doesn't support required tools) */
|
|
20
|
+
skipped_scenarios: TestScenario[];
|
|
21
|
+
/** Advisory observations collected during this track */
|
|
22
|
+
observations: AdvisoryObservation[];
|
|
23
|
+
/** Total time for this track */
|
|
24
|
+
duration_ms: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ComplianceResult {
|
|
27
|
+
agent_url: string;
|
|
28
|
+
agent_profile: AgentProfile;
|
|
29
|
+
/** Per-track results — every applicable track is run */
|
|
30
|
+
tracks: TrackResult[];
|
|
31
|
+
/** Quick summary: how many tracks pass/fail/skip */
|
|
32
|
+
summary: ComplianceSummary;
|
|
33
|
+
/** Advisory observations across all tracks */
|
|
34
|
+
observations: AdvisoryObservation[];
|
|
35
|
+
/** Platform coherence assessment (only when platform_type provided) */
|
|
36
|
+
platform_coherence?: PlatformCoherenceResult;
|
|
37
|
+
tested_at: string;
|
|
38
|
+
total_duration_ms: number;
|
|
39
|
+
dry_run: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface ComplianceSummary {
|
|
42
|
+
tracks_passed: number;
|
|
43
|
+
tracks_failed: number;
|
|
44
|
+
tracks_skipped: number;
|
|
45
|
+
tracks_partial: number;
|
|
46
|
+
tracks_expected: number;
|
|
47
|
+
/** One-line status */
|
|
48
|
+
headline: string;
|
|
49
|
+
}
|
|
50
|
+
export type ObservationCategory = 'completeness' | 'quality' | 'performance' | 'best_practice' | 'merchandising' | 'pricing' | 'relevance' | 'auth' | 'coherence';
|
|
51
|
+
export type ObservationSeverity = 'info' | 'suggestion' | 'warning' | 'error';
|
|
52
|
+
export interface AdvisoryObservation {
|
|
53
|
+
category: ObservationCategory;
|
|
54
|
+
severity: ObservationSeverity;
|
|
55
|
+
track?: ComplianceTrack;
|
|
56
|
+
message: string;
|
|
57
|
+
/** Concrete data backing this observation */
|
|
58
|
+
evidence?: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Sales platform types — agents that sell advertising inventory.
|
|
62
|
+
* All sales agents support the core media buy tools; the platform type
|
|
63
|
+
* determines what coherence checks apply to inputs, outputs, and features.
|
|
64
|
+
*/
|
|
65
|
+
export type SalesPlatformType = 'display_ad_server' | 'video_ad_server' | 'social_platform' | 'pmax_platform' | 'dsp' | 'retail_media' | 'search_platform' | 'audio_platform';
|
|
66
|
+
/**
|
|
67
|
+
* Creative agent types — differ in statefulness and tool surface.
|
|
68
|
+
*/
|
|
69
|
+
export type CreativeAgentType = 'creative_transformer' | 'creative_library' | 'creative_ad_server';
|
|
70
|
+
/**
|
|
71
|
+
* Sponsored intelligence agent types — AI chat/conversational monetization.
|
|
72
|
+
*/
|
|
73
|
+
export type SponsoredIntelligenceType = 'si_platform';
|
|
74
|
+
/**
|
|
75
|
+
* AI-native platform types — platforms with AI at the core.
|
|
76
|
+
*/
|
|
77
|
+
export type AINativePlatformType = 'ai_ad_network' | 'ai_platform' | 'generative_dsp';
|
|
78
|
+
export type PlatformType = SalesPlatformType | CreativeAgentType | SponsoredIntelligenceType | AINativePlatformType;
|
|
79
|
+
/**
|
|
80
|
+
* A coherence finding: something expected by the platform type
|
|
81
|
+
* that is missing or inconsistent in the agent's actual capabilities.
|
|
82
|
+
*/
|
|
83
|
+
export interface CoherenceFinding {
|
|
84
|
+
/** What was expected based on the platform type */
|
|
85
|
+
expected: string;
|
|
86
|
+
/** What was actually found (or not found) */
|
|
87
|
+
actual: string;
|
|
88
|
+
/** Actionable guidance for the developer */
|
|
89
|
+
guidance: string;
|
|
90
|
+
severity: 'error' | 'warning' | 'suggestion';
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Platform-type-aware section of the compliance result.
|
|
94
|
+
* Only present when platform_type was provided in options.
|
|
95
|
+
*/
|
|
96
|
+
export interface PlatformCoherenceResult {
|
|
97
|
+
platform_type: PlatformType;
|
|
98
|
+
/** Human-readable label for the platform type */
|
|
99
|
+
label: string;
|
|
100
|
+
/** Tracks that this platform type expects the agent to support */
|
|
101
|
+
expected_tracks: ComplianceTrack[];
|
|
102
|
+
/** Tracks that are expected but the agent doesn't support */
|
|
103
|
+
missing_tracks: ComplianceTrack[];
|
|
104
|
+
/** Specific coherence findings */
|
|
105
|
+
findings: CoherenceFinding[];
|
|
106
|
+
/** Overall coherence: does the agent match what it claims to be? */
|
|
107
|
+
coherent: boolean;
|
|
108
|
+
}
|
|
109
|
+
export interface SampleBrief {
|
|
110
|
+
id: string;
|
|
111
|
+
name: string;
|
|
112
|
+
vertical: string;
|
|
113
|
+
brief: string;
|
|
114
|
+
/** What a strong response looks like */
|
|
115
|
+
evaluation_hints: string;
|
|
116
|
+
/** Budget context for evaluation */
|
|
117
|
+
budget_context?: string;
|
|
118
|
+
/** Expected channels */
|
|
119
|
+
expected_channels?: string[];
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/compliance/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/testing/compliance/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { testAgent, testAgentA2A, testAgentClient, createTestAgent, TEST_AGENT_TOKEN, TEST_AGENT_MCP_CONFIG, TEST_AGENT_A2A_CONFIG, testAgentNoAuth, testAgentNoAuthA2A, TEST_AGENT_NO_AUTH_MCP_CONFIG, TEST_AGENT_NO_AUTH_A2A_CONFIG, creativeAgent, } from './test-helpers';
|
|
2
2
|
export { testAgent as runAgentTests, formatTestResults, formatTestResultsJSON, formatTestResultsSummary, setAgentTesterLogger, getLogger, createTestClient, runStep, testHealthCheck, testDiscovery, testCreateMediaBuy, testFullSalesFlow, testCreativeSync, testCreativeInline, testCreativeFlow, testSignalsFlow, testErrorHandling, testValidation, testPricingEdgeCases, testTemporalValidation, testBehaviorAnalysis, testResponseConsistency, testGovernancePropertyLists, testGovernanceContentStandards, testPropertyListFilters, testSISessionLifecycle, testSIAvailability, testSIHandoff, testCapabilityDiscovery, testSyncAudiences, resolveAccountForAudiences, testSchemaCompliance, hasGovernanceTools, hasSITools, likelySupportsV3, testAllScenarios, getApplicableScenarios, SCENARIO_REQUIREMENTS, DEFAULT_SCENARIOS, formatSuiteResults, formatSuiteResultsJSON, type TestScenario, type TestOptions, type OrchestratorOptions, type TestResult, type SuiteResult, type TestStepResult, type AgentProfile, type TaskResult, type Logger, } from './agent-tester';
|
|
3
|
+
export { comply, formatComplianceResults, formatComplianceResultsJSON, SAMPLE_BRIEFS, getBriefById, getBriefsByVertical, getPlatformProfile, getAllPlatformTypes, type ComplyOptions, type ComplianceTrack, type TrackResult, type TrackStatus, type ComplianceResult, type ComplianceSummary, type AdvisoryObservation, type SampleBrief, type PlatformType, type SalesPlatformType, type CreativeAgentType, type SponsoredIntelligenceType, type AINativePlatformType, type PlatformProfile, type CoherenceFinding, type PlatformCoherenceResult, } from './compliance';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/testing/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EACT,YAAY,EACZ,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EAErB,eAAe,EACf,kBAAkB,EAClB,6BAA6B,EAC7B,6BAA6B,EAE7B,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,OAAO,EAEP,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EAEvB,2BAA2B,EAC3B,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EAEpB,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAEhB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EAEtB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,MAAM,GACZ,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/testing/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EACT,YAAY,EACZ,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EAErB,eAAe,EACf,kBAAkB,EAClB,6BAA6B,EAC7B,6BAA6B,EAE7B,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,OAAO,EAEP,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EAEvB,2BAA2B,EAC3B,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EAEpB,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAEhB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EAEtB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,MAAM,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,MAAM,EACN,uBAAuB,EACvB,2BAA2B,EAE3B,aAAa,EACb,YAAY,EACZ,mBAAmB,EAEnB,kBAAkB,EAClB,mBAAmB,EAEnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC"}
|