@cogitator-ai/browser 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/README.md +329 -0
- package/dist/__tests__/browser-tools.test.d.ts +2 -0
- package/dist/__tests__/browser-tools.test.d.ts.map +1 -0
- package/dist/__tests__/browser-tools.test.js +120 -0
- package/dist/__tests__/browser-tools.test.js.map +1 -0
- package/dist/__tests__/extraction.test.d.ts +2 -0
- package/dist/__tests__/extraction.test.d.ts.map +1 -0
- package/dist/__tests__/extraction.test.js +267 -0
- package/dist/__tests__/extraction.test.js.map +1 -0
- package/dist/__tests__/interaction.test.d.ts +2 -0
- package/dist/__tests__/interaction.test.d.ts.map +1 -0
- package/dist/__tests__/interaction.test.js +376 -0
- package/dist/__tests__/interaction.test.js.map +1 -0
- package/dist/__tests__/navigation.test.d.ts +2 -0
- package/dist/__tests__/navigation.test.d.ts.map +1 -0
- package/dist/__tests__/navigation.test.js +235 -0
- package/dist/__tests__/navigation.test.js.map +1 -0
- package/dist/__tests__/network.test.d.ts +2 -0
- package/dist/__tests__/network.test.d.ts.map +1 -0
- package/dist/__tests__/network.test.js +508 -0
- package/dist/__tests__/network.test.js.map +1 -0
- package/dist/__tests__/page-helpers.test.d.ts +2 -0
- package/dist/__tests__/page-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/page-helpers.test.js +321 -0
- package/dist/__tests__/page-helpers.test.js.map +1 -0
- package/dist/__tests__/schemas.test.d.ts +2 -0
- package/dist/__tests__/schemas.test.d.ts.map +1 -0
- package/dist/__tests__/schemas.test.js +518 -0
- package/dist/__tests__/schemas.test.js.map +1 -0
- package/dist/__tests__/selectors.test.d.ts +2 -0
- package/dist/__tests__/selectors.test.d.ts.map +1 -0
- package/dist/__tests__/selectors.test.js +157 -0
- package/dist/__tests__/selectors.test.js.map +1 -0
- package/dist/__tests__/session.test.d.ts +2 -0
- package/dist/__tests__/session.test.d.ts.map +1 -0
- package/dist/__tests__/session.test.js +325 -0
- package/dist/__tests__/session.test.js.map +1 -0
- package/dist/__tests__/stealth.test.d.ts +2 -0
- package/dist/__tests__/stealth.test.d.ts.map +1 -0
- package/dist/__tests__/stealth.test.js +353 -0
- package/dist/__tests__/stealth.test.js.map +1 -0
- package/dist/__tests__/vision.test.d.ts +2 -0
- package/dist/__tests__/vision.test.d.ts.map +1 -0
- package/dist/__tests__/vision.test.js +226 -0
- package/dist/__tests__/vision.test.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/session.d.ts +29 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +190 -0
- package/dist/session.js.map +1 -0
- package/dist/stealth/evasions.d.ts +2 -0
- package/dist/stealth/evasions.d.ts.map +1 -0
- package/dist/stealth/evasions.js +83 -0
- package/dist/stealth/evasions.js.map +1 -0
- package/dist/stealth/human-like.d.ts +5 -0
- package/dist/stealth/human-like.d.ts.map +1 -0
- package/dist/stealth/human-like.js +52 -0
- package/dist/stealth/human-like.js.map +1 -0
- package/dist/stealth/index.d.ts +8 -0
- package/dist/stealth/index.d.ts.map +1 -0
- package/dist/stealth/index.js +24 -0
- package/dist/stealth/index.js.map +1 -0
- package/dist/stealth/user-agents.d.ts +3 -0
- package/dist/stealth/user-agents.d.ts.map +1 -0
- package/dist/stealth/user-agents.js +55 -0
- package/dist/stealth/user-agents.js.map +1 -0
- package/dist/tools/extraction.d.ts +96 -0
- package/dist/tools/extraction.d.ts.map +1 -0
- package/dist/tools/extraction.js +196 -0
- package/dist/tools/extraction.js.map +1 -0
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +40 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/interaction.d.ts +128 -0
- package/dist/tools/interaction.d.ts.map +1 -0
- package/dist/tools/interaction.js +229 -0
- package/dist/tools/interaction.js.map +1 -0
- package/dist/tools/navigation.d.ts +63 -0
- package/dist/tools/navigation.d.ts.map +1 -0
- package/dist/tools/navigation.js +140 -0
- package/dist/tools/navigation.js.map +1 -0
- package/dist/tools/network.d.ts +122 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +223 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/vision.d.ts +83 -0
- package/dist/tools/vision.d.ts.map +1 -0
- package/dist/tools/vision.js +134 -0
- package/dist/tools/vision.js.map +1 -0
- package/dist/utils/page-helpers.d.ts +11 -0
- package/dist/utils/page-helpers.d.ts.map +1 -0
- package/dist/utils/page-helpers.js +73 -0
- package/dist/utils/page-helpers.js.map +1 -0
- package/dist/utils/schemas.d.ts +209 -0
- package/dist/utils/schemas.d.ts.map +1 -0
- package/dist/utils/schemas.js +156 -0
- package/dist/utils/schemas.js.map +1 -0
- package/dist/utils/selectors.d.ts +4 -0
- package/dist/utils/selectors.d.ts.map +1 -0
- package/dist/utils/selectors.js +39 -0
- package/dist/utils/selectors.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { tool } from '@cogitator-ai/core';
|
|
2
|
+
import { screenshotSchema, screenshotElementSchema, findByDescriptionSchema, clickByDescriptionSchema, } from '../utils/schemas.js';
|
|
3
|
+
import { getAccessibilityTree } from '../utils/page-helpers.js';
|
|
4
|
+
export function createScreenshotTool(session) {
|
|
5
|
+
return tool({
|
|
6
|
+
name: 'browser_screenshot',
|
|
7
|
+
description: 'Take a screenshot of the current page or a specific element. Returns base64-encoded image data.',
|
|
8
|
+
category: 'web',
|
|
9
|
+
tags: ['browser', 'vision'],
|
|
10
|
+
parameters: screenshotSchema,
|
|
11
|
+
execute: async (params) => {
|
|
12
|
+
const page = session.page;
|
|
13
|
+
const options = { type: 'png' };
|
|
14
|
+
if (params.fullPage)
|
|
15
|
+
options.fullPage = true;
|
|
16
|
+
if (params.quality != null) {
|
|
17
|
+
options.type = 'jpeg';
|
|
18
|
+
options.quality = params.quality;
|
|
19
|
+
}
|
|
20
|
+
let buffer;
|
|
21
|
+
if (params.selector) {
|
|
22
|
+
buffer = await page.locator(params.selector).screenshot(options);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
buffer = await page.screenshot(options);
|
|
26
|
+
}
|
|
27
|
+
const viewport = page.viewportSize();
|
|
28
|
+
return {
|
|
29
|
+
image: buffer.toString('base64'),
|
|
30
|
+
width: viewport?.width ?? 0,
|
|
31
|
+
height: viewport?.height ?? 0,
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export function createScreenshotElementTool(session) {
|
|
37
|
+
return tool({
|
|
38
|
+
name: 'browser_screenshot_element',
|
|
39
|
+
description: 'Screenshot a specific element and return its base64 image with bounding box coordinates.',
|
|
40
|
+
category: 'web',
|
|
41
|
+
tags: ['browser', 'vision'],
|
|
42
|
+
parameters: screenshotElementSchema,
|
|
43
|
+
execute: async (params) => {
|
|
44
|
+
const page = session.page;
|
|
45
|
+
const locator = page.locator(params.selector);
|
|
46
|
+
const buffer = await locator.screenshot({ type: 'png' });
|
|
47
|
+
const box = await locator.boundingBox();
|
|
48
|
+
return {
|
|
49
|
+
image: buffer.toString('base64'),
|
|
50
|
+
boundingBox: box ? { x: box.x, y: box.y, width: box.width, height: box.height } : null,
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function createFindByDescriptionTool(session) {
|
|
56
|
+
return tool({
|
|
57
|
+
name: 'browser_find_by_description',
|
|
58
|
+
description: 'Find elements matching a natural language description using the accessibility tree.',
|
|
59
|
+
category: 'web',
|
|
60
|
+
tags: ['browser', 'vision'],
|
|
61
|
+
parameters: findByDescriptionSchema,
|
|
62
|
+
execute: async (params) => {
|
|
63
|
+
const page = session.page;
|
|
64
|
+
const snapshot = await getAccessibilityTree(page);
|
|
65
|
+
if (!snapshot)
|
|
66
|
+
return { elements: [] };
|
|
67
|
+
const description = params.description.toLowerCase();
|
|
68
|
+
const matches = [];
|
|
69
|
+
function walk(node) {
|
|
70
|
+
const name = (node.name ?? '').toLowerCase();
|
|
71
|
+
const role = (node.role ?? '').toLowerCase();
|
|
72
|
+
if (name.length >= 2) {
|
|
73
|
+
if (name.includes(description) ||
|
|
74
|
+
(name.length >= 3 && description.toLowerCase().includes(name.toLowerCase())) ||
|
|
75
|
+
role.includes(description)) {
|
|
76
|
+
matches.push({
|
|
77
|
+
role: node.role ?? '',
|
|
78
|
+
name: node.name ?? '',
|
|
79
|
+
description: `${node.role}: "${node.name}"`,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (node.children) {
|
|
84
|
+
for (const child of node.children)
|
|
85
|
+
walk(child);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
walk(snapshot);
|
|
89
|
+
return { elements: matches };
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export function createClickByDescriptionTool(session) {
|
|
94
|
+
return tool({
|
|
95
|
+
name: 'browser_click_by_description',
|
|
96
|
+
description: 'Find an element by natural language description and click it. Tries role, text, label, and placeholder strategies.',
|
|
97
|
+
category: 'web',
|
|
98
|
+
tags: ['browser', 'vision'],
|
|
99
|
+
parameters: clickByDescriptionSchema,
|
|
100
|
+
execute: async (params) => {
|
|
101
|
+
const page = session.page;
|
|
102
|
+
const { description } = params;
|
|
103
|
+
const strategies = [
|
|
104
|
+
() => page.getByRole('button', { name: description }),
|
|
105
|
+
() => page.getByRole('link', { name: description }),
|
|
106
|
+
() => page.getByText(description, { exact: false }),
|
|
107
|
+
() => page.getByLabel(description),
|
|
108
|
+
() => page.getByPlaceholder(description),
|
|
109
|
+
];
|
|
110
|
+
for (const getLocator of strategies) {
|
|
111
|
+
const locator = getLocator();
|
|
112
|
+
const count = await locator.count();
|
|
113
|
+
if (count > 0) {
|
|
114
|
+
const idx = params.index ?? 0;
|
|
115
|
+
await locator.nth(idx).click();
|
|
116
|
+
return {
|
|
117
|
+
clicked: true,
|
|
118
|
+
element: { description: params.description, index: idx },
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return { clicked: false, element: null };
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
export function createVisionTools(session) {
|
|
127
|
+
return [
|
|
128
|
+
createScreenshotTool(session),
|
|
129
|
+
createScreenshotElementTool(session),
|
|
130
|
+
createFindByDescriptionTool(session),
|
|
131
|
+
createClickByDescriptionTool(session),
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=vision.js.map
|
|
@@ -0,0 +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;AAErF,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IAC1D,OAAO,IAAI,CAAC;QACV,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,iGAAiG;QACnG,QAAQ,EAAE,KAAc;QACxB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC3B,UAAU,EAAE,gBAAgB;QAC5B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,OAAO,GAA4B,EAAE,IAAI,EAAE,KAAc,EAAE,CAAC;YAClE,IAAI,MAAM,CAAC,QAAQ;gBAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC7C,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;gBACtB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACnC,CAAC;YAED,IAAI,MAAc,CAAC;YACnB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAChC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;gBAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;aAC9B,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAuB;IACjE,OAAO,IAAI,CAAC;QACV,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACT,0FAA0F;QAC5F,QAAQ,EAAE,KAAc;QACxB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC3B,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,KAAK,EAAE,MAA8B,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAChC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;aACvF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAuB;IACjE,OAAO,IAAI,CAAC;QACV,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,qFAAqF;QACvF,QAAQ,EAAE,KAAc;QACxB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC3B,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,KAAK,EAAE,MAA8B,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAEvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,OAAO,GAA+D,EAAE,CAAC;YAE/E,SAAS,IAAI,CAAC,IAAuB;gBACnC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACrB,IACE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC1B,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;wBAC5E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC1B,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;4BACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;4BACrB,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,GAAG;yBAC5C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEf,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAuB;IAClE,OAAO,IAAI,CAAC;QACV,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,oHAAoH;QACtH,QAAQ,EAAE,KAAc;QACxB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC3B,UAAU,EAAE,wBAAwB;QACpC,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;YAE/B,MAAM,UAAU,GAAG;gBACjB,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACrD,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACnD,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBACnD,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAClC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;aACzC,CAAC;YAEF,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC/B,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;qBACzD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAuB;IACvD,OAAO;QACL,oBAAoB,CAAC,OAAO,CAAC;QAC7B,2BAA2B,CAAC,OAAO,CAAC;QACpC,2BAA2B,CAAC,OAAO,CAAC;QACpC,4BAA4B,CAAC,OAAO,CAAC;KACtC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Page, ElementHandle } from 'playwright';
|
|
2
|
+
import type { ElementInfo } from '@cogitator-ai/types';
|
|
3
|
+
export declare function getReadableText(page: Page, selector?: string): Promise<string>;
|
|
4
|
+
export interface AccessibilityNode {
|
|
5
|
+
role: string;
|
|
6
|
+
name: string;
|
|
7
|
+
children?: AccessibilityNode[];
|
|
8
|
+
}
|
|
9
|
+
export declare function getAccessibilityTree(page: Page): Promise<AccessibilityNode | null>;
|
|
10
|
+
export declare function elementToInfo(handle: ElementHandle): Promise<ElementInfo>;
|
|
11
|
+
//# sourceMappingURL=page-helpers.d.ts.map
|
|
@@ -0,0 +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;AAEvD,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUpF;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;AAsCD,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAwB/E"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export async function getReadableText(page, selector) {
|
|
2
|
+
return page.evaluate((sel) => {
|
|
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
|
+
}
|
|
13
|
+
export async function getAccessibilityTree(page) {
|
|
14
|
+
const raw = await page.locator(':root').ariaSnapshot();
|
|
15
|
+
if (!raw)
|
|
16
|
+
return null;
|
|
17
|
+
return parseAriaSnapshot(raw);
|
|
18
|
+
}
|
|
19
|
+
function parseAriaSnapshot(snapshot) {
|
|
20
|
+
const lines = snapshot.split('\n');
|
|
21
|
+
const root = { role: 'WebArea', name: '', children: [] };
|
|
22
|
+
const stack = [{ node: root, indent: -1 }];
|
|
23
|
+
for (const line of lines) {
|
|
24
|
+
if (!line.trim() || line.trim().startsWith('/'))
|
|
25
|
+
continue;
|
|
26
|
+
const stripped = line.replace(/^- /, '');
|
|
27
|
+
const indent = stripped.search(/\S/);
|
|
28
|
+
const content = stripped.trim().replace(/^- /, '');
|
|
29
|
+
const match = /^(\w[\w\s]*?)(?:\s+"(.*)")?(?:\s+\[.*])?:?$/.exec(content);
|
|
30
|
+
if (!match)
|
|
31
|
+
continue;
|
|
32
|
+
const role = match[1].trim();
|
|
33
|
+
const name = match[2] ?? '';
|
|
34
|
+
const node = { role, name };
|
|
35
|
+
while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
|
|
36
|
+
stack.pop();
|
|
37
|
+
}
|
|
38
|
+
const parent = stack[stack.length - 1].node;
|
|
39
|
+
if (!parent.children)
|
|
40
|
+
parent.children = [];
|
|
41
|
+
parent.children.push(node);
|
|
42
|
+
stack.push({ node, indent });
|
|
43
|
+
}
|
|
44
|
+
if (root.children?.length === 1 && root.children[0].role === 'document') {
|
|
45
|
+
return root.children[0];
|
|
46
|
+
}
|
|
47
|
+
return root;
|
|
48
|
+
}
|
|
49
|
+
export async function elementToInfo(handle) {
|
|
50
|
+
return handle.evaluate((el) => {
|
|
51
|
+
const htmlEl = el;
|
|
52
|
+
const rect = el.getBoundingClientRect();
|
|
53
|
+
const attrs = {};
|
|
54
|
+
for (const attr of Array.from(el.attributes)) {
|
|
55
|
+
attrs[attr.name] = attr.value;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
tag: el.tagName.toLowerCase(),
|
|
59
|
+
text: htmlEl.textContent?.trim().slice(0, 200) ?? '',
|
|
60
|
+
attributes: attrs,
|
|
61
|
+
boundingBox: rect.width > 0 && rect.height > 0
|
|
62
|
+
? {
|
|
63
|
+
x: rect.x,
|
|
64
|
+
y: rect.y,
|
|
65
|
+
width: rect.width,
|
|
66
|
+
height: rect.height,
|
|
67
|
+
}
|
|
68
|
+
: undefined,
|
|
69
|
+
visible: rect.width > 0 && rect.height > 0,
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=page-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-helpers.js","sourceRoot":"","sources":["../../src/utils/page-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const navigateSchema: z.ZodObject<{
|
|
3
|
+
url: z.ZodString;
|
|
4
|
+
waitUntil: z.ZodOptional<z.ZodEnum<{
|
|
5
|
+
load: "load";
|
|
6
|
+
domcontentloaded: "domcontentloaded";
|
|
7
|
+
networkidle: "networkidle";
|
|
8
|
+
commit: "commit";
|
|
9
|
+
}>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type NavigateInput = z.infer<typeof navigateSchema>;
|
|
12
|
+
export declare const goBackSchema: z.ZodObject<{}, z.core.$strip>;
|
|
13
|
+
export type GoBackInput = z.infer<typeof goBackSchema>;
|
|
14
|
+
export declare const goForwardSchema: z.ZodObject<{}, z.core.$strip>;
|
|
15
|
+
export type GoForwardInput = z.infer<typeof goForwardSchema>;
|
|
16
|
+
export declare const reloadSchema: z.ZodObject<{
|
|
17
|
+
waitUntil: z.ZodOptional<z.ZodEnum<{
|
|
18
|
+
load: "load";
|
|
19
|
+
domcontentloaded: "domcontentloaded";
|
|
20
|
+
networkidle: "networkidle";
|
|
21
|
+
commit: "commit";
|
|
22
|
+
}>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type ReloadInput = z.infer<typeof reloadSchema>;
|
|
25
|
+
export declare const waitForNavigationSchema: z.ZodObject<{
|
|
26
|
+
url: z.ZodOptional<z.ZodString>;
|
|
27
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export type WaitForNavigationInput = z.infer<typeof waitForNavigationSchema>;
|
|
30
|
+
export declare const getCurrentUrlSchema: z.ZodObject<{}, z.core.$strip>;
|
|
31
|
+
export type GetCurrentUrlInput = z.infer<typeof getCurrentUrlSchema>;
|
|
32
|
+
export declare const waitForSelectorSchema: z.ZodObject<{
|
|
33
|
+
selector: z.ZodString;
|
|
34
|
+
state: z.ZodOptional<z.ZodEnum<{
|
|
35
|
+
visible: "visible";
|
|
36
|
+
hidden: "hidden";
|
|
37
|
+
attached: "attached";
|
|
38
|
+
detached: "detached";
|
|
39
|
+
}>>;
|
|
40
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type WaitForSelectorInput = z.infer<typeof waitForSelectorSchema>;
|
|
43
|
+
export declare const clickSchema: z.ZodObject<{
|
|
44
|
+
selector: z.ZodString;
|
|
45
|
+
button: z.ZodOptional<z.ZodEnum<{
|
|
46
|
+
left: "left";
|
|
47
|
+
right: "right";
|
|
48
|
+
middle: "middle";
|
|
49
|
+
}>>;
|
|
50
|
+
clickCount: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
position: z.ZodOptional<z.ZodObject<{
|
|
52
|
+
x: z.ZodNumber;
|
|
53
|
+
y: z.ZodNumber;
|
|
54
|
+
}, z.core.$strip>>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
export type ClickInput = z.infer<typeof clickSchema>;
|
|
57
|
+
export declare const typeSchema: z.ZodObject<{
|
|
58
|
+
selector: z.ZodString;
|
|
59
|
+
text: z.ZodString;
|
|
60
|
+
delay: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
clearFirst: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
export type TypeInput = z.infer<typeof typeSchema>;
|
|
64
|
+
export declare const selectOptionSchema: z.ZodObject<{
|
|
65
|
+
selector: z.ZodString;
|
|
66
|
+
value: z.ZodOptional<z.ZodString>;
|
|
67
|
+
label: z.ZodOptional<z.ZodString>;
|
|
68
|
+
index: z.ZodOptional<z.ZodNumber>;
|
|
69
|
+
}, z.core.$strip>;
|
|
70
|
+
export type SelectOptionInput = z.infer<typeof selectOptionSchema>;
|
|
71
|
+
export declare const hoverSchema: z.ZodObject<{
|
|
72
|
+
selector: z.ZodString;
|
|
73
|
+
position: z.ZodOptional<z.ZodObject<{
|
|
74
|
+
x: z.ZodNumber;
|
|
75
|
+
y: z.ZodNumber;
|
|
76
|
+
}, z.core.$strip>>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export type HoverInput = z.infer<typeof hoverSchema>;
|
|
79
|
+
export declare const scrollSchema: z.ZodObject<{
|
|
80
|
+
direction: z.ZodEnum<{
|
|
81
|
+
up: "up";
|
|
82
|
+
down: "down";
|
|
83
|
+
left: "left";
|
|
84
|
+
right: "right";
|
|
85
|
+
}>;
|
|
86
|
+
amount: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
88
|
+
}, z.core.$strip>;
|
|
89
|
+
export type ScrollInput = z.infer<typeof scrollSchema>;
|
|
90
|
+
export declare const pressKeySchema: z.ZodObject<{
|
|
91
|
+
key: z.ZodString;
|
|
92
|
+
modifiers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
93
|
+
Shift: "Shift";
|
|
94
|
+
Control: "Control";
|
|
95
|
+
Alt: "Alt";
|
|
96
|
+
Meta: "Meta";
|
|
97
|
+
}>>>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
export type PressKeyInput = z.infer<typeof pressKeySchema>;
|
|
100
|
+
export declare const dragAndDropSchema: z.ZodObject<{
|
|
101
|
+
source: z.ZodString;
|
|
102
|
+
target: z.ZodString;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
export type DragAndDropInput = z.infer<typeof dragAndDropSchema>;
|
|
105
|
+
export declare const fillFormSchema: z.ZodObject<{
|
|
106
|
+
fields: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
|
|
107
|
+
}, z.core.$strip>;
|
|
108
|
+
export type FillFormInput = z.infer<typeof fillFormSchema>;
|
|
109
|
+
export declare const uploadFileSchema: z.ZodObject<{
|
|
110
|
+
selector: z.ZodString;
|
|
111
|
+
filePaths: z.ZodArray<z.ZodString>;
|
|
112
|
+
}, z.core.$strip>;
|
|
113
|
+
export type UploadFileInput = z.infer<typeof uploadFileSchema>;
|
|
114
|
+
export declare const getTextSchema: z.ZodObject<{
|
|
115
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
116
|
+
}, z.core.$strip>;
|
|
117
|
+
export type GetTextInput = z.infer<typeof getTextSchema>;
|
|
118
|
+
export declare const getHtmlSchema: z.ZodObject<{
|
|
119
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
120
|
+
outer: z.ZodOptional<z.ZodBoolean>;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
export type GetHtmlInput = z.infer<typeof getHtmlSchema>;
|
|
123
|
+
export declare const getAttributeSchema: z.ZodObject<{
|
|
124
|
+
selector: z.ZodString;
|
|
125
|
+
attribute: z.ZodString;
|
|
126
|
+
}, z.core.$strip>;
|
|
127
|
+
export type GetAttributeInput = z.infer<typeof getAttributeSchema>;
|
|
128
|
+
export declare const getLinksSchema: z.ZodObject<{
|
|
129
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
130
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
export type GetLinksInput = z.infer<typeof getLinksSchema>;
|
|
133
|
+
export declare const querySelectorAllSchema: z.ZodObject<{
|
|
134
|
+
selector: z.ZodString;
|
|
135
|
+
attributes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
136
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
}, z.core.$strip>;
|
|
138
|
+
export type QuerySelectorAllInput = z.infer<typeof querySelectorAllSchema>;
|
|
139
|
+
export declare const extractTableSchema: z.ZodObject<{
|
|
140
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
export type ExtractTableInput = z.infer<typeof extractTableSchema>;
|
|
143
|
+
export declare const extractStructuredSchema: z.ZodObject<{
|
|
144
|
+
instruction: z.ZodString;
|
|
145
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
146
|
+
}, z.core.$strip>;
|
|
147
|
+
export type ExtractStructuredInput = z.infer<typeof extractStructuredSchema>;
|
|
148
|
+
export declare const screenshotSchema: z.ZodObject<{
|
|
149
|
+
fullPage: z.ZodOptional<z.ZodBoolean>;
|
|
150
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
151
|
+
quality: z.ZodOptional<z.ZodNumber>;
|
|
152
|
+
}, z.core.$strip>;
|
|
153
|
+
export type ScreenshotInput = z.infer<typeof screenshotSchema>;
|
|
154
|
+
export declare const screenshotElementSchema: z.ZodObject<{
|
|
155
|
+
selector: z.ZodString;
|
|
156
|
+
}, z.core.$strip>;
|
|
157
|
+
export type ScreenshotElementInput = z.infer<typeof screenshotElementSchema>;
|
|
158
|
+
export declare const findByDescriptionSchema: z.ZodObject<{
|
|
159
|
+
description: z.ZodString;
|
|
160
|
+
}, z.core.$strip>;
|
|
161
|
+
export type FindByDescriptionInput = z.infer<typeof findByDescriptionSchema>;
|
|
162
|
+
export declare const clickByDescriptionSchema: z.ZodObject<{
|
|
163
|
+
description: z.ZodString;
|
|
164
|
+
index: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
}, z.core.$strip>;
|
|
166
|
+
export type ClickByDescriptionInput = z.infer<typeof clickByDescriptionSchema>;
|
|
167
|
+
export declare const interceptRequestSchema: z.ZodObject<{
|
|
168
|
+
urlPattern: z.ZodString;
|
|
169
|
+
action: z.ZodEnum<{
|
|
170
|
+
block: "block";
|
|
171
|
+
modify: "modify";
|
|
172
|
+
continue: "continue";
|
|
173
|
+
}>;
|
|
174
|
+
modify: z.ZodOptional<z.ZodObject<{
|
|
175
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
176
|
+
body: z.ZodOptional<z.ZodString>;
|
|
177
|
+
url: z.ZodOptional<z.ZodString>;
|
|
178
|
+
}, z.core.$strip>>;
|
|
179
|
+
}, z.core.$strip>;
|
|
180
|
+
export type InterceptRequestInput = z.infer<typeof interceptRequestSchema>;
|
|
181
|
+
export declare const waitForResponseSchema: z.ZodObject<{
|
|
182
|
+
urlPattern: z.ZodString;
|
|
183
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
184
|
+
}, z.core.$strip>;
|
|
185
|
+
export type WaitForResponseInput = z.infer<typeof waitForResponseSchema>;
|
|
186
|
+
export declare const blockResourcesSchema: z.ZodObject<{
|
|
187
|
+
types: z.ZodArray<z.ZodEnum<{
|
|
188
|
+
image: "image";
|
|
189
|
+
stylesheet: "stylesheet";
|
|
190
|
+
font: "font";
|
|
191
|
+
media: "media";
|
|
192
|
+
script: "script";
|
|
193
|
+
}>>;
|
|
194
|
+
}, z.core.$strip>;
|
|
195
|
+
export type BlockResourcesInput = z.infer<typeof blockResourcesSchema>;
|
|
196
|
+
export declare const captureHarSchema: z.ZodObject<{
|
|
197
|
+
action: z.ZodEnum<{
|
|
198
|
+
start: "start";
|
|
199
|
+
stop: "stop";
|
|
200
|
+
}>;
|
|
201
|
+
path: z.ZodOptional<z.ZodString>;
|
|
202
|
+
}, z.core.$strip>;
|
|
203
|
+
export type CaptureHarInput = z.infer<typeof captureHarSchema>;
|
|
204
|
+
export declare const getApiCallsSchema: z.ZodObject<{
|
|
205
|
+
urlPattern: z.ZodOptional<z.ZodString>;
|
|
206
|
+
method: z.ZodOptional<z.ZodString>;
|
|
207
|
+
}, z.core.$strip>;
|
|
208
|
+
export type GetApiCallsInput = z.infer<typeof getApiCallsSchema>;
|
|
209
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const waitUntilEnum = z.enum(['load', 'domcontentloaded', 'networkidle', 'commit']);
|
|
3
|
+
export const navigateSchema = z.object({
|
|
4
|
+
url: z.string().url().describe('URL to navigate to'),
|
|
5
|
+
waitUntil: waitUntilEnum.optional().describe('When to consider navigation succeeded'),
|
|
6
|
+
});
|
|
7
|
+
export const goBackSchema = z.object({});
|
|
8
|
+
export const goForwardSchema = z.object({});
|
|
9
|
+
export const reloadSchema = z.object({
|
|
10
|
+
waitUntil: waitUntilEnum.optional().describe('When to consider reload succeeded'),
|
|
11
|
+
});
|
|
12
|
+
export const waitForNavigationSchema = z.object({
|
|
13
|
+
url: z.string().optional().describe('URL pattern to wait for'),
|
|
14
|
+
timeout: z.number().optional().describe('Timeout in milliseconds'),
|
|
15
|
+
});
|
|
16
|
+
export const getCurrentUrlSchema = z.object({});
|
|
17
|
+
export const waitForSelectorSchema = z.object({
|
|
18
|
+
selector: z.string().describe('CSS selector to wait for'),
|
|
19
|
+
state: z
|
|
20
|
+
.enum(['visible', 'hidden', 'attached', 'detached'])
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Element state to wait for'),
|
|
23
|
+
timeout: z.number().optional().describe('Timeout in milliseconds'),
|
|
24
|
+
});
|
|
25
|
+
export const clickSchema = z.object({
|
|
26
|
+
selector: z.string().describe('CSS selector of element to click'),
|
|
27
|
+
button: z.enum(['left', 'right', 'middle']).optional().describe('Mouse button'),
|
|
28
|
+
clickCount: z.number().min(1).optional().describe('Number of clicks (2 for double-click)'),
|
|
29
|
+
position: z
|
|
30
|
+
.object({
|
|
31
|
+
x: z.number(),
|
|
32
|
+
y: z.number(),
|
|
33
|
+
})
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Position relative to element'),
|
|
36
|
+
});
|
|
37
|
+
export const typeSchema = z.object({
|
|
38
|
+
selector: z.string().describe('CSS selector of input element'),
|
|
39
|
+
text: z.string().describe('Text to type'),
|
|
40
|
+
delay: z.number().optional().describe('Delay between keystrokes in ms'),
|
|
41
|
+
clearFirst: z.boolean().optional().describe('Clear the field before typing'),
|
|
42
|
+
});
|
|
43
|
+
export const selectOptionSchema = z
|
|
44
|
+
.object({
|
|
45
|
+
selector: z.string().describe('CSS selector of select element'),
|
|
46
|
+
value: z.string().optional().describe('Option value to select'),
|
|
47
|
+
label: z.string().optional().describe('Option label to select'),
|
|
48
|
+
index: z.number().optional().describe('Option index to select'),
|
|
49
|
+
})
|
|
50
|
+
.refine((data) => data.value !== undefined || data.label !== undefined || data.index !== undefined, {
|
|
51
|
+
message: 'At least one of value, label, or index is required',
|
|
52
|
+
});
|
|
53
|
+
export const hoverSchema = z.object({
|
|
54
|
+
selector: z.string().describe('CSS selector of element to hover'),
|
|
55
|
+
position: z
|
|
56
|
+
.object({ x: z.number(), y: z.number() })
|
|
57
|
+
.optional()
|
|
58
|
+
.describe('Position relative to element'),
|
|
59
|
+
});
|
|
60
|
+
export const scrollSchema = z.object({
|
|
61
|
+
direction: z.enum(['up', 'down', 'left', 'right']).describe('Scroll direction'),
|
|
62
|
+
amount: z.number().optional().describe('Scroll amount in pixels'),
|
|
63
|
+
selector: z.string().optional().describe('CSS selector of scrollable element'),
|
|
64
|
+
});
|
|
65
|
+
export const pressKeySchema = z.object({
|
|
66
|
+
key: z.string().describe('Key to press (e.g., "Enter", "Tab", "a")'),
|
|
67
|
+
modifiers: z
|
|
68
|
+
.array(z.enum(['Shift', 'Control', 'Alt', 'Meta']))
|
|
69
|
+
.optional()
|
|
70
|
+
.describe('Modifier keys to hold'),
|
|
71
|
+
});
|
|
72
|
+
export const dragAndDropSchema = z.object({
|
|
73
|
+
source: z.string().describe('CSS selector of drag source'),
|
|
74
|
+
target: z.string().describe('CSS selector of drop target'),
|
|
75
|
+
});
|
|
76
|
+
export const fillFormSchema = z.object({
|
|
77
|
+
fields: z
|
|
78
|
+
.record(z.string(), z.union([z.string(), z.boolean(), z.array(z.string())]))
|
|
79
|
+
.describe('Form fields to fill: { "Field Label": "value" }'),
|
|
80
|
+
});
|
|
81
|
+
export const uploadFileSchema = z.object({
|
|
82
|
+
selector: z.string().describe('CSS selector of file input'),
|
|
83
|
+
filePaths: z.array(z.string()).describe('Absolute paths to files to upload'),
|
|
84
|
+
});
|
|
85
|
+
export const getTextSchema = z.object({
|
|
86
|
+
selector: z.string().optional().describe('CSS selector to extract text from (defaults to body)'),
|
|
87
|
+
});
|
|
88
|
+
export const getHtmlSchema = z.object({
|
|
89
|
+
selector: z.string().optional().describe('CSS selector (defaults to full page)'),
|
|
90
|
+
outer: z.boolean().optional().describe('Include outer HTML of element'),
|
|
91
|
+
});
|
|
92
|
+
export const getAttributeSchema = z.object({
|
|
93
|
+
selector: z.string().describe('CSS selector of element'),
|
|
94
|
+
attribute: z.string().describe('Attribute name to get'),
|
|
95
|
+
});
|
|
96
|
+
export const getLinksSchema = z.object({
|
|
97
|
+
selector: z.string().optional().describe('CSS selector to scope link search'),
|
|
98
|
+
baseUrl: z.string().optional().describe('Base URL for resolving relative links'),
|
|
99
|
+
});
|
|
100
|
+
export const querySelectorAllSchema = z.object({
|
|
101
|
+
selector: z.string().describe('CSS selector to query'),
|
|
102
|
+
attributes: z.array(z.string()).optional().describe('Attributes to include per element'),
|
|
103
|
+
limit: z.number().optional().describe('Max elements to return'),
|
|
104
|
+
});
|
|
105
|
+
export const extractTableSchema = z.object({
|
|
106
|
+
selector: z.string().optional().describe('CSS selector of table element'),
|
|
107
|
+
});
|
|
108
|
+
export const extractStructuredSchema = z.object({
|
|
109
|
+
instruction: z.string().describe('What data to extract from the page'),
|
|
110
|
+
selector: z.string().optional().describe('CSS selector to scope extraction'),
|
|
111
|
+
});
|
|
112
|
+
export const screenshotSchema = z.object({
|
|
113
|
+
fullPage: z.boolean().optional().describe('Capture full scrollable page'),
|
|
114
|
+
selector: z.string().optional().describe('CSS selector to screenshot specific element'),
|
|
115
|
+
quality: z.number().min(0).max(100).optional().describe('Image quality 0-100 (JPEG only)'),
|
|
116
|
+
});
|
|
117
|
+
export const screenshotElementSchema = z.object({
|
|
118
|
+
selector: z.string().describe('CSS selector of element to screenshot'),
|
|
119
|
+
});
|
|
120
|
+
export const findByDescriptionSchema = z.object({
|
|
121
|
+
description: z.string().describe('Natural language description of element to find'),
|
|
122
|
+
});
|
|
123
|
+
export const clickByDescriptionSchema = z.object({
|
|
124
|
+
description: z.string().describe('Natural language description of element to click'),
|
|
125
|
+
index: z.number().optional().describe('Index of match to click if multiple found'),
|
|
126
|
+
});
|
|
127
|
+
export const interceptRequestSchema = z.object({
|
|
128
|
+
urlPattern: z.string().describe('URL pattern to intercept (glob or regex)'),
|
|
129
|
+
action: z.enum(['block', 'modify', 'continue']).describe('What to do with matching requests'),
|
|
130
|
+
modify: z
|
|
131
|
+
.object({
|
|
132
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
133
|
+
body: z.string().optional(),
|
|
134
|
+
url: z.string().optional(),
|
|
135
|
+
})
|
|
136
|
+
.optional()
|
|
137
|
+
.describe('Modifications to apply (only for action=modify)'),
|
|
138
|
+
});
|
|
139
|
+
export const waitForResponseSchema = z.object({
|
|
140
|
+
urlPattern: z.string().describe('URL pattern to wait for'),
|
|
141
|
+
timeout: z.number().optional().describe('Timeout in milliseconds'),
|
|
142
|
+
});
|
|
143
|
+
export const blockResourcesSchema = z.object({
|
|
144
|
+
types: z
|
|
145
|
+
.array(z.enum(['image', 'stylesheet', 'font', 'media', 'script']))
|
|
146
|
+
.describe('Resource types to block'),
|
|
147
|
+
});
|
|
148
|
+
export const captureHarSchema = z.object({
|
|
149
|
+
action: z.enum(['start', 'stop']).describe('Start or stop HAR capture'),
|
|
150
|
+
path: z.string().optional().describe('File path to save HAR (on stop)'),
|
|
151
|
+
});
|
|
152
|
+
export const getApiCallsSchema = z.object({
|
|
153
|
+
urlPattern: z.string().optional().describe('Filter API calls by URL pattern'),
|
|
154
|
+
method: z.string().optional().describe('Filter by HTTP method'),
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Page, Locator } from 'playwright';
|
|
2
|
+
export declare function smartSelect(page: Page, identifier: string): Promise<Locator | null>;
|
|
3
|
+
export declare function findFormField(page: Page, label: string): Promise<Locator | null>;
|
|
4
|
+
//# sourceMappingURL=selectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/utils/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMhD,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAazF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAqBtF"}
|