[build-system]
requires = ["setuptools>=68.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "anteroom"
version = "1.9.4"
description = "Anteroom - your gateway to AI conversation"
readme = "README.md"
license = "MIT"
requires-python = ">=3.10"
classifiers = [
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Operating System :: OS Independent",
]
dependencies = [
    "fastapi>=0.104.0",
    "uvicorn[standard]>=0.24.0",
    "sse-starlette>=1.8.0",
    "openai>=1.12.0",
    "mcp>=1.0.0",
    "pyyaml>=6.0",
    "filetype>=1.2.0",
    "rich>=13.0.0",
    "prompt-toolkit>=3.0.0",
    "tiktoken>=0.7.0",
    "cryptography>=42.0.0",
    "argon2-cffi>=23.1.0",
    "sqlite-vec>=0.1.6",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.0",
    "pytest-asyncio>=0.23.0",
    "pytest-cov>=4.0",
    "httpx>=0.25.0",
    "ruff>=0.4.0",
    "mypy>=1.8.0",
    "pip-audit>=2.7.0",
]

[project.scripts]
aroom = "anteroom.__main__:main"
anteroom = "anteroom.__main__:main"

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
anteroom = ["static/**/*", "cli/default_skills/*.yaml"]

[tool.ruff]
target-version = "py310"
line-length = 120

[tool.ruff.lint]
select = ["E", "F", "I", "N", "W"]

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
markers = [
    "e2e: end-to-end tests requiring real services",
    "real_ai: tests that call a real AI backend (require API key)",
]

[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
ignore_missing_imports = true

[tool.coverage.run]
source = ["anteroom"]

[tool.coverage.report]
show_missing = true
