@kya-os/checkpoint-nextjs 1.0.0 → 1.0.1
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/CHANGELOG.md +95 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapt.js +0 -2
- package/dist/adapt.mjs +0 -2
- package/dist/api-client.js +38 -24
- package/dist/api-client.mjs +38 -24
- package/dist/api-middleware.js +48 -28
- package/dist/api-middleware.mjs +48 -28
- package/dist/create-middleware.d.mts +1 -1
- package/dist/create-middleware.d.ts +1 -1
- package/dist/create-middleware.js +0 -2
- package/dist/create-middleware.mjs +0 -2
- package/dist/edge/index.d.mts +1 -1
- package/dist/edge/index.d.ts +1 -1
- package/dist/edge/index.js +4 -6
- package/dist/edge/index.mjs +4 -6
- package/dist/edge-runtime-loader.js +0 -2
- package/dist/edge-runtime-loader.mjs +0 -2
- package/dist/edge-wasm-middleware.js +0 -2
- package/dist/edge-wasm-middleware.mjs +0 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +53 -33
- package/dist/index.mjs +53 -33
- package/dist/middleware-edge.js +0 -2
- package/dist/middleware-edge.mjs +0 -2
- package/dist/middleware-node.js +0 -2
- package/dist/middleware-node.mjs +0 -2
- package/dist/middleware.d.mts +1 -1
- package/dist/middleware.d.ts +1 -1
- package/dist/middleware.js +0 -2
- package/dist/middleware.mjs +0 -2
- package/dist/nodejs-wasm-loader.js +0 -2
- package/dist/nodejs-wasm-loader.mjs +0 -2
- package/dist/policy.js +3 -5
- package/dist/policy.mjs +3 -5
- package/dist/session-tracker.js +1 -3
- package/dist/session-tracker.mjs +1 -3
- package/dist/signature-verifier.js +0 -2
- package/dist/signature-verifier.mjs +0 -2
- package/dist/translate.js +0 -2
- package/dist/translate.mjs +0 -2
- package/dist/{types-C-xCUNTr.d.mts → types-D9RQvPNy.d.mts} +1 -1
- package/dist/{types-C-xCUNTr.d.ts → types-D9RQvPNy.d.ts} +1 -1
- package/dist/wasm-middleware.js +0 -2
- package/dist/wasm-middleware.mjs +0 -2
- package/dist/wasm-setup.js +0 -2
- package/dist/wasm-setup.mjs +0 -2
- package/package.json +3 -3
- package/dist/adapt.js.map +0 -1
- package/dist/adapt.mjs.map +0 -1
- package/dist/api-client.js.map +0 -1
- package/dist/api-client.mjs.map +0 -1
- package/dist/api-middleware.js.map +0 -1
- package/dist/api-middleware.mjs.map +0 -1
- package/dist/create-middleware.js.map +0 -1
- package/dist/create-middleware.mjs.map +0 -1
- package/dist/edge/index.js.map +0 -1
- package/dist/edge/index.mjs.map +0 -1
- package/dist/edge-runtime-loader.js.map +0 -1
- package/dist/edge-runtime-loader.mjs.map +0 -1
- package/dist/edge-wasm-middleware.js.map +0 -1
- package/dist/edge-wasm-middleware.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/middleware-edge.js.map +0 -1
- package/dist/middleware-edge.mjs.map +0 -1
- package/dist/middleware-node.js.map +0 -1
- package/dist/middleware-node.mjs.map +0 -1
- package/dist/middleware.js.map +0 -1
- package/dist/middleware.mjs.map +0 -1
- package/dist/nodejs-wasm-loader.js.map +0 -1
- package/dist/nodejs-wasm-loader.mjs.map +0 -1
- package/dist/policy.js.map +0 -1
- package/dist/policy.mjs.map +0 -1
- package/dist/session-tracker.js.map +0 -1
- package/dist/session-tracker.mjs.map +0 -1
- package/dist/signature-verifier.js.map +0 -1
- package/dist/signature-verifier.mjs.map +0 -1
- package/dist/translate.js.map +0 -1
- package/dist/translate.mjs.map +0 -1
- package/dist/wasm-middleware.js.map +0 -1
- package/dist/wasm-middleware.mjs.map +0 -1
- package/dist/wasm-setup.js.map +0 -1
- package/dist/wasm-setup.mjs.map +0 -1
package/dist/edge/index.mjs
CHANGED
|
@@ -91,7 +91,7 @@ async function createDetector(config) {
|
|
|
91
91
|
});
|
|
92
92
|
await wasmDetector.ensureReady();
|
|
93
93
|
if (config.debug) {
|
|
94
|
-
console.debug("[
|
|
94
|
+
console.debug("[Checkpoint] WASM detector initialized in Edge Runtime", {
|
|
95
95
|
policyEnabled: !!config.apiKey
|
|
96
96
|
});
|
|
97
97
|
}
|
|
@@ -118,7 +118,7 @@ async function createDetector(config) {
|
|
|
118
118
|
};
|
|
119
119
|
} catch (error) {
|
|
120
120
|
if (config.debug) {
|
|
121
|
-
console.warn("[
|
|
121
|
+
console.warn("[Checkpoint] WASM runtime not available, using pattern detection:", error);
|
|
122
122
|
}
|
|
123
123
|
detector = {
|
|
124
124
|
detect: patternDetect,
|
|
@@ -127,7 +127,7 @@ async function createDetector(config) {
|
|
|
127
127
|
}
|
|
128
128
|
} else {
|
|
129
129
|
if (config.debug) {
|
|
130
|
-
console.debug("[
|
|
130
|
+
console.debug("[Checkpoint] No WASM module provided, using pattern detection");
|
|
131
131
|
}
|
|
132
132
|
detector = {
|
|
133
133
|
detect: patternDetect,
|
|
@@ -178,7 +178,7 @@ function createEdgeMiddleware(config = {}) {
|
|
|
178
178
|
const result = await detector.detect(input);
|
|
179
179
|
if (result.shouldBlock) {
|
|
180
180
|
if (debug) {
|
|
181
|
-
console.debug("[
|
|
181
|
+
console.debug("[Checkpoint] Blocked by policy", {
|
|
182
182
|
reason: result.blockReason,
|
|
183
183
|
agent: result.detectedAgent?.name,
|
|
184
184
|
confidence: result.confidence,
|
|
@@ -271,5 +271,3 @@ function createEdgeMiddleware(config = {}) {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
export { createEdgeMiddleware };
|
|
274
|
-
//# sourceMappingURL=index.mjs.map
|
|
275
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -200,5 +200,3 @@ function getDefaultAgentShield(config) {
|
|
|
200
200
|
|
|
201
201
|
exports.createEdgeAgentShield = createEdgeAgentShield;
|
|
202
202
|
exports.getDefaultAgentShield = getDefaultAgentShield;
|
|
203
|
-
//# sourceMappingURL=edge-runtime-loader.js.map
|
|
204
|
-
//# sourceMappingURL=edge-runtime-loader.js.map
|
|
@@ -314,5 +314,3 @@ function createEdgeWasmMiddleware(config) {
|
|
|
314
314
|
|
|
315
315
|
exports.createEdgeWasmMiddleware = createEdgeWasmMiddleware;
|
|
316
316
|
exports.initializeEdgeWasm = initializeEdgeWasm;
|
|
317
|
-
//# sourceMappingURL=edge-wasm-middleware.js.map
|
|
318
|
-
//# sourceMappingURL=edge-wasm-middleware.js.map
|
package/dist/index.d.mts
CHANGED
|
@@ -4,7 +4,7 @@ export { AgentDetectionEvent, AgentSession, AgentShieldMiddlewareConfig, Checkpo
|
|
|
4
4
|
export { createAgentShieldMiddleware as createAgentShieldMiddlewareBase } from './middleware.mjs';
|
|
5
5
|
export { EdgeSessionTracker, SessionData, SessionTrackingConfig, StatelessSessionChecker } from './session-tracker.mjs';
|
|
6
6
|
export { AgentShieldClient, AgentShieldClientConfig, CheckpointApiClient, CheckpointApiClientConfig, EnforceInput, EnforceResponse, EnforcementDecision, LogDetectionInput, getAgentShieldClient, getCheckpointApiClient, resetAgentShieldClient, resetCheckpointApiClient } from './api-client.mjs';
|
|
7
|
-
export { A as AgentShieldRequest, D as DetectionContext, N as NextJSMiddlewareConfig } from './types-
|
|
7
|
+
export { A as AgentShieldRequest, D as DetectionContext, N as NextJSMiddlewareConfig } from './types-D9RQvPNy.mjs';
|
|
8
8
|
export { NextJSPolicyMiddlewareConfig, PolicyMiddlewareConfig, applyPolicy, buildBlockedResponse as buildPolicyBlockedResponse, buildRedirectResponse as buildPolicyRedirectResponse, createContextFromDetection, evaluatePolicyForDetection, getPolicy, handlePolicyDecision } from './policy.mjs';
|
|
9
9
|
export { DEFAULT_POLICY, ENFORCEMENT_ACTIONS, EnforcementAction, PolicyConfig, PolicyEvaluationContext, PolicyEvaluationResult, createEvaluationContext, evaluatePolicy } from '@kya-os/checkpoint-shared';
|
|
10
10
|
import '@kya-os/checkpoint-wasm-runtime/adapters';
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { AgentDetectionEvent, AgentSession, AgentShieldMiddlewareConfig, Checkpo
|
|
|
4
4
|
export { createAgentShieldMiddleware as createAgentShieldMiddlewareBase } from './middleware.js';
|
|
5
5
|
export { EdgeSessionTracker, SessionData, SessionTrackingConfig, StatelessSessionChecker } from './session-tracker.js';
|
|
6
6
|
export { AgentShieldClient, AgentShieldClientConfig, CheckpointApiClient, CheckpointApiClientConfig, EnforceInput, EnforceResponse, EnforcementDecision, LogDetectionInput, getAgentShieldClient, getCheckpointApiClient, resetAgentShieldClient, resetCheckpointApiClient } from './api-client.js';
|
|
7
|
-
export { A as AgentShieldRequest, D as DetectionContext, N as NextJSMiddlewareConfig } from './types-
|
|
7
|
+
export { A as AgentShieldRequest, D as DetectionContext, N as NextJSMiddlewareConfig } from './types-D9RQvPNy.js';
|
|
8
8
|
export { NextJSPolicyMiddlewareConfig, PolicyMiddlewareConfig, applyPolicy, buildBlockedResponse as buildPolicyBlockedResponse, buildRedirectResponse as buildPolicyRedirectResponse, createContextFromDetection, evaluatePolicyForDetection, getPolicy, handlePolicyDecision } from './policy.js';
|
|
9
9
|
export { DEFAULT_POLICY, ENFORCEMENT_ACTIONS, EnforcementAction, PolicyConfig, PolicyEvaluationContext, PolicyEvaluationResult, createEvaluationContext, evaluatePolicy } from '@kya-os/checkpoint-shared';
|
|
10
10
|
import '@kya-os/checkpoint-wasm-runtime/adapters';
|
package/dist/index.js
CHANGED
|
@@ -161,7 +161,7 @@ var CheckpointApiClient = class {
|
|
|
161
161
|
debug;
|
|
162
162
|
constructor(config) {
|
|
163
163
|
if (!config.apiKey) {
|
|
164
|
-
throw new Error("
|
|
164
|
+
throw new Error("Checkpoint API key is required");
|
|
165
165
|
}
|
|
166
166
|
this.apiKey = config.apiKey;
|
|
167
167
|
this.useEdge = config.useEdge !== false;
|
|
@@ -192,7 +192,7 @@ var CheckpointApiClient = class {
|
|
|
192
192
|
clearTimeout(timeoutId);
|
|
193
193
|
const data = await response.json();
|
|
194
194
|
if (this.debug) {
|
|
195
|
-
console.log("[
|
|
195
|
+
console.log("[Checkpoint] Enforce response:", {
|
|
196
196
|
status: response.status,
|
|
197
197
|
action: data.data?.decision.action,
|
|
198
198
|
processingTimeMs: Date.now() - startTime
|
|
@@ -215,7 +215,7 @@ var CheckpointApiClient = class {
|
|
|
215
215
|
} catch (error) {
|
|
216
216
|
if (error instanceof Error && error.name === "AbortError") {
|
|
217
217
|
if (this.debug) {
|
|
218
|
-
console.warn("[
|
|
218
|
+
console.warn("[Checkpoint] Request timed out");
|
|
219
219
|
}
|
|
220
220
|
return {
|
|
221
221
|
success: false,
|
|
@@ -226,7 +226,7 @@ var CheckpointApiClient = class {
|
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
228
|
if (this.debug) {
|
|
229
|
-
console.error("[
|
|
229
|
+
console.error("[Checkpoint] Request failed:", error);
|
|
230
230
|
}
|
|
231
231
|
return {
|
|
232
232
|
success: false,
|
|
@@ -304,7 +304,7 @@ var CheckpointApiClient = class {
|
|
|
304
304
|
});
|
|
305
305
|
clearTimeout(timeoutId);
|
|
306
306
|
if (!response.ok && this.debug) {
|
|
307
|
-
console.warn("[
|
|
307
|
+
console.warn("[Checkpoint] Log detection returned non-2xx:", response.status);
|
|
308
308
|
}
|
|
309
309
|
} catch (error) {
|
|
310
310
|
clearTimeout(timeoutId);
|
|
@@ -312,34 +312,50 @@ var CheckpointApiClient = class {
|
|
|
312
312
|
}
|
|
313
313
|
} catch (error) {
|
|
314
314
|
if (this.debug) {
|
|
315
|
-
console.error("[
|
|
315
|
+
console.error("[Checkpoint] Log detection failed:", error);
|
|
316
316
|
}
|
|
317
317
|
throw error;
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
};
|
|
321
|
-
var
|
|
321
|
+
var clientInstances = /* @__PURE__ */ new Map();
|
|
322
|
+
function resolveClientConfig(config) {
|
|
323
|
+
const apiKey = config?.apiKey || process.env.CHECKPOINT_API_KEY;
|
|
324
|
+
if (!apiKey) {
|
|
325
|
+
throw new Error(
|
|
326
|
+
"Checkpoint API key is required. Set CHECKPOINT_API_KEY environment variable or pass apiKey in config."
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
apiKey,
|
|
331
|
+
baseUrl: config?.baseUrl || process.env.CHECKPOINT_API_URL,
|
|
332
|
+
// Default to edge detection unless explicitly disabled
|
|
333
|
+
useEdge: config?.useEdge ?? process.env.CHECKPOINT_USE_EDGE !== "false",
|
|
334
|
+
timeout: config?.timeout,
|
|
335
|
+
debug: config?.debug || process.env.CHECKPOINT_DEBUG === "true"
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
function clientCacheKey(config) {
|
|
339
|
+
return JSON.stringify([
|
|
340
|
+
config.apiKey,
|
|
341
|
+
config.baseUrl ?? "",
|
|
342
|
+
config.useEdge ?? true,
|
|
343
|
+
config.timeout ?? DEFAULT_TIMEOUT,
|
|
344
|
+
config.debug ?? false
|
|
345
|
+
]);
|
|
346
|
+
}
|
|
322
347
|
function getCheckpointApiClient(config) {
|
|
348
|
+
const resolvedConfig = resolveClientConfig(config);
|
|
349
|
+
const key = clientCacheKey(resolvedConfig);
|
|
350
|
+
let clientInstance = clientInstances.get(key);
|
|
323
351
|
if (!clientInstance) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
throw new Error(
|
|
327
|
-
"AgentShield API key is required. Set CHECKPOINT_API_KEY environment variable or pass apiKey in config."
|
|
328
|
-
);
|
|
329
|
-
}
|
|
330
|
-
clientInstance = new CheckpointApiClient({
|
|
331
|
-
apiKey,
|
|
332
|
-
baseUrl: config?.baseUrl || process.env.AGENTSHIELD_API_URL,
|
|
333
|
-
// Default to edge detection unless explicitly disabled
|
|
334
|
-
useEdge: config?.useEdge ?? process.env.AGENTSHIELD_USE_EDGE !== "false",
|
|
335
|
-
timeout: config?.timeout,
|
|
336
|
-
debug: config?.debug || process.env.AGENTSHIELD_DEBUG === "true"
|
|
337
|
-
});
|
|
352
|
+
clientInstance = new CheckpointApiClient(resolvedConfig);
|
|
353
|
+
clientInstances.set(key, clientInstance);
|
|
338
354
|
}
|
|
339
355
|
return clientInstance;
|
|
340
356
|
}
|
|
341
357
|
function resetCheckpointApiClient() {
|
|
342
|
-
|
|
358
|
+
clientInstances.clear();
|
|
343
359
|
}
|
|
344
360
|
var AgentShieldClient = CheckpointApiClient;
|
|
345
361
|
var getAgentShieldClient = getCheckpointApiClient;
|
|
@@ -558,7 +574,7 @@ function withCheckpointApi(config = {}) {
|
|
|
558
574
|
});
|
|
559
575
|
if (!result.success || !result.data) {
|
|
560
576
|
if (config.debug) {
|
|
561
|
-
console.warn("[
|
|
577
|
+
console.warn("[Checkpoint] API error:", result.error);
|
|
562
578
|
}
|
|
563
579
|
if (failOpen) {
|
|
564
580
|
return server.NextResponse.next();
|
|
@@ -570,7 +586,7 @@ function withCheckpointApi(config = {}) {
|
|
|
570
586
|
}
|
|
571
587
|
const decision = result.data.decision;
|
|
572
588
|
if (config.debug) {
|
|
573
|
-
console.log("[
|
|
589
|
+
console.log("[Checkpoint] Decision:", {
|
|
574
590
|
path,
|
|
575
591
|
action: decision.action,
|
|
576
592
|
isAgent: decision.isAgent,
|
|
@@ -586,12 +602,18 @@ function withCheckpointApi(config = {}) {
|
|
|
586
602
|
context: { userAgent, ipAddress, path, url: request.url, method: request.method }
|
|
587
603
|
}).catch((err) => {
|
|
588
604
|
if (config.debug) {
|
|
589
|
-
console.error("[
|
|
605
|
+
console.error("[Checkpoint] Log detection failed:", err);
|
|
590
606
|
}
|
|
591
607
|
});
|
|
592
608
|
}
|
|
593
609
|
if (decision.isAgent && config.onAgentDetected) {
|
|
594
|
-
|
|
610
|
+
try {
|
|
611
|
+
await config.onAgentDetected(request, decision);
|
|
612
|
+
} catch (error) {
|
|
613
|
+
if (config.debug) {
|
|
614
|
+
console.error("[Checkpoint] onAgentDetected callback failed:", error);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
595
617
|
}
|
|
596
618
|
const redirectMode = config.redirectMode ?? "instruct";
|
|
597
619
|
switch (decision.action) {
|
|
@@ -631,7 +653,7 @@ function withCheckpointApi(config = {}) {
|
|
|
631
653
|
}
|
|
632
654
|
} catch (error) {
|
|
633
655
|
if (config.debug) {
|
|
634
|
-
console.error("[
|
|
656
|
+
console.error("[Checkpoint] Middleware error:", error);
|
|
635
657
|
}
|
|
636
658
|
if (failOpen) {
|
|
637
659
|
return server.NextResponse.next();
|
|
@@ -659,7 +681,7 @@ var EdgeSessionTracker = class {
|
|
|
659
681
|
cookieName: config.cookieName || "__agentshield_session",
|
|
660
682
|
cookieMaxAge: config.cookieMaxAge || 3600,
|
|
661
683
|
// 1 hour default
|
|
662
|
-
encryptionKey: config.encryptionKey || process.env.
|
|
684
|
+
encryptionKey: config.encryptionKey || process.env.CHECKPOINT_SECRET || "agentshield-default-key"
|
|
663
685
|
};
|
|
664
686
|
}
|
|
665
687
|
/**
|
|
@@ -881,7 +903,7 @@ async function handlePolicyDecision(request, decision, config, detection) {
|
|
|
881
903
|
case checkpointShared.ENFORCEMENT_ACTIONS.CHALLENGE:
|
|
882
904
|
return buildChallengeResponse(request, decision, config, detection);
|
|
883
905
|
case checkpointShared.ENFORCEMENT_ACTIONS.LOG:
|
|
884
|
-
console.log("[
|
|
906
|
+
console.log("[Checkpoint] Policy decision (log):", {
|
|
885
907
|
path: request.nextUrl.pathname,
|
|
886
908
|
action: decision.action,
|
|
887
909
|
reason: decision.reason,
|
|
@@ -926,7 +948,7 @@ async function getPolicy(config) {
|
|
|
926
948
|
return await fetcher.getPolicy(config.fetchPolicy.projectId);
|
|
927
949
|
} catch (error) {
|
|
928
950
|
if (config.debug) {
|
|
929
|
-
console.warn("[
|
|
951
|
+
console.warn("[Checkpoint] Policy fetch failed, using fallback:", error);
|
|
930
952
|
}
|
|
931
953
|
return checkpointShared.PolicyConfigSchema.parse({
|
|
932
954
|
...checkpointShared.DEFAULT_POLICY,
|
|
@@ -956,7 +978,7 @@ async function applyPolicy(request, detection, config) {
|
|
|
956
978
|
return await handlePolicyDecision(request, decision, config, detection);
|
|
957
979
|
} catch (error) {
|
|
958
980
|
if (config.debug) {
|
|
959
|
-
console.error("[
|
|
981
|
+
console.error("[Checkpoint] Policy evaluation error:", error);
|
|
960
982
|
}
|
|
961
983
|
if (config.failOpen !== false) {
|
|
962
984
|
return null;
|
|
@@ -1015,5 +1037,3 @@ exports.resetCheckpointApiClient = resetCheckpointApiClient;
|
|
|
1015
1037
|
exports.withAgentShield = withAgentShield;
|
|
1016
1038
|
exports.withCheckpoint = withCheckpoint;
|
|
1017
1039
|
exports.withCheckpointApi = withCheckpointApi;
|
|
1018
|
-
//# sourceMappingURL=index.js.map
|
|
1019
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -160,7 +160,7 @@ var CheckpointApiClient = class {
|
|
|
160
160
|
debug;
|
|
161
161
|
constructor(config) {
|
|
162
162
|
if (!config.apiKey) {
|
|
163
|
-
throw new Error("
|
|
163
|
+
throw new Error("Checkpoint API key is required");
|
|
164
164
|
}
|
|
165
165
|
this.apiKey = config.apiKey;
|
|
166
166
|
this.useEdge = config.useEdge !== false;
|
|
@@ -191,7 +191,7 @@ var CheckpointApiClient = class {
|
|
|
191
191
|
clearTimeout(timeoutId);
|
|
192
192
|
const data = await response.json();
|
|
193
193
|
if (this.debug) {
|
|
194
|
-
console.log("[
|
|
194
|
+
console.log("[Checkpoint] Enforce response:", {
|
|
195
195
|
status: response.status,
|
|
196
196
|
action: data.data?.decision.action,
|
|
197
197
|
processingTimeMs: Date.now() - startTime
|
|
@@ -214,7 +214,7 @@ var CheckpointApiClient = class {
|
|
|
214
214
|
} catch (error) {
|
|
215
215
|
if (error instanceof Error && error.name === "AbortError") {
|
|
216
216
|
if (this.debug) {
|
|
217
|
-
console.warn("[
|
|
217
|
+
console.warn("[Checkpoint] Request timed out");
|
|
218
218
|
}
|
|
219
219
|
return {
|
|
220
220
|
success: false,
|
|
@@ -225,7 +225,7 @@ var CheckpointApiClient = class {
|
|
|
225
225
|
};
|
|
226
226
|
}
|
|
227
227
|
if (this.debug) {
|
|
228
|
-
console.error("[
|
|
228
|
+
console.error("[Checkpoint] Request failed:", error);
|
|
229
229
|
}
|
|
230
230
|
return {
|
|
231
231
|
success: false,
|
|
@@ -303,7 +303,7 @@ var CheckpointApiClient = class {
|
|
|
303
303
|
});
|
|
304
304
|
clearTimeout(timeoutId);
|
|
305
305
|
if (!response.ok && this.debug) {
|
|
306
|
-
console.warn("[
|
|
306
|
+
console.warn("[Checkpoint] Log detection returned non-2xx:", response.status);
|
|
307
307
|
}
|
|
308
308
|
} catch (error) {
|
|
309
309
|
clearTimeout(timeoutId);
|
|
@@ -311,34 +311,50 @@ var CheckpointApiClient = class {
|
|
|
311
311
|
}
|
|
312
312
|
} catch (error) {
|
|
313
313
|
if (this.debug) {
|
|
314
|
-
console.error("[
|
|
314
|
+
console.error("[Checkpoint] Log detection failed:", error);
|
|
315
315
|
}
|
|
316
316
|
throw error;
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
};
|
|
320
|
-
var
|
|
320
|
+
var clientInstances = /* @__PURE__ */ new Map();
|
|
321
|
+
function resolveClientConfig(config) {
|
|
322
|
+
const apiKey = config?.apiKey || process.env.CHECKPOINT_API_KEY;
|
|
323
|
+
if (!apiKey) {
|
|
324
|
+
throw new Error(
|
|
325
|
+
"Checkpoint API key is required. Set CHECKPOINT_API_KEY environment variable or pass apiKey in config."
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
apiKey,
|
|
330
|
+
baseUrl: config?.baseUrl || process.env.CHECKPOINT_API_URL,
|
|
331
|
+
// Default to edge detection unless explicitly disabled
|
|
332
|
+
useEdge: config?.useEdge ?? process.env.CHECKPOINT_USE_EDGE !== "false",
|
|
333
|
+
timeout: config?.timeout,
|
|
334
|
+
debug: config?.debug || process.env.CHECKPOINT_DEBUG === "true"
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
function clientCacheKey(config) {
|
|
338
|
+
return JSON.stringify([
|
|
339
|
+
config.apiKey,
|
|
340
|
+
config.baseUrl ?? "",
|
|
341
|
+
config.useEdge ?? true,
|
|
342
|
+
config.timeout ?? DEFAULT_TIMEOUT,
|
|
343
|
+
config.debug ?? false
|
|
344
|
+
]);
|
|
345
|
+
}
|
|
321
346
|
function getCheckpointApiClient(config) {
|
|
347
|
+
const resolvedConfig = resolveClientConfig(config);
|
|
348
|
+
const key = clientCacheKey(resolvedConfig);
|
|
349
|
+
let clientInstance = clientInstances.get(key);
|
|
322
350
|
if (!clientInstance) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
throw new Error(
|
|
326
|
-
"AgentShield API key is required. Set CHECKPOINT_API_KEY environment variable or pass apiKey in config."
|
|
327
|
-
);
|
|
328
|
-
}
|
|
329
|
-
clientInstance = new CheckpointApiClient({
|
|
330
|
-
apiKey,
|
|
331
|
-
baseUrl: config?.baseUrl || process.env.AGENTSHIELD_API_URL,
|
|
332
|
-
// Default to edge detection unless explicitly disabled
|
|
333
|
-
useEdge: config?.useEdge ?? process.env.AGENTSHIELD_USE_EDGE !== "false",
|
|
334
|
-
timeout: config?.timeout,
|
|
335
|
-
debug: config?.debug || process.env.AGENTSHIELD_DEBUG === "true"
|
|
336
|
-
});
|
|
351
|
+
clientInstance = new CheckpointApiClient(resolvedConfig);
|
|
352
|
+
clientInstances.set(key, clientInstance);
|
|
337
353
|
}
|
|
338
354
|
return clientInstance;
|
|
339
355
|
}
|
|
340
356
|
function resetCheckpointApiClient() {
|
|
341
|
-
|
|
357
|
+
clientInstances.clear();
|
|
342
358
|
}
|
|
343
359
|
var AgentShieldClient = CheckpointApiClient;
|
|
344
360
|
var getAgentShieldClient = getCheckpointApiClient;
|
|
@@ -557,7 +573,7 @@ function withCheckpointApi(config = {}) {
|
|
|
557
573
|
});
|
|
558
574
|
if (!result.success || !result.data) {
|
|
559
575
|
if (config.debug) {
|
|
560
|
-
console.warn("[
|
|
576
|
+
console.warn("[Checkpoint] API error:", result.error);
|
|
561
577
|
}
|
|
562
578
|
if (failOpen) {
|
|
563
579
|
return NextResponse.next();
|
|
@@ -569,7 +585,7 @@ function withCheckpointApi(config = {}) {
|
|
|
569
585
|
}
|
|
570
586
|
const decision = result.data.decision;
|
|
571
587
|
if (config.debug) {
|
|
572
|
-
console.log("[
|
|
588
|
+
console.log("[Checkpoint] Decision:", {
|
|
573
589
|
path,
|
|
574
590
|
action: decision.action,
|
|
575
591
|
isAgent: decision.isAgent,
|
|
@@ -585,12 +601,18 @@ function withCheckpointApi(config = {}) {
|
|
|
585
601
|
context: { userAgent, ipAddress, path, url: request.url, method: request.method }
|
|
586
602
|
}).catch((err) => {
|
|
587
603
|
if (config.debug) {
|
|
588
|
-
console.error("[
|
|
604
|
+
console.error("[Checkpoint] Log detection failed:", err);
|
|
589
605
|
}
|
|
590
606
|
});
|
|
591
607
|
}
|
|
592
608
|
if (decision.isAgent && config.onAgentDetected) {
|
|
593
|
-
|
|
609
|
+
try {
|
|
610
|
+
await config.onAgentDetected(request, decision);
|
|
611
|
+
} catch (error) {
|
|
612
|
+
if (config.debug) {
|
|
613
|
+
console.error("[Checkpoint] onAgentDetected callback failed:", error);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
594
616
|
}
|
|
595
617
|
const redirectMode = config.redirectMode ?? "instruct";
|
|
596
618
|
switch (decision.action) {
|
|
@@ -630,7 +652,7 @@ function withCheckpointApi(config = {}) {
|
|
|
630
652
|
}
|
|
631
653
|
} catch (error) {
|
|
632
654
|
if (config.debug) {
|
|
633
|
-
console.error("[
|
|
655
|
+
console.error("[Checkpoint] Middleware error:", error);
|
|
634
656
|
}
|
|
635
657
|
if (failOpen) {
|
|
636
658
|
return NextResponse.next();
|
|
@@ -658,7 +680,7 @@ var EdgeSessionTracker = class {
|
|
|
658
680
|
cookieName: config.cookieName || "__agentshield_session",
|
|
659
681
|
cookieMaxAge: config.cookieMaxAge || 3600,
|
|
660
682
|
// 1 hour default
|
|
661
|
-
encryptionKey: config.encryptionKey || process.env.
|
|
683
|
+
encryptionKey: config.encryptionKey || process.env.CHECKPOINT_SECRET || "agentshield-default-key"
|
|
662
684
|
};
|
|
663
685
|
}
|
|
664
686
|
/**
|
|
@@ -880,7 +902,7 @@ async function handlePolicyDecision(request, decision, config, detection) {
|
|
|
880
902
|
case ENFORCEMENT_ACTIONS.CHALLENGE:
|
|
881
903
|
return buildChallengeResponse(request, decision, config, detection);
|
|
882
904
|
case ENFORCEMENT_ACTIONS.LOG:
|
|
883
|
-
console.log("[
|
|
905
|
+
console.log("[Checkpoint] Policy decision (log):", {
|
|
884
906
|
path: request.nextUrl.pathname,
|
|
885
907
|
action: decision.action,
|
|
886
908
|
reason: decision.reason,
|
|
@@ -925,7 +947,7 @@ async function getPolicy(config) {
|
|
|
925
947
|
return await fetcher.getPolicy(config.fetchPolicy.projectId);
|
|
926
948
|
} catch (error) {
|
|
927
949
|
if (config.debug) {
|
|
928
|
-
console.warn("[
|
|
950
|
+
console.warn("[Checkpoint] Policy fetch failed, using fallback:", error);
|
|
929
951
|
}
|
|
930
952
|
return PolicyConfigSchema.parse({
|
|
931
953
|
...DEFAULT_POLICY,
|
|
@@ -955,7 +977,7 @@ async function applyPolicy(request, detection, config) {
|
|
|
955
977
|
return await handlePolicyDecision(request, decision, config, detection);
|
|
956
978
|
} catch (error) {
|
|
957
979
|
if (config.debug) {
|
|
958
|
-
console.error("[
|
|
980
|
+
console.error("[Checkpoint] Policy evaluation error:", error);
|
|
959
981
|
}
|
|
960
982
|
if (config.failOpen !== false) {
|
|
961
983
|
return null;
|
|
@@ -975,5 +997,3 @@ var VERSION = "0.1.0";
|
|
|
975
997
|
*/
|
|
976
998
|
|
|
977
999
|
export { AgentShieldClient, CheckpointApiClient, EdgeSessionTracker, StatelessSessionChecker, VERSION, agentShieldMiddleware, applyPolicy, buildBlockedResponse2 as buildPolicyBlockedResponse, buildRedirectResponse2 as buildPolicyRedirectResponse, createAgentShieldMiddleware2 as createAgentShieldMiddleware, createAgentShieldMiddleware as createAgentShieldMiddlewareBase, createContextFromDetection, createEnhancedAgentShieldMiddleware, createAgentShieldMiddleware2 as createMiddleware, evaluatePolicyForDetection, getAgentShieldClient, getCheckpointApiClient, getPolicy, handlePolicyDecision, resetAgentShieldClient, resetCheckpointApiClient, withAgentShield, withCheckpoint, withCheckpointApi };
|
|
978
|
-
//# sourceMappingURL=index.mjs.map
|
|
979
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/middleware-edge.js
CHANGED
package/dist/middleware-edge.mjs
CHANGED
package/dist/middleware-node.js
CHANGED
package/dist/middleware-node.mjs
CHANGED
package/dist/middleware.d.mts
CHANGED
package/dist/middleware.d.ts
CHANGED
package/dist/middleware.js
CHANGED
package/dist/middleware.mjs
CHANGED
|
@@ -91,5 +91,3 @@ exports.getWasmModule = getWasmModule;
|
|
|
91
91
|
exports.isNodejsRuntime = isNodejsRuntime;
|
|
92
92
|
exports.isWasmInitialized = isWasmInitialized;
|
|
93
93
|
exports.loadWasmNodejs = loadWasmNodejs;
|
|
94
|
-
//# sourceMappingURL=nodejs-wasm-loader.js.map
|
|
95
|
-
//# sourceMappingURL=nodejs-wasm-loader.js.map
|
package/dist/policy.js
CHANGED
|
@@ -74,7 +74,7 @@ async function handlePolicyDecision(request, decision, config, detection) {
|
|
|
74
74
|
case checkpointShared.ENFORCEMENT_ACTIONS.CHALLENGE:
|
|
75
75
|
return buildChallengeResponse(request, decision, config, detection);
|
|
76
76
|
case checkpointShared.ENFORCEMENT_ACTIONS.LOG:
|
|
77
|
-
console.log("[
|
|
77
|
+
console.log("[Checkpoint] Policy decision (log):", {
|
|
78
78
|
path: request.nextUrl.pathname,
|
|
79
79
|
action: decision.action,
|
|
80
80
|
reason: decision.reason,
|
|
@@ -119,7 +119,7 @@ async function getPolicy(config) {
|
|
|
119
119
|
return await fetcher.getPolicy(config.fetchPolicy.projectId);
|
|
120
120
|
} catch (error) {
|
|
121
121
|
if (config.debug) {
|
|
122
|
-
console.warn("[
|
|
122
|
+
console.warn("[Checkpoint] Policy fetch failed, using fallback:", error);
|
|
123
123
|
}
|
|
124
124
|
return checkpointShared.PolicyConfigSchema.parse({
|
|
125
125
|
...checkpointShared.DEFAULT_POLICY,
|
|
@@ -149,7 +149,7 @@ async function applyPolicy(request, detection, config) {
|
|
|
149
149
|
return await handlePolicyDecision(request, decision, config, detection);
|
|
150
150
|
} catch (error) {
|
|
151
151
|
if (config.debug) {
|
|
152
|
-
console.error("[
|
|
152
|
+
console.error("[Checkpoint] Policy evaluation error:", error);
|
|
153
153
|
}
|
|
154
154
|
if (config.failOpen !== false) {
|
|
155
155
|
return null;
|
|
@@ -185,5 +185,3 @@ exports.createContextFromDetection = createContextFromDetection;
|
|
|
185
185
|
exports.evaluatePolicyForDetection = evaluatePolicyForDetection;
|
|
186
186
|
exports.getPolicy = getPolicy;
|
|
187
187
|
exports.handlePolicyDecision = handlePolicyDecision;
|
|
188
|
-
//# sourceMappingURL=policy.js.map
|
|
189
|
-
//# sourceMappingURL=policy.js.map
|
package/dist/policy.mjs
CHANGED
|
@@ -73,7 +73,7 @@ async function handlePolicyDecision(request, decision, config, detection) {
|
|
|
73
73
|
case ENFORCEMENT_ACTIONS.CHALLENGE:
|
|
74
74
|
return buildChallengeResponse(request, decision, config, detection);
|
|
75
75
|
case ENFORCEMENT_ACTIONS.LOG:
|
|
76
|
-
console.log("[
|
|
76
|
+
console.log("[Checkpoint] Policy decision (log):", {
|
|
77
77
|
path: request.nextUrl.pathname,
|
|
78
78
|
action: decision.action,
|
|
79
79
|
reason: decision.reason,
|
|
@@ -118,7 +118,7 @@ async function getPolicy(config) {
|
|
|
118
118
|
return await fetcher.getPolicy(config.fetchPolicy.projectId);
|
|
119
119
|
} catch (error) {
|
|
120
120
|
if (config.debug) {
|
|
121
|
-
console.warn("[
|
|
121
|
+
console.warn("[Checkpoint] Policy fetch failed, using fallback:", error);
|
|
122
122
|
}
|
|
123
123
|
return PolicyConfigSchema.parse({
|
|
124
124
|
...DEFAULT_POLICY,
|
|
@@ -148,7 +148,7 @@ async function applyPolicy(request, detection, config) {
|
|
|
148
148
|
return await handlePolicyDecision(request, decision, config, detection);
|
|
149
149
|
} catch (error) {
|
|
150
150
|
if (config.debug) {
|
|
151
|
-
console.error("[
|
|
151
|
+
console.error("[Checkpoint] Policy evaluation error:", error);
|
|
152
152
|
}
|
|
153
153
|
if (config.failOpen !== false) {
|
|
154
154
|
return null;
|
|
@@ -161,5 +161,3 @@ async function applyPolicy(request, detection, config) {
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
export { applyPolicy, buildBlockedResponse, buildChallengeResponse, buildRedirectResponse, createContextFromDetection, evaluatePolicyForDetection, getPolicy, handlePolicyDecision };
|
|
164
|
-
//# sourceMappingURL=policy.mjs.map
|
|
165
|
-
//# sourceMappingURL=policy.mjs.map
|
package/dist/session-tracker.js
CHANGED
|
@@ -11,7 +11,7 @@ var EdgeSessionTracker = class {
|
|
|
11
11
|
cookieName: config.cookieName || "__agentshield_session",
|
|
12
12
|
cookieMaxAge: config.cookieMaxAge || 3600,
|
|
13
13
|
// 1 hour default
|
|
14
|
-
encryptionKey: config.encryptionKey || process.env.
|
|
14
|
+
encryptionKey: config.encryptionKey || process.env.CHECKPOINT_SECRET || "agentshield-default-key"
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -166,5 +166,3 @@ var StatelessSessionChecker = class {
|
|
|
166
166
|
|
|
167
167
|
exports.EdgeSessionTracker = EdgeSessionTracker;
|
|
168
168
|
exports.StatelessSessionChecker = StatelessSessionChecker;
|
|
169
|
-
//# sourceMappingURL=session-tracker.js.map
|
|
170
|
-
//# sourceMappingURL=session-tracker.js.map
|
package/dist/session-tracker.mjs
CHANGED
|
@@ -9,7 +9,7 @@ var EdgeSessionTracker = class {
|
|
|
9
9
|
cookieName: config.cookieName || "__agentshield_session",
|
|
10
10
|
cookieMaxAge: config.cookieMaxAge || 3600,
|
|
11
11
|
// 1 hour default
|
|
12
|
-
encryptionKey: config.encryptionKey || process.env.
|
|
12
|
+
encryptionKey: config.encryptionKey || process.env.CHECKPOINT_SECRET || "agentshield-default-key"
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
@@ -163,5 +163,3 @@ var StatelessSessionChecker = class {
|
|
|
163
163
|
};
|
|
164
164
|
|
|
165
165
|
export { EdgeSessionTracker, StatelessSessionChecker };
|
|
166
|
-
//# sourceMappingURL=session-tracker.mjs.map
|
|
167
|
-
//# sourceMappingURL=session-tracker.mjs.map
|