d44254a0e1
- оглавление: реальная тема (поле «тема» в моторе) + дата со временем вместо заглушки (дело) - флажок по сессии 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>
20 lines
922 B
JavaScript
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('дел пока нет');
|
|
});
|
|
});
|