1. P0-1: Восстановлены все веб-обработчики в app.js (openAddAccountWizard, handleNodeAccountChange, handleNodeModelChange, handleRefreshProviderModels, checkUpdates), связаны с потоками startDeviceAuth и startRedirectAuth, выбор слота обязателен и понятен пользователю. 2. P0-2: Добавлены адаптеры OpenRouter и NVIDIA NIM с поддержкой динамического base_url, множественных аккаунтов без ограничений, GET /models и честным отображением квот/«Н/Д». 3. P0-3: В мастере подключения локального провайдера реализована кнопка автопоиска (discover_local_models), отображение серверов, ошибок портов и автозаполнение. 4. P0-4: Полностью удален устаревший десктопный интерфейс CustomTkinter (router/ui/** 20 файлов, hermes_hub_app.py), зависимости customtkinter и pillow убраны из pyproject.toml и инсталляторов, оставлен единый ярлык «Hermes Hub». 5. 418 passed, 1 skipped, 4 deselected, ruff чисто.
89 lines
2.4 KiB
TOML
89 lines
2.4 KiB
TOML
[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",
|
|
"psutil>=5.9.0",
|
|
"fastapi>=0.110.0",
|
|
"uvicorn>=0.28.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=0.23.0",
|
|
"pytest-timeout>=2.3.0",
|
|
"anyio>=4.0.0",
|
|
"ruff>=0.3.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'"
|
|
timeout = 30
|
|
timeout_method = "thread"
|
|
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"]
|