Pipeline/backend/app/api/agent_sessions.py

38 lines
1.3 KiB
Python
Raw Normal View History

"""Provider-neutral agent session source endpoints."""
from __future__ import annotations
import asyncio
from datetime import UTC, datetime
from fastapi import APIRouter, Depends
from app.api.deps import require_org_member
from app.schemas.agent_sessions import AgentSessionSourceRead, AgentSessionSourcesResponse
from app.services import agent_session_sources
from app.services.organizations import OrganizationContext
router = APIRouter(prefix="/agent-sessions", tags=["agent-sessions"])
ORG_MEMBER_DEP = Depends(require_org_member)
@router.get(
"/sources",
response_model=AgentSessionSourcesResponse,
summary="List available agent session sources",
description=(
"Returns source cards for Claude Code, Codex CLI, and OpenAI API session "
"history. OpenAI API history is only marked available once Pipeline has an "
"owned local event source."
),
)
async def list_sources(
ctx: OrganizationContext = ORG_MEMBER_DEP,
) -> AgentSessionSourcesResponse:
sources = await asyncio.to_thread(agent_session_sources.list_sources)
scanned_at = datetime.now(UTC).replace(tzinfo=None)
return AgentSessionSourcesResponse(
sources=[AgentSessionSourceRead(**source) for source in sources],
last_scanned_at=scanned_at,
)