httpx<1.0.0,>=0.26.0
pydantic<3.0.0,>=2.5.3
fastapi<1.0.0,>=0.109.0
uvicorn[standard]<1.0.0,>=0.27.0
sqlalchemy<3.0.0,>=2.0.25
psycopg2-binary<3.0.0,>=2.9.9
pydantic-settings<3.0.0,>=2.1.0
alembic<2.0.0,>=1.13.1
supabase<3.0.0,>=2.3.0
temporalio<2.0.0,>=1.5.0
python-multipart<1.0.0,>=0.0.6
python-jose[cryptography]<4.0.0,>=3.3.0
PyJWT<3.0.0,>=2.8.0
passlib[bcrypt]<2.0.0,>=1.7.4
mangum<1.0.0,>=0.17.0
structlog<25.0.0,>=24.1.0
croniter<3.0.0,>=2.0.0
litellm<2.0.0,>=1.30.0
agno<3.0.0,>=2.0.10
mcp<2.0.0,>=1.0.0
redis<6.0.0,>=5.0.0
kubiya-sdk<3.0.0,>=2.0.3
websockets<16.0.0,>=15.0
python-dotenv<2.0.0,>=1.0.0
anthropic<1.0.0,>=0.39.0
claude-agent-sdk>=0.1.6

[all]
kubiya-control-plane-api[api,dev,test,worker]

[api]
fastapi<1.0.0,>=0.109.0
uvicorn[standard]<1.0.0,>=0.27.0
sqlalchemy<3.0.0,>=2.0.25
psycopg2-binary<3.0.0,>=2.9.9
pydantic-settings<3.0.0,>=2.1.0
alembic<2.0.0,>=1.13.1
supabase<3.0.0,>=2.3.0
temporalio<2.0.0,>=1.5.0
python-multipart<1.0.0,>=0.0.6
python-jose[cryptography]<4.0.0,>=3.3.0
PyJWT<3.0.0,>=2.8.0
passlib[bcrypt]<2.0.0,>=1.7.4
mangum<1.0.0,>=0.17.0
structlog<25.0.0,>=24.1.0
croniter<3.0.0,>=2.0.0
kubiya-sdk<3.0.0,>=2.0.3

[dev]
pytest<9.0.0,>=7.4.0
pytest-asyncio<1.0.0,>=0.21.0
pytest-cov<6.0.0,>=4.1.0
pytest-mock<4.0.0,>=3.11.0
pytest-xdist<4.0.0,>=3.5.0
fakeredis<3.0.0,>=2.20.0
respx<1.0.0,>=0.20.0
black<25.0.0,>=23.0.0
ruff<1.0.0,>=0.1.0
mypy<2.0.0,>=1.0.0

[test]
pytest<9.0.0,>=7.4.0
pytest-asyncio<1.0.0,>=0.21.0
pytest-cov<6.0.0,>=4.1.0
pytest-mock<4.0.0,>=3.11.0
pytest-xdist<4.0.0,>=3.5.0
fakeredis<3.0.0,>=2.20.0
respx<1.0.0,>=0.20.0

[worker]
temporalio<2.0.0,>=1.5.0
structlog<25.0.0,>=24.1.0
agno<3.0.0,>=2.0.10
litellm<2.0.0,>=1.30.0
psutil<6.0.0,>=5.9.0
docker<8.0.0,>=7.0.0
redis<6.0.0,>=5.0.0
mcp<2.0.0,>=1.0.0
nest-asyncio<2.0.0,>=1.5.0
claude-agent-sdk<1.0.0,>=0.1.0
