6.1 KiB
6.1 KiB
Milestone: Platform Runtime 1
Фиксирует текущее состояние plugin runtime в Milestone 1.
Что уже работает
- Plugin Discovery — сканирование директорий, чтение plugin.json, валидация манифеста.
- Core Capabilities — 5 capabilities регистрируются в
main.goДО plugin discovery. - Plugin Lifecycle — полный цикл: discovered → loaded / degraded / missing-required-capability / failed.
- Dev Install Flow —
./scripts/build.sh+./scripts/install-dev-plugins.sh. - Smoke Platform —
./scripts/smoke-platform.shпроверяет discovery, capabilities, lifecycle без GUI. - Wails v2 + Svelte 4 — core запускается, Plugin Manager UI работает.
- platform-test plugin — собирается, устанавливается, проходит lifecycle, регистрирует contributions.
Репозитории
| Репозиторий | За что отвечает |
|---|---|
verstak-desktop |
Core platform: plugin runtime, capability/contribution/permission registries, event bus, Wails shell, Plugin Manager UI |
verstak-official-plugins |
Монорепо официальных плагинов (platform-test и будущие) |
verstak-docs |
Документация платформы (этот репозиторий) |
verstak-sdk |
Manifest schema + TypeScript SDK |
verstak-sync-server |
Сервер синхронизации |
verstak-browser-extension |
Расширение Firefox |
Core Capabilities (зарегистрированы)
Следующие capabilities регистрируются в main.go до plugin discovery, чтобы плагины могли разрешить requires при загрузке:
| Capability | Описание |
|---|---|
verstak/core/plugin-manager/v1 |
Управление плагинами: discovery, enable/disable, reload |
verstak/core/capability-registry/v1 |
Реестр возможностей: регистрация, запрос, проверка зависимостей |
verstak/core/contribution-registry/v1 |
Реестр контрибуций: views, commands, sidebar items, actions и т.д. |
verstak/core/permissions/v1 |
Реестр разрешений: проверка dangerous, запрос пользователю |
verstak/core/events/v1 |
In-process event bus: publish/subscribe |
Capabilities НЕ зарегистрированы (намеренно)
| Capability | Почему отсутствует |
|---|---|
verstak/core/vault/v1 |
Реализация vault api (internal/core/vault/api.go) ещё не создана |
verstak/core/sync/v1 |
Реализация sync boundary (internal/core/sync/boundary.go) ещё не создана |
Плагины, объявляющие эти capabilities в optionalRequires, переходят в статус degraded, но продолжают работать. Плагины с requires получат missing-required-capability.
DEGRADED: что означает
Плагин получает статус degraded, когда:
- Все
requirescapabilities разрешены (есть в registry). - Хотя бы одна из
optionalRequirescapabilities отсутствует.
В этом состоянии:
- Плагин загружается и регистрирует свои
providescapabilities. - Contributions (views, commands, sidebar items) попадают в registry.
- Plugin Manager UI показывает статус
degradedс указанием отсутствующих optional capabilities. - UI-функции, зависящие от отсутствующих capabilities, должны скрываться или gracefully degrade.
Команды для полной проверки
# 1. Собрать официальные плагины (соберёт frontend, backend, упакует dist/)
cd ~/git/verstak2/verstak-official-plugins
./scripts/build.sh
# 2. Установить platform-test как dev plugin в verstak-desktop
cd ~/git/verstak2/verstak-desktop
./scripts/install-dev-plugins.sh
# 3. Запустить smoke-проверку (headless, без GUI)
./scripts/smoke-platform.sh
# 4. Запустить приложение (откроет Wails GUI)
go run -mod=mod .
Проверка через Plugin Manager UI
- Запустить приложение:
go run -mod=mod . - Открыть Plugin Manager.
- Убедиться, что
verstak.platform-testотображается со статусомdegraded. - Убедиться, что указаны отсутствующие optional capabilities (
verstak/core/vault/v1,verstak/core/sync/v1). - Contributions (view, commands, sidebar item) должны быть видны.
Файлы реализации
| Файл | Назначение |
|---|---|
verstak-desktop/main.go |
Инициализация core, регистрация capabilities, plugin lifecycle, Wails run |
verstak-desktop/internal/api/app.go |
Wails-bound API, ReloadPlugins, GetPlugins, GetCapabilities |
verstak-desktop/internal/core/plugin/plugin.go |
Manifest struct, ValidateManifest, DiscoverPlugins, Status constants |
verstak-desktop/internal/core/capability/registry.go |
CapabilityRegistry: Register, CheckRequired, List |
verstak-desktop/internal/core/contribution/registry.go |
ContributionRegistry: views, commands, sidebar items и т.д. |
verstak-desktop/internal/core/permissions/registry.go |
PermissionsRegistry: defaults, IsDangerous |
verstak-desktop/internal/core/events/bus.go |
EventBus: Subscribe, Publish |
verstak-desktop/cmd/smoke-platform/main.go |
Headless smoke test |
verstak-official-plugins/scripts/build.sh |
Build + package всех плагинов |
verstak-desktop/scripts/install-dev-plugins.sh |
Копирование dist/ в ./plugins/ |
verstak-desktop/scripts/smoke-platform.sh |
Полная smoke-проверка |