56 lines
2.3 KiB
Python
56 lines
2.3 KiB
Python
from pathlib import Path
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.config import get_settings
|
|
from app.db import SecretORM
|
|
from app.google.auth import GoogleAuthManager
|
|
from app.models import RuntimeSettings
|
|
from app.tools.apple_notes import AppleNotesTool
|
|
from app.tools.browser_use import BrowserUseTool
|
|
from app.tools.brave_search import BraveSearchTool
|
|
from app.tools.files import FilesTool
|
|
from app.tools.gmail import GmailTool
|
|
from app.tools.google_drive import GoogleDriveTool
|
|
from app.tools.second_brain import SecondBrainTool
|
|
from app.tools.terminal import TerminalTool
|
|
from app.tools.web_fetch import WebFetchTool
|
|
|
|
|
|
def build_tools(runtime: RuntimeSettings, workspace_root: Path, session: Session) -> dict[str, object]:
|
|
enabled = {tool.name for tool in runtime.tools if tool.enabled}
|
|
tools: dict[str, object] = {}
|
|
settings = get_settings()
|
|
google_auth = GoogleAuthManager(settings, Path(__file__).resolve().parents[2])
|
|
|
|
if "files" in enabled:
|
|
tools["files"] = FilesTool(workspace_root)
|
|
if "apple_notes" in enabled:
|
|
tools["apple_notes"] = AppleNotesTool()
|
|
if "browser_use" in enabled:
|
|
secret = session.get(SecretORM, "zai_api_key")
|
|
api_key = secret.value if secret else settings.zai_api_key
|
|
tools["browser_use"] = BrowserUseTool(workspace_root, runtime, settings, api_key)
|
|
if "brave_search" in enabled and runtime.search_provider == "brave":
|
|
secret = session.get(SecretORM, "brave_api_key")
|
|
api_key = secret.value if secret else settings.brave_api_key
|
|
tools["brave_search"] = BraveSearchTool(api_key)
|
|
if "second_brain" in enabled:
|
|
secret = session.get(SecretORM, "anythingllm_api_key")
|
|
api_key = secret.value if secret else settings.anythingllm_api_key
|
|
tools["second_brain"] = SecondBrainTool(
|
|
base_url=runtime.anythingllm_base_url,
|
|
workspace_slug=runtime.anythingllm_workspace_slug,
|
|
api_key=api_key,
|
|
)
|
|
if "gmail" in enabled:
|
|
tools["gmail"] = GmailTool(google_auth)
|
|
if "google_drive" in enabled:
|
|
tools["google_drive"] = GoogleDriveTool(google_auth)
|
|
if "web_fetch" in enabled:
|
|
tools["web_fetch"] = WebFetchTool()
|
|
if "terminal" in enabled:
|
|
tools["terminal"] = TerminalTool(runtime.terminal_mode, workspace_root)
|
|
|
|
return tools
|