Technical Design: HSM Meta-Orchestration Architecture
Этот документ описывает внутреннее устройство Hyper Stack Manager (hsm) и взаимодействие его ключевых компонентов.
1. Концептуальная схема
2. Ключевые компоненты
2.1. HSMCore (Facade)
Центральный оркестратор, реализующий паттерн Facade. Он не содержит бизнес-логики, а делегирует её специализированным менеджерам. Это обеспечивает модульность и упрощает тестирование.
2.2. Sync Engine & Implication Merging
"Мозг" системы. Отвечает за:
- Dependency Resolution: Сбор всех необходимых компонентов из манифеста и реестра.
- Implication Merging: Уникальный механизм слияния параметров. Если несколько пакетов требуют один и тот же контейнер, Sync Engine объединяет их требования (например, список баз данных для одного Postgres) в единую конфигурацию.
2.3. Registry Manager
Инкапсулирует работу с глобальным реестром (hsm-registry/).
- Packages/Containers/Groups: CRUD операции и поиск.
- Isolation: Поддерживает
HSM_REGISTRY_PATHдля работы с альтернативными или тестовыми реестрами.
2.4. Validator
Реализует логику hsm check. Выполняет dry-run проверку целостности проекта, наличия компонентов в реестре и отсутствия конфликтов в implies.
2.5. Adapter Layer (Backend Agnostic)
Адаптеры — это "рабочие лошадки", которые знают специфику конкретных инструментов.
- UvAdapter:
- Транслирует
hsm.yaml->pyproject.toml. - Управляет секцией
[project.dependencies]. - Вызывает
uv sync.
- Транслирует
- DockerAdapter:
- Транслирует
hsm.yaml->docker-compose.hpm.yml. - Управляет переключением
imagevsbuild. - Инжектирует
volumesдля режимаdev.
- Транслирует
3. Процесс синхронизации (Reconciliation Loop)
- Load: Чтение
hsm.yamlи локального состояния. - Resolve: Запрос к Реестру для получения полных метаданных выбранных компонентов.
- Plan: Формирование "желаемого состояния" для каждого адаптера.
- Execute:
- Адаптеры обновляют файлы (
pyproject.toml,docker-compose.hpm.yml). - Запускаются внешние команды (
uv sync).
- Адаптеры обновляют файлы (
- Finalize: Если всё успешно — сохранение обновленного
uv.lockи завершение транзакции.
4. Расширяемость
Архитектура позволяет легко добавлять новые адаптеры (например, PixiAdapter или PipAdapter), реализуя базовый интерфейс BaseAdapter. Это делает HSM универсальным инструментом, не зависящим от моды на конкретные пакетные менеджеры.