Prepare for merge with breaking changes from remote origin
authormaximiliancw <redacted>
Fri, 9 Jan 2026 14:21:23 +0000 (15:21 +0100)
committermaximiliancw <redacted>
Fri, 9 Jan 2026 14:21:23 +0000 (15:21 +0100)
src/index.ts
src/routes/proxy.test.ts
src/routes/proxy.ts

index 2019698fe50c510cca91dc9d840031cc7c275dda..a1e43582c3891890df7de005095af698779dafc1 100644 (file)
@@ -165,8 +165,8 @@ Provider:
 
   console.log(`
 ╔═══════════════════════════════════════════════════════════╗
-║                       LLM-Shield                          ║
-║         Intelligent privacy-aware LLM proxy               ║
+║                       PasteGuard                          ║
+║         Guard your paste - Privacy-aware LLM proxy        ║
 ╚═══════════════════════════════════════════════════════════╝
 
 Server:     http://${host}:${port}
index 44067efbca8be9d16fb5065af259be071189d731..9c7da943eaff68942b0af57dbdf877ce22c3a6ef 100644 (file)
@@ -84,8 +84,8 @@ NhAAAAAwEAAQAAAIEAyK8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v
     expect(body.error.details.secrets_detected).toContain("OPENSSH_PRIVATE_KEY");
 
     // Check headers
-    expect(res.headers.get("X-LLM-Shield-Secrets-Detected")).toBe("true");
-    expect(res.headers.get("X-LLM-Shield-Secrets-Types")).toContain("OPENSSH_PRIVATE_KEY");
+    expect(res.headers.get("X-PasteGuard-Secrets-Detected")).toBe("true");
+    expect(res.headers.get("X-PasteGuard-Secrets-Types")).toContain("OPENSSH_PRIVATE_KEY");
   });
 
   test("blocks request with PEM private key", async () => {
@@ -114,7 +114,7 @@ MIIEpAIBAAKCAQEAyK8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v
       error: { details: { secrets_detected: string[] } };
     };
     expect(body.error.details.secrets_detected).toContain("PEM_PRIVATE_KEY");
-    expect(res.headers.get("X-LLM-Shield-Secrets-Detected")).toBe("true");
+    expect(res.headers.get("X-PasteGuard-Secrets-Detected")).toBe("true");
   });
 
   test("allows request without secrets", async () => {
@@ -135,7 +135,7 @@ MIIEpAIBAAKCAQEAyK8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v
     // Should not be blocked (may fail for other reasons like missing auth, but not 422)
     expect(res.status).not.toBe(422);
     // Should not have secrets detection headers
-    expect(res.headers.get("X-LLM-Shield-Secrets-Detected")).toBeNull();
+    expect(res.headers.get("X-PasteGuard-Secrets-Detected")).toBeNull();
   });
 
   test("does not set secrets headers when no secrets detected", async () => {
@@ -154,7 +154,7 @@ MIIEpAIBAAKCAQEAyK8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v5Q8v
     });
 
     // Should not have secrets headers
-    expect(res.headers.get("X-LLM-Shield-Secrets-Detected")).toBeNull();
-    expect(res.headers.get("X-LLM-Shield-Secrets-Types")).toBeNull();
+    expect(res.headers.get("X-PasteGuard-Secrets-Detected")).toBeNull();
+    expect(res.headers.get("X-PasteGuard-Secrets-Types")).toBeNull();
   });
 });
index 3466f2f849b8a61cd7a9804ea357db6aba449f24..5a79c3951642331dadf20034cc6136032a3bd288 100644 (file)
@@ -85,8 +85,8 @@ proxyRoutes.post(
         const secretTypesStr = secretTypes.join(", ");
 
         // Set headers before returning error
-        c.header("X-LLM-Shield-Secrets-Detected", "true");
-        c.header("X-LLM-Shield-Secrets-Types", secretTypesStr);
+        c.header("X-PasteGuard-Secrets-Detected", "true");
+        c.header("X-PasteGuard-Secrets-Types", secretTypesStr);
 
         // Block action (Phase 1) - return 422 error
         if (config.secrets_detection.action === "block") {
@@ -179,7 +179,7 @@ async function handleCompletion(
       }
     }
 
-    setShieldHeaders(c, decision, secretsDetected, secretsTypes);
+    setPasteGuardHeaders(c, decision, secretsDetected, secretsTypes);
 
     if (result.isStreaming) {
       return handleStreamingResponse(
@@ -212,27 +212,27 @@ async function handleCompletion(
 }
 
 /**
- * Set X-LLM-Shield response headers
+ * Set X-PasteGuard response headers
  */
-function setShieldHeaders(
+function setPasteGuardHeaders(
   c: Context,
   decision: RoutingDecision,
   secretsDetected?: boolean,
   secretsTypes?: string[],
 ) {
-  c.header("X-LLM-Shield-Mode", decision.mode);
-  c.header("X-LLM-Shield-Provider", decision.provider);
-  c.header("X-LLM-Shield-PII-Detected", decision.piiResult.hasPII.toString());
-  c.header("X-LLM-Shield-Language", decision.piiResult.language);
+  c.header("X-PasteGuard-Mode", decision.mode);
+  c.header("X-PasteGuard-Provider", decision.provider);
+  c.header("X-PasteGuard-PII-Detected", decision.piiResult.hasPII.toString());
+  c.header("X-PasteGuard-Language", decision.piiResult.language);
   if (decision.piiResult.languageFallback) {
-    c.header("X-LLM-Shield-Language-Fallback", "true");
+    c.header("X-PasteGuard-Language-Fallback", "true");
   }
   if (decision.mode === "mask") {
-    c.header("X-LLM-Shield-PII-Masked", decision.piiResult.hasPII.toString());
+    c.header("X-PasteGuard-PII-Masked", decision.piiResult.hasPII.toString());
   }
   if (secretsDetected && secretsTypes) {
-    c.header("X-LLM-Shield-Secrets-Detected", "true");
-    c.header("X-LLM-Shield-Secrets-Types", secretsTypes.join(","));
+    c.header("X-PasteGuard-Secrets-Detected", "true");
+    c.header("X-PasteGuard-Secrets-Types", secretsTypes.join(","));
   }
 }
 
git clone https://git.99rst.org/PROJECT