@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.
- package/README.md +21 -369
- package/index.js +9 -0
- package/package.json +7 -141
- package/EDGE_RUNTIME_WASM_SETUP.md +0 -348
- package/bin/setup-edge-wasm.js +0 -525
- package/dist/.tsbuildinfo +0 -1
- package/dist/api-client.d.mts +0 -196
- package/dist/api-client.d.ts +0 -196
- package/dist/api-client.js +0 -200
- package/dist/api-client.js.map +0 -1
- package/dist/api-client.mjs +0 -196
- package/dist/api-client.mjs.map +0 -1
- package/dist/api-middleware.d.mts +0 -140
- package/dist/api-middleware.d.ts +0 -140
- package/dist/api-middleware.js +0 -511
- package/dist/api-middleware.js.map +0 -1
- package/dist/api-middleware.mjs +0 -508
- package/dist/api-middleware.mjs.map +0 -1
- package/dist/create-middleware.d.mts +0 -17
- package/dist/create-middleware.d.ts +0 -17
- package/dist/create-middleware.js +0 -1381
- package/dist/create-middleware.js.map +0 -1
- package/dist/create-middleware.mjs +0 -1358
- package/dist/create-middleware.mjs.map +0 -1
- package/dist/edge/index.d.mts +0 -110
- package/dist/edge/index.d.ts +0 -110
- package/dist/edge/index.js +0 -277
- package/dist/edge/index.js.map +0 -1
- package/dist/edge/index.mjs +0 -275
- package/dist/edge/index.mjs.map +0 -1
- package/dist/edge-detector-wrapper.d.mts +0 -34
- package/dist/edge-detector-wrapper.d.ts +0 -34
- package/dist/edge-detector-wrapper.js +0 -596
- package/dist/edge-detector-wrapper.js.map +0 -1
- package/dist/edge-detector-wrapper.mjs +0 -574
- package/dist/edge-detector-wrapper.mjs.map +0 -1
- package/dist/edge-runtime-loader.d.mts +0 -50
- package/dist/edge-runtime-loader.d.ts +0 -50
- package/dist/edge-runtime-loader.js +0 -204
- package/dist/edge-runtime-loader.js.map +0 -1
- package/dist/edge-runtime-loader.mjs +0 -201
- package/dist/edge-runtime-loader.mjs.map +0 -1
- package/dist/edge-wasm-middleware.d.mts +0 -68
- package/dist/edge-wasm-middleware.d.ts +0 -68
- package/dist/edge-wasm-middleware.js +0 -318
- package/dist/edge-wasm-middleware.js.map +0 -1
- package/dist/edge-wasm-middleware.mjs +0 -315
- package/dist/edge-wasm-middleware.mjs.map +0 -1
- package/dist/enhanced-middleware.d.mts +0 -153
- package/dist/enhanced-middleware.d.ts +0 -153
- package/dist/enhanced-middleware.js +0 -1082
- package/dist/enhanced-middleware.js.map +0 -1
- package/dist/enhanced-middleware.mjs +0 -1080
- package/dist/enhanced-middleware.mjs.map +0 -1
- package/dist/index.d.mts +0 -24
- package/dist/index.d.ts +0 -24
- package/dist/index.js +0 -2717
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -2662
- package/dist/index.mjs.map +0 -1
- package/dist/middleware.d.mts +0 -21
- package/dist/middleware.d.ts +0 -21
- package/dist/middleware.js +0 -1362
- package/dist/middleware.js.map +0 -1
- package/dist/middleware.mjs +0 -1339
- package/dist/middleware.mjs.map +0 -1
- package/dist/nodejs-wasm-loader.d.mts +0 -25
- package/dist/nodejs-wasm-loader.d.ts +0 -25
- package/dist/nodejs-wasm-loader.js +0 -78
- package/dist/nodejs-wasm-loader.js.map +0 -1
- package/dist/nodejs-wasm-loader.mjs +0 -68
- package/dist/nodejs-wasm-loader.mjs.map +0 -1
- package/dist/policy.d.mts +0 -162
- package/dist/policy.d.ts +0 -162
- package/dist/policy.js +0 -189
- package/dist/policy.js.map +0 -1
- package/dist/policy.mjs +0 -165
- package/dist/policy.mjs.map +0 -1
- package/dist/session-tracker.d.mts +0 -55
- package/dist/session-tracker.d.ts +0 -55
- package/dist/session-tracker.js +0 -170
- package/dist/session-tracker.js.map +0 -1
- package/dist/session-tracker.mjs +0 -167
- package/dist/session-tracker.mjs.map +0 -1
- package/dist/signature-verifier.d.mts +0 -33
- package/dist/signature-verifier.d.ts +0 -33
- package/dist/signature-verifier.js +0 -386
- package/dist/signature-verifier.js.map +0 -1
- package/dist/signature-verifier.mjs +0 -362
- package/dist/signature-verifier.mjs.map +0 -1
- package/dist/types-DVmy9NE3.d.mts +0 -105
- package/dist/types-DVmy9NE3.d.ts +0 -105
- package/dist/wasm-middleware.d.mts +0 -63
- package/dist/wasm-middleware.d.ts +0 -63
- package/dist/wasm-middleware.js +0 -98
- package/dist/wasm-middleware.js.map +0 -1
- package/dist/wasm-middleware.mjs +0 -95
- package/dist/wasm-middleware.mjs.map +0 -1
- package/dist/wasm-setup.d.mts +0 -46
- package/dist/wasm-setup.d.ts +0 -46
- package/dist/wasm-setup.js +0 -157
- package/dist/wasm-setup.js.map +0 -1
- package/dist/wasm-setup.mjs +0 -148
- package/dist/wasm-setup.mjs.map +0 -1
- package/templates/middleware-wasm-100.ts +0 -151
- package/wasm/agentshield_wasm.d.ts +0 -479
- package/wasm/agentshield_wasm.js +0 -1536
- package/wasm/agentshield_wasm_bg.wasm +0 -0
- package/wasm/package.json +0 -30
- package/wasm.d.ts +0 -21
package/README.md
CHANGED
|
@@ -1,380 +1,32 @@
|
|
|
1
1
|
# @kya-os/agentshield-nextjs
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **DEPRECATED — renamed to `@kya-os/checkpoint-nextjs`.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
See the [agent-shield repo's Phase D rename context](https://github.com/Know-That-Ai/agent-shield/issues/2483).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- ⚛️ **React Hooks**: Client-side detection and monitoring
|
|
9
|
-
- 🎯 **Flexible Actions**: Block, redirect, rewrite, or log detected agents
|
|
10
|
-
- 🛡️ **Edge Runtime**: Optimized for Vercel Edge Functions
|
|
11
|
-
- 📊 **Built-in Analytics**: Track detection patterns and statistics
|
|
7
|
+
## Migration
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
npm install @kya-os/agentshield-nextjs
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Quick Start
|
|
20
|
-
|
|
21
|
-
### Middleware Setup
|
|
22
|
-
|
|
23
|
-
Create `middleware.js` (or `middleware.ts`) in your project root:
|
|
24
|
-
|
|
25
|
-
```javascript
|
|
26
|
-
import { agentShield } from '@kya-os/agentshield-nextjs';
|
|
27
|
-
|
|
28
|
-
export default agentShield({
|
|
29
|
-
onAgentDetected: 'block',
|
|
30
|
-
confidenceThreshold: 0.8,
|
|
31
|
-
|
|
32
|
-
// NEW: Session tracking (v0.1.27+)
|
|
33
|
-
sessionTracking: {
|
|
34
|
-
enabled: true, // Track continued sessions from AI agents
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
export const config = {
|
|
39
|
-
matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
|
|
40
|
-
};
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### React Hooks
|
|
44
|
-
|
|
45
|
-
```javascript
|
|
46
|
-
'use client';
|
|
47
|
-
|
|
48
|
-
import { useAgentDetection } from '@kya-os/agentshield-nextjs';
|
|
49
|
-
|
|
50
|
-
export default function SecurityMonitor() {
|
|
51
|
-
const { detect, isDetecting, lastResult } = useAgentDetection({
|
|
52
|
-
confidenceThreshold: 0.7,
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
const handleCheck = async () => {
|
|
56
|
-
const result = await detect();
|
|
57
|
-
if (result.isAgent) {
|
|
58
|
-
alert('Agent detected!');
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<div>
|
|
64
|
-
<button onClick={handleCheck} disabled={isDetecting}>
|
|
65
|
-
{isDetecting ? 'Checking...' : 'Check for Agents'}
|
|
66
|
-
</button>
|
|
67
|
-
|
|
68
|
-
{lastResult && (
|
|
69
|
-
<div>
|
|
70
|
-
<p>Is Agent: {lastResult.isAgent ? 'Yes' : 'No'}</p>
|
|
71
|
-
<p>Confidence: {(lastResult.confidence * 100).toFixed(1)}%</p>
|
|
72
|
-
</div>
|
|
73
|
-
)}
|
|
74
|
-
</div>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Middleware Configuration
|
|
80
|
-
|
|
81
|
-
```javascript
|
|
82
|
-
import { agentShield } from '@kya-os/agentshield-nextjs';
|
|
83
|
-
|
|
84
|
-
export default agentShield({
|
|
85
|
-
// Core detection options
|
|
86
|
-
confidenceThreshold: 0.7,
|
|
87
|
-
enablePatternMatching: true,
|
|
88
|
-
enableBehaviorAnalysis: true,
|
|
89
|
-
|
|
90
|
-
// Action when agent is detected
|
|
91
|
-
onAgentDetected: 'block', // 'block' | 'redirect' | 'rewrite' | 'allow' | 'log'
|
|
92
|
-
|
|
93
|
-
// Skip detection for paths
|
|
94
|
-
skipPaths: ['/api/webhooks', /^\/admin/],
|
|
95
|
-
|
|
96
|
-
// Custom responses
|
|
97
|
-
blockedResponse: {
|
|
98
|
-
status: 403,
|
|
99
|
-
message: 'Access denied',
|
|
100
|
-
},
|
|
101
|
-
redirectUrl: '/blocked',
|
|
102
|
-
rewriteUrl: '/blocked',
|
|
103
|
-
|
|
104
|
-
// Custom handler
|
|
105
|
-
onDetection: async (request, result) => {
|
|
106
|
-
console.log('Agent detected:', result);
|
|
107
|
-
// Return custom NextResponse or void
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Actions
|
|
113
|
-
|
|
114
|
-
### Block Agents
|
|
115
|
-
|
|
116
|
-
```javascript
|
|
117
|
-
export default agentShield({
|
|
118
|
-
onAgentDetected: 'block',
|
|
119
|
-
blockedResponse: {
|
|
120
|
-
status: 403,
|
|
121
|
-
message: 'Automated access not allowed',
|
|
122
|
-
headers: {
|
|
123
|
-
'Content-Type': 'application/json',
|
|
124
|
-
'X-Robots-Tag': 'noindex',
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Redirect Agents
|
|
131
|
-
|
|
132
|
-
```javascript
|
|
133
|
-
export default agentShield({
|
|
134
|
-
onAgentDetected: 'redirect',
|
|
135
|
-
redirectUrl: '/blocked',
|
|
136
|
-
confidenceThreshold: 0.8,
|
|
137
|
-
});
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Rewrite Requests
|
|
141
|
-
|
|
142
|
-
```javascript
|
|
143
|
-
export default agentShield({
|
|
144
|
-
onAgentDetected: 'rewrite',
|
|
145
|
-
rewriteUrl: '/bot-content',
|
|
146
|
-
confidenceThreshold: 0.6,
|
|
147
|
-
});
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Custom Logic
|
|
151
|
-
|
|
152
|
-
```javascript
|
|
153
|
-
export default agentShield({
|
|
154
|
-
onDetection: async (request, result) => {
|
|
155
|
-
if (result.confidence > 0.9) {
|
|
156
|
-
// High confidence - block
|
|
157
|
-
return NextResponse.json({ error: 'Blocked' }, { status: 403 });
|
|
158
|
-
} else if (result.confidence > 0.5) {
|
|
159
|
-
// Medium confidence - redirect to captcha
|
|
160
|
-
return NextResponse.redirect(new URL('/verify', request.url));
|
|
161
|
-
}
|
|
162
|
-
// Low confidence - continue
|
|
163
|
-
},
|
|
164
|
-
});
|
|
9
|
+
```diff
|
|
10
|
+
- "@kya-os/agentshield-nextjs": "^0.3.4"
|
|
11
|
+
+ "@kya-os/checkpoint-nextjs": "^1.0.0"
|
|
165
12
|
```
|
|
166
13
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
Client-side agent detection:
|
|
172
|
-
|
|
173
|
-
```javascript
|
|
174
|
-
import { useAgentDetection } from '@kya-os/agentshield-nextjs';
|
|
175
|
-
|
|
176
|
-
function SecurityComponent() {
|
|
177
|
-
const { detect, isDetecting, lastResult, detector } = useAgentDetection({
|
|
178
|
-
confidenceThreshold: 0.7,
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
useEffect(() => {
|
|
182
|
-
// Auto-detect on component mount
|
|
183
|
-
detect();
|
|
184
|
-
}, [detect]);
|
|
185
|
-
|
|
186
|
-
return (
|
|
187
|
-
<div>
|
|
188
|
-
{lastResult?.isAgent && (
|
|
189
|
-
<div className='alert'>Agent detected with {lastResult.confidence} confidence</div>
|
|
190
|
-
)}
|
|
191
|
-
</div>
|
|
192
|
-
);
|
|
193
|
-
}
|
|
14
|
+
```diff
|
|
15
|
+
- import { withCheckpoint } from '@kya-os/agentshield-nextjs';
|
|
16
|
+
+ import { withCheckpoint } from '@kya-os/checkpoint-nextjs';
|
|
194
17
|
```
|
|
195
18
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
import { useDetectionMonitor } from '@kya-os/agentshield-nextjs';
|
|
202
|
-
|
|
203
|
-
function AnalyticsDashboard() {
|
|
204
|
-
const { detectionHistory, getStats, clearHistory } = useDetectionMonitor(context => {
|
|
205
|
-
// Handle each detection
|
|
206
|
-
console.log('Detection event:', context);
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
const stats = getStats();
|
|
210
|
-
|
|
211
|
-
return (
|
|
212
|
-
<div>
|
|
213
|
-
<h2>Detection Statistics</h2>
|
|
214
|
-
<p>Total Requests: {stats.total}</p>
|
|
215
|
-
<p>Agents Detected: {stats.detected}</p>
|
|
216
|
-
<p>Detection Rate: {(stats.detectionRate * 100).toFixed(1)}%</p>
|
|
217
|
-
<p>Average Confidence: {(stats.avgConfidence * 100).toFixed(1)}%</p>
|
|
218
|
-
|
|
219
|
-
<button onClick={clearHistory}>Clear History</button>
|
|
220
|
-
</div>
|
|
221
|
-
);
|
|
222
|
-
}
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## API Routes Integration
|
|
226
|
-
|
|
227
|
-
Protect API routes with server-side detection:
|
|
228
|
-
|
|
229
|
-
```javascript
|
|
230
|
-
// pages/api/protected.js or app/api/protected/route.js
|
|
231
|
-
import { AgentDetector } from '@kya-os/agentshield';
|
|
232
|
-
|
|
233
|
-
const detector = new AgentDetector();
|
|
234
|
-
|
|
235
|
-
export async function GET(request) {
|
|
236
|
-
const context = {
|
|
237
|
-
userAgent: request.headers.get('user-agent'),
|
|
238
|
-
ip: request.ip,
|
|
239
|
-
headers: Object.fromEntries(request.headers.entries()),
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
const result = await detector.analyze(context);
|
|
243
|
-
|
|
244
|
-
if (result.isAgent && result.confidence > 0.7) {
|
|
245
|
-
return NextResponse.json({ error: 'Automated access detected' }, { status: 403 });
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
return NextResponse.json({ data: 'Protected content' });
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
## Advanced Usage
|
|
253
|
-
|
|
254
|
-
### Path-Specific Configuration
|
|
255
|
-
|
|
256
|
-
```javascript
|
|
257
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
258
|
-
import { AgentDetector } from '@kya-os/agentshield';
|
|
259
|
-
|
|
260
|
-
const detector = new AgentDetector();
|
|
261
|
-
|
|
262
|
-
export async function middleware(request: NextRequest) {
|
|
263
|
-
const { pathname } = request.nextUrl;
|
|
264
|
-
|
|
265
|
-
// Different thresholds for different paths
|
|
266
|
-
let threshold = 0.7;
|
|
267
|
-
if (pathname.startsWith('/api/')) {
|
|
268
|
-
threshold = 0.5; // More sensitive for API
|
|
269
|
-
} else if (pathname.startsWith('/admin/')) {
|
|
270
|
-
threshold = 0.9; // Less sensitive for admin (humans expected)
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
const context = {
|
|
274
|
-
userAgent: request.headers.get('user-agent') ?? undefined,
|
|
275
|
-
ip: request.ip,
|
|
276
|
-
headers: Object.fromEntries(request.headers.entries()),
|
|
277
|
-
url: request.url,
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
const result = await detector.analyze(context);
|
|
281
|
-
|
|
282
|
-
if (result.isAgent && result.confidence >= threshold) {
|
|
283
|
-
return NextResponse.json(
|
|
284
|
-
{ error: 'Access denied' },
|
|
285
|
-
{ status: 403 }
|
|
286
|
-
);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return NextResponse.next();
|
|
290
|
-
}
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
### Server Components
|
|
294
|
-
|
|
295
|
-
Use detection results in Server Components:
|
|
296
|
-
|
|
297
|
-
```javascript
|
|
298
|
-
// app/dashboard/page.tsx
|
|
299
|
-
import { headers } from 'next/headers';
|
|
300
|
-
import { AgentDetector } from '@kya-os/agentshield';
|
|
301
|
-
|
|
302
|
-
export default async function Dashboard() {
|
|
303
|
-
const headersList = headers();
|
|
304
|
-
const detector = new AgentDetector();
|
|
305
|
-
|
|
306
|
-
const result = await detector.analyze({
|
|
307
|
-
userAgent: headersList.get('user-agent') ?? undefined,
|
|
308
|
-
headers: Object.fromEntries(headersList.entries()),
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
if (result.isAgent) {
|
|
312
|
-
return <div>Automated access detected</div>;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
return <div>Welcome to the dashboard!</div>;
|
|
316
|
-
}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
## TypeScript Support
|
|
320
|
-
|
|
321
|
-
Full TypeScript support with proper types:
|
|
322
|
-
|
|
323
|
-
```typescript
|
|
324
|
-
import { NextRequest } from 'next/server';
|
|
325
|
-
import { agentShield, NextJSMiddlewareConfig } from '@kya-os/agentshield-nextjs';
|
|
326
|
-
|
|
327
|
-
const config: NextJSMiddlewareConfig = {
|
|
328
|
-
onAgentDetected: 'block',
|
|
329
|
-
confidenceThreshold: 0.8,
|
|
330
|
-
onDetection: async (request: NextRequest, result) => {
|
|
331
|
-
// Fully typed parameters
|
|
332
|
-
console.log(result.confidence);
|
|
333
|
-
},
|
|
334
|
-
};
|
|
335
|
-
|
|
336
|
-
export default agentShield(config);
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
## Examples
|
|
340
|
-
|
|
341
|
-
### E-commerce Protection
|
|
342
|
-
|
|
343
|
-
```javascript
|
|
344
|
-
// Protect product pages from scrapers
|
|
345
|
-
export default agentShield({
|
|
346
|
-
onAgentDetected: 'redirect',
|
|
347
|
-
redirectUrl: '/captcha',
|
|
348
|
-
confidenceThreshold: 0.6,
|
|
349
|
-
skipPaths: ['/api/webhooks', '/health'],
|
|
350
|
-
});
|
|
351
|
-
|
|
352
|
-
export const config = {
|
|
353
|
-
matcher: ['/products/:path*', '/search/:path*'],
|
|
354
|
-
};
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### Content Publishing
|
|
358
|
-
|
|
359
|
-
```javascript
|
|
360
|
-
// Allow search engines, block other bots
|
|
361
|
-
export default agentShield({
|
|
362
|
-
onDetection: async (request, result) => {
|
|
363
|
-
const userAgent = request.headers.get('user-agent') || '';
|
|
364
|
-
|
|
365
|
-
// Allow known search engines
|
|
366
|
-
if (/googlebot|bingbot|slurp/i.test(userAgent)) {
|
|
367
|
-
return; // Continue
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
// Block other agents
|
|
371
|
-
if (result.isAgent && result.confidence > 0.5) {
|
|
372
|
-
return NextResponse.json({ error: 'Bot access restricted' }, { status: 403 });
|
|
373
|
-
}
|
|
374
|
-
},
|
|
375
|
-
});
|
|
376
|
-
```
|
|
19
|
+
The new `withCheckpoint` factory ships under the renamed package.
|
|
20
|
+
Every verification decision flows through the Rust `kya-os-engine`
|
|
21
|
+
via WASM; the legacy TS-pattern-matching path (the 600-line
|
|
22
|
+
`edge-detector-wrapper.ts`) was removed in Phase D (architect Q10
|
|
23
|
+
deletion ratification).
|
|
377
24
|
|
|
378
|
-
|
|
25
|
+
**Dual-runtime out of the box.** `withCheckpoint` works under both
|
|
26
|
+
Vercel Node-runtime AND Vercel Edge runtime. Pick the runtime via the
|
|
27
|
+
standard Next.js `export const config = { runtime: 'edge' | 'nodejs' }`
|
|
28
|
+
pattern.
|
|
379
29
|
|
|
380
|
-
|
|
30
|
+
For the `withAgentShield` API-based detection helper (a different
|
|
31
|
+
product entirely — remote API rather than local engine), the export
|
|
32
|
+
moved over verbatim under the new package name.
|
package/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
throw new Error(
|
|
3
|
+
'@kya-os/agentshield-nextjs is renamed to @kya-os/checkpoint-nextjs. ' +
|
|
4
|
+
'Migrate: `npm install @kya-os/checkpoint-nextjs` and replace ' +
|
|
5
|
+
"`from '@kya-os/agentshield-nextjs'` with `from '@kya-os/checkpoint-nextjs'`. " +
|
|
6
|
+
'Use the new `withCheckpoint` factory in `middleware.ts`; the legacy ' +
|
|
7
|
+
'`createAgentShieldMiddleware` path was removed in Phase D. ' +
|
|
8
|
+
'See https://github.com/Know-That-Ai/agent-shield/issues/2483 for context.'
|
|
9
|
+
);
|
package/package.json
CHANGED
|
@@ -1,149 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kya-os/agentshield-nextjs",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
"nextjs",
|
|
7
|
-
"middleware",
|
|
8
|
-
"ai",
|
|
9
|
-
"agent",
|
|
10
|
-
"detection",
|
|
11
|
-
"security",
|
|
12
|
-
"react"
|
|
13
|
-
],
|
|
3
|
+
"version": "0.3.5",
|
|
4
|
+
"description": "DEPRECATED — renamed to @kya-os/checkpoint-nextjs. Migrate by swapping the import path.",
|
|
5
|
+
"deprecated": "Renamed to @kya-os/checkpoint-nextjs. Migrate: npm install @kya-os/checkpoint-nextjs && replace 'from @kya-os/agentshield-nextjs' with 'from @kya-os/checkpoint-nextjs'. See https://github.com/Know-That-Ai/agent-shield/issues/2483.",
|
|
14
6
|
"license": "MIT OR Apache-2.0",
|
|
15
|
-
"
|
|
16
|
-
"homepage": "https://github.com/Know-That-Ai/agent-shield#readme",
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "https://github.com/Know-That-Ai/agent-shield.git",
|
|
20
|
-
"directory": "packages/agentshield-nextjs"
|
|
21
|
-
},
|
|
22
|
-
"bugs": {
|
|
23
|
-
"url": "https://github.com/Know-That-Ai/agent-shield/issues"
|
|
24
|
-
},
|
|
25
|
-
"main": "./dist/index.js",
|
|
26
|
-
"module": "./dist/index.mjs",
|
|
27
|
-
"types": "./dist/index.d.ts",
|
|
28
|
-
"bin": {
|
|
29
|
-
"agentshield-setup-edge": "./bin/setup-edge-wasm.js"
|
|
30
|
-
},
|
|
31
|
-
"exports": {
|
|
32
|
-
".": {
|
|
33
|
-
"types": "./dist/index.d.ts",
|
|
34
|
-
"import": "./dist/index.mjs",
|
|
35
|
-
"require": "./dist/index.js"
|
|
36
|
-
},
|
|
37
|
-
"./edge": {
|
|
38
|
-
"types": "./dist/edge/index.d.ts",
|
|
39
|
-
"edge-runtime": "./dist/edge/index.mjs",
|
|
40
|
-
"import": "./dist/edge/index.mjs",
|
|
41
|
-
"require": "./dist/edge/index.js"
|
|
42
|
-
},
|
|
43
|
-
"./edge-runtime-loader": {
|
|
44
|
-
"types": "./dist/edge-runtime-loader.d.ts",
|
|
45
|
-
"import": "./dist/edge-runtime-loader.mjs",
|
|
46
|
-
"require": "./dist/edge-runtime-loader.js"
|
|
47
|
-
},
|
|
48
|
-
"./middleware": {
|
|
49
|
-
"types": "./dist/middleware.d.ts",
|
|
50
|
-
"import": "./dist/middleware.mjs",
|
|
51
|
-
"require": "./dist/middleware.js"
|
|
52
|
-
},
|
|
53
|
-
"./wasm-setup": {
|
|
54
|
-
"types": "./dist/wasm-setup.d.ts",
|
|
55
|
-
"import": "./dist/wasm-setup.mjs",
|
|
56
|
-
"require": "./dist/wasm-setup.js"
|
|
57
|
-
},
|
|
58
|
-
"./wasm-middleware": {
|
|
59
|
-
"types": "./dist/wasm-middleware.d.ts",
|
|
60
|
-
"import": "./dist/wasm-middleware.mjs",
|
|
61
|
-
"require": "./dist/wasm-middleware.js"
|
|
62
|
-
},
|
|
63
|
-
"./edge-wasm-middleware": {
|
|
64
|
-
"types": "./dist/edge-wasm-middleware.d.ts",
|
|
65
|
-
"import": "./dist/edge-wasm-middleware.mjs",
|
|
66
|
-
"require": "./dist/edge-wasm-middleware.js"
|
|
67
|
-
},
|
|
68
|
-
"./api-client": {
|
|
69
|
-
"types": "./dist/api-client.d.ts",
|
|
70
|
-
"import": "./dist/api-client.mjs",
|
|
71
|
-
"require": "./dist/api-client.js"
|
|
72
|
-
},
|
|
73
|
-
"./api-middleware": {
|
|
74
|
-
"types": "./dist/api-middleware.d.ts",
|
|
75
|
-
"import": "./dist/api-middleware.mjs",
|
|
76
|
-
"require": "./dist/api-middleware.js"
|
|
77
|
-
},
|
|
78
|
-
"./policy": {
|
|
79
|
-
"types": "./dist/policy.d.ts",
|
|
80
|
-
"import": "./dist/policy.mjs",
|
|
81
|
-
"require": "./dist/policy.js"
|
|
82
|
-
},
|
|
83
|
-
"./package.json": "./package.json"
|
|
84
|
-
},
|
|
7
|
+
"main": "./index.js",
|
|
85
8
|
"files": [
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"wasm",
|
|
89
|
-
"wasm.d.ts",
|
|
90
|
-
"templates",
|
|
91
|
-
"README.md",
|
|
92
|
-
"CHANGELOG.md",
|
|
93
|
-
"EDGE_RUNTIME_WASM_SETUP.md"
|
|
9
|
+
"index.js",
|
|
10
|
+
"README.md"
|
|
94
11
|
],
|
|
95
|
-
"engines": {
|
|
96
|
-
"node": ">=18.0.0"
|
|
97
|
-
},
|
|
98
|
-
"devDependencies": {
|
|
99
|
-
"@testing-library/react": "^14.2.1",
|
|
100
|
-
"@testing-library/react-hooks": "^8.0.1",
|
|
101
|
-
"@types/node": "^20.11.24",
|
|
102
|
-
"@types/react": "^18.2.61",
|
|
103
|
-
"@vitest/coverage-v8": "^1.3.1",
|
|
104
|
-
"jsdom": "^24.0.0",
|
|
105
|
-
"next": "^16.2.2",
|
|
106
|
-
"react": "^18.2.0",
|
|
107
|
-
"react-dom": "^18.2.0",
|
|
108
|
-
"rimraf": "^5.0.5",
|
|
109
|
-
"tsup": "^8.0.2",
|
|
110
|
-
"typescript": "^5.4.2",
|
|
111
|
-
"vitest": "^1.3.1"
|
|
112
|
-
},
|
|
113
|
-
"peerDependencies": {
|
|
114
|
-
"next": ">=13.0.0",
|
|
115
|
-
"react": ">=18.0.0",
|
|
116
|
-
"@upstash/redis": ">=1.0.0"
|
|
117
|
-
},
|
|
118
|
-
"peerDependenciesMeta": {
|
|
119
|
-
"@upstash/redis": {
|
|
120
|
-
"optional": true
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
12
|
"publishConfig": {
|
|
124
13
|
"access": "public"
|
|
125
|
-
},
|
|
126
|
-
"sideEffects": false,
|
|
127
|
-
"dependencies": {
|
|
128
|
-
"@noble/ed25519": "^2.2.3",
|
|
129
|
-
"@noble/hashes": "^2.0.1",
|
|
130
|
-
"@kya-os/agentshield-shared": "0.3.1",
|
|
131
|
-
"@kya-os/agentshield-wasm-runtime": "0.1.6",
|
|
132
|
-
"@kya-os/agentshield": "0.1.42"
|
|
133
|
-
},
|
|
134
|
-
"scripts": {
|
|
135
|
-
"build": "tsup",
|
|
136
|
-
"build:watch": "tsup --watch",
|
|
137
|
-
"predev": "pnpm --filter=@kya-os/agentshield-shared build && pnpm --filter=@kya-os/agentshield build",
|
|
138
|
-
"dev": "tsup --watch",
|
|
139
|
-
"clean": "rimraf dist .tsbuildinfo",
|
|
140
|
-
"test": "vitest run",
|
|
141
|
-
"test:watch": "vitest",
|
|
142
|
-
"test:coverage": "vitest run --coverage",
|
|
143
|
-
"type-check": "tsc --noEmit",
|
|
144
|
-
"lint": "eslint src --ext .ts,.tsx",
|
|
145
|
-
"lint:fix": "eslint src --ext .ts,.tsx --fix",
|
|
146
|
-
"format": "prettier --write \"src/**/*.{ts,tsx,json,md}\"",
|
|
147
|
-
"format:check": "prettier --check \"src/**/*.{ts,tsx,json,md}\""
|
|
148
14
|
}
|
|
149
|
-
}
|
|
15
|
+
}
|