hyperbrowser 0.44.0__py3-none-any.whl → 0.72.0__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.
Potentially problematic release.
This version of hyperbrowser might be problematic. Click here for more details.
- hyperbrowser/client/async_client.py +4 -0
- hyperbrowser/client/base.py +1 -1
- hyperbrowser/client/managers/async_manager/agents/__init__.py +2 -0
- hyperbrowser/client/managers/async_manager/agents/browser_use.py +8 -0
- hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +71 -0
- hyperbrowser/client/managers/async_manager/computer_action.py +165 -0
- hyperbrowser/client/managers/async_manager/crawl.py +1 -0
- hyperbrowser/client/managers/async_manager/scrape.py +1 -0
- hyperbrowser/client/managers/async_manager/session.py +42 -1
- hyperbrowser/client/managers/async_manager/team.py +12 -0
- hyperbrowser/client/managers/sync_manager/agents/__init__.py +2 -0
- hyperbrowser/client/managers/sync_manager/agents/browser_use.py +8 -0
- hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +1 -1
- hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +71 -0
- hyperbrowser/client/managers/sync_manager/computer_action.py +165 -0
- hyperbrowser/client/managers/sync_manager/crawl.py +1 -0
- hyperbrowser/client/managers/sync_manager/scrape.py +1 -0
- hyperbrowser/client/managers/sync_manager/session.py +40 -1
- hyperbrowser/client/managers/sync_manager/team.py +12 -0
- hyperbrowser/client/sync.py +4 -0
- hyperbrowser/config.py +2 -2
- hyperbrowser/models/__init__.py +137 -0
- hyperbrowser/models/agents/browser_use.py +113 -3
- hyperbrowser/models/agents/claude_computer_use.py +38 -0
- hyperbrowser/models/agents/cua.py +32 -0
- hyperbrowser/models/agents/gemini_computer_use.py +135 -0
- hyperbrowser/models/agents/hyper_agent.py +31 -0
- hyperbrowser/models/computer_action.py +208 -0
- hyperbrowser/models/consts.py +27 -0
- hyperbrowser/models/extract.py +11 -0
- hyperbrowser/models/scrape.py +18 -0
- hyperbrowser/models/session.py +148 -11
- hyperbrowser/models/team.py +15 -0
- {hyperbrowser-0.44.0.dist-info → hyperbrowser-0.72.0.dist-info}/METADATA +8 -2
- hyperbrowser-0.72.0.dist-info/RECORD +60 -0
- {hyperbrowser-0.44.0.dist-info → hyperbrowser-0.72.0.dist-info}/WHEEL +1 -1
- {hyperbrowser-0.44.0.dist-info → hyperbrowser-0.72.0.dist-info/licenses}/LICENSE +1 -1
- hyperbrowser-0.44.0.dist-info/RECORD +0 -51
|
@@ -109,6 +109,7 @@ class BatchScrapeManager:
|
|
|
109
109
|
job_response.total_scraped_pages = tmp_job_response.total_scraped_pages
|
|
110
110
|
job_response.total_page_batches = tmp_job_response.total_page_batches
|
|
111
111
|
job_response.batch_size = tmp_job_response.batch_size
|
|
112
|
+
job_response.error = tmp_job_response.error
|
|
112
113
|
failures = 0
|
|
113
114
|
first_check = False
|
|
114
115
|
except Exception as e:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import List
|
|
1
|
+
from typing import List, Union, IO
|
|
2
2
|
from ....models.session import (
|
|
3
3
|
BasicResponse,
|
|
4
4
|
CreateSessionParams,
|
|
@@ -9,12 +9,33 @@ from ....models.session import (
|
|
|
9
9
|
SessionListParams,
|
|
10
10
|
SessionListResponse,
|
|
11
11
|
SessionRecording,
|
|
12
|
+
UploadFileResponse,
|
|
13
|
+
SessionEventLogListParams,
|
|
14
|
+
SessionEventLogListResponse,
|
|
15
|
+
SessionEventLog,
|
|
12
16
|
)
|
|
13
17
|
|
|
14
18
|
|
|
19
|
+
class SessionEventLogsManager:
|
|
20
|
+
def __init__(self, client):
|
|
21
|
+
self._client = client
|
|
22
|
+
|
|
23
|
+
def list(
|
|
24
|
+
self,
|
|
25
|
+
session_id: str,
|
|
26
|
+
params: SessionEventLogListParams = SessionEventLogListParams(),
|
|
27
|
+
) -> SessionEventLogListResponse:
|
|
28
|
+
response = self._client.transport.get(
|
|
29
|
+
self._client._build_url(f"/session/{session_id}/event-logs"),
|
|
30
|
+
params=params.model_dump(exclude_none=True, by_alias=True),
|
|
31
|
+
)
|
|
32
|
+
return SessionEventLogListResponse(**response.data)
|
|
33
|
+
|
|
34
|
+
|
|
15
35
|
class SessionManager:
|
|
16
36
|
def __init__(self, client):
|
|
17
37
|
self._client = client
|
|
38
|
+
self.event_logs = SessionEventLogsManager(client)
|
|
18
39
|
|
|
19
40
|
def create(self, params: CreateSessionParams = None) -> SessionDetail:
|
|
20
41
|
response = self._client.transport.post(
|
|
@@ -69,3 +90,21 @@ class SessionManager:
|
|
|
69
90
|
self._client._build_url(f"/session/{id}/downloads-url")
|
|
70
91
|
)
|
|
71
92
|
return GetSessionDownloadsUrlResponse(**response.data)
|
|
93
|
+
|
|
94
|
+
def upload_file(self, id: str, file_input: Union[str, IO]) -> UploadFileResponse:
|
|
95
|
+
response = None
|
|
96
|
+
if isinstance(file_input, str):
|
|
97
|
+
with open(file_input, "rb") as file_obj:
|
|
98
|
+
files = {"file": file_obj}
|
|
99
|
+
response = self._client.transport.post(
|
|
100
|
+
self._client._build_url(f"/session/{id}/uploads"),
|
|
101
|
+
files=files,
|
|
102
|
+
)
|
|
103
|
+
else:
|
|
104
|
+
files = {"file": file_input}
|
|
105
|
+
response = self._client.transport.post(
|
|
106
|
+
self._client._build_url(f"/session/{id}/uploads"),
|
|
107
|
+
files=files,
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
return UploadFileResponse(**response.data)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from hyperbrowser.models import TeamCreditInfo
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class TeamManager:
|
|
5
|
+
def __init__(self, client):
|
|
6
|
+
self._client = client
|
|
7
|
+
|
|
8
|
+
def get_credit_info(self) -> TeamCreditInfo:
|
|
9
|
+
response = self._client.transport.get(
|
|
10
|
+
self._client._build_url("/team/credit-info")
|
|
11
|
+
)
|
|
12
|
+
return TeamCreditInfo(**response.data)
|
hyperbrowser/client/sync.py
CHANGED
|
@@ -10,6 +10,8 @@ from .managers.sync_manager.extract import ExtractManager
|
|
|
10
10
|
from .managers.sync_manager.profile import ProfileManager
|
|
11
11
|
from .managers.sync_manager.scrape import ScrapeManager
|
|
12
12
|
from .managers.sync_manager.session import SessionManager
|
|
13
|
+
from .managers.sync_manager.team import TeamManager
|
|
14
|
+
from .managers.sync_manager.computer_action import ComputerActionManager
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class Hyperbrowser(HyperbrowserBase):
|
|
@@ -31,6 +33,8 @@ class Hyperbrowser(HyperbrowserBase):
|
|
|
31
33
|
self.profiles = ProfileManager(self)
|
|
32
34
|
self.extensions = ExtensionManager(self)
|
|
33
35
|
self.agents = Agents(self)
|
|
36
|
+
self.team = TeamManager(self)
|
|
37
|
+
self.computer_action = ComputerActionManager(self)
|
|
34
38
|
|
|
35
39
|
def close(self) -> None:
|
|
36
40
|
self.transport.close()
|
hyperbrowser/config.py
CHANGED
|
@@ -8,7 +8,7 @@ class ClientConfig:
|
|
|
8
8
|
"""Configuration for the Hyperbrowser client"""
|
|
9
9
|
|
|
10
10
|
api_key: str
|
|
11
|
-
base_url: str = "https://
|
|
11
|
+
base_url: str = "https://api.hyperbrowser.ai"
|
|
12
12
|
|
|
13
13
|
@classmethod
|
|
14
14
|
def from_env(cls) -> "ClientConfig":
|
|
@@ -17,6 +17,6 @@ class ClientConfig:
|
|
|
17
17
|
raise ValueError("HYPERBROWSER_API_KEY environment variable is required")
|
|
18
18
|
|
|
19
19
|
base_url = os.environ.get(
|
|
20
|
-
"HYPERBROWSER_BASE_URL", "https://
|
|
20
|
+
"HYPERBROWSER_BASE_URL", "https://api.hyperbrowser.ai"
|
|
21
21
|
)
|
|
22
22
|
return cls(api_key=api_key, base_url=base_url)
|
hyperbrowser/models/__init__.py
CHANGED
|
@@ -4,13 +4,47 @@ from .agents.browser_use import (
|
|
|
4
4
|
BrowserUseTaskStatusResponse,
|
|
5
5
|
StartBrowserUseTaskParams,
|
|
6
6
|
StartBrowserUseTaskResponse,
|
|
7
|
+
BrowserUseApiKeys,
|
|
8
|
+
BrowserUseAgentBrain,
|
|
9
|
+
BrowserUseAgentOutput,
|
|
10
|
+
BrowserUseActionResult,
|
|
11
|
+
BrowserUseStepMetadata,
|
|
12
|
+
BrowserUseTabInfo,
|
|
13
|
+
BrowserUseCoordinates,
|
|
14
|
+
BrowserUseCoordinateSet,
|
|
15
|
+
BrowserUseViewportInfo,
|
|
16
|
+
BrowserUseDOMHistoryElement,
|
|
17
|
+
BrowserUseBrowserStateHistory,
|
|
18
|
+
BrowserUseAgentHistory,
|
|
19
|
+
BrowserUseAgentOutputV0710,
|
|
20
|
+
BrowserUseActionResultV0710,
|
|
21
|
+
BrowserUseBrowserStateHistoryV0710,
|
|
22
|
+
BrowserUseStepMetadataV0710,
|
|
23
|
+
BrowserUseAgentHistoryV0710,
|
|
24
|
+
BrowserUseAgentHistoryLatest,
|
|
25
|
+
BrowserUseTaskMetadata,
|
|
26
|
+
BrowserUseStep,
|
|
27
|
+
cast_steps_for_version,
|
|
7
28
|
)
|
|
8
29
|
from .agents.claude_computer_use import (
|
|
30
|
+
ClaudeComputerUseTaskStatus,
|
|
31
|
+
ClaudeComputerUseStepResponse,
|
|
9
32
|
ClaudeComputerUseTaskData,
|
|
10
33
|
ClaudeComputerUseTaskResponse,
|
|
11
34
|
ClaudeComputerUseTaskStatusResponse,
|
|
12
35
|
StartClaudeComputerUseTaskParams,
|
|
13
36
|
StartClaudeComputerUseTaskResponse,
|
|
37
|
+
ClaudeComputerUseApiKeys,
|
|
38
|
+
)
|
|
39
|
+
from .agents.gemini_computer_use import (
|
|
40
|
+
GeminiComputerUseTaskStatus,
|
|
41
|
+
GeminiComputerUseStepResponse,
|
|
42
|
+
GeminiComputerUseTaskData,
|
|
43
|
+
GeminiComputerUseTaskResponse,
|
|
44
|
+
GeminiComputerUseTaskStatusResponse,
|
|
45
|
+
StartGeminiComputerUseTaskParams,
|
|
46
|
+
StartGeminiComputerUseTaskResponse,
|
|
47
|
+
GeminiComputerUseApiKeys,
|
|
14
48
|
)
|
|
15
49
|
from .agents.cua import (
|
|
16
50
|
CuaTaskData,
|
|
@@ -18,6 +52,7 @@ from .agents.cua import (
|
|
|
18
52
|
CuaTaskStatusResponse,
|
|
19
53
|
StartCuaTaskParams,
|
|
20
54
|
StartCuaTaskResponse,
|
|
55
|
+
CuaApiKeys,
|
|
21
56
|
)
|
|
22
57
|
from .agents.hyper_agent import (
|
|
23
58
|
HyperAgentActionOutput,
|
|
@@ -29,12 +64,14 @@ from .agents.hyper_agent import (
|
|
|
29
64
|
HyperAgentTaskStatusResponse,
|
|
30
65
|
StartHyperAgentTaskParams,
|
|
31
66
|
StartHyperAgentTaskResponse,
|
|
67
|
+
HyperAgentApiKeys,
|
|
32
68
|
)
|
|
33
69
|
from .consts import (
|
|
34
70
|
ISO639_1,
|
|
35
71
|
POLLING_ATTEMPTS,
|
|
36
72
|
HyperAgentLlm,
|
|
37
73
|
BrowserUseLlm,
|
|
74
|
+
ClaudeComputerUseLlm,
|
|
38
75
|
Country,
|
|
39
76
|
DownloadsStatus,
|
|
40
77
|
OperatingSystem,
|
|
@@ -44,7 +81,10 @@ from .consts import (
|
|
|
44
81
|
ScrapePageStatus,
|
|
45
82
|
ScrapeScreenshotFormat,
|
|
46
83
|
ScrapeWaitUntil,
|
|
84
|
+
SessionEventLogType,
|
|
47
85
|
State,
|
|
86
|
+
SessionRegion,
|
|
87
|
+
BrowserUseVersion,
|
|
48
88
|
)
|
|
49
89
|
from .crawl import (
|
|
50
90
|
CrawledPage,
|
|
@@ -63,6 +103,7 @@ from .extract import (
|
|
|
63
103
|
ExtractJobStatusResponse,
|
|
64
104
|
StartExtractJobParams,
|
|
65
105
|
StartExtractJobResponse,
|
|
106
|
+
ExtractJobMetadata,
|
|
66
107
|
)
|
|
67
108
|
from .profile import (
|
|
68
109
|
CreateProfileParams,
|
|
@@ -86,6 +127,27 @@ from .scrape import (
|
|
|
86
127
|
StartBatchScrapeJobResponse,
|
|
87
128
|
StartScrapeJobParams,
|
|
88
129
|
StartScrapeJobResponse,
|
|
130
|
+
StorageStateOptions,
|
|
131
|
+
)
|
|
132
|
+
from .computer_action import (
|
|
133
|
+
ClickActionParams,
|
|
134
|
+
ComputerAction,
|
|
135
|
+
ComputerActionParams,
|
|
136
|
+
ComputerActionResponse,
|
|
137
|
+
Coordinate,
|
|
138
|
+
DragActionParams,
|
|
139
|
+
HoldKeyActionParams,
|
|
140
|
+
MouseDownActionParams,
|
|
141
|
+
MouseUpActionParams,
|
|
142
|
+
MoveMouseActionParams,
|
|
143
|
+
PressKeysActionParams,
|
|
144
|
+
ScreenshotActionParams,
|
|
145
|
+
ScrollActionParams,
|
|
146
|
+
TypeTextActionParams,
|
|
147
|
+
ComputerActionMouseButton,
|
|
148
|
+
GetClipboardTextActionParams,
|
|
149
|
+
ComputerActionResponseDataClipboardText,
|
|
150
|
+
ComputerActionResponseData,
|
|
89
151
|
)
|
|
90
152
|
from .session import (
|
|
91
153
|
BasicResponse,
|
|
@@ -101,7 +163,15 @@ from .session import (
|
|
|
101
163
|
SessionListResponse,
|
|
102
164
|
SessionRecording,
|
|
103
165
|
SessionStatus,
|
|
166
|
+
SessionEventLog,
|
|
167
|
+
SessionEventLogListParams,
|
|
168
|
+
SessionEventLogListResponse,
|
|
169
|
+
SessionProfile,
|
|
170
|
+
SessionLaunchState,
|
|
171
|
+
UploadFileResponse,
|
|
172
|
+
ImageCaptchaParam,
|
|
104
173
|
)
|
|
174
|
+
from .team import TeamCreditInfo
|
|
105
175
|
|
|
106
176
|
__all__ = [
|
|
107
177
|
# consts
|
|
@@ -109,6 +179,7 @@ __all__ = [
|
|
|
109
179
|
"POLLING_ATTEMPTS",
|
|
110
180
|
"HyperAgentLlm",
|
|
111
181
|
"BrowserUseLlm",
|
|
182
|
+
"ClaudeComputerUseLlm",
|
|
112
183
|
"Country",
|
|
113
184
|
"DownloadsStatus",
|
|
114
185
|
"OperatingSystem",
|
|
@@ -118,7 +189,10 @@ __all__ = [
|
|
|
118
189
|
"ScrapePageStatus",
|
|
119
190
|
"ScrapeScreenshotFormat",
|
|
120
191
|
"ScrapeWaitUntil",
|
|
192
|
+
"SessionEventLogType",
|
|
121
193
|
"State",
|
|
194
|
+
"SessionRegion",
|
|
195
|
+
"BrowserUseVersion",
|
|
122
196
|
# agents
|
|
123
197
|
"HyperAgentTaskStatus",
|
|
124
198
|
"HyperAgentActionOutput",
|
|
@@ -135,18 +209,51 @@ __all__ = [
|
|
|
135
209
|
"BrowserUseTaskStatusResponse",
|
|
136
210
|
"StartBrowserUseTaskParams",
|
|
137
211
|
"StartBrowserUseTaskResponse",
|
|
212
|
+
"BrowserUseAgentBrain",
|
|
213
|
+
"BrowserUseAgentOutput",
|
|
214
|
+
"BrowserUseActionResult",
|
|
215
|
+
"BrowserUseStepMetadata",
|
|
216
|
+
"BrowserUseTabInfo",
|
|
217
|
+
"BrowserUseCoordinates",
|
|
218
|
+
"BrowserUseCoordinateSet",
|
|
219
|
+
"BrowserUseViewportInfo",
|
|
220
|
+
"BrowserUseDOMHistoryElement",
|
|
221
|
+
"BrowserUseBrowserStateHistory",
|
|
222
|
+
"BrowserUseAgentHistory",
|
|
223
|
+
"BrowserUseAgentOutputV0710",
|
|
224
|
+
"BrowserUseActionResultV0710",
|
|
225
|
+
"BrowserUseBrowserStateHistoryV0710",
|
|
226
|
+
"BrowserUseStepMetadataV0710",
|
|
227
|
+
"BrowserUseAgentHistoryV0710",
|
|
228
|
+
"BrowserUseAgentHistoryLatest",
|
|
229
|
+
"BrowserUseStep",
|
|
230
|
+
"BrowserUseTaskMetadata",
|
|
231
|
+
"cast_steps_for_version",
|
|
138
232
|
"ClaudeComputerUseTaskStatus",
|
|
233
|
+
"ClaudeComputerUseStepResponse",
|
|
139
234
|
"ClaudeComputerUseTaskData",
|
|
140
235
|
"ClaudeComputerUseTaskResponse",
|
|
141
236
|
"ClaudeComputerUseTaskStatusResponse",
|
|
142
237
|
"StartClaudeComputerUseTaskParams",
|
|
143
238
|
"StartClaudeComputerUseTaskResponse",
|
|
239
|
+
"GeminiComputerUseTaskStatus",
|
|
240
|
+
"GeminiComputerUseStepResponse",
|
|
241
|
+
"GeminiComputerUseTaskData",
|
|
242
|
+
"GeminiComputerUseTaskResponse",
|
|
243
|
+
"GeminiComputerUseTaskStatusResponse",
|
|
244
|
+
"StartGeminiComputerUseTaskParams",
|
|
245
|
+
"StartGeminiComputerUseTaskResponse",
|
|
144
246
|
"CuaTaskStatus",
|
|
145
247
|
"CuaTaskData",
|
|
146
248
|
"CuaTaskResponse",
|
|
147
249
|
"CuaTaskStatusResponse",
|
|
148
250
|
"StartCuaTaskParams",
|
|
149
251
|
"StartCuaTaskResponse",
|
|
252
|
+
"BrowserUseApiKeys",
|
|
253
|
+
"ClaudeComputerUseApiKeys",
|
|
254
|
+
"GeminiComputerUseApiKeys",
|
|
255
|
+
"CuaApiKeys",
|
|
256
|
+
"HyperAgentApiKeys",
|
|
150
257
|
# crawl
|
|
151
258
|
"CrawledPage",
|
|
152
259
|
"CrawlJobResponse",
|
|
@@ -165,6 +272,7 @@ __all__ = [
|
|
|
165
272
|
"ExtractJobStatusResponse",
|
|
166
273
|
"StartExtractJobParams",
|
|
167
274
|
"StartExtractJobResponse",
|
|
275
|
+
"ExtractJobMetadata",
|
|
168
276
|
# profile
|
|
169
277
|
"CreateProfileParams",
|
|
170
278
|
"CreateProfileResponse",
|
|
@@ -186,6 +294,7 @@ __all__ = [
|
|
|
186
294
|
"StartBatchScrapeJobResponse",
|
|
187
295
|
"StartScrapeJobParams",
|
|
188
296
|
"StartScrapeJobResponse",
|
|
297
|
+
"StorageStateOptions",
|
|
189
298
|
# session
|
|
190
299
|
"BasicResponse",
|
|
191
300
|
"CreateSessionParams",
|
|
@@ -200,4 +309,32 @@ __all__ = [
|
|
|
200
309
|
"SessionListResponse",
|
|
201
310
|
"SessionRecording",
|
|
202
311
|
"SessionStatus",
|
|
312
|
+
"SessionEventLog",
|
|
313
|
+
"SessionEventLogListParams",
|
|
314
|
+
"SessionEventLogListResponse",
|
|
315
|
+
"SessionProfile",
|
|
316
|
+
"SessionLaunchState",
|
|
317
|
+
"UploadFileResponse",
|
|
318
|
+
"ImageCaptchaParam",
|
|
319
|
+
# team
|
|
320
|
+
"TeamCreditInfo",
|
|
321
|
+
# computer action
|
|
322
|
+
"ClickActionParams",
|
|
323
|
+
"ComputerAction",
|
|
324
|
+
"ComputerActionParams",
|
|
325
|
+
"ComputerActionResponse",
|
|
326
|
+
"Coordinate",
|
|
327
|
+
"DragActionParams",
|
|
328
|
+
"HoldKeyActionParams",
|
|
329
|
+
"MouseDownActionParams",
|
|
330
|
+
"MouseUpActionParams",
|
|
331
|
+
"MoveMouseActionParams",
|
|
332
|
+
"PressKeysActionParams",
|
|
333
|
+
"ScreenshotActionParams",
|
|
334
|
+
"ScrollActionParams",
|
|
335
|
+
"TypeTextActionParams",
|
|
336
|
+
"ComputerActionMouseButton",
|
|
337
|
+
"GetClipboardTextActionParams",
|
|
338
|
+
"ComputerActionResponseDataClipboardText",
|
|
339
|
+
"ComputerActionResponseData",
|
|
203
340
|
]
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
from typing import Any, Dict, List, Literal, Optional, Union
|
|
1
|
+
from typing import Any, Dict, List, Literal, Optional, Type, Union
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel, ConfigDict, Field
|
|
4
4
|
|
|
5
|
-
from ..consts import BrowserUseLlm
|
|
5
|
+
from ..consts import BrowserUseLlm, BrowserUseVersion
|
|
6
6
|
from ..session import CreateSessionParams
|
|
7
7
|
|
|
8
8
|
BrowserUseTaskStatus = Literal["pending", "running", "completed", "failed", "stopped"]
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
class BrowserUseApiKeys(BaseModel):
|
|
12
|
+
"""
|
|
13
|
+
API keys for the browser use task.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
model_config = ConfigDict(
|
|
17
|
+
populate_by_alias=True,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
openai: Optional[str] = Field(default=None, serialization_alias="openai")
|
|
21
|
+
anthropic: Optional[str] = Field(default=None, serialization_alias="anthropic")
|
|
22
|
+
google: Optional[str] = Field(default=None, serialization_alias="google")
|
|
23
|
+
|
|
24
|
+
|
|
11
25
|
class StartBrowserUseTaskParams(BaseModel):
|
|
12
26
|
"""
|
|
13
27
|
Parameters for creating a new browser use task.
|
|
@@ -18,6 +32,9 @@ class StartBrowserUseTaskParams(BaseModel):
|
|
|
18
32
|
)
|
|
19
33
|
|
|
20
34
|
task: str
|
|
35
|
+
version: Optional[BrowserUseVersion] = Field(
|
|
36
|
+
default=None, serialization_alias="version"
|
|
37
|
+
)
|
|
21
38
|
llm: Optional[BrowserUseLlm] = Field(default=None, serialization_alias="llm")
|
|
22
39
|
session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
|
|
23
40
|
validate_output: Optional[bool] = Field(
|
|
@@ -47,12 +64,27 @@ class StartBrowserUseTaskParams(BaseModel):
|
|
|
47
64
|
initial_actions: Optional[List[Dict[str, Dict[str, Any]]]] = Field(
|
|
48
65
|
default=None, serialization_alias="initialActions"
|
|
49
66
|
)
|
|
67
|
+
sensitive_data: Optional[Dict[str, str]] = Field(
|
|
68
|
+
default=None, serialization_alias="sensitiveData"
|
|
69
|
+
)
|
|
70
|
+
message_context: Optional[str] = Field(
|
|
71
|
+
default=None, serialization_alias="messageContext"
|
|
72
|
+
)
|
|
73
|
+
output_model_schema: Optional[Union[Dict[str, Any], Type[BaseModel]]] = Field(
|
|
74
|
+
default=None, serialization_alias="outputModelSchema"
|
|
75
|
+
)
|
|
50
76
|
keep_browser_open: Optional[bool] = Field(
|
|
51
77
|
default=None, serialization_alias="keepBrowserOpen"
|
|
52
78
|
)
|
|
53
79
|
session_options: Optional[CreateSessionParams] = Field(
|
|
54
80
|
default=None, serialization_alias="sessionOptions"
|
|
55
81
|
)
|
|
82
|
+
use_custom_api_keys: Optional[bool] = Field(
|
|
83
|
+
default=None, serialization_alias="useCustomApiKeys"
|
|
84
|
+
)
|
|
85
|
+
api_keys: Optional[BrowserUseApiKeys] = Field(
|
|
86
|
+
default=None, serialization_alias="apiKeys"
|
|
87
|
+
)
|
|
56
88
|
|
|
57
89
|
|
|
58
90
|
class StartBrowserUseTaskResponse(BaseModel):
|
|
@@ -164,15 +196,79 @@ class BrowserUseAgentHistory(BaseModel):
|
|
|
164
196
|
metadata: Optional[BrowserUseStepMetadata] = None
|
|
165
197
|
|
|
166
198
|
|
|
199
|
+
# ===== 0.7.10-specific response models =====
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class BrowserUseAgentOutputV0710(BaseModel):
|
|
203
|
+
thinking: Optional[str] = None
|
|
204
|
+
evaluation_previous_goal: Optional[str] = None
|
|
205
|
+
memory: Optional[str] = None
|
|
206
|
+
next_goal: Optional[str] = None
|
|
207
|
+
action: list[dict]
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class BrowserUseActionResultV0710(BaseModel):
|
|
211
|
+
is_done: Optional[bool] = False
|
|
212
|
+
success: Optional[bool] = None
|
|
213
|
+
error: Optional[str] = None
|
|
214
|
+
metadata: Optional[dict] = None
|
|
215
|
+
attachments: Optional[list[str]] = None
|
|
216
|
+
long_term_memory: Optional[str] = None
|
|
217
|
+
extracted_content: Optional[str] = None
|
|
218
|
+
include_extracted_content_only_once: Optional[bool] = False
|
|
219
|
+
include_in_memory: bool = False
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class BrowserUseBrowserStateHistoryV0710(BaseModel):
|
|
223
|
+
url: str
|
|
224
|
+
title: str
|
|
225
|
+
tabs: list[dict]
|
|
226
|
+
interacted_element: Union[list[Union[dict, None]], list[None]]
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class BrowserUseStepMetadataV0710(BaseModel):
|
|
230
|
+
step_start_time: float
|
|
231
|
+
step_end_time: float
|
|
232
|
+
step_number: int
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
class BrowserUseAgentHistoryV0710(BaseModel):
|
|
236
|
+
model_output: Union[BrowserUseAgentOutputV0710, None]
|
|
237
|
+
result: list[BrowserUseActionResultV0710]
|
|
238
|
+
state: BrowserUseBrowserStateHistoryV0710
|
|
239
|
+
metadata: Optional[BrowserUseStepMetadataV0710] = None
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
# ===== latest response models =====
|
|
243
|
+
|
|
244
|
+
BrowserUseAgentHistoryLatest = Dict[str, Any]
|
|
245
|
+
|
|
246
|
+
BrowserUseStep = Union[
|
|
247
|
+
BrowserUseAgentHistory, BrowserUseAgentHistoryV0710, BrowserUseAgentHistoryLatest
|
|
248
|
+
]
|
|
249
|
+
|
|
250
|
+
|
|
167
251
|
class BrowserUseTaskData(BaseModel):
|
|
168
252
|
model_config = ConfigDict(
|
|
169
253
|
populate_by_alias=True,
|
|
170
254
|
)
|
|
171
255
|
|
|
172
|
-
steps: list[
|
|
256
|
+
steps: list[BrowserUseStep]
|
|
173
257
|
final_result: Optional[str] = Field(default=None, alias="finalResult")
|
|
174
258
|
|
|
175
259
|
|
|
260
|
+
class BrowserUseTaskMetadata(BaseModel):
|
|
261
|
+
model_config = ConfigDict(
|
|
262
|
+
populate_by_alias=True,
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
|
|
266
|
+
output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
|
|
267
|
+
num_task_steps_completed: Optional[int] = Field(
|
|
268
|
+
default=None, alias="numTaskStepsCompleted"
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
|
|
176
272
|
class BrowserUseTaskResponse(BaseModel):
|
|
177
273
|
"""
|
|
178
274
|
Response from a browser use task.
|
|
@@ -184,6 +280,20 @@ class BrowserUseTaskResponse(BaseModel):
|
|
|
184
280
|
|
|
185
281
|
job_id: str = Field(alias="jobId")
|
|
186
282
|
status: BrowserUseTaskStatus
|
|
283
|
+
metadata: Optional[BrowserUseTaskMetadata] = Field(default=None, alias="metadata")
|
|
187
284
|
data: Optional[BrowserUseTaskData] = Field(default=None, alias="data")
|
|
188
285
|
error: Optional[str] = Field(default=None, alias="error")
|
|
189
286
|
live_url: Optional[str] = Field(default=None, alias="liveUrl")
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
def cast_steps_for_version(
|
|
290
|
+
steps: List[BrowserUseStep], version: BrowserUseVersion
|
|
291
|
+
) -> List[BrowserUseStep]:
|
|
292
|
+
if version == "0.1.40":
|
|
293
|
+
return [BrowserUseAgentHistory.model_validate(s) for s in steps]
|
|
294
|
+
elif version == "0.7.10":
|
|
295
|
+
return [BrowserUseAgentHistoryV0710.model_validate(s) for s in steps]
|
|
296
|
+
elif version == "latest":
|
|
297
|
+
return steps
|
|
298
|
+
else:
|
|
299
|
+
raise ValueError(f"Invalid version: {version}")
|
|
@@ -3,12 +3,25 @@ from typing import Any, Literal, Optional
|
|
|
3
3
|
from pydantic import BaseModel, ConfigDict, Field
|
|
4
4
|
|
|
5
5
|
from ..session import CreateSessionParams
|
|
6
|
+
from ..consts import ClaudeComputerUseLlm
|
|
6
7
|
|
|
7
8
|
ClaudeComputerUseTaskStatus = Literal[
|
|
8
9
|
"pending", "running", "completed", "failed", "stopped"
|
|
9
10
|
]
|
|
10
11
|
|
|
11
12
|
|
|
13
|
+
class ClaudeComputerUseApiKeys(BaseModel):
|
|
14
|
+
"""
|
|
15
|
+
API keys for the Claude Computer Use task.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
model_config = ConfigDict(
|
|
19
|
+
populate_by_alias=True,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
anthropic: Optional[str] = Field(default=None, serialization_alias="anthropic")
|
|
23
|
+
|
|
24
|
+
|
|
12
25
|
class StartClaudeComputerUseTaskParams(BaseModel):
|
|
13
26
|
"""
|
|
14
27
|
Parameters for creating a new Claude Computer Use task.
|
|
@@ -19,6 +32,7 @@ class StartClaudeComputerUseTaskParams(BaseModel):
|
|
|
19
32
|
)
|
|
20
33
|
|
|
21
34
|
task: str
|
|
35
|
+
llm: Optional[ClaudeComputerUseLlm] = Field(default=None, serialization_alias="llm")
|
|
22
36
|
session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
|
|
23
37
|
max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
|
|
24
38
|
max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
|
|
@@ -28,6 +42,15 @@ class StartClaudeComputerUseTaskParams(BaseModel):
|
|
|
28
42
|
session_options: Optional[CreateSessionParams] = Field(
|
|
29
43
|
default=None, serialization_alias="sessionOptions"
|
|
30
44
|
)
|
|
45
|
+
use_custom_api_keys: Optional[bool] = Field(
|
|
46
|
+
default=None, serialization_alias="useCustomApiKeys"
|
|
47
|
+
)
|
|
48
|
+
api_keys: Optional[ClaudeComputerUseApiKeys] = Field(
|
|
49
|
+
default=None, serialization_alias="apiKeys"
|
|
50
|
+
)
|
|
51
|
+
use_computer_action: Optional[bool] = Field(
|
|
52
|
+
default=None, serialization_alias="useComputerAction"
|
|
53
|
+
)
|
|
31
54
|
|
|
32
55
|
|
|
33
56
|
class StartClaudeComputerUseTaskResponse(BaseModel):
|
|
@@ -81,6 +104,18 @@ class ClaudeComputerUseTaskData(BaseModel):
|
|
|
81
104
|
final_result: Optional[str] = Field(default=None, alias="finalResult")
|
|
82
105
|
|
|
83
106
|
|
|
107
|
+
class ClaudeComputerUseTaskMetadata(BaseModel):
|
|
108
|
+
model_config = ConfigDict(
|
|
109
|
+
populate_by_alias=True,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
|
|
113
|
+
output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
|
|
114
|
+
num_task_steps_completed: Optional[int] = Field(
|
|
115
|
+
default=None, alias="numTaskStepsCompleted"
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
84
119
|
class ClaudeComputerUseTaskResponse(BaseModel):
|
|
85
120
|
"""
|
|
86
121
|
Response from a Claude Computer Use task.
|
|
@@ -92,6 +127,9 @@ class ClaudeComputerUseTaskResponse(BaseModel):
|
|
|
92
127
|
|
|
93
128
|
job_id: str = Field(alias="jobId")
|
|
94
129
|
status: ClaudeComputerUseTaskStatus
|
|
130
|
+
metadata: Optional[ClaudeComputerUseTaskMetadata] = Field(
|
|
131
|
+
default=None, alias="metadata"
|
|
132
|
+
)
|
|
95
133
|
data: Optional[ClaudeComputerUseTaskData] = Field(default=None, alias="data")
|
|
96
134
|
error: Optional[str] = Field(default=None, alias="error")
|
|
97
135
|
live_url: Optional[str] = Field(default=None, alias="liveUrl")
|
|
@@ -7,6 +7,18 @@ from ..session import CreateSessionParams
|
|
|
7
7
|
CuaTaskStatus = Literal["pending", "running", "completed", "failed", "stopped"]
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
class CuaApiKeys(BaseModel):
|
|
11
|
+
"""
|
|
12
|
+
API keys for the CUA task.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
model_config = ConfigDict(
|
|
16
|
+
populate_by_alias=True,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
openai: Optional[str] = Field(default=None, serialization_alias="openai")
|
|
20
|
+
|
|
21
|
+
|
|
10
22
|
class StartCuaTaskParams(BaseModel):
|
|
11
23
|
"""
|
|
12
24
|
Parameters for creating a new CUA task.
|
|
@@ -26,6 +38,13 @@ class StartCuaTaskParams(BaseModel):
|
|
|
26
38
|
session_options: Optional[CreateSessionParams] = Field(
|
|
27
39
|
default=None, serialization_alias="sessionOptions"
|
|
28
40
|
)
|
|
41
|
+
use_custom_api_keys: Optional[bool] = Field(
|
|
42
|
+
default=None, serialization_alias="useCustomApiKeys"
|
|
43
|
+
)
|
|
44
|
+
api_keys: Optional[CuaApiKeys] = Field(default=None, serialization_alias="apiKeys")
|
|
45
|
+
use_computer_action: Optional[bool] = Field(
|
|
46
|
+
default=None, serialization_alias="useComputerAction"
|
|
47
|
+
)
|
|
29
48
|
|
|
30
49
|
|
|
31
50
|
class StartCuaTaskResponse(BaseModel):
|
|
@@ -115,6 +134,18 @@ class CuaTaskData(BaseModel):
|
|
|
115
134
|
final_result: Optional[str] = Field(default=None, alias="finalResult")
|
|
116
135
|
|
|
117
136
|
|
|
137
|
+
class CuaTaskMetadata(BaseModel):
|
|
138
|
+
model_config = ConfigDict(
|
|
139
|
+
populate_by_alias=True,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
|
|
143
|
+
output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
|
|
144
|
+
num_task_steps_completed: Optional[int] = Field(
|
|
145
|
+
default=None, alias="numTaskStepsCompleted"
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
|
|
118
149
|
class CuaTaskResponse(BaseModel):
|
|
119
150
|
"""
|
|
120
151
|
Response from a CUA task.
|
|
@@ -126,6 +157,7 @@ class CuaTaskResponse(BaseModel):
|
|
|
126
157
|
|
|
127
158
|
job_id: str = Field(alias="jobId")
|
|
128
159
|
status: CuaTaskStatus
|
|
160
|
+
metadata: Optional[CuaTaskMetadata] = Field(default=None, alias="metadata")
|
|
129
161
|
data: Optional[CuaTaskData] = Field(default=None, alias="data")
|
|
130
162
|
error: Optional[str] = Field(default=None, alias="error")
|
|
131
163
|
live_url: Optional[str] = Field(default=None, alias="liveUrl")
|