hyperbrowser 0.42.0__py3-none-any.whl → 0.44.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.

@@ -1,6 +1,7 @@
1
1
  from .browser_use import BrowserUseManager
2
2
  from .cua import CuaManager
3
3
  from .claude_computer_use import ClaudeComputerUseManager
4
+ from .hyper_agent import HyperAgentManager
4
5
 
5
6
 
6
7
  class Agents:
@@ -8,3 +9,4 @@ class Agents:
8
9
  self.browser_use = BrowserUseManager(client)
9
10
  self.cua = CuaManager(client)
10
11
  self.claude_computer_use = ClaudeComputerUseManager(client)
12
+ self.hyper_agent = HyperAgentManager(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
+ HyperAgentTaskResponse,
9
+ HyperAgentTaskStatusResponse,
10
+ StartHyperAgentTaskParams,
11
+ StartHyperAgentTaskResponse,
12
+ )
13
+
14
+
15
+ class HyperAgentManager:
16
+ def __init__(self, client):
17
+ self._client = client
18
+
19
+ async def start(
20
+ self, params: StartHyperAgentTaskParams
21
+ ) -> StartHyperAgentTaskResponse:
22
+ response = await self._client.transport.post(
23
+ self._client._build_url("/task/hyper-agent"),
24
+ data=params.model_dump(exclude_none=True, by_alias=True),
25
+ )
26
+ return StartHyperAgentTaskResponse(**response.data)
27
+
28
+ async def get(self, job_id: str) -> HyperAgentTaskResponse:
29
+ response = await self._client.transport.get(
30
+ self._client._build_url(f"/task/hyper-agent/{job_id}")
31
+ )
32
+ return HyperAgentTaskResponse(**response.data)
33
+
34
+ async def get_status(self, job_id: str) -> HyperAgentTaskStatusResponse:
35
+ response = await self._client.transport.get(
36
+ self._client._build_url(f"/task/hyper-agent/{job_id}/status")
37
+ )
38
+ return HyperAgentTaskStatusResponse(**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/hyper-agent/{job_id}/stop")
43
+ )
44
+ return BasicResponse(**response.data)
45
+
46
+ async def start_and_wait(
47
+ self, params: StartHyperAgentTaskParams
48
+ ) -> HyperAgentTaskResponse:
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 HyperAgent task")
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 HyperAgent task {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
70
+ )
71
+ await asyncio.sleep(2)
@@ -1,6 +1,7 @@
1
1
  from .browser_use import BrowserUseManager
2
2
  from .cua import CuaManager
3
3
  from .claude_computer_use import ClaudeComputerUseManager
4
+ from .hyper_agent import HyperAgentManager
4
5
 
5
6
 
6
7
  class Agents:
@@ -8,3 +9,4 @@ class Agents:
8
9
  self.browser_use = BrowserUseManager(client)
9
10
  self.cua = CuaManager(client)
10
11
  self.claude_computer_use = ClaudeComputerUseManager(client)
