sentinel-agentos 0.1.0

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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +636 -0
  3. package/dist/api.d.ts +151 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +179 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/cli.d.ts +14 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +182 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/core.d.ts +139 -0
  12. package/dist/core.d.ts.map +1 -0
  13. package/dist/core.js +247 -0
  14. package/dist/core.js.map +1 -0
  15. package/dist/evaluator/exec-evaluator.d.ts +102 -0
  16. package/dist/evaluator/exec-evaluator.d.ts.map +1 -0
  17. package/dist/evaluator/exec-evaluator.js +266 -0
  18. package/dist/evaluator/exec-evaluator.js.map +1 -0
  19. package/dist/evaluator/feedback.d.ts +66 -0
  20. package/dist/evaluator/feedback.d.ts.map +1 -0
  21. package/dist/evaluator/feedback.js +195 -0
  22. package/dist/evaluator/feedback.js.map +1 -0
  23. package/dist/evaluator/profiler.d.ts +53 -0
  24. package/dist/evaluator/profiler.d.ts.map +1 -0
  25. package/dist/evaluator/profiler.js +108 -0
  26. package/dist/evaluator/profiler.js.map +1 -0
  27. package/dist/guard/audit-log.d.ts +75 -0
  28. package/dist/guard/audit-log.d.ts.map +1 -0
  29. package/dist/guard/audit-log.js +207 -0
  30. package/dist/guard/audit-log.js.map +1 -0
  31. package/dist/guard/risk-gate.d.ts +97 -0
  32. package/dist/guard/risk-gate.d.ts.map +1 -0
  33. package/dist/guard/risk-gate.js +160 -0
  34. package/dist/guard/risk-gate.js.map +1 -0
  35. package/dist/guard/sandbox.d.ts +112 -0
  36. package/dist/guard/sandbox.d.ts.map +1 -0
  37. package/dist/guard/sandbox.js +379 -0
  38. package/dist/guard/sandbox.js.map +1 -0
  39. package/dist/guard/schema-gate.d.ts +90 -0
  40. package/dist/guard/schema-gate.d.ts.map +1 -0
  41. package/dist/guard/schema-gate.js +452 -0
  42. package/dist/guard/schema-gate.js.map +1 -0
  43. package/dist/guard/snapshot-verify.d.ts +111 -0
  44. package/dist/guard/snapshot-verify.d.ts.map +1 -0
  45. package/dist/guard/snapshot-verify.js +578 -0
  46. package/dist/guard/snapshot-verify.js.map +1 -0
  47. package/dist/index.d.ts +28 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +59 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/memory/episodic.d.ts +76 -0
  52. package/dist/memory/episodic.d.ts.map +1 -0
  53. package/dist/memory/episodic.js +289 -0
  54. package/dist/memory/episodic.js.map +1 -0
  55. package/dist/memory/semantic.d.ts +69 -0
  56. package/dist/memory/semantic.d.ts.map +1 -0
  57. package/dist/memory/semantic.js +243 -0
  58. package/dist/memory/semantic.js.map +1 -0
  59. package/dist/memory/working.d.ts +53 -0
  60. package/dist/memory/working.d.ts.map +1 -0
  61. package/dist/memory/working.js +150 -0
  62. package/dist/memory/working.js.map +1 -0
  63. package/dist/middleware/openclaw.d.ts +45 -0
  64. package/dist/middleware/openclaw.d.ts.map +1 -0
  65. package/dist/middleware/openclaw.js +95 -0
  66. package/dist/middleware/openclaw.js.map +1 -0
  67. package/dist/middleware/wrapper.d.ts +54 -0
  68. package/dist/middleware/wrapper.d.ts.map +1 -0
  69. package/dist/middleware/wrapper.js +155 -0
  70. package/dist/middleware/wrapper.js.map +1 -0
  71. package/dist/server.d.ts +45 -0
  72. package/dist/server.d.ts.map +1 -0
  73. package/dist/server.js +229 -0
  74. package/dist/server.js.map +1 -0
  75. package/dist/types/index.d.ts +201 -0
  76. package/dist/types/index.d.ts.map +1 -0
  77. package/dist/types/index.js +4 -0
  78. package/dist/types/index.js.map +1 -0
  79. package/package.json +64 -0
