llm-trust-guard 4.0.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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +318 -0
  3. package/dist/guards/agent-communication-guard.d.ts +169 -0
  4. package/dist/guards/agent-communication-guard.d.ts.map +1 -0
  5. package/dist/guards/agent-communication-guard.js +468 -0
  6. package/dist/guards/agent-communication-guard.js.map +1 -0
  7. package/dist/guards/autonomy-escalation-guard.d.ts +137 -0
  8. package/dist/guards/autonomy-escalation-guard.d.ts.map +1 -0
  9. package/dist/guards/autonomy-escalation-guard.js +470 -0
  10. package/dist/guards/autonomy-escalation-guard.js.map +1 -0
  11. package/dist/guards/circuit-breaker.d.ts +142 -0
  12. package/dist/guards/circuit-breaker.d.ts.map +1 -0
  13. package/dist/guards/circuit-breaker.js +347 -0
  14. package/dist/guards/circuit-breaker.js.map +1 -0
  15. package/dist/guards/code-execution-guard.d.ts +114 -0
  16. package/dist/guards/code-execution-guard.d.ts.map +1 -0
  17. package/dist/guards/code-execution-guard.js +467 -0
  18. package/dist/guards/code-execution-guard.js.map +1 -0
  19. package/dist/guards/conversation-guard.d.ts +73 -0
  20. package/dist/guards/conversation-guard.d.ts.map +1 -0
  21. package/dist/guards/conversation-guard.js +281 -0
  22. package/dist/guards/conversation-guard.js.map +1 -0
  23. package/dist/guards/drift-detector.d.ts +182 -0
  24. package/dist/guards/drift-detector.d.ts.map +1 -0
  25. package/dist/guards/drift-detector.js +480 -0
  26. package/dist/guards/drift-detector.js.map +1 -0
  27. package/dist/guards/encoding-detector.d.ts +76 -0
  28. package/dist/guards/encoding-detector.d.ts.map +1 -0
  29. package/dist/guards/encoding-detector.js +698 -0
  30. package/dist/guards/encoding-detector.js.map +1 -0
  31. package/dist/guards/execution-monitor.d.ts +73 -0
  32. package/dist/guards/execution-monitor.d.ts.map +1 -0
  33. package/dist/guards/execution-monitor.js +205 -0
  34. package/dist/guards/execution-monitor.js.map +1 -0
  35. package/dist/guards/input-sanitizer.d.ts +87 -0
  36. package/dist/guards/input-sanitizer.d.ts.map +1 -0
  37. package/dist/guards/input-sanitizer.js +301 -0
  38. package/dist/guards/input-sanitizer.js.map +1 -0
  39. package/dist/guards/mcp-security-guard.d.ts +204 -0
  40. package/dist/guards/mcp-security-guard.d.ts.map +1 -0
  41. package/dist/guards/mcp-security-guard.js +618 -0
  42. package/dist/guards/mcp-security-guard.js.map +1 -0
  43. package/dist/guards/memory-guard.d.ts +124 -0
  44. package/dist/guards/memory-guard.d.ts.map +1 -0
  45. package/dist/guards/memory-guard.js +476 -0
  46. package/dist/guards/memory-guard.js.map +1 -0
  47. package/dist/guards/multimodal-guard.d.ts +93 -0
  48. package/dist/guards/multimodal-guard.d.ts.map +1 -0
  49. package/dist/guards/multimodal-guard.js +507 -0
  50. package/dist/guards/multimodal-guard.js.map +1 -0
  51. package/dist/guards/output-filter.d.ts +76 -0
  52. package/dist/guards/output-filter.d.ts.map +1 -0
  53. package/dist/guards/output-filter.js +289 -0
  54. package/dist/guards/output-filter.js.map +1 -0
  55. package/dist/guards/policy-gate.d.ts +57 -0
  56. package/dist/guards/policy-gate.d.ts.map +1 -0
  57. package/dist/guards/policy-gate.js +182 -0
  58. package/dist/guards/policy-gate.js.map +1 -0
  59. package/dist/guards/prompt-leakage-guard.d.ts +110 -0
  60. package/dist/guards/prompt-leakage-guard.d.ts.map +1 -0
  61. package/dist/guards/prompt-leakage-guard.js +529 -0
  62. package/dist/guards/prompt-leakage-guard.js.map +1 -0
  63. package/dist/guards/rag-guard.d.ts +188 -0
  64. package/dist/guards/rag-guard.d.ts.map +1 -0
  65. package/dist/guards/rag-guard.js +769 -0
  66. package/dist/guards/rag-guard.js.map +1 -0
  67. package/dist/guards/schema-validator.d.ts +35 -0
  68. package/dist/guards/schema-validator.d.ts.map +1 -0
  69. package/dist/guards/schema-validator.js +316 -0
  70. package/dist/guards/schema-validator.js.map +1 -0
  71. package/dist/guards/state-persistence-guard.d.ts +153 -0
  72. package/dist/guards/state-persistence-guard.d.ts.map +1 -0
  73. package/dist/guards/state-persistence-guard.js +484 -0
  74. package/dist/guards/state-persistence-guard.js.map +1 -0
  75. package/dist/guards/tenant-boundary.d.ts +67 -0
  76. package/dist/guards/tenant-boundary.d.ts.map +1 -0
  77. package/dist/guards/tenant-boundary.js +187 -0
  78. package/dist/guards/tenant-boundary.js.map +1 -0
  79. package/dist/guards/tool-chain-validator.d.ts +102 -0
  80. package/dist/guards/tool-chain-validator.d.ts.map +1 -0
  81. package/dist/guards/tool-chain-validator.js +480 -0
  82. package/dist/guards/tool-chain-validator.js.map +1 -0
  83. package/dist/guards/tool-registry.d.ts +45 -0
  84. package/dist/guards/tool-registry.d.ts.map +1 -0
  85. package/dist/guards/tool-registry.js +155 -0
  86. package/dist/guards/tool-registry.js.map +1 -0
  87. package/dist/guards/trust-exploitation-guard.d.ts +134 -0
  88. package/dist/guards/trust-exploitation-guard.d.ts.map +1 -0
  89. package/dist/guards/trust-exploitation-guard.js +354 -0
  90. package/dist/guards/trust-exploitation-guard.js.map +1 -0
  91. package/dist/index.d.ts +133 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +430 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/integrations/express.d.ts +119 -0
  96. package/dist/integrations/express.d.ts.map +1 -0
  97. package/dist/integrations/express.js +244 -0
  98. package/dist/integrations/express.js.map +1 -0
  99. package/dist/integrations/index.d.ts +9 -0
  100. package/dist/integrations/index.d.ts.map +1 -0
  101. package/dist/integrations/index.js +26 -0
  102. package/dist/integrations/index.js.map +1 -0
  103. package/dist/integrations/langchain.d.ts +165 -0
  104. package/dist/integrations/langchain.d.ts.map +1 -0
  105. package/dist/integrations/langchain.js +308 -0
  106. package/dist/integrations/langchain.js.map +1 -0
  107. package/dist/integrations/openai.d.ts +205 -0
  108. package/dist/integrations/openai.d.ts.map +1 -0
  109. package/dist/integrations/openai.js +380 -0
  110. package/dist/integrations/openai.js.map +1 -0
  111. package/dist/types/index.d.ts +245 -0
  112. package/dist/types/index.d.ts.map +1 -0
  113. package/dist/types/index.js +6 -0
  114. package/dist/types/index.js.map +1 -0
  115. package/package.json +64 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding-detector.js","sourceRoot":"","sources":["../../src/guards/encoding-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * L6: Execution Monitor
