hyperbrowser 1.4.1__tar.gz → 1.4.3__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.
Files changed (116) hide show
  1. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/PKG-INFO +1 -1
  2. {hyperbrowser-1.4.1/hyperbrowser/client/managers/sync_manager → hyperbrowser-1.4.3/hyperbrowser/client/managers/async_manager}/agents/__init__.py +2 -0
  3. hyperbrowser-1.4.3/hyperbrowser/client/managers/async_manager/agents/meta_computer_use.py +84 -0
  4. {hyperbrowser-1.4.1/hyperbrowser/client/managers/async_manager → hyperbrowser-1.4.3/hyperbrowser/client/managers/sync_manager}/agents/__init__.py +2 -0
  5. hyperbrowser-1.4.3/hyperbrowser/client/managers/sync_manager/agents/meta_computer_use.py +84 -0
  6. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/__init__.py +28 -0
  7. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/agents/claude_computer_use.py +4 -1
  8. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/agents/cua.py +4 -1
  9. hyperbrowser-1.4.3/hyperbrowser/models/agents/meta_computer_use.py +165 -0
  10. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/consts.py +29 -0
  11. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/__init__.py +4 -0
  12. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/agents.py +30 -0
  13. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/pyproject.toml +1 -1
  14. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/LICENSE +0 -0
  15. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/README.md +0 -0
  16. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/__init__.py +0 -0
  17. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/_request.py +0 -0
  18. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/async_client.py +0 -0
  19. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/base.py +0 -0
  20. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/agents/browser_use.py +0 -0
  21. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py +0 -0
  22. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/agents/cua.py +0 -0
  23. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +0 -0
  24. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/agents/grok_computer_use.py +0 -0
  25. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/agents/hyper_agent.py +0 -0
  26. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/computer_action.py +0 -0
  27. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
  28. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
  29. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
  30. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
  31. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/sandbox.py +0 -0
  32. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/sandboxes/__init__.py +0 -0
  33. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_files.py +0 -0
  34. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_processes.py +0 -0
  35. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_terminal.py +0 -0
  36. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_transport.py +0 -0
  37. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
  38. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/session.py +0 -0
  39. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/team.py +0 -0
  40. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/volume.py +0 -0
  41. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/web/__init__.py +0 -0
  42. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/web/batch_fetch.py +0 -0
  43. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/async_manager/web/crawl.py +0 -0
  44. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sandboxes/__init__.py +0 -0
  45. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sandboxes/dockerfile_analysis.py +0 -0
  46. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sandboxes/dockerignore.py +0 -0
  47. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sandboxes/image_build.py +0 -0
  48. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sandboxes/shared.py +0 -0
  49. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/agents/browser_use.py +0 -0
  50. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +0 -0
  51. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/agents/cua.py +0 -0
  52. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +0 -0
  53. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/agents/grok_computer_use.py +0 -0
  54. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py +0 -0
  55. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/computer_action.py +0 -0
  56. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
  57. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
  58. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
  59. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
  60. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/sandbox.py +0 -0
  61. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/sandboxes/__init__.py +0 -0
  62. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_files.py +0 -0
  63. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_processes.py +0 -0
  64. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_terminal.py +0 -0
  65. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_transport.py +0 -0
  66. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
  67. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/session.py +0 -0
  68. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/team.py +0 -0
  69. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/volume.py +0 -0
  70. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/web/__init__.py +0 -0
  71. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/web/batch_fetch.py +0 -0
  72. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/managers/sync_manager/web/crawl.py +0 -0
  73. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/client/sync.py +0 -0
  74. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/config.py +0 -0
  75. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/exceptions.py +0 -0
  76. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/_parsers.py +0 -0
  77. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/agents/browser_use.py +0 -0
  78. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/agents/gemini_computer_use.py +0 -0
  79. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/agents/grok_computer_use.py +0 -0
  80. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/agents/hyper_agent.py +0 -0
  81. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/computer_action.py +0 -0
  82. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/crawl.py +0 -0
  83. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/extension.py +0 -0
  84. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/extract.py +0 -0
  85. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/profile.py +0 -0
  86. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/sandbox.py +0 -0
  87. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/scrape.py +0 -0
  88. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/session.py +0 -0
  89. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/team.py +0 -0
  90. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/volume.py +0 -0
  91. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/web/batch_fetch.py +0 -0
  92. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/web/branding.py +0 -0
  93. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/web/common.py +0 -0
  94. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/web/crawl.py +0 -0
  95. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/web/fetch.py +0 -0
  96. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/models/web/search.py +0 -0
  97. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/py.typed +0 -0
  98. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/sandbox_common.py +0 -0
  99. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/tools/__init__.py +0 -0
  100. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/tools/anthropic.py +0 -0
  101. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/tools/openai.py +0 -0
  102. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/tools/schema.py +0 -0
  103. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/transport/async_transport.py +0 -0
  104. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/transport/base.py +0 -0
  105. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/transport/sync.py +0 -0
  106. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/_json.py +0 -0
  107. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/computer_action.py +0 -0
  108. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/crawl.py +0 -0
  109. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/extension.py +0 -0
  110. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/extract.py +0 -0
  111. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/profile.py +0 -0
  112. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/sandbox.py +0 -0
  113. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/scrape.py +0 -0
  114. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/session.py +0 -0
  115. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/volume.py +0 -0
  116. {hyperbrowser-1.4.1 → hyperbrowser-1.4.3}/hyperbrowser/types/web.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperbrowser
