Files
brain/tools/secretary-prompt-hook.test.mjs
T
Дмитрий f8a40da56c feat(secretary): захват выдачи инструмента (N3) + сверка имени дела при включении (N2)
- parseLastExchange привязывает результат инструмента к действию по tool_use_id,
  склеивает text-блоки, усекает до 1200 симв.; [ВЫДАЧА] в Слое 1 теперь наполняется
- resolveCaseActivation: похожее имя дела (опечатка/подстрока) -> переспросить,
  не заводя дело-двойник; хук secretary-prompt-hook выводит подсказку с кандидатами
- TDD: тесты secretary-transcript/flag/prompt-hook; полный свод зелёный

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 17:21:06 +03:00

23 lines
1.4 KiB
JavaScript

import { describe, it, expect } from 'vitest';
import { planActivation } from './secretary-prompt-hook.mjs';
describe('planActivation — решение хука: активировать или переспросить', () => {
it('новое имя (нет похожих) — флажок on с work', () => {
const r = planActivation({ requested: 'биллинг', existing: ['general'], startedAtTurn: 3, session: 's1' });
expect(r.confirm).toBe(false);
expect(r.flag).toEqual({ mode: 'on', startedAtTurn: 3, work: 'биллинг', session: 's1' });
});
it('точное совпадение — флажок on с существующим именем', () => {
const r = planActivation({ requested: 'general', existing: ['general'], startedAtTurn: 0, session: 's2' });
expect(r.confirm).toBe(false);
expect(r.flag.work).toBe('general');
});
it('похожее имя — переспросить: флажок не ставить, дать кандидатов и подсказку', () => {
const r = planActivation({ requested: 'создание', existing: ['создание-секретаря'], startedAtTurn: 1, session: 's3' });
expect(r.confirm).toBe(true);
expect(r.flag).toBeUndefined();
expect(r.candidates).toContain('создание-секретаря');
expect(r.context).toContain('создание-секретаря');
});
});