No description
Find a file
Hermes Team 4c2594bcf6 fix(web): «только подключённые» пропускало холодный резерв и пустые слоты
Проверка A26 исполнением. Признак подключённости был записан как

    p.authenticated === true || (p.health_state && p.health_state !== 'not_configured')

и содержит два дефекта. Поля authenticated в ProfileViewModel нет вовсе —
первая половина условия мертва. Вторая пропускает всё, кроме not_configured,
то есть холодный резерв (health_state "disabled") и непроверенные пустые
слоты.

Измерено на живом снапшоте: из 24 профилей фильтр пропускал 5, при том что
по-настоящему подключён 1. При нуле настоящих аккаунтов страница показывала
три карточки «Холодный резерв» вместо пустого состояния — ровно тот мусор,
который владелец просил убрать.

Тот же предикат используется для выбора аккаунта на «Обзоре», поэтому там
предлагалось назначать роли на пустые слоты: мышление слотами, ради отмены
которого задание и делалось.

Authoritative признак — auth_state: у подключённого AUTHENTICATED, у пустого
слота и у холодного резерва NOT_CONFIGURED. AUTH_REQUIRED и AUTH_EXPIRED
означают подключённый аккаунт, которому нужен повторный вход, — показываем.

Заодно в выборе аккаунта показывается почта, а не имя профиля: жалоба из A24
про «Кодер 1 — назначенный аккаунт Кодер 2» иначе возвращалась.

Проверено в браузере: было 5 «подключённых» из 24, стало 2 — оба с
auth_state AUTHENTICATED; холодный резерв из выбора на «Обзоре» исчез.
442 passed, ruff чисто.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 17:17:29 +07:00
.github/workflows test(ci): add import invariants, repair DeepSeek adapter, guard headless runs 2026-08-20 22:13:54 +07:00
agents docs(agents): задание A26 — аккаунты без слотов, распределение и пороги квот 2026-08-25 14:40:37 +07:00
artifacts feat(web): A21 — паритет веб-интерфейса: аналитика, состояние, события, настройки 2026-08-23 22:59:02 +07:00
assets fix(ui): align dashboard and navigation with approved mockup 2026-08-21 19:32:53 +07:00
config fix(deployment): implement self-healing bootstrap, Claude & Grok profiles, non-interactive test mode, mirror installer, and comprehensive doctor CLI 2026-08-22 21:22:21 +07:00
docs feat(web): вход Antigravity и Claude из браузера на любой машине 2026-08-25 09:52:53 +07:00
installer fix(installer): установщик Linux собирался с CRLF и падал на первой строке 2026-08-25 10:37:05 +07:00
launcher fix(launcher): сообщение при запуске не совпадало с настройками; смена токена 2026-08-25 10:47:29 +07:00
legacy fix(wizard): restore Antigravity OAuth by matching the 3-tuple session API 2026-08-21 08:00:42 +07:00
scripts fix(launcher): сообщение при запуске не совпадало с настройками; смена токена 2026-08-25 10:47:29 +07:00
src/antigravity_provider fix(web): «только подключённые» пропускало холодный резерв и пустые слоты 2026-08-25 17:17:29 +07:00
tests feat(router): accounts without slots, overview role assignment and quota thresholds (A26) 2026-08-25 16:36:59 +07:00
.gitattributes fix(git): shell-скрипты уезжали в индекс с CRLF и ломались на Linux 2026-08-25 09:12:01 +07:00
.gitignore feat: initialize standalone Hermes Hub 2026-08-20 10:53:49 +07:00
a15_web_api_and_linux_port_report.md feat(A15): веб-API, общий ActionExecutor и порт путей на Linux 2026-08-23 19:45:13 +07:00
CHANGELOG.md feat: initialize standalone Hermes Hub 2026-08-20 00:17:11 +07:00
COCKPIT_TOOLS_ARCHITECTURE_COMPARISON.md docs(tasks): A9 и B8 по итогам живого прогона владельца 2026-08-23 01:20:23 +07:00
CODEX_CONTRACT_V11_REPORT.md feat(ui): wire state contract v1.1 fields 2026-08-21 09:04:53 +07:00
CODEX_MOCKUP_REDESIGN_REPORT.md fix(ui): align dashboard and navigation with approved mockup 2026-08-21 19:32:53 +07:00
CODEX_UI_REDESIGN_REPORT.md feat(ui): complete redesign phases 2 through 6 2026-08-21 08:41:50 +07:00
LICENSE feat: initialize standalone Hermes Hub 2026-08-20 00:17:11 +07:00
pyproject.toml feat(A15): веб-API, общий ActionExecutor и порт путей на Linux 2026-08-23 19:45:13 +07:00
README.md feat(hub): product stabilization, native windows ux v3, provider icons, and architecture roadmap 2026-08-20 11:01:52 +07:00
uv.lock feat: multi-provider accounts, tariffs, quota buckets, Claude & Grok integration 2026-08-20 21:02:13 +07:00

Hermes Hub

Multi-Agent & Multi-Provider Control Hub for Hermes Agent

Hermes Hub — централизованная панель управления и отказоустойчивый маршрутизатор запросов (Multi-Provider Router) для Hermes Agent. Объединяет учетные записи различных провайдеров (Google Antigravity, OpenAI Codex, OpenCode Go, DeepSeek) в единую согласованную команду с автоматическим переключением при исчерпании квот (failover) и поддержкой сессионной привязки (Session Affinity).


🌟 Ключевые возможности

  • 🖥️ Нативное приложение Windows (CustomTkinter & Brandbook):
    • Фирменная дизайн-система Obsidian Forest (#0F1510, #1A2A1F, #2F4A36, #F7F1E3, #CDAA64).
    • Мгновенное переключение вкладок (P95 < 200 ms, в среднем ~30 ms).
    • Полноценная интеграция с панелью задач Windows через AppUserModelID (HermesHub.Desktop) и multi-resolution .ico.
  • 👥 Команда агентов (Team View):
    • 6 логических ролей («Главный оркестратор», «Кодер», «Ревьюер», «Исследователь», «Тестировщик», «Агент общего назначения»).
    • Реальные логотипы провайдеров с динамическим кэшированием.
    • Четкое разделение флагов MAIN Hermes Account и Primary Orchestrator.
  • 🔀 Многоуровневый Failover & Маршрутизация:
    • Визуальные пайплайны маршрутизации со статусами узлов в реальном времени.
    • Автоматический failover цепочки Codex -> Antigravity -> OpenCode Go при квотных ограничениях (HTTP 429 / Quota Exceeded).
  • 🛡️ Строгий Status Resolver & Unified Health:
    • Неподключенные слоты отображаются как NOT_CONFIGURED («Аккаунт не добавлен») и никогда не показывают ложных QUOTA_EXHAUSTED или HEALTHY.
    • Автоматическая очистка устаревших квотных записей при удалении credentials.
  • 💼 Cockpit Tools Accounts View:
    • Верхний тулбар: Поиск, фильтры (Подключенные, Требуется вход, Квота), сортировка.
    • Компактный блок свободных слотов без визуального шума.
    • 4-шаговый мастер добавления аккаунтов (Wizard).
  • ⚙️ Архитектурные модули (Roadmap P0, P1, P2):
    • LifecycleSupervisor: Реестр процессов с контролем владения по UUID и PID, исключающий использование killall / taskkill.
    • PolicyEnforcer: WebPolicy (ограничение исходящих доменов, блокировка метаданных) и ToolPolicy (валидация команд).
    • UnifiedSkillRegistry: Межпровайдерный реестр навыков.
    • CapabilityMatrix: Ранжирование моделей по контексту, рассуждениям и инструментам.
    • ScheduledTaskSafetyCoordinator: Защита периодических задач (overlap_policy: skip).
  • 📦 Windows Installer (HermesHubSetup.exe):
    • Обязательная pre-flight проверка наличия установленного Hermes Agent.
    • Автоматическое создание ярлыков на Рабочем столе и в Главном меню с AppUserModelID.

🚀 Быстрый старт

Запуск из исходного кода

# Установка зависимостей
uv sync

# Запуск приложения Hermes Hub
uv run python -m antigravity_provider.router.hermes_hub_app

Запуск тестов и верификации

# Полный набор автоматических тестов (35 тестов)
uv run pytest -v tests/

# Комплексная проверка роутера (10 проверок)
python scripts/verify_multi_provider_router.py

🏗️ Структура проекта

Каталог Назначение
src/antigravity_provider/router/ Ядро Multi-Provider Router и Native GUI
src/antigravity_provider/router/ui/ Дизайн-система, компоненты и экраны (Views)
src/antigravity_provider/router/supervisor/ Lifecycle Supervisor и политики безопасности (WebPolicy/ToolPolicy)
src/antigravity_provider/router/skills/ Унифицированный реестр навыков
src/antigravity_provider/router/capability/ Матрица возможностей моделей и DeepSeek адаптер
src/antigravity_provider/router/scheduler/ Координатор безопасности запланированных задач
assets/ Фирменные логотипы, иконки провайдеров и .ico
installer/ Инсталлятор HermesHubSetup.py с проверкой Hermes Agent
tests/ Автоматизированные тесты pytest
docs/ Архитектура, гайдлайны бренда, безопасность и производительность

📄 Лицензия

MIT License. Hermes Hub is an open-source component of the Hermes Agent ecosystem.