UNPKG

@kya-os/agentshield-nextjs

Version:

Next.js middleware for AgentShield AI agent detection

63 lines (59 loc) 2.06 kB
import { NextRequest, NextResponse } from 'next/server'; /** * WASM-enabled middleware for Next.js with AgentShield * Following official Next.js documentation for WebAssembly in Edge Runtime */ interface WasmDetectionResult { isAgent: boolean; confidence: number; agent?: string | undefined; verificationMethod: 'signature' | 'pattern' | 'none'; riskLevel: 'low' | 'medium' | 'high'; timestamp: string; } interface AgentShieldConfig { onAgentDetected?: (result: WasmDetectionResult) => void | Promise<void>; blockOnHighConfidence?: boolean; confidenceThreshold?: number; skipPaths?: string[]; blockedResponse?: { status?: number; message?: string; headers?: Record<string, string>; }; } /** * Create a WASM-enabled AgentShield middleware * This must be used with proper WASM module import at the top of middleware.ts * * @example * ```typescript * // middleware.ts * import wasmModule from '@kya-os/agentshield/wasm?module'; * import { createWasmAgentShieldMiddleware } from '@kya-os/agentshield-nextjs'; * * const wasmInstance = await WebAssembly.instantiate(wasmModule); * * export const middleware = createWasmAgentShieldMiddleware({ * wasmInstance, * onAgentDetected: (result) => { * console.log(`Detected ${result.agent} with ${result.confidence * 100}% confidence`); * } * }); * ``` */ declare function createWasmAgentShieldMiddleware(config: AgentShieldConfig & { wasmInstance?: WebAssembly.Instance; }): (request: NextRequest) => Promise<NextResponse<unknown>>; /** * Helper to load and instantiate WASM module * This should be called at the top of your middleware.ts file * * @example * ```typescript * import wasmModule from '@kya-os/agentshield/wasm?module'; * const wasmInstance = await instantiateWasm(wasmModule); * ``` */ declare function instantiateWasm(wasmModule: WebAssembly.Module): Promise<WebAssembly.Instance>; export { type AgentShieldConfig, type WasmDetectionResult, createWasmAgentShieldMiddleware, instantiateWasm };