rensan-browser 0.1.0 → 0.1.2
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/ai.d.ts +3 -3
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +16 -11
- package/dist/ai.js.map +1 -1
- package/dist/interceptor.d.ts.map +1 -1
- package/dist/interceptor.js +6 -7
- package/dist/interceptor.js.map +1 -1
- package/dist/session.d.ts +7 -13
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +51 -31
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
package/dist/ai.d.ts
CHANGED
|
@@ -10,12 +10,12 @@ export declare class AIClient {
|
|
|
10
10
|
constructor(apiKey: string, model: string);
|
|
11
11
|
/**
|
|
12
12
|
* Look at a screenshot and decide what element to interact with.
|
|
13
|
-
*
|
|
13
|
+
* pageUrl and context give Claude more signal to make the right call.
|
|
14
14
|
*/
|
|
15
|
-
decide(screenshot: string, goal: string, value?: string): Promise<AIDecision>;
|
|
15
|
+
decide(screenshot: string, goal: string, value?: string, pageUrl?: string, context?: string): Promise<AIDecision>;
|
|
16
16
|
/**
|
|
17
17
|
* Read and extract specific text from a screenshot.
|
|
18
18
|
*/
|
|
19
|
-
read(screenshot: string, goal?: string): Promise<string>;
|
|
19
|
+
read(screenshot: string, goal?: string, pageUrl?: string): Promise<string>;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=ai.d.ts.map
|
package/dist/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,QAAQ;IAGS,QAAQ,CAAC,KAAK,EAAE,MAAM;IAFlD,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM;IAIlD;;;OAGG;IACG,MAAM,
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,QAAQ;IAGS,QAAQ,CAAC,KAAK,EAAE,MAAM;IAFlD,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM;IAIlD;;;OAGG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAgDtB;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAuBjF"}
|
package/dist/ai.js
CHANGED
|
@@ -17,10 +17,12 @@ class AIClient {
|
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* Look at a screenshot and decide what element to interact with.
|
|
20
|
-
*
|
|
20
|
+
* pageUrl and context give Claude more signal to make the right call.
|
|
21
21
|
*/
|
|
22
|
-
async decide(screenshot, goal, value) {
|
|
22
|
+
async decide(screenshot, goal, value, pageUrl, context) {
|
|
23
23
|
const valueHint = value ? `Value to type: "${value}"` : '';
|
|
24
|
+
const urlHint = pageUrl ? `Current page URL: ${pageUrl}` : '';
|
|
25
|
+
const contextHint = context ? `Context: ${context}` : '';
|
|
24
26
|
const msg = await this.client.messages.create({
|
|
25
27
|
model: this.model,
|
|
26
28
|
max_tokens: 200,
|
|
@@ -35,9 +37,10 @@ class AIClient {
|
|
|
35
37
|
type: 'text',
|
|
36
38
|
text: `Goal: ${goal}
|
|
37
39
|
${valueHint}
|
|
40
|
+
${urlHint}
|
|
41
|
+
${contextHint}
|
|
38
42
|
|
|
39
|
-
Look at this screenshot
|
|
40
|
-
Find the best element to interact with to achieve the goal.
|
|
43
|
+
Look at this webpage screenshot. Find the best element to interact with to achieve the goal.
|
|
41
44
|
|
|
42
45
|
Respond ONLY with JSON:
|
|
43
46
|
{
|
|
@@ -47,10 +50,11 @@ Respond ONLY with JSON:
|
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
Rules:
|
|
50
|
-
- For search/input goals
|
|
51
|
-
- For button/link goals
|
|
52
|
-
-
|
|
53
|
-
-
|
|
53
|
+
- For search/input goals → "fill"
|
|
54
|
+
- For button/link/dismiss goals → "click"
|
|
55
|
+
- Prefer specific selectors: input[placeholder="..."], [aria-label="..."], button:has-text("...")
|
|
56
|
+
- NEVER return nav links, logo links, or footer links
|
|
57
|
+
- If nothing relevant is visible → "none"`,
|
|
54
58
|
},
|
|
55
59
|
],
|
|
56
60
|
}],
|
|
@@ -62,10 +66,11 @@ Rules:
|
|
|
62
66
|
/**
|
|
63
67
|
* Read and extract specific text from a screenshot.
|
|
64
68
|
*/
|
|
65
|
-
async read(screenshot, goal) {
|
|
69
|
+
async read(screenshot, goal, pageUrl) {
|
|
70
|
+
const urlHint = pageUrl ? `Page: ${pageUrl}` : '';
|
|
66
71
|
const prompt = goal
|
|
67
|
-
?
|
|
68
|
-
:
|
|
72
|
+
? `${urlHint}\nFrom this webpage screenshot, extract: ${goal}. Return only the extracted text, nothing else.`
|
|
73
|
+
: `${urlHint}\nExtract all visible main content text from this webpage. Skip navigation, ads, and footers.`;
|
|
69
74
|
const msg = await this.client.messages.create({
|
|
70
75
|
model: this.model,
|
|
71
76
|
max_tokens: 1000,
|
package/dist/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,4DAA0C;AAG1C,MAAa,QAAQ;IAGnB,YAAY,MAAc,EAAW,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,4DAA0C;AAG1C,MAAa,QAAQ;IAGnB,YAAY,MAAc,EAAW,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,IAAY,EACZ,KAAc,EACd,OAAgB,EAChB,OAAgB;QAEhB,MAAM,SAAS,GAAK,KAAK,CAAI,CAAC,CAAC,mBAAmB,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,OAAO,GAAO,OAAO,CAAE,CAAC,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,WAAW,GAAG,OAAO,CAAE,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE;yBACvE;wBACD;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,SAAS,IAAI;EAC7B,SAAS;EACT,OAAO;EACP,WAAW;;;;;;;;;;;;;;;;0CAgB6B;yBAC/B;qBACF;iBACF,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,GAAG,GAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAoC,CAAC,IAAI,CAAC,IAAI,EAAE;aACvE,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE/D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,IAAa,EAAE,OAAgB;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAI,IAAI;YAClB,CAAC,CAAC,GAAG,OAAO,4CAA4C,IAAI,iDAAiD;YAC7G,CAAC,CAAC,GAAG,OAAO,+FAA+F,CAAC;QAE9G,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE;yBACvE;wBACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;qBAC/B;iBACF,CAAC;SACH,CAAC,CAAC;QAEH,OAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAoC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;CACF;AA3FD,4BA2FC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAsC/C,qBAAa,WAAW;IAKV,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,OAAO,CAAmD;IAClE,OAAO,CAAC,OAAO,CAAS;gBAEJ,IAAI,EAAE,IAAI,EAAE,OAAO,SAAK;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAsC/C,qBAAa,WAAW;IAKV,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,OAAO,CAAmD;IAClE,OAAO,CAAC,OAAO,CAAS;gBAEJ,IAAI,EAAE,IAAI,EAAE,OAAO,SAAK;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,KAAK,IAAI,IAAI;IA2Bb,IAAI,IAAI,eAAe,EAAE;IAQzB,IAAI,GAAG,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAE/C;IAED,MAAM,CAAC,IAAI,SAAK,GAAG,eAAe,EAAE;CAMrC"}
|
package/dist/interceptor.js
CHANGED
|
@@ -65,16 +65,15 @@ class Interceptor {
|
|
|
65
65
|
return;
|
|
66
66
|
if (!ct.includes('json'))
|
|
67
67
|
return;
|
|
68
|
-
if (url.length > 600)
|
|
69
|
-
return;
|
|
70
68
|
try {
|
|
71
69
|
const data = await res.json();
|
|
72
70
|
if (!data || typeof data !== 'object')
|
|
73
71
|
return;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
// Accept arrays and objects — even single-key responses like { data: [...] }
|
|
73
|
+
const isEmpty = Array.isArray(data)
|
|
74
|
+
? data.length === 0
|
|
75
|
+
: Object.keys(data).length === 0;
|
|
76
|
+
if (isEmpty)
|
|
78
77
|
return;
|
|
79
78
|
this.captured.push({ url, data });
|
|
80
79
|
}
|
|
@@ -92,7 +91,7 @@ class Interceptor {
|
|
|
92
91
|
get raw() {
|
|
93
92
|
return [...this.captured];
|
|
94
93
|
}
|
|
95
|
-
ranked(topN =
|
|
94
|
+
ranked(topN = 25) {
|
|
96
95
|
return this.captured
|
|
97
96
|
.map(r => ({ url: r.url, data: r.data, score: scoreUrl(r.url, this.siteUrl) }))
|
|
98
97
|
.sort((a, b) => b.score - a.score)
|
package/dist/interceptor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -19,14 +19,14 @@ export declare class Session {
|
|
|
19
19
|
private defaultTimeout;
|
|
20
20
|
private ai;
|
|
21
21
|
private interceptor;
|
|
22
|
-
|
|
22
|
+
currentUrl: string;
|
|
23
23
|
constructor(page: Page, apiKey: string, model: string, defaultTimeout: number);
|
|
24
24
|
goto(url: string, options?: GotoOptions): Promise<void>;
|
|
25
25
|
wait(ms: number): Promise<void>;
|
|
26
26
|
screenshot(): Promise<string>;
|
|
27
27
|
/**
|
|
28
28
|
* Click an element described in natural language.
|
|
29
|
-
*
|
|
29
|
+
* Layer 1: semantic patterns. Layer 2: Haiku vision.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
32
|
* await session.click('the Accept cookies button')
|
|
@@ -36,7 +36,7 @@ export declare class Session {
|
|
|
36
36
|
private semanticClick;
|
|
37
37
|
/**
|
|
38
38
|
* Find an input and type a value.
|
|
39
|
-
*
|
|
39
|
+
* Layer 1: Playwright roles + common selectors. Layer 2: Haiku vision.
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
42
42
|
* await session.fill('BUE', 'the origin airport input')
|
|
@@ -48,26 +48,21 @@ export declare class Session {
|
|
|
48
48
|
*/
|
|
49
49
|
type(text: string, options?: FillOptions): Promise<void>;
|
|
50
50
|
/**
|
|
51
|
-
* Read text from the page
|
|
51
|
+
* Read text from the page. Uses DOM for full-page reads, vision for specific extractions.
|
|
52
52
|
*
|
|
53
53
|
* @example
|
|
54
|
-
* const
|
|
55
|
-
* const price
|
|
56
|
-
* const all
|
|
54
|
+
* const headline = await session.read('the main article headline')
|
|
55
|
+
* const price = await session.read('the product price')
|
|
56
|
+
* const all = await session.read()
|
|
57
57
|
*/
|
|
58
58
|
read(goal?: string): Promise<string>;
|
|
59
59
|
/**
|
|
60
|
-
* Scroll the page.
|
|
61
|
-
*
|
|
62
60
|
* @example
|
|
63
61
|
* await session.scroll('down')
|
|
64
62
|
* await session.scroll('up', { pixels: 200 })
|
|
65
|
-
* await session.scroll('down', { pixels: 800 })
|
|
66
63
|
*/
|
|
67
64
|
scroll(direction: 'up' | 'down', options?: ScrollOptions): Promise<void>;
|
|
68
65
|
/**
|
|
69
|
-
* Move cursor to coordinates or to an element described in natural language.
|
|
70
|
-
*
|
|
71
66
|
* @example
|
|
72
67
|
* await session.moveTo({ x: 100, y: 200 })
|
|
73
68
|
* await session.moveTo('the hamburger menu icon')
|
|
@@ -85,7 +80,6 @@ export declare class Session {
|
|
|
85
80
|
* @example
|
|
86
81
|
* const requests = await session.capture(async () => {
|
|
87
82
|
* await session.fill('BUE', 'origin airport')
|
|
88
|
-
* await session.click('search button')
|
|
89
83
|
* })
|
|
90
84
|
*/
|
|
91
85
|
capture(fn: () => Promise<void>): Promise<CapturedRequest[]>;
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgBxF,qBAAa,OAAO;IAMhB,QAAQ,CAAC,IAAI,EAAE,IAAI;IAGnB,OAAO,CAAC,cAAc;IARxB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,WAAW,CAAc;IACjC,UAAU,SAAM;gBAGL,IAAI,EAAE,IAAI,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACL,cAAc,EAAE,MAAM;IAQ1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAOnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAkB7B,aAAa;IAuB3B;;;;;;;OAOG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDpF;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1C;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASlF;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,YAAY,IAAI,IAAI;IAKpB,WAAW,IAAI,eAAe,EAAE;IAIhC,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAExC;IAED;;;;;;;OAOG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAY5D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/session.js
CHANGED
|
@@ -17,6 +17,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.Session = void 0;
|
|
18
18
|
const ai_1 = require("./ai");
|
|
19
19
|
const interceptor_1 = require("./interceptor");
|
|
20
|
+
// Extra input selectors to try before vision
|
|
21
|
+
const FILL_SELECTORS = [
|
|
22
|
+
'input[type="search"]',
|
|
23
|
+
'[role="searchbox"]',
|
|
24
|
+
'[role="textbox"]',
|
|
25
|
+
'input[placeholder]',
|
|
26
|
+
'input[name="q"]',
|
|
27
|
+
'input[name="search"]',
|
|
28
|
+
'input[name="query"]',
|
|
29
|
+
'input[type="text"]',
|
|
30
|
+
'input:not([type])',
|
|
31
|
+
'textarea',
|
|
32
|
+
];
|
|
20
33
|
class Session {
|
|
21
34
|
constructor(page, apiKey, model, defaultTimeout) {
|
|
22
35
|
this.page = page;
|
|
@@ -45,21 +58,21 @@ class Session {
|
|
|
45
58
|
// ─── Click ──────────────────────────────────────────────────────────────────
|
|
46
59
|
/**
|
|
47
60
|
* Click an element described in natural language.
|
|
48
|
-
*
|
|
61
|
+
* Layer 1: semantic patterns. Layer 2: Haiku vision.
|
|
49
62
|
*
|
|
50
63
|
* @example
|
|
51
64
|
* await session.click('the Accept cookies button')
|
|
52
65
|
* await session.click('the search icon in the top right')
|
|
53
66
|
*/
|
|
54
67
|
async click(goal) {
|
|
55
|
-
// Layer 1 —
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
68
|
+
// Layer 1 — semantic patterns
|
|
69
|
+
const l1 = await this.semanticClick(goal);
|
|
70
|
+
if (l1)
|
|
58
71
|
return true;
|
|
59
72
|
// Layer 2 — vision
|
|
60
73
|
try {
|
|
61
74
|
const img = await this.screenshot();
|
|
62
|
-
const decision = await this.ai.decide(img, goal);
|
|
75
|
+
const decision = await this.ai.decide(img, goal, undefined, this.currentUrl);
|
|
63
76
|
if (decision.action === 'none' || !decision.selector)
|
|
64
77
|
return false;
|
|
65
78
|
await this.page.locator(decision.selector).first().click({ timeout: 4000 });
|
|
@@ -70,13 +83,13 @@ class Session {
|
|
|
70
83
|
}
|
|
71
84
|
}
|
|
72
85
|
async semanticClick(goal) {
|
|
73
|
-
|
|
74
|
-
// Cookie-like goals: try common patterns
|
|
75
|
-
if (/cookie|accept|consent|agree|dismiss/i.test(lower)) {
|
|
86
|
+
if (/cookie|accept|consent|agree|dismiss/i.test(goal)) {
|
|
76
87
|
for (const sel of [
|
|
77
|
-
'
|
|
78
|
-
'button:has-text("
|
|
79
|
-
'
|
|
88
|
+
'#onetrust-accept-btn-handler',
|
|
89
|
+
'button:has-text("Accept all")', 'button:has-text("Accept")',
|
|
90
|
+
'button:has-text("Aceptar")', 'button:has-text("I agree")',
|
|
91
|
+
'button:has-text("Got it")', 'button:has-text("Dismiss")',
|
|
92
|
+
'[class*="cookie"] button', '[id*="consent"] button',
|
|
80
93
|
]) {
|
|
81
94
|
try {
|
|
82
95
|
const el = this.page.locator(sel).first();
|
|
@@ -93,7 +106,7 @@ class Session {
|
|
|
93
106
|
// ─── Fill ───────────────────────────────────────────────────────────────────
|
|
94
107
|
/**
|
|
95
108
|
* Find an input and type a value.
|
|
96
|
-
*
|
|
109
|
+
* Layer 1: Playwright roles + common selectors. Layer 2: Haiku vision.
|
|
97
110
|
*
|
|
98
111
|
* @example
|
|
99
112
|
* await session.fill('BUE', 'the origin airport input')
|
|
@@ -101,11 +114,11 @@ class Session {
|
|
|
101
114
|
*/
|
|
102
115
|
async fill(value, goal, options = {}) {
|
|
103
116
|
const { pressEnter = true, delay = 60 } = options;
|
|
104
|
-
// Layer 1 — Playwright
|
|
117
|
+
// Layer 1 — Playwright roles
|
|
105
118
|
for (const role of ['searchbox', 'textbox']) {
|
|
106
119
|
try {
|
|
107
120
|
const loc = this.page.getByRole(role).first();
|
|
108
|
-
if (await loc.isVisible({ timeout:
|
|
121
|
+
if (await loc.isVisible({ timeout: 400 }).catch(() => false)) {
|
|
109
122
|
await loc.fill('');
|
|
110
123
|
await loc.type(value, { delay });
|
|
111
124
|
if (pressEnter)
|
|
@@ -115,10 +128,26 @@ class Session {
|
|
|
115
128
|
}
|
|
116
129
|
catch { /* try next */ }
|
|
117
130
|
}
|
|
118
|
-
// Layer
|
|
131
|
+
// Layer 1b — common input selectors
|
|
132
|
+
for (const sel of FILL_SELECTORS) {
|
|
133
|
+
try {
|
|
134
|
+
const loc = this.page.locator(sel).first();
|
|
135
|
+
if (await loc.isVisible({ timeout: 400 }).catch(() => false) &&
|
|
136
|
+
await loc.isEnabled({ timeout: 400 }).catch(() => false)) {
|
|
137
|
+
await loc.scrollIntoViewIfNeeded();
|
|
138
|
+
await loc.fill('');
|
|
139
|
+
await loc.type(value, { delay });
|
|
140
|
+
if (pressEnter)
|
|
141
|
+
await this.page.keyboard.press('Enter');
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch { /* try next */ }
|
|
146
|
+
}
|
|
147
|
+
// Layer 2 — vision with full context
|
|
119
148
|
try {
|
|
120
149
|
const img = await this.screenshot();
|
|
121
|
-
const decision = await this.ai.decide(img, goal, value);
|
|
150
|
+
const decision = await this.ai.decide(img, goal, value, this.currentUrl, `Looking for input to type "${value}"`);
|
|
122
151
|
if (decision.action === 'none' || !decision.selector)
|
|
123
152
|
return false;
|
|
124
153
|
const el = this.page.locator(decision.selector).first();
|
|
@@ -149,32 +178,27 @@ class Session {
|
|
|
149
178
|
}
|
|
150
179
|
// ─── Read ───────────────────────────────────────────────────────────────────
|
|
151
180
|
/**
|
|
152
|
-
* Read text from the page
|
|
181
|
+
* Read text from the page. Uses DOM for full-page reads, vision for specific extractions.
|
|
153
182
|
*
|
|
154
183
|
* @example
|
|
155
|
-
* const
|
|
156
|
-
* const price
|
|
157
|
-
* const all
|
|
184
|
+
* const headline = await session.read('the main article headline')
|
|
185
|
+
* const price = await session.read('the product price')
|
|
186
|
+
* const all = await session.read()
|
|
158
187
|
*/
|
|
159
188
|
async read(goal) {
|
|
160
|
-
// Try to get text from DOM first (free)
|
|
161
189
|
if (!goal) {
|
|
162
190
|
const text = await this.page.evaluate(() => document.body.innerText).catch(() => '');
|
|
163
191
|
if (text.length > 50)
|
|
164
192
|
return text.slice(0, 5000);
|
|
165
193
|
}
|
|
166
|
-
// Vision for specific extractions
|
|
167
194
|
const img = await this.screenshot();
|
|
168
|
-
return this.ai.read(img, goal);
|
|
195
|
+
return this.ai.read(img, goal, this.currentUrl);
|
|
169
196
|
}
|
|
170
197
|
// ─── Scroll ─────────────────────────────────────────────────────────────────
|
|
171
198
|
/**
|
|
172
|
-
* Scroll the page.
|
|
173
|
-
*
|
|
174
199
|
* @example
|
|
175
200
|
* await session.scroll('down')
|
|
176
201
|
* await session.scroll('up', { pixels: 200 })
|
|
177
|
-
* await session.scroll('down', { pixels: 800 })
|
|
178
202
|
*/
|
|
179
203
|
async scroll(direction, options = {}) {
|
|
180
204
|
const { pixels = 400 } = options;
|
|
@@ -184,8 +208,6 @@ class Session {
|
|
|
184
208
|
}
|
|
185
209
|
// ─── Move cursor ─────────────────────────────────────────────────────────────
|
|
186
210
|
/**
|
|
187
|
-
* Move cursor to coordinates or to an element described in natural language.
|
|
188
|
-
*
|
|
189
211
|
* @example
|
|
190
212
|
* await session.moveTo({ x: 100, y: 200 })
|
|
191
213
|
* await session.moveTo('the hamburger menu icon')
|
|
@@ -195,10 +217,9 @@ class Session {
|
|
|
195
217
|
await this.page.mouse.move(target.x, target.y);
|
|
196
218
|
return;
|
|
197
219
|
}
|
|
198
|
-
// AI finds the element
|
|
199
220
|
try {
|
|
200
221
|
const img = await this.screenshot();
|
|
201
|
-
const decision = await this.ai.decide(img, `hover over: ${target}
|
|
222
|
+
const decision = await this.ai.decide(img, `hover over: ${target}`, undefined, this.currentUrl);
|
|
202
223
|
if (decision.action === 'none' || !decision.selector)
|
|
203
224
|
return;
|
|
204
225
|
await this.page.locator(decision.selector).first().hover({ timeout: 3000 });
|
|
@@ -222,7 +243,6 @@ class Session {
|
|
|
222
243
|
* @example
|
|
223
244
|
* const requests = await session.capture(async () => {
|
|
224
245
|
* await session.fill('BUE', 'origin airport')
|
|
225
|
-
* await session.click('search button')
|
|
226
246
|
* })
|
|
227
247
|
*/
|
|
228
248
|
async capture(fn) {
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAGH,6BAAgC;AAChC,+CAA4C;AAG5C,MAAa,OAAO;IAKlB,YACW,IAAU,EACnB,MAAc,EACd,KAAa,EACL,cAAsB;QAHrB,SAAI,GAAJ,IAAI,CAAM;QAGX,mBAAc,GAAd,cAAc,CAAQ;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED