No description
Find a file
ochenstarik-ui 7136ab2878 fix(security): граница workspace держится одинаково на Windows и Linux
Оба красных Windows-джоба CI падали по причинам, воспроизведённым локально.

1. Инвариант A37 не держался на Windows. "rm -rf $HOME/.hermes" проходил
   мимо защиты: переменной HOME в окружении Windows нет, expandvars оставлял
   "$HOME" как есть, путь переставал быть абсолютным, склеивался с каталогом
   проекта и оказывался "внутри разрешённого корня". Зеркальная дыра на
   Linux: "%USERPROFILE%\.hermes" и "C:\Windows" проходили так же.

   Разбор пути сведён в один конвейер: классификация диалекта shell по самой
   команде (а не по системе-хозяину) -> раскрытие распознанных переменных, с
   разрешением HOME/USERPROFILE в домашний каталог даже когда их нет в
   окружении -> нормализация разделителей -> канонизация -> сравнение с
   защищёнными корнями. Каждый несостоявшийся шаг закрывает проход:
   непроверяемый путь не считается разрешённым. Через тот же конвейер
   пропущены validate_path, is_forbidden_path и is_inside_allowed_root.

2. UnicodeEncodeError ронял verify_multi_provider_router.py на cp1252-консоли
   Windows-раннера — падал вывод, не логика. Общий помощник
   console_encoding.force_utf8_output ставит UTF-8 на потоки и оставляет
   запасной путь, если перекодировать поток нельзя. Той же реализацией
   заменён самодельный блок в cli_commands.

Проверено: скрипт проходит 10/10 под PYTHONIOENCODING=cp1252 и ascii.
Новые тесты воспроизводят окружение обеих систем на любой из них и падают
на прежнем guard ровно на дефекте из CI (6 failed), проходят на новом.

Тесты: 739 -> 755 passed, 2 skipped, 4 deselected. ruff check . чисто.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 19:01:30 +07:00
.agents/skills/frontend-design feat(skills): A49 subagents layout, skills tab, SkillDoctor, and Obsidian memory integration 2026-08-31 18:19:01 +07:00
.github/workflows fix(ci): stop hanging hermetic tests and unblock clean/headless runners 2026-08-27 12:03:37 +00:00
agents docs(agents): вернуть в репозиторий постановки A42-A56 и отчёт A30 2026-09-03 18:16:35 +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
benchmarks feat(a56): context compression engine with 100% fact retention, configurable compressor profile, and AI-Memory tracking 2026-09-01 01:27:38 +07:00
config fix(antigravity): вход завершался успешно, а agy требовал войти снова 2026-09-01 10:37:27 +07:00
docs docs(research): решение и план слияния Hermes Hub → KAgent 2026-09-02 23:29:33 +07:00
installer fix(antigravity): вход через терминал не регистрировал аккаунт 2026-09-02 02:05:08 +07:00
launcher fix(antigravity): вход через терминал не регистрировал аккаунт 2026-09-02 02:05:08 +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(security): граница workspace держится одинаково на Windows и Linux 2026-09-03 19:01:30 +07:00
src/antigravity_provider fix(security): граница workspace держится одинаково на Windows и Linux 2026-09-03 19:01:30 +07:00
tests fix(security): граница workspace держится одинаково на Windows и Linux 2026-09-03 19:01:30 +07:00
.gitattributes fix(git): shell-скрипты уезжали в индекс с CRLF и ломались на Linux 2026-08-25 09:12:01 +07:00
.gitignore feat(updater): in-app updates based on main repo release commits (A27 Pass 1) 2026-08-25 17:54:51 +07:00
a15_web_api_and_linux_port_report.md feat(A15): веб-API, общий ActionExecutor и порт путей на Linux 2026-08-23 19:45:13 +07:00
AGENTS.md docs(agents): корневой AGENTS.md — мост к канонической памяти AI-Memory 2026-08-31 14:31:03 +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 fix(antigravity): вход завершался успешно, а agy требовал войти снова 2026-09-01 10:37:27 +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(antigravity): нативный вход через agy в терминале (A57) 2026-09-01 14:25: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.