3
- Version: 1.4.1
3
+ Version: 1.4.3
4
4
  Summary: Python SDK for hyperbrowser
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -4,6 +4,7 @@ from .claude_computer_use import ClaudeComputerUseManager
4
4
  from .hyper_agent import HyperAgentManager
5
5
  from .gemini_computer_use import GeminiComputerUseManager
6
6
  from .grok_computer_use import GrokComputerUseManager
7
+ from .meta_computer_use import MetaComputerUseManager
7
8
 
8
9
 
9
10
  class Agents:
@@ -14,3 +15,4 @@ class Agents:
14
15
  self.hyper_agent = HyperAgentManager(client)
15
16
  self.gemini_computer_use = GeminiComputerUseManager(client)
16
17
  self.grok_computer_use = GrokComputerUseManager(client)
18
+ self.meta_computer_use = MetaComputerUseManager(client)
@@ -0,0 +1,84 @@
1
+ import asyncio
2
+ from typing import Union
3
+
4
+ from hyperbrowser.client._request import dump_request
5
+ from hyperbrowser.exceptions import HyperbrowserError
6
+ from hyperbrowser.types import (
7
+ StartMetaComputerUseTaskParams as StartMetaComputerUseTaskParamsDict,
8
+ )
9
+
10
+ from .....models import (
11
+ POLLING_ATTEMPTS,
12
+ BasicResponse,
13
+ MetaComputerUseTaskResponse,
14
+ MetaComputerUseTaskStatusResponse,
15
+ StartMetaComputerUseTaskParams,
16
+ StartMetaComputerUseTaskResponse,
17
+ )
18
+
19
+
20
+ class MetaComputerUseManager:
21
+ def __init__(self, client):
22
+ self._client = client
23
+
24
+ async def start(
25
+ self,
26
+ params: Union[
27
+ StartMetaComputerUseTaskParamsDict,
28
+ StartMetaComputerUseTaskParams,
29
+ ],
30
+ ) -> StartMetaComputerUseTaskResponse:
31
+ response = await self._client.transport.post(
32
+ self._client._build_url("/task/meta-computer-use"),
33
+ data=dump_request(params, StartMetaComputerUseTaskParams),
34
+ )
35
+ return StartMetaComputerUseTaskResponse(**response.data)
36
+
37
+ async def get(self, job_id: str) -> MetaComputerUseTaskResponse:
38
+ response = await self._client.transport.get(
39
+ self._client._build_url(f"/task/meta-computer-use/{job_id}")
40
+ )
41
+ return MetaComputerUseTaskResponse(**response.data)
42
+
43
+ async def get_status(self, job_id: str) -> MetaComputerUseTaskStatusResponse:
44
+ response = await self._client.transport.get(
45
+ self._client._build_url(f"/task/meta-computer-use/{job_id}/status")
46
+ )
47
+ return MetaComputerUseTaskStatusResponse(**response.data)
48
+
49
+ async def stop(self, job_id: str) -> BasicResponse:
50
+ response = await self._client.transport.put(
51
+ self._client._build_url(f"/task/meta-computer-use/{job_id}/stop")
52
+ )
53
+ return BasicResponse(**response.data)
54
+
55
+ async def start_and_wait(
56
+ self,
57
+ params: Union[
58
+ StartMetaComputerUseTaskParamsDict,
59
+ StartMetaComputerUseTaskParams,
60
+ ],
61
+ ) -> MetaComputerUseTaskResponse:
62
+ job_start_resp = await self.start(params)
63
+ job_id = job_start_resp.job_id
64
+ if not job_id:
65
+ raise HyperbrowserError("Failed to start Meta Computer Use task job")
66
+
67
+ failures = 0
68
+ while True:
69
+ try:
70
+ job_response = await self.get_status(job_id)
71
+ if (
72
+ job_response.status == "completed"
73
+ or job_response.status == "failed"
74
+ or job_response.status == "stopped"
75
+ ):
76
+ return await self.get(job_id)
77
+ failures = 0
78
+ except Exception as e:
79
+ failures += 1
80
+ if failures >= POLLING_ATTEMPTS:
81
+ raise HyperbrowserError(
82
+ f"Failed to poll Meta Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
83
+ )
84
+ await asyncio.sleep(2)
@@ -4,6 +4,7 @@ from .claude_computer_use import ClaudeComputerUseManager
4
4
  from .hyper_agent import HyperAgentManager
