@kya-os/agentshield-nextjs
Version:
Next.js middleware for AgentShield AI agent detection
56 lines (52 loc) • 1.6 kB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
import { DetectionResult } from '@kya-os/agentshield-shared';
/**
* Edge-compatible session tracking for AI agents
* Uses cookie-based storage to work in Edge Runtime
*/
interface SessionData {
id: string;
agent: string;
confidence: number;
detectedAt: number;
expires: number;
}
interface SessionTrackingConfig {
enabled: boolean;
cookieName?: string;
cookieMaxAge?: number;
encryptionKey?: string;
}
declare class EdgeSessionTracker {
private readonly config;
constructor(config: SessionTrackingConfig);
/**
* Track a new AI agent session
*/
track(_request: NextRequest, response: NextResponse, result: DetectionResult): Promise<NextResponse>;
/**
* Check for existing AI agent session
*/
check(request: NextRequest): Promise<SessionData | null>;
/**
* Clear an existing session
*/
clear(response: NextResponse): NextResponse;
/**
* Simple encryption using Web Crypto API (Edge-compatible)
*/
private encrypt;
/**
* Simple decryption (Edge-compatible)
*/
private decrypt;
}
/**
* Stateless session checker for non-Next.js environments (Express, etc.)
* Uses a combination of headers to identify continued sessions
*/
declare class StatelessSessionChecker {
static check(headers: Record<string, string>): SessionData | null;
static setHeaders(response: any, session: SessionData): void;
}
export { EdgeSessionTracker, type SessionData, type SessionTrackingConfig, StatelessSessionChecker };