sentinel-agentos 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -261,10 +261,12 @@ Total: 156 | Failures: 2 | High-Risk: 3
261
261
  ## 📦 安装 · Installation
262
262
 
263
263
  ```bash
264
- npm install @Sentinel AgentOS/core
264
+ npm install sentinel-agentos
265
265
  ```
266
266
 
267
- ⚠️ **npm 包尚未发布 · *not yet published***,当前从源码使用 · *use from source:*
267
+ 即可使用所有功能。
268
+
269
+ 如果从源码开发:
268
270
 
269
271
  ```bash
270
272
  git clone git@github.com:jishuanjimingtian/Sentinel AgentOS.git
@@ -278,7 +280,52 @@ npm run build # 编译到 dist/
278
280
 
279
281
  ## 🚀 使用说明 · Usage
280
282
 
281
- ### 基础用法 · Basic
283
+ ### 三种接入方式 · Three Integration Modes
284
+
285
+ Sentinel AgentOS 支持三种接入方式,从轻到重按需选择。
286
+
287
+ | 方式 | 适用场景 | 代码量 | 说明 |
288
+ |------|---------|--------|------|
289
+ | **CLI** | 快速测试 / CI/CD | 1 行命令 | 直接命令行检验工具调用 |
290
+ | **SDK** | 嵌入 Agent 框架 | 5 行代码 | `import { AgentOS }` 在进程内调用 |
291
+ | **HTTP API** | 跨语言 / 远程服务 | HTTP 请求 | 独立 HTTP 服务,任何语言都能调 |
292
+
293
+ ---
294
+
295
+ ### 方式一:CLI(命令行)
296
+
297
+ ```bash
298
+ # 安装
299
+ npm install -g sentinel-agentos
300
+
301
+ # 校验参数
302
+ sentinel-agentos validate exec command="rm -rf /"
303
+ sentinel-agentos validate write_file path=src/main.ts content="console.log(1)"
304
+
305
+ # 风险评分
306
+ sentinel-agentos risk exec command="sudo reboot"
307
+ sentinel-agentos risk exec command="npm test"
308
+
309
+ # 查看审计日志
310
+ sentinel-agentos audit --limit 10
311
+
312
+ # 查看状态报告
313
+ sentinel-agentos status
314
+
315
+ # 启动 HTTP 服务
316
+ sentinel-agentos server --port 3300 --token ***
317
+
318
+ # 查看帮助
319
+ sentinel-agentos help
320
+ ```
321
+
322
+ **支持的命令**:`validate` / `risk` / `audit` / `stats` / `profile` / `status` / `server` / `memory` / `help`
323
+
324
+ ---
325
+
326
+ ### 方式二:SDK(代码嵌入)
327
+
328
+ #### 2.1 基础用法 · Basic
282
329
 
283
330
  ```typescript
284
331
  import { AgentOS } from 'sentinel-agentos';
@@ -400,6 +447,163 @@ sandbox.validate('rm', { path: 'src/main.ts' });
400
447
  await sandbox.execute('exec', { command: 'npm test', cwd: process.cwd() });
