beca7db42a
KI-007 (High): Add isinstance(value, str) guard to _is_hex() so non-string arguments return False cleanly instead of raising TypeError. Updated test_is_hex_non_string to assert False instead of expecting pytest.raises(TypeError). KI-005 (High): Add _scan_for_secrets() to manifest.py that walks all string values in plugin.yaml and reports common credential patterns (sk-, ghp_, AKIA, bearer tokens, long hex strings, password/api_key assignments). Call it from validate_manifest(). Skips the sha256 field since it's a content-addressed hash, not a secret. Run: pytest → 210 passed, 1 skipped. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>