[project]
name = "captain-claw"
version = "0.3.4"
description = "A powerful AI agentic system"
readme = "README.md"
requires-python = ">=3.11"
license = "MIT"
license-files = ["LICENCE"]
authors = [
    { name = "Stevica Kuharski", email = "kstevica@gmail.com" }
]
keywords = ["ai", "agent", "cli", "terminal", "llm"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
]

dependencies = [
    "litellm>=1.40.0",
    "pydantic>=2.0.0",
    "pydantic-settings>=2.0.0",
    "aiosqlite>=0.19.0",
    "tiktoken>=0.5.0",
    "httpx>=0.25.0",
    "beautifulsoup4>=4.12.0",
    "pypdf>=4.0.0",
    "aiofiles>=23.0.0",
    "structlog>=23.0.0",
    "pyyaml>=6.0.0",
    "rich>=13.0.0",
    "blessed>=1.20.0",
    "python-dotenv>=1.0.0",
    "glob2>=0.7",
    "tenacity>=8.0.0",
    "aiohttp>=3.9.0",
    "playwright>=1.40.0",
]

[project.optional-dependencies]
tts = [
    "pocket-tts>=1.0.3",
]
dev = [
    "pytest>=7.0.0",
    "pytest-asyncio>=0.21.0",
    "pytest-cov>=4.0.0",
    "ruff>=0.1.0",
    "mypy>=1.0.0",
]
vector = [
    "numpy>=1.24.0",
    "scikit-learn>=1.3.0",
]
vision = [
    "Pillow>=10.0.0",
]
browser = [
    # Included in core deps; kept for backward compat with pip install captain-claw[browser].
    "playwright>=1.40.0",
]
screen = [
    "mss>=9.0.0",
    "pynput>=1.7.0",
    "sounddevice>=0.4.0",
    "numpy>=1.24.0",
    "soniox>=0.1.0",
]
build = [
    "pyinstaller>=6.0.0",
]

[project.scripts]
captain-claw = "captain_claw.main:main"
captain-claw-web = "captain_claw.web_server:main"
captain-claw-orchestrate = "captain_claw.orchestrator_cli:cli_orchestrate"
botport = "botport.server:main"

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

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]

[tool.ruff]
line-length = 100
target-version = "py311"

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

[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false

[tool.setuptools.packages.find]
where = [".", "botport"]
include = ["captain_claw*", "botport", "botport.dashboard"]

[tool.setuptools.package-data]
captain_claw = ["web/static/**/*", "instructions/**/*"]
botport = ["dashboard/static/**/*"]
