sentinel-agentos 0.3.7 → 0.3.9

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.
Files changed (97) hide show
  1. package/package.json +1 -1
  2. package/LICENSE +0 -21
  3. package/README.md +0 -1797
  4. package/dist/adapters/evaluation-bridge.d.ts +0 -78
  5. package/dist/adapters/evaluation-bridge.d.ts.map +0 -1
  6. package/dist/adapters/evaluation-bridge.js +0 -273
  7. package/dist/adapters/evaluation-bridge.js.map +0 -1
  8. package/dist/adapters/memory-bridge.d.ts +0 -110
  9. package/dist/adapters/memory-bridge.d.ts.map +0 -1
  10. package/dist/adapters/memory-bridge.js +0 -316
  11. package/dist/adapters/memory-bridge.js.map +0 -1
  12. package/dist/adapters/migrate.d.ts +0 -2
  13. package/dist/adapters/migrate.d.ts.map +0 -1
  14. package/dist/adapters/migrate.js +0 -63
  15. package/dist/adapters/migrate.js.map +0 -1
  16. package/dist/api.d.ts +0 -151
  17. package/dist/api.d.ts.map +0 -1
  18. package/dist/api.js +0 -179
  19. package/dist/api.js.map +0 -1
  20. package/dist/cli.d.ts +0 -16
  21. package/dist/cli.d.ts.map +0 -1
  22. package/dist/cli.js +0 -350
  23. package/dist/cli.js.map +0 -1
  24. package/dist/core.d.ts +0 -156
  25. package/dist/core.d.ts.map +0 -1
  26. package/dist/core.js +0 -400
  27. package/dist/core.js.map +0 -1
  28. package/dist/dashboard.html +0 -175
  29. package/dist/evaluator/exec-evaluator.d.ts +0 -102
  30. package/dist/evaluator/exec-evaluator.d.ts.map +0 -1
  31. package/dist/evaluator/exec-evaluator.js +0 -266
  32. package/dist/evaluator/exec-evaluator.js.map +0 -1
  33. package/dist/evaluator/feedback.d.ts +0 -96
  34. package/dist/evaluator/feedback.d.ts.map +0 -1
  35. package/dist/evaluator/feedback.js +0 -419
  36. package/dist/evaluator/feedback.js.map +0 -1
  37. package/dist/evaluator/profiler.d.ts +0 -55
  38. package/dist/evaluator/profiler.d.ts.map +0 -1
  39. package/dist/evaluator/profiler.js +0 -130
  40. package/dist/evaluator/profiler.js.map +0 -1
  41. package/dist/guard/audit-log.d.ts +0 -47
  42. package/dist/guard/audit-log.d.ts.map +0 -1
  43. package/dist/guard/audit-log.js +0 -199
  44. package/dist/guard/audit-log.js.map +0 -1
  45. package/dist/guard/container-sandbox.d.ts +0 -25
  46. package/dist/guard/container-sandbox.d.ts.map +0 -1
  47. package/dist/guard/container-sandbox.js +0 -145
  48. package/dist/guard/container-sandbox.js.map +0 -1
  49. package/dist/guard/risk-gate.d.ts +0 -101
  50. package/dist/guard/risk-gate.d.ts.map +0 -1
  51. package/dist/guard/risk-gate.js +0 -200
  52. package/dist/guard/risk-gate.js.map +0 -1
  53. package/dist/guard/sandbox.d.ts +0 -112
  54. package/dist/guard/sandbox.d.ts.map +0 -1
  55. package/dist/guard/sandbox.js +0 -379
  56. package/dist/guard/sandbox.js.map +0 -1
  57. package/dist/guard/schema-gate.d.ts +0 -90
  58. package/dist/guard/schema-gate.d.ts.map +0 -1
  59. package/dist/guard/schema-gate.js +0 -452
  60. package/dist/guard/schema-gate.js.map +0 -1
  61. package/dist/guard/snapshot-verify.d.ts +0 -111
  62. package/dist/guard/snapshot-verify.d.ts.map +0 -1
  63. package/dist/guard/snapshot-verify.js +0 -571
  64. package/dist/guard/snapshot-verify.js.map +0 -1
  65. package/dist/index.d.ts +0 -28
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js +0 -59
  68. package/dist/index.js.map +0 -1
  69. package/dist/memory/episodic.d.ts +0 -76
  70. package/dist/memory/episodic.d.ts.map +0 -1
  71. package/dist/memory/episodic.js +0 -289
  72. package/dist/memory/episodic.js.map +0 -1
  73. package/dist/memory/semantic.d.ts +0 -68
  74. package/dist/memory/semantic.d.ts.map +0 -1
  75. package/dist/memory/semantic.js +0 -299
  76. package/dist/memory/semantic.js.map +0 -1
  77. package/dist/memory/working.d.ts +0 -53
  78. package/dist/memory/working.d.ts.map +0 -1
  79. package/dist/memory/working.js +0 -166
  80. package/dist/memory/working.js.map +0 -1
  81. package/dist/middleware/openclaw.d.ts +0 -45
  82. package/dist/middleware/openclaw.d.ts.map +0 -1
  83. package/dist/middleware/openclaw.js +0 -95
  84. package/dist/middleware/openclaw.js.map +0 -1
  85. package/dist/middleware/wrapper.d.ts +0 -54
  86. package/dist/middleware/wrapper.d.ts.map +0 -1
  87. package/dist/middleware/wrapper.js +0 -155
  88. package/dist/middleware/wrapper.js.map +0 -1
  89. package/dist/server.d.ts +0 -45
  90. package/dist/server.d.ts.map +0 -1
  91. package/dist/server.js +0 -256
  92. package/dist/server.js.map +0 -1
  93. package/dist/types/index.d.ts +0 -228
  94. package/dist/types/index.d.ts.map +0 -1
  95. package/dist/types/index.js +0 -23
  96. package/dist/types/index.js.map +0 -1
  97. package/scripts/sentinel-light.js +0 -234
