hyperbrowser 0.61.0__tar.gz → 0.62.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.

Potentially problematic release.


This version of hyperbrowser might be problematic. Click here for more details.

Files changed (60) hide show
  1. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/PKG-INFO +1 -1
  2. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/agents/__init__.py +2 -0
  3. hyperbrowser-0.62.0/hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +71 -0
  4. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/agents/__init__.py +2 -0
  5. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +1 -1
  6. hyperbrowser-0.62.0/hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +71 -0
  7. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/__init__.py +25 -0
  8. hyperbrowser-0.62.0/hyperbrowser/models/agents/gemini_computer_use.py +117 -0
  9. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/consts.py +1 -0
  10. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/pyproject.toml +1 -1
  11. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/LICENSE +0 -0
  12. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/README.md +0 -0
  13. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/__init__.py +0 -0
  14. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/async_client.py +0 -0
  15. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/base.py +0 -0
  16. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/agents/browser_use.py +0 -0
  17. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py +0 -0
  18. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/agents/cua.py +0 -0
  19. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/agents/hyper_agent.py +0 -0
  20. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/computer_action.py +0 -0
  21. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
  22. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
  23. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
  24. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
  25. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
  26. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/session.py +0 -0
  27. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/async_manager/team.py +0 -0
  28. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/agents/browser_use.py +0 -0
  29. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/agents/cua.py +0 -0
  30. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py +0 -0
  31. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/computer_action.py +0 -0
  32. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
  33. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
  34. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
  35. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
  36. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
  37. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/session.py +0 -0
  38. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/managers/sync_manager/team.py +0 -0
  39. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/client/sync.py +0 -0
  40. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/config.py +0 -0
  41. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/exceptions.py +0 -0
  42. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/agents/browser_use.py +0 -0
  43. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/agents/claude_computer_use.py +0 -0
  44. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/agents/cua.py +0 -0
  45. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/agents/hyper_agent.py +0 -0
  46. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/computer_action.py +0 -0
  47. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/crawl.py +0 -0
  48. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/extension.py +0 -0
  49. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/extract.py +0 -0
  50. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/profile.py +0 -0
  51. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/scrape.py +0 -0
  52. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/session.py +0 -0
  53. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/models/team.py +0 -0
  54. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/tools/__init__.py +0 -0
  55. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/tools/anthropic.py +0 -0
  56. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/tools/openai.py +0 -0
  57. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/tools/schema.py +0 -0
  58. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/transport/async_transport.py +0 -0
  59. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/transport/base.py +0 -0
  60. {hyperbrowser-0.61.0 → hyperbrowser-0.62.0}/hyperbrowser/transport/sync.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperbrowser
3
- Version: 0.61.0
3
+ Version: 0.62.0
4
4
  Summary: Python SDK for hyperbrowser
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -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)
@@ -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)
@@ -7,6 +7,8 @@ from .agents.browser_use import (
7
7
  BrowserUseApiKeys,
8
8
  )
