@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,105 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { AgentShieldConfig, DetectionResult } from '@kya-os/agentshield-shared';
3
- import { AgentShieldEvents } from '@kya-os/agentshield';
4
-
5
- /**
6
- * Next.js-specific type definitions
7
- */
8
-
9
- /**
10
- * Next.js middleware configuration
11
- */
12
- interface NextJSMiddlewareConfig extends Partial<AgentShieldConfig> {
13
- /**
14
- * Action to take when an agent is detected
15
- */
16
- onAgentDetected?: 'block' | 'redirect' | 'rewrite' | 'allow' | 'log';
17
- /**
18
- * Custom handler for agent detection
19
- * @deprecated Use 'events' instead. Will be removed in v1.0.0
20
- */
21
- onDetection?: (req: NextRequest, result: DetectionResult) => NextResponse | Promise<NextResponse> | void | Promise<void>;
22
- /**
23
- * Event handlers for detection events
24
- */
25
- events?: Partial<AgentShieldEvents>;
26
- /**
27
- * Path patterns to skip detection
28
- */
29
- skipPaths?: string[] | RegExp[];
30
- /**
31
- * Response when blocking agents
32
- */
33
- blockedResponse?: {
34
- status: number;
35
- message: string;
36
- headers?: Record<string, string>;
37
- };
38
- /**
39
- * Redirect URL when redirecting detected agents
40
- */
41
- redirectUrl?: string;
42
- /**
43
- * Rewrite URL when rewriting requests from detected agents
44
- */
45
- rewriteUrl?: string;
46
- /**
47
- * Confidence threshold for agent detection
48
- */
49
- confidenceThreshold?: number;
50
- /**
51
- * Enable WASM for enhanced detection
52
- */
53
- enableWasm?: boolean;
54
- /**
55
- * Session tracking configuration
56
- */
57
- sessionTracking?: {
58
- /**
59
- * Enable session tracking
60
- */
61
- enabled: boolean;
62
- /**
63
- * Cookie name for session storage
64
- * Default: '__agentshield_session'
65
- */
66
- cookieName?: string;
67
- /**
68
- * Cookie max age in seconds
69
- * Default: 3600 (1 hour)
70
- */
71
- cookieMaxAge?: number;
72
- /**
73
- * Encryption key for session data
74
- * Default: Uses AGENTSHIELD_SECRET env var or default key
75
- */
76
- encryptionKey?: string;
77
- };
78
- }
79
- /**
80
- * Extended NextRequest with AgentShield data
81
- */
82
- interface AgentShieldRequest extends NextRequest {
83
- agentShield?: {
84
- result?: DetectionResult;
85
- skipped: boolean;
86
- session?: {
87
- id: string;
88
- agent: string;
89
- confidence: number;
90
- detectedAt: number;
91
- expires: number;
92
- };
93
- };
94
- }
95
- /**
96
- * Detection context for hooks
97
- */
98
- interface DetectionContext {
99
- result: DetectionResult;
100
- request: NextRequest;
101
- userAgent?: string;
102
- ip?: string;
103
- }
104
-
105
- export type { AgentShieldRequest as A, DetectionContext as D, NextJSMiddlewareConfig as N };
@@ -1,63 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
-
3
- /**
4
- * WASM-enabled middleware for Next.js with AgentShield
5
- * Following official Next.js documentation for WebAssembly in Edge Runtime
6
- */
7
-
8
- interface WasmDetectionResult {
9
- isAgent: boolean;
10
- isAiCrawler?: boolean;
11
- confidence: number;
12
- agent?: string | undefined;
13
- verificationMethod: 'signature' | 'pattern' | 'none';
14
- riskLevel: 'low' | 'medium' | 'high';
15
- timestamp: string;
16
- }
17
- interface AgentShieldConfig {
18
- onAgentDetected?: (result: WasmDetectionResult) => void | Promise<void>;
19
- blockOnHighConfidence?: boolean;
20
- confidenceThreshold?: number;
21
- skipPaths?: string[];
22
- blockedResponse?: {
23
- status?: number;
24
- message?: string;
25
- headers?: Record<string, string>;
26
- };
27
- }
28
- /**
29
- * Create a WASM-enabled AgentShield middleware
30
- * This must be used with proper WASM module import at the top of middleware.ts
31
- *
32
- * @example
33
- * ```typescript
34
- * // middleware.ts
35
- * import wasmModule from '@kya-os/agentshield/wasm?module';
36
- * import { createWasmAgentShieldMiddleware } from '@kya-os/agentshield-nextjs';
37
- *
38
- * const wasmInstance = await WebAssembly.instantiate(wasmModule);
39
- *
40
- * export const middleware = createWasmAgentShieldMiddleware({
41
- * wasmInstance,
42
- * onAgentDetected: (result) => {
43
- * console.log(`Detected ${result.agent} with ${result.confidence * 100}% confidence`);
44
- * }
45
- * });
46
- * ```
47
- */
48
- declare function createWasmAgentShieldMiddleware(config: AgentShieldConfig & {
49
- wasmInstance?: WebAssembly.Instance;
50
- }): (request: NextRequest) => Promise<NextResponse<unknown>>;
51
- /**
52
- * Helper to load and instantiate WASM module
53
- * This should be called at the top of your middleware.ts file
54
- *
55
- * @example
56
- * ```typescript
57
- * import wasmModule from '@kya-os/agentshield/wasm?module';
58
- * const wasmInstance = await instantiateWasm(wasmModule);
59
- * ```
60
- */
61
- declare function instantiateWasm(wasmModule: WebAssembly.Module): Promise<WebAssembly.Instance>;
62
-
63
- export { type AgentShieldConfig, type WasmDetectionResult, createWasmAgentShieldMiddleware, instantiateWasm };
@@ -1,63 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
-
3
- /**
4
- * WASM-enabled middleware for Next.js with AgentShield
5
- * Following official Next.js documentation for WebAssembly in Edge Runtime
6
- */
7
-
8
- interface WasmDetectionResult {
9
- isAgent: boolean;
10
- isAiCrawler?: boolean;
11
- confidence: number;
12
- agent?: string | undefined;
13
- verificationMethod: 'signature' | 'pattern' | 'none';
14
- riskLevel: 'low' | 'medium' | 'high';
15
- timestamp: string;
16
- }
17
- interface AgentShieldConfig {
18
- onAgentDetected?: (result: WasmDetectionResult) => void | Promise<void>;
19
- blockOnHighConfidence?: boolean;
20
- confidenceThreshold?: number;
21
- skipPaths?: string[];
22
- blockedResponse?: {
23
- status?: number;
24
- message?: string;
25
- headers?: Record<string, string>;
26
- };
27
- }
28
- /**
29
- * Create a WASM-enabled AgentShield middleware
30
- * This must be used with proper WASM module import at the top of middleware.ts
31
- *
32
- * @example
33
- * ```typescript
34
- * // middleware.ts
35
- * import wasmModule from '@kya-os/agentshield/wasm?module';
36
- * import { createWasmAgentShieldMiddleware } from '@kya-os/agentshield-nextjs';
37
- *
38
- * const wasmInstance = await WebAssembly.instantiate(wasmModule);
39
- *
40
- * export const middleware = createWasmAgentShieldMiddleware({
41
- * wasmInstance,
42
- * onAgentDetected: (result) => {
43
- * console.log(`Detected ${result.agent} with ${result.confidence * 100}% confidence`);
44
- * }
45
- * });
46
- * ```
47
- */
48
- declare function createWasmAgentShieldMiddleware(config: AgentShieldConfig & {
49
- wasmInstance?: WebAssembly.Instance;
50
- }): (request: NextRequest) => Promise<NextResponse<unknown>>;
51
- /**
52
- * Helper to load and instantiate WASM module
53
- * This should be called at the top of your middleware.ts file
54
- *
55
- * @example
56
- * ```typescript
57
- * import wasmModule from '@kya-os/agentshield/wasm?module';
58
- * const wasmInstance = await instantiateWasm(wasmModule);
59
- * ```
60
- */
61
- declare function instantiateWasm(wasmModule: WebAssembly.Module): Promise<WebAssembly.Instance>;
62
-
63
- export { type AgentShieldConfig, type WasmDetectionResult, createWasmAgentShieldMiddleware, instantiateWasm };
@@ -1,98 +0,0 @@
1
- 'use strict';
2
-
3
- var server = require('next/server');
4
- var agentshield = require('@kya-os/agentshield');
5
- var agentshieldShared = require('@kya-os/agentshield-shared');
6
-
7
- // src/wasm-middleware.ts
8
- function createWasmAgentShieldMiddleware(config) {
9
- const {
10
- onAgentDetected,
11
- blockOnHighConfidence = false,
12
- confidenceThreshold = 80,
13
- // Updated to 0-100 scale (was 0.8)
14
- skipPaths = [],
15
- blockedResponse = {
16
- status: 403,
17
- message: "Access denied: AI agent detected",
18
- headers: { "Content-Type": "application/json" }
19
- },
20
- wasmInstance
21
- } = config;
22
- return async function middleware(request) {
23
- const path = request.nextUrl.pathname;
24
- if (skipPaths.some((skip) => path.startsWith(skip))) {
25
- return server.NextResponse.next();
26
- }
27
- try {
28
- const detector = new agentshield.AgentDetector();
29
- const hasWasm = !!wasmInstance;
30
- const metadata = {
31
- userAgent: request.headers.get("user-agent") || void 0,
32
- ipAddress: request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip") || void 0,
33
- headers: Object.fromEntries(request.headers.entries()),
34
- timestamp: /* @__PURE__ */ new Date()
35
- };
36
- const result = await detector.analyze(metadata);
37
- const enhancedResult = {
38
- isAgent: result.isAgent,
39
- isAiCrawler: result.isAiCrawler,
40
- confidence: hasWasm && result.confidence > 85 ? Math.min(result.confidence * 1.15, 100) : result.confidence,
41
- agent: result.detectedAgent?.name || void 0,
42
- verificationMethod: hasWasm && result.confidence > 85 ? "signature" : "pattern",
43
- // Updated to 0-100 scale
44
- riskLevel: result.confidence > 90 ? "high" : result.confidence > 70 ? "medium" : "low",
45
- // Updated to 0-100 scale (was 0.7)
46
- timestamp: result.timestamp instanceof Date ? result.timestamp.toISOString() : new Date(result.timestamp).toISOString()
47
- };
48
- const decision = agentshieldShared.evaluateEnforcement(enhancedResult, {
49
- confidenceThreshold,
50
- defaultAction: blockOnHighConfidence ? "block" : "allow"
51
- });
52
- if (onAgentDetected && agentshieldShared.shouldEnforce(enhancedResult)) {
53
- await onAgentDetected(enhancedResult);
54
- }
55
- if (decision.action === "block") {
56
- return server.NextResponse.json(
57
- {
58
- error: blockedResponse.message,
59
- agent: enhancedResult.agent,
60
- confidence: Math.round(enhancedResult.confidence)
61
- },
62
- {
63
- status: blockedResponse.status || 403,
64
- headers: blockedResponse.headers || {}
65
- }
66
- );
67
- }
68
- const response = server.NextResponse.next();
69
- if (enhancedResult.isAgent) {
70
- response.headers.set("X-Agent-Detected", enhancedResult.agent || "unknown");
71
- response.headers.set(
72
- "X-Agent-Confidence",
73
- String(Math.round(enhancedResult.confidence * 100))
74
- );
75
- response.headers.set("X-Agent-Verification", enhancedResult.verificationMethod);
76
- }
77
- return response;
78
- } catch (error) {
79
- console.error("AgentShield middleware error:", error);
80
- return server.NextResponse.next();
81
- }
82
- };
83
- }
84
- async function instantiateWasm(wasmModule) {
85
- try {
86
- const instance = await WebAssembly.instantiate(wasmModule);
87
- console.log("\u2705 AgentShield: WASM module loaded for cryptographic verification");
88
- return instance;
89
- } catch (error) {
90
- console.warn("\u26A0\uFE0F AgentShield: Failed to instantiate WASM module", error);
91
- throw error;
92
- }
93
- }
94
-
95
- exports.createWasmAgentShieldMiddleware = createWasmAgentShieldMiddleware;
96
- exports.instantiateWasm = instantiateWasm;
97
- //# sourceMappingURL=wasm-middleware.js.map
98
- //# sourceMappingURL=wasm-middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/wasm-middleware.ts"],"names":["NextResponse","AgentDetector","evaluateEnforcement","shouldEnforce"],"mappings":"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","file":"wasm-middleware.js","sourcesContent":["/**\n * WASM-enabled middleware for Next.js with AgentShield\n * Following official Next.js documentation for WebAssembly in Edge Runtime\n */\n\nimport type { NextRequest } from 'next/server';\nimport { NextResponse } from 'next/server';\nimport { AgentDetector } from '@kya-os/agentshield';\nimport { evaluateEnforcement, shouldEnforce } from '@kya-os/agentshield-shared';\n\n// Type definitions for WASM detection result\nexport interface WasmDetectionResult {\n isAgent: boolean;\n isAiCrawler?: boolean;\n confidence: number;\n agent?: string | undefined;\n verificationMethod: 'signature' | 'pattern' | 'none';\n riskLevel: 'low' | 'medium' | 'high';\n timestamp: string;\n}\n\nexport interface AgentShieldConfig {\n onAgentDetected?: (result: WasmDetectionResult) => void | Promise<void>;\n blockOnHighConfidence?: boolean;\n confidenceThreshold?: number;\n skipPaths?: string[];\n blockedResponse?: {\n status?: number;\n message?: string;\n headers?: Record<string, string>;\n };\n}\n\n/**\n * Create a WASM-enabled AgentShield middleware\n * This must be used with proper WASM module import at the top of middleware.ts\n *\n * @example\n * ```typescript\n * // middleware.ts\n * import wasmModule from '@kya-os/agentshield/wasm?module';\n * import { createWasmAgentShieldMiddleware } from '@kya-os/agentshield-nextjs';\n *\n * const wasmInstance = await WebAssembly.instantiate(wasmModule);\n *\n * export const middleware = createWasmAgentShieldMiddleware({\n * wasmInstance,\n * onAgentDetected: (result) => {\n * console.log(`Detected ${result.agent} with ${result.confidence * 100}% confidence`);\n * }\n * });\n * ```\n */\nexport function createWasmAgentShieldMiddleware(\n config: AgentShieldConfig & {\n wasmInstance?: WebAssembly.Instance;\n }\n) {\n const {\n onAgentDetected,\n blockOnHighConfidence = false,\n confidenceThreshold = 80, // Updated to 0-100 scale (was 0.8)\n skipPaths = [],\n blockedResponse = {\n status: 403,\n message: 'Access denied: AI agent detected',\n headers: { 'Content-Type': 'application/json' },\n },\n wasmInstance,\n } = config;\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 // Create detector with or without WASM\n const detector = new AgentDetector();\n\n // If WASM instance is provided, we'll have higher confidence\n const hasWasm = !!wasmInstance;\n\n // Prepare request 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(),\n };\n\n // Perform detection\n const result = await detector.analyze(metadata);\n\n // Enhance result with WASM verification if available\n const enhancedResult: WasmDetectionResult = {\n isAgent: result.isAgent,\n isAiCrawler: (result as unknown as Record<string, unknown>).isAiCrawler as\n | boolean\n | undefined,\n confidence:\n hasWasm && result.confidence > 85 // Updated to 0-100 scale (was 0.85)\n ? Math.min(result.confidence * 1.15, 100) // Boost confidence with WASM, cap at 100\n : result.confidence,\n agent: result.detectedAgent?.name || undefined,\n verificationMethod: hasWasm && result.confidence > 85 ? 'signature' : 'pattern', // Updated to 0-100 scale\n riskLevel:\n result.confidence > 90\n ? 'high' // Updated to 0-100 scale (was 0.9)\n : result.confidence > 70\n ? 'medium'\n : 'low', // Updated to 0-100 scale (was 0.7)\n timestamp:\n result.timestamp instanceof Date\n ? result.timestamp.toISOString()\n : new Date(result.timestamp).toISOString(),\n };\n\n // Evaluate enforcement decision\n const decision = evaluateEnforcement(enhancedResult, {\n confidenceThreshold,\n defaultAction: blockOnHighConfidence ? 'block' : 'allow',\n });\n\n // Call user callback for any enforced agent (regardless of threshold)\n if (onAgentDetected && shouldEnforce(enhancedResult)) {\n await onAgentDetected(enhancedResult);\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: enhancedResult.agent,\n confidence: Math.round(enhancedResult.confidence),\n },\n {\n status: blockedResponse.status || 403,\n headers: blockedResponse.headers || {},\n }\n );\n }\n\n // Add detection headers for monitoring\n const response = NextResponse.next();\n if (enhancedResult.isAgent) {\n response.headers.set('X-Agent-Detected', enhancedResult.agent || 'unknown');\n response.headers.set(\n 'X-Agent-Confidence',\n String(Math.round(enhancedResult.confidence * 100))\n );\n response.headers.set('X-Agent-Verification', enhancedResult.verificationMethod);\n }\n\n return response;\n } catch (error) {\n console.error('AgentShield middleware error:', error);\n // On error, continue without blocking\n return NextResponse.next();\n }\n };\n}\n\n/**\n * Helper to load and instantiate WASM module\n * This should be called at the top of your middleware.ts file\n *\n * @example\n * ```typescript\n * import wasmModule from '@kya-os/agentshield/wasm?module';\n * const wasmInstance = await instantiateWasm(wasmModule);\n * ```\n */\nexport async function instantiateWasm(\n wasmModule: WebAssembly.Module\n): Promise<WebAssembly.Instance> {\n try {\n const instance = await WebAssembly.instantiate(wasmModule);\n console.log('✅ AgentShield: WASM module loaded for cryptographic verification');\n return instance;\n } catch (error) {\n console.warn('⚠️ AgentShield: Failed to instantiate WASM module', error);\n throw error;\n }\n}\n"]}
@@ -1,95 +0,0 @@
1
- import { NextResponse } from 'next/server';
2
- import { AgentDetector } from '@kya-os/agentshield';
3
- import { evaluateEnforcement, shouldEnforce } from '@kya-os/agentshield-shared';
4
-
5
- // src/wasm-middleware.ts
6
- function createWasmAgentShieldMiddleware(config) {
7
- const {
8
- onAgentDetected,
9
- blockOnHighConfidence = false,
10
- confidenceThreshold = 80,
11
- // Updated to 0-100 scale (was 0.8)
12
- skipPaths = [],
13
- blockedResponse = {
14
- status: 403,
15
- message: "Access denied: AI agent detected",
16
- headers: { "Content-Type": "application/json" }
17
- },
18
- wasmInstance
19
- } = config;
20
- return async function middleware(request) {
21
- const path = request.nextUrl.pathname;
22
- if (skipPaths.some((skip) => path.startsWith(skip))) {
23
- return NextResponse.next();
24
- }
25
- try {
26
- const detector = new AgentDetector();
27
- const hasWasm = !!wasmInstance;
28
- const metadata = {
29
- userAgent: request.headers.get("user-agent") || void 0,
30
- ipAddress: request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip") || void 0,
31
- headers: Object.fromEntries(request.headers.entries()),
32
- timestamp: /* @__PURE__ */ new Date()
33
- };
34
- const result = await detector.analyze(metadata);
35
- const enhancedResult = {
36
- isAgent: result.isAgent,
37
- isAiCrawler: result.isAiCrawler,
38
- confidence: hasWasm && result.confidence > 85 ? Math.min(result.confidence * 1.15, 100) : result.confidence,
39
- agent: result.detectedAgent?.name || void 0,
40
- verificationMethod: hasWasm && result.confidence > 85 ? "signature" : "pattern",
41
- // Updated to 0-100 scale
42
- riskLevel: result.confidence > 90 ? "high" : result.confidence > 70 ? "medium" : "low",
43
- // Updated to 0-100 scale (was 0.7)
44
- timestamp: result.timestamp instanceof Date ? result.timestamp.toISOString() : new Date(result.timestamp).toISOString()
45
- };
46
- const decision = evaluateEnforcement(enhancedResult, {
47
- confidenceThreshold,
48
- defaultAction: blockOnHighConfidence ? "block" : "allow"
49
- });
50
- if (onAgentDetected && shouldEnforce(enhancedResult)) {
51
- await onAgentDetected(enhancedResult);
52
- }
53
- if (decision.action === "block") {
54
- return NextResponse.json(
55
- {
56
- error: blockedResponse.message,
57
- agent: enhancedResult.agent,
58
- confidence: Math.round(enhancedResult.confidence)
59
- },
60
- {
61
- status: blockedResponse.status || 403,
62
- headers: blockedResponse.headers || {}
63
- }
64
- );
65
- }
66
- const response = NextResponse.next();
67
- if (enhancedResult.isAgent) {
68
- response.headers.set("X-Agent-Detected", enhancedResult.agent || "unknown");
69
- response.headers.set(
70
- "X-Agent-Confidence",
71
- String(Math.round(enhancedResult.confidence * 100))
72
- );
73
- response.headers.set("X-Agent-Verification", enhancedResult.verificationMethod);
74
- }
75
- return response;
76
- } catch (error) {
77
- console.error("AgentShield middleware error:", error);
78
- return NextResponse.next();
79
- }
80
- };
81
- }
82
- async function instantiateWasm(wasmModule) {
83
- try {
84
- const instance = await WebAssembly.instantiate(wasmModule);
85
- console.log("\u2705 AgentShield: WASM module loaded for cryptographic verification");
86
- return instance;
87
- } catch (error) {
88
- console.warn("\u26A0\uFE0F AgentShield: Failed to instantiate WASM module", error);
89
- throw error;
90
- }
91
- }
92
-
93
- export { createWasmAgentShieldMiddleware, instantiateWasm };
94
- //# sourceMappingURL=wasm-middleware.mjs.map
95
- //# sourceMappingURL=wasm-middleware.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/wasm-middleware.ts"],"names":[],"mappings":"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","file":"wasm-middleware.mjs","sourcesContent":["/**\n * WASM-enabled middleware for Next.js with AgentShield\n * Following official Next.js documentation for WebAssembly in Edge Runtime\n */\n\nimport type { NextRequest } from 'next/server';\nimport { NextResponse } from 'next/server';\nimport { AgentDetector } from '@kya-os/agentshield';\nimport { evaluateEnforcement, shouldEnforce } from '@kya-os/agentshield-shared';\n\n// Type definitions for WASM detection result\nexport interface WasmDetectionResult {\n isAgent: boolean;\n isAiCrawler?: boolean;\n confidence: number;\n agent?: string | undefined;\n verificationMethod: 'signature' | 'pattern' | 'none';\n riskLevel: 'low' | 'medium' | 'high';\n timestamp: string;\n}\n\nexport interface AgentShieldConfig {\n onAgentDetected?: (result: WasmDetectionResult) => void | Promise<void>;\n blockOnHighConfidence?: boolean;\n confidenceThreshold?: number;\n skipPaths?: string[];\n blockedResponse?: {\n status?: number;\n message?: string;\n headers?: Record<string, string>;\n };\n}\n\n/**\n * Create a WASM-enabled AgentShield middleware\n * This must be used with proper WASM module import at the top of middleware.ts\n *\n * @example\n * ```typescript\n * // middleware.ts\n * import wasmModule from '@kya-os/agentshield/wasm?module';\n * import { createWasmAgentShieldMiddleware } from '@kya-os/agentshield-nextjs';\n *\n * const wasmInstance = await WebAssembly.instantiate(wasmModule);\n *\n * export const middleware = createWasmAgentShieldMiddleware({\n * wasmInstance,\n * onAgentDetected: (result) => {\n * console.log(`Detected ${result.agent} with ${result.confidence * 100}% confidence`);\n * }\n * });\n * ```\n */\nexport function createWasmAgentShieldMiddleware(\n config: AgentShieldConfig & {\n wasmInstance?: WebAssembly.Instance;\n }\n) {\n const {\n onAgentDetected,\n blockOnHighConfidence = false,\n confidenceThreshold = 80, // Updated to 0-100 scale (was 0.8)\n skipPaths = [],\n blockedResponse = {\n status: 403,\n message: 'Access denied: AI agent detected',\n headers: { 'Content-Type': 'application/json' },\n },\n wasmInstance,\n } = config;\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 // Create detector with or without WASM\n const detector = new AgentDetector();\n\n // If WASM instance is provided, we'll have higher confidence\n const hasWasm = !!wasmInstance;\n\n // Prepare request 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(),\n };\n\n // Perform detection\n const result = await detector.analyze(metadata);\n\n // Enhance result with WASM verification if available\n const enhancedResult: WasmDetectionResult = {\n isAgent: result.isAgent,\n isAiCrawler: (result as unknown as Record<string, unknown>).isAiCrawler as\n | boolean\n | undefined,\n confidence:\n hasWasm && result.confidence > 85 // Updated to 0-100 scale (was 0.85)\n ? Math.min(result.confidence * 1.15, 100) // Boost confidence with WASM, cap at 100\n : result.confidence,\n agent: result.detectedAgent?.name || undefined,\n verificationMethod: hasWasm && result.confidence > 85 ? 'signature' : 'pattern', // Updated to 0-100 scale\n riskLevel:\n result.confidence > 90\n ? 'high' // Updated to 0-100 scale (was 0.9)\n : result.confidence > 70\n ? 'medium'\n : 'low', // Updated to 0-100 scale (was 0.7)\n timestamp:\n result.timestamp instanceof Date\n ? result.timestamp.toISOString()\n : new Date(result.timestamp).toISOString(),\n };\n\n // Evaluate enforcement decision\n const decision = evaluateEnforcement(enhancedResult, {\n confidenceThreshold,\n defaultAction: blockOnHighConfidence ? 'block' : 'allow',\n });\n\n // Call user callback for any enforced agent (regardless of threshold)\n if (onAgentDetected && shouldEnforce(enhancedResult)) {\n await onAgentDetected(enhancedResult);\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: enhancedResult.agent,\n confidence: Math.round(enhancedResult.confidence),\n },\n {\n status: blockedResponse.status || 403,\n headers: blockedResponse.headers || {},\n }\n );\n }\n\n // Add detection headers for monitoring\n const response = NextResponse.next();\n if (enhancedResult.isAgent) {\n response.headers.set('X-Agent-Detected', enhancedResult.agent || 'unknown');\n response.headers.set(\n 'X-Agent-Confidence',\n String(Math.round(enhancedResult.confidence * 100))\n );\n response.headers.set('X-Agent-Verification', enhancedResult.verificationMethod);\n }\n\n return response;\n } catch (error) {\n console.error('AgentShield middleware error:', error);\n // On error, continue without blocking\n return NextResponse.next();\n }\n };\n}\n\n/**\n * Helper to load and instantiate WASM module\n * This should be called at the top of your middleware.ts file\n *\n * @example\n * ```typescript\n * import wasmModule from '@kya-os/agentshield/wasm?module';\n * const wasmInstance = await instantiateWasm(wasmModule);\n * ```\n */\nexport async function instantiateWasm(\n wasmModule: WebAssembly.Module\n): Promise<WebAssembly.Instance> {\n try {\n const instance = await WebAssembly.instantiate(wasmModule);\n console.log('✅ AgentShield: WASM module loaded for cryptographic verification');\n return instance;\n } catch (error) {\n console.warn('⚠️ AgentShield: Failed to instantiate WASM module', error);\n throw error;\n }\n}\n"]}
@@ -1,46 +0,0 @@
1
- /**
2
- * WASM Setup for AgentShield in Next.js Edge Runtime
3
- *
4
- * This module handles WASM initialization for cryptographic signature verification.
5
- * Designed to work without top-level await to avoid Next.js middleware issues.
6
- *
7
- * Usage in middleware.ts:
8
- * ```typescript
9
- * import { setupWasm } from '@kya-os/agentshield-nextjs/wasm-setup';
10
- * import { createAgentShieldMiddleware } from '@kya-os/agentshield-nextjs';
11
- *
12
- * export async function middleware(request: NextRequest) {
13
- * // Initialize WASM inside the middleware function
14
- * await setupWasm();
15
- *
16
- * const agentShieldMiddleware = createAgentShieldMiddleware({...});
17
- * return agentShieldMiddleware(request);
18
- * }
19
- * ```
20
- */
21
- /**
22
- * Initialize WASM module for AgentShield
23
- *
24
- * This function:
25
- * - Loads WASM in production/Edge Runtime for cryptographic verification
26
- * - Skips WASM in test environments (Jest) automatically
27
- * - Is safe to call multiple times (idempotent)
28
- * - Handles errors gracefully with fallback to pattern detection
29
- *
30
- * @returns Promise that resolves when initialization is complete
31
- */
32
- declare function setupWasm(): Promise<void>;
33
- /**
34
- * Check if WASM has been initialized
35
- *
36
- * @returns true if WASM setup has been attempted (success or failure)
37
- */
38
- declare function isWasmInitialized(): boolean;
39
- /**
40
- * Reset WASM initialization state (mainly for testing)
41
- *
42
- * @internal
43
- */
44
- declare function resetWasmState(): void;
45
-
46
- export { isWasmInitialized, resetWasmState, setupWasm };
@@ -1,46 +0,0 @@
1
- /**
2
- * WASM Setup for AgentShield in Next.js Edge Runtime
3
- *
4
- * This module handles WASM initialization for cryptographic signature verification.
5
- * Designed to work without top-level await to avoid Next.js middleware issues.
6
- *
7
- * Usage in middleware.ts:
8
- * ```typescript
9
- * import { setupWasm } from '@kya-os/agentshield-nextjs/wasm-setup';
10
- * import { createAgentShieldMiddleware } from '@kya-os/agentshield-nextjs';
11
- *
12
- * export async function middleware(request: NextRequest) {
13
- * // Initialize WASM inside the middleware function
14
- * await setupWasm();
15
- *
16
- * const agentShieldMiddleware = createAgentShieldMiddleware({...});
17
- * return agentShieldMiddleware(request);
18
- * }
19
- * ```
20
- */
21
- /**
22
- * Initialize WASM module for AgentShield
23
- *
24
- * This function:
25
- * - Loads WASM in production/Edge Runtime for cryptographic verification
26
- * - Skips WASM in test environments (Jest) automatically
27
- * - Is safe to call multiple times (idempotent)
28
- * - Handles errors gracefully with fallback to pattern detection
29
- *
30
- * @returns Promise that resolves when initialization is complete
31
- */
32
- declare function setupWasm(): Promise<void>;
33
- /**
34
- * Check if WASM has been initialized
35
- *
36
- * @returns true if WASM setup has been attempted (success or failure)
37
- */
38
- declare function isWasmInitialized(): boolean;
39
- /**
40
- * Reset WASM initialization state (mainly for testing)
41
- *
42
- * @internal
43
- */
44
- declare function resetWasmState(): void;
45
-
46
- export { isWasmInitialized, resetWasmState, setupWasm };