@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.
Files changed (85) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/adapt.js +0 -2
  4. package/dist/adapt.mjs +0 -2
  5. package/dist/api-client.js +38 -24
  6. package/dist/api-client.mjs +38 -24
  7. package/dist/api-middleware.js +48 -28
  8. package/dist/api-middleware.mjs +48 -28
  9. package/dist/create-middleware.d.mts +1 -1
  10. package/dist/create-middleware.d.ts +1 -1
  11. package/dist/create-middleware.js +0 -2
  12. package/dist/create-middleware.mjs +0 -2
  13. package/dist/edge/index.d.mts +1 -1
  14. package/dist/edge/index.d.ts +1 -1
  15. package/dist/edge/index.js +4 -6
  16. package/dist/edge/index.mjs +4 -6
  17. package/dist/edge-runtime-loader.js +0 -2
  18. package/dist/edge-runtime-loader.mjs +0 -2
  19. package/dist/edge-wasm-middleware.js +0 -2
  20. package/dist/edge-wasm-middleware.mjs +0 -2
  21. package/dist/index.d.mts +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +53 -33
  24. package/dist/index.mjs +53 -33
  25. package/dist/middleware-edge.js +0 -2
  26. package/dist/middleware-edge.mjs +0 -2
  27. package/dist/middleware-node.js +0 -2
  28. package/dist/middleware-node.mjs +0 -2
  29. package/dist/middleware.d.mts +1 -1
  30. package/dist/middleware.d.ts +1 -1
  31. package/dist/middleware.js +0 -2
  32. package/dist/middleware.mjs +0 -2
  33. package/dist/nodejs-wasm-loader.js +0 -2
  34. package/dist/nodejs-wasm-loader.mjs +0 -2
  35. package/dist/policy.js +3 -5
  36. package/dist/policy.mjs +3 -5
  37. package/dist/session-tracker.js +1 -3
  38. package/dist/session-tracker.mjs +1 -3
  39. package/dist/signature-verifier.js +0 -2
  40. package/dist/signature-verifier.mjs +0 -2
  41. package/dist/translate.js +0 -2
  42. package/dist/translate.mjs +0 -2
  43. package/dist/{types-C-xCUNTr.d.mts → types-D9RQvPNy.d.mts} +1 -1
  44. package/dist/{types-C-xCUNTr.d.ts → types-D9RQvPNy.d.ts} +1 -1
  45. package/dist/wasm-middleware.js +0 -2
  46. package/dist/wasm-middleware.mjs +0 -2
  47. package/dist/wasm-setup.js +0 -2
  48. package/dist/wasm-setup.mjs +0 -2
  49. package/package.json +3 -3
  50. package/dist/adapt.js.map +0 -1
  51. package/dist/adapt.mjs.map +0 -1
  52. package/dist/api-client.js.map +0 -1
  53. package/dist/api-client.mjs.map +0 -1
  54. package/dist/api-middleware.js.map +0 -1
  55. package/dist/api-middleware.mjs.map +0 -1
  56. package/dist/create-middleware.js.map +0 -1
  57. package/dist/create-middleware.mjs.map +0 -1
  58. package/dist/edge/index.js.map +0 -1
  59. package/dist/edge/index.mjs.map +0 -1
  60. package/dist/edge-runtime-loader.js.map +0 -1
  61. package/dist/edge-runtime-loader.mjs.map +0 -1
  62. package/dist/edge-wasm-middleware.js.map +0 -1
  63. package/dist/edge-wasm-middleware.mjs.map +0 -1
  64. package/dist/index.js.map +0 -1
  65. package/dist/index.mjs.map +0 -1
  66. package/dist/middleware-edge.js.map +0 -1
  67. package/dist/middleware-edge.mjs.map +0 -1
  68. package/dist/middleware-node.js.map +0 -1
  69. package/dist/middleware-node.mjs.map +0 -1
  70. package/dist/middleware.js.map +0 -1
  71. package/dist/middleware.mjs.map +0 -1
  72. package/dist/nodejs-wasm-loader.js.map +0 -1
  73. package/dist/nodejs-wasm-loader.mjs.map +0 -1
  74. package/dist/policy.js.map +0 -1
  75. package/dist/policy.mjs.map +0 -1
  76. package/dist/session-tracker.js.map +0 -1
  77. package/dist/session-tracker.mjs.map +0 -1
  78. package/dist/signature-verifier.js.map +0 -1
  79. package/dist/signature-verifier.mjs.map +0 -1
  80. package/dist/translate.js.map +0 -1
  81. package/dist/translate.mjs.map +0 -1
  82. package/dist/wasm-middleware.js.map +0 -1
  83. package/dist/wasm-middleware.mjs.map +0 -1
  84. package/dist/wasm-setup.js.map +0 -1
  85. package/dist/wasm-setup.mjs.map +0 -1
