Merge pull request 'Архив OpenSpec: hub-modules (#87)' (#89) from chore/87-archive-hub-modules into main
This commit is contained in:
commit
f7add9b583
@ -6,16 +6,26 @@ MCP-сервер хаба (`jira-hub mcp`, stdio) для Claude: инструм
|
||||
## Requirements
|
||||
|
||||
### Requirement: Сервер и регистрация
|
||||
`jira-hub mcp [--project <метка>]` SHALL запускать MCP-сервер по stdio (пакет `mcp`), ходящий в HTTP API хаба клиентским
|
||||
токеном из настроек. Общая регистрация — в user scope Claude Code как `jira-hub` (`uv run --project <путь> jira-hub mcp`),
|
||||
без проекта. Репозиторий проекта SHALL регистрировать `jira-hub` в своём `.mcp.json` (project scope) с
|
||||
`--project <метка>`; эта запись перекрывает общую. Если хаб недоступен, каждый инструмент SHALL вернуть текст «хаб не
|
||||
запущен: jira-hub serve», а не исключение.
|
||||
`jira-hub mcp [<модуль>] [--project <метка>]` SHALL запускать MCP-сервер модуля хаба по stdio (пакет `mcp`), ходящий в
|
||||
HTTP API хаба клиентским токеном из настроек. Модуль по умолчанию — `jira`: `jira-hub mcp [--project <метка>]` и
|
||||
`jira-hub mcp jira [--project <метка>]` SHALL поднимать один и тот же сервер с именем `jira-hub` и одним и тем же набором
|
||||
инструментов. Неизвестный модуль — код выхода 2 и список модулей в stderr, сервер не запускается. Общая регистрация — в
|
||||
user scope Claude Code как `jira-hub` (`uv run --project <путь> jira-hub mcp`), без проекта. Репозиторий проекта SHALL
|
||||
регистрировать `jira-hub` в своём `.mcp.json` (project scope) с `--project <метка>`; эта запись перекрывает общую. Если хаб
|
||||
недоступен, каждый инструмент SHALL вернуть текст «хаб не запущен: jira-hub serve», а не исключение.
|
||||
|
||||
#### Scenario: Хаб выключен
|
||||
- **WHEN** вызван `issues` при остановленном хабе
|
||||
- **THEN** ответ инструмента — одна строка с подсказкой, сервер MCP продолжает работать
|
||||
|
||||
#### Scenario: Модуль по умолчанию
|
||||
- **WHEN** запущены `jira-hub mcp --project AWPCA` и `jira-hub mcp jira --project AWPCA`
|
||||
- **THEN** оба сервера называются `jira-hub`, список инструментов и их описания совпадают, сессия привязана к `AWPCA`
|
||||
|
||||
#### Scenario: Неизвестный модуль
|
||||
- **WHEN** запущен `jira-hub mcp nope`
|
||||
- **THEN** код выхода 2, в stderr — «неизвестный модуль nope» и список модулей (`jira`)
|
||||
|
||||
### Requirement: Инструменты
|
||||
| Инструмент | Параметры | Результат |
|
||||
|---|---|---|
|
||||
|
||||
28
openspec/specs/modules/spec.md
Normal file
28
openspec/specs/modules/spec.md
Normal file
@ -0,0 +1,28 @@
|
||||
# modules Specification
|
||||
|
||||
## Purpose
|
||||
Устройство хаба из ядра и подключаемых модулей (первый — `jira`): что принадлежит ядру, как модуль подключается описанием, проверка пересечений при старте и единая схема базы.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Ядро и модули хаба
|
||||
Хаб SHALL состоять из ядра и подключаемых модулей. Ядро SHALL владеть базой и миграциями, настройками хаба, проектами
|
||||
(метка, название), хранилищем файлов, реле общей папки, релизом агента, очередью пакетов команд, HTTP-сервером с
|
||||
авторизацией, раздачей веб-приложения и общим слоем MCP. Модуль SHALL подключаться к ядру описанием: таблицы, типы команд
|
||||
и их обработчики в очереди, маршруты HTTP, ключи настроек, фоновые работы, инструменты MCP, подкоманды CLI. Первый модуль —
|
||||
`jira` (зеркало задач, журнал изменений, вложения, команды Jira). Ядро MUST NOT импортировать модули, кроме списка
|
||||
подключённых модулей и истории миграций схемы.
|
||||
|
||||
При старте хаб SHALL проверять, что типы команд, ключи настроек и маршруты (метод и шаблон адреса) ядра и модулей не
|
||||
пересекаются; пересечение — ошибка старта с указанием конфликта.
|
||||
|
||||
Схема базы SHALL оставаться одной, с одной версией `setting.schema_version` на весь хаб; таблицы модуля входят в неё.
|
||||
|
||||
#### Scenario: Конфликт типов команд
|
||||
- **WHEN** два подключённых модуля объявляют тип команды `refresh`
|
||||
- **THEN** хаб не стартует, ошибка называет тип и оба модуля
|
||||
|
||||
#### Scenario: Поведение без изменений
|
||||
- **WHEN** хаб после перестройки стартует на базе v6 с агентом v14
|
||||
- **THEN** схема остаётся v6, копия базы не создаётся; адреса API, веба, ответы и инструменты MCP — прежние; агент берёт
|
||||
команды и отчитывается как раньше
|
||||
Loading…
x
Reference in New Issue
Block a user