sentinel-agentos 0.3.7 β 0.3.8
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/package.json +1 -1
- package/LICENSE +0 -21
- package/README.md +0 -1797
- package/dist/adapters/evaluation-bridge.d.ts +0 -78
- package/dist/adapters/evaluation-bridge.d.ts.map +0 -1
- package/dist/adapters/evaluation-bridge.js +0 -273
- package/dist/adapters/evaluation-bridge.js.map +0 -1
- package/dist/adapters/memory-bridge.d.ts +0 -110
- package/dist/adapters/memory-bridge.d.ts.map +0 -1
- package/dist/adapters/memory-bridge.js +0 -316
- package/dist/adapters/memory-bridge.js.map +0 -1
- package/dist/adapters/migrate.d.ts +0 -2
- package/dist/adapters/migrate.d.ts.map +0 -1
- package/dist/adapters/migrate.js +0 -63
- package/dist/adapters/migrate.js.map +0 -1
- package/dist/api.d.ts +0 -151
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -179
- package/dist/api.js.map +0 -1
- package/dist/cli.d.ts +0 -16
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -350
- package/dist/cli.js.map +0 -1
- package/dist/core.d.ts +0 -156
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -400
- package/dist/core.js.map +0 -1
- package/dist/dashboard.html +0 -175
- package/dist/evaluator/exec-evaluator.d.ts +0 -102
- package/dist/evaluator/exec-evaluator.d.ts.map +0 -1
- package/dist/evaluator/exec-evaluator.js +0 -266
- package/dist/evaluator/exec-evaluator.js.map +0 -1
- package/dist/evaluator/feedback.d.ts +0 -96
- package/dist/evaluator/feedback.d.ts.map +0 -1
- package/dist/evaluator/feedback.js +0 -419
- package/dist/evaluator/feedback.js.map +0 -1
- package/dist/evaluator/profiler.d.ts +0 -55
- package/dist/evaluator/profiler.d.ts.map +0 -1
- package/dist/evaluator/profiler.js +0 -130
- package/dist/evaluator/profiler.js.map +0 -1
- package/dist/guard/audit-log.d.ts +0 -47
- package/dist/guard/audit-log.d.ts.map +0 -1
- package/dist/guard/audit-log.js +0 -199
- package/dist/guard/audit-log.js.map +0 -1
- package/dist/guard/container-sandbox.d.ts +0 -25
- package/dist/guard/container-sandbox.d.ts.map +0 -1
- package/dist/guard/container-sandbox.js +0 -145
- package/dist/guard/container-sandbox.js.map +0 -1
- package/dist/guard/risk-gate.d.ts +0 -101
- package/dist/guard/risk-gate.d.ts.map +0 -1
- package/dist/guard/risk-gate.js +0 -200
- package/dist/guard/risk-gate.js.map +0 -1
- package/dist/guard/sandbox.d.ts +0 -112
- package/dist/guard/sandbox.d.ts.map +0 -1
- package/dist/guard/sandbox.js +0 -379
- package/dist/guard/sandbox.js.map +0 -1
- package/dist/guard/schema-gate.d.ts +0 -90
- package/dist/guard/schema-gate.d.ts.map +0 -1
- package/dist/guard/schema-gate.js +0 -452
- package/dist/guard/schema-gate.js.map +0 -1
- package/dist/guard/snapshot-verify.d.ts +0 -111
- package/dist/guard/snapshot-verify.d.ts.map +0 -1
- package/dist/guard/snapshot-verify.js +0 -571
- package/dist/guard/snapshot-verify.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -59
- package/dist/index.js.map +0 -1
- package/dist/memory/episodic.d.ts +0 -76
- package/dist/memory/episodic.d.ts.map +0 -1
- package/dist/memory/episodic.js +0 -289
- package/dist/memory/episodic.js.map +0 -1
- package/dist/memory/semantic.d.ts +0 -68
- package/dist/memory/semantic.d.ts.map +0 -1
- package/dist/memory/semantic.js +0 -299
- package/dist/memory/semantic.js.map +0 -1
- package/dist/memory/working.d.ts +0 -53
- package/dist/memory/working.d.ts.map +0 -1
- package/dist/memory/working.js +0 -166
- package/dist/memory/working.js.map +0 -1
- package/dist/middleware/openclaw.d.ts +0 -45
- package/dist/middleware/openclaw.d.ts.map +0 -1
- package/dist/middleware/openclaw.js +0 -95
- package/dist/middleware/openclaw.js.map +0 -1
- package/dist/middleware/wrapper.d.ts +0 -54
- package/dist/middleware/wrapper.d.ts.map +0 -1
- package/dist/middleware/wrapper.js +0 -155
- package/dist/middleware/wrapper.js.map +0 -1
- package/dist/server.d.ts +0 -45
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -256
- package/dist/server.js.map +0 -1
- package/dist/types/index.d.ts +0 -228
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -23
- package/dist/types/index.js.map +0 -1
- package/scripts/sentinel-light.js +0 -234
package/dist/core.d.ts
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { AgentOSConfig, GuardConfig, Snapshot, AuditEntry, PreExecMetrics, RuntimeMetrics, PostExecMetrics } from './types';
|
|
2
|
-
import { SchemaGate } from './guard/schema-gate';
|
|
3
|
-
import { RiskGate } from './guard/risk-gate';
|
|
4
|
-
import { SnapshotGate, VerifyGate } from './guard/snapshot-verify';
|
|
5
|
-
import { AuditLog } from './guard/audit-log';
|
|
6
|
-
import { WorkingMemory } from './memory/working';
|
|
7
|
-
import { EpisodicMemory } from './memory/episodic';
|
|
8
|
-
import { SemanticMemoryStore } from './memory/semantic';
|
|
9
|
-
import { PreExecEvaluator, RuntimeEvaluator, PostExecEvaluator } from './evaluator/exec-evaluator';
|
|
10
|
-
import { ImplicitFeedbackEngine } from './evaluator/feedback';
|
|
11
|
-
import { AgentProfiler } from './evaluator/profiler';
|
|
12
|
-
import type { AgentProfile } from './evaluator/profiler';
|
|
13
|
-
/**
|
|
14
|
-
* AgentOS β the complete AI Agent Operating System.
|
|
15
|
-
*
|
|
16
|
-
* Architecture:
|
|
17
|
-
* ```
|
|
18
|
-
* User Request
|
|
19
|
-
* β
|
|
20
|
-
* βββββββββββββββ
|
|
21
|
-
* β Memory Layer β β Semantic + Episodic + Working memory
|
|
22
|
-
* βββββββββββββββ€
|
|
23
|
-
* β Guard Layer β β Schema β Risk β Snapshot
|
|
24
|
-
* βββββββββββββββ€ β
|
|
25
|
-
* β Execute β β Tool call execution
|
|
26
|
-
* βββββββββββββββ€ β
|
|
27
|
-
* β Verify Layer β β Snapshot diff β Verify checks
|
|
28
|
-
* βββββββββββββββ€ β
|
|
29
|
-
* β Audit Log β β Immutable operation record
|
|
30
|
-
* βββββββββββββββ€
|
|
31
|
-
* β Evaluator β β Three-phase metrics + feedback
|
|
32
|
-
* βββββββββββββββ
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export declare class AgentOS {
|
|
36
|
-
private config;
|
|
37
|
-
readonly memory: {
|
|
38
|
-
working: WorkingMemory;
|
|
39
|
-
episodic: EpisodicMemory;
|
|
40
|
-
semantic: SemanticMemoryStore;
|
|
41
|
-
};
|
|
42
|
-
readonly guard: {
|
|
43
|
-
schema: SchemaGate;
|
|
44
|
-
risk: RiskGate;
|
|
45
|
-
snapshot: SnapshotGate;
|
|
46
|
-
verify: VerifyGate;
|
|
47
|
-
audit: AuditLog;
|
|
48
|
-
};
|
|
49
|
-
readonly evaluator: {
|
|
50
|
-
preExec: PreExecEvaluator;
|
|
51
|
-
runtime: RuntimeEvaluator;
|
|
52
|
-
postExec: PostExecEvaluator;
|
|
53
|
-
feedback: ImplicitFeedbackEngine;
|
|
54
|
-
profiler: AgentProfiler;
|
|
55
|
-
};
|
|
56
|
-
constructor(config?: Partial<AgentOSConfig>);
|
|
57
|
-
/**
|
|
58
|
-
* Get the current AgentOS configuration.
|
|
59
|
-
*/
|
|
60
|
-
getConfig(): Readonly<AgentOSConfig>;
|
|
61
|
-
/**
|
|
62
|
-
* Full pipeline: process a tool call through all layers.
|
|
63
|
-
*
|
|
64
|
-
* This is the main AgentOS orchestration method.
|
|
65
|
-
* In production this would be called by the agent runtime
|
|
66
|
-
* before/after every tool call.
|
|
67
|
-
*/
|
|
68
|
-
executePipeline(options: {
|
|
69
|
-
sessionId: string;
|
|
70
|
-
agentId: string;
|
|
71
|
-
toolName: string;
|
|
72
|
-
parameters: Record<string, unknown>;
|
|
73
|
-
affectedFiles?: string[];
|
|
74
|
-
guardConfig?: GuardConfig;
|
|
75
|
-
}): {
|
|
76
|
-
preExec: PreExecMetrics;
|
|
77
|
-
runtime?: RuntimeMetrics;
|
|
78
|
-
postExec?: PostExecMetrics;
|
|
79
|
-
snapshot: Snapshot | null;
|
|
80
|
-
auditEntry?: AuditEntry;
|
|
81
|
-
profile: AgentProfile;
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Complete the pipeline after tool execution.
|
|
85
|
-
*
|
|
86
|
-
* Called by the runtime after the tool call completes
|
|
87
|
-
* (or fails, or times out).
|
|
88
|
-
*/
|
|
89
|
-
completeExecution(options: {
|
|
90
|
-
sessionId: string;
|
|
91
|
-
agentId: string;
|
|
92
|
-
toolName: string;
|
|
93
|
-
toolParameters: Record<string, unknown>;
|
|
94
|
-
toolResult: unknown;
|
|
95
|
-
snapshot: Snapshot | null;
|
|
96
|
-
startTime: number;
|
|
97
|
-
endTime: number;
|
|
98
|
-
retryCount: number;
|
|
99
|
-
wasSelfCorrected: boolean;
|
|
100
|
-
hadTimeout: boolean;
|
|
101
|
-
userAccepted: boolean;
|
|
102
|
-
userProvidedEdit: boolean;
|
|
103
|
-
resultWasUsed: boolean;
|
|
104
|
-
}): {
|
|
105
|
-
runtime: RuntimeMetrics;
|
|
106
|
-
postExec: PostExecMetrics;
|
|
107
|
-
auditEntry: AuditEntry;
|
|
108
|
-
profile: AgentProfile;
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Record implicit user feedback.
|
|
112
|
-
*/
|
|
113
|
-
recordFeedback(signal: Parameters<ImplicitFeedbackEngine['record']>[0], sessionId: string, operationId?: string, confidence?: number, source?: string): void;
|
|
114
|
-
/**
|
|
115
|
-
* Get a JSON report for dashboard consumption.
|
|
116
|
-
*/
|
|
117
|
-
getReport(): Record<string, unknown>;
|
|
118
|
-
/**
|
|
119
|
-
* Inject memory context at session startup.
|
|
120
|
-
*
|
|
121
|
-
* Call this at the beginning of every session to load
|
|
122
|
-
* semantic + episodic context into the session prompt.
|
|
123
|
-
*/
|
|
124
|
-
injectContext(): string;
|
|
125
|
-
/**
|
|
126
|
-
* End current session β auto-detect feedback, promote events to episodic,
|
|
127
|
-
* append daily log, clear working memory.
|
|
128
|
-
*/
|
|
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;
|
|
135
|
-
/**
|
|
136
|
-
* Append evaluation summary to daily log file.
|
|
137
|
-
*/
|
|
138
|
-
private appendDailyLog;
|
|
139
|
-
/**
|
|
140
|
-
* Detect if this tool call's parameters reference a previous result.
|
|
141
|
-
*/
|
|
142
|
-
private detectResultUtilization;
|
|
143
|
-
/**
|
|
144
|
-
* Get audit statistics.
|
|
145
|
-
*/
|
|
146
|
-
getAuditStats(): ReturnType<AuditLog['stats']>;
|
|
147
|
-
/**
|
|
148
|
-
* Get the current agent quality profile.
|
|
149
|
-
*/
|
|
150
|
-
getProfile(sessionId?: string): AgentProfile;
|
|
151
|
-
/**
|
|
152
|
-
* Get a summarized status report.
|
|
153
|
-
*/
|
|
154
|
-
statusReport(): string;
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=core.d.ts.map
|
package/dist/core.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
DELETED
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AgentOS = void 0;
|
|
4
|
-
const schema_gate_1 = require("./guard/schema-gate");
|
|
5
|
-
const risk_gate_1 = require("./guard/risk-gate");
|
|
6
|
-
const snapshot_verify_1 = require("./guard/snapshot-verify");
|
|
7
|
-
const audit_log_1 = require("./guard/audit-log");
|
|
8
|
-
const working_1 = require("./memory/working");
|
|
9
|
-
const episodic_1 = require("./memory/episodic");
|
|
10
|
-
const semantic_1 = require("./memory/semantic");
|
|
11
|
-
const exec_evaluator_1 = require("./evaluator/exec-evaluator");
|
|
12
|
-
const feedback_1 = require("./evaluator/feedback");
|
|
13
|
-
const profiler_1 = require("./evaluator/profiler");
|
|
14
|
-
/**
|
|
15
|
-
* AgentOS β the complete AI Agent Operating System.
|
|
16
|
-
*
|
|
17
|
-
* Architecture:
|
|
18
|
-
* ```
|
|
19
|
-
* User Request
|
|
20
|
-
* β
|
|
21
|
-
* βββββββββββββββ
|
|
22
|
-
* β Memory Layer β β Semantic + Episodic + Working memory
|
|
23
|
-
* βββββββββββββββ€
|
|
24
|
-
* β Guard Layer β β Schema β Risk β Snapshot
|
|
25
|
-
* βββββββββββββββ€ β
|
|
26
|
-
* β Execute β β Tool call execution
|
|
27
|
-
* βββββββββββββββ€ β
|
|
28
|
-
* β Verify Layer β β Snapshot diff β Verify checks
|
|
29
|
-
* βββββββββββββββ€ β
|
|
30
|
-
* β Audit Log β β Immutable operation record
|
|
31
|
-
* βββββββββββββββ€
|
|
32
|
-
* β Evaluator β β Three-phase metrics + feedback
|
|
33
|
-
* βββββββββββββββ
|
|
34
|
-
* ```
|
|
35
|
-
*/
|
|
36
|
-
class AgentOS {
|
|
37
|
-
config;
|
|
38
|
-
// Memory Layer
|
|
39
|
-
memory;
|
|
40
|
-
// Guard Layer
|
|
41
|
-
guard;
|
|
42
|
-
// Evaluator Layer
|
|
43
|
-
evaluator;
|
|
44
|
-
constructor(config) {
|
|
45
|
-
this.config = {
|
|
46
|
-
workspaceRoot: process.cwd(),
|
|
47
|
-
maxWorkingTokens: 50000,
|
|
48
|
-
maxEpisodicSizeKb: 500,
|
|
49
|
-
guardConfig: {},
|
|
50
|
-
...config,
|
|
51
|
-
};
|
|
52
|
-
// --- Memory Layer Init ---
|
|
53
|
-
const semantic = new semantic_1.SemanticMemoryStore();
|
|
54
|
-
semantic.enablePersistence(this.config.workspaceRoot);
|
|
55
|
-
const episodic = new episodic_1.EpisodicMemory(this.config.maxEpisodicSizeKb);
|
|
56
|
-
episodic.enablePersistence(this.config.workspaceRoot);
|
|
57
|
-
const working = new working_1.WorkingMemory(this.config.maxWorkingTokens);
|
|
58
|
-
this.memory = { working, episodic, semantic };
|
|
59
|
-
// --- Guard Layer Init ---
|
|
60
|
-
const schema = new schema_gate_1.SchemaGate();
|
|
61
|
-
const risk = new risk_gate_1.RiskGate();
|
|
62
|
-
const snapshot = new snapshot_verify_1.SnapshotGate(this.config.workspaceRoot);
|
|
63
|
-
const verify = new snapshot_verify_1.VerifyGate(this.config.workspaceRoot);
|
|
64
|
-
const audit = new audit_log_1.AuditLog(this.config.workspaceRoot, schema, risk);
|
|
65
|
-
this.guard = { schema, risk, snapshot, verify, audit };
|
|
66
|
-
// --- Evaluator Layer Init ---
|
|
67
|
-
const preExecEval = new exec_evaluator_1.PreExecEvaluator(schema, risk, working);
|
|
68
|
-
const runtimeEval = new exec_evaluator_1.RuntimeEvaluator();
|
|
69
|
-
const postExecEval = new exec_evaluator_1.PostExecEvaluator();
|
|
70
|
-
const feedbackEngine = new feedback_1.ImplicitFeedbackEngine();
|
|
71
|
-
feedbackEngine.enablePersistence(this.config.workspaceRoot);
|
|
72
|
-
const profiler = new profiler_1.AgentProfiler(feedbackEngine);
|
|
73
|
-
this.evaluator = {
|
|
74
|
-
preExec: preExecEval,
|
|
75
|
-
runtime: runtimeEval,
|
|
76
|
-
postExec: postExecEval,
|
|
77
|
-
feedback: feedbackEngine,
|
|
78
|
-
profiler,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Get the current AgentOS configuration.
|
|
83
|
-
*/
|
|
84
|
-
getConfig() {
|
|
85
|
-
return this.config;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Full pipeline: process a tool call through all layers.
|
|
89
|
-
*
|
|
90
|
-
* This is the main AgentOS orchestration method.
|
|
91
|
-
* In production this would be called by the agent runtime
|
|
92
|
-
* before/after every tool call.
|
|
93
|
-
*/
|
|
94
|
-
executePipeline(options) {
|
|
95
|
-
const { sessionId, toolName, parameters, affectedFiles } = options;
|
|
96
|
-
// --- Phase 1: Pre-exec evaluation ---
|
|
97
|
-
const preExec = this.evaluator.preExec.evaluate(toolName, parameters);
|
|
98
|
-
this.memory.working.addMessage('tool', JSON.stringify(parameters));
|
|
99
|
-
// --- Phase 2: Snapshot before execution ---
|
|
100
|
-
const snapshot = this.guard.snapshot.takeSnapshot(`call_${Date.now()}`, toolName, affectedFiles ?? [], 'file');
|
|
101
|
-
// --- Phase 3: Execute (delegated to runtime β here we return pre-exec state) ---
|
|
102
|
-
// Return the pre-exec state so the runtime can complete
|
|
103
|
-
return {
|
|
104
|
-
preExec,
|
|
105
|
-
snapshot,
|
|
106
|
-
profile: this.evaluator.profiler.getProfile(sessionId),
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Complete the pipeline after tool execution.
|
|
111
|
-
*
|
|
112
|
-
* Called by the runtime after the tool call completes
|
|
113
|
-
* (or fails, or times out).
|
|
114
|
-
*/
|
|
115
|
-
completeExecution(options) {
|
|
116
|
-
const { sessionId, agentId, toolName, toolParameters, toolResult, snapshot, startTime, endTime, retryCount, wasSelfCorrected, hadTimeout, userAccepted, userProvidedEdit, resultWasUsed, } = options;
|
|
117
|
-
// --- Phase 1: Runtime evaluation ---
|
|
118
|
-
const runtime = this.evaluator.runtime.evaluate({
|
|
119
|
-
toolName,
|
|
120
|
-
startTime,
|
|
121
|
-
endTime,
|
|
122
|
-
retryCount,
|
|
123
|
-
wasSelfCorrected,
|
|
124
|
-
hadTimeout,
|
|
125
|
-
toolResult,
|
|
126
|
-
});
|
|
127
|
-
// --- Phase 2: Post-exec verification ---
|
|
128
|
-
const verifyResult = this.guard.verify.verify(toolName, snapshot, { files: toolParameters['path'] ? [String(toolParameters['path'])] : undefined });
|
|
129
|
-
// --- Phase 3: Post-exec evaluation ---
|
|
130
|
-
const postExec = this.evaluator.postExec.evaluate({
|
|
131
|
-
verifyPassed: verifyResult.status === 'PASS',
|
|
132
|
-
verifyChecks: verifyResult.checks.length,
|
|
133
|
-
verifyFailures: verifyResult.checks.filter((c) => c.status === 'FAIL').length,
|
|
134
|
-
userAccepted,
|
|
135
|
-
userProvidedEdit,
|
|
136
|
-
resultWasUsed,
|
|
137
|
-
});
|
|
138
|
-
// --- Phase 4: Audit log ---
|
|
139
|
-
const auditEntry = this.guard.audit.record({
|
|
140
|
-
sessionId,
|
|
141
|
-
agentId,
|
|
142
|
-
startedAt: startTime,
|
|
143
|
-
completedAt: endTime,
|
|
144
|
-
toolName,
|
|
145
|
-
toolParameters,
|
|
146
|
-
toolResult,
|
|
147
|
-
snapshot,
|
|
148
|
-
verifyStatus: verifyResult.status,
|
|
149
|
-
verifyChecks: verifyResult.checks,
|
|
150
|
-
});
|
|
151
|
-
// --- Phase 5: Track result for utilization scoring ---
|
|
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);
|
|
155
|
-
// --- Phase 6: Record in profiler (reuse pre-exec from pipeline start) ---
|
|
156
|
-
const preExecMetric = this.evaluator.preExec.evaluate(toolName, toolParameters);
|
|
157
|
-
this.evaluator.profiler.recordCycle(sessionId, preExecMetric, runtime, postExec);
|
|
158
|
-
return {
|
|
159
|
-
runtime,
|
|
160
|
-
postExec,
|
|
161
|
-
auditEntry,
|
|
162
|
-
profile: this.evaluator.profiler.getProfile(sessionId),
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Record implicit user feedback.
|
|
167
|
-
*/
|
|
168
|
-
recordFeedback(signal, sessionId, operationId, confidence, source) {
|
|
169
|
-
this.evaluator.feedback.record(signal, sessionId, operationId, confidence, source);
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Get a JSON report for dashboard consumption.
|
|
173
|
-
*/
|
|
174
|
-
getReport() {
|
|
175
|
-
const profile = this.getProfile();
|
|
176
|
-
const audit = this.getAuditStats();
|
|
177
|
-
return {
|
|
178
|
-
quality: { overallScore: Math.round(profile.overallScore), ...profile.breakdown },
|
|
179
|
-
audit: { ...audit },
|
|
180
|
-
satisfaction: profile.breakdown.userSatisfaction || 0,
|
|
181
|
-
workingMemory: { messages: this.memory.working.getState().recentMessages.length },
|
|
182
|
-
episodicEvents: this.memory.episodic.count || 0,
|
|
183
|
-
warnings: profile.warnings,
|
|
184
|
-
strengths: profile.strengths,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Inject memory context at session startup.
|
|
189
|
-
*
|
|
190
|
-
* Call this at the beginning of every session to load
|
|
191
|
-
* semantic + episodic context into the session prompt.
|
|
192
|
-
*/
|
|
193
|
-
injectContext() {
|
|
194
|
-
const semanticSummary = this.memory.semantic.generateContextSummary(2000);
|
|
195
|
-
const episodicSummary = this.memory.episodic.generateContextSummary(1500);
|
|
196
|
-
const parts = [];
|
|
197
|
-
if (semanticSummary)
|
|
198
|
-
parts.push(semanticSummary);
|
|
199
|
-
if (episodicSummary)
|
|
200
|
-
parts.push(episodicSummary);
|
|
201
|
-
return parts.join('\n\n---\n\n');
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* End current session β auto-detect feedback, promote events to episodic,
|
|
205
|
-
* append daily log, clear working memory.
|
|
206
|
-
*/
|
|
207
|
-
endSession(sessionId, workspaceRoot) {
|
|
208
|
-
// Phase 1: Auto-detect feedback from audit log
|
|
209
|
-
const recentAudit = this.guard.audit.query({ sessionId, limit: 100 });
|
|
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;
|
|
219
|
-
// Phase 2: Promote important working memory items to episodic
|
|
220
|
-
// 2a: Current task
|
|
221
|
-
if (this.memory.working.currentTask) {
|
|
222
|
-
this.memory.episodic.record('milestone', `Task completed: ${this.memory.working.currentTask.description}`, ['task', 'session-end'], [sessionId]);
|
|
223
|
-
}
|
|
224
|
-
// 2b: Working memory context snapshot for next session recovery
|
|
225
|
-
this.persistWorkingContext(sessionId);
|
|
226
|
-
// Phase 3: Log learned rules from this session
|
|
227
|
-
const rules = this.memory.semantic.getRules(0.6);
|
|
228
|
-
for (const rule of rules.slice(0, 3)) {
|
|
229
|
-
this.memory.episodic.record('note', `Rule: ${rule.rule} (confidence: ${Math.round(rule.confidence * 100)}%)`, ['rule', 'semantic'], []);
|
|
230
|
-
}
|
|
231
|
-
// Phase 4: Record session end event with stats
|
|
232
|
-
const profile = this.evaluator.profiler.getProfile(sessionId);
|
|
233
|
-
const auditStats = this.guard.audit.stats();
|
|
234
|
-
this.memory.episodic.record('note', `Session ended β Score: ${profile.overallScore}/100 | Ops: ${auditStats.totalOperations} | Feedback signals detected: ${detected}`, ['session-end', 'summary'], [sessionId]);
|
|
235
|
-
// Phase 5: Append daily log if workspaceRoot provided
|
|
236
|
-
if (workspaceRoot) {
|
|
237
|
-
this.appendDailyLog(sessionId, workspaceRoot);
|
|
238
|
-
}
|
|
239
|
-
// Phase 5: Decay unused semantic rules
|
|
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'], []);
|
|
245
|
-
// Phase 6: Clear working memory for next session
|
|
246
|
-
this.memory.working.clear();
|
|
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
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Append evaluation summary to daily log file.
|
|
297
|
-
*/
|
|
298
|
-
appendDailyLog(sessionId, workspaceRoot) {
|
|
299
|
-
try {
|
|
300
|
-
const { appendFileSync, existsSync, mkdirSync } = require('fs');
|
|
301
|
-
const path = require('path');
|
|
302
|
-
const dateKey = new Date().toISOString().split('T')[0];
|
|
303
|
-
const memDir = path.join(workspaceRoot, 'memory');
|
|
304
|
-
if (!existsSync(memDir))
|
|
305
|
-
mkdirSync(memDir, { recursive: true });
|
|
306
|
-
const dailyFile = path.join(memDir, `${dateKey}.md`);
|
|
307
|
-
const profile = this.evaluator.profiler.getProfile(sessionId);
|
|
308
|
-
const auditStats = this.guard.audit.stats();
|
|
309
|
-
const satisfaction = this.evaluator.feedback.getSatisfactionScore(sessionId);
|
|
310
|
-
const report = [
|
|
311
|
-
'',
|
|
312
|
-
'## π AgentOS Evaluator δ»ζ₯θ―δΌ°',
|
|
313
|
-
'',
|
|
314
|
-
`**η»Όεθ―ε**: ${profile.overallScore}/100 | Pre:${profile.breakdown.preExec ?? 'N/A'}/100 | Run:${profile.breakdown.runtime ?? 'N/A'}/100 | Post:${profile.breakdown.postExec ?? 'N/A'}/100`,
|
|
315
|
-
`**θΆεΏ**: ${profile.trends.improving ? 'π δΈε' : 'π δΈι'} | **ζδ½ζ°**: ${auditStats.totalOperations} | **ζ»‘ζεΊ¦**: ${satisfaction}`,
|
|
316
|
-
profile.warnings.length > 0 ? `**β οΈ**: ${profile.warnings.join('; ')}` : '',
|
|
317
|
-
profile.strengths.length > 0 ? `**β
**: ${profile.strengths.join('; ')}` : '',
|
|
318
|
-
'',
|
|
319
|
-
].filter(Boolean).join('\n');
|
|
320
|
-
const existing = existsSync(dailyFile) ? require('fs').readFileSync(dailyFile, 'utf-8') : '';
|
|
321
|
-
if (!existing.includes('AgentOS Evaluator')) {
|
|
322
|
-
appendFileSync(dailyFile, report, 'utf-8');
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
catch (e) {
|
|
326
|
-
console.warn('[AgentOS] Failed to append daily log:', e);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Detect if this tool call's parameters reference a previous result.
|
|
331
|
-
*/
|
|
332
|
-
detectResultUtilization(params, sessionId) {
|
|
333
|
-
try {
|
|
334
|
-
const allValues = Object.values(params).join(' ');
|
|
335
|
-
const tracker = this.evaluator.postExec['resultReferenceTracker'];
|
|
336
|
-
if (!tracker)
|
|
337
|
-
return;
|
|
338
|
-
for (const [opId, entry] of tracker) {
|
|
339
|
-
if (entry.referenced)
|
|
340
|
-
continue;
|
|
341
|
-
const resultStr = JSON.stringify(entry.result);
|
|
342
|
-
// Check if parameters contain a reference to previous result
|
|
343
|
-
if (resultStr.length > 10 && allValues.includes(resultStr.substring(0, 20))) {
|
|
344
|
-
this.evaluator.postExec.markResultReferenced(opId);
|
|
345
|
-
this.evaluator.feedback.record('user_used_result', sessionId, opId, 0.5, 'auto-param-match');
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
catch {
|
|
350
|
-
// Non-critical, silently ignore detection failures
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Get audit statistics.
|
|
355
|
-
*/
|
|
356
|
-
getAuditStats() {
|
|
357
|
-
return this.guard.audit.stats();
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Get the current agent quality profile.
|
|
361
|
-
*/
|
|
362
|
-
getProfile(sessionId) {
|
|
363
|
-
return this.evaluator.profiler.getProfile(sessionId);
|
|
364
|
-
}
|
|
365
|
-
/**
|
|
366
|
-
* Get a summarized status report.
|
|
367
|
-
*/
|
|
368
|
-
statusReport() {
|
|
369
|
-
const profile = this.getProfile();
|
|
370
|
-
const audit = this.getAuditStats();
|
|
371
|
-
const lines = [
|
|
372
|
-
'=== AgentOS Status Report ===',
|
|
373
|
-
'',
|
|
374
|
-
`Quality Score: ${Math.round(profile.overallScore)}/100 ${profile.trends.improving ? 'π' : 'π'}`,
|
|
375
|
-
`Total Operations: ${profile.totalOps} (${profile.trends.recentOps} in last 24h)`,
|
|
376
|
-
'',
|
|
377
|
-
'--- Breakdown ---',
|
|
378
|
-
`Pre-Exec: ${profile.breakdown.preExec}/100`,
|
|
379
|
-
`Runtime: ${profile.breakdown.runtime}/100`,
|
|
380
|
-
`Post-Exec: ${profile.breakdown.postExec}/100`,
|
|
381
|
-
`Satisfaction: ${profile.breakdown.userSatisfaction}/100`,
|
|
382
|
-
'',
|
|
383
|
-
'--- Audit ---',
|
|
384
|
-
`Total: ${audit.totalOperations} | Failures: ${audit.verifyFailures} | High-Risk: ${audit.highRiskOps}`,
|
|
385
|
-
];
|
|
386
|
-
if (profile.warnings.length > 0) {
|
|
387
|
-
lines.push('', '--- β οΈ Warnings ---');
|
|
388
|
-
for (const w of profile.warnings)
|
|
389
|
-
lines.push(`- ${w}`);
|
|
390
|
-
}
|
|
391
|
-
if (profile.strengths.length > 0) {
|
|
392
|
-
lines.push('', '--- β
Strengths ---');
|
|
393
|
-
for (const s of profile.strengths)
|
|
394
|
-
lines.push(`- ${s}`);
|
|
395
|
-
}
|
|
396
|
-
return lines.join('\n');
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
exports.AgentOS = AgentOS;
|
|
400
|
-
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|