fastapi==0.115.6
python-multipart==0.0.27
uvicorn[standard]==0.32.1
sqlalchemy[asyncio]==2.0.36
asyncpg==0.30.0
psycopg2-binary==2.9.9
# Alembic is the canonical schema bootstrap. spm-api lifespan calls
# `alembic upgrade head` via ensure_schema() at boot; the db-seed Job
# runs the same command before its data-seeding pass.  Migrations live
# at spm/alembic/versions/ — see spm/alembic.ini for the runtime config.
alembic==1.14.0
pyjwt[crypto]==2.10.1
python-jose[cryptography]==3.4.0  # Required by platform_shared.keycloak_auth
httpx==0.27.2
requests==2.33.0
weasyprint==68.0
prometheus-fastapi-instrumentator==7.0.0
kafka-python-ng==2.2.3
cryptography==46.0.7
redis==5.2.1
# K8s migration — agent runtime control plane now uses the kubernetes
# Python client to spawn agent Pods instead of Docker containers.
kubernetes==31.*
# docker kept for back-compat import alias; not actively used in k8s mode.
docker==7.1.0

# Phase 4 — agent chat pipeline. POST /agents/{id}/chat produces to
# the agent's chat.in topic and consumes the reply from chat.out
# inside the SSE generator. kafka-python-ng above is the legacy sync
# client used elsewhere in spm-api; aiokafka is the async client we
# use inside the streaming response so we don't block the event loop.
aiokafka==0.11.0