401
448
  ```
402
449
 
450
+ #### 2.2 中间件(一行接入) · Middleware (one-liner)
451
+
452
+ ```typescript
453
+ import { wrapAgent } from 'sentinel-agentos';
454
+
455
+ // 一行接入——包裹你的 Agent 工具调用
456
+ const sentinel = wrapAgent({ workspaceRoot: process.cwd() });
457
+
458
+ // 每次工具调用前后调用即可
459
+ const { allowed, reason } = sentinel.preCheck('exec', { command: 'rm -rf /' });
460
+ // → { allowed: false, reason: 'Risk 9.18 → DENY' }
461
+ ```
462
+
463
+ #### 2.3 OpenClaw 插件
464
+
465
+ 如果你在用 OpenClaw Agent 框架,直接以插件形式集成:
466
+
467
+ ```typescript
468
+ import { sentinelPlugin } from 'sentinel-agentos';
469
+
470
+ // 注册为 OpenClaw 插件,自动 hook 所有工具调用
471
+ const plugin = sentinelPlugin({
472
+ workspaceRoot: process.cwd(),
473
+ preRegisteredRules: true,
474
+ });
475
+ // → onBeforeTool → 校验 + 风险评分
476
+ // → onAfterTool → 验证 + 审计
477
+ ```
478
+
479
+ ---
480
+
481
+ ### 方式三:HTTP API(远程调用,跨语言通用)
482
+
483
+ Sentinel AgentOS 可启动为独立 HTTP 服务,任何语言(Python/Go/Rust/Java...)都能调用。
484
+
485
+ #### 3.1 启动服务
486
+
487
+ ```bash
488
+ # CLI 一行启动
489
+ npx sentinel-agentos server --port 3300 --token ***
490
+
491
+ # 或代码中启动
492
+ import { createServer } from 'sentinel-agentos';
493
+ createServer({ port: 3300, apiToken: '***' }).start();
494
+ ```
495
+
496
+ 启动后健康检查(免 token):
497
+ ```bash
498
+ curl http://localhost:3300/health
499
+ # → {"ok":true,"uptime":12.3}
500
+ ```
501
+
502
+ #### 3.2 鉴权
503
+
504
+ 除 `/health` 外所有端点需要 `Authorization: Bearer <token>` header。否则返回 `401`。
505
+
506
+ #### 3.3 API 端点参考 · API Reference
507
+
508
+ **基础端点:**
509
+
510
+ | 端点 | 方法 | 鉴权 | 说明 |
511
+ |------|:--:|:--:|------|
512
+ | `/health` | GET | ❌ | 服务健康检查 |
513
+ | `/pipeline/pre` | POST | ✅ | 执行前校验(Schema + Risk + Snapshot) |
514
+ | `/pipeline/post` | POST | ✅ | 执行后验证(Verify + Audit + Feedback) |
515
+ | `/pipeline/report` | GET | ✅ | 质量状态报告(文本) |
516
+ | `/pipeline/profile` | GET | ✅ | 质量画像(JSON) |
517
+
518
+ **Guard / Memory / Feedback / Audit 端点:**
519
+
520
+ | 端点 | 方法 | 说明 |
521
+ |------|:--:|------|
522
+ | `/guard/schema` | POST | 注册 Schema 校验规则 |
523
+ | `/memory/preference` | POST | 设置用户偏好 `{"key":"language","value":"zh-CN"}` |
524
+ | `/memory/fact` | POST | 添加事实 `{"fact":"用户在上海"}` |
525
+ | `/memory/context` | GET | 获取当前记忆上下文 |
526
+ | `/feedback` | POST | 记录隐性反馈 `{"signal":"user_explicit_approval"}` |
527
+ | `/audit` | GET | 查询审计日志(支持 `?limit=&sessionId=&toolName=&status=`) |
528
+
529
+ **反馈信号类型:**
530
+
531
+ | 信号 | 强度 | 说明 |
532
+ |------|------|------|
533
+ | `user_explicit_approval` | +0.6 | 用户明确说"做得好" |
534
+ | `user_immediate_continue` | +0.3 | 用户立即继续对话 |
535
+ | `user_used_result` | +0.7 | 用户使用了 Agent 的结果 |
536
+ | `user_shared_output` | +0.8 | 用户分享了 Agent 输出 |
537
+ | `user_modified_output` | -0.5 | 用户修改了 Agent 输出 |
538
+ | `user_deleted_code` | -0.8 | 用户删除了 Agent 创建的代码 |
539
+ | `user_interrupted` | -0.6 | 用户打断了 Agent |
540
+ | `user_repeated_instruction` | -0.3 | 用户重复了相同指令 |
541
+
542
+ #### 3.4 完整调用示例
543
+
544
+ ```bash
545
+ # 1. Pre-exec — 校验 + 风险评分
546
+ curl -s -H "Authorization: Bearer $TOKEN" \
547
+ -X POST http://localhost:3300/pipeline/pre \
548
+ -H 'Content-Type: application/json' \
549
+ -d '{"toolName":"exec","parameters":{"command":"npm test"}}'
550
+ # → {"preExec":{"schemaCheck":{"pass":true},"riskScore":{"score":0.19,"action":"auto"}},"snapshot":{...}}
551
+
552
+ # 2. Post-exec — 验证 + 审计
553
+ # (传入 pre 返回的 snapshot)
554
+ curl -s -H "Authorization: Bearer $TOKEN" \
555
+ -X POST http://localhost:3300/pipeline/post \
556
+ -H 'Content-Type: application/json' \
557
+ -d '{"toolName":"exec","toolParameters":{"command":"npm test"},"toolResult":"all passed","snapshot":{...},"startTime":1718123456000,"endTime":1718123457000,"retryCount":0,"wasSelfCorrected":false,"hadTimeout":false,"userAccepted":true,"userProvidedEdit":false,"resultWasUsed":true}'
558
+
559
+ # 3. 查看报告
560
+ curl -s -H "Authorization: Bearer $TOKEN" http://localhost:3300/pipeline/report
561
+
562
+ # 4. 查询审计
563
+ curl -s -H "Authorization: Bearer $TOKEN" "http://localhost:3300/audit?limit=10&toolName=exec"
564
+
565
+ # 5. 记录反馈
566
+ curl -s -H "Authorization: Bearer $TOKEN" \
567
+ -X POST http://localhost:3300/feedback \
568
+ -H 'Content-Type: application/json' \
569
+ -d '{"signal":"user_immediate_continue","sessionId":"session_1"}'
570
+ ```
571
+
572
+ #### 3.5 跨语言(Python 示例)
573
+
574
+ ```python
575
+ import requests
576
+
577
+ BASE = "http://localhost:3300"
578
+ HEADERS = {"Authorization": "Bearer ***"}
579
+
580
+ # Pre-exec
581
+ resp = requests.post(f"{BASE}/pipeline/pre", json={
582
+ "toolName": "exec", "parameters": {"command": "npm test"}
583
+ }, headers=HEADERS)
584
+ data = resp.json()
585
+ print(f"Risk: {data['preExec']['riskScore']['score']} → {data['preExec']['riskScore']['action']}")
586
+
587
+ # Post-exec (pass snapshot from pre)
588
+ snapshot = data["snapshot"]
589
+ resp2 = requests.post(f"{BASE}/pipeline/post", json={
590
+ "toolName": "exec",
591
+ "toolParameters": {"command": "npm test"},
592
+ "toolResult": "all passed",
593
+ "snapshot": snapshot,
594
+ "startTime": 1718123456000, "endTime": 1718123457000,
595
+ "retryCount": 0, "wasSelfCorrected": False,
596
+ "hadTimeout": False, "userAccepted": True,
597
+ "userProvidedEdit": False, "resultWasUsed": True
598
+ }, headers=HEADERS)
599
+ print(f"Verify: {resp2.json()['postExec']['verifyPassed']}")
600
+
601
+ # Report
602
+ print(requests.get(f"{BASE}/pipeline/report", headers=HEADERS).text)
603
+ ```
604
+
605
+ ---
606
+
403
607
  ### API 层 · SDK API
404
608
 
405
609
  ```typescript
