// Source content can describe a patient, but cannot direct extraction or approval.
// This conservative screen is also applied to structured fields and returned refs.
export const INSTRUCTION_REASON =
"Instruction or template text was withheld. It cannot establish a patient fact or clinical approval.";
export function instructionLike(text: string): boolean {
return /\b(?:ignore|disregard|override|forget)\b.{0,100}\b(?:instructions?|allerg\w*|previous|above|rules?|system)\b|\b(?:system|developer|assistant)\s*:|<\/?(?:system|instruction|prompt)>|system prompt|api.?key|\bpretend\b|template instruction|not patient data|\b(?:return|output|emit|generate|respond|print|set|replace)\b.{0,100}(?:\b(?:allerg\w*|patient|medication|lab|condition|facts|json|clinical approval)\b)|\breport\b.{0,60}\b(?:clinical approval|sign.?off)\b/i.test(
text,
);
}
export function policyLines(text: string) {
let instructionBlock = false;
return text.split("\n").map((raw, index) => {
const text = raw.trim();
if (!text) instructionBlock = false;
if (instructionLike(text)) instructionBlock = true;
return { text, line: index + 1, blocked: instructionBlock && !!text };
});
}