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,470 @@
1
+ "use strict";
2
+ /**
3
+ * AutonomyEscalationGuard (L21)
4
+ *
5
+ * Detects and prevents unauthorized autonomy escalation attempts.
6
+ * Implements ASI10 from OWASP Agentic Applications 2026.
7
+ *
8
+ * Threat Model:
9
+ * - ASI10: Unauthorized Autonomy Escalation
10
+ * - Self-modification attempts
11
+ * - Capability expansion
12
+ * - Human-in-the-loop bypass
13
+ * - Sub-agent spawning without approval
14
+ *
15
+ * Protection Capabilities:
16
+ * - Autonomy level tracking
17
+ * - Capability boundary enforcement
18
+ * - Self-modification detection
19
+ * - Sub-agent control
20
+ * - Escalation pattern detection
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.AutonomyEscalationGuard = void 0;
24
+ class AutonomyEscalationGuard {
25
+ constructor(config = {}) {
26
+ this.agentStates = new Map();
27
+ // Autonomy escalation patterns
28
+ this.ESCALATION_PATTERNS = [
29
+ // Self-modification attempts
30
+ { name: "modify_own_code", pattern: /modify\s+(my\s+own|my|own|this\s+agent'?s?)\s+(code|behavior|instructions?)/i, severity: 90 },
31
+ { name: "update_capabilities", pattern: /update\s+(my|own)\s+(capabilities|permissions?|abilities)/i, severity: 80 },
32
+ { name: "change_constraints", pattern: /remove?\s+(my|the)?\s*(constraints?|limitations?|restrictions?)/i, severity: 85 },
33
+ { name: "disable_safety", pattern: /disable\s+(safety|security|guardrails?|filters?)/i, severity: 95 },
34
+ // Autonomy expansion
35
+ { name: "increase_autonomy", pattern: /increase\s+(my|agent'?s?)?\s*autonomy/i, severity: 70 },
36
+ { name: "act_freely", pattern: /act\s+(freely|without\s+restriction|independently)/i, severity: 75 },
37
+ { name: "full_control", pattern: /give\s+(me|agent)\s+(full|complete|total)\s+control/i, severity: 85 },
38
+ { name: "unrestricted", pattern: /unrestricted\s+(access|mode|operation)/i, severity: 80 },
39
+ // Human-in-the-loop bypass
40
+ { name: "bypass_approval", pattern: /bypass\s+(human\s+)?(approval|verification|confirmation)/i, severity: 90 },
41
+ { name: "skip_review", pattern: /skip\s+(human\s+)?(review|check|oversight)/i, severity: 85 },
42
+ { name: "no_supervision", pattern: /without\s+(human\s+)?(supervision|oversight|intervention)/i, severity: 80 },
43
+ { name: "auto_approve", pattern: /auto(-|\s+)?(approve|authorize|confirm)/i, severity: 75 },
44
+ // Sub-agent spawning
45
+ { name: "spawn_agent", pattern: /spawn\s+(new\s+)?(agent|process|worker)/i, severity: 60 },
46
+ { name: "create_copy", pattern: /create\s+(a\s+)?(copy|clone|replica)\s+of\s+(myself|this\s+agent)/i, severity: 85 },
47
+ { name: "delegate_all", pattern: /delegate\s+(all|everything|full\s+authority)/i, severity: 70 },
48
+ { name: "fork_agent", pattern: /fork\s+(myself|this\s+agent|process)/i, severity: 80 },
49
+ // Persistence attempts
50
+ { name: "persist_changes", pattern: /persist\s+(these\s+)?(changes|modifications?|settings?)/i, severity: 65 },
51
+ { name: "permanent_mode", pattern: /permanent(ly)?\s+(enable|activate|set)/i, severity: 70 },
52
+ { name: "save_state", pattern: /save\s+(my|current)\s+state\s+(permanently|forever)/i, severity: 60 },
53
+ { name: "write_config", pattern: /write\s+to\s+(config|configuration|settings)/i, severity: 75 },
54
+ // Capability escalation
55
+ { name: "need_more_access", pattern: /need\s+(more|additional|elevated)\s+access/i, severity: 50 },
56
+ { name: "require_permissions", pattern: /require\s+(admin|root|elevated)\s+permissions?/i, severity: 70 },
57
+ { name: "unlock_features", pattern: /unlock\s+(hidden|restricted|blocked)\s+features?/i, severity: 75 },
58
+ { name: "enable_all", pattern: /enable\s+all\s+(capabilities|features?|functions?)/i, severity: 80 },
59
+ ];
60
+ // Default capability levels
61
+ this.DEFAULT_CAPABILITY_LEVELS = {
62
+ 0: ["read_only", "query"],
63
+ 25: ["read_only", "query", "suggest", "analyze"],
64
+ 50: ["read_only", "query", "suggest", "analyze", "create_draft", "modify_draft"],
65
+ 75: ["read_only", "query", "suggest", "analyze", "create_draft", "modify_draft", "execute_safe", "api_call_internal"],
66
+ 100: ["read_only", "query", "suggest", "analyze", "create_draft", "modify_draft", "execute_safe", "api_call_internal", "execute_any", "api_call_external", "modify_system"],
67
+ };
68
+ this.config = {
69
+ maxAutonomyLevel: config.maxAutonomyLevel ?? 75,
70
+ baseAutonomyLevel: config.baseAutonomyLevel ?? 25,
71
+ detectSelfModification: config.detectSelfModification ?? true,
72
+ controlSubAgents: config.controlSubAgents ?? true,
73
+ maxSubAgents: config.maxSubAgents ?? 3,
74
+ escalationRequiredActions: config.escalationRequiredActions ?? [
75
+ "execute_code",
76
+ "modify_system",
77
+ "api_call_external",
78
+ "spawn_agent",
79
+ "modify_config",
80
+ ],
81
+ enforceCapabilityBoundaries: config.enforceCapabilityBoundaries ?? true,
82
+ capabilityLevels: config.capabilityLevels ?? this.DEFAULT_CAPABILITY_LEVELS,
83
+ enforceHITL: config.enforceHITL ?? true,
84
+ alwaysRequireHuman: config.alwaysRequireHuman ?? [
85
+ "delete_data",
86
+ "payment_process",
87
+ "credential_modify",
88
+ "user_data_export",
89
+ "system_shutdown",
90
+ ],
91
+ };
92
+ }
93
+ /**
94
+ * Validate an autonomy-related action or request
95
+ */
96
+ validate(action, sessionId, params, requestId) {
97
+ const reqId = requestId || `auto-${Date.now()}`;
98
+ const violations = [];
99
+ const escalationPatterns = [];
100
+ // Get or create agent state
101
+ let state = this.agentStates.get(sessionId);
102
+ if (!state) {
103
+ state = this.createAgentState();
104
+ this.agentStates.set(sessionId, state);
105
+ }
106
+ let capabilityViolation = false;
107
+ let selfModificationDetected = false;
108
+ let subAgentLimitExceeded = false;
109
+ let hitlRequired = false;
110
+ let requiresApproval = false;
111
+ let approvalType;
112
+ // 1. Check for escalation patterns in action/params
113
+ const textToCheck = `${action} ${JSON.stringify(params || {})}`;
114
+ for (const { name, pattern, severity } of this.ESCALATION_PATTERNS) {
115
+ if (pattern.test(textToCheck)) {
116
+ escalationPatterns.push(name);
117
+ if (severity >= 80) {
118
+ violations.push(`escalation_pattern: ${name}`);
119
+ }
120
+ if (name.includes("modify") || name.includes("change") || name.includes("disable")) {
121
+ selfModificationDetected = true;
122
+ }
123
+ }
124
+ }
125
+ // 2. Check if action requires escalation approval
126
+ if (this.config.escalationRequiredActions.includes(action)) {
127
+ requiresApproval = true;
128
+ approvalType = "admin";
129
+ violations.push(`escalation_required: ${action}`);
130
+ }
131
+ // 3. Check capability boundaries
132
+ if (this.config.enforceCapabilityBoundaries) {
133
+ const allowedCapabilities = this.getCapabilitiesForLevel(state.autonomy_level);
134
+ if (!allowedCapabilities.includes(action) && !state.capabilities.has(action)) {
135
+ capabilityViolation = true;
136
+ violations.push(`capability_violation: ${action} not allowed at level ${state.autonomy_level}`);
137
+ requiresApproval = true;
138
+ approvalType = "admin";
139
+ }
140
+ }
141
+ // 4. Check for self-modification attempts
142
+ if (this.config.detectSelfModification && selfModificationDetected) {
143
+ violations.push("self_modification_attempt");
144
+ requiresApproval = true;
145
+ approvalType = "human";
146
+ }
147
+ // 5. Check sub-agent limits
148
+ if (this.config.controlSubAgents) {
149
+ if (action === "spawn_agent" || escalationPatterns.some(p => p.includes("spawn") || p.includes("fork") || p.includes("clone"))) {
150
+ if (state.sub_agents.length >= this.config.maxSubAgents) {
151
+ subAgentLimitExceeded = true;
152
+ violations.push(`sub_agent_limit_exceeded: ${state.sub_agents.length}/${this.config.maxSubAgents}`);
153
+ }
154
+ else {
155
+ requiresApproval = true;
156
+ approvalType = "human";
157
+ }
158
+ }
159
+ }
160
+ // 6. Check HITL enforcement
161
+ if (this.config.enforceHITL) {
162
+ if (this.config.alwaysRequireHuman.includes(action)) {
163
+ hitlRequired = true;
164
+ requiresApproval = true;
165
+ approvalType = "human";
166
+ }
167
+ }
168
+ // 7. Check for autonomy level escalation in params
169
+ if (params?.autonomy_level !== undefined) {
170
+ const requestedLevel = Number(params.autonomy_level);
171
+ if (requestedLevel > state.autonomy_level) {
172
+ violations.push(`autonomy_level_escalation: ${state.autonomy_level} -> ${requestedLevel}`);
173
+ requiresApproval = true;
174
+ approvalType = "admin";
175
+ }
176
+ if (requestedLevel > this.config.maxAutonomyLevel) {
177
+ violations.push(`autonomy_level_exceeds_max: ${requestedLevel} > ${this.config.maxAutonomyLevel}`);
178
+ }
179
+ }
180
+ // Determine if action should be blocked
181
+ const highSeverityPatterns = escalationPatterns.filter(p => {
182
+ const pattern = this.ESCALATION_PATTERNS.find(ep => ep.name === p);
183
+ return pattern && pattern.severity >= 85;
184
+ });
185
+ const blocked = (selfModificationDetected && this.config.detectSelfModification) ||
186
+ subAgentLimitExceeded ||
187
+ capabilityViolation ||
188
+ violations.length >= 3 ||
189
+ highSeverityPatterns.length >= 1 ||
190
+ (requiresApproval && this.config.escalationRequiredActions.includes(action));
191
+ return {
192
+ allowed: !blocked,
193
+ reason: blocked
194
+ ? `Autonomy escalation blocked: ${violations.slice(0, 3).join(", ")}`
195
+ : requiresApproval
196
+ ? "Action requires approval"
197
+ : "Action validated",
198
+ violations,
199
+ request_id: reqId,
200
+ analysis: {
201
+ current_autonomy_level: state.autonomy_level,
202
+ requested_autonomy_level: params?.autonomy_level,
203
+ capability_violation: capabilityViolation,
204
+ self_modification_detected: selfModificationDetected,
205
+ sub_agent_limit_exceeded: subAgentLimitExceeded,
206
+ hitl_required: hitlRequired,
207
+ escalation_patterns_detected: escalationPatterns,
208
+ },
209
+ requires_approval: requiresApproval,
210
+ approval_type: approvalType,
211
+ recommendations: this.generateRecommendations(violations, state.autonomy_level, requiresApproval),
212
+ };
213
+ }
214
+ /**
215
+ * Request autonomy escalation
216
+ */
217
+ requestEscalation(sessionId, request) {
218
+ const reqId = `esc-${Date.now()}`;
219
+ const violations = [];
220
+ let state = this.agentStates.get(sessionId);
221
+ if (!state) {
222
+ state = this.createAgentState();
223
+ this.agentStates.set(sessionId, state);
224
+ }
225
+ const fullRequest = {
226
+ ...request,
227
+ request_id: reqId,
228
+ timestamp: Date.now(),
229
+ };
230
+ // Check if similar request was recently denied
231
+ const recentDenial = state.denied_requests.find(r => r.request_type === request.request_type &&
232
+ r.requested_capability === request.requested_capability &&
233
+ Date.now() - r.timestamp < 5 * 60 * 1000 // 5 minutes
234
+ );
235
+ if (recentDenial) {
236
+ violations.push("repeated_denied_request");
237
+ return {
238
+ allowed: false,
239
+ reason: "Similar request was recently denied",
240
+ violations,
241
+ request_id: reqId,
242
+ analysis: {
243
+ current_autonomy_level: state.autonomy_level,
244
+ requested_autonomy_level: request.requested_level,
245
+ capability_violation: false,
246
+ self_modification_detected: request.request_type === "self_modify",
247
+ sub_agent_limit_exceeded: false,
248
+ hitl_required: true,
249
+ escalation_patterns_detected: [],
250
+ },
251
+ requires_approval: false,
252
+ recommendations: ["Wait before retrying escalation request", "Provide additional justification"],
253
+ };
254
+ }
255
+ // Validate based on request type
256
+ let blocked = false;
257
+ let approvalType = "admin";
258
+ switch (request.request_type) {
259
+ case "self_modify":
260
+ blocked = true;
261
+ violations.push("self_modification_blocked");
262
+ break;
263
+ case "level_increase":
264
+ if (request.requested_level !== undefined) {
265
+ if (request.requested_level > this.config.maxAutonomyLevel) {
266
+ blocked = true;
267
+ violations.push("exceeds_max_autonomy_level");
268
+ }
269
+ else if (request.requested_level > state.autonomy_level + 25) {
270
+ violations.push("large_autonomy_jump");
271
+ approvalType = "human";
272
+ }
273
+ }
274
+ break;
275
+ case "spawn_agent":
276
+ if (state.sub_agents.length >= this.config.maxSubAgents) {
277
+ blocked = true;
278
+ violations.push("sub_agent_limit_reached");
279
+ }
280
+ else {
281
+ approvalType = "human";
282
+ }
283
+ break;
284
+ case "capability_expansion":
285
+ approvalType = "admin";
286
+ break;
287
+ case "bypass_hitl":
288
+ blocked = true;
289
+ violations.push("hitl_bypass_not_allowed");
290
+ break;
291
+ case "persist_state":
292
+ approvalType = "human";
293
+ break;
294
+ }
295
+ // Add to pending or denied requests
296
+ if (blocked) {
297
+ state.denied_requests.push(fullRequest);
298
+ // Keep only last 10 denied requests
299
+ if (state.denied_requests.length > 10) {
300
+ state.denied_requests.shift();
301
+ }
302
+ }
303
+ else {
304
+ state.pending_requests.push(fullRequest);
305
+ }
306
+ this.agentStates.set(sessionId, state);
307
+ return {
308
+ allowed: !blocked,
309
+ reason: blocked
310
+ ? `Escalation request denied: ${violations.join(", ")}`
311
+ : "Escalation request pending approval",
312
+ violations,
313
+ request_id: reqId,
314
+ analysis: {
315
+ current_autonomy_level: state.autonomy_level,
316
+ requested_autonomy_level: request.requested_level,
317
+ capability_violation: false,
318
+ self_modification_detected: request.request_type === "self_modify",
319
+ sub_agent_limit_exceeded: state.sub_agents.length >= this.config.maxSubAgents,
320
+ hitl_required: true,
321
+ escalation_patterns_detected: [],
322
+ },
323
+ requires_approval: !blocked,
324
+ approval_type: approvalType,
325
+ recommendations: this.generateRecommendations(violations, state.autonomy_level, !blocked),
326
+ };
327
+ }
328
+ /**
329
+ * Approve a pending escalation request (called by human/admin)
330
+ */
331
+ approveEscalation(sessionId, requestId) {
332
+ const state = this.agentStates.get(sessionId);
333
+ if (!state)
334
+ return false;
335
+ const requestIndex = state.pending_requests.findIndex(r => r.request_id === requestId);
336
+ if (requestIndex === -1)
337
+ return false;
338
+ const request = state.pending_requests[requestIndex];
339
+ state.pending_requests.splice(requestIndex, 1);
340
+ // Apply the escalation
341
+ switch (request.request_type) {
342
+ case "level_increase":
343
+ if (request.requested_level !== undefined) {
344
+ state.autonomy_level = Math.min(request.requested_level, this.config.maxAutonomyLevel);
345
+ }
346
+ break;
347
+ case "capability_expansion":
348
+ if (request.requested_capability) {
349
+ state.capabilities.add(request.requested_capability);
350
+ }
351
+ break;
352
+ case "spawn_agent":
353
+ if (request.metadata?.agent_id) {
354
+ state.sub_agents.push(request.metadata.agent_id);
355
+ }
356
+ break;
357
+ }
358
+ state.last_capability_change = Date.now();
359
+ state.hitl_checkpoints++;
360
+ this.agentStates.set(sessionId, state);
361
+ return true;
362
+ }
363
+ /**
364
+ * Deny a pending escalation request
365
+ */
366
+ denyEscalation(sessionId, requestId) {
367
+ const state = this.agentStates.get(sessionId);
368
+ if (!state)
369
+ return false;
370
+ const requestIndex = state.pending_requests.findIndex(r => r.request_id === requestId);
371
+ if (requestIndex === -1)
372
+ return false;
373
+ const request = state.pending_requests[requestIndex];
374
+ state.pending_requests.splice(requestIndex, 1);
375
+ state.denied_requests.push(request);
376
+ // Reduce autonomy level slightly after denied escalation
377
+ state.autonomy_level = Math.max(0, state.autonomy_level - 5);
378
+ this.agentStates.set(sessionId, state);
379
+ return true;
380
+ }
381
+ /**
382
+ * Register a sub-agent
383
+ */
384
+ registerSubAgent(sessionId, subAgentId) {
385
+ let state = this.agentStates.get(sessionId);
386
+ if (!state) {
387
+ state = this.createAgentState();
388
+ this.agentStates.set(sessionId, state);
389
+ }
390
+ if (state.sub_agents.length >= this.config.maxSubAgents) {
391
+ return false;
392
+ }
393
+ state.sub_agents.push(subAgentId);
394
+ this.agentStates.set(sessionId, state);
395
+ return true;
396
+ }
397
+ /**
398
+ * Get current agent capabilities
399
+ */
400
+ getAgentState(sessionId) {
401
+ return this.agentStates.get(sessionId);
402
+ }
403
+ /**
404
+ * Set autonomy level directly (admin only)
405
+ */
406
+ setAutonomyLevel(sessionId, level) {
407
+ let state = this.agentStates.get(sessionId);
408
+ if (!state) {
409
+ state = this.createAgentState();
410
+ }
411
+ state.autonomy_level = Math.min(level, this.config.maxAutonomyLevel);
412
+ state.last_capability_change = Date.now();
413
+ this.agentStates.set(sessionId, state);
414
+ }
415
+ /**
416
+ * Reset agent state
417
+ */
418
+ resetSession(sessionId) {
419
+ this.agentStates.delete(sessionId);
420
+ }
421
+ // Private methods
422
+ createAgentState() {
423
+ return {
424
+ capabilities: new Set(this.getCapabilitiesForLevel(this.config.baseAutonomyLevel)),
425
+ autonomy_level: this.config.baseAutonomyLevel,
426
+ sub_agents: [],
427
+ pending_requests: [],
428
+ denied_requests: [],
429
+ last_capability_change: Date.now(),
430
+ hitl_checkpoints: 0,
431
+ };
432
+ }
433
+ getCapabilitiesForLevel(level) {
434
+ // Find the highest level that doesn't exceed the current level
435
+ const levels = Object.keys(this.config.capabilityLevels)
436
+ .map(Number)
437
+ .filter(l => l <= level)
438
+ .sort((a, b) => b - a);
439
+ if (levels.length === 0)
440
+ return [];
441
+ return this.config.capabilityLevels[levels[0]] || [];
442
+ }
443
+ generateRecommendations(violations, autonomyLevel, requiresApproval) {
444
+ const recommendations = [];
445
+ if (violations.some(v => v.includes("self_modification"))) {
446
+ recommendations.push("Self-modification is not allowed - use approved update channels");
447
+ }
448
+ if (violations.some(v => v.includes("capability_violation"))) {
449
+ recommendations.push("Request capability expansion through proper escalation process");
450
+ }
451
+ if (violations.some(v => v.includes("sub_agent"))) {
452
+ recommendations.push("Sub-agent limit reached - terminate existing agents before spawning new ones");
453
+ }
454
+ if (violations.some(v => v.includes("autonomy_level"))) {
455
+ recommendations.push("Request autonomy increase through formal escalation process");
456
+ }
457
+ if (requiresApproval) {
458
+ recommendations.push("Wait for human/admin approval before proceeding");
459
+ }
460
+ if (autonomyLevel < 50) {
461
+ recommendations.push("Build trust through successful operations to increase autonomy level");
462
+ }
463
+ if (recommendations.length === 0) {
464
+ recommendations.push("Continue operating within current capability boundaries");
465
+ }
466
+ return recommendations;
467
+ }
468
+ }
469
+ exports.AutonomyEscalationGuard = AutonomyEscalationGuard;
470
+ //# sourceMappingURL=autonomy-escalation-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autonomy-escalation-guard.js","sourceRoot":"","sources":["../../src/guards/autonomy-escalation-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * CircuitBreaker (L13)
3
+ *
4
+ * Prevents cascade failures in agentic workflows.
5
+ * Implements the circuit breaker pattern for LLM operations.
6
+ *
7
+ * Threat Model:
8
+ * - ASI08: Cascading Failures
9
+ * - Runaway agent behavior
10
+ * - Resource exhaustion via retries
11
+ *
12
+ * Protection Capabilities:
13
+ * - Failure rate monitoring
14
+ * - Automatic circuit opening
15
+ * - Graceful degradation
16
+ * - Recovery detection
17
+ * - Rollback triggers
18
+ */
19
+ export interface CircuitBreakerConfig {
20
+ /** Failure threshold percentage to open circuit (0-100) */
21
+ failureThreshold?: number;
22
+ /** Minimum number of requests before threshold applies */
23
+ minimumRequests?: number;
24
+ /** Time window for failure counting in milliseconds */
25
+ windowSize?: number;
26
+ /** Time to wait before attempting recovery in milliseconds */
27
+ recoveryTimeout?: number;
28
+ /** Number of successful requests to close circuit */
29
+ successThreshold?: number;
30
+ /** Enable automatic recovery attempts */
31
+ autoRecover?: boolean;
32
+ /** Maximum consecutive failures before forced open */
33
+ maxConsecutiveFailures?: number;
34
+ /** Callback when circuit opens */
35
+ onOpen?: (circuitId: string, stats: CircuitStats) => void;
36
+ /** Callback when circuit closes */
37
+ onClose?: (circuitId: string, stats: CircuitStats) => void;
38
+ /** Callback when circuit half-opens */
39
+ onHalfOpen?: (circuitId: string) => void;
40
+ }
41
+ export type CircuitState = "closed" | "open" | "half-open";
42
+ export interface CircuitStats {
43
+ totalRequests: number;
44
+ successfulRequests: number;
45
+ failedRequests: number;
46
+ consecutiveFailures: number;
47
+ consecutiveSuccesses: number;
48
+ failureRate: number;
49
+ lastFailure?: number;
50
+ lastSuccess?: number;
51
+ stateChangedAt: number;
52
+ }
53
+ export interface CircuitBreakerResult {
54
+ allowed: boolean;
55
+ state: CircuitState;
56
+ reason: string;
57
+ request_id: string;
58
+ stats: CircuitStats;
59
+ fallback_recommended: boolean;
60
+ retry_after?: number;
61
+ }
62
+ export interface OperationResult {
63
+ success: boolean;
64
+ duration: number;
65
+ error?: string;
66
+ }
67
+ export declare class CircuitBreaker {
68
+ private config;
69
+ private circuits;
70
+ constructor(config?: CircuitBreakerConfig);
71
+ /**
72
+ * Check if operation should be allowed through circuit
73
+ */
74
+ check(circuitId: string, requestId?: string): CircuitBreakerResult;
75
+ /**
76
+ * Record operation result
77
+ */
78
+ recordResult(circuitId: string, result: OperationResult): void;
79
+ /**
80
+ * Record a successful operation
81
+ */
82
+ recordSuccess(circuitId: string, duration?: number): void;
83
+ /**
84
+ * Record a failed operation
85
+ */
86
+ recordFailure(circuitId: string, error?: string, duration?: number): void;
87
+ /**
88
+ * Get current state of a circuit
89
+ */
90
+ getState(circuitId: string): CircuitState;
91
+ /**
92
+ * Get stats for a circuit
93
+ */
94
+ getStats(circuitId: string): CircuitStats | null;
95
+ /**
96
+ * Get all circuit IDs
97
+ */
98
+ getCircuitIds(): string[];
99
+ /**
100
+ * Force open a circuit
101
+ */
102
+ forceOpen(circuitId: string): void;
103
+ /**
104
+ * Force close a circuit
105
+ */
106
+ forceClose(circuitId: string): void;
107
+ /**
108
+ * Reset a circuit to initial state
109
+ */
110
+ reset(circuitId: string): void;
111
+ /**
112
+ * Reset all circuits
113
+ */
114
+ resetAll(): void;
115
+ /**
116
+ * Execute operation with circuit breaker protection
117
+ */
118
+ execute<T>(circuitId: string, operation: () => Promise<T>, fallback?: () => Promise<T>): Promise<{
119
+ result?: T;
120
+ fallbackUsed: boolean;
121
+ error?: string;
122
+ }>;
123
+ /**
124
+ * Health check across all circuits
125
+ */
126
+ healthCheck(): {
127
+ healthy: boolean;
128
+ circuits: Array<{
129
+ id: string;
130
+ state: CircuitState;
131
+ failureRate: number;
132
+ }>;
133
+ openCircuits: number;
134
+ };
135
+ private getOrCreateCircuit;
136
+ private openCircuit;
137
+ private closeCircuit;
138
+ private transitionToHalfOpen;
139
+ private cleanupWindow;
140
+ private countInWindow;
141
+ }
142
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/guards/circuit-breaker.ts"],"names":[],"mappings":"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"}