12
+ self.hyper_agent = HyperAgentManager(client)
@@ -0,0 +1,69 @@
1
+ import time
2
+
3
+ from hyperbrowser.exceptions import HyperbrowserError
4
+
5
+ from .....models import (
6
+ POLLING_ATTEMPTS,
7
+ BasicResponse,
8
+ HyperAgentTaskResponse,
9
+ HyperAgentTaskStatusResponse,
10
+ StartHyperAgentTaskParams,
11
+ StartHyperAgentTaskResponse,
12
+ )
13
+
14
+
15
+ class HyperAgentManager:
16
+ def __init__(self, client):
17
+ self._client = client
18
+
19
+ def start(self, params: StartHyperAgentTaskParams) -> StartHyperAgentTaskResponse:
20
+ response = self._client.transport.post(
21
+ self._client._build_url("/task/hyper-agent"),
22
+ data=params.model_dump(exclude_none=True, by_alias=True),
23
+ )
24
+ return StartHyperAgentTaskResponse(**response.data)
25
+
26
+ def get(self, job_id: str) -> HyperAgentTaskResponse:
27
+ response = self._client.transport.get(
28
+ self._client._build_url(f"/task/hyper-agent/{job_id}")
29
+ )
30
+ return HyperAgentTaskResponse(**response.data)
31
+
32
+ def get_status(self, job_id: str) -> HyperAgentTaskStatusResponse:
33
+ response = self._client.transport.get(
34
+ self._client._build_url(f"/task/hyper-agent/{job_id}/status")
35
+ )
36
+ return HyperAgentTaskStatusResponse(**response.data)
37
+
38
+ def stop(self, job_id: str) -> BasicResponse:
39
+ response = self._client.transport.put(
40
+ self._client._build_url(f"/task/hyper-agent/{job_id}/stop")
41
+ )
42
+ return BasicResponse(**response.data)
43
+
44
+ def start_and_wait(
45
+ self, params: StartHyperAgentTaskParams
46
+ ) -> HyperAgentTaskResponse:
47
+ job_start_resp = self.start(params)
48
+ job_id = job_start_resp.job_id
49
+ if not job_id:
50
+ raise HyperbrowserError("Failed to start HyperAgent task")
51
+
52
+ failures = 0
53
+ while True:
54
+ try:
55
+ job_response = self.get_status(job_id)
56
+ if (
57
+ job_response.status == "completed"
58
+ or job_response.status == "failed"
59
+ or job_response.status == "stopped"
60
+ ):
61
+ return self.get(job_id)
62
+ failures = 0
63
+ except Exception as e:
64
+ failures += 1
65
+ if failures >= POLLING_ATTEMPTS:
66
+ raise HyperbrowserError(
67
+ f"Failed to poll HyperAgent task {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
68
+ )
69
+ time.sleep(2)
@@ -19,9 +19,21 @@ from .agents.cua import (
19
19
  StartCuaTaskParams,
20
20
  StartCuaTaskResponse,
21
21
  )
