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

[project]
name = "cua-workspace"
version = "0.1.0"
description = "CUA (Computer Use Agent) mono-repo"
authors = [
    { name = "TryCua", email = "gh@trycua.com" }
]
dependencies = []
requires-python = ">=3.10,<3.13"
readme = "README.md"
license = { text = "MIT" }

[project.urls]
repository = "https://github.com/trycua/cua"

[dependency-groups]
dev = []
examples = []

[tool.pdm]
distribution = false

[tool.pdm.dev-dependencies]
dev = [
    "black>=23.0.0",
    "ruff>=0.9.2",
    "mypy>=1.10.0",
    "types-requests>=2.31.0",
    "ipykernel>=6.29.5",
    "jupyter>=1.0.0",
    "jedi>=0.19.2"
]
test = [
    "pytest>=8.0.0",
    "pytest-asyncio>=0.21.1",
    "pytest-cov>=4.1.0",
    "pytest-mock>=3.10.0",
    "pytest-xdist>=3.6.1",
    "aioresponses>=0.7.4"
]
docs = [
    "mkdocs>=1.5.0",
    "mkdocs-material>=9.2.0"
]

[tool.pdm.resolution]
respect-source-order = true

[tool.pdm.resolution.overrides]
cua-computer = { path = "libs/computer" }
cua-omniparser = { path = "libs/omniparser" }
cua-agent = { path = "libs/agent" }
pylume = { path = "libs/pylume" }
cua-computer-server = { path = "libs/computer-server" }
cua-mcp-server = { path = "libs/mcp-server" }

[tool.black]
line-length = 100
target-version = ["py310"]

[tool.ruff]
line-length = 100
target-version = "py310"
select = ["E", "F", "B", "I"]
fix = true

[tool.ruff.format]
docstring-code-format = true

[tool.mypy]
strict = true
python_version = "3.10"
ignore_missing_imports = true
disallow_untyped_defs = true
check_untyped_defs = true
warn_return_any = true
show_error_codes = true
warn_unused_ignores = false

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["libs/*/tests"]
python_files = "test_*.py"