@adcp/client 3.4.0 → 3.5.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.
Files changed (80) hide show
  1. package/dist/lib/auth/index.d.ts +1 -7
  2. package/dist/lib/auth/index.d.ts.map +1 -1
  3. package/dist/lib/auth/index.js +2 -33
  4. package/dist/lib/auth/index.js.map +1 -1
  5. package/dist/lib/core/ADCPMultiAgentClient.d.ts +2 -3
  6. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  7. package/dist/lib/core/ADCPMultiAgentClient.js +3 -4
  8. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  9. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  10. package/dist/lib/core/ConfigurationManager.d.ts.map +1 -1
  11. package/dist/lib/core/ConfigurationManager.js +5 -14
  12. package/dist/lib/core/ConfigurationManager.js.map +1 -1
  13. package/dist/lib/core/CreativeAgentClient.js +1 -1
  14. package/dist/lib/core/CreativeAgentClient.js.map +1 -1
  15. package/dist/lib/core/SingleAgentClient.js +4 -4
  16. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  17. package/dist/lib/discovery/property-crawler.js +1 -1
  18. package/dist/lib/discovery/property-crawler.js.map +1 -1
  19. package/dist/lib/testing/agent-tester.d.ts +33 -0
  20. package/dist/lib/testing/agent-tester.d.ts.map +1 -0
  21. package/dist/lib/testing/agent-tester.js +211 -0
  22. package/dist/lib/testing/agent-tester.js.map +1 -0
  23. package/dist/lib/testing/client.d.ts +54 -0
  24. package/dist/lib/testing/client.d.ts.map +1 -0
  25. package/dist/lib/testing/client.js +293 -0
  26. package/dist/lib/testing/client.js.map +1 -0
  27. package/dist/lib/testing/formatter.d.ts +17 -0
  28. package/dist/lib/testing/formatter.d.ts.map +1 -0
  29. package/dist/lib/testing/formatter.js +79 -0
  30. package/dist/lib/testing/formatter.js.map +1 -0
  31. package/dist/lib/testing/index.d.ts +1 -0
  32. package/dist/lib/testing/index.d.ts.map +1 -1
  33. package/dist/lib/testing/index.js +26 -1
  34. package/dist/lib/testing/index.js.map +1 -1
  35. package/dist/lib/testing/scenarios/creative.d.ts +24 -0
  36. package/dist/lib/testing/scenarios/creative.d.ts.map +1 -0
  37. package/dist/lib/testing/scenarios/creative.js +224 -0
  38. package/dist/lib/testing/scenarios/creative.js.map +1 -0
  39. package/dist/lib/testing/scenarios/discovery.d.ts +15 -0
  40. package/dist/lib/testing/scenarios/discovery.d.ts.map +1 -0
  41. package/dist/lib/testing/scenarios/discovery.js +66 -0
  42. package/dist/lib/testing/scenarios/discovery.js.map +1 -0
  43. package/dist/lib/testing/scenarios/edge-cases.d.ts +64 -0
  44. package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -0
  45. package/dist/lib/testing/scenarios/edge-cases.js +610 -0
  46. package/dist/lib/testing/scenarios/edge-cases.js.map +1 -0
  47. package/dist/lib/testing/scenarios/health.d.ts +12 -0
  48. package/dist/lib/testing/scenarios/health.d.ts.map +1 -0
  49. package/dist/lib/testing/scenarios/health.js +21 -0
  50. package/dist/lib/testing/scenarios/health.js.map +1 -0
  51. package/dist/lib/testing/scenarios/index.d.ts +12 -0
  52. package/dist/lib/testing/scenarios/index.d.ts.map +1 -0
  53. package/dist/lib/testing/scenarios/index.js +38 -0
  54. package/dist/lib/testing/scenarios/index.js.map +1 -0
  55. package/dist/lib/testing/scenarios/media-buy.d.ts +59 -0
  56. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -0
  57. package/dist/lib/testing/scenarios/media-buy.js +422 -0
  58. package/dist/lib/testing/scenarios/media-buy.js.map +1 -0
  59. package/dist/lib/testing/scenarios/signals.d.ts +26 -0
  60. package/dist/lib/testing/scenarios/signals.d.ts.map +1 -0
  61. package/dist/lib/testing/scenarios/signals.js +227 -0
  62. package/dist/lib/testing/scenarios/signals.js.map +1 -0
  63. package/dist/lib/testing/test-helpers.d.ts.map +1 -1
  64. package/dist/lib/testing/test-helpers.js +2 -6
  65. package/dist/lib/testing/test-helpers.js.map +1 -1
  66. package/dist/lib/testing/types.d.ts +92 -0
  67. package/dist/lib/testing/types.d.ts.map +1 -0
  68. package/dist/lib/testing/types.js +6 -0
  69. package/dist/lib/testing/types.js.map +1 -0
  70. package/dist/lib/types/adcp.d.ts +1 -4
  71. package/dist/lib/types/adcp.d.ts.map +1 -1
  72. package/dist/lib/types/core.generated.js +2 -2
  73. package/dist/lib/types/schemas.generated.d.ts +3 -4
  74. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  75. package/dist/lib/types/schemas.generated.js +11 -5
  76. package/dist/lib/types/schemas.generated.js.map +1 -1
  77. package/dist/lib/types/tools.generated.d.ts +57 -30
  78. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  79. package/dist/lib/types/tools.generated.js.map +1 -1
  80. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Health Check Testing Scenario
