hyperbrowser 0.90.7__tar.gz → 0.91.0__tar.gz
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.
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/PKG-INFO +7 -1
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/README.md +6 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/computer_action.py +9 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/session.py +51 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/computer_action.py +9 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/session.py +51 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/__init__.py +23 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/computer_action.py +34 -1
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/session.py +113 -1
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/transport/async_transport.py +11 -4
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/transport/base.py +7 -1
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/transport/sync.py +11 -4
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/pyproject.toml +1 -1
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/LICENSE +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/async_client.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/base.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/browser_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/cua.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/hyper_agent.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandbox.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandboxes/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_files.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_processes.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_terminal.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_transport.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/team.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/volume.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/web/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/web/batch_fetch.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/web/crawl.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sandboxes/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sandboxes/shared.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/browser_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/cua.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandbox.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandboxes/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_files.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_processes.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_terminal.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_transport.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/team.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/volume.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/web/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/web/batch_fetch.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/web/crawl.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/sync.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/config.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/exceptions.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/_parsers.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/browser_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/claude_computer_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/cua.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/gemini_computer_use.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/hyper_agent.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/consts.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/crawl.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/extension.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/extract.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/profile.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/sandbox.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/scrape.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/team.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/volume.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/web/batch_fetch.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/web/branding.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/web/common.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/web/crawl.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/web/fetch.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/web/search.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/sandbox_common.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/tools/__init__.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/tools/anthropic.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/tools/openai.py +0 -0
- {hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/tools/schema.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hyperbrowser
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.91.0
|
|
4
4
|
Summary: Python SDK for hyperbrowser
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -48,6 +48,12 @@ Both the sync and async client follow similar configuration params
|
|
|
48
48
|
### API Key
|
|
49
49
|
The API key can be configured either from the constructor arguments or environment variables using `HYPERBROWSER_API_KEY`
|
|
50
50
|
|
|
51
|
+
If no API key is provided, the client falls back to a saved OAuth session created by `hx auth login`. By default it reads `~/.hx_config/auth/default.json`, or `~/.hx_config/auth/<profile>.json` when `HYPERBROWSER_PROFILE` or `ClientConfig(profile=...)` is set.
|
|
52
|
+
|
|
53
|
+
Profile names must match `^[A-Za-z0-9._-]+$`.
|
|
54
|
+
|
|
55
|
+
`base_url` and `HYPERBROWSER_BASE_URL` accept either `https://host` or `https://host/api`. The client normalizes both to the same control-plane base URL.
|
|
56
|
+
|
|
51
57
|
## Usage
|
|
52
58
|
|
|
53
59
|
### Async
|
|
@@ -22,6 +22,12 @@ Both the sync and async client follow similar configuration params
|
|
|
22
22
|
### API Key
|
|
23
23
|
The API key can be configured either from the constructor arguments or environment variables using `HYPERBROWSER_API_KEY`
|
|
24
24
|
|
|
25
|
+
If no API key is provided, the client falls back to a saved OAuth session created by `hx auth login`. By default it reads `~/.hx_config/auth/default.json`, or `~/.hx_config/auth/<profile>.json` when `HYPERBROWSER_PROFILE` or `ClientConfig(profile=...)` is set.
|
|
26
|
+
|
|
27
|
+
Profile names must match `^[A-Za-z0-9._-]+$`.
|
|
28
|
+
|
|
29
|
+
`base_url` and `HYPERBROWSER_BASE_URL` accept either `https://host` or `https://host/api`. The client normalizes both to the same control-plane base URL.
|
|
30
|
+
|
|
25
31
|
## Usage
|
|
26
32
|
|
|
27
33
|
### Async
|
|
@@ -18,6 +18,7 @@ from hyperbrowser.models import (
|
|
|
18
18
|
ComputerActionMouseButton,
|
|
19
19
|
GetClipboardTextActionParams,
|
|
20
20
|
PutSelectionTextActionParams,
|
|
21
|
+
ListWindowsActionParams,
|
|
21
22
|
)
|
|
22
23
|
|
|
23
24
|
|
|
@@ -175,3 +176,11 @@ class ComputerActionManager:
|
|
|
175
176
|
text=text, return_screenshot=return_screenshot
|
|
176
177
|
)
|
|
177
178
|
return await self._execute_request(session, params)
|
|
179
|
+
|
|
180
|
+
async def list_windows(
|
|
181
|
+
self,
|
|
182
|
+
session: Union[SessionDetail, str],
|
|
183
|
+
return_screenshot: bool = False,
|
|
184
|
+
) -> ComputerActionResponse:
|
|
185
|
+
params = ListWindowsActionParams(return_screenshot=return_screenshot)
|
|
186
|
+
return await self._execute_request(session, params)
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/session.py
RENAMED
|
@@ -2,6 +2,8 @@ from typing import List, Optional, Union, IO, overload
|
|
|
2
2
|
import warnings
|
|
3
3
|
from ....models.session import (
|
|
4
4
|
BasicResponse,
|
|
5
|
+
CaptchaEvaluationParams,
|
|
6
|
+
CaptchaEvaluationResponse,
|
|
5
7
|
CreateSessionParams,
|
|
6
8
|
GetSessionDownloadsUrlResponse,
|
|
7
9
|
GetSessionRecordingUrlResponse,
|
|
@@ -17,9 +19,13 @@ from ....models.session import (
|
|
|
17
19
|
UpdateSessionProfileParams,
|
|
18
20
|
UpdateSessionProxyParams,
|
|
19
21
|
UpdateSessionScreenParams,
|
|
22
|
+
UpdateSessionSolveCaptchasParams,
|
|
23
|
+
UpdateSessionSolveCaptchasResponse,
|
|
20
24
|
SessionGetParams,
|
|
21
25
|
)
|
|
22
26
|
|
|
27
|
+
CAPTCHA_EVALUATION_REQUEST_TIMEOUT_SECONDS = 185
|
|
28
|
+
|
|
23
29
|
|
|
24
30
|
class SessionEventLogsManager:
|
|
25
31
|
def __init__(self, client):
|
|
@@ -70,6 +76,21 @@ class SessionManager:
|
|
|
70
76
|
)
|
|
71
77
|
return BasicResponse(**response.data)
|
|
72
78
|
|
|
79
|
+
async def evaluate_captcha(
|
|
80
|
+
self,
|
|
81
|
+
id: str,
|
|
82
|
+
params: Optional[CaptchaEvaluationParams] = None,
|
|
83
|
+
) -> CaptchaEvaluationResponse:
|
|
84
|
+
params_obj = params or CaptchaEvaluationParams()
|
|
85
|
+
response = await self._client.transport.post(
|
|
86
|
+
self._client._build_url(f"/session/{id}/captcha/evaluate"),
|
|
87
|
+
data=params_obj.model_dump(exclude_none=True, by_alias=True),
|
|
88
|
+
timeout=max(
|
|
89
|
+
self._client.timeout, CAPTCHA_EVALUATION_REQUEST_TIMEOUT_SECONDS
|
|
90
|
+
),
|
|
91
|
+
)
|
|
92
|
+
return CaptchaEvaluationResponse(**response.data)
|
|
93
|
+
|
|
73
94
|
async def list(
|
|
74
95
|
self, params: SessionListParams = SessionListParams()
|
|
75
96
|
) -> SessionListResponse:
|
|
@@ -213,6 +234,36 @@ class SessionManager:
|
|
|
213
234
|
)
|
|
214
235
|
return BasicResponse(**response.data)
|
|
215
236
|
|
|
237
|
+
async def start_captcha_solving(
|
|
238
|
+
self,
|
|
239
|
+
id: str,
|
|
240
|
+
params: Optional[UpdateSessionSolveCaptchasParams] = None,
|
|
241
|
+
) -> UpdateSessionSolveCaptchasResponse:
|
|
242
|
+
params_obj = params or UpdateSessionSolveCaptchasParams()
|
|
243
|
+
response = await self._client.transport.put(
|
|
244
|
+
self._client._build_url(f"/session/{id}/update"),
|
|
245
|
+
data={
|
|
246
|
+
"type": "solveCaptchas",
|
|
247
|
+
"params": {
|
|
248
|
+
"enabled": True,
|
|
249
|
+
**params_obj.model_dump(exclude_none=True, by_alias=True),
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
)
|
|
253
|
+
return UpdateSessionSolveCaptchasResponse(**response.data)
|
|
254
|
+
|
|
255
|
+
async def stop_captcha_solving(self, id: str) -> UpdateSessionSolveCaptchasResponse:
|
|
256
|
+
response = await self._client.transport.put(
|
|
257
|
+
self._client._build_url(f"/session/{id}/update"),
|
|
258
|
+
data={
|
|
259
|
+
"type": "solveCaptchas",
|
|
260
|
+
"params": {
|
|
261
|
+
"enabled": False,
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
)
|
|
265
|
+
return UpdateSessionSolveCaptchasResponse(**response.data)
|
|
266
|
+
|
|
216
267
|
def _warn_update_profile_params_boolean_deprecated(self) -> None:
|
|
217
268
|
if SessionManager._has_warned_update_profile_params_boolean_deprecated:
|
|
218
269
|
return
|
|
@@ -18,6 +18,7 @@ from hyperbrowser.models import (
|
|
|
18
18
|
ComputerActionMouseButton,
|
|
19
19
|
GetClipboardTextActionParams,
|
|
20
20
|
PutSelectionTextActionParams,
|
|
21
|
+
ListWindowsActionParams,
|
|
21
22
|
)
|
|
22
23
|
|
|
23
24
|
|
|
@@ -175,3 +176,11 @@ class ComputerActionManager:
|
|
|
175
176
|
text=text, return_screenshot=return_screenshot
|
|
176
177
|
)
|
|
177
178
|
return self._execute_request(session, params)
|
|
179
|
+
|
|
180
|
+
def list_windows(
|
|
181
|
+
self,
|
|
182
|
+
session: Union[SessionDetail, str],
|
|
183
|
+
return_screenshot: bool = False,
|
|
184
|
+
) -> ComputerActionResponse:
|
|
185
|
+
params = ListWindowsActionParams(return_screenshot=return_screenshot)
|
|
186
|
+
return self._execute_request(session, params)
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/session.py
RENAMED
|
@@ -2,6 +2,8 @@ from typing import List, Optional, Union, IO, overload
|
|
|
2
2
|
import warnings
|
|
3
3
|
from ....models.session import (
|
|
4
4
|
BasicResponse,
|
|
5
|
+
CaptchaEvaluationParams,
|
|
6
|
+
CaptchaEvaluationResponse,
|
|
5
7
|
CreateSessionParams,
|
|
6
8
|
GetSessionDownloadsUrlResponse,
|
|
7
9
|
GetSessionRecordingUrlResponse,
|
|
@@ -16,9 +18,13 @@ from ....models.session import (
|
|
|
16
18
|
UpdateSessionProfileParams,
|
|
17
19
|
UpdateSessionProxyParams,
|
|
18
20
|
UpdateSessionScreenParams,
|
|
21
|
+
UpdateSessionSolveCaptchasParams,
|
|
22
|
+
UpdateSessionSolveCaptchasResponse,
|
|
19
23
|
SessionGetParams,
|
|
20
24
|
)
|
|
21
25
|
|
|
26
|
+
CAPTCHA_EVALUATION_REQUEST_TIMEOUT_SECONDS = 185
|
|
27
|
+
|
|
22
28
|
|
|
23
29
|
class SessionEventLogsManager:
|
|
24
30
|
def __init__(self, client):
|
|
@@ -69,6 +75,21 @@ class SessionManager:
|
|
|
69
75
|
)
|
|
70
76
|
return BasicResponse(**response.data)
|
|
71
77
|
|
|
78
|
+
def evaluate_captcha(
|
|
79
|
+
self,
|
|
80
|
+
id: str,
|
|
81
|
+
params: Optional[CaptchaEvaluationParams] = None,
|
|
82
|
+
) -> CaptchaEvaluationResponse:
|
|
83
|
+
params_obj = params or CaptchaEvaluationParams()
|
|
84
|
+
response = self._client.transport.post(
|
|
85
|
+
self._client._build_url(f"/session/{id}/captcha/evaluate"),
|
|
86
|
+
data=params_obj.model_dump(exclude_none=True, by_alias=True),
|
|
87
|
+
timeout=max(
|
|
88
|
+
self._client.timeout, CAPTCHA_EVALUATION_REQUEST_TIMEOUT_SECONDS
|
|
89
|
+
),
|
|
90
|
+
)
|
|
91
|
+
return CaptchaEvaluationResponse(**response.data)
|
|
92
|
+
|
|
72
93
|
def list(
|
|
73
94
|
self, params: SessionListParams = SessionListParams()
|
|
74
95
|
) -> SessionListResponse:
|
|
@@ -208,6 +229,36 @@ class SessionManager:
|
|
|
208
229
|
)
|
|
209
230
|
return BasicResponse(**response.data)
|
|
210
231
|
|
|
232
|
+
def start_captcha_solving(
|
|
233
|
+
self,
|
|
234
|
+
id: str,
|
|
235
|
+
params: Optional[UpdateSessionSolveCaptchasParams] = None,
|
|
236
|
+
) -> UpdateSessionSolveCaptchasResponse:
|
|
237
|
+
params_obj = params or UpdateSessionSolveCaptchasParams()
|
|
238
|
+
response = self._client.transport.put(
|
|
239
|
+
self._client._build_url(f"/session/{id}/update"),
|
|
240
|
+
data={
|
|
241
|
+
"type": "solveCaptchas",
|
|
242
|
+
"params": {
|
|
243
|
+
"enabled": True,
|
|
244
|
+
**params_obj.model_dump(exclude_none=True, by_alias=True),
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
)
|
|
248
|
+
return UpdateSessionSolveCaptchasResponse(**response.data)
|
|
249
|
+
|
|
250
|
+
def stop_captcha_solving(self, id: str) -> UpdateSessionSolveCaptchasResponse:
|
|
251
|
+
response = self._client.transport.put(
|
|
252
|
+
self._client._build_url(f"/session/{id}/update"),
|
|
253
|
+
data={
|
|
254
|
+
"type": "solveCaptchas",
|
|
255
|
+
"params": {
|
|
256
|
+
"enabled": False,
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
)
|
|
260
|
+
return UpdateSessionSolveCaptchasResponse(**response.data)
|
|
261
|
+
|
|
211
262
|
def _warn_update_profile_params_boolean_deprecated(self) -> None:
|
|
212
263
|
if SessionManager._has_warned_update_profile_params_boolean_deprecated:
|
|
213
264
|
return
|
|
@@ -233,7 +233,10 @@ from .computer_action import (
|
|
|
233
233
|
ComputerActionMouseButton,
|
|
234
234
|
GetClipboardTextActionParams,
|
|
235
235
|
PutSelectionTextActionParams,
|
|
236
|
+
ListWindowsActionParams,
|
|
237
|
+
ComputerActionWindow,
|
|
236
238
|
ComputerActionResponseDataClipboardText,
|
|
239
|
+
ComputerActionResponseDataListWindows,
|
|
237
240
|
ComputerActionResponseData,
|
|
238
241
|
)
|
|
239
242
|
from .session import (
|
|
@@ -259,10 +262,18 @@ from .session import (
|
|
|
259
262
|
SessionLaunchState,
|
|
260
263
|
UploadFileResponse,
|
|
261
264
|
ImageCaptchaParam,
|
|
265
|
+
CaptchaSolverType,
|
|
266
|
+
CaptchaEvaluationPageResult,
|
|
267
|
+
CaptchaEvaluationParams,
|
|
268
|
+
CaptchaEvaluationResponse,
|
|
269
|
+
CaptchaEvaluationTarget,
|
|
270
|
+
CaptchaEvaluationType,
|
|
262
271
|
UpdateSessionProfileParams,
|
|
263
272
|
UpdateSessionProxyLocationParams,
|
|
264
273
|
UpdateSessionProxyParams,
|
|
265
274
|
UpdateSessionScreenParams,
|
|
275
|
+
UpdateSessionSolveCaptchasParams,
|
|
276
|
+
UpdateSessionSolveCaptchasResponse,
|
|
266
277
|
)
|
|
267
278
|
from .sandbox import (
|
|
268
279
|
SandboxStatus,
|
|
@@ -521,10 +532,18 @@ __all__ = [
|
|
|
521
532
|
"SessionLaunchState",
|
|
522
533
|
"UploadFileResponse",
|
|
523
534
|
"ImageCaptchaParam",
|
|
535
|
+
"CaptchaSolverType",
|
|
536
|
+
"CaptchaEvaluationPageResult",
|
|
537
|
+
"CaptchaEvaluationParams",
|
|
538
|
+
"CaptchaEvaluationResponse",
|
|
539
|
+
"CaptchaEvaluationTarget",
|
|
540
|
+
"CaptchaEvaluationType",
|
|
524
541
|
"UpdateSessionProfileParams",
|
|
525
542
|
"UpdateSessionProxyLocationParams",
|
|
526
543
|
"UpdateSessionProxyParams",
|
|
527
544
|
"UpdateSessionScreenParams",
|
|
545
|
+
"UpdateSessionSolveCaptchasParams",
|
|
546
|
+
"UpdateSessionSolveCaptchasResponse",
|
|
528
547
|
# sandbox
|
|
529
548
|
"SandboxStatus",
|
|
530
549
|
"SandboxRegion",
|
|
@@ -548,6 +567,7 @@ __all__ = [
|
|
|
548
567
|
"SandboxMemorySnapshotResult",
|
|
549
568
|
"SandboxExposeParams",
|
|
550
569
|
"SandboxExposeResult",
|
|
570
|
+
"SandboxUnexposeResult",
|
|
551
571
|
"SandboxProcessStatus",
|
|
552
572
|
"SandboxExecParams",
|
|
553
573
|
"SandboxProcessSummary",
|
|
@@ -628,7 +648,10 @@ __all__ = [
|
|
|
628
648
|
"ComputerActionMouseButton",
|
|
629
649
|
"GetClipboardTextActionParams",
|
|
630
650
|
"PutSelectionTextActionParams",
|
|
651
|
+
"ListWindowsActionParams",
|
|
652
|
+
"ComputerActionWindow",
|
|
631
653
|
"ComputerActionResponseDataClipboardText",
|
|
654
|
+
"ComputerActionResponseDataListWindows",
|
|
632
655
|
"ComputerActionResponseData",
|
|
633
656
|
# web
|
|
634
657
|
"StartBatchFetchJobParams",
|
|
@@ -18,6 +18,7 @@ class ComputerAction(str, Enum):
|
|
|
18
18
|
TYPE_TEXT = "type_text"
|
|
19
19
|
GET_CLIPBOARD_TEXT = "get_clipboard_text"
|
|
20
20
|
PUT_SELECTION_TEXT = "put_selection_text"
|
|
21
|
+
LIST_WINDOWS = "list_windows"
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
ComputerActionMouseButton = Literal[
|
|
@@ -183,6 +184,17 @@ class PutSelectionTextActionParams(BaseModel):
|
|
|
183
184
|
)
|
|
184
185
|
|
|
185
186
|
|
|
187
|
+
class ListWindowsActionParams(BaseModel):
|
|
188
|
+
"""Parameters for list windows action."""
|
|
189
|
+
|
|
190
|
+
model_config = ConfigDict(use_enum_values=True)
|
|
191
|
+
|
|
192
|
+
action: Literal[ComputerAction.LIST_WINDOWS] = ComputerAction.LIST_WINDOWS
|
|
193
|
+
return_screenshot: bool = Field(
|
|
194
|
+
serialization_alias="returnScreenshot", default=False
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
|
|
186
198
|
ComputerActionParams = Union[
|
|
187
199
|
ClickActionParams,
|
|
188
200
|
DragActionParams,
|
|
@@ -196,6 +208,7 @@ ComputerActionParams = Union[
|
|
|
196
208
|
MouseUpActionParams,
|
|
197
209
|
GetClipboardTextActionParams,
|
|
198
210
|
PutSelectionTextActionParams,
|
|
211
|
+
ListWindowsActionParams,
|
|
199
212
|
]
|
|
200
213
|
|
|
201
214
|
|
|
@@ -207,7 +220,27 @@ class ComputerActionResponseDataClipboardText(BaseModel):
|
|
|
207
220
|
clipboard_text: Optional[str] = Field(default=None, alias="clipboardText")
|
|
208
221
|
|
|
209
222
|
|
|
210
|
-
|
|
223
|
+
class ComputerActionWindow(BaseModel):
|
|
224
|
+
model_config = ConfigDict(populate_by_alias=True)
|
|
225
|
+
|
|
226
|
+
id: str
|
|
227
|
+
name: str
|
|
228
|
+
active: bool
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class ComputerActionResponseDataListWindows(BaseModel):
|
|
232
|
+
"""Data for list windows action."""
|
|
233
|
+
|
|
234
|
+
model_config = ConfigDict(populate_by_alias=True)
|
|
235
|
+
|
|
236
|
+
active_window_id: str = Field(default="", alias="activeWindowId")
|
|
237
|
+
windows: List[ComputerActionWindow] = Field(default_factory=list)
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
ComputerActionResponseData = Union[
|
|
241
|
+
ComputerActionResponseDataListWindows,
|
|
242
|
+
ComputerActionResponseDataClipboardText,
|
|
243
|
+
]
|
|
211
244
|
|
|
212
245
|
|
|
213
246
|
class ComputerActionResponse(BaseModel):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
-
from typing import Any, List, Literal, Optional, Union
|
|
2
|
+
from typing import Any, Dict, List, Literal, Optional, Union
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
5
5
|
|
|
@@ -16,6 +16,16 @@ from hyperbrowser.models.consts import (
|
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
SessionStatus = Literal["active", "closed", "error"]
|
|
19
|
+
CaptchaSolverType = Literal["visual"]
|
|
20
|
+
CaptchaEvaluationType = Literal[
|
|
21
|
+
"turnstile",
|
|
22
|
+
"cloudflare-challenge",
|
|
23
|
+
"aliexpress",
|
|
24
|
+
"recaptcha",
|
|
25
|
+
"recaptcha-visual",
|
|
26
|
+
"amazon",
|
|
27
|
+
]
|
|
28
|
+
CaptchaEvaluationTarget = CaptchaEvaluationType
|
|
19
29
|
|
|
20
30
|
|
|
21
31
|
class BasicResponse(BaseModel):
|
|
@@ -134,6 +144,7 @@ class SessionLaunchState(BaseModel):
|
|
|
134
144
|
)
|
|
135
145
|
enable_log_capture: Optional[bool] = Field(default=None, alias="enableLogCapture")
|
|
136
146
|
accept_cookies: Optional[bool] = Field(default=None, alias="acceptCookies")
|
|
147
|
+
solver_type: Optional[CaptchaSolverType] = Field(default=None, alias="solverType")
|
|
137
148
|
profile: Optional[SessionProfile] = Field(default=None, alias="profile")
|
|
138
149
|
static_ip_id: Optional[str] = Field(default=None, alias="staticIpId")
|
|
139
150
|
save_downloads: Optional[bool] = Field(default=None, alias="saveDownloads")
|
|
@@ -303,6 +314,75 @@ class ImageCaptchaParam(BaseModel):
|
|
|
303
314
|
input_selector: str = Field(serialization_alias="inputSelector")
|
|
304
315
|
|
|
305
316
|
|
|
317
|
+
class CaptchaEvaluationParams(BaseModel):
|
|
318
|
+
"""
|
|
319
|
+
Parameters for manually evaluating captchas in a running session.
|
|
320
|
+
"""
|
|
321
|
+
|
|
322
|
+
model_config = ConfigDict(
|
|
323
|
+
populate_by_alias=True,
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
captcha: Optional[CaptchaEvaluationTarget] = Field(default=None)
|
|
327
|
+
captcha_type: Optional[CaptchaEvaluationTarget] = Field(
|
|
328
|
+
default=None, serialization_alias="captchaType"
|
|
329
|
+
)
|
|
330
|
+
text: Optional[CaptchaEvaluationTarget] = Field(default=None)
|
|
331
|
+
iterations: Optional[int] = Field(default=None)
|
|
332
|
+
max_iterations: Optional[int] = Field(
|
|
333
|
+
default=None, serialization_alias="maxIterations"
|
|
334
|
+
)
|
|
335
|
+
solver_type: Optional[CaptchaSolverType] = Field(
|
|
336
|
+
default=None, serialization_alias="solverType"
|
|
337
|
+
)
|
|
338
|
+
image_captcha_params: Optional[List[ImageCaptchaParam]] = Field(
|
|
339
|
+
default=None, serialization_alias="imageCaptchaParams"
|
|
340
|
+
)
|
|
341
|
+
use_gemini_captcha_solver: Optional[bool] = Field(
|
|
342
|
+
default=None, serialization_alias="useGeminiCaptchaSolver"
|
|
343
|
+
)
|
|
344
|
+
use_ultra_stealth: Optional[bool] = Field(
|
|
345
|
+
default=None, serialization_alias="useUltraStealth"
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
class CaptchaEvaluationPageResult(BaseModel):
|
|
350
|
+
"""
|
|
351
|
+
Result of manually evaluating captchas on a single page target.
|
|
352
|
+
"""
|
|
353
|
+
|
|
354
|
+
model_config = ConfigDict(
|
|
355
|
+
populate_by_alias=True,
|
|
356
|
+
)
|
|
357
|
+
|
|
358
|
+
url: str = Field(alias="url")
|
|
359
|
+
target_id: Optional[str] = Field(default=None, alias="targetId")
|
|
360
|
+
iterations_run: int = Field(alias="iterationsRun")
|
|
361
|
+
solved: bool = Field(alias="solved")
|
|
362
|
+
solved_captchas: List[CaptchaEvaluationType] = Field(alias="solvedCaptchas")
|
|
363
|
+
checked_captchas: List[CaptchaEvaluationType] = Field(alias="checkedCaptchas")
|
|
364
|
+
captcha_solved_counts: Dict[str, int] = Field(alias="captchaSolvedCounts")
|
|
365
|
+
last_solve_time: Dict[str, float] = Field(alias="lastSolveTime")
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
class CaptchaEvaluationResponse(BaseModel):
|
|
369
|
+
"""
|
|
370
|
+
Response from manually evaluating captchas in a running session.
|
|
371
|
+
"""
|
|
372
|
+
|
|
373
|
+
model_config = ConfigDict(
|
|
374
|
+
populate_by_alias=True,
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
success: bool = Field(alias="success")
|
|
378
|
+
captcha: Optional[CaptchaEvaluationType] = Field(default=None, alias="captcha")
|
|
379
|
+
iterations_requested: int = Field(alias="iterationsRequested")
|
|
380
|
+
iterations_run: int = Field(alias="iterationsRun")
|
|
381
|
+
solved: bool = Field(alias="solved")
|
|
382
|
+
solved_captchas: List[CaptchaEvaluationType] = Field(alias="solvedCaptchas")
|
|
383
|
+
pages: List[CaptchaEvaluationPageResult] = Field(alias="pages")
|
|
384
|
+
|
|
385
|
+
|
|
306
386
|
class CreateSessionParams(BaseModel):
|
|
307
387
|
"""
|
|
308
388
|
Parameters for creating a new browser session.
|
|
@@ -337,6 +417,9 @@ class CreateSessionParams(BaseModel):
|
|
|
337
417
|
locales: List[ISO639_1] = Field(default=["en"])
|
|
338
418
|
screen: Optional[ScreenConfig] = Field(default=None)
|
|
339
419
|
solve_captchas: bool = Field(default=False, serialization_alias="solveCaptchas")
|
|
420
|
+
solver_type: Optional[CaptchaSolverType] = Field(
|
|
421
|
+
default=None, serialization_alias="solverType"
|
|
422
|
+
)
|
|
340
423
|
adblock: bool = Field(default=False, serialization_alias="adblock")
|
|
341
424
|
trackers: bool = Field(default=False, serialization_alias="trackers")
|
|
342
425
|
annoyances: bool = Field(default=False, serialization_alias="annoyances")
|
|
@@ -480,6 +563,35 @@ class UploadFileResponse(BaseModel):
|
|
|
480
563
|
original_name: Optional[str] = Field(default=None, alias="originalName")
|
|
481
564
|
|
|
482
565
|
|
|
566
|
+
class UpdateSessionSolveCaptchasParams(BaseModel):
|
|
567
|
+
"""
|
|
568
|
+
Parameters for starting automatic captcha solving in a running session.
|
|
569
|
+
"""
|
|
570
|
+
|
|
571
|
+
model_config = ConfigDict(
|
|
572
|
+
populate_by_alias=True,
|
|
573
|
+
)
|
|
574
|
+
|
|
575
|
+
solver_type: Optional[CaptchaSolverType] = Field(
|
|
576
|
+
default=None,
|
|
577
|
+
serialization_alias="solverType",
|
|
578
|
+
)
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
class UpdateSessionSolveCaptchasResponse(BasicResponse):
|
|
582
|
+
"""
|
|
583
|
+
Response from updating automatic captcha solving in a running session.
|
|
584
|
+
"""
|
|
585
|
+
|
|
586
|
+
model_config = ConfigDict(
|
|
587
|
+
populate_by_alias=True,
|
|
588
|
+
)
|
|
589
|
+
|
|
590
|
+
solve_captchas: Optional[bool] = Field(default=None, alias="solveCaptchas")
|
|
591
|
+
session_id: Optional[str] = Field(default=None, alias="sessionId")
|
|
592
|
+
telemetry_ready: Optional[bool] = Field(default=None, alias="telemetryReady")
|
|
593
|
+
|
|
594
|
+
|
|
483
595
|
class SessionEventLog(BaseModel):
|
|
484
596
|
model_config = ConfigDict(
|
|
485
597
|
populate_by_alias=True,
|
|
@@ -55,7 +55,7 @@ class AsyncTransport(TransportStrategy):
|
|
|
55
55
|
try:
|
|
56
56
|
error_data = response.json()
|
|
57
57
|
message = error_data.get("message") or error_data.get("error") or str(e)
|
|
58
|
-
except:
|
|
58
|
+
except Exception:
|
|
59
59
|
message = str(e)
|
|
60
60
|
raise HyperbrowserError(
|
|
61
61
|
message,
|
|
@@ -67,13 +67,20 @@ class AsyncTransport(TransportStrategy):
|
|
|
67
67
|
raise HyperbrowserError("Request failed", original_error=e)
|
|
68
68
|
|
|
69
69
|
async def post(
|
|
70
|
-
self,
|
|
70
|
+
self,
|
|
71
|
+
url: str,
|
|
72
|
+
data: Optional[dict] = None,
|
|
73
|
+
files: Optional[dict] = None,
|
|
74
|
+
timeout: Optional[float] = None,
|
|
71
75
|
) -> APIResponse:
|
|
72
76
|
try:
|
|
77
|
+
kwargs = {}
|
|
78
|
+
if timeout is not None:
|
|
79
|
+
kwargs["timeout"] = timeout
|
|
73
80
|
if files:
|
|
74
|
-
response = await self.client.post(url, data=data, files=files)
|
|
81
|
+
response = await self.client.post(url, data=data, files=files, **kwargs)
|
|
75
82
|
else:
|
|
76
|
-
response = await self.client.post(url, json=data)
|
|
83
|
+
response = await self.client.post(url, json=data, **kwargs)
|
|
77
84
|
return await self._handle_response(response)
|
|
78
85
|
except HyperbrowserError:
|
|
79
86
|
raise
|
|
@@ -45,7 +45,13 @@ class TransportStrategy(ABC):
|
|
|
45
45
|
pass
|
|
46
46
|
|
|
47
47
|
@abstractmethod
|
|
48
|
-
def post(
|
|
48
|
+
def post(
|
|
49
|
+
self,
|
|
50
|
+
url: str,
|
|
51
|
+
data: Optional[dict] = None,
|
|
52
|
+
files: Optional[dict] = None,
|
|
53
|
+
timeout: Optional[float] = None,
|
|
54
|
+
) -> APIResponse:
|
|
49
55
|
pass
|
|
50
56
|
|
|
51
57
|
@abstractmethod
|
|
@@ -31,7 +31,7 @@ class SyncTransport(TransportStrategy):
|
|
|
31
31
|
try:
|
|
32
32
|
error_data = response.json()
|
|
33
33
|
message = error_data.get("message") or error_data.get("error") or str(e)
|
|
34
|
-
except:
|
|
34
|
+
except Exception:
|
|
35
35
|
message = str(e)
|
|
36
36
|
raise HyperbrowserError(
|
|
37
37
|
message,
|
|
@@ -46,13 +46,20 @@ class SyncTransport(TransportStrategy):
|
|
|
46
46
|
self.client.close()
|
|
47
47
|
|
|
48
48
|
def post(
|
|
49
|
-
self,
|
|
49
|
+
self,
|
|
50
|
+
url: str,
|
|
51
|
+
data: Optional[dict] = None,
|
|
52
|
+
files: Optional[dict] = None,
|
|
53
|
+
timeout: Optional[float] = None,
|
|
50
54
|
) -> APIResponse:
|
|
51
55
|
try:
|
|
56
|
+
kwargs = {}
|
|
57
|
+
if timeout is not None:
|
|
58
|
+
kwargs["timeout"] = timeout
|
|
52
59
|
if files:
|
|
53
|
-
response = self.client.post(url, data=data, files=files)
|
|
60
|
+
response = self.client.post(url, data=data, files=files, **kwargs)
|
|
54
61
|
else:
|
|
55
|
-
response = self.client.post(url, json=data)
|
|
62
|
+
response = self.client.post(url, json=data, **kwargs)
|
|
56
63
|
return self._handle_response(response)
|
|
57
64
|
except HyperbrowserError:
|
|
58
65
|
raise
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/agents/cua.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/crawl.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/extension.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/extract.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/profile.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/sandbox.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/scrape.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/team.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/volume.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/async_manager/web/crawl.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sandboxes/__init__.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sandboxes/shared.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/agents/cua.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/crawl.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/extension.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/extract.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/profile.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/sandbox.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/scrape.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/team.py
RENAMED
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/volume.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/client/managers/sync_manager/web/crawl.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/claude_computer_use.py
RENAMED
|
File without changes
|
|
File without changes
|
{hyperbrowser-0.90.7 → hyperbrowser-0.91.0}/hyperbrowser/models/agents/gemini_computer_use.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|