[build-system] requires = ["setuptools>=84.2.1", "wheel"] build-backend = "setuptools.build_meta" [project] name = "cortex-agent" version = "1.2.3" description = "CORTEX — Private Intelligence Framework. A fully local, privacy-first AI agent." readme = "README.md" license = "MIT" license-files = ["LICENSE"] authors = [{ name = "Roydon Sequeira" }] requires-python = ">=3.12" keywords = ["ai-agent", "local-llm", "ollama", "rag", "react-agent", "privacy", "fastapi", "llm"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Framework :: FastAPI", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "fastapi>=0.162.0,<0.200", "uvicorn[standard]>=0.54.0,<1.0", "pydantic>=2.14.1,<3.0", "pydantic-settings>=2.16.1,<3.0", "httpx>=0.28.1,<1.0", "chromadb>=1.5.9,<2.0", "aiosqlite>=0.22.1,<1.0", "opentelemetry-sdk>=1.45.1,<2.0", "opentelemetry-exporter-otlp>=1.45.1,<2.0", "opentelemetry-instrumentation-fastapi>=0.66b1,<1.0", "structlog>=26.1.0,<27.0", "anyio>=4.15.1,<5.0", "pyyaml>=6.0.3,<7.0", "restrictedpython>=8.5,<9.0", "html2text>=2025.4.15", "jsonschema>=4.26.0,<5.0", "truststore>=0.10.5", ] [project.urls] Homepage = "https://github.com/roydonsequeira/CORTEX-Private-Intelligence-Framework" Repository = "https://github.com/roydonsequeira/CORTEX-Private-Intelligence-Framework" Issues = "https://github.com/roydonsequeira/CORTEX-Private-Intelligence-Framework/issues" Changelog = "https://github.com/roydonsequeira/CORTEX-Private-Intelligence-Framework/blob/main/CHANGELOG.md" [project.scripts] cortex = "cortex.cli:main" [project.optional-dependencies] container = [ "docker>=7.2.0,<8.0", ] dev = [ "pytest>=9.1.1,<10", "pytest-asyncio>=1.4.0,<2.0", "ruff>=0.17.2,<1.0", "mypy>=2.4.0,<3.0", "pytest-cov>=7.1.0,<8.0", "types-pyyaml", "types-jsonschema", ] [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] # Live-model tests are opt-in: run them with `pytest -m ollama` against a # running Ollama. They are deselected from the default suite and CI. addopts = "-m 'not ollama'" markers = [ "ollama: integration tests that require a running Ollama server (deselected by default)", ] [tool.ruff] src = ["src"] target-version = "py312" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] ignore = ["E501"] [tool.mypy] python_version = "3.12" strict = true mypy_path = "src" [[tool.mypy.overrides]] module = ["RestrictedPython", "RestrictedPython.*", "docker", "docker.*"] ignore_missing_imports = true # RestrictedPython 8.5+ ships inline types but does not list re-exports in # __all__; treat its imported names as re-exported so strict mode accepts them. implicit_reexport = true