[project]
name = "tim-contas-agent-framework"
version = "1.0.0"
description = "TIM Contas framework-native agent on agent_framework_oci"
readme = "README.md"
requires-python = ">=3.13,<3.14"
authors = [
    {name = "Time de Desenvolvimento", email = "dev@1sti.com.br"},
]
dependencies = [
    "agent-framework",
    "requests>=2.31",
    "fastapi>=0.109.0",
    "uvicorn[standard]>=0.27",
    "python-dotenv>=1.2.2",
    "pydantic>=2.0",
    "pydantic-settings>=2.11.0",
    "pyyaml>=6.0.3",
    "langgraph>=0.6.0",
    "langgraph-checkpoint-postgres>=2.0.0",
    "psycopg[binary]>=3.2.10",
    "langfuse>=3.14.2",
    "langchain-oci>=0.1.0",
    "pdfplumber>=0.11.4",
    "pandas>=2.2.3",
    "oracledb>=2.0.0",
    "sqlalchemy>=2.0.0",
    "pymongo==4.16.0",
    "google-cloud-pubsub>=2.20.0",
    "opentelemetry-api>=1.42.1",
    "opentelemetry-sdk>=1.42.1",
    "opentelemetry-exporter-otlp>=1.42.1",
    "openpyxl>=3.1.0",
    "slowapi",
    "limits",
    "num2words>=0.5.14",
    "cryptography>=46.0.7",
]

[dependency-groups]
dev = [
    "pytest>=9.0.2",
    "pytest-mock>=3.15.1",
    "pytest-cov>=4.1",
    "pytest-asyncio>=1.2.0",
    "httpx>=0.27,<0.28",
    "tiktoken>=0.13.0",  # medir tamanho do prompt (regra de tamanho dos testes LLM)
]

[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
markers = [
    "llm: testes que batem no LLM real (rede + OCI + custo). Pulados por padrão; rode com RUN_LLM_TESTS=1 ou `make llm-test`.",
    "guardrails: casos declarativos de guardrails do gate ativo (tests/llm_tests/cases/guardrails).",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.metadata]
allow-direct-references = true

[tool.hatch.build.targets.wheel]
# Runtime Python distribuído por este projeto. Declarar explicitamente evita
# a heurística do Hatchling baseada no nome tim_contas_agent_framework.
packages = ["app", "contas_mcp"]

[tool.uv]
override-dependencies = [
    "fastapi>=0.110.0",
]
#environments = [
#  "sys_platform == 'linux' and platform_machine == 'x86_64'",
#]
[tool.uv.sources]
agent-framework = { path = "agent_framework_oci/libs/agent_framework", editable = true }
