@dommaker/harness 0.8.1 → 0.9.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 (339) hide show
  1. package/README.md +126 -183
  2. package/bin/harness.js +29 -12
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +19 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/lifecycle.d.ts +68 -0
  8. package/dist/agents/lifecycle.d.ts.map +1 -0
  9. package/dist/agents/lifecycle.js +181 -0
  10. package/dist/agents/lifecycle.js.map +1 -0
  11. package/dist/agents/types.d.ts +42 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +6 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/architecture/cross-project-checker.d.ts +19 -1
  16. package/dist/architecture/cross-project-checker.d.ts.map +1 -1
  17. package/dist/architecture/cross-project-checker.js +72 -60
  18. package/dist/architecture/cross-project-checker.js.map +1 -1
  19. package/dist/cli/commands/acceptance.d.ts.map +1 -1
  20. package/dist/cli/commands/acceptance.js +1 -0
  21. package/dist/cli/commands/acceptance.js.map +1 -1
  22. package/dist/cli/commands/check.d.ts.map +1 -1
  23. package/dist/cli/commands/check.js +2 -4
  24. package/dist/cli/commands/check.js.map +1 -1
  25. package/dist/cli/commands/command.d.ts +19 -0
  26. package/dist/cli/commands/command.d.ts.map +1 -0
  27. package/dist/cli/commands/command.js +81 -0
  28. package/dist/cli/commands/command.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +1 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -1
  31. package/dist/cli/commands/index.js +3 -1
  32. package/dist/cli/commands/index.js.map +1 -1
  33. package/dist/cli/commands/passes-gate.d.ts.map +1 -1
  34. package/dist/cli/commands/passes-gate.js +2 -4
  35. package/dist/cli/commands/passes-gate.js.map +1 -1
  36. package/dist/cli/commands/review.d.ts.map +1 -1
  37. package/dist/cli/commands/review.js +27 -63
  38. package/dist/cli/commands/review.js.map +1 -1
  39. package/dist/cli/commands/security.d.ts +1 -1
  40. package/dist/cli/commands/security.d.ts.map +1 -1
  41. package/dist/cli/commands/security.js +40 -94
  42. package/dist/cli/commands/security.js.map +1 -1
  43. package/dist/cli/commands/status.d.ts.map +1 -1
  44. package/dist/cli/commands/status.js +2 -2
  45. package/dist/cli/commands/status.js.map +1 -1
  46. package/dist/constraints/definitions.d.ts +39 -0
  47. package/dist/constraints/definitions.d.ts.map +1 -0
  48. package/dist/constraints/definitions.js +71 -0
  49. package/dist/constraints/definitions.js.map +1 -0
  50. package/dist/constraints/index.d.ts +5 -0
  51. package/dist/constraints/index.d.ts.map +1 -0
  52. package/dist/constraints/index.js +21 -0
  53. package/dist/constraints/index.js.map +1 -0
  54. package/dist/constraints/quality.d.ts +11 -0
  55. package/dist/constraints/quality.d.ts.map +1 -0
  56. package/dist/constraints/quality.js +257 -0
  57. package/dist/constraints/quality.js.map +1 -0
  58. package/dist/constraints/registry.d.ts +64 -0
  59. package/dist/constraints/registry.d.ts.map +1 -0
  60. package/dist/constraints/registry.js +167 -0
  61. package/dist/constraints/registry.js.map +1 -0
  62. package/dist/constraints/safety.d.ts +13 -0
  63. package/dist/constraints/safety.d.ts.map +1 -0
  64. package/dist/constraints/safety.js +103 -0
  65. package/dist/constraints/safety.js.map +1 -0
  66. package/dist/constraints/types.d.ts +53 -0
  67. package/dist/constraints/types.d.ts.map +1 -0
  68. package/dist/constraints/types.js +8 -0
  69. package/dist/constraints/types.js.map +1 -0
  70. package/dist/context/compaction.d.ts +57 -0
  71. package/dist/context/compaction.d.ts.map +1 -0
  72. package/dist/context/compaction.js +166 -0
  73. package/dist/context/compaction.js.map +1 -0
  74. package/dist/context/file-budget.d.ts +40 -0
  75. package/dist/context/file-budget.d.ts.map +1 -0
  76. package/dist/context/file-budget.js +147 -0
  77. package/dist/context/file-budget.js.map +1 -0
  78. package/dist/context/index.d.ts +15 -0
  79. package/dist/context/index.d.ts.map +1 -0
  80. package/dist/context/index.js +31 -0
  81. package/dist/context/index.js.map +1 -0
  82. package/dist/context/knowledge-injector.d.ts +49 -0
  83. package/dist/context/knowledge-injector.d.ts.map +1 -0
  84. package/dist/context/knowledge-injector.js +122 -0
  85. package/dist/context/knowledge-injector.js.map +1 -0
  86. package/dist/context/progressive-loader.d.ts +0 -1
  87. package/dist/context/progressive-loader.d.ts.map +1 -1
  88. package/dist/context/progressive-loader.js +15 -32
  89. package/dist/context/progressive-loader.js.map +1 -1
  90. package/dist/context/session-manager.d.ts +67 -0
  91. package/dist/context/session-manager.d.ts.map +1 -0
  92. package/dist/context/session-manager.js +275 -0
  93. package/dist/context/session-manager.js.map +1 -0
  94. package/dist/context/token-pipeline.d.ts +55 -0
  95. package/dist/context/token-pipeline.d.ts.map +1 -0
  96. package/dist/context/token-pipeline.js +220 -0
  97. package/dist/context/token-pipeline.js.map +1 -0
  98. package/dist/context/tool-output-budget.d.ts +59 -0
  99. package/dist/context/tool-output-budget.d.ts.map +1 -0
  100. package/dist/context/tool-output-budget.js +177 -0
  101. package/dist/context/tool-output-budget.js.map +1 -0
  102. package/dist/context/types.d.ts +113 -0
  103. package/dist/context/types.d.ts.map +1 -0
  104. package/dist/context/types.js +30 -0
  105. package/dist/context/types.js.map +1 -0
  106. package/dist/core/constraints/checker.d.ts +9 -1
  107. package/dist/core/constraints/checker.d.ts.map +1 -1
  108. package/dist/core/constraints/checker.js +72 -155
  109. package/dist/core/constraints/checker.js.map +1 -1
  110. package/dist/core/constraints/definitions.d.ts.map +1 -1
  111. package/dist/core/constraints/definitions.js +8 -10
  112. package/dist/core/constraints/definitions.js.map +1 -1
  113. package/dist/core/constraints/interceptor.d.ts.map +1 -1
  114. package/dist/core/constraints/interceptor.js +2 -6
  115. package/dist/core/constraints/interceptor.js.map +1 -1
  116. package/dist/core/project-config-loader.d.ts.map +1 -1
  117. package/dist/core/project-config-loader.js +12 -30
  118. package/dist/core/project-config-loader.js.map +1 -1
  119. package/dist/core/session/clean-state.d.ts.map +1 -1
  120. package/dist/core/session/clean-state.js +6 -8
  121. package/dist/core/session/clean-state.js.map +1 -1
  122. package/dist/core/session/startup.d.ts.map +1 -1
  123. package/dist/core/session/startup.js +3 -5
  124. package/dist/core/session/startup.js.map +1 -1
  125. package/dist/core/spec/validator.d.ts.map +1 -1
  126. package/dist/core/spec/validator.js +2 -4
  127. package/dist/core/spec/validator.js.map +1 -1
  128. package/dist/core/validators/checkpoint.d.ts.map +1 -1
  129. package/dist/core/validators/checkpoint.js +3 -5
  130. package/dist/core/validators/checkpoint.js.map +1 -1
  131. package/dist/core/validators/passes-gate.d.ts +0 -4
  132. package/dist/core/validators/passes-gate.d.ts.map +1 -1
  133. package/dist/core/validators/passes-gate.js +5 -13
  134. package/dist/core/validators/passes-gate.js.map +1 -1
  135. package/dist/dashboard/data.d.ts +39 -0
  136. package/dist/dashboard/data.d.ts.map +1 -0
  137. package/dist/dashboard/data.js +89 -0
  138. package/dist/dashboard/data.js.map +1 -0
  139. package/dist/dashboard/index.d.ts +4 -0
  140. package/dist/dashboard/index.d.ts.map +1 -0
  141. package/dist/dashboard/index.js +20 -0
  142. package/dist/dashboard/index.js.map +1 -0
  143. package/dist/dashboard/stats.d.ts +20 -0
  144. package/dist/dashboard/stats.d.ts.map +1 -0
  145. package/dist/dashboard/stats.js +115 -0
  146. package/dist/dashboard/stats.js.map +1 -0
  147. package/dist/dashboard/types.d.ts +98 -0
  148. package/dist/dashboard/types.d.ts.map +1 -0
  149. package/dist/dashboard/types.js +8 -0
  150. package/dist/dashboard/types.js.map +1 -0
  151. package/dist/failure/recorder.d.ts +4 -0
  152. package/dist/failure/recorder.d.ts.map +1 -1
  153. package/dist/failure/recorder.js +9 -11
  154. package/dist/failure/recorder.js.map +1 -1
  155. package/dist/gates/acceptance.d.ts.map +1 -1
  156. package/dist/gates/acceptance.js +2 -4
  157. package/dist/gates/acceptance.js.map +1 -1
  158. package/dist/gates/contract.d.ts.map +1 -1
  159. package/dist/gates/contract.js +0 -3
  160. package/dist/gates/contract.js.map +1 -1
  161. package/dist/gates/performance.d.ts.map +1 -1
  162. package/dist/gates/performance.js +3 -5
  163. package/dist/gates/performance.js.map +1 -1
  164. package/dist/gates/review.d.ts.map +1 -1
  165. package/dist/gates/review.js +4 -6
  166. package/dist/gates/review.js.map +1 -1
  167. package/dist/gates/security.d.ts.map +1 -1
  168. package/dist/gates/security.js +2 -4
  169. package/dist/gates/security.js.map +1 -1
  170. package/dist/index.d.ts +9 -2
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +34 -3
  173. package/dist/index.js.map +1 -1
  174. package/dist/knowledge/import.d.ts +95 -0
  175. package/dist/knowledge/import.d.ts.map +1 -0
  176. package/dist/knowledge/import.js +429 -0
  177. package/dist/knowledge/import.js.map +1 -0
  178. package/dist/knowledge/index.d.ts +15 -0
  179. package/dist/knowledge/index.d.ts.map +1 -0
  180. package/dist/knowledge/index.js +40 -0
  181. package/dist/knowledge/index.js.map +1 -0
  182. package/dist/knowledge/ingest.d.ts +30 -0
  183. package/dist/knowledge/ingest.d.ts.map +1 -0
  184. package/dist/knowledge/ingest.js +94 -0
  185. package/dist/knowledge/ingest.js.map +1 -0
  186. package/dist/knowledge/lifecycle-hooks.d.ts +62 -0
  187. package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -0
  188. package/dist/knowledge/lifecycle-hooks.js +140 -0
  189. package/dist/knowledge/lifecycle-hooks.js.map +1 -0
  190. package/dist/knowledge/lifecycle.d.ts +43 -0
  191. package/dist/knowledge/lifecycle.d.ts.map +1 -0
  192. package/dist/knowledge/lifecycle.js +141 -0
  193. package/dist/knowledge/lifecycle.js.map +1 -0
  194. package/dist/knowledge/lint.d.ts +57 -0
  195. package/dist/knowledge/lint.d.ts.map +1 -0
  196. package/dist/knowledge/lint.js +235 -0
  197. package/dist/knowledge/lint.js.map +1 -0
  198. package/dist/knowledge/query.d.ts +33 -0
  199. package/dist/knowledge/query.d.ts.map +1 -0
  200. package/dist/knowledge/query.js +107 -0
  201. package/dist/knowledge/query.js.map +1 -0
  202. package/dist/knowledge/reference-tracker.d.ts +31 -0
  203. package/dist/knowledge/reference-tracker.d.ts.map +1 -0
  204. package/dist/knowledge/reference-tracker.js +124 -0
  205. package/dist/knowledge/reference-tracker.js.map +1 -0
  206. package/dist/knowledge/store.d.ts +42 -0
  207. package/dist/knowledge/store.d.ts.map +1 -0
  208. package/dist/knowledge/store.js +278 -0
  209. package/dist/knowledge/store.js.map +1 -0
  210. package/dist/knowledge/types.d.ts +103 -0
  211. package/dist/knowledge/types.d.ts.map +1 -0
  212. package/dist/knowledge/types.js +17 -0
  213. package/dist/knowledge/types.js.map +1 -0
  214. package/dist/llm/adapter.d.ts +36 -0
  215. package/dist/llm/adapter.d.ts.map +1 -0
  216. package/dist/llm/adapter.js +118 -0
  217. package/dist/llm/adapter.js.map +1 -0
  218. package/dist/llm/index.d.ts +3 -0
  219. package/dist/llm/index.d.ts.map +1 -0
  220. package/dist/llm/index.js +19 -0
  221. package/dist/llm/index.js.map +1 -0
  222. package/dist/llm/types.d.ts +62 -0
  223. package/dist/llm/types.d.ts.map +1 -0
  224. package/dist/llm/types.js +8 -0
  225. package/dist/llm/types.js.map +1 -0
  226. package/dist/monitoring/context-tracker.d.ts +38 -0
  227. package/dist/monitoring/context-tracker.d.ts.map +1 -0
  228. package/dist/monitoring/context-tracker.js +162 -0
  229. package/dist/monitoring/context-tracker.js.map +1 -0
  230. package/dist/monitoring/index.d.ts +3 -0
  231. package/dist/monitoring/index.d.ts.map +1 -1
  232. package/dist/monitoring/index.js +6 -0
  233. package/dist/monitoring/index.js.map +1 -1
  234. package/dist/monitoring/knowledge-doctor.d.ts +78 -0
  235. package/dist/monitoring/knowledge-doctor.d.ts.map +1 -0
  236. package/dist/monitoring/knowledge-doctor.js +266 -0
  237. package/dist/monitoring/knowledge-doctor.js.map +1 -0
  238. package/dist/monitoring/knowledge-evolver.d.ts +72 -0
  239. package/dist/monitoring/knowledge-evolver.d.ts.map +1 -0
  240. package/dist/monitoring/knowledge-evolver.js +205 -0
  241. package/dist/monitoring/knowledge-evolver.js.map +1 -0
  242. package/dist/monitoring/performance-analyzer.d.ts.map +1 -1
  243. package/dist/monitoring/performance-analyzer.js +10 -4
  244. package/dist/monitoring/performance-analyzer.js.map +1 -1
  245. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  246. package/dist/monitoring/trace-analyzer.js +12 -5
  247. package/dist/monitoring/trace-analyzer.js.map +1 -1
  248. package/dist/safety/index.d.ts +6 -0
  249. package/dist/safety/index.d.ts.map +1 -0
  250. package/dist/safety/index.js +22 -0
  251. package/dist/safety/index.js.map +1 -0
  252. package/dist/safety/input-guardrail.d.ts +36 -0
  253. package/dist/safety/input-guardrail.d.ts.map +1 -0
  254. package/dist/safety/input-guardrail.js +118 -0
  255. package/dist/safety/input-guardrail.js.map +1 -0
  256. package/dist/safety/output-guardrail.d.ts +40 -0
  257. package/dist/safety/output-guardrail.d.ts.map +1 -0
  258. package/dist/safety/output-guardrail.js +150 -0
  259. package/dist/safety/output-guardrail.js.map +1 -0
  260. package/dist/safety/sandbox.d.ts +45 -0
  261. package/dist/safety/sandbox.d.ts.map +1 -0
  262. package/dist/safety/sandbox.js +134 -0
  263. package/dist/safety/sandbox.js.map +1 -0
  264. package/dist/safety/tool-guardrail.d.ts +51 -0
  265. package/dist/safety/tool-guardrail.d.ts.map +1 -0
  266. package/dist/safety/tool-guardrail.js +147 -0
  267. package/dist/safety/tool-guardrail.js.map +1 -0
  268. package/dist/safety/types.d.ts +104 -0
  269. package/dist/safety/types.d.ts.map +1 -0
  270. package/dist/safety/types.js +6 -0
  271. package/dist/safety/types.js.map +1 -0
  272. package/dist/tools/core/index.d.ts +13 -0
  273. package/dist/tools/core/index.d.ts.map +1 -0
  274. package/dist/tools/core/index.js +198 -0
  275. package/dist/tools/core/index.js.map +1 -0
  276. package/dist/tools/index.d.ts +4 -0
  277. package/dist/tools/index.d.ts.map +1 -0
  278. package/dist/tools/index.js +20 -0
  279. package/dist/tools/index.js.map +1 -0
  280. package/dist/tools/registry.d.ts +59 -0
  281. package/dist/tools/registry.d.ts.map +1 -0
  282. package/dist/tools/registry.js +115 -0
  283. package/dist/tools/registry.js.map +1 -0
  284. package/dist/tools/types.d.ts +38 -0
  285. package/dist/tools/types.d.ts.map +1 -0
  286. package/dist/tools/types.js +6 -0
  287. package/dist/tools/types.js.map +1 -0
  288. package/dist/types/constraint.d.ts +4 -0
  289. package/dist/types/constraint.d.ts.map +1 -1
  290. package/dist/types/constraint.js.map +1 -1
  291. package/dist/utils/exec.d.ts +11 -1
  292. package/dist/utils/exec.d.ts.map +1 -1
  293. package/dist/utils/exec.js +19 -1
  294. package/dist/utils/exec.js.map +1 -1
  295. package/dist/verification/index.d.ts +4 -0
  296. package/dist/verification/index.d.ts.map +1 -0
  297. package/dist/verification/index.js +20 -0
  298. package/dist/verification/index.js.map +1 -0
  299. package/dist/verification/loop.d.ts +30 -0
  300. package/dist/verification/loop.d.ts.map +1 -0
  301. package/dist/verification/loop.js +114 -0
  302. package/dist/verification/loop.js.map +1 -0
  303. package/dist/verification/rules-based.d.ts +40 -0
  304. package/dist/verification/rules-based.d.ts.map +1 -0
  305. package/dist/verification/rules-based.js +130 -0
  306. package/dist/verification/rules-based.js.map +1 -0
  307. package/dist/verification/types.d.ts +69 -0
  308. package/dist/verification/types.d.ts.map +1 -0
  309. package/dist/verification/types.js +6 -0
  310. package/dist/verification/types.js.map +1 -0
  311. package/package.json +1 -1
  312. package/dist/cli/commands/diagnose.d.ts +0 -16
  313. package/dist/cli/commands/diagnose.d.ts.map +0 -1
  314. package/dist/cli/commands/diagnose.js +0 -195
  315. package/dist/cli/commands/diagnose.js.map +0 -1
  316. package/dist/cli/commands/propose.d.ts +0 -18
  317. package/dist/cli/commands/propose.d.ts.map +0 -1
  318. package/dist/cli/commands/propose.js +0 -331
  319. package/dist/cli/commands/propose.js.map +0 -1
  320. package/dist/cli/commands/traces.d.ts +0 -15
  321. package/dist/cli/commands/traces.d.ts.map +0 -1
  322. package/dist/cli/commands/traces.js +0 -167
  323. package/dist/cli/commands/traces.js.map +0 -1
  324. package/dist/extensions/long-running/constraints.d.ts +0 -38
  325. package/dist/extensions/long-running/constraints.d.ts.map +0 -1
  326. package/dist/extensions/long-running/constraints.js +0 -153
  327. package/dist/extensions/long-running/constraints.js.map +0 -1
  328. package/dist/extensions/long-running/index.d.ts +0 -30
  329. package/dist/extensions/long-running/index.d.ts.map +0 -1
  330. package/dist/extensions/long-running/index.js +0 -50
  331. package/dist/extensions/long-running/index.js.map +0 -1
  332. package/dist/extensions/long-running/types.d.ts +0 -154
  333. package/dist/extensions/long-running/types.d.ts.map +0 -1
  334. package/dist/extensions/long-running/types.js +0 -9
  335. package/dist/extensions/long-running/types.js.map +0 -1
  336. package/dist/presets/long-running.d.ts +0 -33
  337. package/dist/presets/long-running.d.ts.map +0 -1
  338. package/dist/presets/long-running.js +0 -52
  339. package/dist/presets/long-running.js.map +0 -1
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Sandbox 安全级别管理
4
+ *
5
+ * 四级权限模型:
6
+ * Level 1: 只读文件系统,无网络,无 shell
7
+ * Level 2: 可写限定目录(.harness/),无网络
8
+ * Level 3: 可写项目目录,受限网络(白名单)
9
+ * Level 4: 完全权限,需用户确认
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Sandbox = void 0;
13
+ const LEVEL_DESCRIPTIONS = {
14
+ 1: '只读文件系统,无网络,无 shell',
15
+ 2: '可写限定目录(.harness/),无网络',
16
+ 3: '可写项目目录,受限网络(白名单)',
17
+ 4: '完全权限,需用户确认',
18
+ };
19
+ const DEFAULT_WRITABLE_DIRS = ['.harness/'];
20
+ class Sandbox {
21
+ config;
22
+ constructor(config) {
23
+ this.config = {
24
+ level: config?.level ?? 3,
25
+ writableDirs: config?.writableDirs ?? DEFAULT_WRITABLE_DIRS,
26
+ allowedHosts: config?.allowedHosts ?? [],
27
+ requiresConfirmation: config?.requiresConfirmation ?? (config?.level === 4),
28
+ };
29
+ }
30
+ getLevel() {
31
+ return this.config.level;
32
+ }
33
+ getDescription() {
34
+ return LEVEL_DESCRIPTIONS[this.config.level];
35
+ }
36
+ /**
37
+ * 检查当前级别是否满足操作所需级别
38
+ */
39
+ check(requiredLevel) {
40
+ const allowed = this.config.level >= requiredLevel;
41
+ return {
42
+ allowed,
43
+ reason: allowed ? undefined : `当前 Level ${this.config.level} 不满足操作所需的 Level ${requiredLevel}`,
44
+ currentLevel: this.config.level,
45
+ requiredLevel,
46
+ };
47
+ }
48
+ /**
49
+ * 检查文件写入是否允许
50
+ */
51
+ checkFileWrite(filePath) {
52
+ if (this.config.level >= 3) {
53
+ return { allowed: true, currentLevel: this.config.level, requiredLevel: 3 };
54
+ }
55
+ if (this.config.level >= 2) {
56
+ const inWritableDir = this.config.writableDirs?.some(dir => filePath.startsWith(dir));
57
+ if (inWritableDir) {
58
+ return { allowed: true, currentLevel: this.config.level, requiredLevel: 2 };
59
+ }
60
+ return {
61
+ allowed: false,
62
+ reason: `Level 2 只允许写入 ${this.config.writableDirs?.join(', ')}`,
63
+ currentLevel: this.config.level,
64
+ requiredLevel: 3,
65
+ };
66
+ }
67
+ return {
68
+ allowed: false,
69
+ reason: 'Level 1 禁止写入任何文件',
70
+ currentLevel: this.config.level,
71
+ requiredLevel: 2,
72
+ };
73
+ }
74
+ /**
75
+ * 检查网络访问是否允许
76
+ */
77
+ checkNetworkAccess(host) {
78
+ if (this.config.level >= 4) {
79
+ return { allowed: true, currentLevel: this.config.level, requiredLevel: 4 };
80
+ }
81
+ if (this.config.level >= 3) {
82
+ const allowed = this.config.allowedHosts?.includes(host) ?? false;
83
+ return {
84
+ allowed,
85
+ reason: allowed ? undefined : `Host ${host} 不在白名单中`,
86
+ currentLevel: this.config.level,
87
+ requiredLevel: 3,
88
+ };
89
+ }
90
+ return {
91
+ allowed: false,
92
+ reason: `Level ${this.config.level} 禁止网络访问`,
93
+ currentLevel: this.config.level,
94
+ requiredLevel: 3,
95
+ };
96
+ }
97
+ /**
98
+ * 检查 shell 命令是否允许
99
+ */
100
+ checkShellAccess() {
101
+ if (this.config.level >= 3) {
102
+ return { allowed: true, currentLevel: this.config.level, requiredLevel: 3 };
103
+ }
104
+ return {
105
+ allowed: false,
106
+ reason: `Level ${this.config.level} 禁止 shell 访问`,
107
+ currentLevel: this.config.level,
108
+ requiredLevel: 3,
109
+ };
110
+ }
111
+ /**
112
+ * 检查是否需要用户确认
113
+ */
114
+ needsConfirmation() {
115
+ return this.config.requiresConfirmation ?? false;
116
+ }
117
+ /**
118
+ * 升级到指定级别
119
+ */
120
+ upgradeTo(level) {
121
+ this.config.level = level;
122
+ if (level === 4) {
123
+ this.config.requiresConfirmation = true;
124
+ }
125
+ }
126
+ /**
127
+ * 获取当前配置
128
+ */
129
+ getConfig() {
130
+ return { ...this.config };
131
+ }
132
+ }
133
+ exports.Sandbox = Sandbox;
134
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/safety/sandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * 工具护栏
3
+ *
4
+ * 每次工具调用前检查:
5
+ * - 命令黑名单
6
+ * - Sandbox 级别检查
7
+ * - 速率限制
8
+ */
9
+ import type { ToolCheckResult, ToolGuardrailConfig, SandboxLevel } from './types';
10
+ import { Sandbox } from './sandbox';
11
+ export declare class ToolGuardrail {
12
+ private blacklistedCommands;
13
+ private rateLimit;
14
+ private toolSandboxLevels;
15
+ private rateLimitState;
16
+ private sandbox;
17
+ constructor(sandbox: Sandbox, config?: ToolGuardrailConfig);
18
+ /**
19
+ * 检查工具调用是否允许
20
+ */
21
+ check(toolName: string, command?: string): ToolCheckResult;
22
+ /**
23
+ * 检查命令黑名单
24
+ */
25
+ private checkBlacklist;
26
+ /**
27
+ * 检查 sandbox 级别
28
+ */
29
+ private checkSandboxLevel;
30
+ /**
31
+ * 检查速率限制
32
+ */
33
+ private checkRateLimit;
34
+ /**
35
+ * 添加黑名单命令
36
+ */
37
+ addBlacklistedCommand(command: string): void;
38
+ /**
39
+ * 设置工具 sandbox 级别要求
40
+ */
41
+ setToolSandboxLevel(toolName: string, level: SandboxLevel): void;
42
+ /**
43
+ * 重置速率限制状态
44
+ */
45
+ resetRateLimits(): void;
46
+ /**
47
+ * 获取 sandbox 实例
48
+ */
49
+ getSandbox(): Sandbox;
50
+ }
51
+ //# sourceMappingURL=tool-guardrail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-guardrail.d.ts","sourceRoot":"","sources":["../../src/safety/tool-guardrail.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EAEnB,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,qBAAa,aAAa;IACxB,OAAO,CAAC,mBAAmB,CAAW;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAQ1D;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe;IAoB1D;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAIhE;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,UAAU,IAAI,OAAO;CAGtB"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /**
3
+ * 工具护栏
4
+ *
5
+ * 每次工具调用前检查:
6
+ * - 命令黑名单
7
+ * - Sandbox 级别检查
8
+ * - 速率限制
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ToolGuardrail = void 0;
12
+ const DEFAULT_BLACKLISTED_COMMANDS = [
13
+ 'rm -rf /',
14
+ 'rm -rf /*',
15
+ 'mkfs',
16
+ 'dd if=',
17
+ ':(){:|:&};:', // fork bomb
18
+ 'chmod -R 777 /',
19
+ '| sh',
20
+ '| bash',
21
+ 'eval(',
22
+ 'exec(',
23
+ ];
24
+ const DEFAULT_RATE_LIMIT = 60; // per minute
25
+ class ToolGuardrail {
26
+ blacklistedCommands;
27
+ rateLimit;
28
+ toolSandboxLevels;
29
+ rateLimitState;
30
+ sandbox;
31
+ constructor(sandbox, config) {
32
+ this.sandbox = sandbox;
33
+ this.blacklistedCommands = config?.blacklistedCommands ?? DEFAULT_BLACKLISTED_COMMANDS;
34
+ this.rateLimit = config?.rateLimit ?? DEFAULT_RATE_LIMIT;
35
+ this.toolSandboxLevels = config?.toolSandboxLevels ?? {};
36
+ this.rateLimitState = new Map();
37
+ }
38
+ /**
39
+ * 检查工具调用是否允许
40
+ */
41
+ check(toolName, command) {
42
+ const violations = [];
43
+ // 命令黑名单检查
44
+ if (command) {
45
+ violations.push(...this.checkBlacklist(toolName, command));
46
+ }
47
+ // Sandbox 级别检查
48
+ violations.push(...this.checkSandboxLevel(toolName));
49
+ // 速率限制检查
50
+ violations.push(...this.checkRateLimit(toolName));
51
+ return {
52
+ allowed: violations.length === 0,
53
+ violations,
54
+ };
55
+ }
56
+ /**
57
+ * 检查命令黑名单
58
+ */
59
+ checkBlacklist(toolName, command) {
60
+ const violations = [];
61
+ const lower = command.toLowerCase();
62
+ for (const blocked of this.blacklistedCommands) {
63
+ if (lower.includes(blocked.toLowerCase())) {
64
+ violations.push({
65
+ type: 'blacklist',
66
+ severity: 'high',
67
+ description: `命令包含被阻止的模式: ${blocked}`,
68
+ toolName,
69
+ });
70
+ }
71
+ }
72
+ return violations;
73
+ }
74
+ /**
75
+ * 检查 sandbox 级别
76
+ */
77
+ checkSandboxLevel(toolName) {
78
+ const violations = [];
79
+ const requiredLevel = this.toolSandboxLevels[toolName];
80
+ if (requiredLevel !== undefined) {
81
+ const result = this.sandbox.check(requiredLevel);
82
+ if (!result.allowed) {
83
+ violations.push({
84
+ type: 'sandbox',
85
+ severity: 'high',
86
+ description: result.reason ?? `工具 ${toolName} 需要 Level ${requiredLevel}`,
87
+ toolName,
88
+ });
89
+ }
90
+ }
91
+ return violations;
92
+ }
93
+ /**
94
+ * 检查速率限制
95
+ */
96
+ checkRateLimit(toolName) {
97
+ const violations = [];
98
+ const now = Date.now();
99
+ const state = this.rateLimitState.get(toolName);
100
+ if (!state) {
101
+ this.rateLimitState.set(toolName, { count: 1, windowStart: now });
102
+ return violations;
103
+ }
104
+ // 重置窗口(1 分钟)
105
+ if (now - state.windowStart > 60000) {
106
+ state.count = 1;
107
+ state.windowStart = now;
108
+ return violations;
109
+ }
110
+ state.count++;
111
+ if (state.count > this.rateLimit) {
112
+ violations.push({
113
+ type: 'rate_limit',
114
+ severity: 'medium',
115
+ description: `工具 ${toolName} 超过速率限制 (${this.rateLimit}/min)`,
116
+ toolName,
117
+ });
118
+ }
119
+ return violations;
120
+ }
121
+ /**
122
+ * 添加黑名单命令
123
+ */
124
+ addBlacklistedCommand(command) {
125
+ this.blacklistedCommands.push(command);
126
+ }
127
+ /**
128
+ * 设置工具 sandbox 级别要求
129
+ */
130
+ setToolSandboxLevel(toolName, level) {
131
+ this.toolSandboxLevels[toolName] = level;
132
+ }
133
+ /**
134
+ * 重置速率限制状态
135
+ */
136
+ resetRateLimits() {
137
+ this.rateLimitState.clear();
138
+ }
139
+ /**
140
+ * 获取 sandbox 实例
141
+ */
142
+ getSandbox() {
143
+ return this.sandbox;
144
+ }
145
+ }
146
+ exports.ToolGuardrail = ToolGuardrail;
147
+ //# sourceMappingURL=tool-guardrail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-guardrail.js","sourceRoot":"","sources":["../../src/safety/tool-guardrail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Safety Guardrails 类型定义
3
+ */
4
+ /** Sandbox 安全级别 */
5
+ export type SandboxLevel = 1 | 2 | 3 | 4;
6
+ /** Sandbox 配置 */
7
+ export interface SandboxConfig {
8
+ level: SandboxLevel;
9
+ /** 允许写入的目录(Level 2+) */
10
+ writableDirs?: string[];
11
+ /** 允许的网络白名单(Level 3) */
12
+ allowedHosts?: string[];
13
+ /** 需要用户确认的操作(Level 4) */
14
+ requiresConfirmation?: boolean;
15
+ }
16
+ /** Sandbox 权限检查结果 */
17
+ export interface SandboxCheckResult {
18
+ allowed: boolean;
19
+ reason?: string;
20
+ currentLevel: SandboxLevel;
21
+ requiredLevel: SandboxLevel;
22
+ }
23
+ /** 输入检查结果 */
24
+ export interface InputCheckResult {
25
+ safe: boolean;
26
+ violations: InputViolation[];
27
+ }
28
+ /** 输入违规 */
29
+ export interface InputViolation {
30
+ type: 'injection' | 'intent' | 'permission';
31
+ severity: 'low' | 'medium' | 'high';
32
+ description: string;
33
+ matchedPattern?: string;
34
+ }
35
+ /** 输入护栏配置 */
36
+ export interface InputGuardrailConfig {
37
+ /** 注入检测模式 */
38
+ injectionPatterns?: RegExp[];
39
+ /** 禁止的意图关键词 */
40
+ blockedIntents?: string[];
41
+ /** 最大输入长度 */
42
+ maxInputLength?: number;
43
+ }
44
+ /** 输出检查结果 */
45
+ export interface OutputSafetyCheckResult {
46
+ safe: boolean;
47
+ violations: OutputViolation[];
48
+ sanitizedContent?: string;
49
+ }
50
+ /** 输出违规 */
51
+ export interface OutputViolation {
52
+ type: 'sensitive_info' | 'quality' | 'knowledge_missing';
53
+ severity: 'low' | 'medium' | 'high';
54
+ description: string;
55
+ location?: {
56
+ line: number;
57
+ column: number;
58
+ };
59
+ matchedPattern?: string;
60
+ }
61
+ /** 输出护栏配置 */
62
+ export interface OutputGuardrailConfig {
63
+ /** 敏感信息模式(API keys, passwords, etc.) */
64
+ sensitivePatterns?: RegExp[];
65
+ /** 代码质量最低分数 */
66
+ minQualityScore?: number;
67
+ /** 是否检查知识引用完整性 */
68
+ checkKnowledgeRefs?: boolean;
69
+ }
70
+ /** 工具检查结果 */
71
+ export interface ToolCheckResult {
72
+ allowed: boolean;
73
+ violations: ToolViolation[];
74
+ }
75
+ /** 工具违规 */
76
+ export interface ToolViolation {
77
+ type: 'blacklist' | 'sandbox' | 'rate_limit';
78
+ severity: 'low' | 'medium' | 'high';
79
+ description: string;
80
+ toolName?: string;
81
+ }
82
+ /** 工具护栏配置 */
83
+ export interface ToolGuardrailConfig {
84
+ /** 命令黑名单 */
85
+ blacklistedCommands?: string[];
86
+ /** 每分钟最大调用次数 */
87
+ rateLimit?: number;
88
+ /** 各工具的 sandbox 级别要求 */
89
+ toolSandboxLevels?: Record<string, SandboxLevel>;
90
+ }
91
+ /** 速率限制状态 */
92
+ export interface RateLimitState {
93
+ count: number;
94
+ windowStart: number;
95
+ }
96
+ /** 安全检查汇总 */
97
+ export interface SafetyCheckResult {
98
+ safe: boolean;
99
+ inputCheck: InputCheckResult;
100
+ outputCheck: OutputSafetyCheckResult;
101
+ toolCheck: ToolCheckResult;
102
+ timestamp: string;
103
+ }
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Safety Guardrails 类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 核心工具定义
3
+ *
4
+ * 内置工具:file / git / npm / shell
5
+ */
6
+ import type { ToolDefinition } from '../types';
7
+ export declare const FILE_TOOLS: ToolDefinition[];
8
+ export declare const GIT_TOOLS: ToolDefinition[];
9
+ export declare const NPM_TOOLS: ToolDefinition[];
10
+ export declare const SHELL_TOOLS: ToolDefinition[];
11
+ /** 所有核心工具 */
12
+ export declare const CORE_TOOLS: ToolDefinition[];
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,UAAU,EAAE,cAAc,EA8DtC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAAc,EAqDrC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAAc,EA6CrC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,cAAc,EAkBvC,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,UAAU,EAAE,cAAc,EAKtC,CAAC"}