mcp-rubber-duck 1.8.0 → 1.9.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 (118) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +158 -1
  3. package/audit-ci.json +2 -1
  4. package/dist/config/config.d.ts +2 -0
  5. package/dist/config/config.d.ts.map +1 -1
  6. package/dist/config/config.js +144 -1
  7. package/dist/config/config.js.map +1 -1
  8. package/dist/config/types.d.ts +1084 -2
  9. package/dist/config/types.d.ts.map +1 -1
  10. package/dist/config/types.js +59 -0
  11. package/dist/config/types.js.map +1 -1
  12. package/dist/guardrails/context.d.ts +10 -0
  13. package/dist/guardrails/context.d.ts.map +1 -0
  14. package/dist/guardrails/context.js +35 -0
  15. package/dist/guardrails/context.js.map +1 -0
  16. package/dist/guardrails/errors.d.ts +26 -0
  17. package/dist/guardrails/errors.d.ts.map +1 -0
  18. package/dist/guardrails/errors.js +42 -0
  19. package/dist/guardrails/errors.js.map +1 -0
  20. package/dist/guardrails/index.d.ts +6 -0
  21. package/dist/guardrails/index.d.ts.map +1 -0
  22. package/dist/guardrails/index.js +11 -0
  23. package/dist/guardrails/index.js.map +1 -0
  24. package/dist/guardrails/plugins/base-plugin.d.ts +35 -0
  25. package/dist/guardrails/plugins/base-plugin.d.ts.map +1 -0
  26. package/dist/guardrails/plugins/base-plugin.js +70 -0
  27. package/dist/guardrails/plugins/base-plugin.js.map +1 -0
  28. package/dist/guardrails/plugins/index.d.ts +6 -0
  29. package/dist/guardrails/plugins/index.d.ts.map +1 -0
  30. package/dist/guardrails/plugins/index.js +6 -0
  31. package/dist/guardrails/plugins/index.js.map +1 -0
  32. package/dist/guardrails/plugins/pattern-blocker.d.ts +27 -0
  33. package/dist/guardrails/plugins/pattern-blocker.d.ts.map +1 -0
  34. package/dist/guardrails/plugins/pattern-blocker.js +140 -0
  35. package/dist/guardrails/plugins/pattern-blocker.js.map +1 -0
  36. package/dist/guardrails/plugins/pii-redactor/detectors.d.ts +40 -0
  37. package/dist/guardrails/plugins/pii-redactor/detectors.d.ts.map +1 -0
  38. package/dist/guardrails/plugins/pii-redactor/detectors.js +134 -0
  39. package/dist/guardrails/plugins/pii-redactor/detectors.js.map +1 -0
  40. package/dist/guardrails/plugins/pii-redactor/index.d.ts +28 -0
  41. package/dist/guardrails/plugins/pii-redactor/index.d.ts.map +1 -0
  42. package/dist/guardrails/plugins/pii-redactor/index.js +157 -0
  43. package/dist/guardrails/plugins/pii-redactor/index.js.map +1 -0
  44. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.d.ts +33 -0
  45. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.d.ts.map +1 -0
  46. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.js +70 -0
  47. package/dist/guardrails/plugins/pii-redactor/pseudonymizer.js.map +1 -0
  48. package/dist/guardrails/plugins/rate-limiter.d.ts +28 -0
  49. package/dist/guardrails/plugins/rate-limiter.d.ts.map +1 -0
  50. package/dist/guardrails/plugins/rate-limiter.js +91 -0
  51. package/dist/guardrails/plugins/rate-limiter.js.map +1 -0
  52. package/dist/guardrails/plugins/token-limiter.d.ts +30 -0
  53. package/dist/guardrails/plugins/token-limiter.d.ts.map +1 -0
  54. package/dist/guardrails/plugins/token-limiter.js +98 -0
  55. package/dist/guardrails/plugins/token-limiter.js.map +1 -0
  56. package/dist/guardrails/service.d.ts +38 -0
  57. package/dist/guardrails/service.d.ts.map +1 -0
  58. package/dist/guardrails/service.js +183 -0
  59. package/dist/guardrails/service.js.map +1 -0
  60. package/dist/guardrails/types.d.ts +96 -0
  61. package/dist/guardrails/types.d.ts.map +1 -0
  62. package/dist/guardrails/types.js +2 -0
  63. package/dist/guardrails/types.js.map +1 -0
  64. package/dist/providers/duck-provider-enhanced.d.ts +2 -1
  65. package/dist/providers/duck-provider-enhanced.d.ts.map +1 -1
  66. package/dist/providers/duck-provider-enhanced.js +55 -6
  67. package/dist/providers/duck-provider-enhanced.js.map +1 -1
  68. package/dist/providers/enhanced-manager.d.ts +2 -1
  69. package/dist/providers/enhanced-manager.d.ts.map +1 -1
  70. package/dist/providers/enhanced-manager.js +3 -3
  71. package/dist/providers/enhanced-manager.js.map +1 -1
  72. package/dist/providers/manager.d.ts +3 -1
  73. package/dist/providers/manager.d.ts.map +1 -1
  74. package/dist/providers/manager.js +4 -2
  75. package/dist/providers/manager.js.map +1 -1
  76. package/dist/providers/provider.d.ts +3 -1
  77. package/dist/providers/provider.d.ts.map +1 -1
  78. package/dist/providers/provider.js +43 -3
  79. package/dist/providers/provider.js.map +1 -1
  80. package/dist/server.d.ts +1 -0
  81. package/dist/server.d.ts.map +1 -1
  82. package/dist/server.js +28 -6
  83. package/dist/server.js.map +1 -1
  84. package/dist/services/function-bridge.d.ts +3 -1
  85. package/dist/services/function-bridge.d.ts.map +1 -1
  86. package/dist/services/function-bridge.js +40 -1
  87. package/dist/services/function-bridge.js.map +1 -1
  88. package/package.json +1 -1
  89. package/src/config/config.ts +187 -1
  90. package/src/config/types.ts +73 -0
  91. package/src/guardrails/context.ts +37 -0
  92. package/src/guardrails/errors.ts +46 -0
  93. package/src/guardrails/index.ts +20 -0
  94. package/src/guardrails/plugins/base-plugin.ts +103 -0
  95. package/src/guardrails/plugins/index.ts +5 -0
  96. package/src/guardrails/plugins/pattern-blocker.ts +190 -0
  97. package/src/guardrails/plugins/pii-redactor/detectors.ts +200 -0
  98. package/src/guardrails/plugins/pii-redactor/index.ts +203 -0
  99. package/src/guardrails/plugins/pii-redactor/pseudonymizer.ts +91 -0
  100. package/src/guardrails/plugins/rate-limiter.ts +142 -0
  101. package/src/guardrails/plugins/token-limiter.ts +155 -0
  102. package/src/guardrails/service.ts +209 -0
  103. package/src/guardrails/types.ts +120 -0
  104. package/src/providers/duck-provider-enhanced.ts +76 -7
  105. package/src/providers/enhanced-manager.ts +5 -3
  106. package/src/providers/manager.ts +6 -3
  107. package/src/providers/provider.ts +57 -6
  108. package/src/server.ts +32 -6
  109. package/src/services/function-bridge.ts +53 -2
  110. package/tests/guardrails/config.test.ts +267 -0
  111. package/tests/guardrails/errors.test.ts +109 -0
  112. package/tests/guardrails/plugins/pattern-blocker.test.ts +309 -0
  113. package/tests/guardrails/plugins/pii-redactor.test.ts +1004 -0
  114. package/tests/guardrails/plugins/rate-limiter.test.ts +310 -0
  115. package/tests/guardrails/plugins/token-limiter.test.ts +216 -0
  116. package/tests/guardrails/service.test.ts +911 -0
  117. package/tests/mcp-bridge.test.ts +248 -0
  118. package/tests/providers.test.ts +739 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # [1.9.0](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.8.0...v1.9.0) (2026-01-15)
