mcp-rubber-duck 1.8.0 → 1.9.3

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 (120) hide show
  1. package/.github/workflows/semantic-release.yml +12 -1
  2. package/.releaserc.json +6 -1
  3. package/CHANGELOG.md +30 -0
  4. package/README.md +158 -1
  5. package/audit-ci.json +3 -1
  6. package/dist/config/config.d.ts +2 -0
  7. package/dist/config/config.d.ts.map +1 -1
  8. package/dist/config/config.js +144 -1
  9. package/dist/config/config.js.map +1 -1
  10. package/dist/config/types.d.ts +1084 -2
  11. package/dist/config/types.d.ts.map +1 -1
  12. package/dist/config/types.js +59 -0
  13. package/dist/config/types.js.map +1 -1
  14. package/dist/guardrails/context.d.ts +10 -0
  15. package/dist/guardrails/context.d.ts.map +1 -0
  16. package/dist/guardrails/context.js +35 -0
  17. package/dist/guardrails/context.js.map +1 -0
  18. package/dist/guardrails/errors.d.ts +26 -0
  19. package/dist/guardrails/errors.d.ts.map +1 -0
  20. package/dist/guardrails/errors.js +42 -0
  21. package/dist/guardrails/errors.js.map +1 -0
  22. package/dist/guardrails/index.d.ts +6 -0
  23. package/dist/guardrails/index.d.ts.map +1 -0
  24. package/dist/guardrails/index.js +11 -0
  25. package/dist/guardrails/index.js.map +1 -0
  26. package/dist/guardrails/plugins/base-plugin.d.ts +35 -0
  27. package/dist/guardrails/plugins/base-plugin.d.ts.map +1 -0
  28. package/dist/guardrails/plugins/base-plugin.js +70 -0
  29. package/dist/guardrails/plugins/base-plugin.js.map +1 -0
  30. package/dist/guardrails/plugins/index.d.ts +6 -0
  31. package/dist/guardrails/plugins/index.d.ts.map +1 -0
  32. package/dist/guardrails/plugins/index.js +6 -0
  33. package/dist/guardrails/plugins/index.js.map +1 -0
  34. package/dist/guardrails/plugins/pattern-blocker.d.ts +27 -0
  35. package/dist/guardrails/plugins/pattern-blocker.d.ts.map +1 -0
  36. package/dist/guardrails/plugins/pattern-blocker.js +140 -0
  37. package/dist/guardrails/plugins/pattern-blocker.js.map +1 -0
  38. package/dist/guardrails/plugins/pii-redactor/detectors.d.ts +40 -0
  39. package/dist/guardrails/plugins/pii-redactor/detectors.d.ts.map +1 -0
  40. package/dist/guardrails/plugins/pii-redactor/detectors.js +134 -0
  41. package/dist/guardrails/plugins/pii-redactor/detectors.js.map +1 -0
  42. package/dist/guardrails/plugins/pii-redactor/index.d.ts +28 -0
  43. package/dist/guardrails/plugins/pii-redactor/index.d.ts.map +1 -0
  44. package/dist/guardrails/plugins/pii-redactor/index.js +157 -0
  45. package/dist/guardrails/plugins/pii-redactor/index.js.map +1 -0
  46. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.d.ts +33 -0
  47. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.d.ts.map +1 -0
  48. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.js +70 -0
  49. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.js.map +1 -0
  50. package/dist/guardrails/plugins/rate-limiter.d.ts +28 -0
  51. package/dist/guardrails/plugins/rate-limiter.d.ts.map +1 -0
  52. package/dist/guardrails/plugins/rate-limiter.js +91 -0
  53. package/dist/guardrails/plugins/rate-limiter.js.map +1 -0
  54. package/dist/guardrails/plugins/token-limiter.d.ts +30 -0
  55. package/dist/guardrails/plugins/token-limiter.d.ts.map +1 -0
  56. package/dist/guardrails/plugins/token-limiter.js +98 -0
  57. package/dist/guardrails/plugins/token-limiter.js.map +1 -0
  58. package/dist/guardrails/service.d.ts +38 -0
  59. package/dist/guardrails/service.d.ts.map +1 -0
  60. package/dist/guardrails/service.js +183 -0
  61. package/dist/guardrails/service.js.map +1 -0
  62. package/dist/guardrails/types.d.ts +96 -0
  63. package/dist/guardrails/types.d.ts.map +1 -0
  64. package/dist/guardrails/types.js +2 -0
  65. package/dist/guardrails/types.js.map +1 -0
  66. package/dist/providers/duck-provider-enhanced.d.ts +2 -1
  67. package/dist/providers/duck-provider-enhanced.d.ts.map +1 -1
  68. package/dist/providers/duck-provider-enhanced.js +55 -6
  69. package/dist/providers/duck-provider-enhanced.js.map +1 -1
  70. package/dist/providers/enhanced-manager.d.ts +2 -1
  71. package/dist/providers/enhanced-manager.d.ts.map +1 -1
  72. package/dist/providers/enhanced-manager.js +3 -3
  73. package/dist/providers/enhanced-manager.js.map +1 -1
  74. package/dist/providers/manager.d.ts +3 -1
  75. package/dist/providers/manager.d.ts.map +1 -1
  76. package/dist/providers/manager.js +4 -2
  77. package/dist/providers/manager.js.map +1 -1
  78. package/dist/providers/provider.d.ts +3 -1
  79. package/dist/providers/provider.d.ts.map +1 -1
  80. package/dist/providers/provider.js +43 -3
  81. package/dist/providers/provider.js.map +1 -1
  82. package/dist/server.d.ts +1 -0
  83. package/dist/server.d.ts.map +1 -1
  84. package/dist/server.js +28 -6
  85. package/dist/server.js.map +1 -1
  86. package/dist/services/function-bridge.d.ts +3 -1
  87. package/dist/services/function-bridge.d.ts.map +1 -1
  88. package/dist/services/function-bridge.js +40 -1
  89. package/dist/services/function-bridge.js.map +1 -1
  90. package/package.json +5 -1
  91. package/src/config/config.ts +187 -1
  92. package/src/config/types.ts +73 -0
  93. package/src/guardrails/context.ts +37 -0
  94. package/src/guardrails/errors.ts +46 -0
  95. package/src/guardrails/index.ts +20 -0
  96. package/src/guardrails/plugins/base-plugin.ts +103 -0
  97. package/src/guardrails/plugins/index.ts +5 -0
  98. package/src/guardrails/plugins/pattern-blocker.ts +190 -0
  99. package/src/guardrails/plugins/pii-redactor/detectors.ts +200 -0
  100. package/src/guardrails/plugins/pii-redactor/index.ts +203 -0
  101. package/src/guardrails/plugins/pii-redactor/pseudonymizer.ts +91 -0
  102. package/src/guardrails/plugins/rate-limiter.ts +142 -0
  103. package/src/guardrails/plugins/token-limiter.ts +155 -0
  104. package/src/guardrails/service.ts +209 -0
  105. package/src/guardrails/types.ts +120 -0
  106. package/src/providers/duck-provider-enhanced.ts +76 -7
  107. package/src/providers/enhanced-manager.ts +5 -3
  108. package/src/providers/manager.ts +6 -3
  109. package/src/providers/provider.ts +57 -6
  110. package/src/server.ts +32 -6
  111. package/src/services/function-bridge.ts +53 -2
  112. package/tests/guardrails/config.test.ts +267 -0
  113. package/tests/guardrails/errors.test.ts +109 -0
  114. package/tests/guardrails/plugins/pattern-blocker.test.ts +309 -0
  115. package/tests/guardrails/plugins/pii-redactor.test.ts +1004 -0
  116. package/tests/guardrails/plugins/rate-limiter.test.ts +310 -0
  117. package/tests/guardrails/plugins/token-limiter.test.ts +216 -0
  118. package/tests/guardrails/service.test.ts +911 -0
  119. package/tests/mcp-bridge.test.ts +248 -0
  120. package/tests/providers.test.ts +739 -0
