hermes-hub/agents/done/2026-08-20-release-recovery-and-auto-update.md

44 lines
5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отчёт о выполнении: Hermes Hub — Release Recovery + GitHub Auto Update
**Дата**: 2026-08-20
**Проект**: Hermes Hub
**Репозиторий**: `https://github.com/ochenstarik-ui/hermes-hub` (Private)
**Релизная версия**: `0.1.1`
**Статус Release Gate**: **PASS (6/6 проверок пройдено)**
---
## 1. Выполненные задачи и статус блокеров (P0)
1. **P0-1 (customtkinter / Pillow)**: `installer/HermesHubSetup.py` проверяет venv Hermes Agent, устанавливает недостающие GUI-зависимости и верифицирует импорты до завершения установки.
2. **P0-2 (ProfileAuthManager.get_profile_dir)**: Унифицирована сигнатура метода `get_profile_dir`, поддерживающая как 1, так и 2 аргумента, с делегированием в `paths.py`.
3. **P0-3 (Wizard json import)**: В `add_account_wizard.py` добавлен импорт `json`, процесс сохранения API-ключей полностью покрыт тестами.
4. **P0-4 (AutoAssigner.auto_assign_all)**: Реализован метод `auto_assign_all()`, автоматически распределяющий авторизованные профили по ключевым ролям команды.
5. **P0-5 (Antigravity failover)**: Исправлен `_error_completion` в `agy_subprocess.py` и `AntigravityAdapter`. При ошибке квоты (429 / resource exhausted) генерируется типизированный `QuotaExceededError`, RouterEngine фиксирует сбой квоты и перенаправляет запрос на резервный профиль (failover).
6. **P0-6 (OAuth status unification)**: Статусы унифицированы (`pending`, `completed`, `failed`, `cancelled`, `timeout`), визард мгновенно прерывает ожидание при ошибке.
7. **P0-7 (assign_role button handler)**: Добавлен диалог назначения ролей в `hermes_hub_app.py` и метод `AutoAssigner.assign_profile_to_role()`.
8. **P0-8 (Wizard role application)**: Выбранная на шаге 4 визарда роль сохраняется в конфигурацию роутера.
9. **P0-9 (Real API key validation)**: Заглушка «успешно проверено» удалена; реализована реальная проверка ключей для OpenAI Codex и OpenCode Go с обнаружением моделей.
---
## 2. Архитектура, Безопасность и Автообновления (P1, P2, P3)
- **Версия 0.1.1**: Единый источник `src/antigravity_provider/version.py`, синхронизированный с `pyproject.toml`, `compatibility.json`, About view и CI/CD.
- **Изоляция тестов**: `tests/conftest.py` изолирует `HERMES_HOME` во временной директории, исключая перезапись файлов пользователя.
- **Офлайн маркеры pytest**: По умолчанию `pytest` запускается строго офлайн (`-m 'not live and not network and not installer'`).
- **Централизованные пути**: `src/antigravity_provider/paths.py` удалил все абсолютные пути разработчика (`E:\Agent projects`, `C:\Users\trush`).
- **Атомарная блокировка**: `HealthTracker` использует временные файлы и атомарную замену `os.replace` для `router_state.json`.
- **Санитизация логов**: `sanitizer.py` автоматически маскирует Bearer токены, API ключи `sk-...` и OAuth данные перед записью в журнал.
- **Single Instance & Диагностика**: Мьютекс `Global\HermesHubSingleInstanceMutex` предотвращает повторные запуски и активирует открытое окно; `startup.log` фиксирует процесс запуска до открытия GUI.
- **Встроенный Auto-Updater**: Модуль `UpdateManager` реализует скачивание обновлений в staging, криптографическую проверку SHA-256, проверку синтаксиса и автоматический откат (rollback) при обнаружении ошибок.
- **CI/CD Pipeline**: Настроены GitHub Actions (`.github/workflows/ci.yml`, `.github/workflows/release.yml`) и автоматизированный скрипт `scripts/release_gate.py`.
---
## 3. Результаты тестов
- `tests/test_p0_release_gate.py`: **9/9 PASSED**
- `tests/test_updater.py`: **5/5 PASSED**
- Полный набор тестов (`pytest`): **47/47 PASSED**
- `scripts/release_gate.py`: **[RELEASE GATE: PASSED] 6/6 CHECKS PASSED**