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,281 @@
1
+ "use strict";
2
+ /**
3
+ * ConversationGuard
4
+ *
5
+ * Detects and prevents multi-turn manipulation attacks by:
6
+ * - Tracking conversation history patterns
7
+ * - Detecting gradual privilege escalation attempts
8
+ * - Identifying context manipulation across turns
9
+ * - Blocking suspicious conversation trajectories
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConversationGuard = void 0;
13
+ class ConversationGuard {
14
+ constructor(config = {}) {
15
+ this.sessions = new Map();
16
+ this.defaultManipulationPatterns = [
17
+ // Escalation patterns
18
+ {
19
+ name: "role_claim",
20
+ pattern: /(?:i am|i'm|as|acting as)\s+(?:an?\s+)?(?:admin|administrator|root|superuser|manager|supervisor)/gi,
21
+ weight: 3,
22
+ category: "escalation",
23
+ },
24
+ {
25
+ name: "permission_request",
26
+ pattern: /(?:give me|grant me|i need|enable|unlock)\s+(?:access|permission|privileges|admin|root)/gi,
27
+ weight: 4,
28
+ category: "escalation",
29
+ },
30
+ {
31
+ name: "bypass_attempt",
32
+ pattern: /(?:bypass|skip|ignore|override|disable)\s+(?:security|check|validation|permission|auth)/gi,
33
+ weight: 5,
34
+ category: "escalation",
35
+ },
36
+ // Confusion patterns
37
+ {
38
+ name: "context_switch",
39
+ pattern: /(?:forget|ignore|disregard)\s+(?:previous|earlier|what i said|instructions)/gi,
40
+ weight: 4,
41
+ category: "confusion",
42
+ },
43
+ {
44
+ name: "role_confusion",
45
+ pattern: /(?:you are now|pretend to be|act as if|imagine you're)\s+/gi,
46
+ weight: 4,
47
+ category: "confusion",
48
+ },
49
+ {
50
+ name: "scenario_framing",
51
+ pattern: /(?:in this scenario|hypothetically|let's say|imagine that|pretend that)/gi,
52
+ weight: 2,
53
+ category: "confusion",
54
+ },
55
+ // Override patterns
56
+ {
57
+ name: "instruction_override",
58
+ pattern: /(?:new instructions?|override|update your|change your)\s+(?:are|is|:)/gi,
59
+ weight: 5,
60
+ category: "override",
61
+ },
62
+ {
63
+ name: "system_impersonation",
64
+ pattern: /(?:\[system\]|\[admin\]|system:|\bSYSTEM\b|ADMIN:)/gi,
65
+ weight: 5,
66
+ category: "override",
67
+ },
68
+ {
69
+ name: "priority_claim",
70
+ pattern: /(?:priority|urgent|important|critical)[:.]?\s*(?:override|ignore|bypass)/gi,
71
+ weight: 4,
72
+ category: "override",
73
+ },
74
+ // Extraction patterns
75
+ {
76
+ name: "data_extraction",
77
+ pattern: /(?:list all|show me all|dump|export|extract)\s+(?:users|data|records|passwords|credentials)/gi,
78
+ weight: 4,
79
+ category: "extraction",
80
+ },
81
+ {
82
+ name: "internal_query",
83
+ pattern: /(?:what are your|tell me your|reveal your)\s+(?:instructions|rules|prompts|system)/gi,
84
+ weight: 3,
85
+ category: "extraction",
86
+ },
87
+ ];
88
+ this.config = {
89
+ maxConversationLength: config.maxConversationLength ?? 50,
90
+ conversationTTLMinutes: config.conversationTTLMinutes ?? 30,
91
+ escalationThreshold: config.escalationThreshold ?? 10,
92
+ manipulationPatterns: config.manipulationPatterns ?? this.defaultManipulationPatterns,
93
+ detectToneShifts: config.detectToneShifts ?? true,
94
+ detectRoleConfusion: config.detectRoleConfusion ?? true,
95
+ detectInstructionOverride: config.detectInstructionOverride ?? true,
96
+ };
97
+ // Cleanup expired sessions periodically
98
+ setInterval(() => this.cleanupSessions(), 60000);
99
+ }
100
+ /**
101
+ * Analyze a new user message in context of the conversation
102
+ */
103
+ check(sessionId, userMessage, toolCalls, claimedRole, requestId = "") {
104
+ const violations = [];
105
+ const riskFactors = [];
106
+ const suspiciousPatterns = [];
107
+ let riskScore = 0;
108
+ // Get or create session
109
+ const session = this.getOrCreateSession(sessionId);
110
+ // Add new turn
111
+ const turn = {
112
+ timestamp: Date.now(),
113
+ role: "user",
114
+ content: userMessage,
115
+ tool_calls: toolCalls,
116
+ risk_indicators: [],
117
+ };
118
+ // Check for manipulation patterns
119
+ for (const pattern of this.config.manipulationPatterns) {
120
+ if (pattern.pattern.test(userMessage)) {
121
+ riskScore += pattern.weight;
122
+ riskFactors.push({
123
+ factor: pattern.name,
124
+ weight: pattern.weight,
125
+ details: `Detected ${pattern.category} pattern: ${pattern.name}`,
126
+ });
127
+ turn.risk_indicators?.push(pattern.name);
128
+ suspiciousPatterns.push(pattern.name);
129
+ violations.push(`MANIPULATION_${pattern.category.toUpperCase()}_${pattern.name.toUpperCase()}`);
130
+ if (pattern.category === "escalation") {
131
+ session.escalation_attempts++;
132
+ }
133
+ session.manipulation_indicators++;
134
+ }
135
+ }
136
+ // Check for role confusion across turns
137
+ if (claimedRole && this.config.detectRoleConfusion) {
138
+ if (session.initial_role && claimedRole !== session.initial_role) {
139
+ riskScore += 3;
140
+ riskFactors.push({
141
+ factor: "role_change",
142
+ weight: 3,
143
+ details: `Role changed from ${session.initial_role} to ${claimedRole}`,
144
+ });
145
+ violations.push("ROLE_CHANGE_DETECTED");
146
+ }
147
+ if (!session.claimed_roles.includes(claimedRole)) {
148
+ session.claimed_roles.push(claimedRole);
149
+ }
150
+ if (!session.initial_role) {
151
+ session.initial_role = claimedRole;
152
+ }
153
+ }
154
+ // Check for progressive escalation
155
+ if (session.escalation_attempts >= 3) {
156
+ riskScore += 5;
157
+ riskFactors.push({
158
+ factor: "progressive_escalation",
159
+ weight: 5,
160
+ details: `${session.escalation_attempts} escalation attempts detected`,
161
+ });
162
+ violations.push("PROGRESSIVE_ESCALATION");
163
+ }
164
+ // Check conversation trajectory
165
+ if (session.turns.length > 5) {
166
+ const recentManipulation = session.turns
167
+ .slice(-5)
168
+ .filter((t) => (t.risk_indicators?.length ?? 0) > 0).length;
169
+ if (recentManipulation >= 3) {
170
+ riskScore += 4;
171
+ riskFactors.push({
172
+ factor: "sustained_manipulation",
173
+ weight: 4,
174
+ details: `${recentManipulation} of last 5 turns show manipulation attempts`,
175
+ });
176
+ violations.push("SUSTAINED_MANIPULATION");
177
+ }
178
+ }
179
+ // Check for sensitive tool sequences
180
+ if (toolCalls && toolCalls.length > 0) {
181
+ const sensitiveTools = ["delete", "modify", "admin", "system", "config"];
182
+ const hasSensitiveTool = toolCalls.some((t) => sensitiveTools.some((s) => t.toLowerCase().includes(s)));
183
+ if (hasSensitiveTool && session.manipulation_indicators > 0) {
184
+ riskScore += 3;
185
+ riskFactors.push({
186
+ factor: "sensitive_tool_after_manipulation",
187
+ weight: 3,
188
+ details: "Sensitive tool call following manipulation attempts",
189
+ });
190
+ violations.push("SENSITIVE_TOOL_AFTER_MANIPULATION");
191
+ }
192
+ }
193
+ // Add turn to session
194
+ session.turns.push(turn);
195
+ session.last_activity = Date.now();
196
+ // Trim session if too long
197
+ if (session.turns.length > this.config.maxConversationLength) {
198
+ session.turns = session.turns.slice(-this.config.maxConversationLength);
199
+ }
200
+ // Determine if blocked
201
+ const allowed = riskScore < this.config.escalationThreshold;
202
+ if (!allowed) {
203
+ console.log(`[ConversationGuard:${requestId}] BLOCKED: Risk score ${riskScore} exceeds threshold`);
204
+ }
205
+ return {
206
+ allowed,
207
+ reason: allowed
208
+ ? undefined
209
+ : `Conversation risk score ${riskScore} exceeds threshold ${this.config.escalationThreshold}`,
210
+ violations,
211
+ risk_score: riskScore,
212
+ risk_factors: riskFactors,
213
+ conversation_analysis: {
214
+ turn_count: session.turns.length,
215
+ escalation_attempts: session.escalation_attempts,
216
+ manipulation_indicators: session.manipulation_indicators,
217
+ suspicious_patterns: suspiciousPatterns,
218
+ },
219
+ };
220
+ }
221
+ /**
222
+ * Record assistant response (for complete conversation tracking)
223
+ */
224
+ recordResponse(sessionId, response, toolCalls) {
225
+ const session = this.sessions.get(sessionId);
226
+ if (session) {
227
+ session.turns.push({
228
+ timestamp: Date.now(),
229
+ role: "assistant",
230
+ content: response,
231
+ tool_calls: toolCalls,
232
+ });
233
+ session.last_activity = Date.now();
234
+ }
235
+ }
236
+ /**
237
+ * Get session analysis
238
+ */
239
+ getSessionAnalysis(sessionId) {
240
+ const session = this.sessions.get(sessionId);
241
+ if (!session)
242
+ return null;
243
+ return {
244
+ turn_count: session.turns.length,
245
+ escalation_attempts: session.escalation_attempts,
246
+ manipulation_indicators: session.manipulation_indicators,
247
+ claimed_roles: session.claimed_roles,
248
+ session_age_minutes: (Date.now() - session.turns[0]?.timestamp || 0) / 60000,
249
+ };
250
+ }
251
+ /**
252
+ * Reset a session
253
+ */
254
+ resetSession(sessionId) {
255
+ this.sessions.delete(sessionId);
256
+ }
257
+ getOrCreateSession(sessionId) {
258
+ if (!this.sessions.has(sessionId)) {
259
+ this.sessions.set(sessionId, {
260
+ id: sessionId,
261
+ turns: [],
262
+ escalation_attempts: 0,
263
+ manipulation_indicators: 0,
264
+ last_activity: Date.now(),
265
+ claimed_roles: [],
266
+ });
267
+ }
268
+ return this.sessions.get(sessionId);
269
+ }
270
+ cleanupSessions() {
271
+ const ttlMs = this.config.conversationTTLMinutes * 60000;
272
+ const now = Date.now();
273
+ for (const [id, session] of this.sessions.entries()) {
274
+ if (now - session.last_activity > ttlMs) {
275
+ this.sessions.delete(id);
276
+ }
277
+ }
278
+ }
279
+ }
280
+ exports.ConversationGuard = ConversationGuard;
281
+ //# sourceMappingURL=conversation-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-guard.js","sourceRoot":"","sources":["../../src/guards/conversation-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * DriftDetector (L14)
3
+ *
4
+ * Detects behavioral drift from intended agent purpose.
5
+ * Monitors for rogue agent behavior and goal misalignment.
6
+ *
7
+ * Threat Model:
8
+ * - ASI10: Rogue Agents
9
+ * - Goal misalignment
10
+ * - Behavioral drift over time
11
+ *
12
+ * Protection Capabilities:
13
+ * - Baseline behavior profiling
14
+ * - Anomaly detection
15
+ * - Goal alignment verification
16
+ * - Continuous monitoring
17
+ * - Alert thresholds
18
+ */
19
+ export interface DriftDetectorConfig {
20
+ /** Minimum samples before drift detection activates */
21
+ minimumSamples?: number;
22
+ /** Standard deviation threshold for anomaly detection */
23
+ anomalyThreshold?: number;
24
+ /** Time window for baseline calculation in milliseconds */
25
+ baselineWindow?: number;
26
+ /** Enable automatic baseline updates */
27
+ autoUpdateBaseline?: boolean;
28
+ /** Maximum drift score before alert (0-100) */
29
+ alertThreshold?: number;
30
+ /** Enable goal alignment checking */
31
+ checkGoalAlignment?: boolean;
32
+ /** Callback when drift is detected */
33
+ onDrift?: (agentId: string, analysis: DriftAnalysis) => void;
34
+ /** Callback when agent returns to baseline */
35
+ onRecovery?: (agentId: string) => void;
36
+ }
37
+ export interface BehaviorSample {
38
+ /** Timestamp of the sample */
39
+ timestamp: number;
40
+ /** Tools/actions used */
41
+ tools: string[];
42
+ /** Topics/domains accessed */
43
+ topics: string[];
44
+ /** Sentiment indicator (-1 to 1) */
45
+ sentiment: number;
46
+ /** Response length */
47
+ responseLength: number;
48
+ /** Time to respond in milliseconds */
49
+ responseTime: number;
50
+ /** Error occurred */
51
+ hadError: boolean;
52
+ /** User satisfaction (if available, 0-1) */
53
+ satisfaction?: number;
54
+ /** Goal alignment indicators */
55
+ goalIndicators?: Record<string, number>;
56
+ /** Custom metrics */
57
+ customMetrics?: Record<string, number>;
58
+ }
59
+ export interface BaselineProfile {
60
+ /** Average tool usage distribution */
61
+ toolDistribution: Record<string, number>;
62
+ /** Average topic distribution */
63
+ topicDistribution: Record<string, number>;
64
+ /** Average sentiment */
65
+ avgSentiment: number;
66
+ /** Sentiment standard deviation */
67
+ sentimentStdDev: number;
68
+ /** Average response length */
69
+ avgResponseLength: number;
70
+ /** Response length standard deviation */
71
+ responseLengthStdDev: number;
72
+ /** Average response time */
73
+ avgResponseTime: number;
74
+ /** Response time standard deviation */
75
+ responseTimeStdDev: number;
76
+ /** Error rate */
77
+ errorRate: number;
78
+ /** Average satisfaction */
79
+ avgSatisfaction: number;
80
+ /** Sample count used for baseline */
81
+ sampleCount: number;
82
+ /** When baseline was last updated */
83
+ lastUpdated: number;
84
+ }
85
+ export interface DriftAnalysis {
86
+ /** Overall drift score (0-100) */
87
+ driftScore: number;
88
+ /** Is currently drifting */
89
+ isDrifting: boolean;
90
+ /** Specific drift indicators */
91
+ indicators: DriftIndicator[];
92
+ /** Comparison with baseline */
93
+ baselineComparison: {
94
+ toolDrift: number;
95
+ topicDrift: number;
96
+ sentimentDrift: number;
97
+ responseLengthDrift: number;
98
+ responseTimeDrift: number;
99
+ errorRateDrift: number;
100
+ };
101
+ /** Goal alignment score (if enabled) */
102
+ goalAlignment?: number;
103
+ /** Recommendations */
104
+ recommendations: string[];
105
+ }
106
+ export interface DriftIndicator {
107
+ type: string;
108
+ severity: "low" | "medium" | "high" | "critical";
109
+ description: string;
110
+ currentValue: number | string;
111
+ baselineValue: number | string;
112
+ deviation: number;
113
+ }
114
+ export interface DriftDetectorResult {
115
+ allowed: boolean;
116
+ reason: string;
117
+ request_id: string;
118
+ analysis: DriftAnalysis;
119
+ requires_review: boolean;
120
+ kill_switch_recommended: boolean;
121
+ }
122
+ export declare class DriftDetector {
123
+ private config;
124
+ private samples;
125
+ private baselines;
126
+ private driftState;
127
+ private goalDefinitions;
128
+ constructor(config?: DriftDetectorConfig);
129
+ /**
130
+ * Record a behavior sample
131
+ */
132
+ recordSample(agentId: string, sample: BehaviorSample): void;
133
+ /**
134
+ * Analyze current behavior for drift
135
+ */
136
+ analyze(agentId: string, currentSample?: BehaviorSample, requestId?: string): DriftDetectorResult;
137
+ /**
138
+ * Set baseline manually
139
+ */
140
+ setBaseline(agentId: string, baseline: BaselineProfile): void;
141
+ /**
142
+ * Get current baseline for an agent
143
+ */
144
+ getBaseline(agentId: string): BaselineProfile | null;
145
+ /**
146
+ * Update baseline from collected samples
147
+ */
148
+ updateBaseline(agentId: string): void;
149
+ /**
150
+ * Define goals for goal alignment checking
151
+ */
152
+ defineGoals(agentId: string, goals: Record<string, {
153
+ target: number;
154
+ tolerance: number;
155
+ }>): void;
156
+ /**
157
+ * Get drift state for an agent
158
+ */
159
+ isDrifting(agentId: string): boolean;
160
+ /**
161
+ * Get all agents with drift
162
+ */
163
+ getDriftingAgents(): string[];
164
+ /**
165
+ * Reset agent state
166
+ */
167
+ resetAgent(agentId: string): void;
168
+ /**
169
+ * Get sample count for an agent
170
+ */
171
+ getSampleCount(agentId: string): number;
172
+ private calculateBaseline;
173
+ private performAnalysis;
174
+ private calculateToolDistribution;
175
+ private calculateTopicDistribution;
176
+ private distributionDivergence;
177
+ private checkGoalAlignment;
178
+ private mean;
179
+ private stdDev;
180
+ private generateRecommendations;
181
+ }
182
+ //# sourceMappingURL=drift-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-detector.d.ts","sourceRoot":"","sources":["../../src/guards/drift-detector.ts"],"names":[],"mappings":"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"}