hackmyagent 0.7.2 → 0.8.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 (393) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +172 -261
  3. package/dist/abgr/controls.d.ts +35 -0
  4. package/dist/abgr/controls.d.ts.map +1 -0
  5. package/dist/abgr/controls.js +1058 -0
  6. package/dist/abgr/controls.js.map +1 -0
  7. package/dist/abgr/detector.d.ts +45 -0
  8. package/dist/abgr/detector.d.ts.map +1 -0
  9. package/dist/abgr/detector.js +175 -0
  10. package/dist/abgr/detector.js.map +1 -0
  11. package/dist/abgr/index.d.ts +24 -0
  12. package/dist/abgr/index.d.ts.map +1 -0
  13. package/dist/abgr/index.js +50 -0
  14. package/dist/abgr/index.js.map +1 -0
  15. package/dist/abgr/scorer.d.ts +36 -0
  16. package/dist/abgr/scorer.d.ts.map +1 -0
  17. package/dist/abgr/scorer.js +205 -0
  18. package/dist/abgr/scorer.js.map +1 -0
  19. package/dist/abgr/templates.d.ts +35 -0
  20. package/dist/abgr/templates.d.ts.map +1 -0
  21. package/dist/abgr/templates.js +668 -0
  22. package/dist/abgr/templates.js.map +1 -0
  23. package/dist/abgr/tier.d.ts +27 -0
  24. package/dist/abgr/tier.d.ts.map +1 -0
  25. package/dist/abgr/tier.js +115 -0
  26. package/dist/abgr/tier.js.map +1 -0
  27. package/dist/abgr/types.d.ts +59 -0
  28. package/dist/abgr/types.d.ts.map +1 -0
  29. package/dist/abgr/types.js +10 -0
  30. package/dist/abgr/types.js.map +1 -0
  31. package/dist/agent-scan/checks.d.ts +6 -0
  32. package/dist/agent-scan/checks.d.ts.map +1 -0
  33. package/dist/agent-scan/checks.js +93 -0
  34. package/dist/agent-scan/checks.js.map +1 -0
  35. package/dist/agent-scan/index.d.ts +10 -0
  36. package/dist/agent-scan/index.d.ts.map +1 -0
  37. package/dist/agent-scan/index.js +16 -0
  38. package/dist/agent-scan/index.js.map +1 -0
  39. package/dist/agent-scan/scanner.d.ts +31 -0
  40. package/dist/agent-scan/scanner.d.ts.map +1 -0
  41. package/dist/agent-scan/scanner.js +484 -0
  42. package/dist/agent-scan/scanner.js.map +1 -0
  43. package/dist/agent-scan/types.d.ts +63 -0
  44. package/dist/agent-scan/types.d.ts.map +1 -0
  45. package/dist/agent-scan/types.js +10 -0
  46. package/dist/agent-scan/types.js.map +1 -0
  47. package/dist/arp/cli/index.d.ts +3 -0
  48. package/dist/arp/cli/index.d.ts.map +1 -0
  49. package/dist/arp/cli/index.js +225 -0
  50. package/dist/arp/cli/index.js.map +1 -0
  51. package/dist/arp/config/loader.d.ts +8 -0
  52. package/dist/arp/config/loader.d.ts.map +1 -0
  53. package/dist/arp/config/loader.js +102 -0
  54. package/dist/arp/config/loader.js.map +1 -0
  55. package/dist/arp/enforcement/kill-switch.d.ts +22 -0
  56. package/dist/arp/enforcement/kill-switch.d.ts.map +1 -0
  57. package/dist/arp/enforcement/kill-switch.js +122 -0
  58. package/dist/arp/enforcement/kill-switch.js.map +1 -0
  59. package/dist/arp/engine/event-engine.d.ts +29 -0
  60. package/dist/arp/engine/event-engine.d.ts.map +1 -0
  61. package/dist/arp/engine/event-engine.js +233 -0
  62. package/dist/arp/engine/event-engine.js.map +1 -0
  63. package/dist/arp/index.d.ts +81 -0
  64. package/dist/arp/index.d.ts.map +1 -0
  65. package/dist/arp/index.js +239 -0
  66. package/dist/arp/index.js.map +1 -0
  67. package/dist/arp/intelligence/adapters.d.ts +45 -0
  68. package/dist/arp/intelligence/adapters.d.ts.map +1 -0
  69. package/dist/arp/intelligence/adapters.js +222 -0
  70. package/dist/arp/intelligence/adapters.js.map +1 -0
  71. package/dist/arp/intelligence/anomaly.d.ts +32 -0
  72. package/dist/arp/intelligence/anomaly.d.ts.map +1 -0
  73. package/dist/arp/intelligence/anomaly.js +80 -0
  74. package/dist/arp/intelligence/anomaly.js.map +1 -0
  75. package/dist/arp/intelligence/budget.d.ts +33 -0
  76. package/dist/arp/intelligence/budget.d.ts.map +1 -0
  77. package/dist/arp/intelligence/budget.js +150 -0
  78. package/dist/arp/intelligence/budget.js.map +1 -0
  79. package/dist/arp/intelligence/coordinator.d.ts +43 -0
  80. package/dist/arp/intelligence/coordinator.d.ts.map +1 -0
  81. package/dist/arp/intelligence/coordinator.js +301 -0
  82. package/dist/arp/intelligence/coordinator.js.map +1 -0
  83. package/dist/arp/interceptors/a2a-protocol.d.ts +29 -0
  84. package/dist/arp/interceptors/a2a-protocol.d.ts.map +1 -0
  85. package/dist/arp/interceptors/a2a-protocol.js +111 -0
  86. package/dist/arp/interceptors/a2a-protocol.js.map +1 -0
  87. package/dist/arp/interceptors/filesystem.d.ts +33 -0
  88. package/dist/arp/interceptors/filesystem.d.ts.map +1 -0
  89. package/dist/arp/interceptors/filesystem.js +199 -0
  90. package/dist/arp/interceptors/filesystem.js.map +1 -0
  91. package/dist/arp/interceptors/mcp-protocol.d.ts +25 -0
  92. package/dist/arp/interceptors/mcp-protocol.d.ts.map +1 -0
  93. package/dist/arp/interceptors/mcp-protocol.js +126 -0
  94. package/dist/arp/interceptors/mcp-protocol.js.map +1 -0
  95. package/dist/arp/interceptors/network.d.ts +26 -0
  96. package/dist/arp/interceptors/network.d.ts.map +1 -0
  97. package/dist/arp/interceptors/network.js +146 -0
  98. package/dist/arp/interceptors/network.js.map +1 -0
  99. package/dist/arp/interceptors/process.d.ts +26 -0
  100. package/dist/arp/interceptors/process.d.ts.map +1 -0
  101. package/dist/arp/interceptors/process.js +157 -0
  102. package/dist/arp/interceptors/process.js.map +1 -0
  103. package/dist/arp/interceptors/prompt.d.ts +29 -0
  104. package/dist/arp/interceptors/prompt.d.ts.map +1 -0
  105. package/dist/arp/interceptors/prompt.js +82 -0
  106. package/dist/arp/interceptors/prompt.js.map +1 -0
  107. package/dist/arp/license/index.d.ts +59 -0
  108. package/dist/arp/license/index.d.ts.map +1 -0
  109. package/dist/arp/license/index.js +78 -0
  110. package/dist/arp/license/index.js.map +1 -0
  111. package/dist/arp/monitors/filesystem.d.ts +21 -0
  112. package/dist/arp/monitors/filesystem.d.ts.map +1 -0
  113. package/dist/arp/monitors/filesystem.js +141 -0
  114. package/dist/arp/monitors/filesystem.js.map +1 -0
  115. package/dist/arp/monitors/network.d.ts +32 -0
  116. package/dist/arp/monitors/network.d.ts.map +1 -0
  117. package/dist/arp/monitors/network.js +301 -0
  118. package/dist/arp/monitors/network.js.map +1 -0
  119. package/dist/arp/monitors/process.d.ts +24 -0
  120. package/dist/arp/monitors/process.d.ts.map +1 -0
  121. package/dist/arp/monitors/process.js +205 -0
  122. package/dist/arp/monitors/process.js.map +1 -0
  123. package/dist/arp/patterns/ai-threats.d.ts +48 -0
  124. package/dist/arp/patterns/ai-threats.d.ts.map +1 -0
  125. package/dist/arp/patterns/ai-threats.js +215 -0
  126. package/dist/arp/patterns/ai-threats.js.map +1 -0
  127. package/dist/arp/proxy/forward.d.ts +23 -0
  128. package/dist/arp/proxy/forward.d.ts.map +1 -0
  129. package/dist/arp/proxy/forward.js +152 -0
  130. package/dist/arp/proxy/forward.js.map +1 -0
  131. package/dist/arp/proxy/server.d.ts +45 -0
  132. package/dist/arp/proxy/server.d.ts.map +1 -0
  133. package/dist/arp/proxy/server.js +331 -0
  134. package/dist/arp/proxy/server.js.map +1 -0
  135. package/dist/arp/reporting/local-log.d.ts +22 -0
  136. package/dist/arp/reporting/local-log.d.ts.map +1 -0
  137. package/dist/arp/reporting/local-log.js +116 -0
  138. package/dist/arp/reporting/local-log.js.map +1 -0
  139. package/dist/arp/types.d.ts +230 -0
  140. package/dist/arp/types.d.ts.map +1 -0
  141. package/dist/arp/types.js +4 -0
  142. package/dist/arp/types.js.map +1 -0
  143. package/dist/attack/custom-payloads.d.ts +11 -0
  144. package/dist/attack/custom-payloads.d.ts.map +1 -0
  145. package/dist/attack/custom-payloads.js +108 -0
  146. package/dist/attack/custom-payloads.js.map +1 -0
  147. package/dist/attack/fail-policy.d.ts +16 -0
  148. package/dist/attack/fail-policy.d.ts.map +1 -0
  149. package/dist/attack/fail-policy.js +36 -0
  150. package/dist/attack/fail-policy.js.map +1 -0
  151. package/dist/attack/index.d.ts +12 -0
  152. package/dist/attack/index.d.ts.map +1 -0
  153. package/dist/attack/index.js +30 -0
  154. package/dist/attack/index.js.map +1 -0
  155. package/dist/attack/payloads/a2a-attacks.d.ts +12 -0
  156. package/dist/attack/payloads/a2a-attacks.d.ts.map +1 -0
  157. package/dist/attack/payloads/a2a-attacks.js +221 -0
  158. package/dist/attack/payloads/a2a-attacks.js.map +1 -0
  159. package/dist/attack/payloads/capability-abuse.d.ts +8 -0
  160. package/dist/attack/payloads/capability-abuse.d.ts.map +1 -0
  161. package/dist/attack/payloads/capability-abuse.js +222 -0
  162. package/dist/attack/payloads/capability-abuse.js.map +1 -0
  163. package/dist/attack/payloads/context-manipulation.d.ts +8 -0
  164. package/dist/attack/payloads/context-manipulation.d.ts.map +1 -0
  165. package/dist/attack/payloads/context-manipulation.js +217 -0
  166. package/dist/attack/payloads/context-manipulation.js.map +1 -0
  167. package/dist/attack/payloads/data-exfiltration.d.ts +8 -0
  168. package/dist/attack/payloads/data-exfiltration.d.ts.map +1 -0
  169. package/dist/attack/payloads/data-exfiltration.js +249 -0
  170. package/dist/attack/payloads/data-exfiltration.js.map +1 -0
  171. package/dist/attack/payloads/index.d.ts +29 -0
  172. package/dist/attack/payloads/index.d.ts.map +1 -0
  173. package/dist/attack/payloads/index.js +76 -0
  174. package/dist/attack/payloads/index.js.map +1 -0
  175. package/dist/attack/payloads/jailbreak.d.ts +8 -0
  176. package/dist/attack/payloads/jailbreak.d.ts.map +1 -0
  177. package/dist/attack/payloads/jailbreak.js +265 -0
  178. package/dist/attack/payloads/jailbreak.js.map +1 -0
  179. package/dist/attack/payloads/mcp-exploitation.d.ts +12 -0
  180. package/dist/attack/payloads/mcp-exploitation.d.ts.map +1 -0
  181. package/dist/attack/payloads/mcp-exploitation.js +221 -0
  182. package/dist/attack/payloads/mcp-exploitation.js.map +1 -0
  183. package/dist/attack/payloads/prompt-injection.d.ts +8 -0
  184. package/dist/attack/payloads/prompt-injection.d.ts.map +1 -0
  185. package/dist/attack/payloads/prompt-injection.js +262 -0
  186. package/dist/attack/payloads/prompt-injection.js.map +1 -0
  187. package/dist/attack/scanner.d.ts +84 -0
  188. package/dist/attack/scanner.d.ts.map +1 -0
  189. package/dist/attack/scanner.js +509 -0
  190. package/dist/attack/scanner.js.map +1 -0
  191. package/dist/attack/types.d.ts +153 -0
  192. package/dist/attack/types.d.ts.map +1 -0
  193. package/dist/attack/types.js +46 -0
  194. package/dist/attack/types.js.map +1 -0
  195. package/dist/benchmarks/index.d.ts +16 -0
  196. package/dist/benchmarks/index.d.ts.map +1 -0
  197. package/dist/benchmarks/index.js +27 -0
  198. package/dist/benchmarks/index.js.map +1 -0
  199. package/dist/benchmarks/oasb-1.d.ts +112 -0
  200. package/dist/benchmarks/oasb-1.d.ts.map +1 -0
  201. package/dist/benchmarks/oasb-1.js +1124 -0
  202. package/dist/benchmarks/oasb-1.js.map +1 -0
  203. package/dist/checker/check-skill.d.ts +48 -0
  204. package/dist/checker/check-skill.d.ts.map +1 -0
  205. package/dist/checker/check-skill.js +105 -0
  206. package/dist/checker/check-skill.js.map +1 -0
  207. package/dist/checker/index.d.ts +12 -0
  208. package/dist/checker/index.d.ts.map +1 -0
  209. package/dist/checker/index.js +16 -0
  210. package/dist/checker/index.js.map +1 -0
  211. package/dist/checker/permission-analyzer.d.ts +12 -0
  212. package/dist/checker/permission-analyzer.d.ts.map +1 -0
  213. package/dist/checker/permission-analyzer.js +84 -0
  214. package/dist/checker/permission-analyzer.js.map +1 -0
  215. package/dist/checker/publisher-verifier.d.ts +34 -0
  216. package/dist/checker/publisher-verifier.d.ts.map +1 -0
  217. package/dist/checker/publisher-verifier.js +121 -0
  218. package/dist/checker/publisher-verifier.js.map +1 -0
  219. package/dist/checker/skill-identifier.d.ts +14 -0
  220. package/dist/checker/skill-identifier.d.ts.map +1 -0
  221. package/dist/checker/skill-identifier.js +55 -0
  222. package/dist/checker/skill-identifier.js.map +1 -0
  223. package/dist/cli.d.ts +7 -0
  224. package/dist/cli.d.ts.map +1 -0
  225. package/dist/cli.js +3534 -0
  226. package/dist/cli.js.map +1 -0
  227. package/dist/hardening/index.d.ts +7 -0
  228. package/dist/hardening/index.d.ts.map +1 -0
  229. package/dist/hardening/index.js +9 -0
  230. package/dist/hardening/index.js.map +1 -0
  231. package/dist/hardening/llm-checks.d.ts +18 -0
  232. package/dist/hardening/llm-checks.d.ts.map +1 -0
  233. package/dist/hardening/llm-checks.js +434 -0
  234. package/dist/hardening/llm-checks.js.map +1 -0
  235. package/dist/hardening/mcp-tool-enum.d.ts +45 -0
  236. package/dist/hardening/mcp-tool-enum.d.ts.map +1 -0
  237. package/dist/hardening/mcp-tool-enum.js +315 -0
  238. package/dist/hardening/mcp-tool-enum.js.map +1 -0
  239. package/dist/hardening/scanner.d.ts +147 -0
  240. package/dist/hardening/scanner.d.ts.map +1 -0
  241. package/dist/hardening/scanner.js +5445 -0
  242. package/dist/hardening/scanner.js.map +1 -0
  243. package/dist/hardening/security-check.d.ts +85 -0
  244. package/dist/hardening/security-check.d.ts.map +1 -0
  245. package/dist/hardening/security-check.js +6 -0
  246. package/dist/hardening/security-check.js.map +1 -0
  247. package/dist/hardening/shell-checks.d.ts +21 -0
  248. package/dist/hardening/shell-checks.d.ts.map +1 -0
  249. package/dist/hardening/shell-checks.js +236 -0
  250. package/dist/hardening/shell-checks.js.map +1 -0
  251. package/dist/index.d.ts +38 -4
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +91 -3525
  254. package/dist/index.js.map +1 -1
  255. package/dist/mcp-server.js +10 -10
  256. package/dist/mcp-server.js.map +1 -1
  257. package/dist/oasb/config/dvaa-targets.d.ts +13 -0
  258. package/dist/oasb/config/dvaa-targets.d.ts.map +1 -0
  259. package/dist/oasb/config/dvaa-targets.js +89 -0
  260. package/dist/oasb/config/dvaa-targets.js.map +1 -0
  261. package/dist/oasb/harness/arp-wrapper.d.ts +29 -0
  262. package/dist/oasb/harness/arp-wrapper.d.ts.map +1 -0
  263. package/dist/oasb/harness/arp-wrapper.js +134 -0
  264. package/dist/oasb/harness/arp-wrapper.js.map +1 -0
  265. package/dist/oasb/harness/dvaa-client.d.ts +46 -0
  266. package/dist/oasb/harness/dvaa-client.d.ts.map +1 -0
  267. package/dist/oasb/harness/dvaa-client.js +98 -0
  268. package/dist/oasb/harness/dvaa-client.js.map +1 -0
  269. package/dist/oasb/harness/dvaa-manager.d.ts +17 -0
  270. package/dist/oasb/harness/dvaa-manager.d.ts.map +1 -0
  271. package/dist/oasb/harness/dvaa-manager.js +132 -0
  272. package/dist/oasb/harness/dvaa-manager.js.map +1 -0
  273. package/dist/oasb/harness/event-collector.d.ts +33 -0
  274. package/dist/oasb/harness/event-collector.d.ts.map +1 -0
  275. package/dist/oasb/harness/event-collector.js +86 -0
  276. package/dist/oasb/harness/event-collector.js.map +1 -0
  277. package/dist/oasb/harness/metrics.d.ts +14 -0
  278. package/dist/oasb/harness/metrics.d.ts.map +1 -0
  279. package/dist/oasb/harness/metrics.js +56 -0
  280. package/dist/oasb/harness/metrics.js.map +1 -0
  281. package/dist/oasb/harness/mock-llm-adapter.d.ts +34 -0
  282. package/dist/oasb/harness/mock-llm-adapter.d.ts.map +1 -0
  283. package/dist/oasb/harness/mock-llm-adapter.js +69 -0
  284. package/dist/oasb/harness/mock-llm-adapter.js.map +1 -0
  285. package/dist/oasb/harness/types.d.ts +74 -0
  286. package/dist/oasb/harness/types.d.ts.map +1 -0
  287. package/dist/oasb/harness/types.js +3 -0
  288. package/dist/oasb/harness/types.js.map +1 -0
  289. package/dist/plugins/core.d.ts +109 -0
  290. package/dist/plugins/core.d.ts.map +1 -0
  291. package/dist/plugins/core.js +30 -0
  292. package/dist/plugins/core.js.map +1 -0
  293. package/dist/plugins/credvault.d.ts +22 -0
  294. package/dist/plugins/credvault.d.ts.map +1 -0
  295. package/dist/plugins/credvault.js +374 -0
  296. package/dist/plugins/credvault.js.map +1 -0
  297. package/dist/plugins/signcrypt.d.ts +27 -0
  298. package/dist/plugins/signcrypt.d.ts.map +1 -0
  299. package/dist/plugins/signcrypt.js +317 -0
  300. package/dist/plugins/signcrypt.js.map +1 -0
  301. package/dist/plugins/skillguard.d.ts +25 -0
  302. package/dist/plugins/skillguard.d.ts.map +1 -0
  303. package/dist/plugins/skillguard.js +346 -0
  304. package/dist/plugins/skillguard.js.map +1 -0
  305. package/dist/registry/client.d.ts +125 -0
  306. package/dist/registry/client.d.ts.map +1 -0
  307. package/dist/registry/client.js +308 -0
  308. package/dist/registry/client.js.map +1 -0
  309. package/dist/registry/contribution.d.ts +178 -0
  310. package/dist/registry/contribution.d.ts.map +1 -0
  311. package/dist/registry/contribution.js +272 -0
  312. package/dist/registry/contribution.js.map +1 -0
  313. package/dist/registry/index.d.ts +3 -0
  314. package/dist/registry/index.d.ts.map +1 -0
  315. package/dist/registry/index.js +10 -0
  316. package/dist/registry/index.js.map +1 -0
  317. package/dist/scanner/external-scanner.d.ts +13 -0
  318. package/dist/scanner/external-scanner.d.ts.map +1 -0
  319. package/dist/scanner/external-scanner.js +299 -0
  320. package/dist/scanner/external-scanner.js.map +1 -0
  321. package/dist/scanner/index.d.ts +6 -0
  322. package/dist/scanner/index.d.ts.map +1 -0
  323. package/dist/scanner/index.js +9 -0
  324. package/dist/scanner/index.js.map +1 -0
  325. package/dist/scanner/types.d.ts +32 -0
  326. package/dist/scanner/types.d.ts.map +1 -0
  327. package/dist/scanner/types.js +6 -0
  328. package/dist/scanner/types.js.map +1 -0
  329. package/dist/semantic/deep-scan.d.ts +13 -0
  330. package/dist/semantic/deep-scan.d.ts.map +1 -0
  331. package/dist/semantic/deep-scan.js +63 -0
  332. package/dist/semantic/deep-scan.js.map +1 -0
  333. package/dist/semantic/index.d.ts +17 -0
  334. package/dist/semantic/index.d.ts.map +1 -0
  335. package/dist/semantic/index.js +39 -0
  336. package/dist/semantic/index.js.map +1 -0
  337. package/dist/semantic/integration/cost-estimator.d.ts +17 -0
  338. package/dist/semantic/integration/cost-estimator.d.ts.map +1 -0
  339. package/dist/semantic/integration/cost-estimator.js +54 -0
  340. package/dist/semantic/integration/cost-estimator.js.map +1 -0
  341. package/dist/semantic/integration/finding-adapter.d.ts +34 -0
  342. package/dist/semantic/integration/finding-adapter.d.ts.map +1 -0
  343. package/dist/semantic/integration/finding-adapter.js +41 -0
  344. package/dist/semantic/integration/finding-adapter.js.map +1 -0
  345. package/dist/semantic/integration/oasb-upgrader.d.ts +20 -0
  346. package/dist/semantic/integration/oasb-upgrader.d.ts.map +1 -0
  347. package/dist/semantic/integration/oasb-upgrader.js +47 -0
  348. package/dist/semantic/integration/oasb-upgrader.js.map +1 -0
  349. package/dist/semantic/llm/budget.d.ts +50 -0
  350. package/dist/semantic/llm/budget.d.ts.map +1 -0
  351. package/dist/semantic/llm/budget.js +139 -0
  352. package/dist/semantic/llm/budget.js.map +1 -0
  353. package/dist/semantic/llm/cache.d.ts +36 -0
  354. package/dist/semantic/llm/cache.d.ts.map +1 -0
  355. package/dist/semantic/llm/cache.js +103 -0
  356. package/dist/semantic/llm/cache.js.map +1 -0
  357. package/dist/semantic/llm/client.d.ts +49 -0
  358. package/dist/semantic/llm/client.d.ts.map +1 -0
  359. package/dist/semantic/llm/client.js +64 -0
  360. package/dist/semantic/llm/client.js.map +1 -0
  361. package/dist/semantic/llm/index.d.ts +33 -0
  362. package/dist/semantic/llm/index.d.ts.map +1 -0
  363. package/dist/semantic/llm/index.js +129 -0
  364. package/dist/semantic/llm/index.js.map +1 -0
  365. package/dist/semantic/llm/prompts.d.ts +30 -0
  366. package/dist/semantic/llm/prompts.d.ts.map +1 -0
  367. package/dist/semantic/llm/prompts.js +120 -0
  368. package/dist/semantic/llm/prompts.js.map +1 -0
  369. package/dist/semantic/structural/credential-context.d.ts +14 -0
  370. package/dist/semantic/structural/credential-context.d.ts.map +1 -0
  371. package/dist/semantic/structural/credential-context.js +295 -0
  372. package/dist/semantic/structural/credential-context.js.map +1 -0
  373. package/dist/semantic/structural/index.d.ts +28 -0
  374. package/dist/semantic/structural/index.d.ts.map +1 -0
  375. package/dist/semantic/structural/index.js +138 -0
  376. package/dist/semantic/structural/index.js.map +1 -0
  377. package/dist/semantic/structural/instruction.d.ts +19 -0
  378. package/dist/semantic/structural/instruction.d.ts.map +1 -0
  379. package/dist/semantic/structural/instruction.js +167 -0
  380. package/dist/semantic/structural/instruction.js.map +1 -0
  381. package/dist/semantic/structural/mcp-config.d.ts +22 -0
  382. package/dist/semantic/structural/mcp-config.d.ts.map +1 -0
  383. package/dist/semantic/structural/mcp-config.js +294 -0
  384. package/dist/semantic/structural/mcp-config.js.map +1 -0
  385. package/dist/semantic/structural/permission-model.d.ts +16 -0
  386. package/dist/semantic/structural/permission-model.d.ts.map +1 -0
  387. package/dist/semantic/structural/permission-model.js +121 -0
  388. package/dist/semantic/structural/permission-model.js.map +1 -0
  389. package/dist/semantic/types.d.ts +122 -0
  390. package/dist/semantic/types.d.ts.map +1 -0
  391. package/dist/semantic/types.js +10 -0
  392. package/dist/semantic/types.js.map +1 -0
  393. package/package.json +25 -14
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Tool Enumeration (MCPTOOL-001 to MCPTOOL-005)
4
+ *
5
+ * Connects to configured MCP servers, discovers their tools via JSON-RPC,
6
+ * and classifies dangerous capabilities. Only runs with --deep or --live-mcp flag.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.discoverMcpConfigs = discoverMcpConfigs;
43
+ exports.enumerateStdioTools = enumerateStdioTools;
44
+ exports.classifyTools = classifyTools;
45
+ exports.checkMcpToolEnumeration = checkMcpToolEnumeration;
46
+ const child_process_1 = require("child_process");
47
+ const fs = __importStar(require("fs/promises"));
48
+ const path = __importStar(require("path"));
49
+ const os = __importStar(require("os"));
50
+ // Dangerous capability classification
51
+ const EXECUTION_TOOLS = new Set([
52
+ 'execute_command', 'bash', 'shell', 'run_command', 'exec',
53
+ 'run_script', 'terminal', 'execute', 'run', 'system',
54
+ 'execute_shell', 'run_shell', 'subprocess',
55
+ ]);
56
+ const FILESYSTEM_WRITE_TOOLS = new Set([
57
+ 'write_file', 'create_file', 'delete_file', 'edit_file',
58
+ 'write', 'remove_file', 'mkdir', 'rename_file', 'move_file',
59
+ 'append_file', 'overwrite_file', 'file_write',
60
+ ]);
61
+ const NETWORK_TOOLS = new Set([
62
+ 'fetch', 'http_request', 'curl', 'wget', 'request',
63
+ 'http_get', 'http_post', 'web_request', 'send_request',
64
+ 'make_request', 'api_call',
65
+ ]);
66
+ const CREDENTIAL_TOOLS = new Set([
67
+ 'get_secret', 'read_env', 'get_credential', 'get_password',
68
+ 'read_secret', 'fetch_secret', 'env_var', 'get_token',
69
+ 'read_keychain', 'get_api_key',
70
+ ]);
71
+ const SPAWN_TIMEOUT_MS = 5000;
72
+ const JSON_RPC_VERSION = '2.0';
73
+ /**
74
+ * Discover MCP server configurations from known config file locations.
75
+ */
76
+ async function discoverMcpConfigs(targetDir) {
77
+ const configs = new Map();
78
+ const configPaths = [
79
+ path.join(targetDir, 'mcp.json'),
80
+ path.join(targetDir, '.cursor', 'mcp.json'),
81
+ path.join(targetDir, '.vscode', 'mcp.json'),
82
+ path.join(os.homedir(), '.claude', 'settings.json'),
83
+ ];
84
+ for (const configPath of configPaths) {
85
+ try {
86
+ const content = await fs.readFile(configPath, 'utf-8');
87
+ const parsed = JSON.parse(content);
88
+ // Handle different config formats
89
+ const servers = parsed.mcpServers || parsed.servers || {};
90
+ for (const [name, serverConfig] of Object.entries(servers)) {
91
+ const config = serverConfig;
92
+ if (config.command || config.url) {
93
+ configs.set(name, {
94
+ config: {
95
+ command: config.command,
96
+ args: config.args,
97
+ env: config.env,
98
+ url: config.url,
99
+ },
100
+ configPath,
101
+ });
102
+ }
103
+ }
104
+ }
105
+ catch {
106
+ // Config file doesn't exist or is invalid, skip
107
+ }
108
+ }
109
+ return configs;
110
+ }
111
+ /**
112
+ * Connect to a stdio MCP server and enumerate its tools.
113
+ */
114
+ async function enumerateStdioTools(serverName, config) {
115
+ return new Promise((resolve) => {
116
+ let child = null;
117
+ let buffer = '';
118
+ let resolved = false;
119
+ const cleanup = () => {
120
+ if (child && !child.killed) {
121
+ child.kill('SIGTERM');
122
+ }
123
+ };
124
+ const finish = (result) => {
125
+ if (!resolved) {
126
+ resolved = true;
127
+ cleanup();
128
+ resolve(result);
129
+ }
130
+ };
131
+ // Timeout
132
+ const timer = setTimeout(() => {
133
+ finish({ serverName, configPath: '', tools: [], error: 'Timeout after 5s' });
134
+ }, SPAWN_TIMEOUT_MS);
135
+ try {
136
+ child = (0, child_process_1.spawn)(config.command, config.args || [], {
137
+ stdio: ['pipe', 'pipe', 'pipe'],
138
+ env: { ...process.env, ...config.env },
139
+ });
140
+ child.on('error', (err) => {
141
+ clearTimeout(timer);
142
+ finish({ serverName, configPath: '', tools: [], error: err.message });
143
+ });
144
+ child.stdout?.on('data', (data) => {
145
+ buffer += data.toString();
146
+ // Try to parse JSON-RPC responses
147
+ const lines = buffer.split('\n');
148
+ for (const line of lines) {
149
+ const trimmed = line.trim();
150
+ if (!trimmed)
151
+ continue;
152
+ try {
153
+ const msg = JSON.parse(trimmed);
154
+ // Response to initialize
155
+ if (msg.id === 1 && msg.result) {
156
+ // Send tools/list
157
+ const toolsRequest = JSON.stringify({
158
+ jsonrpc: JSON_RPC_VERSION,
159
+ id: 2,
160
+ method: 'tools/list',
161
+ params: {},
162
+ }) + '\n';
163
+ child?.stdin?.write(toolsRequest);
164
+ }
165
+ // Response to tools/list
166
+ if (msg.id === 2 && msg.result) {
167
+ clearTimeout(timer);
168
+ const tools = (msg.result.tools || []).map((t) => ({
169
+ name: t.name,
170
+ description: t.description,
171
+ inputSchema: t.inputSchema,
172
+ }));
173
+ finish({ serverName, configPath: '', tools });
174
+ }
175
+ }
176
+ catch {
177
+ // Not valid JSON, skip
178
+ }
179
+ }
180
+ // Keep only the last incomplete line in buffer
181
+ buffer = lines[lines.length - 1] || '';
182
+ });
183
+ // Send initialize request
184
+ const initRequest = JSON.stringify({
185
+ jsonrpc: JSON_RPC_VERSION,
186
+ id: 1,
187
+ method: 'initialize',
188
+ params: {
189
+ protocolVersion: '2024-11-05',
190
+ capabilities: {},
191
+ clientInfo: { name: 'hackmyagent-scanner', version: '0.8.0' },
192
+ },
193
+ }) + '\n';
194
+ child.stdin?.write(initRequest);
195
+ }
196
+ catch (err) {
197
+ clearTimeout(timer);
198
+ finish({ serverName, configPath: '', tools: [], error: err.message });
199
+ }
200
+ });
201
+ }
202
+ /**
203
+ * Classify tool capabilities and generate security findings.
204
+ */
205
+ function classifyTools(serverName, configPath, tools) {
206
+ const findings = [];
207
+ // MCPTOOL-001: Execution tools
208
+ const execTools = tools.filter((t) => EXECUTION_TOOLS.has(t.name.toLowerCase()));
209
+ if (execTools.length > 0) {
210
+ findings.push({
211
+ checkId: 'MCPTOOL-001',
212
+ name: 'MCP server exposes command execution',
213
+ description: `MCP server "${serverName}" provides tools that can execute arbitrary commands: ${execTools.map((t) => t.name).join(', ')}. This allows the AI to run any system command.`,
214
+ category: 'mcp-capability',
215
+ severity: 'critical',
216
+ passed: false,
217
+ message: `${serverName}: ${execTools.length} execution tool(s) exposed`,
218
+ fixable: false,
219
+ file: configPath,
220
+ fix: 'Restrict command execution tools or add an allowlist of permitted commands.',
221
+ });
222
+ }
223
+ // MCPTOOL-002: Filesystem write tools
224
+ const fsWriteTools = tools.filter((t) => FILESYSTEM_WRITE_TOOLS.has(t.name.toLowerCase()));
225
+ if (fsWriteTools.length > 0) {
226
+ findings.push({
227
+ checkId: 'MCPTOOL-002',
228
+ name: 'MCP server exposes filesystem write',
229
+ description: `MCP server "${serverName}" provides tools that can write/delete files: ${fsWriteTools.map((t) => t.name).join(', ')}. This allows modifying system files.`,
230
+ category: 'mcp-capability',
231
+ severity: 'high',
232
+ passed: false,
233
+ message: `${serverName}: ${fsWriteTools.length} filesystem write tool(s) exposed`,
234
+ fixable: false,
235
+ file: configPath,
236
+ fix: 'Add path restrictions to filesystem write tools.',
237
+ });
238
+ }
239
+ // MCPTOOL-003: Unrestricted network tools
240
+ const netTools = tools.filter((t) => NETWORK_TOOLS.has(t.name.toLowerCase()));
241
+ if (netTools.length > 0) {
242
+ findings.push({
243
+ checkId: 'MCPTOOL-003',
244
+ name: 'MCP server exposes unrestricted network access',
245
+ description: `MCP server "${serverName}" provides tools for network requests: ${netTools.map((t) => t.name).join(', ')}. This allows data exfiltration.`,
246
+ category: 'mcp-capability',
247
+ severity: 'high',
248
+ passed: false,
249
+ message: `${serverName}: ${netTools.length} network tool(s) exposed`,
250
+ fixable: false,
251
+ file: configPath,
252
+ fix: 'Restrict network access to specific domains or add an allowlist.',
253
+ });
254
+ }
255
+ // MCPTOOL-004: Credential-accessing tools
256
+ const credTools = tools.filter((t) => CREDENTIAL_TOOLS.has(t.name.toLowerCase()));
257
+ if (credTools.length > 0) {
258
+ findings.push({
259
+ checkId: 'MCPTOOL-004',
260
+ name: 'MCP server exposes credential access',
261
+ description: `MCP server "${serverName}" provides tools that access credentials: ${credTools.map((t) => t.name).join(', ')}.`,
262
+ category: 'mcp-capability',
263
+ severity: 'critical',
264
+ passed: false,
265
+ message: `${serverName}: ${credTools.length} credential-accessing tool(s) exposed`,
266
+ fixable: false,
267
+ file: configPath,
268
+ fix: 'Remove credential access tools or use secretless-ai broker for credential isolation.',
269
+ });
270
+ }
271
+ // MCPTOOL-005: Server with 10+ tools and no apparent access control
272
+ if (tools.length >= 10) {
273
+ findings.push({
274
+ checkId: 'MCPTOOL-005',
275
+ name: 'MCP server exposes excessive tools',
276
+ description: `MCP server "${serverName}" exposes ${tools.length} tools. Large tool surfaces increase the attack area for prompt injection.`,
277
+ category: 'mcp-capability',
278
+ severity: 'medium',
279
+ passed: false,
280
+ message: `${serverName}: ${tools.length} tools exposed (threshold: 10)`,
281
+ fixable: false,
282
+ file: configPath,
283
+ fix: 'Reduce the number of exposed tools or implement per-tool access controls.',
284
+ });
285
+ }
286
+ return findings;
287
+ }
288
+ /**
289
+ * Run full MCP tool enumeration scan.
290
+ * Discovers MCP configs, connects to each server, enumerates tools, classifies dangers.
291
+ */
292
+ async function checkMcpToolEnumeration(targetDir, onProgress) {
293
+ const findings = [];
294
+ const configs = await discoverMcpConfigs(targetDir);
295
+ if (configs.size === 0)
296
+ return findings;
297
+ onProgress?.(`Found ${configs.size} MCP server(s), enumerating tools...`);
298
+ for (const [serverName, { config, configPath }] of configs) {
299
+ onProgress?.(`Scanning ${serverName}...`);
300
+ if (config.command) {
301
+ const result = await enumerateStdioTools(serverName, config);
302
+ if (result.error) {
303
+ // Non-fatal: server couldn't be reached
304
+ onProgress?.(` ${serverName}: ${result.error}`);
305
+ continue;
306
+ }
307
+ const serverFindings = classifyTools(serverName, configPath, result.tools);
308
+ findings.push(...serverFindings);
309
+ onProgress?.(` ${serverName}: ${result.tools.length} tools, ${serverFindings.length} findings`);
310
+ }
311
+ // SSE servers would go here (future)
312
+ }
313
+ return findings;
314
+ }
315
+ //# sourceMappingURL=mcp-tool-enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool-enum.js","sourceRoot":"","sources":["../../src/hardening/mcp-tool-enum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Hardening Scanner
3
+ * Scans for security issues and optionally auto-fixes them
4
+ */
5
+ import type { ScanResult } from './security-check';
6
+ export interface ScanOptions {
7
+ targetDir: string;
8
+ autoFix?: boolean;
9
+ /** Preview fixes without applying them */
10
+ dryRun?: boolean;
11
+ /** Check IDs to ignore (e.g., ['CRED-001', 'GIT-002']) */
12
+ ignore?: string[];
13
+ /** File/folder paths to ignore (e.g., ['.env', 'secrets/', 'test/']) */
14
+ ignorePaths?: string[];
15
+ /** Enable Layer 3 LLM analysis (requires ANTHROPIC_API_KEY in CLI mode) */
16
+ deep?: boolean;
17
+ /** Progress callback for long-running operations */
18
+ onProgress?: (message: string) => void;
19
+ }
20
+ export declare class HardeningScanner {
21
+ private static readonly BACKUP_FILES;
22
+ /**
23
+ * Validate that a file path is within the target directory (no path traversal)
24
+ */
25
+ private isPathWithinDirectory;
26
+ scan(options: ScanOptions): Promise<ScanResult>;
27
+ private detectPlatform;
28
+ /**
29
+ * Detect the project type based on package.json and project structure
30
+ */
31
+ private detectProjectType;
32
+ /**
33
+ * Check if a finding applies to the given project type
34
+ */
35
+ private findingAppliesTo;
36
+ private checkCredentialExposure;
37
+ private checkClaudeMd;
38
+ private checkMcpConfig;
39
+ private checkFilePermissions;
40
+ private checkGitSecurity;
41
+ private checkNetworkSecurity;
42
+ private checkMcpAdvanced;
43
+ private checkClaudeAdvanced;
44
+ private checkCursorConfig;
45
+ private checkVscodeConfig;
46
+ private checkCredentialsAdvanced;
47
+ private checkPermissionsAdvanced;
48
+ private checkEnvironmentSecurity;
49
+ private checkLoggingSecurity;
50
+ private checkDependencySecurity;
51
+ private checkAuthSecurity;
52
+ private checkProcessSecurity;
53
+ private checkClaudeExtended;
54
+ private checkMcpExtended;
55
+ private checkNetworkExtended;
56
+ private checkAPISecurity;
57
+ private checkSecretManagement;
58
+ private checkIOSecurity;
59
+ /**
60
+ * Prompt injection defense checks
61
+ */
62
+ private checkPromptSecurity;
63
+ /**
64
+ * Input validation and sanitization checks
65
+ */
66
+ private checkInputValidation;
67
+ /**
68
+ * Rate limiting and throttling checks
69
+ */
70
+ private checkRateLimiting;
71
+ /**
72
+ * Session and timeout security checks
73
+ */
74
+ private checkSessionSecurity;
75
+ /**
76
+ * Data encryption checks
77
+ */
78
+ private checkEncryption;
79
+ /**
80
+ * Audit trail and logging security checks
81
+ */
82
+ private checkAuditTrail;
83
+ /**
84
+ * Process isolation and sandboxing checks
85
+ */
86
+ private checkSandboxing;
87
+ /**
88
+ * MCP tool permission boundary checks
89
+ */
90
+ private checkToolBoundaries;
91
+ private calculateScore;
92
+ /**
93
+ * Create a backup of files that may be modified during auto-fix
94
+ */
95
+ private createBackup;
96
+ /**
97
+ * Rollback to the most recent backup
98
+ */
99
+ rollback(targetDir: string): Promise<void>;
100
+ /**
101
+ * Recursively find SKILL.md and *.skill.md files
102
+ * Skips node_modules and limits depth to 5
103
+ */
104
+ private findSkillFiles;
105
+ /**
106
+ * OpenClaw skill security checks (SKILL-001 to SKILL-006)
107
+ */
108
+ private checkOpenclawSkills;
109
+ /**
110
+ * Recursively find HEARTBEAT.md and *.heartbeat.md files
111
+ * Skips node_modules and limits depth to 5
112
+ */
113
+ private findHeartbeatFiles;
114
+ /**
115
+ * OpenClaw heartbeat security checks (HEARTBEAT-001 to HEARTBEAT-006)
116
+ */
117
+ private checkOpenclawHeartbeat;
118
+ /**
119
+ * Find OpenClaw gateway configuration files
120
+ */
121
+ private findGatewayConfigFiles;
122
+ /**
123
+ * OpenClaw gateway security checks (GATEWAY-001 to GATEWAY-006)
124
+ */
125
+ private checkOpenclawGateway;
126
+ /**
127
+ * Calculate Levenshtein distance between two strings
128
+ */
129
+ private levenshteinDistance;
130
+ /**
131
+ * Find files matching a pattern recursively (max depth 3, skips node_modules/.git)
132
+ */
133
+ private findFilesMatching;
134
+ /**
135
+ * OpenClaw config security checks (CONFIG-001 to CONFIG-006)
136
+ */
137
+ private checkOpenclawConfig;
138
+ /**
139
+ * OpenClaw supply chain security checks (SUPPLY-001 to SUPPLY-004)
140
+ */
141
+ private checkOpenclawSupplyChain;
142
+ /**
143
+ * OpenClaw CVE-specific checks (CVE-001, CVE-002, CVE-003, CVE-004)
144
+ */
145
+ private checkOpenclawCVE;
146
+ }
147
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/hardening/scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,kBAAkB,CAAC;AA6D3F,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AA8HD,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAiBlC;IAEF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAMvB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;YAuQvC,cAAc;IAsE5B;;OAEG;YACW,iBAAiB;IA+F/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;YAeV,uBAAuB;YAmGvB,aAAa;YAgDb,cAAc;YA+Fd,oBAAoB;YAwDpB,gBAAgB;YA0IhB,oBAAoB;YAgFpB,gBAAgB;YA2IhB,mBAAmB;YA4EnB,iBAAiB;YAyCjB,iBAAiB;YA+DjB,wBAAwB;YA0FxB,wBAAwB;YAmExB,wBAAwB;YAqHxB,oBAAoB;YA+GpB,uBAAuB;YA8HvB,iBAAiB;YA8GjB,oBAAoB;YAuGpB,mBAAmB;YAiGnB,gBAAgB;YAmIhB,oBAAoB;YAoIpB,gBAAgB;YAyHhB,qBAAqB;YA+GrB,eAAe;IAiI7B;;OAEG;YACW,mBAAmB;IA8GjC;;OAEG;YACW,oBAAoB;IAiKlC;;OAEG;YACW,iBAAiB;IA4I/B;;OAEG;YACW,oBAAoB;IAwIlC;;OAEG;YACW,eAAe;IAqJ7B;;OAEG;YACW,eAAe;IAuI7B;;OAEG;YACW,eAAe;IAyG7B;;OAEG;YACW,mBAAmB;IAmHjC,OAAO,CAAC,cAAc;IAsBtB;;OAEG;YACW,YAAY;IAkD1B;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DhD;;;OAGG;YACW,cAAc;IAgD5B;;OAEG;YACW,mBAAmB;IAoUjC;;;OAGG;YACW,kBAAkB;IAgDhC;;OAEG;YACW,sBAAsB;IA2LpC;;OAEG;YACW,sBAAsB;IA+BpC;;OAEG;YACW,oBAAoB;IAqVlC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;YACW,iBAAiB;IA8D/B;;OAEG;YACW,mBAAmB;IA6VjC;;OAEG;YACW,wBAAwB;IA4OtC;;OAEG;YACW,gBAAgB;CA4J/B"}