sentience-ts 0.10.3
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/README.md +193 -0
- package/dist/actions.d.ts +9 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +113 -0
- package/dist/actions.js.map +1 -0
- package/dist/browser.d.ts +24 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +236 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +158 -0
- package/dist/cli.js.map +1 -0
- package/dist/expect.d.ts +16 -0
- package/dist/expect.d.ts.map +1 -0
- package/dist/expect.js +66 -0
- package/dist/expect.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 +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -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 +147 -0
- package/dist/inspector.js.map +1 -0
- package/dist/query.d.ts +8 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +337 -0
- package/dist/query.js.map +1 -0
- package/dist/read.d.ts +40 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +86 -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 +256 -0
- package/dist/recorder.js.map +1 -0
- package/dist/screenshot.d.ts +17 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +37 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/snapshot.d.ts +20 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +101 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/wait.d.ts +7 -0
- package/dist/wait.d.ts.map +1 -0
- package/dist/wait.js +37 -0
- package/dist/wait.js.map +1 -0
- package/package.json +58 -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/dist/cli.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI commands for Sentience SDK
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const browser_1 = require("./browser");
|
|
7
|
+
const inspector_1 = require("./inspector");
|
|
8
|
+
const recorder_1 = require("./recorder");
|
|
9
|
+
const generator_1 = require("./generator");
|
|
10
|
+
async function cmdInspect() {
|
|
11
|
+
const browser = new browser_1.SentienceBrowser(undefined, undefined, false);
|
|
12
|
+
try {
|
|
13
|
+
await browser.start();
|
|
14
|
+
console.log('ā
Inspector started. Hover elements to see info, click to see full details.');
|
|
15
|
+
console.log('Press Ctrl+C to stop.');
|
|
16
|
+
const inspector = (0, inspector_1.inspect)(browser);
|
|
17
|
+
await inspector.start();
|
|
18
|
+
// Keep running until interrupted
|
|
19
|
+
process.on('SIGINT', async () => {
|
|
20
|
+
console.log('\nš Inspector stopped.');
|
|
21
|
+
await inspector.stop();
|
|
22
|
+
await browser.close();
|
|
23
|
+
process.exit(0);
|
|
24
|
+
});
|
|
25
|
+
// Wait indefinitely
|
|
26
|
+
await new Promise(() => { });
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.error(`ā Error: ${e.message}`);
|
|
30
|
+
await browser.close();
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function cmdRecord(args) {
|
|
35
|
+
const browser = new browser_1.SentienceBrowser(undefined, undefined, false);
|
|
36
|
+
try {
|
|
37
|
+
await browser.start();
|
|
38
|
+
// Parse arguments
|
|
39
|
+
let url;
|
|
40
|
+
let output = 'trace.json';
|
|
41
|
+
let captureSnapshots = false;
|
|
42
|
+
const maskPatterns = [];
|
|
43
|
+
for (let i = 0; i < args.length; i++) {
|
|
44
|
+
if (args[i] === '--url' && i + 1 < args.length) {
|
|
45
|
+
url = args[++i];
|
|
46
|
+
}
|
|
47
|
+
else if (args[i] === '--output' || args[i] === '-o') {
|
|
48
|
+
output = args[++i];
|
|
49
|
+
}
|
|
50
|
+
else if (args[i] === '--snapshots') {
|
|
51
|
+
captureSnapshots = true;
|
|
52
|
+
}
|
|
53
|
+
else if (args[i] === '--mask' && i + 1 < args.length) {
|
|
54
|
+
maskPatterns.push(args[++i]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Navigate to start URL if provided
|
|
58
|
+
if (url) {
|
|
59
|
+
await browser.getPage().goto(url);
|
|
60
|
+
await browser.getPage().waitForLoadState('networkidle');
|
|
61
|
+
}
|
|
62
|
+
console.log('ā
Recording started. Perform actions in the browser.');
|
|
63
|
+
console.log('Press Ctrl+C to stop and save trace.');
|
|
64
|
+
const rec = (0, recorder_1.record)(browser, captureSnapshots);
|
|
65
|
+
rec.start();
|
|
66
|
+
// Add mask patterns
|
|
67
|
+
for (const pattern of maskPatterns) {
|
|
68
|
+
rec.addMaskPattern(pattern);
|
|
69
|
+
}
|
|
70
|
+
// Keep running until interrupted
|
|
71
|
+
process.on('SIGINT', async () => {
|
|
72
|
+
console.log('\nš¾ Saving trace...');
|
|
73
|
+
await rec.save(output);
|
|
74
|
+
console.log(`ā
Trace saved to ${output}`);
|
|
75
|
+
await browser.close();
|
|
76
|
+
process.exit(0);
|
|
77
|
+
});
|
|
78
|
+
// Wait indefinitely
|
|
79
|
+
await new Promise(() => { });
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
console.error(`ā Error: ${e.message}`);
|
|
83
|
+
await browser.close();
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function cmdGen(args) {
|
|
88
|
+
try {
|
|
89
|
+
// Parse arguments
|
|
90
|
+
let traceFile;
|
|
91
|
+
let lang = 'py';
|
|
92
|
+
let output;
|
|
93
|
+
for (let i = 0; i < args.length; i++) {
|
|
94
|
+
if (args[i] && !args[i].startsWith('--')) {
|
|
95
|
+
traceFile = args[i];
|
|
96
|
+
}
|
|
97
|
+
else if (args[i] === '--lang') {
|
|
98
|
+
lang = args[++i];
|
|
99
|
+
}
|
|
100
|
+
else if (args[i] === '--output' || args[i] === '-o') {
|
|
101
|
+
output = args[++i];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!traceFile) {
|
|
105
|
+
console.error('ā Trace file required');
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
// Load trace
|
|
109
|
+
const trace = await recorder_1.Recorder.load(traceFile);
|
|
110
|
+
// Generate script
|
|
111
|
+
const generator = new generator_1.ScriptGenerator(trace);
|
|
112
|
+
if (lang === 'py') {
|
|
113
|
+
const outputFile = output || 'generated.py';
|
|
114
|
+
await generator.savePython(outputFile);
|
|
115
|
+
console.log(`ā
Generated Python script: ${outputFile}`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const outputFile = output || 'generated.ts';
|
|
119
|
+
await generator.saveTypeScript(outputFile);
|
|
120
|
+
console.log(`ā
Generated TypeScript script: ${outputFile}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
console.error(`ā Error: ${e.message}`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function main() {
|
|
129
|
+
const args = process.argv.slice(2);
|
|
130
|
+
const command = args[0];
|
|
131
|
+
if (command === 'inspect') {
|
|
132
|
+
await cmdInspect();
|
|
133
|
+
}
|
|
134
|
+
else if (command === 'record') {
|
|
135
|
+
await cmdRecord(args.slice(1));
|
|
136
|
+
}
|
|
137
|
+
else if (command === 'gen') {
|
|
138
|
+
await cmdGen(args.slice(1));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log('Usage: sentience <command> [options]');
|
|
142
|
+
console.log('');
|
|
143
|
+
console.log('Commands:');
|
|
144
|
+
console.log(' inspect Start inspector mode');
|
|
145
|
+
console.log(' record [--url URL] Start recording mode');
|
|
146
|
+
console.log(' gen <trace.json> Generate script from trace');
|
|
147
|
+
console.log('');
|
|
148
|
+
console.log('Examples:');
|
|
149
|
+
console.log(' sentience inspect');
|
|
150
|
+
console.log(' sentience record --url https://example.com --output trace.json');
|
|
151
|
+
console.log(' sentience gen trace.json --lang py --output script.py');
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (require.main === module) {
|
|
156
|
+
main().catch(console.error);
|
|
157
|
+
}
|
|
158
|
+
//# 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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"}
|
package/dist/expect.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expect/Assert functionality
|
|
3
|
+
*/
|
|
4
|
+
import { SentienceBrowser } from './browser';
|
|
5
|
+
import { Element, QuerySelector } from './types';
|
|
6
|
+
export declare class Expectation {
|
|
7
|
+
private browser;
|
|
8
|
+
private selector;
|
|
9
|
+
constructor(browser: SentienceBrowser, selector: QuerySelector);
|
|
10
|
+
toBeVisible(timeout?: number): Promise<Element>;
|
|
11
|
+
toExist(timeout?: number): Promise<Element>;
|
|
12
|
+
toHaveText(expectedText: string, timeout?: number): Promise<Element>;
|
|
13
|
+
toHaveCount(expectedCount: number, timeout?: number): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare function expect(browser: SentienceBrowser, selector: QuerySelector): Expectation;
|
|
16
|
+
//# sourceMappingURL=expect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAKjD,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;gBADR,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,aAAa;IAG3B,WAAW,CAAC,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBtD,OAAO,CAAC,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB3E,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBjF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,GAAG,WAAW,CAEtF"}
|
package/dist/expect.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Expect/Assert functionality
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Expectation = void 0;
|
|
7
|
+
exports.expect = expect;
|
|
8
|
+
const wait_1 = require("./wait");
|
|
9
|
+
const query_1 = require("./query");
|
|
10
|
+
const snapshot_1 = require("./snapshot");
|
|
11
|
+
class Expectation {
|
|
12
|
+
constructor(browser, selector) {
|
|
13
|
+
this.browser = browser;
|
|
14
|
+
this.selector = selector;
|
|
15
|
+
}
|
|
16
|
+
async toBeVisible(timeout = 10000) {
|
|
17
|
+
const result = await (0, wait_1.waitFor)(this.browser, this.selector, timeout);
|
|
18
|
+
if (!result.found) {
|
|
19
|
+
throw new Error(`Element not found: ${this.selector} (timeout: ${timeout}ms)`);
|
|
20
|
+
}
|
|
21
|
+
const element = result.element;
|
|
22
|
+
if (!element.in_viewport) {
|
|
23
|
+
throw new Error(`Element found but not visible in viewport: ${this.selector}`);
|
|
24
|
+
}
|
|
25
|
+
return element;
|
|
26
|
+
}
|
|
27
|
+
async toExist(timeout = 10000) {
|
|
28
|
+
const result = await (0, wait_1.waitFor)(this.browser, this.selector, timeout);
|
|
29
|
+
if (!result.found) {
|
|
30
|
+
throw new Error(`Element does not exist: ${this.selector} (timeout: ${timeout}ms)`);
|
|
31
|
+
}
|
|
32
|
+
return result.element;
|
|
33
|
+
}
|
|
34
|
+
async toHaveText(expectedText, timeout = 10000) {
|
|
35
|
+
const result = await (0, wait_1.waitFor)(this.browser, this.selector, timeout);
|
|
36
|
+
if (!result.found) {
|
|
37
|
+
throw new Error(`Element not found: ${this.selector} (timeout: ${timeout}ms)`);
|
|
38
|
+
}
|
|
39
|
+
const element = result.element;
|
|
40
|
+
if (!element.text || !element.text.includes(expectedText)) {
|
|
41
|
+
throw new Error(`Element text mismatch. Expected '${expectedText}', got '${element.text}'`);
|
|
42
|
+
}
|
|
43
|
+
return element;
|
|
44
|
+
}
|
|
45
|
+
async toHaveCount(expectedCount, timeout = 10000) {
|
|
46
|
+
const startTime = Date.now();
|
|
47
|
+
while (Date.now() - startTime < timeout) {
|
|
48
|
+
const snap = await (0, snapshot_1.snapshot)(this.browser);
|
|
49
|
+
const matches = (0, query_1.query)(snap, this.selector);
|
|
50
|
+
if (matches.length === expectedCount) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
54
|
+
}
|
|
55
|
+
// Final check
|
|
56
|
+
const snap = await (0, snapshot_1.snapshot)(this.browser);
|
|
57
|
+
const matches = (0, query_1.query)(snap, this.selector);
|
|
58
|
+
const actualCount = matches.length;
|
|
59
|
+
throw new Error(`Element count mismatch. Expected ${expectedCount}, got ${actualCount}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Expectation = Expectation;
|
|
63
|
+
function expect(browser, selector) {
|
|
64
|
+
return new Expectation(browser, selector);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=expect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.js","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Script Generator - converts trace into executable code
|
|
3
|
+
*/
|
|
4
|
+
import { Trace } from './recorder';
|
|
5
|
+
export declare class ScriptGenerator {
|
|
6
|
+
private trace;
|
|
7
|
+
constructor(trace: Trace);
|
|
8
|
+
generatePython(): string;
|
|
9
|
+
generateTypeScript(): string;
|
|
10
|
+
private generatePythonStep;
|
|
11
|
+
private generateTypeScriptStep;
|
|
12
|
+
savePython(filepath: string): Promise<void>;
|
|
13
|
+
saveTypeScript(filepath: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare function generate(trace: Trace, language?: 'py' | 'ts'): string;
|
|
16
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAa,MAAM,YAAY,CAAC;AAE9C,qBAAa,eAAe;IACd,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEhC,cAAc,IAAI,MAAM;IAyBxB,kBAAkB,IAAI,MAAM;IA4B5B,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,sBAAsB;IA8CxB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKtD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE,IAAI,GAAG,IAAW,GAAG,MAAM,CAO3E"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Script Generator - converts trace into executable code
|
|
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
|
+
exports.ScriptGenerator = void 0;
|
|
40
|
+
exports.generate = generate;
|
|
41
|
+
class ScriptGenerator {
|
|
42
|
+
constructor(trace) {
|
|
43
|
+
this.trace = trace;
|
|
44
|
+
}
|
|
45
|
+
generatePython() {
|
|
46
|
+
const lines = [
|
|
47
|
+
'"""',
|
|
48
|
+
`Generated script from trace: ${this.trace.start_url}`,
|
|
49
|
+
`Created: ${this.trace.created_at}`,
|
|
50
|
+
'"""',
|
|
51
|
+
'',
|
|
52
|
+
'from sentience import SentienceBrowser, snapshot, find, click, type_text, press',
|
|
53
|
+
'',
|
|
54
|
+
'def main():',
|
|
55
|
+
' with SentienceBrowser(headless=False) as browser:',
|
|
56
|
+
` browser.page.goto("${this.trace.start_url}")`,
|
|
57
|
+
' browser.page.wait_for_load_state("networkidle")',
|
|
58
|
+
'',
|
|
59
|
+
];
|
|
60
|
+
for (const step of this.trace.steps) {
|
|
61
|
+
lines.push(...this.generatePythonStep(step, ' '));
|
|
62
|
+
}
|
|
63
|
+
lines.push('', 'if __name__ == "__main__":', ' main()');
|
|
64
|
+
return lines.join('\n');
|
|
65
|
+
}
|
|
66
|
+
generateTypeScript() {
|
|
67
|
+
const lines = [
|
|
68
|
+
'/**',
|
|
69
|
+
` * Generated script from trace: ${this.trace.start_url}`,
|
|
70
|
+
` * Created: ${this.trace.created_at}`,
|
|
71
|
+
' */',
|
|
72
|
+
'',
|
|
73
|
+
"import { SentienceBrowser, snapshot, find, click, typeText, press } from './src';",
|
|
74
|
+
'',
|
|
75
|
+
'async function main() {',
|
|
76
|
+
' const browser = new SentienceBrowser(undefined, undefined, false);',
|
|
77
|
+
'',
|
|
78
|
+
' try {',
|
|
79
|
+
' await browser.start();',
|
|
80
|
+
` await browser.getPage().goto('${this.trace.start_url}');`,
|
|
81
|
+
' await browser.getPage().waitForLoadState(\'networkidle\');',
|
|
82
|
+
'',
|
|
83
|
+
];
|
|
84
|
+
for (const step of this.trace.steps) {
|
|
85
|
+
lines.push(...this.generateTypeScriptStep(step, ' '));
|
|
86
|
+
}
|
|
87
|
+
lines.push(' } finally {', ' await browser.close();', ' }', '}', '', 'main().catch(console.error);');
|
|
88
|
+
return lines.join('\n');
|
|
89
|
+
}
|
|
90
|
+
generatePythonStep(step, indent) {
|
|
91
|
+
const lines = [];
|
|
92
|
+
if (step.type === 'navigation') {
|
|
93
|
+
lines.push(`${indent}# Navigate to ${step.url}`);
|
|
94
|
+
lines.push(`${indent}browser.page.goto("${step.url}")`);
|
|
95
|
+
lines.push(`${indent}browser.page.wait_for_load_state("networkidle")`);
|
|
96
|
+
}
|
|
97
|
+
else if (step.type === 'click') {
|
|
98
|
+
if (step.selector) {
|
|
99
|
+
lines.push(`${indent}# Click: ${step.selector}`);
|
|
100
|
+
lines.push(`${indent}snap = snapshot(browser)`);
|
|
101
|
+
lines.push(`${indent}element = find(snap, "${step.selector}")`);
|
|
102
|
+
lines.push(`${indent}if element:`);
|
|
103
|
+
lines.push(`${indent} click(browser, element.id)`);
|
|
104
|
+
lines.push(`${indent}else:`);
|
|
105
|
+
lines.push(`${indent} raise Exception("Element not found: ${step.selector}")`);
|
|
106
|
+
}
|
|
107
|
+
else if (step.element_id !== undefined) {
|
|
108
|
+
lines.push(`${indent}# TODO: replace with semantic selector`);
|
|
109
|
+
lines.push(`${indent}click(browser, ${step.element_id})`);
|
|
110
|
+
}
|
|
111
|
+
lines.push('');
|
|
112
|
+
}
|
|
113
|
+
else if (step.type === 'type') {
|
|
114
|
+
if (step.selector) {
|
|
115
|
+
lines.push(`${indent}# Type into: ${step.selector}`);
|
|
116
|
+
lines.push(`${indent}snap = snapshot(browser)`);
|
|
117
|
+
lines.push(`${indent}element = find(snap, "${step.selector}")`);
|
|
118
|
+
lines.push(`${indent}if element:`);
|
|
119
|
+
lines.push(`${indent} type_text(browser, element.id, "${step.text}")`);
|
|
120
|
+
lines.push(`${indent}else:`);
|
|
121
|
+
lines.push(`${indent} raise Exception("Element not found: ${step.selector}")`);
|
|
122
|
+
}
|
|
123
|
+
else if (step.element_id !== undefined) {
|
|
124
|
+
lines.push(`${indent}# TODO: replace with semantic selector`);
|
|
125
|
+
lines.push(`${indent}type_text(browser, ${step.element_id}, "${step.text}")`);
|
|
126
|
+
}
|
|
127
|
+
lines.push('');
|
|
128
|
+
}
|
|
129
|
+
else if (step.type === 'press') {
|
|
130
|
+
lines.push(`${indent}# Press key: ${step.key}`);
|
|
131
|
+
lines.push(`${indent}press(browser, "${step.key}")`);
|
|
132
|
+
lines.push('');
|
|
133
|
+
}
|
|
134
|
+
return lines;
|
|
135
|
+
}
|
|
136
|
+
generateTypeScriptStep(step, indent) {
|
|
137
|
+
const lines = [];
|
|
138
|
+
if (step.type === 'navigation') {
|
|
139
|
+
lines.push(`${indent}// Navigate to ${step.url}`);
|
|
140
|
+
lines.push(`${indent}await browser.getPage().goto('${step.url}');`);
|
|
141
|
+
lines.push(`${indent}await browser.getPage().waitForLoadState('networkidle');`);
|
|
142
|
+
}
|
|
143
|
+
else if (step.type === 'click') {
|
|
144
|
+
if (step.selector) {
|
|
145
|
+
lines.push(`${indent}// Click: ${step.selector}`);
|
|
146
|
+
lines.push(`${indent}const snap = await snapshot(browser);`);
|
|
147
|
+
lines.push(`${indent}const element = find(snap, '${step.selector}');`);
|
|
148
|
+
lines.push(`${indent}if (element) {`);
|
|
149
|
+
lines.push(`${indent} await click(browser, element.id);`);
|
|
150
|
+
lines.push(`${indent}} else {`);
|
|
151
|
+
lines.push(`${indent} throw new Error('Element not found: ${step.selector}');`);
|
|
152
|
+
lines.push(`${indent}}`);
|
|
153
|
+
}
|
|
154
|
+
else if (step.element_id !== undefined) {
|
|
155
|
+
lines.push(`${indent}// TODO: replace with semantic selector`);
|
|
156
|
+
lines.push(`${indent}await click(browser, ${step.element_id});`);
|
|
157
|
+
}
|
|
158
|
+
lines.push('');
|
|
159
|
+
}
|
|
160
|
+
else if (step.type === 'type') {
|
|
161
|
+
if (step.selector) {
|
|
162
|
+
lines.push(`${indent}// Type into: ${step.selector}`);
|
|
163
|
+
lines.push(`${indent}const snap = await snapshot(browser);`);
|
|
164
|
+
lines.push(`${indent}const element = find(snap, '${step.selector}');`);
|
|
165
|
+
lines.push(`${indent}if (element) {`);
|
|
166
|
+
lines.push(`${indent} await typeText(browser, element.id, '${step.text}');`);
|
|
167
|
+
lines.push(`${indent}} else {`);
|
|
168
|
+
lines.push(`${indent} throw new Error('Element not found: ${step.selector}');`);
|
|
169
|
+
lines.push(`${indent}}`);
|
|
170
|
+
}
|
|
171
|
+
else if (step.element_id !== undefined) {
|
|
172
|
+
lines.push(`${indent}// TODO: replace with semantic selector`);
|
|
173
|
+
lines.push(`${indent}await typeText(browser, ${step.element_id}, '${step.text}');`);
|
|
174
|
+
}
|
|
175
|
+
lines.push('');
|
|
176
|
+
}
|
|
177
|
+
else if (step.type === 'press') {
|
|
178
|
+
lines.push(`${indent}// Press key: ${step.key}`);
|
|
179
|
+
lines.push(`${indent}await press(browser, '${step.key}');`);
|
|
180
|
+
lines.push('');
|
|
181
|
+
}
|
|
182
|
+
return lines;
|
|
183
|
+
}
|
|
184
|
+
async savePython(filepath) {
|
|
185
|
+
const code = this.generatePython();
|
|
186
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
187
|
+
fs.writeFileSync(filepath, code, 'utf-8');
|
|
188
|
+
}
|
|
189
|
+
async saveTypeScript(filepath) {
|
|
190
|
+
const code = this.generateTypeScript();
|
|
191
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
192
|
+
fs.writeFileSync(filepath, code, 'utf-8');
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.ScriptGenerator = ScriptGenerator;
|
|
196
|
+
function generate(trace, language = 'py') {
|
|
197
|
+
const generator = new ScriptGenerator(trace);
|
|
198
|
+
if (language === 'py') {
|
|
199
|
+
return generator.generatePython();
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
return generator.generateTypeScript();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentience TypeScript SDK - AI Agent Browser Automation
|
|
3
|
+
*/
|
|
4
|
+
export { SentienceBrowser } from './browser';
|
|
5
|
+
export { snapshot, SnapshotOptions } from './snapshot';
|
|
6
|
+
export { query, find, parseSelector } from './query';
|
|
7
|
+
export { click, typeText, press } from './actions';
|
|
8
|
+
export { waitFor } from './wait';
|
|
9
|
+
export { expect, Expectation } from './expect';
|
|
10
|
+
export { Inspector, inspect } from './inspector';
|
|
11
|
+
export { Recorder, Trace, TraceStep, record } from './recorder';
|
|
12
|
+
export { ScriptGenerator, generate } from './generator';
|
|
13
|
+
export { read, ReadOptions, ReadResult } from './read';
|
|
14
|
+
export { screenshot, ScreenshotOptions } from './screenshot';
|
|
15
|
+
export * from './types';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7D,cAAc,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Sentience TypeScript SDK - AI Agent Browser Automation
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.screenshot = exports.read = exports.generate = exports.ScriptGenerator = exports.record = exports.Recorder = exports.inspect = exports.Inspector = exports.Expectation = exports.expect = exports.waitFor = exports.press = exports.typeText = exports.click = exports.parseSelector = exports.find = exports.query = exports.snapshot = exports.SentienceBrowser = void 0;
|
|
21
|
+
var browser_1 = require("./browser");
|
|
22
|
+
Object.defineProperty(exports, "SentienceBrowser", { enumerable: true, get: function () { return browser_1.SentienceBrowser; } });
|
|
23
|
+
var snapshot_1 = require("./snapshot");
|
|
24
|
+
Object.defineProperty(exports, "snapshot", { enumerable: true, get: function () { return snapshot_1.snapshot; } });
|
|
25
|
+
var query_1 = require("./query");
|
|
26
|
+
Object.defineProperty(exports, "query", { enumerable: true, get: function () { return query_1.query; } });
|
|
27
|
+
Object.defineProperty(exports, "find", { enumerable: true, get: function () { return query_1.find; } });
|
|
28
|
+
Object.defineProperty(exports, "parseSelector", { enumerable: true, get: function () { return query_1.parseSelector; } });
|
|
29
|
+
var actions_1 = require("./actions");
|
|
30
|
+
Object.defineProperty(exports, "click", { enumerable: true, get: function () { return actions_1.click; } });
|
|
31
|
+
Object.defineProperty(exports, "typeText", { enumerable: true, get: function () { return actions_1.typeText; } });
|
|
32
|
+
Object.defineProperty(exports, "press", { enumerable: true, get: function () { return actions_1.press; } });
|
|
33
|
+
var wait_1 = require("./wait");
|
|
34
|
+
Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return wait_1.waitFor; } });
|
|
35
|
+
var expect_1 = require("./expect");
|
|
36
|
+
Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return expect_1.expect; } });
|
|
37
|
+
Object.defineProperty(exports, "Expectation", { enumerable: true, get: function () { return expect_1.Expectation; } });
|
|
38
|
+
var inspector_1 = require("./inspector");
|
|
39
|
+
Object.defineProperty(exports, "Inspector", { enumerable: true, get: function () { return inspector_1.Inspector; } });
|
|
40
|
+
Object.defineProperty(exports, "inspect", { enumerable: true, get: function () { return inspector_1.inspect; } });
|
|
41
|
+
var recorder_1 = require("./recorder");
|
|
42
|
+
Object.defineProperty(exports, "Recorder", { enumerable: true, get: function () { return recorder_1.Recorder; } });
|
|
43
|
+
Object.defineProperty(exports, "record", { enumerable: true, get: function () { return recorder_1.record; } });
|
|
44
|
+
var generator_1 = require("./generator");
|
|
45
|
+
Object.defineProperty(exports, "ScriptGenerator", { enumerable: true, get: function () { return generator_1.ScriptGenerator; } });
|
|
46
|
+
Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return generator_1.generate; } });
|
|
47
|
+
var read_1 = require("./read");
|
|
48
|
+
Object.defineProperty(exports, "read", { enumerable: true, get: function () { return read_1.read; } });
|
|
49
|
+
var screenshot_1 = require("./screenshot");
|
|
50
|
+
Object.defineProperty(exports, "screenshot", { enumerable: true, get: function () { return screenshot_1.screenshot; } });
|
|
51
|
+
__exportStar(require("./types"), exports);
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AACzB,uCAAuD;AAA9C,oGAAA,QAAQ,OAAA;AACjB,iCAAqD;AAA5C,8FAAA,KAAK,OAAA;AAAE,6FAAA,IAAI,OAAA;AAAE,sGAAA,aAAa,OAAA;AACnC,qCAAmD;AAA1C,gGAAA,KAAK,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,gGAAA,KAAK,OAAA;AAC/B,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAChB,mCAA+C;AAAtC,gGAAA,MAAM,OAAA;AAAE,qGAAA,WAAW,OAAA;AAC5B,yCAAiD;AAAxC,sGAAA,SAAS,OAAA;AAAE,oGAAA,OAAO,OAAA;AAC3B,uCAAgE;AAAvD,oGAAA,QAAQ,OAAA;AAAoB,kGAAA,MAAM,OAAA;AAC3C,yCAAwD;AAA/C,4GAAA,eAAe,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAClC,+BAAuD;AAA9C,4FAAA,IAAI,OAAA;AACb,2CAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,0CAAwB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inspector tool - helps developers see what the agent "sees"
|
|
3
|
+
*/
|
|
4
|
+
import { SentienceBrowser } from './browser';
|
|
5
|
+
export declare class Inspector {
|
|
6
|
+
private browser;
|
|
7
|
+
private active;
|
|
8
|
+
constructor(browser: SentienceBrowser);
|
|
9
|
+
start(): Promise<void>;
|
|
10
|
+
stop(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare function inspect(browser: SentienceBrowser): Inspector;
|
|
13
|
+
//# sourceMappingURL=inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,qBAAa,SAAS;IAGR,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,MAAM,CAAkB;gBAEZ,OAAO,EAAE,gBAAgB;IAEvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW5B;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAE5D"}
|