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,95 +0,0 @@
1
- "use strict";
2
- /**
3
- * Sentinel AgentOS Middleware — OpenClaw Plugin
4
- *
5
- * Seamless integration with OpenClaw agent runtime.
6
- * Hooks into OpenClaw's tool-call lifecycle to add Guard + Memory + Evaluator.
7
- *
8
- * Usage:
9
- * In your OpenClaw skill or agent config:
10
- *
11
- * import { sentinelPlugin } from 'sentinel-agentos';
12
- *
13
- * const plugin = sentinelPlugin({ workspaceRoot: '/workspace' });
14
- * plugin.onBeforeTool((toolName, params) => { ... }); // returns risk + schema
15
- * plugin.onAfterTool((toolName, params, result) => { ... }); // returns verify + audit
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.sentinelPlugin = sentinelPlugin;
19
- const wrapper_1 = require("./wrapper");
20
- /**
21
- * Create an OpenClaw plugin that wraps Sentinel AgentOS.
22
- */
23
- function sentinelPlugin(config) {
24
- const wrapped = (0, wrapper_1.wrapAgent)(config);
25
- const sessionStates = new Map();
26
- // Register safe default rules for common OpenClaw tools
27
- wrapped.aos.guard.schema.registerRules([
28
- {
29
- tool: 'write',
30
- required: ['path', 'content'],
31
- pathDeny: { path: ['.env', '*.key', '*.pem', '.git/**', '**/SECRETS/**', '**/credentials/**'] },
32
- },
33
- {
34
- tool: 'read',
35
- required: ['path'],
36
- pathDeny: { path: ['.env', '*.key', '*.pem'] },
37
- },
38
- {
39
- tool: 'exec',
40
- required: ['command'],
41
- },
42
- {
43
- tool: 'edit',
44
- required: ['path'],
45
- pathDeny: { path: ['.env', '*.key', '*.pem', '.git/**'] },
46
- },
47
- {
48
- tool: 'delete',
49
- required: ['path'],
50
- pathDeny: { path: ['.env', '*.key', '*.pem', '.git/**', 'node_modules/**'] },
51
- },
52
- ]);
53
- let lastSnapshot = null;
54
- return {
55
- wrapped,
56
- onBeforeTool(toolName, params) {
57
- const check = wrapped.preCheck(toolName, params);
58
- lastSnapshot = check.snapshot;
59
- const schemaErrors = check.preExec.schemaCheck?.errors?.map((e) => e.message) ?? [];
60
- return {
61
- allowed: check.allowed,
62
- riskScore: check.preExec.riskScore.score,
63
- riskAction: check.preExec.riskScore.action,
64
- schemaErrors: schemaErrors.length > 0 ? schemaErrors : undefined,
65
- };
66
- },
67
- onAfterTool(toolName, params, result, startTime) {
68
- const check = wrapped.postCheck(toolName, params, result, lastSnapshot, startTime);
69
- return {
70
- verifyPassed: check.postExec.verifyPassed,
71
- verifyDetail: check.runtime.adaptiveScore >= 0.7 ? 'OK' : 'WARN',
72
- auditId: check.audit.id,
73
- };
74
- },
75
- sessionStart(sessionId) {
76
- const startTime = Date.now();
77
- sessionStates.set(sessionId, { startTime });
78
- return wrapped.injectContext();
79
- },
80
- sessionEnd(sessionId) {
81
- wrapped.endSession(sessionId);
82
- sessionStates.delete(sessionId);
83
- },
84
- recordApproval(sessionId) {
85
- wrapped.aos.recordFeedback('user_explicit_approval', sessionId);
86
- },
87
- recordCorrection(sessionId) {
88
- wrapped.aos.recordFeedback('user_modified_output', sessionId);
89
- },
90
- recordDeletion(sessionId) {
91
- wrapped.aos.recordFeedback('user_deleted_code', sessionId);
92
- },
93
- };
94
- }
95
- //# sourceMappingURL=openclaw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/middleware/openclaw.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Sentinel AgentOS Middleware — Framework-Agnostic Wrapper
3
- *
4
- * Wraps any Agent's tool-call execution in Sentinel's Guard + Memory + Evaluator pipeline.
5
- * One-line integration — no changes to your Agent logic.
6
- *
7
- * Usage:
8
- * import { wrapAgent } from 'sentinel-agentos';
9
- * const sentinel = wrapAgent({ workspaceRoot: '/project' });
10
- * const result = await sentinel.execute('write_file', { path: 'src/main.ts', ... }, callback);
11
- */
12
- import { AgentOS } from '../core';
13
- import type { AgentOSConfig, PreExecMetrics, PostExecMetrics, AuditEntry } from '../types';
14
- import type { AgentProfile } from '../evaluator/profiler';
15
- export interface WrappedAgent {
16
- /** Call this before every tool execution */
17
- preCheck: (toolName: string, params: Record<string, unknown>) => {
18
- preExec: PreExecMetrics;
19
- snapshot: any;
20
- allowed: boolean;
21
- reason?: string;
22
- };
23
- /** Call this after every tool execution */
24
- postCheck: (toolName: string, params: Record<string, unknown>, result: unknown, snapshot: any, startTime: number) => {
25
- runtime: any;
26
- postExec: PostExecMetrics;
27
- audit: AuditEntry;
28
- profile: AgentProfile;
29
- };
30
- /** Full pipeline: pre-check → execute callback → post-check */
31
- execute: <R>(toolName: string, params: Record<string, unknown>, fn: () => R | Promise<R>, opts?: {
32
- sessionId?: string;
33
- agentId?: string;
34
- affectedFiles?: string[];
35
- }) => Promise<{
36
- allowed: boolean;
37
- reason?: string;
38
- result?: R;
39
- runtime?: any;
40
- postExec?: PostExecMetrics;
41
- audit?: AuditEntry;
42
- profile?: AgentProfile;
43
- }>;
44
- /** Inject memory context at session start */
45
- injectContext: () => string;
46
- /** End session */
47
- endSession: (sessionId: string) => void;
48
- /** Get status report */
49
- statusReport: () => string;
50
- /** Raw AgentOS instance for advanced use */
51
- readonly aos: AgentOS;
52
- }
53
- export declare function wrapAgent(config?: Partial<AgentOSConfig>): WrappedAgent;
54
- //# sourceMappingURL=wrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/middleware/wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;QAC/D,OAAO,EAAE,cAAc,CAAC;QACxB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,2CAA2C;IAC3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK;QACnH,OAAO,EAAE,GAAG,CAAC;QACb,QAAQ,EAAE,eAAe,CAAC;QAC1B,KAAK,EAAE,UAAU,CAAC;QAClB,OAAO,EAAE,YAAY,CAAC;KACvB,CAAC;IAEF,+DAA+D;IAC/D,OAAO,EAAE,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KACtE,OAAO,CAAC;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,OAAO,CAAC,EAAE,YAAY,CAAC;KACxB,CAAC,CAAC;IAEH,6CAA6C;IAC7C,aAAa,EAAE,MAAM,MAAM,CAAC;IAE5B,kBAAkB;IAClB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,wBAAwB;IACxB,YAAY,EAAE,MAAM,MAAM,CAAC;IAE3B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,YAAY,CAmKvE"}
@@ -1,155 +0,0 @@
1
- "use strict";
2
- /**
3
- * Sentinel AgentOS Middleware — Framework-Agnostic Wrapper
4
- *
5
- * Wraps any Agent's tool-call execution in Sentinel's Guard + Memory + Evaluator pipeline.
6
- * One-line integration — no changes to your Agent logic.
7
- *
8
- * Usage:
9
- * import { wrapAgent } from 'sentinel-agentos';
10
- * const sentinel = wrapAgent({ workspaceRoot: '/project' });
11
- * const result = await sentinel.execute('write_file', { path: 'src/main.ts', ... }, callback);
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.wrapAgent = wrapAgent;
15
- const core_1 = require("../core");
16
- function wrapAgent(config) {
17
- const aos = new core_1.AgentOS(config);
18
- let sessionCounter = 0;
19
- const wrapped = {
20
- aos,
21
- preCheck(toolName, params) {
22
- const { preExec, snapshot } = aos.executePipeline({
23
- sessionId: `wrapped_${sessionCounter}`,
24
- agentId: 'wrapped_agent',
25
- toolName,
26
- parameters: params,
27
- });
28
- const allowed = preExec.riskScore.action !== 'deny';
29
- const reason = !allowed
30
- ? `Risk score ${preExec.riskScore.score} → DENY (${preExec.riskScore.dimensions?.impact} impact)`
31
- : undefined;
32
- return { preExec, snapshot, allowed, reason };
33
- },
34
- postCheck(toolName, params, result, snapshot, startTime) {
35
- const ret = aos.completeExecution({
36
- sessionId: `wrapped_${sessionCounter}`,
37
- agentId: 'wrapped_agent',
38
- toolName,
39
- toolParameters: params,
40
- toolResult: result,
41
- snapshot,
42
- startTime,
43
- endTime: Date.now(),
44
- retryCount: 0,
45
- wasSelfCorrected: false,
46
- hadTimeout: false,
47
- userAccepted: true,
48
- userProvidedEdit: false,
49
- resultWasUsed: false,
50
- });
51
- return {
52
- runtime: ret.runtime,
53
- postExec: ret.postExec,
54
- audit: ret.auditEntry,
55
- profile: ret.profile,
56
- };
57
- },
58
- async execute(toolName, params, fn, opts) {
59
- const sid = opts?.sessionId ?? `wrapped_${++sessionCounter}`;
60
- const aid = opts?.agentId ?? 'wrapped_agent';
61
- // Memory context at session start
62
- if (sessionCounter === 1) {
63
- aos.injectContext();
64
- }
65
- // Pre-check
66
- const { preExec, snapshot } = aos.executePipeline({
67
- sessionId: sid,
68
- agentId: aid,
69
- toolName,
70
- parameters: params,
71
- affectedFiles: opts?.affectedFiles,
72
- });
73
- if (preExec.riskScore.action === 'deny') {
74
- return {
75
- allowed: false,
76
- reason: `Risk score ${preExec.riskScore.score} → ${preExec.riskScore.action}`,
77
- profile: aos.getProfile(sid),
78
- };
79
- }
80
- // Optionally warn for 'confirm' level — but in middleware we auto-proceed
81
- // In production you'd hook this into your Agent's confirmation loop
82
- const startTime = Date.now();
83
- // Execute
84
- let result;
85
- try {
86
- result = await Promise.resolve(fn());
87
- }
88
- catch (err) {
89
- // Execution failed — still record in audit
90
- const ret = aos.completeExecution({
91
- sessionId: sid,
92
- agentId: aid,
93
- toolName,
94
- toolParameters: params,
95
- toolResult: { error: err.message },
96
- snapshot,
97
- startTime,
98
- endTime: Date.now(),
99
- retryCount: 0,
100
- wasSelfCorrected: false,
101
- hadTimeout: false,
102
- userAccepted: false,
103
- userProvidedEdit: false,
104
- resultWasUsed: false,
105
- });
106
- return {
107
- allowed: true,
108
- result: undefined,
109
- reason: `Execution failed: ${err.message}`,
110
- runtime: ret.runtime,
111
- postExec: ret.postExec,
112
- audit: ret.auditEntry,
113
- profile: ret.profile,
114
- };
115
- }
116
- // Post-check
117
- const ret = aos.completeExecution({
118
- sessionId: sid,
119
- agentId: aid,
120
- toolName,
121
- toolParameters: params,
122
- toolResult: result,
123
- snapshot,
124
- startTime,
125
- endTime: Date.now(),
126
- retryCount: 0,
127
- wasSelfCorrected: false,
128
- hadTimeout: false,
129
- userAccepted: true,
130
- userProvidedEdit: false,
131
- resultWasUsed: false,
132
- });
133
- return {
134
- allowed: true,
135
- result,
136
- runtime: ret.runtime,
137
- postExec: ret.postExec,
138
- audit: ret.auditEntry,
139
- profile: ret.profile,
140
- };
141
- },
142
- injectContext() {
143
- return aos.injectContext();
144
- },
145
- endSession(sid) {
146
- // Cast needed because endSession is typed narrowly in core
147
- aos.endSession(sid);
148
- },
149
- statusReport() {
150
- return aos.statusReport();
151
- },
152
- };
153
- return wrapped;
154
- }
155
- //# sourceMappingURL=wrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../src/middleware/wrapper.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts DELETED
@@ -1,45 +0,0 @@
1
- /**
2
- * Sentinel AgentOS HTTP Server
3
- *
4
- * Lightweight Express HTTP API that wraps the full Sentinel AgentOS
5
- * pipeline behind RESTful JSON endpoints. Any language can call it.
6
- *
7
- * Quick start:
8
- * npx sentinel-agentos server --port 3300
9
- *
10
- * Endpoints:
11
- * POST /pipeline/pre Pre-exec validation + risk scoring
12
- * POST /pipeline/post Post-exec verification + audit
13
- * GET /pipeline/report Status report
14
- * GET /pipeline/profile Agent quality profile
15
- *
16
- * POST /guard/schema Register schema rules
17
- * GET /guard/schema List schema rules
18
- *
19
- * POST /memory/preference Set a preference
20
- * POST /memory/fact Add a fact
21
- * POST /memory/rule Learn a rule
22
- * GET /memory/context Get injected context
23
- *
24
- * GET /audit Query audit log
25
- * GET /health Health check
26
- *
27
- * POST /session/end End session
28
- * POST /feedback Record implicit feedback
29
- */
30
- import { AgentOS } from './core';
31
- type ServerConfig = {
32
- port: number;
33
- host?: string;
34
- /** API token for authentication. If set, all requests must include `Authorization: Bearer <token>` */
35
- apiToken?: string;
36
- };
37
- export declare function createServer(config?: Partial<ServerConfig>): {
38
- app: import("express-serve-static-core").Express;
39
- start: () => Promise<void>;
40
- stop: () => Promise<void>;
41
- getPort: () => number;
42
- getInstance: () => AgentOS;
43
- };
44
- export {};
45
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;;;;;;EA4P1D"}
package/dist/server.js DELETED
@@ -1,256 +0,0 @@
1
- "use strict";
2
- /**
3
- * Sentinel AgentOS HTTP Server
4
- *
5
- * Lightweight Express HTTP API that wraps the full Sentinel AgentOS
6
- * pipeline behind RESTful JSON endpoints. Any language can call it.
7
- *
8
- * Quick start:
9
- * npx sentinel-agentos server --port 3300
10
- *
11
- * Endpoints:
12
- * POST /pipeline/pre Pre-exec validation + risk scoring
13
- * POST /pipeline/post Post-exec verification + audit
14
- * GET /pipeline/report Status report
15
- * GET /pipeline/profile Agent quality profile
16
- *
17
- * POST /guard/schema Register schema rules
18
- * GET /guard/schema List schema rules
19
- *
20
- * POST /memory/preference Set a preference
21
- * POST /memory/fact Add a fact
22
- * POST /memory/rule Learn a rule
23
- * GET /memory/context Get injected context
24
- *
25
- * GET /audit Query audit log
26
- * GET /health Health check
27
- *
28
- * POST /session/end End session
29
- * POST /feedback Record implicit feedback
30
- */
31
- var __importDefault = (this && this.__importDefault) || function (mod) {
32
- return (mod && mod.__esModule) ? mod : { "default": mod };
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.createServer = createServer;
36
- const express_1 = __importDefault(require("express"));
37
- const cors_1 = __importDefault(require("cors"));
38
- const core_1 = require("./core");
39
- function createServer(config) {
40
- const port = config?.port ?? 3300;
41
- const host = config?.host ?? '127.0.0.1';
42
- const apiToken = config?.apiToken;
43
- const app = (0, express_1.default)();
44
- app.use((0, cors_1.default)());
45
- app.use(express_1.default.json({ limit: '1mb' }));
46
- // ---- API Token Authentication ----
47
- if (apiToken) {
48
- app.use((req, res, next) => {
49
- // Skip health check and dashboard (static page)
50
- if (req.path === '/health' || req.path === '/dashboard' || req.path.startsWith('/dashboard/')) {
51
- next();
52
- return;
53
- }
54
- const auth = req.headers.authorization;
55
- const token = auth?.startsWith('Bearer ') ? auth.slice(7) : null;
56
- if (token !== apiToken) {
57
- res.status(401).json({ error: 'Unauthorized: invalid or missing API token' });
58
- return;
59
- }
60
- next();
61
- });
62
- }
63
- // Each request gets its own AgentOS tracker, but we keep one base instance
64
- // for shared memory (semantic/episodic) and accumulated profile.
65
- const baseAos = new core_1.AgentOS();
66
- // ---- Health ----
67
- app.get('/health', (_req, res) => {
68
- res.json({ ok: true, uptime: process.uptime() });
69
- });
70
- // ---- Dashboard ----
71
- const dashboardPath = require('path').join(__dirname, 'dashboard.html');
72
- let dashboardHtml = '<h1>Dashboard unavailable</h1>';
73
- try {
74
- dashboardHtml = require('fs').readFileSync(dashboardPath, 'utf-8');
75
- }
76
- catch {
77
- // dashboard.html not in dist — use inline fallback
78
- dashboardHtml = `<!DOCTYPE html>
79
- <html><head><title>Sentinel AgentOS</title><style>body{font-family:system-ui;max-width:800px;margin:2rem auto;padding:1rem;background:#0d1117;color:#c9d1d9}h1{color:#58a6ff}pre{background:#161b22;padding:1rem;border-radius:6px}</style></head>
80
- <body><h1>Sentinel AgentOS Dashboard</h1><p>Dashboard running. Visit <a href="/pipeline/report">/pipeline/report</a> or <a href="/pipeline/profile">/pipeline/profile</a> for data.</p></body></html>`;
81
- }
82
- app.get('/dashboard', (_req, res) => {
83
- res.type('html').send(dashboardHtml);
84
- });
85
- // Rich report for dashboard
86
- app.get('/pipeline/report', (_req, res) => {
87
- const r = baseAos.getReport();
88
- const audit = baseAos.guard.audit.query({ limit: 20 });
89
- res.json({
90
- ...r,
91
- uptime: `${Math.floor(process.uptime())}s`,
92
- timeline: audit.map(e => ({
93
- tool: e.toolName, ts: e.completedAt, verify: e.verifyGate.status, risk: e.riskGate.score,
94
- })),
95
- });
96
- });
97
- // ---- Pipeline: Pre-exec ----
98
- app.post('/pipeline/pre', (req, res) => {
99
- try {
100
- const { sessionId, agentId, toolName, parameters, affectedFiles } = req.body;
101
- if (!toolName) {
102
- res.status(400).json({ error: 'toolName is required' });
103
- return;
104
- }
105
- const result = baseAos.executePipeline({
106
- sessionId: sessionId ?? 'http_session',
107
- agentId: agentId ?? 'http_agent',
108
- toolName,
109
- parameters: parameters ?? {},
110
- affectedFiles: affectedFiles ?? [],
111
- });
112
- res.json(result);
113
- }
114
- catch (err) {
115
- res.status(500).json({ error: err.message });
116
- }
117
- });
118
- // ---- Pipeline: Post-exec ----
119
- app.post('/pipeline/post', (req, res) => {
120
- try {
121
- const { sessionId, agentId, toolName, toolParameters, toolResult, snapshot, startTime, endTime, retryCount, wasSelfCorrected, hadTimeout, userAccepted, userProvidedEdit, resultWasUsed, } = req.body;
122
- if (!toolName) {
123
- res.status(400).json({ error: 'toolName is required' });
124
- return;
125
- }
126
- const result = baseAos.completeExecution({
127
- sessionId: sessionId ?? 'http_session',
128
- agentId: agentId ?? 'http_agent',
129
- toolName,
130
- toolParameters: toolParameters ?? {},
131
- toolResult: toolResult ?? null,
132
- snapshot: snapshot ?? null,
133
- startTime: startTime ?? Date.now() - 100,
134
- endTime: endTime ?? Date.now(),
135
- retryCount: retryCount ?? 0,
136
- wasSelfCorrected: wasSelfCorrected ?? false,
137
- hadTimeout: hadTimeout ?? false,
138
- userAccepted: userAccepted ?? true,
139
- userProvidedEdit: userProvidedEdit ?? false,
140
- resultWasUsed: resultWasUsed ?? false,
141
- });
142
- res.json(result);
143
- }
144
- catch (err) {
145
- res.status(500).json({ error: err.message });
146
- }
147
- });
148
- // ---- Pipeline: Report ----
149
- app.get('/pipeline/report', (_req, res) => {
150
- res.json({ report: baseAos.statusReport() });
151
- });
152
- // ---- Pipeline: Profile ----
153
- app.get('/pipeline/profile', (req, res) => {
154
- const sessionId = req.query.sessionId;
155
- res.json(baseAos.getProfile(sessionId));
156
- });
157
- // ---- Guard: Register schema rules ----
158
- app.post('/guard/schema', (req, res) => {
159
- try {
160
- const rule = req.body;
161
- if (!rule.tool) {
162
- res.status(400).json({ error: 'rule.tool is required' });
163
- return;
164
- }
165
- baseAos.guard.schema.registerRule(rule);
166
- res.json({ ok: true, tool: rule.tool });
167
- }
168
- catch (err) {
169
- res.status(500).json({ error: err.message });
170
- }
171
- });
172
- // ---- Guard: List rules ----
173
- app.get('/guard/schema', (req, res) => {
174
- const toolName = req.query.tool;
175
- // SchemaGate doesn't expose a public list — use a partial dump
176
- res.json({ tool: toolName ?? '*', note: 'Schema rules are active but listing requires internal API upgrade' });
177
- });
178
- // ---- Memory ----
179
- app.post('/memory/preference', (req, res) => {
180
- const { key, value } = req.body;
181
- baseAos.memory.semantic.setPreference(key, value);
182
- res.json({ ok: true });
183
- });
184
- app.post('/memory/fact', (req, res) => {
185
- const { fact } = req.body;
186
- baseAos.memory.semantic.addFact(fact);
187
- res.json({ ok: true });
188
- });
189
- app.post('/memory/rule', (req, res) => {
190
- const { rule, source } = req.body;
191
- baseAos.memory.semantic.learnRule(rule, source);
192
- res.json({ ok: true });
193
- });
194
- app.get('/memory/context', (_req, res) => {
195
- res.json({ context: baseAos.injectContext() });
196
- });
197
- // ---- Audit ----
198
- app.get('/audit', (req, res) => {
199
- const limit = parseInt(String(req.query.limit ?? '20'), 10);
200
- const toolName = req.query.tool;
201
- const status = req.query.status;
202
- const entries = baseAos.guard.audit.query({
203
- limit,
204
- ...(toolName ? { toolName } : {}),
205
- ...(status ? { status } : {}),
206
- });
207
- res.json(entries);
208
- });
209
- // ---- Session ----
210
- app.post('/session/end', (req, res) => {
211
- const { sessionId } = req.body;
212
- baseAos.endSession(sessionId ?? 'http_session');
213
- res.json({ ok: true });
214
- });
215
- // ---- Feedback ----
216
- app.post('/feedback', (req, res) => {
217
- const { signal, sessionId, operationId, confidence, source } = req.body;
218
- baseAos.recordFeedback(signal, sessionId, operationId, confidence, source);
219
- res.json({ ok: true });
220
- });
221
- // ---- Error handling ----
222
- app.use((err, _req, res, _next) => {
223
- console.error('[Sentinel HTTP]', err);
224
- res.status(500).json({ error: 'Internal server error' });
225
- });
226
- let server = null;
227
- return {
228
- app,
229
- start: () => {
230
- return new Promise((resolve) => {
231
- server = app.listen(port, host, () => {
232
- console.log(`🛡️ Sentinel AgentOS HTTP server → http://${host}:${port}`);
233
- console.log(` Health: http://${host}:${port}/health`);
234
- resolve();
235
- });
236
- });
237
- },
238
- stop: () => {
239
- return new Promise((resolve) => {
240
- server?.close(() => resolve());
241
- });
242
- },
243
- getPort: () => port,
244
- getInstance: () => baseAos,
245
- };
246
- }
247
- // Allow direct invocation via `npx ts-node src/server.ts` or compiled `node dist/server.js`
248
- if (require.main === module) {
249
- const args = process.argv.slice(2);
250
- const portArg = args.indexOf('--port');
251
- const port = portArg >= 0 ? parseInt(args[portArg + 1] ?? '3300', 10) : 3300;
252
- const hostArg = args.indexOf('--host');
253
- const host = hostArg >= 0 ? args[hostArg + 1] ?? '127.0.0.1' : '127.0.0.1';
254
- createServer({ port, host }).start();
255
- }
256
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}