106 lines
7.7 KiB
Markdown
106 lines
7.7 KiB
Markdown
# Отчет о выделении Hermes Hub в самостоятельный проект
|
||
|
||
## 1. Архитектура самостоятельного репозитория
|
||
|
||
Проект **Hermes Hub** успешно отделен в независимый репозиторий:
|
||
- **Каталог репозитория:** [`E:\Agent projects\hermes-hub`](file:///E:/Agent%20projects/hermes-hub)
|
||
- **Версия релиза:** `0.1.0` (Semantic Versioning)
|
||
- **Статус Git:** Репозиторий инициализирован, сделан начальный коммит `feat: initialize standalone Hermes Hub` (54 файла, `working tree clean`).
|
||
|
||
---
|
||
|
||
## 2. Структура проекта `hermes-hub`
|
||
|
||
```
|
||
hermes-hub/
|
||
+-- config/
|
||
| +-- compatibility.json # Манифест совместимости версий Hermes (0.20.0 - 0.20.4)
|
||
| \-- router_profiles.example.yaml # Шаблон конфигурации 16 профилей без секретов
|
||
+-- dist/
|
||
| +-- HermesHubSetup.exe # Полноценный Windows Installer (GUI + Silent Mode)
|
||
| \-- checksums.txt # SHA256 контрольные суммы дистрибутива
|
||
+-- docs/
|
||
| +-- ARCHITECTURE.md # Архитектура Multi-Provider Router и UI
|
||
| +-- INSTALLATION.md # Руководство по установке и unattended режимам
|
||
| \-- SECURITY_MODEL.md # Модель безопасности и изоляции учетных данных
|
||
+-- installer/
|
||
| +-- HermesHubSetup.cs # Исходный код C# инсталлятора
|
||
| \-- build_installer.ps1 # Скрипт сборки HermesHubSetup.exe
|
||
+-- launcher/
|
||
| +-- HermesHub.cs # Исходный код C# лаунчера (Edge App Mode)
|
||
| +-- HermesHub.exe # Скомпилированный лаунчер
|
||
| \-- build_launcher.ps1 # Скрипт сборки HermesHub.exe
|
||
+-- scripts/
|
||
| +-- install.ps1 # PowerShell установщик
|
||
| +-- update.ps1 # PowerShell скрипт обновления
|
||
| +-- uninstall.ps1 # PowerShell деинсталлятор (с защитой user data)
|
||
| +-- launch_hermes_hub.bat # Пакетный запуск
|
||
| +-- verify_multi_provider_router.py # Верификация Multi-Provider Router
|
||
| +-- verify_antigravity_provider.py # Верификация Antigravity backend
|
||
| \-- live_provision_and_validate.py # Скрипт E2E-валидации профилей
|
||
+-- src/antigravity_provider/ # Исходный код плагина и роутера
|
||
| +-- router/ # Роутер, адаптеры (Codex, Antigravity, OpenCode Go), GUI
|
||
+-- tests/
|
||
| +-- test_installer.py # Тесты инсталлятора и pre-flight проверок
|
||
| \-- test_multi_provider_router.py # Тесты роутера, квот, affinity и failover
|
||
+-- pyproject.toml # Метаданные пакета Python (0.1.0)
|
||
+-- README.md # Документация проекта
|
||
+-- CHANGELOG.md # История изменений
|
||
+-- LICENSE # MIT License
|
||
\-- .gitignore # Исключение секретов, токенов, runtime данных
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Windows Setup Installer (`HermesHubSetup.exe`)
|
||
|
||
Разработан и скомпилирован нативный установщик Windows:
|
||
1. **Pre-flight Checks**:
|
||
- Динамически находит Hermes Home (`%LOCALAPPDATA%\hermes`).
|
||
- Проверяет наличие `hermes.exe` и Python runtime (`hermes-agent\venv\Scripts\python.exe`).
|
||
- Сверяет версию Hermes (`0.20.4`) по `compatibility.json`.
|
||
- Если Hermes отсутствует: блокирует установку с понятным сообщением и ссылкой на документацию, не создавая пустых/фейковых каталогов.
|
||
2. **Тихий режим (Unattended Mode)**:
|
||
- Флаг `/silent` (или `/s`):
|
||
- Код `0`: Успешная установка.
|
||
- Код `10`: Hermes Agent не найден на машине.
|
||
- Код `11`: Несовместимая версия Hermes.
|
||
- Код `12`: Ошибка валидации развернутых файлов.
|
||
3. **Разделение Source и Runtime**:
|
||
- Приложение: `%LOCALAPPDATA%\Programs\HermesHub\`
|
||
- Интеграция плагина: `%LOCALAPPDATA%\hermes\plugins\antigravity-provider\`
|
||
- Пользовательские данные: `%LOCALAPPDATA%\hermes\`
|
||
4. **Обновление и удаление**:
|
||
- Обновление через `/repair` или `update.ps1` сохраняет все токены `auth.json`, ключи и `router_profiles.yaml`.
|
||
- Деинсталлятор `uninstall.ps1` / `HermesHubSetup.exe /uninstall` сохраняет пользовательские профили по умолчанию и очищает их только при флаге `/purgeuserdata`.
|
||
|
||
---
|
||
|
||
## 4. Результаты тестирования и Security Scan
|
||
|
||
1. **Security Scan:** Просканировано 53 файла репозитория — **0 утечек учетных данных, токенов или паролей**.
|
||
2. **Набор тестов Pytest (`uv run pytest -v`):**
|
||
- `test_setup_exe_exists`: **PASS**
|
||
- `test_compatibility_json`: **PASS**
|
||
- `test_silent_installer_execution_with_hermes`: **PASS** (код возврата `0`)
|
||
- `test_silent_installer_fails_without_hermes`: **PASS** (код возврата `10`)
|
||
- Все 13 тестов Router Engine, Health, Session Affinity, Failover: **PASS**
|
||
- **Итог:** `17 passed in 4.02s`.
|
||
3. **Верификация Multi-Provider Router:** `10/10 CHECKS PASSED`.
|
||
4. **Доказательство Runtime Import Path:**
|
||
- Модули импортируются из развернутого каталога `%LOCALAPPDATA%\hermes\plugins\antigravity-provider\src\` и автономного репозитория `E:\Agent projects\hermes-hub\src\`.
|
||
|
||
---
|
||
|
||
## 5. Ссылки на файлы и документацию
|
||
|
||
- 📦 **Новый репозиторий:** [`E:\Agent projects\hermes-hub`](file:///E:/Agent%20projects/hermes-hub)
|
||
- 🚀 **Windows Installer (.exe):** [`dist/HermesHubSetup.exe`](file:///E:/Agent%20projects/hermes-hub/dist/HermesHubSetup.exe)
|
||
- 📋 **Контрольные суммы:** [`dist/checksums.txt`](file:///E:/Agent%20projects/hermes-hub/dist/checksums.txt)
|
||
- 💻 **Исходный код инсталлятора:** [`installer/HermesHubSetup.cs`](file:///E:/Agent%20projects/hermes-hub/installer/HermesHubSetup.cs)
|
||
- 💻 **Исходный код лаунчера:** [`launcher/HermesHub.cs`](file:///E:/Agent%20projects/hermes-hub/launcher/HermesHub.cs)
|
||
- 📖 **README:** [`E:\Agent projects\hermes-hub\README.md`](file:///E:/Agent%20projects/hermes-hub/README.md)
|
||
- 🏗️ **Архитектура:** [`docs/ARCHITECTURE.md`](file:///E:/Agent%20projects/hermes-hub/docs/ARCHITECTURE.md)
|
||
- 🔐 **Модель безопасности:** [`docs/SECURITY_MODEL.md`](file:///E:/Agent%20projects/hermes-hub/docs/SECURITY_MODEL.md)
|
||
- 🛠️ **Инструкция по установке:** [`docs/INSTALLATION.md`](file:///E:/Agent%20projects/hermes-hub/docs/INSTALLATION.md)
|
||
- 📜 **Инструкция по восстановлению в backup-репозитории:** [`RESTORE.md`](file:///E:/Agent%20projects/hermes-config-backup/RESTORE.md)
|