ai-rsk 0.7.2

Security gate for AI-generated code - blocks the build until vulnerabilities are fixed
/// Embedded YAML rules - compiled into the binary at build time.
/// This ensures ai-rsk works as a standalone binary without needing
/// an external rules/ directory on disk.
///
/// When a rules/ directory IS found on disk (development mode),
/// it takes precedence over these embedded rules.
pub const EMBEDDED_RULES: &[(&str, &str)] = &[
    (
        "ai-output-no-label.yaml",
        include_str!("../rules/ai-output-no-label.yaml"),
    ),
    (
        "bearer-exposed-client.yaml",
        include_str!("../rules/bearer-exposed-client.yaml"),
    ),
    (
        "body-parser-no-limit.yaml",
        include_str!("../rules/body-parser-no-limit.yaml"),
    ),
    (
        "cdn-script-no-sri.yaml",
        include_str!("../rules/cdn-script-no-sri.yaml"),
    ),
    (
        "client-side-auth-only.yaml",
        include_str!("../rules/client-side-auth-only.yaml"),
    ),
    (
        "console-log-sensitive.yaml",
        include_str!("../rules/console-log-sensitive.yaml"),
    ),
    (
        "cors-wildcard.yaml",
        include_str!("../rules/cors-wildcard.yaml"),
    ),
    (
        "dangerouslysetinnerhtml-dynamic.yaml",
        include_str!("../rules/dangerouslysetinnerhtml-dynamic.yaml"),
    ),
    (
        "django-allowed-hosts-wildcard.yaml",
        include_str!("../rules/django-allowed-hosts-wildcard.yaml"),
    ),
    (
        "django-debug-true.yaml",
        include_str!("../rules/django-debug-true.yaml"),
    ),
    (
        "django-no-csrf-middleware.yaml",
        include_str!("../rules/django-no-csrf-middleware.yaml"),
    ),
    (
        "django-secret-key-hardcoded.yaml",
        include_str!("../rules/django-secret-key-hardcoded.yaml"),
    ),
    (
        "error-stack-leak.yaml",
        include_str!("../rules/error-stack-leak.yaml"),
    ),
    (
        "eval-dynamic.yaml",
        include_str!("../rules/eval-dynamic.yaml"),
    ),
    (
        "exec-dynamic-python.yaml",
        include_str!("../rules/exec-dynamic-python.yaml"),
    ),
    (
        "flask-debug-true.yaml",
        include_str!("../rules/flask-debug-true.yaml"),
    ),
    (
        "form-no-label.yaml",
        include_str!("../rules/form-no-label.yaml"),
    ),
    (
        "hardcoded-secret.yaml",
        include_str!("../rules/hardcoded-secret.yaml"),
    ),
    (
        "http-no-timeout.yaml",
        include_str!("../rules/http-no-timeout.yaml"),
    ),
    ("img-no-alt.yaml", include_str!("../rules/img-no-alt.yaml")),
    (
        "jwt-no-expiry.yaml",
        include_str!("../rules/jwt-no-expiry.yaml"),
    ),
    (
        "jwt-sensitive-payload.yaml",
        include_str!("../rules/jwt-sensitive-payload.yaml"),
    ),
    (
        "llm-call-no-audit-log.yaml",
        include_str!("../rules/llm-call-no-audit-log.yaml"),
    ),
    (
        "llm-no-token-limit.yaml",
        include_str!("../rules/llm-no-token-limit.yaml"),
    ),
    (
        "math-random-crypto.yaml",
        include_str!("../rules/math-random-crypto.yaml"),
    ),
    (
        "missing-csp.yaml",
        include_str!("../rules/missing-csp.yaml"),
    ),
    (
        "missing-hsts.yaml",
        include_str!("../rules/missing-hsts.yaml"),
    ),
    (
        "missing-httponly.yaml",
        include_str!("../rules/missing-httponly.yaml"),
    ),
    (
        "missing-permissions-policy.yaml",
        include_str!("../rules/missing-permissions-policy.yaml"),
    ),
    (
        "missing-rate-limit.yaml",
        include_str!("../rules/missing-rate-limit.yaml"),
    ),
    (
        "missing-referrer-policy.yaml",
        include_str!("../rules/missing-referrer-policy.yaml"),
    ),
    (
        "missing-samesite.yaml",
        include_str!("../rules/missing-samesite.yaml"),
    ),
    (
        "missing-secure-cookie.yaml",
        include_str!("../rules/missing-secure-cookie.yaml"),
    ),
    (
        "missing-xcontent-type.yaml",
        include_str!("../rules/missing-xcontent-type.yaml"),
    ),
    (
        "missing-xframe.yaml",
        include_str!("../rules/missing-xframe.yaml"),
    ),
    (
        "negative-business-value.yaml",
        include_str!("../rules/negative-business-value.yaml"),
    ),
    ("no-helmet.yaml", include_str!("../rules/no-helmet.yaml")),
    (
        "no-html-lang.yaml",
        include_str!("../rules/no-html-lang.yaml"),
    ),
    (
        "path-traversal-fs.yaml",
        include_str!("../rules/path-traversal-fs.yaml"),
    ),
    (
        "postmessage-no-origin.yaml",
        include_str!("../rules/postmessage-no-origin.yaml"),
    ),
    (
        "prompt-injection-concat.yaml",
        include_str!("../rules/prompt-injection-concat.yaml"),
    ),
    (
        "python-eval-input.yaml",
        include_str!("../rules/python-eval-input.yaml"),
    ),
    (
        "python-jwt-no-verify.yaml",
        include_str!("../rules/python-jwt-no-verify.yaml"),
    ),
    (
        "python-marshal-load.yaml",
        include_str!("../rules/python-marshal-load.yaml"),
    ),
    (
        "python-os-system.yaml",
        include_str!("../rules/python-os-system.yaml"),
    ),
    (
        "python-requests-no-timeout.yaml",
        include_str!("../rules/python-requests-no-timeout.yaml"),
    ),
    (
        "python-shelve-open.yaml",
        include_str!("../rules/python-shelve-open.yaml"),
    ),
    (
        "python-sql-fstring.yaml",
        include_str!("../rules/python-sql-fstring.yaml"),
    ),
    (
        "select-star-response.yaml",
        include_str!("../rules/select-star-response.yaml"),
    ),
    (
        "sql-injection-concat.yaml",
        include_str!("../rules/sql-injection-concat.yaml"),
    ),
    (
        "source-maps-in-prod.yaml",
        include_str!("../rules/source-maps-in-prod.yaml"),
    ),
    (
        "ssrf-dynamic-fetch.yaml",
        include_str!("../rules/ssrf-dynamic-fetch.yaml"),
    ),
    (
        "stripe-no-webhook-verify.yaml",
        include_str!("../rules/stripe-no-webhook-verify.yaml"),
    ),
    (
        "subprocess-shell.yaml",
        include_str!("../rules/subprocess-shell.yaml"),
    ),
    (
        "system-prompt-client-exposed.yaml",
        include_str!("../rules/system-prompt-client-exposed.yaml"),
    ),
    (
        "text-template-html.yaml",
        include_str!("../rules/text-template-html.yaml"),
    ),
    (
        "token-in-localstorage.yaml",
        include_str!("../rules/token-in-localstorage.yaml"),
    ),
    (
        "unprotected-api-route.yaml",
        include_str!("../rules/unprotected-api-route.yaml"),
    ),
    (
        "unvalidated-redirect.yaml",
        include_str!("../rules/unvalidated-redirect.yaml"),
    ),
    (
        "weak-hash-bcrypt.yaml",
        include_str!("../rules/weak-hash-bcrypt.yaml"),
    ),
    (
        "websocket-no-auth.yaml",
        include_str!("../rules/websocket-no-auth.yaml"),
    ),
    (
        "pii-in-localstorage.yaml",
        include_str!("../rules/pii-in-localstorage.yaml"),
    ),
    (
        "pickle-load.yaml",
        include_str!("../rules/pickle-load.yaml"),
    ),
    (
        "tracking-no-consent.yaml",
        include_str!("../rules/tracking-no-consent.yaml"),
    ),
    (
        "window-opener-no-noopener.yaml",
        include_str!("../rules/window-opener-no-noopener.yaml"),
    ),
    (
        "xpoweredby-exposed.yaml",
        include_str!("../rules/xpoweredby-exposed.yaml"),
    ),
    (
        "yaml-unsafe.yaml",
        include_str!("../rules/yaml-unsafe.yaml"),
    ),
];