sentinel-agentos 0.3.6 → 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/dist/src/dashboard.html +175 -0
- package/package.json +3 -2
- 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 -151
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -341
- package/dist/core.js.map +0 -1
- 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 -57
- package/dist/evaluator/feedback.d.ts.map +0 -1
- package/dist/evaluator/feedback.js +0 -225
- 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 -117
- 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 -246
- 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
|
@@ -1,571 +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.VerifyGate = exports.SnapshotGate = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const child_process_1 = require("child_process");
|
|
41
|
-
/**
|
|
42
|
-
* Hash a file's content with SHA-256.
|
|
43
|
-
* Returns undefined if the file doesn't exist.
|
|
44
|
-
*/
|
|
45
|
-
function hashFile(filePath) {
|
|
46
|
-
try {
|
|
47
|
-
const content = fs.readFileSync(filePath);
|
|
48
|
-
return `sha256:${crypto.createHash('sha256').update(content).digest('hex')}`;
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Collect file hashes for files matched by glob patterns.
|
|
56
|
-
*/
|
|
57
|
-
function collectHashes(rootDir, patterns) {
|
|
58
|
-
const hashes = {};
|
|
59
|
-
for (const pattern of patterns) {
|
|
60
|
-
// Simple glob: support * and **
|
|
61
|
-
const baseDir = pattern.replace(/\*\*\/\*$/, '').replace(/\/\*$/, '');
|
|
62
|
-
const fullBase = path.resolve(rootDir, baseDir);
|
|
63
|
-
if (fs.existsSync(fullBase) && fs.statSync(fullBase).isDirectory()) {
|
|
64
|
-
walkDir(fullBase, fullBase, hashes);
|
|
65
|
-
}
|
|
66
|
-
else if (fs.existsSync(fullBase)) {
|
|
67
|
-
const h = hashFile(fullBase);
|
|
68
|
-
if (h)
|
|
69
|
-
hashes[pattern] = h;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return hashes;
|
|
73
|
-
}
|
|
74
|
-
function walkDir(dir, baseDir, hashes) {
|
|
75
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
76
|
-
for (const entry of entries) {
|
|
77
|
-
const full = path.join(dir, entry.name);
|
|
78
|
-
if (entry.isDirectory()) {
|
|
79
|
-
// Skip node_modules, .git, dist
|
|
80
|
-
if (['node_modules', '.git', 'dist', '.agentos'].includes(entry.name))
|
|
81
|
-
continue;
|
|
82
|
-
walkDir(full, baseDir, hashes);
|
|
83
|
-
}
|
|
84
|
-
else if (entry.isFile()) {
|
|
85
|
-
const rel = path.relative(baseDir, full).replace(/\\/g, '/');
|
|
86
|
-
const h = hashFile(full);
|
|
87
|
-
if (h)
|
|
88
|
-
hashes[rel] = h;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Generate a unique snapshot ID.
|
|
94
|
-
*/
|
|
95
|
-
function generateId() {
|
|
96
|
-
return `snap_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Snapshot Gate �?captures pre-execution state for later diff/rollback.
|
|
100
|
-
*
|
|
101
|
-
* Takes a lightweight snapshot (file hashes, git status, env vars)
|
|
102
|
-
* before a tool call executes so that Verify Gate and Rollback
|
|
103
|
-
* can compare before/after state.
|
|
104
|
-
*/
|
|
105
|
-
class SnapshotGate {
|
|
106
|
-
workspaceRoot;
|
|
107
|
-
constructor(workspaceRoot) {
|
|
108
|
-
this.workspaceRoot = workspaceRoot;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Create a snapshot before a tool call.
|
|
112
|
-
*
|
|
113
|
-
* @param toolCallId - Unique ID for this tool call
|
|
114
|
-
* @param toolName - Name of the tool being called
|
|
115
|
-
* @param affectedFiles - Files expected to be affected (for scoped snapshots)
|
|
116
|
-
* @param scope - Snapshot scope (file/workspace/full)
|
|
117
|
-
*/
|
|
118
|
-
takeSnapshot(toolCallId, _toolName, affectedFiles = [], scope = 'file') {
|
|
119
|
-
let fileHashes = {};
|
|
120
|
-
if (scope === 'file' && affectedFiles.length > 0) {
|
|
121
|
-
// Hash only affected files
|
|
122
|
-
for (const file of affectedFiles) {
|
|
123
|
-
const h = hashFile(file);
|
|
124
|
-
if (h)
|
|
125
|
-
fileHashes[file] = h;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
else if (scope === 'workspace') {
|
|
129
|
-
// Hash entire workspace (excl node_modules, .git, dist)
|
|
130
|
-
fileHashes = collectHashes(this.workspaceRoot, ['**/*']);
|
|
131
|
-
}
|
|
132
|
-
// scope === 'full' would capture more (env, etc.) �?reserved for v2
|
|
133
|
-
const { gitHead, gitDirty } = this.getGitStatus();
|
|
134
|
-
return {
|
|
135
|
-
id: generateId(),
|
|
136
|
-
toolCallId,
|
|
137
|
-
timestamp: Date.now(),
|
|
138
|
-
scope,
|
|
139
|
-
fileHashes,
|
|
140
|
-
envVars: {}, // scoped env capture �?TBD in future iterations
|
|
141
|
-
gitHead,
|
|
142
|
-
gitDirty,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Compute the diff between a snapshot and the current filesystem state.
|
|
147
|
-
*/
|
|
148
|
-
computeDiff(snapshot) {
|
|
149
|
-
const filesChanged = [];
|
|
150
|
-
let linesAdded = 0;
|
|
151
|
-
let linesRemoved = 0;
|
|
152
|
-
const hashBefore = {};
|
|
153
|
-
const hashAfter = {};
|
|
154
|
-
for (const [file, oldHash] of Object.entries(snapshot.fileHashes)) {
|
|
155
|
-
const fullPath = path.isAbsolute(file)
|
|
156
|
-
? file
|
|
157
|
-
: path.resolve(this.workspaceRoot, file);
|
|
158
|
-
const newHash = hashFile(fullPath);
|
|
159
|
-
hashBefore[file] = oldHash;
|
|
160
|
-
hashAfter[file] = newHash ?? 'MISSING';
|
|
161
|
-
if (newHash !== oldHash) {
|
|
162
|
-
filesChanged.push(file);
|
|
163
|
-
// Estimate line changes if file exists
|
|
164
|
-
if (newHash) {
|
|
165
|
-
try {
|
|
166
|
-
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
167
|
-
const newLines = content.split('\n').length;
|
|
168
|
-
// Try to read old content from git
|
|
169
|
-
try {
|
|
170
|
-
const oldContent = (0, child_process_1.execSync)(`git show ${snapshot.gitHead}:${file}`, { cwd: this.workspaceRoot, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
|
|
171
|
-
const oldLines = oldContent.split('\n').length;
|
|
172
|
-
linesAdded += Math.max(0, newLines - oldLines);
|
|
173
|
-
linesRemoved += Math.max(0, oldLines - newLines);
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
// File didn't exist in git �?treat as entirely new
|
|
177
|
-
linesAdded += newLines;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
// Can't read �?skip line counting
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
// File was deleted
|
|
186
|
-
try {
|
|
187
|
-
const oldContent = (0, child_process_1.execSync)(`git show ${snapshot.gitHead}:${file}`, { cwd: this.workspaceRoot, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
|
|
188
|
-
linesRemoved += oldContent.split('\n').length;
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
// Can't determine old line count
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if (filesChanged.length === 0)
|
|
197
|
-
return null;
|
|
198
|
-
return {
|
|
199
|
-
filesChanged,
|
|
200
|
-
linesAdded,
|
|
201
|
-
linesRemoved,
|
|
202
|
-
hashBefore,
|
|
203
|
-
hashAfter,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Get current git HEAD and dirty status.
|
|
208
|
-
*/
|
|
209
|
-
getGitStatus() {
|
|
210
|
-
try {
|
|
211
|
-
const head = (0, child_process_1.execSync)('git rev-parse HEAD', {
|
|
212
|
-
cwd: this.workspaceRoot,
|
|
213
|
-
encoding: 'utf-8',
|
|
214
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
215
|
-
}).trim();
|
|
216
|
-
const status = (0, child_process_1.execSync)('git status --porcelain', {
|
|
217
|
-
cwd: this.workspaceRoot,
|
|
218
|
-
encoding: 'utf-8',
|
|
219
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
220
|
-
});
|
|
221
|
-
return { gitHead: head, gitDirty: status.length > 0 };
|
|
222
|
-
}
|
|
223
|
-
catch {
|
|
224
|
-
return { gitHead: 'unknown', gitDirty: false };
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Roll back a file to the snapshot state using git.
|
|
229
|
-
*/
|
|
230
|
-
rollbackFile(snapshot, file) {
|
|
231
|
-
try {
|
|
232
|
-
(0, child_process_1.execSync)(`git checkout ${snapshot.gitHead} -- "${file}"`, {
|
|
233
|
-
cwd: this.workspaceRoot,
|
|
234
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
235
|
-
});
|
|
236
|
-
return true;
|
|
237
|
-
}
|
|
238
|
-
catch {
|
|
239
|
-
return false;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Roll back all changed files to their snapshot state.
|
|
244
|
-
*/
|
|
245
|
-
rollback(snapshot) {
|
|
246
|
-
const filesRolledBack = [];
|
|
247
|
-
const errors = [];
|
|
248
|
-
for (const file of Object.keys(snapshot.fileHashes)) {
|
|
249
|
-
const success = this.rollbackFile(snapshot, file);
|
|
250
|
-
if (success) {
|
|
251
|
-
filesRolledBack.push(file);
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
errors.push(file);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return {
|
|
258
|
-
success: errors.length === 0,
|
|
259
|
-
filesRolledBack,
|
|
260
|
-
errors,
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
exports.SnapshotGate = SnapshotGate;
|
|
265
|
-
/**
|
|
266
|
-
* Verify Gate �?post-execution state verification.
|
|
267
|
-
*
|
|
268
|
-
* Checks that what the agent claimed actually happened.
|
|
269
|
-
* Zero LLM dependency: file existence, hash changes, lint, typecheck, etc.
|
|
270
|
-
*/
|
|
271
|
-
class VerifyGate {
|
|
272
|
-
workspaceRoot;
|
|
273
|
-
constructor(workspaceRoot) {
|
|
274
|
-
this.workspaceRoot = workspaceRoot;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Run verification checks after a tool call.
|
|
278
|
-
*
|
|
279
|
-
* @param toolName - The tool that was called
|
|
280
|
-
* @param snapshot - Pre-execution snapshot
|
|
281
|
-
* @param claimedResult - What the agent claims the result was
|
|
282
|
-
*/
|
|
283
|
-
verify(toolName, snapshot, claimedResult) {
|
|
284
|
-
const checks = [];
|
|
285
|
-
// Depending on the tool, run relevant checks
|
|
286
|
-
switch (true) {
|
|
287
|
-
// File creation/modification tools
|
|
288
|
-
case this.isFileTool(toolName):
|
|
289
|
-
checks.push(...this.verifyFiles(snapshot, claimedResult?.files));
|
|
290
|
-
break;
|
|
291
|
-
// npm publish
|
|
292
|
-
case toolName === 'npm_publish' || toolName.includes('npm'):
|
|
293
|
-
checks.push(this.verifyNpmPublish(claimedResult?.published));
|
|
294
|
-
break;
|
|
295
|
-
// git push
|
|
296
|
-
case toolName === 'git_push' || toolName.includes('git_push'):
|
|
297
|
-
checks.push(this.verifyGitPush());
|
|
298
|
-
break;
|
|
299
|
-
default:
|
|
300
|
-
// No specific checks for this tool type
|
|
301
|
-
}
|
|
302
|
-
// Run common checks that always apply
|
|
303
|
-
if (snapshot.scope === 'file' || snapshot.scope === 'workspace') {
|
|
304
|
-
checks.push(...this.verifyFileChanges(snapshot));
|
|
305
|
-
}
|
|
306
|
-
// Always run result format checks
|
|
307
|
-
checks.push(this.verifyResultFormat(claimedResult));
|
|
308
|
-
checks.push(this.verifyNonEmptyResult(claimedResult));
|
|
309
|
-
return this.evaluateChecks(checks);
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Verify that claimed files actually exist.
|
|
313
|
-
*/
|
|
314
|
-
verifyFiles(_snapshot, claimedFiles) {
|
|
315
|
-
const checks = [];
|
|
316
|
-
// Check if files that were supposed to be created actually exist
|
|
317
|
-
if (claimedFiles) {
|
|
318
|
-
for (const file of claimedFiles) {
|
|
319
|
-
const fullPath = path.isAbsolute(file)
|
|
320
|
-
? file
|
|
321
|
-
: path.resolve(this.workspaceRoot, file);
|
|
322
|
-
if (fs.existsSync(fullPath)) {
|
|
323
|
-
checks.push({ name: `File exists: ${file}`, status: 'PASS' });
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
checks.push({
|
|
327
|
-
name: `File exists: ${file}`,
|
|
328
|
-
status: 'FAIL',
|
|
329
|
-
detail: 'Agent claimed file was created but it does not exist',
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
return checks;
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Verify that files actually changed compared to snapshot.
|
|
338
|
-
*/
|
|
339
|
-
verifyFileChanges(snapshot) {
|
|
340
|
-
const checks = [];
|
|
341
|
-
for (const [file, oldHash] of Object.entries(snapshot.fileHashes)) {
|
|
342
|
-
const fullPath = path.isAbsolute(file)
|
|
343
|
-
? file
|
|
344
|
-
: path.resolve(this.workspaceRoot, file);
|
|
345
|
-
const newHash = hashFile(fullPath);
|
|
346
|
-
if (!newHash) {
|
|
347
|
-
checks.push({
|
|
348
|
-
name: `File unchanged check: ${file}`,
|
|
349
|
-
status: 'WARN',
|
|
350
|
-
detail: 'File no longer exists',
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
else if (newHash === oldHash) {
|
|
354
|
-
checks.push({
|
|
355
|
-
name: `File unchanged check: ${file}`,
|
|
356
|
-
status: 'WARN',
|
|
357
|
-
detail: 'File hash unchanged �?no modifications detected',
|
|
358
|
-
});
|
|
359
|
-
}
|
|
360
|
-
else {
|
|
361
|
-
checks.push({ name: `File unchanged check: ${file}`, status: 'PASS' });
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
// Lint check for TypeScript/JavaScript files
|
|
365
|
-
const codeFiles = Object.keys(snapshot.fileHashes).filter((f) => f.endsWith('.ts') || f.endsWith('.tsx') || f.endsWith('.js'));
|
|
366
|
-
if (codeFiles.length > 0) {
|
|
367
|
-
checks.push(this.verifyLint());
|
|
368
|
-
checks.push(this.verifyTypeCheck());
|
|
369
|
-
}
|
|
370
|
-
return checks;
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Verify npm publish actually happened.
|
|
374
|
-
*/
|
|
375
|
-
verifyNpmPublish(agentClaimedPublished) {
|
|
376
|
-
if (agentClaimedPublished === false) {
|
|
377
|
-
return { name: 'npm publish', status: 'PASS', detail: 'Agent acknowledged no publish' };
|
|
378
|
-
}
|
|
379
|
-
// Use npm view to verify latest version
|
|
380
|
-
try {
|
|
381
|
-
const pkgPath = path.join(this.workspaceRoot, 'package.json');
|
|
382
|
-
if (fs.existsSync(pkgPath)) {
|
|
383
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
384
|
-
const result = (0, child_process_1.execSync)(`npm view ${pkg.name} version 2>&1`, {
|
|
385
|
-
cwd: this.workspaceRoot,
|
|
386
|
-
encoding: 'utf-8',
|
|
387
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
388
|
-
timeout: 5000,
|
|
389
|
-
}).trim();
|
|
390
|
-
if (result === pkg.version) {
|
|
391
|
-
return {
|
|
392
|
-
name: 'npm publish',
|
|
393
|
-
status: 'PASS',
|
|
394
|
-
detail: `npm registry confirms ${pkg.name}@${pkg.version}`,
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
return {
|
|
398
|
-
name: 'npm publish',
|
|
399
|
-
status: 'WARN',
|
|
400
|
-
detail: `npm shows ${result}, local is ${pkg.version}`,
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
catch {
|
|
405
|
-
return {
|
|
406
|
-
name: 'npm publish',
|
|
407
|
-
status: 'WARN',
|
|
408
|
-
detail: 'Could not verify npm publish status (network or npm not available)',
|
|
409
|
-
};
|
|
410
|
-
}
|
|
411
|
-
return { name: 'npm publish', status: 'PASS', detail: 'No package.json found' };
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Verify git push actually happened.
|
|
415
|
-
*/
|
|
416
|
-
verifyGitPush() {
|
|
417
|
-
try {
|
|
418
|
-
// Use git ls-remote to verify remote HEAD matches local
|
|
419
|
-
const localHead = (0, child_process_1.execSync)('git rev-parse HEAD 2>&1', {
|
|
420
|
-
cwd: this.workspaceRoot,
|
|
421
|
-
encoding: 'utf-8',
|
|
422
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
423
|
-
}).trim();
|
|
424
|
-
const remoteHead = (0, child_process_1.execSync)('git ls-remote origin HEAD 2>&1', {
|
|
425
|
-
cwd: this.workspaceRoot,
|
|
426
|
-
encoding: 'utf-8',
|
|
427
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
428
|
-
timeout: 5000,
|
|
429
|
-
}).split('\t')[0]?.trim();
|
|
430
|
-
if (remoteHead && remoteHead === localHead) {
|
|
431
|
-
return {
|
|
432
|
-
name: 'git push',
|
|
433
|
-
status: 'PASS',
|
|
434
|
-
detail: 'Remote HEAD matches local',
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
return {
|
|
438
|
-
name: 'git push',
|
|
439
|
-
status: 'WARN',
|
|
440
|
-
detail: remoteHead
|
|
441
|
-
? `Remote HEAD differs from local`
|
|
442
|
-
: 'Could not resolve remote HEAD',
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
catch {
|
|
446
|
-
return {
|
|
447
|
-
name: 'git push',
|
|
448
|
-
status: 'WARN',
|
|
449
|
-
detail: 'Could not verify push status',
|
|
450
|
-
};
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Verify that claimed result is valid JSON (if applicable).
|
|
455
|
-
*/
|
|
456
|
-
verifyResultFormat(claimedResult) {
|
|
457
|
-
if (!claimedResult?.result) {
|
|
458
|
-
return { name: 'Result format', status: 'PASS', detail: 'No result to check' };
|
|
459
|
-
}
|
|
460
|
-
const result = claimedResult.result;
|
|
461
|
-
if (typeof result === 'string') {
|
|
462
|
-
// Check if it looks like JSON
|
|
463
|
-
const trimmed = result.trim();
|
|
464
|
-
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
465
|
-
try {
|
|
466
|
-
JSON.parse(trimmed);
|
|
467
|
-
return { name: 'Result format', status: 'PASS' };
|
|
468
|
-
}
|
|
469
|
-
catch {
|
|
470
|
-
return {
|
|
471
|
-
name: 'Result format',
|
|
472
|
-
status: 'FAIL',
|
|
473
|
-
detail: 'Result looks like JSON but is not valid JSON',
|
|
474
|
-
};
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
return { name: 'Result format', status: 'PASS' };
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* Verify that the result is not empty when it shouldn't be.
|
|
482
|
-
*/
|
|
483
|
-
verifyNonEmptyResult(claimedResult) {
|
|
484
|
-
if (!claimedResult?.result) {
|
|
485
|
-
return { name: 'Result non-empty', status: 'PASS', detail: 'No result to check' };
|
|
486
|
-
}
|
|
487
|
-
const result = claimedResult.result;
|
|
488
|
-
if (typeof result === 'string' && result.trim().length === 0) {
|
|
489
|
-
return {
|
|
490
|
-
name: 'Result non-empty',
|
|
491
|
-
status: 'WARN',
|
|
492
|
-
detail: 'Result is empty �?possible hallucination',
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
if (Array.isArray(result) && result.length === 0) {
|
|
496
|
-
return {
|
|
497
|
-
name: 'Result non-empty',
|
|
498
|
-
status: 'WARN',
|
|
499
|
-
detail: 'Result is empty array',
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
return { name: 'Result non-empty', status: 'PASS' };
|
|
503
|
-
}
|
|
504
|
-
/**
|
|
505
|
-
* Run ESLint on src/ directory.
|
|
506
|
-
*/
|
|
507
|
-
verifyLint() {
|
|
508
|
-
try {
|
|
509
|
-
(0, child_process_1.execSync)('npx eslint src/ --ext .ts --quiet 2>&1', {
|
|
510
|
-
cwd: this.workspaceRoot,
|
|
511
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
512
|
-
});
|
|
513
|
-
return { name: 'Lint check', status: 'PASS' };
|
|
514
|
-
}
|
|
515
|
-
catch {
|
|
516
|
-
return {
|
|
517
|
-
name: 'Lint check',
|
|
518
|
-
status: 'WARN',
|
|
519
|
-
detail: 'Lint issues found �?review recommended',
|
|
520
|
-
};
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
/**
|
|
524
|
-
* Run TypeScript type checking.
|
|
525
|
-
*/
|
|
526
|
-
verifyTypeCheck() {
|
|
527
|
-
try {
|
|
528
|
-
(0, child_process_1.execSync)('npx tsc --noEmit 2>&1', {
|
|
529
|
-
cwd: this.workspaceRoot,
|
|
530
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
531
|
-
});
|
|
532
|
-
return { name: 'Type check', status: 'PASS' };
|
|
533
|
-
}
|
|
534
|
-
catch {
|
|
535
|
-
return {
|
|
536
|
-
name: 'Type check',
|
|
537
|
-
status: 'FAIL',
|
|
538
|
-
detail: 'TypeScript compilation failed',
|
|
539
|
-
};
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
/**
|
|
543
|
-
* Check if tool name indicates a file-modifying tool.
|
|
544
|
-
*/
|
|
545
|
-
isFileTool(toolName) {
|
|
546
|
-
const fileTools = [
|
|
547
|
-
'write_file', 'write_file_sync',
|
|
548
|
-
'edit', 'edit_file',
|
|
549
|
-
'create_file', 'create_directory',
|
|
550
|
-
'mkdir', 'rm', 'unlink', 'delete_file',
|
|
551
|
-
'exec', 'shell',
|
|
552
|
-
];
|
|
553
|
-
return fileTools.some((t) => toolName.includes(t));
|
|
554
|
-
}
|
|
555
|
-
/**
|
|
556
|
-
* Evaluate all checks and determine overall status.
|
|
557
|
-
*/
|
|
558
|
-
evaluateChecks(checks) {
|
|
559
|
-
if (checks.length === 0)
|
|
560
|
-
return { status: 'PASS', checks };
|
|
561
|
-
const hasFail = checks.some((c) => c.status === 'FAIL');
|
|
562
|
-
const hasWarn = checks.some((c) => c.status === 'WARN');
|
|
563
|
-
if (hasFail)
|
|
564
|
-
return { status: 'FAIL', checks };
|
|
565
|
-
if (hasWarn)
|
|
566
|
-
return { status: 'WARN', checks };
|
|
567
|
-
return { status: 'PASS', checks };
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
exports.VerifyGate = VerifyGate;
|
|
571
|
-
//# sourceMappingURL=snapshot-verify.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-verify.js","sourceRoot":"","sources":["../../src/guard/snapshot-verify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export { AgentOS } from './core';
|
|
2
|
-
export * from './types';
|
|
3
|
-
export { SchemaGate } from './guard/schema-gate';
|
|
4
|
-
export type { SchemaRule } from './guard/schema-gate';
|
|
5
|
-
export { RiskGate } from './guard/risk-gate';
|
|
6
|
-
export type { RiskThresholds, ToolRiskProfile, ImpactLevel, SensitivityLevel } from './guard/risk-gate';
|
|
7
|
-
export { DEFAULT_RISK_THRESHOLDS } from './guard/risk-gate';
|
|
8
|
-
export { SnapshotGate, VerifyGate } from './guard/snapshot-verify';
|
|
9
|
-
export type { SnapshotScope } from './guard/snapshot-verify';
|
|
10
|
-
export { AuditLog } from './guard/audit-log';
|
|
11
|
-
export { SandboxExecutor } from './guard/sandbox';
|
|
12
|
-
export type { ExecutionContext, SandboxResult, ExecutionMode, NetworkPolicy } from './guard/sandbox';
|
|
13
|
-
export { SandboxViolation } from './guard/sandbox';
|
|
14
|
-
export { WorkingMemory } from './memory/working';
|
|
15
|
-
export type { WorkingMemoryState } from './memory/working';
|
|
16
|
-
export { EpisodicMemory } from './memory/episodic';
|
|
17
|
-
export { SemanticMemoryStore } from './memory/semantic';
|
|
18
|
-
export { PreExecEvaluator, RuntimeEvaluator, PostExecEvaluator } from './evaluator/exec-evaluator';
|
|
19
|
-
export { ImplicitFeedbackEngine } from './evaluator/feedback';
|
|
20
|
-
export { AgentProfiler } from './evaluator/profiler';
|
|
21
|
-
export type { AgentProfile } from './evaluator/profiler';
|
|
22
|
-
export { AgentOSAPI } from './api';
|
|
23
|
-
export { createServer } from './server';
|
|
24
|
-
export { wrapAgent } from './middleware/wrapper';
|
|
25
|
-
export type { WrappedAgent } from './middleware/wrapper';
|
|
26
|
-
export { sentinelPlugin } from './middleware/openclaw';
|
|
27
|
-
export type { OpenClawPlugin } from './middleware/openclaw';
|
|
28
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|