perf: avoid sort-for-single selection

This commit is contained in:
Peter Steinberger
2026-04-20 23:19:20 +01:00
parent 2d010306e4
commit f1a544ef6d
7 changed files with 156 additions and 34 deletions

View File

@@ -677,6 +677,22 @@ function isRoutingSummary(summary: SectionSummary): boolean {
return summary.scores.routing > 0 || REM_ROUTING_SIGNAL_RE.test(summary.text);
}
function findStrongestSummary(
summaries: SectionSummary[],
predicate: (summary: SectionSummary) => boolean,
): SectionSummary | undefined {
let strongest: SectionSummary | undefined;
for (const summary of summaries) {
if (!predicate(summary)) {
continue;
}
if (!strongest || summary.scores.overall > strongest.scores.overall) {
strongest = summary;
}
}
return strongest;
}
function previewGroundedRemForFile(params: {
relPath: string;
content: string;
@@ -847,15 +863,15 @@ function previewGroundedRemForFile(params: {
(sum, { section, snippets }) => sum + scoreSection(section, snippets).tasks,
0,
);
const strongestRoutingSummary = summaries
.filter((summary) => isRoutingSummary(summary))
.toSorted((left, right) => right.scores.overall - left.scores.overall)[0];
const strongestIncidentSummary = summaries
.filter((summary) => summary.scores.incident > 0)
.toSorted((left, right) => right.scores.overall - left.scores.overall)[0];
const strongestExternalizationSummary = summaries
.filter((summary) => summary.scores.externalization > 0)
.toSorted((left, right) => right.scores.overall - left.scores.overall)[0];
const strongestRoutingSummary = findStrongestSummary(summaries, isRoutingSummary);
const strongestIncidentSummary = findStrongestSummary(
summaries,
(summary) => summary.scores.incident > 0,
);
const strongestExternalizationSummary = findStrongestSummary(
summaries,
(summary) => summary.scores.externalization > 0,
);
if (facts.length === 0 && monitoringSignal >= 3) {
addReflection(