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.
- package/dist/core.d.ts +5 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +66 -3
- package/dist/core.js.map +1 -1
- package/dist/dashboard.html +175 -0
- package/dist/evaluator/feedback.d.ts +39 -0
- package/dist/evaluator/feedback.d.ts.map +1 -1
- package/dist/evaluator/feedback.js +203 -7
- package/dist/evaluator/feedback.js.map +1 -1
- package/dist/evaluator/profiler.d.ts +2 -0
- package/dist/evaluator/profiler.d.ts.map +1 -1
- package/dist/evaluator/profiler.js +29 -12
- package/dist/evaluator/profiler.js.map +1 -1
- package/dist/guard/audit-log.d.ts +5 -33
- package/dist/guard/audit-log.d.ts.map +1 -1
- package/dist/guard/audit-log.js +50 -58
- package/dist/guard/audit-log.js.map +1 -1
- package/dist/memory/semantic.d.ts +2 -2
- package/dist/memory/semantic.d.ts.map +1 -1
- package/dist/memory/semantic.js +8 -3
- package/dist/memory/semantic.js.map +1 -1
- package/dist/memory/working.d.ts.map +1 -1
- package/dist/memory/working.js +16 -0
- package/dist/memory/working.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -1
- package/dist/server.js.map +1 -1
- package/dist/src/dashboard.html +175 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -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
|
-
|
|
102
|
-
|
|
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
|
-
|
|
117
|
-
|
|
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
|
-
|
|
135
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
:
|
|
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":";;;AAkCA;;;;;;GAMG;AACH,MAAa,aAAa;IAChB,cAAc,CAAyB;IAEvC,UAAU,GAAqB,EAAE,CAAC;IAClC,UAAU,GAAqB,EAAE,CAAC;IAClC,WAAW,GAAsB,EAAE,CAAC;IACpC,aAAa,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEzD,YAAY,cAAsC;QAChD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAiB,EAAE,GAAmB,EAAE,GAAmB,EAAE,IAAqB;QAC5F,8CAA8C;QAC9C,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAG,IAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC9D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAkB;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAExC,kBAAkB;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAChE,CACF,CAAC;
|
|
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
|
-
|
|
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;
|
|
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"}
|