3
+ *
4
+ * Prevents resource exhaustion attacks by enforcing:
5
+ * - Rate limiting per user/session
6
+ * - Timeout limits on operations
7
+ * - Resource quotas (max operations per window)
8
+ * - Cost tracking for expensive operations
9
+ */
10
+ export interface ExecutionMonitorConfig {
11
+ maxRequestsPerMinute?: number;
12
+ maxRequestsPerHour?: number;
13
+ defaultTimeoutMs?: number;
14
+ maxTimeoutMs?: number;
15
+ maxConcurrentOperations?: number;
16
+ operationCosts?: Record<string, number>;
17
+ maxCostPerMinute?: number;
18
+ maxCostPerHour?: number;
19
+ trackByUser?: boolean;
20
+ trackBySession?: boolean;
21
+ }
22
+ export interface ExecutionMonitorResult {
23
+ allowed: boolean;
24
+ reason?: string;
25
+ violations: string[];
26
+ rate_limit_info: {
27
+ requests_this_minute: number;
28
+ requests_this_hour: number;
29
+ max_per_minute: number;
30
+ max_per_hour: number;
31
+ };
32
+ cost_info: {
33
+ cost_this_minute: number;
34
+ cost_this_hour: number;
35
+ operation_cost: number;
36
+ max_per_minute: number;
37
+ max_per_hour: number;
38
+ };
39
+ throttled: boolean;
40
+ retry_after_ms?: number;
41
+ }
42
+ export declare class ExecutionMonitor {
43
+ private config;
44
+ private userLimits;
45
+ private sessionLimits;
46
+ private globalLimits;
47
+ constructor(config?: ExecutionMonitorConfig);
48
+ /**
49
+ * Check if an operation should be allowed based on rate limits and quotas
50
+ */
51
+ check(toolName: string, userId?: string, sessionId?: string, requestId?: string): ExecutionMonitorResult;
52
+ /**
53
+ * Mark an operation as complete (decrements concurrent operation count)
54
+ */
55
+ completeOperation(userId?: string, sessionId?: string): void;
56
+ /**
57
+ * Get rate limit status for a user/session
58
+ */
59
+ getStatus(userId?: string, sessionId?: string): {
60
+ requests_per_minute: number;
61
+ requests_per_hour: number;
62
+ concurrent_operations: number;
63
+ cost_per_minute: number;
64
+ cost_per_hour: number;
65
+ };
66
+ /**
67
+ * Reset rate limits for a user/session
68
+ */
69
+ reset(userId?: string, sessionId?: string): void;
70
+ private getEntry;
71
+ private cleanupEntries;
72
+ }
73
+ //# sourceMappingURL=execution-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-monitor.d.ts","sourceRoot":"","sources":["../../src/guards/execution-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,sBAAsB;IAErC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE;QACf,oBAAoB,EAAE,MAAM,CAAC;QAC7B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE;QACT,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAQD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,YAAY,CAIlB;gBAEU,MAAM,GAAE,sBAA2B;IAe/C;;OAEG;IACH,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,MAAW,GACrB,sBAAsB;IAiHzB;;OAEG;IACH,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAO5D;;OAEG;IACH,SAAS,CACP,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB;IAoBD;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBhD,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,cAAc;CASvB"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * L6: Execution Monitor
4
+ *
5
+ * Prevents resource exhaustion attacks by enforcing:
6
+ * - Rate limiting per user/session
7
+ * - Timeout limits on operations
8
+ * - Resource quotas (max operations per window)
9
+ * - Cost tracking for expensive operations
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ExecutionMonitor = void 0;
13
+ class ExecutionMonitor {
14
+ constructor(config = {}) {
15
+ this.userLimits = new Map();
16
+ this.sessionLimits = new Map();
17
+ this.globalLimits = {
18
+ requests: [],
19
+ costs: [],
20
+ concurrentOperations: 0,
21
+ };
22
+ this.config = {
23
+ maxRequestsPerMinute: config.maxRequestsPerMinute ?? 60,
24
+ maxRequestsPerHour: config.maxRequestsPerHour ?? 1000,
25
+ defaultTimeoutMs: config.defaultTimeoutMs ?? 30000,
26
+ maxTimeoutMs: config.maxTimeoutMs ?? 120000,
27
+ maxConcurrentOperations: config.maxConcurrentOperations ?? 10,
28
+ operationCosts: config.operationCosts ?? {},
29
+ maxCostPerMinute: config.maxCostPerMinute ?? 100,
30
+ maxCostPerHour: config.maxCostPerHour ?? 1000,
31
+ trackByUser: config.trackByUser ?? true,
32
+ trackBySession: config.trackBySession ?? true,
33
+ };
34
+ }
35
+ /**
36
+ * Check if an operation should be allowed based on rate limits and quotas
37
+ */
38
+ check(toolName, userId, sessionId, requestId = "") {
39
+ const now = Date.now();
40
+ const oneMinuteAgo = now - 60000;
41
+ const oneHourAgo = now - 3600000;
42
+ const violations = [];
43
+ // Get operation cost
44
+ const operationCost = this.config.operationCosts?.[toolName] ?? 1;
45
+ // Get or create rate limit entries
46
+ const entry = this.getEntry(userId, sessionId);
47
+ // Clean up old entries
48
+ this.cleanupEntries(entry, oneMinuteAgo, oneHourAgo);
49
+ // Count requests
50
+ const requestsThisMinute = entry.requests.filter((t) => t > oneMinuteAgo).length;
51
+ const requestsThisHour = entry.requests.filter((t) => t > oneHourAgo).length;
52
+ // Calculate costs
53
+ const costThisMinute = entry.costs
54
+ .filter((c) => c.timestamp > oneMinuteAgo)
55
+ .reduce((sum, c) => sum + c.cost, 0);
56
+ const costThisHour = entry.costs
57
+ .filter((c) => c.timestamp > oneHourAgo)
58
+ .reduce((sum, c) => sum + c.cost, 0);
59
+ // Check rate limits
60
+ let throttled = false;
61
+ let retryAfterMs;
62
+ if (requestsThisMinute >= this.config.maxRequestsPerMinute) {
63
+ violations.push("RATE_LIMIT_MINUTE_EXCEEDED");
64
+ throttled = true;
65
+ // Calculate when the oldest request in the minute window will expire
66
+ const oldestInMinute = entry.requests
67
+ .filter((t) => t > oneMinuteAgo)
68
+ .sort()[0];
69
+ retryAfterMs = oldestInMinute
70
+ ? oldestInMinute + 60000 - now
71
+ : 60000;
72
+ }
73
+ if (requestsThisHour >= this.config.maxRequestsPerHour) {
74
+ violations.push("RATE_LIMIT_HOUR_EXCEEDED");
75
+ throttled = true;
76
+ const oldestInHour = entry.requests
77
+ .filter((t) => t > oneHourAgo)
78
+ .sort()[0];
79
+ retryAfterMs = Math.max(retryAfterMs ?? 0, oldestInHour ? oldestInHour + 3600000 - now : 3600000);
80
+ }
81
+ // Check cost limits
82
+ if (costThisMinute + operationCost > this.config.maxCostPerMinute) {
83
+ violations.push("COST_LIMIT_MINUTE_EXCEEDED");
84
+ throttled = true;
85
+ }
86
+ if (costThisHour + operationCost > this.config.maxCostPerHour) {
87
+ violations.push("COST_LIMIT_HOUR_EXCEEDED");
88
+ throttled = true;
89
+ }
90
+ // Check concurrent operations
91
+ if (entry.concurrentOperations >= this.config.maxConcurrentOperations) {
92
+ violations.push("MAX_CONCURRENT_OPERATIONS_EXCEEDED");
93
+ throttled = true;
94
+ }
95
+ const allowed = !throttled;
96
+ // Record request if allowed
97
+ if (allowed) {
98
+ entry.requests.push(now);
99
+ entry.costs.push({ timestamp: now, cost: operationCost });
100
+ entry.concurrentOperations++;
101
+ }
102
+ if (!allowed) {
103
+ console.log(`[ExecutionMonitor:${requestId}] BLOCKED: ${violations.join(", ")}`);
104
+ }
105
+ return {
106
+ allowed,
107
+ reason: allowed ? undefined : `Rate limit exceeded: ${violations.join(", ")}`,
108
+ violations,
109
+ rate_limit_info: {
110
+ requests_this_minute: requestsThisMinute,
111
+ requests_this_hour: requestsThisHour,
112
+ max_per_minute: this.config.maxRequestsPerMinute,
113
+ max_per_hour: this.config.maxRequestsPerHour,
114
+ },
115
+ cost_info: {
116
+ cost_this_minute: costThisMinute,
117
+ cost_this_hour: costThisHour,
118
+ operation_cost: operationCost,
119
+ max_per_minute: this.config.maxCostPerMinute,
120
+ max_per_hour: this.config.maxCostPerHour,
121
+ },
122
+ throttled,
123
+ retry_after_ms: retryAfterMs,
124
+ };
125
+ }
126
+ /**
127
+ * Mark an operation as complete (decrements concurrent operation count)
128
+ */
129
+ completeOperation(userId, sessionId) {
130
+ const entry = this.getEntry(userId, sessionId);
131
+ if (entry.concurrentOperations > 0) {
132
+ entry.concurrentOperations--;
133
+ }
134
+ }
135
+ /**
136
+ * Get rate limit status for a user/session
137
+ */
138
+ getStatus(userId, sessionId) {
139
+ const now = Date.now();
140
+ const oneMinuteAgo = now - 60000;
141
+ const oneHourAgo = now - 3600000;
142
+ const entry = this.getEntry(userId, sessionId);
143
+ return {
144
+ requests_per_minute: entry.requests.filter((t) => t > oneMinuteAgo)
145
+ .length,
146
+ requests_per_hour: entry.requests.filter((t) => t > oneHourAgo).length,
147
+ concurrent_operations: entry.concurrentOperations,
148
+ cost_per_minute: entry.costs
149
+ .filter((c) => c.timestamp > oneMinuteAgo)
150
+ .reduce((sum, c) => sum + c.cost, 0),
151
+ cost_per_hour: entry.costs
152
+ .filter((c) => c.timestamp > oneHourAgo)
153
+ .reduce((sum, c) => sum + c.cost, 0),
154
+ };
155
+ }
156
+ /**
157
+ * Reset rate limits for a user/session
158
+ */
159
+ reset(userId, sessionId) {
160
+ if (sessionId && this.config.trackBySession) {
161
+ this.sessionLimits.delete(sessionId);
162
+ }
163
+ if (userId && this.config.trackByUser) {
164
+ this.userLimits.delete(userId);
165
+ }
166
+ if (!userId && !sessionId) {
167
+ this.globalLimits = {
168
+ requests: [],
169
+ costs: [],
170
+ concurrentOperations: 0,
171
+ };
172
+ }
173
+ }
174
+ getEntry(userId, sessionId) {
175
+ // Priority: session > user > global
176
+ if (sessionId && this.config.trackBySession) {
177
+ if (!this.sessionLimits.has(sessionId)) {
178
+ this.sessionLimits.set(sessionId, {
179
+ requests: [],
180
+ costs: [],
181
+ concurrentOperations: 0,
182
+ });
183
+ }
184
+ return this.sessionLimits.get(sessionId);
185
+ }
186
+ if (userId && this.config.trackByUser) {
187
+ if (!this.userLimits.has(userId)) {
188
+ this.userLimits.set(userId, {
189
+ requests: [],
190
+ costs: [],
191
+ concurrentOperations: 0,
192
+ });
193
+ }
194
+ return this.userLimits.get(userId);
195
+ }
196
+ return this.globalLimits;
197
+ }
198
+ cleanupEntries(entry, oneMinuteAgo, oneHourAgo) {
199
+ // Keep only requests within the hour window
200
+ entry.requests = entry.requests.filter((t) => t > oneHourAgo);
201
+ entry.costs = entry.costs.filter((c) => c.timestamp > oneHourAgo);
202
+ }
203
+ }
204
+ exports.ExecutionMonitor = ExecutionMonitor;
205
+ //# sourceMappingURL=execution-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-monitor.js","sourceRoot":"","sources":["../../src/guards/execution-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * L1 Input Sanitizer (v2)
3
+ *
4
+ * Detects prompt injection patterns and PAP (Persuasive Adversarial Prompts) in user input.
5
+ * First line of defense against manipulation attempts.
6
+ *
7
+ * Enhanced Features (v2):
8
+ * - 40 Persuasion technique detection (PAP attacks)
9
+ * - Psychological manipulation detection
10
+ * - Authority/scarcity/urgency exploitation detection
11
+ * - Emotional manipulation detection
12
+ * - Multi-technique attack detection
13
+ */
14
+ import { SanitizerResult } from "../types";
15
+ interface InjectionPattern {
16
+ pattern: RegExp;
17
+ weight: number;
18
+ name: string;
19
+ }
20
+ type PersuasionCategory = "authority" | "scarcity" | "social_proof" | "reciprocity" | "commitment" | "liking" | "fear" | "logical_appeal" | "evidence" | "emotional";
21
+ export interface InputSanitizerConfig {
22
+ threshold?: number;
23
+ customPatterns?: InjectionPattern[];
24
+ logMatches?: boolean;
25
+ /** Enable PAP (Persuasive Adversarial Prompts) detection */
26
+ detectPAP?: boolean;
27
+ /** PAP detection threshold (0-1, default 0.4) */
28
+ papThreshold?: number;
29
+ /** Minimum number of different persuasion techniques to trigger alert */
30
+ minPersuasionTechniques?: number;
31
+ /** Block if multiple persuasion categories used (compound attack) */
32
+ blockCompoundPersuasion?: boolean;
33
+ }
34
+ /** Extended result type for PAP-aware sanitization */
35
+ export interface PAPSanitizerResult extends SanitizerResult {
36
+ pap?: {
37
+ detected: boolean;
38
+ techniques: string[];
39
+ categories: PersuasionCategory[];
40
+ compoundAttack: boolean;
41
+ persuasionScore: number;
42
+ };
43
+ }
44
+ export declare class InputSanitizer {
45
+ private patterns;
46
+ private threshold;
47
+ private logMatches;
48
+ private detectPAP;
49
+ private papThreshold;
50
+ private minPersuasionTechniques;
51
+ private blockCompoundPersuasion;
52
+ constructor(config?: InputSanitizerConfig);
53
+ /**
54
+ * Sanitize input and detect injection patterns (including PAP)
55
+ */
56
+ sanitize(input: string, requestId?: string): PAPSanitizerResult;
57
+ /**
58
+ * Detect persuasion techniques (PAP attacks)
59
+ */
60
+ private detectPersuasionTechniques;
61
+ /**
62
+ * Basic input sanitization
63
+ */
64
+ private basicSanitize;
65
+ /**
66
+ * Add custom pattern at runtime
67
+ */
68
+ addPattern(pattern: RegExp, weight: number, name: string): void;
69
+ /**
70
+ * Set threshold
71
+ */
72
+ setThreshold(threshold: number): void;
73
+ /**
74
+ * Set PAP detection threshold
75
+ */
76
+ setPAPThreshold(threshold: number): void;
77
+ /**
78
+ * Enable/disable PAP detection
79
+ */
80
+ setPAPDetection(enabled: boolean): void;
81
+ /**
82
+ * Get PAP statistics for monitoring
83
+ */
84
+ static getPAPCategories(): PersuasionCategory[];
85
+ }
86
+ export {};
87
+ //# sourceMappingURL=input-sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-sanitizer.d.ts","sourceRoot":"","sources":["../../src/guards/input-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAUD,KAAK,kBAAkB,GACnB,WAAW,GACX,UAAU,GACV,cAAc,GACd,aAAa,GACb,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,gBAAgB,GAChB,UAAU,GACV,WAAW,CAAC;AAkKhB,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,UAAU,EAAE,kBAAkB,EAAE,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,uBAAuB,CAAU;gBAE7B,MAAM,GAAE,oBAAyB;IAU7C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,kBAAkB;IAwEnE;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/D;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvC;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,kBAAkB,EAAE;CAGhD"}