22
+ from .agents.hyper_agent import (
23
+ HyperAgentActionOutput,
24
+ HyperAgentOutput,
25
+ HyperAgentStep,
26
+ HyperAgentTaskData,
27
+ HyperAgentTaskResponse,
28
+ HyperAgentTaskStatus,
29
+ HyperAgentTaskStatusResponse,
30
+ StartHyperAgentTaskParams,
31
+ StartHyperAgentTaskResponse,
32
+ )
22
33
  from .consts import (
23
34
  ISO639_1,
24
35
  POLLING_ATTEMPTS,
36
+ HyperAgentLlm,
25
37
  BrowserUseLlm,
26
38
  Country,
27
39
  DownloadsStatus,
@@ -95,6 +107,7 @@ __all__ = [
95
107
  # consts
96
108
  "ISO639_1",
97
109
  "POLLING_ATTEMPTS",
110
+ "HyperAgentLlm",
98
111
  "BrowserUseLlm",
99
112
  "Country",
100
113
  "DownloadsStatus",
@@ -107,6 +120,15 @@ __all__ = [
107
120
  "ScrapeWaitUntil",
108
121
  "State",
109
122
  # agents
123
+ "HyperAgentTaskStatus",
124
+ "HyperAgentActionOutput",
125
+ "HyperAgentOutput",
126
+ "HyperAgentStep",
127
+ "HyperAgentTaskData",
128
+ "HyperAgentTaskResponse",
129
+ "HyperAgentTaskStatusResponse",
130
+ "StartHyperAgentTaskParams",
131
+ "StartHyperAgentTaskResponse",
110
132
  "BrowserUseTaskStatus",
111
133
  "BrowserUseTaskData",
112
134
  "BrowserUseTaskResponse",
@@ -0,0 +1,122 @@
1
+ from typing import Any, Dict, List, Literal, Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+ from ..consts import HyperAgentLlm
6
+ from ..session import CreateSessionParams
7
+
8
+ HyperAgentTaskStatus = Literal["pending", "running", "completed", "failed", "stopped"]
9
+
10
+
11
+ class StartHyperAgentTaskParams(BaseModel):
12
+ """
13
+ Parameters for creating a new HyperAgent task.
14
+ """
15
+
16
+ model_config = ConfigDict(
17
+ populate_by_alias=True,
18
+ )
19
+
20
+ task: str
21
+ llm: Optional[HyperAgentLlm] = Field(default=None, serialization_alias="llm")
22
+ session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
23
+ max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
24
+ keep_browser_open: Optional[bool] = Field(
25
+ default=None, serialization_alias="keepBrowserOpen"
26
+ )
27
+ session_options: Optional[CreateSessionParams] = Field(
28
+ default=None, serialization_alias="sessionOptions"
29
+ )
30
+
31
+
32
+ class StartHyperAgentTaskResponse(BaseModel):
33
+ """
34
+ Response from starting a HyperAgent task.
35
+ """
36
+
37
+ model_config = ConfigDict(
38
+ populate_by_alias=True,
39
+ )
40
+
41
+ job_id: str = Field(alias="jobId")
42
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
43
+
44
+
45
+ class HyperAgentTaskStatusResponse(BaseModel):
46
+ """
47
+ Response from getting a HyperAgent task status.
48
+ """
49
+
50
+ model_config = ConfigDict(
51
+ populate_by_alias=True,
52
+ )
53
+
54
+ status: HyperAgentTaskStatus
55
+
56
+
57
+ class HyperAgentActionOutput(BaseModel):
58
+ """
59
+ The output of an action in a HyperAgent step.
60
+ """
61
+
62
+ model_config = ConfigDict(
63
+ populate_by_alias=True,
64
+ )
65
+
66
+ success: bool
67
+ message: str
68
+ extract: Optional[Dict[str, Any]] = Field(default=None)
69
+
70
+
71
+ class HyperAgentOutput(BaseModel):
72
+ """
73
+ The output of a HyperAgent step.
74
+ """
75
+
76
+ model_config = ConfigDict(
77
+ populate_by_alias=True,
78
+ )
79
+
80
+ thoughts: Optional[str] = Field(default=None)
81
+ memory: Optional[str] = Field(default=None)
82
+ next_goal: Optional[str] = Field(default=None, alias="nextGoal")
83
+ actions: List[Dict[str, Any]] = Field(default=[])
84
+
85
+
86
+ class HyperAgentStep(BaseModel):
87
+ """
88
+ A single step in a HyperAgent task.
89
+ """
90
+
91
+ model_config = ConfigDict(
92
+ populate_by_alias=True,
93
+ )
94
+
95
+ idx: int
96
+ agent_output: HyperAgentOutput = Field(alias="agentOutput")
97
+ action_outputs: List[HyperAgentActionOutput] = Field(alias="actionOutputs")
98
+
99
+
100
+ class HyperAgentTaskData(BaseModel):
101
+ model_config = ConfigDict(
102
+ populate_by_alias=True,
103
+ )
104
+
105
+ steps: list[HyperAgentStep]
106
+ final_result: Optional[str] = Field(default=None, alias="finalResult")
107
+
108
+
109
+ class HyperAgentTaskResponse(BaseModel):
110
+ """
111
+ Response from a HyperAgent task.
112
+ """
113
+
114
+ model_config = ConfigDict(
115
+ populate_by_alias=True,
116
+ )
117
+
118
+ job_id: str = Field(alias="jobId")
119
+ status: HyperAgentTaskStatus
120
+ data: Optional[HyperAgentTaskData] = Field(default=None, alias="data")
121
+ error: Optional[str] = Field(default=None, alias="error")
122
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -21,6 +21,13 @@ BrowserUseLlm = Literal[
21
21
  "claude-3-5-haiku-20241022",
22
22
  "gemini-2.0-flash",
23
23
  ]
24
+ HyperAgentLlm = Literal[
25
+ "gpt-4o",
26
+ "gpt-4o-mini",
27
+ "gpt-4.1",
28
+ "gpt-4.1-mini",
29
+ "gpt-4.1-nano",
30
+ ]
24
31
 
25
32
  Country = Literal[
26
33
  "AD",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: hyperbrowser
3
- Version: 0.42.0
3
+ Version: 0.44.0
4
4
  Summary: Python SDK for hyperbrowser
5
5
  License: MIT
6
6
  Author: Nikhil Shahi
@@ -1,20 +1,22 @@
1
1
  hyperbrowser/__init__.py,sha256=zWGcLhqhvWy6BTwuNpzWK1-0LpIn311ks-4U9nrsb7Y,187
2
2
  hyperbrowser/client/async_client.py,sha256=TfDVCO0AxgUI5mB4bmnP0mvWdDR_C6yvMpo24KIkaDc,1474
3
3
  hyperbrowser/client/base.py,sha256=9gFma7RdvJBUlDCqr8tZd315UPrjn4ldU4B0-Y-L4O4,1268
4
- hyperbrowser/client/managers/async_manager/agents/__init__.py,sha256=iQF-JlDvCG7X-c0848OTD2WUMdb3sUsUokvEJzDea2g,336
4
+ hyperbrowser/client/managers/async_manager/agents/__init__.py,sha256=GUkUBxoqW6vchz3-yNlUaE8TdEClNdp3RliHYMT1fsE,432
5
5
  hyperbrowser/client/managers/async_manager/agents/browser_use.py,sha256=DLRcQfmM8LKBJsaFCx8cYn0L4UjCd0I3egoX5ytVoTg,2511
6
6
  hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py,sha256=gTnX8r3rETyLMsDy_4nO0oB5cDdHHN9s-y7xw-4ekqc,2657
7
7
  hyperbrowser/client/managers/async_manager/agents/cua.py,sha256=e43QgSLi0LvGd9cOirsRETcit0MXvvtLA2cNv16xH0s,2337
8
+ hyperbrowser/client/managers/async_manager/agents/hyper_agent.py,sha256=VzPTrvlYX_CZohoCD6Z8Cf1itDZ6BLKmrzpjv6YGs88,2501
8
9
  hyperbrowser/client/managers/async_manager/crawl.py,sha256=fzaF6cK5HZej2C6FwXxnrRt4OpJ5qYxMktaQGVYTlWE,4357
9
10
  hyperbrowser/client/managers/async_manager/extension.py,sha256=a-xYtXXdCspukYtsguRgjEoQ8E_kzzA2tQAJtIyCtAs,1439
10
11
  hyperbrowser/client/managers/async_manager/extract.py,sha256=wZO696_3Mse3tnsHgpSXibo6IfwcO5K1lWstcO_2GjQ,2492
11
12
  hyperbrowser/client/managers/async_manager/profile.py,sha256=cQ4cYVwL83heQwEnQiBw0PHk1HWK7DWFXmmBnRXJt0E,1514
12
13
  hyperbrowser/client/managers/async_manager/scrape.py,sha256=U8oa5QNOfLfYxd31BmcLE2dqJbOK60cmoLDGoHzJnAI,6500
13
14
  hyperbrowser/client/managers/async_manager/session.py,sha256=tOAtC8zNjVycGDHrdsI6tEvc-GtF2GBs3Tta_qOmb_o,2733
14
- hyperbrowser/client/managers/sync_manager/agents/__init__.py,sha256=iQF-JlDvCG7X-c0848OTD2WUMdb3sUsUokvEJzDea2g,336
15
+ hyperbrowser/client/managers/sync_manager/agents/__init__.py,sha256=GUkUBxoqW6vchz3-yNlUaE8TdEClNdp3RliHYMT1fsE,432
15
16
  hyperbrowser/client/managers/sync_manager/agents/browser_use.py,sha256=DX2Z5k6B_oA3wm4iYHCOq3l8B0ZyspdKlJhzf592-bw,2413
16
17
  hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py,sha256=6mAaqDjKrLrxRaGZfZSgC7wYVyDQeWZEE6K6wLrnTXk,2557
17
18
  hyperbrowser/client/managers/sync_manager/agents/cua.py,sha256=rh3JyXWzh9SvSLkDBtWGVUd2KMx27MyLMuNPnRwvbxk,2253
19
+ hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py,sha256=UgB_eEa7PODGoTegulJzJDPBr2VQ-hIT0yA0z7BfYtk,2403
18
20
  hyperbrowser/client/managers/sync_manager/crawl.py,sha256=gwLtEX-qGNvqxA7IhCIKYTF3QV3_gX7nOpMWZ2s7HzA,4289
19
21
  hyperbrowser/client/managers/sync_manager/extension.py,sha256=1YoyTZtMo43trl9jAsXv95aor0nBHiJEmLva39jFW-k,1415
20
22
  hyperbrowser/client/managers/sync_manager/extract.py,sha256=rNSxAMR95_nL4qHuatPSzXrYFUGbLQE1xm9Us1myy9s,2391
@@ -24,11 +26,12 @@ hyperbrowser/client/managers/sync_manager/session.py,sha256=FuqTFrtKCbJRrwTvknQC
24
26
  hyperbrowser/client/sync.py,sha256=LjBkuXGhGJaMbDPEZbF9mzonb2UBw_I9d6xk2MDQqIU,1297
25
27
  hyperbrowser/config.py,sha256=6xtUiVXy7MQMiARAsadP62U46tL0wzVMDuGmQBcH_LQ,623
26
28
  hyperbrowser/exceptions.py,sha256=SUUkptK2OL36xDORYmSicaTYR7pMbxeWAjAgz35xnM8,1171
27
- hyperbrowser/models/__init__.py,sha256=QalBIyNNlTrJ3M1JExpiEjrFdI8kHAfBJ3y-L4zOMdI,4352
29
+ hyperbrowser/models/__init__.py,sha256=GsKUkJRXD7mQo6FfiqzS-HByjKVnETjUVjcoiLT6MPA,4938
28
30
  hyperbrowser/models/agents/browser_use.py,sha256=H-QUUgXkho14mMf9s4mdytsGjgLKk8dlx1Co6jYZKfM,5290
29
31
  hyperbrowser/models/agents/claude_computer_use.py,sha256=6bnaF9Y-5jSr0vLXJijDwW29GZXr7H_8SMQSmY4vAFk,2568
30
32
  hyperbrowser/models/agents/cua.py,sha256=ao7AA6NBet31duCZLI5aiWydNiiHvgQTPxkxHR5r2Cw,3061
31
- hyperbrowser/models/consts.py,sha256=KdwLaRPMXv1U_oWwfGv8Kmml7Nygy-d1qH-IvAT2U_E,6601
33
+ hyperbrowser/models/agents/hyper_agent.py,sha256=bqRc9yWuwj3yRv6p--mbNSICRL-Qlj5tR7E_A7kozQk,3100
34
+ hyperbrowser/models/consts.py,sha256=Pz0jchWLp4QFoNJLfUAAMntmJ5OwcAr_Jbpkg-PXQHg,6716
32
35
  hyperbrowser/models/crawl.py,sha256=XUS5Ja-Abl8gMyDtLIsRaEKa_taSOORMLOFCdAPgGaI,2820
33
36
  hyperbrowser/models/extension.py,sha256=nXjKXKt9R7RxyZ4hd3EvfqZsEGy_ufh1r5j2mqCLykQ,804
34
37
  hyperbrowser/models/extract.py,sha256=DXg0HtO44plAtcFOmqUpdp9P93tq45U2fLWxn5jdjAw,1745
@@ -42,7 +45,7 @@ hyperbrowser/tools/schema.py,sha256=YFUAoQjx_SpjezS3UQdTCCn4xMdN3CgEeKAlulkIATc,
42
45
  hyperbrowser/transport/async_transport.py,sha256=6HKoeM5TutIqraEscEWobvSPWF3iVKh2hPflGNKwykw,4128
43
46
  hyperbrowser/transport/base.py,sha256=ildpMrDiM8nvrSGrH2LTOafmB17T7PQB_NQ1ODA378U,1703
44
47
  hyperbrowser/transport/sync.py,sha256=aUVpxWF8sqSycLNKxVNEZvlsZSoqc1eHgPK1Y1QA1u8,3422
45
- hyperbrowser-0.42.0.dist-info/LICENSE,sha256=6rUGKlyKb_1ZAH7h7YITYAAUNFN3MNGGKCyfrw49NLE,1071
46
- hyperbrowser-0.42.0.dist-info/METADATA,sha256=r2-DKyaum5NwXP9KtNbIMWv58mnurMjNJn7iKt6IIqE,3471
47
- hyperbrowser-0.42.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
48
- hyperbrowser-0.42.0.dist-info/RECORD,,
48
+ hyperbrowser-0.44.0.dist-info/LICENSE,sha256=6rUGKlyKb_1ZAH7h7YITYAAUNFN3MNGGKCyfrw49NLE,1071
49
+ hyperbrowser-0.44.0.dist-info/METADATA,sha256=iAbVSNJLFJutlXKXEGrWiJHQ9iVMo7jFmq6bmgqh7b0,3471
50
+ hyperbrowser-0.44.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
51
+ hyperbrowser-0.44.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.2
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any