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 CHANGED
@@ -127,6 +127,11 @@ export declare class AgentOS {
127
127
  * append daily log, clear working memory.
128
128
  */
129
129
  endSession(sessionId: string, workspaceRoot?: string): void;
130
+ /**
131
+ * Persist WorkingMemory context snapshot to Episodic + disk
132
+ * so the next session can recover key context.
133
+ */
134
+ private persistWorkingContext;
130
135
  /**
131
136
  * Append evaluation summary to daily log file.
132
137
  */
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -68,6 +68,7 @@ class AgentOS {
68
68
  const runtimeEval = new exec_evaluator_1.RuntimeEvaluator();
69
69
  const postExecEval = new exec_evaluator_1.PostExecEvaluator();
70
70
  const feedbackEngine = new feedback_1.ImplicitFeedbackEngine();
71
+ feedbackEngine.enablePersistence(this.config.workspaceRoot);
71
72
  const profiler = new profiler_1.AgentProfiler(feedbackEngine);
72
73
  this.evaluator = {
73
74
  preExec: preExecEval,
@@ -95,8 +96,6 @@ class AgentOS {
95
96
  // --- Phase 1: Pre-exec evaluation ---
96
97
  const preExec = this.evaluator.preExec.evaluate(toolName, parameters);
97
98
  this.memory.working.addMessage('tool', JSON.stringify(parameters));
98
- // Auto-detect if this call references a previous result
99
- this.detectResultUtilization(parameters, sessionId);
100
99
  // --- Phase 2: Snapshot before execution ---
101
100
  const snapshot = this.guard.snapshot.takeSnapshot(`call_${Date.now()}`, toolName, affectedFiles ?? [], 'file');
102
101
  // --- Phase 3: Execute (delegated to runtime — here we return pre-exec state) ---
@@ -151,6 +150,8 @@ class AgentOS {
151
150
  });
152
151
  // --- Phase 5: Track result for utilization scoring ---
153
152
  this.evaluator.postExec.trackResult(auditEntry.id, toolResult);
153
+ // --- Phase 5.5: Auto-detect result utilization (after track, avoids race) ---
154
+ this.detectResultUtilization(toolParameters, sessionId);
154
155
  // --- Phase 6: Record in profiler (reuse pre-exec from pipeline start) ---
155
156
  const preExecMetric = this.evaluator.preExec.evaluate(toolName, toolParameters);
156
157
  this.evaluator.profiler.recordCycle(sessionId, preExecMetric, runtime, postExec);
@@ -206,11 +207,22 @@ class AgentOS {
206
207
  endSession(sessionId, workspaceRoot) {
207
208
  // Phase 1: Auto-detect feedback from audit log
208
209
  const recentAudit = this.guard.audit.query({ sessionId, limit: 100 });
209
- const detected = this.evaluator.feedback.autoDetect(recentAudit, sessionId);
210
+ let detected = this.evaluator.feedback.autoDetect(recentAudit, sessionId);
211
+ // Phase 1.5: Detect correction signals from user messages in WorkingMemory
212
+ const messages = this.memory.working.recentMessages.map((m) => ({
213
+ role: m.role,
214
+ content: m.content,
215
+ ts: m.timestamp,
216
+ }));
217
+ const msgDetected = this.evaluator.feedback.detectFromUserMessages(messages, sessionId);
218
+ detected += msgDetected;
210
219
  // Phase 2: Promote important working memory items to episodic
220
+ // 2a: Current task
211
221
  if (this.memory.working.currentTask) {
212
222
  this.memory.episodic.record('milestone', `Task completed: ${this.memory.working.currentTask.description}`, ['task', 'session-end'], [sessionId]);
213
223
  }
224
+ // 2b: Working memory context snapshot for next session recovery
225
+ this.persistWorkingContext(sessionId);
214
226
  // Phase 3: Log learned rules from this session
215
227
  const rules = this.memory.semantic.getRules(0.6);
216
228
  for (const rule of rules.slice(0, 3)) {
@@ -226,9 +238,60 @@ class AgentOS {
226
238
  }
227
239
  // Phase 5: Decay unused semantic rules
228
240
  this.memory.semantic.decayUnusedRules();
241
+ // Phase 5.3: Clean up profiler session scores
242
+ this.evaluator.profiler.clearSession(sessionId);
243
+ // Phase 5.5: Force Episodic compression
244
+ this.memory.episodic.record('note', 'Session end', ['session-end'], []);
229
245
  // Phase 6: Clear working memory for next session
230
246
  this.memory.working.clear();
231
247
  }
248
+ /**
249
+ * Persist WorkingMemory context snapshot to Episodic + disk
250
+ * so the next session can recover key context.
251
+ */
252
+ persistWorkingContext(sessionId) {
253
+ const wm = this.memory.working;
254
+ // Capture open files
255
+ if (wm.openFiles.length > 0) {
256
+ this.memory.episodic.record('note', `Open files: ${wm.openFiles.join(', ')}`, ['context', 'open-files'], [sessionId]);
257
+ }
258
+ // Capture recent tool results summary (last 5, truncated)
259
+ const toolKeys = Array.from(wm.recentToolResults.keys()).slice(-5);
260
+ if (toolKeys.length > 0) {
261
+ const summary = toolKeys.map((k) => {
262
+ const r = wm.recentToolResults.get(k)?.result;
263
+ const preview = typeof r === 'string' ? r.substring(0, 80) : JSON.stringify(r ?? '').substring(0, 80);
264
+ return `${k}: ${preview}`;
265
+ }).join(' | ');
266
+ this.memory.episodic.record('note', `Recent tool results: ${summary}`, ['context', 'tool-results'], [sessionId]);
267
+ }
268
+ // Capture last user message for continuity
269
+ const lastUserMsg = [...wm.recentMessages].reverse().find((m) => m.role === 'user');
270
+ if (lastUserMsg) {
271
+ this.memory.episodic.record('note', `Last user message: ${lastUserMsg.content.substring(0, 200)}`, ['context', 'last-message'], [sessionId]);
272
+ }
273
+ // Save working context checkpoint to disk
274
+ if (this.config.workspaceRoot) {
275
+ try {
276
+ const fs = require('fs');
277
+ const path = require('path');
278
+ const agentosDir = path.join(this.config.workspaceRoot, '.agentos');
279
+ if (!fs.existsSync(agentosDir))
280
+ fs.mkdirSync(agentosDir, { recursive: true });
281
+ const checkpoint = {
282
+ sessionId,
283
+ timestamp: Date.now(),
284
+ openFiles: wm.openFiles,
285
+ currentTask: wm.currentTask,
286
+ lastUserMessage: lastUserMsg?.content?.substring(0, 200) ?? null,
287
+ };
288
+ fs.writeFileSync(path.join(agentosDir, 'working-context.json'), JSON.stringify(checkpoint) + '\n', 'utf-8');
289
+ }
290
+ catch {
291
+ // Non-critical
292
+ }
293
+ }
294
+ }
232
295
  /**
233
296
  * Append evaluation summary to daily log file.
234
297
  */
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;AASA,qDAAiD;AACjD,iDAA6C;AAC7C,6DAAmE;AACnE,iDAA6C;AAC7C,8CAAiD;AACjD,gDAAmD;AACnD,gDAAwD;AACxD,+DAAmG;AACnG,mDAA8D;AAC9D,mDAAqD;AAGrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,OAAO;IACV,MAAM,CAAgB;IAE9B,eAAe;IACN,MAAM,CAIb;IAEF,cAAc;IACL,KAAK,CAMZ;IAEF,kBAAkB;IACT,SAAS,CAMhB;IAEF,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG;YACZ,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE;YAC5B,gBAAgB,EAAE,KAAK;YACvB,iBAAiB,EAAE,GAAG;YACtB,WAAW,EAAE,EAAE;YACf,GAAG,MAAM;SACV,CAAC;QAEF,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,8BAAmB,EAAE,CAAC;QAC3C,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,yBAAc,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACnE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,IAAI,uBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAE9C,2BAA2B;QAC3B,MAAM,MAAM,GAAG,IAAI,wBAAU,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,oBAAQ,EAAE,CAAC;QAE5B,MAAM,QAAQ,GAAG,IAAI,8BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,IAAI,4BAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,IAAI,oBAAQ,CACxB,IAAI,CAAC,MAAM,CAAC,aAAc,EAC1B,MAAM,EACN,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAEvD,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,iCAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,iCAAgB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,kCAAiB,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,IAAI,iCAAsB,EAAE,CAAC;QACpD,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,wBAAa,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,GAAG;YACf,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,cAAc;YACxB,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,OAOf;QAQC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QAEnE,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAEnE,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAC/C,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,EACpB,QAAQ,EACR,aAAa,IAAI,EAAE,EACnB,MAAM,CACP,CAAC;QAEF,kFAAkF;QAElF,wDAAwD;QACxD,OAAO;YACL,OAAO;YACP,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;SACvD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,OAejB;QAMC,MAAM,EACJ,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EACxD,QAAQ,EAAE,SAAS,EAAE,OAAO,EAC5B,UAAU,EAAE,gBAAgB,EAAE,UAAU,EACxC,YAAY,EAAE,gBAAgB,EAAE,aAAa,GAC9C,GAAG,OAAO,CAAC;QAEZ,sCAAsC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,QAAQ;YACR,SAAS;YACT,OAAO;YACP,UAAU;YACV,gBAAgB;YAChB,UAAU;YACV,UAAU;SACX,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAC3C,QAAQ,EACR,QAAS,EACT,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CACjF,CAAC;QAEF,wCAAwC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAChD,YAAY,EAAE,YAAY,CAAC,MAAM,KAAK,MAAM;YAC5C,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM;YACxC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;YAC7E,YAAY;YACZ,gBAAgB;YAChB,aAAa;SACd,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,SAAS;YACT,OAAO;YACP,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,OAAO;YACpB,QAAQ;YACR,cAAc;YACd,UAAU;YACV,QAAQ;YACR,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,YAAY,EAAE,YAAY,CAAC,MAAM;SAClC,CAAC,CAAC;QAEH,wDAAwD;QACxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAE/D,+EAA+E;QAC/E,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAExD,2EAA2E;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CACjC,SAAS,EACT,aAAa,EACb,OAAO,EACP,QAAQ,CACT,CAAC;QAEF,OAAO;YACL,OAAO;YACP,QAAQ;YACR,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;SACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CACZ,MAAuD,EACvD,SAAiB,EACjB,WAAoB,EACpB,UAAmB,EACnB,MAAe;QAEf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;YACjF,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE;YACnB,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC;YACrD,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE;YACjF,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjD,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,SAAiB,EAAE,aAAsB;QAClD,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAE1E,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,EAAE,EAAE,CAAC,CAAC,SAA+B;SACtC,CAAC,CAAC,CAAC;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxF,QAAQ,IAAI,WAAW,CAAC;QAExB,8DAA8D;QAC9D,mBAAmB;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,WAAW,EACX,mBAAmB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,EAChE,CAAC,MAAM,EAAE,aAAa,CAAC,EACvB,CAAC,SAAS,CAAC,CACZ,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEtC,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,MAAM,EACN,SAAS,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,EACxE,CAAC,MAAM,EAAE,UAAU,CAAC,EACpB,EAAE,CACH,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,MAAM,EACN,0BAA0B,OAAO,CAAC,YAAY,eAAe,UAAU,CAAC,eAAe,iCAAiC,QAAQ,EAAE,EAClI,CAAC,aAAa,EAAE,SAAS,CAAC,EAC1B,CAAC,SAAS,CAAC,CACZ,CAAC;QAEF,sDAAsD;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChD,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAExC,8CAA8C;QAC9C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEhD,wCAAwC;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;QAExE,iDAAiD;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,SAAiB;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE/B,qBAAqB;QACrB,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,MAAM,EACN,eAAe,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxC,CAAC,SAAS,EAAE,YAAY,CAAC,EACzB,CAAC,SAAS,CAAC,CACZ,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtG,OAAO,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,MAAM,EACN,wBAAwB,OAAO,EAAE,EACjC,CAAC,SAAS,EAAE,cAAc,CAAC,EAC3B,CAAC,SAAS,CAAC,CACZ,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACpF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,MAAM,EACN,sBAAsB,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAC7D,CAAC,SAAS,EAAE,cAAc,CAAC,EAC3B,CAAC,SAAS,CAAC,CACZ,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,MAAM,UAAU,GAAG;oBACjB,SAAS;oBACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,WAAW,EAAE,EAAE,CAAC,WAAW;oBAC3B,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI;iBACjE,CAAC;gBACF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAC7C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,EACjC,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,SAAiB,EAAE,aAAqB;QAC7D,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAE7E,MAAM,MAAM,GAAG;gBACb,EAAE;gBACF,8BAA8B;gBAC9B,EAAE;gBACF,aAAa,OAAO,CAAC,YAAY,cAAc,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK,cAAc,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK,eAAe,OAAO,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,MAAM;gBACzL,WAAW,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAe,UAAU,CAAC,eAAe,eAAe,YAAY,EAAE;gBAC7H,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC3E,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC5E,EAAE;aACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC5C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,MAA+B,EAAE,SAAiB;QAChF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,UAAU;oBAAE,SAAS;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/C,6DAA6D;gBAC7D,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC5E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAkB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG;YACZ,+BAA+B;YAC/B,EAAE;YACF,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;YAClG,qBAAqB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,SAAS,eAAe;YACjF,EAAE;YACF,mBAAmB;YACnB,eAAe,OAAO,CAAC,SAAS,CAAC,OAAO,MAAM;YAC9C,eAAe,OAAO,CAAC,SAAS,CAAC,OAAO,MAAM;YAC9C,eAAe,OAAO,CAAC,SAAS,CAAC,QAAQ,MAAM;YAC/C,iBAAiB,OAAO,CAAC,SAAS,CAAC,gBAAgB,MAAM;YACzD,EAAE;YACF,eAAe;YACf,UAAU,KAAK,CAAC,eAAe,gBAAgB,KAAK,CAAC,cAAc,iBAAiB,KAAK,CAAC,WAAW,EAAE;SACxG,CAAC;QAEF,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAlhBD,0BAkhBC"}
@@ -0,0 +1,175 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
6
+ <title>Sentinel AgentOS</title>
7
+ <style>
8
+ :root{--bg:#060912;--card:#0c111f;--border:#182035;--text:#e2e7f2;--dim:#4e5c79;--blue:#3b82f6;--green:#10b981;--red:#ef4444;--amber:#f59e0b}
9
+ *{margin:0;padding:0;box-sizing:border-box}
10
+ html,body{height:100%;overflow:hidden}
11
+ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);font-size:17px;display:flex}
12
+
13
+ .sb{width:260px;flex-shrink:0;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px;gap:20px;overflow-y:auto}
14
+ .sb-logo{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:700}
15
+ .sb-logo i{width:30px;height:30px;border-radius:6px;background:linear-gradient(135deg,#3b82f6,#6366f1);display:grid;place-items:center;font-size:14px;font-style:normal}
16
+ .sb-logo em{font-weight:400;color:var(--dim);font-size:12px;font-style:normal}
17
+ .sb-sect h3{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin-bottom:8px}
18
+ .sb-stat{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;border-bottom:1px solid rgba(24,32,53,.5)}
19
+ .sb-stat .k{font-size:14px;color:var(--dim)}
20
+ .sb-stat .v{font-size:24px;font-weight:700;letter-spacing:-.4px}
21
+
22
+ .bar-wrap{display:flex;align-items:center;gap:12px;padding:8px 0}
23
+ .bar-track{flex:1;height:10px;border-radius:5px;background:rgba(24,32,53,.6);overflow:hidden;display:flex}
24
+ .bar-track .pass{background:var(--green);border-radius:5px 0 0 5px}
25
+ .bar-track .fail{background:var(--red);border-radius:0 5px 5px 0}
26
+ .bar-wrap .pct{font-size:18px;font-weight:700;letter-spacing:-.3px;min-width:46px;text-align:right}
27
+ .bar-wrap+.sub{font-size:11px;color:var(--dim)}
28
+
29
+ .g{color:var(--green)}.r{color:var(--red)}.a{color:var(--amber)}.p{color:#8b5cf6}
30
+
31
+ .main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
32
+ .topline{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:14px 28px;border-bottom:1px solid var(--border)}
33
+ .topline h2{font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--dim)}
34
+ .topline .r{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--dim)}
35
+ .topline .r b{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--green);animation:p 2s infinite}
36
+ @keyframes p{50%{opacity:.2}}
37
+
38
+ .tbl-wrap{flex:1;overflow-y:auto;padding:0 28px}
39
+ .tbl-wrap::-webkit-scrollbar{width:5px}
40
+ .tbl-wrap::-webkit-scrollbar-track{background:transparent}
41
+ .tbl-wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
42
+
43
+ table{width:100%;border-collapse:collapse;table-layout:fixed}
44
+ thead{position:sticky;top:0;z-index:2}
45
+ th{padding:13px 16px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--dim);background:var(--bg);border-bottom:2px solid var(--border)}
46
+ th:first-child{width:46px;text-align:center;padding:13px 0}
47
+ th:nth-child(2){width:86px}
48
+ th:nth-child(4){width:100px}
49
+ th:nth-child(5){width:90px}
50
+ th:nth-child(6){width:90px}
51
+
52
+ td{padding:13px 16px;border-bottom:1px solid rgba(24,32,53,.35);font-size:16px;white-space:nowrap}
53
+ td:first-child{text-align:center;padding:13px 0;font-size:17px}
54
+ tr:hover{background:rgba(59,130,246,.02)}
55
+ tr.fail{background:rgba(239,68,68,.005)}tr.fail:hover{background:rgba(239,68,68,.015)}
56
+
57
+ .tag{display:inline-block;font-family:'SF Mono',monospace;font-size:13px;font-weight:600;padding:3px 9px;border-radius:4px}
58
+ .tag.e{color:#60a5fa;background:rgba(59,130,246,.06)}
59
+ .tag.w{color:#a78bfa;background:rgba(139,92,246,.06)}
60
+ .tag.d{color:#22d3ee;background:rgba(6,182,212,.06)}
61
+ .tag.g{color:#34d399;background:rgba(16,185,129,.06)}
62
+ tr.fail .tag.e,tr.fail .tag.w,tr.fail .tag.d,tr.fail .tag.g{color:#f87171;background:rgba(239,68,68,.06)}
63
+
64
+ .pm{font-family:'SF Mono',monospace;font-size:14px;color:var(--dim);display:block;overflow:hidden;text-overflow:ellipsis;opacity:.85}
65
+ .tm{font-family:'SF Mono',monospace;font-size:13px;color:var(--dim)}
66
+
67
+ .pill{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:10px}
68
+ .pill.ok{color:var(--green);background:rgba(16,185,129,.05)}
69
+ .pill.ko{color:var(--red);background:rgba(239,68,68,.05)}
70
+
71
+ .rw{display:flex;align-items:center;gap:8px}
72
+ .rw .bar{width:44px;height:3px;border-radius:2px;background:var(--border);overflow:hidden}
73
+ .rw .fll{height:100%;border-radius:2px}
74
+ .rw .n{font-family:'SF Mono',monospace;font-size:13px;font-weight:500}
75
+
76
+ .pgr{flex-shrink:0;padding:14px 28px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px;font-size:14px}
77
+ .pgr .btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:30px;background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:5px;cursor:pointer;font-size:13px;transition:all .1s}
78
+ .pgr .btn:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}
79
+ .pgr .btn:disabled{opacity:.08;cursor:default}
80
+ .pgr .pn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:5px;font-size:13px;font-weight:600;cursor:pointer;color:var(--dim);border:1px solid transparent}
81
+ .pgr .pn:hover{border-color:var(--border);color:var(--text)}
82
+ .pgr .pn.on{background:var(--blue);color:#fff;border-color:var(--blue)}
83
+
84
+ .emp{text-align:center;padding:50px;color:var(--dim);font-size:16px}
85
+ </style>
86
+ </head>
87
+ <body>
88
+
89
+ <div class="sb">
90
+ <div class="sb-logo"><i>🛡️</i>Sentinel AgentOS<em> v0.3.7</em></div>
91
+ <div class="sb-sect"><h3>概览</h3>
92
+ <div class="sb-stat"><span class="k">总操作</span><span class="v" id="t1">—</span></div>
93
+ <div class="sb-stat"><span class="k">通过率</span><span class="v g" id="t2">—</span></div>
94
+ <div class="sb-stat"><span class="k">高风险</span><span class="v a" id="t3">—</span></div>
95
+ <div class="sb-stat"><span class="k">质量分</span><span class="v p" id="t4">—</span></div>
96
+ <div class="sb-stat"><span class="k">会话</span><span class="v g" id="t5">—</span></div>
97
+ </div>
98
+ <div class="sb-sect"><h3>审计通过率</h3>
99
+ <div class="bar-wrap"><div class="bar-track"><div class="pass" id="bp" style="width:100%"></div><div class="fail" id="bf" style="width:0%"></div></div><span class="pct g" id="c1">—</span></div>
100
+ <div class="sub" id="c1s">—</div></div>
101
+ <div class="sb-sect"><h3>质量评分</h3>
102
+ <div class="v p" style="font-size:38px;font-weight:700;letter-spacing:-.8px" id="c2">—</div>
103
+ <div style="font-size:11px;color:var(--dim)" id="c2s">Agent Profile</div>
104
+ </div>
105
+ <div style="font-size:11px;color:var(--dim);text-align:center;margin-top:auto" id="rt">—</div>
106
+ </div>
107
+
108
+ <div class="main">
109
+ <div class="topline">
110
+ <h2>审计记录</h2>
111
+ <div class="r"><b></b><span id="st">—</span> · <span id="up">—</span> · <span id="rc">—</span></div>
112
+ </div>
113
+
114
+ <div class="tbl-wrap">
115
+ <table>
116
+ <thead><tr><th>#</th><th>工具</th><th>参数</th><th>时间</th><th>状态</th><th>风险分</th></tr></thead>
117
+ <tbody id="tb"><tr><td colspan="6"><div class="emp">加载中…</div></td></tr></tbody>
118
+ </table>
119
+ </div>
120
+
121
+ <div class="pgr" id="pg"></div>
122
+ </div>
123
+
124
+ <script>
125
+ let items=[],P=20,cur=0;
126
+
127
+ async function R(){
128
+ try{
129
+ const d=await(await fetch('/pipeline/report')).json();
130
+ document.getElementById('st').textContent='已连接';document.querySelector('.r b').style.background='var(--green)';
131
+ const t=d.audit?.totalOperations||0,f=d.audit?.verifyFailures||0,p=t-f,r=t?Math.round(p/t*100):100,q=d.quality?.overallScore||50;
132
+ document.getElementById('t1').textContent=t;
133
+ document.getElementById('t2').textContent=r+'%';document.getElementById('t2').className='v '+(r>=90?'g':r>=70?'a':'r');
134
+ document.getElementById('t3').textContent=d.audit?.highRiskOps||0;
135
+ document.getElementById('t4').textContent=q;
136
+ document.getElementById('t5').textContent=d.audit?.sessionsTracked||1;
137
+ document.getElementById('up').textContent='运行 '+(d.uptime||'—');
138
+ document.getElementById('rt').textContent='刷新 '+new Date().toLocaleTimeString();
139
+ document.getElementById('c1').textContent=r+'%';
140
+ document.getElementById('c1s').textContent=p+' 通过 · '+f+' 失败';
141
+ document.getElementById('c2').textContent=q+'分';
142
+ document.getElementById('bp').style.width=r+'%';document.getElementById('bf').style.width=(100-r)+'%';
143
+
144
+ items=d.timeline||[];document.getElementById('rc').textContent='共 '+items.length+' 条';G(0);
145
+ }catch{
146
+ document.getElementById('st').textContent='断开';document.querySelector('.r b').style.background='var(--red)';
147
+ }
148
+ }
149
+
150
+ function G(p){cur=p;
151
+ const pages=Math.ceil(items.length/P),start=p*P,rows=items.slice(start,start+P);
152
+ const b=document.getElementById('tb');
153
+ if(!rows.length){b.innerHTML='<tr><td colspan="6"><div class="emp">暂无记录</div></td></tr>';return;}
154
+ const icons={exec:'⚙️',write:'✏️',edit:'🔧',read:'📖'},cls={exec:'e',write:'w',edit:'d',read:'g'};
155
+ b.innerHTML=rows.map(e=>{
156
+ const t=e.tool||'—',ok=e.verify!=='FAIL',s=Number(e.score)||0,rp=Math.min(s*10,100);
157
+ const rc=s>3?'var(--red)':s>1?'var(--amber)':'var(--green)';
158
+ const ts=e.ts?.slice(11,19)||'—',pr=(e.params||'').slice(0,140)||'—';
159
+ return `<tr class="${ok?'':'fail'}">
160
+ <td>${icons[t]||'🔹'}</td><td><span class="tag ${cls[t]||''}">${t}</span></td>
161
+ <td><span class="pm" title="${pr}">${pr}</span></td><td><span class="tm">${ts}</span></td>
162
+ <td><span class="pill ${ok?'ok':'ko'}">${ok?'● 通过':'● 拦截'}</span></td>
163
+ <td><div class="rw"><div class="bar"><div class="fll" style="width:${rp}%;background:${rc}"></div></div><span class="n" style="color:${rc}">${s.toFixed(1)}</span></div></td>
164
+ </tr>`;
165
+ }).join('');
166
+
167
+ const pg=document.getElementById('pg');if(pages<=1){pg.innerHTML='';return;}
168
+ let ns='';for(let i=0;i<pages;i++){const g=i===0||i===pages-1||Math.abs(i-p)<=1;if(g)ns+=`<span class="pn${i===p?' on':''}" onclick="G(${i})">${i+1}</span>`;else if((i===1&&p>2)||(i===pages-2&&p<pages-3))ns+='<span style="color:var(--dim);padding:0 2px">…</span>';}
169
+ pg.innerHTML=`<span class="btn" onclick="G(${p-1})" ${p===0?'disabled':''}>◀</span>${ns}<span class="btn" onclick="G(${p+1})" ${p>=pages-1?'disabled':''}>▶</span>`;
170
+ }
171
+
172
+ R();setInterval(R,5000);
173
+ </script>
174
+ </body>
175
+ </html>
@@ -16,6 +16,9 @@ import { AuditEntry } from '../types';
16
16
  */
17
17
  export declare class ImplicitFeedbackEngine {
18
18
  private feedbackLog;
19
+ private persistPath;
20
+ private globalAuditPath;
21
+ private detectedKeys;
19
22
  /**
20
23
  * Record an implicit feedback signal.
21
24
  */
@@ -35,7 +38,43 @@ export declare class ImplicitFeedbackEngine {
35
38
  * @param sessionId Session to attribute signals to
36
39
  * @returns Number of signals auto-detected
37
40
  */
41
+ /**
42
+ * Enable persistence for feedbackLog and auto-detected signal keys.
43
+ */
44
+ enablePersistence(workspaceRoot: string): void;
45
+ /** Persist the current feedbackLog and detectedKeys to disk. */
46
+ private persist;
47
+ /** Load persisted feedback log from disk. */
48
+ private load;
49
+ /**
50
+ * Cross-session auto-detect: scan the global audit.jsonl for signals
51
+ * from ALL sessions, not just the current one.
52
+ */
53
+ autoDetectGlobal(): number;
38
54
  autoDetect(entries: AuditEntry[], sessionId: string): number;
55
+ /**
56
+ * Analyze user messages to detect implicit correction/feedback signals.
57
+ *
58
+ * Chinese corrective patterns (high precision, low recall — only matches clear signals):
59
+ * - "不对"/"错了"/"不是这样" → user_provided_correction (confidence 0.8)
60
+ * - "漏了"/"缺了"/"没包括"/"遗漏" → user_provided_correction (confidence 0.75)
61
+ * - "你没"/"你怎么"/"你咋" + 负面动作(忘记/漏/没/不) → user_provided_correction (confidence 0.7)
62
+ * - "失忆"/"忘了"/"不记得" → user_provided_correction (confidence 0.85)
63
+ * - "重新"/"再查"/"再搜"/"再看看" → user_repeated_instruction (confidence 0.6)
64
+ * - "不对吧"/"没音信" → user_interrupted (confidence 0.5)
65
+ *
66
+ * English patterns:
67
+ * - "wrong"/"incorrect"/"not right" → user_provided_correction (confidence 0.7)
68
+ * - "missed"/"missing"/"forgot"/"incomplete" → user_provided_correction (confidence 0.7)
69
+ * - "redo"/"again"/"retry"/"try again" → user_repeated_instruction (confidence 0.5)
70
+ *
71
+ * Returns number of signals detected.
72
+ */
73
+ detectFromUserMessages(messages: Array<{
74
+ role: string;
75
+ content: string;
76
+ ts?: number;
77
+ }>, sessionId: string): number;
39
78
  private getSignalStrength;
40
79
  getSatisfactionScore(sessionId?: string, recentHours?: number): number;
41
80
  query(filter?: {
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/evaluator/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAUtC;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,WAAW,CAA0B;IAE7C;;OAEG;IACH,MAAM,CACJ,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,SAAM,EAChB,MAAM,SAAkB,GACvB,gBAAgB;IAsBnB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAqE5D,OAAO,CAAC,iBAAiB;IAkBzB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,MAAM;IA4BlE,KAAK,CAAC,MAAM,GAAE;QACZ,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,gBAAgB,EAAE;IAa3B,KAAK,IAAI;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,UAAU,GAAG,IAAI,CAAC;KACrC;CAuBF"}
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/evaluator/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAYtC;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,eAAe,CAAuB;IAE9C,OAAO,CAAC,YAAY,CAA0B;IAE9C;;OAEG;IACH,MAAM,CACJ,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,SAAM,EAChB,MAAM,SAAkB,GACvB,gBAAgB;IAuBnB;;;;;;;;;;;;;;OAcG;IACH;;OAEG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAU9C,gEAAgE;IAChE,OAAO,CAAC,OAAO;IAcf,6CAA6C;IAC7C,OAAO,CAAC,IAAI;IAqBZ;;;OAGG;IACH,gBAAgB,IAAI,MAAM;IAa1B,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAmF5D;;;;;;;;;;;;;;;;;OAiBG;IACH,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IA2FlH,OAAO,CAAC,iBAAiB;IAkBzB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,MAAM;IAoClE,KAAK,CAAC,MAAM,GAAE;QACZ,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,gBAAgB,EAAE;IAa3B,KAAK,IAAI;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,UAAU,GAAG,IAAI,CAAC;KACrC;CAuBF"}