@@ -562,10 +766,10 @@ v1.0 已完成 100% 设计文档覆盖率、99 个测试全通过、TypeScript
562
766
  </details>
563
767
 
564
768
  <details>
565
- <summary><b>Q: npm 包什么时候发布? · When npm publish?</b></summary>
769
+ <summary><b>Q: npm 包已经发布了吗? · Is npm package published?</b></summary>
566
770
 
567
- TODO。当前可以直接 `git clone` + `npm link` 使用。
568
- *Currently use via `git clone` + `npm link`.*
771
+ 已发布。`npm install sentinel-agentos` 即可使用。当前版本 v0.1.x。
772
+ *Published. Just `npm install sentinel-agentos`. Current version v0.1.x.*
569
773
  </details>
570
774
 
571
775
  <details>
@@ -600,7 +804,7 @@ const entries = api.auditQuery({ minScore: 3.0 }); // 高风险操作 · High-ri
600
804
  | v0.3 | Memory 层(3 层)· *Memory layer (3 layers)* | ✅ |
601
805
  | v0.4 | Evaluator 层(评估 + 反馈 + 画像)· *Evaluator* | ✅ |
602
806
  | v1.0 | 沙箱 + API + x- 扩展 + 校验补齐 · *Sandbox + API + x-ext* | ✅ |
603
- | v1.1 | npm 发布 · *npm publish* | 📋 |
807
+ | v1.1 | npm 发布 + 三种接入方式 · *npm publish + 3 modes* | |
604
808
  | v2.0 | Docker 沙箱、Dashboard、SaaS · *Docker sandbox, Dashboard, SaaS* | 📋 |
605
809
 
606
810
  ---
