@cogitator-ai/browser 0.1.5 → 0.2.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/README.md +58 -32
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +18 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +201 -72
- package/dist/session.js.map +1 -1
- package/dist/stealth/evasions.d.ts +7 -1
- package/dist/stealth/evasions.d.ts.map +1 -1
- package/dist/stealth/evasions.js +159 -64
- package/dist/stealth/evasions.js.map +1 -1
- package/dist/stealth/human-like.d.ts +27 -3
- package/dist/stealth/human-like.d.ts.map +1 -1
- package/dist/stealth/human-like.js +76 -23
- package/dist/stealth/human-like.js.map +1 -1
- package/dist/stealth/index.d.ts +8 -2
- package/dist/stealth/index.d.ts.map +1 -1
- package/dist/stealth/index.js +10 -6
- package/dist/stealth/index.js.map +1 -1
- package/dist/stealth/user-agents.d.ts.map +1 -1
- package/dist/stealth/user-agents.js +33 -34
- package/dist/stealth/user-agents.js.map +1 -1
- package/dist/tools/extraction.d.ts.map +1 -1
- package/dist/tools/extraction.js +37 -27
- package/dist/tools/extraction.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interaction.d.ts +10 -2
- package/dist/tools/interaction.d.ts.map +1 -1
- package/dist/tools/interaction.js +86 -42
- package/dist/tools/interaction.js.map +1 -1
- package/dist/tools/navigation.d.ts +6 -4
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +9 -4
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/network.d.ts +29 -26
- package/dist/tools/network.d.ts.map +1 -1
- package/dist/tools/network.js +394 -102
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/vision.d.ts +10 -6
- package/dist/tools/vision.d.ts.map +1 -1
- package/dist/tools/vision.js +66 -19
- package/dist/tools/vision.js.map +1 -1
- package/dist/utils/human-mode.d.ts +5 -0
- package/dist/utils/human-mode.d.ts.map +1 -0
- package/dist/utils/human-mode.js +10 -0
- package/dist/utils/human-mode.js.map +1 -0
- package/dist/utils/page-helpers.d.ts +1 -0
- package/dist/utils/page-helpers.d.ts.map +1 -1
- package/dist/utils/page-helpers.js +82 -22
- package/dist/utils/page-helpers.js.map +1 -1
- package/dist/utils/schemas.d.ts +7 -2
- package/dist/utils/schemas.d.ts.map +1 -1
- package/dist/utils/schemas.js +43 -16
- package/dist/utils/schemas.js.map +1 -1
- package/dist/utils/selectors.d.ts.map +1 -1
- package/dist/utils/selectors.js +27 -10
- package/dist/utils/selectors.js.map +1 -1
- package/package.json +4 -4
- package/dist/__tests__/browser-tools.test.d.ts +0 -2
- package/dist/__tests__/browser-tools.test.d.ts.map +0 -1
- package/dist/__tests__/browser-tools.test.js +0 -120
- package/dist/__tests__/browser-tools.test.js.map +0 -1
- package/dist/__tests__/extraction.test.d.ts +0 -2
- package/dist/__tests__/extraction.test.d.ts.map +0 -1
- package/dist/__tests__/extraction.test.js +0 -267
- package/dist/__tests__/extraction.test.js.map +0 -1
- package/dist/__tests__/interaction.test.d.ts +0 -2
- package/dist/__tests__/interaction.test.d.ts.map +0 -1
- package/dist/__tests__/interaction.test.js +0 -376
- package/dist/__tests__/interaction.test.js.map +0 -1
- package/dist/__tests__/navigation.test.d.ts +0 -2
- package/dist/__tests__/navigation.test.d.ts.map +0 -1
- package/dist/__tests__/navigation.test.js +0 -235
- package/dist/__tests__/navigation.test.js.map +0 -1
- package/dist/__tests__/network.test.d.ts +0 -2
- package/dist/__tests__/network.test.d.ts.map +0 -1
- package/dist/__tests__/network.test.js +0 -508
- package/dist/__tests__/network.test.js.map +0 -1
- package/dist/__tests__/page-helpers.test.d.ts +0 -2
- package/dist/__tests__/page-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/page-helpers.test.js +0 -321
- package/dist/__tests__/page-helpers.test.js.map +0 -1
- package/dist/__tests__/schemas.test.d.ts +0 -2
- package/dist/__tests__/schemas.test.d.ts.map +0 -1
- package/dist/__tests__/schemas.test.js +0 -518
- package/dist/__tests__/schemas.test.js.map +0 -1
- package/dist/__tests__/selectors.test.d.ts +0 -2
- package/dist/__tests__/selectors.test.d.ts.map +0 -1
- package/dist/__tests__/selectors.test.js +0 -157
- package/dist/__tests__/selectors.test.js.map +0 -1
- package/dist/__tests__/session.test.d.ts +0 -2
- package/dist/__tests__/session.test.d.ts.map +0 -1
- package/dist/__tests__/session.test.js +0 -325
- package/dist/__tests__/session.test.js.map +0 -1
- package/dist/__tests__/stealth.test.d.ts +0 -2
- package/dist/__tests__/stealth.test.d.ts.map +0 -1
- package/dist/__tests__/stealth.test.js +0 -353
- package/dist/__tests__/stealth.test.js.map +0 -1
- package/dist/__tests__/vision.test.d.ts +0 -2
- package/dist/__tests__/vision.test.d.ts.map +0 -1
- package/dist/__tests__/vision.test.js +0 -226
- package/dist/__tests__/vision.test.js.map +0 -1
package/dist/tools/vision.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare function createScreenshotTool(session: BrowserSession): import("@
|
|
|
5
5
|
quality?: number | undefined;
|
|
6
6
|
}, {
|
|
7
7
|
image: string;
|
|
8
|
+
mimeType: string;
|
|
8
9
|
width: number;
|
|
9
10
|
height: number;
|
|
10
11
|
}>;
|
|
@@ -27,19 +28,20 @@ export declare function createFindByDescriptionTool(session: BrowserSession): im
|
|
|
27
28
|
name: string;
|
|
28
29
|
description: string;
|
|
29
30
|
}[];
|
|
31
|
+
total: number;
|
|
30
32
|
}>;
|
|
31
33
|
export declare function createClickByDescriptionTool(session: BrowserSession): import("@cogitator-ai/types").Tool<{
|
|
32
34
|
description: string;
|
|
33
35
|
index?: number | undefined;
|
|
34
36
|
}, {
|
|
37
|
+
clicked: boolean;
|
|
38
|
+
element: null;
|
|
39
|
+
} | {
|
|
35
40
|
clicked: boolean;
|
|
36
41
|
element: {
|
|
37
42
|
description: string;
|
|
38
43
|
index: number;
|
|
39
44
|
};
|
|
40
|
-
} | {
|
|
41
|
-
clicked: boolean;
|
|
42
|
-
element: null;
|
|
43
45
|
}>;
|
|
44
46
|
export declare function createVisionTools(session: BrowserSession): (import("@cogitator-ai/types").Tool<{
|
|
45
47
|
fullPage?: boolean | undefined;
|
|
@@ -47,6 +49,7 @@ export declare function createVisionTools(session: BrowserSession): (import("@co
|
|
|
47
49
|
quality?: number | undefined;
|
|
48
50
|
}, {
|
|
49
51
|
image: string;
|
|
52
|
+
mimeType: string;
|
|
50
53
|
width: number;
|
|
51
54
|
height: number;
|
|
52
55
|
}> | import("@cogitator-ai/types").Tool<{
|
|
@@ -67,17 +70,18 @@ export declare function createVisionTools(session: BrowserSession): (import("@co
|
|
|
67
70
|
name: string;
|
|
68
71
|
description: string;
|
|
69
72
|
}[];
|
|
73
|
+
total: number;
|
|
70
74
|
}> | import("@cogitator-ai/types").Tool<{
|
|
71
75
|
description: string;
|
|
72
76
|
index?: number | undefined;
|
|
73
77
|
}, {
|
|
78
|
+
clicked: boolean;
|
|
79
|
+
element: null;
|
|
80
|
+
} | {
|
|
74
81
|
clicked: boolean;
|
|
75
82
|
element: {
|
|
76
83
|
description: string;
|
|
77
84
|
index: number;
|
|
78
85
|
};
|
|
79
|
-
} | {
|
|
80
|
-
clicked: boolean;
|
|
81
|
-
element: null;
|
|
82
86
|
}>)[];
|
|
83
87
|
//# sourceMappingURL=vision.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/tools/vision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/tools/vision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiDjD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;GAmC3D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;GAmBlE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc;;;;cAchC,MAAM;cAAQ,MAAM;qBAAe,MAAM;;;GA6B3E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;GA4CnE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;cA7EtB,MAAM;cAAQ,MAAM;qBAAe,MAAM;;;;;;;;;;;;;;;MAoF3E"}
|
package/dist/tools/vision.js
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
import { tool } from '@cogitator-ai/core';
|
|
2
2
|
import { screenshotSchema, screenshotElementSchema, findByDescriptionSchema, clickByDescriptionSchema, } from '../utils/schemas.js';
|
|
3
3
|
import { getAccessibilityTree } from '../utils/page-helpers.js';
|
|
4
|
+
import { humanLikeClick } from '../stealth/human-like.js';
|
|
5
|
+
import { usesHumanLikeMouse } from '../utils/human-mode.js';
|
|
6
|
+
function parseImageDimensions(buffer) {
|
|
7
|
+
if (buffer.length >= 24 && buffer.readUInt32BE(0) === 0x89504e47) {
|
|
8
|
+
return { width: buffer.readUInt32BE(16), height: buffer.readUInt32BE(20) };
|
|
9
|
+
}
|
|
10
|
+
if (buffer.length >= 2 && buffer[0] === 0xff && buffer[1] === 0xd8) {
|
|
11
|
+
let offset = 2;
|
|
12
|
+
while (offset + 9 < buffer.length) {
|
|
13
|
+
if (buffer[offset] !== 0xff) {
|
|
14
|
+
offset += 1;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const marker = buffer[offset + 1];
|
|
18
|
+
if (marker === 0xff) {
|
|
19
|
+
offset += 1;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const isSof = (marker >= 0xc0 && marker <= 0xc3) ||
|
|
23
|
+
(marker >= 0xc5 && marker <= 0xc7) ||
|
|
24
|
+
(marker >= 0xc9 && marker <= 0xcb) ||
|
|
25
|
+
(marker >= 0xcd && marker <= 0xcf);
|
|
26
|
+
if (isSof) {
|
|
27
|
+
return { height: buffer.readUInt16BE(offset + 5), width: buffer.readUInt16BE(offset + 7) };
|
|
28
|
+
}
|
|
29
|
+
if (marker === 0x01 || (marker >= 0xd0 && marker <= 0xd9)) {
|
|
30
|
+
offset += 2;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
offset += 2 + buffer.readUInt16BE(offset + 2);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { width: 0, height: 0 };
|
|
37
|
+
}
|
|
4
38
|
export function createScreenshotTool(session) {
|
|
5
39
|
return tool({
|
|
6
40
|
name: 'browser_screenshot',
|
|
@@ -10,25 +44,26 @@ export function createScreenshotTool(session) {
|
|
|
10
44
|
parameters: screenshotSchema,
|
|
11
45
|
execute: async (params) => {
|
|
12
46
|
const page = session.page;
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (params.quality != null) {
|
|
17
|
-
options.type = 'jpeg';
|
|
18
|
-
options.quality = params.quality;
|
|
19
|
-
}
|
|
47
|
+
const format = params.quality != null
|
|
48
|
+
? { type: 'jpeg', quality: params.quality }
|
|
49
|
+
: { type: 'png' };
|
|
20
50
|
let buffer;
|
|
51
|
+
let fallback;
|
|
21
52
|
if (params.selector) {
|
|
22
|
-
|
|
53
|
+
const locator = page.locator(params.selector).first();
|
|
54
|
+
buffer = await locator.screenshot(format);
|
|
55
|
+
fallback = await locator.boundingBox();
|
|
23
56
|
}
|
|
24
57
|
else {
|
|
25
|
-
buffer = await page.screenshot(
|
|
58
|
+
buffer = await page.screenshot(params.fullPage ? { ...format, fullPage: true } : format);
|
|
59
|
+
fallback = page.viewportSize();
|
|
26
60
|
}
|
|
27
|
-
const
|
|
61
|
+
const dims = parseImageDimensions(buffer);
|
|
28
62
|
return {
|
|
29
63
|
image: buffer.toString('base64'),
|
|
30
|
-
|
|
31
|
-
|
|
64
|
+
mimeType: format.type === 'jpeg' ? 'image/jpeg' : 'image/png',
|
|
65
|
+
width: dims.width || Math.round(fallback?.width ?? 0),
|
|
66
|
+
height: dims.height || Math.round(fallback?.height ?? 0),
|
|
32
67
|
};
|
|
33
68
|
},
|
|
34
69
|
});
|
|
@@ -42,7 +77,7 @@ export function createScreenshotElementTool(session) {
|
|
|
42
77
|
parameters: screenshotElementSchema,
|
|
43
78
|
execute: async (params) => {
|
|
44
79
|
const page = session.page;
|
|
45
|
-
const locator = page.locator(params.selector);
|
|
80
|
+
const locator = page.locator(params.selector).first();
|
|
46
81
|
const buffer = await locator.screenshot({ type: 'png' });
|
|
47
82
|
const box = await locator.boundingBox();
|
|
48
83
|
return {
|
|
@@ -63,16 +98,19 @@ export function createFindByDescriptionTool(session) {
|
|
|
63
98
|
const page = session.page;
|
|
64
99
|
const snapshot = await getAccessibilityTree(page);
|
|
65
100
|
if (!snapshot)
|
|
66
|
-
return { elements: [] };
|
|
101
|
+
return { elements: [], total: 0 };
|
|
67
102
|
const description = params.description.toLowerCase();
|
|
68
103
|
const matches = [];
|
|
104
|
+
const maxResults = 50;
|
|
69
105
|
function walk(node) {
|
|
70
106
|
const name = (node.name ?? '').toLowerCase();
|
|
71
107
|
const role = (node.role ?? '').toLowerCase();
|
|
72
108
|
if (name.length >= 2) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
109
|
+
const nameContainsDescription = name.includes(description);
|
|
110
|
+
const descriptionContainsName = name.length >= 3 &&
|
|
111
|
+
new RegExp(`\\b${name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`).test(description);
|
|
112
|
+
const roleMatches = description.length >= 3 && role.includes(description);
|
|
113
|
+
if (nameContainsDescription || descriptionContainsName || roleMatches) {
|
|
76
114
|
matches.push({
|
|
77
115
|
role: node.role ?? '',
|
|
78
116
|
name: node.name ?? '',
|
|
@@ -86,7 +124,7 @@ export function createFindByDescriptionTool(session) {
|
|
|
86
124
|
}
|
|
87
125
|
}
|
|
88
126
|
walk(snapshot);
|
|
89
|
-
return { elements: matches };
|
|
127
|
+
return { elements: matches.slice(0, maxResults), total: matches.length };
|
|
90
128
|
},
|
|
91
129
|
});
|
|
92
130
|
}
|
|
@@ -112,7 +150,16 @@ export function createClickByDescriptionTool(session) {
|
|
|
112
150
|
const count = await locator.count();
|
|
113
151
|
if (count > 0) {
|
|
114
152
|
const idx = params.index ?? 0;
|
|
115
|
-
|
|
153
|
+
if (idx < 0 || idx >= count) {
|
|
154
|
+
return { clicked: false, element: null };
|
|
155
|
+
}
|
|
156
|
+
const target = locator.nth(idx);
|
|
157
|
+
if (usesHumanLikeMouse(session)) {
|
|
158
|
+
await humanLikeClick(page, target);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
await target.click();
|
|
162
|
+
}
|
|
116
163
|
return {
|
|
117
164
|
clicked: true,
|
|
118
165
|
element: { description: params.description, index: idx },
|
package/dist/tools/vision.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/tools/vision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,GAKzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAA0B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/tools/vision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BrowserSession } from '../session.js';
|
|
2
|
+
export declare function usesHumanLikeMouse(session: BrowserSession): boolean;
|
|
3
|
+
export declare function usesHumanLikeTyping(session: BrowserSession): boolean;
|
|
4
|
+
export declare function humanTypingDelay(): number;
|
|
5
|
+
//# sourceMappingURL=human-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-mode.d.ts","sourceRoot":"","sources":["../../src/utils/human-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAEpE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function usesHumanLikeMouse(session) {
|
|
2
|
+
return session.stealthEnabled && session.stealthConfig?.humanLikeMouse === true;
|
|
3
|
+
}
|
|
4
|
+
export function usesHumanLikeTyping(session) {
|
|
5
|
+
return session.stealthEnabled && session.stealthConfig?.humanLikeTyping === true;
|
|
6
|
+
}
|
|
7
|
+
export function humanTypingDelay() {
|
|
8
|
+
return Math.floor(Math.random() * 101) + 50;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=human-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-mode.js","sourceRoot":"","sources":["../../src/utils/human-mode.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,OAAO,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,cAAc,KAAK,IAAI,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,OAAO,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,eAAe,KAAK,IAAI,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -7,5 +7,6 @@ export interface AccessibilityNode {
|
|
|
7
7
|
children?: AccessibilityNode[];
|
|
8
8
|
}
|
|
9
9
|
export declare function getAccessibilityTree(page: Page): Promise<AccessibilityNode | null>;
|
|
10
|
+
export declare function parseAriaSnapshot(snapshot: string): AccessibilityNode;
|
|
10
11
|
export declare function elementToInfo(handle: ElementHandle): Promise<ElementInfo>;
|
|
11
12
|
//# sourceMappingURL=page-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/page-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"page-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/page-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAYvD,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAIxF;AAmDD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAiCrE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAsC/E"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
function readableTextInPage(selector) {
|
|
2
|
+
const scope = selector ? document.querySelector(selector) : document.body;
|
|
3
|
+
if (!scope)
|
|
4
|
+
return '';
|
|
5
|
+
const text = scope instanceof HTMLElement ? scope.innerText : (scope.textContent ?? '');
|
|
6
|
+
return text
|
|
7
|
+
.replace(/[ \t]+\n/g, '\n')
|
|
8
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
9
|
+
.trim();
|
|
10
|
+
}
|
|
1
11
|
export async function getReadableText(page, selector) {
|
|
2
|
-
return page.evaluate(
|
|
3
|
-
const scope = sel ? document.querySelector(sel) : document.body;
|
|
4
|
-
if (!scope)
|
|
5
|
-
return '';
|
|
6
|
-
const clone = scope.cloneNode(true);
|
|
7
|
-
clone
|
|
8
|
-
.querySelectorAll('script, style, noscript, svg, link[rel="stylesheet"]')
|
|
9
|
-
.forEach((el) => el.remove());
|
|
10
|
-
return clone.innerText?.trim() ?? clone.textContent?.trim() ?? '';
|
|
11
|
-
}, selector);
|
|
12
|
+
return page.evaluate(readableTextInPage, selector);
|
|
12
13
|
}
|
|
13
14
|
export async function getAccessibilityTree(page) {
|
|
14
15
|
const raw = await page.locator(':root').ariaSnapshot();
|
|
@@ -16,21 +17,67 @@ export async function getAccessibilityTree(page) {
|
|
|
16
17
|
return null;
|
|
17
18
|
return parseAriaSnapshot(raw);
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const ARIA_KEY_PATTERN = /^([A-Za-z][\w-]*)(?:\s+"((?:[^"\\]|\\.)*)")?(?:\s+\[[^\]]*\])*$/;
|
|
21
|
+
function unescapeDoubleQuoted(value) {
|
|
22
|
+
return value.replace(/\\(.)/g, '$1');
|
|
23
|
+
}
|
|
24
|
+
function unquoteYamlScalar(value) {
|
|
25
|
+
if (value.length >= 2 && value.startsWith('"') && value.endsWith('"')) {
|
|
26
|
+
return unescapeDoubleQuoted(value.slice(1, -1));
|
|
27
|
+
}
|
|
28
|
+
if (value.length >= 2 && value.startsWith("'") && value.endsWith("'")) {
|
|
29
|
+
return value.slice(1, -1).replace(/''/g, "'");
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function splitAriaEntry(entry) {
|
|
34
|
+
if (entry.startsWith("'")) {
|
|
35
|
+
let i = 1;
|
|
36
|
+
while (i < entry.length) {
|
|
37
|
+
if (entry[i] === "'") {
|
|
38
|
+
if (entry[i + 1] === "'") {
|
|
39
|
+
i += 2;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
i++;
|
|
45
|
+
}
|
|
46
|
+
const key = entry.slice(1, i).replace(/''/g, "'");
|
|
47
|
+
const rest = entry.slice(i + 1).trim();
|
|
48
|
+
return { key, value: rest.startsWith(':') ? rest.slice(1).trim() : '' };
|
|
49
|
+
}
|
|
50
|
+
let inQuotes = false;
|
|
51
|
+
for (let i = 0; i < entry.length; i++) {
|
|
52
|
+
const ch = entry[i];
|
|
53
|
+
if (ch === '\\' && inQuotes) {
|
|
54
|
+
i++;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (ch === '"')
|
|
58
|
+
inQuotes = !inQuotes;
|
|
59
|
+
if (ch === ':' && !inQuotes && (i === entry.length - 1 || entry[i + 1] === ' ')) {
|
|
60
|
+
return { key: entry.slice(0, i).trim(), value: entry.slice(i + 1).trim() };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return { key: entry.trim(), value: '' };
|
|
64
|
+
}
|
|
65
|
+
export function parseAriaSnapshot(snapshot) {
|
|
21
66
|
const root = { role: 'WebArea', name: '', children: [] };
|
|
22
67
|
const stack = [{ node: root, indent: -1 }];
|
|
23
|
-
for (const line of
|
|
24
|
-
|
|
68
|
+
for (const line of snapshot.split('\n')) {
|
|
69
|
+
const trimmed = line.trim();
|
|
70
|
+
if (!trimmed.startsWith('- '))
|
|
71
|
+
continue;
|
|
72
|
+
const indent = line.search(/\S/);
|
|
73
|
+
const { key, value } = splitAriaEntry(trimmed.slice(2).trim());
|
|
74
|
+
if (key.startsWith('/'))
|
|
25
75
|
continue;
|
|
26
|
-
const
|
|
27
|
-
const indent = stripped.search(/\S/);
|
|
28
|
-
const content = stripped.trim().replace(/^- /, '');
|
|
29
|
-
const match = /^(\w[\w\s]*?)(?:\s+"(.*)")?(?:\s+\[.*])?:?$/.exec(content);
|
|
76
|
+
const match = ARIA_KEY_PATTERN.exec(key);
|
|
30
77
|
if (!match)
|
|
31
78
|
continue;
|
|
32
|
-
const role = match[1]
|
|
33
|
-
const name = match[2]
|
|
79
|
+
const role = match[1];
|
|
80
|
+
const name = match[2] !== undefined ? unescapeDoubleQuoted(match[2]) : unquoteYamlScalar(value);
|
|
34
81
|
const node = { role, name };
|
|
35
82
|
while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
|
|
36
83
|
stack.pop();
|
|
@@ -54,11 +101,24 @@ export async function elementToInfo(handle) {
|
|
|
54
101
|
for (const attr of Array.from(el.attributes)) {
|
|
55
102
|
attrs[attr.name] = attr.value;
|
|
56
103
|
}
|
|
104
|
+
const hasSize = rect.width > 0 && rect.height > 0;
|
|
105
|
+
let visible = hasSize;
|
|
106
|
+
if (hasSize) {
|
|
107
|
+
const win = el.ownerDocument?.defaultView ?? window;
|
|
108
|
+
let node = el;
|
|
109
|
+
while (visible && node) {
|
|
110
|
+
const style = win.getComputedStyle(node);
|
|
111
|
+
if (style.visibility === 'hidden' || style.display === 'none' || style.opacity === '0') {
|
|
112
|
+
visible = false;
|
|
113
|
+
}
|
|
114
|
+
node = node.parentElement;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
57
117
|
return {
|
|
58
118
|
tag: el.tagName.toLowerCase(),
|
|
59
119
|
text: htmlEl.textContent?.trim().slice(0, 200) ?? '',
|
|
60
120
|
attributes: attrs,
|
|
61
|
-
boundingBox:
|
|
121
|
+
boundingBox: hasSize
|
|
62
122
|
? {
|
|
63
123
|
x: rect.x,
|
|
64
124
|
y: rect.y,
|
|
@@ -66,7 +126,7 @@ export async function elementToInfo(handle) {
|
|
|
66
126
|
height: rect.height,
|
|
67
127
|
}
|
|
68
128
|
: undefined,
|
|
69
|
-
visible
|
|
129
|
+
visible,
|
|
70
130
|
};
|
|
71
131
|
});
|
|
72
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-helpers.js","sourceRoot":"","sources":["../../src/utils/page-helpers.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,QAAiB;IACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"page-helpers.js","sourceRoot":"","sources":["../../src/utils/page-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/schemas.d.ts
CHANGED
|
@@ -78,10 +78,10 @@ export declare const hoverSchema: z.ZodObject<{
|
|
|
78
78
|
export type HoverInput = z.infer<typeof hoverSchema>;
|
|
79
79
|
export declare const scrollSchema: z.ZodObject<{
|
|
80
80
|
direction: z.ZodEnum<{
|
|
81
|
-
up: "up";
|
|
82
|
-
down: "down";
|
|
83
81
|
left: "left";
|
|
84
82
|
right: "right";
|
|
83
|
+
up: "up";
|
|
84
|
+
down: "down";
|
|
85
85
|
}>;
|
|
86
86
|
amount: z.ZodOptional<z.ZodNumber>;
|
|
87
87
|
selector: z.ZodOptional<z.ZodString>;
|
|
@@ -178,6 +178,10 @@ export declare const interceptRequestSchema: z.ZodObject<{
|
|
|
178
178
|
}, z.core.$strip>>;
|
|
179
179
|
}, z.core.$strip>;
|
|
180
180
|
export type InterceptRequestInput = z.infer<typeof interceptRequestSchema>;
|
|
181
|
+
export declare const removeInterceptorSchema: z.ZodObject<{
|
|
182
|
+
interceptorId: z.ZodOptional<z.ZodString>;
|
|
183
|
+
}, z.core.$strip>;
|
|
184
|
+
export type RemoveInterceptorInput = z.infer<typeof removeInterceptorSchema>;
|
|
181
185
|
export declare const waitForResponseSchema: z.ZodObject<{
|
|
182
186
|
urlPattern: z.ZodString;
|
|
183
187
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
@@ -204,6 +208,7 @@ export type CaptureHarInput = z.infer<typeof captureHarSchema>;
|
|
|
204
208
|
export declare const getApiCallsSchema: z.ZodObject<{
|
|
205
209
|
urlPattern: z.ZodOptional<z.ZodString>;
|
|
206
210
|
method: z.ZodOptional<z.ZodString>;
|
|
211
|
+
clear: z.ZodOptional<z.ZodBoolean>;
|
|
207
212
|
}, z.core.$strip>;
|
|
208
213
|
export type GetApiCallsInput = z.infer<typeof getApiCallsSchema>;
|
|
209
214
|
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
|