sentinel-agentos 0.3.5 → 0.3.7

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.
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ImplicitFeedbackEngine = void 0;
37
37
  const crypto = __importStar(require("crypto"));
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
38
40
  /**
39
41
  * Generate a unique feedback ID.
40
42
  */
@@ -57,6 +59,11 @@ function generateFeedbackId() {
57
59
  */
58
60
  class ImplicitFeedbackEngine {
59
61
  feedbackLog = [];
62
+ persistPath = null;
63
+ // Global audit log for cross-session auto-detection
64
+ globalAuditPath = null;
65
+ // Track which auto-detected signals we've already logged (dedup key)
66
+ detectedKeys = new Set();
60
67
  /**
61
68
  * Record an implicit feedback signal.
62
69
  */
@@ -73,6 +80,7 @@ class ImplicitFeedbackEngine {
73
80
  source,
74
81
  };
75
82
  this.feedbackLog.push(feedback);
83
+ this.persist();
76
84
  return feedback;
77
85
  }
78
86
  // ══════════════════════════════════
@@ -93,13 +101,89 @@ class ImplicitFeedbackEngine {
93
101
  * @param sessionId Session to attribute signals to
94
102
  * @returns Number of signals auto-detected
95
103
  */
104
+ /**
105
+ * Enable persistence for feedbackLog and auto-detected signal keys.
106
+ */
107
+ enablePersistence(workspaceRoot) {
108
+ const agentosDir = path.join(workspaceRoot, '.agentos');
109
+ if (!fs.existsSync(agentosDir)) {
110
+ fs.mkdirSync(agentosDir, { recursive: true });
111
+ }
112
+ this.persistPath = path.join(agentosDir, 'feedback.jsonl');
113
+ this.globalAuditPath = path.join(agentosDir, 'audit.jsonl');
114
+ this.load();
115
+ }
116
+ /** Persist the current feedbackLog and detectedKeys to disk. */
117
+ persist() {
118
+ if (!this.persistPath)
119
+ return;
120
+ try {
121
+ const snapshot = {
122
+ feedbackLog: this.feedbackLog,
123
+ detectedKeys: Array.from(this.detectedKeys),
124
+ updatedAt: Date.now(),
125
+ };
126
+ fs.writeFileSync(this.persistPath, JSON.stringify(snapshot) + '\n', 'utf-8');
127
+ }
128
+ catch {
129
+ // Non-critical, silently ignore persist failures
130
+ }
131
+ }
132
+ /** Load persisted feedback log from disk. */
133
+ load() {
134
+ if (!this.persistPath)
135
+ return;
136
+ try {
137
+ if (!fs.existsSync(this.persistPath))
138
+ return;
139
+ const content = fs.readFileSync(this.persistPath, 'utf-8').trim();
140
+ if (!content)
141
+ return;
142
+ const snapshot = JSON.parse(content);
143
+ if (Array.isArray(snapshot.feedbackLog)) {
144
+ this.feedbackLog = snapshot.feedbackLog;
145
+ // Remove stale signals older than 7 days to prevent unbounded growth
146
+ const cutoff = Date.now() - 7 * 24 * 60 * 60 * 1000;
147
+ this.feedbackLog = this.feedbackLog.filter((f) => f.timestamp >= cutoff);
148
+ }
149
+ if (Array.isArray(snapshot.detectedKeys)) {
150
+ this.detectedKeys = new Set(snapshot.detectedKeys);
151
+ }
152
+ }
153
+ catch {
154
+ // Corrupt file — start fresh
155
+ }
156
+ }
157
+ /**
158
+ * Cross-session auto-detect: scan the global audit.jsonl for signals
159
+ * from ALL sessions, not just the current one.
160
+ */
161
+ autoDetectGlobal() {
162
+ if (!this.globalAuditPath)
163
+ return 0;
164
+ try {
165
+ if (!fs.existsSync(this.globalAuditPath))
166
+ return 0;
167
+ const content = fs.readFileSync(this.globalAuditPath, 'utf-8');
168
+ const lines = content.split('\n').filter((l) => l.trim());
169
+ const entries = lines.map((l) => JSON.parse(l));
170
+ return this.autoDetect(entries, '__global__');
171
+ }
172
+ catch {
173
+ return 0;
174
+ }
175
+ }
96
176
  autoDetect(entries, sessionId) {
97
177
  let detected = 0;
98
178
  // Rule 1: Verify failures → agent made errors (confidence 0.7)
99
179
  for (const entry of entries) {
100
180
  if (entry.verifyGate.status !== 'PASS') {
101
- this.record('user_provided_correction', sessionId, entry.id, 0.7, 'auto-audit-verify');
102
- detected++;
181
+ const dedupKey = `verify-fail:${entry.id}`;
182
+ if (!this.detectedKeys.has(dedupKey)) {
183
+ this.detectedKeys.add(dedupKey);
184
+ this.record('user_provided_correction', sessionId, entry.id, 0.7, 'auto-audit-verify');
185
+ detected++;
186
+ }
103
187
  }
104
188
  }
105
189
  // Rule 2: Repeated same tool call within 60s → user had to repeat
@@ -113,8 +197,12 @@ class ImplicitFeedbackEngine {
113
197
  if (ei.toolName === ej.toolName &&
114
198
  JSON.stringify(ei.toolParameters) === JSON.stringify(ej.toolParameters) &&
115
199
  Math.abs(ei.completedAt - ej.startedAt) < 60_000) {
116
- this.record('user_repeated_instruction', sessionId, ej.id, 0.3, 'auto-audit-repeat');
117
- detected++;
200
+ const dedupKey = `repeat:${ei.id}:${ej.id}`;
201
+ if (!this.detectedKeys.has(dedupKey)) {
202
+ this.detectedKeys.add(dedupKey);
203
+ this.record('user_repeated_instruction', sessionId, ej.id, 0.3, 'auto-audit-repeat');
204
+ detected++;
205
+ }
118
206
  break;
119
207
  }
120
208
  }
@@ -131,14 +219,115 @@ class ImplicitFeedbackEngine {
131
219
  for (const entry of entries) {
132
220
  const key = JSON.stringify({ t: entry.toolName, p: entry.toolParameters });
133
221
  if (entry.verifyGate.status === 'PASS' && failures.has(key)) {
134
- this.record('agent_self_corrected', sessionId, entry.id, 0.5, 'auto-audit-self-corrected');
135
- detected++;
222
+ const dedupKey = `self-corrected:${entry.id}`;
223
+ if (!this.detectedKeys.has(dedupKey)) {
224
+ this.detectedKeys.add(dedupKey);
225
+ this.record('agent_self_corrected', sessionId, entry.id, 0.5, 'auto-audit-self-corrected');
226
+ detected++;
227
+ }
136
228
  failures.delete(key); // one signal per correction
137
229
  }
138
230
  }
139
231
  return detected;
140
232
  }
141
233
  // ══════════════════════════════════
234
+ // User message analysis — detect correction signals from text
235
+ // ══════════════════════════════════
236
+ /**
237
+ * Analyze user messages to detect implicit correction/feedback signals.
238
+ *
239
+ * Chinese corrective patterns (high precision, low recall — only matches clear signals):
240
+ * - "不对"/"错了"/"不是这样" → user_provided_correction (confidence 0.8)
241
+ * - "漏了"/"缺了"/"没包括"/"遗漏" → user_provided_correction (confidence 0.75)
242
+ * - "你没"/"你怎么"/"你咋" + 负面动作(忘记/漏/没/不) → user_provided_correction (confidence 0.7)
243
+ * - "失忆"/"忘了"/"不记得" → user_provided_correction (confidence 0.85)
244
+ * - "重新"/"再查"/"再搜"/"再看看" → user_repeated_instruction (confidence 0.6)
245
+ * - "不对吧"/"没音信" → user_interrupted (confidence 0.5)
246
+ *
247
+ * English patterns:
248
+ * - "wrong"/"incorrect"/"not right" → user_provided_correction (confidence 0.7)
249
+ * - "missed"/"missing"/"forgot"/"incomplete" → user_provided_correction (confidence 0.7)
250
+ * - "redo"/"again"/"retry"/"try again" → user_repeated_instruction (confidence 0.5)
251
+ *
252
+ * Returns number of signals detected.
253
+ */
254
+ detectFromUserMessages(messages, sessionId) {
255
+ let detected = 0;
256
+ const userMessages = messages.filter((m) => m.role === 'user');
257
+ for (const msg of userMessages) {
258
+ const text = msg.content.toLowerCase();
259
+ const dedupKey = `msg:${msg.ts ?? Date.now()}:${msg.content.substring(0, 40)}`;
260
+ if (this.detectedKeys.has(dedupKey))
261
+ continue;
262
+ // ── Chinese correction patterns ──
263
+ // Strong frustration: "失忆"/"忘了"/"不记得"
264
+ if (/失忆|忘了|(?:怎么|咋).{0,3}(?:忘|漏|没|不记得)/.test(msg.content)) {
265
+ this.detectedKeys.add(dedupKey);
266
+ this.record('user_provided_correction', sessionId, undefined, 0.85, 'auto-msg-correction-strong');
267
+ detected++;
268
+ continue;
269
+ }
270
+ // Direct negation: "不对"/"错了"/"不是这样" (not followed by "吗"/"吧" question)
271
+ if (/(?:不对|错了|不是这样)(?:[吗吧]|的[吗吧])?$/.test(msg.content) ||
272
+ /^(?:不对|错了|不是)!/.test(msg.content)) {
273
+ this.detectedKeys.add(dedupKey);
274
+ this.record('user_provided_correction', sessionId, undefined, 0.8, 'auto-msg-correction-direct');
275
+ detected++;
276
+ continue;
277
+ }
278
+ // Omission: "漏了"/"缺了"/"没包括"/"遗漏"
279
+ if (/漏了|缺了|没包括|遗漏|没统计|没算|少.了/.test(msg.content)) {
280
+ this.detectedKeys.add(dedupKey);
281
+ this.record('user_provided_correction', sessionId, undefined, 0.75, 'auto-msg-correction-omission');
282
+ detected++;
283
+ continue;
284
+ }
285
+ // Agent capability complaint: "你没"/"你怎么"/"你咋" + negative
286
+ if (/(?:你没|你怎么|你咋)(?:.{0,5})(?:听|做|查|看|写|记|算|说|回答|汇总|总结)/.test(msg.content)) {
287
+ this.detectedKeys.add(dedupKey);
288
+ this.record('user_provided_correction', sessionId, undefined, 0.7, 'auto-msg-correction-agent');
289
+ detected++;
290
+ continue;
291
+ }
292
+ // Repeat request: "重新"/"再查"/"再搜"/"再看看"/"再汇总"
293
+ if (/重新.{0,3}(?:做|查|搜|看|写|汇总|弄|搞|来)|再.{0,2}(?:查|搜|看|汇总|弄|搞|试)/.test(msg.content)) {
294
+ this.detectedKeys.add(dedupKey);
295
+ this.record('user_repeated_instruction', sessionId, undefined, 0.6, 'auto-msg-repeat-request');
296
+ detected++;
297
+ continue;
298
+ }
299
+ // Mild interruption: "没音信"/"不对吧"
300
+ if (/没音信|不对吧/.test(msg.content)) {
301
+ this.detectedKeys.add(dedupKey);
302
+ this.record('user_interrupted', sessionId, undefined, 0.5, 'auto-msg-interrupt');
303
+ detected++;
304
+ continue;
305
+ }
306
+ // ── English patterns ──
307
+ // Strong negation
308
+ if (/(?:that.?s|this is|you.?re|you are).{0,5}(?:wrong|incorrect|not right|not correct)/.test(text)) {
309
+ this.detectedKeys.add(dedupKey);
310
+ this.record('user_provided_correction', sessionId, undefined, 0.7, 'auto-msg-correction-en');
311
+ detected++;
312
+ continue;
313
+ }
314
+ // Omission
315
+ if (/(?:missed|missing|forgot|forgotten|incomplete|left out|didn.?t include)/.test(text)) {
316
+ this.detectedKeys.add(dedupKey);
317
+ this.record('user_provided_correction', sessionId, undefined, 0.7, 'auto-msg-omission-en');
318
+ detected++;
319
+ continue;
320
+ }
321
+ // Repeat
322
+ if (/(?:redo|do it again|try again|retry)/.test(text)) {
323
+ this.detectedKeys.add(dedupKey);
324
+ this.record('user_repeated_instruction', sessionId, undefined, 0.5, 'auto-msg-repeat-en');
325
+ detected++;
326
+ }
327
+ }
328
+ return detected;
329
+ }
330
+ // ══════════════════════════════════
142
331
  getSignalStrength(signal) {
143
332
  switch (signal) {
144
333
  case 'user_deleted_code': return -0.8;
@@ -157,12 +346,17 @@ class ImplicitFeedbackEngine {
157
346
  }
158
347
  }
159
348
  getSatisfactionScore(sessionId, recentHours = 24) {
349
+ // If feedbackLog is empty, try auto-detecting from global audit log first
350
+ if (this.feedbackLog.length === 0 && this.globalAuditPath) {
351
+ this.autoDetectGlobal();
352
+ }
160
353
  let relevant = this.feedbackLog;
161
354
  if (sessionId) {
162
355
  relevant = relevant.filter((f) => f.sessionId === sessionId);
163
356
  }
164
357
  const cutoff = Date.now() - recentHours * 60 * 60 * 1000;
165
358
  relevant = relevant.filter((f) => f.timestamp >= cutoff);
359
+ // No signals: return neutral 0 (maps to 50/100 satisfaction) instead of 0
166
360
  if (relevant.length === 0)
167
361
  return 0;
168
362
  let weightedSum = 0;
@@ -170,7 +364,9 @@ class ImplicitFeedbackEngine {
170
364
  for (const fb of relevant) {
171
365
  const ageHours = (Date.now() - fb.timestamp) / (60 * 60 * 1000);
172
366
  const recencyWeight = Math.max(0.1, 1 - ageHours / recentHours);
173
- const weight = fb.confidence * recencyWeight;
367
+ // Auto-detected signals get 0.5x weight discount to avoid polluting stats
368
+ const sourceWeight = fb.source.startsWith('auto-') ? 0.5 : 1.0;
369
+ const weight = fb.confidence * recencyWeight * sourceWeight;
174
370
  weightedSum += fb.strength * weight;
175
371
  totalWeight += weight;
176
372
  }
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/evaluator/feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/evaluator/feedback.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,8 @@ export declare class AgentProfiler {
44
44
  * Record a complete evaluation cycle for one tool call.
45
45
  */
46
46
  recordCycle(sessionId: string, pre: PreExecMetrics, run: RuntimeMetrics, post: PostExecMetrics): void;
47
+ /** Clean up session scores to prevent memory leak */
48
+ clearSession(sessionId: string): void;
47
49
  /**
48
50
  * Build the current agent profile.
49
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/evaluator/profiler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB;IACjB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAyB;IAE/C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,aAAa,CAAoC;gBAE7C,cAAc,EAAE,sBAAsB;IAIlD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAcrG;;OAEG;IACH,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IA0F5C,OAAO,CAAC,OAAO;CAKhB"}
1
+ {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/evaluator/profiler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB;IACjB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAyB;IAE/C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,aAAa,CAAoC;gBAE7C,cAAc,EAAE,sBAAsB;IAIlD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAcrG,qDAAqD;IACrD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IA2F5C,OAAO,CAAC,OAAO;CAKhB"}
@@ -34,34 +34,51 @@ class AgentProfiler {
34
34
  sessionScores.push(post.outcomeScore);
35
35
  this.sessionScores.set(sessionId, sessionScores);
36
36
  }
37
+ /** Clean up session scores to prevent memory leak */
38
+ clearSession(sessionId) {
39
+ this.sessionScores.delete(sessionId);
40
+ }
37
41
  /**
38
42
  * Build the current agent profile.
39
43
  */
40
44
  getProfile(sessionId) {
41
45
  const totalOps = this.preMetrics.length;
42
46
  // Pre-exec scores
43
- const preExecScore = this.average(this.preMetrics.map((m) => ((m.paramQuality.score + m.contextUtilization.score) / 2) * 100));
47
+ const preExecScore = this.average(this.preMetrics.map((m) => ((m.paramQuality.score + m.contextUtilization.score) / 2) * 100)) ?? 0;
44
48
  // Runtime scores
45
- const runtimeScore = this.average(this.runMetrics.map((m) => m.adaptiveScore * 100));
49
+ const runtimeScore = this.average(this.runMetrics.map((m) => m.adaptiveScore * 100)) ?? 0;
46
50
  // Post-exec scores
47
- const postExecScore = this.average(this.postMetrics.map((m) => m.outcomeScore * 100));
51
+ const postExecScore = this.average(this.postMetrics.map((m) => m.outcomeScore * 100)) ?? 0;
48
52
  // User satisfaction
49
53
  const satisfaction = this.feedbackEngine.getSatisfactionScore(sessionId);
50
54
  const satisfactionScore = ((satisfaction + 1) / 2) * 100; // Map -1..1 to 0..100
51
- // Overall: weighted
52
- const overallScore = Math.round(preExecScore * 0.2 +
53
- runtimeScore * 0.25 +
54
- postExecScore * 0.3 +
55
- satisfactionScore * 0.25);
55
+ // Overall: weighted — only include dimensions with data
56
+ let overallScore = 0;
57
+ let totalWeight = 0;
58
+ if (this.preMetrics.length > 0) {
59
+ overallScore += preExecScore * 0.2;
60
+ totalWeight += 0.2;
61
+ }
62
+ if (this.runMetrics.length > 0) {
63
+ overallScore += runtimeScore * 0.25;
64
+ totalWeight += 0.25;
65
+ }
66
+ if (this.postMetrics.length > 0) {
67
+ overallScore += postExecScore * 0.3;
68
+ totalWeight += 0.3;
69
+ }
70
+ overallScore += satisfactionScore * 0.25;
71
+ totalWeight += 0.25; // always include satisfaction
72
+ overallScore = totalWeight > 0 ? Math.round(overallScore / totalWeight) : 50;
56
73
  // Recent trend
57
74
  const recentCutoff = Date.now() - 24 * 60 * 60 * 1000;
58
75
  const recentPre = this.preMetrics.filter((m) => m.timestamp >= recentCutoff);
59
76
  const recentRun = this.runMetrics.slice(-recentPre.length);
60
77
  const recentPost = this.postMetrics.slice(-recentPre.length);
61
78
  const recentScore = recentPre.length > 0
62
- ? Math.round(this.average(recentPre.map((m) => (m.paramQuality.score + m.contextUtilization.score) / 2)) * 100 * 0.2 +
63
- this.average(recentRun.map((m) => m.adaptiveScore)) * 100 * 0.25 +
64
- this.average(recentPost.map((m) => m.outcomeScore)) * 100 * 0.3 +
79
+ ? Math.round((this.average(recentPre.map((m) => (m.paramQuality.score + m.contextUtilization.score) / 2)) ?? 0) * 100 * 0.2 +
80
+ (this.average(recentRun.map((m) => m.adaptiveScore)) ?? 0) * 100 * 0.25 +
81
+ (this.average(recentPost.map((m) => m.outcomeScore)) ?? 0) * 100 * 0.3 +
65
82
  satisfactionScore * 0.25)
66
83
  : overallScore;
67
84
  // Warnings and strengths
@@ -106,7 +123,7 @@ class AgentProfiler {
106
123
  average(values) {
107
124
  return values.length > 0
108
125
  ? values.reduce((s, v) => s + v, 0) / values.length
109
- : 0;
126
+ : null;
110
127
  }
111
128
  }
112
129
  exports.AgentProfiler = AgentProfiler;
@@ -1 +1 @@
1
- {"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../src/evaluator/profiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../src/evaluator/profiler.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,14 @@
1
1
  import { AuditEntry, VerifyStatus, Snapshot, VerifyCheck } from '../types';
2
2
  import { RiskGate } from './risk-gate';
3
3
  import { SchemaGate } from './schema-gate';
4
- /**
5
- * Audit Log — append-only, immutable operation record.
6
- *
7
- * Every tool call that passes through AgentOS Guard gets logged here.
8
- * The log is an append-only JSONL file — entries are never deleted or modified.
9
- *
10
- * In production: use SQLite WAL or a remote append-only service.
11
- * MVP: flat JSONL file.
12
- */
13
4
  export declare class AuditLog {
14
5
  private logPath;
15
6
  private schemaGate;
16
7
  private riskGate;
17
8
  private snapshotGate;
9
+ private entries;
10
+ private sessionIndex;
18
11
  constructor(workspaceRoot: string, schemaGate: SchemaGate, riskGate: RiskGate);
19
- /**
20
- * Record a tool call in the audit log.
21
- *
22
- * Called AFTER execution completes. Returns the full audit entry.
23
- */
24
12
  record(options: {
25
13
  sessionId: string;
26
14
  agentId: string;
@@ -33,9 +21,6 @@ export declare class AuditLog {
33
21
  verifyStatus: VerifyStatus;
34
22
  verifyChecks: VerifyCheck[];
35
23
  }): AuditEntry;
36
- /**
37
- * Query audit entries by filter.
38
- */
39
24
  query(filter?: {
40
25
  sessionId?: string;
41
26
  toolName?: string;
@@ -44,9 +29,6 @@ export declare class AuditLog {
44
29
  maxScore?: number;
45
30
  limit?: number;
46
31
  }): AuditEntry[];
47
- /**
48
- * Get summary statistics from the audit log.
49
- */
50
32
  stats(): {
51
33
  totalOperations: number;
52
34
  byTool: Record<string, number>;
@@ -55,21 +37,11 @@ export declare class AuditLog {
55
37
  sessionsTracked: number;
56
38
  highRiskOps: number;
57
39
  };
58
- /**
59
- * Saintize sensitive parameters before logging.
60
- */
61
40
  private sanitizeParams;
62
- /**
63
- * Truncate large results to prevent log bloat.
64
- */
65
41
  private truncateResult;
66
- /**
67
- * Append an entry to the JSONL audit log file.
68
- */
69
42
  private append;
70
- /**
71
- * Read all audit entries from the log file.
72
- */
73
- private readAll;
43
+ private loadFromDisk;
44
+ /** Get raw entries count (for debugging) */
45
+ get size(): number;
74
46
  }
75
47
  //# sourceMappingURL=audit-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/guard/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAY3C;;;;;;;;GAQG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAe;gBAGjC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ;IAQpB;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,YAAY,CAAC;QAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;KAC7B,GAAG,UAAU;IA2Bd;;OAEG;IACH,KAAK,CAAC,MAAM,GAAE;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,UAAU,EAAE;IAwBrB;;OAEG;IACH,KAAK,IAAI;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB;IA6BD;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,MAAM;IAUd;;OAEG;IACH,OAAO,CAAC,OAAO;CAWhB"}
1
+ {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/guard/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS3C,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,YAAY,CAAwC;gBAG1D,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ;IASpB,MAAM,CAAC,OAAO,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,YAAY,CAAC;QAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;KAC7B,GAAG,UAAU;IA2Bd,KAAK,CAAC,MAAM,GAAE;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,UAAU,EAAE;IA8BrB,KAAK,IAAI;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB;IA6BD,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,YAAY;IAiBpB,4CAA4C;IAC5C,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}