dashboard-nanobot/backend/api/bot_config_router.py

103 lines
3.2 KiB
Python

from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session
from core.database import get_session
from models.bot import BotInstance
from schemas.bot import (
BotEnvParamsUpdateRequest,
BotMcpConfigUpdateRequest,
BotToolsConfigUpdateRequest,
ChannelConfigRequest,
ChannelConfigUpdateRequest,
)
from services.bot_config_service import (
create_bot_channel_config,
delete_bot_channel_config,
get_bot_env_params_state,
get_bot_mcp_config_state,
get_bot_resources_snapshot,
get_bot_tools_config_state,
list_bot_channels_config,
reject_bot_tools_config_update,
update_bot_channel_config,
update_bot_env_params_state,
update_bot_mcp_config_state,
)
router = APIRouter()
@router.get("/api/bots/{bot_id}/resources")
def get_bot_resources(bot_id: str, session: Session = Depends(get_session)):
return get_bot_resources_snapshot(session, bot_id=bot_id)
@router.get("/api/bots/{bot_id}/channels")
def list_bot_channels(bot_id: str, session: Session = Depends(get_session)):
return list_bot_channels_config(session, bot_id=bot_id)
@router.get("/api/bots/{bot_id}/tools-config")
def get_bot_tools_config(bot_id: str, session: Session = Depends(get_session)):
return get_bot_tools_config_state(session, bot_id=bot_id)
@router.put("/api/bots/{bot_id}/tools-config")
def update_bot_tools_config(
bot_id: str,
payload: BotToolsConfigUpdateRequest,
session: Session = Depends(get_session),
):
return reject_bot_tools_config_update(session, bot_id=bot_id, payload=payload)
@router.get("/api/bots/{bot_id}/mcp-config")
def get_bot_mcp_config(bot_id: str, session: Session = Depends(get_session)):
return get_bot_mcp_config_state(session, bot_id=bot_id)
@router.put("/api/bots/{bot_id}/mcp-config")
def update_bot_mcp_config(
bot_id: str,
payload: BotMcpConfigUpdateRequest,
session: Session = Depends(get_session),
):
return update_bot_mcp_config_state(session, bot_id=bot_id, payload=payload)
@router.get("/api/bots/{bot_id}/env-params")
def get_bot_env_params(bot_id: str, session: Session = Depends(get_session)):
return get_bot_env_params_state(session, bot_id=bot_id)
@router.put("/api/bots/{bot_id}/env-params")
def update_bot_env_params(
bot_id: str,
payload: BotEnvParamsUpdateRequest,
session: Session = Depends(get_session),
):
return update_bot_env_params_state(session, bot_id=bot_id, payload=payload)
@router.post("/api/bots/{bot_id}/channels")
def create_bot_channel(
bot_id: str,
payload: ChannelConfigRequest,
session: Session = Depends(get_session),
):
return create_bot_channel_config(session, bot_id=bot_id, payload=payload)
@router.put("/api/bots/{bot_id}/channels/{channel_id}")
def update_bot_channel(
bot_id: str,
channel_id: str,
payload: ChannelConfigUpdateRequest,
session: Session = Depends(get_session),
):
return update_bot_channel_config(session, bot_id=bot_id, channel_id=channel_id, payload=payload)
@router.delete("/api/bots/{bot_id}/channels/{channel_id}")
def delete_bot_channel(bot_id: str, channel_id: str, session: Session = Depends(get_session)):
return delete_bot_channel_config(session, bot_id=bot_id, channel_id=channel_id)