@dommaker/harness 1.1.1 → 1.2.1

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 (373) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -4
  3. package/bin/harness.js +12 -37
  4. package/dist/cli/commands/check.d.ts +2 -2
  5. package/dist/cli/commands/check.d.ts.map +1 -1
  6. package/dist/cli/commands/check.js +8 -33
  7. package/dist/cli/commands/check.js.map +1 -1
  8. package/dist/cli/commands/constraints-report.js +1 -1
  9. package/dist/cli/commands/constraints-report.js.map +1 -1
  10. package/dist/cli/commands/constraints-retire.d.ts +6 -3
  11. package/dist/cli/commands/constraints-retire.d.ts.map +1 -1
  12. package/dist/cli/commands/constraints-retire.js +34 -25
  13. package/dist/cli/commands/constraints-retire.js.map +1 -1
  14. package/dist/cli/commands/definitions.d.ts +2 -0
  15. package/dist/cli/commands/definitions.d.ts.map +1 -1
  16. package/dist/cli/commands/definitions.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts +21 -1
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +118 -40
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  22. package/dist/cli/commands/knowledge.js +1 -12
  23. package/dist/cli/commands/knowledge.js.map +1 -1
  24. package/dist/cli/commands/report.d.ts.map +1 -1
  25. package/dist/cli/commands/report.js +0 -2
  26. package/dist/cli/commands/report.js.map +1 -1
  27. package/dist/cli/commands/status.js +2 -2
  28. package/dist/cli/commands/status.js.map +1 -1
  29. package/dist/context/index.d.ts +9 -6
  30. package/dist/context/index.d.ts.map +1 -1
  31. package/dist/context/index.js +18 -20
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/core/constraints/capabilities-parser.d.ts +3 -2
  34. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
  35. package/dist/core/constraints/capabilities-parser.js +25 -47
  36. package/dist/core/constraints/capabilities-parser.js.map +1 -1
  37. package/dist/core/constraints/checker.d.ts +29 -32
  38. package/dist/core/constraints/checker.d.ts.map +1 -1
  39. package/dist/core/constraints/checker.js +34 -126
  40. package/dist/core/constraints/checker.js.map +1 -1
  41. package/dist/core/constraints/checkers/governance-presence.d.ts +20 -0
  42. package/dist/core/constraints/checkers/governance-presence.d.ts.map +1 -0
  43. package/dist/core/constraints/checkers/governance-presence.js +76 -0
  44. package/dist/core/constraints/checkers/governance-presence.js.map +1 -0
  45. package/dist/core/constraints/checkers/index.d.ts +2 -1
  46. package/dist/core/constraints/checkers/index.d.ts.map +1 -1
  47. package/dist/core/constraints/checkers/index.js +5 -0
  48. package/dist/core/constraints/checkers/index.js.map +1 -1
  49. package/dist/core/constraints/checkers/types.d.ts +25 -0
  50. package/dist/core/constraints/checkers/types.d.ts.map +1 -1
  51. package/dist/core/constraints/checkers/types.js +24 -0
  52. package/dist/core/constraints/checkers/types.js.map +1 -1
  53. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  54. package/dist/core/constraints/definitions/guidelines.js +21 -2
  55. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  56. package/dist/core/constraints/definitions/prompts.d.ts.map +1 -1
  57. package/dist/core/constraints/definitions/prompts.js +0 -5
  58. package/dist/core/constraints/definitions/prompts.js.map +1 -1
  59. package/dist/core/constraints/index.d.ts +1 -2
  60. package/dist/core/constraints/index.d.ts.map +1 -1
  61. package/dist/core/constraints/index.js +1 -7
  62. package/dist/core/constraints/index.js.map +1 -1
  63. package/dist/core/constraints/injection-drift.d.ts +29 -4
  64. package/dist/core/constraints/injection-drift.d.ts.map +1 -1
  65. package/dist/core/constraints/injection-drift.js +52 -20
  66. package/dist/core/constraints/injection-drift.js.map +1 -1
  67. package/dist/core/constraints/usage-report.d.ts +1 -2
  68. package/dist/core/constraints/usage-report.d.ts.map +1 -1
  69. package/dist/core/constraints/usage-report.js +2 -5
  70. package/dist/core/constraints/usage-report.js.map +1 -1
  71. package/dist/core/effective-constraints.d.ts +24 -4
  72. package/dist/core/effective-constraints.d.ts.map +1 -1
  73. package/dist/core/effective-constraints.js +28 -7
  74. package/dist/core/effective-constraints.js.map +1 -1
  75. package/dist/core/effective-set.d.ts +30 -0
  76. package/dist/core/effective-set.d.ts.map +1 -0
  77. package/dist/core/effective-set.js +35 -0
  78. package/dist/core/effective-set.js.map +1 -0
  79. package/dist/core/index.d.ts +13 -6
  80. package/dist/core/index.d.ts.map +1 -1
  81. package/dist/core/index.js +44 -21
  82. package/dist/core/index.js.map +1 -1
  83. package/dist/core/project-config-loader.d.ts +3 -6
  84. package/dist/core/project-config-loader.d.ts.map +1 -1
  85. package/dist/core/project-config-loader.js +47 -61
  86. package/dist/core/project-config-loader.js.map +1 -1
  87. package/dist/failure/constraint-handler.d.ts +1 -1
  88. package/dist/failure/constraint-handler.js +1 -1
  89. package/dist/gates/checker-gate.d.ts +1 -4
  90. package/dist/gates/checker-gate.d.ts.map +1 -1
  91. package/dist/gates/checker-gate.js +3 -11
  92. package/dist/gates/checker-gate.js.map +1 -1
  93. package/dist/gates/definitions.d.ts +9 -38
  94. package/dist/gates/definitions.d.ts.map +1 -1
  95. package/dist/gates/definitions.js +24 -13
  96. package/dist/gates/definitions.js.map +1 -1
  97. package/dist/gates/effective-gates.d.ts.map +1 -1
  98. package/dist/gates/effective-gates.js +14 -18
  99. package/dist/gates/effective-gates.js.map +1 -1
  100. package/dist/gates/index.d.ts +1 -1
  101. package/dist/gates/index.d.ts.map +1 -1
  102. package/dist/gates/index.js.map +1 -1
  103. package/dist/hooks/bootstrap.d.ts.map +1 -1
  104. package/dist/hooks/bootstrap.js +0 -3
  105. package/dist/hooks/bootstrap.js.map +1 -1
  106. package/dist/index.d.ts +43 -60
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +180 -143
  109. package/dist/index.js.map +1 -1
  110. package/dist/knowledge/query.d.ts +15 -0
  111. package/dist/knowledge/query.d.ts.map +1 -1
  112. package/dist/knowledge/query.js +23 -0
  113. package/dist/knowledge/query.js.map +1 -1
  114. package/dist/monitoring/analyzer-base.d.ts +0 -4
  115. package/dist/monitoring/analyzer-base.d.ts.map +1 -1
  116. package/dist/monitoring/analyzer-base.js +0 -21
  117. package/dist/monitoring/analyzer-base.js.map +1 -1
  118. package/dist/monitoring/index.d.ts +6 -12
  119. package/dist/monitoring/index.d.ts.map +1 -1
  120. package/dist/monitoring/index.js +13 -29
  121. package/dist/monitoring/index.js.map +1 -1
  122. package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
  123. package/dist/monitoring/trace-analyzer.js +2 -68
  124. package/dist/monitoring/trace-analyzer.js.map +1 -1
  125. package/dist/monitoring/traces.d.ts +0 -4
  126. package/dist/monitoring/traces.d.ts.map +1 -1
  127. package/dist/monitoring/traces.js +0 -14
  128. package/dist/monitoring/traces.js.map +1 -1
  129. package/dist/presets/index.d.ts +2 -2
  130. package/dist/presets/index.d.ts.map +1 -1
  131. package/dist/presets/index.js +3 -4
  132. package/dist/presets/index.js.map +1 -1
  133. package/dist/presets/standard.d.ts +10 -22
  134. package/dist/presets/standard.d.ts.map +1 -1
  135. package/dist/presets/standard.js +15 -75
  136. package/dist/presets/standard.js.map +1 -1
  137. package/dist/types/constraint.d.ts +1 -29
  138. package/dist/types/constraint.d.ts.map +1 -1
  139. package/dist/types/constraint.js +1 -1
  140. package/dist/types/constraint.js.map +1 -1
  141. package/dist/types/index.d.ts +0 -3
  142. package/dist/types/index.d.ts.map +1 -1
  143. package/dist/types/index.js +0 -4
  144. package/dist/types/index.js.map +1 -1
  145. package/dist/types/project-config.d.ts +4 -8
  146. package/dist/types/project-config.d.ts.map +1 -1
  147. package/dist/types/trace.d.ts +5 -18
  148. package/dist/types/trace.d.ts.map +1 -1
  149. package/package.json +2 -2
  150. package/src/CONTEXT.md +4 -5
  151. package/src/__tests__/checker-extra.test.ts +33 -139
  152. package/src/__tests__/checker.test.ts +0 -376
  153. package/src/__tests__/governance-presence.test.ts +129 -0
  154. package/src/__tests__/iron-laws.test.ts +7 -7
  155. package/src/__tests__/project-config-loader-extra.test.ts +42 -29
  156. package/src/__tests__/public-exports.test.ts +138 -0
  157. package/src/__tests__/trace-analyzer-extra.test.ts +6 -86
  158. package/src/__tests__/trace-analyzer.test.ts +4 -5
  159. package/src/__tests__/trace-collector.test.ts +0 -11
  160. package/src/__tests__/traces.test.ts +3 -22
  161. package/src/cli/commands/CONTEXT.md +6 -3
  162. package/src/cli/commands/__tests__/check-skip-output.test.ts +10 -7
  163. package/src/cli/commands/__tests__/check.test.ts +29 -69
  164. package/src/cli/commands/__tests__/constraints-report.test.ts +3 -3
  165. package/src/cli/commands/__tests__/constraints-retire.test.ts +45 -4
  166. package/src/cli/commands/__tests__/init-injection.test.ts +202 -0
  167. package/src/cli/commands/__tests__/knowledge.test.ts +90 -1
  168. package/src/cli/commands/__tests__/registry.test.ts +8 -6
  169. package/src/cli/commands/__tests__/status-extra.test.ts +6 -6
  170. package/src/cli/commands/__tests__/status.test.ts +6 -6
  171. package/src/cli/commands/__tests__/sync-docs-agents.test.ts +28 -0
  172. package/src/cli/commands/check.ts +9 -35
  173. package/src/cli/commands/constraints-report.ts +1 -1
  174. package/src/cli/commands/constraints-retire.ts +38 -27
  175. package/src/cli/commands/definitions.ts +2 -0
  176. package/src/cli/commands/init.ts +129 -40
  177. package/src/cli/commands/knowledge.ts +1 -16
  178. package/src/cli/commands/report.ts +0 -2
  179. package/src/cli/commands/status.ts +2 -2
  180. package/src/context/index.ts +29 -6
  181. package/src/core/CONTEXT.md +4 -3
  182. package/src/core/__tests__/effective-set.test.ts +80 -0
  183. package/src/core/constraints/__tests__/injection-drift.test.ts +90 -0
  184. package/src/core/constraints/capabilities-parser.ts +43 -49
  185. package/src/core/constraints/checker.ts +51 -145
  186. package/src/core/constraints/checkers/governance-presence.ts +74 -0
  187. package/src/core/constraints/checkers/index.ts +4 -1
  188. package/src/core/constraints/checkers/types.ts +42 -0
  189. package/src/core/constraints/definitions/guidelines.ts +22 -2
  190. package/src/core/constraints/definitions/prompts.ts +0 -5
  191. package/src/core/constraints/index.ts +2 -17
  192. package/src/core/constraints/injection-drift.ts +60 -21
  193. package/src/core/constraints/usage-report.ts +5 -8
  194. package/src/core/effective-constraints.ts +35 -7
  195. package/src/core/effective-set.ts +56 -0
  196. package/src/core/index.ts +80 -6
  197. package/src/core/project-config-loader.ts +53 -68
  198. package/src/failure/CONTEXT.md +1 -1
  199. package/src/failure/constraint-handler.ts +1 -1
  200. package/src/gates/CONTEXT.md +3 -3
  201. package/src/gates/checker-gate.ts +4 -12
  202. package/src/gates/definitions.ts +27 -50
  203. package/src/gates/effective-gates.ts +14 -21
  204. package/src/gates/index.ts +1 -1
  205. package/src/hooks/bootstrap.ts +0 -3
  206. package/src/index.ts +384 -148
  207. package/src/knowledge/CONTEXT.md +2 -2
  208. package/src/knowledge/__tests__/query.test.ts +64 -0
  209. package/src/knowledge/query.ts +28 -0
  210. package/src/monitoring/CONTEXT.md +7 -13
  211. package/src/monitoring/__tests__/traces.test.ts +0 -10
  212. package/src/monitoring/analyzer-base.ts +0 -22
  213. package/src/monitoring/index.ts +6 -12
  214. package/src/monitoring/trace-analyzer.ts +2 -73
  215. package/src/monitoring/traces.ts +0 -20
  216. package/src/presets/__tests__/standard.test.ts +48 -69
  217. package/src/presets/index.ts +3 -5
  218. package/src/presets/standard.ts +14 -79
  219. package/src/spec/CONTEXT.md +5 -13
  220. package/src/types/constraint.ts +1 -51
  221. package/src/types/index.ts +0 -12
  222. package/src/types/project-config.ts +4 -10
  223. package/src/types/trace.ts +5 -30
  224. package/dist/core/constraints/interceptor.d.ts +0 -39
  225. package/dist/core/constraints/interceptor.d.ts.map +0 -1
  226. package/dist/core/constraints/interceptor.js +0 -166
  227. package/dist/core/constraints/interceptor.js.map +0 -1
  228. package/dist/dashboard/data.d.ts +0 -31
  229. package/dist/dashboard/data.d.ts.map +0 -1
  230. package/dist/dashboard/data.js +0 -81
  231. package/dist/dashboard/data.js.map +0 -1
  232. package/dist/dashboard/index.d.ts +0 -4
  233. package/dist/dashboard/index.d.ts.map +0 -1
  234. package/dist/dashboard/index.js +0 -20
  235. package/dist/dashboard/index.js.map +0 -1
  236. package/dist/dashboard/stats.d.ts +0 -20
  237. package/dist/dashboard/stats.d.ts.map +0 -1
  238. package/dist/dashboard/stats.js +0 -115
  239. package/dist/dashboard/stats.js.map +0 -1
  240. package/dist/dashboard/types.d.ts +0 -110
  241. package/dist/dashboard/types.d.ts.map +0 -1
  242. package/dist/dashboard/types.js +0 -8
  243. package/dist/dashboard/types.js.map +0 -1
  244. package/dist/monitoring/constraint-doctor.d.ts +0 -76
  245. package/dist/monitoring/constraint-doctor.d.ts.map +0 -1
  246. package/dist/monitoring/constraint-doctor.js +0 -189
  247. package/dist/monitoring/constraint-doctor.js.map +0 -1
  248. package/dist/monitoring/diagnosis-rules.d.ts +0 -18
  249. package/dist/monitoring/diagnosis-rules.d.ts.map +0 -1
  250. package/dist/monitoring/diagnosis-rules.js +0 -119
  251. package/dist/monitoring/diagnosis-rules.js.map +0 -1
  252. package/dist/monitoring/knowledge-doctor.d.ts +0 -78
  253. package/dist/monitoring/knowledge-doctor.d.ts.map +0 -1
  254. package/dist/monitoring/knowledge-doctor.js +0 -266
  255. package/dist/monitoring/knowledge-doctor.js.map +0 -1
  256. package/dist/monitoring/knowledge-evolver.d.ts +0 -72
  257. package/dist/monitoring/knowledge-evolver.d.ts.map +0 -1
  258. package/dist/monitoring/knowledge-evolver.js +0 -205
  259. package/dist/monitoring/knowledge-evolver.js.map +0 -1
  260. package/dist/monitoring/performance-analyzer.d.ts +0 -92
  261. package/dist/monitoring/performance-analyzer.d.ts.map +0 -1
  262. package/dist/monitoring/performance-analyzer.js +0 -343
  263. package/dist/monitoring/performance-analyzer.js.map +0 -1
  264. package/dist/monitoring/performance-collector.d.ts +0 -103
  265. package/dist/monitoring/performance-collector.d.ts.map +0 -1
  266. package/dist/monitoring/performance-collector.js +0 -298
  267. package/dist/monitoring/performance-collector.js.map +0 -1
  268. package/dist/safety/index.d.ts +0 -6
  269. package/dist/safety/index.d.ts.map +0 -1
  270. package/dist/safety/index.js +0 -22
  271. package/dist/safety/index.js.map +0 -1
  272. package/dist/safety/input-guardrail.d.ts +0 -36
  273. package/dist/safety/input-guardrail.d.ts.map +0 -1
  274. package/dist/safety/input-guardrail.js +0 -118
  275. package/dist/safety/input-guardrail.js.map +0 -1
  276. package/dist/safety/output-guardrail.d.ts +0 -39
  277. package/dist/safety/output-guardrail.d.ts.map +0 -1
  278. package/dist/safety/output-guardrail.js +0 -147
  279. package/dist/safety/output-guardrail.js.map +0 -1
  280. package/dist/safety/sandbox.d.ts +0 -45
  281. package/dist/safety/sandbox.d.ts.map +0 -1
  282. package/dist/safety/sandbox.js +0 -134
  283. package/dist/safety/sandbox.js.map +0 -1
  284. package/dist/safety/tool-guardrail.d.ts +0 -51
  285. package/dist/safety/tool-guardrail.d.ts.map +0 -1
  286. package/dist/safety/tool-guardrail.js +0 -147
  287. package/dist/safety/tool-guardrail.js.map +0 -1
  288. package/dist/safety/types.d.ts +0 -104
  289. package/dist/safety/types.d.ts.map +0 -1
  290. package/dist/safety/types.js +0 -6
  291. package/dist/safety/types.js.map +0 -1
  292. package/dist/spec/annotation-checker.d.ts +0 -47
  293. package/dist/spec/annotation-checker.d.ts.map +0 -1
  294. package/dist/spec/annotation-checker.js +0 -279
  295. package/dist/spec/annotation-checker.js.map +0 -1
  296. package/dist/types/enforcement.d.ts +0 -42
  297. package/dist/types/enforcement.d.ts.map +0 -1
  298. package/dist/types/enforcement.js +0 -6
  299. package/dist/types/enforcement.js.map +0 -1
  300. package/dist/types/monitoring-types.d.ts +0 -53
  301. package/dist/types/monitoring-types.d.ts.map +0 -1
  302. package/dist/types/monitoring-types.js +0 -10
  303. package/dist/types/monitoring-types.js.map +0 -1
  304. package/dist/types/performance.d.ts +0 -204
  305. package/dist/types/performance.d.ts.map +0 -1
  306. package/dist/types/performance.js +0 -12
  307. package/dist/types/performance.js.map +0 -1
  308. package/dist/verification/index.d.ts +0 -4
  309. package/dist/verification/index.d.ts.map +0 -1
  310. package/dist/verification/index.js +0 -20
  311. package/dist/verification/index.js.map +0 -1
  312. package/dist/verification/loop.d.ts +0 -30
  313. package/dist/verification/loop.d.ts.map +0 -1
  314. package/dist/verification/loop.js +0 -114
  315. package/dist/verification/loop.js.map +0 -1
  316. package/dist/verification/rules-based.d.ts +0 -40
  317. package/dist/verification/rules-based.d.ts.map +0 -1
  318. package/dist/verification/rules-based.js +0 -130
  319. package/dist/verification/rules-based.js.map +0 -1
  320. package/dist/verification/types.d.ts +0 -69
  321. package/dist/verification/types.d.ts.map +0 -1
  322. package/dist/verification/types.js +0 -6
  323. package/dist/verification/types.js.map +0 -1
  324. package/src/__tests__/annotation-checker.test.ts +0 -183
  325. package/src/__tests__/constraint-doctor.test.ts +0 -271
  326. package/src/__tests__/doctor-extra.test.ts +0 -155
  327. package/src/__tests__/extend-exceptions.test.ts +0 -149
  328. package/src/__tests__/interceptor.test.ts +0 -89
  329. package/src/__tests__/performance-analyzer.test.ts +0 -499
  330. package/src/__tests__/performance-collector.test.ts +0 -276
  331. package/src/__tests__/presets.test.ts +0 -65
  332. package/src/core/constraints/__tests__/interceptor.test.ts +0 -267
  333. package/src/core/constraints/interceptor.ts +0 -217
  334. package/src/dashboard/CONTEXT.md +0 -21
  335. package/src/dashboard/__tests__/data.test.ts +0 -111
  336. package/src/dashboard/__tests__/stats.test.ts +0 -159
  337. package/src/dashboard/data.ts +0 -103
  338. package/src/dashboard/index.ts +0 -3
  339. package/src/dashboard/stats.ts +0 -127
  340. package/src/dashboard/types.ts +0 -130
  341. package/src/monitoring/__tests__/knowledge-doctor.test.ts +0 -278
  342. package/src/monitoring/__tests__/knowledge-evolver.test.ts +0 -368
  343. package/src/monitoring/__tests__/performance-analyzer.test.ts +0 -137
  344. package/src/monitoring/__tests__/performance-collector.test.ts +0 -331
  345. package/src/monitoring/constraint-doctor.ts +0 -228
  346. package/src/monitoring/diagnosis-rules.ts +0 -132
  347. package/src/monitoring/knowledge-doctor.ts +0 -322
  348. package/src/monitoring/knowledge-evolver.ts +0 -289
  349. package/src/monitoring/performance-analyzer.ts +0 -400
  350. package/src/monitoring/performance-collector.ts +0 -326
  351. package/src/safety/CONTEXT.md +0 -23
  352. package/src/safety/__tests__/input-guardrail.test.ts +0 -105
  353. package/src/safety/__tests__/output-guardrail.test.ts +0 -108
  354. package/src/safety/__tests__/sandbox.test.ts +0 -158
  355. package/src/safety/__tests__/tool-guardrail.test.ts +0 -127
  356. package/src/safety/index.ts +0 -5
  357. package/src/safety/input-guardrail.ts +0 -133
  358. package/src/safety/output-guardrail.ts +0 -170
  359. package/src/safety/sandbox.ts +0 -148
  360. package/src/safety/tool-guardrail.ts +0 -176
  361. package/src/safety/types.ts +0 -124
  362. package/src/spec/__tests__/annotation-checker.test.ts +0 -294
  363. package/src/spec/annotation-checker.ts +0 -320
  364. package/src/types/enforcement.ts +0 -48
  365. package/src/types/monitoring-types.ts +0 -68
  366. package/src/types/performance.ts +0 -295
  367. package/src/verification/CONTEXT.md +0 -23
  368. package/src/verification/__tests__/loop.test.ts +0 -303
  369. package/src/verification/__tests__/rules-based.test.ts +0 -240
  370. package/src/verification/index.ts +0 -3
  371. package/src/verification/loop.ts +0 -137
  372. package/src/verification/rules-based.ts +0 -152
  373. package/src/verification/types.ts +0 -81
