f8a40da56c
- 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>
23 lines
1.4 KiB
JavaScript
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('создание-секретаря');
|
|
});
|
|
});
|