/** * Express Middleware Integration for llm-trust-guard * * Provides ready-to-use middleware for Express.js applications * to protect LLM-powered endpoints. */ import { InputSanitizer, EncodingDetector, MemoryGuard } from "../index.js"; import type { PAPSanitizerResult } from "../guards/input-sanitizer.js"; import type { EncodingDetectorResult } from "../guards/encoding-detector.js"; import type { MemoryGuardResult } from "../guards/memory-guard.js"; interface Request { body?: any; query?: any; params?: any; headers?: any; session?: any; get?(name: string): string | undefined; } interface Response { status(code: number): Response; json(body: any): Response; } type NextFunction = (err?: any) => void; export interface TrustGuardMiddlewareConfig { /** Fields to check in request body */ bodyFields?: string[]; /** Fields to check in query params */ queryFields?: string[]; /** Enable input sanitization */ sanitize?: boolean; /** Enable encoding detection */ detectEncoding?: boolean; /** Enable memory/context validation */ validateMemory?: boolean; /** Custom error handler */ onBlocked?: (req: Request, res: Response, result: ExpressGuardResult) => void; /** Custom logging function */ logger?: (message: string, data?: any) => void; /** InputSanitizer configuration */ sanitizerConfig?: ConstructorParameters[0]; /** EncodingDetector configuration */ encodingConfig?: ConstructorParameters[0]; /** MemoryGuard configuration */ memoryConfig?: ConstructorParameters[0]; /** Session ID extractor */ getSessionId?: (req: Request) => string; } export interface ExpressGuardResult { allowed: boolean; guard: string; violations: string[]; details?: PAPSanitizerResult | EncodingDetectorResult | MemoryGuardResult; } /** * Create Express middleware for LLM input protection * * @example * ```typescript * import express from 'express'; * import { createTrustGuardMiddleware } from 'llm-trust-guard/integrations/express'; * * const app = express(); * app.use(express.json()); * * // Protect all LLM endpoints * app.use('/api/chat', createTrustGuardMiddleware({ * bodyFields: ['message', 'prompt'], * sanitize: true, * detectEncoding: true * })); * * app.post('/api/chat', (req, res) => { * // req.body.message is now validated * res.json({ response: 'Safe response' }); * }); * ``` */ export declare function createTrustGuardMiddleware(config?: TrustGuardMiddlewareConfig): (req: Request, res: Response, next: NextFunction) => void | Response; /** * Create middleware for rate-limiting sensitive tool usage * * @example * ```typescript * app.use('/api/tools', createToolRateLimitMiddleware({ * sensitiveTools: ['delete', 'admin', 'execute'], * maxSensitivePerSession: 5, * windowMs: 60000 * })); * ``` */ export declare function createToolRateLimitMiddleware(config: { sensitiveTools: string[]; maxSensitivePerSession?: number; windowMs?: number; getSessionId?: (req: Request) => string; getToolName?: (req: Request) => string | undefined; }): (req: Request, res: Response, next: NextFunction) => Response | undefined; /** * Create middleware for output filtering * * @example * ```typescript * app.use(createOutputFilterMiddleware({ * patterns: [ * /api[_-]?key/i, * /password/i, * /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/ * ], * replacement: '[REDACTED]' * })); * ``` */ export declare function createOutputFilterMiddleware(config: { patterns: RegExp[]; replacement?: string; fields?: string[]; }): (req: Request, res: Response, next: NextFunction) => void; export {};