Files
brain/tools/secretary-hookutil.test.mjs
T
Дмитрий d44254a0e1 feat(secretary): качество выжимки — тема+время, флажок по сессии, дедуп, промпт без шума, стабильная тема, навигация протокол->Слой 1
- оглавление: реальная тема (поле «тема» в моторе) + дата со временем вместо заглушки (дело)
- флажок по сессии secretary-mode-<session>.json — параллельные сессии не смешиваются
- дедуп при записи (applyExtraction) — не плодим одинаковые пункты
- промпт-дисциплина: игнор служебного шума, «воля» только у [ЮЗЕР], решения не вопросы
- стабильная тема (первая непустая, не уезжает на тему хода)
- провенанс несёт сессию (@<session>) -> навигация в raw/<session>.log; steps/ убраны как дубли
- мёртвый код снят: secretary-slice + computePeriod + buildStepLinks

37 тестов green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 10:30:02 +03:00

20 lines
922 B
JavaScript

import { describe, it, expect } from 'vitest';
import { verifyEncoding, renderIndexContext } from './secretary-hookutil.mjs';
describe('verifyEncoding', () => {
it('пустое — не ок', () => { expect(verifyEncoding('').ok).toBe(false); });
it('BOM — не ок', () => { expect(verifyEncoding('текст').ok).toBe(false); });
it('нормальный UTF-8 — ок', () => { expect(verifyEncoding('текст').ok).toBe(true); });
});
describe('renderIndexContext', () => {
it('оборачивает оглавление', () => {
const out = renderIndexContext('- [X](x/protocol.md) — цель · открыто · 2026-06-22');
expect(out).toContain('Открытые дела');
expect(out).toContain('x/protocol.md');
});
it('пустое — помечает отсутствие', () => {
expect(renderIndexContext('')).toContain('дел пока нет');
});
});