anchorbrowser 0.1.0a3__py3-none-any.whl → 0.1.1__py3-none-any.whl
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.
- anchorbrowser/__init__.py +3 -1
- anchorbrowser/_base_client.py +16 -13
- anchorbrowser/_client.py +21 -9
- anchorbrowser/_compat.py +48 -48
- anchorbrowser/_files.py +4 -4
- anchorbrowser/_models.py +51 -45
- anchorbrowser/_qs.py +7 -7
- anchorbrowser/_types.py +53 -12
- anchorbrowser/_utils/__init__.py +9 -2
- anchorbrowser/_utils/_compat.py +45 -0
- anchorbrowser/_utils/_datetime_parse.py +136 -0
- anchorbrowser/_utils/_transform.py +13 -3
- anchorbrowser/_utils/_typing.py +6 -1
- anchorbrowser/_utils/_utils.py +4 -5
- anchorbrowser/_version.py +1 -1
- anchorbrowser/lib/browser.py +1 -1
- anchorbrowser/resources/__init__.py +14 -0
- anchorbrowser/resources/events.py +270 -0
- anchorbrowser/resources/extensions.py +9 -9
- anchorbrowser/resources/profiles.py +31 -43
- anchorbrowser/resources/sessions/all.py +5 -5
- anchorbrowser/resources/sessions/clipboard.py +5 -5
- anchorbrowser/resources/sessions/keyboard.py +11 -13
- anchorbrowser/resources/sessions/mouse.py +19 -19
- anchorbrowser/resources/sessions/recordings/primary.py +3 -3
- anchorbrowser/resources/sessions/recordings/recordings.py +7 -7
- anchorbrowser/resources/sessions/sessions.py +307 -30
- anchorbrowser/resources/tools.py +107 -37
- anchorbrowser/types/__init__.py +7 -0
- anchorbrowser/types/event_signal_params.py +13 -0
- anchorbrowser/types/event_wait_for_params.py +14 -0
- anchorbrowser/types/event_wait_for_response.py +12 -0
- anchorbrowser/types/extension_manifest.py +6 -1
- anchorbrowser/types/profile_create_params.py +3 -6
- anchorbrowser/types/profile_list_response.py +0 -3
- anchorbrowser/types/profile_retrieve_response.py +0 -3
- anchorbrowser/types/profile_update_params.py +0 -6
- anchorbrowser/types/session_create_params.py +262 -26
- anchorbrowser/types/session_list_pages_response.py +25 -0
- anchorbrowser/types/session_retrieve_response.py +46 -0
- anchorbrowser/types/session_scroll_params.py +3 -0
- anchorbrowser/types/session_upload_file_params.py +14 -0
- anchorbrowser/types/session_upload_file_response.py +17 -0
- anchorbrowser/types/sessions/keyboard_shortcut_params.py +2 -2
- anchorbrowser/types/sessions/recording_list_response.py +4 -8
- anchorbrowser/types/tool_fetch_webpage_params.py +15 -0
- anchorbrowser/types/tool_perform_web_task_params.py +17 -1
- anchorbrowser/types/tool_perform_web_task_response.py +3 -3
- {anchorbrowser-0.1.0a3.dist-info → anchorbrowser-0.1.1.dist-info}/METADATA +8 -9
- {anchorbrowser-0.1.0a3.dist-info → anchorbrowser-0.1.1.dist-info}/RECORD +52 -42
- {anchorbrowser-0.1.0a3.dist-info → anchorbrowser-0.1.1.dist-info}/WHEEL +0 -0
- {anchorbrowser-0.1.0a3.dist-info → anchorbrowser-0.1.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -5,11 +5,15 @@ from __future__ import annotations
|
|
|
5
5
|
from typing import Union
|
|
6
6
|
from typing_extensions import Literal, Required, TypeAlias, TypedDict
|
|
7
7
|
|
|
8
|
+
from .._types import SequenceNotStr
|
|
9
|
+
|
|
8
10
|
__all__ = [
|
|
9
11
|
"SessionCreateParams",
|
|
10
12
|
"Browser",
|
|
11
13
|
"BrowserAdblock",
|
|
12
14
|
"BrowserCaptchaSolver",
|
|
15
|
+
"BrowserDisableWebSecurity",
|
|
16
|
+
"BrowserFullscreen",
|
|
13
17
|
"BrowserHeadless",
|
|
14
18
|
"BrowserP2pDownload",
|
|
15
19
|
"BrowserPopupBlocker",
|
|
@@ -18,9 +22,8 @@ __all__ = [
|
|
|
18
22
|
"Session",
|
|
19
23
|
"SessionLiveView",
|
|
20
24
|
"SessionProxy",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"SessionProxyCustomProxyType",
|
|
25
|
+
"SessionProxyAnchorProxy",
|
|
26
|
+
"SessionProxyCustomProxy",
|
|
24
27
|
"SessionRecording",
|
|
25
28
|
"SessionTimeout",
|
|
26
29
|
]
|
|
@@ -47,6 +50,23 @@ class BrowserCaptchaSolver(TypedDict, total=False):
|
|
|
47
50
|
"""
|
|
48
51
|
|
|
49
52
|
|
|
53
|
+
class BrowserDisableWebSecurity(TypedDict, total=False):
|
|
54
|
+
active: bool
|
|
55
|
+
"""Whether to disable web security features (CORS, same-origin policy, etc.).
|
|
56
|
+
|
|
57
|
+
Allows accessing iframes and resources from different origins. Defaults to
|
|
58
|
+
`false`.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class BrowserFullscreen(TypedDict, total=False):
|
|
63
|
+
active: bool
|
|
64
|
+
"""Enable or disable fullscreen mode.
|
|
65
|
+
|
|
66
|
+
When enabled, the browser will start in fullscreen mode. Defaults to `false`.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
|
|
50
70
|
class BrowserHeadless(TypedDict, total=False):
|
|
51
71
|
active: bool
|
|
52
72
|
"""Whether browser should be headless or headful. Defaults to `false`."""
|
|
@@ -79,10 +99,10 @@ class BrowserProfile(TypedDict, total=False):
|
|
|
79
99
|
browser session ends. Defaults to `false`.
|
|
80
100
|
"""
|
|
81
101
|
|
|
82
|
-
|
|
83
|
-
"""
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
reset_preferences: bool
|
|
103
|
+
"""When enabled, resets the profile's preferences on session creation.
|
|
104
|
+
|
|
105
|
+
Defaults to `false`.
|
|
86
106
|
"""
|
|
87
107
|
|
|
88
108
|
|
|
@@ -101,6 +121,18 @@ class Browser(TypedDict, total=False):
|
|
|
101
121
|
captcha_solver: BrowserCaptchaSolver
|
|
102
122
|
"""Configuration for captcha-solving."""
|
|
103
123
|
|
|
124
|
+
disable_web_security: BrowserDisableWebSecurity
|
|
125
|
+
"""Configuration for disabling web security features."""
|
|
126
|
+
|
|
127
|
+
extensions: SequenceNotStr[str]
|
|
128
|
+
"""Array of extension IDs to load in the browser session.
|
|
129
|
+
|
|
130
|
+
Extensions must be previously uploaded using the Extensions API.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
fullscreen: BrowserFullscreen
|
|
134
|
+
"""Configuration for fullscreen mode."""
|
|
135
|
+
|
|
104
136
|
headless: BrowserHeadless
|
|
105
137
|
"""Configuration for headless mode."""
|
|
106
138
|
|
|
@@ -122,27 +154,230 @@ class SessionLiveView(TypedDict, total=False):
|
|
|
122
154
|
"""Enable or disable read-only mode for live viewing. Defaults to `false`."""
|
|
123
155
|
|
|
124
156
|
|
|
125
|
-
class
|
|
126
|
-
|
|
157
|
+
class SessionProxyAnchorProxy(TypedDict, total=False):
|
|
158
|
+
active: Required[bool]
|
|
127
159
|
|
|
128
|
-
active: bool
|
|
129
160
|
"""Enable or disable proxy usage. Defaults to `false`."""
|
|
161
|
+
city: str
|
|
162
|
+
"""City name for precise geographic targeting.
|
|
130
163
|
|
|
131
|
-
|
|
132
|
-
"""
|
|
164
|
+
Supported for anchor_proxy only. Can only be used when region is also provided.
|
|
165
|
+
Example: "San Francisco", "los-angeles", "london"
|
|
166
|
+
"""
|
|
133
167
|
|
|
168
|
+
country_code: Literal[
|
|
169
|
+
"af",
|
|
170
|
+
"al",
|
|
171
|
+
"dz",
|
|
172
|
+
"ad",
|
|
173
|
+
"ao",
|
|
174
|
+
"as",
|
|
175
|
+
"ag",
|
|
176
|
+
"ar",
|
|
177
|
+
"am",
|
|
178
|
+
"aw",
|
|
179
|
+
"au",
|
|
180
|
+
"at",
|
|
181
|
+
"az",
|
|
182
|
+
"bs",
|
|
183
|
+
"bh",
|
|
184
|
+
"bb",
|
|
185
|
+
"by",
|
|
186
|
+
"be",
|
|
187
|
+
"bz",
|
|
188
|
+
"bj",
|
|
189
|
+
"bm",
|
|
190
|
+
"bo",
|
|
191
|
+
"ba",
|
|
192
|
+
"br",
|
|
193
|
+
"bg",
|
|
194
|
+
"bf",
|
|
195
|
+
"cm",
|
|
196
|
+
"ca",
|
|
197
|
+
"cv",
|
|
198
|
+
"td",
|
|
199
|
+
"cl",
|
|
200
|
+
"co",
|
|
201
|
+
"cg",
|
|
202
|
+
"cr",
|
|
203
|
+
"ci",
|
|
204
|
+
"hr",
|
|
205
|
+
"cu",
|
|
206
|
+
"cy",
|
|
207
|
+
"cz",
|
|
208
|
+
"dk",
|
|
209
|
+
"dm",
|
|
210
|
+
"do",
|
|
211
|
+
"ec",
|
|
212
|
+
"eg",
|
|
213
|
+
"sv",
|
|
214
|
+
"ee",
|
|
215
|
+
"et",
|
|
216
|
+
"fo",
|
|
217
|
+
"fi",
|
|
218
|
+
"fr",
|
|
219
|
+
"gf",
|
|
220
|
+
"pf",
|
|
221
|
+
"ga",
|
|
222
|
+
"gm",
|
|
223
|
+
"ge",
|
|
224
|
+
"de",
|
|
225
|
+
"gh",
|
|
226
|
+
"gi",
|
|
227
|
+
"gr",
|
|
228
|
+
"gd",
|
|
229
|
+
"gp",
|
|
230
|
+
"gt",
|
|
231
|
+
"gg",
|
|
232
|
+
"gn",
|
|
233
|
+
"gw",
|
|
234
|
+
"gy",
|
|
235
|
+
"ht",
|
|
236
|
+
"hn",
|
|
237
|
+
"hu",
|
|
238
|
+
"is",
|
|
239
|
+
"in",
|
|
240
|
+
"ir",
|
|
241
|
+
"iq",
|
|
242
|
+
"ie",
|
|
243
|
+
"il",
|
|
244
|
+
"it",
|
|
245
|
+
"jm",
|
|
246
|
+
"jp",
|
|
247
|
+
"jo",
|
|
248
|
+
"kz",
|
|
249
|
+
"kw",
|
|
250
|
+
"kg",
|
|
251
|
+
"lv",
|
|
252
|
+
"lb",
|
|
253
|
+
"ly",
|
|
254
|
+
"li",
|
|
255
|
+
"lt",
|
|
256
|
+
"lu",
|
|
257
|
+
"mk",
|
|
258
|
+
"ml",
|
|
259
|
+
"mt",
|
|
260
|
+
"mq",
|
|
261
|
+
"mr",
|
|
262
|
+
"mx",
|
|
263
|
+
"md",
|
|
264
|
+
"mc",
|
|
265
|
+
"me",
|
|
266
|
+
"ma",
|
|
267
|
+
"nl",
|
|
268
|
+
"nz",
|
|
269
|
+
"ni",
|
|
270
|
+
"ng",
|
|
271
|
+
"no",
|
|
272
|
+
"pk",
|
|
273
|
+
"pa",
|
|
274
|
+
"py",
|
|
275
|
+
"pe",
|
|
276
|
+
"ph",
|
|
277
|
+
"pl",
|
|
278
|
+
"pt",
|
|
279
|
+
"pr",
|
|
280
|
+
"qa",
|
|
281
|
+
"ro",
|
|
282
|
+
"lc",
|
|
283
|
+
"sm",
|
|
284
|
+
"sa",
|
|
285
|
+
"sn",
|
|
286
|
+
"rs",
|
|
287
|
+
"sc",
|
|
288
|
+
"sl",
|
|
289
|
+
"sk",
|
|
290
|
+
"si",
|
|
291
|
+
"so",
|
|
292
|
+
"za",
|
|
293
|
+
"kr",
|
|
294
|
+
"es",
|
|
295
|
+
"sr",
|
|
296
|
+
"se",
|
|
297
|
+
"ch",
|
|
298
|
+
"sy",
|
|
299
|
+
"st",
|
|
300
|
+
"tw",
|
|
301
|
+
"tj",
|
|
302
|
+
"tg",
|
|
303
|
+
"tt",
|
|
304
|
+
"tn",
|
|
305
|
+
"tr",
|
|
306
|
+
"tc",
|
|
307
|
+
"ua",
|
|
308
|
+
"ae",
|
|
309
|
+
"us",
|
|
310
|
+
"uy",
|
|
311
|
+
"uz",
|
|
312
|
+
"ve",
|
|
313
|
+
"ye",
|
|
314
|
+
"bd",
|
|
315
|
+
"bw",
|
|
316
|
+
"bn",
|
|
317
|
+
"bi",
|
|
318
|
+
"kh",
|
|
319
|
+
"cn",
|
|
320
|
+
"dj",
|
|
321
|
+
"gq",
|
|
322
|
+
"sz",
|
|
323
|
+
"fj",
|
|
324
|
+
"hk",
|
|
325
|
+
"id",
|
|
326
|
+
"ke",
|
|
327
|
+
"la",
|
|
328
|
+
"ls",
|
|
329
|
+
"lr",
|
|
330
|
+
"mg",
|
|
331
|
+
"mw",
|
|
332
|
+
"my",
|
|
333
|
+
"mv",
|
|
334
|
+
"mn",
|
|
335
|
+
"mz",
|
|
336
|
+
"mm",
|
|
337
|
+
"na",
|
|
338
|
+
"np",
|
|
339
|
+
"nc",
|
|
340
|
+
"ne",
|
|
341
|
+
"om",
|
|
342
|
+
"pg",
|
|
343
|
+
"ru",
|
|
344
|
+
"rw",
|
|
345
|
+
"ws",
|
|
346
|
+
"sg",
|
|
347
|
+
"ss",
|
|
348
|
+
"lk",
|
|
349
|
+
"sd",
|
|
350
|
+
"tz",
|
|
351
|
+
"th",
|
|
352
|
+
"tl",
|
|
353
|
+
"tm",
|
|
354
|
+
"ug",
|
|
355
|
+
"gb",
|
|
356
|
+
"vu",
|
|
357
|
+
"vn",
|
|
358
|
+
"zm",
|
|
359
|
+
"zw",
|
|
360
|
+
"bt",
|
|
361
|
+
"mu",
|
|
362
|
+
]
|
|
363
|
+
"""Supported country codes ISO 2 lowercase
|
|
364
|
+
|
|
365
|
+
**On change make sure to update the Proxy type.**
|
|
366
|
+
"""
|
|
134
367
|
|
|
135
|
-
|
|
136
|
-
|
|
368
|
+
region: str
|
|
369
|
+
"""
|
|
370
|
+
Region code for more specific geographic targeting. The city parameter can only
|
|
371
|
+
be used when region is also provided. Example: "ca" for California
|
|
372
|
+
"""
|
|
137
373
|
|
|
138
|
-
|
|
139
|
-
"""
|
|
374
|
+
type: Literal["anchor_proxy", "anchor_residential", "anchor_mobile", "anchor_gov"]
|
|
375
|
+
"""**On change make sure to update the country_code.**"""
|
|
140
376
|
|
|
141
|
-
country_code: Literal["us", "uk", "fr", "it", "jp", "au", "de", "fi", "ca"]
|
|
142
|
-
"""Country code for mobile proxy"""
|
|
143
377
|
|
|
378
|
+
class SessionProxyCustomProxy(TypedDict, total=False):
|
|
379
|
+
active: Required[bool]
|
|
144
380
|
|
|
145
|
-
class SessionProxyCustomProxyType(TypedDict, total=False):
|
|
146
381
|
password: Required[str]
|
|
147
382
|
"""Proxy password"""
|
|
148
383
|
|
|
@@ -154,13 +389,8 @@ class SessionProxyCustomProxyType(TypedDict, total=False):
|
|
|
154
389
|
username: Required[str]
|
|
155
390
|
"""Proxy username"""
|
|
156
391
|
|
|
157
|
-
active: bool
|
|
158
|
-
"""Enable or disable proxy usage. Defaults to `false`."""
|
|
159
|
-
|
|
160
392
|
|
|
161
|
-
SessionProxy: TypeAlias = Union[
|
|
162
|
-
SessionProxyAnchorResidentialProxyType, SessionProxyAnchorMobileProxyType, SessionProxyCustomProxyType
|
|
163
|
-
]
|
|
393
|
+
SessionProxy: TypeAlias = Union[SessionProxyAnchorProxy, SessionProxyCustomProxy]
|
|
164
394
|
|
|
165
395
|
|
|
166
396
|
class SessionRecording(TypedDict, total=False):
|
|
@@ -183,11 +413,17 @@ class SessionTimeout(TypedDict, total=False):
|
|
|
183
413
|
|
|
184
414
|
|
|
185
415
|
class Session(TypedDict, total=False):
|
|
416
|
+
initial_url: str
|
|
417
|
+
"""The URL to navigate to when the browser session starts.
|
|
418
|
+
|
|
419
|
+
If not provided, the browser will load an empty page.
|
|
420
|
+
"""
|
|
421
|
+
|
|
186
422
|
live_view: SessionLiveView
|
|
187
423
|
"""Configuration for live viewing the browser session."""
|
|
188
424
|
|
|
189
425
|
proxy: SessionProxy
|
|
190
|
-
"""
|
|
426
|
+
"""Proxy Documentation available at [Proxy Documentation](/advanced/proxy)"""
|
|
191
427
|
|
|
192
428
|
recording: SessionRecording
|
|
193
429
|
"""Configuration for session recording."""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List
|
|
4
|
+
from typing_extensions import TypeAlias
|
|
5
|
+
|
|
6
|
+
from .._models import BaseModel
|
|
7
|
+
|
|
8
|
+
__all__ = ["SessionListPagesResponse", "SessionListPagesResponseItem"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SessionListPagesResponseItem(BaseModel):
|
|
12
|
+
id: str
|
|
13
|
+
"""The unique identifier of the page."""
|
|
14
|
+
|
|
15
|
+
frontend_url: str
|
|
16
|
+
"""The frontend URL for accessing the page."""
|
|
17
|
+
|
|
18
|
+
title: str
|
|
19
|
+
"""The title of the page."""
|
|
20
|
+
|
|
21
|
+
url: str
|
|
22
|
+
"""The URL of the page."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
SessionListPagesResponse: TypeAlias = List[SessionListPagesResponseItem]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
|
|
6
|
+
from .._models import BaseModel
|
|
7
|
+
|
|
8
|
+
__all__ = ["SessionRetrieveResponse"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SessionRetrieveResponse(BaseModel):
|
|
12
|
+
configuration: Optional[object] = None
|
|
13
|
+
"""The configuration settings for the session."""
|
|
14
|
+
|
|
15
|
+
created_at: Optional[datetime] = None
|
|
16
|
+
"""The timestamp when the session was created."""
|
|
17
|
+
|
|
18
|
+
credits_used: Optional[float] = None
|
|
19
|
+
"""The number of credits consumed by the session."""
|
|
20
|
+
|
|
21
|
+
duration: Optional[int] = None
|
|
22
|
+
"""The duration of the session in seconds."""
|
|
23
|
+
|
|
24
|
+
playground: Optional[bool] = None
|
|
25
|
+
"""Whether this is a playground session."""
|
|
26
|
+
|
|
27
|
+
proxy_bytes: Optional[int] = None
|
|
28
|
+
"""The number of bytes transferred through the proxy."""
|
|
29
|
+
|
|
30
|
+
session_id: Optional[str] = None
|
|
31
|
+
"""The unique identifier of the session."""
|
|
32
|
+
|
|
33
|
+
status: Optional[str] = None
|
|
34
|
+
"""The current status of the session."""
|
|
35
|
+
|
|
36
|
+
steps: Optional[List[object]] = None
|
|
37
|
+
"""Array of steps executed in the session."""
|
|
38
|
+
|
|
39
|
+
tags: Optional[object] = None
|
|
40
|
+
"""Tags associated with the session."""
|
|
41
|
+
|
|
42
|
+
team_id: Optional[str] = None
|
|
43
|
+
"""The team ID associated with the session."""
|
|
44
|
+
|
|
45
|
+
tokens: Optional[object] = None
|
|
46
|
+
"""Token usage information."""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, TypedDict
|
|
6
|
+
|
|
7
|
+
from .._types import FileTypes
|
|
8
|
+
|
|
9
|
+
__all__ = ["SessionUploadFileParams"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SessionUploadFileParams(TypedDict, total=False):
|
|
13
|
+
file: Required[FileTypes]
|
|
14
|
+
"""File to upload to the browser session"""
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from .._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["SessionUploadFileResponse", "Data"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Data(BaseModel):
|
|
11
|
+
message: Optional[str] = None
|
|
12
|
+
|
|
13
|
+
status: Optional[str] = None
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SessionUploadFileResponse(BaseModel):
|
|
17
|
+
data: Optional[Data] = None
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Required, Annotated, TypedDict
|
|
7
6
|
|
|
7
|
+
from ..._types import SequenceNotStr
|
|
8
8
|
from ..._utils import PropertyInfo
|
|
9
9
|
|
|
10
10
|
__all__ = ["KeyboardShortcutParams"]
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class KeyboardShortcutParams(TypedDict, total=False):
|
|
14
|
-
keys: Required[
|
|
14
|
+
keys: Required[SequenceNotStr[str]]
|
|
15
15
|
"""Array of keys to press simultaneously"""
|
|
16
16
|
|
|
17
17
|
hold_time: Annotated[int, PropertyInfo(alias="holdTime")]
|
|
@@ -5,10 +5,10 @@ from datetime import datetime
|
|
|
5
5
|
|
|
6
6
|
from ..._models import BaseModel
|
|
7
7
|
|
|
8
|
-
__all__ = ["RecordingListResponse", "Data", "
|
|
8
|
+
__all__ = ["RecordingListResponse", "Data", "DataItem"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class DataItem(BaseModel):
|
|
12
12
|
id: Optional[str] = None
|
|
13
13
|
"""Unique identifier for the recording"""
|
|
14
14
|
|
|
@@ -31,15 +31,11 @@ class DataDataItem(BaseModel):
|
|
|
31
31
|
"""Suggested filename for the recording"""
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
class
|
|
34
|
+
class Data(BaseModel):
|
|
35
35
|
count: Optional[int] = None
|
|
36
36
|
"""Total number of video recordings"""
|
|
37
37
|
|
|
38
|
-
items: Optional[List[
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class Data(BaseModel):
|
|
42
|
-
data: Optional[DataData] = None
|
|
38
|
+
items: Optional[List[DataItem]] = None
|
|
43
39
|
|
|
44
40
|
|
|
45
41
|
class RecordingListResponse(BaseModel):
|
|
@@ -19,8 +19,23 @@ class ToolFetchWebpageParams(TypedDict, total=False):
|
|
|
19
19
|
format: Literal["html", "markdown"]
|
|
20
20
|
"""The output format of the content."""
|
|
21
21
|
|
|
22
|
+
new_page: bool
|
|
23
|
+
"""Whether to create a new page for the content."""
|
|
24
|
+
|
|
25
|
+
page_index: int
|
|
26
|
+
"""The index of the page to fetch content from. **Overides new_page**."""
|
|
27
|
+
|
|
28
|
+
return_partial_on_timeout: bool
|
|
29
|
+
"""
|
|
30
|
+
Whether to return partial content if the content is not loaded within the 20
|
|
31
|
+
seconds.
|
|
32
|
+
"""
|
|
33
|
+
|
|
22
34
|
url: str
|
|
23
35
|
"""The URL of the webpage to fetch content from.
|
|
24
36
|
|
|
25
37
|
When left empty, the current webpage is used.
|
|
26
38
|
"""
|
|
39
|
+
|
|
40
|
+
wait: int
|
|
41
|
+
"""The time to wait for **dynamic** content to load in **milliseconds**."""
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing_extensions import Required, Annotated, TypedDict
|
|
5
|
+
from typing_extensions import Literal, Required, Annotated, TypedDict
|
|
6
6
|
|
|
7
7
|
from .._utils import PropertyInfo
|
|
8
8
|
|
|
@@ -20,9 +20,25 @@ class ToolPerformWebTaskParams(TypedDict, total=False):
|
|
|
20
20
|
session.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
+
agent: Literal["browser-use", "openai-cua"]
|
|
24
|
+
"""The AI agent to use for task completion. Defaults to browser-use."""
|
|
25
|
+
|
|
26
|
+
highlight_elements: bool
|
|
27
|
+
"""Whether to highlight elements during task execution for better visibility."""
|
|
28
|
+
|
|
29
|
+
model: str
|
|
30
|
+
"""The specific model to use for task completion.
|
|
31
|
+
|
|
32
|
+
see our [models](/agentic-browser-control/ai-task-completion#available-models)
|
|
33
|
+
page for more information.
|
|
34
|
+
"""
|
|
35
|
+
|
|
23
36
|
output_schema: object
|
|
24
37
|
"""JSON Schema defining the expected structure of the output data."""
|
|
25
38
|
|
|
39
|
+
provider: Literal["openai", "gemini", "groq", "azure", "xai"]
|
|
40
|
+
"""The AI provider to use for task completion."""
|
|
41
|
+
|
|
26
42
|
url: str
|
|
27
43
|
"""The URL of the webpage.
|
|
28
44
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Optional
|
|
4
4
|
|
|
5
5
|
from .._models import BaseModel
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ __all__ = ["ToolPerformWebTaskResponse", "Data"]
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class Data(BaseModel):
|
|
11
|
-
result:
|
|
12
|
-
"""The outcome or answer
|
|
11
|
+
result: Optional[str] = None
|
|
12
|
+
"""The outcome or answer produced by the autonomous task."""
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ToolPerformWebTaskResponse(BaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: anchorbrowser
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: The official Python library for the anchorbrowser API
|
|
5
5
|
Project-URL: Homepage, https://github.com/anchorbrowser/AnchorBrowser-SDK-Python
|
|
6
6
|
Project-URL: Repository, https://github.com/anchorbrowser/AnchorBrowser-SDK-Python
|
|
@@ -25,11 +25,11 @@ Requires-Python: >=3.8
|
|
|
25
25
|
Requires-Dist: anyio<5,>=3.5.0
|
|
26
26
|
Requires-Dist: distro<2,>=1.7.0
|
|
27
27
|
Requires-Dist: httpx<1,>=0.23.0
|
|
28
|
+
Requires-Dist: playwright>=1.55.0
|
|
28
29
|
Requires-Dist: pydantic<3,>=1.9.0
|
|
29
|
-
Requires-Dist: pytest-playwright
|
|
30
30
|
Requires-Dist: sniffio
|
|
31
31
|
Requires-Dist: typing-extensions<5,>=4.10
|
|
32
|
-
Requires-Dist: websockets
|
|
32
|
+
Requires-Dist: websockets>=15.0.1
|
|
33
33
|
Provides-Extra: aiohttp
|
|
34
34
|
Requires-Dist: aiohttp; extra == 'aiohttp'
|
|
35
35
|
Requires-Dist: httpx-aiohttp>=0.1.8; extra == 'aiohttp'
|
|
@@ -54,7 +54,7 @@ The REST API documentation can be found on [docs.anchorbrowser.io](https://docs.
|
|
|
54
54
|
|
|
55
55
|
```sh
|
|
56
56
|
# install from PyPI
|
|
57
|
-
pip install
|
|
57
|
+
pip install anchorbrowser
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Usage
|
|
@@ -77,7 +77,7 @@ print(success_response.data)
|
|
|
77
77
|
|
|
78
78
|
While you can provide an `api_key` keyword argument,
|
|
79
79
|
we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
|
|
80
|
-
to add `ANCHORBROWSER_API_KEY="
|
|
80
|
+
to add `ANCHORBROWSER_API_KEY="Your API Key"` to your `.env` file
|
|
81
81
|
so that your API Key is not stored in source control.
|
|
82
82
|
|
|
83
83
|
## Async usage
|
|
@@ -114,7 +114,7 @@ You can enable this by installing `aiohttp`:
|
|
|
114
114
|
|
|
115
115
|
```sh
|
|
116
116
|
# install from PyPI
|
|
117
|
-
pip install
|
|
117
|
+
pip install anchorbrowser[aiohttp]
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
@@ -127,7 +127,7 @@ from anchorbrowser import AsyncAnchorbrowser
|
|
|
127
127
|
|
|
128
128
|
async def main() -> None:
|
|
129
129
|
async with AsyncAnchorbrowser(
|
|
130
|
-
api_key="
|
|
130
|
+
api_key="Your API Key",
|
|
131
131
|
http_client=DefaultAioHttpClient(),
|
|
132
132
|
) as client:
|
|
133
133
|
success_response = await client.profiles.create(
|
|
@@ -173,9 +173,8 @@ from anchorbrowser import Anchorbrowser
|
|
|
173
173
|
|
|
174
174
|
client = Anchorbrowser()
|
|
175
175
|
|
|
176
|
-
client.
|
|
176
|
+
client.sessions.upload_file(
|
|
177
177
|
file=Path("/path/to/file"),
|
|
178
|
-
name="My Custom Extension",
|
|
179
178
|
)
|
|
180
179
|
```
|
|
181
180
|
|