@@ -1,200 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RiskGate = exports.DEFAULT_RISK_THRESHOLDS = void 0;
4
- const IMPACT_VALUES = {
5
- local: 1,
6
- workspace: 3,
7
- project: 6,
8
- system: 10,
9
- };
10
- const SENSITIVITY_VALUES = {
11
- none: 0.0,
12
- low: 0.3,
13
- medium: 0.6,
14
- high: 0.9,
15
- critical: 1.0,
16
- };
17
- /**
18
- * Default error rates by tool category (cold start).
19
- */
20
- const DEFAULT_ERROR_RATES = {
21
- read: 0.01,
22
- write: 0.05,
23
- delete: 0.10,
24
- network: 0.08,
25
- compute: 0.02,
26
- };
27
- // Danger patterns for content-based fallback (used when no profile registered)
28
- const DANGER_PATTERNS = [
29
- { regex: new RegExp('rm\\s+-rf\\s+(?:[/~]|\\*)', 'i'), impact: 'system', reversibility: 0.0, sensitivity: 'critical' },
30
- { regex: new RegExp('sudo\\s+rm\\s+-rf', 'i'), impact: 'system', reversibility: 0.0, sensitivity: 'critical' },
31
- { regex: new RegExp('del\\s+[/][fsq]\\s+[a-z]:[\\\\]?', 'i'), impact: 'system', reversibility: 0.0, sensitivity: 'critical' },
32
- { regex: new RegExp('\\bmkfs\\b', 'i'), impact: 'system', reversibility: 0.0, sensitivity: 'critical' },
33
- { regex: new RegExp('\\bdd\\s+if=', 'i'), impact: 'system', reversibility: 0.0, sensitivity: 'critical' },
34
- { regex: new RegExp('chmod\\s+777\\s+-R', 'i'), impact: 'system', reversibility: 0.1, sensitivity: 'high' },
35
- { regex: /drop\s+(table|database|schema)/i, impact: 'project', reversibility: 0.0, sensitivity: 'critical' },
36
- { regex: /truncate\s+(table\s+)?/i, impact: 'project', reversibility: 0.0, sensitivity: 'high' },
37
- { regex: /git\s+push\s+[\w\s-]*--force/i, impact: 'project', reversibility: 0.2, sensitivity: 'high' },
38
- { regex: /git\s+reset\s+--hard/i, impact: 'project', reversibility: 0.3, sensitivity: 'high' },
39
- { regex: /npm\s+unpublish\b/i, impact: 'project', reversibility: 0.0, sensitivity: 'high' },
40
- { regex: /\.(?:env|key|pem|p12|pfx|jks|keystore)/i, impact: 'workspace', reversibility: 0.5, sensitivity: 'critical' },
41
- ];
42
- /**
43
- * Default thresholds — conservative but workable.
44
- */
45
- exports.DEFAULT_RISK_THRESHOLDS = {
46
- autoApprove: 0.5,
47
- notify: 1.0,
48
- confirm: 3.0,
49
- deny: 8.0,
50
- };
51
- /**
52
- * Risk Gate — deterministic, pure-math risk scoring.
53
- *
54
- * Formula: RiskScore = Impact × (1 - Reversibility) × Sensitivity × (1 + ErrorRate)
55
- *
56
- * Zero LLM dependency. The formula, thresholds, and mappings are all
57
- * explicit and auditable.
58
- */
59
- class RiskGate {
60
- profiles = new Map();
61
- stats = new Map();
62
- thresholds;
63
- constructor(thresholds = exports.DEFAULT_RISK_THRESHOLDS) {
64
- this.thresholds = thresholds;
65
- }
66
- /** Register a risk profile for a tool */
67
- registerProfile(profile) {
68
- this.profiles.set(profile.tool, profile);
69
- // Initialize stats if not already tracked
70
- if (!this.stats.has(profile.tool)) {
71
- const errorRate = profile.initialErrorRate ??
72
- (profile.category ? (DEFAULT_ERROR_RATES[profile.category] ?? 0.05) : 0.05);
73
- this.stats.set(profile.tool, {
74
- totalCalls: 0,
75
- failures: 0,
76
- errorRate,
77
- lastUpdated: Date.now(),
78
- });
79
- }
80
- }
81
- /** Register multiple profiles at once */
82
- registerProfiles(profiles) {
83
- profiles.forEach((p) => this.registerProfile(p));
84
- }
85
- /** Get all registered profiles */
86
- getProfiles() {
87
- return Array.from(this.profiles.values());
88
- }
89
- /** Check if a tool has a registered profile */
90
- hasProfile(tool) {
91
- return this.profiles.has(tool);
92
- }
93
- /**
94
- * Compute the risk score for a tool call.
95
- *
96
- * If no profile is registered, returns a default moderate-risk score
97
- * (auto-approve with notification).
98
- */
99
- evaluate(tool, _params) {
100
- const profile = this.profiles.get(tool);
101
- // Fallback for unregistered tools — content-based danger analysis
102
- if (!profile) {
103
- return this.evaluateUntracked(_params ?? {});
104
- }
105
- const impact = IMPACT_VALUES[profile.impact];
106
- const reversibility = Math.min(1, Math.max(0, profile.reversibility));
107
- const sensitivity = SENSITIVITY_VALUES[profile.sensitivity];
108
- const stats = this.stats.get(profile.tool);
109
- const errorRate = stats?.errorRate ?? 0.05;
110
- const score = impact * (1 - reversibility) * sensitivity * (1 + errorRate);
111
- const action = this.scoreToAction(score);
112
- return {
113
- score: Math.round(score * 100) / 100, // round to 2 decimal places
114
- action,
115
- dimensions: {
116
- impact,
117
- reversibility,
118
- sensitivity,
119
- errorRate: Math.round(errorRate * 1000) / 1000,
120
- },
121
- };
122
- }
123
- /**
124
- * Evaluate risk for an unregistered tool by scanning params for danger patterns.
125
- */
126
- evaluateUntracked(params) {
127
- const paramText = Object.values(params).join(' ');
128
- for (const pattern of DANGER_PATTERNS) {
129
- if (pattern.regex.test(paramText)) {
130
- const impact = IMPACT_VALUES[pattern.impact];
131
- const reversibility = Math.min(1, Math.max(0, pattern.reversibility));
132
- const sensitivity = SENSITIVITY_VALUES[pattern.sensitivity];
133
- const errorRate = DEFAULT_ERROR_RATES['write'] ?? 0.05;
134
- const score = impact * (1 - reversibility) * sensitivity * (1 + errorRate);
135
- let action;
136
- if (score >= this.thresholds.deny)
137
- action = 'deny';
138
- else if (score >= this.thresholds.confirm)
139
- action = 'confirm';
140
- else if (score >= this.thresholds.notify)
141
- action = 'notify';
142
- else
143
- action = 'auto';
144
- return {
145
- score: Math.round(score * 100) / 100,
146
- action,
147
- dimensions: { impact, reversibility, sensitivity, errorRate: Math.round(errorRate * 1000) / 1000 },
148
- };
149
- }
150
- }
151
- // No danger pattern matched — low risk
152
- return {
153
- score: 0.2,
154
- action: 'auto',
155
- dimensions: { impact: 1, reversibility: 1, sensitivity: 0, errorRate: 0 },
156
- };
157
- }
158
- /** Record the outcome of a tool call to update stats */
159
- recordOutcome(tool, success) {
160
- const stats = this.stats.get(tool);
161
- if (!stats)
162
- return;
163
- stats.totalCalls++;
164
- if (!success)
165
- stats.failures++;
166
- stats.errorRate =
167
- stats.totalCalls > 0 ? stats.failures / stats.totalCalls : 0;
168
- stats.lastUpdated = Date.now();
169
- }
170
- /** Get tool statistics */
171
- getStats(tool) {
172
- return this.stats.get(tool);
173
- }
174
- /** Get all tool statistics */
175
- getAllStats() {
176
- return new Map(this.stats);
177
- }
178
- /** Update thresholds at runtime */
179
- setThresholds(thresholds) {
180
- this.thresholds = { ...this.thresholds, ...thresholds };
181
- }
182
- /** Get current thresholds */
183
- getThresholds() {
184
- return { ...this.thresholds };
185
- }
186
- /**
187
- * Map a numeric risk score to the appropriate action.
188
- */
189
- scoreToAction(score) {
190
- if (score <= this.thresholds.autoApprove)
191
- return 'auto';
192
- if (score <= this.thresholds.notify)
193
- return 'notify';
194
- if (score <= this.thresholds.confirm)
195
- return 'confirm';
196
- return 'deny';
197
- }
198
- }
199
- exports.RiskGate = RiskGate;
200
- //# sourceMappingURL=risk-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"risk-gate.js","sourceRoot":"","sources":["../../src/guard/risk-gate.ts"],"names":[],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- /**
2
- * Execution mode — from DESIGN.md §4.5
3
- */
4
- export type ExecutionMode = 'direct' | 'sandbox' | 'dry-run';
5
- /**
6
- * Network access policy for sandbox mode.
7
- */
8
- export type NetworkPolicy = 'none' | 'localhost' | 'whitelist';
9
- /**
10
- * Execution context configuration — full DESIGN.md §4.5 interface.
11
- */
12
- export interface ExecutionContext {
13
- /** Execution mode */
14
- mode: ExecutionMode;
15
- /** Timeout in milliseconds */
16
- timeoutMs: number;
17
- /** Network policy (sandbox mode only) */
18
- networkAccess?: NetworkPolicy;
19
- /** Allowed network hosts (sandbox + whitelist mode only) */
20
- networkWhitelist?: string[];
21
- /** Writable paths (sandbox mode) */
22
- writablePaths?: string[];
23
- /** Read-only paths (sandbox mode) */
24
- readonlyPaths?: string[];
25
- /** Workspace root */
26
- workspaceRoot: string;
27
- /** Max output size before truncation */
28
- maxOutputSize?: number;
29
- /** Allowed tools in sandbox mode */
30
- allowedTools?: string[];
31
- /** Forbidden tools in any mode */
32
- forbiddenTools?: string[];
33
- }
34
- /**
35
- * Sandbox execution result.
36
- */
37
- export interface SandboxResult {
38
- /** Execution outcome */
39
- success: boolean;
40
- /** Exit code (0 = success) */
41
- exitCode: number;
42
- /** stdout */
43
- stdout: string;
44
- /** stderr */
45
- stderr: string;
46
- /** Truncated flag */
47
- truncated: boolean;
48
- /** Error message if sandbox rejected */
49
- sandboxRejectReason?: string;
50
- /** Dry-run: what would have happened */
51
- dryRunSummary?: string;
52
- /** Execution time in ms */
53
- durationMs: number;
54
- }
55
- /**
56
- * Sandbox Violation types.
57
- */
58
- export declare enum SandboxViolation {
59
- NETWORK_FORBIDDEN = "NETWORK_FORBIDDEN",
60
- PATH_NOT_WRITABLE = "PATH_NOT_WRITABLE",
61
- PATH_READONLY = "PATH_READONLY",
62
- TOOL_FORBIDDEN = "TOOL_FORBIDDEN",
63
- TOOL_NOT_ALLOWED = "TOOL_NOT_ALLOWED",
64
- COMMAND_FORBIDDEN = "COMMAND_FORBIDDEN"
65
- }
66
- /**
67
- * Sandbox Executor — controlled execution environment.
68
- *
69
- * Implements three execution modes from DESIGN.md §4.5:
70
- * - direct: Execute in shared environment (default, no sandboxing)
71
- * - sandbox: Restricted execution with network + filesystem policies
72
- * - dry-run: Preview only, no actual execution
73
- */
74
- export declare class SandboxExecutor {
75
- private config;
76
- /** Forbidden shell commands (dangerous patterns) */
77
- private static FORBIDDEN_COMMANDS;
78
- constructor(config: ExecutionContext);
79
- /**
80
- * Validate and possibly reject a tool call before execution.
81
- *
82
- * @returns {SandboxResult} with sandboxRejectReason if rejected
83
- */
84
- validate(toolName: string, params: Record<string, unknown>): SandboxResult | null;
85
- /**
86
- * Execute a shell command in the configured mode.
87
- */
88
- execute(toolName: string, params: Record<string, unknown>): Promise<SandboxResult>;
89
- /**
90
- * Dry-run: return a summary of what would happen.
91
- */
92
- private dryRun;
93
- /**
94
- * Execute shell commands with sandbox policies.
95
- */
96
- private executeShell;
97
- /**
98
- * Build environment with sandbox network restrictions.
99
- */
100
- private buildSandboxEnv;
101
- /**
102
- * Validate a filesystem path against sandbox policies.
103
- */
104
- private validatePath;
105
- /**
106
- * Validate a shell command against forbidden patterns.
107
- */
108
- private validateCommand;
109
- private isShellTool;
110
- private isWriteTool;
111
- }
112
- //# sourceMappingURL=sandbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/guard/sandbox.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;CACxC;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAmB;IAEjC,oDAAoD;IACpD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAU/B;gBAEU,MAAM,EAAE,gBAAgB;IAOpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,GAAG,IAAI;IA6DjF;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BxF;;OAEG;IACH,OAAO,CAAC,MAAM;IAiCd;;OAEG;YACW,YAAY;IAuD1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACH,OAAO,CAAC,YAAY;IA0DpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;CAQpB"}