[Haik]: browser toolkit seems done, now gonna work on the rest of the browser stuff maybe?

This commit is contained in:
haikdc
2026-04-02 14:32:37 -07:00
parent b27bd1bbd7
commit 91fc6377ec
4 changed files with 91 additions and 9 deletions
@@ -1,10 +1,10 @@
# BUILTIN_TOOLKIT.py
from typing import Dict
from typing import Dict, Callable
from backend.apps.agents.HaikFix.tools.shared_structs.Toolkit import Toolkit
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.agents_toolkit.make_agents_toolkit import make_agents_toolkit
# TODO: add browser toolkit
# from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.make_browser_toolkit import make_browser_toolkit
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.make_browser_toolkit import make_browser_toolkit
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.pre_existing_toolkits.FILESYSTEM_TOOLKIT import FILESYSTEM_TOOLKIT
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.pre_existing_toolkits.INTERACTION_TOOLKIT import INTERACTION_TOOLKIT
@@ -14,12 +14,16 @@ from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.pre_existing_toolkit
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.pre_existing_toolkits.SYSTEM_TOOLKIT import SYSTEM_TOOLKIT
from backend.apps.agents.HaikFix.Agent.Agent import Agent
def make_builtin_toolkit(parent: Agent, agent_registry: Dict[str, Agent]) -> Toolkit:
def make_builtin_toolkit(
parent: Agent,
agent_registry: Dict[str, Agent],
) -> Toolkit:
return Toolkit(
name="builtin",
description="Builtin tools",
nested_toolkits=[
make_agents_toolkit(parent, agent_registry),
make_browser_toolkit(parent),
FILESYSTEM_TOOLKIT,
INTERACTION_TOOLKIT,
PLANNING_TOOLKIT,
@@ -1,7 +1,5 @@
import asyncio
import logging
from typing import TypedDict
from typing_extensions import NotRequired
from typeguard import typechecked
from backend.apps.agents.HaikFix.Agent.shared_structs.Message.agent_outputs import ToolResponse
@@ -9,26 +7,35 @@ from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.handlers.utils.format_browser_result import format_browser_result
from backend.apps.agents.HaikFix.Agent.Agent import Agent
# NOTE: Legacy dependancy. TODO: fix this shit cuh
from backend.apps.agents.browser.runner import _create_browser_card
class CreateBrowserAgentInput(TypedDict):
task: str
url: NotRequired[str]
@typechecked
def make_create_browser_agent_handler(
parent: Agent,
create_browser_card_fn,
):
async def handler(args: CreateBrowserAgentInput) -> ToolResponse:
task = args["task"]
url = args.get("url", "")
browser_id = await create_browser_card_fn(
browser_id = await _create_browser_card(
dashboard_id=parent.config.session_id or "",
url=url,
parent_session_id=parent.session_id,
)
if not browser_id:
return {"content": [{"type": "text", "text": "Error: failed to create browser card"}], "is_error": True}
return {
"content": [
{
"type": "text",
"text": "Error: failed to create browser agent",
},
],
"is_error": True,
}
await asyncio.sleep(2.0)
@@ -0,0 +1,29 @@
from typing import TypedDict
from typeguard import typechecked
from backend.apps.agents.HaikFix.Agent.shared_structs.Message.agent_outputs import ToolResponse
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.handlers.utils.run_browser_loop import run_browser_loop
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.handlers.utils.format_browser_result import format_browser_result
from backend.apps.agents.HaikFix.Agent.Agent import Agent
class InvokeBrowserAgentInput(TypedDict):
browser_id: str
task: str
@typechecked
def make_invoke_browser_agent_handler(parent: Agent):
async def handler(args: InvokeBrowserAgentInput) -> ToolResponse:
browser_id = args["browser_id"]
task = args["task"]
result = await run_browser_loop(
task=task,
browser_id=browser_id,
model=parent.model,
)
return format_browser_result(result, browser_id)
return handler
@@ -0,0 +1,42 @@
from backend.apps.agents.HaikFix.tools.shared_structs.Toolkit import Toolkit
from backend.apps.agents.HaikFix.tools.shared_structs.MCP_Tool import SDK_MCP_Tool
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.handlers.make_create_browser_agent_handler import (
make_create_browser_agent_handler, CreateBrowserAgentInput,
)
from backend.apps.agents.HaikFix.tools.make_builtin_toolkit.open_swarm_toolkits.browser_toolkit.handlers.make_invoke_browser_agent_handler import (
make_invoke_browser_agent_handler, InvokeBrowserAgentInput,
)
from backend.apps.agents.HaikFix.Agent.Agent import Agent
def make_browser_toolkit(parent: Agent, create_browser_card_fn) -> Toolkit:
return Toolkit(
name="browser",
description="Tools for browser automation",
tools=[
SDK_MCP_Tool(
name="CreateBrowserAgent",
description=(
"Create a new browser and run a task on it. A dedicated browser agent "
"will autonomously navigate, click, type, and return a summary plus screenshot."
),
deferred=False,
permission="allow",
server_name="openswarm-browser",
input_schema=CreateBrowserAgentInput,
handler=make_create_browser_agent_handler(parent, create_browser_card_fn),
),
SDK_MCP_Tool(
name="InvokeBrowserAgent",
description=(
"Run a task on an existing browser. The browser agent will autonomously "
"perform the task and return a summary plus screenshot."
),
deferred=False,
permission="allow",
server_name="openswarm-browser",
input_schema=InvokeBrowserAgentInput,
handler=make_invoke_browser_agent_handler(parent),
),
],
)