@predicatelabs/sdk 0.99.9
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/LICENSE +24 -0
- package/README.md +252 -0
- package/dist/actions.d.ts +185 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +1120 -0
- package/dist/actions.js.map +1 -0
- package/dist/agent-runtime.d.ts +352 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +1170 -0
- package/dist/agent-runtime.js.map +1 -0
- package/dist/agent.d.ts +164 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +408 -0
- package/dist/agent.js.map +1 -0
- package/dist/asserts/expect.d.ts +159 -0
- package/dist/asserts/expect.d.ts.map +1 -0
- package/dist/asserts/expect.js +547 -0
- package/dist/asserts/expect.js.map +1 -0
- package/dist/asserts/index.d.ts +58 -0
- package/dist/asserts/index.d.ts.map +1 -0
- package/dist/asserts/index.js +70 -0
- package/dist/asserts/index.js.map +1 -0
- package/dist/asserts/query.d.ts +199 -0
- package/dist/asserts/query.d.ts.map +1 -0
- package/dist/asserts/query.js +288 -0
- package/dist/asserts/query.js.map +1 -0
- package/dist/backends/actions.d.ts +119 -0
- package/dist/backends/actions.d.ts.map +1 -0
- package/dist/backends/actions.js +291 -0
- package/dist/backends/actions.js.map +1 -0
- package/dist/backends/browser-use-adapter.d.ts +131 -0
- package/dist/backends/browser-use-adapter.d.ts.map +1 -0
- package/dist/backends/browser-use-adapter.js +219 -0
- package/dist/backends/browser-use-adapter.js.map +1 -0
- package/dist/backends/cdp-backend.d.ts +66 -0
- package/dist/backends/cdp-backend.d.ts.map +1 -0
- package/dist/backends/cdp-backend.js +273 -0
- package/dist/backends/cdp-backend.js.map +1 -0
- package/dist/backends/index.d.ts +80 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +101 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/protocol.d.ts +156 -0
- package/dist/backends/protocol.d.ts.map +1 -0
- package/dist/backends/protocol.js +16 -0
- package/dist/backends/protocol.js.map +1 -0
- package/dist/backends/sentience-context.d.ts +143 -0
- package/dist/backends/sentience-context.d.ts.map +1 -0
- package/dist/backends/sentience-context.js +359 -0
- package/dist/backends/sentience-context.js.map +1 -0
- package/dist/backends/snapshot.d.ts +188 -0
- package/dist/backends/snapshot.d.ts.map +1 -0
- package/dist/backends/snapshot.js +360 -0
- package/dist/backends/snapshot.js.map +1 -0
- package/dist/browser.d.ts +154 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +920 -0
- package/dist/browser.js.map +1 -0
- package/dist/canonicalization.d.ts +126 -0
- package/dist/canonicalization.d.ts.map +1 -0
- package/dist/canonicalization.js +161 -0
- package/dist/canonicalization.js.map +1 -0
- package/dist/captcha/strategies.d.ts +12 -0
- package/dist/captcha/strategies.d.ts.map +1 -0
- package/dist/captcha/strategies.js +43 -0
- package/dist/captcha/strategies.js.map +1 -0
- package/dist/captcha/types.d.ts +45 -0
- package/dist/captcha/types.d.ts.map +1 -0
- package/dist/captcha/types.js +12 -0
- package/dist/captcha/types.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +422 -0
- package/dist/cli.js.map +1 -0
- package/dist/conversational-agent.d.ts +123 -0
- package/dist/conversational-agent.d.ts.map +1 -0
- package/dist/conversational-agent.js +341 -0
- package/dist/conversational-agent.js.map +1 -0
- package/dist/cursor-policy.d.ts +41 -0
- package/dist/cursor-policy.d.ts.map +1 -0
- package/dist/cursor-policy.js +81 -0
- package/dist/cursor-policy.js.map +1 -0
- package/dist/debugger.d.ts +28 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/debugger.js +107 -0
- package/dist/debugger.js.map +1 -0
- package/dist/expect.d.ts +16 -0
- package/dist/expect.d.ts.map +1 -0
- package/dist/expect.js +67 -0
- package/dist/expect.js.map +1 -0
- package/dist/failure-artifacts.d.ts +95 -0
- package/dist/failure-artifacts.d.ts.map +1 -0
- package/dist/failure-artifacts.js +805 -0
- package/dist/failure-artifacts.js.map +1 -0
- package/dist/generator.d.ts +16 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +205 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +160 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector.d.ts +13 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +153 -0
- package/dist/inspector.js.map +1 -0
- package/dist/llm-provider.d.ts +144 -0
- package/dist/llm-provider.d.ts.map +1 -0
- package/dist/llm-provider.js +460 -0
- package/dist/llm-provider.js.map +1 -0
- package/dist/ordinal.d.ts +90 -0
- package/dist/ordinal.d.ts.map +1 -0
- package/dist/ordinal.js +249 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/overlay.d.ts +63 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +102 -0
- package/dist/overlay.js.map +1 -0
- package/dist/protocols/browser-protocol.d.ts +79 -0
- package/dist/protocols/browser-protocol.d.ts.map +1 -0
- package/dist/protocols/browser-protocol.js +9 -0
- package/dist/protocols/browser-protocol.js.map +1 -0
- package/dist/query.d.ts +66 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +482 -0
- package/dist/query.js.map +1 -0
- package/dist/read.d.ts +47 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +128 -0
- package/dist/read.js.map +1 -0
- package/dist/recorder.d.ts +44 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/recorder.js +262 -0
- package/dist/recorder.js.map +1 -0
- package/dist/runtime-agent.d.ts +72 -0
- package/dist/runtime-agent.d.ts.map +1 -0
- package/dist/runtime-agent.js +357 -0
- package/dist/runtime-agent.js.map +1 -0
- package/dist/screenshot.d.ts +17 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +40 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/snapshot-diff.d.ts +23 -0
- package/dist/snapshot-diff.d.ts.map +1 -0
- package/dist/snapshot-diff.js +119 -0
- package/dist/snapshot-diff.js.map +1 -0
- package/dist/snapshot.d.ts +47 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +358 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/textSearch.d.ts +64 -0
- package/dist/textSearch.d.ts.map +1 -0
- package/dist/textSearch.js +113 -0
- package/dist/textSearch.js.map +1 -0
- package/dist/tools/context.d.ts +18 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +40 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/defaults.d.ts +5 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +368 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/filesystem.d.ts +12 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +137 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +38 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +100 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tracing/cloud-sink.d.ts +189 -0
- package/dist/tracing/cloud-sink.d.ts.map +1 -0
- package/dist/tracing/cloud-sink.js +1067 -0
- package/dist/tracing/cloud-sink.js.map +1 -0
- package/dist/tracing/index-schema.d.ts +231 -0
- package/dist/tracing/index-schema.d.ts.map +1 -0
- package/dist/tracing/index-schema.js +235 -0
- package/dist/tracing/index-schema.js.map +1 -0
- package/dist/tracing/index.d.ts +12 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +28 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/indexer.d.ts +20 -0
- package/dist/tracing/indexer.d.ts.map +1 -0
- package/dist/tracing/indexer.js +347 -0
- package/dist/tracing/indexer.js.map +1 -0
- package/dist/tracing/jsonl-sink.d.ts +51 -0
- package/dist/tracing/jsonl-sink.d.ts.map +1 -0
- package/dist/tracing/jsonl-sink.js +329 -0
- package/dist/tracing/jsonl-sink.js.map +1 -0
- package/dist/tracing/sink.d.ts +25 -0
- package/dist/tracing/sink.d.ts.map +1 -0
- package/dist/tracing/sink.js +15 -0
- package/dist/tracing/sink.js.map +1 -0
- package/dist/tracing/tracer-factory.d.ts +102 -0
- package/dist/tracing/tracer-factory.d.ts.map +1 -0
- package/dist/tracing/tracer-factory.js +375 -0
- package/dist/tracing/tracer-factory.js.map +1 -0
- package/dist/tracing/tracer.d.ts +140 -0
- package/dist/tracing/tracer.d.ts.map +1 -0
- package/dist/tracing/tracer.js +336 -0
- package/dist/tracing/tracer.js.map +1 -0
- package/dist/tracing/types.d.ts +203 -0
- package/dist/tracing/types.d.ts.map +1 -0
- package/dist/tracing/types.js +8 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types.d.ts +422 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/action-executor.d.ts +25 -0
- package/dist/utils/action-executor.d.ts.map +1 -0
- package/dist/utils/action-executor.js +121 -0
- package/dist/utils/action-executor.js.map +1 -0
- package/dist/utils/browser-evaluator.d.ts +76 -0
- package/dist/utils/browser-evaluator.d.ts.map +1 -0
- package/dist/utils/browser-evaluator.js +130 -0
- package/dist/utils/browser-evaluator.js.map +1 -0
- package/dist/utils/browser.d.ts +30 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +75 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/element-filter.d.ts +76 -0
- package/dist/utils/element-filter.d.ts.map +1 -0
- package/dist/utils/element-filter.js +195 -0
- package/dist/utils/element-filter.js.map +1 -0
- package/dist/utils/grid-utils.d.ts +37 -0
- package/dist/utils/grid-utils.d.ts.map +1 -0
- package/dist/utils/grid-utils.js +283 -0
- package/dist/utils/grid-utils.js.map +1 -0
- package/dist/utils/llm-interaction-handler.d.ts +41 -0
- package/dist/utils/llm-interaction-handler.d.ts.map +1 -0
- package/dist/utils/llm-interaction-handler.js +171 -0
- package/dist/utils/llm-interaction-handler.js.map +1 -0
- package/dist/utils/llm-response-builder.d.ts +56 -0
- package/dist/utils/llm-response-builder.d.ts.map +1 -0
- package/dist/utils/llm-response-builder.js +130 -0
- package/dist/utils/llm-response-builder.js.map +1 -0
- package/dist/utils/selector-utils.d.ts +12 -0
- package/dist/utils/selector-utils.d.ts.map +1 -0
- package/dist/utils/selector-utils.js +32 -0
- package/dist/utils/selector-utils.js.map +1 -0
- package/dist/utils/snapshot-event-builder.d.ts +28 -0
- package/dist/utils/snapshot-event-builder.d.ts.map +1 -0
- package/dist/utils/snapshot-event-builder.js +88 -0
- package/dist/utils/snapshot-event-builder.js.map +1 -0
- package/dist/utils/snapshot-processor.d.ts +27 -0
- package/dist/utils/snapshot-processor.d.ts.map +1 -0
- package/dist/utils/snapshot-processor.js +47 -0
- package/dist/utils/snapshot-processor.js.map +1 -0
- package/dist/utils/trace-event-builder.d.ts +122 -0
- package/dist/utils/trace-event-builder.d.ts.map +1 -0
- package/dist/utils/trace-event-builder.js +365 -0
- package/dist/utils/trace-event-builder.js.map +1 -0
- package/dist/utils/trace-file-manager.d.ts +70 -0
- package/dist/utils/trace-file-manager.d.ts.map +1 -0
- package/dist/utils/trace-file-manager.js +194 -0
- package/dist/utils/trace-file-manager.js.map +1 -0
- package/dist/utils/zod.d.ts +5 -0
- package/dist/utils/zod.d.ts.map +1 -0
- package/dist/utils/zod.js +80 -0
- package/dist/utils/zod.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/verification.d.ts +194 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +530 -0
- package/dist/verification.js.map +1 -0
- package/dist/vision-executor.d.ts +18 -0
- package/dist/vision-executor.d.ts.map +1 -0
- package/dist/vision-executor.js +60 -0
- package/dist/vision-executor.js.map +1 -0
- package/dist/visual-agent.d.ts +120 -0
- package/dist/visual-agent.d.ts.map +1 -0
- package/dist/visual-agent.js +796 -0
- package/dist/visual-agent.js.map +1 -0
- package/dist/wait.d.ts +35 -0
- package/dist/wait.d.ts.map +1 -0
- package/dist/wait.js +76 -0
- package/dist/wait.js.map +1 -0
- package/package.json +94 -0
- package/spec/README.md +72 -0
- package/spec/SNAPSHOT_V1.md +208 -0
- package/spec/sdk-types.md +259 -0
- package/spec/snapshot.schema.json +148 -0
- package/src/extension/background.js +104 -0
- package/src/extension/content.js +162 -0
- package/src/extension/injected_api.js +1399 -0
- package/src/extension/manifest.json +36 -0
- package/src/extension/pkg/README.md +1340 -0
- package/src/extension/pkg/package.json +15 -0
- package/src/extension/pkg/sentience_core.d.ts +51 -0
- package/src/extension/pkg/sentience_core.js +371 -0
- package/src/extension/pkg/sentience_core_bg.wasm +0 -0
- package/src/extension/pkg/sentience_core_bg.wasm.d.ts +10 -0
- package/src/extension/release.json +116 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI commands for Sentience SDK
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const readline = __importStar(require("readline"));
|
|
42
|
+
const browser_1 = require("./browser");
|
|
43
|
+
const inspector_1 = require("./inspector");
|
|
44
|
+
const recorder_1 = require("./recorder");
|
|
45
|
+
const generator_1 = require("./generator");
|
|
46
|
+
const actions_1 = require("./actions");
|
|
47
|
+
const snapshot_1 = require("./snapshot");
|
|
48
|
+
const screenshot_1 = require("./screenshot");
|
|
49
|
+
async function cmdInspect(args) {
|
|
50
|
+
// Parse proxy from args
|
|
51
|
+
let proxy;
|
|
52
|
+
for (let i = 0; i < args.length; i++) {
|
|
53
|
+
if (args[i] === '--proxy' && i + 1 < args.length) {
|
|
54
|
+
proxy = args[++i];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const browser = new browser_1.SentienceBrowser(undefined, undefined, false, proxy);
|
|
58
|
+
try {
|
|
59
|
+
await browser.start();
|
|
60
|
+
console.log('✅ Inspector started. Hover elements to see info, click to see full details.');
|
|
61
|
+
console.log('Press Ctrl+C to stop.');
|
|
62
|
+
const inspector = (0, inspector_1.inspect)(browser);
|
|
63
|
+
await inspector.start();
|
|
64
|
+
// Keep running until interrupted
|
|
65
|
+
process.on('SIGINT', () => {
|
|
66
|
+
void (async () => {
|
|
67
|
+
console.log('\n👋 Inspector stopped.');
|
|
68
|
+
await inspector.stop();
|
|
69
|
+
await browser.close();
|
|
70
|
+
process.exit(0);
|
|
71
|
+
})();
|
|
72
|
+
});
|
|
73
|
+
// Wait indefinitely
|
|
74
|
+
await new Promise(() => { });
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.error(`❌ Error: ${e.message}`);
|
|
78
|
+
await browser.close();
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function cmdRecord(args) {
|
|
83
|
+
// Parse arguments
|
|
84
|
+
let url;
|
|
85
|
+
let output = 'trace.json';
|
|
86
|
+
let captureSnapshots = false;
|
|
87
|
+
let proxy;
|
|
88
|
+
const maskPatterns = [];
|
|
89
|
+
for (let i = 0; i < args.length; i++) {
|
|
90
|
+
if (args[i] === '--url' && i + 1 < args.length) {
|
|
91
|
+
url = args[++i];
|
|
92
|
+
}
|
|
93
|
+
else if (args[i] === '--output' || args[i] === '-o') {
|
|
94
|
+
output = args[++i];
|
|
95
|
+
}
|
|
96
|
+
else if (args[i] === '--snapshots') {
|
|
97
|
+
captureSnapshots = true;
|
|
98
|
+
}
|
|
99
|
+
else if (args[i] === '--mask' && i + 1 < args.length) {
|
|
100
|
+
maskPatterns.push(args[++i]);
|
|
101
|
+
}
|
|
102
|
+
else if (args[i] === '--proxy' && i + 1 < args.length) {
|
|
103
|
+
proxy = args[++i];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const browser = new browser_1.SentienceBrowser(undefined, undefined, false, proxy);
|
|
107
|
+
try {
|
|
108
|
+
await browser.start();
|
|
109
|
+
// Navigate to start URL if provided
|
|
110
|
+
if (url) {
|
|
111
|
+
const page = browser.getPage();
|
|
112
|
+
if (!page) {
|
|
113
|
+
throw new Error('Browser not started. Call start() first.');
|
|
114
|
+
}
|
|
115
|
+
await page.goto(url);
|
|
116
|
+
await page.waitForLoadState('networkidle');
|
|
117
|
+
}
|
|
118
|
+
console.log('✅ Recording started. Perform actions in the browser.');
|
|
119
|
+
console.log('Press Ctrl+C to stop and save trace.');
|
|
120
|
+
const rec = (0, recorder_1.record)(browser, captureSnapshots);
|
|
121
|
+
rec.start();
|
|
122
|
+
// Add mask patterns
|
|
123
|
+
for (const pattern of maskPatterns) {
|
|
124
|
+
rec.addMaskPattern(pattern);
|
|
125
|
+
}
|
|
126
|
+
// Keep running until interrupted
|
|
127
|
+
process.on('SIGINT', () => {
|
|
128
|
+
void (async () => {
|
|
129
|
+
console.log('\n💾 Saving trace...');
|
|
130
|
+
await rec.save(output);
|
|
131
|
+
console.log(`✅ Trace saved to ${output}`);
|
|
132
|
+
await browser.close();
|
|
133
|
+
process.exit(0);
|
|
134
|
+
})();
|
|
135
|
+
});
|
|
136
|
+
// Wait indefinitely
|
|
137
|
+
await new Promise(() => { });
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
console.error(`❌ Error: ${e.message}`);
|
|
141
|
+
await browser.close();
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async function cmdGen(args) {
|
|
146
|
+
try {
|
|
147
|
+
// Parse arguments
|
|
148
|
+
let traceFile;
|
|
149
|
+
let lang = 'py';
|
|
150
|
+
let output;
|
|
151
|
+
for (let i = 0; i < args.length; i++) {
|
|
152
|
+
if (args[i] && !args[i].startsWith('--')) {
|
|
153
|
+
traceFile = args[i];
|
|
154
|
+
}
|
|
155
|
+
else if (args[i] === '--lang') {
|
|
156
|
+
lang = args[++i];
|
|
157
|
+
}
|
|
158
|
+
else if (args[i] === '--output' || args[i] === '-o') {
|
|
159
|
+
output = args[++i];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (!traceFile) {
|
|
163
|
+
console.error('❌ Trace file required');
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
// Load trace
|
|
167
|
+
const trace = await recorder_1.Recorder.load(traceFile);
|
|
168
|
+
// Generate script
|
|
169
|
+
const generator = new generator_1.ScriptGenerator(trace);
|
|
170
|
+
if (lang === 'py') {
|
|
171
|
+
const outputFile = output || 'generated.py';
|
|
172
|
+
await generator.savePython(outputFile);
|
|
173
|
+
console.log(`✅ Generated Python script: ${outputFile}`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
const outputFile = output || 'generated.ts';
|
|
177
|
+
await generator.saveTypeScript(outputFile);
|
|
178
|
+
console.log(`✅ Generated TypeScript script: ${outputFile}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (e) {
|
|
182
|
+
console.error(`❌ Error: ${e.message}`);
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function printDriverHelp() {
|
|
187
|
+
console.log('\nCommands:');
|
|
188
|
+
console.log(' open <url> Navigate to URL');
|
|
189
|
+
console.log(' state [limit] List clickable elements (optional limit)');
|
|
190
|
+
console.log(' click <element_id> Click element by id');
|
|
191
|
+
console.log(' type <element_id> <text> Type text into element');
|
|
192
|
+
console.log(' press <key> Press a key (e.g., Enter)');
|
|
193
|
+
console.log(' screenshot [path] Save screenshot (png/jpg)');
|
|
194
|
+
console.log(' close Close browser and exit');
|
|
195
|
+
console.log(' help Show this help');
|
|
196
|
+
}
|
|
197
|
+
function parseDriverLine(raw) {
|
|
198
|
+
const tokens = [];
|
|
199
|
+
const re = /"([^"]*)"|'([^']*)'|[^\s]+/g;
|
|
200
|
+
let match = null;
|
|
201
|
+
while ((match = re.exec(raw)) !== null) {
|
|
202
|
+
if (match[1] !== undefined) {
|
|
203
|
+
tokens.push(match[1]);
|
|
204
|
+
}
|
|
205
|
+
else if (match[2] !== undefined) {
|
|
206
|
+
tokens.push(match[2]);
|
|
207
|
+
}
|
|
208
|
+
else if (match[0]) {
|
|
209
|
+
tokens.push(match[0]);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return tokens;
|
|
213
|
+
}
|
|
214
|
+
async function cmdDriver(args) {
|
|
215
|
+
let url;
|
|
216
|
+
let limit = 50;
|
|
217
|
+
let headless = false;
|
|
218
|
+
let proxy;
|
|
219
|
+
for (let i = 0; i < args.length; i++) {
|
|
220
|
+
if (args[i] === '--url' && i + 1 < args.length) {
|
|
221
|
+
url = args[++i];
|
|
222
|
+
}
|
|
223
|
+
else if (args[i] === '--limit' && i + 1 < args.length) {
|
|
224
|
+
const parsed = Number(args[++i]);
|
|
225
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
226
|
+
console.error('❌ --limit must be a positive number');
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
limit = Math.floor(parsed);
|
|
230
|
+
}
|
|
231
|
+
else if (args[i] === '--headless') {
|
|
232
|
+
headless = true;
|
|
233
|
+
}
|
|
234
|
+
else if (args[i] === '--proxy' && i + 1 < args.length) {
|
|
235
|
+
proxy = args[++i];
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const browser = new browser_1.SentienceBrowser(undefined, undefined, headless, proxy);
|
|
239
|
+
try {
|
|
240
|
+
await browser.start();
|
|
241
|
+
if (url) {
|
|
242
|
+
const page = browser.getPage();
|
|
243
|
+
if (!page)
|
|
244
|
+
throw new Error('Browser not started. Call start() first.');
|
|
245
|
+
await page.goto(url);
|
|
246
|
+
await page.waitForLoadState('networkidle');
|
|
247
|
+
}
|
|
248
|
+
console.log("✅ Manual driver started. Type 'help' for commands.");
|
|
249
|
+
const rl = readline.createInterface({
|
|
250
|
+
input: process.stdin,
|
|
251
|
+
output: process.stdout,
|
|
252
|
+
terminal: true,
|
|
253
|
+
});
|
|
254
|
+
let closed = false;
|
|
255
|
+
rl.on('close', () => {
|
|
256
|
+
closed = true;
|
|
257
|
+
});
|
|
258
|
+
rl.on('SIGINT', () => {
|
|
259
|
+
console.log('\n👋 Exiting manual driver.');
|
|
260
|
+
rl.close();
|
|
261
|
+
});
|
|
262
|
+
const ask = async () => {
|
|
263
|
+
const raw = await new Promise(resolve => rl.question('sentience> ', resolve));
|
|
264
|
+
const trimmed = raw.trim();
|
|
265
|
+
if (!trimmed) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const parts = parseDriverLine(trimmed);
|
|
269
|
+
if (parts.length === 0)
|
|
270
|
+
return;
|
|
271
|
+
const cmd = parts[0].toLowerCase();
|
|
272
|
+
const cmdArgs = parts.slice(1);
|
|
273
|
+
if (cmd === 'help' || cmd === '?') {
|
|
274
|
+
printDriverHelp();
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
if (cmd === 'open') {
|
|
278
|
+
if (cmdArgs.length < 1) {
|
|
279
|
+
console.log('❌ Usage: open <url>');
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const target = cmdArgs[0];
|
|
283
|
+
const page = browser.getPage();
|
|
284
|
+
if (!page)
|
|
285
|
+
throw new Error('Browser not started. Call start() first.');
|
|
286
|
+
await page.goto(target);
|
|
287
|
+
await page.waitForLoadState('networkidle');
|
|
288
|
+
console.log(`✅ Opened ${target}`);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
if (cmd === 'state') {
|
|
292
|
+
let currentLimit = limit;
|
|
293
|
+
if (cmdArgs.length > 0) {
|
|
294
|
+
const parsed = Number(cmdArgs[0]);
|
|
295
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
296
|
+
console.log('❌ Usage: state [limit]');
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
currentLimit = Math.floor(parsed);
|
|
300
|
+
}
|
|
301
|
+
const snapOpts = { limit: currentLimit };
|
|
302
|
+
const snap = await (0, snapshot_1.snapshot)(browser, snapOpts);
|
|
303
|
+
const clickables = snap.elements.filter(el => el.visual_cues?.is_clickable);
|
|
304
|
+
console.log(`URL: ${snap.url}`);
|
|
305
|
+
console.log(`Clickable elements: ${clickables.length}`);
|
|
306
|
+
for (const el of clickables) {
|
|
307
|
+
let text = (el.text || '').replace(/\n/g, ' ').trim();
|
|
308
|
+
if (text.length > 60) {
|
|
309
|
+
text = `${text.slice(0, 57)}...`;
|
|
310
|
+
}
|
|
311
|
+
console.log(`- id=${el.id} role=${el.role} text='${text}'`);
|
|
312
|
+
}
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (cmd === 'click') {
|
|
316
|
+
if (cmdArgs.length !== 1) {
|
|
317
|
+
console.log('❌ Usage: click <element_id>');
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const elementId = Number(cmdArgs[0]);
|
|
321
|
+
if (!Number.isFinite(elementId)) {
|
|
322
|
+
console.log('❌ element_id must be a number');
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
await (0, actions_1.click)(browser, elementId);
|
|
326
|
+
console.log(`✅ Clicked element ${elementId}`);
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
if (cmd === 'type') {
|
|
330
|
+
if (cmdArgs.length < 2) {
|
|
331
|
+
console.log('❌ Usage: type <element_id> <text>');
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const elementId = Number(cmdArgs[0]);
|
|
335
|
+
if (!Number.isFinite(elementId)) {
|
|
336
|
+
console.log('❌ element_id must be a number');
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const text = cmdArgs.slice(1).join(' ');
|
|
340
|
+
await (0, actions_1.typeText)(browser, elementId, text);
|
|
341
|
+
console.log(`✅ Typed into element ${elementId}`);
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
if (cmd === 'press') {
|
|
345
|
+
if (cmdArgs.length !== 1) {
|
|
346
|
+
console.log('❌ Usage: press <key> (e.g., "Enter")');
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
await (0, actions_1.press)(browser, cmdArgs[0]);
|
|
350
|
+
console.log(`✅ Pressed ${cmdArgs[0]}`);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (cmd === 'screenshot') {
|
|
354
|
+
let outPath = cmdArgs[0];
|
|
355
|
+
if (!outPath) {
|
|
356
|
+
outPath = `screenshot-${Date.now()}.png`;
|
|
357
|
+
}
|
|
358
|
+
const ext = path.extname(outPath).toLowerCase();
|
|
359
|
+
const format = ext === '.jpg' || ext === '.jpeg' ? 'jpeg' : 'png';
|
|
360
|
+
const dataUrl = await (0, screenshot_1.screenshot)(browser, { format });
|
|
361
|
+
const comma = dataUrl.indexOf(',');
|
|
362
|
+
const base64 = comma >= 0 ? dataUrl.slice(comma + 1) : dataUrl;
|
|
363
|
+
fs.writeFileSync(outPath, Buffer.from(base64, 'base64'));
|
|
364
|
+
console.log(`✅ Saved screenshot to ${outPath}`);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (cmd === 'close' || cmd === 'exit' || cmd === 'quit') {
|
|
368
|
+
console.log('👋 Closing browser.');
|
|
369
|
+
rl.close();
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
console.log(`❌ Unknown command: ${cmd}. Type 'help' for options.`);
|
|
373
|
+
};
|
|
374
|
+
while (!closed) {
|
|
375
|
+
await ask();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
finally {
|
|
379
|
+
await browser.close();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
async function main() {
|
|
383
|
+
const args = process.argv.slice(2);
|
|
384
|
+
const command = args[0];
|
|
385
|
+
if (command === 'inspect') {
|
|
386
|
+
await cmdInspect(args.slice(1));
|
|
387
|
+
}
|
|
388
|
+
else if (command === 'record') {
|
|
389
|
+
await cmdRecord(args.slice(1));
|
|
390
|
+
}
|
|
391
|
+
else if (command === 'gen') {
|
|
392
|
+
await cmdGen(args.slice(1));
|
|
393
|
+
}
|
|
394
|
+
else if (command === 'driver') {
|
|
395
|
+
await cmdDriver(args.slice(1));
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
console.log('Usage: sentience <command> [options]');
|
|
399
|
+
console.log('');
|
|
400
|
+
console.log('Commands:');
|
|
401
|
+
console.log(' inspect Start inspector mode');
|
|
402
|
+
console.log(' record [--url URL] Start recording mode');
|
|
403
|
+
console.log(' gen <trace.json> Generate script from trace');
|
|
404
|
+
console.log(' driver [--url URL] Manual driver CLI');
|
|
405
|
+
console.log('');
|
|
406
|
+
console.log('Options:');
|
|
407
|
+
console.log(' --proxy <url> Proxy connection string (e.g., http://user:pass@host:port)');
|
|
408
|
+
console.log('');
|
|
409
|
+
console.log('Examples:');
|
|
410
|
+
console.log(' sentience inspect');
|
|
411
|
+
console.log(' sentience inspect --proxy http://user:pass@proxy.com:8000');
|
|
412
|
+
console.log(' sentience record --url https://example.com --output trace.json');
|
|
413
|
+
console.log(' sentience record --proxy http://user:pass@proxy.com:8000 --url https://example.com');
|
|
414
|
+
console.log(' sentience gen trace.json --lang py --output script.py');
|
|
415
|
+
console.log(' predicate driver --url https://example.com');
|
|
416
|
+
process.exit(1);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
if (require.main === module) {
|
|
420
|
+
main().catch(console.error);
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConversationalAgent - Level 4 Abstraction
|
|
3
|
+
* Natural language interface for browser automation
|
|
4
|
+
*/
|
|
5
|
+
import { LLMProvider } from './llm-provider';
|
|
6
|
+
import { SentienceBrowser } from './browser';
|
|
7
|
+
import { Snapshot } from './types';
|
|
8
|
+
export type ActionType = 'NAVIGATE' | 'FIND_AND_CLICK' | 'FIND_AND_TYPE' | 'PRESS_KEY' | 'WAIT' | 'EXTRACT_INFO' | 'VERIFY';
|
|
9
|
+
export interface ActionParameters {
|
|
10
|
+
url?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
text?: string;
|
|
13
|
+
key?: string;
|
|
14
|
+
seconds?: number;
|
|
15
|
+
info_type?: string;
|
|
16
|
+
condition?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PlanStep {
|
|
19
|
+
action: ActionType;
|
|
20
|
+
parameters: ActionParameters;
|
|
21
|
+
reasoning: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ExecutionPlan {
|
|
24
|
+
steps: PlanStep[];
|
|
25
|
+
goal: string;
|
|
26
|
+
}
|
|
27
|
+
export interface StepResult {
|
|
28
|
+
success: boolean;
|
|
29
|
+
action: ActionType;
|
|
30
|
+
result?: any;
|
|
31
|
+
error?: string;
|
|
32
|
+
snapshot?: Snapshot;
|
|
33
|
+
duration_ms?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ConversationEntry {
|
|
36
|
+
role: 'user' | 'assistant';
|
|
37
|
+
content: string;
|
|
38
|
+
timestamp: Date;
|
|
39
|
+
plan?: ExecutionPlan;
|
|
40
|
+
results?: StepResult[];
|
|
41
|
+
}
|
|
42
|
+
export interface ConversationalAgentOptions {
|
|
43
|
+
llmProvider: LLMProvider;
|
|
44
|
+
browser: SentienceBrowser;
|
|
45
|
+
verbose?: boolean;
|
|
46
|
+
maxTokens?: number;
|
|
47
|
+
planningModel?: string;
|
|
48
|
+
executionModel?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* ConversationalAgent provides the highest level of abstraction (Level 4).
|
|
52
|
+
* It accepts natural language instructions, automatically plans the execution,
|
|
53
|
+
* performs the actions, and synthesizes natural language responses.
|
|
54
|
+
*
|
|
55
|
+
* Example:
|
|
56
|
+
* const agent = new ConversationalAgent({ llmProvider, browser });
|
|
57
|
+
* const response = await agent.execute("Search Google for TypeScript tutorials");
|
|
58
|
+
* console.log(response);
|
|
59
|
+
*/
|
|
60
|
+
export declare class ConversationalAgent {
|
|
61
|
+
private llmProvider;
|
|
62
|
+
private browser;
|
|
63
|
+
private verbose;
|
|
64
|
+
private maxTokens;
|
|
65
|
+
private planningModel?;
|
|
66
|
+
private executionModel?;
|
|
67
|
+
private conversationHistory;
|
|
68
|
+
private sentienceAgent;
|
|
69
|
+
constructor(options: ConversationalAgentOptions);
|
|
70
|
+
/**
|
|
71
|
+
* Execute a natural language instruction.
|
|
72
|
+
* Plans the steps, executes them, and returns a natural language response.
|
|
73
|
+
*/
|
|
74
|
+
execute(userInput: string): Promise<string>;
|
|
75
|
+
/**
|
|
76
|
+
* Create an execution plan from natural language input.
|
|
77
|
+
* Uses LLM to break down the request into atomic steps.
|
|
78
|
+
*/
|
|
79
|
+
private createPlan;
|
|
80
|
+
/**
|
|
81
|
+
* Execute a single step from the plan.
|
|
82
|
+
*/
|
|
83
|
+
private executeStep;
|
|
84
|
+
/**
|
|
85
|
+
* Extract specific information from a page snapshot.
|
|
86
|
+
*/
|
|
87
|
+
private extractInformation;
|
|
88
|
+
/**
|
|
89
|
+
* Verify a condition is met on the current page.
|
|
90
|
+
*/
|
|
91
|
+
private verifyCondition;
|
|
92
|
+
/**
|
|
93
|
+
* Convert a Snapshot object to text representation for LLM.
|
|
94
|
+
*/
|
|
95
|
+
private snapshotToText;
|
|
96
|
+
/**
|
|
97
|
+
* Synthesize a natural language response from execution results.
|
|
98
|
+
*/
|
|
99
|
+
private synthesizeResponse;
|
|
100
|
+
/**
|
|
101
|
+
* Chat interface that maintains conversation context.
|
|
102
|
+
* Unlike execute(), this method keeps track of the full conversation
|
|
103
|
+
* and uses it for context in subsequent interactions.
|
|
104
|
+
*/
|
|
105
|
+
chat(message: string): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Get a summary of the entire conversation session.
|
|
108
|
+
*/
|
|
109
|
+
getSummary(): Promise<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Clear conversation history.
|
|
112
|
+
*/
|
|
113
|
+
clearHistory(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Get the conversation history.
|
|
116
|
+
*/
|
|
117
|
+
getHistory(): ConversationEntry[];
|
|
118
|
+
/**
|
|
119
|
+
* Get token usage statistics from the underlying agent.
|
|
120
|
+
*/
|
|
121
|
+
getTokenStats(): import("./agent").TokenStats;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=conversational-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversational-agent.d.ts","sourceRoot":"","sources":["../src/conversational-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,WAAW,GACX,MAAM,GACN,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,EAAE,0BAA0B;IAW/C;;;OAGG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsEjD;;;OAGG;YACW,UAAU;IA+CxB;;OAEG;YACW,WAAW;IA2GzB;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;YACW,eAAe;IAY7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,kBAAkB;IAuChC;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IA0BnC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,UAAU,IAAI,iBAAiB,EAAE;IAIjC;;OAEG;IACH,aAAa;CAGd"}
|