from __future__ import annotations

from typing import Annotated

from fastapi import APIRouter, Depends
from fastapi.responses import StreamingResponse

from v1.agent.dependencies import get_agent_service
from v1.agent.schemas import RunAgentInput
from v1.agent.service import AgentChatService

router = APIRouter(prefix="/agent", tags=["agent"])


@router.post("/runs")
async def create_run(
    input_data: RunAgentInput,
    service: Annotated[AgentChatService, Depends(get_agent_service)],
) -> StreamingResponse:
    return StreamingResponse(
        service.stream_run(input_data),
        media_type="text/event-stream",
    )


@router.post("/runs/{run_id}/resume")
async def resume_run(
    run_id: str,
    input_data: RunAgentInput,
    service: Annotated[AgentChatService, Depends(get_agent_service)],
) -> StreamingResponse:
    return StreamingResponse(
        service.stream_resume(run_id, input_data),
        media_type="text/event-stream",
    )
