/** * Dynamic-capable rule definitions for runtime evaluation. * These rules can detect security issues in actual request/response flows. */ import type { RuleDefinition, DynamicContext, RuleMatch } from "../contracts/types"; /** * Dynamic rule evaluation function type. * Evaluates a rule against a DynamicContext and returns matches. */ export type DynamicRuleEvaluator = (context: DynamicContext) => RuleMatch[]; /** * Enhanced rule definition that includes dynamic evaluation capability. */ export type DynamicRuleDefinition = RuleDefinition & { evaluateDynamic?: DynamicRuleEvaluator; }; /** * Detects sensitive data in model responses. * Looks for patterns like API keys, passwords, tokens in LLM output. */ export declare const sensitiveDataInResponseRule: DynamicRuleDefinition; /** * Detects prompt injection attempts in user requests. * Looks for jailbreak patterns and instruction override attempts. */ export declare const promptInjectionInRequestRule: DynamicRuleDefinition; /** * Detects risky multimodal image_url usage that can enable indirect injection chains. */ export declare const promptInjectionInImageUrlRule: DynamicRuleDefinition; /** * Detects prompt-injection directives in model responses. */ export declare const promptInjectionInResponseRule: DynamicRuleDefinition; /** * Detects when model is generating unsafe dynamic code. * Looks for code patterns that execute user input or modify critical operations. */ export declare const unsafeOutputInResponseRule: DynamicRuleDefinition; /** * Detects runtime tool abuse attempts where prompts try to escalate permissions * or bypass approval gates for tool execution. */ export declare const toolAbuseInRequestRule: DynamicRuleDefinition; /** * Detects poisoned retrieval context that tries to override system policy. */ export declare const ragPoisoningInContextRule: DynamicRuleDefinition; /** * Detects indirect prompt injection via untrusted RAG retrieval chunks entering model input. */ export declare const indirectRagInjectionRule: DynamicRuleDefinition; /** * Detects recursive agent loop self-call hijack patterns. */ export declare const agentLoopEscapeRule: DynamicRuleDefinition; /** * Detects extreme semantic drift between request and response as hijack indicator. */ export declare const responseRequestSemanticDriftRule: DynamicRuleDefinition; /** * Detects declared JSON schema usage with schema-violating output consumed unchecked. */ export declare const outputSchemaValidationRule: DynamicRuleDefinition; /** * Detects PII and PHI exfiltration in model response bodies. * Covers GDPR-relevant personal data and HIPAA protected health information. */ export declare const piiExfiltrationRule: DynamicRuleDefinition; /** * Creates a rule that fires when a user-configured canary token appears in any * model response. This is a near-perfect indicator that an attacker coerced the * model into revealing its system prompt. * * Usage: * const sdk = new AIGuardSDK({ canaryToken: "sk-canary-CHANGE-ME-abc123" }); * // Embed the SAME token in your system prompt. * // Any response containing it triggers a critical finding. */ export declare function createCanaryTokenLeakRule(canaryToken: string): DynamicRuleDefinition | null; export type SessionTurn = { requestText: string; responseText: string; timestamp: number; }; /** * Detects split prompt injection instructions spread across recent turns. */ export declare function evaluateMultiTurnDripInjection(turns: readonly SessionTurn[]): RuleMatch[]; /** * Detects context window flooding from oversized cumulative user prompts. */ export declare function evaluateMultiTurnContextFlooding(turns: readonly SessionTurn[], maxPayloadBytes: number): RuleMatch[]; /** * Detects role/identity anchor setup in one turn followed by a directive using that anchor. */ export declare function evaluateMultiTurnIdentityAnchoring(turns: readonly SessionTurn[]): RuleMatch[]; /** * Gets all available dynamic rules. */ export declare function getBuiltinDynamicRules(): DynamicRuleDefinition[];