hyperbrowser 0.51.0__py3-none-any.whl → 0.73.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.
@@ -2,6 +2,7 @@ from .browser_use import BrowserUseManager
2
2
  from .cua import CuaManager
3
3
  from .claude_computer_use import ClaudeComputerUseManager
4
4
  from .hyper_agent import HyperAgentManager
5
+ from .gemini_computer_use import GeminiComputerUseManager
5
6
 
6
7
 
7
8
  class Agents:
@@ -10,3 +11,4 @@ class Agents:
10
11
  self.cua = CuaManager(client)
11
12
  self.claude_computer_use = ClaudeComputerUseManager(client)
12
13
  self.hyper_agent = HyperAgentManager(client)
14
+ self.gemini_computer_use = GeminiComputerUseManager(client)
@@ -0,0 +1,71 @@
1
+ import asyncio
2
+
3
+ from hyperbrowser.exceptions import HyperbrowserError
4
+
5
+ from .....models import (
6
+ POLLING_ATTEMPTS,
7
+ BasicResponse,
8
+ GeminiComputerUseTaskResponse,
9
+ GeminiComputerUseTaskStatusResponse,
10
+ StartGeminiComputerUseTaskParams,
11
+ StartGeminiComputerUseTaskResponse,
12
+ )
13
+
14
+
15
+ class GeminiComputerUseManager:
16
+ def __init__(self, client):
17
+ self._client = client
18
+
19
+ async def start(
20
+ self, params: StartGeminiComputerUseTaskParams
21
+ ) -> StartGeminiComputerUseTaskResponse:
22
+ response = await self._client.transport.post(
23
+ self._client._build_url("/task/gemini-computer-use"),
24
+ data=params.model_dump(exclude_none=True, by_alias=True),
25
+ )
26
+ return StartGeminiComputerUseTaskResponse(**response.data)
27
+
28
+ async def get(self, job_id: str) -> GeminiComputerUseTaskResponse:
29
+ response = await self._client.transport.get(
30
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}")
31
+ )
32
+ return GeminiComputerUseTaskResponse(**response.data)
33
+
34
+ async def get_status(self, job_id: str) -> GeminiComputerUseTaskStatusResponse:
35
+ response = await self._client.transport.get(
36
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/status")
37
+ )
38
+ return GeminiComputerUseTaskStatusResponse(**response.data)
39
+
40
+ async def stop(self, job_id: str) -> BasicResponse:
41
+ response = await self._client.transport.put(
42
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/stop")
43
+ )
44
+ return BasicResponse(**response.data)
45
+
46
+ async def start_and_wait(
47
+ self, params: StartGeminiComputerUseTaskParams
48
+ ) -> GeminiComputerUseTaskResponse:
49
+ job_start_resp = await self.start(params)
50
+ job_id = job_start_resp.job_id
51
+ if not job_id:
52
+ raise HyperbrowserError("Failed to start Gemini Computer Use task job")
53
+
54
+ failures = 0
55
+ while True:
56
+ try:
57
+ job_response = await self.get_status(job_id)
58
+ if (
59
+ job_response.status == "completed"
60
+ or job_response.status == "failed"
61
+ or job_response.status == "stopped"
62
+ ):
63
+ return await self.get(job_id)
64
+ failures = 0
65
+ except Exception as e:
66
+ failures += 1
67
+ if failures >= POLLING_ATTEMPTS:
68
+ raise HyperbrowserError(
69
+ f"Failed to poll Gemini Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
70
+ )
71
+ await asyncio.sleep(2)
@@ -1,5 +1,5 @@
1
1
  from pydantic import BaseModel
