@adcp/client 3.4.0 → 3.5.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.
- package/dist/lib/auth/index.d.ts +1 -7
- package/dist/lib/auth/index.d.ts.map +1 -1
- package/dist/lib/auth/index.js +2 -33
- package/dist/lib/auth/index.js.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +2 -3
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.js +3 -4
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/ConfigurationManager.d.ts.map +1 -1
- package/dist/lib/core/ConfigurationManager.js +5 -14
- package/dist/lib/core/ConfigurationManager.js.map +1 -1
- package/dist/lib/core/CreativeAgentClient.js +1 -1
- package/dist/lib/core/CreativeAgentClient.js.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +4 -4
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/discovery/property-crawler.js +1 -1
- package/dist/lib/discovery/property-crawler.js.map +1 -1
- package/dist/lib/testing/agent-tester.d.ts +33 -0
- package/dist/lib/testing/agent-tester.d.ts.map +1 -0
- package/dist/lib/testing/agent-tester.js +211 -0
- package/dist/lib/testing/agent-tester.js.map +1 -0
- package/dist/lib/testing/client.d.ts +54 -0
- package/dist/lib/testing/client.d.ts.map +1 -0
- package/dist/lib/testing/client.js +293 -0
- package/dist/lib/testing/client.js.map +1 -0
- package/dist/lib/testing/formatter.d.ts +17 -0
- package/dist/lib/testing/formatter.d.ts.map +1 -0
- package/dist/lib/testing/formatter.js +79 -0
- package/dist/lib/testing/formatter.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 +26 -1
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/scenarios/creative.d.ts +24 -0
- package/dist/lib/testing/scenarios/creative.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/creative.js +224 -0
- package/dist/lib/testing/scenarios/creative.js.map +1 -0
- package/dist/lib/testing/scenarios/discovery.d.ts +15 -0
- package/dist/lib/testing/scenarios/discovery.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/discovery.js +66 -0
- package/dist/lib/testing/scenarios/discovery.js.map +1 -0
- package/dist/lib/testing/scenarios/edge-cases.d.ts +64 -0
- package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/edge-cases.js +603 -0
- package/dist/lib/testing/scenarios/edge-cases.js.map +1 -0
- package/dist/lib/testing/scenarios/health.d.ts +12 -0
- package/dist/lib/testing/scenarios/health.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/health.js +21 -0
- package/dist/lib/testing/scenarios/health.js.map +1 -0
- package/dist/lib/testing/scenarios/index.d.ts +12 -0
- package/dist/lib/testing/scenarios/index.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/index.js +38 -0
- package/dist/lib/testing/scenarios/index.js.map +1 -0
- package/dist/lib/testing/scenarios/media-buy.d.ts +59 -0
- package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/media-buy.js +422 -0
- package/dist/lib/testing/scenarios/media-buy.js.map +1 -0
- package/dist/lib/testing/scenarios/signals.d.ts +26 -0
- package/dist/lib/testing/scenarios/signals.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/signals.js +227 -0
- package/dist/lib/testing/scenarios/signals.js.map +1 -0
- package/dist/lib/testing/test-helpers.d.ts.map +1 -1
- package/dist/lib/testing/test-helpers.js +2 -6
- package/dist/lib/testing/test-helpers.js.map +1 -1
- package/dist/lib/testing/types.d.ts +92 -0
- package/dist/lib/testing/types.d.ts.map +1 -0
- package/dist/lib/testing/types.js +6 -0
- package/dist/lib/testing/types.js.map +1 -0
- package/dist/lib/types/adcp.d.ts +1 -4
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +2 -2
- package/dist/lib/types/schemas.generated.d.ts +3 -4
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +11 -5
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +57 -30
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.js.map +1 -1
- 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":";AAAA;;;;;;;;GAQG;;AASH,sCAiBC;AAKD,kDASC;AAKD,gEAiDC;AAMD,gDAkGC;AAMD,8CAgFC;AAMD,4CAsIC;AAMD,gDAuHC;AAliBD,sCAAuG;AACvG,2CAA4C;AAE5C;;GAEG;AACH,SAAgB,aAAa,CAAC,QAAe,EAAE,OAAoB;IACjE,qDAAqD;IACrD,IAAI,UAAU,GAAG,QAAQ,CAAC;IAE1B,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC7B,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACnC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACjF,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAAY,EAAE,eAA0B;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IAE9C,IAAI,eAAe,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CACxC,OAAY,EACZ,aAAkB,EAClB,OAAoB,EACpB,SAGI,EAAE;IAEN,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW;IAC5E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,eAAe;IAExF,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,KAAK,KAAK,IAAI,aAAa,CAAC,WAAW,KAAK,SAAS,CAAC;IAEnH,MAAM,cAAc,GAAQ;QAC1B,SAAS,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;QACnC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM;QACN,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;KACnD,CAAC;IAEF,iCAAiC;IACjC,IAAI,SAAS,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;QAC3C,cAAc,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,GAAG,CAAC;IAC7D,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QACpC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrD,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAChC,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACpD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;QACnC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI;YACxC,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,0BAA0B;SAChC;QACD,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;QAC/B,QAAQ,EAAE,CAAC,cAAc,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAoB;IAEpB,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9E,sBAAsB;IACtB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,yBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAE9B,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,yCAAyC;SACjD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe;IACf,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC9C,8BAA8B,EAC9B,cAAc,EACd,KAAK,IAAI,EAAE,CACT,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,0CAA0C;QAClE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI;YACxC,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,0BAA0B;SAChC;KACF,CAAwB,CAC5B,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,EAAE,IAAI,EAAE,QAA6B,CAAC;IACrE,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,2CAA2C;SACnD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,YAAY,OAAO,CAAC,IAAI,0BAA0B;SAC1D,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAElF,uBAAuB;IACvB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC9D,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,EAAE,aAAa,CAAwB,CACzF,CAAC;IAEF,IAAI,UAA8B,CAAC;IAEnC,IAAI,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAW,CAAC;QAC1C,UAAU,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;QACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACnE,UAAU,CAAC,OAAO,GAAG,sBAAsB,UAAU,aAAa,MAAM,EAAE,CAAC;QAC3E,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;QACnC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAC1C;YACE,YAAY,EAAE,UAAU;YACxB,MAAM;YACN,cAAc,EAAE,QAAQ,EAAE,MAAM;YAChC,aAAa,EAAE,aAAa,CAAC,KAAK;YAClC,YAAY,EAAE,OAAO,CAAC,IAAI;SAC3B,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACjD,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;QAC1B,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,+CAA+C,CAAC;IAC3F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,OAAoB;IAEpB,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9E,kCAAkC;IAClC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChG,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IAE3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC9D,oCAAoC,EACpC,kBAAkB,EAClB,KAAK,IAAI,EAAE,CACT,MAAM,CAAC,WAAW,CAAC,kBAAkB,EAAE;YACrC,YAAY,EAAE,UAAU;YACxB,QAAQ,EAAE;gBACR;oBACE,UAAU,EAAE,OAAO;oBACnB,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG;iBACvC;aACF;SACF,CAAwB,CAC5B,CAAC;QAEF,IAAI,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,IAAI,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAW,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;YACrD,UAAU,CAAC,OAAO,GAAG,8BAA8B,MAAM,EAAE,CAAC;YAC5D,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAC1C;gBACE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY;gBAC/D,MAAM;aACP,EACD,IAAI,EACJ,CAAC,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACjD,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC1B,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,+CAA+C,CAAC;QAC3F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACtD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,gBAAO,EAClE,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,IAAI,EAAE,CACT,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE;YAC3C,aAAa,EAAE,CAAC,UAAU,CAAC;SAC5B,CAAwB,CAC5B,CAAC;QAEF,IAAI,cAAc,EAAE,OAAO,IAAI,cAAc,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAW,CAAC;YAC5C,YAAY,CAAC,OAAO,GAAG,4BAA4B,CAAC;YACpD,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAC5C;gBACE,cAAc,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;aAC/E,EACD,IAAI,EACJ,CAAC,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YACrD,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;YAC5B,YAAY,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,qDAAqD,CAAC;QACrG,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,OAAoB;IAEpB,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9E,mBAAmB;IACnB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,uCAAuC;SAC/C,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,wBAAwB;IACxB,IAAI,QAAQ,GAAG,iBAAiB,CAAC,CAAC,UAAU;IAC5C,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACpD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC7C,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAuB,EAAE,EAAE,CAAwB,CACnF,CAAC;QAEF,IAAI,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAW,CAAC;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,WAAW,EAAE,CAAC;gBAChB,QAAQ,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,SAAS,CAAC;YACrG,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,6DAA6D;IAC7D,MAAM,YAAY,GAAG;QACnB,WAAW,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,GAAG,EAAE,qCAAqC;gBAC1C,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,KAAK;aACd;SACF;KACF,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC1D,0BAA0B,EAC1B,gBAAgB,EAChB,KAAK,IAAI,EAAE,CACT,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE;QACnC,SAAS,EAAE,CAAC,YAAY,CAAC;KAC1B,CAAwB,CAC5B,CAAC;IAEF,IAAI,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAW,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACpD,QAAQ,CAAC,OAAO,GAAG,UAAU,SAAS,CAAC,MAAM,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACxC;YACE,eAAe,EAAE,SAAS,CAAC,MAAM;YACjC,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;SACvD,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7C,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,6CAA6C,CAAC;IACrF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,mCAAmC;IACnC,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC1D,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,CAAwB,CAC5E,CAAC;QAEF,IAAI,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAW,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,MAAM,aAAa,GAAG,YAAY,EAAE,cAAc,CAAC;YACnD,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC;YAE5D,gEAAgE;YAChE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBACxB,QAAQ,CAAC,KAAK,GAAG,uCAAuC,aAAa,gCAAgC,QAAQ,YAAY,CAAC;gBAC1H,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACxC;oBACE,cAAc,EAAE,aAAa;oBAC7B,QAAQ;oBACR,eAAe,EAAE,SAAS,CAAC,MAAM;oBACjC,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,EACD,IAAI,EACJ,CAAC,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,OAAO,GAAG,SAAS,SAAS,CAAC,MAAM,yBAAyB,CAAC;gBACtE,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CACxC;oBACE,eAAe,EAAE,SAAS,CAAC,MAAM;oBACjC,cAAc,EAAE,aAAa;oBAC7B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBACnE,EACD,IAAI,EACJ,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7C,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,6CAA6C,CAAC;QACrF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAoB;IAEpB,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9E,kBAAkB;IAClB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,yBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAE9B,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,yCAAyC;SACjD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe;IACf,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC9C,yCAAyC,EACzC,cAAc,EACd,KAAK,IAAI,EAAE,CACT,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,0CAA0C;QAClE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI;YACxC,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,0BAA0B;SAChC;KACF,CAAwB,CAC5B,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,EAAE,IAAI,EAAE,QAA6B,CAAC;IACrE,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,gDAAgD;SACxD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,YAAY,OAAO,CAAC,IAAI,0BAA0B;SAC1D,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,iCAAiC;IACjC,IAAI,QAAQ,GAAG,iBAAiB,CAAC;IACjC,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC;IACjF,CAAC;IAED,wBAAwB;IACxB,MAAM,cAAc,GAAG;QACrB,IAAI,EAAE,wBAAwB,IAAI,CAAC,GAAG,EAAE,EAAE;QAC1C,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,GAAG,EAAE,0DAA0D;gBAC/D,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,KAAK;aACd;SACF;KACF,CAAC;IAEF,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE;QAChF,gBAAgB,EAAE,CAAC,cAAc,CAAC;KACnC,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,gBAAO,EAC9D,uCAAuC,EACvC,kBAAkB,EAClB,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,EAAE,aAAa,CAAwB,CACzF,CAAC;IAEF,IAAI,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAW,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;QAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QACnE,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE/F,UAAU,CAAC,OAAO,GAAG,2CAA2C,UAAU,EAAE,CAAC;QAC7E,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;QACnC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAC1C;YACE,YAAY,EAAE,UAAU;YACxB,MAAM;YACN,aAAa,EAAE,YAAY;YAC3B,cAAc,EAAE,QAAQ,EAAE,MAAM;SACjC,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACjD,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;QAC1B,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,+CAA+C,CAAC;IAC3F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -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"}
|