Files
brain/tools/secretary-enqueue.mjs
T

17 lines
1.0 KiB
JavaScript

// tools/secretary-enqueue.mjs
// Чистый решатель: какие спаны поставить в очередь воркера на этом проходе хука. Курсор — обработанный
// воркером индекс. closing → добить последний открытый спан. Дедуп по index — на стороне очереди.
import { computeSpans, spansToDistill } from './secretary-span.mjs';
export function spansToEnqueue({ rawBounds, lastTurn, cursor, session, closing = false, note = '' }) {
const jobs = spansToDistill(rawBounds, lastTurn, cursor)
.map((s) => ({ session, kind: 'span', span: { ...s, note } }));
if (closing) {
const all = computeSpans(rawBounds, lastTurn).map((s, index) => ({ ...s, index }));
const lastOpen = all[all.length - 1];
if (lastOpen && lastOpen.open && lastOpen.index > (Number.isFinite(cursor) ? cursor : -1))
jobs.push({ session, kind: 'span', span: { start: lastOpen.start, end: lastOpen.end, index: lastOpen.index, note } });
}
return jobs;
}