69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
from fastapi import APIRouter, HTTPException, Depends
|
|
from typing import List
|
|
|
|
from app.models import AgentConfig, AgentDefinition
|
|
from app.services.agent_service import get_agent_service, AgentService
|
|
|
|
# Initialize Router
|
|
router = APIRouter(
|
|
prefix="/agents",
|
|
tags=["Agents"]
|
|
)
|
|
|
|
# ==========================
|
|
# 🤖 Agent Management API
|
|
# ==========================
|
|
|
|
@router.post("", response_model=AgentDefinition)
|
|
async def create_agent_def(
|
|
config: AgentConfig,
|
|
service: AgentService = Depends(get_agent_service)
|
|
):
|
|
"""Create a new Agent definition."""
|
|
return service.create_agent(config)
|
|
|
|
|
|
@router.get("", response_model=List[AgentDefinition])
|
|
async def list_agents(
|
|
service: AgentService = Depends(get_agent_service)
|
|
):
|
|
"""List all available Agents."""
|
|
return service.list_agents()
|
|
|
|
|
|
@router.get("/{agent_id}", response_model=AgentDefinition)
|
|
async def get_agent_def(
|
|
agent_id: str,
|
|
service: AgentService = Depends(get_agent_service)
|
|
):
|
|
"""Get specific Agent definition."""
|
|
agent = service.get_agent(agent_id)
|
|
if not agent:
|
|
raise HTTPException(status_code=404, detail="Agent not found")
|
|
return agent
|
|
|
|
|
|
@router.put("/{agent_id}", response_model=AgentDefinition)
|
|
async def update_agent_def(
|
|
agent_id: str,
|
|
config: AgentConfig,
|
|
service: AgentService = Depends(get_agent_service)
|
|
):
|
|
"""Update an Agent definition."""
|
|
agent = service.update_agent(agent_id, config)
|
|
if not agent:
|
|
raise HTTPException(status_code=404, detail="Agent not found")
|
|
return agent
|
|
|
|
|
|
@router.delete("/{agent_id}")
|
|
async def delete_agent_def(
|
|
agent_id: str,
|
|
service: AgentService = Depends(get_agent_service)
|
|
):
|
|
"""Delete an Agent definition."""
|
|
success = service.delete_agent(agent_id)
|
|
if not success:
|
|
raise HTTPException(status_code=404, detail="Agent not found")
|
|
return {"status": "deleted", "agent_id": agent_id}
|