Preserve source trace for lens build orders

This commit is contained in:
OpenClaw Bot
2026-05-27 00:46:40 +02:00
parent 080f35e230
commit 6cd5c52683
3 changed files with 21 additions and 3 deletions
+13 -2
View File
@@ -779,7 +779,7 @@ function laneFromBuildOrderLabel(fragment = '') {
return '';
}
function optionsFromBuildOrderText(text = '', sourceSection = 'concept-map.lenses.channel') {
function optionsFromBuildOrderText(text = '', sourceSection = 'concept-map.lenses.channel', sourceTitle = 'Build Order') {
const fragments = sentenceFragments(text);
const labelled = fragments.filter(fragment => laneFromBuildOrderLabel(fragment));
return labelled.map((fragment, index) => {
@@ -796,6 +796,9 @@ function optionsFromBuildOrderText(text = '', sourceSection = 'concept-map.lense
? { value: 7, effort: 3, confidence: 6, urgency: 5, risk: 3 }
: undefined,
sourceSection,
sourceItemId: `${sourceSection}#${index + 1}`,
sourceTitle,
sourceExcerpt: fragment,
};
}).filter(item => item.action);
}
@@ -838,7 +841,15 @@ function optionsFromBody(body = {}) {
|| buildOrderLens.content
|| buildOrderLens.text
|| '';
const buildOrderOptions = optionsFromBuildOrderText(buildOrderText);
const buildOrderSourceTitle = cleanText(
objectFrom(conceptMapLenses.channel).title
|| objectFrom(conceptMapLenses.buildOrder).title
|| objectFrom(conceptMap.buildOrder).title
|| buildOrderLens.title
|| 'Build Order',
140
);
const buildOrderOptions = optionsFromBuildOrderText(buildOrderText, 'concept-map.lenses.channel', buildOrderSourceTitle);
if (buildOrderOptions.length) return normalizeCandidateGroup([{ items: buildOrderOptions, sourceSection: 'concept-map.lenses.channel' }]);
if (Array.isArray(body.options)) {
return normalizeOptionIds(body.options.slice(0, 24).map((item, index) => normalizeFeatureOption(item, index, 'option', 'options')).filter(item => item.title));