[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "hermes-hub" version = "0.1.1" description = "Multi-Agent & Multi-Provider Control Hub for Hermes Agent" readme = "README.md" license = { text = "MIT" } requires-python = ">=3.10" authors = [ { name = "Hermes Development Team" } ] keywords = [ "hermes", "router", "multi-provider", "antigravity", "codex", "opencode", "agentic-ai", "cockpit", "hub" ] 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", ] dependencies = [ "pyyaml>=6.0.1", "pydantic>=2.6.0", "requests>=2.31.0", "httpx>=0.27.0", "customtkinter>=6.0.0", "pillow>=12.3.0", "psutil>=5.9.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "anyio>=4.0.0", "ruff>=0.3.0", ] web = [ "fastapi>=0.110.0", "uvicorn>=0.28.0", ] [project.scripts] hermes-hub = "antigravity_provider.router.cli_commands:main" [tool.hatch.build.targets.wheel] packages = ["src/antigravity_provider"] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] python_files = ["test_*.py"] addopts = "-m 'not live and not network and not installer'" markers = [ "unit: Unit tests that run isolated in-memory", "integration: Component integration tests with isolated filesystem", "network: Tests that perform real network calls", "installer: Tests verifying installer and packaging", "live: End-to-end tests requiring real user credentials", ] [tool.ruff] line-length = 120 target-version = "py310" extend-exclude = ["legacy", ".venv"] [tool.ruff.lint] # Bug-catching rules only, so CI gives a real signal today. # E9 - syntax / IO errors F63 - comparison & assert mistakes # F7 - misplaced statements F82 - undefined names # F811 - redefinition of an in-use name # Style and modernization rules (UP, I, BLE, S, SIM, RUF) are intentionally # left off: the codebase currently has ~1200 such findings, and enabling them # wholesale would keep CI red instead of catching defects. Burn them down in # a dedicated pass, then extend this list. select = ["E9", "F63", "F7", "F82", "F811"]