Задания, отчёты и патчи, лежавшие в 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>
2.7 KiB
Правила работы: прочитай C:\Users\Ochenstarik\kagent-tasks\hermes-work-protocol.md.
Каталог: services/control-plane/src/. Выполняется после задачи A3.
Дефект
В package.json объявлено "test": "vitest run", но тестовых файлов в пакете нет. Vitest
завершается с кодом 1, из-за чего падает pnpm test для всего монорепозитория.
Что сделать
Добавить файлы *.test.ts рядом с исходниками. Минимальный набор:
domain.test.ts — таблица переходов TASK_TRANSITIONS:
- разрешённый переход принимается;
- запрещённый переход отклоняется;
- терминальные статусы
doneиcancelledне имеют исходящих переходов; - каждый статус присутствует в таблице.
auth.test.ts:
hashPasswordиverifyPassword: корректный пароль проходит, неверный не проходит;- испорченный хеш возвращает
false, а не бросает исключение; - два хеша одного пароля различаются (соль случайна);
validateAccessToken: валидный токен разбирается, подделанная подпись отклоняется, истёкший токен отклоняется;authMiddleware: без заголовка401, с чужой схемой401, с валидным токеном принципал попадает в запрос.
Тесты не обращаются к сети, к PostgreSQL и к внешним сервисам. Для истёкшего токена используй подмену времени средствами vitest, а не ожидание.
Ограничение
Тесты пишутся по описанному поведению, а не подгоняются под текущий код. Если тест
обнаруживает дефект — не правь тест. Зафиксируй тест как падающий, опиши дефект
комментарием к карточке и предложи отдельную карточку. Причина —
docs/adr/0005-test-oracle-integrity.md.
Критерий приёмки
pnpm --filter @kagent/control-plane test
pnpm --filter @kagent/control-plane typecheck
Обе команды проходят, вывод приложить к отчёту.