@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,140 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { EnforcementDecision } from './api-client.mjs';
3
- import '@kya-os/agentshield-shared';
4
-
5
- /**
6
- * API-based AgentShield Middleware for Next.js
7
- *
8
- * This middleware uses the AgentShield API for detection and enforcement,
9
- * instead of running detection locally. This approach:
10
- *
11
- * 1. Works reliably in Edge Runtime (no WASM loading issues)
12
- * 2. Ensures consistent detection across all platforms
13
- * 3. Applies centralized policies from the dashboard
14
- * 4. Supports deny lists, thresholds, and path rules
15
- *
16
- * @example
17
- * ```typescript
18
- * // middleware.ts
19
- * import { withAgentShield } from '@kya-os/agentshield-nextjs/api-middleware';
20
- *
21
- * export default withAgentShield({
22
- * apiKey: process.env.AGENTSHIELD_API_KEY!,
23
- * // Optional overrides:
24
- * onBlock: 'redirect', // 'block' | 'redirect' | 'challenge'
25
- * redirectUrl: '/blocked',
26
- * skipPaths: ['/api/health', '/_next/*'],
27
- * });
28
- *
29
- * export const config = {
30
- * matcher: ['/((?!_next/static|favicon.ico).*)'],
31
- * };
32
- * ```
33
- */
34
-
35
- /**
36
- * Middleware configuration
37
- */
38
- interface AgentShieldMiddlewareConfig {
39
- /** API key (or use AGENTSHIELD_API_KEY env var) */
40
- apiKey?: string;
41
- /** API base URL (defaults to production) */
42
- apiUrl?: string;
43
- /**
44
- * Use edge detection for lower latency (~30-50ms vs ~150ms) and better coverage.
45
- * Edge detection can identify non-JS clients (curl, Python, Claude Code WebFetch)
46
- * that the pixel cannot detect since they don't execute JavaScript.
47
- * Set to false to use the Vercel API instead.
48
- * @default true
49
- */
50
- useEdge?: boolean;
51
- /** Request timeout in ms (default: 5000) */
52
- timeout?: number;
53
- /**
54
- * Action to take when an agent should be blocked
55
- * - 'block': Return 403 response
56
- * - 'redirect': Redirect to redirectUrl
57
- * - 'challenge': Show a challenge page (future)
58
- * Default: uses policy from dashboard
59
- */
60
- onBlock?: 'block' | 'redirect' | 'challenge';
61
- /**
62
- * URL to redirect to when blocking (if onBlock is 'redirect')
63
- * Default: uses redirectUrl from dashboard policy
64
- */
65
- redirectUrl?: string;
66
- /**
67
- * How the middleware handles a `redirect` / `instruct` action.
68
- *
69
- * - `'instruct'` (default): return HTTP 401 with an MCP-I Link header + JSON
70
- * body pointing the agent at the redirect URL. LLMs surface the URL as a
71
- * clickable link for the user. Matches the Cloudflare Gateway contract.
72
- * - `'http'`: legacy behavior — return HTTP 302 with `Location`. Most LLM
73
- * fetchers won't follow the redirect, so this is only useful when your
74
- * traffic is real browsers.
75
- *
76
- * @default 'instruct'
77
- */
78
- redirectMode?: 'instruct' | 'http';
79
- /**
80
- * Custom blocked response
81
- */
82
- blockedResponse?: {
83
- status?: number;
84
- message?: string;
85
- headers?: Record<string, string>;
86
- };
87
- /**
88
- * Paths to skip (in addition to dashboard policy)
89
- * Supports glob patterns: '/api/*', '/_next/*'
90
- */
91
- skipPaths?: string[];
92
- /**
93
- * Only enforce on these paths (overrides dashboard policy)
94
- */
95
- includePaths?: string[];
96
- /**
97
- * Callback when an agent is detected
98
- */
99
- onAgentDetected?: (request: NextRequest, decision: EnforcementDecision) => void | Promise<void>;
100
- /**
101
- * Callback to customize the blocked response
102
- */
103
- customBlockedResponse?: (request: NextRequest, decision: EnforcementDecision) => NextResponse | Promise<NextResponse>;
104
- /**
105
- * Whether to fail open (allow) on API errors
106
- * Default: true (recommended for production)
107
- */
108
- failOpen?: boolean;
109
- /**
110
- * Enable debug logging
111
- */
112
- debug?: boolean;
113
- }
114
- /**
115
- * Create AgentShield middleware with API-based detection
116
- *
117
- * @example
118
- * ```typescript
119
- * // middleware.ts
120
- * import { withAgentShield } from '@kya-os/agentshield-nextjs/api-middleware';
121
- *
122
- * export default withAgentShield({
123
- * onBlock: 'block',
124
- * skipPaths: ['/api/health'],
125
- * });
126
- * ```
127
- */
128
- declare function withAgentShield(config?: AgentShieldMiddlewareConfig): (request: NextRequest) => Promise<NextResponse>;
129
- /**
130
- * Convenience export for simple setup
131
- *
132
- * @example
133
- * ```typescript
134
- * // middleware.ts
135
- * export { agentShieldMiddleware as default } from '@kya-os/agentshield-nextjs/api-middleware';
136
- * ```
137
- */
138
- declare const agentShieldMiddleware: (request: NextRequest) => Promise<NextResponse>;
139
-
140
- export { type AgentShieldMiddlewareConfig, agentShieldMiddleware, withAgentShield };
@@ -1,140 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { EnforcementDecision } from './api-client.js';
3
- import '@kya-os/agentshield-shared';
4
-
5
- /**
6
- * API-based AgentShield Middleware for Next.js
7
- *
8
- * This middleware uses the AgentShield API for detection and enforcement,
9
- * instead of running detection locally. This approach:
10
- *
11
- * 1. Works reliably in Edge Runtime (no WASM loading issues)
12
- * 2. Ensures consistent detection across all platforms
13
- * 3. Applies centralized policies from the dashboard
14
- * 4. Supports deny lists, thresholds, and path rules
15
- *
16
- * @example
17
- * ```typescript
18
- * // middleware.ts
19
- * import { withAgentShield } from '@kya-os/agentshield-nextjs/api-middleware';
20
- *
21
- * export default withAgentShield({
22
- * apiKey: process.env.AGENTSHIELD_API_KEY!,
23
- * // Optional overrides:
24
- * onBlock: 'redirect', // 'block' | 'redirect' | 'challenge'
25
- * redirectUrl: '/blocked',
26
- * skipPaths: ['/api/health', '/_next/*'],
27
- * });
28
- *
29
- * export const config = {
30
- * matcher: ['/((?!_next/static|favicon.ico).*)'],
31
- * };
32
- * ```
33
- */
34
-
35
- /**
36
- * Middleware configuration
37
- */
38
- interface AgentShieldMiddlewareConfig {
39
- /** API key (or use AGENTSHIELD_API_KEY env var) */
40
- apiKey?: string;
41
- /** API base URL (defaults to production) */
42
- apiUrl?: string;
43
- /**
44
- * Use edge detection for lower latency (~30-50ms vs ~150ms) and better coverage.
45
- * Edge detection can identify non-JS clients (curl, Python, Claude Code WebFetch)
46
- * that the pixel cannot detect since they don't execute JavaScript.
47
- * Set to false to use the Vercel API instead.
48
- * @default true
49
- */
50
- useEdge?: boolean;
51
- /** Request timeout in ms (default: 5000) */
52
- timeout?: number;
53
- /**
54
- * Action to take when an agent should be blocked
55
- * - 'block': Return 403 response
56
- * - 'redirect': Redirect to redirectUrl
57
- * - 'challenge': Show a challenge page (future)
58
- * Default: uses policy from dashboard
59
- */
60
- onBlock?: 'block' | 'redirect' | 'challenge';
61
- /**
62
- * URL to redirect to when blocking (if onBlock is 'redirect')
63
- * Default: uses redirectUrl from dashboard policy
64
- */
65
- redirectUrl?: string;
66
- /**
67
- * How the middleware handles a `redirect` / `instruct` action.
68
- *
69
- * - `'instruct'` (default): return HTTP 401 with an MCP-I Link header + JSON
70
- * body pointing the agent at the redirect URL. LLMs surface the URL as a
71
- * clickable link for the user. Matches the Cloudflare Gateway contract.
72
- * - `'http'`: legacy behavior — return HTTP 302 with `Location`. Most LLM
73
- * fetchers won't follow the redirect, so this is only useful when your
74
- * traffic is real browsers.
75
- *
76
- * @default 'instruct'
77
- */
78
- redirectMode?: 'instruct' | 'http';
79
- /**
80
- * Custom blocked response
81
- */
82
- blockedResponse?: {
83
- status?: number;
84
- message?: string;
85
- headers?: Record<string, string>;
86
- };
87
- /**
88
- * Paths to skip (in addition to dashboard policy)
89
- * Supports glob patterns: '/api/*', '/_next/*'
90
- */
91
- skipPaths?: string[];
92
- /**
93
- * Only enforce on these paths (overrides dashboard policy)
94
- */
95
- includePaths?: string[];
96
- /**
97
- * Callback when an agent is detected
98
- */
99
- onAgentDetected?: (request: NextRequest, decision: EnforcementDecision) => void | Promise<void>;
100
- /**
101
- * Callback to customize the blocked response
102
- */
103
- customBlockedResponse?: (request: NextRequest, decision: EnforcementDecision) => NextResponse | Promise<NextResponse>;
104
- /**
105
- * Whether to fail open (allow) on API errors
106
- * Default: true (recommended for production)
107
- */
108
- failOpen?: boolean;
109
- /**
110
- * Enable debug logging
111
- */
112
- debug?: boolean;
113
- }
114
- /**
115
- * Create AgentShield middleware with API-based detection
116
- *
117
- * @example
118
- * ```typescript
119
- * // middleware.ts
120
- * import { withAgentShield } from '@kya-os/agentshield-nextjs/api-middleware';
121
- *
122
- * export default withAgentShield({
123
- * onBlock: 'block',
124
- * skipPaths: ['/api/health'],
125
- * });
126
- * ```
127
- */
128
- declare function withAgentShield(config?: AgentShieldMiddlewareConfig): (request: NextRequest) => Promise<NextResponse>;
129
- /**
130
- * Convenience export for simple setup
131
- *
132
- * @example
133
- * ```typescript
134
- * // middleware.ts
135
- * export { agentShieldMiddleware as default } from '@kya-os/agentshield-nextjs/api-middleware';
136
- * ```
137
- */
138
- declare const agentShieldMiddleware: (request: NextRequest) => Promise<NextResponse>;
139
-
140
- export { type AgentShieldMiddlewareConfig, agentShieldMiddleware, withAgentShield };