Files
brain/tools/round-memory-record.mjs

33 lines
1.8 KiB
JavaScript

#!/usr/bin/env node
/** round-memory-record — orchestration-помощник записи памяти кругов (SP2c-1).
* Цель — минимизировать врезки в discipline-source: одна точка пишет снимок версии артефакта
* и доводы контроллера последнего круга «## Переговоры» по дорожкам M/J. Объекция стороны
* (NO-GO) пишется через recordSideObjection. Fail-quiet. */
import { recordVersion, recordArg, recordObjection } from './round-memory-store.mjs';
import { parseNegotiationSection } from './negotiation-section.mjs';
/** На запись артефакта: снимок версии + доводы ПОСЛЕДНЕГО круга по дорожкам M/J.
* Пустые доводы не пишутся. Любая ошибка → no-op (false), не кидает. */
export function recordArtifact(taskId, stage, content, baseDir) {
try {
recordVersion(taskId, stage, content, baseDir);
const rounds = parseNegotiationSection(content);
const last = rounds[rounds.length - 1];
if (last) {
if (last.mentor) recordArg(taskId, stage, 'M', last.mentor, baseDir);
if (last.judge) recordArg(taskId, stage, 'J', last.judge, baseDir);
}
return true;
} catch { return false; }
}
/** На объекцию стороны (NO-GO): дословное замечание в дорожку side∈{mentor,judge}.
* Пустой текст не пишется. Любая ошибка → no-op (false), не кидает. */
export function recordSideObjection(taskId, stage, side, text, baseDir) {
try {
const t = String(text == null ? '' : text);
if (!t) return false;
return recordObjection(taskId, stage, side, t, baseDir);
} catch { return false; }
}