server-monitor-manager/agents/hermes/notes/salvage-2026-08-18/hermes-desktop-attachments/desktop-attachments/a7-fix-node-build.md
Ochenstarik 23eb3f5233 chore(agents): разбор рабочих папок с диска на 2026-08-18
Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в
домашней папке, перенесены в agents/. Разложено по агентам там, где имя
файла позволяло определить автора; остальное — в _salvage-2026-08-18/
и разбирается вручную.

Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных
рабочих копий: она существовала только на диске.

Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не
попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 14:19:54 +07:00

3.9 KiB
Raw Permalink Blame History

Правила работы: прочитай C:\Users\Ochenstarik\kagent-tasks\hermes-work-protocol.md.

Ветка: wt/kagent-090-green-trunk, PR #3. Файлы: services/control-plane/package.json, services/control-plane/tsconfig.json, services/control-plane/src/auth.test.ts, новый services/control-plane/tsconfig.build.json.

Факт

PR #3 не смержен, main стоит на 3db581d, сборка ветки красная: https://github.com/ochenstarik-ui/kagent/actions/runs/31101831510

Jobs rust и python зелёные. Job node падает на шаге pnpm build с пятью ошибками TS2352 в services/control-plane/src/auth.test.ts — небезопасные приведения типов:

src/auth.test.ts(30,46): Conversion of type '{ status: ... }' to type 'FastifyReply<...>'
  may be a mistake because neither type sufficiently overlaps with the other.
src/auth.test.ts(31,13): Conversion of type 'undefined' to type '{ code: number; }' ...

Строки 30, 31, 37, 38, 72.

Почему это не поймали раньше

В services/control-plane/package.json нет скрипта typecheck. Корневой pnpm typecheck выполняет pnpm -r --if-present typecheck и молча пропускает пакет. В отчёте предыдущего исполнителя это прямо видно: «Scope: 3 of 4 workspace projects» — пропущен ровно тот пакет, который правили.

Ошибки вскрылись только на pnpm build, потому что build: "tsc" компилирует и тестовые файлы: в tsconfig.json нет исключения.

Что сделать

  1. Добавить в services/control-plane/package.json скрипт "typecheck": "tsc --noEmit". Это закрывает дыру, из-за которой пакет выпадал из проверки.

  2. Создать services/control-plane/tsconfig.build.json, наследующий tsconfig.json и исключающий **/*.test.ts; изменить build на tsc -p tsconfig.build.json. Тесты продолжают проверяться типами через typecheck, но не попадают в dist.

  3. Переписать auth.test.ts без приведений через as:

    • заглушка ответа должна записывать статус и тело, а проверка — читать записанное, а не приводить возвращаемое значение middleware к { code: number };
    • для аргументов middleware использовать минимальные типизированные заглушки, а не as Parameters<typeof authMiddleware>[N].

    Смысл проверок не менять: без заголовка 401, чужая схема 401, валидный токен прикрепляет принципала.

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

pnpm --filter @kagent/control-plane typecheck
pnpm --filter @kagent/control-plane test
pnpm typecheck
pnpm test
pnpm build

Все пять проходят, вывод приложить к отчёту. Проверить, что pnpm typecheck теперь захватывает четыре пакета из четырёх, а не три.

После пуша дождаться прогона CI на PR #3 и приложить ссылку на зелёный прогон. Отчёт со словами «должно пройти» не принимается: сборка проверяется прогоном, а не рассуждением.

Границы

Ничего, кроме перечисленных четырёх файлов. Замену HTTP-клиента в gateway, зависимости и что-либо ещё в этой карточке не трогать.