Plugin platform
Pluggable feature modules added in 0.2 — пользователь включает только то, что нужно.
Архитектура#
Каждый плагин — пакет, поставляющий четыре слоя: collector (Go-код в daemon или скилл), storage (миграция + table'ы), server logic (REST/WS под /plugins/<slug>/...) и UI (страница под /plugins/<slug> + per-page widget'ы). Регистрация — in-tree + per-workspace feature flag через таблицу workspace_plugins. Out-of-process MCP-стиль плагины — план на 0.3.
Общие endpoints#
GET /plugins— список зарегистрированных плагинов с per-user состоянием enable/configPOST /plugins/{slug}/enable— включить (можно передать config override'ом)POST /plugins/{slug}/disable— выключить (config сохраняется для re-enable)GET /recommendations— централизованная лента рекомендаций от всех плагинов (severity / TTL / ack)POST /recommendations/{id}/ack— закрыть рекомендацию (idempotent)
Доступные плагины#
Recommendation engine#
Любой плагин эмиттит observation (структурированный факт) и recommendation (severity / title / body / action_hint / TTL). Дашборд агрегирует на /recommendations — отсортировано urgent → warning → info, по одному tap'у "принято к сведению".
Как написать свой плагин#
Реализуй plugins.Plugin interface (Slug, Title, Description, Routes, DefaultConfig) в новом пакете под apps/api/internal/plugins/<name>/, зарегистрируй в server.go, добавь миграцию для своей таблицы(ы). Для UI — пакет apps/web/app/(app)/plugins/<slug>/.
Существующие 4 плагина — живые примеры разной сложности: devexpulse самый простой (одна таблица, ~150 строк), quality самый продвинутый (substring-attribution в SQL + manual dispute).