mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-11 12:17:45 +02:00
[Haik]: browser toolkit seems done, now gonna work on the rest of the browser stuff maybe?
This commit is contained in:
@@ -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,
|
||||
|
||||
+13
-6
@@ -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)
|
||||
|
||||
|
||||
+29
@@ -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
|
||||
+42
@@ -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),
|
||||
),
|
||||
],
|
||||
)
|
||||
Reference in New Issue
Block a user