// Qa Lab plugin module implements model switch eval behavior.
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";

export function hasModelSwitchContinuitySignal(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;
}
