#!/usr/bin/env node
/**
 * negotiation-section — парсер раздела «## Переговоры» план-файла. Возвращает круги
 * [{round, position}] с ДОСЛОВНЫМ текстом позиции контроллера (для наставника и арбитража).
 * Раздел = «## Переговоры» до следующего «## », внутри — «### Круг N» блоки.
 */
export function parseNegotiationSection(md) {
  const text = typeof md === 'string' ? md : '';
  // БЕЗ флага m: `$` = конец ТЕКСТА (не строки), иначе нежадный захват обрывается на 1-й строке.
  // Заголовки матчим через (?:^|\n), терминатор — следующий «\n## » или конец текста.
  const sec = text.match(/(?:^|\n)##\s*Переговоры[^\n]*\n([\s\S]*?)(?=\n##\s|$)/i);
  if (!sec) return [];
  const body = sec[1];
  const out = [];
  const re = /(?:^|\n)###\s*Круг\s*(\d+)[^\n]*\n([\s\S]*?)(?=\n###\s|$)/gi;
  let m;
  while ((m = re.exec(body)) !== null) {
    out.push({ round: Number(m[1]), position: m[2].trim() });
  }
  return out;
}