5
5
  from .gemini_computer_use import GeminiComputerUseManager
6
6
  from .grok_computer_use import GrokComputerUseManager
7
+ from .meta_computer_use import MetaComputerUseManager
7
8
 
8
9
 
9
10
  class Agents:
@@ -14,3 +15,4 @@ class Agents:
14
15
  self.hyper_agent = HyperAgentManager(client)
15
16
  self.gemini_computer_use = GeminiComputerUseManager(client)
16
17
  self.grok_computer_use = GrokComputerUseManager(client)
18
+ self.meta_computer_use = MetaComputerUseManager(client)
@@ -0,0 +1,84 @@
1
+ import time
2
+ from typing import Union
3
+
4
+ from hyperbrowser.client._request import dump_request
5
+ from hyperbrowser.exceptions import HyperbrowserError
6
+ from hyperbrowser.types import (
7
+ StartMetaComputerUseTaskParams as StartMetaComputerUseTaskParamsDict,
8
+ )
9
+
10
+ from .....models import (
11
+ POLLING_ATTEMPTS,
12
+ BasicResponse,
13
+ MetaComputerUseTaskResponse,
14
+ MetaComputerUseTaskStatusResponse,
15
+ StartMetaComputerUseTaskParams,
16
+ StartMetaComputerUseTaskResponse,
17
+ )
18
+
19
+
20
+ class MetaComputerUseManager:
21
+ def __init__(self, client):
22
+ self._client = client
23
+
24
+ def start(
25
+ self,
26
+ params: Union[
27
+ StartMetaComputerUseTaskParamsDict,
28
+ StartMetaComputerUseTaskParams,
29
+ ],
30
+ ) -> StartMetaComputerUseTaskResponse:
31
+ response = self._client.transport.post(
32
+ self._client._build_url("/task/meta-computer-use"),
33
+ data=dump_request(params, StartMetaComputerUseTaskParams),
34
+ )
35
+ return StartMetaComputerUseTaskResponse(**response.data)
36
+
37
+ def get(self, job_id: str) -> MetaComputerUseTaskResponse:
38
+ response = self._client.transport.get(
39
+ self._client._build_url(f"/task/meta-computer-use/{job_id}")
40
+ )
41
+ return MetaComputerUseTaskResponse(**response.data)
42
+
43
+ def get_status(self, job_id: str) -> MetaComputerUseTaskStatusResponse:
44
+ response = self._client.transport.get(
45
+ self._client._build_url(f"/task/meta-computer-use/{job_id}/status")
46
+ )
47
+ return MetaComputerUseTaskStatusResponse(**response.data)
48
+
49
+ def stop(self, job_id: str) -> BasicResponse:
50
+ response = self._client.transport.put(
51
+ self._client._build_url(f"/task/meta-computer-use/{job_id}/stop")
52
+ )
53
+ return BasicResponse(**response.data)
54
+
55
+ def start_and_wait(
56
+ self,
57
+ params: Union[
58
+ StartMetaComputerUseTaskParamsDict,
59
+ StartMetaComputerUseTaskParams,
60
+ ],
61
+ ) -> MetaComputerUseTaskResponse:
62
+ job_start_resp = self.start(params)
63
+ job_id = job_start_resp.job_id
64
+ if not job_id:
65
+ raise HyperbrowserError("Failed to start Meta Computer Use task job")
66
+
67
+ failures = 0
68
+ while True:
69
+ try:
70
+ job_response = self.get_status(job_id)
71
+ if (
72
+ job_response.status == "completed"
73
+ or job_response.status == "failed"
74
+ or job_response.status == "stopped"
75
+ ):
76
+ return self.get(job_id)
77
+ failures = 0
78
+ except Exception as e:
79
+ failures += 1
80
+ if failures >= POLLING_ATTEMPTS:
81
+ raise HyperbrowserError(
82
+ f"Failed to poll Meta Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
83
+ )
84
+ time.sleep(2)
@@ -127,6 +127,17 @@ from .agents.grok_computer_use import (
127
127
  StartGrokComputerUseTaskResponse,
128
128
  GrokComputerUseApiKeys,
129
129
  )
