[project]
name = "cogos"
version = "0.1.0"
description = "Autonomous software engineering agent built on the Viable System Model"
readme = "README.md"
requires-python = ">=3.12"
classifiers = [
    "Development Status :: 3 - Alpha",
    "Environment :: Console",
    "Intended Audience :: Developers",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.12",
    "Topic :: Software Development",
]
dependencies = [
    "aws-cdk-lib>=2.170.0",
    "constructs>=10.0",
    "click>=8.1",
    "pydantic>=2.0",
    "pyyaml>=6.0",
    "boto3>=1.35",
    "aiohttp>=3.11",
    "fastapi>=0.115",
    "uvicorn>=0.34",
    "websockets>=14.0",
    "PyJWT>=2.8",
    "cryptography>=42.0",
    "rich>=13.0",
    "discord.py>=2.3",
    "pydantic-settings>=2.0",
    "requests>=2.32.5",
    "tavily-python>=0.5",
    "trafilatura>=2.0",
    "asana>=5.0",
    "PyGithub>=2.0",
    "httpx>=0.27",
    "prompt_toolkit>=3.0",
    "Pillow>=10.0",
    "google-genai>=1.0",
    "anthropic>=0.40",
]

[project.urls]
Homepage = "https://github.com/Metta-AI/cogos"
Repository = "https://github.com/Metta-AI/cogos"

[project.optional-dependencies]
dev = [
    "pytest>=8.0",
    "pytest-asyncio>=0.24",
    "pytest-timeout>=2.3",
    "testcontainers[postgres]>=4.0",
    "ruff>=0.11",
    "pyright>=1.1.400",
    "httpx>=0.27",
]

[project.scripts]
cogos = "cli.__main__:entry"
polis = "polis.cli:polis"
discord-bridge = "cogos.io.discord.bridge:main"

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

[tool.hatch.build.targets.wheel]
sources = ["src"]
packages = ["src/cli", "src/cogents", "src/cogos", "src/cogtainer", "src/dashboard", "src/memory", "src/polis", "src/run"]

[tool.pyright]
pythonVersion = "3.12"
include = ["src/cogtainer", "src/cli", "src/memory", "src/polis", "src/dashboard", "tests"]
exclude = [".venv", "dist", "node_modules"]
typeCheckingMode = "basic"
reportMissingImports = true
reportMissingTypeStubs = false

[tool.ruff.lint.isort]
known-first-party = ["dashboard"]

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
timeout = 60
pythonpath = ["src"]
addopts = "--import-mode=importlib"
