Files
openswarm/backend/OLDapps/tools_lib/__init__.py

39 lines
1.6 KiB
Python

"""tools_lib package — SubApp instance, lifespan, and route wiring."""
from __future__ import annotations
import os
from contextlib import asynccontextmanager
from backend.config.Apps import SubApp
from backend.config.paths import TOOLS_DIR as DATA_DIR
from backend.apps.tools_lib import routes, oauth, mcp_discovery
@asynccontextmanager
async def tools_lib_lifespan():
os.makedirs(DATA_DIR, exist_ok=True)
yield
tools_lib = SubApp("tools", tools_lib_lifespan)
# CRUD + permissions
tools_lib.router.add_api_route("/builtin", routes.list_builtin_tools, methods=["GET"])
tools_lib.router.add_api_route("/builtin/permissions", routes.get_builtin_permissions, methods=["GET"])
tools_lib.router.add_api_route("/builtin/permissions", routes.update_builtin_permissions, methods=["PUT"])
tools_lib.router.add_api_route("/list", routes.list_tools, methods=["GET"])
tools_lib.router.add_api_route("/create", routes.create_tool, methods=["POST"])
# OAuth
tools_lib.router.add_api_route("/oauth/callback", oauth.oauth_callback, methods=["GET"])
# Per-tool routes (order matters: specific paths before {tool_id})
tools_lib.router.add_api_route("/{tool_id}/discover", mcp_discovery.discover_tools, methods=["POST"])
tools_lib.router.add_api_route("/{tool_id}/oauth/disconnect", oauth.oauth_disconnect, methods=["POST"])
tools_lib.router.add_api_route("/{tool_id}/oauth/start", oauth.oauth_start, methods=["POST"])
tools_lib.router.add_api_route("/{tool_id}", routes.get_tool, methods=["GET"])
tools_lib.router.add_api_route("/{tool_id}", routes.update_tool, methods=["PUT"])
tools_lib.router.add_api_route("/{tool_id}", routes.delete_tool, methods=["DELETE"])