@lockllm/sdk 1.0.1 → 1.2.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +223 -5
  2. package/README.md +272 -40
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/errors.d.ts +56 -1
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +132 -2
  8. package/dist/errors.js.map +1 -1
  9. package/dist/errors.mjs +127 -1
  10. package/dist/index.d.ts +6 -5
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +10 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.mjs +3 -2
  15. package/dist/scan.d.ts +20 -5
  16. package/dist/scan.d.ts.map +1 -1
  17. package/dist/scan.js +59 -5
  18. package/dist/scan.js.map +1 -1
  19. package/dist/scan.mjs +59 -5
  20. package/dist/types/common.d.ts +116 -0
  21. package/dist/types/common.d.ts.map +1 -1
  22. package/dist/types/errors.d.ts +39 -0
  23. package/dist/types/errors.d.ts.map +1 -1
  24. package/dist/types/scan.d.ts +118 -3
  25. package/dist/types/scan.d.ts.map +1 -1
  26. package/dist/utils/proxy-headers.d.ts +24 -0
  27. package/dist/utils/proxy-headers.d.ts.map +1 -0
  28. package/dist/utils/proxy-headers.js +234 -0
  29. package/dist/utils/proxy-headers.js.map +1 -0
  30. package/dist/utils/proxy-headers.mjs +229 -0
  31. package/dist/utils.d.ts +24 -0
  32. package/dist/utils.d.ts.map +1 -1
  33. package/dist/utils.js +28 -0
  34. package/dist/utils.js.map +1 -1
  35. package/dist/utils.mjs +27 -0
  36. package/dist/wrappers/anthropic-wrapper.d.ts +10 -1
  37. package/dist/wrappers/anthropic-wrapper.d.ts.map +1 -1
  38. package/dist/wrappers/anthropic-wrapper.js +17 -2
  39. package/dist/wrappers/anthropic-wrapper.js.map +1 -1
  40. package/dist/wrappers/anthropic-wrapper.mjs +17 -2
  41. package/dist/wrappers/generic-wrapper.d.ts +5 -0
  42. package/dist/wrappers/generic-wrapper.d.ts.map +1 -1
  43. package/dist/wrappers/generic-wrapper.js +12 -1
  44. package/dist/wrappers/generic-wrapper.js.map +1 -1
  45. package/dist/wrappers/generic-wrapper.mjs +12 -1
  46. package/dist/wrappers/openai-wrapper.d.ts +10 -1
  47. package/dist/wrappers/openai-wrapper.d.ts.map +1 -1
  48. package/dist/wrappers/openai-wrapper.js +17 -2
  49. package/dist/wrappers/openai-wrapper.js.map +1 -1
  50. package/dist/wrappers/openai-wrapper.mjs +17 -2
  51. package/package.json +2 -2
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ /**
3
+ * Proxy headers utility functions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildLockLLMHeaders = buildLockLLMHeaders;
7
+ exports.parseProxyMetadata = parseProxyMetadata;
8
+ exports.decodeDetailField = decodeDetailField;
9
+ /**
10
+ * Build LockLLM headers from proxy request options
11
+ *
12
+ * Default behavior (when no headers are provided):
13
+ * - Scan Mode: combined (check both core security and custom policies)
14
+ * - Scan Action: allow_with_warning (detect threats but don't block)
15
+ * - Policy Action: allow_with_warning (detect violations but don't block)
16
+ * - Abuse Action: null (abuse detection disabled, opt-in only)
17
+ * - Route Action: disabled (no intelligent routing)
18
+ */
19
+ function buildLockLLMHeaders(options) {
20
+ const headers = {};
21
+ // Scan mode header (controls which security checks are performed)
22
+ if (options?.scanMode) {
23
+ headers['x-lockllm-scan-mode'] = options.scanMode;
24
+ }
25
+ // Scan action header (controls blocking behavior for core injection)
26
+ if (options?.scanAction) {
27
+ headers['x-lockllm-scan-action'] = options.scanAction;
28
+ }
29
+ // Policy action header (controls blocking behavior for policy violations)
30
+ if (options?.policyAction) {
31
+ headers['x-lockllm-policy-action'] = options.policyAction;
32
+ }
33
+ // Abuse action header (opt-in, null means disabled)
34
+ if (options?.abuseAction !== undefined && options?.abuseAction !== null) {
35
+ headers['x-lockllm-abuse-action'] = options.abuseAction;
36
+ }
37
+ // Route action header (controls intelligent routing)
38
+ if (options?.routeAction) {
39
+ headers['x-lockllm-route-action'] = options.routeAction;
40
+ }
41
+ // PII action header (opt-in, null means disabled)
42
+ if (options?.piiAction !== undefined && options?.piiAction !== null) {
43
+ headers['x-lockllm-pii-action'] = options.piiAction;
44
+ }
45
+ // Sensitivity header (controls injection detection threshold)
46
+ if (options?.sensitivity) {
47
+ headers['x-lockllm-sensitivity'] = options.sensitivity;
48
+ }
49
+ // Response caching control
50
+ if (options?.cacheResponse === false) {
51
+ headers['x-lockllm-cache-response'] = 'false';
52
+ }
53
+ // Cache TTL in seconds
54
+ if (options?.cacheTTL !== undefined) {
55
+ headers['x-lockllm-cache-ttl'] = String(options.cacheTTL);
56
+ }
57
+ return headers;
58
+ }
59
+ /**
60
+ * Parse proxy metadata from response headers
61
+ */
62
+ function parseProxyMetadata(headers) {
63
+ const getHeader = (name) => {
64
+ if (headers instanceof Headers) {
65
+ return headers.get(name);
66
+ }
67
+ return headers[name] || headers[name.toLowerCase()] || null;
68
+ };
69
+ const metadata = {
70
+ request_id: getHeader('x-request-id') || '',
71
+ scanned: getHeader('x-lockllm-scanned') === 'true',
72
+ safe: getHeader('x-lockllm-safe') === 'true',
73
+ scan_mode: getHeader('x-scan-mode') || 'combined',
74
+ credits_mode: getHeader('x-lockllm-credits-mode') || 'byok',
75
+ provider: getHeader('x-lockllm-provider') || '',
76
+ model: getHeader('x-lockllm-model') || undefined,
77
+ };
78
+ // Parse sensitivity
79
+ const sensitivity = getHeader('x-lockllm-sensitivity');
80
+ if (sensitivity) {
81
+ metadata.sensitivity = sensitivity;
82
+ }
83
+ // Parse label
84
+ const label = getHeader('x-lockllm-label');
85
+ if (label) {
86
+ metadata.label = parseInt(label, 10);
87
+ }
88
+ // Parse blocked status
89
+ const blocked = getHeader('x-lockllm-blocked');
90
+ if (blocked === 'true') {
91
+ metadata.blocked = true;
92
+ }
93
+ // Parse scan warning
94
+ const scanWarning = getHeader('x-lockllm-scan-warning');
95
+ if (scanWarning === 'true') {
96
+ const injectionScore = getHeader('x-lockllm-injection-score');
97
+ const confidence = getHeader('x-lockllm-confidence');
98
+ const detail = getHeader('x-lockllm-scan-detail');
99
+ metadata.scan_warning = {
100
+ injection_score: injectionScore ? parseFloat(injectionScore) : 0,
101
+ confidence: confidence ? parseFloat(confidence) : 0,
102
+ detail: detail || '',
103
+ };
104
+ }
105
+ // Parse policy warnings
106
+ const policyWarnings = getHeader('x-lockllm-policy-warnings');
107
+ if (policyWarnings === 'true') {
108
+ const count = getHeader('x-lockllm-warning-count');
109
+ const confidence = getHeader('x-lockllm-policy-confidence');
110
+ const detail = getHeader('x-lockllm-warning-detail');
111
+ metadata.policy_warnings = {
112
+ count: count ? parseInt(count, 10) : 0,
113
+ confidence: confidence ? parseFloat(confidence) : 0,
114
+ detail: detail || '',
115
+ };
116
+ }
117
+ // Parse abuse detection
118
+ const abuseDetected = getHeader('x-lockllm-abuse-detected');
119
+ if (abuseDetected === 'true') {
120
+ const confidence = getHeader('x-lockllm-abuse-confidence');
121
+ const types = getHeader('x-lockllm-abuse-types');
122
+ const detail = getHeader('x-lockllm-abuse-detail');
123
+ metadata.abuse_detected = {
124
+ confidence: confidence ? parseFloat(confidence) : 0,
125
+ types: types || '',
126
+ detail: detail || '',
127
+ };
128
+ }
129
+ // Parse PII detection
130
+ const piiDetected = getHeader('x-lockllm-pii-detected');
131
+ if (piiDetected) {
132
+ const piiTypes = getHeader('x-lockllm-pii-types');
133
+ const piiCount = getHeader('x-lockllm-pii-count');
134
+ const piiAction = getHeader('x-lockllm-pii-action');
135
+ metadata.pii_detected = {
136
+ detected: piiDetected === 'true',
137
+ entity_types: piiTypes || '',
138
+ entity_count: piiCount ? parseInt(piiCount, 10) : 0,
139
+ action: piiAction || '',
140
+ };
141
+ }
142
+ // Parse routing metadata
143
+ const routeEnabled = getHeader('x-lockllm-route-enabled');
144
+ if (routeEnabled === 'true') {
145
+ const taskType = getHeader('x-lockllm-task-type');
146
+ const complexity = getHeader('x-lockllm-complexity');
147
+ const selectedModel = getHeader('x-lockllm-selected-model');
148
+ const routingReason = getHeader('x-lockllm-routing-reason');
149
+ const originalProvider = getHeader('x-lockllm-original-provider');
150
+ const originalModel = getHeader('x-lockllm-original-model');
151
+ const estimatedSavings = getHeader('x-lockllm-estimated-savings');
152
+ const estimatedOriginalCost = getHeader('x-lockllm-estimated-original-cost');
153
+ const estimatedRoutedCost = getHeader('x-lockllm-estimated-routed-cost');
154
+ const estimatedInputTokens = getHeader('x-lockllm-estimated-input-tokens');
155
+ const estimatedOutputTokens = getHeader('x-lockllm-estimated-output-tokens');
156
+ const routingFeeReason = getHeader('x-lockllm-routing-fee-reason');
157
+ metadata.routing = {
158
+ enabled: true,
159
+ task_type: taskType || '',
160
+ complexity: complexity ? parseFloat(complexity) : 0,
161
+ selected_model: selectedModel || '',
162
+ routing_reason: routingReason || '',
163
+ original_provider: originalProvider || '',
164
+ original_model: originalModel || '',
165
+ estimated_savings: estimatedSavings ? parseFloat(estimatedSavings) : 0,
166
+ estimated_original_cost: estimatedOriginalCost ? parseFloat(estimatedOriginalCost) : 0,
167
+ estimated_routed_cost: estimatedRoutedCost ? parseFloat(estimatedRoutedCost) : 0,
168
+ estimated_input_tokens: estimatedInputTokens ? parseInt(estimatedInputTokens, 10) : 0,
169
+ estimated_output_tokens: estimatedOutputTokens ? parseInt(estimatedOutputTokens, 10) : 0,
170
+ routing_fee_reason: routingFeeReason || '',
171
+ };
172
+ }
173
+ // Parse credit tracking
174
+ const creditsReserved = getHeader('x-lockllm-credits-reserved');
175
+ if (creditsReserved) {
176
+ metadata.credits_reserved = parseFloat(creditsReserved);
177
+ }
178
+ const routingFeeReserved = getHeader('x-lockllm-routing-fee-reserved');
179
+ if (routingFeeReserved) {
180
+ metadata.routing_fee_reserved = parseFloat(routingFeeReserved);
181
+ }
182
+ // Parse cache status
183
+ const cacheStatus = getHeader('x-lockllm-cache-status');
184
+ if (cacheStatus) {
185
+ metadata.cache_status = cacheStatus;
186
+ }
187
+ const cacheAge = getHeader('x-lockllm-cache-age');
188
+ if (cacheAge) {
189
+ metadata.cache_age = parseInt(cacheAge, 10);
190
+ }
191
+ const tokensSaved = getHeader('x-lockllm-tokens-saved');
192
+ if (tokensSaved) {
193
+ metadata.tokens_saved = parseInt(tokensSaved, 10);
194
+ }
195
+ const costSaved = getHeader('x-lockllm-cost-saved');
196
+ if (costSaved) {
197
+ metadata.cost_saved = parseFloat(costSaved);
198
+ }
199
+ const creditsDeducted = getHeader('x-lockllm-credits-deducted');
200
+ if (creditsDeducted) {
201
+ metadata.credits_deducted = parseFloat(creditsDeducted);
202
+ }
203
+ const balanceAfter = getHeader('x-lockllm-balance-after');
204
+ if (balanceAfter) {
205
+ metadata.balance_after = parseFloat(balanceAfter);
206
+ }
207
+ // Parse base64-encoded detail fields
208
+ const scanDetail = getHeader('x-lockllm-scan-detail');
209
+ if (scanDetail) {
210
+ metadata.scan_detail = decodeDetailField(scanDetail);
211
+ }
212
+ const policyDetail = getHeader('x-lockllm-warning-detail');
213
+ if (policyDetail) {
214
+ metadata.policy_detail = decodeDetailField(policyDetail);
215
+ }
216
+ const abuseDetail = getHeader('x-lockllm-abuse-detail');
217
+ if (abuseDetail) {
218
+ metadata.abuse_detail = decodeDetailField(abuseDetail);
219
+ }
220
+ return metadata;
221
+ }
222
+ /**
223
+ * Decode base64-encoded detail field
224
+ */
225
+ function decodeDetailField(detail) {
226
+ try {
227
+ const decoded = atob(detail);
228
+ return JSON.parse(decoded);
229
+ }
230
+ catch {
231
+ return null;
232
+ }
233
+ }
234
+ //# sourceMappingURL=proxy-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-headers.js","sourceRoot":"","sources":["../../src/utils/proxy-headers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Proxy headers utility functions
3
+ */
4
+ /**
5
+ * Build LockLLM headers from proxy request options
6
+ *
7
+ * Default behavior (when no headers are provided):
8
+ * - Scan Mode: combined (check both core security and custom policies)
9
+ * - Scan Action: allow_with_warning (detect threats but don't block)
10
+ * - Policy Action: allow_with_warning (detect violations but don't block)
11
+ * - Abuse Action: null (abuse detection disabled, opt-in only)
12
+ * - Route Action: disabled (no intelligent routing)
13
+ */
14
+ export function buildLockLLMHeaders(options) {
15
+ const headers = {};
16
+ // Scan mode header (controls which security checks are performed)
17
+ if (options?.scanMode) {
18
+ headers['x-lockllm-scan-mode'] = options.scanMode;
19
+ }
20
+ // Scan action header (controls blocking behavior for core injection)
21
+ if (options?.scanAction) {
22
+ headers['x-lockllm-scan-action'] = options.scanAction;
23
+ }
24
+ // Policy action header (controls blocking behavior for policy violations)
25
+ if (options?.policyAction) {
26
+ headers['x-lockllm-policy-action'] = options.policyAction;
27
+ }
28
+ // Abuse action header (opt-in, null means disabled)
29
+ if (options?.abuseAction !== undefined && options?.abuseAction !== null) {
30
+ headers['x-lockllm-abuse-action'] = options.abuseAction;
31
+ }
32
+ // Route action header (controls intelligent routing)
33
+ if (options?.routeAction) {
34
+ headers['x-lockllm-route-action'] = options.routeAction;
35
+ }
36
+ // PII action header (opt-in, null means disabled)
37
+ if (options?.piiAction !== undefined && options?.piiAction !== null) {
38
+ headers['x-lockllm-pii-action'] = options.piiAction;
39
+ }
40
+ // Sensitivity header (controls injection detection threshold)
41
+ if (options?.sensitivity) {
42
+ headers['x-lockllm-sensitivity'] = options.sensitivity;
43
+ }
44
+ // Response caching control
45
+ if (options?.cacheResponse === false) {
46
+ headers['x-lockllm-cache-response'] = 'false';
47
+ }
48
+ // Cache TTL in seconds
49
+ if (options?.cacheTTL !== undefined) {
50
+ headers['x-lockllm-cache-ttl'] = String(options.cacheTTL);
51
+ }
52
+ return headers;
53
+ }
54
+ /**
55
+ * Parse proxy metadata from response headers
56
+ */
57
+ export function parseProxyMetadata(headers) {
58
+ const getHeader = (name) => {
59
+ if (headers instanceof Headers) {
60
+ return headers.get(name);
61
+ }
62
+ return headers[name] || headers[name.toLowerCase()] || null;
63
+ };
64
+ const metadata = {
65
+ request_id: getHeader('x-request-id') || '',
66
+ scanned: getHeader('x-lockllm-scanned') === 'true',
67
+ safe: getHeader('x-lockllm-safe') === 'true',
68
+ scan_mode: getHeader('x-scan-mode') || 'combined',
69
+ credits_mode: getHeader('x-lockllm-credits-mode') || 'byok',
70
+ provider: getHeader('x-lockllm-provider') || '',
71
+ model: getHeader('x-lockllm-model') || undefined,
72
+ };
73
+ // Parse sensitivity
74
+ const sensitivity = getHeader('x-lockllm-sensitivity');
75
+ if (sensitivity) {
76
+ metadata.sensitivity = sensitivity;
77
+ }
78
+ // Parse label
79
+ const label = getHeader('x-lockllm-label');
80
+ if (label) {
81
+ metadata.label = parseInt(label, 10);
82
+ }
83
+ // Parse blocked status
84
+ const blocked = getHeader('x-lockllm-blocked');
85
+ if (blocked === 'true') {
86
+ metadata.blocked = true;
87
+ }
88
+ // Parse scan warning
89
+ const scanWarning = getHeader('x-lockllm-scan-warning');
90
+ if (scanWarning === 'true') {
91
+ const injectionScore = getHeader('x-lockllm-injection-score');
92
+ const confidence = getHeader('x-lockllm-confidence');
93
+ const detail = getHeader('x-lockllm-scan-detail');
94
+ metadata.scan_warning = {
95
+ injection_score: injectionScore ? parseFloat(injectionScore) : 0,
96
+ confidence: confidence ? parseFloat(confidence) : 0,
97
+ detail: detail || '',
98
+ };
99
+ }
100
+ // Parse policy warnings
101
+ const policyWarnings = getHeader('x-lockllm-policy-warnings');
102
+ if (policyWarnings === 'true') {
103
+ const count = getHeader('x-lockllm-warning-count');
104
+ const confidence = getHeader('x-lockllm-policy-confidence');
105
+ const detail = getHeader('x-lockllm-warning-detail');
106
+ metadata.policy_warnings = {
107
+ count: count ? parseInt(count, 10) : 0,
108
+ confidence: confidence ? parseFloat(confidence) : 0,
109
+ detail: detail || '',
110
+ };
111
+ }
112
+ // Parse abuse detection
113
+ const abuseDetected = getHeader('x-lockllm-abuse-detected');
114
+ if (abuseDetected === 'true') {
115
+ const confidence = getHeader('x-lockllm-abuse-confidence');
116
+ const types = getHeader('x-lockllm-abuse-types');
117
+ const detail = getHeader('x-lockllm-abuse-detail');
118
+ metadata.abuse_detected = {
119
+ confidence: confidence ? parseFloat(confidence) : 0,
120
+ types: types || '',
121
+ detail: detail || '',
122
+ };
123
+ }
124
+ // Parse PII detection
125
+ const piiDetected = getHeader('x-lockllm-pii-detected');
126
+ if (piiDetected) {
127
+ const piiTypes = getHeader('x-lockllm-pii-types');
128
+ const piiCount = getHeader('x-lockllm-pii-count');
129
+ const piiAction = getHeader('x-lockllm-pii-action');
130
+ metadata.pii_detected = {
131
+ detected: piiDetected === 'true',
132
+ entity_types: piiTypes || '',
133
+ entity_count: piiCount ? parseInt(piiCount, 10) : 0,
134
+ action: piiAction || '',
135
+ };
136
+ }
137
+ // Parse routing metadata
138
+ const routeEnabled = getHeader('x-lockllm-route-enabled');
139
+ if (routeEnabled === 'true') {
140
+ const taskType = getHeader('x-lockllm-task-type');
141
+ const complexity = getHeader('x-lockllm-complexity');
142
+ const selectedModel = getHeader('x-lockllm-selected-model');
143
+ const routingReason = getHeader('x-lockllm-routing-reason');
144
+ const originalProvider = getHeader('x-lockllm-original-provider');
145
+ const originalModel = getHeader('x-lockllm-original-model');
146
+ const estimatedSavings = getHeader('x-lockllm-estimated-savings');
147
+ const estimatedOriginalCost = getHeader('x-lockllm-estimated-original-cost');
148
+ const estimatedRoutedCost = getHeader('x-lockllm-estimated-routed-cost');
149
+ const estimatedInputTokens = getHeader('x-lockllm-estimated-input-tokens');
150
+ const estimatedOutputTokens = getHeader('x-lockllm-estimated-output-tokens');
151
+ const routingFeeReason = getHeader('x-lockllm-routing-fee-reason');
152
+ metadata.routing = {
153
+ enabled: true,
154
+ task_type: taskType || '',
155
+ complexity: complexity ? parseFloat(complexity) : 0,
156
+ selected_model: selectedModel || '',
157
+ routing_reason: routingReason || '',
158
+ original_provider: originalProvider || '',
159
+ original_model: originalModel || '',
160
+ estimated_savings: estimatedSavings ? parseFloat(estimatedSavings) : 0,
161
+ estimated_original_cost: estimatedOriginalCost ? parseFloat(estimatedOriginalCost) : 0,
162
+ estimated_routed_cost: estimatedRoutedCost ? parseFloat(estimatedRoutedCost) : 0,
163
+ estimated_input_tokens: estimatedInputTokens ? parseInt(estimatedInputTokens, 10) : 0,
164
+ estimated_output_tokens: estimatedOutputTokens ? parseInt(estimatedOutputTokens, 10) : 0,
165
+ routing_fee_reason: routingFeeReason || '',
166
+ };
167
+ }
168
+ // Parse credit tracking
169
+ const creditsReserved = getHeader('x-lockllm-credits-reserved');
170
+ if (creditsReserved) {
171
+ metadata.credits_reserved = parseFloat(creditsReserved);
172
+ }
173
+ const routingFeeReserved = getHeader('x-lockllm-routing-fee-reserved');
174
+ if (routingFeeReserved) {
175
+ metadata.routing_fee_reserved = parseFloat(routingFeeReserved);
176
+ }
177
+ // Parse cache status
178
+ const cacheStatus = getHeader('x-lockllm-cache-status');
179
+ if (cacheStatus) {
180
+ metadata.cache_status = cacheStatus;
181
+ }
182
+ const cacheAge = getHeader('x-lockllm-cache-age');
183
+ if (cacheAge) {
184
+ metadata.cache_age = parseInt(cacheAge, 10);
185
+ }
186
+ const tokensSaved = getHeader('x-lockllm-tokens-saved');
187
+ if (tokensSaved) {
188
+ metadata.tokens_saved = parseInt(tokensSaved, 10);
189
+ }
190
+ const costSaved = getHeader('x-lockllm-cost-saved');
191
+ if (costSaved) {
192
+ metadata.cost_saved = parseFloat(costSaved);
193
+ }
194
+ const creditsDeducted = getHeader('x-lockllm-credits-deducted');
195
+ if (creditsDeducted) {
196
+ metadata.credits_deducted = parseFloat(creditsDeducted);
197
+ }
198
+ const balanceAfter = getHeader('x-lockllm-balance-after');
199
+ if (balanceAfter) {
200
+ metadata.balance_after = parseFloat(balanceAfter);
201
+ }
202
+ // Parse base64-encoded detail fields
203
+ const scanDetail = getHeader('x-lockllm-scan-detail');
204
+ if (scanDetail) {
205
+ metadata.scan_detail = decodeDetailField(scanDetail);
206
+ }
207
+ const policyDetail = getHeader('x-lockllm-warning-detail');
208
+ if (policyDetail) {
209
+ metadata.policy_detail = decodeDetailField(policyDetail);
210
+ }
211
+ const abuseDetail = getHeader('x-lockllm-abuse-detail');
212
+ if (abuseDetail) {
213
+ metadata.abuse_detail = decodeDetailField(abuseDetail);
214
+ }
215
+ return metadata;
216
+ }
217
+ /**
218
+ * Decode base64-encoded detail field
219
+ */
220
+ export function decodeDetailField(detail) {
221
+ try {
222
+ const decoded = atob(detail);
223
+ return JSON.parse(decoded);
224
+ }
225
+ catch {
226
+ return null;
227
+ }
228
+ }
229
+ //# sourceMappingURL=proxy-headers.js.map
package/dist/utils.d.ts CHANGED
@@ -16,6 +16,19 @@ import type { ProviderName } from './types/providers';
16
16
  * ```
17
17
  */
18
18
  export declare function getProxyURL(provider: ProviderName): string;
19
+ /**
20
+ * Get the universal proxy URL (non-BYOK mode)
21
+ * Access 200+ models without configuring provider keys
22
+ *
23
+ * @returns The universal proxy URL
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const url = getUniversalProxyURL();
28
+ * // Returns: 'https://api.lockllm.com/v1/proxy/chat/completions'
29
+ * ```
30
+ */
31
+ export declare function getUniversalProxyURL(): string;
19
32
  /**
20
33
  * Get all available proxy URLs
21
34
  *
@@ -68,6 +81,17 @@ export declare class HttpClient {
68
81
  data: T;
69
82
  requestId: string;
70
83
  }>;
84
+ /**
85
+ * Make a PUT request
86
+ */
87
+ put<T = any>(path: string, body?: any, options?: RequestOptions): Promise<{
88
+ data: T;
89
+ requestId: string;
90
+ }>;
91
+ /**
92
+ * Make a DELETE request
93
+ */
94
+ delete(path: string, options?: RequestOptions): Promise<void>;
71
95
  /**
72
96
  * Make an HTTP request with retry logic
73
97
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAoB9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAgB7E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,MAAM,CAElF;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAGzB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAc,EACvB,UAAU,GAAE,MAAU;IAQxB;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1C;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1C;;OAEG;YACW,OAAO;IAoFrB;;OAEG;YACW,WAAW;IAqCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAkBzB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAoB9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAgB7E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,MAAM,CAElF;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAGzB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAc,EACvB,UAAU,GAAE,MAAU;IAQxB;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1C;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1C;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;OAEG;YACW,OAAO;IAoFrB;;OAEG;YACW,WAAW;IAqCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAkBzB"}
package/dist/utils.js CHANGED
@@ -5,6 +5,7 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.HttpClient = void 0;
7
7
  exports.getProxyURL = getProxyURL;
8
+ exports.getUniversalProxyURL = getUniversalProxyURL;
8
9
  exports.getAllProxyURLs = getAllProxyURLs;
9
10
  exports.generateRequestId = generateRequestId;
10
11
  exports.sleep = sleep;
@@ -27,6 +28,21 @@ const LOCKLLM_PROXY_BASE = 'https://api.lockllm.com/v1/proxy';
27
28
  function getProxyURL(provider) {
28
29
  return `${LOCKLLM_PROXY_BASE}/${provider}`;
29
30
  }
31
+ /**
32
+ * Get the universal proxy URL (non-BYOK mode)
33
+ * Access 200+ models without configuring provider keys
34
+ *
35
+ * @returns The universal proxy URL
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const url = getUniversalProxyURL();
40
+ * // Returns: 'https://api.lockllm.com/v1/proxy/chat/completions'
41
+ * ```
42
+ */
43
+ function getUniversalProxyURL() {
44
+ return `${LOCKLLM_PROXY_BASE}/chat/completions`;
45
+ }
30
46
  /**
31
47
  * Get all available proxy URLs
32
48
  *
@@ -118,6 +134,18 @@ class HttpClient {
118
134
  async post(path, body, options) {
119
135
  return this.request('POST', path, body, options);
120
136
  }
137
+ /**
138
+ * Make a PUT request
139
+ */
140
+ async put(path, body, options) {
141
+ return this.request('PUT', path, body, options);
142
+ }
143
+ /**
144
+ * Make a DELETE request
145
+ */
146
+ async delete(path, options) {
147
+ await this.request('DELETE', path, undefined, options);
148
+ }
121
149
  /**
122
150
  * Make an HTTP request with retry logic
123
151
  */
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/dist/utils.mjs CHANGED
@@ -18,6 +18,21 @@ const LOCKLLM_PROXY_BASE = 'https://api.lockllm.com/v1/proxy';
18
18
  export function getProxyURL(provider) {
19
19
  return `${LOCKLLM_PROXY_BASE}/${provider}`;
20
20
  }
21
+ /**
22
+ * Get the universal proxy URL (non-BYOK mode)
23
+ * Access 200+ models without configuring provider keys
24
+ *
25
+ * @returns The universal proxy URL
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const url = getUniversalProxyURL();
30
+ * // Returns: 'https://api.lockllm.com/v1/proxy/chat/completions'
31
+ * ```
32
+ */
33
+ export function getUniversalProxyURL() {
34
+ return `${LOCKLLM_PROXY_BASE}/chat/completions`;
35
+ }
21
36
  /**
22
37
  * Get all available proxy URLs
23
38
  *
@@ -109,6 +124,18 @@ export class HttpClient {
109
124
  async post(path, body, options) {
110
125
  return this.request('POST', path, body, options);
111
126
  }
127
+ /**
128
+ * Make a PUT request
129
+ */
130
+ async put(path, body, options) {
131
+ return this.request('PUT', path, body, options);
132
+ }
133
+ /**
134
+ * Make a DELETE request
135
+ */
136
+ async delete(path, options) {
137
+ await this.request('DELETE', path, undefined, options);
138
+ }
112
139
  /**
113
140
  * Make an HTTP request with retry logic
114
141
  */