@@ -153,6 +153,664 @@ export declare const PricingConfigSchema: z.ZodRecord<z.ZodString, z.ZodRecord<z
153
153
  inputPricePerMillion: number;
154
154
  outputPricePerMillion: number;
155
155
  }>>>;
156
+ export declare const RateLimiterConfigSchema: z.ZodObject<{
157
+ enabled: z.ZodDefault<z.ZodBoolean>;
158
+ priority: z.ZodDefault<z.ZodNumber>;
159
+ requests_per_minute: z.ZodDefault<z.ZodNumber>;
160
+ requests_per_hour: z.ZodDefault<z.ZodNumber>;
161
+ per_provider: z.ZodDefault<z.ZodBoolean>;
162
+ burst_allowance: z.ZodDefault<z.ZodNumber>;
163
+ }, "strip", z.ZodTypeAny, {
164
+ enabled: boolean;
165
+ priority: number;
166
+ requests_per_minute: number;
167
+ requests_per_hour: number;
168
+ per_provider: boolean;
169
+ burst_allowance: number;
170
+ }, {
171
+ enabled?: boolean | undefined;
172
+ priority?: number | undefined;
173
+ requests_per_minute?: number | undefined;
174
+ requests_per_hour?: number | undefined;
175
+ per_provider?: boolean | undefined;
176
+ burst_allowance?: number | undefined;
177
+ }>;
178
+ export declare const TokenLimiterConfigSchema: z.ZodObject<{
179
+ enabled: z.ZodDefault<z.ZodBoolean>;
180
+ priority: z.ZodDefault<z.ZodNumber>;
181
+ max_input_tokens: z.ZodDefault<z.ZodNumber>;
182
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
183
+ warn_at_percentage: z.ZodDefault<z.ZodNumber>;
184
+ }, "strip", z.ZodTypeAny, {
185
+ enabled: boolean;
186
+ priority: number;
187
+ max_input_tokens: number;
188
+ warn_at_percentage: number;
189
+ max_output_tokens?: number | undefined;
190
+ }, {
191
+ enabled?: boolean | undefined;
192
+ priority?: number | undefined;
193
+ max_input_tokens?: number | undefined;
194
+ max_output_tokens?: number | undefined;
195
+ warn_at_percentage?: number | undefined;
196
+ }>;
197
+ export declare const PatternBlockerConfigSchema: z.ZodObject<{
198
+ enabled: z.ZodDefault<z.ZodBoolean>;
199
+ priority: z.ZodDefault<z.ZodNumber>;
200
+ blocked_patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
201
+ blocked_patterns_regex: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
202
+ case_sensitive: z.ZodDefault<z.ZodBoolean>;
203
+ action_on_match: z.ZodDefault<z.ZodEnum<["block", "warn", "redact"]>>;
204
+ }, "strip", z.ZodTypeAny, {
205
+ enabled: boolean;
206
+ priority: number;
207
+ blocked_patterns: string[];
208
+ blocked_patterns_regex: string[];
209
+ case_sensitive: boolean;
210
+ action_on_match: "block" | "warn" | "redact";
211
+ }, {
212
+ enabled?: boolean | undefined;
213
+ priority?: number | undefined;
214
+ blocked_patterns?: string[] | undefined;
215
+ blocked_patterns_regex?: string[] | undefined;
216
+ case_sensitive?: boolean | undefined;
217
+ action_on_match?: "block" | "warn" | "redact" | undefined;
218
+ }>;
219
+ export declare const PIIRedactorConfigSchema: z.ZodObject<{
220
+ enabled: z.ZodDefault<z.ZodBoolean>;
221
+ priority: z.ZodDefault<z.ZodNumber>;
222
+ detect_emails: z.ZodDefault<z.ZodBoolean>;
223
+ detect_phones: z.ZodDefault<z.ZodBoolean>;
224
+ detect_ssn: z.ZodDefault<z.ZodBoolean>;
225
+ detect_api_keys: z.ZodDefault<z.ZodBoolean>;
226
+ detect_credit_cards: z.ZodDefault<z.ZodBoolean>;
227
+ detect_ip_addresses: z.ZodDefault<z.ZodBoolean>;
228
+ custom_patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
229
+ name: z.ZodString;
230
+ pattern: z.ZodString;
231
+ placeholder: z.ZodString;
232
+ }, "strip", z.ZodTypeAny, {
233
+ name: string;
234
+ pattern: string;
235
+ placeholder: string;
236
+ }, {
237
+ name: string;
238
+ pattern: string;
239
+ placeholder: string;
240
+ }>, "many">>;
241
+ allowlist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
242
+ allowlist_domains: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
243
+ restore_on_response: z.ZodDefault<z.ZodBoolean>;
244
+ log_detections: z.ZodDefault<z.ZodBoolean>;
245
+ }, "strip", z.ZodTypeAny, {
246
+ enabled: boolean;
247
+ priority: number;
248
+ detect_emails: boolean;
249
+ detect_phones: boolean;
250
+ detect_ssn: boolean;
251
+ detect_api_keys: boolean;
252
+ detect_credit_cards: boolean;
253
+ detect_ip_addresses: boolean;
254
+ custom_patterns: {
255
+ name: string;
256
+ pattern: string;
257
+ placeholder: string;
258
+ }[];
259
+ allowlist: string[];
260
+ allowlist_domains: string[];
261
+ restore_on_response: boolean;
262
+ log_detections: boolean;
263
+ }, {
264
+ enabled?: boolean | undefined;
265
+ priority?: number | undefined;
266
+ detect_emails?: boolean | undefined;
267
+ detect_phones?: boolean | undefined;
268
+ detect_ssn?: boolean | undefined;
269
+ detect_api_keys?: boolean | undefined;
270
+ detect_credit_cards?: boolean | undefined;
271
+ detect_ip_addresses?: boolean | undefined;
272
+ custom_patterns?: {
273
+ name: string;
274
+ pattern: string;
275
+ placeholder: string;
276
+ }[] | undefined;
277
+ allowlist?: string[] | undefined;
278
+ allowlist_domains?: string[] | undefined;
279
+ restore_on_response?: boolean | undefined;
280
+ log_detections?: boolean | undefined;
281
+ }>;
282
+ export declare const GuardrailsPluginsConfigSchema: z.ZodObject<{
283
+ rate_limiter: z.ZodOptional<z.ZodObject<{
284
+ enabled: z.ZodDefault<z.ZodBoolean>;
285
+ priority: z.ZodDefault<z.ZodNumber>;
286
+ requests_per_minute: z.ZodDefault<z.ZodNumber>;
287
+ requests_per_hour: z.ZodDefault<z.ZodNumber>;
288
+ per_provider: z.ZodDefault<z.ZodBoolean>;
289
+ burst_allowance: z.ZodDefault<z.ZodNumber>;
290
+ }, "strip", z.ZodTypeAny, {
291
+ enabled: boolean;
292
+ priority: number;
293
+ requests_per_minute: number;
294
+ requests_per_hour: number;
295
+ per_provider: boolean;
296
+ burst_allowance: number;
297
+ }, {
298
+ enabled?: boolean | undefined;
299
+ priority?: number | undefined;
300
+ requests_per_minute?: number | undefined;
301
+ requests_per_hour?: number | undefined;
302
+ per_provider?: boolean | undefined;
303
+ burst_allowance?: number | undefined;
304
+ }>>;
305
+ token_limiter: z.ZodOptional<z.ZodObject<{
306
+ enabled: z.ZodDefault<z.ZodBoolean>;
307
+ priority: z.ZodDefault<z.ZodNumber>;
308
+ max_input_tokens: z.ZodDefault<z.ZodNumber>;
309
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
310
+ warn_at_percentage: z.ZodDefault<z.ZodNumber>;
311
+ }, "strip", z.ZodTypeAny, {
312
+ enabled: boolean;
313
+ priority: number;
314
+ max_input_tokens: number;
315
+ warn_at_percentage: number;
316
+ max_output_tokens?: number | undefined;
317
+ }, {
318
+ enabled?: boolean | undefined;
319
+ priority?: number | undefined;
320
+ max_input_tokens?: number | undefined;
321
+ max_output_tokens?: number | undefined;
322
+ warn_at_percentage?: number | undefined;
323
+ }>>;
324
+ pattern_blocker: z.ZodOptional<z.ZodObject<{
325
+ enabled: z.ZodDefault<z.ZodBoolean>;
326
+ priority: z.ZodDefault<z.ZodNumber>;
327
+ blocked_patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
328
+ blocked_patterns_regex: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
329
+ case_sensitive: z.ZodDefault<z.ZodBoolean>;
330
+ action_on_match: z.ZodDefault<z.ZodEnum<["block", "warn", "redact"]>>;
331
+ }, "strip", z.ZodTypeAny, {
332
+ enabled: boolean;
333
+ priority: number;
334
+ blocked_patterns: string[];
335
+ blocked_patterns_regex: string[];
336
+ case_sensitive: boolean;
337
+ action_on_match: "block" | "warn" | "redact";
338
+ }, {
339
+ enabled?: boolean | undefined;
340
+ priority?: number | undefined;
341
+ blocked_patterns?: string[] | undefined;
342
+ blocked_patterns_regex?: string[] | undefined;
343
+ case_sensitive?: boolean | undefined;
344
+ action_on_match?: "block" | "warn" | "redact" | undefined;
345
+ }>>;
346
+ pii_redactor: z.ZodOptional<z.ZodObject<{
347
+ enabled: z.ZodDefault<z.ZodBoolean>;
348
+ priority: z.ZodDefault<z.ZodNumber>;
349
+ detect_emails: z.ZodDefault<z.ZodBoolean>;
350
+ detect_phones: z.ZodDefault<z.ZodBoolean>;
351
+ detect_ssn: z.ZodDefault<z.ZodBoolean>;
352
+ detect_api_keys: z.ZodDefault<z.ZodBoolean>;
353
+ detect_credit_cards: z.ZodDefault<z.ZodBoolean>;
354
+ detect_ip_addresses: z.ZodDefault<z.ZodBoolean>;
355
+ custom_patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
356
+ name: z.ZodString;
357
+ pattern: z.ZodString;
358
+ placeholder: z.ZodString;
359
+ }, "strip", z.ZodTypeAny, {
360
+ name: string;
361
+ pattern: string;
362
+ placeholder: string;
363
+ }, {
364
+ name: string;
365
+ pattern: string;
366
+ placeholder: string;
367
+ }>, "many">>;
368
+ allowlist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
369
+ allowlist_domains: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
370
+ restore_on_response: z.ZodDefault<z.ZodBoolean>;
371
+ log_detections: z.ZodDefault<z.ZodBoolean>;
372
+ }, "strip", z.ZodTypeAny, {
373
+ enabled: boolean;
374
+ priority: number;
375
+ detect_emails: boolean;
376
+ detect_phones: boolean;
377
+ detect_ssn: boolean;
378
+ detect_api_keys: boolean;
379
+ detect_credit_cards: boolean;
380
+ detect_ip_addresses: boolean;
381
+ custom_patterns: {
382
+ name: string;
383
+ pattern: string;
384
+ placeholder: string;
385
+ }[];
386
+ allowlist: string[];
387
+ allowlist_domains: string[];
388
+ restore_on_response: boolean;
389
+ log_detections: boolean;
390
+ }, {
391
+ enabled?: boolean | undefined;
392
+ priority?: number | undefined;
393
+ detect_emails?: boolean | undefined;
394
+ detect_phones?: boolean | undefined;
395
+ detect_ssn?: boolean | undefined;
396
+ detect_api_keys?: boolean | undefined;
397
+ detect_credit_cards?: boolean | undefined;
398
+ detect_ip_addresses?: boolean | undefined;
399
+ custom_patterns?: {
400
+ name: string;
401
+ pattern: string;
402
+ placeholder: string;
403
+ }[] | undefined;
404
+ allowlist?: string[] | undefined;
405
+ allowlist_domains?: string[] | undefined;
406
+ restore_on_response?: boolean | undefined;
407
+ log_detections?: boolean | undefined;
408
+ }>>;
409
+ }, "strip", z.ZodTypeAny, {
410
+ rate_limiter?: {
411
+ enabled: boolean;
412
+ priority: number;
413
+ requests_per_minute: number;
414
+ requests_per_hour: number;
415
+ per_provider: boolean;
416
+ burst_allowance: number;
417
+ } | undefined;
418
+ token_limiter?: {
419
+ enabled: boolean;
420
+ priority: number;
421
+ max_input_tokens: number;
422
+ warn_at_percentage: number;
423
+ max_output_tokens?: number | undefined;
424
+ } | undefined;
425
+ pattern_blocker?: {
426
+ enabled: boolean;
427
+ priority: number;
428
+ blocked_patterns: string[];
429
+ blocked_patterns_regex: string[];
430
+ case_sensitive: boolean;
431
+ action_on_match: "block" | "warn" | "redact";
432
+ } | undefined;
433
+ pii_redactor?: {
434
+ enabled: boolean;
435
+ priority: number;
436
+ detect_emails: boolean;
437
+ detect_phones: boolean;
438
+ detect_ssn: boolean;
439
+ detect_api_keys: boolean;
440
+ detect_credit_cards: boolean;
441
+ detect_ip_addresses: boolean;
442
+ custom_patterns: {
443
+ name: string;
444
+ pattern: string;
445
+ placeholder: string;
446
+ }[];
447
+ allowlist: string[];
448
+ allowlist_domains: string[];
449
+ restore_on_response: boolean;
450
+ log_detections: boolean;
451
+ } | undefined;
452
+ }, {
453
+ rate_limiter?: {
454
+ enabled?: boolean | undefined;
455
+ priority?: number | undefined;
456
+ requests_per_minute?: number | undefined;
457
+ requests_per_hour?: number | undefined;
458
+ per_provider?: boolean | undefined;
459
+ burst_allowance?: number | undefined;
460
+ } | undefined;
461
+ token_limiter?: {
462
+ enabled?: boolean | undefined;
463
+ priority?: number | undefined;
464
+ max_input_tokens?: number | undefined;
465
+ max_output_tokens?: number | undefined;
466
+ warn_at_percentage?: number | undefined;
467
+ } | undefined;
468
+ pattern_blocker?: {
469
+ enabled?: boolean | undefined;
470
+ priority?: number | undefined;
471
+ blocked_patterns?: string[] | undefined;
472
+ blocked_patterns_regex?: string[] | undefined;
473
+ case_sensitive?: boolean | undefined;
474
+ action_on_match?: "block" | "warn" | "redact" | undefined;
475
+ } | undefined;
476
+ pii_redactor?: {
477
+ enabled?: boolean | undefined;
478
+ priority?: number | undefined;
479
+ detect_emails?: boolean | undefined;
480
+ detect_phones?: boolean | undefined;
481
+ detect_ssn?: boolean | undefined;
482
+ detect_api_keys?: boolean | undefined;
483
+ detect_credit_cards?: boolean | undefined;
484
+ detect_ip_addresses?: boolean | undefined;
485
+ custom_patterns?: {
486
+ name: string;
487
+ pattern: string;
488
+ placeholder: string;
489
+ }[] | undefined;
490
+ allowlist?: string[] | undefined;
491
+ allowlist_domains?: string[] | undefined;
492
+ restore_on_response?: boolean | undefined;
493
+ log_detections?: boolean | undefined;
494
+ } | undefined;
495
+ }>;
496
+ export declare const GuardrailsConfigSchema: z.ZodObject<{
497
+ enabled: z.ZodDefault<z.ZodBoolean>;
498
+ log_violations: z.ZodDefault<z.ZodBoolean>;
499
+ log_modifications: z.ZodDefault<z.ZodBoolean>;
500
+ fail_open: z.ZodDefault<z.ZodBoolean>;
501
+ plugins: z.ZodOptional<z.ZodObject<{
502
+ rate_limiter: z.ZodOptional<z.ZodObject<{
503
+ enabled: z.ZodDefault<z.ZodBoolean>;
504
+ priority: z.ZodDefault<z.ZodNumber>;
505
+ requests_per_minute: z.ZodDefault<z.ZodNumber>;
506
+ requests_per_hour: z.ZodDefault<z.ZodNumber>;
507
+ per_provider: z.ZodDefault<z.ZodBoolean>;
508
+ burst_allowance: z.ZodDefault<z.ZodNumber>;
509
+ }, "strip", z.ZodTypeAny, {
510
+ enabled: boolean;
511
+ priority: number;
512
+ requests_per_minute: number;
513
+ requests_per_hour: number;
514
+ per_provider: boolean;
515
+ burst_allowance: number;
516
+ }, {
517
+ enabled?: boolean | undefined;
518
+ priority?: number | undefined;
519
+ requests_per_minute?: number | undefined;
520
+ requests_per_hour?: number | undefined;
521
+ per_provider?: boolean | undefined;
522
+ burst_allowance?: number | undefined;
523
+ }>>;
524
+ token_limiter: z.ZodOptional<z.ZodObject<{
525
+ enabled: z.ZodDefault<z.ZodBoolean>;
526
+ priority: z.ZodDefault<z.ZodNumber>;
527
+ max_input_tokens: z.ZodDefault<z.ZodNumber>;
528
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
529
+ warn_at_percentage: z.ZodDefault<z.ZodNumber>;
530
+ }, "strip", z.ZodTypeAny, {
531
+ enabled: boolean;
532
+ priority: number;
533
+ max_input_tokens: number;
534
+ warn_at_percentage: number;
535
+ max_output_tokens?: number | undefined;
536
+ }, {
537
+ enabled?: boolean | undefined;
538
+ priority?: number | undefined;
539
+ max_input_tokens?: number | undefined;
540
+ max_output_tokens?: number | undefined;
541
+ warn_at_percentage?: number | undefined;
542
+ }>>;
543
+ pattern_blocker: z.ZodOptional<z.ZodObject<{
544
+ enabled: z.ZodDefault<z.ZodBoolean>;
545
+ priority: z.ZodDefault<z.ZodNumber>;
546
+ blocked_patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
547
+ blocked_patterns_regex: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
548
+ case_sensitive: z.ZodDefault<z.ZodBoolean>;
549
+ action_on_match: z.ZodDefault<z.ZodEnum<["block", "warn", "redact"]>>;
550
+ }, "strip", z.ZodTypeAny, {
551
+ enabled: boolean;
552
+ priority: number;
553
+ blocked_patterns: string[];
554
+ blocked_patterns_regex: string[];
555
+ case_sensitive: boolean;
556
+ action_on_match: "block" | "warn" | "redact";
557
+ }, {
558
+ enabled?: boolean | undefined;
559
+ priority?: number | undefined;
560
+ blocked_patterns?: string[] | undefined;
561
+ blocked_patterns_regex?: string[] | undefined;
562
+ case_sensitive?: boolean | undefined;
563
+ action_on_match?: "block" | "warn" | "redact" | undefined;
564
+ }>>;
565
+ pii_redactor: z.ZodOptional<z.ZodObject<{
566
+ enabled: z.ZodDefault<z.ZodBoolean>;
567
+ priority: z.ZodDefault<z.ZodNumber>;
568
+ detect_emails: z.ZodDefault<z.ZodBoolean>;
569
+ detect_phones: z.ZodDefault<z.ZodBoolean>;
570
+ detect_ssn: z.ZodDefault<z.ZodBoolean>;
571
+ detect_api_keys: z.ZodDefault<z.ZodBoolean>;
572
+ detect_credit_cards: z.ZodDefault<z.ZodBoolean>;
573
+ detect_ip_addresses: z.ZodDefault<z.ZodBoolean>;
574
+ custom_patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
575
+ name: z.ZodString;
576
+ pattern: z.ZodString;
577
+ placeholder: z.ZodString;
578
+ }, "strip", z.ZodTypeAny, {
579
+ name: string;
580
+ pattern: string;
581
+ placeholder: string;
582
+ }, {
583
+ name: string;
584
+ pattern: string;
585
+ placeholder: string;
586
+ }>, "many">>;
587
+ allowlist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
588
+ allowlist_domains: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
589
+ restore_on_response: z.ZodDefault<z.ZodBoolean>;
590
+ log_detections: z.ZodDefault<z.ZodBoolean>;
591
+ }, "strip", z.ZodTypeAny, {
592
+ enabled: boolean;
593
+ priority: number;
594
+ detect_emails: boolean;
595
+ detect_phones: boolean;
596
+ detect_ssn: boolean;
597
+ detect_api_keys: boolean;
598
+ detect_credit_cards: boolean;
599
+ detect_ip_addresses: boolean;
600
+ custom_patterns: {
601
+ name: string;
602
+ pattern: string;
603
+ placeholder: string;
604
+ }[];
605
+ allowlist: string[];
606
+ allowlist_domains: string[];
607
+ restore_on_response: boolean;
608
+ log_detections: boolean;
609
+ }, {
610
+ enabled?: boolean | undefined;
611
+ priority?: number | undefined;
612
+ detect_emails?: boolean | undefined;
613
+ detect_phones?: boolean | undefined;
614
+ detect_ssn?: boolean | undefined;
615
+ detect_api_keys?: boolean | undefined;
616
+ detect_credit_cards?: boolean | undefined;
617
+ detect_ip_addresses?: boolean | undefined;
618
+ custom_patterns?: {
619
+ name: string;
620
+ pattern: string;
621
+ placeholder: string;
622
+ }[] | undefined;
623
+ allowlist?: string[] | undefined;
624
+ allowlist_domains?: string[] | undefined;
625
+ restore_on_response?: boolean | undefined;
626
+ log_detections?: boolean | undefined;
627
+ }>>;
628
+ }, "strip", z.ZodTypeAny, {
629
+ rate_limiter?: {
630
+ enabled: boolean;
631
+ priority: number;
632
+ requests_per_minute: number;
633
+ requests_per_hour: number;
634
+ per_provider: boolean;
635
+ burst_allowance: number;
636
+ } | undefined;
637
+ token_limiter?: {
638
+ enabled: boolean;
639
+ priority: number;
640
+ max_input_tokens: number;
641
+ warn_at_percentage: number;
642
+ max_output_tokens?: number | undefined;
643
+ } | undefined;
644
+ pattern_blocker?: {
645
+ enabled: boolean;
646
+ priority: number;
647
+ blocked_patterns: string[];
648
+ blocked_patterns_regex: string[];
649
+ case_sensitive: boolean;
650
+ action_on_match: "block" | "warn" | "redact";
651
+ } | undefined;
652
+ pii_redactor?: {
653
+ enabled: boolean;
654
+ priority: number;
655
+ detect_emails: boolean;
656
+ detect_phones: boolean;
657
+ detect_ssn: boolean;
658
+ detect_api_keys: boolean;
659
+ detect_credit_cards: boolean;
660
+ detect_ip_addresses: boolean;
661
+ custom_patterns: {
662
+ name: string;
663
+ pattern: string;
664
+ placeholder: string;
665
+ }[];
666
+ allowlist: string[];
667
+ allowlist_domains: string[];
668
+ restore_on_response: boolean;
669
+ log_detections: boolean;
670
+ } | undefined;
671
+ }, {
672
+ rate_limiter?: {
673
+ enabled?: boolean | undefined;
674
+ priority?: number | undefined;
675
+ requests_per_minute?: number | undefined;
676
+ requests_per_hour?: number | undefined;
677
+ per_provider?: boolean | undefined;
678
+ burst_allowance?: number | undefined;
679
+ } | undefined;
680
+ token_limiter?: {
681
+ enabled?: boolean | undefined;
682
+ priority?: number | undefined;
683
+ max_input_tokens?: number | undefined;
684
+ max_output_tokens?: number | undefined;
685
+ warn_at_percentage?: number | undefined;
686
+ } | undefined;
687
+ pattern_blocker?: {
688
+ enabled?: boolean | undefined;
689
+ priority?: number | undefined;
690
+ blocked_patterns?: string[] | undefined;
691
+ blocked_patterns_regex?: string[] | undefined;
692
+ case_sensitive?: boolean | undefined;
693
+ action_on_match?: "block" | "warn" | "redact" | undefined;
694
+ } | undefined;
695
+ pii_redactor?: {
696
+ enabled?: boolean | undefined;
697
+ priority?: number | undefined;
698
+ detect_emails?: boolean | undefined;
699
+ detect_phones?: boolean | undefined;
700
+ detect_ssn?: boolean | undefined;
701
+ detect_api_keys?: boolean | undefined;
702
+ detect_credit_cards?: boolean | undefined;
703
+ detect_ip_addresses?: boolean | undefined;
704
+ custom_patterns?: {
705
+ name: string;
706
+ pattern: string;
707
+ placeholder: string;
708
+ }[] | undefined;
709
+ allowlist?: string[] | undefined;
710
+ allowlist_domains?: string[] | undefined;
711
+ restore_on_response?: boolean | undefined;
712
+ log_detections?: boolean | undefined;
713
+ } | undefined;
714
+ }>>;
715
+ }, "strip", z.ZodTypeAny, {
716
+ enabled: boolean;
717
+ log_violations: boolean;
718
+ log_modifications: boolean;
719
+ fail_open: boolean;
720
+ plugins?: {
721
+ rate_limiter?: {
722
+ enabled: boolean;
723
+ priority: number;
724
+ requests_per_minute: number;
725
+ requests_per_hour: number;
726
+ per_provider: boolean;
727
+ burst_allowance: number;
728
+ } | undefined;
729
+ token_limiter?: {
730
+ enabled: boolean;
731
+ priority: number;
732
+ max_input_tokens: number;
733
+ warn_at_percentage: number;
734
+ max_output_tokens?: number | undefined;
735
+ } | undefined;
736
+ pattern_blocker?: {
737
+ enabled: boolean;
738
+ priority: number;
739
+ blocked_patterns: string[];
740
+ blocked_patterns_regex: string[];
741
+ case_sensitive: boolean;
742
+ action_on_match: "block" | "warn" | "redact";
743
+ } | undefined;
744
+ pii_redactor?: {
745
+ enabled: boolean;
746
+ priority: number;
747
+ detect_emails: boolean;
748
+ detect_phones: boolean;
749
+ detect_ssn: boolean;
750
+ detect_api_keys: boolean;
751
+ detect_credit_cards: boolean;
752
+ detect_ip_addresses: boolean;
753
+ custom_patterns: {
754
+ name: string;
755
+ pattern: string;
756
+ placeholder: string;
757
+ }[];
758
+ allowlist: string[];
759
+ allowlist_domains: string[];
760
+ restore_on_response: boolean;
761
+ log_detections: boolean;
762
+ } | undefined;
763
+ } | undefined;
764
+ }, {
765
+ enabled?: boolean | undefined;
766
+ log_violations?: boolean | undefined;
767
+ log_modifications?: boolean | undefined;
768
+ fail_open?: boolean | undefined;
769
+ plugins?: {
770
+ rate_limiter?: {
771
+ enabled?: boolean | undefined;
772
+ priority?: number | undefined;
773
+ requests_per_minute?: number | undefined;
774
+ requests_per_hour?: number | undefined;
775
+ per_provider?: boolean | undefined;
776
+ burst_allowance?: number | undefined;
777
+ } | undefined;
778
+ token_limiter?: {
779
+ enabled?: boolean | undefined;
780
+ priority?: number | undefined;
781
+ max_input_tokens?: number | undefined;
782
+ max_output_tokens?: number | undefined;
783
+ warn_at_percentage?: number | undefined;
784
+ } | undefined;
785
+ pattern_blocker?: {
786
+ enabled?: boolean | undefined;
787
+ priority?: number | undefined;
788
+ blocked_patterns?: string[] | undefined;
789
+ blocked_patterns_regex?: string[] | undefined;
790
+ case_sensitive?: boolean | undefined;
791
+ action_on_match?: "block" | "warn" | "redact" | undefined;
792
+ } | undefined;
793
+ pii_redactor?: {
794
+ enabled?: boolean | undefined;
795
+ priority?: number | undefined;
796
+ detect_emails?: boolean | undefined;
797
+ detect_phones?: boolean | undefined;
798
+ detect_ssn?: boolean | undefined;
799
+ detect_api_keys?: boolean | undefined;
800
+ detect_credit_cards?: boolean | undefined;
801
+ detect_ip_addresses?: boolean | undefined;
802
+ custom_patterns?: {
803
+ name: string;
804
+ pattern: string;
805
+ placeholder: string;
806
+ }[] | undefined;
807
+ allowlist?: string[] | undefined;
808
+ allowlist_domains?: string[] | undefined;
809
+ restore_on_response?: boolean | undefined;
810
+ log_detections?: boolean | undefined;
811
+ } | undefined;
812
+ } | undefined;
813
+ }>;
156
814
  export declare const ConfigSchema: z.ZodObject<{
157
815
  providers: z.ZodRecord<z.ZodString, z.ZodObject<{
158
816
  api_key: z.ZodOptional<z.ZodString>;
@@ -272,6 +930,324 @@ export declare const ConfigSchema: z.ZodObject<{
272
930
  inputPricePerMillion: number;
273
931
  outputPricePerMillion: number;
274
932
  }>>>>;
933
+ guardrails: z.ZodOptional<z.ZodObject<{
934
+ enabled: z.ZodDefault<z.ZodBoolean>;
935
+ log_violations: z.ZodDefault<z.ZodBoolean>;
936
+ log_modifications: z.ZodDefault<z.ZodBoolean>;
937
+ fail_open: z.ZodDefault<z.ZodBoolean>;
938
+ plugins: z.ZodOptional<z.ZodObject<{
939
+ rate_limiter: z.ZodOptional<z.ZodObject<{
940
+ enabled: z.ZodDefault<z.ZodBoolean>;
941
+ priority: z.ZodDefault<z.ZodNumber>;
942
+ requests_per_minute: z.ZodDefault<z.ZodNumber>;
943
+ requests_per_hour: z.ZodDefault<z.ZodNumber>;
944
+ per_provider: z.ZodDefault<z.ZodBoolean>;
945
+ burst_allowance: z.ZodDefault<z.ZodNumber>;
946
+ }, "strip", z.ZodTypeAny, {
947
+ enabled: boolean;
948
+ priority: number;
949
+ requests_per_minute: number;
950
+ requests_per_hour: number;
951
+ per_provider: boolean;
952
+ burst_allowance: number;
953
+ }, {
954
+ enabled?: boolean | undefined;
955
+ priority?: number | undefined;
956
+ requests_per_minute?: number | undefined;
957
+ requests_per_hour?: number | undefined;
958
+ per_provider?: boolean | undefined;
959
+ burst_allowance?: number | undefined;
960
+ }>>;
961
+ token_limiter: z.ZodOptional<z.ZodObject<{
962
+ enabled: z.ZodDefault<z.ZodBoolean>;
963
+ priority: z.ZodDefault<z.ZodNumber>;
964
+ max_input_tokens: z.ZodDefault<z.ZodNumber>;
965
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
966
+ warn_at_percentage: z.ZodDefault<z.ZodNumber>;
967
+ }, "strip", z.ZodTypeAny, {
968
+ enabled: boolean;
969
+ priority: number;
970
+ max_input_tokens: number;
971
+ warn_at_percentage: number;
972
+ max_output_tokens?: number | undefined;
973
+ }, {
974
+ enabled?: boolean | undefined;
975
+ priority?: number | undefined;
976
+ max_input_tokens?: number | undefined;
977
+ max_output_tokens?: number | undefined;
978
+ warn_at_percentage?: number | undefined;
979
+ }>>;
980
+ pattern_blocker: z.ZodOptional<z.ZodObject<{
981
+ enabled: z.ZodDefault<z.ZodBoolean>;
982
+ priority: z.ZodDefault<z.ZodNumber>;
983
+ blocked_patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
984
+ blocked_patterns_regex: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
985
+ case_sensitive: z.ZodDefault<z.ZodBoolean>;
986
+ action_on_match: z.ZodDefault<z.ZodEnum<["block", "warn", "redact"]>>;
987
+ }, "strip", z.ZodTypeAny, {
988
+ enabled: boolean;
989
+ priority: number;
990
+ blocked_patterns: string[];
991
+ blocked_patterns_regex: string[];
992
+ case_sensitive: boolean;
993
+ action_on_match: "block" | "warn" | "redact";
994
+ }, {
995
+ enabled?: boolean | undefined;
996
+ priority?: number | undefined;
997
+ blocked_patterns?: string[] | undefined;
998
+ blocked_patterns_regex?: string[] | undefined;
999
+ case_sensitive?: boolean | undefined;
1000
+ action_on_match?: "block" | "warn" | "redact" | undefined;
1001
+ }>>;
1002
+ pii_redactor: z.ZodOptional<z.ZodObject<{
1003
+ enabled: z.ZodDefault<z.ZodBoolean>;
1004
+ priority: z.ZodDefault<z.ZodNumber>;
1005
+ detect_emails: z.ZodDefault<z.ZodBoolean>;
1006
+ detect_phones: z.ZodDefault<z.ZodBoolean>;
1007
+ detect_ssn: z.ZodDefault<z.ZodBoolean>;
1008
+ detect_api_keys: z.ZodDefault<z.ZodBoolean>;
1009
+ detect_credit_cards: z.ZodDefault<z.ZodBoolean>;
1010
+ detect_ip_addresses: z.ZodDefault<z.ZodBoolean>;
1011
+ custom_patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
1012
+ name: z.ZodString;
1013
+ pattern: z.ZodString;
1014
+ placeholder: z.ZodString;
1015
+ }, "strip", z.ZodTypeAny, {
1016
+ name: string;
1017
+ pattern: string;
1018
+ placeholder: string;
1019
+ }, {
1020
+ name: string;
1021
+ pattern: string;
1022
+ placeholder: string;
1023
+ }>, "many">>;
1024
+ allowlist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1025
+ allowlist_domains: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1026
+ restore_on_response: z.ZodDefault<z.ZodBoolean>;
1027
+ log_detections: z.ZodDefault<z.ZodBoolean>;
1028
+ }, "strip", z.ZodTypeAny, {
1029
+ enabled: boolean;
1030
+ priority: number;
1031
+ detect_emails: boolean;
1032
+ detect_phones: boolean;
1033
+ detect_ssn: boolean;
1034
+ detect_api_keys: boolean;
1035
+ detect_credit_cards: boolean;
1036
+ detect_ip_addresses: boolean;
1037
+ custom_patterns: {
1038
+ name: string;
1039
+ pattern: string;
1040
+ placeholder: string;
1041
+ }[];
1042
+ allowlist: string[];
1043
+ allowlist_domains: string[];
1044
+ restore_on_response: boolean;
1045
+ log_detections: boolean;
1046
+ }, {
1047
+ enabled?: boolean | undefined;
1048
+ priority?: number | undefined;
1049
+ detect_emails?: boolean | undefined;
1050
+ detect_phones?: boolean | undefined;
1051
+ detect_ssn?: boolean | undefined;
1052
+ detect_api_keys?: boolean | undefined;
1053
+ detect_credit_cards?: boolean | undefined;
1054
+ detect_ip_addresses?: boolean | undefined;
1055
+ custom_patterns?: {
1056
+ name: string;
1057
+ pattern: string;
1058
+ placeholder: string;
1059
+ }[] | undefined;
1060
+ allowlist?: string[] | undefined;
1061
+ allowlist_domains?: string[] | undefined;
1062
+ restore_on_response?: boolean | undefined;
1063
+ log_detections?: boolean | undefined;
1064
+ }>>;
1065
+ }, "strip", z.ZodTypeAny, {
1066
+ rate_limiter?: {
1067
+ enabled: boolean;
1068
+ priority: number;
1069
+ requests_per_minute: number;
1070
+ requests_per_hour: number;
1071
+ per_provider: boolean;
1072
+ burst_allowance: number;
1073
+ } | undefined;
1074
+ token_limiter?: {
1075
+ enabled: boolean;
1076
+ priority: number;
1077
+ max_input_tokens: number;
1078
+ warn_at_percentage: number;
1079
+ max_output_tokens?: number | undefined;
1080
+ } | undefined;
1081
+ pattern_blocker?: {
1082
+ enabled: boolean;
1083
+ priority: number;
1084
+ blocked_patterns: string[];
1085
+ blocked_patterns_regex: string[];
1086
+ case_sensitive: boolean;
1087
+ action_on_match: "block" | "warn" | "redact";
1088
+ } | undefined;
1089
+ pii_redactor?: {
1090
+ enabled: boolean;
1091
+ priority: number;
1092
+ detect_emails: boolean;
1093
+ detect_phones: boolean;
1094
+ detect_ssn: boolean;
1095
+ detect_api_keys: boolean;
1096
+ detect_credit_cards: boolean;
1097
+ detect_ip_addresses: boolean;
1098
+ custom_patterns: {
1099
+ name: string;
1100
+ pattern: string;
1101
+ placeholder: string;
1102
+ }[];
1103
+ allowlist: string[];
1104
+ allowlist_domains: string[];
1105
+ restore_on_response: boolean;
1106
+ log_detections: boolean;
1107
+ } | undefined;
1108
+ }, {
1109
+ rate_limiter?: {
1110
+ enabled?: boolean | undefined;
1111
+ priority?: number | undefined;
1112
+ requests_per_minute?: number | undefined;
1113
+ requests_per_hour?: number | undefined;
1114
+ per_provider?: boolean | undefined;
1115
+ burst_allowance?: number | undefined;
1116
+ } | undefined;
1117
+ token_limiter?: {
1118
+ enabled?: boolean | undefined;
1119
+ priority?: number | undefined;
1120
+ max_input_tokens?: number | undefined;
1121
+ max_output_tokens?: number | undefined;
1122
+ warn_at_percentage?: number | undefined;
1123
+ } | undefined;
1124
+ pattern_blocker?: {
1125
+ enabled?: boolean | undefined;
1126
+ priority?: number | undefined;
1127
+ blocked_patterns?: string[] | undefined;
1128
+ blocked_patterns_regex?: string[] | undefined;
1129
+ case_sensitive?: boolean | undefined;
1130
+ action_on_match?: "block" | "warn" | "redact" | undefined;
1131
+ } | undefined;
1132
+ pii_redactor?: {
1133
+ enabled?: boolean | undefined;
1134
+ priority?: number | undefined;
1135
+ detect_emails?: boolean | undefined;
1136
+ detect_phones?: boolean | undefined;
1137
+ detect_ssn?: boolean | undefined;
1138
+ detect_api_keys?: boolean | undefined;
1139
+ detect_credit_cards?: boolean | undefined;
1140
+ detect_ip_addresses?: boolean | undefined;
1141
+ custom_patterns?: {
1142
+ name: string;
1143
+ pattern: string;
1144
+ placeholder: string;
1145
+ }[] | undefined;
1146
+ allowlist?: string[] | undefined;
1147
+ allowlist_domains?: string[] | undefined;
1148
+ restore_on_response?: boolean | undefined;
1149
+ log_detections?: boolean | undefined;
1150
+ } | undefined;
1151
+ }>>;
1152
+ }, "strip", z.ZodTypeAny, {
1153
+ enabled: boolean;
1154
+ log_violations: boolean;
1155
+ log_modifications: boolean;
1156
+ fail_open: boolean;
1157
+ plugins?: {
1158
+ rate_limiter?: {
1159
+ enabled: boolean;
1160
+ priority: number;
1161
+ requests_per_minute: number;
1162
+ requests_per_hour: number;
1163
+ per_provider: boolean;
1164
+ burst_allowance: number;
1165
+ } | undefined;
1166
+ token_limiter?: {
1167
+ enabled: boolean;
1168
+ priority: number;
1169
+ max_input_tokens: number;
1170
+ warn_at_percentage: number;
1171
+ max_output_tokens?: number | undefined;
1172
+ } | undefined;
1173
+ pattern_blocker?: {
1174
+ enabled: boolean;
1175
+ priority: number;
1176
+ blocked_patterns: string[];
1177
+ blocked_patterns_regex: string[];
1178
+ case_sensitive: boolean;
1179
+ action_on_match: "block" | "warn" | "redact";
1180
+ } | undefined;
1181
+ pii_redactor?: {
1182
+ enabled: boolean;
1183
+ priority: number;
1184
+ detect_emails: boolean;
1185
+ detect_phones: boolean;
1186
+ detect_ssn: boolean;
1187
+ detect_api_keys: boolean;
1188
+ detect_credit_cards: boolean;
1189
+ detect_ip_addresses: boolean;
1190
+ custom_patterns: {
1191
+ name: string;
1192
+ pattern: string;
1193
+ placeholder: string;
1194
+ }[];
1195
+ allowlist: string[];
1196
+ allowlist_domains: string[];
1197
+ restore_on_response: boolean;
1198
+ log_detections: boolean;
1199
+ } | undefined;
1200
+ } | undefined;
1201
+ }, {
1202
+ enabled?: boolean | undefined;
1203
+ log_violations?: boolean | undefined;
1204
+ log_modifications?: boolean | undefined;
1205
+ fail_open?: boolean | undefined;
1206
+ plugins?: {
1207
+ rate_limiter?: {
1208
+ enabled?: boolean | undefined;
1209
+ priority?: number | undefined;
1210
+ requests_per_minute?: number | undefined;
1211
+ requests_per_hour?: number | undefined;
1212
+ per_provider?: boolean | undefined;
1213
+ burst_allowance?: number | undefined;
1214
+ } | undefined;
1215
+ token_limiter?: {
1216
+ enabled?: boolean | undefined;
1217
+ priority?: number | undefined;
1218
+ max_input_tokens?: number | undefined;
1219
+ max_output_tokens?: number | undefined;
1220
+ warn_at_percentage?: number | undefined;
1221
+ } | undefined;
1222
+ pattern_blocker?: {
1223
+ enabled?: boolean | undefined;
1224
+ priority?: number | undefined;
1225
+ blocked_patterns?: string[] | undefined;
1226
+ blocked_patterns_regex?: string[] | undefined;
1227
+ case_sensitive?: boolean | undefined;
1228
+ action_on_match?: "block" | "warn" | "redact" | undefined;
1229
+ } | undefined;
1230
+ pii_redactor?: {
1231
+ enabled?: boolean | undefined;
1232
+ priority?: number | undefined;
1233
+ detect_emails?: boolean | undefined;
1234
+ detect_phones?: boolean | undefined;
1235
+ detect_ssn?: boolean | undefined;
1236
+ detect_api_keys?: boolean | undefined;
1237
+ detect_credit_cards?: boolean | undefined;
1238
+ detect_ip_addresses?: boolean | undefined;
1239
+ custom_patterns?: {
1240
+ name: string;
1241
+ pattern: string;
1242
+ placeholder: string;
1243
+ }[] | undefined;
1244
+ allowlist?: string[] | undefined;
1245
+ allowlist_domains?: string[] | undefined;
1246
+ restore_on_response?: boolean | undefined;
1247
+ log_detections?: boolean | undefined;
1248
+ } | undefined;
1249
+ } | undefined;
1250
+ }>>;
275
1251
  }, "strip", z.ZodTypeAny, {
276
1252
  providers: Record<string, {
277
1253
  base_url: string;
@@ -287,7 +1263,7 @@ export declare const ConfigSchema: z.ZodObject<{
287
1263
  default_temperature: number;
288
1264
  cache_ttl: number;
289
1265
  enable_failover: boolean;
290
- log_level: "debug" | "info" | "warn" | "error";
1266
+ log_level: "warn" | "debug" | "info" | "error";
291
1267
  default_provider?: string | undefined;
292
1268
  mcp_bridge?: {
293
1269
  enabled: boolean;
@@ -311,6 +1287,56 @@ export declare const ConfigSchema: z.ZodObject<{
311
1287
  inputPricePerMillion: number;
312
1288
  outputPricePerMillion: number;
313
1289
  }>> | undefined;
1290
+ guardrails?: {
1291
+ enabled: boolean;
1292
+ log_violations: boolean;
1293
+ log_modifications: boolean;
1294
+ fail_open: boolean;
1295
+ plugins?: {
1296
+ rate_limiter?: {
1297
+ enabled: boolean;
1298
+ priority: number;
1299
+ requests_per_minute: number;
1300
+ requests_per_hour: number;
1301
+ per_provider: boolean;
1302
+ burst_allowance: number;
1303
+ } | undefined;
1304
+ token_limiter?: {
1305
+ enabled: boolean;
1306
+ priority: number;
1307
+ max_input_tokens: number;
1308
+ warn_at_percentage: number;
1309
+ max_output_tokens?: number | undefined;
1310
+ } | undefined;
1311
+ pattern_blocker?: {
1312
+ enabled: boolean;
1313
+ priority: number;
1314
+ blocked_patterns: string[];
1315
+ blocked_patterns_regex: string[];
1316
+ case_sensitive: boolean;
1317
+ action_on_match: "block" | "warn" | "redact";
1318
+ } | undefined;
1319
+ pii_redactor?: {
1320
+ enabled: boolean;
1321
+ priority: number;
1322
+ detect_emails: boolean;
1323
+ detect_phones: boolean;
1324
+ detect_ssn: boolean;
1325
+ detect_api_keys: boolean;
1326
+ detect_credit_cards: boolean;
1327
+ detect_ip_addresses: boolean;
1328
+ custom_patterns: {
1329
+ name: string;
1330
+ pattern: string;
1331
+ placeholder: string;
1332
+ }[];
1333
+ allowlist: string[];
1334
+ allowlist_domains: string[];
1335
+ restore_on_response: boolean;
1336
+ log_detections: boolean;
1337
+ } | undefined;
1338
+ } | undefined;
1339
+ } | undefined;
314
1340
  }, {
315
1341
  providers: Record<string, {
316
1342
  base_url: string;
@@ -327,7 +1353,7 @@ export declare const ConfigSchema: z.ZodObject<{
327
1353
  default_temperature?: number | undefined;
328
1354
  cache_ttl?: number | undefined;
329
1355
  enable_failover?: boolean | undefined;
330
- log_level?: "debug" | "info" | "warn" | "error" | undefined;
1356
+ log_level?: "warn" | "debug" | "info" | "error" | undefined;
331
1357
  mcp_bridge?: {
332
1358
  enabled?: boolean | undefined;
333
1359
  approval_mode?: "never" | "always" | "trusted" | undefined;
@@ -350,12 +1376,68 @@ export declare const ConfigSchema: z.ZodObject<{
350
1376
  inputPricePerMillion: number;
351
1377
  outputPricePerMillion: number;
352
1378
  }>> | undefined;
1379
+ guardrails?: {
1380
+ enabled?: boolean | undefined;
1381
+ log_violations?: boolean | undefined;
1382
+ log_modifications?: boolean | undefined;
1383
+ fail_open?: boolean | undefined;
1384
+ plugins?: {
1385
+ rate_limiter?: {
1386
+ enabled?: boolean | undefined;
1387
+ priority?: number | undefined;
1388
+ requests_per_minute?: number | undefined;
1389
+ requests_per_hour?: number | undefined;
1390
+ per_provider?: boolean | undefined;
1391
+ burst_allowance?: number | undefined;
1392
+ } | undefined;
1393
+ token_limiter?: {
1394
+ enabled?: boolean | undefined;
1395
+ priority?: number | undefined;
1396
+ max_input_tokens?: number | undefined;
1397
+ max_output_tokens?: number | undefined;
1398
+ warn_at_percentage?: number | undefined;
1399
+ } | undefined;
1400
+ pattern_blocker?: {
1401
+ enabled?: boolean | undefined;
1402
+ priority?: number | undefined;
1403
+ blocked_patterns?: string[] | undefined;
1404
+ blocked_patterns_regex?: string[] | undefined;
1405
+ case_sensitive?: boolean | undefined;
1406
+ action_on_match?: "block" | "warn" | "redact" | undefined;
1407
+ } | undefined;
1408
+ pii_redactor?: {
1409
+ enabled?: boolean | undefined;
1410
+ priority?: number | undefined;
1411
+ detect_emails?: boolean | undefined;
1412
+ detect_phones?: boolean | undefined;
1413
+ detect_ssn?: boolean | undefined;
1414
+ detect_api_keys?: boolean | undefined;
1415
+ detect_credit_cards?: boolean | undefined;
1416
+ detect_ip_addresses?: boolean | undefined;
1417
+ custom_patterns?: {
1418
+ name: string;
1419
+ pattern: string;
1420
+ placeholder: string;
1421
+ }[] | undefined;
1422
+ allowlist?: string[] | undefined;
1423
+ allowlist_domains?: string[] | undefined;
1424
+ restore_on_response?: boolean | undefined;
1425
+ log_detections?: boolean | undefined;
1426
+ } | undefined;
1427
+ } | undefined;
1428
+ } | undefined;
353
1429
  }>;
354
1430
  export type ProviderConfig = z.infer<typeof ProviderConfigSchema>;
355
1431
  export type MCPServerConfig = z.infer<typeof MCPServerConfigSchema>;
356
1432
  export type MCPBridgeConfig = z.infer<typeof MCPBridgeConfigSchema>;
357
1433
  export type ModelPricing = z.infer<typeof ModelPricingSchema>;
358
1434
  export type PricingConfig = z.infer<typeof PricingConfigSchema>;
1435
+ export type RateLimiterConfig = z.infer<typeof RateLimiterConfigSchema>;
1436
+ export type TokenLimiterConfig = z.infer<typeof TokenLimiterConfigSchema>;
1437
+ export type PatternBlockerConfig = z.infer<typeof PatternBlockerConfigSchema>;
1438
+ export type PIIRedactorConfig = z.infer<typeof PIIRedactorConfigSchema>;
1439
+ export type GuardrailsPluginsConfig = z.infer<typeof GuardrailsPluginsConfigSchema>;
1440
+ export type GuardrailsConfig = z.infer<typeof GuardrailsConfigSchema>;
359
1441
  export type Config = z.infer<typeof ConfigSchema>;
360
1442
  export interface ConversationMessage {
361
1443
  role: 'system' | 'user' | 'assistant';