@kya-os/agentshield-nextjs 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +21 -369
  2. package/index.js +9 -0
  3. package/package.json +7 -141
  4. package/EDGE_RUNTIME_WASM_SETUP.md +0 -348
  5. package/bin/setup-edge-wasm.js +0 -525
  6. package/dist/.tsbuildinfo +0 -1
  7. package/dist/api-client.d.mts +0 -196
  8. package/dist/api-client.d.ts +0 -196
  9. package/dist/api-client.js +0 -200
  10. package/dist/api-client.js.map +0 -1
  11. package/dist/api-client.mjs +0 -196
  12. package/dist/api-client.mjs.map +0 -1
  13. package/dist/api-middleware.d.mts +0 -140
  14. package/dist/api-middleware.d.ts +0 -140
  15. package/dist/api-middleware.js +0 -511
  16. package/dist/api-middleware.js.map +0 -1
  17. package/dist/api-middleware.mjs +0 -508
  18. package/dist/api-middleware.mjs.map +0 -1
  19. package/dist/create-middleware.d.mts +0 -17
  20. package/dist/create-middleware.d.ts +0 -17
  21. package/dist/create-middleware.js +0 -1381
  22. package/dist/create-middleware.js.map +0 -1
  23. package/dist/create-middleware.mjs +0 -1358
  24. package/dist/create-middleware.mjs.map +0 -1
  25. package/dist/edge/index.d.mts +0 -110
  26. package/dist/edge/index.d.ts +0 -110
  27. package/dist/edge/index.js +0 -277
  28. package/dist/edge/index.js.map +0 -1
  29. package/dist/edge/index.mjs +0 -275
  30. package/dist/edge/index.mjs.map +0 -1
  31. package/dist/edge-detector-wrapper.d.mts +0 -34
  32. package/dist/edge-detector-wrapper.d.ts +0 -34
  33. package/dist/edge-detector-wrapper.js +0 -596
  34. package/dist/edge-detector-wrapper.js.map +0 -1
  35. package/dist/edge-detector-wrapper.mjs +0 -574
  36. package/dist/edge-detector-wrapper.mjs.map +0 -1
  37. package/dist/edge-runtime-loader.d.mts +0 -50
  38. package/dist/edge-runtime-loader.d.ts +0 -50
  39. package/dist/edge-runtime-loader.js +0 -204
  40. package/dist/edge-runtime-loader.js.map +0 -1
  41. package/dist/edge-runtime-loader.mjs +0 -201
  42. package/dist/edge-runtime-loader.mjs.map +0 -1
  43. package/dist/edge-wasm-middleware.d.mts +0 -68
  44. package/dist/edge-wasm-middleware.d.ts +0 -68
  45. package/dist/edge-wasm-middleware.js +0 -318
  46. package/dist/edge-wasm-middleware.js.map +0 -1
  47. package/dist/edge-wasm-middleware.mjs +0 -315
  48. package/dist/edge-wasm-middleware.mjs.map +0 -1
  49. package/dist/enhanced-middleware.d.mts +0 -153
  50. package/dist/enhanced-middleware.d.ts +0 -153
  51. package/dist/enhanced-middleware.js +0 -1082
  52. package/dist/enhanced-middleware.js.map +0 -1
  53. package/dist/enhanced-middleware.mjs +0 -1080
  54. package/dist/enhanced-middleware.mjs.map +0 -1
  55. package/dist/index.d.mts +0 -24
  56. package/dist/index.d.ts +0 -24
  57. package/dist/index.js +0 -2717
  58. package/dist/index.js.map +0 -1
  59. package/dist/index.mjs +0 -2662
  60. package/dist/index.mjs.map +0 -1
  61. package/dist/middleware.d.mts +0 -21
  62. package/dist/middleware.d.ts +0 -21
  63. package/dist/middleware.js +0 -1362
  64. package/dist/middleware.js.map +0 -1
  65. package/dist/middleware.mjs +0 -1339
  66. package/dist/middleware.mjs.map +0 -1
  67. package/dist/nodejs-wasm-loader.d.mts +0 -25
  68. package/dist/nodejs-wasm-loader.d.ts +0 -25
  69. package/dist/nodejs-wasm-loader.js +0 -78
  70. package/dist/nodejs-wasm-loader.js.map +0 -1
  71. package/dist/nodejs-wasm-loader.mjs +0 -68
  72. package/dist/nodejs-wasm-loader.mjs.map +0 -1
  73. package/dist/policy.d.mts +0 -162
  74. package/dist/policy.d.ts +0 -162
  75. package/dist/policy.js +0 -189
  76. package/dist/policy.js.map +0 -1
  77. package/dist/policy.mjs +0 -165
  78. package/dist/policy.mjs.map +0 -1
  79. package/dist/session-tracker.d.mts +0 -55
  80. package/dist/session-tracker.d.ts +0 -55
  81. package/dist/session-tracker.js +0 -170
  82. package/dist/session-tracker.js.map +0 -1
  83. package/dist/session-tracker.mjs +0 -167
  84. package/dist/session-tracker.mjs.map +0 -1
  85. package/dist/signature-verifier.d.mts +0 -33
  86. package/dist/signature-verifier.d.ts +0 -33
  87. package/dist/signature-verifier.js +0 -386
  88. package/dist/signature-verifier.js.map +0 -1
  89. package/dist/signature-verifier.mjs +0 -362
  90. package/dist/signature-verifier.mjs.map +0 -1
  91. package/dist/types-DVmy9NE3.d.mts +0 -105
  92. package/dist/types-DVmy9NE3.d.ts +0 -105
  93. package/dist/wasm-middleware.d.mts +0 -63
  94. package/dist/wasm-middleware.d.ts +0 -63
  95. package/dist/wasm-middleware.js +0 -98
  96. package/dist/wasm-middleware.js.map +0 -1
  97. package/dist/wasm-middleware.mjs +0 -95
  98. package/dist/wasm-middleware.mjs.map +0 -1
  99. package/dist/wasm-setup.d.mts +0 -46
  100. package/dist/wasm-setup.d.ts +0 -46
  101. package/dist/wasm-setup.js +0 -157
  102. package/dist/wasm-setup.js.map +0 -1
  103. package/dist/wasm-setup.mjs +0 -148
  104. package/dist/wasm-setup.mjs.map +0 -1
  105. package/templates/middleware-wasm-100.ts +0 -151
  106. package/wasm/agentshield_wasm.d.ts +0 -479
  107. package/wasm/agentshield_wasm.js +0 -1536
  108. package/wasm/agentshield_wasm_bg.wasm +0 -0
  109. package/wasm/package.json +0 -30
  110. package/wasm.d.ts +0 -21
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/edge-wasm-middleware.ts"],"names":["ptr"],"mappings":"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","file":"edge-wasm-middleware.mjs","sourcesContent":["/**\n * Edge Runtime Compatible WASM Middleware for AgentShield\n *\n * This module provides WASM-based AI agent detection with 95-100% confidence\n * in Next.js Edge Runtime and Vercel Edge Functions.\n *\n * IMPORTANT: WebAssembly.instantiate(module) IS supported in Edge Runtime\n * when using a pre-compiled module imported with ?module suffix.\n */\n\nimport type { NextRequest } from 'next/server';\nimport { NextResponse } from 'next/server';\nimport {\n toPercent,\n normalizeConfidence,\n evaluateEnforcement,\n shouldEnforce,\n} from '@kya-os/agentshield-shared';\n\n// Type definitions\nexport interface EdgeWasmDetectionResult {\n isAgent: boolean;\n isAiCrawler?: boolean;\n confidence: number;\n agent?: string;\n verificationMethod: 'signature' | 'pattern' | 'wasm';\n riskLevel: 'low' | 'medium' | 'high';\n timestamp: string;\n reasons?: string[];\n}\n\nexport interface EdgeAgentShieldConfig {\n onAgentDetected?: (result: EdgeWasmDetectionResult) => void | Promise<void>;\n blockOnHighConfidence?: boolean;\n /**\n * Confidence threshold for blocking (0.0-1.0 scale).\n * Detection confidence above this threshold will be blocked if blockOnHighConfidence is true.\n * @default 0.9 (90% confidence)\n * @example\n * confidenceThreshold: 0.9 // Block if >= 90% confident\n * confidenceThreshold: 0.7 // Block if >= 70% confident\n */\n confidenceThreshold?: number;\n skipPaths?: string[];\n blockedResponse?: {\n status?: number;\n message?: string;\n headers?: Record<string, string>;\n };\n}\n\n// WASM module cache\nlet wasmExports: any = null;\nlet wasmInitPromise: Promise<void> | null = null;\n\n// wasm-bindgen glue code\nconst heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj: any) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx: number) {\n return heap[idx];\n}\n\nfunction dropObject(idx: number) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx: number) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nconst cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\nconst cachedTextEncoder = new TextEncoder();\n\nlet cachedUint8ArrayMemory0: Uint8Array | null = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasmExports.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr: number, len: number) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passStringToWasm0(arg: string, malloc: any, realloc: any) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written!;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0: DataView | null = null;\nfunction getDataViewMemory0() {\n if (\n cachedDataViewMemory0 === null ||\n cachedDataViewMemory0.buffer !== wasmExports.memory.buffer\n ) {\n cachedDataViewMemory0 = new DataView(wasmExports.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\n/**\n * Initialize WASM module with proper imports for Edge Runtime\n */\nexport async function initializeEdgeWasm(wasmModule: WebAssembly.Module): Promise<void> {\n if (wasmInitPromise) {\n return wasmInitPromise;\n }\n\n wasmInitPromise = (async () => {\n try {\n // Create imports object required by wasm-bindgen\n const imports = {\n './agentshield_wasm_bg.js': {\n __wbindgen_object_drop_ref: function (arg0: number) {\n dropObject(arg0);\n },\n __wbindgen_string_new: function (arg0: number, arg1: number) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n },\n __wbindgen_string_get: function (arg0: number, arg1: number) {\n const obj = getObject(arg1);\n const ret = typeof obj === 'string' ? obj : undefined;\n const ptr1 = ret\n ? passStringToWasm0(\n ret,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n )\n : 0;\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbindgen_throw: function (arg0: number, arg1: number) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n },\n wbg: {\n __wbindgen_object_drop_ref: function (arg0: number) {\n dropObject(arg0);\n },\n __wbindgen_string_new: function (arg0: number, arg1: number) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n },\n __wbindgen_string_get: function (arg0: number, arg1: number) {\n const obj = getObject(arg1);\n const ret = typeof obj === 'string' ? obj : undefined;\n const ptr1 = ret\n ? passStringToWasm0(\n ret,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n )\n : 0;\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbindgen_throw: function (arg0: number, arg1: number) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n },\n };\n\n // Instantiate with proper imports\n const instance = await WebAssembly.instantiate(wasmModule, imports);\n wasmExports = instance.exports;\n\n // Initialize wasm-bindgen if needed\n if (wasmExports.__wbindgen_start) {\n wasmExports.__wbindgen_start();\n }\n\n console.log(\n '✅ AgentShield: WASM module loaded successfully in Edge Runtime (95-100% confidence enabled)'\n );\n } catch (error) {\n console.error('❌ AgentShield: Failed to initialize WASM in Edge Runtime:', error);\n throw error;\n }\n })();\n\n return wasmInitPromise;\n}\n\n/**\n * Detect AI agent using WASM in Edge Runtime\n */\nasync function detectWithWasm(metadata: {\n userAgent?: string | undefined;\n ipAddress?: string | undefined;\n headers: Record<string, string>;\n timestamp: string;\n url?: string | undefined;\n method?: string | undefined;\n clientFingerprint?: string | undefined;\n}): Promise<EdgeWasmDetectionResult> {\n if (!wasmExports) {\n throw new Error('WASM not initialized. Call initializeEdgeWasm first.');\n }\n\n try {\n // Create WASM request metadata\n const userAgent = metadata.userAgent || '';\n const ipAddress = metadata.ipAddress || '';\n const headers = JSON.stringify(metadata.headers);\n const timestamp = metadata.timestamp;\n const url = metadata.url || '';\n const method = metadata.method || '';\n const clientFingerprint = metadata.clientFingerprint || '';\n\n // Call WASM function directly - pass all 7 string parameters\n const ptr0 = passStringToWasm0(\n userAgent,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(\n ipAddress,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(\n headers,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(\n timestamp,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len3 = WASM_VECTOR_LEN;\n const ptr4 = passStringToWasm0(\n url,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len4 = WASM_VECTOR_LEN;\n const ptr5 = passStringToWasm0(\n method,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len5 = WASM_VECTOR_LEN;\n const ptr6 = passStringToWasm0(\n clientFingerprint,\n wasmExports.__wbindgen_malloc,\n wasmExports.__wbindgen_realloc\n );\n const len6 = WASM_VECTOR_LEN;\n\n // Create metadata object in WASM (7 strings = 14 parameters)\n const metadataPtr = wasmExports.jsrequestmetadata_new(\n ptr0,\n len0,\n ptr1,\n len1,\n ptr2,\n len2,\n ptr3,\n len3,\n ptr4,\n len4,\n ptr5,\n len5,\n ptr6,\n len6\n );\n\n // Perform detection\n const resultPtr = wasmExports.detect_agent(metadataPtr);\n const result = takeObject(resultPtr);\n\n // Free WASM metadata\n wasmExports.__wbg_jsrequestmetadata_free(metadataPtr, 0);\n\n // Parse result\n const parsedResult = typeof result === 'string' ? JSON.parse(result) : result;\n\n return {\n isAgent: parsedResult.is_agent || false,\n isAiCrawler: parsedResult.is_ai_crawler || false,\n confidence: parsedResult.confidence || 0,\n agent: parsedResult.agent,\n verificationMethod: parsedResult.verification_method || 'wasm',\n riskLevel: parsedResult.risk_level || 'low',\n timestamp: parsedResult.timestamp || metadata.timestamp,\n reasons: parsedResult.reasons || [],\n };\n } catch (error) {\n console.error('WASM detection failed:', error);\n // Fall back to pattern detection\n return {\n isAgent: false,\n confidence: 0,\n verificationMethod: 'pattern',\n riskLevel: 'low',\n timestamp: metadata.timestamp,\n };\n }\n}\n\n/**\n * Create Edge Runtime compatible WASM middleware\n *\n * @example\n * ```typescript\n * // middleware.ts\n * import wasmModule from '@kya-os/agentshield/wasm?module';\n * import { createEdgeWasmMiddleware } from '@kya-os/agentshield-nextjs/edge-wasm-middleware';\n *\n * export const middleware = createEdgeWasmMiddleware({\n * wasmModule,\n * onAgentDetected: (result) => {\n * // Note: result.confidence is 0.0-1.0 scale\n * console.log(`AI Agent: ${result.agent} (${Math.round(result.confidence * 100)}% confidence)`);\n * }\n * });\n * ```\n */\nexport function createEdgeWasmMiddleware(\n config: EdgeAgentShieldConfig & {\n wasmModule: WebAssembly.Module;\n }\n) {\n const {\n wasmModule,\n onAgentDetected,\n blockOnHighConfidence = false,\n confidenceThreshold: configThreshold = 0.9,\n skipPaths = [],\n blockedResponse = {\n status: 403,\n message: 'AI agent access restricted',\n headers: { 'Content-Type': 'application/json' },\n },\n } = config;\n\n // Normalize threshold to 0.0-1.0 scale (handles both 0.9 and 90 inputs)\n const confidenceThreshold = normalizeConfidence(configThreshold, 'confidenceThreshold');\n\n // Initialize WASM on first load\n const initPromise = initializeEdgeWasm(wasmModule);\n\n return async function middleware(request: NextRequest) {\n // Check if path should be skipped\n const path = request.nextUrl.pathname;\n if (skipPaths.some((skip) => path.startsWith(skip))) {\n return NextResponse.next();\n }\n\n try {\n // Ensure WASM is initialized\n await initPromise;\n\n // Prepare metadata\n const metadata = {\n userAgent: request.headers.get('user-agent') || undefined,\n ipAddress:\n request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip') || undefined,\n headers: Object.fromEntries(request.headers.entries()),\n timestamp: new Date().toISOString(),\n };\n\n // Perform WASM detection\n const result = await detectWithWasm(metadata);\n\n // Evaluate enforcement decision\n // Note: this middleware uses 0-1 scale internally; convert to 0-100 for evaluateEnforcement\n const decision = evaluateEnforcement(\n { ...result, confidence: result.confidence * 100 },\n {\n confidenceThreshold: confidenceThreshold * 100,\n defaultAction: blockOnHighConfidence ? 'block' : 'allow',\n }\n );\n\n // Call user callback for any enforced agent (regardless of threshold)\n if (onAgentDetected && shouldEnforce(result)) {\n await onAgentDetected(result);\n }\n\n // Block if enforcement decision says to block\n if (decision.action === 'block') {\n return NextResponse.json(\n {\n error: blockedResponse.message,\n agent: result.agent,\n confidence: toPercent(result.confidence), // Convert to 0-100 for display\n },\n {\n status: blockedResponse.status || 403,\n headers: blockedResponse.headers || {},\n }\n );\n }\n\n // Add detection headers\n const response = NextResponse.next();\n if (result.isAgent) {\n response.headers.set('X-Agent-Detected', result.agent || 'unknown');\n response.headers.set('X-Agent-Confidence', String(toPercent(result.confidence)));\n response.headers.set('X-Agent-Verification', result.verificationMethod);\n }\n\n return response;\n } catch (error) {\n console.error('Edge WASM middleware error:', error);\n // Continue without blocking on error\n return NextResponse.next();\n }\n };\n}\n"]}
@@ -1,153 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { DetectionResult, DetectionInput } from '@kya-os/agentshield-shared';
3
-
4
- /**
5
- * Storage adapter types for AgentShield
6
- */
7
- /**
8
- * Agent detection event stored in the system
9
- */
10
- interface AgentDetectionEvent {
11
- eventId: string;
12
- sessionId: string;
13
- timestamp: string;
14
- agentType: string;
15
- agentName: string;
16
- confidence: number;
17
- path: string;
18
- userAgent?: string;
19
- ipAddress?: string;
20
- method: string;
21
- detectionReasons: string[];
22
- verificationMethod: string;
23
- detectionDetails?: {
24
- patterns?: string[];
25
- behaviors?: string[];
26
- fingerprintMatches?: string[];
27
- };
28
- }
29
- /**
30
- * Agent session information
31
- */
32
- interface AgentSession {
33
- sessionId: string;
34
- ipAddress?: string;
35
- userAgent?: string;
36
- agentType: string;
37
- agentName?: string;
38
- firstSeen: string;
39
- lastSeen: string;
40
- eventCount: number;
41
- paths: string[];
42
- averageConfidence: number;
43
- verificationMethods: string[];
44
- }
45
- /**
46
- * Storage adapter interface
47
- * All methods should be async for compatibility with different backends
48
- */
49
- interface StorageAdapter {
50
- /**
51
- * Store a detection event
52
- */
53
- storeEvent(event: AgentDetectionEvent): Promise<void>;
54
- /**
55
- * Get recent events
56
- */
57
- getRecentEvents(limit?: number): Promise<AgentDetectionEvent[]>;
58
- /**
59
- * Get events for a specific session
60
- */
61
- getSessionEvents(sessionId: string): Promise<AgentDetectionEvent[]>;
62
- /**
63
- * Store or update a session
64
- */
65
- storeSession(session: AgentSession): Promise<void>;
66
- /**
67
- * Get a session by ID
68
- */
69
- getSession(sessionId: string): Promise<AgentSession | null>;
70
- /**
71
- * Get recent sessions
72
- */
73
- getRecentSessions(limit?: number): Promise<AgentSession[]>;
74
- /**
75
- * Clean up old data (optional)
76
- */
77
- cleanup?(olderThan: Date): Promise<void>;
78
- }
79
- /**
80
- * Storage configuration options
81
- */
82
- interface StorageConfig {
83
- /**
84
- * Type of storage to use
85
- */
86
- type: 'redis' | 'memory' | 'custom';
87
- /**
88
- * Redis configuration (if type is 'redis')
89
- */
90
- redis?: {
91
- url: string;
92
- token: string;
93
- };
94
- /**
95
- * Custom storage adapter (if type is 'custom')
96
- */
97
- custom?: StorageAdapter;
98
- /**
99
- * TTL for stored data in seconds
100
- * Default: 86400 (24 hours)
101
- */
102
- ttl?: number;
103
- }
104
-
105
- /**
106
- * Enhanced Next.js middleware with all features built-in
107
- */
108
-
109
- /**
110
- * Enhanced configuration with built-in features
111
- */
112
- interface EnhancedMiddlewareConfig {
113
- /**
114
- * Storage configuration
115
- */
116
- storage?: StorageConfig;
117
- /**
118
- * Session tracking configuration
119
- */
120
- sessionTracking?: {
121
- enabled?: boolean;
122
- ttl?: number;
123
- };
124
- /**
125
- * Paths to skip detection
126
- */
127
- skipPaths?: string[];
128
- /**
129
- * Action when agent detected
130
- */
131
- onAgentDetected?: 'block' | 'log' | 'allow';
132
- /**
133
- * Custom handler for agent detection
134
- */
135
- onDetection?: (result: DetectionResult, context: DetectionInput) => void | Promise<void>;
136
- /**
137
- * Confidence threshold
138
- */
139
- confidenceThreshold?: number;
140
- /**
141
- * Response when blocking
142
- */
143
- blockedResponse?: {
144
- status?: number;
145
- message?: string;
146
- };
147
- }
148
- /**
149
- * Create enhanced AgentShield middleware with all features
150
- */
151
- declare function createEnhancedAgentShieldMiddleware(config?: EnhancedMiddlewareConfig): (request: NextRequest) => Promise<NextResponse>;
152
-
153
- export { type AgentDetectionEvent, type AgentSession, type EnhancedMiddlewareConfig, type StorageAdapter, type StorageConfig, createEnhancedAgentShieldMiddleware };
@@ -1,153 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { DetectionResult, DetectionInput } from '@kya-os/agentshield-shared';
3
-
4
- /**
5
- * Storage adapter types for AgentShield
6
- */
7
- /**
8
- * Agent detection event stored in the system
9
- */
10
- interface AgentDetectionEvent {
11
- eventId: string;
12
- sessionId: string;
13
- timestamp: string;
14
- agentType: string;
15
- agentName: string;
16
- confidence: number;
17
- path: string;
18
- userAgent?: string;
19
- ipAddress?: string;
20
- method: string;
21
- detectionReasons: string[];
22
- verificationMethod: string;
23
- detectionDetails?: {
24
- patterns?: string[];
25
- behaviors?: string[];
26
- fingerprintMatches?: string[];
27
- };
28
- }
29
- /**
30
- * Agent session information
31
- */
32
- interface AgentSession {
33
- sessionId: string;
34
- ipAddress?: string;
35
- userAgent?: string;
36
- agentType: string;
37
- agentName?: string;
38
- firstSeen: string;
39
- lastSeen: string;
40
- eventCount: number;
41
- paths: string[];
42
- averageConfidence: number;
43
- verificationMethods: string[];
44
- }
45
- /**
46
- * Storage adapter interface
47
- * All methods should be async for compatibility with different backends
48
- */
49
- interface StorageAdapter {
50
- /**
51
- * Store a detection event
52
- */
53
- storeEvent(event: AgentDetectionEvent): Promise<void>;
54
- /**
55
- * Get recent events
56
- */
57
- getRecentEvents(limit?: number): Promise<AgentDetectionEvent[]>;
58
- /**
59
- * Get events for a specific session
60
- */
61
- getSessionEvents(sessionId: string): Promise<AgentDetectionEvent[]>;
62
- /**
63
- * Store or update a session
64
- */
65
- storeSession(session: AgentSession): Promise<void>;
66
- /**
67
- * Get a session by ID
68
- */
69
- getSession(sessionId: string): Promise<AgentSession | null>;
70
- /**
71
- * Get recent sessions
72
- */
73
- getRecentSessions(limit?: number): Promise<AgentSession[]>;
74
- /**
75
- * Clean up old data (optional)
76
- */
77
- cleanup?(olderThan: Date): Promise<void>;
78
- }
79
- /**
80
- * Storage configuration options
81
- */
82
- interface StorageConfig {
83
- /**
84
- * Type of storage to use
85
- */
86
- type: 'redis' | 'memory' | 'custom';
87
- /**
88
- * Redis configuration (if type is 'redis')
89
- */
90
- redis?: {
91
- url: string;
92
- token: string;
93
- };
94
- /**
95
- * Custom storage adapter (if type is 'custom')
96
- */
97
- custom?: StorageAdapter;
98
- /**
99
- * TTL for stored data in seconds
100
- * Default: 86400 (24 hours)
101
- */
102
- ttl?: number;
103
- }
104
-
105
- /**
106
- * Enhanced Next.js middleware with all features built-in
107
- */
108
-
109
- /**
110
- * Enhanced configuration with built-in features
111
- */
112
- interface EnhancedMiddlewareConfig {
113
- /**
114
- * Storage configuration
115
- */
116
- storage?: StorageConfig;
117
- /**
118
- * Session tracking configuration
119
- */
120
- sessionTracking?: {
121
- enabled?: boolean;
122
- ttl?: number;
123
- };
124
- /**
125
- * Paths to skip detection
126
- */
127
- skipPaths?: string[];
128
- /**
129
- * Action when agent detected
130
- */
131
- onAgentDetected?: 'block' | 'log' | 'allow';
132
- /**
133
- * Custom handler for agent detection
134
- */
135
- onDetection?: (result: DetectionResult, context: DetectionInput) => void | Promise<void>;
136
- /**
137
- * Confidence threshold
138
- */
139
- confidenceThreshold?: number;
140
- /**
141
- * Response when blocking
142
- */
143
- blockedResponse?: {
144
- status?: number;
145
- message?: string;
146
- };
147
- }
148
- /**
149
- * Create enhanced AgentShield middleware with all features
150
- */
151
- declare function createEnhancedAgentShieldMiddleware(config?: EnhancedMiddlewareConfig): (request: NextRequest) => Promise<NextResponse>;
152
-
153
- export { type AgentDetectionEvent, type AgentSession, type EnhancedMiddlewareConfig, type StorageAdapter, type StorageConfig, createEnhancedAgentShieldMiddleware };