Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""Agents API routes for VoIdea."""
|
||||
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
|
||||
from app.agents.registry import registry
|
||||
from app.core.dependencies import get_current_user
|
||||
from app.models.user import User
|
||||
from app.schemas.agent import AgentRunRequest, AgentStatusResponse
|
||||
from app.services.agent_service import AgentService
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
def get_agent_service() -> AgentService:
|
||||
return AgentService(registry)
|
||||
|
||||
|
||||
@router.get("/", response_model=list[AgentStatusResponse])
|
||||
async def list_agents(
|
||||
user: Annotated[User, Depends(get_current_user)],
|
||||
):
|
||||
service = get_agent_service()
|
||||
agents = service.list_agents()
|
||||
return [AgentStatusResponse(**a) for a in agents]
|
||||
|
||||
|
||||
@router.get("/{agent_name}", response_model=AgentStatusResponse)
|
||||
async def get_agent(
|
||||
agent_name: str,
|
||||
user: Annotated[User, Depends(get_current_user)],
|
||||
):
|
||||
service = get_agent_service()
|
||||
agent = service.get_agent(agent_name)
|
||||
if not agent:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Agent not found")
|
||||
return AgentStatusResponse(**agent)
|
||||
|
||||
|
||||
@router.post("/{agent_name}/run")
|
||||
async def run_agent(
|
||||
agent_name: str,
|
||||
body: AgentRunRequest,
|
||||
user: Annotated[User, Depends(get_current_user)],
|
||||
):
|
||||
service = get_agent_service()
|
||||
result = await service.run_agent(agent_name, body.context)
|
||||
if not result["success"] and "not found" in result.get("message", ""):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=result["message"],
|
||||
)
|
||||
return result
|
||||
Reference in New Issue
Block a user