@@ -91,7 +91,7 @@ async function createDetector(config) {
91
91
  });
92
92
  await wasmDetector.ensureReady();
93
93
  if (config.debug) {
94
- console.debug("[AgentShield] WASM detector initialized in Edge Runtime", {
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("[AgentShield] WASM runtime not available, using pattern detection:", error);
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("[AgentShield] No WASM module provided, using pattern detection");
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("[AgentShield] Blocked by policy", {
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
@@ -197,5 +197,3 @@ function getDefaultAgentShield(config) {
197
197
  }
198
198
 
199
199
  export { createEdgeAgentShield, getDefaultAgentShield };
200
- //# sourceMappingURL=edge-runtime-loader.mjs.map
201
- //# sourceMappingURL=edge-runtime-loader.mjs.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
@@ -311,5 +311,3 @@ function createEdgeWasmMiddleware(config) {
311
311
  }
312
312
 
313
313
  export { createEdgeWasmMiddleware, initializeEdgeWasm };
314
- //# sourceMappingURL=edge-wasm-middleware.mjs.map
315
- //# sourceMappingURL=edge-wasm-middleware.mjs.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-C-xCUNTr.mjs';
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-C-xCUNTr.js';
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("AgentShield API key is required");
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("[AgentShield] Enforce response:", {
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("[AgentShield] Request timed out");
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("[AgentShield] Request failed:", 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("[AgentShield] Log detection returned non-2xx:", response.status);
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("[AgentShield] Log detection failed:", error);
315
+ console.error("[Checkpoint] Log detection failed:", error);
316
316
  }
317
317
  throw error;
318
318
  }
319
319
  }
320
320
  };
321
- var clientInstance = null;
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
- const apiKey = config?.apiKey || process.env.CHECKPOINT_API_KEY;
325
- if (!apiKey) {
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
- clientInstance = null;
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("[AgentShield] API error:", result.error);
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("[AgentShield] Decision:", {
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("[AgentShield] Log detection failed:", err);
605
+ console.error("[Checkpoint] Log detection failed:", err);
590
606
  }
591
607
  });
592
608
  }
593
609
  if (decision.isAgent && config.onAgentDetected) {
594
- await config.onAgentDetected(request, decision);
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("[AgentShield] Middleware error:", 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.AGENTSHIELD_SECRET || "agentshield-default-key"
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("[AgentShield] Policy decision (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("[AgentShield] Policy fetch failed, using fallback:", error);
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("[AgentShield] Policy evaluation error:", 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("AgentShield API key is required");
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("[AgentShield] Enforce response:", {
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("[AgentShield] Request timed out");
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("[AgentShield] Request failed:", 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("[AgentShield] Log detection returned non-2xx:", response.status);
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("[AgentShield] Log detection failed:", error);
314
+ console.error("[Checkpoint] Log detection failed:", error);
315
315
  }
316
316
  throw error;
317
317
  }
318
318
  }
319
319
  };
320
- var clientInstance = null;
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
- const apiKey = config?.apiKey || process.env.CHECKPOINT_API_KEY;
324
- if (!apiKey) {
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
- clientInstance = null;
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("[AgentShield] API error:", result.error);
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("[AgentShield] Decision:", {
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("[AgentShield] Log detection failed:", err);
604
+ console.error("[Checkpoint] Log detection failed:", err);
589
605
  }
590
606
  });
591
607
  }
592
608
  if (decision.isAgent && config.onAgentDetected) {
593
- await config.onAgentDetected(request, decision);
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("[AgentShield] Middleware error:", 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.AGENTSHIELD_SECRET || "agentshield-default-key"
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("[AgentShield] Policy decision (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("[AgentShield] Policy fetch failed, using fallback:", error);
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("[AgentShield] Policy evaluation error:", 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
@@ -130,5 +130,3 @@ Object.defineProperty(exports, "initEngineEdge", {
130
130
  get: function () { return edge.initEngineEdge; }
131
131
  });
132
132
  exports.withCheckpoint = withCheckpoint;
133
- //# sourceMappingURL=middleware-edge.js.map
134
- //# sourceMappingURL=middleware-edge.js.map
@@ -125,5 +125,3 @@ async function dispatchOnResult(config, result, req) {
125
125
  }
126
126
 
127
127
  export { withCheckpoint };
128
- //# sourceMappingURL=middleware-edge.mjs.map
129
- //# sourceMappingURL=middleware-edge.mjs.map
@@ -123,5 +123,3 @@ async function dispatchOnResult(config, result, req) {
123
123
 
124
124
  exports._buildVerifyOpts = buildVerifyOpts;
125
125
  exports.withCheckpoint = withCheckpoint;
126
- //# sourceMappingURL=middleware-node.js.map
127
- //# sourceMappingURL=middleware-node.js.map
@@ -120,5 +120,3 @@ async function dispatchOnResult(config, result, req) {
120
120
  }
121
121
 
122
122
  export { buildVerifyOpts as _buildVerifyOpts, withCheckpoint };
123
- //# sourceMappingURL=middleware-node.mjs.map
124
- //# sourceMappingURL=middleware-node.mjs.map
@@ -1,5 +1,5 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
- import { N as NextJSMiddlewareConfig } from './types-C-xCUNTr.mjs';
2
+ import { N as NextJSMiddlewareConfig } from './types-D9RQvPNy.mjs';
3
3
  import '@kya-os/checkpoint-shared';
4
4
  import '@kya-os/checkpoint';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
- import { N as NextJSMiddlewareConfig } from './types-C-xCUNTr.js';
2
+ import { N as NextJSMiddlewareConfig } from './types-D9RQvPNy.js';
3
3
  import '@kya-os/checkpoint-shared';
4
4
  import '@kya-os/checkpoint';
5
5
 
@@ -11,5 +11,3 @@ function agentShield(config = {}) {
11
11
 
12
12
  exports.agentShield = agentShield;
13
13
  exports.createAgentShieldMiddleware = createAgentShieldMiddleware;
14
- //# sourceMappingURL=middleware.js.map
15
- //# sourceMappingURL=middleware.js.map
@@ -8,5 +8,3 @@ function agentShield(config = {}) {
8
8
  }
9
9
 
10
10
  export { agentShield, createAgentShieldMiddleware };
11
- //# sourceMappingURL=middleware.mjs.map
12
- //# sourceMappingURL=middleware.mjs.map
@@ -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
@@ -81,5 +81,3 @@ function isWasmInitialized() {
81
81
  }
82
82
 
83
83
  export { getWasmModule, isNodejsRuntime, isWasmInitialized, loadWasmNodejs };
84
- //# sourceMappingURL=nodejs-wasm-loader.mjs.map
85
- //# sourceMappingURL=nodejs-wasm-loader.mjs.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("[AgentShield] Policy decision (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("[AgentShield] Policy fetch failed, using fallback:", error);
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("[AgentShield] Policy evaluation error:", 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("[AgentShield] Policy decision (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("[AgentShield] Policy fetch failed, using fallback:", error);
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("[AgentShield] Policy evaluation error:", 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
@@ -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.AGENTSHIELD_SECRET || "agentshield-default-key"
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
@@ -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.AGENTSHIELD_SECRET || "agentshield-default-key"
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