| 2026-10-05 |
feat: MCP — тулы управления: создание и удаление серверов и сервисов
...
Пишущие тулы переиспользуют роут-функции (server_create возвращает ghm_-
ключ один раз; удаление каскадно чистит метрики/пробы). Запись для всех
валидных ключей — модель панели «любая сессия = админ»; rate-limit 20/10мин
in-memory, ошибки как данные {"error","detail"}. AGENT_INSTRUCTIONS: секция
«Управление (запись)», удаление — только по явной просьбе человека.
Eugene Sukhodolskiy
committed
22 hours ago
|
| 2026-10-04 |
feat: персональные MCP-ключи (канон handbook mcp.md)
...
- таблица mcp_tokens: sha256-хэш (unique) + хвост-хинт, снейпшот roles
владельца на момент выпуска; миграции users.system_role/users.blocked
- выдача только из cookie-сессии: GET/POST /me/mcp_tokens (plaintext
ровно один раз, ≥10 активных → 409), ревок вместо архива; админ-роуты
для всех ключей; rate-limit на выдачу (5 за 10 мин)
- гард /mcp — require_mcp: Bearer mcp_* | статический GHARD_ADMIN_TOKEN |
cookie; отозванный/заблокированный — тот же 401 (причина не раскрывается)
- вебхуки user.blocked/deleted/archived → users.blocked=1 + ревок ключей
владельца; разблокировка — при следующем успешном логине; SSO-логаут
ключи не трогает
Eugene Sukhodolskiy
committed
1 day ago
|
feat: MCP — инструкции агенту как prompt agent_guide + тулы сервисов и журнала
...
Инструкции ИИ-агенту раздаются и при initialize (instructions), и как
MCP-prompt agent_guide (паттерн reference-реализации gnexus-creds):
назначение, карта инструментов по типам вопросов, словарь статусов
(online/offline, up/degraded/down + mode не падение) и событий,
правила (read-only, id из overview, история 7 дней).
Новые тулов: services_overview (health-чеки: state/latency/self-report),
service_incidents (моменты недоступности), events_recent (журнал с
фильтром по severity); panel_overview дополнен строкой по сервисам.
Заодно починен мост /mcp: FastAPI валидировал голый ASGI-объект как
endpoint — считывал scope/receive/send query-параметрами и отвечал 422
на любой запрос; теперь реальный endpoint, вручную докручивающий
ASGI-диалог (stateless + json_response — ответ всегда один JSON).
Eugene Sukhodolskiy
committed
1 day ago
|
| 2026-09-11 |
feat: network storage section — panel probes mounted shares itself
...
Backend: shares + share_samples tables, background probe loop
(os.statvfs every GHARD_SHARE_INTERVAL, 7-day retention, ok=0 when
the mount is unreachable), CRUD + samples API, instant first sample
on create/update, shares in MCP panel_overview.
Frontend: /storage page — share cards with status badge/progress/
used-free-total, 24h fill chart, add/delete via modal + confirm.
ChartLine shows a visible point while there are fewer than 3 samples.
README: CIFS/NFS mount + fstab examples, GHARD_SHARE_INTERVAL row.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
24 days ago
|
| 2026-09-10 |
feat: MCP server at /mcp — AI agents read server state from the panel
...
Streamable HTTP, stateless, JSON responses (proxy-friendly). Tools:
panel_overview (fleet summary), server_details (full current state),
server_history (downsampled metrics history). ASGI endpoint registered
directly on FastAPI routes (Mount misses exact /mcp) and the MCP session
manager runs in the app lifespan. mcp SDK pinned >=1.10,<2. README:
tool table, claude mcp add example, token caveat.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
25 days ago
|