Files
yao-meta-skill/scripts/output_review_privacy.py
T
2026-06-17 00:07:59 +08:00

67 lines
1.7 KiB
Python

#!/usr/bin/env python3
from typing import Any
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by output-review import and world-class human evidence validators to reject raw content, credential, secret, token, and answer-key fields recursively."
RAW_CONTENT_FIELDS = {
"api_key",
"assistant_message",
"assistant_messages",
"baseline_output",
"credential",
"credentials",
"input",
"inputs",
"message",
"messages",
"model_output",
"output",
"outputs",
"prompt",
"prompts",
"raw_content",
"raw_output",
"raw_prompt",
"raw_provider_prompt",
"raw_user_content",
"secret",
"secrets",
"token",
"transcript",
"transcripts",
"user_message",
"user_messages",
"with_skill_output",
}
ANSWER_KEY_FIELDS = {
"answer_key",
"baseline_label",
"expected",
"expected_winner",
"expected_winner_role",
"expected_winner_variant",
"label",
"variant_label",
"with_skill_label",
}
BLOCKED_DECISION_FIELDS = RAW_CONTENT_FIELDS | ANSWER_KEY_FIELDS
def forbidden_decision_field_paths(value: Any, prefix: str) -> list[str]:
found: list[str] = []
if isinstance(value, dict):
for key, child in value.items():
key_text = str(key).strip()
child_path = f"{prefix}.{key_text}"
if key_text.casefold() in BLOCKED_DECISION_FIELDS:
found.append(child_path)
found.extend(forbidden_decision_field_paths(child, child_path))
elif isinstance(value, list):
for index, child in enumerate(value):
found.extend(forbidden_decision_field_paths(child, f"{prefix}[{index}]"))
return found