mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-24 13:32:22 +02:00
- PostHog integration: collector, analytics subapp, opt-in UI, Analytics page - 9Router: auto-start, OAuth subscription flow, /v1/messages Anthropic format support - Settings overhaul: multi-provider API keys, subscription connect UI, onboarding modal - Unified usage: merge 9Router cost/token data into Settings Usage tab - Provider system: providers/, agent_loop, tools/ (unused, for future non-Anthropic support) - Agent SDK: restored as primary with 9Router ANTHROPIC_BASE_URL fallback - Updated system prompt, credential resolution, dashboard analytics
62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
"""Central tool registry.
|
|
|
|
Importing this module automatically registers all builtin tools.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from backend.apps.agents.tools.base import BaseTool
|
|
from backend.apps.agents.providers.base import ToolSchema
|
|
|
|
_TOOLS: dict[str, BaseTool] = {}
|
|
|
|
|
|
def register_tool(tool: BaseTool) -> None:
|
|
"""Register a tool instance by its name."""
|
|
_TOOLS[tool.name] = tool
|
|
|
|
|
|
def get_tool(name: str) -> BaseTool | None:
|
|
"""Look up a registered tool by name. Returns None if not found."""
|
|
return _TOOLS.get(name)
|
|
|
|
|
|
def get_all_tools() -> list[BaseTool]:
|
|
"""Return all registered tool instances."""
|
|
return list(_TOOLS.values())
|
|
|
|
|
|
def get_all_tool_schemas() -> list[ToolSchema]:
|
|
"""Return provider-agnostic ToolSchema for every registered tool."""
|
|
return [t.to_tool_schema() for t in _TOOLS.values()]
|
|
|
|
|
|
def init_tools() -> None:
|
|
"""Import and register all builtin tools."""
|
|
from backend.apps.agents.tools.filesystem import (
|
|
ReadTool,
|
|
WriteTool,
|
|
EditTool,
|
|
GlobTool,
|
|
GrepTool,
|
|
)
|
|
from backend.apps.agents.tools.system import BashTool, AskUserQuestionTool
|
|
from backend.apps.agents.tools.web import WebSearchTool, WebFetchTool
|
|
|
|
for tool_cls in [
|
|
ReadTool,
|
|
WriteTool,
|
|
EditTool,
|
|
GlobTool,
|
|
GrepTool,
|
|
BashTool,
|
|
AskUserQuestionTool,
|
|
WebSearchTool,
|
|
WebFetchTool,
|
|
]:
|
|
register_tool(tool_cls())
|
|
|
|
|
|
# Auto-register on import
|
|
init_tools()
|