mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
style: black --target-version py312 (CI format-check fix)
No semantic changes — pure black reformat across the four files touched
in 55b55146 (hanzo-mcp 0.15.3 + hanzo-tools-browser 0.5.4).
This commit is contained in:
@@ -529,9 +529,9 @@ class HanzoMCPServer:
|
||||
tools=tool_list,
|
||||
call_tool=call_tool,
|
||||
handle_method=handle_method,
|
||||
name=self.mcp.name
|
||||
if hasattr(self.mcp, "name")
|
||||
else "hanzo-mcp",
|
||||
name=(
|
||||
self.mcp.name if hasattr(self.mcp, "name") else "hanzo-mcp"
|
||||
),
|
||||
)
|
||||
)
|
||||
if server:
|
||||
|
||||
@@ -295,7 +295,9 @@ def register_browser_tools(mcp_server: FastMCP, **kwargs) -> list[BaseTool]:
|
||||
if enable_cdp_bridge and CDP_BRIDGE_AVAILABLE and backend != "playwright":
|
||||
start_cdp_bridge()
|
||||
|
||||
tool = create_browser_tool(headless=headless, cdp_endpoint=cdp_endpoint, backend=backend)
|
||||
tool = create_browser_tool(
|
||||
headless=headless, cdp_endpoint=cdp_endpoint, backend=backend
|
||||
)
|
||||
ToolRegistry.register_tool(mcp_server, tool)
|
||||
return [tool]
|
||||
|
||||
|
||||
@@ -178,7 +178,10 @@ class ZapServer:
|
||||
self._port = sockets[0].getsockname()[1]
|
||||
logger.info(
|
||||
"ZAP server listening on ws://%s:%d (mcp=%s, agent=%s)",
|
||||
self.host, self._port, self.server_id, self.agent_label or "?",
|
||||
self.host,
|
||||
self._port,
|
||||
self.server_id,
|
||||
self.agent_label or "?",
|
||||
)
|
||||
|
||||
# mDNS publish — the only way clients find this server.
|
||||
@@ -324,9 +327,14 @@ class ZapServer:
|
||||
|
||||
try:
|
||||
await client.ws.send(
|
||||
encode(MSG_REQUEST, {"id": req_id, "method": method, "params": params or {}})
|
||||
encode(
|
||||
MSG_REQUEST,
|
||||
{"id": req_id, "method": method, "params": params or {}},
|
||||
)
|
||||
)
|
||||
return await asyncio.wait_for(
|
||||
future, timeout=timeout or self.request_timeout
|
||||
)
|
||||
return await asyncio.wait_for(future, timeout=timeout or self.request_timeout)
|
||||
finally:
|
||||
self._pending.pop(req_id, None)
|
||||
|
||||
@@ -484,16 +492,31 @@ class ZapServer:
|
||||
return
|
||||
handler = self._request_handler
|
||||
if handler is None:
|
||||
await websocket.send(encode(MSG_RESPONSE, {"id": req_id, "result": {"ack": True, "method": method}}))
|
||||
await websocket.send(
|
||||
encode(
|
||||
MSG_RESPONSE,
|
||||
{"id": req_id, "result": {"ack": True, "method": method}},
|
||||
)
|
||||
)
|
||||
return
|
||||
try:
|
||||
result = await handler(method, params)
|
||||
await websocket.send(encode(MSG_RESPONSE, {"id": req_id, "result": result}))
|
||||
await websocket.send(
|
||||
encode(MSG_RESPONSE, {"id": req_id, "result": result})
|
||||
)
|
||||
except Exception as e:
|
||||
await websocket.send(encode(
|
||||
MSG_RESPONSE,
|
||||
{"id": req_id, "error": {"code": -1, "message": f"{type(e).__name__}: {e}"}},
|
||||
))
|
||||
await websocket.send(
|
||||
encode(
|
||||
MSG_RESPONSE,
|
||||
{
|
||||
"id": req_id,
|
||||
"error": {
|
||||
"code": -1,
|
||||
"message": f"{type(e).__name__}: {e}",
|
||||
},
|
||||
},
|
||||
)
|
||||
)
|
||||
return
|
||||
|
||||
logger.debug("zap: unknown msg type 0x%02x", msg_type)
|
||||
|
||||
@@ -21,7 +21,6 @@ from websockets.asyncio.client import connect as ws_connect
|
||||
|
||||
from hanzo_tools.browser import zap_server as zs
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Wire format
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -91,7 +90,9 @@ class MockExtensionClient:
|
||||
to inbound MSG_REQUEST and reply with MSG_RESPONSE.
|
||||
"""
|
||||
|
||||
def __init__(self, port: int, *, browser: str = "firefox", client_id: str | None = None):
|
||||
def __init__(
|
||||
self, port: int, *, browser: str = "firefox", client_id: str | None = None
|
||||
):
|
||||
self.port = port
|
||||
self.browser = browser
|
||||
self.client_id = client_id or f"ext-test-{int(time.time() * 1000)}"
|
||||
@@ -141,10 +142,18 @@ class MockExtensionClient:
|
||||
result = self.response_handler(method, params)
|
||||
if asyncio.iscoroutine(result):
|
||||
result = await result
|
||||
await self.ws.send(zs.encode(zs.MSG_RESPONSE, {"id": req_id, "result": result}))
|
||||
await self.ws.send(
|
||||
zs.encode(zs.MSG_RESPONSE, {"id": req_id, "result": result})
|
||||
)
|
||||
except Exception as e:
|
||||
await self.ws.send(
|
||||
zs.encode(zs.MSG_RESPONSE, {"id": req_id, "error": {"code": -1, "message": str(e)}})
|
||||
zs.encode(
|
||||
zs.MSG_RESPONSE,
|
||||
{
|
||||
"id": req_id,
|
||||
"error": {"code": -1, "message": str(e)},
|
||||
},
|
||||
)
|
||||
)
|
||||
elif msg_type == zs.MSG_PING:
|
||||
await self.ws.send(zs.encode(zs.MSG_PONG, {}))
|
||||
@@ -313,7 +322,16 @@ class TestRpcDispatch:
|
||||
|
||||
async def test_extension_initiated_request_acked(self, server, client):
|
||||
# Extension sends MSG_REQUEST as a notification (server must ack)
|
||||
await client.ws.send(zs.encode(zs.MSG_REQUEST, {"id": "evt-1", "method": "notifications/elementSelected", "params": {"x": 1}}))
|
||||
await client.ws.send(
|
||||
zs.encode(
|
||||
zs.MSG_REQUEST,
|
||||
{
|
||||
"id": "evt-1",
|
||||
"method": "notifications/elementSelected",
|
||||
"params": {"x": 1},
|
||||
},
|
||||
)
|
||||
)
|
||||
await asyncio.sleep(0.1)
|
||||
# Find the response
|
||||
responses = [p for t, p in client.received if t == zs.MSG_RESPONSE]
|
||||
|
||||
Reference in New Issue
Block a user