#!/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; } }