[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "loader" version = "0.1.0" description = "Local-first agentic coding assistant" readme = "README.md" license = "MIT" requires-python = ">=3.11" authors = [ { name = "mfwolffe" } ] keywords = ["ai", "llm", "coding", "assistant", "agent"] classifiers = [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development", ] dependencies = [ "rich>=13.0", # Terminal UI "httpx>=0.25", # Async HTTP for LLM APIs "click>=8.0", # CLI framework "pydantic>=2.0", # Data validation "prompt-toolkit>=3.0", # Interactive input "textual>=0.47.0", # Full TUI framework ] [project.optional-dependencies] dev = [ "pytest>=7.0", "pytest-asyncio", "ruff", "mypy", ] [project.scripts] loader = "loader.cli.main:main" [tool.hatch.build.targets.wheel] packages = ["src/loader"] [tool.ruff] line-length = 100 target-version = "py311" extend-exclude = ["refs"] [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] "src/loader/cli/main.py" = ["N818"] "src/loader/tools/base.py" = ["N818"] "src/loader/ui/__init__.py" = ["N802"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "strict" asyncio_default_fixture_loop_scope = "function" [tool.mypy] python_version = "3.11" strict = true exclude = ["^refs/"]