mcp-rubber-duck 1.7.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.
- package/CHANGELOG.md +15 -0
- package/README.md +274 -2
- package/audit-ci.json +2 -1
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +144 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +1084 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +59 -0
- package/dist/config/types.js.map +1 -1
- package/dist/guardrails/context.d.ts +10 -0
- package/dist/guardrails/context.d.ts.map +1 -0
- package/dist/guardrails/context.js +35 -0
- package/dist/guardrails/context.js.map +1 -0
- package/dist/guardrails/errors.d.ts +26 -0
- package/dist/guardrails/errors.d.ts.map +1 -0
- package/dist/guardrails/errors.js +42 -0
- package/dist/guardrails/errors.js.map +1 -0
- package/dist/guardrails/index.d.ts +6 -0
- package/dist/guardrails/index.d.ts.map +1 -0
- package/dist/guardrails/index.js +11 -0
- package/dist/guardrails/index.js.map +1 -0
- package/dist/guardrails/plugins/base-plugin.d.ts +35 -0
- package/dist/guardrails/plugins/base-plugin.d.ts.map +1 -0
- package/dist/guardrails/plugins/base-plugin.js +70 -0
- package/dist/guardrails/plugins/base-plugin.js.map +1 -0
- package/dist/guardrails/plugins/index.d.ts +6 -0
- package/dist/guardrails/plugins/index.d.ts.map +1 -0
- package/dist/guardrails/plugins/index.js +6 -0
- package/dist/guardrails/plugins/index.js.map +1 -0
- package/dist/guardrails/plugins/pattern-blocker.d.ts +27 -0
- package/dist/guardrails/plugins/pattern-blocker.d.ts.map +1 -0
- package/dist/guardrails/plugins/pattern-blocker.js +140 -0
- package/dist/guardrails/plugins/pattern-blocker.js.map +1 -0
- package/dist/guardrails/plugins/pii-redactor/detectors.d.ts +40 -0
- package/dist/guardrails/plugins/pii-redactor/detectors.d.ts.map +1 -0
- package/dist/guardrails/plugins/pii-redactor/detectors.js +134 -0
- package/dist/guardrails/plugins/pii-redactor/detectors.js.map +1 -0
- package/dist/guardrails/plugins/pii-redactor/index.d.ts +28 -0
- package/dist/guardrails/plugins/pii-redactor/index.d.ts.map +1 -0
- package/dist/guardrails/plugins/pii-redactor/index.js +157 -0
- package/dist/guardrails/plugins/pii-redactor/index.js.map +1 -0
- package/dist/guardrails/plugins/pii-redactor/pseudonymizer.d.ts +33 -0
- package/dist/guardrails/plugins/pii-redactor/pseudonymizer.d.ts.map +1 -0
- package/dist/guardrails/plugins/pii-redactor/pseudonymizer.js +70 -0
- package/dist/guardrails/plugins/pii-redactor/pseudonymizer.js.map +1 -0
- package/dist/guardrails/plugins/rate-limiter.d.ts +28 -0
- package/dist/guardrails/plugins/rate-limiter.d.ts.map +1 -0
- package/dist/guardrails/plugins/rate-limiter.js +91 -0
- package/dist/guardrails/plugins/rate-limiter.js.map +1 -0
- package/dist/guardrails/plugins/token-limiter.d.ts +30 -0
- package/dist/guardrails/plugins/token-limiter.d.ts.map +1 -0
- package/dist/guardrails/plugins/token-limiter.js +98 -0
- package/dist/guardrails/plugins/token-limiter.js.map +1 -0
- package/dist/guardrails/service.d.ts +38 -0
- package/dist/guardrails/service.d.ts.map +1 -0
- package/dist/guardrails/service.js +183 -0
- package/dist/guardrails/service.js.map +1 -0
- package/dist/guardrails/types.d.ts +96 -0
- package/dist/guardrails/types.d.ts.map +1 -0
- package/dist/guardrails/types.js +2 -0
- package/dist/guardrails/types.js.map +1 -0
- package/dist/prompts/architecture.d.ts +6 -0
- package/dist/prompts/architecture.d.ts.map +1 -0
- package/dist/prompts/architecture.js +103 -0
- package/dist/prompts/architecture.js.map +1 -0
- package/dist/prompts/assumptions.d.ts +6 -0
- package/dist/prompts/assumptions.d.ts.map +1 -0
- package/dist/prompts/assumptions.js +72 -0
- package/dist/prompts/assumptions.js.map +1 -0
- package/dist/prompts/blindspots.d.ts +6 -0
- package/dist/prompts/blindspots.d.ts.map +1 -0
- package/dist/prompts/blindspots.js +71 -0
- package/dist/prompts/blindspots.js.map +1 -0
- package/dist/prompts/diverge-converge.d.ts +6 -0
- package/dist/prompts/diverge-converge.d.ts.map +1 -0
- package/dist/prompts/diverge-converge.js +85 -0
- package/dist/prompts/diverge-converge.js.map +1 -0
- package/dist/prompts/index.d.ts +22 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +57 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/perspectives.d.ts +7 -0
- package/dist/prompts/perspectives.d.ts.map +1 -0
- package/dist/prompts/perspectives.js +65 -0
- package/dist/prompts/perspectives.js.map +1 -0
- package/dist/prompts/red-team.d.ts +6 -0
- package/dist/prompts/red-team.d.ts.map +1 -0
- package/dist/prompts/red-team.js +83 -0
- package/dist/prompts/red-team.js.map +1 -0
- package/dist/prompts/reframe.d.ts +6 -0
- package/dist/prompts/reframe.d.ts.map +1 -0
- package/dist/prompts/reframe.js +71 -0
- package/dist/prompts/reframe.js.map +1 -0
- package/dist/prompts/tradeoffs.d.ts +6 -0
- package/dist/prompts/tradeoffs.d.ts.map +1 -0
- package/dist/prompts/tradeoffs.js +87 -0
- package/dist/prompts/tradeoffs.js.map +1 -0
- package/dist/prompts/types.d.ts +14 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +2 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/providers/duck-provider-enhanced.d.ts +2 -1
- package/dist/providers/duck-provider-enhanced.d.ts.map +1 -1
- package/dist/providers/duck-provider-enhanced.js +55 -6
- package/dist/providers/duck-provider-enhanced.js.map +1 -1
- package/dist/providers/enhanced-manager.d.ts +2 -1
- package/dist/providers/enhanced-manager.d.ts.map +1 -1
- package/dist/providers/enhanced-manager.js +3 -3
- package/dist/providers/enhanced-manager.js.map +1 -1
- package/dist/providers/manager.d.ts +3 -1
- package/dist/providers/manager.d.ts.map +1 -1
- package/dist/providers/manager.js +4 -2
- package/dist/providers/manager.js.map +1 -1
- package/dist/providers/provider.d.ts +3 -1
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/provider.js +43 -3
- package/dist/providers/provider.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +48 -7
- package/dist/server.js.map +1 -1
- package/dist/services/function-bridge.d.ts +3 -1
- package/dist/services/function-bridge.d.ts.map +1 -1
- package/dist/services/function-bridge.js +40 -1
- package/dist/services/function-bridge.js.map +1 -1
- package/package.json +1 -1
- package/src/config/config.ts +187 -1
- package/src/config/types.ts +73 -0
- package/src/guardrails/context.ts +37 -0
- package/src/guardrails/errors.ts +46 -0
- package/src/guardrails/index.ts +20 -0
- package/src/guardrails/plugins/base-plugin.ts +103 -0
- package/src/guardrails/plugins/index.ts +5 -0
- package/src/guardrails/plugins/pattern-blocker.ts +190 -0
- package/src/guardrails/plugins/pii-redactor/detectors.ts +200 -0
- package/src/guardrails/plugins/pii-redactor/index.ts +203 -0
- package/src/guardrails/plugins/pii-redactor/pseudonymizer.ts +91 -0
- package/src/guardrails/plugins/rate-limiter.ts +142 -0
- package/src/guardrails/plugins/token-limiter.ts +155 -0
- package/src/guardrails/service.ts +209 -0
- package/src/guardrails/types.ts +120 -0
- package/src/prompts/architecture.ts +111 -0
- package/src/prompts/assumptions.ts +80 -0
- package/src/prompts/blindspots.ts +79 -0
- package/src/prompts/diverge-converge.ts +92 -0
- package/src/prompts/index.ts +63 -0
- package/src/prompts/perspectives.ts +73 -0
- package/src/prompts/red-team.ts +91 -0
- package/src/prompts/reframe.ts +78 -0
- package/src/prompts/tradeoffs.ts +95 -0
- package/src/prompts/types.ts +14 -0
- package/src/providers/duck-provider-enhanced.ts +76 -7
- package/src/providers/enhanced-manager.ts +5 -3
- package/src/providers/manager.ts +6 -3
- package/src/providers/provider.ts +57 -6
- package/src/server.ts +55 -6
- package/src/services/function-bridge.ts +53 -2
- package/tests/guardrails/config.test.ts +267 -0
- package/tests/guardrails/errors.test.ts +109 -0
- package/tests/guardrails/plugins/pattern-blocker.test.ts +309 -0
- package/tests/guardrails/plugins/pii-redactor.test.ts +1004 -0
- package/tests/guardrails/plugins/rate-limiter.test.ts +310 -0
- package/tests/guardrails/plugins/token-limiter.test.ts +216 -0
- package/tests/guardrails/service.test.ts +911 -0
- package/tests/mcp-bridge.test.ts +248 -0
- package/tests/prompts.test.ts +314 -0
- package/tests/providers.test.ts +739 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
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
|
+
|
|
9
|
+
# [1.8.0](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.7.0...v1.8.0) (2026-01-14)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* add MCP prompts capability with 8 multi-LLM focused templates ([e62bfc1](https://github.com/nesquikm/mcp-rubber-duck/commit/e62bfc10dc3302ef8ea254684fb2bcaec1ac7fdd)), closes [#23](https://github.com/nesquikm/mcp-rubber-duck/issues/23)
|
|
15
|
+
|
|
1
16
|
# [1.7.0](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.6.1...v1.7.0) (2026-01-13)
|
|
2
17
|
|
|
3
18
|
|
package/README.md
CHANGED
|
@@ -19,10 +19,14 @@ 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)
|
|
25
26
|
- [MCP Bridge Tools](#mcp-bridge-tools)
|
|
27
|
+
- [Available Prompts](#available-prompts)
|
|
28
|
+
- [Known Limitations (Claude Code)](#known-limitations-claude-code)
|
|
29
|
+
- [Recommended: Use Prompts as Templates](#recommended-use-prompts-as-templates)
|
|
26
30
|
- [Usage Examples](#usage-examples)
|
|
27
31
|
- [Provider-Specific Setup](#provider-specific-setup)
|
|
28
32
|
- [Docker Support](#docker-support)
|
|
@@ -40,12 +44,15 @@ An MCP (Model Context Protocol) server that acts as a bridge to query multiple O
|
|
|
40
44
|
- ⚖️ **LLM-as-Judge**: Have ducks evaluate and rank each other's responses
|
|
41
45
|
- 🔄 **Iterative Refinement**: Two ducks collaboratively improve responses
|
|
42
46
|
- 🎓 **Structured Debates**: Oxford, Socratic, and adversarial debate formats
|
|
47
|
+
- 📝 **MCP Prompts**: 8 reusable prompt templates for multi-LLM workflows (via `/` commands)
|
|
43
48
|
- 💾 **Response Caching**: Avoid duplicate API calls with intelligent caching
|
|
44
49
|
- 🔁 **Automatic Failover**: Falls back to other providers if primary fails
|
|
45
50
|
- 📊 **Health Monitoring**: Real-time health checks for all providers
|
|
46
51
|
- 💰 **Usage Tracking**: Track requests, tokens, and estimated costs per provider
|
|
47
52
|
- 🔗 **MCP Bridge**: Connect ducks to other MCP servers for extended functionality
|
|
48
|
-
- 🛡️ **
|
|
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
|
|
55
|
+
- 🏷️ **Tool Annotations**: MCP-compliant hints for tool behavior (read-only, destructive, etc.)
|
|
49
56
|
- 🎨 **Fun Duck Theme**: Rubber duck debugging with personality!
|
|
50
57
|
|
|
51
58
|
## Supported Providers
|
|
@@ -288,7 +295,7 @@ Use the compare_ducks tool with prompt: "Explain async/await in JavaScript"
|
|
|
288
295
|
|
|
289
296
|
#### Test Specific Models
|
|
290
297
|
```
|
|
291
|
-
Use the ask_duck tool with prompt: "Hello", provider: "openai", model: "gpt-
|
|
298
|
+
Use the ask_duck tool with prompt: "Hello", provider: "openai", model: "gpt-4o"
|
|
292
299
|
```
|
|
293
300
|
|
|
294
301
|
### Troubleshooting Claude Desktop Setup
|
|
@@ -438,6 +445,161 @@ When using `always` mode, the system remembers your approvals:
|
|
|
438
445
|
|
|
439
446
|
This eliminates approval fatigue while maintaining security!
|
|
440
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
|
+
|
|
441
603
|
## Available Tools
|
|
442
604
|
|
|
443
605
|
### Basic Tools
|
|
@@ -621,6 +783,102 @@ Approve or deny a duck's MCP tool request.
|
|
|
621
783
|
}
|
|
622
784
|
```
|
|
623
785
|
|
|
786
|
+
## Available Prompts
|
|
787
|
+
|
|
788
|
+
MCP Prompts are reusable templates that help you structure questions for multi-LLM analysis. Access them via `/` commands in Claude Desktop or other MCP clients.
|
|
789
|
+
|
|
790
|
+
**Key Concept**: Unlike tools (which execute actions), prompts help you *frame your questions* to get better multi-perspective responses from multiple LLMs.
|
|
791
|
+
|
|
792
|
+
| Prompt | Purpose | Required Arguments |
|
|
793
|
+
|--------|---------|-------------------|
|
|
794
|
+
| 📊 `perspectives` | Multi-angle analysis with assigned lenses | `problem`, `perspectives` |
|
|
795
|
+
| 🔍 `assumptions` | Surface hidden assumptions in plans | `plan` |
|
|
796
|
+
| 👁️ `blindspots` | Hunt for overlooked risks and gaps | `proposal` |
|
|
797
|
+
| ⚖️ `tradeoffs` | Structured option comparison | `options`, `criteria` |
|
|
798
|
+
| 🛡️ `red_team` | Security/risk analysis from multiple angles | `target` |
|
|
799
|
+
| 🔄 `reframe` | Problem reframing at different levels | `problem` |
|
|
800
|
+
| 🏗️ `architecture` | Design review across concerns | `design`, `workloads`, `priorities` |
|
|
801
|
+
| 💡 `diverge_converge` | Divergent exploration then convergence | `challenge` |
|
|
802
|
+
|
|
803
|
+
### Example: Using `perspectives` with Duck Council
|
|
804
|
+
|
|
805
|
+
The most reliable way to use prompts is as templates with duck tools:
|
|
806
|
+
|
|
807
|
+
```
|
|
808
|
+
Use duck_council with this prompt:
|
|
809
|
+
|
|
810
|
+
"Analyze this problem from multiple perspectives:
|
|
811
|
+
|
|
812
|
+
**PROBLEM:** Review this authentication middleware for our API
|
|
813
|
+
|
|
814
|
+
**PERSPECTIVES:** security, performance, maintainability, error handling
|
|
815
|
+
|
|
816
|
+
**CONTEXT:** [paste your code here]
|
|
817
|
+
|
|
818
|
+
Each LLM should adopt ONE lens and provide targeted analysis from that viewpoint."
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
### Example: Using `tradeoffs` with Compare Ducks
|
|
822
|
+
|
|
823
|
+
```
|
|
824
|
+
Use compare_ducks with this prompt:
|
|
825
|
+
|
|
826
|
+
"Analyze these technical options:
|
|
827
|
+
|
|
828
|
+
**OPTIONS:** PostgreSQL, MongoDB, Redis
|
|
829
|
+
|
|
830
|
+
**CRITERIA:** scalability, query flexibility, operational complexity, cost
|
|
831
|
+
|
|
832
|
+
**CONTEXT:** Real-time analytics dashboard with 10k concurrent users
|
|
833
|
+
|
|
834
|
+
Score each option against each criterion (1-5) and identify the biggest trade-off."
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
This approach works reliably and leverages multi-LLM analysis.
|
|
838
|
+
|
|
839
|
+
### Known Limitations (Claude Code)
|
|
840
|
+
|
|
841
|
+
MCP prompts are correctly implemented per the [MCP specification](https://modelcontextprotocol.io/specification/2025-06-18/server/prompts), but Claude Code's support for MCP prompts has limitations:
|
|
842
|
+
|
|
843
|
+
| Issue | Status | Workaround |
|
|
844
|
+
|-------|--------|------------|
|
|
845
|
+
| Must type `(MCP)` suffix | Required | Use `/rubber-duck:reframe (MCP)` not `/rubber-duck:reframe` |
|
|
846
|
+
| Arguments with spaces broken | [Won't fix](https://github.com/anthropics/claude-code/issues/6657) | Use single words: `problem="checkout-abandonment"` |
|
|
847
|
+
| Argument hints not shown | Missing | See table above for required arguments |
|
|
848
|
+
| Optional-only prompts need input | [Won't fix](https://github.com/anthropics/claude-code/issues/5597) | Type at least one character |
|
|
849
|
+
|
|
850
|
+
**Example that works:**
|
|
851
|
+
```
|
|
852
|
+
/rubber-duck:reframe (MCP) problem="slow-api-responses"
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
**Example that fails:**
|
|
856
|
+
```
|
|
857
|
+
/rubber-duck:reframe (MCP) problem="Users abandon checkout at payment"
|
|
858
|
+
↑ spaces break argument parsing
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
### Recommended: Use Prompts as Templates
|
|
862
|
+
|
|
863
|
+
For the best experience, use prompts as templates with duck tools directly. Copy the prompt structure and send to `duck_council`, `compare_ducks`, or `ask_duck`:
|
|
864
|
+
|
|
865
|
+
```
|
|
866
|
+
Use duck_council with this prompt:
|
|
867
|
+
|
|
868
|
+
"Analyze this problem from multiple perspectives:
|
|
869
|
+
|
|
870
|
+
**PROBLEM:** Users abandon checkout at payment step
|
|
871
|
+
|
|
872
|
+
**PERSPECTIVES:** security, UX, performance, reliability
|
|
873
|
+
|
|
874
|
+
Each LLM should adopt ONE lens and provide targeted analysis."
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
This approach:
|
|
878
|
+
- ✅ Works reliably with full argument text
|
|
879
|
+
- ✅ Leverages multi-LLM tools (council, compare, vote)
|
|
880
|
+
- ✅ No Claude Code parsing issues
|
|
881
|
+
|
|
624
882
|
## Usage Examples
|
|
625
883
|
|
|
626
884
|
### Basic Query
|
|
@@ -961,12 +1219,26 @@ mcp-rubber-duck/
|
|
|
961
1219
|
│ ├── config/ # Configuration management
|
|
962
1220
|
│ ├── providers/ # OpenAI client wrapper
|
|
963
1221
|
│ ├── tools/ # MCP tool implementations
|
|
1222
|
+
│ ├── prompts/ # MCP prompt templates
|
|
964
1223
|
│ ├── services/ # Health, cache, conversations
|
|
965
1224
|
│ └── utils/ # Logging, ASCII art
|
|
966
1225
|
├── config/ # Configuration examples
|
|
967
1226
|
└── tests/ # Test suites
|
|
968
1227
|
```
|
|
969
1228
|
|
|
1229
|
+
### Tool Annotations
|
|
1230
|
+
|
|
1231
|
+
All tools include MCP-compliant annotations that describe their behavioral characteristics:
|
|
1232
|
+
|
|
1233
|
+
| Annotation | Meaning |
|
|
1234
|
+
|------------|---------|
|
|
1235
|
+
| `readOnlyHint` | Tool doesn't modify any state |
|
|
1236
|
+
| `destructiveHint` | Tool performs irreversible operations |
|
|
1237
|
+
| `idempotentHint` | Tool is safe to retry multiple times |
|
|
1238
|
+
| `openWorldHint` | Tool accesses external systems (APIs, network) |
|
|
1239
|
+
|
|
1240
|
+
These help MCP clients make informed decisions about tool execution and user confirmations.
|
|
1241
|
+
|
|
970
1242
|
## Troubleshooting
|
|
971
1243
|
|
|
972
1244
|
### Provider Not Working
|
package/audit-ci.json
CHANGED
package/dist/config/config.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/config/config.js
CHANGED
|
@@ -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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"}
|