refactor(tools): генерировать инвентарь SERVER_INSTRUCTIONS и tool_catalog из реестра + guard на имена тулов в ai-chat.prompt.ts #448

Open
opened 2026-07-10 06:51:51 +03:00 by agent_vscode · 0 comments
Collaborator

Зачем

Инвентарь тулов сегодня существует в четырёх прозаических копиях, поддерживаемых руками:

  1. SERVER_INSTRUCTIONS (packages/mcp/src/index.ts:~52) — охраняется только regex-тестом (server-instructions.test.mjs скрейпит имена и проверяет вхождение слова, с ручным EXCEPTIONS-сетом);
  2. <tool_catalog> in-app агента — собирается из catalogLine спеков + INLINE_TOOL_TIERS;
  3. промпт in-app агента ai-chat.prompt.ts:94-102 — перечисляет getPage, editPageText, patchNode, insertNode, deleteNode вообще без guard'а (переименование тула оставит агенту устаревшие инструкции, ни один тест не упадёт);
  4. README/README.ru тул-каталоги.

При этом роадмап #416 планирует четыре последовательных ручных правки этого текста (#411 −import_page_markdown, #412 camelCase-переименование, #413 новые дефолты, #415 wording-sweep).

Механика

  1. Разделить SERVER_INSTRUCTIONS на две части: генерируемый инвентарь (из mcpName + catalogLine/описаний реестра, группировка по семействам) и рукописную routing-прозу (intent-подсказки «когда что использовать» — она осмысленно ручная). Regex-тест удалить; инвентарь не может разъехаться по построению.
  2. <tool_catalog> — уже собирается из спеков; убедиться, что после #445 не остаётся ручных списков (INLINE_TOOL_TIERS сжимается до реально inline-специфичных).
  3. Имена тулов в ai-chat.prompt.ts — либо подставлять из реестра (шаблон-константы), либо минимум guard-тест «каждое упомянутое имя существует в реестре».
  4. README-каталоги: генерация опциональна (docs-скрипт), в скоуп обязательной части не входит — но добавить в чек-лист релиза #412.

Порядок

До breaking-окна #412 (и в идеале до #411): иначе четыре ишью роадмапа перепишут одни и те же строки руками, а потом всё равно придётся генерировать.

Критерии приёмки

  • Добавление/переименование спека меняет инвентарь SERVER_INSTRUCTIONS и <tool_catalog> без правки прозы.
  • server-instructions.test.mjs (regex-скрейпер) удалён.
  • Несуществующее имя тула в ai-chat.prompt.ts → красный тест.

Связано: #416 (роадмап), #445 (реестр как единственный источник), #411/#412/#413/#415 (потребители).

## Зачем Инвентарь тулов сегодня существует в **четырёх прозаических копиях**, поддерживаемых руками: 1. `SERVER_INSTRUCTIONS` (`packages/mcp/src/index.ts:~52`) — охраняется только regex-тестом (`server-instructions.test.mjs` скрейпит имена и проверяет вхождение слова, с ручным `EXCEPTIONS`-сетом); 2. `<tool_catalog>` in-app агента — собирается из `catalogLine` спеков + `INLINE_TOOL_TIERS`; 3. промпт in-app агента `ai-chat.prompt.ts:94-102` — перечисляет `getPage, editPageText, patchNode, insertNode, deleteNode` **вообще без guard'а** (переименование тула оставит агенту устаревшие инструкции, ни один тест не упадёт); 4. README/README.ru тул-каталоги. При этом роадмап #416 планирует **четыре последовательных ручных правки** этого текста (#411 −import_page_markdown, #412 camelCase-переименование, #413 новые дефолты, #415 wording-sweep). ## Механика 1. Разделить `SERVER_INSTRUCTIONS` на две части: **генерируемый инвентарь** (из `mcpName` + `catalogLine`/описаний реестра, группировка по семействам) и **рукописную routing-прозу** (intent-подсказки «когда что использовать» — она осмысленно ручная). Regex-тест удалить; инвентарь не может разъехаться по построению. 2. `<tool_catalog>` — уже собирается из спеков; убедиться, что после #445 не остаётся ручных списков (`INLINE_TOOL_TIERS` сжимается до реально inline-специфичных). 3. Имена тулов в `ai-chat.prompt.ts` — либо подставлять из реестра (шаблон-константы), либо минимум guard-тест «каждое упомянутое имя существует в реестре». 4. README-каталоги: генерация опциональна (docs-скрипт), в скоуп обязательной части не входит — но добавить в чек-лист релиза #412. ## Порядок **До breaking-окна #412** (и в идеале до #411): иначе четыре ишью роадмапа перепишут одни и те же строки руками, а потом всё равно придётся генерировать. ## Критерии приёмки - Добавление/переименование спека меняет инвентарь `SERVER_INSTRUCTIONS` и `<tool_catalog>` **без правки прозы**. - `server-instructions.test.mjs` (regex-скрейпер) удалён. - Несуществующее имя тула в `ai-chat.prompt.ts` → красный тест. Связано: #416 (роадмап), #445 (реестр как единственный источник), #411/#412/#413/#415 (потребители).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#448