testchimp-runner-core 0.0.21 → 0.0.23
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/VISION_DIAGNOSTICS_IMPROVEMENTS.md +336 -0
- package/dist/credit-usage-service.d.ts +9 -0
- package/dist/credit-usage-service.d.ts.map +1 -1
- package/dist/credit-usage-service.js +20 -5
- package/dist/credit-usage-service.js.map +1 -1
- package/dist/execution-service.d.ts +7 -2
- package/dist/execution-service.d.ts.map +1 -1
- package/dist/execution-service.js +91 -36
- package/dist/execution-service.js.map +1 -1
- package/dist/index.d.ts +30 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -26
- package/dist/index.js.map +1 -1
- package/dist/llm-facade.d.ts +64 -8
- package/dist/llm-facade.d.ts.map +1 -1
- package/dist/llm-facade.js +361 -109
- package/dist/llm-facade.js.map +1 -1
- package/dist/llm-provider.d.ts +39 -0
- package/dist/llm-provider.d.ts.map +1 -0
- package/dist/llm-provider.js +7 -0
- package/dist/llm-provider.js.map +1 -0
- package/dist/model-constants.d.ts +21 -0
- package/dist/model-constants.d.ts.map +1 -0
- package/dist/model-constants.js +24 -0
- package/dist/model-constants.js.map +1 -0
- package/dist/orchestrator/index.d.ts +8 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +23 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestrator-agent.d.ts +66 -0
- package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-agent.js +855 -0
- package/dist/orchestrator/orchestrator-agent.js.map +1 -0
- package/dist/orchestrator/tool-registry.d.ts +74 -0
- package/dist/orchestrator/tool-registry.d.ts.map +1 -0
- package/dist/orchestrator/tool-registry.js +131 -0
- package/dist/orchestrator/tool-registry.js.map +1 -0
- package/dist/orchestrator/tools/check-page-ready.d.ts +13 -0
- package/dist/orchestrator/tools/check-page-ready.d.ts.map +1 -0
- package/dist/orchestrator/tools/check-page-ready.js +72 -0
- package/dist/orchestrator/tools/check-page-ready.js.map +1 -0
- package/dist/orchestrator/tools/extract-data.d.ts +13 -0
- package/dist/orchestrator/tools/extract-data.d.ts.map +1 -0
- package/dist/orchestrator/tools/extract-data.js +84 -0
- package/dist/orchestrator/tools/extract-data.js.map +1 -0
- package/dist/orchestrator/tools/index.d.ts +10 -0
- package/dist/orchestrator/tools/index.d.ts.map +1 -0
- package/dist/orchestrator/tools/index.js +18 -0
- package/dist/orchestrator/tools/index.js.map +1 -0
- package/dist/orchestrator/tools/inspect-page.d.ts +13 -0
- package/dist/orchestrator/tools/inspect-page.d.ts.map +1 -0
- package/dist/orchestrator/tools/inspect-page.js +39 -0
- package/dist/orchestrator/tools/inspect-page.js.map +1 -0
- package/dist/orchestrator/tools/recall-history.d.ts +13 -0
- package/dist/orchestrator/tools/recall-history.d.ts.map +1 -0
- package/dist/orchestrator/tools/recall-history.js +64 -0
- package/dist/orchestrator/tools/recall-history.js.map +1 -0
- package/dist/orchestrator/tools/take-screenshot.d.ts +15 -0
- package/dist/orchestrator/tools/take-screenshot.d.ts.map +1 -0
- package/dist/orchestrator/tools/take-screenshot.js +112 -0
- package/dist/orchestrator/tools/take-screenshot.js.map +1 -0
- package/dist/orchestrator/types.d.ts +133 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +28 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/playwright-mcp-service.d.ts +9 -0
- package/dist/playwright-mcp-service.d.ts.map +1 -1
- package/dist/playwright-mcp-service.js +20 -5
- package/dist/playwright-mcp-service.js.map +1 -1
- package/dist/progress-reporter.d.ts +97 -0
- package/dist/progress-reporter.d.ts.map +1 -0
- package/dist/progress-reporter.js +18 -0
- package/dist/progress-reporter.js.map +1 -0
- package/dist/prompts.d.ts +24 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +593 -68
- package/dist/prompts.js.map +1 -1
- package/dist/providers/backend-proxy-llm-provider.d.ts +25 -0
- package/dist/providers/backend-proxy-llm-provider.d.ts.map +1 -0
- package/dist/providers/backend-proxy-llm-provider.js +76 -0
- package/dist/providers/backend-proxy-llm-provider.js.map +1 -0
- package/dist/providers/local-llm-provider.d.ts +21 -0
- package/dist/providers/local-llm-provider.d.ts.map +1 -0
- package/dist/providers/local-llm-provider.js +35 -0
- package/dist/providers/local-llm-provider.js.map +1 -0
- package/dist/scenario-service.d.ts +27 -1
- package/dist/scenario-service.d.ts.map +1 -1
- package/dist/scenario-service.js +48 -12
- package/dist/scenario-service.js.map +1 -1
- package/dist/scenario-worker-class.d.ts +39 -2
- package/dist/scenario-worker-class.d.ts.map +1 -1
- package/dist/scenario-worker-class.js +614 -86
- package/dist/scenario-worker-class.js.map +1 -1
- package/dist/script-utils.d.ts +2 -0
- package/dist/script-utils.d.ts.map +1 -1
- package/dist/script-utils.js +44 -4
- package/dist/script-utils.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/browser-utils.d.ts +20 -1
- package/dist/utils/browser-utils.d.ts.map +1 -1
- package/dist/utils/browser-utils.js +102 -51
- package/dist/utils/browser-utils.js.map +1 -1
- package/dist/utils/page-info-utils.d.ts +23 -4
- package/dist/utils/page-info-utils.d.ts.map +1 -1
- package/dist/utils/page-info-utils.js +174 -43
- package/dist/utils/page-info-utils.js.map +1 -1
- package/package.json +1 -2
- package/plandocs/HUMAN_LIKE_IMPROVEMENTS.md +642 -0
- package/plandocs/MULTI_AGENT_ARCHITECTURE_REVIEW.md +844 -0
- package/plandocs/ORCHESTRATOR_MVP_SUMMARY.md +539 -0
- package/plandocs/PHASE1_ABSTRACTION_COMPLETE.md +241 -0
- package/plandocs/PHASE1_FINAL_STATUS.md +210 -0
- package/plandocs/PLANNING_SESSION_SUMMARY.md +372 -0
- package/plandocs/SCRIPT_CLEANUP_FEATURE.md +201 -0
- package/plandocs/SCRIPT_GENERATION_ARCHITECTURE.md +364 -0
- package/plandocs/SELECTOR_IMPROVEMENTS.md +139 -0
- package/src/credit-usage-service.ts +23 -5
- package/src/execution-service.ts +152 -42
- package/src/index.ts +169 -26
- package/src/llm-facade.ts +500 -126
- package/src/llm-provider.ts +43 -0
- package/src/model-constants.ts +23 -0
- package/src/orchestrator/index.ts +33 -0
- package/src/orchestrator/orchestrator-agent.ts +1037 -0
- package/src/orchestrator/tool-registry.ts +182 -0
- package/src/orchestrator/tools/check-page-ready.ts +75 -0
- package/src/orchestrator/tools/extract-data.ts +92 -0
- package/src/orchestrator/tools/index.ts +11 -0
- package/src/orchestrator/tools/inspect-page.ts +42 -0
- package/src/orchestrator/tools/recall-history.ts +72 -0
- package/src/orchestrator/tools/take-screenshot.ts +128 -0
- package/src/orchestrator/types.ts +200 -0
- package/src/playwright-mcp-service.ts +23 -5
- package/src/progress-reporter.ts +109 -0
- package/src/prompts.ts +606 -69
- package/src/providers/backend-proxy-llm-provider.ts +91 -0
- package/src/providers/local-llm-provider.ts +38 -0
- package/src/scenario-service.ts +83 -13
- package/src/scenario-worker-class.ts +740 -72
- package/src/script-utils.ts +50 -5
- package/src/types.ts +13 -1
- package/src/utils/browser-utils.ts +123 -51
- package/src/utils/page-info-utils.ts +210 -53
- package/testchimp-runner-core-0.0.22.tgz +0 -0
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,OAAO,GAAG;IACrB,uBAAuB;IACvB,oBAAoB,EAAE;QACpB,MAAM,EAAE,6nBAA6nB;QAEroB,IAAI,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,8EAA8E,QAAQ,i5BAAi5B;KACpgC;IAED,2CAA2C;IAC3C,kBAAkB,EAAE;QAClB,MAAM,EAAE,gRAAgR;QAExR,IAAI,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,+FAA+F,QAAQ,gzBAAgzB;KACp7B;IAED,qBAAqB;IACrB,kBAAkB,EAAE;QAClB,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend Proxy LLM Provider
|
|
3
|
+
* Calls backend proxy API with authentication
|
|
4
|
+
* Used by VS Extension and GitHub Runner
|
|
5
|
+
*/
|
|
6
|
+
import { LLMProvider, LLMRequest, LLMResponse } from '../llm-provider';
|
|
7
|
+
import { AuthConfig } from '../auth-config';
|
|
8
|
+
/**
|
|
9
|
+
* Default LLM provider that calls backend proxy
|
|
10
|
+
* Converts camelCase requests to snake_case for backend API
|
|
11
|
+
*/
|
|
12
|
+
export declare class BackendProxyLLMProvider implements LLMProvider {
|
|
13
|
+
private authConfig?;
|
|
14
|
+
private backendUrl;
|
|
15
|
+
private logger?;
|
|
16
|
+
constructor(authConfig?: AuthConfig, backendUrl?: string);
|
|
17
|
+
setLogger(logger: (message: string, level?: 'log' | 'error' | 'warn') => void): void;
|
|
18
|
+
callLLM(request: LLMRequest): Promise<LLMResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Estimate image token cost based on dimensions
|
|
21
|
+
* For gpt-4.1-mini: patches × 1.62, capped at 1536
|
|
22
|
+
*/
|
|
23
|
+
private estimateImageTokens;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=backend-proxy-llm-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-proxy-llm-provider.d.ts","sourceRoot":"","sources":["../../src/providers/backend-proxy-llm-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,WAAW;IACzD,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAC,CAA8D;gBAEjE,UAAU,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM;IAKxD,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAiDxD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Backend Proxy LLM Provider
|
|
4
|
+
* Calls backend proxy API with authentication
|
|
5
|
+
* Used by VS Extension and GitHub Runner
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BackendProxyLLMProvider = void 0;
|
|
12
|
+
const axios_1 = __importDefault(require("axios"));
|
|
13
|
+
const auth_config_1 = require("../auth-config");
|
|
14
|
+
/**
|
|
15
|
+
* Default LLM provider that calls backend proxy
|
|
16
|
+
* Converts camelCase requests to snake_case for backend API
|
|
17
|
+
*/
|
|
18
|
+
class BackendProxyLLMProvider {
|
|
19
|
+
constructor(authConfig, backendUrl) {
|
|
20
|
+
this.authConfig = authConfig;
|
|
21
|
+
this.backendUrl = backendUrl || 'https://featureservice.testchimp.io';
|
|
22
|
+
}
|
|
23
|
+
setLogger(logger) {
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
}
|
|
26
|
+
async callLLM(request) {
|
|
27
|
+
if (!this.authConfig) {
|
|
28
|
+
throw new Error('Authentication required for backend proxy LLM provider');
|
|
29
|
+
}
|
|
30
|
+
const headers = (0, auth_config_1.getAuthHeaders)(this.authConfig);
|
|
31
|
+
// Convert camelCase to snake_case for backend API (proto format)
|
|
32
|
+
const backendRequest = {
|
|
33
|
+
model: request.model,
|
|
34
|
+
system_prompt: request.systemPrompt,
|
|
35
|
+
user_prompt: request.userPrompt,
|
|
36
|
+
image_url: request.imageUrl
|
|
37
|
+
};
|
|
38
|
+
const url = `${this.backendUrl}/localagent/call_llm`;
|
|
39
|
+
try {
|
|
40
|
+
const response = await axios_1.default.post(url, backendRequest, { headers, timeout: 300000 });
|
|
41
|
+
// Calculate token usage (heuristic: 4 chars = 1 token)
|
|
42
|
+
const inputText = `${request.systemPrompt || ''}\n${request.userPrompt || ''}`;
|
|
43
|
+
const inputTokens = Math.ceil(inputText.length / 4);
|
|
44
|
+
// Add image tokens if present (for vision models)
|
|
45
|
+
let imageTokens = 0;
|
|
46
|
+
if (request.imageUrl) {
|
|
47
|
+
imageTokens = this.estimateImageTokens(request.imageUrl);
|
|
48
|
+
}
|
|
49
|
+
const outputTokens = Math.ceil((response.data.answer || '').length / 4);
|
|
50
|
+
return {
|
|
51
|
+
answer: response.data.answer,
|
|
52
|
+
usage: {
|
|
53
|
+
inputTokens: inputTokens + imageTokens,
|
|
54
|
+
outputTokens
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.logger?.(`LLM call failed: ${error}`, 'error');
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Estimate image token cost based on dimensions
|
|
65
|
+
* For gpt-4.1-mini: patches × 1.62, capped at 1536
|
|
66
|
+
*/
|
|
67
|
+
estimateImageTokens(imageDataUrl) {
|
|
68
|
+
// For simplicity, estimate common screenshot sizes
|
|
69
|
+
// Viewport (1920x1080): ~1452 tokens (after multiplier and cap)
|
|
70
|
+
// Full page (1920x3000+): ~1536 tokens (capped)
|
|
71
|
+
// Conservative estimate: assume viewport screenshot
|
|
72
|
+
return 1500; // ~1452-1536 tokens for typical screenshot
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.BackendProxyLLMProvider = BackendProxyLLMProvider;
|
|
76
|
+
//# sourceMappingURL=backend-proxy-llm-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-proxy-llm-provider.js","sourceRoot":"","sources":["../../src/providers/backend-proxy-llm-provider.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,kDAA0B;AAE1B,gDAA4D;AAE5D;;;GAGG;AACH,MAAa,uBAAuB;IAKlC,YAAY,UAAuB,EAAE,UAAmB;QACtD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,qCAAqC,CAAC;IACxE,CAAC;IAED,SAAS,CAAC,MAAmE;QAC3E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,4BAAc,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhD,iEAAiE;QACjE,MAAM,cAAc,GAAG;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,aAAa,EAAE,OAAO,CAAC,YAAY;YACnC,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,SAAS,EAAE,OAAO,CAAC,QAAQ;SAC5B,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,sBAAsB,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,EACH,cAAc,EACd,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAC7B,CAAC;YAEF,uDAAuD;YACvD,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,KAAK,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEpD,kDAAkD;YAClD,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAExE,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAC5B,KAAK,EAAE;oBACL,WAAW,EAAE,WAAW,GAAG,WAAW;oBACtC,YAAY;iBACb;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC,oBAAoB,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,YAAoB;QAC9C,mDAAmD;QACnD,gEAAgE;QAChE,gDAAgD;QAEhD,oDAAoD;QACpD,OAAO,IAAI,CAAC,CAAE,2CAA2C;IAC3D,CAAC;CACF;AA3ED,0DA2EC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local LLM Provider
|
|
3
|
+
* Calls LLM directly via callback (not via backend proxy)
|
|
4
|
+
* For future use by Script Service (Phase 2)
|
|
5
|
+
*/
|
|
6
|
+
import { LLMProvider, LLMRequest, LLMResponse } from '../llm-provider';
|
|
7
|
+
/**
|
|
8
|
+
* Local LLM provider that calls LLM directly via callback
|
|
9
|
+
* Allows Script Service to use its own OpenAI integration
|
|
10
|
+
*/
|
|
11
|
+
export declare class LocalLLMProvider implements LLMProvider {
|
|
12
|
+
private llmCallback;
|
|
13
|
+
private logger?;
|
|
14
|
+
/**
|
|
15
|
+
* @param llmCallback Function that calls LLM (provided by environment)
|
|
16
|
+
*/
|
|
17
|
+
constructor(llmCallback: (request: LLMRequest) => Promise<string>);
|
|
18
|
+
setLogger(logger: (message: string, level?: 'log' | 'error' | 'warn') => void): void;
|
|
19
|
+
callLLM(request: LLMRequest): Promise<LLMResponse>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=local-llm-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-llm-provider.d.ts","sourceRoot":"","sources":["../../src/providers/local-llm-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,MAAM,CAAC,CAA8D;IAE7E;;OAEG;gBACS,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC;IAIjE,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CASzD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Local LLM Provider
|
|
4
|
+
* Calls LLM directly via callback (not via backend proxy)
|
|
5
|
+
* For future use by Script Service (Phase 2)
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.LocalLLMProvider = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Local LLM provider that calls LLM directly via callback
|
|
11
|
+
* Allows Script Service to use its own OpenAI integration
|
|
12
|
+
*/
|
|
13
|
+
class LocalLLMProvider {
|
|
14
|
+
/**
|
|
15
|
+
* @param llmCallback Function that calls LLM (provided by environment)
|
|
16
|
+
*/
|
|
17
|
+
constructor(llmCallback) {
|
|
18
|
+
this.llmCallback = llmCallback;
|
|
19
|
+
}
|
|
20
|
+
setLogger(logger) {
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
}
|
|
23
|
+
async callLLM(request) {
|
|
24
|
+
try {
|
|
25
|
+
const answer = await this.llmCallback(request);
|
|
26
|
+
return { answer };
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
this.logger?.(`Local LLM call failed: ${error}`, 'error');
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.LocalLLMProvider = LocalLLMProvider;
|
|
35
|
+
//# sourceMappingURL=local-llm-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-llm-provider.js","sourceRoot":"","sources":["../../src/providers/local-llm-provider.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;;GAGG;AACH,MAAa,gBAAgB;IAI3B;;OAEG;IACH,YAAY,WAAqD;QAC/D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,MAAmE;QAC3E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAmB;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC,0BAA0B,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAxBD,4CAwBC"}
|
|
@@ -2,6 +2,9 @@ import { EventEmitter } from 'events';
|
|
|
2
2
|
import { PlaywrightConfig } from './types';
|
|
3
3
|
import { FileHandler } from './file-handler';
|
|
4
4
|
import { AuthConfig } from './auth-config';
|
|
5
|
+
import { LLMProvider } from './llm-provider';
|
|
6
|
+
import { ProgressReporter } from './progress-reporter';
|
|
7
|
+
import { AgentConfig } from './orchestrator';
|
|
5
8
|
/**
|
|
6
9
|
* Service for processing scenarios using LLM + Playwright
|
|
7
10
|
*/
|
|
@@ -14,7 +17,30 @@ export declare class ScenarioService extends EventEmitter {
|
|
|
14
17
|
private authConfig;
|
|
15
18
|
private backendUrl?;
|
|
16
19
|
private creditUsageService;
|
|
17
|
-
|
|
20
|
+
private logger?;
|
|
21
|
+
private llmProvider?;
|
|
22
|
+
private progressReporter?;
|
|
23
|
+
private useOrchestrator;
|
|
24
|
+
private orchestratorConfig?;
|
|
25
|
+
private debugMode;
|
|
26
|
+
private outputChannel?;
|
|
27
|
+
constructor(maxWorkers?: number, fileHandler?: FileHandler, llmProvider?: LLMProvider, progressReporter?: ProgressReporter, authConfig?: AuthConfig, backendUrl?: string, options?: {
|
|
28
|
+
useOrchestrator?: boolean;
|
|
29
|
+
orchestratorConfig?: Partial<AgentConfig>;
|
|
30
|
+
debugMode?: boolean;
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Set a logger callback for capturing execution logs
|
|
34
|
+
*/
|
|
35
|
+
setLogger(logger: (message: string, level?: 'log' | 'error' | 'warn') => void): void;
|
|
36
|
+
/**
|
|
37
|
+
* Set output channel for worker logs (VS Code OutputChannel)
|
|
38
|
+
*/
|
|
39
|
+
setOutputChannel(outputChannel: any): void;
|
|
40
|
+
/**
|
|
41
|
+
* Log a message using the configured logger
|
|
42
|
+
*/
|
|
43
|
+
private log;
|
|
18
44
|
private initializeWorkers;
|
|
19
45
|
private createWorker;
|
|
20
46
|
initialize(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-service.d.ts","sourceRoot":"","sources":["../src/scenario-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAiD,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"scenario-service.d.ts","sourceRoot":"","sources":["../src/scenario-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAiD,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAC,CAA8D;IAC7E,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,kBAAkB,CAAC,CAAuB;IAClD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAM;gBAG1B,UAAU,GAAE,MAAU,EACtB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,UAAU,CAAC,EAAE,UAAU,EACvB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB;IAeH;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI;IAIpF;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;IAI1C;;OAEG;IACH,OAAO,CAAC,GAAG;YAOG,iBAAiB;YAMjB,YAAY;IA0BpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;YAmBpH,cAAc;IA0C5B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,cAAc;IAShB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAWhC"}
|
package/dist/scenario-service.js
CHANGED
|
@@ -15,16 +15,42 @@ dotenv_1.default.config();
|
|
|
15
15
|
* Service for processing scenarios using LLM + Playwright
|
|
16
16
|
*/
|
|
17
17
|
class ScenarioService extends events_1.EventEmitter {
|
|
18
|
-
constructor(maxWorkers = 2, fileHandler, authConfig, backendUrl) {
|
|
18
|
+
constructor(maxWorkers = 2, fileHandler, llmProvider, progressReporter, authConfig, backendUrl, options) {
|
|
19
19
|
super();
|
|
20
20
|
this.workers = [];
|
|
21
21
|
this.jobQueue = [];
|
|
22
22
|
this.busyWorkers = new Set();
|
|
23
23
|
this.maxWorkers = maxWorkers;
|
|
24
24
|
this.fileHandler = fileHandler || new file_handler_1.NoOpFileHandler();
|
|
25
|
+
this.llmProvider = llmProvider;
|
|
26
|
+
this.progressReporter = progressReporter;
|
|
25
27
|
this.authConfig = authConfig || null;
|
|
26
28
|
this.backendUrl = backendUrl;
|
|
27
29
|
this.creditUsageService = new credit_usage_service_1.CreditUsageService(authConfig, backendUrl);
|
|
30
|
+
this.useOrchestrator = options?.useOrchestrator || false;
|
|
31
|
+
this.orchestratorConfig = options?.orchestratorConfig;
|
|
32
|
+
this.debugMode = options?.debugMode || false;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Set a logger callback for capturing execution logs
|
|
36
|
+
*/
|
|
37
|
+
setLogger(logger) {
|
|
38
|
+
this.logger = logger;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Set output channel for worker logs (VS Code OutputChannel)
|
|
42
|
+
*/
|
|
43
|
+
setOutputChannel(outputChannel) {
|
|
44
|
+
this.outputChannel = outputChannel;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Log a message using the configured logger
|
|
48
|
+
*/
|
|
49
|
+
log(message, level = 'log') {
|
|
50
|
+
if (this.logger) {
|
|
51
|
+
this.logger(message, level);
|
|
52
|
+
}
|
|
53
|
+
// No console fallback - logs are routed to consumer
|
|
28
54
|
}
|
|
29
55
|
async initializeWorkers() {
|
|
30
56
|
for (let i = 0; i < this.maxWorkers; i++) {
|
|
@@ -32,15 +58,25 @@ class ScenarioService extends events_1.EventEmitter {
|
|
|
32
58
|
}
|
|
33
59
|
}
|
|
34
60
|
async createWorker() {
|
|
35
|
-
|
|
61
|
+
// Pass providers and orchestrator options to worker
|
|
62
|
+
const worker = new scenario_worker_class_1.ScenarioWorker(this.fileHandler, this.llmProvider, this.progressReporter, this.authConfig || undefined, this.backendUrl, {
|
|
63
|
+
useOrchestrator: this.useOrchestrator,
|
|
64
|
+
orchestratorConfig: this.orchestratorConfig,
|
|
65
|
+
debugMode: this.debugMode
|
|
66
|
+
}, this.outputChannel // Pass outputChannel for log routing
|
|
67
|
+
);
|
|
36
68
|
await worker.initialize();
|
|
69
|
+
// Forward log events from worker to service listeners
|
|
70
|
+
worker.on('log', (jobId, message) => {
|
|
71
|
+
this.emit('jobLog', jobId, message);
|
|
72
|
+
});
|
|
37
73
|
this.workers.push(worker);
|
|
38
|
-
|
|
74
|
+
this.log(`Scenario worker initialized${this.useOrchestrator ? ' (Orchestrator Mode)' : ''} with session: ${worker['sessionId']}`);
|
|
39
75
|
}
|
|
40
76
|
async initialize() {
|
|
41
77
|
// Wait for workers to be initialized
|
|
42
78
|
await this.initializeWorkers();
|
|
43
|
-
|
|
79
|
+
this.log('Scenario service initialized');
|
|
44
80
|
}
|
|
45
81
|
processScenario(scenario, testName, config, model, scenarioFileName) {
|
|
46
82
|
const jobId = `scenario_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
@@ -61,28 +97,28 @@ class ScenarioService extends events_1.EventEmitter {
|
|
|
61
97
|
if (this.jobQueue.length === 0) {
|
|
62
98
|
return;
|
|
63
99
|
}
|
|
64
|
-
|
|
100
|
+
this.log(`[ScenarioService] Processing next job. Queue length: ${this.jobQueue.length}, Workers: ${this.workers.length}, Busy workers: ${this.busyWorkers.size}`);
|
|
65
101
|
// Find available worker (proper load balancing)
|
|
66
102
|
const availableWorker = this.workers.find(worker => !this.busyWorkers.has(worker));
|
|
67
103
|
if (!availableWorker) {
|
|
68
|
-
|
|
104
|
+
this.log('[ScenarioService] No available workers, waiting...');
|
|
69
105
|
return; // All workers busy, wait for one to become available
|
|
70
106
|
}
|
|
71
107
|
const job = this.jobQueue.shift();
|
|
72
108
|
if (!job) {
|
|
73
109
|
return;
|
|
74
110
|
}
|
|
75
|
-
|
|
111
|
+
this.log(`[ScenarioService] Processing job ${job.id} with worker`);
|
|
76
112
|
// Mark worker as busy
|
|
77
113
|
this.busyWorkers.add(availableWorker);
|
|
78
114
|
try {
|
|
79
115
|
// Process job directly with worker
|
|
80
116
|
const result = await availableWorker.processScenarioJob(job);
|
|
81
|
-
|
|
117
|
+
this.log(`[ScenarioService] Job ${job.id} completed with result: ${JSON.stringify(result)}`);
|
|
82
118
|
this.handleJobResult(job.id, result);
|
|
83
119
|
}
|
|
84
120
|
catch (error) {
|
|
85
|
-
|
|
121
|
+
this.log(`Error processing job with worker: ${error}`, 'error');
|
|
86
122
|
this.emit('jobError', job.id, error);
|
|
87
123
|
// Put job back in queue if it failed
|
|
88
124
|
this.jobQueue.unshift(job);
|
|
@@ -98,7 +134,7 @@ class ScenarioService extends events_1.EventEmitter {
|
|
|
98
134
|
// Report credit usage for successful script generation
|
|
99
135
|
if (result.success) {
|
|
100
136
|
this.creditUsageService.reportScriptGenerationCredit(jobId).catch(error => {
|
|
101
|
-
|
|
137
|
+
this.log(`Failed to report credit usage for script generation (job: ${jobId}): ${error}`, 'warn');
|
|
102
138
|
});
|
|
103
139
|
}
|
|
104
140
|
// Emit result event
|
|
@@ -115,13 +151,13 @@ class ScenarioService extends events_1.EventEmitter {
|
|
|
115
151
|
this.processNextJob();
|
|
116
152
|
}
|
|
117
153
|
async shutdown() {
|
|
118
|
-
|
|
154
|
+
this.log('Shutting down scenario service...');
|
|
119
155
|
// Cleanup all workers
|
|
120
156
|
const cleanupPromises = this.workers.map(worker => worker.cleanup());
|
|
121
157
|
await Promise.all(cleanupPromises);
|
|
122
158
|
this.workers = [];
|
|
123
159
|
this.busyWorkers.clear();
|
|
124
|
-
|
|
160
|
+
this.log('Scenario service shutdown complete');
|
|
125
161
|
}
|
|
126
162
|
}
|
|
127
163
|
exports.ScenarioService = ScenarioService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-service.js","sourceRoot":"","sources":["../src/scenario-service.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAsC;AACtC,oDAA4B;AAE5B,mEAAyD;AACzD,iDAA8D;AAE9D,iEAA4D;
|
|
1
|
+
{"version":3,"file":"scenario-service.js","sourceRoot":"","sources":["../src/scenario-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
1
2
|
import { ScenarioResponse } from './types';
|
|
2
3
|
import { FileHandler } from './file-handler';
|
|
3
4
|
import { AuthConfig } from './auth-config';
|
|
5
|
+
import { LLMProvider } from './llm-provider';
|
|
6
|
+
import { ProgressReporter } from './progress-reporter';
|
|
7
|
+
import { AgentConfig } from './orchestrator';
|
|
4
8
|
interface OutputChannel {
|
|
5
9
|
appendLine: (text: string) => void;
|
|
6
10
|
}
|
|
@@ -12,15 +16,48 @@ interface ScenarioJob {
|
|
|
12
16
|
model?: string;
|
|
13
17
|
scenarioFileName?: string;
|
|
14
18
|
}
|
|
15
|
-
export declare class ScenarioWorker {
|
|
19
|
+
export declare class ScenarioWorker extends EventEmitter {
|
|
16
20
|
private initialized;
|
|
17
21
|
private sessionId;
|
|
18
22
|
private llmFacade;
|
|
19
23
|
private fileHandler?;
|
|
20
24
|
private outputChannel?;
|
|
21
|
-
|
|
25
|
+
private progressReporter?;
|
|
26
|
+
private currentJobId?;
|
|
27
|
+
private useOrchestrator;
|
|
28
|
+
private orchestratorAgent?;
|
|
29
|
+
private toolRegistry?;
|
|
30
|
+
private orchestratorConfig?;
|
|
31
|
+
private debugMode;
|
|
32
|
+
constructor(fileHandler?: FileHandler, llmProvider?: LLMProvider, progressReporter?: ProgressReporter, authConfig?: AuthConfig, backendUrl?: string, options?: {
|
|
33
|
+
useOrchestrator?: boolean;
|
|
34
|
+
orchestratorConfig?: Partial<AgentConfig>;
|
|
35
|
+
debugMode?: boolean;
|
|
36
|
+
}, outputChannel?: OutputChannel);
|
|
37
|
+
/**
|
|
38
|
+
* Initialize orchestrator mode with tools
|
|
39
|
+
*/
|
|
40
|
+
private initializeOrchestrator;
|
|
22
41
|
private log;
|
|
23
42
|
private logError;
|
|
43
|
+
/**
|
|
44
|
+
* Capture screenshot as data URL
|
|
45
|
+
* Returns data:image/png;base64,... format
|
|
46
|
+
*/
|
|
47
|
+
private captureStepScreenshot;
|
|
48
|
+
/**
|
|
49
|
+
* Report step progress to progress reporter
|
|
50
|
+
*/
|
|
51
|
+
private reportStepProgress;
|
|
52
|
+
/**
|
|
53
|
+
* Report job progress to progress reporter
|
|
54
|
+
*/
|
|
55
|
+
private reportJobProgress;
|
|
56
|
+
/**
|
|
57
|
+
* Detect if a step is complex and benefits from proactive vision usage
|
|
58
|
+
* Complex steps: form filling, verification, navigation after actions
|
|
59
|
+
*/
|
|
60
|
+
private isComplexStep;
|
|
24
61
|
initialize(): Promise<void>;
|
|
25
62
|
processScenarioJob(job: ScenarioJob): Promise<ScenarioResponse>;
|
|
26
63
|
private executePlaywrightCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-worker-class.d.ts","sourceRoot":"","sources":["../src/scenario-worker-class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scenario-worker-class.d.ts","sourceRoot":"","sources":["../src/scenario-worker-class.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAkB,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAkD,MAAM,qBAAqB,CAAC;AAEvG,OAAO,EAIL,WAAW,EAMZ,MAAM,gBAAgB,CAAC;AAGxB,UAAU,aAAa;IACrB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAGD,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAOD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,YAAY,CAAC,CAAS;IAG9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,kBAAkB,CAAC,CAAuB;IAClD,OAAO,CAAC,SAAS,CAAkB;gBAGjC,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,UAAU,CAAC,EAAE,UAAU,EACvB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,EACD,aAAa,CAAC,EAAE,aAAa;IAsB/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0C9B,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,QAAQ;IAWhB;;;OAGG;YACW,qBAAqB;IAWnC;;OAEG;YACW,kBAAkB;IAchC;;OAEG;YACW,iBAAiB;IAW/B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAkCf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAksBvD,wBAAwB;IA6BhC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|