@soederpop/luca 0.0.31 → 0.0.34
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 +241 -36
- package/bun.lock +24 -5
- package/commands/build-python-bridge.ts +43 -0
- package/docs/apis/clients/rest.md +7 -7
- package/docs/apis/clients/websocket.md +23 -10
- package/docs/apis/features/agi/assistant.md +155 -8
- package/docs/apis/features/agi/assistants-manager.md +90 -22
- package/docs/apis/features/agi/auto-assistant.md +377 -0
- package/docs/apis/features/agi/browser-use.md +802 -0
- package/docs/apis/features/agi/claude-code.md +6 -1
- package/docs/apis/features/agi/conversation-history.md +7 -6
- package/docs/apis/features/agi/conversation.md +111 -38
- package/docs/apis/features/agi/docs-reader.md +35 -57
- package/docs/apis/features/agi/file-tools.md +163 -0
- package/docs/apis/features/agi/openapi.md +2 -2
- package/docs/apis/features/agi/skills-library.md +227 -0
- package/docs/apis/features/node/content-db.md +125 -4
- package/docs/apis/features/node/disk-cache.md +11 -11
- package/docs/apis/features/node/downloader.md +1 -1
- package/docs/apis/features/node/file-manager.md +15 -15
- package/docs/apis/features/node/fs.md +78 -21
- package/docs/apis/features/node/git.md +50 -10
- package/docs/apis/features/node/google-calendar.md +3 -0
- package/docs/apis/features/node/google-docs.md +10 -1
- package/docs/apis/features/node/google-drive.md +3 -0
- package/docs/apis/features/node/google-mail.md +214 -0
- package/docs/apis/features/node/google-sheets.md +3 -0
- package/docs/apis/features/node/ink.md +10 -10
- package/docs/apis/features/node/ipc-socket.md +83 -93
- package/docs/apis/features/node/networking.md +5 -5
- package/docs/apis/features/node/os.md +7 -7
- package/docs/apis/features/node/package-finder.md +14 -14
- package/docs/apis/features/node/proc.md +2 -1
- package/docs/apis/features/node/process-manager.md +70 -3
- package/docs/apis/features/node/python.md +265 -9
- package/docs/apis/features/node/redis.md +380 -0
- package/docs/apis/features/node/ui.md +13 -13
- package/docs/apis/servers/express.md +35 -7
- package/docs/apis/servers/mcp.md +3 -3
- package/docs/apis/servers/websocket.md +51 -8
- package/docs/bootstrap/CLAUDE.md +1 -1
- package/docs/bootstrap/SKILL.md +93 -7
- package/docs/examples/feature-as-tool-provider.md +143 -0
- package/docs/examples/python.md +42 -1
- package/docs/introspection.md +15 -5
- package/docs/tutorials/00-bootstrap.md +3 -3
- package/docs/tutorials/02-container.md +2 -2
- package/docs/tutorials/10-creating-features.md +5 -0
- package/docs/tutorials/13-introspection.md +12 -2
- package/docs/tutorials/19-python-sessions.md +401 -0
- package/package.json +8 -4
- package/src/agi/container.server.ts +8 -0
- package/src/agi/features/assistant.ts +19 -0
- package/src/agi/features/autonomous-assistant.ts +435 -0
- package/src/agi/features/conversation.ts +58 -6
- package/src/agi/features/file-tools.ts +286 -0
- package/src/agi/features/luca-coder.ts +643 -0
- package/src/bootstrap/generated.ts +705 -17
- package/src/cli/build-info.ts +2 -2
- package/src/cli/cli.ts +22 -13
- package/src/commands/bootstrap.ts +49 -6
- package/src/commands/code.ts +369 -0
- package/src/commands/describe.ts +7 -2
- package/src/commands/index.ts +1 -0
- package/src/commands/sandbox-mcp.ts +7 -7
- package/src/commands/save-api-docs.ts +1 -1
- package/src/container-describer.ts +4 -4
- package/src/container.ts +10 -19
- package/src/helper.ts +24 -33
- package/src/introspection/generated.agi.ts +2499 -63
- package/src/introspection/generated.node.ts +1625 -688
- package/src/introspection/generated.web.ts +15 -57
- package/src/node/container.ts +5 -0
- package/src/node/features/figlet-fonts.ts +597 -0
- package/src/node/features/fs.ts +3 -9
- package/src/node/features/helpers.ts +20 -0
- package/src/node/features/python.ts +429 -16
- package/src/node/features/redis.ts +446 -0
- package/src/node/features/ui.ts +4 -11
- package/src/python/bridge.py +220 -0
- package/src/python/generated.ts +227 -0
- package/src/scaffolds/generated.ts +1 -1
- package/test/python-session.test.ts +105 -0
- package/assistants/lucaExpert/CORE.md +0 -37
- package/assistants/lucaExpert/hooks.ts +0 -9
- package/assistants/lucaExpert/tools.ts +0 -177
|
@@ -0,0 +1,802 @@
|
|
|
1
|
+
# BrowserUse (features.browserUse)
|
|
2
|
+
|
|
3
|
+
Browser automation feature wrapping the browser-use CLI. Provides programmatic browser control — navigation, clicking, typing, screenshots, JavaScript evaluation, data extraction, and more.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('browserUse', {
|
|
9
|
+
// Default session name
|
|
10
|
+
session,
|
|
11
|
+
// Show browser window by default
|
|
12
|
+
headed,
|
|
13
|
+
// Chrome profile name to use
|
|
14
|
+
profile,
|
|
15
|
+
// Auto-discover and connect to a running Chrome via CDP
|
|
16
|
+
connect,
|
|
17
|
+
// Connect to an existing browser via CDP URL (http:// or ws://)
|
|
18
|
+
cdpUrl,
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Options (Zod v4 schema)
|
|
23
|
+
|
|
24
|
+
| Property | Type | Description |
|
|
25
|
+
|----------|------|-------------|
|
|
26
|
+
| `session` | `string` | Default session name |
|
|
27
|
+
| `headed` | `boolean` | Show browser window by default |
|
|
28
|
+
| `profile` | `string` | Chrome profile name to use |
|
|
29
|
+
| `connect` | `boolean` | Auto-discover and connect to a running Chrome via CDP |
|
|
30
|
+
| `cdpUrl` | `string` | Connect to an existing browser via CDP URL (http:// or ws://) |
|
|
31
|
+
|
|
32
|
+
## Methods
|
|
33
|
+
|
|
34
|
+
### afterInitialize
|
|
35
|
+
|
|
36
|
+
**Returns:** `void`
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### open
|
|
41
|
+
|
|
42
|
+
Navigate to a URL
|
|
43
|
+
|
|
44
|
+
**Parameters:**
|
|
45
|
+
|
|
46
|
+
| Name | Type | Required | Description |
|
|
47
|
+
|------|------|----------|-------------|
|
|
48
|
+
| `url` | `string` | ✓ | The URL to open |
|
|
49
|
+
|
|
50
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
await browserUse.open('https://example.com')
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### click
|
|
59
|
+
|
|
60
|
+
Click an element by index or coordinates
|
|
61
|
+
|
|
62
|
+
**Parameters:**
|
|
63
|
+
|
|
64
|
+
| Name | Type | Required | Description |
|
|
65
|
+
|------|------|----------|-------------|
|
|
66
|
+
| `target` | `string` | ✓ | Element index or "x y" coordinates |
|
|
67
|
+
|
|
68
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
await browserUse.click('21') // click element 21
|
|
72
|
+
await browserUse.click('100 200') // click at coordinates
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### type
|
|
78
|
+
|
|
79
|
+
Type text at the current cursor position
|
|
80
|
+
|
|
81
|
+
**Parameters:**
|
|
82
|
+
|
|
83
|
+
| Name | Type | Required | Description |
|
|
84
|
+
|------|------|----------|-------------|
|
|
85
|
+
| `text` | `string` | ✓ | Text to type |
|
|
86
|
+
|
|
87
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### input
|
|
92
|
+
|
|
93
|
+
Type text into a specific element
|
|
94
|
+
|
|
95
|
+
**Parameters:**
|
|
96
|
+
|
|
97
|
+
| Name | Type | Required | Description |
|
|
98
|
+
|------|------|----------|-------------|
|
|
99
|
+
| `index` | `string` | ✓ | Element index |
|
|
100
|
+
| `text` | `string` | ✓ | Text to enter |
|
|
101
|
+
|
|
102
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
### getState
|
|
107
|
+
|
|
108
|
+
Get the current browser state (URL, title, interactive elements)
|
|
109
|
+
|
|
110
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
const state = await browserUse.getState()
|
|
114
|
+
console.log(state.data._raw_text)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
### screenshot
|
|
120
|
+
|
|
121
|
+
Take a screenshot
|
|
122
|
+
|
|
123
|
+
**Parameters:**
|
|
124
|
+
|
|
125
|
+
| Name | Type | Required | Description |
|
|
126
|
+
|------|------|----------|-------------|
|
|
127
|
+
| `options` | `{ path?: string; full?: boolean }` | | Optional path and full-page flag |
|
|
128
|
+
|
|
129
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
### evaluate
|
|
134
|
+
|
|
135
|
+
Execute JavaScript in the page context
|
|
136
|
+
|
|
137
|
+
**Parameters:**
|
|
138
|
+
|
|
139
|
+
| Name | Type | Required | Description |
|
|
140
|
+
|------|------|----------|-------------|
|
|
141
|
+
| `js` | `string` | ✓ | JavaScript code to evaluate |
|
|
142
|
+
|
|
143
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
### extract
|
|
148
|
+
|
|
149
|
+
Extract structured data from the page using an LLM
|
|
150
|
+
|
|
151
|
+
**Parameters:**
|
|
152
|
+
|
|
153
|
+
| Name | Type | Required | Description |
|
|
154
|
+
|------|------|----------|-------------|
|
|
155
|
+
| `query` | `string` | ✓ | Natural language description of what to extract |
|
|
156
|
+
|
|
157
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
### scroll
|
|
162
|
+
|
|
163
|
+
Scroll the page
|
|
164
|
+
|
|
165
|
+
**Parameters:**
|
|
166
|
+
|
|
167
|
+
| Name | Type | Required | Description |
|
|
168
|
+
|------|------|----------|-------------|
|
|
169
|
+
| `direction` | `'up' | 'down'` | | 'up' or 'down' |
|
|
170
|
+
| `amount` | `number` | | Pixels to scroll |
|
|
171
|
+
|
|
172
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
### keys
|
|
177
|
+
|
|
178
|
+
Send keyboard keys
|
|
179
|
+
|
|
180
|
+
**Parameters:**
|
|
181
|
+
|
|
182
|
+
| Name | Type | Required | Description |
|
|
183
|
+
|------|------|----------|-------------|
|
|
184
|
+
| `keys` | `string` | ✓ | Key combination (e.g. "Enter", "Control+a") |
|
|
185
|
+
|
|
186
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
### back
|
|
191
|
+
|
|
192
|
+
Go back in browser history
|
|
193
|
+
|
|
194
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
### getTitle
|
|
199
|
+
|
|
200
|
+
Get the current page title
|
|
201
|
+
|
|
202
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
### getHtml
|
|
207
|
+
|
|
208
|
+
Get the full page HTML
|
|
209
|
+
|
|
210
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
### getText
|
|
215
|
+
|
|
216
|
+
Get text content of an element
|
|
217
|
+
|
|
218
|
+
**Parameters:**
|
|
219
|
+
|
|
220
|
+
| Name | Type | Required | Description |
|
|
221
|
+
|------|------|----------|-------------|
|
|
222
|
+
| `index` | `string` | ✓ | Element index |
|
|
223
|
+
|
|
224
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
### select
|
|
229
|
+
|
|
230
|
+
Select a dropdown option
|
|
231
|
+
|
|
232
|
+
**Parameters:**
|
|
233
|
+
|
|
234
|
+
| Name | Type | Required | Description |
|
|
235
|
+
|------|------|----------|-------------|
|
|
236
|
+
| `index` | `string` | ✓ | Element index of the dropdown |
|
|
237
|
+
| `value` | `string` | ✓ | Value to select |
|
|
238
|
+
|
|
239
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
### waitForSelector
|
|
244
|
+
|
|
245
|
+
Wait for a CSS selector to appear
|
|
246
|
+
|
|
247
|
+
**Parameters:**
|
|
248
|
+
|
|
249
|
+
| Name | Type | Required | Description |
|
|
250
|
+
|------|------|----------|-------------|
|
|
251
|
+
| `selector` | `string` | ✓ | CSS selector |
|
|
252
|
+
|
|
253
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
### waitForText
|
|
258
|
+
|
|
259
|
+
Wait for text to appear on the page
|
|
260
|
+
|
|
261
|
+
**Parameters:**
|
|
262
|
+
|
|
263
|
+
| Name | Type | Required | Description |
|
|
264
|
+
|------|------|----------|-------------|
|
|
265
|
+
| `text` | `string` | ✓ | Text to wait for |
|
|
266
|
+
|
|
267
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
### switchTab
|
|
272
|
+
|
|
273
|
+
Switch to a tab by index
|
|
274
|
+
|
|
275
|
+
**Parameters:**
|
|
276
|
+
|
|
277
|
+
| Name | Type | Required | Description |
|
|
278
|
+
|------|------|----------|-------------|
|
|
279
|
+
| `tab` | `string` | ✓ | Tab index |
|
|
280
|
+
|
|
281
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
### closeTab
|
|
286
|
+
|
|
287
|
+
Close a tab
|
|
288
|
+
|
|
289
|
+
**Parameters:**
|
|
290
|
+
|
|
291
|
+
| Name | Type | Required | Description |
|
|
292
|
+
|------|------|----------|-------------|
|
|
293
|
+
| `tab` | `string` | | Tab index (closes current if omitted) |
|
|
294
|
+
|
|
295
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
### close
|
|
300
|
+
|
|
301
|
+
Close the browser session
|
|
302
|
+
|
|
303
|
+
**Parameters:**
|
|
304
|
+
|
|
305
|
+
| Name | Type | Required | Description |
|
|
306
|
+
|------|------|----------|-------------|
|
|
307
|
+
| `all` | `boolean` | | If true, close all sessions |
|
|
308
|
+
|
|
309
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
### sessions
|
|
314
|
+
|
|
315
|
+
List active browser sessions
|
|
316
|
+
|
|
317
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
### hover
|
|
322
|
+
|
|
323
|
+
Hover over an element
|
|
324
|
+
|
|
325
|
+
**Parameters:**
|
|
326
|
+
|
|
327
|
+
| Name | Type | Required | Description |
|
|
328
|
+
|------|------|----------|-------------|
|
|
329
|
+
| `index` | `string` | ✓ | Element index |
|
|
330
|
+
|
|
331
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
### dblclick
|
|
336
|
+
|
|
337
|
+
Double-click an element
|
|
338
|
+
|
|
339
|
+
**Parameters:**
|
|
340
|
+
|
|
341
|
+
| Name | Type | Required | Description |
|
|
342
|
+
|------|------|----------|-------------|
|
|
343
|
+
| `index` | `string` | ✓ | Element index |
|
|
344
|
+
|
|
345
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
### rightclick
|
|
350
|
+
|
|
351
|
+
Right-click an element
|
|
352
|
+
|
|
353
|
+
**Parameters:**
|
|
354
|
+
|
|
355
|
+
| Name | Type | Required | Description |
|
|
356
|
+
|------|------|----------|-------------|
|
|
357
|
+
| `index` | `string` | ✓ | Element index |
|
|
358
|
+
|
|
359
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
### upload
|
|
364
|
+
|
|
365
|
+
Upload a file to a file input element
|
|
366
|
+
|
|
367
|
+
**Parameters:**
|
|
368
|
+
|
|
369
|
+
| Name | Type | Required | Description |
|
|
370
|
+
|------|------|----------|-------------|
|
|
371
|
+
| `index` | `string` | ✓ | Element index of the file input |
|
|
372
|
+
| `path` | `string` | ✓ | Local file path to upload |
|
|
373
|
+
|
|
374
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
### getValue
|
|
379
|
+
|
|
380
|
+
Get the value of an input or textarea element
|
|
381
|
+
|
|
382
|
+
**Parameters:**
|
|
383
|
+
|
|
384
|
+
| Name | Type | Required | Description |
|
|
385
|
+
|------|------|----------|-------------|
|
|
386
|
+
| `index` | `string` | ✓ | Element index |
|
|
387
|
+
|
|
388
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
### getAttributes
|
|
393
|
+
|
|
394
|
+
Get all attributes of an element
|
|
395
|
+
|
|
396
|
+
**Parameters:**
|
|
397
|
+
|
|
398
|
+
| Name | Type | Required | Description |
|
|
399
|
+
|------|------|----------|-------------|
|
|
400
|
+
| `index` | `string` | ✓ | Element index |
|
|
401
|
+
|
|
402
|
+
**Returns:** `Promise<BrowserUseResult>`
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
### browserOpen
|
|
407
|
+
|
|
408
|
+
**Parameters:**
|
|
409
|
+
|
|
410
|
+
| Name | Type | Required | Description |
|
|
411
|
+
|------|------|----------|-------------|
|
|
412
|
+
| `options` | `{ url: string }` | ✓ | Parameter options |
|
|
413
|
+
|
|
414
|
+
**Returns:** `void`
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
### browserClick
|
|
419
|
+
|
|
420
|
+
**Parameters:**
|
|
421
|
+
|
|
422
|
+
| Name | Type | Required | Description |
|
|
423
|
+
|------|------|----------|-------------|
|
|
424
|
+
| `options` | `{ target: string }` | ✓ | Parameter options |
|
|
425
|
+
|
|
426
|
+
**Returns:** `void`
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
### browserType
|
|
431
|
+
|
|
432
|
+
**Parameters:**
|
|
433
|
+
|
|
434
|
+
| Name | Type | Required | Description |
|
|
435
|
+
|------|------|----------|-------------|
|
|
436
|
+
| `options` | `{ text: string }` | ✓ | Parameter options |
|
|
437
|
+
|
|
438
|
+
**Returns:** `void`
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
### browserInput
|
|
443
|
+
|
|
444
|
+
**Parameters:**
|
|
445
|
+
|
|
446
|
+
| Name | Type | Required | Description |
|
|
447
|
+
|------|------|----------|-------------|
|
|
448
|
+
| `options` | `{ index: string; text: string }` | ✓ | Parameter options |
|
|
449
|
+
|
|
450
|
+
**Returns:** `void`
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
### browserGetState
|
|
455
|
+
|
|
456
|
+
**Returns:** `void`
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
### browserScreenshot
|
|
461
|
+
|
|
462
|
+
**Parameters:**
|
|
463
|
+
|
|
464
|
+
| Name | Type | Required | Description |
|
|
465
|
+
|------|------|----------|-------------|
|
|
466
|
+
| `options` | `{ path?: string; full?: boolean }` | ✓ | Parameter options |
|
|
467
|
+
|
|
468
|
+
**Returns:** `void`
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
### browserEval
|
|
473
|
+
|
|
474
|
+
**Parameters:**
|
|
475
|
+
|
|
476
|
+
| Name | Type | Required | Description |
|
|
477
|
+
|------|------|----------|-------------|
|
|
478
|
+
| `options` | `{ js: string }` | ✓ | Parameter options |
|
|
479
|
+
|
|
480
|
+
**Returns:** `void`
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
### browserExtract
|
|
485
|
+
|
|
486
|
+
**Parameters:**
|
|
487
|
+
|
|
488
|
+
| Name | Type | Required | Description |
|
|
489
|
+
|------|------|----------|-------------|
|
|
490
|
+
| `options` | `{ query: string }` | ✓ | Parameter options |
|
|
491
|
+
|
|
492
|
+
**Returns:** `void`
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
### browserScroll
|
|
497
|
+
|
|
498
|
+
**Parameters:**
|
|
499
|
+
|
|
500
|
+
| Name | Type | Required | Description |
|
|
501
|
+
|------|------|----------|-------------|
|
|
502
|
+
| `options` | `{ direction: 'up' | 'down'; amount?: number }` | ✓ | Parameter options |
|
|
503
|
+
|
|
504
|
+
**Returns:** `void`
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
### browserKeys
|
|
509
|
+
|
|
510
|
+
**Parameters:**
|
|
511
|
+
|
|
512
|
+
| Name | Type | Required | Description |
|
|
513
|
+
|------|------|----------|-------------|
|
|
514
|
+
| `options` | `{ keys: string }` | ✓ | Parameter options |
|
|
515
|
+
|
|
516
|
+
**Returns:** `void`
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
### browserBack
|
|
521
|
+
|
|
522
|
+
**Returns:** `void`
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
### browserGetTitle
|
|
527
|
+
|
|
528
|
+
**Returns:** `void`
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
### browserGetHtml
|
|
533
|
+
|
|
534
|
+
**Returns:** `void`
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
### browserGetText
|
|
539
|
+
|
|
540
|
+
**Parameters:**
|
|
541
|
+
|
|
542
|
+
| Name | Type | Required | Description |
|
|
543
|
+
|------|------|----------|-------------|
|
|
544
|
+
| `options` | `{ index: string }` | ✓ | Parameter options |
|
|
545
|
+
|
|
546
|
+
**Returns:** `void`
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
### browserSelect
|
|
551
|
+
|
|
552
|
+
**Parameters:**
|
|
553
|
+
|
|
554
|
+
| Name | Type | Required | Description |
|
|
555
|
+
|------|------|----------|-------------|
|
|
556
|
+
| `options` | `{ index: string; value: string }` | ✓ | Parameter options |
|
|
557
|
+
|
|
558
|
+
**Returns:** `void`
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
### browserWaitForSelector
|
|
563
|
+
|
|
564
|
+
**Parameters:**
|
|
565
|
+
|
|
566
|
+
| Name | Type | Required | Description |
|
|
567
|
+
|------|------|----------|-------------|
|
|
568
|
+
| `options` | `{ selector: string }` | ✓ | Parameter options |
|
|
569
|
+
|
|
570
|
+
**Returns:** `void`
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
### browserWaitForText
|
|
575
|
+
|
|
576
|
+
**Parameters:**
|
|
577
|
+
|
|
578
|
+
| Name | Type | Required | Description |
|
|
579
|
+
|------|------|----------|-------------|
|
|
580
|
+
| `options` | `{ text: string }` | ✓ | Parameter options |
|
|
581
|
+
|
|
582
|
+
**Returns:** `void`
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
### browserSwitchTab
|
|
587
|
+
|
|
588
|
+
**Parameters:**
|
|
589
|
+
|
|
590
|
+
| Name | Type | Required | Description |
|
|
591
|
+
|------|------|----------|-------------|
|
|
592
|
+
| `options` | `{ tab: string }` | ✓ | Parameter options |
|
|
593
|
+
|
|
594
|
+
**Returns:** `void`
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
### browserCloseTab
|
|
599
|
+
|
|
600
|
+
**Parameters:**
|
|
601
|
+
|
|
602
|
+
| Name | Type | Required | Description |
|
|
603
|
+
|------|------|----------|-------------|
|
|
604
|
+
| `options` | `{ tab?: string }` | ✓ | Parameter options |
|
|
605
|
+
|
|
606
|
+
**Returns:** `void`
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
### browserClose
|
|
611
|
+
|
|
612
|
+
**Parameters:**
|
|
613
|
+
|
|
614
|
+
| Name | Type | Required | Description |
|
|
615
|
+
|------|------|----------|-------------|
|
|
616
|
+
| `options` | `{ all?: boolean }` | ✓ | Parameter options |
|
|
617
|
+
|
|
618
|
+
**Returns:** `void`
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
### browserSessions
|
|
623
|
+
|
|
624
|
+
**Returns:** `void`
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
### browserHover
|
|
629
|
+
|
|
630
|
+
**Parameters:**
|
|
631
|
+
|
|
632
|
+
| Name | Type | Required | Description |
|
|
633
|
+
|------|------|----------|-------------|
|
|
634
|
+
| `options` | `{ index: string }` | ✓ | Parameter options |
|
|
635
|
+
|
|
636
|
+
**Returns:** `void`
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
### browserDblclick
|
|
641
|
+
|
|
642
|
+
**Parameters:**
|
|
643
|
+
|
|
644
|
+
| Name | Type | Required | Description |
|
|
645
|
+
|------|------|----------|-------------|
|
|
646
|
+
| `options` | `{ index: string }` | ✓ | Parameter options |
|
|
647
|
+
|
|
648
|
+
**Returns:** `void`
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
### browserRightclick
|
|
653
|
+
|
|
654
|
+
**Parameters:**
|
|
655
|
+
|
|
656
|
+
| Name | Type | Required | Description |
|
|
657
|
+
|------|------|----------|-------------|
|
|
658
|
+
| `options` | `{ index: string }` | ✓ | Parameter options |
|
|
659
|
+
|
|
660
|
+
**Returns:** `void`
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
### browserUpload
|
|
665
|
+
|
|
666
|
+
**Parameters:**
|
|
667
|
+
|
|
668
|
+
| Name | Type | Required | Description |
|
|
669
|
+
|------|------|----------|-------------|
|
|
670
|
+
| `options` | `{ index: string; path: string }` | ✓ | Parameter options |
|
|
671
|
+
|
|
672
|
+
**Returns:** `void`
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
### browserGetValue
|
|
677
|
+
|
|
678
|
+
**Parameters:**
|
|
679
|
+
|
|
680
|
+
| Name | Type | Required | Description |
|
|
681
|
+
|------|------|----------|-------------|
|
|
682
|
+
| `options` | `{ index: string }` | ✓ | Parameter options |
|
|
683
|
+
|
|
684
|
+
**Returns:** `void`
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
### browserGetAttributes
|
|
689
|
+
|
|
690
|
+
**Parameters:**
|
|
691
|
+
|
|
692
|
+
| Name | Type | Required | Description |
|
|
693
|
+
|------|------|----------|-------------|
|
|
694
|
+
| `options` | `{ index: string }` | ✓ | Parameter options |
|
|
695
|
+
|
|
696
|
+
**Returns:** `void`
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
## Events (Zod v4 schema)
|
|
701
|
+
|
|
702
|
+
### navigated
|
|
703
|
+
|
|
704
|
+
Emitted after navigating to a URL
|
|
705
|
+
|
|
706
|
+
**Event Arguments:**
|
|
707
|
+
|
|
708
|
+
| Name | Type | Description |
|
|
709
|
+
|------|------|-------------|
|
|
710
|
+
| `arg0` | `string` | URL navigated to |
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
### clicked
|
|
715
|
+
|
|
716
|
+
Emitted after clicking an element
|
|
717
|
+
|
|
718
|
+
**Event Arguments:**
|
|
719
|
+
|
|
720
|
+
| Name | Type | Description |
|
|
721
|
+
|------|------|-------------|
|
|
722
|
+
| `arg0` | `string` | Target description |
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
### typed
|
|
727
|
+
|
|
728
|
+
Emitted after typing text
|
|
729
|
+
|
|
730
|
+
**Event Arguments:**
|
|
731
|
+
|
|
732
|
+
| Name | Type | Description |
|
|
733
|
+
|------|------|-------------|
|
|
734
|
+
| `arg0` | `string` | Text typed |
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
### screenshot
|
|
739
|
+
|
|
740
|
+
Emitted after taking a screenshot
|
|
741
|
+
|
|
742
|
+
**Event Arguments:**
|
|
743
|
+
|
|
744
|
+
| Name | Type | Description |
|
|
745
|
+
|------|------|-------------|
|
|
746
|
+
| `arg0` | `string` | Base64 or file path |
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
### closed
|
|
751
|
+
|
|
752
|
+
Emitted when the browser session is closed
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
## State (Zod v4 schema)
|
|
757
|
+
|
|
758
|
+
| Property | Type | Description |
|
|
759
|
+
|----------|------|-------------|
|
|
760
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
761
|
+
| `session` | `string` | Active browser session name |
|
|
762
|
+
| `headed` | `boolean` | Whether the browser window is visible |
|
|
763
|
+
| `currentUrl` | `string` | The current page URL |
|
|
764
|
+
|
|
765
|
+
## Examples
|
|
766
|
+
|
|
767
|
+
**features.browserUse**
|
|
768
|
+
|
|
769
|
+
```ts
|
|
770
|
+
const browser = container.feature('browserUse')
|
|
771
|
+
await browser.open('https://example.com')
|
|
772
|
+
const state = await browser.getState()
|
|
773
|
+
await browser.click('21')
|
|
774
|
+
await browser.close()
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
**open**
|
|
780
|
+
|
|
781
|
+
```ts
|
|
782
|
+
await browserUse.open('https://example.com')
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
**click**
|
|
788
|
+
|
|
789
|
+
```ts
|
|
790
|
+
await browserUse.click('21') // click element 21
|
|
791
|
+
await browserUse.click('100 200') // click at coordinates
|
|
792
|
+
```
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
**getState**
|
|
797
|
+
|
|
798
|
+
```ts
|
|
799
|
+
const state = await browserUse.getState()
|
|
800
|
+
console.log(state.data._raw_text)
|
|
801
|
+
```
|
|
802
|
+
|