@cogitator-ai/browser 0.1.6 → 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 -5
- 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 +11 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +181 -84
- package/dist/session.js.map +1 -1
- package/dist/stealth/evasions.d.ts +2 -0
- package/dist/stealth/evasions.d.ts.map +1 -1
- package/dist/stealth/evasions.js +52 -4
- package/dist/stealth/evasions.js.map +1 -1
- package/dist/stealth/human-like.d.ts +21 -3
- package/dist/stealth/human-like.d.ts.map +1 -1
- package/dist/stealth/human-like.js +66 -25
- package/dist/stealth/human-like.js.map +1 -1
- package/dist/stealth/index.d.ts +7 -3
- package/dist/stealth/index.d.ts.map +1 -1
- package/dist/stealth/index.js +4 -2
- package/dist/stealth/index.js.map +1 -1
- package/dist/stealth/user-agents.d.ts.map +1 -1
- package/dist/stealth/user-agents.js +2 -3
- package/dist/stealth/user-agents.js.map +1 -1
- package/dist/tools/extraction.d.ts.map +1 -1
- package/dist/tools/extraction.js +36 -39
- 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 +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interaction.d.ts +2 -2
- package/dist/tools/interaction.d.ts.map +1 -1
- package/dist/tools/interaction.js +30 -11
- package/dist/tools/interaction.js.map +1 -1
- package/dist/tools/network.d.ts +21 -28
- package/dist/tools/network.d.ts.map +1 -1
- package/dist/tools/network.js +370 -107
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/vision.d.ts +2 -0
- package/dist/tools/vision.d.ts.map +1 -1
- package/dist/tools/vision.js +22 -14
- 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 +66 -18
- 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 +36 -15
- package/dist/utils/schemas.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/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# @cogitator-ai/browser
|
|
2
2
|
|
|
3
|
-
Browser automation tools for Cogitator AI agents. Playwright-based with
|
|
3
|
+
Browser automation tools for Cogitator AI agents. Playwright-based with 33 tools across 5 modules, vision mode, stealth system, structured data extraction, and network control.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
8
|
-
- **BrowserSession** -- managed browser lifecycle with tabs, cookies, proxy
|
|
7
|
+
- **33 Browser Tools** across 5 modules (navigation, interaction, extraction, vision, network)
|
|
8
|
+
- **BrowserSession** -- managed browser lifecycle with tabs (including popups), cookies, proxy, persistent profiles, and a tab limit
|
|
9
9
|
- **Stealth Mode** -- fingerprint evasion, human-like typing/mouse, UA rotation
|
|
10
10
|
- **Vision Mode** -- screenshot + accessibility tree for vision LLM navigation
|
|
11
11
|
- **Smart Extraction** -- tables, structured data, links, clean text
|
|
@@ -62,7 +62,7 @@ await session.close();
|
|
|
62
62
|
| Tool | Description |
|
|
63
63
|
| ----------------------- | --------------------------------------------------------------------------------- |
|
|
64
64
|
| `browser_click` | Click an element by CSS selector. Supports button, clickCount, position |
|
|
65
|
-
| `browser_type` | Type text into an input. Stealth mode
|
|
65
|
+
| `browser_type` | Type text into an input. Stealth mode replaces the value with human-like keys |
|
|
66
66
|
| `browser_select_option` | Select from a `<select>` element by value, label, or index |
|
|
67
67
|
| `browser_hover` | Hover over an element |
|
|
68
68
|
| `browser_scroll` | Scroll the page or a specific element in any direction |
|
|
@@ -75,32 +75,33 @@ await session.close();
|
|
|
75
75
|
|
|
76
76
|
| Tool | Description |
|
|
77
77
|
| ---------------------------- | ------------------------------------------------------------------ |
|
|
78
|
-
| `browser_get_text` | Extract text from the page or
|
|
78
|
+
| `browser_get_text` | Extract rendered text from the page or the first matching element |
|
|
79
79
|
| `browser_get_html` | Get inner or outer HTML of the page or an element |
|
|
80
80
|
| `browser_get_attribute` | Get the value of a DOM attribute |
|
|
81
81
|
| `browser_get_links` | Extract all links with text, href, and title |
|
|
82
82
|
| `browser_query_selector_all` | Query all matching elements with tag, text, attributes, visibility |
|
|
83
|
-
| `browser_extract_table` | Extract
|
|
84
|
-
| `browser_extract_structured` | Extract
|
|
83
|
+
| `browser_extract_table` | Extract headers + rows from a table (or the first table inside) |
|
|
84
|
+
| `browser_extract_structured` | Extract rendered text, without scripts/styles/hidden elements |
|
|
85
85
|
|
|
86
86
|
### Vision (4 tools)
|
|
87
87
|
|
|
88
88
|
| Tool | Description |
|
|
89
89
|
| ------------------------------ | --------------------------------------------------------------------------------------- |
|
|
90
|
-
| `browser_screenshot` | Screenshot the page or element. Returns base64 PNG/JPEG
|
|
90
|
+
| `browser_screenshot` | Screenshot the page or element. Returns base64 PNG/JPEG with `mimeType` and dimensions |
|
|
91
91
|
| `browser_screenshot_element` | Screenshot a specific element with bounding box coordinates |
|
|
92
92
|
| `browser_find_by_description` | Find elements by natural language using the accessibility tree |
|
|
93
93
|
| `browser_click_by_description` | Click an element by natural language description (tries role, text, label, placeholder) |
|
|
94
94
|
|
|
95
|
-
### Network (
|
|
95
|
+
### Network (6 tools)
|
|
96
96
|
|
|
97
|
-
| Tool
|
|
98
|
-
|
|
|
99
|
-
| `browser_intercept_request`
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
97
|
+
| Tool | Description |
|
|
98
|
+
| ---------------------------- | ------------------------------------------------------------------------------------- |
|
|
99
|
+
| `browser_intercept_request` | Block, modify, or continue requests matching a glob or `/regex/flags` in all tabs |
|
|
100
|
+
| `browser_remove_interceptor` | Remove one interceptor by ID, or all of them |
|
|
101
|
+
| `browser_wait_for_response` | Wait for a response whose URL contains a substring or matches `/regex/flags` |
|
|
102
|
+
| `browser_block_resources` | Block resource types (image, stylesheet, font, media, script) in all tabs |
|
|
103
|
+
| `browser_capture_har` | Start/stop traffic capture of all tabs; on stop returns entries and can write HAR 1.2 |
|
|
104
|
+
| `browser_get_api_calls` | XHR/fetch calls recorded since session start, filtered by URL or method; `clear` |
|
|
104
105
|
|
|
105
106
|
## Stealth Mode
|
|
106
107
|
|
|
@@ -123,18 +124,21 @@ const session = new BrowserSession({
|
|
|
123
124
|
});
|
|
124
125
|
```
|
|
125
126
|
|
|
127
|
+
Options you omit fall back to the defaults above (all `true`), so `stealth: { humanLikeMouse: false }` keeps every other feature enabled.
|
|
128
|
+
|
|
126
129
|
What stealth mode does:
|
|
127
130
|
|
|
128
|
-
- Sets `navigator.webdriver` to `false`
|
|
131
|
+
- Sets `navigator.webdriver` to `false` (patched on `Navigator.prototype`, not as an own property)
|
|
129
132
|
- Spoofs `navigator.plugins` with realistic Chrome plugins
|
|
130
|
-
- Sets `navigator.languages`
|
|
133
|
+
- Sets `navigator.languages` from `locale` (e.g. `de-DE` -> `['de-DE', 'de']`, default `['en-US', 'en']`)
|
|
134
|
+
- Aligns `navigator.platform` and `navigator.userAgentData.platform` with the user agent in use
|
|
131
135
|
- Randomizes canvas fingerprint (1-bit pixel noise)
|
|
132
136
|
- Spoofs WebGL vendor/renderer (Intel Iris)
|
|
133
137
|
- Injects `window.chrome` runtime stubs
|
|
134
138
|
- Overrides `Permissions.query` for notifications
|
|
135
|
-
- Rotates User-Agent strings per browser type
|
|
139
|
+
- Rotates desktop User-Agent strings per browser type
|
|
136
140
|
- Adds human-like typing delays (50-150ms per character)
|
|
137
|
-
-
|
|
141
|
+
- Moves the mouse along bezier curves for `browser_click`, `browser_click_by_description`, `browser_hover`, and wheels in small steps for `browser_scroll`
|
|
138
142
|
|
|
139
143
|
## Vision Mode
|
|
140
144
|
|
|
@@ -166,21 +170,25 @@ await session.start();
|
|
|
166
170
|
|
|
167
171
|
const tools = [...createNavigationTools(session), ...createNetworkTools(session)];
|
|
168
172
|
|
|
169
|
-
// Agent can intercept requests:
|
|
173
|
+
// Agent can intercept requests (glob or /regex/flags), in every tab:
|
|
170
174
|
// browser_intercept_request({ urlPattern: "**/ads/**", action: "block" })
|
|
175
|
+
// browser_intercept_request({ urlPattern: "/\\.(png|jpe?g)$/i", action: "block" })
|
|
176
|
+
// browser_remove_interceptor({ interceptorId: "interceptor_1" })
|
|
171
177
|
|
|
172
178
|
// Block resource types to speed up loading:
|
|
173
179
|
// browser_block_resources({ types: ["image", "font", "stylesheet"] })
|
|
174
180
|
|
|
175
|
-
// Monitor API calls made by the page:
|
|
176
|
-
// browser_get_api_calls({ urlPattern: "/api/", method: "POST" })
|
|
181
|
+
// Monitor API calls made by the page since the session started:
|
|
182
|
+
// browser_get_api_calls({ urlPattern: "/api/", method: "POST", clear: true })
|
|
177
183
|
|
|
178
|
-
// Capture HAR
|
|
184
|
+
// Capture traffic and save a HAR 1.2 file (path must be inside the working directory):
|
|
179
185
|
// browser_capture_har({ action: "start" })
|
|
180
186
|
// ... navigate and interact ...
|
|
181
187
|
// browser_capture_har({ action: "stop", path: "./traffic.har" })
|
|
182
188
|
```
|
|
183
189
|
|
|
190
|
+
Interceptors are registered on the browser context, so they also apply to tabs opened later. `continue` and `modify` hand the request to the next matching interceptor (`route.fallback`), so blocking rules keep working when several interceptors overlap. `modify.headers` are merged into the original request headers. API call history keeps the latest 1000 calls; HAR capture keeps up to 5000 entries and stores bodies only for textual responses up to 1 MB.
|
|
191
|
+
|
|
184
192
|
## BrowserSession API
|
|
185
193
|
|
|
186
194
|
### Constructor
|
|
@@ -202,9 +210,11 @@ interface BrowserSessionConfig {
|
|
|
202
210
|
locale?: string; // browser locale (e.g., 'en-US')
|
|
203
211
|
timezone?: string; // timezone ID (e.g., 'America/New_York')
|
|
204
212
|
geolocation?: { latitude: number; longitude: number };
|
|
205
|
-
|
|
213
|
+
persistentContext?: string; // user data dir; profile (cookies, storage) survives restarts
|
|
214
|
+
cookies?: BrowserCookie[]; // pre-load cookies (domain cookies default to path '/')
|
|
206
215
|
timeout?: number; // navigation timeout, default: 30000ms
|
|
207
216
|
actionTimeout?: number; // action timeout, default: 10000ms
|
|
217
|
+
pool?: { maxPages: number }; // maximum number of open tabs for newTab()
|
|
208
218
|
}
|
|
209
219
|
```
|
|
210
220
|
|
|
@@ -212,14 +222,23 @@ interface BrowserSessionConfig {
|
|
|
212
222
|
|
|
213
223
|
```typescript
|
|
214
224
|
await session.start(); // launch browser, create context and first page
|
|
225
|
+
await session.ensureStarted(); // start once; concurrent callers share one launch
|
|
215
226
|
await session.close(); // close browser and cleanup
|
|
227
|
+
|
|
228
|
+
const unsubscribe = session.onStart((context) => {
|
|
229
|
+
// runs after every successful start (immediately if already started)
|
|
230
|
+
});
|
|
216
231
|
```
|
|
217
232
|
|
|
233
|
+
If the browser or context closes unexpectedly, the session resets itself and the next `ensureStarted()` (called by every tool from `browserTools`) relaunches it. A failed start closes anything it launched.
|
|
234
|
+
|
|
218
235
|
### Properties
|
|
219
236
|
|
|
220
237
|
```typescript
|
|
221
238
|
session.page; // active Playwright Page
|
|
222
|
-
session.tabs; // all open Page[]
|
|
239
|
+
session.tabs; // all open Page[] (includes popups and target=_blank pages)
|
|
240
|
+
session.activeTabIndex; // index of the active tab
|
|
241
|
+
session.started; // whether a context is running
|
|
223
242
|
session.browser; // Playwright Browser instance
|
|
224
243
|
session.context; // Playwright BrowserContext
|
|
225
244
|
session.config; // current config
|
|
@@ -230,7 +249,7 @@ session.stealthConfig; // resolved StealthConfig or null
|
|
|
230
249
|
### Tab Management
|
|
231
250
|
|
|
232
251
|
```typescript
|
|
233
|
-
const page = await session.newTab('https://example.com'); // open new tab
|
|
252
|
+
const page = await session.newTab('https://example.com'); // open new tab (respects pool.maxPages)
|
|
234
253
|
session.switchTab(1); // switch to tab by index
|
|
235
254
|
await session.closeTab(0); // close tab by index
|
|
236
255
|
```
|
|
@@ -249,7 +268,7 @@ await session.loadCookies('./cookies.json');
|
|
|
249
268
|
Load only the tool modules you need:
|
|
250
269
|
|
|
251
270
|
```typescript
|
|
252
|
-
// all
|
|
271
|
+
// all 33 tools
|
|
253
272
|
const tools = browserTools(session);
|
|
254
273
|
|
|
255
274
|
// only navigation + extraction (14 tools)
|
|
@@ -292,7 +311,7 @@ const locator = await smartSelect(page, 'Submit');
|
|
|
292
311
|
// findFormField tries name, placeholder, aria-label, label text
|
|
293
312
|
const input = await findFormField(page, 'Email');
|
|
294
313
|
|
|
295
|
-
// getReadableText
|
|
314
|
+
// getReadableText returns rendered text (no scripts, styles, or hidden elements)
|
|
296
315
|
const text = await getReadableText(page);
|
|
297
316
|
|
|
298
317
|
// getAccessibilityTree returns simplified a11y tree
|
|
@@ -307,6 +326,7 @@ Use stealth primitives directly outside of BrowserSession:
|
|
|
307
326
|
import {
|
|
308
327
|
humanLikeType,
|
|
309
328
|
humanLikeClick,
|
|
329
|
+
humanLikeHover,
|
|
310
330
|
humanLikeScroll,
|
|
311
331
|
getRandomUserAgent,
|
|
312
332
|
getAllUserAgents,
|
|
@@ -317,11 +337,17 @@ import {
|
|
|
317
337
|
|
|
318
338
|
// human-like input on any Playwright page
|
|
319
339
|
await humanLikeType(page, '#search', 'cogitator ai');
|
|
320
|
-
await humanLikeClick(page, '.submit-btn');
|
|
321
|
-
await
|
|
340
|
+
await humanLikeClick(page, '.submit-btn'); // selector or Locator
|
|
341
|
+
await humanLikeClick(page, page.getByRole('button', { name: 'Buy' }), { clickCount: 2 });
|
|
342
|
+
await humanLikeHover(page, '#menu');
|
|
343
|
+
await humanLikeScroll(page, 'down', 500); // up | down | left | right
|
|
322
344
|
|
|
323
|
-
// get a random UA for a browser type
|
|
345
|
+
// get a random desktop UA for a browser type
|
|
324
346
|
const ua = getRandomUserAgent('chromium');
|
|
347
|
+
|
|
348
|
+
// evasion scripts consistent with that user agent and locale
|
|
349
|
+
const scripts = getEvasionScripts({ userAgent: ua, locale: 'de-DE' });
|
|
350
|
+
await applyStealthToContext(context, { blockWebDriver: true }, { userAgent: ua, locale: 'de-DE' });
|
|
325
351
|
```
|
|
326
352
|
|
|
327
353
|
## License
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export { BrowserSession } from './session.js';
|
|
2
|
+
export type { BrowserStartListener } from './session.js';
|
|
2
3
|
export { browserTools } from './tools/index.js';
|
|
3
|
-
export { createNavigationTools, createNavigateTool, createGoBackTool, createGoForwardTool, createReloadTool, createWaitForNavigationTool, createGetCurrentUrlTool, createWaitForSelectorTool, createInteractionTools, createClickTool, createTypeTool, createSelectOptionTool, createHoverTool, createScrollTool, createPressKeyTool, createDragAndDropTool, createFillFormTool, createUploadFileTool, createExtractionTools, createGetTextTool, createGetHtmlTool, createGetAttributeTool, createGetLinksTool, createQuerySelectorAllTool, createExtractTableTool, createExtractStructuredTool, createVisionTools, createScreenshotTool, createScreenshotElementTool, createFindByDescriptionTool, createClickByDescriptionTool, createNetworkTools, createInterceptRequestTool, createWaitForResponseTool, createBlockResourcesTool, createCaptureHarTool, createGetApiCallsTool, } from './tools/index.js';
|
|
4
|
-
export { navigateSchema, goBackSchema, goForwardSchema, reloadSchema, waitForNavigationSchema, getCurrentUrlSchema, waitForSelectorSchema, clickSchema, typeSchema, selectOptionSchema, hoverSchema, scrollSchema, pressKeySchema, dragAndDropSchema, fillFormSchema, uploadFileSchema, getTextSchema, getHtmlSchema, getAttributeSchema, getLinksSchema, querySelectorAllSchema, extractTableSchema, extractStructuredSchema, screenshotSchema, screenshotElementSchema, findByDescriptionSchema, clickByDescriptionSchema, interceptRequestSchema, waitForResponseSchema, blockResourcesSchema, captureHarSchema, getApiCallsSchema, } from './utils/schemas.js';
|
|
5
|
-
export type { NavigateInput, GoBackInput, GoForwardInput, ReloadInput, WaitForNavigationInput, GetCurrentUrlInput, WaitForSelectorInput, ClickInput, TypeInput, SelectOptionInput, HoverInput, ScrollInput, PressKeyInput, DragAndDropInput, FillFormInput, UploadFileInput, GetTextInput, GetHtmlInput, GetAttributeInput, GetLinksInput, QuerySelectorAllInput, ExtractTableInput, ExtractStructuredInput, ScreenshotInput, ScreenshotElementInput, FindByDescriptionInput, ClickByDescriptionInput, InterceptRequestInput, WaitForResponseInput, BlockResourcesInput, CaptureHarInput, GetApiCallsInput, } from './utils/schemas.js';
|
|
6
|
-
export { applyStealthToContext, getStealthLaunchOptions, getEvasionScripts, humanLikeType, humanLikeClick, humanLikeScroll, getRandomUserAgent, getAllUserAgents, } from './stealth/index.js';
|
|
7
|
-
export type { EvasionScriptsOptions, HumanLikeClickOptions } from './stealth/index.js';
|
|
4
|
+
export { createNavigationTools, createNavigateTool, createGoBackTool, createGoForwardTool, createReloadTool, createWaitForNavigationTool, createGetCurrentUrlTool, createWaitForSelectorTool, createInteractionTools, createClickTool, createTypeTool, createSelectOptionTool, createHoverTool, createScrollTool, createPressKeyTool, createDragAndDropTool, createFillFormTool, createUploadFileTool, createExtractionTools, createGetTextTool, createGetHtmlTool, createGetAttributeTool, createGetLinksTool, createQuerySelectorAllTool, createExtractTableTool, createExtractStructuredTool, createVisionTools, createScreenshotTool, createScreenshotElementTool, createFindByDescriptionTool, createClickByDescriptionTool, createNetworkTools, createInterceptRequestTool, createRemoveInterceptorTool, createWaitForResponseTool, createBlockResourcesTool, createCaptureHarTool, createGetApiCallsTool, } from './tools/index.js';
|
|
5
|
+
export { navigateSchema, goBackSchema, goForwardSchema, reloadSchema, waitForNavigationSchema, getCurrentUrlSchema, waitForSelectorSchema, clickSchema, typeSchema, selectOptionSchema, hoverSchema, scrollSchema, pressKeySchema, dragAndDropSchema, fillFormSchema, uploadFileSchema, getTextSchema, getHtmlSchema, getAttributeSchema, getLinksSchema, querySelectorAllSchema, extractTableSchema, extractStructuredSchema, screenshotSchema, screenshotElementSchema, findByDescriptionSchema, clickByDescriptionSchema, interceptRequestSchema, removeInterceptorSchema, waitForResponseSchema, blockResourcesSchema, captureHarSchema, getApiCallsSchema, } from './utils/schemas.js';
|
|
6
|
+
export type { NavigateInput, GoBackInput, GoForwardInput, ReloadInput, WaitForNavigationInput, GetCurrentUrlInput, WaitForSelectorInput, ClickInput, TypeInput, SelectOptionInput, HoverInput, ScrollInput, PressKeyInput, DragAndDropInput, FillFormInput, UploadFileInput, GetTextInput, GetHtmlInput, GetAttributeInput, GetLinksInput, QuerySelectorAllInput, ExtractTableInput, ExtractStructuredInput, ScreenshotInput, ScreenshotElementInput, FindByDescriptionInput, ClickByDescriptionInput, InterceptRequestInput, RemoveInterceptorInput, WaitForResponseInput, BlockResourcesInput, CaptureHarInput, GetApiCallsInput, } from './utils/schemas.js';
|
|
7
|
+
export { applyStealthToContext, getStealthLaunchOptions, getEvasionScripts, humanLikeType, humanLikeClick, humanLikeHover, humanLikeScroll, getRandomUserAgent, getAllUserAgents, } from './stealth/index.js';
|
|
8
|
+
export type { EvasionScriptsOptions, HumanLikeClickOptions, HumanLikeHoverOptions, StealthContextOptions, } from './stealth/index.js';
|
|
8
9
|
export { smartSelect, findFormField } from './utils/selectors.js';
|
|
9
10
|
export { getReadableText, getAccessibilityTree, elementToInfo } from './utils/page-helpers.js';
|
|
10
11
|
export type { AccessibilityNode } from './utils/page-helpers.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { BrowserSession } from './session.js';
|
|
2
2
|
export { browserTools } from './tools/index.js';
|
|
3
|
-
export { createNavigationTools, createNavigateTool, createGoBackTool, createGoForwardTool, createReloadTool, createWaitForNavigationTool, createGetCurrentUrlTool, createWaitForSelectorTool, createInteractionTools, createClickTool, createTypeTool, createSelectOptionTool, createHoverTool, createScrollTool, createPressKeyTool, createDragAndDropTool, createFillFormTool, createUploadFileTool, createExtractionTools, createGetTextTool, createGetHtmlTool, createGetAttributeTool, createGetLinksTool, createQuerySelectorAllTool, createExtractTableTool, createExtractStructuredTool, createVisionTools, createScreenshotTool, createScreenshotElementTool, createFindByDescriptionTool, createClickByDescriptionTool, createNetworkTools, createInterceptRequestTool, createWaitForResponseTool, createBlockResourcesTool, createCaptureHarTool, createGetApiCallsTool, } from './tools/index.js';
|
|
4
|
-
export { navigateSchema, goBackSchema, goForwardSchema, reloadSchema, waitForNavigationSchema, getCurrentUrlSchema, waitForSelectorSchema, clickSchema, typeSchema, selectOptionSchema, hoverSchema, scrollSchema, pressKeySchema, dragAndDropSchema, fillFormSchema, uploadFileSchema, getTextSchema, getHtmlSchema, getAttributeSchema, getLinksSchema, querySelectorAllSchema, extractTableSchema, extractStructuredSchema, screenshotSchema, screenshotElementSchema, findByDescriptionSchema, clickByDescriptionSchema, interceptRequestSchema, waitForResponseSchema, blockResourcesSchema, captureHarSchema, getApiCallsSchema, } from './utils/schemas.js';
|
|
5
|
-
export { applyStealthToContext, getStealthLaunchOptions, getEvasionScripts, humanLikeType, humanLikeClick, humanLikeScroll, getRandomUserAgent, getAllUserAgents, } from './stealth/index.js';
|
|
3
|
+
export { createNavigationTools, createNavigateTool, createGoBackTool, createGoForwardTool, createReloadTool, createWaitForNavigationTool, createGetCurrentUrlTool, createWaitForSelectorTool, createInteractionTools, createClickTool, createTypeTool, createSelectOptionTool, createHoverTool, createScrollTool, createPressKeyTool, createDragAndDropTool, createFillFormTool, createUploadFileTool, createExtractionTools, createGetTextTool, createGetHtmlTool, createGetAttributeTool, createGetLinksTool, createQuerySelectorAllTool, createExtractTableTool, createExtractStructuredTool, createVisionTools, createScreenshotTool, createScreenshotElementTool, createFindByDescriptionTool, createClickByDescriptionTool, createNetworkTools, createInterceptRequestTool, createRemoveInterceptorTool, createWaitForResponseTool, createBlockResourcesTool, createCaptureHarTool, createGetApiCallsTool, } from './tools/index.js';
|
|
4
|
+
export { navigateSchema, goBackSchema, goForwardSchema, reloadSchema, waitForNavigationSchema, getCurrentUrlSchema, waitForSelectorSchema, clickSchema, typeSchema, selectOptionSchema, hoverSchema, scrollSchema, pressKeySchema, dragAndDropSchema, fillFormSchema, uploadFileSchema, getTextSchema, getHtmlSchema, getAttributeSchema, getLinksSchema, querySelectorAllSchema, extractTableSchema, extractStructuredSchema, screenshotSchema, screenshotElementSchema, findByDescriptionSchema, clickByDescriptionSchema, interceptRequestSchema, removeInterceptorSchema, waitForResponseSchema, blockResourcesSchema, captureHarSchema, getApiCallsSchema, } from './utils/schemas.js';
|
|
5
|
+
export { applyStealthToContext, getStealthLaunchOptions, getEvasionScripts, humanLikeType, humanLikeClick, humanLikeHover, humanLikeScroll, getRandomUserAgent, getAllUserAgents, } from './stealth/index.js';
|
|
6
6
|
export { smartSelect, findFormField } from './utils/selectors.js';
|
|
7
7
|
export { getReadableText, getAccessibilityTree, elementToInfo } from './utils/page-helpers.js';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAsCzB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AASnB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -5,21 +5,27 @@ declare global {
|
|
|
5
5
|
readonly asyncDispose: unique symbol;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
+
export type BrowserStartListener = (context: BrowserContext) => void;
|
|
8
9
|
export declare class BrowserSession {
|
|
9
10
|
private _config;
|
|
10
11
|
private _browser;
|
|
11
12
|
private _context;
|
|
12
13
|
private _pages;
|
|
13
14
|
private _activePageIndex;
|
|
15
|
+
private _starting;
|
|
16
|
+
private _startListeners;
|
|
14
17
|
constructor(config?: BrowserSessionConfig);
|
|
15
18
|
get config(): BrowserSessionConfig;
|
|
19
|
+
get started(): boolean;
|
|
16
20
|
get stealthEnabled(): boolean;
|
|
17
21
|
get stealthConfig(): StealthConfig | null;
|
|
18
22
|
ensureStarted(): Promise<void>;
|
|
19
23
|
get page(): Page;
|
|
20
24
|
get tabs(): Page[];
|
|
25
|
+
get activeTabIndex(): number;
|
|
21
26
|
get browser(): Browser | null;
|
|
22
27
|
get context(): BrowserContext | null;
|
|
28
|
+
onStart(listener: BrowserStartListener): () => void;
|
|
23
29
|
start(): Promise<void>;
|
|
24
30
|
newTab(url?: string): Promise<Page>;
|
|
25
31
|
switchTab(index: number): void;
|
|
@@ -30,6 +36,11 @@ export declare class BrowserSession {
|
|
|
30
36
|
loadCookies(filePath: string): Promise<void>;
|
|
31
37
|
close(): Promise<void>;
|
|
32
38
|
[Symbol.asyncDispose](): Promise<void>;
|
|
39
|
+
private _launch;
|
|
40
|
+
private _reset;
|
|
41
|
+
private _trackPage;
|
|
42
|
+
private _untrackPage;
|
|
43
|
+
private _assertTabIndex;
|
|
33
44
|
private _pruneClosedPages;
|
|
34
45
|
private _resolveProxy;
|
|
35
46
|
}
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EAGd,IAAI,EACL,MAAM,YAAY,CAAC;AAGpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,iBAAiB;QACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,MAAM,CAAC;KACtC;CACF;AAgBD,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAerE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAGQ;IACvB,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,eAAe,CAAmC;gBAE9C,MAAM,CAAC,EAAE,oBAAoB;IAezC,IAAI,MAAM,IAAI,oBAAoB,CAEjC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,IAAI,CAIxC;IAEK,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,IAAI,IAAI,IAAI,IAAI,CAMf;IAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAGjB;IAED,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED,IAAI,OAAO,IAAI,OAAO,GAAG,IAAI,CAE5B;IAED,IAAI,OAAO,IAAI,cAAc,GAAG,IAAI,CAEnC;IAED,OAAO,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAQ7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BzC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAOtC,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;YAI9B,OAAO;IAkFrB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;CAUtB"}
|