[project] name = "konstruct" version = "0.1.0" description = "AI workforce platform — channel-native AI employees for Slack, Teams, and more" requires-python = ">=3.12" dependencies = [] [tool.uv.workspace] members = [ "packages/shared", "packages/gateway", "packages/router", "packages/orchestrator", "packages/llm-pool", ] [dependency-groups] dev = [ "ruff>=0.11.0", "mypy>=1.15.0", "pytest>=8.3.0", "pytest-asyncio>=0.25.0", "pytest-httpx>=0.35.0", "httpx>=0.28.0", "fakeredis>=2.28.0", ] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] [tool.ruff] line-length = 120 target-version = "py312" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long (ruff format handles this) ] [tool.ruff.lint.isort] known-first-party = ["shared", "gateway", "router", "orchestrator", "llm_pool"] [tool.mypy] python_version = "3.12" strict = true ignore_missing_imports = true