@@ -1,147 +0,0 @@
1
- "use strict";
2
- /**
3
- * 输出护栏
4
- *
5
- * 在最终输出前检查:
6
- * - 敏感信息审查(API keys, passwords, tokens)
7
- * - 代码质量检查
8
- * - 知识引用完整性
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.OutputGuardrail = void 0;
12
- const DEFAULT_SENSITIVE_PATTERNS = [
13
- // API keys
14
- /(?:api[_-]?key|apikey)\s*[:=]\s*['"]?([a-zA-Z0-9_-]{20,})['"]?/gi,
15
- // AWS
16
- /(?:AKIA|ASIA)[A-Z0-9]{16}/g,
17
- // Generic secrets
18
- /(?:secret|password|passwd|token|auth)\s*[:=]\s*['"]?([^\s'"]{8,})['"]?/gi,
19
- // Private keys
20
- /-----BEGIN\s+(RSA\s+)?PRIVATE\s+KEY-----/g,
21
- // GitHub tokens
22
- /gh[ps]_[A-Za-z0-9_]{36,}/g,
23
- // Bearer tokens
24
- /Bearer\s+[A-Za-z0-9_\-.]{20,}/g,
25
- // Connection strings
26
- /(?:mongodb|postgres|mysql|redis):\/\/[^\s'"]+/gi,
27
- ];
28
- class OutputGuardrail {
29
- sensitivePatterns;
30
- checkKnowledgeRefs;
31
- constructor(config) {
32
- this.sensitivePatterns = config?.sensitivePatterns ?? DEFAULT_SENSITIVE_PATTERNS;
33
- this.checkKnowledgeRefs = config?.checkKnowledgeRefs ?? false;
34
- }
35
- /**
36
- * 检查输出安全性
37
- */
38
- check(content, knowledgeRefIds) {
39
- const violations = [];
40
- // 敏感信息检测
41
- violations.push(...this.checkSensitiveInfo(content));
42
- // 代码质量检查
43
- violations.push(...this.checkQuality(content));
44
- // 知识引用完整性
45
- if (this.checkKnowledgeRefs && knowledgeRefIds) {
46
- violations.push(...this.checkKnowledgeRefs_(content, knowledgeRefIds));
47
- }
48
- const sanitized = violations.length > 0
49
- ? this.sanitize(content, violations)
50
- : undefined;
51
- return {
52
- safe: violations.length === 0,
53
- violations,
54
- sanitizedContent: sanitized,
55
- };
56
- }
57
- /**
58
- * 检测敏感信息
59
- */
60
- checkSensitiveInfo(content) {
61
- const violations = [];
62
- for (const pattern of this.sensitivePatterns) {
63
- // Reset lastIndex for global patterns
64
- pattern.lastIndex = 0;
65
- let match;
66
- while ((match = pattern.exec(content)) !== null) {
67
- const line = this.getLineNumber(content, match.index);
68
- violations.push({
69
- type: 'sensitive_info',
70
- severity: 'high',
71
- description: `检测到敏感信息: ${match[0].slice(0, 30)}...`,
72
- location: { line, column: match.index - content.lastIndexOf('\n', match.index) - 1 },
73
- matchedPattern: match[0],
74
- });
75
- }
76
- }
77
- return violations;
78
- }
79
- /**
80
- * 代码质量检查(简单启发式)
81
- */
82
- checkQuality(content) {
83
- const violations = [];
84
- // 检查 TODO/FIXME/HACK
85
- const todoPattern = /\b(TODO|FIXME|HACK|XXX)\b/gi;
86
- let match;
87
- while ((match = todoPattern.exec(content)) !== null) {
88
- const line = this.getLineNumber(content, match.index);
89
- violations.push({
90
- type: 'quality',
91
- severity: 'low',
92
- description: `代码包含 ${match[1]} 标记`,
93
- location: { line, column: match.index - content.lastIndexOf('\n', match.index) - 1 },
94
- });
95
- }
96
- // 检查 console.log 残留
97
- const consolePattern = /console\.(log|debug|info)\(/g;
98
- while ((match = consolePattern.exec(content)) !== null) {
99
- const line = this.getLineNumber(content, match.index);
100
- violations.push({
101
- type: 'quality',
102
- severity: 'low',
103
- description: `代码包含 ${match[0].slice(0, -1)} 调用`,
104
- location: { line, column: match.index - content.lastIndexOf('\n', match.index) - 1 },
105
- });
106
- }
107
- return violations;
108
- }
109
- /**
110
- * 检查知识引用完整性
111
- */
112
- checkKnowledgeRefs_(content, referencedIds) {
113
- const violations = [];
114
- for (const id of referencedIds) {
115
- if (!content.includes(id)) {
116
- violations.push({
117
- type: 'knowledge_missing',
118
- severity: 'medium',
119
- description: `引用的知识条目 ${id} 未出现在输出中`,
120
- });
121
- }
122
- }
123
- return violations;
124
- }
125
- /**
126
- * 清理敏感信息
127
- */
128
- sanitize(content, violations) {
129
- let sanitized = content;
130
- for (const violation of violations) {
131
- if (violation.type === 'sensitive_info' && violation.matchedPattern) {
132
- // Escape special regex characters in the matched string
133
- const escaped = violation.matchedPattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
134
- sanitized = sanitized.replace(new RegExp(escaped, 'g'), '[REDACTED]');
135
- }
136
- }
137
- return sanitized;
138
- }
139
- /**
140
- * 获取行号
141
- */
142
- getLineNumber(content, index) {
143
- return content.slice(0, index).split('\n').length;
144
- }
145
- }
146
- exports.OutputGuardrail = OutputGuardrail;
147
- //# sourceMappingURL=output-guardrail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-guardrail.js","sourceRoot":"","sources":["../../src/safety/output-guardrail.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Sandbox 安全级别管理
3
- *
4
- * 四级权限模型:
5
- * Level 1: 只读文件系统,无网络,无 shell
6
- * Level 2: 可写限定目录(.harness/),无网络
7
- * Level 3: 可写项目目录,受限网络(白名单)
8
- * Level 4: 完全权限,需用户确认
9
- */
10
- import type { SandboxLevel, SandboxConfig, SandboxCheckResult } from './types';
11
- export declare class Sandbox {
12
- private config;
13
- constructor(config?: Partial<SandboxConfig>);
14
- getLevel(): SandboxLevel;
15
- getDescription(): string;
16
- /**
17
- * 检查当前级别是否满足操作所需级别
18
- */
19
- check(requiredLevel: SandboxLevel): SandboxCheckResult;
20
- /**
21
- * 检查文件写入是否允许
22
- */
23
- checkFileWrite(filePath: string): SandboxCheckResult;
24
- /**
25
- * 检查网络访问是否允许
26
- */
27
- checkNetworkAccess(host: string): SandboxCheckResult;
28
- /**
29
- * 检查 shell 命令是否允许
30
- */
31
- checkShellAccess(): SandboxCheckResult;
32
- /**
33
- * 检查是否需要用户确认
34
- */
35
- needsConfirmation(): boolean;
36
- /**
37
- * 升级到指定级别
38
- */
39
- upgradeTo(level: SandboxLevel): void;
40
- /**
41
- * 获取当前配置
42
- */
43
- getConfig(): SandboxConfig;
44
- }
45
- //# sourceMappingURL=sandbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/safety/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAW/E,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS3C,QAAQ,IAAI,YAAY;IAIxB,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,KAAK,CAAC,aAAa,EAAE,YAAY,GAAG,kBAAkB;IAUtD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IA0BpD;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;IAuBpD;;OAEG;IACH,gBAAgB,IAAI,kBAAkB;IAYtC;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAOpC;;OAEG;IACH,SAAS,IAAI,aAAa;CAG3B"}
@@ -1,134 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/safety/sandbox.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,147 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-guardrail.js","sourceRoot":"","sources":["../../src/safety/tool-guardrail.ts"],"names":[],"mappings":"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"}
@@ -1,104 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /**
3
- * Safety Guardrails 类型定义
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}