package/dist/api.d.ts ADDED
@@ -0,0 +1,151 @@
1
+ import { AgentOS } from './core';
2
+ import { AuditEntry } from './types';
3
+ import type { AgentProfile } from './evaluator/profiler';
4
+ import type { SchemaRule } from './guard/schema-gate';
5
+ import type { ExecutionContext } from './guard/sandbox';
6
+ /**
7
+ * AgentOS API — SDK protocol layer.
8
+ *
9
+ * JSON-RPC 2.0 compatible interface for external agent frameworks.
10
+ * No HTTP/WS server in v1.0 — this is an in-process SDK API.
11
+ *
12
+ * Methods are named as `namespace.method` per OpenRPC convention:
13
+ * - guard.schema.registerRule
14
+ * - agentos.pipeline.execute
15
+ * - memory.context.inject
16
+ * - audit.query
17
+ * - profile.get
18
+ */
19
+ export declare class AgentOSAPI {
20
+ private aos;
21
+ constructor(aos: AgentOS);
22
+ /** Register a schema validation rule */
23
+ guardRegisterRule(rule: SchemaRule): void;
24
+ /** Register multiple schema rules at once */
25
+ guardRegisterRules(rules: SchemaRule[]): void;
26
+ /** Check if a tool has schema rules */
27
+ guardHasRule(toolName: string): boolean;
28
+ /** Get all registered schema rules */
29
+ guardGetRules(): SchemaRule[];
30
+ /** Evaluate risk score for a tool call */
31
+ guardEvaluateRisk(toolName: string, params: Record<string, unknown>): {
32
+ score: number;
33
+ action: string;
34
+ dimensions: Record<string, number>;
35
+ };
36
+ /** Update risk thresholds */
37
+ guardSetRiskThresholds(thresholds: {
38
+ autoApprove?: number;
39
+ notify?: number;
40
+ confirm?: number;
41
+ deny?: number;
42
+ }): void;
43
+ /** Execute the full pre-exec pipeline (before tool runs) */
44
+ pipelineExecute(params: {
45
+ sessionId: string;
46
+ agentId: string;
47
+ toolName: string;
48
+ toolParameters: Record<string, unknown>;
49
+ affectedFiles?: string[];
50
+ executionContext?: Partial<ExecutionContext>;
51
+ }): Promise<{
52
+ preExec: ReturnType<AgentOS['evaluator']['preExec']['evaluate']>;
53
+ snapshot: ReturnType<AgentOS['guard']['snapshot']['takeSnapshot']> | null;
54
+ profile: AgentProfile;
55
+ sandboxRejection?: string;
56
+ }>;
57
+ /** Complete the pipeline after tool execution */
58
+ pipelineComplete(params: {
59
+ sessionId: string;
60
+ agentId: string;
61
+ toolName: string;
62
+ toolParameters: Record<string, unknown>;
63
+ toolResult: unknown;
64
+ snapshot: any | null;
65
+ startTime: number;
66
+ endTime: number;
67
+ retryCount?: number;
68
+ wasSelfCorrected?: boolean;
69
+ hadTimeout?: boolean;
70
+ userAccepted?: boolean;
71
+ userProvidedEdit?: boolean;
72
+ resultWasUsed?: boolean;
73
+ }): {
74
+ runtime: ReturnType<AgentOS['evaluator']['runtime']['evaluate']>;
75
+ postExec: ReturnType<AgentOS['evaluator']['postExec']['evaluate']>;
76
+ auditEntry: AuditEntry;
77
+ profile: AgentProfile;
78
+ };
79
+ /** Inject memory context for session startup */
80
+ memoryInjectContext(): string;
81
+ /** Add a working memory message */
82
+ memoryAddMessage(role: 'user' | 'agent' | 'tool', content: string): void;
83
+ /** Set current task */
84
+ memorySetTask(task: {
85
+ description: string;
86
+ steps: Array<{
87
+ step: string;
88
+ status: string;
89
+ }>;
90
+ }): void;
91
+ /** Cache a tool result */
92
+ memoryCacheResult(toolName: string, result: unknown): void;
93
+ /** Record an episodic event */
94
+ memoryRecordEvent(type: any, content: string, tags?: string[], relatedEntities?: string[]): void;
95
+ /** Set a semantic user preference */
96
+ memorySetPreference(key: string, value: unknown): void;
97
+ /** Get a semantic user preference */
98
+ memoryGetPreference<T = unknown>(key: string): T | undefined;
99
+ /** Learn a rule in semantic memory */
100
+ memoryLearnRule(rule: string, source: string): void;
101
+ /** Define a glossary term */
102
+ memoryDefineTerm(term: string, meaning: string): void;
103
+ /** Set project context */
104
+ memorySetProjectContext(projectName: string, context: {
105
+ description?: string;
106
+ techStack?: string[];
107
+ conventions?: string[];
108
+ architecture?: string;
109
+ knownIssues?: string[];
110
+ }): void;
111
+ /** Query audit log */
112
+ auditQuery(filter?: {
113
+ sessionId?: string;
114
+ toolName?: string;
115
+ verifyStatus?: 'PASS' | 'WARN' | 'FAIL';
116
+ minScore?: number;
117
+ maxScore?: number;
118
+ limit?: number;
119
+ }): AuditEntry[];
120
+ /** Get audit statistics */
121
+ auditStats(): ReturnType<AgentOS['getAuditStats']>;
122
+ /** Record implicit user feedback */
123
+ recordFeedback(signal: Parameters<AgentOS['evaluator']['feedback']['record']>[0], sessionId: string, operationId?: string, confidence?: number): void;
124
+ /** Get satisfaction score */
125
+ getSatisfaction(sessionId?: string, recentHours?: number): number;
126
+ /** Get feedback statistics */
127
+ feedbackStats(): ReturnType<AgentOS['evaluator']['feedback']['stats']>;
128
+ /** Get agent quality profile */
129
+ getProfile(sessionId?: string): AgentProfile;
130
+ /** Get agent status report (human-readable) */
131
+ getStatusReport(): string;
132
+ /** Get session overview */
133
+ getSessionOverview(): {
134
+ profile: AgentProfile;
135
+ audit: ReturnType<AgentOS['getAuditStats']>;
136
+ satisfaction: number;
137
+ workingMemory: {
138
+ messages: number;
139
+ openFiles: number;
140
+ budget: {
141
+ used: number;
142
+ limit: number;
143
+ };
144
+ };
145
+ episodicEvents: number;
146
+ semanticRules: number;
147
+ };
148
+ /** End session and clean up */
149
+ endSession(sessionId: string): void;
150
+ }
151
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js ADDED
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentOSAPI = void 0;
4
+ /**
5
+ * AgentOS API — SDK protocol layer.
6
+ *
7
+ * JSON-RPC 2.0 compatible interface for external agent frameworks.
8
+ * No HTTP/WS server in v1.0 — this is an in-process SDK API.
9
+ *
10
+ * Methods are named as `namespace.method` per OpenRPC convention:
11
+ * - guard.schema.registerRule
12
+ * - agentos.pipeline.execute
13
+ * - memory.context.inject
14
+ * - audit.query
15
+ * - profile.get
16
+ */
17
+ class AgentOSAPI {
18
+ aos;
19
+ constructor(aos) {
20
+ this.aos = aos;
21
+ }
22
+ // ========== Guard Methods ==========
23
+ /** Register a schema validation rule */
24
+ guardRegisterRule(rule) {
25
+ this.aos.guard.schema.registerRule(rule);
26
+ }
27
+ /** Register multiple schema rules at once */
28
+ guardRegisterRules(rules) {
29
+ this.aos.guard.schema.registerRules(rules);
30
+ }
31
+ /** Check if a tool has schema rules */
32
+ guardHasRule(toolName) {
33
+ return this.aos.guard.schema.hasRule(toolName);
34
+ }
35
+ /** Get all registered schema rules */
36
+ guardGetRules() {
37
+ return this.aos.guard.schema.getRules();
38
+ }
39
+ /** Evaluate risk score for a tool call */
40
+ guardEvaluateRisk(toolName, params) {
41
+ const result = this.aos.guard.risk.evaluate(toolName, params);
42
+ return {
43
+ score: result.score,
44
+ action: result.action,
45
+ dimensions: { ...result.dimensions },
46
+ };
47
+ }
48
+ /** Update risk thresholds */
49
+ guardSetRiskThresholds(thresholds) {
50
+ this.aos.guard.risk.setThresholds(thresholds);
51
+ }
52
+ // ========== Pipeline Methods ==========
53
+ /** Execute the full pre-exec pipeline (before tool runs) */
54
+ async pipelineExecute(params) {
55
+ const result = this.aos.executePipeline({
56
+ sessionId: params.sessionId,
57
+ agentId: params.agentId,
58
+ toolName: params.toolName,
59
+ parameters: params.toolParameters,
60
+ affectedFiles: params.affectedFiles,
61
+ });
62
+ return {
63
+ preExec: result.preExec,
64
+ snapshot: result.snapshot,
65
+ profile: result.profile,
66
+ };
67
+ }
68
+ /** Complete the pipeline after tool execution */
69
+ pipelineComplete(params) {
70
+ return this.aos.completeExecution({
71
+ ...params,
72
+ retryCount: params.retryCount ?? 0,
73
+ wasSelfCorrected: params.wasSelfCorrected ?? false,
74
+ hadTimeout: params.hadTimeout ?? false,
75
+ userAccepted: params.userAccepted ?? true,
76
+ userProvidedEdit: params.userProvidedEdit ?? false,
77
+ resultWasUsed: params.resultWasUsed ?? false,
78
+ });
79
+ }
80
+ // ========== Memory Methods ==========
81
+ /** Inject memory context for session startup */
82
+ memoryInjectContext() {
83
+ return this.aos.injectContext();
84
+ }
85
+ /** Add a working memory message */
86
+ memoryAddMessage(role, content) {
87
+ this.aos.memory.working.addMessage(role, content);
88
+ }
89
+ /** Set current task */
90
+ memorySetTask(task) {
91
+ this.aos.memory.working.setTask({
92
+ description: task.description,
93
+ steps: task.steps.map((s) => ({
94
+ step: s.step,
95
+ status: s.status,
96
+ })),
97
+ });
98
+ }
99
+ /** Cache a tool result */
100
+ memoryCacheResult(toolName, result) {
101
+ this.aos.memory.working.cacheToolResult(toolName, result);
102
+ }
103
+ /** Record an episodic event */
104
+ memoryRecordEvent(type, content, tags, relatedEntities) {
105
+ this.aos.memory.episodic.record(type, content, tags, relatedEntities);
106
+ }
107
+ /** Set a semantic user preference */
108
+ memorySetPreference(key, value) {
109
+ this.aos.memory.semantic.setPreference(key, value);
110
+ }
111
+ /** Get a semantic user preference */
112
+ memoryGetPreference(key) {
113
+ return this.aos.memory.semantic.getPreference(key);
114
+ }
115
+ /** Learn a rule in semantic memory */
116
+ memoryLearnRule(rule, source) {
117
+ this.aos.memory.semantic.learnRule(rule, source);
118
+ }
119
+ /** Define a glossary term */
120
+ memoryDefineTerm(term, meaning) {
121
+ this.aos.memory.semantic.defineTerm(term, meaning);
122
+ }
123
+ /** Set project context */
124
+ memorySetProjectContext(projectName, context) {
125
+ this.aos.memory.semantic.setProjectContext(projectName, context);
126
+ }
127
+ // ========== Audit Methods ==========
128
+ /** Query audit log */
129
+ auditQuery(filter = {}) {
130
+ return this.aos.guard.audit.query(filter);
131
+ }
132
+ /** Get audit statistics */
133
+ auditStats() {
134
+ return this.aos.getAuditStats();
135
+ }
136
+ // ========== Feedback Methods ==========
137
+ /** Record implicit user feedback */
138
+ recordFeedback(signal, sessionId, operationId, confidence) {
139
+ this.aos.recordFeedback(signal, sessionId, operationId, confidence);
140
+ }
141
+ /** Get satisfaction score */
142
+ getSatisfaction(sessionId, recentHours) {
143
+ return this.aos.evaluator.feedback.getSatisfactionScore(sessionId, recentHours);
144
+ }
145
+ /** Get feedback statistics */
146
+ feedbackStats() {
147
+ return this.aos.evaluator.feedback.stats();
148
+ }
149
+ // ========== Profile Methods ==========
150
+ /** Get agent quality profile */
151
+ getProfile(sessionId) {
152
+ return this.aos.getProfile(sessionId);
153
+ }
154
+ /** Get agent status report (human-readable) */
155
+ getStatusReport() {
156
+ return this.aos.statusReport();
157
+ }
158
+ /** Get session overview */
159
+ getSessionOverview() {
160
+ return {
161
+ profile: this.aos.getProfile(),
162
+ audit: this.aos.getAuditStats(),
163
+ satisfaction: this.aos.evaluator.feedback.getSatisfactionScore(),
164
+ workingMemory: {
165
+ messages: this.aos.memory.working.recentMessages.length,
166
+ openFiles: this.aos.memory.working.openFiles.length,
167
+ budget: this.aos.memory.working.budget,
168
+ },
169
+ episodicEvents: this.aos.memory.episodic.count,
170
+ semanticRules: this.aos.memory.semantic.getAllRules().length,
171
+ };
172
+ }
173
+ /** End session and clean up */
174
+ endSession(sessionId) {
175
+ this.aos.endSession(sessionId);
176
+ }
177
+ }
178
+ exports.AgentOSAPI = AgentOSAPI;
179
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAMA;;;;;;;;;;;;GAYG;AACH,MAAa,UAAU;IACb,GAAG,CAAU;IAErB,YAAY,GAAY;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,sCAAsC;IAEtC,wCAAwC;IACxC,iBAAiB,CAAC,IAAgB;QAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,6CAA6C;IAC7C,kBAAkB,CAAC,KAAmB;QACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,uCAAuC;IACvC,YAAY,CAAC,QAAgB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,sCAAsC;IACtC,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,0CAA0C;IAC1C,iBAAiB,CAAC,QAAgB,EAAE,MAA+B;QAKjE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,sBAAsB,CAAC,UAKtB;QACC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,yCAAyC;IAEzC,4DAA4D;IAC5D,KAAK,CAAC,eAAe,CAAC,MAOrB;QAMC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,cAAc;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,gBAAgB,CAAC,MAehB;QAMC,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAChC,GAAG,MAAM;YACT,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK;YAClD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;YACtC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;YACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK;YAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IAEvC,gDAAgD;IAChD,mBAAmB;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,mCAAmC;IACnC,gBAAgB,CAAC,IAA+B,EAAE,OAAe;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,aAAa,CAAC,IAA6E;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAA4C;aACvD,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,iBAAiB,CAAC,QAAgB,EAAE,MAAe;QACjD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,+BAA+B;IAC/B,iBAAiB,CACf,IAAS,EACT,OAAe,EACf,IAAe,EACf,eAA0B;QAE1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IACxE,CAAC;IAED,qCAAqC;IACrC,mBAAmB,CAAC,GAAW,EAAE,KAAc;QAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,qCAAqC;IACrC,mBAAmB,CAAc,GAAW;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAI,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IACtC,eAAe,CAAC,IAAY,EAAE,MAAc;QAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,6BAA6B;IAC7B,gBAAgB,CAAC,IAAY,EAAE,OAAe;QAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,0BAA0B;IAC1B,uBAAuB,CACrB,WAAmB,EACnB,OAMC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,sCAAsC;IAEtC,sBAAsB;IACtB,UAAU,CAAC,SAOP,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,2BAA2B;IAC3B,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,yCAAyC;IAEzC,oCAAoC;IACpC,cAAc,CACZ,MAAiE,EACjE,SAAiB,EACjB,WAAoB,EACpB,UAAmB;QAEnB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,6BAA6B;IAC7B,eAAe,CAAC,SAAkB,EAAE,WAAoB;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC;IAED,8BAA8B;IAC9B,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,wCAAwC;IAExC,gCAAgC;IAChC,UAAU,CAAC,SAAkB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,+CAA+C;IAC/C,eAAe;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;IAED,2BAA2B;IAC3B,kBAAkB;QAYhB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC/B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE;YAChE,aAAa,EAAE;gBACb,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM;gBACvD,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM;gBACnD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;aACvC;YACD,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;YAC9C,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM;SAC7D,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;CACF;AAjRD,gCAiRC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Sentinel AgentOS CLI
4
+ *
5
+ * Command-line interface for Sentinel AgentOS operations.
6
+ *
7
+ * Quick start:
8
+ * npx sentinel-agentos validate --tool write_file --params '{"path":"foo.ts"}'
9
+ * npx sentinel-agentos audit --limit 10
10
+ * npx sentinel-agentos status
11
+ * npx sentinel-agentos server --port 3300
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
package/dist/cli.js ADDED
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Sentinel AgentOS CLI
5
+ *
6
+ * Command-line interface for Sentinel AgentOS operations.
7
+ *
8
+ * Quick start:
9
+ * npx sentinel-agentos validate --tool write_file --params '{"path":"foo.ts"}'
10
+ * npx sentinel-agentos audit --limit 10
11
+ * npx sentinel-agentos status
12
+ * npx sentinel-agentos server --port 3300
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ const core_1 = require("./core");
49
+ function printHelp() {
50
+ console.log(`
51
+ 🛡️ Sentinel AgentOS CLI
52
+
53
+ Usage:
54
+ sentinel-agentos <command> [options]
55
+
56
+ Commands:
57
+ validate Validate tool parameters against schema rules
58
+ risk Calculate risk score for a tool call
59
+ audit Query the audit log
60
+ stats Show audit statistics
61
+ profile Show agent quality profile
62
+ status Show full status report
63
+ server Start HTTP API server
64
+ memory Show memory context
65
+ help Show this help
66
+
67
+ Examples:
68
+ sentinel-agentos validate --tool exec --params '{"command":"rm -rf /"}'
69
+ sentinel-agentos risk --tool delete_file --params '{"path":"config.key"}'
70
+ sentinel-agentos audit --limit 10
71
+ sentinel-agentos status
72
+ sentinel-agentos server --port 3300
73
+ `);
74
+ }
75
+ function fatal(msg) {
76
+ console.error(`❌ ${msg}`);
77
+ process.exit(1);
78
+ }
79
+ function parseArgs(args) {
80
+ const result = {};
81
+ for (let i = 0; i < args.length; i++) {
82
+ const arg = args[i];
83
+ if (arg && arg.startsWith('--')) {
84
+ const key = arg.replace(/^--/, '');
85
+ const next = args[i + 1];
86
+ const val = (next !== undefined && !next.startsWith('--')) ? next : 'true';
87
+ result[key] = val;
88
+ if (val !== 'true')
89
+ i++;
90
+ }
91
+ }
92
+ return result;
93
+ }
94
+ async function main() {
95
+ const args = process.argv.slice(2);
96
+ const cmd = args[0] ?? '';
97
+ const opts = parseArgs(args.slice(1));
98
+ if (!cmd || cmd === 'help') {
99
+ printHelp();
100
+ return;
101
+ }
102
+ const aos = new core_1.AgentOS();
103
+ switch (cmd) {
104
+ case 'validate': {
105
+ const tool = opts.tool ?? fatal('--tool required');
106
+ const params = opts.params ? JSON.parse(opts.params) : {};
107
+ const result = aos.executePipeline({
108
+ sessionId: 'cli',
109
+ agentId: 'cli',
110
+ toolName: tool,
111
+ parameters: params,
112
+ });
113
+ console.log(JSON.stringify(result.preExec.schemaCheck, null, 2));
114
+ break;
115
+ }
116
+ case 'risk': {
117
+ const tool = opts.tool ?? fatal('--tool required');
118
+ const params = opts.params ? JSON.parse(opts.params) : {};
119
+ const result = aos.executePipeline({
120
+ sessionId: 'cli',
121
+ agentId: 'cli',
122
+ toolName: tool,
123
+ parameters: params,
124
+ });
125
+ console.log(JSON.stringify(result.preExec.riskScore, null, 2));
126
+ break;
127
+ }
128
+ case 'audit': {
129
+ const limit = parseInt(opts.limit ?? '20', 10);
130
+ const entries = aos.guard.audit.query({ limit });
131
+ console.log(JSON.stringify(entries, null, 2));
132
+ break;
133
+ }
134
+ case 'stats': {
135
+ const stats = aos.getAuditStats();
136
+ console.log(JSON.stringify(stats, null, 2));
137
+ break;
138
+ }
139
+ case 'profile': {
140
+ const profile = aos.getProfile();
141
+ console.log(JSON.stringify(profile, null, 2));
142
+ break;
143
+ }
144
+ case 'status': {
145
+ console.log(aos.statusReport());
146
+ break;
147
+ }
148
+ case 'server': {
149
+ const port = parseInt(opts.port ?? '3300', 10);
150
+ const host = opts.host ?? '127.0.0.1';
151
+ const token = opts.token;
152
+ // Dynamic import to avoid requiring express at CLI startup
153
+ try {
154
+ const { createServer } = await Promise.resolve().then(() => __importStar(require('./server')));
155
+ const server = createServer({ port, host, apiToken: token });
156
+ await server.start();
157
+ console.log('Press Ctrl+C to stop');
158
+ process.on('SIGINT', async () => {
159
+ console.log('\nShutting down...');
160
+ await server.stop();
161
+ process.exit(0);
162
+ });
163
+ }
164
+ catch (err) {
165
+ fatal(`Failed to start server: ${err.message}`);
166
+ }
167
+ break;
168
+ }
169
+ case 'memory': {
170
+ const context = aos.injectContext();
171
+ console.log(context || '(no memory context yet)');
172
+ break;
173
+ }
174
+ default:
175
+ fatal(`Unknown command: ${cmd}. Run 'sentinel-agentos help' for usage.`);
176
+ }
177
+ }
178
+ main().catch((err) => {
179
+ console.error('❌', err.message);
180
+ process.exit(1);
181
+ });
182
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}