2
+
3
+
4
+ ### Features
5
+
6
+ * add pluggable guardrails system for LLM request/response interception ([8e86d5b](https://github.com/nesquikm/mcp-rubber-duck/commit/8e86d5b8853cc95e6c5efe9e75af7d0ce2bb1ac0))
7
+ * implement max_output_tokens, fix modify action, add tests and docs ([27457d7](https://github.com/nesquikm/mcp-rubber-duck/commit/27457d79ab68377921996e0c0336cf7e84e0ea8b))
8
+
1
9
  # [1.8.0](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.7.0...v1.8.0) (2026-01-14)
2
10
 
3
11
 
package/README.md CHANGED
@@ -19,6 +19,7 @@ An MCP (Model Context Protocol) server that acts as a bridge to query multiple O
19
19
  - [Configuration](#configuration)
20
20
  - [Claude Desktop Configuration](#claude-desktop-configuration)
21
21
  - [MCP Bridge](#mcp-bridge---connect-to-other-mcp-servers)
22
+ - [Guardrails](#guardrails---safety--compliance-layer)
22
23
  - [Available Tools](#available-tools)
23
24
  - [Basic Tools](#basic-tools)
24
25
  - [Multi-Agent Tools](#multi-agent-consensus--debate-tools)
@@ -49,7 +50,8 @@ An MCP (Model Context Protocol) server that acts as a bridge to query multiple O
49
50
  - 📊 **Health Monitoring**: Real-time health checks for all providers
50
51
  - 💰 **Usage Tracking**: Track requests, tokens, and estimated costs per provider
51
52
  - 🔗 **MCP Bridge**: Connect ducks to other MCP servers for extended functionality
52
- - 🛡️ **Granular Security**: Per-server approval controls with session-based approvals
53
+ - 🛡️ **Guardrails**: Pluggable safety layer with rate limiting, token limits, pattern blocking, and PII redaction
54
+ - 🔐 **Granular Security**: Per-server approval controls with session-based approvals
53
55
  - 🏷️ **Tool Annotations**: MCP-compliant hints for tool behavior (read-only, destructive, etc.)
54
56
  - 🎨 **Fun Duck Theme**: Rubber duck debugging with personality!
55
57
 
@@ -443,6 +445,161 @@ When using `always` mode, the system remembers your approvals:
443
445
 
444
446
  This eliminates approval fatigue while maintaining security!
445
447
 
448
+ ## Guardrails - Safety & Compliance Layer
449
+
450
+ Guardrails provide a pluggable safety and compliance layer that intercepts LLM requests and responses. Protect against rate abuse, limit token usage, block sensitive patterns, and automatically redact PII.
451
+
452
+ ### Quick Setup
453
+
454
+ ```bash
455
+ # Enable guardrails with PII protection
456
+ GUARDRAILS_ENABLED="true"
457
+ GUARDRAILS_PII_REDACTOR_ENABLED="true"
458
+ GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS="mycompany.com"
459
+ ```
460
+
461
+ ### Global Settings
462
+
463
+ | Variable | Type | Default | Description |
464
+ |----------|------|---------|-------------|
465
+ | `GUARDRAILS_ENABLED` | boolean | `false` | Master switch for guardrails system |
466
+ | `GUARDRAILS_LOG_VIOLATIONS` | boolean | `false` | Log when guardrails detect violations |
467
+ | `GUARDRAILS_LOG_MODIFICATIONS` | boolean | `false` | Log when guardrails modify content |
468
+ | `GUARDRAILS_FAIL_OPEN` | boolean | `false` | If `true`, allow requests when guardrails error; if `false`, block on error |
469
+
470
+ ### Rate Limiter
471
+
472
+ Prevent API abuse by limiting request frequency.
473
+
474
+ ```bash
475
+ GUARDRAILS_RATE_LIMITER_ENABLED="true"
476
+ GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE="60"
477
+ GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR="500"
478
+ GUARDRAILS_RATE_LIMITER_PER_PROVIDER="true" # Track limits per provider
479
+ GUARDRAILS_RATE_LIMITER_BURST_ALLOWANCE="5" # Extra requests for short bursts
480
+ ```
481
+
482
+ | Variable | Type | Default | Description |
483
+ |----------|------|---------|-------------|
484
+ | `GUARDRAILS_RATE_LIMITER_ENABLED` | boolean | `false` | Enable rate limiting |
485
+ | `GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE` | number | `60` | Max requests per minute |
486
+ | `GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR` | number | `1000` | Max requests per hour |
487
+ | `GUARDRAILS_RATE_LIMITER_PER_PROVIDER` | boolean | `false` | Track limits per provider vs global |
488
+ | `GUARDRAILS_RATE_LIMITER_BURST_ALLOWANCE` | number | `5` | Extra requests allowed for bursts |
489
+
490
+ ### Token Limiter
491
+
492
+ Control token usage for cost management.
493
+
494
+ ```bash
495
+ GUARDRAILS_TOKEN_LIMITER_ENABLED="true"
496
+ GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS="100000"
497
+ GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS="16000"
498
+ GUARDRAILS_TOKEN_LIMITER_WARN_AT_PERCENTAGE="80"
499
+ ```
500
+
501
+ | Variable | Type | Default | Description |
502
+ |----------|------|---------|-------------|
503
+ | `GUARDRAILS_TOKEN_LIMITER_ENABLED` | boolean | `false` | Enable token limiting |
504
+ | `GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS` | number | `8192` | Max tokens in input prompt |
505
+ | `GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS` | number | - | Max tokens in response |
506
+ | `GUARDRAILS_TOKEN_LIMITER_WARN_AT_PERCENTAGE` | number | `80` | Warn when usage hits this % |
507
+
508
+ ### Pattern Blocker
509
+
510
+ Block or redact sensitive patterns in requests.
511
+
512
+ ```bash
513
+ GUARDRAILS_PATTERN_BLOCKER_ENABLED="true"
514
+ GUARDRAILS_PATTERN_BLOCKER_PATTERNS="confidential,internal-only"
515
+ GUARDRAILS_PATTERN_BLOCKER_PATTERNS_REGEX="secret-\\d{4}"
516
+ GUARDRAILS_PATTERN_BLOCKER_CASE_SENSITIVE="false"
517
+ GUARDRAILS_PATTERN_BLOCKER_ACTION="block" # block, warn, or redact
518
+ ```
519
+
520
+ | Variable | Type | Default | Description |
521
+ |----------|------|---------|-------------|
522
+ | `GUARDRAILS_PATTERN_BLOCKER_ENABLED` | boolean | `false` | Enable pattern blocking |
523
+ | `GUARDRAILS_PATTERN_BLOCKER_PATTERNS` | string | - | Comma-separated literal patterns |
524
+ | `GUARDRAILS_PATTERN_BLOCKER_PATTERNS_REGEX` | string | - | Comma-separated regex patterns |
525
+ | `GUARDRAILS_PATTERN_BLOCKER_CASE_SENSITIVE` | boolean | `false` | Case-sensitive matching |
526
+ | `GUARDRAILS_PATTERN_BLOCKER_ACTION` | string | `block` | Action: `block`, `warn`, or `redact` |
527
+
528
+ ### PII Redactor
529
+
530
+ Automatically detect and redact personally identifiable information.
531
+
532
+ ```bash
533
+ GUARDRAILS_PII_REDACTOR_ENABLED="true"
534
+ GUARDRAILS_PII_REDACTOR_DETECT_EMAILS="true"
535
+ GUARDRAILS_PII_REDACTOR_DETECT_PHONES="true"
536
+ GUARDRAILS_PII_REDACTOR_DETECT_SSN="true"
537
+ GUARDRAILS_PII_REDACTOR_DETECT_API_KEYS="true"
538
+ GUARDRAILS_PII_REDACTOR_DETECT_CREDIT_CARDS="true"
539
+ GUARDRAILS_PII_REDACTOR_DETECT_IP_ADDRESSES="true"
540
+ GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS="gmail.com,company.com"
541
+ GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE="true"
542
+ ```
543
+
544
+ | Variable | Type | Default | Description |
545
+ |----------|------|---------|-------------|
546
+ | `GUARDRAILS_PII_REDACTOR_ENABLED` | boolean | `false` | Enable PII detection/redaction |
547
+ | `GUARDRAILS_PII_REDACTOR_DETECT_EMAILS` | boolean | `true` | Detect email addresses |
548
+ | `GUARDRAILS_PII_REDACTOR_DETECT_PHONES` | boolean | `true` | Detect phone numbers |
549
+ | `GUARDRAILS_PII_REDACTOR_DETECT_SSN` | boolean | `true` | Detect US Social Security Numbers |
550
+ | `GUARDRAILS_PII_REDACTOR_DETECT_API_KEYS` | boolean | `true` | Detect API keys (sk-*, gsk_*, etc.) |
551
+ | `GUARDRAILS_PII_REDACTOR_DETECT_CREDIT_CARDS` | boolean | `true` | Detect credit card numbers |
552
+ | `GUARDRAILS_PII_REDACTOR_DETECT_IP_ADDRESSES` | boolean | `false` | Detect IPv4 addresses |
553
+ | `GUARDRAILS_PII_REDACTOR_ALLOWLIST` | string | - | Comma-separated exact values to skip |
554
+ | `GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS` | string | - | Comma-separated email domains to skip |
555
+ | `GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE` | boolean | `false` | Restore original PII in responses |
556
+ | `GUARDRAILS_PII_REDACTOR_LOG_DETECTIONS` | boolean | `false` | Log when PII is detected |
557
+
558
+ **How PII Redaction Works:**
559
+ 1. User sends: `"Contact john@secret.com for details"`
560
+ 2. Pre-request: Redacted to `"Contact [EMAIL_1] for details"`
561
+ 3. LLM processes the redacted text
562
+ 4. Post-response: If `restore_on_response=true`, `[EMAIL_1]` → `john@secret.com`
563
+
564
+ ### Example: Full Production Config
565
+
566
+ ```bash
567
+ # Enable guardrails
568
+ GUARDRAILS_ENABLED="true"
569
+ GUARDRAILS_LOG_VIOLATIONS="true"
570
+
571
+ # Rate limiting
572
+ GUARDRAILS_RATE_LIMITER_ENABLED="true"
573
+ GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE="60"
574
+ GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR="500"
575
+
576
+ # Token limits
577
+ GUARDRAILS_TOKEN_LIMITER_ENABLED="true"
578
+ GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS="100000"
579
+ GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS="16000"
580
+
581
+ # Block sensitive patterns
582
+ GUARDRAILS_PATTERN_BLOCKER_ENABLED="true"
583
+ GUARDRAILS_PATTERN_BLOCKER_PATTERNS="confidential,internal-only"
584
+ GUARDRAILS_PATTERN_BLOCKER_ACTION="warn"
585
+
586
+ # PII protection
587
+ GUARDRAILS_PII_REDACTOR_ENABLED="true"
588
+ GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS="gmail.com,company.com"
589
+ GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE="true"
590
+ ```
591
+
592
+ ### Guardrail Phases
593
+
594
+ Guardrails intercept at multiple points in the request lifecycle:
595
+
596
+ | Phase | Description | Plugins |
597
+ |-------|-------------|---------|
598
+ | `pre_request` | Before sending to LLM | Rate limiter, Token limiter, Pattern blocker, PII redactor |
599
+ | `post_response` | After receiving from LLM | Token limiter, PII redactor (restore) |
600
+ | `pre_tool_input` | Before MCP tool execution | PII redactor |
601
+ | `post_tool_output` | After MCP tool returns | PII redactor (restore) |
602
+
446
603
  ## Available Tools
447
604
 
448
605
  ### Basic Tools
package/audit-ci.json CHANGED
@@ -5,6 +5,7 @@
5
5
  "critical": true,
6
6
  "report-type": "summary",
7
7
  "allowlist": [
8
- "GHSA-5j98-mcp5-4vw2"
8
+ "GHSA-5j98-mcp5-4vw2",
9
+ "GHSA-73rr-hh4g-fpgx"
9
10
  ]
10
11
  }
@@ -12,6 +12,8 @@ export declare class ConfigManager {
12
12
  private getTrustedToolsByServerFromEnv;
13
13
  private getCustomProvidersFromEnv;
14
14
  private getMCPServersFromEnv;
15
+ private getGuardrailsConfig;
16
+ private getGuardrailsPluginsFromEnv;
15
17
  getConfig(): Config;
16
18
  getProvider(name: string): {
17
19
  base_url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAkE,MAAM,YAAY,CAAC;AAKpG,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,CAAC,EAAE,MAAM;IAK/B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,8BAA8B;IA2BtC,OAAO,CAAC,yBAAyB;IAyCjC,OAAO,CAAC,oBAAoB;IAkE5B,SAAS,IAAI,MAAM;IAInB,WAAW,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;IAIxB,kBAAkB;;;;;;;;;;;IAOlB,eAAe;;;;;;;;;;;IAIf,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;CAGtC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EAMP,MAAM,YAAY,CAAC;AAKpB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,CAAC,EAAE,MAAM;IAK/B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,8BAA8B;IA2BtC,OAAO,CAAC,yBAAyB;IAyCjC,OAAO,CAAC,oBAAoB;IAkE5B,OAAO,CAAC,mBAAmB;IA4C3B,OAAO,CAAC,2BAA2B;IAoInC,SAAS,IAAI,MAAM;IAInB,WAAW,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;IAIxB,kBAAkB;;;;;;;;;;;IAOlB,eAAe;;;;;;;;;;;IAIf,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;CAGtC"}
@@ -1,7 +1,7 @@
1
1
  import { readFileSync, existsSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import * as dotenv from 'dotenv';
4
- import { ConfigSchema } from './types.js';
4
+ import { ConfigSchema, } from './types.js';
5
5
  import { logger } from '../utils/logger.js';
6
6
  dotenv.config();
7
7
  export class ConfigManager {
@@ -82,6 +82,8 @@ export class ConfigManager {
82
82
  }
83
83
  // Apply MCP bridge configuration from environment
84
84
  merged.mcp_bridge = this.getMCPBridgeConfig(merged.mcp_bridge);
85
+ // Apply guardrails configuration from environment
86
+ merged.guardrails = this.getGuardrailsConfig(merged.guardrails);
85
87
  return merged;
86
88
  }
87
89
  getDefaultProviders() {
@@ -279,6 +281,147 @@ export class ConfigManager {
279
281
  });
280
282
  return servers;
281
283
  }
284
+ getGuardrailsConfig(existingConfig = {}) {
285
+ // Don't override if guardrails is explicitly disabled
286
+ if (existingConfig?.enabled === false) {
287
+ return existingConfig;
288
+ }
289
+ const guardrailsConfig = { ...existingConfig };
290
+ // Enable guardrails if environment variable is set
291
+ if (process.env.GUARDRAILS_ENABLED !== undefined) {
292
+ guardrailsConfig.enabled = process.env.GUARDRAILS_ENABLED === 'true';
293
+ }
294
+ // Global guardrails settings
295
+ if (process.env.GUARDRAILS_LOG_VIOLATIONS !== undefined) {
296
+ guardrailsConfig.log_violations = process.env.GUARDRAILS_LOG_VIOLATIONS === 'true';
297
+ }
298
+ if (process.env.GUARDRAILS_LOG_MODIFICATIONS !== undefined) {
299
+ guardrailsConfig.log_modifications = process.env.GUARDRAILS_LOG_MODIFICATIONS === 'true';
300
+ }
301
+ if (process.env.GUARDRAILS_FAIL_OPEN !== undefined) {
302
+ guardrailsConfig.fail_open = process.env.GUARDRAILS_FAIL_OPEN === 'true';
303
+ }
304
+ // Initialize plugins object if any plugin env vars are set
305
+ const plugins = this.getGuardrailsPluginsFromEnv(guardrailsConfig.plugins || {});
306
+ if (Object.keys(plugins).length > 0) {
307
+ guardrailsConfig.plugins = plugins;
308
+ // Auto-enable guardrails if any plugin is enabled
309
+ if (!guardrailsConfig.enabled) {
310
+ const anyEnabled = Object.values(plugins).some((p) => p && typeof p === 'object' && 'enabled' in p && p.enabled === true);
311
+ if (anyEnabled) {
312
+ guardrailsConfig.enabled = true;
313
+ }
314
+ }
315
+ }
316
+ return guardrailsConfig.enabled ? guardrailsConfig : undefined;
317
+ }
318
+ getGuardrailsPluginsFromEnv(existingPlugins) {
319
+ const plugins = { ...existingPlugins };
320
+ // Rate Limiter
321
+ if (process.env.GUARDRAILS_RATE_LIMITER_ENABLED !== undefined ||
322
+ existingPlugins.rate_limiter) {
323
+ plugins.rate_limiter = {
324
+ ...existingPlugins.rate_limiter,
325
+ ...(process.env.GUARDRAILS_RATE_LIMITER_ENABLED !== undefined && {
326
+ enabled: process.env.GUARDRAILS_RATE_LIMITER_ENABLED === 'true',
327
+ }),
328
+ ...(process.env.GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE && {
329
+ requests_per_minute: parseInt(process.env.GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE),
330
+ }),
331
+ ...(process.env.GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR && {
332
+ requests_per_hour: parseInt(process.env.GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR),
333
+ }),
334
+ ...(process.env.GUARDRAILS_RATE_LIMITER_PER_PROVIDER !== undefined && {
335
+ per_provider: process.env.GUARDRAILS_RATE_LIMITER_PER_PROVIDER === 'true',
336
+ }),
337
+ ...(process.env.GUARDRAILS_RATE_LIMITER_BURST_ALLOWANCE && {
338
+ burst_allowance: parseInt(process.env.GUARDRAILS_RATE_LIMITER_BURST_ALLOWANCE),
339
+ }),
340
+ };
341
+ }
342
+ // Token Limiter
343
+ if (process.env.GUARDRAILS_TOKEN_LIMITER_ENABLED !== undefined ||
344
+ existingPlugins.token_limiter) {
345
+ plugins.token_limiter = {
346
+ ...existingPlugins.token_limiter,
347
+ ...(process.env.GUARDRAILS_TOKEN_LIMITER_ENABLED !== undefined && {
348
+ enabled: process.env.GUARDRAILS_TOKEN_LIMITER_ENABLED === 'true',
349
+ }),
350
+ ...(process.env.GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS && {
351
+ max_input_tokens: parseInt(process.env.GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS),
352
+ }),
353
+ ...(process.env.GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS && {
354
+ max_output_tokens: parseInt(process.env.GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS),
355
+ }),
356
+ ...(process.env.GUARDRAILS_TOKEN_LIMITER_WARN_AT_PERCENTAGE && {
357
+ warn_at_percentage: parseInt(process.env.GUARDRAILS_TOKEN_LIMITER_WARN_AT_PERCENTAGE),
358
+ }),
359
+ };
360
+ }
361
+ // Pattern Blocker
362
+ if (process.env.GUARDRAILS_PATTERN_BLOCKER_ENABLED !== undefined ||
363
+ existingPlugins.pattern_blocker) {
364
+ plugins.pattern_blocker = {
365
+ ...existingPlugins.pattern_blocker,
366
+ ...(process.env.GUARDRAILS_PATTERN_BLOCKER_ENABLED !== undefined && {
367
+ enabled: process.env.GUARDRAILS_PATTERN_BLOCKER_ENABLED === 'true',
368
+ }),
369
+ ...(process.env.GUARDRAILS_PATTERN_BLOCKER_PATTERNS && {
370
+ blocked_patterns: process.env.GUARDRAILS_PATTERN_BLOCKER_PATTERNS.split(',').map((p) => p.trim()),
371
+ }),
372
+ ...(process.env.GUARDRAILS_PATTERN_BLOCKER_PATTERNS_REGEX && {
373
+ blocked_patterns_regex: process.env.GUARDRAILS_PATTERN_BLOCKER_PATTERNS_REGEX.split(',').map((p) => p.trim()),
374
+ }),
375
+ ...(process.env.GUARDRAILS_PATTERN_BLOCKER_CASE_SENSITIVE !== undefined && {
376
+ case_sensitive: process.env.GUARDRAILS_PATTERN_BLOCKER_CASE_SENSITIVE === 'true',
377
+ }),
378
+ ...(process.env.GUARDRAILS_PATTERN_BLOCKER_ACTION && {
379
+ action_on_match: process.env.GUARDRAILS_PATTERN_BLOCKER_ACTION,
380
+ }),
381
+ };
382
+ }
383
+ // PII Redactor
384
+ if (process.env.GUARDRAILS_PII_REDACTOR_ENABLED !== undefined ||
385
+ existingPlugins.pii_redactor) {
386
+ plugins.pii_redactor = {
387
+ ...existingPlugins.pii_redactor,
388
+ ...(process.env.GUARDRAILS_PII_REDACTOR_ENABLED !== undefined && {
389
+ enabled: process.env.GUARDRAILS_PII_REDACTOR_ENABLED === 'true',
390
+ }),
391
+ ...(process.env.GUARDRAILS_PII_REDACTOR_DETECT_EMAILS !== undefined && {
392
+ detect_emails: process.env.GUARDRAILS_PII_REDACTOR_DETECT_EMAILS === 'true',
393
+ }),
394
+ ...(process.env.GUARDRAILS_PII_REDACTOR_DETECT_PHONES !== undefined && {
395
+ detect_phones: process.env.GUARDRAILS_PII_REDACTOR_DETECT_PHONES === 'true',
396
+ }),
397
+ ...(process.env.GUARDRAILS_PII_REDACTOR_DETECT_SSN !== undefined && {
398
+ detect_ssn: process.env.GUARDRAILS_PII_REDACTOR_DETECT_SSN === 'true',
399
+ }),
400
+ ...(process.env.GUARDRAILS_PII_REDACTOR_DETECT_API_KEYS !== undefined && {
401
+ detect_api_keys: process.env.GUARDRAILS_PII_REDACTOR_DETECT_API_KEYS === 'true',
402
+ }),
403
+ ...(process.env.GUARDRAILS_PII_REDACTOR_DETECT_CREDIT_CARDS !== undefined && {
404
+ detect_credit_cards: process.env.GUARDRAILS_PII_REDACTOR_DETECT_CREDIT_CARDS === 'true',
405
+ }),
406
+ ...(process.env.GUARDRAILS_PII_REDACTOR_DETECT_IP_ADDRESSES !== undefined && {
407
+ detect_ip_addresses: process.env.GUARDRAILS_PII_REDACTOR_DETECT_IP_ADDRESSES === 'true',
408
+ }),
409
+ ...(process.env.GUARDRAILS_PII_REDACTOR_ALLOWLIST && {
410
+ allowlist: process.env.GUARDRAILS_PII_REDACTOR_ALLOWLIST.split(',').map((a) => a.trim()),
411
+ }),
412
+ ...(process.env.GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS && {
413
+ allowlist_domains: process.env.GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS.split(',').map((d) => d.trim()),
414
+ }),
415
+ ...(process.env.GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE !== undefined && {
416
+ restore_on_response: process.env.GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE === 'true',
417
+ }),
418
+ ...(process.env.GUARDRAILS_PII_REDACTOR_LOG_DETECTIONS !== undefined && {
419
+ log_detections: process.env.GUARDRAILS_PII_REDACTOR_LOG_DETECTIONS === 'true',
420
+ }),
421
+ };
422
+ }
423
+ return plugins;
424
+ }
282
425
  getConfig() {
283
426
  return this.config;
284
427
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}