Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ client.crawl # Website crawling jobs
client.extract # Data extraction jobs
client.web # Web fetch/search operations
client.web.batch_fetch # Batch web fetch operations
client.agents # AI agent integrations (browser_use, cua, claude_computer_use, hyper_agent, gemini_computer_use)
client.agents # AI agent integrations (browser_use, cua, claude_computer_use, hyper_agent, gemini_computer_use, grok_computer_use, meta_computer_use)
client.profiles # Browser profile management
client.extensions # Browser extension management
client.team # Team/credit info
Expand Down
2 changes: 2 additions & 0 deletions hyperbrowser/client/managers/async_manager/agents/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from .hyper_agent import HyperAgentManager
from .gemini_computer_use import GeminiComputerUseManager
from .grok_computer_use import GrokComputerUseManager
from .meta_computer_use import MetaComputerUseManager


class Agents:
Expand All @@ -14,3 +15,4 @@ def __init__(self, client):
self.hyper_agent = HyperAgentManager(client)
self.gemini_computer_use = GeminiComputerUseManager(client)
self.grok_computer_use = GrokComputerUseManager(client)
self.meta_computer_use = MetaComputerUseManager(client)
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import asyncio
from typing import Union

from hyperbrowser.client._request import dump_request
from hyperbrowser.exceptions import HyperbrowserError
from hyperbrowser.types import (
StartMetaComputerUseTaskParams as StartMetaComputerUseTaskParamsDict,
)

from .....models import (
POLLING_ATTEMPTS,
BasicResponse,
MetaComputerUseTaskResponse,
MetaComputerUseTaskStatusResponse,
StartMetaComputerUseTaskParams,
StartMetaComputerUseTaskResponse,
)


class MetaComputerUseManager:
def __init__(self, client):
self._client = client

async def start(
self,
params: Union[
StartMetaComputerUseTaskParamsDict,
StartMetaComputerUseTaskParams,
],
) -> StartMetaComputerUseTaskResponse:
response = await self._client.transport.post(
self._client._build_url("/task/meta-computer-use"),
data=dump_request(params, StartMetaComputerUseTaskParams),
)
return StartMetaComputerUseTaskResponse(**response.data)

async def get(self, job_id: str) -> MetaComputerUseTaskResponse:
response = await self._client.transport.get(
self._client._build_url(f"/task/meta-computer-use/{job_id}")
)
return MetaComputerUseTaskResponse(**response.data)

async def get_status(self, job_id: str) -> MetaComputerUseTaskStatusResponse:
response = await self._client.transport.get(
self._client._build_url(f"/task/meta-computer-use/{job_id}/status")
)
return MetaComputerUseTaskStatusResponse(**response.data)

async def stop(self, job_id: str) -> BasicResponse:
response = await self._client.transport.put(
self._client._build_url(f"/task/meta-computer-use/{job_id}/stop")
)
return BasicResponse(**response.data)

async def start_and_wait(
self,
params: Union[
StartMetaComputerUseTaskParamsDict,
StartMetaComputerUseTaskParams,
],
) -> MetaComputerUseTaskResponse:
job_start_resp = await self.start(params)
job_id = job_start_resp.job_id
if not job_id:
raise HyperbrowserError("Failed to start Meta Computer Use task job")

failures = 0
while True:
try:
job_response = await self.get_status(job_id)
if (
job_response.status == "completed"
or job_response.status == "failed"
or job_response.status == "stopped"
):
return await self.get(job_id)
failures = 0
except Exception as e:
failures += 1
if failures >= POLLING_ATTEMPTS:
raise HyperbrowserError(
f"Failed to poll Meta Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
)
await asyncio.sleep(2)
2 changes: 2 additions & 0 deletions hyperbrowser/client/managers/sync_manager/agents/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from .hyper_agent import HyperAgentManager
from .gemini_computer_use import GeminiComputerUseManager
from .grok_computer_use import GrokComputerUseManager
from .meta_computer_use import MetaComputerUseManager


class Agents:
Expand All @@ -14,3 +15,4 @@ def __init__(self, client):
self.hyper_agent = HyperAgentManager(client)
self.gemini_computer_use = GeminiComputerUseManager(client)
self.grok_computer_use = GrokComputerUseManager(client)
self.meta_computer_use = MetaComputerUseManager(client)
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import time
from typing import Union

