@lockllm/sdk 1.2.0 → 1.3.0
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 +79 -2
- package/README.md +39 -16
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +8 -0
- package/dist/scan.js.map +1 -1
- package/dist/scan.mjs +8 -0
- package/dist/types/common.d.ts +15 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/scan.d.ts +22 -1
- package/dist/types/scan.d.ts.map +1 -1
- package/dist/utils/proxy-headers.d.ts +1 -1
- package/dist/utils/proxy-headers.d.ts.map +1 -1
- package/dist/utils/proxy-headers.js +21 -2
- package/dist/utils/proxy-headers.js.map +1 -1
- package/dist/utils/proxy-headers.mjs +21 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,82 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.3.0] - 2026-02-27
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
#### Prompt Compression
|
|
8
|
+
Reduce token usage and costs by compressing prompts before sending them to AI providers. Three compression methods are available:
|
|
9
|
+
|
|
10
|
+
- **`toon`** (Free) - Converts JSON data to a compact notation format, achieving 30-60% token savings on structured data. Only activates when the prompt starts with `{` or `[` (pure JSON). Non-JSON input is returned unchanged.
|
|
11
|
+
- **`compact`** ($0.0001/use) - Advanced compression that intelligently reduces prompt length while preserving meaning. Works on any text type. Supports configurable compression rate (0.3-0.7, default 0.5).
|
|
12
|
+
- **`combined`** ($0.0001/use) - Applies TOON first, then runs Compact on the result for maximum token reduction. For non-JSON input, behaves identically to `compact`. Best when you want maximum compression.
|
|
13
|
+
|
|
14
|
+
Prompt compression is opt-in and disabled by default. Security scanning always runs on the original text before compression is applied.
|
|
15
|
+
|
|
16
|
+
**Proxy mode:**
|
|
17
|
+
```typescript
|
|
18
|
+
// TOON - compress structured JSON prompts (free)
|
|
19
|
+
const openai = createOpenAI({
|
|
20
|
+
apiKey: process.env.LOCKLLM_API_KEY,
|
|
21
|
+
proxyOptions: {
|
|
22
|
+
compressionAction: 'toon'
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// Compact - compress any text with configurable rate
|
|
27
|
+
const openai2 = createOpenAI({
|
|
28
|
+
apiKey: process.env.LOCKLLM_API_KEY,
|
|
29
|
+
proxyOptions: {
|
|
30
|
+
compressionAction: 'compact',
|
|
31
|
+
compressionRate: 0.4 // Lower = more aggressive compression (0.3-0.7, default: 0.5)
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Combined - TOON then Compact for maximum compression
|
|
36
|
+
const openai3 = createOpenAI({
|
|
37
|
+
apiKey: process.env.LOCKLLM_API_KEY,
|
|
38
|
+
proxyOptions: {
|
|
39
|
+
compressionAction: 'combined',
|
|
40
|
+
compressionRate: 0.5
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Scan API:**
|
|
46
|
+
```typescript
|
|
47
|
+
const result = await lockllm.scan(
|
|
48
|
+
{ input: '{"users": [{"name": "Alice"}, {"name": "Bob"}]}' },
|
|
49
|
+
{ compressionAction: 'combined', compressionRate: 0.5 }
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
if (result.compression_result) {
|
|
53
|
+
console.log(result.compression_result.method); // 'combined'
|
|
54
|
+
console.log(result.compression_result.compressed_input); // Compressed text
|
|
55
|
+
console.log(result.compression_result.compression_ratio); // e.g., 0.35
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### Compression Response Metadata
|
|
60
|
+
Proxy responses now include compression metadata in response headers:
|
|
61
|
+
- `X-LockLLM-Compression-Method` - Compression method used (`toon`, `compact`, or `combined`)
|
|
62
|
+
- `X-LockLLM-Compression-Applied` - Whether compression was applied (`true` or `false`)
|
|
63
|
+
- `X-LockLLM-Compression-Ratio` - Ratio of compressed to original length (lower = better)
|
|
64
|
+
|
|
65
|
+
Parse these with `parseProxyMetadata()`:
|
|
66
|
+
```typescript
|
|
67
|
+
const metadata = parseProxyMetadata(response.headers);
|
|
68
|
+
console.log(metadata.compression);
|
|
69
|
+
// { method: 'combined', applied: true, ratio: 0.35 }
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Notes
|
|
73
|
+
- Prompt compression is opt-in. Existing integrations continue to work without changes.
|
|
74
|
+
- All new types (`CompressionAction`, `CompressionResult`) are fully exported for TypeScript users.
|
|
75
|
+
- Security scanning always runs on the original (uncompressed) text for maximum protection.
|
|
76
|
+
- TOON compression is free. Compact and Combined cost $0.0001 per request.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
3
80
|
## [1.2.0] - 2026-02-21
|
|
4
81
|
|
|
5
82
|
### Added
|
|
@@ -134,14 +211,14 @@ const openai = createOpenAI({
|
|
|
134
211
|
scanMode: 'combined',
|
|
135
212
|
scanAction: 'block',
|
|
136
213
|
policyAction: 'block',
|
|
137
|
-
routeAction: 'auto', // Enable
|
|
214
|
+
routeAction: 'auto', // Enable smart routing
|
|
138
215
|
cacheResponse: true, // Enable response caching
|
|
139
216
|
cacheTTL: 3600 // Cache for 1 hour
|
|
140
217
|
}
|
|
141
218
|
});
|
|
142
219
|
```
|
|
143
220
|
|
|
144
|
-
####
|
|
221
|
+
#### Smart Routing
|
|
145
222
|
Let LockLLM automatically select the best model for each request based on task type and complexity. Set `routeAction: 'auto'` to enable, or `routeAction: 'custom'` to use your own routing rules from the dashboard.
|
|
146
223
|
|
|
147
224
|
#### Response Caching
|
package/README.md
CHANGED
|
@@ -81,8 +81,9 @@ LockLLM provides production-ready AI security that integrates seamlessly into yo
|
|
|
81
81
|
| **Custom Endpoints** | Configure custom URLs for any provider (self-hosted, Azure, private clouds) |
|
|
82
82
|
| **Custom Content Policies** | Define your own content rules in the dashboard and enforce them automatically across all providers |
|
|
83
83
|
| **AI Abuse Detection** | Detect bot-generated content, repetition attacks, and resource exhaustion from your end-users |
|
|
84
|
-
| **
|
|
84
|
+
| **Smart Routing** | Automatically select the optimal model for each request based on task type and complexity to save costs |
|
|
85
85
|
| **PII Detection & Redaction** | Detect and automatically redact emails, phone numbers, SSNs, credit cards, and other personal information before they reach AI providers |
|
|
86
|
+
| **Prompt Compression** | Reduce token usage with TOON (JSON-to-compact-notation, free), Compact (advanced compression, $0.0001/use), or Combined (TOON then Compact for maximum reduction, $0.0001/use) methods |
|
|
86
87
|
| **Response Caching** | Cache identical LLM responses to reduce costs and latency on repeated queries |
|
|
87
88
|
| **Enterprise Privacy** | Provider keys encrypted at rest, prompts never stored |
|
|
88
89
|
| **Production Ready** | Battle-tested with automatic retries, timeouts, and error handling |
|
|
@@ -625,6 +626,8 @@ interface ScanOptions {
|
|
|
625
626
|
policyAction?: 'block' | 'allow_with_warning'; // Custom policy behavior
|
|
626
627
|
abuseAction?: 'block' | 'allow_with_warning'; // Abuse detection (opt-in)
|
|
627
628
|
piiAction?: 'strip' | 'block' | 'allow_with_warning'; // PII detection (opt-in)
|
|
629
|
+
compressionAction?: 'toon' | 'compact' | 'combined'; // Prompt compression (opt-in)
|
|
630
|
+
compressionRate?: number; // Compact/combined compression rate (0.3-0.7)
|
|
628
631
|
}
|
|
629
632
|
```
|
|
630
633
|
|
|
@@ -657,10 +660,20 @@ interface ScanResponse {
|
|
|
657
660
|
scan_warning?: ScanWarning;
|
|
658
661
|
// Present when abuse detection is enabled and abuse found
|
|
659
662
|
abuse_warnings?: AbuseWarning;
|
|
660
|
-
// Present when
|
|
663
|
+
// Present when smart routing is enabled
|
|
661
664
|
routing?: { task_type: string; complexity: number; selected_model?: string; };
|
|
662
665
|
// Present when PII detection is enabled
|
|
663
666
|
pii_result?: PIIResult;
|
|
667
|
+
// Present when prompt compression is enabled
|
|
668
|
+
compression_result?: CompressionResult;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
interface CompressionResult {
|
|
672
|
+
method: 'toon' | 'compact' | 'combined'; // Compression method used
|
|
673
|
+
compressed_input: string; // The compressed text
|
|
674
|
+
original_length: number; // Original text length
|
|
675
|
+
compressed_length: number; // Compressed text length
|
|
676
|
+
compression_ratio: number; // Ratio (compressed/original, lower = better)
|
|
664
677
|
}
|
|
665
678
|
|
|
666
679
|
interface PIIResult {
|
|
@@ -694,6 +707,8 @@ interface GenericClientConfig {
|
|
|
694
707
|
policyAction?: 'block' | 'allow_with_warning';
|
|
695
708
|
abuseAction?: 'block' | 'allow_with_warning' | null;
|
|
696
709
|
piiAction?: 'strip' | 'block' | 'allow_with_warning' | null;
|
|
710
|
+
compressionAction?: 'toon' | 'compact' | 'combined' | null;
|
|
711
|
+
compressionRate?: number;
|
|
697
712
|
routeAction?: 'disabled' | 'auto' | 'custom';
|
|
698
713
|
sensitivity?: 'low' | 'medium' | 'high';
|
|
699
714
|
cacheResponse?: boolean;
|
|
@@ -747,9 +762,10 @@ const headers = buildLockLLMHeaders({
|
|
|
747
762
|
policyAction: 'allow_with_warning',
|
|
748
763
|
abuseAction: 'block',
|
|
749
764
|
piiAction: 'strip',
|
|
765
|
+
compressionAction: 'toon',
|
|
750
766
|
routeAction: 'auto'
|
|
751
767
|
});
|
|
752
|
-
// Returns: { 'x-lockllm-scan-mode': 'combined', 'x-lockllm-
|
|
768
|
+
// Returns: { 'x-lockllm-scan-mode': 'combined', 'x-lockllm-compression': 'toon', ... }
|
|
753
769
|
```
|
|
754
770
|
|
|
755
771
|
**Parse proxy response metadata:**
|
|
@@ -764,6 +780,7 @@ console.log(metadata.scan_mode); // 'combined'
|
|
|
764
780
|
console.log(metadata.cache_status); // 'HIT' or 'MISS'
|
|
765
781
|
console.log(metadata.routing); // { task_type, complexity, selected_model, ... }
|
|
766
782
|
console.log(metadata.pii_detected); // { detected, entity_types, entity_count, action }
|
|
783
|
+
console.log(metadata.compression); // { method, applied, ratio }
|
|
767
784
|
```
|
|
768
785
|
|
|
769
786
|
## Error Types
|
|
@@ -872,16 +889,16 @@ LockLLM uses a 10-tier progressive system based on monthly usage. Higher tiers u
|
|
|
872
889
|
|
|
873
890
|
| Tier | Max RPM | Monthly Spending Requirement |
|
|
874
891
|
|------|---------|----------------------------|
|
|
875
|
-
| **Tier 1** (Free) |
|
|
876
|
-
| **Tier 2** |
|
|
877
|
-
| **Tier 3** |
|
|
878
|
-
| **Tier 4** |
|
|
879
|
-
| **Tier 5** |
|
|
880
|
-
| **Tier 6** |
|
|
881
|
-
| **Tier 7** |
|
|
882
|
-
| **Tier 8** |
|
|
883
|
-
| **Tier 9** |
|
|
884
|
-
| **Tier 10** |
|
|
892
|
+
| **Tier 1** (Free) | 300 RPM | $0 |
|
|
893
|
+
| **Tier 2** | 500 RPM | $10/month |
|
|
894
|
+
| **Tier 3** | 1,000 RPM | $50/month |
|
|
895
|
+
| **Tier 4** | 2,000 RPM | $100/month |
|
|
896
|
+
| **Tier 5** | 5,000 RPM | $250/month |
|
|
897
|
+
| **Tier 6** | 10,000 RPM | $500/month |
|
|
898
|
+
| **Tier 7** | 20,000 RPM | $1,000/month |
|
|
899
|
+
| **Tier 8** | 50,000 RPM | $3,000/month |
|
|
900
|
+
| **Tier 9** | 100,000 RPM | $5,000/month |
|
|
901
|
+
| **Tier 10** | 200,000 RPM | $10,000/month |
|
|
885
902
|
|
|
886
903
|
See [pricing](https://www.lockllm.com/pricing) for full tier details and free monthly credits.
|
|
887
904
|
|
|
@@ -938,7 +955,8 @@ const result = await lockllm.scan(
|
|
|
938
955
|
scanAction: 'block', // Block core injection attacks
|
|
939
956
|
policyAction: 'allow_with_warning', // Allow but warn on policy violations
|
|
940
957
|
abuseAction: 'block', // Enable abuse detection (opt-in)
|
|
941
|
-
piiAction: 'strip'
|
|
958
|
+
piiAction: 'strip', // Redact PII from input (opt-in)
|
|
959
|
+
compressionAction: 'combined' // Compress prompts (opt-in: 'toon' | 'compact' | 'combined')
|
|
942
960
|
}
|
|
943
961
|
);
|
|
944
962
|
|
|
@@ -951,7 +969,9 @@ const openai = createOpenAI({
|
|
|
951
969
|
policyAction: 'block', // Block policy violations
|
|
952
970
|
abuseAction: 'allow_with_warning', // Detect abuse, don't block
|
|
953
971
|
piiAction: 'strip', // Automatically redact PII
|
|
954
|
-
|
|
972
|
+
compressionAction: 'compact', // Compress prompts (free: 'toon', paid: 'compact' | 'combined')
|
|
973
|
+
compressionRate: 0.5, // Compression rate 0.3-0.7 (compact/combined only)
|
|
974
|
+
routeAction: 'auto' // Enable smart routing
|
|
955
975
|
}
|
|
956
976
|
});
|
|
957
977
|
```
|
|
@@ -971,7 +991,9 @@ const openai = createOpenAI({
|
|
|
971
991
|
- `policyAction` - Controls custom policy violations: `'block'` | `'allow_with_warning'`
|
|
972
992
|
- `abuseAction` - Controls abuse detection (opt-in): `'block'` | `'allow_with_warning'` | `null`
|
|
973
993
|
- `piiAction` - Controls PII detection (opt-in): `'strip'` | `'block'` | `'allow_with_warning'` | `null`
|
|
974
|
-
- `
|
|
994
|
+
- `compressionAction` - Controls prompt compression (opt-in): `'toon'` | `'compact'` | `'combined'` | `null`
|
|
995
|
+
- `compressionRate` - Compression rate for compact/combined method: `0.3` - `0.7` (default: `0.5`)
|
|
996
|
+
- `routeAction` - Controls smart routing: `'disabled'` | `'auto'` | `'custom'`
|
|
975
997
|
|
|
976
998
|
**Default Behavior (no headers):**
|
|
977
999
|
- Scan Mode: `combined` (check both core + policies)
|
|
@@ -979,6 +1001,7 @@ const openai = createOpenAI({
|
|
|
979
1001
|
- Policy Action: `allow_with_warning` (detect but don't block)
|
|
980
1002
|
- Abuse Action: `null` (disabled, opt-in only)
|
|
981
1003
|
- PII Action: `null` (disabled, opt-in only)
|
|
1004
|
+
- Compression Action: `null` (disabled, opt-in only)
|
|
982
1005
|
- Route Action: `disabled` (no routing)
|
|
983
1006
|
|
|
984
1007
|
See [examples/advanced-options.ts](examples/advanced-options.ts) for complete examples.
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { LockLLM } from './client';
|
|
10
10
|
export { LockLLMError, AuthenticationError, RateLimitError, PromptInjectionError, PolicyViolationError, AbuseDetectedError, PIIDetectedError, InsufficientCreditsError, UpstreamError, ConfigurationError, NetworkError, } from './errors';
|
|
11
|
-
export type { LockLLMConfig, RequestOptions, Provider, ScanMode, ScanAction, RouteAction, PIIAction, ProxyRequestOptions, ProxyResponseMetadata, } from './types/common';
|
|
12
|
-
export type { ScanRequest, ScanResponse, ScanOptions, Sensitivity, PolicyViolation, ScanWarning, AbuseWarning, PIIResult, } from './types/scan';
|
|
11
|
+
export type { LockLLMConfig, RequestOptions, Provider, ScanMode, ScanAction, RouteAction, PIIAction, CompressionAction, ProxyRequestOptions, ProxyResponseMetadata, } from './types/common';
|
|
12
|
+
export type { ScanRequest, ScanResponse, ScanOptions, Sensitivity, PolicyViolation, ScanWarning, AbuseWarning, PIIResult, CompressionResult, } from './types/scan';
|
|
13
13
|
export type { ScanResult, LockLLMErrorData, PromptInjectionErrorData, PolicyViolationErrorData, AbuseDetectedErrorData, PIIDetectedErrorData, InsufficientCreditsErrorData, } from './types/errors';
|
|
14
14
|
export type { ProviderName } from './types/providers';
|
|
15
15
|
export { getProxyURL, getAllProxyURLs, getUniversalProxyURL } from './utils';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,aAAa,EACb,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,aAAa,EACb,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGnG,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,UAAU,CAAC;AAwClB,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEnG,yCAAyC;AACzC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/scan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3E,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,IAAI,CACR,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3E,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,IAAI,CACR,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC;CAqEzB"}
|
package/dist/scan.js
CHANGED
|
@@ -78,6 +78,14 @@ class ScanClient {
|
|
|
78
78
|
if (options?.piiAction !== undefined && options?.piiAction !== null) {
|
|
79
79
|
headers['x-lockllm-pii-action'] = options.piiAction;
|
|
80
80
|
}
|
|
81
|
+
// Compression action: opt-in prompt compression (null/undefined means disabled)
|
|
82
|
+
if (options?.compressionAction !== undefined && options?.compressionAction !== null) {
|
|
83
|
+
headers['x-lockllm-compression'] = options.compressionAction;
|
|
84
|
+
}
|
|
85
|
+
// Compression rate for compact method
|
|
86
|
+
if (options?.compressionRate !== undefined) {
|
|
87
|
+
headers['x-lockllm-compression-rate'] = String(options.compressionRate);
|
|
88
|
+
}
|
|
81
89
|
// Build request body
|
|
82
90
|
const body = {
|
|
83
91
|
input: request.input,
|
package/dist/scan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,OAAO,UAAU;IAGrB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,KAAK,CAAC,IAAI,CACR,OAAoB,EACpB,OAAqB;QAErB,kCAAkC;QAClC,MAAM,OAAO,GAA2B;YACtC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;SAC5B,CAAC;QAEF,mBAAmB;QACnB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QAChD,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QACzD,CAAC;QAED,eAAe;QACf,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,CAAC;QAED,iCAAiC;QACjC,0DAA0D;QAC1D,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QACxD,CAAC;QAED,2DAA2D;QAC3D,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,OAAO,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;QAC5D,CAAC;QAED,uEAAuE;QACvE,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;YACxE,OAAO,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1D,CAAC;QAED,mEAAmE;QACnE,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,OAAO,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YACpE,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACtD,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAwB;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;QAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,UAAU,EACV,IAAI,EACJ;YACE,OAAO;YACP,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,OAAO,UAAU;IAGrB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,KAAK,CAAC,IAAI,CACR,OAAoB,EACpB,OAAqB;QAErB,kCAAkC;QAClC,MAAM,OAAO,GAA2B;YACtC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;SAC5B,CAAC;QAEF,mBAAmB;QACnB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QAChD,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QACzD,CAAC;QAED,eAAe;QACf,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,CAAC;QAED,iCAAiC;QACjC,0DAA0D;QAC1D,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QACxD,CAAC;QAED,2DAA2D;QAC3D,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,OAAO,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;QAC5D,CAAC;QAED,uEAAuE;QACvE,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;YACxE,OAAO,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1D,CAAC;QAED,mEAAmE;QACnE,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,OAAO,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YACpE,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACtD,CAAC;QAED,gFAAgF;QAChF,IAAI,OAAO,EAAE,iBAAiB,KAAK,SAAS,IAAI,OAAO,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACpF,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC/D,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAwB;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;QAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,UAAU,EACV,IAAI,EACJ;YACE,OAAO;YACP,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/scan.mjs
CHANGED
|
@@ -75,6 +75,14 @@ export class ScanClient {
|
|
|
75
75
|
if (options?.piiAction !== undefined && options?.piiAction !== null) {
|
|
76
76
|
headers['x-lockllm-pii-action'] = options.piiAction;
|
|
77
77
|
}
|
|
78
|
+
// Compression action: opt-in prompt compression (null/undefined means disabled)
|
|
79
|
+
if (options?.compressionAction !== undefined && options?.compressionAction !== null) {
|
|
80
|
+
headers['x-lockllm-compression'] = options.compressionAction;
|
|
81
|
+
}
|
|
82
|
+
// Compression rate for compact method
|
|
83
|
+
if (options?.compressionRate !== undefined) {
|
|
84
|
+
headers['x-lockllm-compression-rate'] = String(options.compressionRate);
|
|
85
|
+
}
|
|
78
86
|
// Build request body
|
|
79
87
|
const body = {
|
|
80
88
|
input: request.input,
|
package/dist/types/common.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export type ScanAction = 'block' | 'allow_with_warning';
|
|
|
37
37
|
export type RouteAction = 'disabled' | 'auto' | 'custom';
|
|
38
38
|
/** PII detection action (opt-in) */
|
|
39
39
|
export type PIIAction = 'strip' | 'block' | 'allow_with_warning';
|
|
40
|
+
/** Prompt compression method (opt-in) */
|
|
41
|
+
export type CompressionAction = 'toon' | 'compact' | 'combined';
|
|
40
42
|
/** Proxy request options with advanced headers */
|
|
41
43
|
export interface ProxyRequestOptions extends RequestOptions {
|
|
42
44
|
/** Scan mode (default: combined) - Check both core security and custom policies */
|
|
@@ -47,7 +49,7 @@ export interface ProxyRequestOptions extends RequestOptions {
|
|
|
47
49
|
policyAction?: ScanAction;
|
|
48
50
|
/** Abuse detection action (opt-in, default: null) - When null, abuse detection is disabled */
|
|
49
51
|
abuseAction?: ScanAction | null;
|
|
50
|
-
/** Routing action (default: disabled) - No
|
|
52
|
+
/** Routing action (default: disabled) - No smart routing unless explicitly enabled */
|
|
51
53
|
routeAction?: RouteAction;
|
|
52
54
|
/** PII detection action (opt-in, default: null) - When null, PII detection is disabled */
|
|
53
55
|
piiAction?: PIIAction | null;
|
|
@@ -57,6 +59,12 @@ export interface ProxyRequestOptions extends RequestOptions {
|
|
|
57
59
|
cacheResponse?: boolean;
|
|
58
60
|
/** Cache TTL in seconds (default: 3600) */
|
|
59
61
|
cacheTTL?: number;
|
|
62
|
+
/** Prompt compression method (opt-in, default: null) - When null, compression is disabled.
|
|
63
|
+
* "toon" converts JSON to compact notation (free). "compact" uses advanced compression ($0.0001/use).
|
|
64
|
+
* "combined" applies TOON first then Compact for maximum compression ($0.0001/use). */
|
|
65
|
+
compressionAction?: CompressionAction | null;
|
|
66
|
+
/** Compression rate for compact method (0.3-0.7, default: 0.5) - Lower = more compression */
|
|
67
|
+
compressionRate?: number;
|
|
60
68
|
}
|
|
61
69
|
/** Response metadata from proxy */
|
|
62
70
|
export interface ProxyResponseMetadata {
|
|
@@ -143,5 +151,11 @@ export interface ProxyResponseMetadata {
|
|
|
143
151
|
policy_detail?: any;
|
|
144
152
|
/** Decoded abuse detail (from base64 header) */
|
|
145
153
|
abuse_detail?: any;
|
|
154
|
+
/** Compression metadata */
|
|
155
|
+
compression?: {
|
|
156
|
+
method: string;
|
|
157
|
+
applied: boolean;
|
|
158
|
+
ratio: number;
|
|
159
|
+
};
|
|
146
160
|
}
|
|
147
161
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,KAAK,GACL,WAAW,GACX,UAAU,GACV,aAAa,GACb,OAAO,GACP,SAAS,GACT,WAAW,CAAC;AAEhB,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAE7D,uCAAuC;AACvC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,oBAAoB,CAAC;AAExD,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEzD,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,oBAAoB,CAAC;AAEjE,kDAAkD;AAClD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,mFAAmF;IACnF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sGAAsG;IACtG,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4GAA4G;IAC5G,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"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"}
|
package/dist/types/scan.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scan API types
|
|
3
3
|
*/
|
|
4
|
-
import type { PIIAction } from './common';
|
|
4
|
+
import type { PIIAction, CompressionAction } from './common';
|
|
5
5
|
export type Sensitivity = 'low' | 'medium' | 'high';
|
|
6
6
|
/** Scan mode determines which security checks are performed */
|
|
7
7
|
export type ScanMode = 'normal' | 'policy_only' | 'combined';
|
|
@@ -17,6 +17,19 @@ export interface ScanRequest {
|
|
|
17
17
|
/** Force chunking for large inputs */
|
|
18
18
|
chunk?: boolean;
|
|
19
19
|
}
|
|
20
|
+
/** Compression result */
|
|
21
|
+
export interface CompressionResult {
|
|
22
|
+
/** Compression method used */
|
|
23
|
+
method: 'toon' | 'compact' | 'combined';
|
|
24
|
+
/** Compressed text */
|
|
25
|
+
compressed_input: string;
|
|
26
|
+
/** Original text length */
|
|
27
|
+
original_length: number;
|
|
28
|
+
/** Compressed text length */
|
|
29
|
+
compressed_length: number;
|
|
30
|
+
/** Compression ratio (compressed/original, lower = better) */
|
|
31
|
+
compression_ratio: number;
|
|
32
|
+
}
|
|
20
33
|
/** PII detection result */
|
|
21
34
|
export interface PIIResult {
|
|
22
35
|
/** Whether PII was detected */
|
|
@@ -38,6 +51,12 @@ export interface ScanOptions {
|
|
|
38
51
|
abuseAction?: ScanAction | null;
|
|
39
52
|
/** PII detection action (opt-in, default: null) - When null, PII detection is disabled */
|
|
40
53
|
piiAction?: PIIAction | null;
|
|
54
|
+
/** Prompt compression method (opt-in, default: null) - When null, compression is disabled.
|
|
55
|
+
* "toon" converts JSON to compact notation (free). "compact" uses advanced compression ($0.0001/use).
|
|
56
|
+
* "combined" applies TOON first then Compact for maximum compression ($0.0001/use). */
|
|
57
|
+
compressionAction?: CompressionAction | null;
|
|
58
|
+
/** Compression rate for compact method (0.3-0.7, default: 0.5) - Lower = more compression */
|
|
59
|
+
compressionRate?: number;
|
|
41
60
|
/** Custom headers to include in the request */
|
|
42
61
|
headers?: Record<string, string>;
|
|
43
62
|
/** Request timeout in milliseconds */
|
|
@@ -147,5 +166,7 @@ export interface ScanResponse {
|
|
|
147
166
|
};
|
|
148
167
|
/** PII detection result (present when PII detection is enabled) */
|
|
149
168
|
pii_result?: PIIResult;
|
|
169
|
+
/** Compression result (present when compression is enabled) */
|
|
170
|
+
compression_result?: CompressionResult;
|
|
150
171
|
}
|
|
151
172
|
//# sourceMappingURL=scan.d.ts.map
|
package/dist/types/scan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/types/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/types/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import type { ProxyRequestOptions, ProxyResponseMetadata } from '../types/common
|
|
|
10
10
|
* - Scan Action: allow_with_warning (detect threats but don't block)
|
|
11
11
|
* - Policy Action: allow_with_warning (detect violations but don't block)
|
|
12
12
|
* - Abuse Action: null (abuse detection disabled, opt-in only)
|
|
13
|
-
* - Route Action: disabled (no
|
|
13
|
+
* - Route Action: disabled (no smart routing)
|
|
14
14
|
*/
|
|
15
15
|
export declare function buildLockLLMHeaders(options?: ProxyRequestOptions): Record<string, string>;
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-headers.d.ts","sourceRoot":"","sources":["../../src/utils/proxy-headers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAElF;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"proxy-headers.d.ts","sourceRoot":"","sources":["../../src/utils/proxy-headers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAElF;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2DzF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAuMnG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAOrD"}
|
|
@@ -14,7 +14,7 @@ exports.decodeDetailField = decodeDetailField;
|
|
|
14
14
|
* - Scan Action: allow_with_warning (detect threats but don't block)
|
|
15
15
|
* - Policy Action: allow_with_warning (detect violations but don't block)
|
|
16
16
|
* - Abuse Action: null (abuse detection disabled, opt-in only)
|
|
17
|
-
* - Route Action: disabled (no
|
|
17
|
+
* - Route Action: disabled (no smart routing)
|
|
18
18
|
*/
|
|
19
19
|
function buildLockLLMHeaders(options) {
|
|
20
20
|
const headers = {};
|
|
@@ -34,7 +34,7 @@ function buildLockLLMHeaders(options) {
|
|
|
34
34
|
if (options?.abuseAction !== undefined && options?.abuseAction !== null) {
|
|
35
35
|
headers['x-lockllm-abuse-action'] = options.abuseAction;
|
|
36
36
|
}
|
|
37
|
-
// Route action header (controls
|
|
37
|
+
// Route action header (controls smart routing)
|
|
38
38
|
if (options?.routeAction) {
|
|
39
39
|
headers['x-lockllm-route-action'] = options.routeAction;
|
|
40
40
|
}
|
|
@@ -54,6 +54,14 @@ function buildLockLLMHeaders(options) {
|
|
|
54
54
|
if (options?.cacheTTL !== undefined) {
|
|
55
55
|
headers['x-lockllm-cache-ttl'] = String(options.cacheTTL);
|
|
56
56
|
}
|
|
57
|
+
// Compression header (opt-in, null means disabled)
|
|
58
|
+
if (options?.compressionAction !== undefined && options?.compressionAction !== null) {
|
|
59
|
+
headers['x-lockllm-compression'] = options.compressionAction;
|
|
60
|
+
}
|
|
61
|
+
// Compression rate (compact method only, 0.3-0.7)
|
|
62
|
+
if (options?.compressionRate !== undefined) {
|
|
63
|
+
headers['x-lockllm-compression-rate'] = String(options.compressionRate);
|
|
64
|
+
}
|
|
57
65
|
return headers;
|
|
58
66
|
}
|
|
59
67
|
/**
|
|
@@ -204,6 +212,17 @@ function parseProxyMetadata(headers) {
|
|
|
204
212
|
if (balanceAfter) {
|
|
205
213
|
metadata.balance_after = parseFloat(balanceAfter);
|
|
206
214
|
}
|
|
215
|
+
// Parse compression metadata
|
|
216
|
+
const compressionMethod = getHeader('x-lockllm-compression-method');
|
|
217
|
+
if (compressionMethod) {
|
|
218
|
+
const compressionApplied = getHeader('x-lockllm-compression-applied');
|
|
219
|
+
const compressionRatio = getHeader('x-lockllm-compression-ratio');
|
|
220
|
+
metadata.compression = {
|
|
221
|
+
method: compressionMethod,
|
|
222
|
+
applied: compressionApplied === 'true',
|
|
223
|
+
ratio: compressionRatio ? parseFloat(compressionRatio) : 1.0,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
207
226
|
// Parse base64-encoded detail fields
|
|
208
227
|
const scanDetail = getHeader('x-lockllm-scan-detail');
|
|
209
228
|
if (scanDetail) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-headers.js","sourceRoot":"","sources":["../../src/utils/proxy-headers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,kEAAkE;IAClE,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IACpD,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IACxD,CAAC;IAED,0EAA0E;IAC1E,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAC5D,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;QACxE,OAAO,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1D,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"proxy-headers.js","sourceRoot":"","sources":["../../src/utils/proxy-headers.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - Scan Action: allow_with_warning (detect threats but don't block)
|
|
10
10
|
* - Policy Action: allow_with_warning (detect violations but don't block)
|
|
11
11
|
* - Abuse Action: null (abuse detection disabled, opt-in only)
|
|
12
|
-
* - Route Action: disabled (no
|
|
12
|
+
* - Route Action: disabled (no smart routing)
|
|
13
13
|
*/
|
|
14
14
|
export function buildLockLLMHeaders(options) {
|
|
15
15
|
const headers = {};
|
|
@@ -29,7 +29,7 @@ export function buildLockLLMHeaders(options) {
|
|
|
29
29
|
if (options?.abuseAction !== undefined && options?.abuseAction !== null) {
|
|
30
30
|
headers['x-lockllm-abuse-action'] = options.abuseAction;
|
|
31
31
|
}
|
|
32
|
-
// Route action header (controls
|
|
32
|
+
// Route action header (controls smart routing)
|
|
33
33
|
if (options?.routeAction) {
|
|
34
34
|
headers['x-lockllm-route-action'] = options.routeAction;
|
|
35
35
|
}
|
|
@@ -49,6 +49,14 @@ export function buildLockLLMHeaders(options) {
|
|
|
49
49
|
if (options?.cacheTTL !== undefined) {
|
|
50
50
|
headers['x-lockllm-cache-ttl'] = String(options.cacheTTL);
|
|
51
51
|
}
|
|
52
|
+
// Compression header (opt-in, null means disabled)
|
|
53
|
+
if (options?.compressionAction !== undefined && options?.compressionAction !== null) {
|
|
54
|
+
headers['x-lockllm-compression'] = options.compressionAction;
|
|
55
|
+
}
|
|
56
|
+
// Compression rate (compact method only, 0.3-0.7)
|
|
57
|
+
if (options?.compressionRate !== undefined) {
|
|
58
|
+
headers['x-lockllm-compression-rate'] = String(options.compressionRate);
|
|
59
|
+
}
|
|
52
60
|
return headers;
|
|
53
61
|
}
|
|
54
62
|
/**
|
|
@@ -199,6 +207,17 @@ export function parseProxyMetadata(headers) {
|
|
|
199
207
|
if (balanceAfter) {
|
|
200
208
|
metadata.balance_after = parseFloat(balanceAfter);
|
|
201
209
|
}
|
|
210
|
+
// Parse compression metadata
|
|
211
|
+
const compressionMethod = getHeader('x-lockllm-compression-method');
|
|
212
|
+
if (compressionMethod) {
|
|
213
|
+
const compressionApplied = getHeader('x-lockllm-compression-applied');
|
|
214
|
+
const compressionRatio = getHeader('x-lockllm-compression-ratio');
|
|
215
|
+
metadata.compression = {
|
|
216
|
+
method: compressionMethod,
|
|
217
|
+
applied: compressionApplied === 'true',
|
|
218
|
+
ratio: compressionRatio ? parseFloat(compressionRatio) : 1.0,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
202
221
|
// Parse base64-encoded detail fields
|
|
203
222
|
const scanDetail = getHeader('x-lockllm-scan-detail');
|
|
204
223
|
if (scanDetail) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lockllm/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Enterprise-grade AI security SDK providing real-time protection against prompt injection, jailbreaks, and adversarial attacks. Drop-in replacement for OpenAI, Anthropic, and 17+ providers with zero code changes. Includes REST API, proxy mode, browser extension, and webhook support. Free BYOK model with unlimited scanning.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|