130
+ from .agents.meta_computer_use import (
131
+ MetaComputerUseTaskStatus,
132
+ MetaComputerUseStepReasoning,
133
+ MetaComputerUseStepResponse,
134
+ MetaComputerUseTaskData,
135
+ MetaComputerUseTaskResponse,
136
+ MetaComputerUseTaskStatusResponse,
137
+ StartMetaComputerUseTaskParams,
138
+ StartMetaComputerUseTaskResponse,
139
+ MetaComputerUseApiKeys,
140
+ )
130
141
  from .agents.cua import (
131
142
  CuaTaskData,
132
143
  CuaTaskResponse,
@@ -157,9 +168,13 @@ from .consts import (
157
168
  HyperAgentLlm,
158
169
  BrowserUseLlm,
159
170
  ClaudeComputerUseLlm,
171
+ ClaudeComputerUseReasoningEffort,
160
172
  CuaLlm,
173
+ CuaReasoningEffort,
161
174
  GrokComputerUseLlm,
162
175
  GrokReasoningEffort,
176
+ MetaComputerUseLlm,
177
+ MetaReasoningEffort,
163
178
  Country,
164
179
  DownloadsStatus,
165
180
  FetchScreenshotFormat,
@@ -415,7 +430,9 @@ __all__ = [
415
430
  "HyperAgentLlm",
416
431
  "BrowserUseLlm",
417
432
  "ClaudeComputerUseLlm",
433
+ "ClaudeComputerUseReasoningEffort",
418
434
  "CuaLlm",
435
+ "CuaReasoningEffort",
419
436
  "Country",
420
437
  "DownloadsStatus",
421
438
  "FetchScreenshotFormat",
@@ -496,6 +513,14 @@ __all__ = [
496
513
  "GrokComputerUseTaskStatusResponse",
497
514
  "StartGrokComputerUseTaskParams",
498
515
  "StartGrokComputerUseTaskResponse",
516
+ "MetaComputerUseTaskStatus",
517
+ "MetaComputerUseStepReasoning",
518
+ "MetaComputerUseStepResponse",
519
+ "MetaComputerUseTaskData",
520
+ "MetaComputerUseTaskResponse",
521
+ "MetaComputerUseTaskStatusResponse",
522
+ "StartMetaComputerUseTaskParams",
523
+ "StartMetaComputerUseTaskResponse",
499
524
  "CuaTaskStatus",
500
525
  "CuaTaskData",
501
526
  "CuaTaskResponse",
@@ -506,11 +531,14 @@ __all__ = [
506
531
  "ClaudeComputerUseApiKeys",
507
532
  "GeminiComputerUseApiKeys",
508
533
  "GrokComputerUseApiKeys",
534
+ "MetaComputerUseApiKeys",
509
535
  "CuaApiKeys",
510
536
  "CuaBaseUrls",
511
537
  "HyperAgentApiKeys",
512
538
  "GrokComputerUseLlm",
513
539
  "GrokReasoningEffort",
540
+ "MetaComputerUseLlm",
541
+ "MetaReasoningEffort",
514
542
  "HyperAgentOutputV110",
515
543
  "HyperAgentStepV110",
516
544
  # crawl
@@ -5,7 +5,7 @@ from typing import Any, List, Literal, Optional
5
5
  from pydantic import BaseModel, ConfigDict, Field
6
6
 
7
7
  from ..session import CreateSessionParams
8
- from ..consts import ClaudeComputerUseLlm
8
+ from ..consts import ClaudeComputerUseLlm, ClaudeComputerUseReasoningEffort
9
9
 
10
10
  ClaudeComputerUseTaskStatus = Literal[
11
11
  "pending", "running", "completed", "failed", "stopped"
@@ -35,6 +35,9 @@ class StartClaudeComputerUseTaskParams(BaseModel):
35
35
 
36
36
  task: str
37
37
  llm: Optional[ClaudeComputerUseLlm] = Field(default=None, serialization_alias="llm")
38
+ reasoning_effort: Optional[ClaudeComputerUseReasoningEffort] = Field(
39
+ default=None, serialization_alias="reasoningEffort"
40
+ )
38
41
  session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
39
42
  max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
40
43
  max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
@@ -4,7 +4,7 @@ from typing import Any, List, Literal, Optional
4
4
 
5
5
  from pydantic import BaseModel, ConfigDict, Field
6
6
 
7
- from ..consts import CuaLlm
7
+ from ..consts import CuaLlm, CuaReasoningEffort
8
8
  from ..session import CreateSessionParams
9
9
 
10
10
  CuaTaskStatus = Literal["pending", "running", "completed", "failed", "stopped"]
@@ -45,6 +45,9 @@ class StartCuaTaskParams(BaseModel):
45
45
 
46
46
  task: str
47
47
  llm: Optional[CuaLlm] = Field(default=None, serialization_alias="llm")
48
+ reasoning_effort: Optional[CuaReasoningEffort] = Field(
49
+ default=None, serialization_alias="reasoningEffort"
50
+ )
48
51
  session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
49
52
  max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
50
53
  max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
@@ -0,0 +1,165 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, List, Literal, Optional
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
6
+
7
+ from .cua import CuaStepIncompleteDetails, CuaStepResponseError
8
+ from ..session import CreateSessionParams
9
+ from ..consts import MetaComputerUseLlm, MetaReasoningEffort
10
+
11
+ MetaComputerUseTaskStatus = Literal[
12
+ "pending", "running", "completed", "failed", "stopped"
13
+ ]
14
+
15
+
16
+ class MetaComputerUseApiKeys(BaseModel):
17
+ """
18
+ API keys for the Meta Computer Use task.
19
+ """
20
+
21
+ model_config = ConfigDict(
22
+ populate_by_alias=True,
23
+ )
24
+
25
+ meta: Optional[str] = Field(default=None, serialization_alias="meta")
26
+
27
+
28
+ class StartMetaComputerUseTaskParams(BaseModel):
29
+ """
30
+ Parameters for creating a new Meta Computer Use task.
31
+ """
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_alias=True,
35
+ )
36
+
37
+ task: str
38
+ llm: Optional[MetaComputerUseLlm] = Field(default=None, serialization_alias="llm")
39
+ reasoning_effort: Optional[MetaReasoningEffort] = Field(
40
+ default=None, serialization_alias="reasoningEffort"
41
+ )
42
+ session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
43
+ max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
44
+ max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
45
+ keep_browser_open: Optional[bool] = Field(
46
+ default=None, serialization_alias="keepBrowserOpen"
47
+ )
48
+ session_options: Optional[CreateSessionParams] = Field(
49
+ default=None, serialization_alias="sessionOptions"
50
+ )
51
+ use_custom_api_keys: Optional[bool] = Field(
52
+ default=None, serialization_alias="useCustomApiKeys"
53
+ )
54
+ api_keys: Optional[MetaComputerUseApiKeys] = Field(
55
+ default=None, serialization_alias="apiKeys"
56
+ )
57
+ use_computer_action: Optional[bool] = Field(
58
+ default=None, serialization_alias="useComputerAction"
59
+ )
60
+
61
+
62
+ class StartMetaComputerUseTaskResponse(BaseModel):
63
+ """
64
+ Response from starting a Meta Computer Use task.
65
+ """
66
+
67
+ model_config = ConfigDict(
68
+ populate_by_alias=True,
69
+ )
70
+
71
+ job_id: str = Field(alias="jobId")
72
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
73
+
74
+
75
+ class MetaComputerUseTaskStatusResponse(BaseModel):
76
+ """
77
+ Response from getting a Meta Computer Use task status.
78
+ """
79
+
80
+ model_config = ConfigDict(
81
+ populate_by_alias=True,
82
+ )
83
+
84
+ status: MetaComputerUseTaskStatus
85
+
86
+
87
+ class MetaComputerUseStepReasoning(BaseModel):
88
+ """
89
+ Reasoning metadata on a compacted Meta Computer Use step.
90
+ """
91
+
92
+ model_config = ConfigDict(
93
+ populate_by_alias=True,
94
+ )
95
+
96
+ effort: Optional[str] = Field(default=None, serialization_alias="effort")
97
+ summary: Optional[str] = Field(default=None, serialization_alias="summary")
98
+
99
+
100
+ class MetaComputerUseStepResponse(BaseModel):
101
+ """
102
+ Response from a single Meta Computer Use step.
103
+ """
104
+
105
+ model_config = ConfigDict(
106
+ populate_by_alias=True,
107
+ )
108
+
109
+ created_at: Optional[int] = Field(default=None, serialization_alias="created_at")
110
+ completed_at: Optional[int] = Field(
111
+ default=None, serialization_alias="completed_at"
112
+ )
113
+ output_text: Optional[str] = Field(default=None, serialization_alias="output_text")
114
+ error: Optional[CuaStepResponseError] = Field(
115
+ default=None, serialization_alias="error"
116
+ )
117
+ incomplete_details: Optional[CuaStepIncompleteDetails] = Field(
118
+ default=None, serialization_alias="incomplete_details"
119
+ )
120
+ model: Optional[str] = Field(default=None, serialization_alias="model")
121
+ output: Optional[List[Any]] = Field(default=None, serialization_alias="output")
122
+ reasoning: Optional[MetaComputerUseStepReasoning] = Field(
123
+ default=None, serialization_alias="reasoning"
124
+ )
125
+ status: Optional[str] = Field(default=None, serialization_alias="status")
126
+
127
+
128
+ class MetaComputerUseTaskData(BaseModel):
129
+ model_config = ConfigDict(
130
+ populate_by_alias=True,
131
+ )
132
+
133
+ steps: List[MetaComputerUseStepResponse]
134
+ final_result: Optional[str] = Field(default=None, alias="finalResult")
135
+
136
+
137
+ class MetaComputerUseTaskMetadata(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
+
149
+ class MetaComputerUseTaskResponse(BaseModel):
150
+ """
151
+ Response from a Meta Computer Use task.
152
+ """
153
+
154
+ model_config = ConfigDict(
155
+ populate_by_alias=True,
156
+ )
157
+
158
+ job_id: str = Field(alias="jobId")
159
+ status: MetaComputerUseTaskStatus
160
+ metadata: Optional[MetaComputerUseTaskMetadata] = Field(
161
+ default=None, alias="metadata"
162
+ )
163
+ data: Optional[MetaComputerUseTaskData] = Field(default=None, alias="data")
164
+ error: Optional[str] = Field(default=None, alias="error")
165
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -81,8 +81,16 @@ ClaudeComputerUseLlm = Literal[
81
81
  "claude-sonnet-4-20250514",
82
82
  "claude-3-7-sonnet-20250219",
83
83
  ]
84
+ ClaudeComputerUseReasoningEffort = Literal[
85
+ "low",
86
+ "medium",
87
+ "high",
88
+ "xhigh",
89
+ "max",
90
+ ]
84
91
  CuaLlm = Literal[
85
92
  "computer-use-preview",
93
+ "gpt-6-astra",
86
94
  "gpt-5.6-sol",
87
95
  "gpt-5.6-terra",
88
96
  "gpt-5.6-luna",
@@ -90,6 +98,14 @@ CuaLlm = Literal[
90
98
  "gpt-5.4",
91
99
  "gpt-5.4-mini",
92
100
  ]
101
+ CuaReasoningEffort = Literal[
102
+ "none",
103
+ "low",
104
+ "medium",
105
+ "high",
106
+ "xhigh",
107
+ "max",
108
+ ]
93
109
  GeminiComputerUseLlm = Literal[
94
110
  "gemini-3.8-flash",
95
111
  "gemini-3.7-flash",
@@ -105,6 +121,19 @@ GrokReasoningEffort = Literal[
105
121
  "medium",
106
122
  "high",
107
123
  ]
124
+ MetaComputerUseLlm = Literal[
125
+ "muse-spark-1.1",
126
+ "muse-spark-1.2",
127
+ "muse-spark-1.3",
128
+ ]
129
+ MetaReasoningEffort = Literal[
130
+ "minimal",
131
+ "low",
132
+ "medium",
133
+ "high",
134
+ "xhigh",
135
+ "max",
136
+ ]
108
137
  SessionRegion = Literal[
109
138
  "us",
110
139
  "us-central",
@@ -20,12 +20,14 @@ from .agents import (
20
20
  GeminiComputerUseApiKeys,
21
21
  GrokComputerUseApiKeys,
22
22
  HyperAgentApiKeys,
23
+ MetaComputerUseApiKeys,
23
24
  StartBrowserUseTaskParams,
24
25
  StartClaudeComputerUseTaskParams,
25
26
  StartCuaTaskParams,
26
27
  StartGeminiComputerUseTaskParams,
27
28
  StartGrokComputerUseTaskParams,
28
29
  StartHyperAgentTaskParams,
30
+ StartMetaComputerUseTaskParams,
29
31
  )
30
32
  from .computer_action import (
31
33
  ClickActionParams,
@@ -184,12 +186,14 @@ __all__ = [
184
186
  "GeminiComputerUseApiKeys",
185
187
  "GrokComputerUseApiKeys",
186
188
  "HyperAgentApiKeys",
189
+ "MetaComputerUseApiKeys",
187
190
  "StartBrowserUseTaskParams",
188
191
  "StartClaudeComputerUseTaskParams",
189
192
  "StartCuaTaskParams",
190
193
  "StartGeminiComputerUseTaskParams",
191
194
  "StartGrokComputerUseTaskParams",
192
195
  "StartHyperAgentTaskParams",
196
+ "StartMetaComputerUseTaskParams",
193
197
  "ClickActionParams",
194
198
  "ComputerActionMouseButton",
195
199
  "ComputerActionParams",
@@ -6,10 +6,14 @@ from hyperbrowser.models.consts import (
6
6
  BrowserUseLlm,
7
7
  BrowserUseVersion,
8
8
  ClaudeComputerUseLlm,
9
+ ClaudeComputerUseReasoningEffort,
9
10
  CuaLlm,
11
+ CuaReasoningEffort,
10
12
  GeminiComputerUseLlm,
11
13
  GrokComputerUseLlm,
12
14
  GrokReasoningEffort,
15
+ MetaComputerUseLlm,
16
+ MetaReasoningEffort,
13
17
  HyperAgentLlm,
14
18
  HyperAgentVersion,
15
19
  )
@@ -64,6 +68,7 @@ class StartClaudeComputerUseTaskParams(TypedDict, total=False):
64
68
 
65
69
  task: Required[str]
66
70
  llm: Optional[ClaudeComputerUseLlm]
71
+ reasoning_effort: Optional[ClaudeComputerUseReasoningEffort]
67
72
  session_id: Optional[str]
68
73
  max_failures: Optional[int]
69
74
  max_steps: Optional[int]
@@ -117,6 +122,28 @@ class StartGrokComputerUseTaskParams(TypedDict, total=False):
117
122
  use_computer_action: Optional[bool]
118
123
 
119
124
 
125
+ class MetaComputerUseApiKeys(TypedDict, total=False):
126
+ """Provider API keys for a Meta Computer Use task."""
127
+
128
+ meta: Optional[str]
129
+
130
+
131
+ class StartMetaComputerUseTaskParams(TypedDict, total=False):
132
+ """Parameters for starting a Meta Computer Use task."""
133
+
134
+ task: Required[str]
135
+ llm: Optional[MetaComputerUseLlm]
136
+ reasoning_effort: Optional[MetaReasoningEffort]
137
+ session_id: Optional[str]
138
+ max_failures: Optional[int]
139
+ max_steps: Optional[int]
140
+ keep_browser_open: Optional[bool]
141
+ session_options: Optional[CreateSessionParams]
142
+ use_custom_api_keys: Optional[bool]
143
+ api_keys: Optional[MetaComputerUseApiKeys]
144
+ use_computer_action: Optional[bool]
145
+
146
+
120
147
  class CuaApiKeys(TypedDict, total=False):
121
148
  """Provider API keys for an OpenAI CUA task."""
122
149
 
@@ -134,6 +161,7 @@ class StartCuaTaskParams(TypedDict, total=False):
134
161
 
135
162
  task: Required[str]
136
163
  llm: Optional[CuaLlm]
164
+ reasoning_effort: Optional[CuaReasoningEffort]
137
165
  session_id: Optional[str]
138
166
  max_failures: Optional[int]
139
167
  max_steps: Optional[int]
@@ -176,10 +204,12 @@ __all__ = [
176
204
  "GeminiComputerUseApiKeys",
177
205
  "GrokComputerUseApiKeys",
178
206
  "HyperAgentApiKeys",
207
+ "MetaComputerUseApiKeys",
179
208
  "StartBrowserUseTaskParams",
180
209
  "StartClaudeComputerUseTaskParams",
181
210
  "StartCuaTaskParams",
182
211
  "StartGeminiComputerUseTaskParams",
183
212
  "StartGrokComputerUseTaskParams",
184
213
  "StartHyperAgentTaskParams",
214
+ "StartMetaComputerUseTaskParams",
185
215
  ]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "hyperbrowser"
3
- version = "1.4.1"
3
+ version = "1.4.3"
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