9
9
  from .agents.claude_computer_use import (
10
+ ClaudeComputerUseTaskStatus,
11
+ ClaudeComputerUseStepResponse,
10
12
  ClaudeComputerUseTaskData,
11
13
  ClaudeComputerUseTaskResponse,
12
14
  ClaudeComputerUseTaskStatusResponse,
@@ -14,6 +16,16 @@ from .agents.claude_computer_use import (
14
16
  StartClaudeComputerUseTaskResponse,
15
17
  ClaudeComputerUseApiKeys,
16
18
  )
19
+ from .agents.gemini_computer_use import (
20
+ GeminiComputerUseTaskStatus,
21
+ GeminiComputerUseStepResponse,
22
+ GeminiComputerUseTaskData,
23
+ GeminiComputerUseTaskResponse,
24
+ GeminiComputerUseTaskStatusResponse,
25
+ StartGeminiComputerUseTaskParams,
26
+ StartGeminiComputerUseTaskResponse,
27
+ GeminiComputerUseApiKeys,
28
+ )
17
29
  from .agents.cua import (
18
30
  CuaTaskData,
19
31
  CuaTaskResponse,
@@ -51,6 +63,7 @@ from .consts import (
51
63
  ScrapeWaitUntil,
52
64
  SessionEventLogType,
53
65
  State,
66
+ SessionRegion,
54
67
  )
55
68
  from .crawl import (
56
69
  CrawledPage,
@@ -126,6 +139,7 @@ from .session import (
126
139
  SessionProfile,
127
140
  SessionLaunchState,
128
141
  UploadFileResponse,
142
+ ImageCaptchaParam,
129
143
  )
130
144
  from .team import TeamCreditInfo
131
145
 
@@ -147,6 +161,7 @@ __all__ = [
147
161
  "ScrapeWaitUntil",
148
162
  "SessionEventLogType",
149
163
  "State",
164
+ "SessionRegion",
150
165
  # agents
151
166
  "HyperAgentTaskStatus",
152
167
  "HyperAgentActionOutput",
@@ -164,11 +179,19 @@ __all__ = [
164
179
  "StartBrowserUseTaskParams",
165
180
  "StartBrowserUseTaskResponse",
166
181
  "ClaudeComputerUseTaskStatus",
182
+ "ClaudeComputerUseStepResponse",
167
183
  "ClaudeComputerUseTaskData",
168
184
  "ClaudeComputerUseTaskResponse",
169
185
  "ClaudeComputerUseTaskStatusResponse",
170
186
  "StartClaudeComputerUseTaskParams",
171
187
  "StartClaudeComputerUseTaskResponse",
188
+ "GeminiComputerUseTaskStatus",
189
+ "GeminiComputerUseStepResponse",
190
+ "GeminiComputerUseTaskData",
191
+ "GeminiComputerUseTaskResponse",
192
+ "GeminiComputerUseTaskStatusResponse",
193
+ "StartGeminiComputerUseTaskParams",
194
+ "StartGeminiComputerUseTaskResponse",
172
195
  "CuaTaskStatus",
173
196
  "CuaTaskData",
174
197
  "CuaTaskResponse",
@@ -177,6 +200,7 @@ __all__ = [
177
200
  "StartCuaTaskResponse",
178
201
  "BrowserUseApiKeys",
179
202
  "ClaudeComputerUseApiKeys",
203
+ "GeminiComputerUseApiKeys",
180
204
  "CuaApiKeys",
181
205
  "HyperAgentApiKeys",
182
206
  # crawl
@@ -238,6 +262,7 @@ __all__ = [
238
262
  "SessionProfile",
239
263
  "SessionLaunchState",
240
264
  "UploadFileResponse",
265
+ "ImageCaptchaParam",
241
266
  # team
242
267
  "TeamCreditInfo",
243
268
  # computer action
@@ -0,0 +1,117 @@
1
+ from typing import Any, Literal, Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+ from ..session import CreateSessionParams
6
+ from ..consts import GeminiComputerUseLlm
7
+
8
+ GeminiComputerUseTaskStatus = Literal[
9
+ "pending", "running", "completed", "failed", "stopped"
10
+ ]
11
+
12
+
13
+ class GeminiComputerUseApiKeys(BaseModel):
14
+ """
15
+ API keys for the Gemini Computer Use task.
16
+ """
17
+
18
+ model_config = ConfigDict(
19
+ populate_by_alias=True,
20
+ )
21
+
22
+ google: Optional[str] = Field(default=None, serialization_alias="google")
23
+
24
+
25
+ class StartGeminiComputerUseTaskParams(BaseModel):
26
+ """
27
+ Parameters for creating a new Gemini Computer Use task.
28
+ """
29
+
30
+ model_config = ConfigDict(
31
+ populate_by_alias=True,
32
+ )
33
+
34
+ task: str
35
+ llm: Optional[GeminiComputerUseLlm] = Field(default=None, serialization_alias="llm")
36
+ session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
37
+ max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
38
+ max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
39
+ keep_browser_open: Optional[bool] = Field(
40
+ default=None, serialization_alias="keepBrowserOpen"
41
+ )
42
+ session_options: Optional[CreateSessionParams] = Field(
43
+ default=None, serialization_alias="sessionOptions"
44
+ )
45
+ use_custom_api_keys: Optional[bool] = Field(
46
+ default=None, serialization_alias="useCustomApiKeys"
47
+ )
48
+ api_keys: Optional[GeminiComputerUseApiKeys] = Field(
49
+ default=None, serialization_alias="apiKeys"
50
+ )
51
+
52
+
53
+ class StartGeminiComputerUseTaskResponse(BaseModel):
54
+ """
55
+ Response from starting a Gemini Computer Use task.
56
+ """
57
+
58
+ model_config = ConfigDict(
59
+ populate_by_alias=True,
60
+ )
61
+
62
+ job_id: str = Field(alias="jobId")
63
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
64
+
65
+
66
+ class GeminiComputerUseTaskStatusResponse(BaseModel):
67
+ """
68
+ Response from getting a Gemini Computer Use task status.
69
+ """
70
+
71
+ model_config = ConfigDict(
72
+ populate_by_alias=True,
73
+ )
74
+
75
+ status: GeminiComputerUseTaskStatus
76
+
77
+
78
+ class GeminiComputerUseStepResponse(BaseModel):
79
+ """
80
+ Response from a single Gemini Computer Use step.
81
+ """
82
+
83
+ model_config = ConfigDict(
84
+ populate_by_alias=True,
85
+ )
86
+
87
+ candidates: Optional[list[Any]] = Field(
88
+ default=None, serialization_alias="candidates"
89
+ )
90
+ model_version: Optional[str] = Field(
91
+ default=None, serialization_alias="modelVersion"
92
+ )
93
+
94
+
95
+ class GeminiComputerUseTaskData(BaseModel):
96
+ model_config = ConfigDict(
97
+ populate_by_alias=True,
98
+ )
99
+
100
+ steps: list[GeminiComputerUseStepResponse]
101
+ final_result: Optional[str] = Field(default=None, alias="finalResult")
102
+
103
+
104
+ class GeminiComputerUseTaskResponse(BaseModel):
105
+ """
106
+ Response from a Gemini Computer Use task.
107
+ """
108
+
109
+ model_config = ConfigDict(
110
+ populate_by_alias=True,
111
+ )
112
+
113
+ job_id: str = Field(alias="jobId")
114
+ status: GeminiComputerUseTaskStatus
115
+ data: Optional[GeminiComputerUseTaskData] = Field(default=None, alias="data")
116
+ error: Optional[str] = Field(default=None, alias="error")
117
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -43,6 +43,7 @@ ClaudeComputerUseLlm = Literal[
43
43
  "claude-sonnet-4-20250514",
44
44
  "claude-3-7-sonnet-20250219",
45
45
  ]
46
+ GeminiComputerUseLlm = Literal["gemini-2.5-computer-use-preview-10-2025",]
46
47
  SessionRegion = Literal[
47
48
  "us-central",
48
49
  "asia-south",
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "hyperbrowser"
3
- version = "0.61.0"
3
+ version = "0.62.0"
4
4
  description = "Python SDK for hyperbrowser"
5
5
  authors = ["Nikhil Shahi <nshahi1998@gmail.com>"]
6
6
  license = "MIT"
File without changes
File without changes