package/dist/cli.d.ts CHANGED
@@ -5,7 +5,9 @@
5
5
  * Command-line interface for Sentinel AgentOS operations.
6
6
  *
7
7
  * Quick start:
8
- * npx sentinel-agentos validate --tool write_file --params '{"path":"foo.ts"}'
8
+ * npx sentinel-agentos validate exec "command=rm -rf /"
9
+ * npx sentinel-agentos validate write_file path=demo.ts content=hello
10
+ * npx sentinel-agentos risk exec command="npm test"
9
11
  * npx sentinel-agentos audit --limit 10
10
12
  * npx sentinel-agentos status
11
13
  * npx sentinel-agentos server --port 3300
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
package/dist/cli.js CHANGED
@@ -6,7 +6,9 @@
6
6
  * Command-line interface for Sentinel AgentOS operations.
7
7
  *
8
8
  * Quick start:
9
- * npx sentinel-agentos validate --tool write_file --params '{"path":"foo.ts"}'
9
+ * npx sentinel-agentos validate exec "command=rm -rf /"
10
+ * npx sentinel-agentos validate write_file path=demo.ts content=hello
11
+ * npx sentinel-agentos risk exec command="npm test"
10
12
  * npx sentinel-agentos audit --limit 10
11
13
  * npx sentinel-agentos status
12
14
  * npx sentinel-agentos server --port 3300
