[build-system]
requires = ["setuptools<70.0.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "baselith-core"
version = "0.4.0"
description = "A Modular Framework for Baselith-Core Orchestration featuring World Models (MCTS), Swarm, and Native MCP."
readme = "README.md"
requires-python = ">=3.10,<3.13"
authors = [
  { name = "Gippo", email = "baselith.ai@gmail.com" }
]
license = { text = "AGPL-3.0" }
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: GNU Affero General Public License v3",
    "Programming Language :: Python :: 3.11",
]
keywords = ["ai", "agents", "framework"]

dependencies = [
  "accelerate>=0.25.0",
  "aiohttp>=3.9.0",
  "alembic>=1.13.0",
  "anthropic>=0.18.0",
  "argon2-cffi>=23.1.0",
  "beautifulsoup4>=4.14.2",
  "defusedxml==0.7.1",
  "email-validator>=2.1.0",
  "fastapi==0.115.0",
  "fastapi-limiter<0.2.0,>=0.1.6",
  "httpx==0.27.0",
  "huggingface-hub>=0.20.0",
  "langchain-text-splitters>=1.1.0",
  "markdown-it-py==3.0.0",
  "networkx>=3.0",
  "numpy>=1.24.0,<2.0.0",
  "ollama==0.6.0",
  "openai>=2.2.0",
  "openpyxl==3.1.5",
  "opentelemetry-api>=1.21.0",
  "opentelemetry-exporter-otlp>=1.21.0",
  "opentelemetry-instrumentation-fastapi>=0.42b0",
  "opentelemetry-instrumentation-httpx>=0.42b0",
  "opentelemetry-instrumentation-redis>=0.42b0",
  "opentelemetry-sdk>=1.21.0",
  "orjson==3.11.7",
  "pdf2image==1.16.3",
  "Pillow==12.1.1",
  "playwright==1.45.0",
  "prometheus-client==0.20.0",
  "psycopg[binary,pool]==3.2.1",
  "pydantic-settings>=2.0.0",
  "PyJWT==2.8.0",
  "pypdf>=6.7.4",
  "pytesseract==0.3.10",
  "pytest>=7.4.0",
  "pytest-asyncio>=0.21.0",
  "pytest-cov>=4.1.0",
  "python-docx==1.1.0",
  "python-multipart",
  "python-pptx==0.6.23",
  "PyYAML>=6.0",
  "qdrant-client==1.15.1",
  "redis==5.0.7",
  "rq>=1.15.0",
  "sentence-transformers==2.7.0",
  "sentry-sdk[fastapi]>=2.0.0",
  "spacy==3.8.0",
  "sse-starlette>=2.1.0",
  "structlog>=24.1.0",
  "transformers>=4.36.0",
  "uvicorn[standard]==0.30.0",
  "xlrd==2.0.1",
  "rich>=13.7.0",
  "rich-argparse>=1.4.0",
  "argcomplete>=3.2.0",
  "ruff>=0.4.0",
  "mypy>=1.10.0",
  "ipython>=8.0.0",
]

[project.urls]
Homepage = "https://github.com/baselithcore/baselithcore"
Repository = "https://github.com/baselithcore/baselithcore"
Documentation = "https://baselithcore.github.io/baselithcore"

[project.scripts]
baselith = "core.cli.__main__:main"

[project.optional-dependencies]
test = [
  "pytest>=7.4.0",
  "pytest-cov>=4.1.0",
  "pytest-asyncio>=0.21.0",
]
adapters = [
  "langchain>=1.2.0",
  "langchain-community>=0.4.0",
  "langgraph>=1.0.0",
  "langchain-ollama>=1.0.0",
]

[tool.setuptools.packages.find]
where = ["."]
include = ["core*", "plugins*"]

[tool.setuptools.package-data]
core = ["static/**/*"]
plugins = ["static/**/*"]

[tool.bandit]
exclude_dirs = ["tests", "venv", "node_modules", ".git", ".env", "examples"]

[tool.ruff]
exclude = [
    "templates/",
    "frontend/",
    "examples/",
]

[tool.mypy]
python_version = "3.11"
warn_return_any = false
warn_unused_configs = true
disallow_untyped_defs = false
check_untyped_defs = true
disable_error_code = ["import-untyped", "import-not-found"]
exclude = [
    "templates/",
    "examples/",
    "frontend/",
    "build/",
    "dist/",
    "plugins/",
    "scripts/",
]

[[tool.mypy.overrides]]
module = ["tests.*"]
ignore_errors = true

[[tool.mypy.overrides]]
module = [
    "sentence_transformers",
    "psutil",
    "pytesseract",
    "docker",
    "docker.errors",
    "docker.models.containers",
    "docker.types",
    "structlog",
    "structlog.contextvars",
    "opentelemetry",
    "opentelemetry.instrumentation.fastapi",
    "opentelemetry.instrumentation.redis",
    "opentelemetry.instrumentation.httpx"
]
ignore_errors = true
