Files
openclaw/extensions/qa-lab/src/model-switch-eval.ts
2026-04-11 00:58:40 +01:00

29 lines
1.2 KiB
TypeScript

import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtime";
export function hasModelSwitchContinuityEvidence(text: string) {
const lower = normalizeLowercaseStringOrEmpty(text);
const mentionsHandoff =
lower.includes("handoff") || lower.includes("model switch") || lower.includes("switched");
const mentionsKickoffTask =
lower.includes("qa_kickoff_task") ||
lower.includes("qa/scenarios/index.md") ||
lower.includes("scenario pack") ||
lower.includes("kickoff task") ||
lower.includes("kickoff note") ||
lower.includes("qa mission") ||
(lower.includes("source and docs") &&
lower.includes("qa-channel scenarios") &&
lower.includes("worked") &&
lower.includes("blocked") &&
lower.includes("follow-up"));
const hasScopeLeak =
lower.includes("subagent-handoff") ||
lower.includes("delegated task") ||
lower.includes("final qa tally") ||
lower.includes("qa run complete") ||
lower.includes("all mandatory scenarios");
const looksOverlong =
text.length > 280 || text.includes("\n\n") || text.includes("|---") || text.includes("### ");
return mentionsHandoff && mentionsKickoffTask && !hasScopeLeak && !looksOverlong;
}