@kya-os/agentshield-nextjs
Version:
Next.js middleware for AgentShield AI agent detection
63 lines (59 loc) • 2.06 kB
text/typescript
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 };