17 lines
1.0 KiB
JavaScript
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;
|
|
}
|