[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "aipass" version = "2.7.0" description = "A local multi-agent framework where your AI agents keep their memory, work together, and never ask you to re-explain context" readme = "README.md" license = "MIT" requires-python = ">=3.10" authors = [ { name = "AIPass", email = "aipass.system@gmail.com" }, ] keywords = ["ai", "agents", "routing", "discovery", "multi-agent", "orchestration"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "rich>=13.0", "watchdog>=3.0", "requests>=2.34.2", "psutil>=5.9", "questionary>=2.0", "pathspec>=0.12", ] [project.urls] Homepage = "https://github.com/AIOSAI/AIPass" Repository = "https://github.com/AIOSAI/AIPass" "Bug Tracker" = "https://github.com/AIOSAI/AIPass/issues" [project.optional-dependencies] llm = [ "openai>=1.0", ] trinity = [ "trinity-pattern>=1.0.0", ] memory = [ "numpy>=2.0", "chromadb>=1.0", "fastembed>=0.4", ] telegram = [ "telethon>=1.36", ] seedgo = [] dev = [ "pytest>=9.0.3", "pytest-cov", "pytest-timeout", "ruff>=0.11", "coverage", "pyright", "Pygments>=2.20.0", ] [project.scripts] drone = "aipass.drone.cli:main" aipass = "aipass.aipass.apps.aipass:main" [tool.hatch.build.targets.wheel] packages = ["src/aipass"] [tool.hatch.build.targets.wheel.force-include] ".claude/hooks" = "aipass/_hooks" [tool.pytest.ini_options] testpaths = ["tests", "src"] # ".*" restores pytest's default dot-dir exclusion (dropped when this list was # customized) so scaffolding dirs (.aipass, .trinity, .seedgo, ...) are never # recursed for tests — prevents conftest module-name collisions like a bundled # skill's .aipass/.../tests/conftest.py clashing with a branch's tests/conftest.py. norecursedirs = ["templates", "*.egg-info", ".*", "__pycache__", "my-project"] [tool.coverage.run] source = ["src/aipass"] omit = ["*/tests/*", "*/templates/*"] [tool.coverage.report] show_missing = true exclude_lines = [ "pragma: no cover", "if __name__ == .__main__.", "if TYPE_CHECKING:", ] [tool.ruff] line-length = 120 [tool.ruff.lint] ignore = ["E402"] [tool.ruff.lint.per-file-ignores] "**/__init__.py" = ["F401"]