2
- from typing import Union, List
2
+ from typing import Union, List, Optional
3
3
  from hyperbrowser.models import (
4
4
  SessionDetail,
5
5
  ComputerActionParams,
@@ -12,6 +12,11 @@ from hyperbrowser.models import (
12
12
  ScrollActionParams,
13
13
  TypeTextActionParams,
14
14
  Coordinate,
15
+ HoldKeyActionParams,
16
+ MouseDownActionParams,
17
+ MouseUpActionParams,
18
+ ComputerActionMouseButton,
19
+ GetClipboardTextActionParams,
15
20
  )
16
21
 
17
22
 
@@ -42,9 +47,9 @@ class ComputerActionManager:
42
47
  async def click(
43
48
  self,
44
49
  session: Union[SessionDetail, str],
45
- x: int,
46
- y: int,
47
- button: str = "left",
50
+ x: Optional[int] = None,
51
+ y: Optional[int] = None,
52
+ button: ComputerActionMouseButton = "left",
48
53
  num_clicks: int = 1,
49
54
  return_screenshot: bool = False,
50
55
  ) -> ComputerActionResponse:
@@ -82,6 +87,38 @@ class ComputerActionManager:
82
87
  params = PressKeysActionParams(keys=keys, return_screenshot=return_screenshot)
83
88
  return await self._execute_request(session, params)
84
89
 
90
+ async def hold_key(
91
+ self,
92
+ session: Union[SessionDetail, str],
93
+ key: str,
94
+ duration: int,
95
+ return_screenshot: bool = False,
96
+ ) -> ComputerActionResponse:
97
+ params = HoldKeyActionParams(
98
+ key=key, duration=duration, return_screenshot=return_screenshot
99
+ )
100
+ return await self._execute_request(session, params)
101
+
102
+ async def mouse_down(
103
+ self,
104
+ session: Union[SessionDetail, str],
105
+ button: ComputerActionMouseButton = "left",
106
+ return_screenshot: bool = False,
107
+ ) -> ComputerActionResponse:
108
+ params = MouseDownActionParams(
109
+ button=button, return_screenshot=return_screenshot
110
+ )
111
+ return await self._execute_request(session, params)
112
+
113
+ async def mouse_up(
114
+ self,
115
+ session: Union[SessionDetail, str],
116
+ button: ComputerActionMouseButton = "left",
117
+ return_screenshot: bool = False,
118
+ ) -> ComputerActionResponse:
119
+ params = MouseUpActionParams(button=button, return_screenshot=return_screenshot)
120
+ return await self._execute_request(session, params)
121
+
85
122
  async def drag(
86
123
  self,
87
124
  session: Union[SessionDetail, str],
@@ -118,3 +155,11 @@ class ComputerActionManager:
118
155
  return_screenshot=return_screenshot,
119
156
  )
120
157
  return await self._execute_request(session, params)
158
+
159
+ async def get_clipboard_text(
160
+ self,
161
+ session: Union[SessionDetail, str],
162
+ return_screenshot: bool = False,
163
+ ) -> ComputerActionResponse:
164
+ params = GetClipboardTextActionParams(return_screenshot=return_screenshot)
165
+ return await self._execute_request(session, params)
@@ -10,12 +10,32 @@ from ....models.session import (
10
10
  SessionListResponse,
11
11
  SessionRecording,
12
12
  UploadFileResponse,
13
+ SessionEventLogListParams,
14
+ SessionEventLogListResponse,
15
+ SessionEventLog,
13
16
  )
14
17
 
15
18
 
19
+ class SessionEventLogsManager:
20
+ def __init__(self, client):
21
+ self._client = client
22
+
23
+ async def list(
24
+ self,
25
+ session_id: str,
26
+ params: SessionEventLogListParams = SessionEventLogListParams(),
27
+ ) -> List[SessionEventLog]:
28
+ response = await 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
+
16
35
  class SessionManager:
17
36
  def __init__(self, client):
18
37
  self._client = client
38
+ self.event_logs = SessionEventLogsManager(client)
19
39
 
20
40
  async def create(self, params: CreateSessionParams = None) -> SessionDetail:
21
41
  response = await self._client.transport.post(
@@ -2,6 +2,7 @@ from .browser_use import BrowserUseManager
2
2
  from .cua import CuaManager
3
3
  from .claude_computer_use import ClaudeComputerUseManager
4
4
  from .hyper_agent import HyperAgentManager
5
+ from .gemini_computer_use import GeminiComputerUseManager
5
6
 
6
7
 
7
8
  class Agents:
@@ -10,3 +11,4 @@ class Agents:
10
11
  self.cua = CuaManager(client)
11
12
  self.claude_computer_use = ClaudeComputerUseManager(client)
12
13
  self.hyper_agent = HyperAgentManager(client)
14
+ self.gemini_computer_use = GeminiComputerUseManager(client)
@@ -49,7 +49,7 @@ class ClaudeComputerUseManager:
49
49
  job_start_resp = self.start(params)
50
50
  job_id = job_start_resp.job_id
51
51
  if not job_id:
52
- raise HyperbrowserError("Failed to start CUA task job")
52
+ raise HyperbrowserError("Failed to start Claude Computer Use task job")
53
53
 
54
54
  failures = 0
55
55
  while True:
@@ -0,0 +1,71 @@
1
+ import time
2
+
3
+ from hyperbrowser.exceptions import HyperbrowserError
4
+
5
+ from .....models import (
6
+ POLLING_ATTEMPTS,
7
+ BasicResponse,
8
+ GeminiComputerUseTaskResponse,
9
+ GeminiComputerUseTaskStatusResponse,
10
+ StartGeminiComputerUseTaskParams,
11
+ StartGeminiComputerUseTaskResponse,
12
+ )
13
+
14
+
15
+ class GeminiComputerUseManager:
16
+ def __init__(self, client):
17
+ self._client = client
18
+
19
+ def start(
20
+ self, params: StartGeminiComputerUseTaskParams
21
+ ) -> StartGeminiComputerUseTaskResponse:
22
+ response = self._client.transport.post(
23
+ self._client._build_url("/task/gemini-computer-use"),
24
+ data=params.model_dump(exclude_none=True, by_alias=True),
25
+ )
26
+ return StartGeminiComputerUseTaskResponse(**response.data)
27
+
28
+ def get(self, job_id: str) -> GeminiComputerUseTaskResponse:
29
+ response = self._client.transport.get(
30
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}")
31
+ )
32
+ return GeminiComputerUseTaskResponse(**response.data)
33
+
34
+ def get_status(self, job_id: str) -> GeminiComputerUseTaskStatusResponse:
35
+ response = self._client.transport.get(
36
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/status")
37
+ )
38
+ return GeminiComputerUseTaskStatusResponse(**response.data)
39
+
40
+ def stop(self, job_id: str) -> BasicResponse:
41
+ response = self._client.transport.put(
42
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/stop")
43
+ )
44
+ return BasicResponse(**response.data)
45
+
46
+ def start_and_wait(
47
+ self, params: StartGeminiComputerUseTaskParams
48
+ ) -> GeminiComputerUseTaskResponse:
49
+ job_start_resp = self.start(params)
50
+ job_id = job_start_resp.job_id
51
+ if not job_id:
52
+ raise HyperbrowserError("Failed to start Gemini Computer Use task job")
53
+
54
+ failures = 0
55
+ while True:
56
+ try:
57
+ job_response = self.get_status(job_id)
58
+ if (
59
+ job_response.status == "completed"
60
+ or job_response.status == "failed"
61
+ or job_response.status == "stopped"
62
+ ):
63
+ return self.get(job_id)
64
+ failures = 0
65
+ except Exception as e:
66
+ failures += 1
67
+ if failures >= POLLING_ATTEMPTS:
68
+ raise HyperbrowserError(
69
+ f"Failed to poll Gemini Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
70
+ )
71
+ time.sleep(2)
@@ -1,5 +1,5 @@
1
1
  from pydantic import BaseModel
2
- from typing import Union, List
2
+ from typing import Union, List, Optional
3
3
  from hyperbrowser.models import (
4
4
  SessionDetail,
5
5
  ComputerActionParams,
@@ -12,6 +12,11 @@ from hyperbrowser.models import (
12
12
  ScrollActionParams,
13
13
  TypeTextActionParams,
14
14
  Coordinate,
15
+ HoldKeyActionParams,
16
+ MouseDownActionParams,
17
+ MouseUpActionParams,
18
+ ComputerActionMouseButton,
19
+ GetClipboardTextActionParams,
15
20
  )
16
21
 
17
22
 
@@ -42,9 +47,9 @@ class ComputerActionManager:
42
47
  def click(
43
48
  self,
44
49
  session: Union[SessionDetail, str],
45
- x: int,
46
- y: int,
47
- button: str = "left",
50
+ x: Optional[int] = None,
51
+ y: Optional[int] = None,
52
+ button: ComputerActionMouseButton = "left",
48
53
  num_clicks: int = 1,
49
54
  return_screenshot: bool = False,
50
55
  ) -> ComputerActionResponse:
@@ -82,6 +87,38 @@ class ComputerActionManager:
82
87
  params = PressKeysActionParams(keys=keys, return_screenshot=return_screenshot)
83
88
  return self._execute_request(session, params)
84
89
 
90
+ def hold_key(
91
+ self,
92
+ session: Union[SessionDetail, str],
93
+ key: str,
94
+ duration: int,
95
+ return_screenshot: bool = False,
96
+ ) -> ComputerActionResponse:
97
+ params = HoldKeyActionParams(
98
+ key=key, duration=duration, return_screenshot=return_screenshot
99
+ )
100
+ return self._execute_request(session, params)
101
+
102
+ def mouse_down(
103
+ self,
104
+ session: Union[SessionDetail, str],
105
+ button: ComputerActionMouseButton = "left",
106
+ return_screenshot: bool = False,
107
+ ) -> ComputerActionResponse:
108
+ params = MouseDownActionParams(
109
+ button=button, return_screenshot=return_screenshot
110
+ )
111
+ return self._execute_request(session, params)
112
+
113
+ def mouse_up(
114
+ self,
115
+ session: Union[SessionDetail, str],
116
+ button: ComputerActionMouseButton = "left",
117
+ return_screenshot: bool = False,
118
+ ) -> ComputerActionResponse:
119
+ params = MouseUpActionParams(button=button, return_screenshot=return_screenshot)
120
+ return self._execute_request(session, params)
121
+
85
122
  def drag(
86
123
  self,
87
124
  session: Union[SessionDetail, str],
@@ -118,3 +155,11 @@ class ComputerActionManager:
118
155
  return_screenshot=return_screenshot,
119
156
  )
120
157
  return self._execute_request(session, params)
158
+
159
+ def get_clipboard_text(
160
+ self,
161
+ session: Union[SessionDetail, str],
162
+ return_screenshot: bool = False,
163
+ ) -> ComputerActionResponse:
164
+ params = GetClipboardTextActionParams(return_screenshot=return_screenshot)
165
+ return self._execute_request(session, params)
@@ -10,12 +10,32 @@ from ....models.session import (
10
10
  SessionListResponse,
11
11
  SessionRecording,
12
12
  UploadFileResponse,
13
+ SessionEventLogListParams,
14
+ SessionEventLogListResponse,
15
+ SessionEventLog,
13
16
  )
14
17
 
15
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
+
16
35
  class SessionManager:
17
36
  def __init__(self, client):
18
37
  self._client = client
38
+ self.event_logs = SessionEventLogsManager(client)
19
39
 
20
40
  def create(self, params: CreateSessionParams = None) -> SessionDetail:
21
41
  response = self._client.transport.post(
@@ -5,8 +5,30 @@ from .agents.browser_use import (
5
5
  StartBrowserUseTaskParams,
6
6
  StartBrowserUseTaskResponse,
7
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,
8
28
  )
9
29
  from .agents.claude_computer_use import (
30
+ ClaudeComputerUseTaskStatus,
31
+ ClaudeComputerUseStepResponse,
10
32
  ClaudeComputerUseTaskData,
11
33
  ClaudeComputerUseTaskResponse,
12
34
  ClaudeComputerUseTaskStatusResponse,
@@ -14,6 +36,16 @@ from .agents.claude_computer_use import (
14
36
  StartClaudeComputerUseTaskResponse,
15
37
  ClaudeComputerUseApiKeys,
16
38
  )
39
+ from .agents.gemini_computer_use import (
40
+ GeminiComputerUseTaskStatus,
41
+ GeminiComputerUseStepResponse,
42
+ GeminiComputerUseTaskData,
43
+ GeminiComputerUseTaskResponse,
44
+ GeminiComputerUseTaskStatusResponse,
45
+ StartGeminiComputerUseTaskParams,
46
+ StartGeminiComputerUseTaskResponse,
47
+ GeminiComputerUseApiKeys,
48
+ )
17
49
  from .agents.cua import (
18
50
  CuaTaskData,
19
51
  CuaTaskResponse,
@@ -49,7 +81,10 @@ from .consts import (
49
81
  ScrapePageStatus,
50
82
  ScrapeScreenshotFormat,
51
83
  ScrapeWaitUntil,
84
+ SessionEventLogType,
52
85
  State,
86
+ SessionRegion,
87
+ BrowserUseVersion,
53
88
  )
54
89
  from .crawl import (
55
90
  CrawledPage,
@@ -68,6 +103,7 @@ from .extract import (
68
103
  ExtractJobStatusResponse,
69
104
  StartExtractJobParams,
70
105
  StartExtractJobResponse,
106
+ ExtractJobMetadata,
71
107
  )
72
108
  from .profile import (
73
109
  CreateProfileParams,
@@ -91,6 +127,7 @@ from .scrape import (
91
127
  StartBatchScrapeJobResponse,
92
128
  StartScrapeJobParams,
93
129
  StartScrapeJobResponse,
130
+ StorageStateOptions,
94
131
  )
95
132
  from .computer_action import (
96
133
  ClickActionParams,
@@ -99,11 +136,18 @@ from .computer_action import (
99
136
  ComputerActionResponse,
100
137
  Coordinate,
101
138
  DragActionParams,
139
+ HoldKeyActionParams,
140
+ MouseDownActionParams,
141
+ MouseUpActionParams,
102
142
  MoveMouseActionParams,
103
143
  PressKeysActionParams,
104
144
  ScreenshotActionParams,
105
145
  ScrollActionParams,
106
146
  TypeTextActionParams,
147
+ ComputerActionMouseButton,
148
+ GetClipboardTextActionParams,
149
+ ComputerActionResponseDataClipboardText,
150
+ ComputerActionResponseData,
107
151
  )
108
152
  from .session import (
109
153
  BasicResponse,
@@ -119,7 +163,13 @@ from .session import (
119
163
  SessionListResponse,
120
164
  SessionRecording,
121
165
  SessionStatus,
166
+ SessionEventLog,
167
+ SessionEventLogListParams,
168
+ SessionEventLogListResponse,
169
+ SessionProfile,
170
+ SessionLaunchState,
122
171
  UploadFileResponse,
172
+ ImageCaptchaParam,
123
173
  )
124
174
  from .team import TeamCreditInfo
125
175
 
@@ -139,7 +189,10 @@ __all__ = [
139
189
  "ScrapePageStatus",
140
190
  "ScrapeScreenshotFormat",
141
191
  "ScrapeWaitUntil",
192
+ "SessionEventLogType",
142
193
  "State",
194
+ "SessionRegion",
195
+ "BrowserUseVersion",
143
196
  # agents
144
197
  "HyperAgentTaskStatus",
145
198
  "HyperAgentActionOutput",
@@ -156,12 +209,40 @@ __all__ = [
156
209
  "BrowserUseTaskStatusResponse",
157
210
  "StartBrowserUseTaskParams",
158
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",
159
232
  "ClaudeComputerUseTaskStatus",
233
+ "ClaudeComputerUseStepResponse",
160
234
  "ClaudeComputerUseTaskData",
161
235
  "ClaudeComputerUseTaskResponse",
162
236
  "ClaudeComputerUseTaskStatusResponse",
163
237
  "StartClaudeComputerUseTaskParams",
164
238
  "StartClaudeComputerUseTaskResponse",
239
+ "GeminiComputerUseTaskStatus",
240
+ "GeminiComputerUseStepResponse",
241
+ "GeminiComputerUseTaskData",
242
+ "GeminiComputerUseTaskResponse",
243
+ "GeminiComputerUseTaskStatusResponse",
244
+ "StartGeminiComputerUseTaskParams",
245
+ "StartGeminiComputerUseTaskResponse",
165
246
  "CuaTaskStatus",
166
247
  "CuaTaskData",
167
248
  "CuaTaskResponse",
@@ -170,6 +251,7 @@ __all__ = [
170
251
  "StartCuaTaskResponse",
171
252
  "BrowserUseApiKeys",
172
253
  "ClaudeComputerUseApiKeys",
254
+ "GeminiComputerUseApiKeys",
173
255
  "CuaApiKeys",
174
256
  "HyperAgentApiKeys",
175
257
  # crawl
@@ -190,6 +272,7 @@ __all__ = [
190
272
  "ExtractJobStatusResponse",
191
273
  "StartExtractJobParams",
192
274
  "StartExtractJobResponse",
275
+ "ExtractJobMetadata",
193
276
  # profile
194
277
  "CreateProfileParams",
195
278
  "CreateProfileResponse",
@@ -211,6 +294,7 @@ __all__ = [
211
294
  "StartBatchScrapeJobResponse",
212
295
  "StartScrapeJobParams",
213
296
  "StartScrapeJobResponse",
297
+ "StorageStateOptions",
214
298
  # session
215
299
  "BasicResponse",
216
300
  "CreateSessionParams",
@@ -225,7 +309,13 @@ __all__ = [
225
309
  "SessionListResponse",
226
310
  "SessionRecording",
227
311
  "SessionStatus",
312
+ "SessionEventLog",
313
+ "SessionEventLogListParams",
314
+ "SessionEventLogListResponse",
315
+ "SessionProfile",
316
+ "SessionLaunchState",
228
317
  "UploadFileResponse",
318
+ "ImageCaptchaParam",
229
319
  # team
230
320
  "TeamCreditInfo",
231
321
  # computer action
@@ -235,9 +325,16 @@ __all__ = [
235
325
  "ComputerActionResponse",
236
326
  "Coordinate",
237
327
  "DragActionParams",
328
+ "HoldKeyActionParams",
329
+ "MouseDownActionParams",
330
+ "MouseUpActionParams",
238
331
  "MoveMouseActionParams",
239
332
  "PressKeysActionParams",
240
333
  "ScreenshotActionParams",
241
334
  "ScrollActionParams",
242
335
  "TypeTextActionParams",
336
+ "ComputerActionMouseButton",
337
+ "GetClipboardTextActionParams",
338
+ "ComputerActionResponseDataClipboardText",
339
+ "ComputerActionResponseData",
243
340
  ]