sentienceapi 0.91.1 → 0.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions.d.ts +66 -5
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +91 -37
- package/dist/actions.js.map +1 -1
- package/dist/agent.d.ts +15 -27
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +57 -326
- package/dist/agent.js.map +1 -1
- package/dist/browser.d.ts +11 -4
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +62 -42
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +21 -13
- package/dist/cli.js.map +1 -1
- package/dist/conversational-agent.d.ts.map +1 -1
- package/dist/conversational-agent.js +27 -13
- package/dist/conversational-agent.js.map +1 -1
- package/dist/expect.d.ts.map +1 -1
- package/dist/expect.js +6 -5
- package/dist/expect.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +1 -1
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inspector.d.ts.map +1 -1
- package/dist/inspector.js +6 -0
- package/dist/inspector.js.map +1 -1
- package/dist/llm-provider.d.ts.map +1 -1
- package/dist/llm-provider.js +18 -20
- package/dist/llm-provider.js.map +1 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +6 -0
- package/dist/overlay.js.map +1 -1
- 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 +58 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +59 -1
- package/dist/query.js.map +1 -1
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +7 -7
- package/dist/read.js.map +1 -1
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +31 -25
- package/dist/recorder.js.map +1 -1
- package/dist/screenshot.d.ts.map +1 -1
- package/dist/screenshot.js +3 -0
- package/dist/screenshot.js.map +1 -1
- package/dist/snapshot-diff.d.ts +30 -0
- package/dist/snapshot-diff.d.ts.map +1 -0
- package/dist/snapshot-diff.js +124 -0
- package/dist/snapshot-diff.js.map +1 -0
- package/dist/snapshot.d.ts +2 -2
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +17 -22
- package/dist/snapshot.js.map +1 -1
- package/dist/textSearch.d.ts +2 -2
- package/dist/textSearch.d.ts.map +1 -1
- package/dist/textSearch.js +13 -9
- package/dist/textSearch.js.map +1 -1
- package/dist/tracing/cloud-sink.d.ts +4 -3
- package/dist/tracing/cloud-sink.d.ts.map +1 -1
- package/dist/tracing/cloud-sink.js +33 -27
- package/dist/tracing/cloud-sink.js.map +1 -1
- package/dist/tracing/index-schema.d.ts +2 -2
- package/dist/tracing/index-schema.d.ts.map +1 -1
- package/dist/tracing/index-schema.js +8 -6
- package/dist/tracing/index-schema.js.map +1 -1
- package/dist/tracing/indexer.d.ts.map +1 -1
- package/dist/tracing/indexer.js +9 -11
- package/dist/tracing/indexer.js.map +1 -1
- package/dist/tracing/jsonl-sink.d.ts +5 -4
- package/dist/tracing/jsonl-sink.d.ts.map +1 -1
- package/dist/tracing/jsonl-sink.js +9 -5
- package/dist/tracing/jsonl-sink.js.map +1 -1
- package/dist/tracing/sink.d.ts +3 -2
- package/dist/tracing/sink.d.ts.map +1 -1
- package/dist/tracing/sink.js.map +1 -1
- package/dist/tracing/tracer-factory.d.ts +18 -2
- package/dist/tracing/tracer-factory.d.ts.map +1 -1
- package/dist/tracing/tracer-factory.js +41 -7
- package/dist/tracing/tracer-factory.js.map +1 -1
- package/dist/tracing/tracer.d.ts.map +1 -1
- package/dist/tracing/tracer.js +8 -1
- package/dist/tracing/tracer.js.map +1 -1
- package/dist/tracing/types.d.ts +148 -32
- package/dist/tracing/types.d.ts.map +1 -1
- package/dist/types.d.ts +7 -6
- package/dist/types.d.ts.map +1 -1
- 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 +120 -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 +191 -0
- package/dist/utils/element-filter.js.map +1 -0
- package/dist/utils/llm-interaction-handler.d.ts +39 -0
- package/dist/utils/llm-interaction-handler.d.ts.map +1 -0
- package/dist/utils/llm-interaction-handler.js +100 -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 +80 -0
- package/dist/utils/trace-event-builder.d.ts.map +1 -0
- package/dist/utils/trace-event-builder.js +204 -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.d.ts +3 -24
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +7 -68
- package/dist/utils.js.map +1 -1
- package/dist/wait.d.ts +22 -7
- package/dist/wait.d.ts.map +1 -1
- package/dist/wait.js +24 -11
- package/dist/wait.js.map +1 -1
- package/package.json +18 -3
package/dist/actions.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Actions v1 - click, type, press
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { IBrowser } from './protocols/browser-protocol';
|
|
5
5
|
import { ActionResult, BBox } from './types';
|
|
6
6
|
export interface ClickRect {
|
|
7
7
|
x: number;
|
|
@@ -11,9 +11,70 @@ export interface ClickRect {
|
|
|
11
11
|
h?: number;
|
|
12
12
|
height?: number;
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Click an element by its ID
|
|
16
|
+
*
|
|
17
|
+
* Uses a hybrid approach: gets element bounding box from snapshot and calculates center,
|
|
18
|
+
* then uses Playwright's native mouse.click() for realistic event simulation.
|
|
19
|
+
* Falls back to JavaScript click if element not found in snapshot.
|
|
20
|
+
*
|
|
21
|
+
* @param browser - SentienceBrowser instance
|
|
22
|
+
* @param elementId - Element ID from snapshot
|
|
23
|
+
* @param useMouse - Use mouse simulation (default: true). If false, uses JavaScript click.
|
|
24
|
+
* @param takeSnapshot - Take snapshot after action (default: false)
|
|
25
|
+
* @returns ActionResult with success status, outcome, duration, and optional snapshot
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const snap = await snapshot(browser);
|
|
30
|
+
* const button = find(snap, 'role=button');
|
|
31
|
+
* if (button) {
|
|
32
|
+
* const result = await click(browser, button.id);
|
|
33
|
+
* console.log(`Click ${result.success ? 'succeeded' : 'failed'}`);
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function click(browser: IBrowser, elementId: number, useMouse?: boolean, takeSnapshot?: boolean): Promise<ActionResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Type text into an input element
|
|
40
|
+
*
|
|
41
|
+
* Focuses the element first, then types the text using Playwright's keyboard simulation.
|
|
42
|
+
*
|
|
43
|
+
* @param browser - SentienceBrowser instance
|
|
44
|
+
* @param elementId - Element ID from snapshot (must be a text input element)
|
|
45
|
+
* @param text - Text to type
|
|
46
|
+
* @param takeSnapshot - Take snapshot after action (default: false)
|
|
47
|
+
* @returns ActionResult with success status, outcome, duration, and optional snapshot
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const snap = await snapshot(browser);
|
|
52
|
+
* const searchBox = find(snap, 'role=searchbox');
|
|
53
|
+
* if (searchBox) {
|
|
54
|
+
* await typeText(browser, searchBox.id, 'Hello World');
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function typeText(browser: IBrowser, elementId: number, text: string, takeSnapshot?: boolean): Promise<ActionResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Press a keyboard key
|
|
61
|
+
*
|
|
62
|
+
* Simulates pressing a key using Playwright's keyboard API.
|
|
63
|
+
* Common keys: 'Enter', 'Escape', 'Tab', 'ArrowUp', 'ArrowDown', etc.
|
|
64
|
+
*
|
|
65
|
+
* @param browser - SentienceBrowser instance
|
|
66
|
+
* @param key - Key to press (e.g., 'Enter', 'Escape', 'Tab')
|
|
67
|
+
* @param takeSnapshot - Take snapshot after action (default: false)
|
|
68
|
+
* @returns ActionResult with success status, outcome, duration, and optional snapshot
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // Press Enter after typing
|
|
73
|
+
* await typeText(browser, elementId, 'search query');
|
|
74
|
+
* await press(browser, 'Enter');
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function press(browser: IBrowser, key: string, takeSnapshot?: boolean): Promise<ActionResult>;
|
|
17
78
|
/**
|
|
18
79
|
* Click at the center of a rectangle using Playwright's native mouse simulation.
|
|
19
80
|
* This uses a hybrid approach: calculates center coordinates and uses mouse.click()
|
|
@@ -50,5 +111,5 @@ export declare function press(browser: SentienceBrowser, key: string, takeSnapsh
|
|
|
50
111
|
* await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 }, true, 3.0);
|
|
51
112
|
* ```
|
|
52
113
|
*/
|
|
53
|
-
export declare function clickRect(browser:
|
|
114
|
+
export declare function clickRect(browser: IBrowser, rect: ClickRect | BBox, highlight?: boolean, highlightDuration?: number, takeSnapshot?: boolean): Promise<ActionResult>;
|
|
54
115
|
//# sourceMappingURL=actions.d.ts.map
|
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAY,IAAI,EAAE,MAAM,SAAS,CAAC;AAIvD,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,OAAc,EACxB,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CAsGvB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CAoDvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CAgCvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,SAAS,GAAE,OAAc,EACzB,iBAAiB,GAAE,MAAY,EAC/B,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CA4FvB"}
|
package/dist/actions.js
CHANGED
|
@@ -8,11 +8,15 @@ exports.typeText = typeText;
|
|
|
8
8
|
exports.press = press;
|
|
9
9
|
exports.clickRect = clickRect;
|
|
10
10
|
const snapshot_1 = require("./snapshot");
|
|
11
|
+
const browser_evaluator_1 = require("./utils/browser-evaluator");
|
|
11
12
|
/**
|
|
12
13
|
* Highlight a rectangle with a red border overlay
|
|
13
14
|
*/
|
|
14
15
|
async function highlightRect(browser, rect, durationSec = 2.0) {
|
|
15
16
|
const page = browser.getPage();
|
|
17
|
+
if (!page) {
|
|
18
|
+
throw new Error('Browser not started. Call start() first.');
|
|
19
|
+
}
|
|
16
20
|
const highlightId = `sentience_highlight_${Date.now()}`;
|
|
17
21
|
// Combine all arguments into a single object for Playwright
|
|
18
22
|
const args = {
|
|
@@ -25,7 +29,7 @@ async function highlightRect(browser, rect, durationSec = 2.0) {
|
|
|
25
29
|
highlightId,
|
|
26
30
|
durationSec,
|
|
27
31
|
};
|
|
28
|
-
await
|
|
32
|
+
await browser_evaluator_1.BrowserEvaluator.evaluate(page, (args) => {
|
|
29
33
|
const { rect, highlightId, durationSec } = args;
|
|
30
34
|
// Create overlay div
|
|
31
35
|
const overlay = document.createElement('div');
|
|
@@ -54,8 +58,34 @@ async function highlightRect(browser, rect, durationSec = 2.0) {
|
|
|
54
58
|
}, durationSec * 1000);
|
|
55
59
|
}, args);
|
|
56
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Click an element by its ID
|
|
63
|
+
*
|
|
64
|
+
* Uses a hybrid approach: gets element bounding box from snapshot and calculates center,
|
|
65
|
+
* then uses Playwright's native mouse.click() for realistic event simulation.
|
|
66
|
+
* Falls back to JavaScript click if element not found in snapshot.
|
|
67
|
+
*
|
|
68
|
+
* @param browser - SentienceBrowser instance
|
|
69
|
+
* @param elementId - Element ID from snapshot
|
|
70
|
+
* @param useMouse - Use mouse simulation (default: true). If false, uses JavaScript click.
|
|
71
|
+
* @param takeSnapshot - Take snapshot after action (default: false)
|
|
72
|
+
* @returns ActionResult with success status, outcome, duration, and optional snapshot
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const snap = await snapshot(browser);
|
|
77
|
+
* const button = find(snap, 'role=button');
|
|
78
|
+
* if (button) {
|
|
79
|
+
* const result = await click(browser, button.id);
|
|
80
|
+
* console.log(`Click ${result.success ? 'succeeded' : 'failed'}`);
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
57
84
|
async function click(browser, elementId, useMouse = true, takeSnapshot = false) {
|
|
58
85
|
const page = browser.getPage();
|
|
86
|
+
if (!page) {
|
|
87
|
+
throw new Error('Browser not started. Call start() first.');
|
|
88
|
+
}
|
|
59
89
|
const startTime = Date.now();
|
|
60
90
|
const urlBefore = page.url();
|
|
61
91
|
let success;
|
|
@@ -63,7 +93,7 @@ async function click(browser, elementId, useMouse = true, takeSnapshot = false)
|
|
|
63
93
|
// Hybrid approach: Get element bbox from snapshot, calculate center, use mouse.click()
|
|
64
94
|
try {
|
|
65
95
|
const snap = await (0, snapshot_1.snapshot)(browser);
|
|
66
|
-
const element = snap.elements.find(
|
|
96
|
+
const element = snap.elements.find(el => el.id === elementId);
|
|
67
97
|
if (element) {
|
|
68
98
|
// Calculate center of element bbox
|
|
69
99
|
const centerX = element.bbox.x + element.bbox.width / 2;
|
|
@@ -74,47 +104,26 @@ async function click(browser, elementId, useMouse = true, takeSnapshot = false)
|
|
|
74
104
|
}
|
|
75
105
|
else {
|
|
76
106
|
// Fallback to JS click if element not found in snapshot
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return window.sentience.click(id);
|
|
80
|
-
}, elementId);
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
// Navigation might have destroyed context, assume success if URL changed
|
|
84
|
-
success = true;
|
|
85
|
-
}
|
|
107
|
+
success = await browser_evaluator_1.BrowserEvaluator.evaluateWithNavigationFallback(page, id => window.sentience.click(id), elementId, true // Assume success if navigation destroyed context
|
|
108
|
+
);
|
|
86
109
|
}
|
|
87
110
|
}
|
|
88
|
-
catch
|
|
111
|
+
catch {
|
|
89
112
|
// Fallback to JS click on error
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return window.sentience.click(id);
|
|
93
|
-
}, elementId);
|
|
94
|
-
}
|
|
95
|
-
catch (evalError) {
|
|
96
|
-
// Navigation might have destroyed context, assume success
|
|
97
|
-
success = true;
|
|
98
|
-
}
|
|
113
|
+
success = await browser_evaluator_1.BrowserEvaluator.evaluateWithNavigationFallback(page, id => window.sentience.click(id), elementId, true // Assume success if navigation destroyed context
|
|
114
|
+
);
|
|
99
115
|
}
|
|
100
116
|
}
|
|
101
117
|
else {
|
|
102
118
|
// Legacy JS-based click
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return window.sentience.click(id);
|
|
106
|
-
}, elementId);
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
// Navigation might have destroyed context, assume success
|
|
110
|
-
success = true;
|
|
111
|
-
}
|
|
119
|
+
success = await browser_evaluator_1.BrowserEvaluator.evaluateWithNavigationFallback(page, id => window.sentience.click(id), elementId, true // Assume success if navigation destroyed context
|
|
120
|
+
);
|
|
112
121
|
}
|
|
113
122
|
// Wait a bit for navigation/DOM updates
|
|
114
123
|
try {
|
|
115
124
|
await page.waitForTimeout(500);
|
|
116
125
|
}
|
|
117
|
-
catch
|
|
126
|
+
catch {
|
|
118
127
|
// Navigation might have happened, context destroyed
|
|
119
128
|
}
|
|
120
129
|
const durationMs = Date.now() - startTime;
|
|
@@ -125,7 +134,7 @@ async function click(browser, elementId, useMouse = true, takeSnapshot = false)
|
|
|
125
134
|
urlAfter = page.url();
|
|
126
135
|
urlChanged = urlBefore !== urlAfter;
|
|
127
136
|
}
|
|
128
|
-
catch
|
|
137
|
+
catch {
|
|
129
138
|
// Context destroyed due to navigation - assume URL changed
|
|
130
139
|
urlAfter = urlBefore;
|
|
131
140
|
urlChanged = true;
|
|
@@ -147,7 +156,7 @@ async function click(browser, elementId, useMouse = true, takeSnapshot = false)
|
|
|
147
156
|
try {
|
|
148
157
|
snapshotAfter = await (0, snapshot_1.snapshot)(browser);
|
|
149
158
|
}
|
|
150
|
-
catch
|
|
159
|
+
catch {
|
|
151
160
|
// Navigation might have destroyed context
|
|
152
161
|
}
|
|
153
162
|
}
|
|
@@ -162,12 +171,35 @@ async function click(browser, elementId, useMouse = true, takeSnapshot = false)
|
|
|
162
171
|
: { code: 'click_failed', reason: 'Element not found or not clickable' },
|
|
163
172
|
};
|
|
164
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Type text into an input element
|
|
176
|
+
*
|
|
177
|
+
* Focuses the element first, then types the text using Playwright's keyboard simulation.
|
|
178
|
+
*
|
|
179
|
+
* @param browser - SentienceBrowser instance
|
|
180
|
+
* @param elementId - Element ID from snapshot (must be a text input element)
|
|
181
|
+
* @param text - Text to type
|
|
182
|
+
* @param takeSnapshot - Take snapshot after action (default: false)
|
|
183
|
+
* @returns ActionResult with success status, outcome, duration, and optional snapshot
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const snap = await snapshot(browser);
|
|
188
|
+
* const searchBox = find(snap, 'role=searchbox');
|
|
189
|
+
* if (searchBox) {
|
|
190
|
+
* await typeText(browser, searchBox.id, 'Hello World');
|
|
191
|
+
* }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
165
194
|
async function typeText(browser, elementId, text, takeSnapshot = false) {
|
|
166
195
|
const page = browser.getPage();
|
|
196
|
+
if (!page) {
|
|
197
|
+
throw new Error('Browser not started. Call start() first.');
|
|
198
|
+
}
|
|
167
199
|
const startTime = Date.now();
|
|
168
200
|
const urlBefore = page.url();
|
|
169
201
|
// Focus element first
|
|
170
|
-
const focused = await
|
|
202
|
+
const focused = await browser_evaluator_1.BrowserEvaluator.evaluate(page, id => {
|
|
171
203
|
const el = window.sentience_registry[id];
|
|
172
204
|
if (el) {
|
|
173
205
|
el.focus();
|
|
@@ -201,8 +233,29 @@ async function typeText(browser, elementId, text, takeSnapshot = false) {
|
|
|
201
233
|
snapshot_after: snapshotAfter,
|
|
202
234
|
};
|
|
203
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Press a keyboard key
|
|
238
|
+
*
|
|
239
|
+
* Simulates pressing a key using Playwright's keyboard API.
|
|
240
|
+
* Common keys: 'Enter', 'Escape', 'Tab', 'ArrowUp', 'ArrowDown', etc.
|
|
241
|
+
*
|
|
242
|
+
* @param browser - SentienceBrowser instance
|
|
243
|
+
* @param key - Key to press (e.g., 'Enter', 'Escape', 'Tab')
|
|
244
|
+
* @param takeSnapshot - Take snapshot after action (default: false)
|
|
245
|
+
* @returns ActionResult with success status, outcome, duration, and optional snapshot
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```typescript
|
|
249
|
+
* // Press Enter after typing
|
|
250
|
+
* await typeText(browser, elementId, 'search query');
|
|
251
|
+
* await press(browser, 'Enter');
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
204
254
|
async function press(browser, key, takeSnapshot = false) {
|
|
205
255
|
const page = browser.getPage();
|
|
256
|
+
if (!page) {
|
|
257
|
+
throw new Error('Browser not started. Call start() first.');
|
|
258
|
+
}
|
|
206
259
|
const startTime = Date.now();
|
|
207
260
|
const urlBefore = page.url();
|
|
208
261
|
// Press key using Playwright
|
|
@@ -263,6 +316,9 @@ async function press(browser, key, takeSnapshot = false) {
|
|
|
263
316
|
*/
|
|
264
317
|
async function clickRect(browser, rect, highlight = true, highlightDuration = 2.0, takeSnapshot = false) {
|
|
265
318
|
const page = browser.getPage();
|
|
319
|
+
if (!page) {
|
|
320
|
+
throw new Error('Browser not started. Call start() first.');
|
|
321
|
+
}
|
|
266
322
|
const startTime = Date.now();
|
|
267
323
|
const urlBefore = page.url();
|
|
268
324
|
// Handle BBox object or ClickRect dict
|
|
@@ -341,9 +397,7 @@ async function clickRect(browser, rect, highlight = true, highlightDuration = 2.
|
|
|
341
397
|
outcome,
|
|
342
398
|
url_changed: urlChanged,
|
|
343
399
|
snapshot_after: snapshotAfter,
|
|
344
|
-
error: success
|
|
345
|
-
? undefined
|
|
346
|
-
: { code: 'click_failed', reason: errorMsg || 'Click failed' },
|
|
400
|
+
error: success ? undefined : { code: 'click_failed', reason: errorMsg || 'Click failed' },
|
|
347
401
|
};
|
|
348
402
|
}
|
|
349
403
|
//# sourceMappingURL=actions.js.map
|
package/dist/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAyGH,sBA2GC;AAsBD,4BAyDC;AAoBD,sBAoCC;AAsCD,8BAkGC;AA/dD,yCAAsC;AACtC,iEAA6D;AAW7D;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,OAAiB,EACjB,IAAe,EACf,cAAsB,GAAG;IAEzB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,WAAW,GAAG,uBAAuB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAExD,4DAA4D;IAC5D,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;SAC9B;QACD,WAAW;QACX,WAAW;KACZ,CAAC;IAEF,MAAM,oCAAgB,CAAC,QAAQ,CAC7B,IAAI,EACJ,CAAC,IAIA,EAAE,EAAE;QACH,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAChD,qBAAqB;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,sBAAsB,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,uBAAuB,CAAC;QAEnD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,wBAAwB;QACxB,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC5B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,+BAA+B;QAC1C,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACI,KAAK,UAAU,KAAK,CACzB,OAAiB,EACjB,SAAiB,EACjB,WAAoB,IAAI,EACxB,eAAwB,KAAK;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,OAAgB,CAAC;IAErB,IAAI,QAAQ,EAAE,CAAC;QACb,uFAAuF;QACvF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;YAE9D,IAAI,OAAO,EAAE,CAAC;gBACZ,mCAAmC;gBACnC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBACzD,+DAA+D;gBAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,wDAAwD;gBACxD,OAAO,GAAG,MAAM,oCAAgB,CAAC,8BAA8B,CAC7D,IAAI,EACJ,EAAE,CAAC,EAAE,CAAE,MAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EACzC,SAAS,EACT,IAAI,CAAC,iDAAiD;iBACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;YAChC,OAAO,GAAG,MAAM,oCAAgB,CAAC,8BAA8B,CAC7D,IAAI,EACJ,EAAE,CAAC,EAAE,CAAE,MAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EACzC,SAAS,EACT,IAAI,CAAC,iDAAiD;aACvD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,OAAO,GAAG,MAAM,oCAAgB,CAAC,8BAA8B,CAC7D,IAAI,EACJ,EAAE,CAAC,EAAE,CAAE,MAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EACzC,SAAS,EACT,IAAI,CAAC,iDAAiD;SACvD,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1C,sDAAsD;IACtD,IAAI,QAAgB,CAAC;IACrB,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,UAAU,GAAG,SAAS,KAAK,QAAQ,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;QAC3D,QAAQ,GAAG,SAAS,CAAC;QACrB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAwE,CAAC;IAC7E,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,GAAG,WAAW,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,OAAO,GAAG,aAAa,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,IAAI,aAAmC,CAAC;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE,OAAO;YACZ,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,oCAAoC,EAAE;KAC3E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,UAAU,QAAQ,CAC5B,OAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,eAAwB,KAAK;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,sBAAsB;IACtB,MAAM,OAAO,GAAG,MAAM,oCAAgB,CAAC,QAAQ,CAC7C,IAAI,EACJ,EAAE,CAAC,EAAE;QACH,MAAM,EAAE,GAAI,MAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,SAAS,CACV,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACnC,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ,CAAC;IAE1C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAEzD,IAAI,aAAmC,CAAC;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,UAAU;QACvB,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,aAAa;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,KAAK,CACzB,OAAiB,EACjB,GAAW,EACX,eAAwB,KAAK;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,6BAA6B;IAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/B,wCAAwC;IACxC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ,CAAC;IAE1C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAEzD,IAAI,aAAmC,CAAC;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,UAAU;QACvB,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,aAAa;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACI,KAAK,UAAU,SAAS,CAC7B,OAAiB,EACjB,IAAsB,EACtB,YAAqB,IAAI,EACzB,oBAA4B,GAAG,EAC/B,eAAwB,KAAK;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,uCAAuC;IACvC,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,CAAC;IAE/C,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;QAC5E,sDAAsD;QACtD,MAAM,IAAI,GAAG,IAAY,CAAC;QAC1B,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACX,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACX,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,iBAAiB;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAChB,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAChB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;QACxC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,6CAA6C;aACtD;SACF,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE1B,8CAA8C;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAChE,6CAA6C;QAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAgB,CAAC;IACrB,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,wCAAwC;IACxC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ,CAAC;IAE1C,oBAAoB;IACpB,IAAI,OAAwE,CAAC;IAC7E,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,GAAG,WAAW,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,OAAO,GAAG,aAAa,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,IAAI,aAAmC,CAAC;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,IAAI,cAAc,EAAE;KAC1F,CAAC;AACJ,CAAC"}
|
package/dist/agent.d.ts
CHANGED
|
@@ -81,6 +81,9 @@ export declare class SentienceAgent {
|
|
|
81
81
|
private history;
|
|
82
82
|
private tokenUsage;
|
|
83
83
|
private showOverlay;
|
|
84
|
+
private previousSnapshot?;
|
|
85
|
+
private llmHandler;
|
|
86
|
+
private actionExecutor;
|
|
84
87
|
/**
|
|
85
88
|
* Initialize Sentience Agent
|
|
86
89
|
* @param browser - SentienceBrowser instance
|
|
@@ -91,14 +94,22 @@ export declare class SentienceAgent {
|
|
|
91
94
|
* @param showOverlay - Show green bbox overlay in browser (default: false)
|
|
92
95
|
*/
|
|
93
96
|
constructor(browser: SentienceBrowser, llm: LLMProvider, snapshotLimit?: number, verbose?: boolean, tracer?: Tracer, showOverlay?: boolean);
|
|
94
|
-
/**
|
|
95
|
-
* Compute SHA256 hash of text
|
|
96
|
-
*/
|
|
97
|
-
private computeHash;
|
|
98
97
|
/**
|
|
99
98
|
* Get bounding box for an element from snapshot
|
|
100
99
|
*/
|
|
101
100
|
private getElementBbox;
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated Use LLMInteractionHandler.buildContext() instead
|
|
103
|
+
*/
|
|
104
|
+
private buildContext;
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated Use LLMInteractionHandler.queryLLM() instead
|
|
107
|
+
*/
|
|
108
|
+
private queryLLM;
|
|
109
|
+
/**
|
|
110
|
+
* @deprecated Use ActionExecutor.executeAction() instead
|
|
111
|
+
*/
|
|
112
|
+
private executeAction;
|
|
102
113
|
/**
|
|
103
114
|
* Execute a high-level goal using observe → think → act loop
|
|
104
115
|
* @param goal - Natural language instruction (e.g., "Click the Sign In button")
|
|
@@ -114,29 +125,6 @@ export declare class SentienceAgent {
|
|
|
114
125
|
* ```
|
|
115
126
|
*/
|
|
116
127
|
act(goal: string, maxRetries?: number, snapshotOptions?: SnapshotOptions): Promise<AgentActResult>;
|
|
117
|
-
/**
|
|
118
|
-
* Filter elements from snapshot based on goal context.
|
|
119
|
-
* Applies goal-based keyword matching to boost relevant elements and filters out irrelevant ones.
|
|
120
|
-
*/
|
|
121
|
-
private filterElements;
|
|
122
|
-
/**
|
|
123
|
-
* Extract meaningful keywords from goal text
|
|
124
|
-
*/
|
|
125
|
-
private extractKeywords;
|
|
126
|
-
/**
|
|
127
|
-
* Convert snapshot elements to token-efficient prompt string
|
|
128
|
-
* Format: [ID] <role> "text" {cues} @ (x,y) (Imp:score)
|
|
129
|
-
* Note: elements are already filtered by filterElements() in act()
|
|
130
|
-
*/
|
|
131
|
-
private buildContext;
|
|
132
|
-
/**
|
|
133
|
-
* Query LLM with standardized prompt template
|
|
134
|
-
*/
|
|
135
|
-
private queryLLM;
|
|
136
|
-
/**
|
|
137
|
-
* Parse action string and execute SDK call
|
|
138
|
-
*/
|
|
139
|
-
private executeAction;
|
|
140
128
|
/**
|
|
141
129
|
* Track token usage for analytics
|
|
142
130
|
*/
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|