from hyperbrowser.client._request import dump_request
from hyperbrowser.exceptions import HyperbrowserError
from hyperbrowser.types import (
StartMetaComputerUseTaskParams as StartMetaComputerUseTaskParamsDict,
)

from .....models import (
POLLING_ATTEMPTS,
BasicResponse,
MetaComputerUseTaskResponse,
MetaComputerUseTaskStatusResponse,
StartMetaComputerUseTaskParams,
StartMetaComputerUseTaskResponse,
)


class MetaComputerUseManager:
def __init__(self, client):
self._client = client

def start(
self,
params: Union[
StartMetaComputerUseTaskParamsDict,
StartMetaComputerUseTaskParams,
],
) -> StartMetaComputerUseTaskResponse:
response = self._client.transport.post(
self._client._build_url("/task/meta-computer-use"),
data=dump_request(params, StartMetaComputerUseTaskParams),
)
return StartMetaComputerUseTaskResponse(**response.data)

def get(self, job_id: str) -> MetaComputerUseTaskResponse:
response = self._client.transport.get(
self._client._build_url(f"/task/meta-computer-use/{job_id}")
)
return MetaComputerUseTaskResponse(**response.data)

def get_status(self, job_id: str) -> MetaComputerUseTaskStatusResponse:
response = self._client.transport.get(
self._client._build_url(f"/task/meta-computer-use/{job_id}/status")
)
return MetaComputerUseTaskStatusResponse(**response.data)

def stop(self, job_id: str) -> BasicResponse:
response = self._client.transport.put(
self._client._build_url(f"/task/meta-computer-use/{job_id}/stop")
)
return BasicResponse(**response.data)

def start_and_wait(
self,
params: Union[
StartMetaComputerUseTaskParamsDict,
StartMetaComputerUseTaskParams,
],
) -> MetaComputerUseTaskResponse:
job_start_resp = self.start(params)
job_id = job_start_resp.job_id
if not job_id:
raise HyperbrowserError("Failed to start Meta Computer Use task job")

failures = 0
while True:
try:
job_response = self.get_status(job_id)
if (
job_response.status == "completed"
or job_response.status == "failed"
or job_response.status == "stopped"
):
return self.get(job_id)
failures = 0
except Exception as e:
failures += 1
if failures >= POLLING_ATTEMPTS:
raise HyperbrowserError(
f"Failed to poll Meta Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
)
time.sleep(2)
24 changes: 24 additions & 0 deletions hyperbrowser/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,17 @@
StartGrokComputerUseTaskResponse,
GrokComputerUseApiKeys,
)
from .agents.meta_computer_use import (
MetaComputerUseTaskStatus,
MetaComputerUseStepReasoning,
MetaComputerUseStepResponse,
MetaComputerUseTaskData,
MetaComputerUseTaskResponse,
MetaComputerUseTaskStatusResponse,
StartMetaComputerUseTaskParams,
StartMetaComputerUseTaskResponse,
MetaComputerUseApiKeys,
)
from .agents.cua import (
CuaTaskData,
CuaTaskResponse,
Expand Down Expand Up @@ -160,6 +171,8 @@
CuaLlm,
GrokComputerUseLlm,
GrokReasoningEffort,
MetaComputerUseLlm,
MetaReasoningEffort,
Country,
DownloadsStatus,
FetchScreenshotFormat,
Expand Down Expand Up @@ -496,6 +509,14 @@
"GrokComputerUseTaskStatusResponse",
"StartGrokComputerUseTaskParams",
"StartGrokComputerUseTaskResponse",
"MetaComputerUseTaskStatus",
"MetaComputerUseStepReasoning",
"MetaComputerUseStepResponse",
"MetaComputerUseTaskData",
"MetaComputerUseTaskResponse",
"MetaComputerUseTaskStatusResponse",
"StartMetaComputerUseTaskParams",
"StartMetaComputerUseTaskResponse",
"CuaTaskStatus",
"CuaTaskData",
"CuaTaskResponse",
Expand All @@ -506,11 +527,14 @@
"ClaudeComputerUseApiKeys",
"GeminiComputerUseApiKeys",
"GrokComputerUseApiKeys",
"MetaComputerUseApiKeys",
"CuaApiKeys",
"CuaBaseUrls",
"HyperAgentApiKeys",
"GrokComputerUseLlm",
"GrokReasoningEffort",
"MetaComputerUseLlm",
"MetaReasoningEffort",
"HyperAgentOutputV110",
"HyperAgentStepV110",
# crawl
Expand Down
Loading