4
+ *
5
+ * Verifies the agent is responding and has an agent card.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.testHealthCheck = testHealthCheck;
9
+ const client_1 = require("../client");
10
+ /**
11
+ * Test: Health Check
12
+ * Verifies the agent is responding and has an agent card
13
+ */
14
+ async function testHealthCheck(agentUrl, options) {
15
+ const steps = [];
16
+ const client = (0, client_1.createTestClient)(agentUrl, options.protocol || 'mcp', options);
17
+ const { step } = await (0, client_1.discoverAgentProfile)(client);
18
+ steps.push(step);
19
+ return steps;
20
+ }
21
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../src/lib/testing/scenarios/health.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AASH,0CAQC;AAdD,sCAAmE;AAEnE;;;GAGG;AACI,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAoB;IAC1E,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Test Scenarios Index
3
+ *
4
+ * Re-exports all test scenarios for easy importing.
5
+ */
6
+ export { testHealthCheck } from './health';
7
+ export { testDiscovery } from './discovery';
8
+ export { testCreateMediaBuy, testFullSalesFlow, testCreativeSync, testCreativeInline, selectProduct, selectPricingOption, buildCreateMediaBuyRequest, } from './media-buy';
9
+ export { testCreativeFlow } from './creative';
10
+ export { testSignalsFlow } from './signals';
11
+ export { testErrorHandling, testValidation, testPricingEdgeCases, testTemporalValidation, testBehaviorAnalysis, testResponseConsistency, } from './edge-cases';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/scenarios/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Test Scenarios Index
4
+ *
5
+ * Re-exports all test scenarios for easy importing.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.testResponseConsistency = exports.testBehaviorAnalysis = exports.testTemporalValidation = exports.testPricingEdgeCases = exports.testValidation = exports.testErrorHandling = exports.testSignalsFlow = exports.testCreativeFlow = exports.buildCreateMediaBuyRequest = exports.selectPricingOption = exports.selectProduct = exports.testCreativeInline = exports.testCreativeSync = exports.testFullSalesFlow = exports.testCreateMediaBuy = exports.testDiscovery = exports.testHealthCheck = void 0;
9
+ // Health check
10
+ var health_1 = require("./health");
11
+ Object.defineProperty(exports, "testHealthCheck", { enumerable: true, get: function () { return health_1.testHealthCheck; } });
12
+ // Discovery
13
+ var discovery_1 = require("./discovery");
14
+ Object.defineProperty(exports, "testDiscovery", { enumerable: true, get: function () { return discovery_1.testDiscovery; } });
15
+ // Media buy / sales flow
16
+ var media_buy_1 = require("./media-buy");
17
+ Object.defineProperty(exports, "testCreateMediaBuy", { enumerable: true, get: function () { return media_buy_1.testCreateMediaBuy; } });
18
+ Object.defineProperty(exports, "testFullSalesFlow", { enumerable: true, get: function () { return media_buy_1.testFullSalesFlow; } });
19
+ Object.defineProperty(exports, "testCreativeSync", { enumerable: true, get: function () { return media_buy_1.testCreativeSync; } });
20
+ Object.defineProperty(exports, "testCreativeInline", { enumerable: true, get: function () { return media_buy_1.testCreativeInline; } });
21
+ Object.defineProperty(exports, "selectProduct", { enumerable: true, get: function () { return media_buy_1.selectProduct; } });
22
+ Object.defineProperty(exports, "selectPricingOption", { enumerable: true, get: function () { return media_buy_1.selectPricingOption; } });
23
+ Object.defineProperty(exports, "buildCreateMediaBuyRequest", { enumerable: true, get: function () { return media_buy_1.buildCreateMediaBuyRequest; } });
24
+ // Creative agent testing
25
+ var creative_1 = require("./creative");
26
+ Object.defineProperty(exports, "testCreativeFlow", { enumerable: true, get: function () { return creative_1.testCreativeFlow; } });
27
+ // Signals agent testing
28
+ var signals_1 = require("./signals");
29
+ Object.defineProperty(exports, "testSignalsFlow", { enumerable: true, get: function () { return signals_1.testSignalsFlow; } });
30
+ // Edge case testing
31
+ var edge_cases_1 = require("./edge-cases");
32
+ Object.defineProperty(exports, "testErrorHandling", { enumerable: true, get: function () { return edge_cases_1.testErrorHandling; } });
33
+ Object.defineProperty(exports, "testValidation", { enumerable: true, get: function () { return edge_cases_1.testValidation; } });
34
+ Object.defineProperty(exports, "testPricingEdgeCases", { enumerable: true, get: function () { return edge_cases_1.testPricingEdgeCases; } });
35
+ Object.defineProperty(exports, "testTemporalValidation", { enumerable: true, get: function () { return edge_cases_1.testTemporalValidation; } });
36
+ Object.defineProperty(exports, "testBehaviorAnalysis", { enumerable: true, get: function () { return edge_cases_1.testBehaviorAnalysis; } });
37
+ Object.defineProperty(exports, "testResponseConsistency", { enumerable: true, get: function () { return edge_cases_1.testResponseConsistency; } });
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/testing/scenarios/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,eAAe;AACf,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AAExB,YAAY;AACZ,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AAEtB,yBAAyB;AACzB,yCAQqB;AAPnB,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,6GAAA,gBAAgB,OAAA;AAChB,+GAAA,kBAAkB,OAAA;AAClB,0GAAA,aAAa,OAAA;AACb,gHAAA,mBAAmB,OAAA;AACnB,uHAAA,0BAA0B,OAAA;AAG5B,yBAAyB;AACzB,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AAEzB,wBAAwB;AACxB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AAExB,oBAAoB;AACpB,2CAOsB;AANpB,+GAAA,iBAAiB,OAAA;AACjB,4GAAA,cAAc,OAAA;AACd,kHAAA,oBAAoB,OAAA;AACpB,oHAAA,sBAAsB,OAAA;AACtB,kHAAA,oBAAoB,OAAA;AACpB,qHAAA,uBAAuB,OAAA"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Media Buy Testing Scenarios
3
+ *
4
+ * Tests sales agent media buy capabilities including:
5
+ * - create_media_buy
6
+ * - update_media_buy
7
+ * - get_media_buy_delivery
8
+ * - sync_creatives
9
+ */
10
+ import type { TestOptions, TestStepResult, AgentProfile } from '../types';
11
+ /**
12
+ * Find a suitable product for testing based on options
13
+ */
14
+ export declare function selectProduct(products: any[], options: TestOptions): any | null;
15
+ /**
16
+ * Select a pricing option from a product
17
+ */
18
+ export declare function selectPricingOption(product: any, preferredModels?: string[]): any | null;
19
+ /**
20
+ * Build a create_media_buy request
21
+ */
22
+ export declare function buildCreateMediaBuyRequest(product: any, pricingOption: any, options: TestOptions, extras?: {
23
+ inline_creatives?: any[];
24
+ creative_ids?: string[];
25
+ }): any;
26
+ /**
27
+ * Test: Create Media Buy
28
+ * Discovers products, then creates a test media buy
29
+ */
30
+ export declare function testCreateMediaBuy(agentUrl: string, options: TestOptions): Promise<{
31
+ steps: TestStepResult[];
32
+ profile?: AgentProfile;
33
+ mediaBuyId?: string;
34
+ }>;
35
+ /**
36
+ * Test: Full Sales Flow
37
+ * Complete lifecycle: discovery -> create -> update -> delivery
38
+ */
39
+ export declare function testFullSalesFlow(agentUrl: string, options: TestOptions): Promise<{
40
+ steps: TestStepResult[];
41
+ profile?: AgentProfile;
42
+ }>;
43
+ /**
44
+ * Test: Creative Sync Flow
45
+ * Tests sync_creatives separately from create_media_buy
46
+ */
47
+ export declare function testCreativeSync(agentUrl: string, options: TestOptions): Promise<{
48
+ steps: TestStepResult[];
49
+ profile?: AgentProfile;
50
+ }>;
51
+ /**
52
+ * Test: Creative Inline Flow
53
+ * Tests providing creatives inline in create_media_buy
54
+ */
55
+ export declare function testCreativeInline(agentUrl: string, options: TestOptions): Promise<{
56
+ steps: TestStepResult[];
57
+ profile?: AgentProfile;
58
+ }>;
59
+ //# sourceMappingURL=media-buy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-buy.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/scenarios/media-buy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AAItF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,GAAG,IAAI,CAiB/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CASxF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,GAAG,EACZ,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,GAAE;IACN,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACL,GAAG,CAyCL;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+FnF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CA6E9D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAmI9D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAoH9D"}
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+ /**
3
+ * Media Buy Testing Scenarios
4
+ *
5
+ * Tests sales agent media buy capabilities including:
6
+ * - create_media_buy
7
+ * - update_media_buy
8
+ * - get_media_buy_delivery
9
+ * - sync_creatives
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.selectProduct = selectProduct;
13
+ exports.selectPricingOption = selectPricingOption;
14
+ exports.buildCreateMediaBuyRequest = buildCreateMediaBuyRequest;
15
+ exports.testCreateMediaBuy = testCreateMediaBuy;
16
+ exports.testFullSalesFlow = testFullSalesFlow;
17
+ exports.testCreativeSync = testCreativeSync;
18
+ exports.testCreativeInline = testCreativeInline;
19
+ const client_1 = require("../client");
20
+ const discovery_1 = require("./discovery");
21
+ /**
22
+ * Find a suitable product for testing based on options
23
+ */
24
+ function selectProduct(products, options) {
25
+ // If channels specified, filter to matching products
26
+ let candidates = products;
27
+ if (options.channels?.length) {
28
+ candidates = products.filter(p => p.channels?.some((ch) => options.channels.includes(ch)));
29
+ }
30
+ // If pricing models specified, filter further
31
+ if (options.pricing_models?.length) {
32
+ candidates = candidates.filter(p => p.pricing_options?.some((po) => options.pricing_models.includes(po.model)));
33
+ }
34
+ // Return first matching or first product
35
+ return candidates[0] || products[0] || null;
36
+ }
37
+ /**
38
+ * Select a pricing option from a product
39
+ */
40
+ function selectPricingOption(product, preferredModels) {
41
+ const options = product.pricing_options || [];
42
+ if (preferredModels?.length) {
43
+ const preferred = options.find((po) => preferredModels.includes(po.model));
44
+ if (preferred)
45
+ return preferred;
46
+ }
47
+ return options[0] || null;
48
+ }
49
+ /**
50
+ * Build a create_media_buy request
51
+ */
52
+ function buildCreateMediaBuyRequest(product, pricingOption, options, extras = {}) {
53
+ const budget = options.budget || 1000;
54
+ const now = new Date();
55
+ const startTime = new Date(now.getTime() + 24 * 60 * 60 * 1000); // Tomorrow
56
+ const endTime = new Date(startTime.getTime() + 7 * 24 * 60 * 60 * 1000); // 7 days later
57
+ const isAuction = pricingOption.model === 'auction' || pricingOption.is_fixed === false || pricingOption.floor_price !== undefined;
58
+ const packageRequest = {
59
+ buyer_ref: `pkg-test-${Date.now()}`,
60
+ product_id: product.product_id,
61
+ budget,
62
+ pricing_option_id: pricingOption.pricing_option_id,
63
+ };
64
+ // Add bid_price if auction-based
65
+ if (isAuction && pricingOption.floor_price) {
66
+ packageRequest.bid_price = pricingOption.floor_price * 1.5;
67
+ }
68
+ // Add inline creatives if provided
69
+ if (extras.inline_creatives?.length) {
70
+ packageRequest.creatives = extras.inline_creatives;
71
+ }
72
+ // Add creative references if provided
73
+ if (extras.creative_ids?.length) {
74
+ packageRequest.creative_ids = extras.creative_ids;
75
+ }
76
+ return {
77
+ buyer_ref: `e2e-test-${Date.now()}`,
78
+ brand_manifest: options.brand_manifest || {
79
+ name: 'E2E Test Brand',
80
+ url: 'https://test.example.com',
81
+ },
82
+ start_time: startTime.toISOString(),
83
+ end_time: endTime.toISOString(),
84
+ packages: [packageRequest],
85
+ };
86
+ }
87
+ /**
88
+ * Test: Create Media Buy
89
+ * Discovers products, then creates a test media buy
90
+ */
91
+ async function testCreateMediaBuy(agentUrl, options) {
92
+ const steps = [];
93
+ const client = (0, client_1.createTestClient)(agentUrl, options.protocol || 'mcp', options);
94
+ // First run discovery
95
+ const { steps: discoverySteps, profile } = await (0, discovery_1.testDiscovery)(agentUrl, options);
96
+ steps.push(...discoverySteps);
97
+ if (!profile?.tools.includes('create_media_buy')) {
98
+ steps.push({
99
+ step: 'Create media buy',
100
+ task: 'create_media_buy',
101
+ passed: false,
102
+ duration_ms: 0,
103
+ error: 'Agent does not support create_media_buy',
104
+ });
105
+ return { steps, profile };
106
+ }
107
+ // Get products
108
+ const { result: productsResult } = await (0, client_1.runStep)('Fetch products for media buy', 'get_products', async () => client.executeTask('get_products', {
109
+ brief: options.brief || 'Looking for display advertising products',
110
+ brand_manifest: options.brand_manifest || {
111
+ name: 'E2E Test Brand',
112
+ url: 'https://test.example.com',
113
+ },
114
+ }));
115
+ const products = productsResult?.data?.products;
116
+ if (!productsResult?.success || !products?.length) {
117
+ steps.push({
118
+ step: 'Create media buy',
119
+ task: 'create_media_buy',
120
+ passed: false,
121
+ duration_ms: 0,
122
+ error: 'No products available to create media buy',
123
+ });
124
+ return { steps, profile };
125
+ }
126
+ const product = selectProduct(products, options);
127
+ const pricingOption = selectPricingOption(product, options.pricing_models);
128
+ if (!pricingOption) {
129
+ steps.push({
130
+ step: 'Create media buy',
131
+ task: 'create_media_buy',
132
+ passed: false,
133
+ duration_ms: 0,
134
+ error: `Product "${product.name}" has no pricing options`,
135
+ });
136
+ return { steps, profile };
137
+ }
138
+ const createRequest = buildCreateMediaBuyRequest(product, pricingOption, options);
139
+ // Create the media buy
140
+ const { result: createResult, step: createStep } = await (0, client_1.runStep)('Create media buy', 'create_media_buy', async () => client.executeTask('create_media_buy', createRequest));
141
+ let mediaBuyId;
142
+ if (createResult?.success && createResult?.data) {
143
+ const mediaBuy = createResult.data;
144
+ mediaBuyId = mediaBuy.media_buy_id || mediaBuy.media_buy?.media_buy_id;
145
+ const status = mediaBuy.status || mediaBuy.media_buy?.status;
146
+ const packages = mediaBuy.packages || mediaBuy.media_buy?.packages;
147
+ createStep.details = `Created media buy: ${mediaBuyId}, status: ${status}`;
148
+ createStep.created_id = mediaBuyId;
149
+ createStep.response_preview = JSON.stringify({
150
+ media_buy_id: mediaBuyId,
151
+ status,
152
+ packages_count: packages?.length,
153
+ pricing_model: pricingOption.model,
154
+ product_name: product.name,
155
+ }, null, 2);
156
+ }
157
+ else if (createResult && !createResult.success) {
158
+ createStep.passed = false;
159
+ createStep.error = createResult.error || 'create_media_buy returned unsuccessful result';
160
+ }
161
+ steps.push(createStep);
162
+ return { steps, profile, mediaBuyId };
163
+ }
164
+ /**
165
+ * Test: Full Sales Flow
166
+ * Complete lifecycle: discovery -> create -> update -> delivery
167
+ */
168
+ async function testFullSalesFlow(agentUrl, options) {
169
+ const steps = [];
170
+ const client = (0, client_1.createTestClient)(agentUrl, options.protocol || 'mcp', options);
171
+ // Run create media buy flow first
172
+ const { steps: createSteps, profile, mediaBuyId } = await testCreateMediaBuy(agentUrl, options);
173
+ steps.push(...createSteps);
174
+ if (!mediaBuyId) {
175
+ return { steps, profile };
176
+ }
177
+ // Test update_media_buy if available
178
+ if (profile?.tools.includes('update_media_buy')) {
179
+ const { result: updateResult, step: updateStep } = await (0, client_1.runStep)('Update media buy (increase budget)', 'update_media_buy', async () => client.executeTask('update_media_buy', {
180
+ media_buy_id: mediaBuyId,
181
+ packages: [
182
+ {
183
+ package_id: 'pkg-0',
184
+ budget: (options.budget || 1000) * 1.5,
185
+ },
186
+ ],
187
+ }));
188
+ if (updateResult?.success && updateResult?.data) {
189
+ const data = updateResult.data;
190
+ const status = data.status || data.media_buy?.status;
191
+ updateStep.details = `Updated media buy, status: ${status}`;
192
+ updateStep.response_preview = JSON.stringify({
193
+ media_buy_id: data.media_buy_id || data.media_buy?.media_buy_id,
194
+ status,
195
+ }, null, 2);
196
+ }
197
+ else if (updateResult && !updateResult.success) {
198
+ updateStep.passed = false;
199
+ updateStep.error = updateResult.error || 'update_media_buy returned unsuccessful result';
200
+ }
201
+ steps.push(updateStep);
202
+ }
203
+ // Test get_media_buy_delivery if available
204
+ if (profile?.tools.includes('get_media_buy_delivery')) {
205
+ const { result: deliveryResult, step: deliveryStep } = await (0, client_1.runStep)('Get delivery metrics', 'get_media_buy_delivery', async () => client.executeTask('get_media_buy_delivery', {
206
+ media_buy_ids: [mediaBuyId],
207
+ }));
208
+ if (deliveryResult?.success && deliveryResult?.data) {
209
+ const delivery = deliveryResult.data;
210
+ deliveryStep.details = `Retrieved delivery metrics`;
211
+ deliveryStep.response_preview = JSON.stringify({
212
+ has_deliveries: !!(delivery.deliveries?.length || delivery.media_buys?.length),
213
+ }, null, 2);
214
+ }
215
+ else if (deliveryResult && !deliveryResult.success) {
216
+ deliveryStep.passed = false;
217
+ deliveryStep.error = deliveryResult.error || 'get_media_buy_delivery returned unsuccessful result';
218
+ }
219
+ steps.push(deliveryStep);
220
+ }
221
+ return { steps, profile };
222
+ }
223
+ /**
224
+ * Test: Creative Sync Flow
225
+ * Tests sync_creatives separately from create_media_buy
226
+ */
227
+ async function testCreativeSync(agentUrl, options) {
228
+ const steps = [];
229
+ const client = (0, client_1.createTestClient)(agentUrl, options.protocol || 'mcp', options);
230
+ // Discover profile
231
+ const { profile, step: profileStep } = await (0, client_1.discoverAgentProfile)(client);
232
+ steps.push(profileStep);
233
+ if (!profile.tools.includes('sync_creatives')) {
234
+ steps.push({
235
+ step: 'Sync creatives',
236
+ task: 'sync_creatives',
237
+ passed: false,
238
+ duration_ms: 0,
239
+ error: 'Agent does not support sync_creatives',
240
+ });
241
+ return { steps, profile };
242
+ }
243
+ // Get format info first
244
+ let formatId = 'display_300x250'; // Default
245
+ if (profile.tools.includes('list_creative_formats')) {
246
+ const { result: formatsResult } = await (0, client_1.runStep)('Get formats for creative', 'list_creative_formats', async () => client.executeTask('list_creative_formats', {}));
247
+ if (formatsResult?.success && formatsResult?.data) {
248
+ const data = formatsResult.data;
249
+ const firstFormat = data.format_ids?.[0] || data.formats?.[0];
250
+ if (firstFormat) {
251
+ formatId = typeof firstFormat === 'string' ? firstFormat : firstFormat.id || firstFormat.format_id;
252
+ }
253
+ }
254
+ }
255
+ // Test sync_creatives with a simple creative
256
+ // Assets must be an object keyed by asset_role, not an array
257
+ const testCreative = {
258
+ creative_id: `test-creative-${Date.now()}`,
259
+ name: 'E2E Test Creative',
260
+ format_id: formatId,
261
+ assets: {
262
+ primary: {
263
+ url: 'https://via.placeholder.com/300x250',
264
+ width: 300,
265
+ height: 250,
266
+ format: 'png',
267
+ },
268
+ },
269
+ };
270
+ const { result: syncResult, step: syncStep } = await (0, client_1.runStep)('Sync creative to library', 'sync_creatives', async () => client.executeTask('sync_creatives', {
271
+ creatives: [testCreative],
272
+ }));
273
+ if (syncResult?.success && syncResult?.data) {
274
+ const data = syncResult.data;
275
+ const creatives = data.creatives || [];
276
+ const actions = creatives.map((c) => c.action);
277
+ syncStep.details = `Synced ${creatives.length} creative(s), actions: ${actions.join(', ')}`;
278
+ syncStep.response_preview = JSON.stringify({
279
+ creatives_count: creatives.length,
280
+ actions: actions,
281
+ creative_ids: creatives.map((c) => c.creative_id),
282
+ }, null, 2);
283
+ }
284
+ else if (syncResult && !syncResult.success) {
285
+ syncStep.passed = false;
286
+ syncStep.error = syncResult.error || 'sync_creatives returned unsuccessful result';
287
+ }
288
+ steps.push(syncStep);
289
+ // Test list_creatives if available
290
+ if (profile.tools.includes('list_creatives')) {
291
+ const { result: listResult, step: listStep } = await (0, client_1.runStep)('List creatives in library', 'list_creatives', async () => client.executeTask('list_creatives', {}));
292
+ if (listResult?.success && listResult?.data) {
293
+ const data = listResult.data;
294
+ const creatives = data.creatives || [];
295
+ const querySummary = data.query_summary;
296
+ const totalMatching = querySummary?.total_matching;
297
+ const returned = querySummary?.returned ?? creatives.length;
298
+ // Check for pagination bug: total_matching > 0 but returned = 0
299
+ if (totalMatching !== undefined && totalMatching > 0 && returned === 0) {
300
+ listStep.passed = false;
301
+ listStep.error = `Pagination bug: query_summary shows ${totalMatching} total_matching but returned ${returned} creatives`;
302
+ listStep.response_preview = JSON.stringify({
303
+ total_matching: totalMatching,
304
+ returned,
305
+ creatives_count: creatives.length,
306
+ pagination: data.pagination,
307
+ }, null, 2);
308
+ }
309
+ else {
310
+ listStep.details = `Found ${creatives.length} creative(s) in library`;
311
+ listStep.response_preview = JSON.stringify({
312
+ creatives_count: creatives.length,
313
+ total_matching: totalMatching,
314
+ statuses: Array.from(new Set(creatives.map((c) => c.status))),
315
+ }, null, 2);
316
+ }
317
+ }
318
+ else if (listResult && !listResult.success) {
319
+ listStep.passed = false;
320
+ listStep.error = listResult.error || 'list_creatives returned unsuccessful result';
321
+ }
322
+ steps.push(listStep);
323
+ }
324
+ return { steps, profile };
325
+ }
326
+ /**
327
+ * Test: Creative Inline Flow
328
+ * Tests providing creatives inline in create_media_buy
329
+ */
330
+ async function testCreativeInline(agentUrl, options) {
331
+ const steps = [];
332
+ const client = (0, client_1.createTestClient)(agentUrl, options.protocol || 'mcp', options);
333
+ // Discovery first
334
+ const { steps: discoverySteps, profile } = await (0, discovery_1.testDiscovery)(agentUrl, options);
335
+ steps.push(...discoverySteps);
336
+ if (!profile?.tools.includes('create_media_buy')) {
337
+ steps.push({
338
+ step: 'Create media buy with inline creatives',
339
+ task: 'create_media_buy',
340
+ passed: false,
341
+ duration_ms: 0,
342
+ error: 'Agent does not support create_media_buy',
343
+ });
344
+ return { steps, profile };
345
+ }
346
+ // Get products
347
+ const { result: productsResult } = await (0, client_1.runStep)('Fetch products for inline creative test', 'get_products', async () => client.executeTask('get_products', {
348
+ brief: options.brief || 'Looking for display advertising products',
349
+ brand_manifest: options.brand_manifest || {
350
+ name: 'E2E Test Brand',
351
+ url: 'https://test.example.com',
352
+ },
353
+ }));
354
+ const products = productsResult?.data?.products;
355
+ if (!productsResult?.success || !products?.length) {
356
+ steps.push({
357
+ step: 'Create media buy with inline creatives',
358
+ task: 'create_media_buy',
359
+ passed: false,
360
+ duration_ms: 0,
361
+ error: 'No products available to test inline creatives',
362
+ });
363
+ return { steps, profile };
364
+ }
365
+ const product = selectProduct(products, options);
366
+ const pricingOption = selectPricingOption(product, options.pricing_models);
367
+ if (!pricingOption) {
368
+ steps.push({
369
+ step: 'Create media buy with inline creatives',
370
+ task: 'create_media_buy',
371
+ passed: false,
372
+ duration_ms: 0,
373
+ error: `Product "${product.name}" has no pricing options`,
374
+ });
375
+ return { steps, profile };
376
+ }
377
+ // Get format for inline creative
378
+ let formatId = 'display_300x250';
379
+ if (product.format_ids?.length) {
380
+ const fid = product.format_ids[0];
381
+ formatId = typeof fid === 'string' ? fid : fid.id || fid.format_id || formatId;
382
+ }
383
+ // Build inline creative
384
+ const inlineCreative = {
385
+ name: `Inline Test Creative ${Date.now()}`,
386
+ format_id: formatId,
387
+ assets: {
388
+ primary: {
389
+ url: 'https://via.placeholder.com/300x250?text=Inline+Creative',
390
+ width: 300,
391
+ height: 250,
392
+ format: 'png',
393
+ },
394
+ },
395
+ };
396
+ const createRequest = buildCreateMediaBuyRequest(product, pricingOption, options, {
397
+ inline_creatives: [inlineCreative],
398
+ });
399
+ const { result: createResult, step: createStep } = await (0, client_1.runStep)('Create media buy with inline creative', 'create_media_buy', async () => client.executeTask('create_media_buy', createRequest));
400
+ if (createResult?.success && createResult?.data) {
401
+ const mediaBuy = createResult.data;
402
+ const mediaBuyId = mediaBuy.media_buy_id || mediaBuy.media_buy?.media_buy_id;
403
+ const status = mediaBuy.status || mediaBuy.media_buy?.status;
404
+ const packages = mediaBuy.packages || mediaBuy.media_buy?.packages;
405
+ const hasCreatives = packages?.some((p) => p.creatives?.length || p.creative_ids?.length);
406
+ createStep.details = `Created media buy with inline creative: ${mediaBuyId}`;
407
+ createStep.created_id = mediaBuyId;
408
+ createStep.response_preview = JSON.stringify({
409
+ media_buy_id: mediaBuyId,
410
+ status,
411
+ has_creatives: hasCreatives,
412
+ packages_count: packages?.length,
413
+ }, null, 2);
414
+ }
415
+ else if (createResult && !createResult.success) {
416
+ createStep.passed = false;
417
+ createStep.error = createResult.error || 'create_media_buy with inline creatives failed';
418
+ }
419
+ steps.push(createStep);
420
+ return { steps, profile };
421
+ }
422
+ //# sourceMappingURL=media-buy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-buy.js","sourceRoot":"","sources":["../../../../src/lib/testing/scenarios/media-buy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Signals Agent Testing Scenarios
3
+ *
4
+ * Tests signals agent capabilities including:
5
+ * - get_signals
6
+ * - activate_signal
7
+ * - get_signal_status (if available)
8
+ * - deactivate_signal (if available)
9
+ *
10
+ * Enhanced to:
11
+ * - Discover real signals from the agent before testing
12
+ * - Test multiple signal types
13
+ * - Test activation with various destination configurations
14
+ * - Validate proper error handling for invalid signals
15
+ */
16
+ import type { TestOptions, TestStepResult, AgentProfile } from '../types';
17
+ /**
18
+ * Test: Signals Flow (for signals agents)
19
+ *
20
+ * Flow: get_signals -> activate_signal (with real signal IDs) -> get_signal_status
21
+ */
22
+ export declare function testSignalsFlow(agentUrl: string, options: TestOptions): Promise<{
23
+ steps: TestStepResult[];
24
+ profile?: AgentProfile;
25
+ }>;
26
+ //# sourceMappingURL=signals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/scenarios/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AAGtF;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAyM9D"}