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)