[Haik]: swapped from a hardcoded browser ACTION_MAP to one thats dynamically generated from the toolkit

This commit is contained in:
haikdc
2026-04-02 19:15:06 -07:00
parent 498aa8aa0d
commit 48a4974fcf
2 changed files with 14 additions and 30 deletions
@@ -5,23 +5,12 @@ from typeguard import typechecked
from backend.core.shared_structs.agent.Message.agent_outputs import ToolResponse
from backend.core.shared_structs.browser.BrowserCommandFn import BrowserCommandFn
ACTION_MAP: Dict[str, str] = {
"BrowserScreenshot": "screenshot",
"BrowserGetText": "get_text",
"BrowserNavigate": "navigate",
"BrowserClick": "click",
"BrowserType": "type",
"BrowserEvaluate": "evaluate",
"BrowserGetElements": "get_elements",
"BrowserScroll": "scroll",
"BrowserWait": "wait",
}
def _format_tool_result(result: dict, tool_name: str) -> list[dict]:
@typechecked
def p_format_tool_result(result: dict, action: str) -> list[dict]:
if "error" in result:
return [{"type": "text", "text": f"Error: {result['error']}"}]
if tool_name == "BrowserScreenshot" and result.get("image"):
if action == "screenshot" and result.get("image"):
return [
{
"type": "image",
@@ -35,21 +24,16 @@ def _format_tool_result(result: dict, tool_name: str) -> list[dict]:
@typechecked
def make_browser_action_handler(
tool_name: str,
action: str,
browser_id: str,
tab_id: str,
send_command: BrowserCommandFn,
):
action = ACTION_MAP.get(tool_name)
async def handler(args: Dict[str, Any]) -> ToolResponse:
if not action:
return {"content": [{"type": "text", "text": f"Unknown browser tool: {tool_name}"}], "is_error": True}
result = await send_command(action, browser_id, tab_id, args)
if "error" in result:
return {"content": [{"type": "text", "text": f"Error: {result['error']}"}], "is_error": True}
return {"content": _format_tool_result(result, tool_name)}
return {"content": p_format_tool_result(result, action)}
return handler
@@ -35,7 +35,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserScreenshotInput,
handler=make_browser_action_handler("BrowserScreenshot", browser_id, tab_id, send_command),
handler=make_browser_action_handler("screenshot", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserGetText",
@@ -44,7 +44,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserGetTextInput,
handler=make_browser_action_handler("BrowserGetText", browser_id, tab_id, send_command),
handler=make_browser_action_handler("get_text", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserNavigate",
@@ -53,7 +53,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserNavigateInput,
handler=make_browser_action_handler("BrowserNavigate", browser_id, tab_id, send_command),
handler=make_browser_action_handler("navigate", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserClick",
@@ -65,7 +65,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserClickInput,
handler=make_browser_action_handler("BrowserClick", browser_id, tab_id, send_command),
handler=make_browser_action_handler("click", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserType",
@@ -74,7 +74,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserTypeInput,
handler=make_browser_action_handler("BrowserType", browser_id, tab_id, send_command),
handler=make_browser_action_handler("type", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserEvaluate",
@@ -83,7 +83,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserEvaluateInput,
handler=make_browser_action_handler("BrowserEvaluate", browser_id, tab_id, send_command),
handler=make_browser_action_handler("evaluate", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserGetElements",
@@ -95,7 +95,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserGetElementsInput,
handler=make_browser_action_handler("BrowserGetElements", browser_id, tab_id, send_command),
handler=make_browser_action_handler("get_elements", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserScroll",
@@ -107,7 +107,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserScrollInput,
handler=make_browser_action_handler("BrowserScroll", browser_id, tab_id, send_command),
handler=make_browser_action_handler("scroll", browser_id, tab_id, send_command),
),
SDK_MCP_Tool(
name="BrowserWait",
@@ -119,7 +119,7 @@ def make_browser_actions_toolkit(browser_id: str, send_command: BrowserCommandFn
permission="allow",
server_name=SERVER_NAME,
input_schema=BrowserWaitInput,
handler=make_browser_action_handler("BrowserWait", browser_id, tab_id, send_command),
handler=make_browser_action_handler("wait", browser_id, tab_id, send_command),
),
],
)