Files
brain/tools/conversation-cadence.mjs
T

31 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
/**
* conversation-cadence — каденс «в» (spec 2026-06-05 §3): КАКИЕ проверки гоняются
* КОГДА. На каждый ответ — лёгкий проход «всплывшая нужда» + бесплатный сверщик
* полноты; при сборке/пересборке плана — полная сверка верности + полнота.
* Плюс размер-страховка: план распух → сигнал «дроби на волны». Чистый модуль.
*/
// Каденс: событие → набор проверок (id проверок-исполнителей).
export const CADENCE = Object.freeze({
answer: Object.freeze(['emerge-light', 'coverage']),
replan: Object.freeze(['verity-full', 'coverage']),
});
/** Какие проверки гонять на событие; неизвестное событие → []. */
export function checksForEvent(event) {
return CADENCE[event] ? [...CADENCE[event]] : [];
}
/**
* Размер-страховка (§3): план распух (десятки вопросов / несколько независимых
* тем) → сигнал «дроби на волны / под-разговоры». Пороги — ручки (портативно).
* Не блок — сигнал.
*/
export function oversizeSignal({ questionCount = 0, themeCount = 0 } = {}, { questionThreshold = 20, themeThreshold = 3 } = {}) {
const reasons = [];
if (questionCount >= questionThreshold) reasons.push(`вопросов много (${questionCount}${questionThreshold}) — дроби на волны`);
if (themeCount >= themeThreshold) reasons.push(`независимых тем несколько (${themeCount}${themeThreshold}) — дроби на под-разговоры`);
return { oversize: reasons.length > 0, reasons };
}