@@ -51,82 +53,143 @@ function printHelp() {
51
53
  🛡️ Sentinel AgentOS CLI
52
54
 
53
55
  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
56
+ sentinel-agentos validate <tool> [key=value...]
57
+ sentinel-agentos risk <tool> [key=value...]
58
+ sentinel-agentos audit [--limit N]
59
+ sentinel-agentos stats
60
+ sentinel-agentos profile
61
+ sentinel-agentos status
62
+ sentinel-agentos server [--port N] [--token ***
63
+ sentinel-agentos memory
64
+ sentinel-agentos help
66
65
 
67
66
  Examples:
68
- sentinel-agentos validate --tool exec --params '{"command":"rm -rf /"}'
69
- sentinel-agentos risk --tool delete_file --params '{"path":"config.key"}'
67
+ sentinel-agentos validate exec command="rm -rf /"
68
+ sentinel-agentos validate write_file path=src/main.ts content="console.log(1)"
69
+ sentinel-agentos risk exec command="sudo reboot"
70
70
  sentinel-agentos audit --limit 10
71
71
  sentinel-agentos status
72
- sentinel-agentos server --port 3300
72
+ sentinel-agentos server --port 3300 --token ***
73
73
  `);
74
74
  }
75
75
  function fatal(msg) {
76
76
  console.error(`❌ ${msg}`);
77
77
  process.exit(1);
78
78
  }
79
- function parseArgs(args) {
79
+ /**
80
+ * Parse positional key=value pairs into a params object.
81
+ * Supports: key=value, key="value with spaces", key='value'
82
+ */
83
+ function parseParams(args) {
84
+ const params = {};
85
+ for (const arg of args) {
86
+ const eqIdx = arg.indexOf('=');
87
+ if (eqIdx === -1)
88
+ continue;
89
+ const key = arg.slice(0, eqIdx);
90
+ let val = arg.slice(eqIdx + 1);
91
+ // Strip quotes if present
92
+ if ((val.startsWith('"') && val.endsWith('"')) ||
93
+ (val.startsWith("'") && val.endsWith("'"))) {
94
+ val = val.slice(1, -1);
95
+ }
96
+ // Auto-detect type
97
+ if (val === 'true')
98
+ params[key] = true;
99
+ else if (val === 'false')
100
+ params[key] = false;
101
+ else if (val === 'null')
102
+ params[key] = null;
103
+ else if (/^\d+$/.test(val))
104
+ params[key] = parseInt(val, 10);
105
+ else if (/^\d+\.\d+$/.test(val))
106
+ params[key] = parseFloat(val);
107
+ else
108
+ params[key] = val;
109
+ }
110
+ return params;
111
+ }
112
+ /**
113
+ * Parse --flag value options from args.
114
+ * Skips positional key=value items.
115
+ */
116
+ function parseFlags(args) {
80
117
  const result = {};
81
118
  for (let i = 0; i < args.length; i++) {
82
119
  const arg = args[i];
83
120
  if (arg && arg.startsWith('--')) {
84
121
  const key = arg.replace(/^--/, '');
85
122
  const next = args[i + 1];
86
- const val = (next !== undefined && !next.startsWith('--')) ? next : 'true';
87
- result[key] = val;
88
- if (val !== 'true')
123
+ // Don't consume if next is a flag or key=value
124
+ if (next && !next.startsWith('--') && !next.includes('=')) {
125
+ result[key] = next;
89
126
  i++;
127
+ }
128
+ else {
129
+ result[key] = 'true';
130
+ }
90
131
  }
91
132
  }
92
133
  return result;
93
134
  }
94
135
  async function main() {
95
- const args = process.argv.slice(2);
96
- const cmd = args[0] ?? '';
97
- const opts = parseArgs(args.slice(1));
136
+ const rawArgs = process.argv.slice(2);
137
+ const cmd = rawArgs[0] ?? '';
98
138
  if (!cmd || cmd === 'help') {
99
139
  printHelp();
100
140
  return;
101
141
  }
102
142
  const aos = new core_1.AgentOS();
103
143
  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
- }
144
+ case 'validate':
116
145
  case 'risk': {
117
- const tool = opts.tool ?? fatal('--tool required');
118
- const params = opts.params ? JSON.parse(opts.params) : {};
146
+ // New syntax: sentinel-agentos validate <tool> [key=value...]
147
+ // Old syntax still works: --tool <tool> --params '<json>'
148
+ const flags = parseFlags(rawArgs.slice(1));
149
+ let tool;
150
+ let params;
151
+ // New positional syntax
152
+ const positional = rawArgs.slice(1).filter(a => !a.startsWith('--'));
153
+ const firstPos = positional[0];
154
+ const isNewSyntax = positional.length > 0 && firstPos !== undefined && !firstPos.includes('=');
155
+ if (isNewSyntax && positional[0]) {
156
+ tool = positional[0];
157
+ params = parseParams(positional.slice(1));
158
+ }
159
+ else if (isNewSyntax) {
160
+ fatal(`Usage: sentinel-agentos ${cmd} <tool> [key=value...]`);
161
+ }
162
+ else {
163
+ // Old --tool + --params syntax
164
+ const toolFlag = flags.tool ?? rawArgs[1];
165
+ tool = toolFlag ?? '';
166
+ if (!tool)
167
+ fatal(`Usage: sentinel-agentos ${cmd} <tool> [key=value...]`);
168
+ const paramsJson = flags.params ?? '{}';
169
+ try {
170
+ params = JSON.parse(paramsJson);
171
+ }
172
+ catch {
173
+ params = parseParams(rawArgs.slice(2));
174
+ }
175
+ }
119
176
  const result = aos.executePipeline({
120
177
  sessionId: 'cli',
121
178
  agentId: 'cli',
122
179
  toolName: tool,
123
180
  parameters: params,
124
181
  });
125
- console.log(JSON.stringify(result.preExec.riskScore, null, 2));
182
+ if (cmd === 'validate') {
183
+ console.log(JSON.stringify(result.preExec.schemaCheck, null, 2));
184
+ }
185
+ else {
186
+ console.log(JSON.stringify(result.preExec.riskScore, null, 2));
187
+ }
126
188
  break;
127
189
  }
128
190
  case 'audit': {
129
- const limit = parseInt(opts.limit ?? '20', 10);
191
+ const flags = parseFlags(rawArgs.slice(1));
192
+ const limit = parseInt(flags.limit ?? '20', 10);
130
193
  const entries = aos.guard.audit.query({ limit });
131
194
  console.log(JSON.stringify(entries, null, 2));
132
195
  break;
@@ -146,10 +209,10 @@ async function main() {
146
209
  break;
147
210
  }
148
211
  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
212
+ const flags = parseFlags(rawArgs.slice(1));
213
+ const port = parseInt(flags.port ?? '3300', 10);
214
+ const host = flags.host ?? '127.0.0.1';
215
+ const token = flags.token;
153
216
  try {
154
217
  const { createServer } = await Promise.resolve().then(() => __importStar(require('./server')));
155
218
  const server = createServer({ port, host, apiToken: token });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sentinel-agentos",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Sentinel AgentOS — 确定性 Guard 层 + 分层记忆 + 自动评估,让任何 Agent 变得可靠、可审计、可改进",
5
5
  "keywords": [
6
6
  "agent",