Clarify regex preview stage vs semantics

This commit is contained in:
Youzini-afk
2026-04-07 01:43:08 +08:00
parent 0a54226478
commit 4fb45b4ce2
3 changed files with 47 additions and 1 deletions

View File

@@ -3928,6 +3928,12 @@ function _renderRegexReuseBadges(rule = {}) {
text: "仅 Prompt",
});
}
if (rule.promptStageMode !== "skip" && rule.promptStageApplies === false) {
badges.push({
className: "is-skip",
text: "当前任务未启用",
});
}
return badges
.map(
(badge) => `<span class="bme-regex-preview-item__badge ${badge.className}">${_escHtml(badge.text)}</span>`,

View File

@@ -437,6 +437,12 @@ function summarizeRule(rule, reason = "") {
function summarizeRuleForPromptPreview(rule, stageConfig = {}, reason = "") {
const summary = summarizeRule(rule, reason);
const promptSemanticApplies =
summary.sourceType === "local"
? summary.sourceFlags.system !== false &&
rule?.destinationFlags?.prompt !== false
: summary.promptReplaceAsEmpty ||
(summary.promptOnly === true && rule?.destinationFlags?.prompt !== false);
const promptStageApplies = shouldApplyRuleForStage(
rule,
"input.finalPrompt",
@@ -444,8 +450,10 @@ function summarizeRuleForPromptPreview(rule, stageConfig = {}, reason = "") {
);
return {
...summary,
promptSemanticApplies,
promptStageApplies,
promptStageMode: promptStageApplies
promptStageEnabled: isTaskRegexStageEnabled(stageConfig, "input.finalPrompt"),
promptStageMode: promptSemanticApplies
? summary.promptReplaceAsEmpty
? "clear"
: "replace"

View File

@@ -588,6 +588,38 @@ try {
beautifyFinalDebug.entries[0].appliedRules.map((item) => item.id),
["beautify-final-strip"],
);
const beautifyFinalPromptStageOffSettings = buildSettings({
stages: {
input: true,
output: true,
"input.userMessage": true,
"input.recentMessages": true,
"input.candidateText": true,
"input.finalPrompt": false,
"output.rawResponse": true,
"output.beforeParse": true,
},
});
const beautifyStageOffInspect = inspectTaskRegexReuse(
beautifyFinalPromptStageOffSettings,
"extract",
);
const beautifyStageOffRule = beautifyStageOffInspect.activeRules.find(
(rule) => rule.id === "beautify-final-strip",
);
assert.equal(beautifyStageOffRule?.promptStageMode, "clear");
assert.equal(beautifyStageOffRule?.promptStageApplies, false);
assert.equal(
applyTaskRegex(
beautifyFinalPromptStageOffSettings,
"extract",
"input.finalPrompt",
"Decor",
{ entries: [] },
"user",
),
"Decor",
);
const destinationBeautifySettings = buildSettings({
sources: {
global: true,