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/memory/semantic.js
DELETED
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SemanticMemoryStore = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
/**
|
|
40
|
-
* Semantic Memory — durable, distilled knowledge.
|
|
41
|
-
*
|
|
42
|
-
* Stores user preferences, project context, learned rules, and glossary
|
|
43
|
-
* extracted from Episodic Memory over time. This is what persists
|
|
44
|
-
* across all sessions and gets injected at startup.
|
|
45
|
-
*/
|
|
46
|
-
class SemanticMemoryStore {
|
|
47
|
-
memory;
|
|
48
|
-
storagePath;
|
|
49
|
-
_saveTimer = null;
|
|
50
|
-
_dirty = false;
|
|
51
|
-
constructor() {
|
|
52
|
-
this.memory = {
|
|
53
|
-
userPreferences: {},
|
|
54
|
-
userFacts: [],
|
|
55
|
-
projectContext: {},
|
|
56
|
-
learnedRules: [],
|
|
57
|
-
glossary: {},
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/** Enable disk persistence */
|
|
61
|
-
enablePersistence(workspaceRoot) {
|
|
62
|
-
this.storagePath = path.join(workspaceRoot, '.agentos', 'semantic.json');
|
|
63
|
-
this.load();
|
|
64
|
-
}
|
|
65
|
-
/** Get the full semantic memory */
|
|
66
|
-
getMemory() {
|
|
67
|
-
return this.memory;
|
|
68
|
-
}
|
|
69
|
-
// === User Preferences ===
|
|
70
|
-
/** Set a user preference */
|
|
71
|
-
setPreference(key, value) {
|
|
72
|
-
this.memory.userPreferences[key] = value;
|
|
73
|
-
this.save();
|
|
74
|
-
}
|
|
75
|
-
/** Get a user preference */
|
|
76
|
-
getPreference(key) {
|
|
77
|
-
return this.memory.userPreferences[key];
|
|
78
|
-
}
|
|
79
|
-
/** Get all preferences */
|
|
80
|
-
getAllPreferences() {
|
|
81
|
-
return { ...this.memory.userPreferences };
|
|
82
|
-
}
|
|
83
|
-
/** Remove a preference */
|
|
84
|
-
removePreference(key) {
|
|
85
|
-
delete this.memory.userPreferences[key];
|
|
86
|
-
this.save();
|
|
87
|
-
}
|
|
88
|
-
// === User Facts ===
|
|
89
|
-
/** Add a fact about the user */
|
|
90
|
-
addFact(fact) {
|
|
91
|
-
const existing = this.memory.userFacts.find((f) => f.fact === fact);
|
|
92
|
-
if (existing) {
|
|
93
|
-
existing.lastReferenced = Date.now();
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this.memory.userFacts.push({
|
|
97
|
-
fact,
|
|
98
|
-
timestamp: Date.now(),
|
|
99
|
-
lastReferenced: Date.now(),
|
|
100
|
-
});
|
|
101
|
-
this.save();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/** Get active (non-stale) user facts — updates lastReferenced on read */
|
|
105
|
-
getFacts(maxStaleMs = 30 * 24 * 60 * 60 * 1000) {
|
|
106
|
-
const now = Date.now();
|
|
107
|
-
const staleThreshold = now - maxStaleMs;
|
|
108
|
-
return this.memory.userFacts
|
|
109
|
-
.filter((f) => { if (f.lastReferenced >= staleThreshold) {
|
|
110
|
-
f.lastReferenced = now;
|
|
111
|
-
return true;
|
|
112
|
-
} return false; })
|
|
113
|
-
.map((f) => f.fact);
|
|
114
|
-
}
|
|
115
|
-
/** Get all facts including stale ones */
|
|
116
|
-
getAllFacts() {
|
|
117
|
-
return [...this.memory.userFacts];
|
|
118
|
-
}
|
|
119
|
-
// === Project Context ===
|
|
120
|
-
/** Set or update project context — merges with existing, preserves extra fields */
|
|
121
|
-
setProjectContext(projectName, context) {
|
|
122
|
-
const existing = this.memory.projectContext[projectName] ?? {};
|
|
123
|
-
this.memory.projectContext[projectName] = Object.assign({}, existing, context);
|
|
124
|
-
this.save();
|
|
125
|
-
}
|
|
126
|
-
/** Get project context */
|
|
127
|
-
getProjectContext(projectName) {
|
|
128
|
-
return this.memory.projectContext[projectName];
|
|
129
|
-
}
|
|
130
|
-
/** Get all project contexts */
|
|
131
|
-
getAllProjects() {
|
|
132
|
-
return Object.keys(this.memory.projectContext);
|
|
133
|
-
}
|
|
134
|
-
// === Learned Rules ===
|
|
135
|
-
/** Learn a new rule or reinforce an existing one */
|
|
136
|
-
learnRule(rule, source) {
|
|
137
|
-
const existing = this.memory.learnedRules.find((r) => r.rule === rule);
|
|
138
|
-
if (existing) {
|
|
139
|
-
// Reinforce: asymptotically approach 0.85 (never hits 1.0)
|
|
140
|
-
existing.confidence = 0.85 - (0.85 - existing.confidence) * 0.5;
|
|
141
|
-
existing.lastReferenced = Date.now();
|
|
142
|
-
if (!existing.source.includes(source)) {
|
|
143
|
-
existing.source.push(source);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
this.memory.learnedRules.push({
|
|
148
|
-
rule,
|
|
149
|
-
confidence: 0.5,
|
|
150
|
-
source: [source],
|
|
151
|
-
lastReferenced: Date.now(),
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
this.save();
|
|
155
|
-
}
|
|
156
|
-
/** Get rules above a confidence threshold — updates lastReferenced on read */
|
|
157
|
-
getRules(minConfidence = 0.5) {
|
|
158
|
-
const now = Date.now();
|
|
159
|
-
return this.memory.learnedRules
|
|
160
|
-
.filter((r) => r.confidence >= minConfidence)
|
|
161
|
-
.map((r) => { r.lastReferenced = now; return r; })
|
|
162
|
-
.sort((a, b) => b.confidence - a.confidence);
|
|
163
|
-
}
|
|
164
|
-
/** Decay confidence of rules not referenced in a given timespan */
|
|
165
|
-
decayUnusedRules(maxStaleMs = 3 * 24 * 60 * 60 * 1000) {
|
|
166
|
-
const staleThreshold = Date.now() - maxStaleMs;
|
|
167
|
-
let decayed = 0;
|
|
168
|
-
for (const rule of this.memory.learnedRules) {
|
|
169
|
-
if (rule.lastReferenced < staleThreshold && rule.confidence > 0.1) {
|
|
170
|
-
rule.confidence = Math.max(0.1, rule.confidence - 0.05);
|
|
171
|
-
decayed++;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
if (decayed > 0)
|
|
175
|
-
this.save();
|
|
176
|
-
return decayed;
|
|
177
|
-
}
|
|
178
|
-
/** Get all rules regardless of confidence */
|
|
179
|
-
getAllRules() {
|
|
180
|
-
return [...this.memory.learnedRules];
|
|
181
|
-
}
|
|
182
|
-
// === Glossary ===
|
|
183
|
-
/** Add or update a glossary term */
|
|
184
|
-
defineTerm(term, meaning) {
|
|
185
|
-
this.memory.glossary[term] = meaning;
|
|
186
|
-
this.save();
|
|
187
|
-
}
|
|
188
|
-
/** Look up a glossary term */
|
|
189
|
-
lookupTerm(term) {
|
|
190
|
-
return this.memory.glossary[term];
|
|
191
|
-
}
|
|
192
|
-
/** Get the entire glossary */
|
|
193
|
-
getGlossary() {
|
|
194
|
-
return { ...this.memory.glossary };
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Generate a context summary for injection into the session prompt.
|
|
198
|
-
* Concise but informative — designed to fit in a system prompt prefix.
|
|
199
|
-
*/
|
|
200
|
-
generateContextSummary(maxChars = 3000) {
|
|
201
|
-
const parts = ['[AgentOS Semantic Memory]', ''];
|
|
202
|
-
// User facts (non-stale only)
|
|
203
|
-
const activeFacts = this.getFacts();
|
|
204
|
-
if (activeFacts.length > 0) {
|
|
205
|
-
parts.push('## About the User');
|
|
206
|
-
for (const fact of activeFacts.slice(0, 5)) {
|
|
207
|
-
parts.push(`- ${fact}`);
|
|
208
|
-
}
|
|
209
|
-
parts.push('');
|
|
210
|
-
}
|
|
211
|
-
// Preferences
|
|
212
|
-
const prefs = Object.entries(this.memory.userPreferences);
|
|
213
|
-
if (prefs.length > 0) {
|
|
214
|
-
parts.push('## Preferences');
|
|
215
|
-
for (const [key, value] of prefs.slice(0, 10)) {
|
|
216
|
-
parts.push(`- ${key}: ${JSON.stringify(value)}`);
|
|
217
|
-
}
|
|
218
|
-
parts.push('');
|
|
219
|
-
}
|
|
220
|
-
// Project context
|
|
221
|
-
const projects = Object.keys(this.memory.projectContext);
|
|
222
|
-
if (projects.length > 0) {
|
|
223
|
-
parts.push('## Project Context');
|
|
224
|
-
for (const proj of projects.slice(0, 3)) {
|
|
225
|
-
const ctx = this.memory.projectContext[proj];
|
|
226
|
-
parts.push(`### ${proj}`);
|
|
227
|
-
if (ctx.description)
|
|
228
|
-
parts.push(`- Description: ${ctx.description}`);
|
|
229
|
-
if (ctx.techStack?.length)
|
|
230
|
-
parts.push(`- Tech: ${ctx.techStack.join(', ')}`);
|
|
231
|
-
if (ctx.conventions?.length)
|
|
232
|
-
parts.push(`- Conventions: ${ctx.conventions.slice(0, 5).join(', ')}`);
|
|
233
|
-
parts.push('');
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
// Learned rules (high confidence only)
|
|
237
|
-
const rules = this.getRules(0.7);
|
|
238
|
-
if (rules.length > 0) {
|
|
239
|
-
parts.push('## Learned Rules');
|
|
240
|
-
for (const r of rules.slice(0, 5)) {
|
|
241
|
-
parts.push(`- [${Math.round(r.confidence * 100)}%] ${r.rule}`);
|
|
242
|
-
}
|
|
243
|
-
parts.push('');
|
|
244
|
-
}
|
|
245
|
-
const summary = parts.join('\n');
|
|
246
|
-
return summary.length > maxChars ? summary.slice(0, maxChars) + '\n...' : summary;
|
|
247
|
-
}
|
|
248
|
-
/** Persist to disk */
|
|
249
|
-
markDirty() {
|
|
250
|
-
this._dirty = true;
|
|
251
|
-
if (!this._saveTimer) {
|
|
252
|
-
this._saveTimer = setTimeout(() => {
|
|
253
|
-
this._saveTimer = null;
|
|
254
|
-
if (this._dirty) {
|
|
255
|
-
this.persist();
|
|
256
|
-
this._dirty = false;
|
|
257
|
-
}
|
|
258
|
-
}, 300);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/** Persist to disk */
|
|
262
|
-
persist() {
|
|
263
|
-
if (!this.storagePath)
|
|
264
|
-
return;
|
|
265
|
-
const dir = path.dirname(this.storagePath);
|
|
266
|
-
if (!fs.existsSync(dir)) {
|
|
267
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
268
|
-
}
|
|
269
|
-
fs.writeFileSync(this.storagePath, JSON.stringify(this.memory, null, 2), 'utf-8');
|
|
270
|
-
}
|
|
271
|
-
save() {
|
|
272
|
-
this.markDirty();
|
|
273
|
-
}
|
|
274
|
-
/** Force immediate write to disk (for testing / shutdown) */
|
|
275
|
-
flush() {
|
|
276
|
-
if (this._saveTimer) {
|
|
277
|
-
clearTimeout(this._saveTimer);
|
|
278
|
-
this._saveTimer = null;
|
|
279
|
-
}
|
|
280
|
-
if (this._dirty) {
|
|
281
|
-
this.persist();
|
|
282
|
-
this._dirty = false;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
/** Load from disk */
|
|
286
|
-
load() {
|
|
287
|
-
try {
|
|
288
|
-
if (fs.existsSync(this.storagePath)) {
|
|
289
|
-
const data = fs.readFileSync(this.storagePath, 'utf-8');
|
|
290
|
-
this.memory = JSON.parse(data);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
catch {
|
|
294
|
-
// Keep defaults
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
exports.SemanticMemoryStore = SemanticMemoryStore;
|
|
299
|
-
//# sourceMappingURL=semantic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/memory/semantic.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/working.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Message, Task, ToolResult, TokenBudget } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* WorkingMemory state interface (matches types/index.ts WorkingMemory).
|
|
4
|
-
*/
|
|
5
|
-
export interface WorkingMemoryState {
|
|
6
|
-
sessionId: string;
|
|
7
|
-
recentMessages: Message[];
|
|
8
|
-
currentTask?: Task;
|
|
9
|
-
recentToolResults: Map<string, ToolResult>;
|
|
10
|
-
openFiles: string[];
|
|
11
|
-
budget: TokenBudget;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Working Memory — current session's live context.
|
|
15
|
-
*
|
|
16
|
-
* Holds recent messages, current task, tool results cache,
|
|
17
|
-
* open files, and token budget for the active session.
|
|
18
|
-
* On session end, important items are promoted to Episodic Memory.
|
|
19
|
-
* When token budget is exceeded, old messages are compressed.
|
|
20
|
-
*/
|
|
21
|
-
export declare class WorkingMemory {
|
|
22
|
-
readonly sessionId: string;
|
|
23
|
-
private _maxTokens;
|
|
24
|
-
recentMessages: Message[];
|
|
25
|
-
currentTask?: Task;
|
|
26
|
-
recentToolResults: Map<string, ToolResult>;
|
|
27
|
-
openFiles: string[];
|
|
28
|
-
budget: TokenBudget;
|
|
29
|
-
constructor(maxTokens?: number);
|
|
30
|
-
/** Maximum configured tokens */
|
|
31
|
-
get maxTokens(): number;
|
|
32
|
-
/** Get the current state as a snapshot */
|
|
33
|
-
getState(): WorkingMemoryState;
|
|
34
|
-
/** Add a message to the working memory */
|
|
35
|
-
addMessage(role: 'user' | 'agent' | 'tool', content: string): void;
|
|
36
|
-
/** Set or update the current task */
|
|
37
|
-
setTask(task: Task): void;
|
|
38
|
-
/** Update a step's status */
|
|
39
|
-
updateStepStatus(stepIndex: number, status: Task['steps'][number]['status']): void;
|
|
40
|
-
/** Track an open file */
|
|
41
|
-
addOpenFile(filePath: string): void;
|
|
42
|
-
/** Remove a file from tracking */
|
|
43
|
-
removeOpenFile(filePath: string): void;
|
|
44
|
-
/** Cache a tool call result */
|
|
45
|
-
cacheToolResult(toolName: string, result: unknown): void;
|
|
46
|
-
/** Check if a tool result is cached and fresh */
|
|
47
|
-
getCachedResult(toolName: string, maxAgeMs?: number): ToolResult | undefined;
|
|
48
|
-
/** Clear working memory (called on session end) */
|
|
49
|
-
clear(): void;
|
|
50
|
-
/** Estimate token count (rough: 1 token ≈ 4 chars for English/Chinese) */
|
|
51
|
-
private estimateTokens;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=working.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"working.d.ts","sourceRoot":"","sources":["../../src/memory/working.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,IAAI,EACJ,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AASD;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;gBAER,SAAS,SAAQ;IAS7B,gCAAgC;IAChC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0CAA0C;IAC1C,QAAQ,IAAI,kBAAkB;IAW9B,0CAA0C;IAC1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAmBlE,qCAAqC;IACrC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,6BAA6B;IAC7B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI;IAMlF,yBAAyB;IACzB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC,kCAAkC;IAClC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAItC,+BAA+B;IAC/B,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAoBxD,iDAAiD;IACjD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAQ,GAAG,UAAU,GAAG,SAAS;IAU3E,mDAAmD;IACnD,KAAK,IAAI,IAAI;IAQb,0EAA0E;IAC1E,OAAO,CAAC,cAAc;CAGvB"}
|
package/dist/memory/working.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.WorkingMemory = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
/**
|
|
39
|
-
* Generate a unique session ID.
|
|
40
|
-
*/
|
|
41
|
-
function generateSessionId() {
|
|
42
|
-
return `wm_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Working Memory — current session's live context.
|
|
46
|
-
*
|
|
47
|
-
* Holds recent messages, current task, tool results cache,
|
|
48
|
-
* open files, and token budget for the active session.
|
|
49
|
-
* On session end, important items are promoted to Episodic Memory.
|
|
50
|
-
* When token budget is exceeded, old messages are compressed.
|
|
51
|
-
*/
|
|
52
|
-
class WorkingMemory {
|
|
53
|
-
sessionId;
|
|
54
|
-
_maxTokens;
|
|
55
|
-
recentMessages;
|
|
56
|
-
currentTask;
|
|
57
|
-
recentToolResults;
|
|
58
|
-
openFiles;
|
|
59
|
-
budget;
|
|
60
|
-
constructor(maxTokens = 50000) {
|
|
61
|
-
this.sessionId = generateSessionId();
|
|
62
|
-
this._maxTokens = maxTokens;
|
|
63
|
-
this.recentMessages = [];
|
|
64
|
-
this.recentToolResults = new Map();
|
|
65
|
-
this.openFiles = [];
|
|
66
|
-
this.budget = { used: 0, limit: maxTokens };
|
|
67
|
-
}
|
|
68
|
-
/** Maximum configured tokens */
|
|
69
|
-
get maxTokens() {
|
|
70
|
-
return this._maxTokens;
|
|
71
|
-
}
|
|
72
|
-
/** Get the current state as a snapshot */
|
|
73
|
-
getState() {
|
|
74
|
-
return {
|
|
75
|
-
sessionId: this.sessionId,
|
|
76
|
-
recentMessages: [...this.recentMessages],
|
|
77
|
-
currentTask: this.currentTask ? { ...this.currentTask } : undefined,
|
|
78
|
-
recentToolResults: new Map(this.recentToolResults),
|
|
79
|
-
openFiles: [...this.openFiles],
|
|
80
|
-
budget: { ...this.budget },
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/** Add a message to the working memory */
|
|
84
|
-
addMessage(role, content) {
|
|
85
|
-
const msg = {
|
|
86
|
-
role,
|
|
87
|
-
content,
|
|
88
|
-
timestamp: Date.now(),
|
|
89
|
-
};
|
|
90
|
-
this.recentMessages.push(msg);
|
|
91
|
-
this.budget.used += this.estimateTokens(content);
|
|
92
|
-
// Trim old messages if over budget
|
|
93
|
-
while (this.budget.used > this.budget.limit && this.recentMessages.length > 2) {
|
|
94
|
-
const toRemove = this.recentMessages.shift();
|
|
95
|
-
if (toRemove) {
|
|
96
|
-
this.budget.used -= this.estimateTokens(toRemove.content);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/** Set or update the current task */
|
|
101
|
-
setTask(task) {
|
|
102
|
-
this.currentTask = task;
|
|
103
|
-
}
|
|
104
|
-
/** Update a step's status */
|
|
105
|
-
updateStepStatus(stepIndex, status) {
|
|
106
|
-
if (this.currentTask && stepIndex < this.currentTask.steps.length) {
|
|
107
|
-
this.currentTask.steps[stepIndex].status = status;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/** Track an open file */
|
|
111
|
-
addOpenFile(filePath) {
|
|
112
|
-
if (!this.openFiles.includes(filePath)) {
|
|
113
|
-
this.openFiles.push(filePath);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/** Remove a file from tracking */
|
|
117
|
-
removeOpenFile(filePath) {
|
|
118
|
-
this.openFiles = this.openFiles.filter((f) => f !== filePath);
|
|
119
|
-
}
|
|
120
|
-
/** Cache a tool call result */
|
|
121
|
-
cacheToolResult(toolName, result) {
|
|
122
|
-
// Evict oldest entry if over capacity (LRU-style cap=100)
|
|
123
|
-
if (this.recentToolResults.size >= 100) {
|
|
124
|
-
let oldestKey = '';
|
|
125
|
-
let oldestTime = Infinity;
|
|
126
|
-
for (const [key, val] of this.recentToolResults) {
|
|
127
|
-
if (val.timestamp < oldestTime) {
|
|
128
|
-
oldestTime = val.timestamp;
|
|
129
|
-
oldestKey = key;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (oldestKey)
|
|
133
|
-
this.recentToolResults.delete(oldestKey);
|
|
134
|
-
}
|
|
135
|
-
this.recentToolResults.set(toolName, {
|
|
136
|
-
toolName,
|
|
137
|
-
result,
|
|
138
|
-
timestamp: Date.now(),
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
/** Check if a tool result is cached and fresh */
|
|
142
|
-
getCachedResult(toolName, maxAgeMs = 30000) {
|
|
143
|
-
const cached = this.recentToolResults.get(toolName);
|
|
144
|
-
if (cached && Date.now() - cached.timestamp < maxAgeMs) {
|
|
145
|
-
return cached;
|
|
146
|
-
}
|
|
147
|
-
// Clean up stale entry
|
|
148
|
-
if (cached)
|
|
149
|
-
this.recentToolResults.delete(toolName);
|
|
150
|
-
return undefined;
|
|
151
|
-
}
|
|
152
|
-
/** Clear working memory (called on session end) */
|
|
153
|
-
clear() {
|
|
154
|
-
this.recentMessages = [];
|
|
155
|
-
this.currentTask = undefined;
|
|
156
|
-
this.recentToolResults.clear();
|
|
157
|
-
this.openFiles = [];
|
|
158
|
-
this.budget.used = 0;
|
|
159
|
-
}
|
|
160
|
-
/** Estimate token count (rough: 1 token ≈ 4 chars for English/Chinese) */
|
|
161
|
-
estimateTokens(text) {
|
|
162
|
-
return Math.ceil(text.length / 2); // Chinese chars ≈ 1 token each
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
exports.WorkingMemory = WorkingMemory;
|
|
166
|
-
//# sourceMappingURL=working.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"working.js","sourceRoot":"","sources":["../../src/memory/working.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sentinel AgentOS Middleware — OpenClaw Plugin
|
|
3
|
-
*
|
|
4
|
-
* Seamless integration with OpenClaw agent runtime.
|
|
5
|
-
* Hooks into OpenClaw's tool-call lifecycle to add Guard + Memory + Evaluator.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* In your OpenClaw skill or agent config:
|
|
9
|
-
*
|
|
10
|
-
* import { sentinelPlugin } from 'sentinel-agentos';
|
|
11
|
-
*
|
|
12
|
-
* const plugin = sentinelPlugin({ workspaceRoot: '/workspace' });
|
|
13
|
-
* plugin.onBeforeTool((toolName, params) => { ... }); // returns risk + schema
|
|
14
|
-
* plugin.onAfterTool((toolName, params, result) => { ... }); // returns verify + audit
|
|
15
|
-
*/
|
|
16
|
-
import { WrappedAgent } from './wrapper';
|
|
17
|
-
import type { AgentOSConfig } from '../types';
|
|
18
|
-
export interface OpenClawPlugin {
|
|
19
|
-
readonly wrapped: WrappedAgent;
|
|
20
|
-
/** Called before an OpenClaw tool call */
|
|
21
|
-
onBeforeTool: (toolName: string, params: Record<string, unknown>) => {
|
|
22
|
-
allowed: boolean;
|
|
23
|
-
riskScore: number;
|
|
24
|
-
riskAction: string;
|
|
25
|
-
schemaErrors?: string[];
|
|
26
|
-
};
|
|
27
|
-
/** Called after an OpenClaw tool call */
|
|
28
|
-
onAfterTool: (toolName: string, params: Record<string, unknown>, result: unknown, startTime: number) => {
|
|
29
|
-
verifyPassed: boolean;
|
|
30
|
-
verifyDetail: string;
|
|
31
|
-
auditId: string;
|
|
32
|
-
};
|
|
33
|
-
/** Session management */
|
|
34
|
-
sessionStart: (sessionId: string) => string;
|
|
35
|
-
sessionEnd: (sessionId: string) => void;
|
|
36
|
-
/** Feedback hooks — call these when user signals are detected */
|
|
37
|
-
recordApproval: (sessionId: string) => void;
|
|
38
|
-
recordCorrection: (sessionId: string) => void;
|
|
39
|
-
recordDeletion: (sessionId: string) => void;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Create an OpenClaw plugin that wraps Sentinel AgentOS.
|
|
43
|
-
*/
|
|
44
|
-
export declare function sentinelPlugin(config?: Partial<AgentOSConfig>): OpenClawPlugin;
|
|
45
|
-
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/middleware/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAa,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAE/B,0CAA0C;IAC1C,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;QACnE,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IAEF,yCAAyC;IACzC,WAAW,EAAE,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,KACd;QACH,YAAY,EAAE,OAAO,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,yBAAyB;IACzB,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,iEAAiE;IACjE,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,cAAc,CAmF9E"}
|