hyperbrowser 1.4.0__tar.gz → 1.4.2__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.0 → hyperbrowser-1.4.2}/PKG-INFO +1 -1
  2. {hyperbrowser-1.4.0/hyperbrowser/client/managers/sync_manager → hyperbrowser-1.4.2/hyperbrowser/client/managers/async_manager}/agents/__init__.py +2 -0
  3. hyperbrowser-1.4.2/hyperbrowser/client/managers/async_manager/agents/meta_computer_use.py +84 -0
  4. {hyperbrowser-1.4.0/hyperbrowser/client/managers/async_manager → hyperbrowser-1.4.2/hyperbrowser/client/managers/sync_manager}/agents/__init__.py +2 -0
  5. hyperbrowser-1.4.2/hyperbrowser/client/managers/sync_manager/agents/meta_computer_use.py +84 -0
  6. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/__init__.py +24 -0
  7. hyperbrowser-1.4.2/hyperbrowser/models/agents/meta_computer_use.py +165 -0
  8. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/consts.py +18 -0
  9. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/__init__.py +4 -0
  10. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/agents.py +26 -0
  11. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/pyproject.toml +1 -1
  12. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/LICENSE +0 -0
  13. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/README.md +0 -0
  14. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/__init__.py +0 -0
  15. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/_request.py +0 -0
  16. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/async_client.py +0 -0
  17. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/base.py +0 -0
  18. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/agents/browser_use.py +0 -0
  19. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py +0 -0
  20. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/agents/cua.py +0 -0
  21. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +0 -0
  22. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/agents/grok_computer_use.py +0 -0
  23. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/agents/hyper_agent.py +0 -0
  24. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/computer_action.py +0 -0
  25. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
  26. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
  27. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
  28. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
  29. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/sandbox.py +0 -0
  30. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/sandboxes/__init__.py +0 -0
  31. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_files.py +0 -0
  32. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_processes.py +0 -0
  33. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_terminal.py +0 -0
  34. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/sandboxes/sandbox_transport.py +0 -0
  35. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
  36. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/session.py +0 -0
  37. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/team.py +0 -0
  38. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/volume.py +0 -0
  39. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/web/__init__.py +0 -0
  40. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/web/batch_fetch.py +0 -0
  41. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/async_manager/web/crawl.py +0 -0
  42. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sandboxes/__init__.py +0 -0
  43. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sandboxes/dockerfile_analysis.py +0 -0
  44. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sandboxes/dockerignore.py +0 -0
  45. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sandboxes/image_build.py +0 -0
  46. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sandboxes/shared.py +0 -0
  47. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/agents/browser_use.py +0 -0
  48. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +0 -0
  49. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/agents/cua.py +0 -0
  50. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +0 -0
  51. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/agents/grok_computer_use.py +0 -0
  52. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py +0 -0
  53. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/computer_action.py +0 -0
  54. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
  55. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
  56. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
  57. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
  58. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/sandbox.py +0 -0
  59. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/sandboxes/__init__.py +0 -0
  60. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_files.py +0 -0
  61. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_processes.py +0 -0
  62. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_terminal.py +0 -0
  63. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/sandboxes/sandbox_transport.py +0 -0
  64. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
  65. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/session.py +0 -0
  66. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/team.py +0 -0
  67. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/volume.py +0 -0
  68. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/web/__init__.py +0 -0
  69. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/web/batch_fetch.py +0 -0
  70. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/managers/sync_manager/web/crawl.py +0 -0
  71. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/client/sync.py +0 -0
  72. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/config.py +0 -0
  73. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/exceptions.py +0 -0
  74. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/_parsers.py +0 -0
  75. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/agents/browser_use.py +0 -0
  76. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/agents/claude_computer_use.py +0 -0
  77. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/agents/cua.py +0 -0
  78. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/agents/gemini_computer_use.py +0 -0
  79. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/agents/grok_computer_use.py +0 -0
  80. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/agents/hyper_agent.py +0 -0
  81. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/computer_action.py +0 -0
  82. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/crawl.py +0 -0
  83. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/extension.py +0 -0
  84. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/extract.py +0 -0
  85. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/profile.py +0 -0
  86. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/sandbox.py +0 -0
  87. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/scrape.py +0 -0
  88. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/session.py +0 -0
  89. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/team.py +0 -0
  90. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/volume.py +0 -0
  91. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/web/batch_fetch.py +0 -0
  92. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/web/branding.py +0 -0
  93. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/web/common.py +0 -0
  94. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/web/crawl.py +0 -0
  95. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/web/fetch.py +0 -0
  96. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/models/web/search.py +0 -0
  97. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/py.typed +0 -0
  98. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/sandbox_common.py +0 -0
  99. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/tools/__init__.py +0 -0
  100. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/tools/anthropic.py +0 -0
  101. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/tools/openai.py +0 -0
  102. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/tools/schema.py +0 -0
  103. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/transport/async_transport.py +0 -0
  104. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/transport/base.py +0 -0
  105. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/transport/sync.py +0 -0
  106. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/_json.py +0 -0
  107. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/computer_action.py +0 -0
  108. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/crawl.py +0 -0
  109. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/extension.py +0 -0
  110. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/extract.py +0 -0
  111. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/profile.py +0 -0
  112. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/sandbox.py +0 -0
  113. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/scrape.py +0 -0
  114. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/session.py +0 -0
  115. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/volume.py +0 -0
  116. {hyperbrowser-1.4.0 → hyperbrowser-1.4.2}/hyperbrowser/types/web.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperbrowser
3
- Version: 1.4.0
3
+ Version: 1.4.2
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,
@@ -160,6 +171,8 @@ from .consts import (
160
171
  CuaLlm,
161
172
  GrokComputerUseLlm,
162
173
  GrokReasoningEffort,
174
+ MetaComputerUseLlm,
175
+ MetaReasoningEffort,
163
176
  Country,
164
177
  DownloadsStatus,
165
178
  FetchScreenshotFormat,
@@ -496,6 +509,14 @@ __all__ = [
496
509
  "GrokComputerUseTaskStatusResponse",
497
510
  "StartGrokComputerUseTaskParams",
498
511
  "StartGrokComputerUseTaskResponse",
512
+ "MetaComputerUseTaskStatus",
513
+ "MetaComputerUseStepReasoning",
514
+ "MetaComputerUseStepResponse",
515
+ "MetaComputerUseTaskData",
516
+ "MetaComputerUseTaskResponse",
517
+ "MetaComputerUseTaskStatusResponse",
518
+ "StartMetaComputerUseTaskParams",
519
+ "StartMetaComputerUseTaskResponse",
499
520
  "CuaTaskStatus",
500
521
  "CuaTaskData",
501
522
  "CuaTaskResponse",
@@ -506,11 +527,14 @@ __all__ = [
506
527
  "ClaudeComputerUseApiKeys",
507
528
  "GeminiComputerUseApiKeys",
508
529
  "GrokComputerUseApiKeys",
530
+ "MetaComputerUseApiKeys",
509
531
  "CuaApiKeys",
510
532
  "CuaBaseUrls",
511
533
  "HyperAgentApiKeys",
512
534
  "GrokComputerUseLlm",
513
535
  "GrokReasoningEffort",
536
+ "MetaComputerUseLlm",
537
+ "MetaReasoningEffort",
514
538
  "HyperAgentOutputV110",
515
539
  "HyperAgentStepV110",
516
540
  # crawl
@@ -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")
@@ -45,6 +45,7 @@ BrowserUseLlm = Literal[
45
45
  "claude-3-5-haiku-20241022",
46
46
  "gemini-2.0-flash",
47
47
  "gemini-2.5-flash",
48
+ "gemini-3.8-flash",
48
49
  ]
49
50
  HyperAgentLlm = Literal[
50
51
  "gpt-5.6-luna",
@@ -62,10 +63,12 @@ HyperAgentLlm = Literal[
62
63
  "claude-sonnet-4-6",
63
64
  "claude-sonnet-4-5",
64
65
  "gemini-2.5-flash",
66
+ "gemini-3.8-flash",
65
67
  "gemini-3.7-flash",
66
68
  "gemini-3-flash-preview",
67
69
  ]
68
70
  ClaudeComputerUseLlm = Literal[
71
+ "claude-fable-5-1",
69
72
  "claude-opus-5",
70
73
  "claude-opus-4-5",
71
74
  "claude-opus-4-6",
@@ -80,6 +83,7 @@ ClaudeComputerUseLlm = Literal[
80
83
  ]
81
84
  CuaLlm = Literal[
82
85
  "computer-use-preview",
86
+ "gpt-6-astra",
83
87
  "gpt-5.6-sol",
84
88
  "gpt-5.6-terra",
85
89
  "gpt-5.6-luna",
@@ -88,6 +92,7 @@ CuaLlm = Literal[
88
92
  "gpt-5.4-mini",
89
93
  ]
90
94
  GeminiComputerUseLlm = Literal[
95
+ "gemini-3.8-flash",
91
96
  "gemini-3.7-flash",
92
97
  "gemini-3.6-flash",
93
98
  "gemini-3.5-flash",
@@ -101,6 +106,19 @@ GrokReasoningEffort = Literal[
101
106
  "medium",
102
107
  "high",
103
108
  ]
109
+ MetaComputerUseLlm = Literal[
110
+ "muse-spark-1.1",
111
+ "muse-spark-1.2",
112
+ "muse-spark-1.3",
113
+ ]
114
+ MetaReasoningEffort = Literal[
115
+ "minimal",
116
+ "low",
117
+ "medium",
118
+ "high",
119
+ "xhigh",
120
+ "max",
121
+ ]
104
122
  SessionRegion = Literal[
105
123
  "us",
106
124
  "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",
@@ -10,6 +10,8 @@ from hyperbrowser.models.consts import (
10
10
  GeminiComputerUseLlm,
11
11
  GrokComputerUseLlm,
12
12
  GrokReasoningEffort,
13
+ MetaComputerUseLlm,
14
+ MetaReasoningEffort,
13
15
  HyperAgentLlm,
14
16
  HyperAgentVersion,
15
17
  )
@@ -117,6 +119,28 @@ class StartGrokComputerUseTaskParams(TypedDict, total=False):
117
119
  use_computer_action: Optional[bool]
118
120
 
119
121
 
122
+ class MetaComputerUseApiKeys(TypedDict, total=False):
123
+ """Provider API keys for a Meta Computer Use task."""
124
+
125
+ meta: Optional[str]
126
+
127
+
128
+ class StartMetaComputerUseTaskParams(TypedDict, total=False):
129
+ """Parameters for starting a Meta Computer Use task."""
130
+
131
+ task: Required[str]
132
+ llm: Optional[MetaComputerUseLlm]
133
+ reasoning_effort: Optional[MetaReasoningEffort]
134
+ session_id: Optional[str]
135
+ max_failures: Optional[int]
136
+ max_steps: Optional[int]
137
+ keep_browser_open: Optional[bool]
138
+ session_options: Optional[CreateSessionParams]
139
+ use_custom_api_keys: Optional[bool]
140
+ api_keys: Optional[MetaComputerUseApiKeys]
141
+ use_computer_action: Optional[bool]
142
+
143
+
120
144
  class CuaApiKeys(TypedDict, total=False):
121
145
  """Provider API keys for an OpenAI CUA task."""
122
146
 
@@ -176,10 +200,12 @@ __all__ = [
176
200
  "GeminiComputerUseApiKeys",
177
201
  "GrokComputerUseApiKeys",
178
202
  "HyperAgentApiKeys",
203
+ "MetaComputerUseApiKeys",
179
204
  "StartBrowserUseTaskParams",
180
205
  "StartClaudeComputerUseTaskParams",
181
206
  "StartCuaTaskParams",
182
207
  "StartGeminiComputerUseTaskParams",
183
208
  "StartGrokComputerUseTaskParams",
184
209
  "StartHyperAgentTaskParams",
210
+ "StartMetaComputerUseTaskParams",
185
211
  ]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "hyperbrowser"
3
- version = "1.4.0"
3
+ version = "1.4.2"
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