Skip to content

Commit 9b9dda1

Browse files
Centralize agent start payload serialization helper
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 522fdef commit 9b9dda1

14 files changed

Lines changed: 133 additions & 16 deletions

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ This runs lint, format checks, compile checks, tests, and package build.
7676
- Keep sync/async behavior in parity where applicable.
7777
- Prefer deterministic unit tests over network-dependent tests.
7878
- Preserve architectural guardrails with focused tests. Current guard suites include:
79+
- `tests/test_agent_payload_helper_usage.py` (shared agent start-payload helper usage enforcement),
7980
- `tests/test_agent_terminal_status_helper_usage.py` (shared agent terminal-status helper usage enforcement),
8081
- `tests/test_architecture_marker_usage.py` (architecture marker coverage across guard modules),
8182
- `tests/test_binary_file_open_helper_usage.py` (shared binary file open helper usage enforcement),
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from typing import Any, Dict
2+
3+
from .serialization_utils import serialize_model_dump_to_dict
4+
5+
6+
def build_agent_start_payload(params: Any, *, error_message: str) -> Dict[str, Any]:
7+
return serialize_model_dump_to_dict(
8+
params,
9+
error_message=error_message,
10+
)

hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result_async
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -23,7 +23,7 @@ def __init__(self, client):
2323
async def start(
2424
self, params: StartClaudeComputerUseTaskParams
2525
) -> StartClaudeComputerUseTaskResponse:
26-
payload = serialize_model_dump_to_dict(
26+
payload = build_agent_start_payload(
2727
params,
2828
error_message="Failed to serialize Claude Computer Use start params",
2929
)

hyperbrowser/client/managers/async_manager/agents/cua.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result_async
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -21,7 +21,7 @@ def __init__(self, client):
2121
self._client = client
2222

2323
async def start(self, params: StartCuaTaskParams) -> StartCuaTaskResponse:
24-
payload = serialize_model_dump_to_dict(
24+
payload = build_agent_start_payload(
2525
params,
2626
error_message="Failed to serialize CUA start params",
2727
)

hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result_async
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -23,7 +23,7 @@ def __init__(self, client):
2323
async def start(
2424
self, params: StartGeminiComputerUseTaskParams
2525
) -> StartGeminiComputerUseTaskResponse:
26-
payload = serialize_model_dump_to_dict(
26+
payload = build_agent_start_payload(
2727
params,
2828
error_message="Failed to serialize Gemini Computer Use start params",
2929
)

hyperbrowser/client/managers/async_manager/agents/hyper_agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result_async
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -23,7 +23,7 @@ def __init__(self, client):
2323
async def start(
2424
self, params: StartHyperAgentTaskParams
2525
) -> StartHyperAgentTaskResponse:
26-
payload = serialize_model_dump_to_dict(
26+
payload = build_agent_start_payload(
2727
params,
2828
error_message="Failed to serialize HyperAgent start params",
2929
)

hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -23,7 +23,7 @@ def __init__(self, client):
2323
def start(
2424
self, params: StartClaudeComputerUseTaskParams
2525
) -> StartClaudeComputerUseTaskResponse:
26-
payload = serialize_model_dump_to_dict(
26+
payload = build_agent_start_payload(
2727
params,
2828
error_message="Failed to serialize Claude Computer Use start params",
2929
)

hyperbrowser/client/managers/sync_manager/agents/cua.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -21,7 +21,7 @@ def __init__(self, client):
2121
self._client = client
2222

2323
def start(self, params: StartCuaTaskParams) -> StartCuaTaskResponse:
24-
payload = serialize_model_dump_to_dict(
24+
payload = build_agent_start_payload(
2525
params,
2626
error_message="Failed to serialize CUA start params",
2727
)

hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -23,7 +23,7 @@ def __init__(self, client):
2323
def start(
2424
self, params: StartGeminiComputerUseTaskParams
2525
) -> StartGeminiComputerUseTaskResponse:
26-
payload = serialize_model_dump_to_dict(
26+
payload = build_agent_start_payload(
2727
params,
2828
error_message="Failed to serialize Gemini Computer Use start params",
2929
)

hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Optional
22

33
from ....polling import wait_for_job_result
4+
from ...agent_payload_utils import build_agent_start_payload
45
from ...agent_status_utils import is_agent_terminal_status
56
from ...response_utils import parse_response_model
6-
from ...serialization_utils import serialize_model_dump_to_dict
77
from ...start_job_utils import build_started_job_context
88

99
from .....models import (
@@ -21,7 +21,7 @@ def __init__(self, client):
2121
self._client = client
2222

2323
def start(self, params: StartHyperAgentTaskParams) -> StartHyperAgentTaskResponse:
24-
payload = serialize_model_dump_to_dict(
24+
payload = build_agent_start_payload(
2525
params,
2626
error_message="Failed to serialize HyperAgent start params",
2727
)

0 commit comments

Comments
 (0)