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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,64 @@ export const ModelPricingSchema = z.object({
36
36
  export const PricingConfigSchema = z.record(z.string(), // provider name
37
37
  z.record(z.string(), ModelPricingSchema) // model name -> pricing
38
38
  );
39
+ // Guardrails Plugin Configs
40
+ export const RateLimiterConfigSchema = z.object({
41
+ enabled: z.boolean().default(false),
42
+ priority: z.number().min(0).max(1000).default(10),
43
+ requests_per_minute: z.number().min(1).default(60),
44
+ requests_per_hour: z.number().min(1).default(1000),
45
+ per_provider: z.boolean().default(false),
46
+ burst_allowance: z.number().min(0).default(5),
47
+ });
48
+ export const TokenLimiterConfigSchema = z.object({
49
+ enabled: z.boolean().default(false),
50
+ priority: z.number().min(0).max(1000).default(20),
51
+ max_input_tokens: z.number().min(1).default(8192),
52
+ max_output_tokens: z.number().min(1).optional(),
53
+ warn_at_percentage: z.number().min(0).max(100).default(80),
54
+ });
55
+ export const PatternBlockerConfigSchema = z.object({
56
+ enabled: z.boolean().default(false),
57
+ priority: z.number().min(0).max(1000).default(30),
58
+ blocked_patterns: z.array(z.string()).default([]),
59
+ blocked_patterns_regex: z.array(z.string()).default([]),
60
+ case_sensitive: z.boolean().default(false),
61
+ action_on_match: z.enum(['block', 'warn', 'redact']).default('block'),
62
+ });
63
+ export const PIIRedactorConfigSchema = z.object({
64
+ enabled: z.boolean().default(false),
65
+ priority: z.number().min(0).max(1000).default(25),
66
+ detect_emails: z.boolean().default(true),
67
+ detect_phones: z.boolean().default(true),
68
+ detect_ssn: z.boolean().default(true),
69
+ detect_api_keys: z.boolean().default(true),
70
+ detect_credit_cards: z.boolean().default(true),
71
+ detect_ip_addresses: z.boolean().default(false),
72
+ custom_patterns: z
73
+ .array(z.object({
74
+ name: z.string(),
75
+ pattern: z.string(),
76
+ placeholder: z.string(),
77
+ }))
78
+ .default([]),
79
+ allowlist: z.array(z.string()).default([]),
80
+ allowlist_domains: z.array(z.string()).default([]),
81
+ restore_on_response: z.boolean().default(false),
82
+ log_detections: z.boolean().default(true),
83
+ });
84
+ export const GuardrailsPluginsConfigSchema = z.object({
85
+ rate_limiter: RateLimiterConfigSchema.optional(),
86
+ token_limiter: TokenLimiterConfigSchema.optional(),
87
+ pattern_blocker: PatternBlockerConfigSchema.optional(),
88
+ pii_redactor: PIIRedactorConfigSchema.optional(),
89
+ });
90
+ export const GuardrailsConfigSchema = z.object({
91
+ enabled: z.boolean().default(false),
92
+ log_violations: z.boolean().default(true),
93
+ log_modifications: z.boolean().default(false),
94
+ fail_open: z.boolean().default(false), // If true, allow on plugin errors
95
+ plugins: GuardrailsPluginsConfigSchema.optional(),
96
+ });
39
97
  export const ConfigSchema = z.object({
40
98
  providers: z.record(z.string(), ProviderConfigSchema),
41
99
  default_provider: z.string().optional(),
@@ -45,5 +103,6 @@ export const ConfigSchema = z.object({
45
103
  log_level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
46
104
  mcp_bridge: MCPBridgeConfigSchema.optional(),
47
105
  pricing: PricingConfigSchema.optional(),
106
+ guardrails: GuardrailsConfigSchema.optional(),
48
107
  });
49
108
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY;IACzE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,gCAAgC;IAChF,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,2BAA2B;IAC1G,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACxD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB;AAC5B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,wBAAwB;CAClE,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;CACtE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9C,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,eAAe,EAAE,CAAC;SACf,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;KACxB,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;IACd,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,YAAY,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAChD,aAAa,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAClD,eAAe,EAAE,0BAA0B,CAAC,QAAQ,EAAE;IACtD,YAAY,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,kCAAkC;IACzE,OAAO,EAAE,6BAA6B,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC;IACrD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY;IACvD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACrE,UAAU,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IAC5C,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,sBAAsB,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { GuardrailContext, CreateContextOptions } from './types.js';
2
+ /**
3
+ * Create a new guardrail context with defaults
4
+ */
5
+ export declare function createGuardrailContext(options?: CreateContextOptions): GuardrailContext;
6
+ /**
7
+ * Clone a guardrail context (deep copy metadata but shallow copy violations/modifications)
8
+ */
9
+ export declare function cloneContext(context: GuardrailContext): GuardrailContext;
10
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/guardrails/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,gBAAgB,CAgB3F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CASxE"}
@@ -0,0 +1,35 @@
1
+ import { randomUUID } from 'crypto';
2
+ /**
3
+ * Create a new guardrail context with defaults
4
+ */
5
+ export function createGuardrailContext(options = {}) {
6
+ return {
7
+ requestId: options.requestId || randomUUID(),
8
+ provider: options.provider || 'unknown',
9
+ model: options.model || 'unknown',
10
+ timestamp: new Date(),
11
+ messages: options.messages || [],
12
+ prompt: options.prompt,
13
+ response: options.response,
14
+ toolName: options.toolName,
15
+ toolArgs: options.toolArgs,
16
+ toolResult: options.toolResult,
17
+ metadata: new Map(),
18
+ violations: [],
19
+ modifications: [],
20
+ };
21
+ }
22
+ /**
23
+ * Clone a guardrail context (deep copy metadata but shallow copy violations/modifications)
24
+ */
25
+ export function cloneContext(context) {
26
+ return {
27
+ ...context,
28
+ messages: [...context.messages],
29
+ toolArgs: context.toolArgs ? { ...context.toolArgs } : undefined,
30
+ metadata: new Map(context.metadata),
31
+ violations: [...context.violations],
32
+ modifications: [...context.modifications],
33
+ };
34
+ }
35
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/guardrails/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAgC,EAAE;IACvE,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE;QAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;QACjC,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAyB;IACpD,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QAChE,QAAQ,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QACnC,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Error thrown when a guardrail blocks a request
3
+ */
4
+ export declare class GuardrailBlockError extends Error {
5
+ readonly pluginName: string;
6
+ readonly reason: string;
7
+ constructor(pluginName: string, reason: string);
8
+ }
9
+ /**
10
+ * Error thrown when a guardrail plugin fails to initialize
11
+ */
12
+ export declare class GuardrailInitError extends Error {
13
+ readonly pluginName: string;
14
+ readonly cause: Error | undefined;
15
+ constructor(pluginName: string, message: string, cause?: Error);
16
+ }
17
+ /**
18
+ * Error thrown when a guardrail plugin execution fails
19
+ */
20
+ export declare class GuardrailExecutionError extends Error {
21
+ readonly pluginName: string;
22
+ readonly phase: string;
23
+ readonly cause: Error | undefined;
24
+ constructor(pluginName: string, phase: string, message: string, cause?: Error);
25
+ }
26
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/guardrails/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAM/C;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;gBAE7B,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM/D;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;gBAE7B,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAO9E"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Error thrown when a guardrail blocks a request
3
+ */
4
+ export class GuardrailBlockError extends Error {
5
+ pluginName;
6
+ reason;
7
+ constructor(pluginName, reason) {
8
+ super(`Request blocked by guardrail '${pluginName}': ${reason}`);
9
+ this.name = 'GuardrailBlockError';
10
+ this.pluginName = pluginName;
11
+ this.reason = reason;
12
+ }
13
+ }
14
+ /**
15
+ * Error thrown when a guardrail plugin fails to initialize
16
+ */
17
+ export class GuardrailInitError extends Error {
18
+ pluginName;
19
+ cause;
20
+ constructor(pluginName, message, cause) {
21
+ super(`Failed to initialize guardrail plugin '${pluginName}': ${message}`);
22
+ this.name = 'GuardrailInitError';
23
+ this.pluginName = pluginName;
24
+ this.cause = cause;
25
+ }
26
+ }
27
+ /**
28
+ * Error thrown when a guardrail plugin execution fails
29
+ */
30
+ export class GuardrailExecutionError extends Error {
31
+ pluginName;
32
+ phase;
33
+ cause;
34
+ constructor(pluginName, phase, message, cause) {
35
+ super(`Guardrail plugin '${pluginName}' failed during '${phase}': ${message}`);
36
+ this.name = 'GuardrailExecutionError';
37
+ this.pluginName = pluginName;
38
+ this.phase = phase;
39
+ this.cause = cause;
40
+ }
41
+ }
42
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/guardrails/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5B,UAAU,CAAS;IACnB,MAAM,CAAS;IAE/B,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CAAC,iCAAiC,UAAU,MAAM,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3B,UAAU,CAAS;IACnB,KAAK,CAAoB;IAEzC,YAAY,UAAkB,EAAE,OAAe,EAAE,KAAa;QAC5D,KAAK,CAAC,0CAA0C,UAAU,MAAM,OAAO,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChC,UAAU,CAAS;IACnB,KAAK,CAAS;IACd,KAAK,CAAoB;IAEzC,YAAY,UAAkB,EAAE,KAAa,EAAE,OAAe,EAAE,KAAa;QAC3E,KAAK,CAAC,qBAAqB,UAAU,oBAAoB,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './errors.js';
3
+ export { createGuardrailContext, cloneContext } from './context.js';
4
+ export { GuardrailsService } from './service.js';
5
+ export { BaseGuardrailPlugin, RateLimiterPlugin, TokenLimiterPlugin, PatternBlockerPlugin, PIIRedactorPlugin, } from './plugins/index.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ // Core types
2
+ export * from './types.js';
3
+ // Errors
4
+ export * from './errors.js';
5
+ // Context
6
+ export { createGuardrailContext, cloneContext } from './context.js';
7
+ // Service
8
+ export { GuardrailsService } from './service.js';
9
+ // Plugins
10
+ export { BaseGuardrailPlugin, RateLimiterPlugin, TokenLimiterPlugin, PatternBlockerPlugin, PIIRedactorPlugin, } from './plugins/index.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,UAAU;AACV,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEpE,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { GuardrailPlugin, GuardrailPhase, GuardrailContext, GuardrailResult } from '../types.js';
2
+ /**
3
+ * Abstract base class for guardrail plugins
4
+ */
5
+ export declare abstract class BaseGuardrailPlugin implements GuardrailPlugin {
6
+ abstract name: string;
7
+ abstract phases: GuardrailPhase[];
8
+ enabled: boolean;
9
+ priority: number;
10
+ protected config: Record<string, unknown>;
11
+ initialize(config: Record<string, unknown>): Promise<void>;
12
+ abstract execute(phase: GuardrailPhase, context: GuardrailContext): Promise<GuardrailResult>;
13
+ shutdown(): Promise<void>;
14
+ /**
15
+ * Helper to create an 'allow' result
16
+ */
17
+ protected allow(context: GuardrailContext): GuardrailResult;
18
+ /**
19
+ * Helper to create a 'block' result
20
+ */
21
+ protected block(context: GuardrailContext, reason: string): GuardrailResult;
22
+ /**
23
+ * Helper to create a 'modify' result
24
+ */
25
+ protected modify(context: GuardrailContext): GuardrailResult;
26
+ /**
27
+ * Helper to add a violation to context
28
+ */
29
+ protected addViolation(context: GuardrailContext, phase: GuardrailPhase, rule: string, severity: 'info' | 'warning' | 'error' | 'critical', message: string, details?: Record<string, unknown>): void;
30
+ /**
31
+ * Helper to add a modification to context
32
+ */
33
+ protected addModification(context: GuardrailContext, phase: GuardrailPhase, field: string, reason: string, originalValue?: unknown, newValue?: unknown): void;
34
+ }
35
+ //# sourceMappingURL=base-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-plugin.d.ts","sourceRoot":"","sources":["../../../src/guardrails/plugins/base-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,8BAAsB,mBAAoB,YAAW,eAAe;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAElC,OAAO,EAAE,OAAO,CAAS;IACzB,QAAQ,EAAE,MAAM,CAAO;IAEvB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAE/C,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAE5F,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAI3D;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAS3E;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAI5D;;OAEG;IACH,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,EACnD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAWP;;OAEG;IACH,SAAS,CAAC,eAAe,CACvB,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,OAAO,EACvB,QAAQ,CAAC,EAAE,OAAO,GACjB,IAAI;CAUR"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Abstract base class for guardrail plugins
3
+ */
4
+ export class BaseGuardrailPlugin {
5
+ enabled = false;
6
+ priority = 100;
7
+ config = {};
8
+ initialize(config) {
9
+ this.config = config;
10
+ this.enabled = true;
11
+ if (typeof config.priority === 'number') {
12
+ this.priority = config.priority;
13
+ }
14
+ return Promise.resolve();
15
+ }
16
+ shutdown() {
17
+ this.enabled = false;
18
+ return Promise.resolve();
19
+ }
20
+ /**
21
+ * Helper to create an 'allow' result
22
+ */
23
+ allow(context) {
24
+ return { action: 'allow', context };
25
+ }
26
+ /**
27
+ * Helper to create a 'block' result
28
+ */
29
+ block(context, reason) {
30
+ return {
31
+ action: 'block',
32
+ context,
33
+ blockedBy: this.name,
34
+ blockReason: reason,
35
+ };
36
+ }
37
+ /**
38
+ * Helper to create a 'modify' result
39
+ */
40
+ modify(context) {
41
+ return { action: 'modify', context };
42
+ }
43
+ /**
44
+ * Helper to add a violation to context
45
+ */
46
+ addViolation(context, phase, rule, severity, message, details) {
47
+ context.violations.push({
48
+ pluginName: this.name,
49
+ phase,
50
+ rule,
51
+ severity,
52
+ message,
53
+ details,
54
+ });
55
+ }
56
+ /**
57
+ * Helper to add a modification to context
58
+ */
59
+ addModification(context, phase, field, reason, originalValue, newValue) {
60
+ context.modifications.push({
61
+ pluginName: this.name,
62
+ phase,
63
+ field,
64
+ originalValue,
65
+ newValue,
66
+ reason,
67
+ });
68
+ }
69
+ }
70
+ //# sourceMappingURL=base-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-plugin.js","sourceRoot":"","sources":["../../../src/guardrails/plugins/base-plugin.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,OAAgB,mBAAmB;IAIvC,OAAO,GAAY,KAAK,CAAC;IACzB,QAAQ,GAAW,GAAG,CAAC;IAEb,MAAM,GAA4B,EAAE,CAAC;IAE/C,UAAU,CAAC,MAA+B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAID,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAyB;QACvC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAyB,EAAE,MAAc;QACvD,OAAO;YACL,MAAM,EAAE,OAAO;YACf,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,MAAM,CAAC,OAAyB;QACxC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACO,YAAY,CACpB,OAAyB,EACzB,KAAqB,EACrB,IAAY,EACZ,QAAmD,EACnD,OAAe,EACf,OAAiC;QAEjC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YACtB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,KAAK;YACL,IAAI;YACJ,QAAQ;YACR,OAAO;YACP,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,eAAe,CACvB,OAAyB,EACzB,KAAqB,EACrB,KAAa,EACb,MAAc,EACd,aAAuB,EACvB,QAAkB;QAElB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;YACzB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,KAAK;YACL,KAAK;YACL,aAAa;YACb,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export { BaseGuardrailPlugin } from './base-plugin.js';
2
+ export { RateLimiterPlugin } from './rate-limiter.js';
3
+ export { TokenLimiterPlugin } from './token-limiter.js';
4
+ export { PatternBlockerPlugin } from './pattern-blocker.js';
5
+ export { PIIRedactorPlugin } from './pii-redactor/index.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/guardrails/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { BaseGuardrailPlugin } from './base-plugin.js';
2
+ export { RateLimiterPlugin } from './rate-limiter.js';
3
+ export { TokenLimiterPlugin } from './token-limiter.js';
4
+ export { PatternBlockerPlugin } from './pattern-blocker.js';
5
+ export { PIIRedactorPlugin } from './pii-redactor/index.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/guardrails/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { BaseGuardrailPlugin } from './base-plugin.js';
2
+ import { GuardrailPhase, GuardrailContext, GuardrailResult } from '../types.js';
3
+ /**
4
+ * Pattern blocker plugin - blocks or warns on specific patterns
5
+ */
6
+ export declare class PatternBlockerPlugin extends BaseGuardrailPlugin {
7
+ name: string;
8
+ phases: GuardrailPhase[];
9
+ private blockedPatterns;
10
+ private blockedPatternsRegex;
11
+ private caseSensitive;
12
+ private actionOnMatch;
13
+ initialize(config: Record<string, unknown>): Promise<void>;
14
+ execute(phase: GuardrailPhase, context: GuardrailContext): Promise<GuardrailResult>;
15
+ /**
16
+ * Find all pattern matches in text
17
+ */
18
+ private findMatches;
19
+ /**
20
+ * Get configured patterns (for testing)
21
+ */
22
+ getPatterns(): {
23
+ simple: string[];
24
+ regex: string[];
25
+ };
26
+ }
27
+ //# sourceMappingURL=pattern-blocker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-blocker.d.ts","sourceRoot":"","sources":["../../../src/guardrails/plugins/pattern-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAUhF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,IAAI,SAAqB;IACzB,MAAM,EAAE,cAAc,EAAE,CAAqC;IAE7D,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,aAAa,CAAwC;IAEvD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhE,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAiGnF;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;IACH,WAAW,IAAI;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE;CAMrD"}
@@ -0,0 +1,140 @@
1
+ import { BaseGuardrailPlugin } from './base-plugin.js';
2
+ /**
3
+ * Pattern blocker plugin - blocks or warns on specific patterns
4
+ */
5
+ export class PatternBlockerPlugin extends BaseGuardrailPlugin {
6
+ name = 'pattern_blocker';
7
+ phases = ['pre_request', 'pre_tool_input'];
8
+ blockedPatterns = [];
9
+ blockedPatternsRegex = [];
10
+ caseSensitive = false;
11
+ actionOnMatch = 'block';
12
+ async initialize(config) {
13
+ await super.initialize(config);
14
+ const typedConfig = config;
15
+ this.blockedPatterns = typedConfig.blocked_patterns ?? [];
16
+ this.caseSensitive = typedConfig.case_sensitive ?? false;
17
+ this.actionOnMatch = typedConfig.action_on_match ?? 'block';
18
+ this.priority = typedConfig.priority ?? 30;
19
+ // Compile regex patterns
20
+ this.blockedPatternsRegex = [];
21
+ for (const pattern of typedConfig.blocked_patterns_regex ?? []) {
22
+ try {
23
+ const flags = this.caseSensitive ? 'g' : 'gi';
24
+ this.blockedPatternsRegex.push(new RegExp(pattern, flags));
25
+ }
26
+ catch (error) {
27
+ // Invalid regex, skip it
28
+ }
29
+ }
30
+ }
31
+ execute(phase, context) {
32
+ if (!this.phases.includes(phase)) {
33
+ return Promise.resolve(this.allow(context));
34
+ }
35
+ // Get text to check based on phase
36
+ let textToCheck;
37
+ let fieldName;
38
+ if (phase === 'pre_request') {
39
+ textToCheck = context.prompt || '';
40
+ fieldName = 'prompt';
41
+ }
42
+ else if (phase === 'pre_tool_input') {
43
+ textToCheck = JSON.stringify(context.toolArgs || {});
44
+ fieldName = 'toolArgs';
45
+ }
46
+ else {
47
+ return Promise.resolve(this.allow(context));
48
+ }
49
+ // Find matches
50
+ const matches = this.findMatches(textToCheck);
51
+ if (matches.length === 0) {
52
+ return Promise.resolve(this.allow(context));
53
+ }
54
+ // Handle matches based on action
55
+ const matchSummary = matches.map((m) => m.pattern).join(', ');
56
+ if (this.actionOnMatch === 'block') {
57
+ this.addViolation(context, phase, 'blocked_pattern', 'error', `Blocked patterns found: ${matchSummary}`, { matches: matches.map((m) => ({ pattern: m.pattern, position: m.position })) });
58
+ return Promise.resolve(this.block(context, `Blocked pattern detected: ${matchSummary}`));
59
+ }
60
+ if (this.actionOnMatch === 'warn') {
61
+ this.addViolation(context, phase, 'blocked_pattern_warning', 'warning', `Suspicious patterns found: ${matchSummary}`, { matches: matches.map((m) => ({ pattern: m.pattern, position: m.position })) });
62
+ return Promise.resolve(this.allow(context));
63
+ }
64
+ if (this.actionOnMatch === 'redact') {
65
+ // Redact matches from text
66
+ let redactedText = textToCheck;
67
+ for (const match of matches) {
68
+ redactedText = redactedText.replace(match.matchedText, '[REDACTED]');
69
+ }
70
+ this.addModification(context, phase, fieldName, `Redacted ${matches.length} blocked patterns`, textToCheck, redactedText);
71
+ // Update context
72
+ if (phase === 'pre_request') {
73
+ context.prompt = redactedText;
74
+ // Also update last message if present (create new object to avoid mutating original)
75
+ if (context.messages.length > 0) {
76
+ const lastIndex = context.messages.length - 1;
77
+ context.messages[lastIndex] = {
78
+ ...context.messages[lastIndex],
79
+ content: redactedText,
80
+ };
81
+ }
82
+ }
83
+ else if (phase === 'pre_tool_input') {
84
+ try {
85
+ context.toolArgs = JSON.parse(redactedText);
86
+ }
87
+ catch {
88
+ // If parse fails, leave as is
89
+ }
90
+ }
91
+ return Promise.resolve(this.modify(context));
92
+ }
93
+ return Promise.resolve(this.allow(context));
94
+ }
95
+ /**
96
+ * Find all pattern matches in text
97
+ */
98
+ findMatches(text) {
99
+ const matches = [];
100
+ const searchText = this.caseSensitive ? text : text.toLowerCase();
101
+ // Check simple string patterns
102
+ for (const pattern of this.blockedPatterns) {
103
+ const searchPattern = this.caseSensitive ? pattern : pattern.toLowerCase();
104
+ let position = searchText.indexOf(searchPattern);
105
+ while (position !== -1) {
106
+ matches.push({
107
+ pattern,
108
+ isRegex: false,
109
+ matchedText: text.substring(position, position + pattern.length),
110
+ position,
111
+ });
112
+ position = searchText.indexOf(searchPattern, position + 1);
113
+ }
114
+ }
115
+ // Check regex patterns
116
+ for (const regex of this.blockedPatternsRegex) {
117
+ regex.lastIndex = 0; // Reset regex state
118
+ let match;
119
+ while ((match = regex.exec(text)) !== null) {
120
+ matches.push({
121
+ pattern: regex.source,
122
+ isRegex: true,
123
+ matchedText: match[0],
124
+ position: match.index,
125
+ });
126
+ }
127
+ }
128
+ return matches;
129
+ }
130
+ /**
131
+ * Get configured patterns (for testing)
132
+ */
133
+ getPatterns() {
134
+ return {
135
+ simple: [...this.blockedPatterns],
136
+ regex: this.blockedPatternsRegex.map((r) => r.source),
137
+ };
138
+ }
139
+ }
140
+ //# sourceMappingURL=pattern-blocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-blocker.js","sourceRoot":"","sources":["../../../src/guardrails/plugins/pattern-blocker.ts"],"names":[],"mappings":"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"}