# Base image — bare minimum for A2A server and adapter loading
# Agent-specific deps are in adapters/<runtime>/requirements.txt
# and installed at container startup via entrypoint.sh

# A2A protocol
# KI-009 a2a-sdk v1 migration (2026-04-24): bumped from ==0.3.25.
# v1.0 removes A2AStarletteApplication → Starlette route factory pattern.
# Rollback: pin ==0.3.25 and revert main.py + executor changes.
a2a-sdk[http-server]>=1.0.0,<2.0

# HTTP / server
httpx>=0.28.1
uvicorn>=0.46.0
starlette>=1.0.0
websockets>=16.0

# multipart/form-data parser — required for Starlette's Request.form() on
# /internal/chat/uploads/ingest. Pinned ≥ 0.0.18 because earlier versions
# had a CVE-2024-53981 (DoS via malformed boundary).
python-multipart>=0.0.27

# Config parsing
pyyaml>=6.0.3

# Shared tools framework (used by coordinator, delegation, memory, sandbox)
langchain-core>=0.3.0

# OpenTelemetry — workspace-level distributed tracing
# tools/telemetry.py gracefully degrades (noop) when these are absent,
# but they are required for actual trace export.
opentelemetry-api>=1.41.1
opentelemetry-sdk>=1.41.1
# OTLP/HTTP exporter: sends spans to any OTEL collector and to Langfuse ≥4
opentelemetry-exporter-otlp-proto-http>=1.41.1

# SQLAlchemy — used by molecule_audit ledger (EU AI Act Annex III compliance)
sqlalchemy>=2.0.0

# Temporal durable execution (optional)
# tools/temporal_workflow.py wraps task execution in Temporal workflows so
# tasks survive crashes and can resume.  The module and TemporalWorkflowWrapper
# load cleanly without this package — all paths fall back to direct execution.
# Requires a running Temporal server; set TEMPORAL_HOST=<host>:7233 to enable.
temporalio>=1.26.0
