clawsec 0.0.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 (361) hide show
  1. package/README.md +560 -0
  2. package/dist/bin/clawsec.d.ts +7 -0
  3. package/dist/bin/clawsec.d.ts.map +1 -0
  4. package/dist/bin/clawsec.js +12 -0
  5. package/dist/bin/clawsec.js.map +1 -0
  6. package/dist/src/actions/block.d.ts +22 -0
  7. package/dist/src/actions/block.d.ts.map +1 -0
  8. package/dist/src/actions/block.js +83 -0
  9. package/dist/src/actions/block.js.map +1 -0
  10. package/dist/src/actions/confirm.d.ts +35 -0
  11. package/dist/src/actions/confirm.d.ts.map +1 -0
  12. package/dist/src/actions/confirm.js +156 -0
  13. package/dist/src/actions/confirm.js.map +1 -0
  14. package/dist/src/actions/executor.d.ts +64 -0
  15. package/dist/src/actions/executor.d.ts.map +1 -0
  16. package/dist/src/actions/executor.js +114 -0
  17. package/dist/src/actions/executor.js.map +1 -0
  18. package/dist/src/actions/index.d.ts +13 -0
  19. package/dist/src/actions/index.d.ts.map +1 -0
  20. package/dist/src/actions/index.js +15 -0
  21. package/dist/src/actions/index.js.map +1 -0
  22. package/dist/src/actions/log.d.ts +19 -0
  23. package/dist/src/actions/log.d.ts.map +1 -0
  24. package/dist/src/actions/log.js +63 -0
  25. package/dist/src/actions/log.js.map +1 -0
  26. package/dist/src/actions/types.d.ts +85 -0
  27. package/dist/src/actions/types.d.ts.map +1 -0
  28. package/dist/src/actions/types.js +78 -0
  29. package/dist/src/actions/types.js.map +1 -0
  30. package/dist/src/actions/warn.d.ts +22 -0
  31. package/dist/src/actions/warn.d.ts.map +1 -0
  32. package/dist/src/actions/warn.js +84 -0
  33. package/dist/src/actions/warn.js.map +1 -0
  34. package/dist/src/approval/agent-confirm.d.ts +104 -0
  35. package/dist/src/approval/agent-confirm.d.ts.map +1 -0
  36. package/dist/src/approval/agent-confirm.js +173 -0
  37. package/dist/src/approval/agent-confirm.js.map +1 -0
  38. package/dist/src/approval/index.d.ts +14 -0
  39. package/dist/src/approval/index.d.ts.map +1 -0
  40. package/dist/src/approval/index.js +9 -0
  41. package/dist/src/approval/index.js.map +1 -0
  42. package/dist/src/approval/native.d.ts +56 -0
  43. package/dist/src/approval/native.d.ts.map +1 -0
  44. package/dist/src/approval/native.js +196 -0
  45. package/dist/src/approval/native.js.map +1 -0
  46. package/dist/src/approval/store.d.ts +88 -0
  47. package/dist/src/approval/store.d.ts.map +1 -0
  48. package/dist/src/approval/store.js +192 -0
  49. package/dist/src/approval/store.js.map +1 -0
  50. package/dist/src/approval/types.d.ts +119 -0
  51. package/dist/src/approval/types.d.ts.map +1 -0
  52. package/dist/src/approval/types.js +6 -0
  53. package/dist/src/approval/types.js.map +1 -0
  54. package/dist/src/approval/webhook.d.ts +170 -0
  55. package/dist/src/approval/webhook.d.ts.map +1 -0
  56. package/dist/src/approval/webhook.js +362 -0
  57. package/dist/src/approval/webhook.js.map +1 -0
  58. package/dist/src/cli/commands/audit.d.ts +43 -0
  59. package/dist/src/cli/commands/audit.d.ts.map +1 -0
  60. package/dist/src/cli/commands/audit.js +115 -0
  61. package/dist/src/cli/commands/audit.js.map +1 -0
  62. package/dist/src/cli/commands/feedback.d.ts +27 -0
  63. package/dist/src/cli/commands/feedback.d.ts.map +1 -0
  64. package/dist/src/cli/commands/feedback.js +228 -0
  65. package/dist/src/cli/commands/feedback.js.map +1 -0
  66. package/dist/src/cli/commands/index.d.ts +11 -0
  67. package/dist/src/cli/commands/index.d.ts.map +1 -0
  68. package/dist/src/cli/commands/index.js +13 -0
  69. package/dist/src/cli/commands/index.js.map +1 -0
  70. package/dist/src/cli/commands/status.d.ts +20 -0
  71. package/dist/src/cli/commands/status.d.ts.map +1 -0
  72. package/dist/src/cli/commands/status.js +122 -0
  73. package/dist/src/cli/commands/status.js.map +1 -0
  74. package/dist/src/cli/commands/test.d.ts +23 -0
  75. package/dist/src/cli/commands/test.d.ts.map +1 -0
  76. package/dist/src/cli/commands/test.js +134 -0
  77. package/dist/src/cli/commands/test.js.map +1 -0
  78. package/dist/src/cli/commands/types.d.ts +81 -0
  79. package/dist/src/cli/commands/types.d.ts.map +1 -0
  80. package/dist/src/cli/commands/types.js +6 -0
  81. package/dist/src/cli/commands/types.js.map +1 -0
  82. package/dist/src/cli/index.d.ts +17 -0
  83. package/dist/src/cli/index.d.ts.map +1 -0
  84. package/dist/src/cli/index.js +267 -0
  85. package/dist/src/cli/index.js.map +1 -0
  86. package/dist/src/config/defaults.d.ts +20 -0
  87. package/dist/src/config/defaults.d.ts.map +1 -0
  88. package/dist/src/config/defaults.js +123 -0
  89. package/dist/src/config/defaults.js.map +1 -0
  90. package/dist/src/config/index.d.ts +8 -0
  91. package/dist/src/config/index.d.ts.map +1 -0
  92. package/dist/src/config/index.js +41 -0
  93. package/dist/src/config/index.js.map +1 -0
  94. package/dist/src/config/loader.d.ts +99 -0
  95. package/dist/src/config/loader.d.ts.map +1 -0
  96. package/dist/src/config/loader.js +242 -0
  97. package/dist/src/config/loader.js.map +1 -0
  98. package/dist/src/config/schema.d.ts +627 -0
  99. package/dist/src/config/schema.d.ts.map +1 -0
  100. package/dist/src/config/schema.js +585 -0
  101. package/dist/src/config/schema.js.map +1 -0
  102. package/dist/src/detectors/destructive/cloud-detector.d.ts +51 -0
  103. package/dist/src/detectors/destructive/cloud-detector.d.ts.map +1 -0
  104. package/dist/src/detectors/destructive/cloud-detector.js +556 -0
  105. package/dist/src/detectors/destructive/cloud-detector.js.map +1 -0
  106. package/dist/src/detectors/destructive/code-detector.d.ts +59 -0
  107. package/dist/src/detectors/destructive/code-detector.d.ts.map +1 -0
  108. package/dist/src/detectors/destructive/code-detector.js +558 -0
  109. package/dist/src/detectors/destructive/code-detector.js.map +1 -0
  110. package/dist/src/detectors/destructive/index.d.ts +54 -0
  111. package/dist/src/detectors/destructive/index.d.ts.map +1 -0
  112. package/dist/src/detectors/destructive/index.js +168 -0
  113. package/dist/src/detectors/destructive/index.js.map +1 -0
  114. package/dist/src/detectors/destructive/shell-detector.d.ts +43 -0
  115. package/dist/src/detectors/destructive/shell-detector.d.ts.map +1 -0
  116. package/dist/src/detectors/destructive/shell-detector.js +302 -0
  117. package/dist/src/detectors/destructive/shell-detector.js.map +1 -0
  118. package/dist/src/detectors/destructive/types.d.ts +143 -0
  119. package/dist/src/detectors/destructive/types.d.ts.map +1 -0
  120. package/dist/src/detectors/destructive/types.js +6 -0
  121. package/dist/src/detectors/destructive/types.js.map +1 -0
  122. package/dist/src/detectors/exfiltration/cloud-detector.d.ts +51 -0
  123. package/dist/src/detectors/exfiltration/cloud-detector.d.ts.map +1 -0
  124. package/dist/src/detectors/exfiltration/cloud-detector.js +427 -0
  125. package/dist/src/detectors/exfiltration/cloud-detector.js.map +1 -0
  126. package/dist/src/detectors/exfiltration/http-detector.d.ts +47 -0
  127. package/dist/src/detectors/exfiltration/http-detector.d.ts.map +1 -0
  128. package/dist/src/detectors/exfiltration/http-detector.js +429 -0
  129. package/dist/src/detectors/exfiltration/http-detector.js.map +1 -0
  130. package/dist/src/detectors/exfiltration/index.d.ts +44 -0
  131. package/dist/src/detectors/exfiltration/index.d.ts.map +1 -0
  132. package/dist/src/detectors/exfiltration/index.js +118 -0
  133. package/dist/src/detectors/exfiltration/index.js.map +1 -0
  134. package/dist/src/detectors/exfiltration/network-detector.d.ts +55 -0
  135. package/dist/src/detectors/exfiltration/network-detector.d.ts.map +1 -0
  136. package/dist/src/detectors/exfiltration/network-detector.js +504 -0
  137. package/dist/src/detectors/exfiltration/network-detector.js.map +1 -0
  138. package/dist/src/detectors/exfiltration/types.d.ts +139 -0
  139. package/dist/src/detectors/exfiltration/types.d.ts.map +1 -0
  140. package/dist/src/detectors/exfiltration/types.js +6 -0
  141. package/dist/src/detectors/exfiltration/types.js.map +1 -0
  142. package/dist/src/detectors/purchase/domain-detector.d.ts +44 -0
  143. package/dist/src/detectors/purchase/domain-detector.d.ts.map +1 -0
  144. package/dist/src/detectors/purchase/domain-detector.js +296 -0
  145. package/dist/src/detectors/purchase/domain-detector.js.map +1 -0
  146. package/dist/src/detectors/purchase/form-detector.d.ts +27 -0
  147. package/dist/src/detectors/purchase/form-detector.d.ts.map +1 -0
  148. package/dist/src/detectors/purchase/form-detector.js +344 -0
  149. package/dist/src/detectors/purchase/form-detector.js.map +1 -0
  150. package/dist/src/detectors/purchase/index.d.ts +65 -0
  151. package/dist/src/detectors/purchase/index.d.ts.map +1 -0
  152. package/dist/src/detectors/purchase/index.js +216 -0
  153. package/dist/src/detectors/purchase/index.js.map +1 -0
  154. package/dist/src/detectors/purchase/spend-tracker.d.ts +132 -0
  155. package/dist/src/detectors/purchase/spend-tracker.d.ts.map +1 -0
  156. package/dist/src/detectors/purchase/spend-tracker.js +313 -0
  157. package/dist/src/detectors/purchase/spend-tracker.js.map +1 -0
  158. package/dist/src/detectors/purchase/types.d.ts +139 -0
  159. package/dist/src/detectors/purchase/types.d.ts.map +1 -0
  160. package/dist/src/detectors/purchase/types.js +6 -0
  161. package/dist/src/detectors/purchase/types.js.map +1 -0
  162. package/dist/src/detectors/purchase/url-detector.d.ts +31 -0
  163. package/dist/src/detectors/purchase/url-detector.d.ts.map +1 -0
  164. package/dist/src/detectors/purchase/url-detector.js +292 -0
  165. package/dist/src/detectors/purchase/url-detector.js.map +1 -0
  166. package/dist/src/detectors/secrets/api-key-detector.d.ts +30 -0
  167. package/dist/src/detectors/secrets/api-key-detector.d.ts.map +1 -0
  168. package/dist/src/detectors/secrets/api-key-detector.js +297 -0
  169. package/dist/src/detectors/secrets/api-key-detector.js.map +1 -0
  170. package/dist/src/detectors/secrets/index.d.ts +43 -0
  171. package/dist/src/detectors/secrets/index.d.ts.map +1 -0
  172. package/dist/src/detectors/secrets/index.js +261 -0
  173. package/dist/src/detectors/secrets/index.js.map +1 -0
  174. package/dist/src/detectors/secrets/pii-detector.d.ts +54 -0
  175. package/dist/src/detectors/secrets/pii-detector.d.ts.map +1 -0
  176. package/dist/src/detectors/secrets/pii-detector.js +286 -0
  177. package/dist/src/detectors/secrets/pii-detector.js.map +1 -0
  178. package/dist/src/detectors/secrets/token-detector.d.ts +51 -0
  179. package/dist/src/detectors/secrets/token-detector.d.ts.map +1 -0
  180. package/dist/src/detectors/secrets/token-detector.js +233 -0
  181. package/dist/src/detectors/secrets/token-detector.js.map +1 -0
  182. package/dist/src/detectors/secrets/types.d.ts +157 -0
  183. package/dist/src/detectors/secrets/types.d.ts.map +1 -0
  184. package/dist/src/detectors/secrets/types.js +6 -0
  185. package/dist/src/detectors/secrets/types.js.map +1 -0
  186. package/dist/src/detectors/website/category-detector.d.ts +22 -0
  187. package/dist/src/detectors/website/category-detector.d.ts.map +1 -0
  188. package/dist/src/detectors/website/category-detector.js +162 -0
  189. package/dist/src/detectors/website/category-detector.js.map +1 -0
  190. package/dist/src/detectors/website/index.d.ts +53 -0
  191. package/dist/src/detectors/website/index.d.ts.map +1 -0
  192. package/dist/src/detectors/website/index.js +232 -0
  193. package/dist/src/detectors/website/index.js.map +1 -0
  194. package/dist/src/detectors/website/pattern-matcher.d.ts +33 -0
  195. package/dist/src/detectors/website/pattern-matcher.d.ts.map +1 -0
  196. package/dist/src/detectors/website/pattern-matcher.js +121 -0
  197. package/dist/src/detectors/website/pattern-matcher.js.map +1 -0
  198. package/dist/src/detectors/website/types.d.ts +105 -0
  199. package/dist/src/detectors/website/types.d.ts.map +1 -0
  200. package/dist/src/detectors/website/types.js +6 -0
  201. package/dist/src/detectors/website/types.js.map +1 -0
  202. package/dist/src/engine/analyzer.d.ts +87 -0
  203. package/dist/src/engine/analyzer.d.ts.map +1 -0
  204. package/dist/src/engine/analyzer.js +427 -0
  205. package/dist/src/engine/analyzer.js.map +1 -0
  206. package/dist/src/engine/cache.d.ts +80 -0
  207. package/dist/src/engine/cache.d.ts.map +1 -0
  208. package/dist/src/engine/cache.js +167 -0
  209. package/dist/src/engine/cache.js.map +1 -0
  210. package/dist/src/engine/index.d.ts +11 -0
  211. package/dist/src/engine/index.d.ts.map +1 -0
  212. package/dist/src/engine/index.js +11 -0
  213. package/dist/src/engine/index.js.map +1 -0
  214. package/dist/src/engine/llm-client.d.ts +210 -0
  215. package/dist/src/engine/llm-client.d.ts.map +1 -0
  216. package/dist/src/engine/llm-client.js +506 -0
  217. package/dist/src/engine/llm-client.js.map +1 -0
  218. package/dist/src/engine/types.d.ts +163 -0
  219. package/dist/src/engine/types.d.ts.map +1 -0
  220. package/dist/src/engine/types.js +21 -0
  221. package/dist/src/engine/types.js.map +1 -0
  222. package/dist/src/feedback/index.d.ts +9 -0
  223. package/dist/src/feedback/index.d.ts.map +1 -0
  224. package/dist/src/feedback/index.js +8 -0
  225. package/dist/src/feedback/index.js.map +1 -0
  226. package/dist/src/feedback/learner.d.ts +222 -0
  227. package/dist/src/feedback/learner.d.ts.map +1 -0
  228. package/dist/src/feedback/learner.js +401 -0
  229. package/dist/src/feedback/learner.js.map +1 -0
  230. package/dist/src/feedback/store.d.ts +113 -0
  231. package/dist/src/feedback/store.d.ts.map +1 -0
  232. package/dist/src/feedback/store.js +228 -0
  233. package/dist/src/feedback/store.js.map +1 -0
  234. package/dist/src/feedback/types.d.ts +126 -0
  235. package/dist/src/feedback/types.d.ts.map +1 -0
  236. package/dist/src/feedback/types.js +6 -0
  237. package/dist/src/feedback/types.js.map +1 -0
  238. package/dist/src/hooks/before-agent-start/handler.d.ts +37 -0
  239. package/dist/src/hooks/before-agent-start/handler.d.ts.map +1 -0
  240. package/dist/src/hooks/before-agent-start/handler.js +109 -0
  241. package/dist/src/hooks/before-agent-start/handler.js.map +1 -0
  242. package/dist/src/hooks/before-agent-start/index.d.ts +8 -0
  243. package/dist/src/hooks/before-agent-start/index.d.ts.map +1 -0
  244. package/dist/src/hooks/before-agent-start/index.js +7 -0
  245. package/dist/src/hooks/before-agent-start/index.js.map +1 -0
  246. package/dist/src/hooks/before-agent-start/prompts.d.ts +48 -0
  247. package/dist/src/hooks/before-agent-start/prompts.d.ts.map +1 -0
  248. package/dist/src/hooks/before-agent-start/prompts.js +103 -0
  249. package/dist/src/hooks/before-agent-start/prompts.js.map +1 -0
  250. package/dist/src/hooks/before-tool-call/handler.d.ts +42 -0
  251. package/dist/src/hooks/before-tool-call/handler.d.ts.map +1 -0
  252. package/dist/src/hooks/before-tool-call/handler.js +226 -0
  253. package/dist/src/hooks/before-tool-call/handler.js.map +1 -0
  254. package/dist/src/hooks/before-tool-call/index.d.ts +7 -0
  255. package/dist/src/hooks/before-tool-call/index.d.ts.map +1 -0
  256. package/dist/src/hooks/before-tool-call/index.js +6 -0
  257. package/dist/src/hooks/before-tool-call/index.js.map +1 -0
  258. package/dist/src/hooks/tool-result-persist/filter.d.ts +72 -0
  259. package/dist/src/hooks/tool-result-persist/filter.d.ts.map +1 -0
  260. package/dist/src/hooks/tool-result-persist/filter.js +305 -0
  261. package/dist/src/hooks/tool-result-persist/filter.js.map +1 -0
  262. package/dist/src/hooks/tool-result-persist/handler.d.ts +49 -0
  263. package/dist/src/hooks/tool-result-persist/handler.d.ts.map +1 -0
  264. package/dist/src/hooks/tool-result-persist/handler.js +217 -0
  265. package/dist/src/hooks/tool-result-persist/handler.js.map +1 -0
  266. package/dist/src/hooks/tool-result-persist/index.d.ts +11 -0
  267. package/dist/src/hooks/tool-result-persist/index.d.ts.map +1 -0
  268. package/dist/src/hooks/tool-result-persist/index.js +11 -0
  269. package/dist/src/hooks/tool-result-persist/index.js.map +1 -0
  270. package/dist/src/index.d.ts +256 -0
  271. package/dist/src/index.d.ts.map +1 -0
  272. package/dist/src/index.js +222 -0
  273. package/dist/src/index.js.map +1 -0
  274. package/dist/src/notifications/discord.d.ts +10 -0
  275. package/dist/src/notifications/discord.d.ts.map +1 -0
  276. package/dist/src/notifications/discord.js +218 -0
  277. package/dist/src/notifications/discord.js.map +1 -0
  278. package/dist/src/notifications/index.d.ts +37 -0
  279. package/dist/src/notifications/index.d.ts.map +1 -0
  280. package/dist/src/notifications/index.js +68 -0
  281. package/dist/src/notifications/index.js.map +1 -0
  282. package/dist/src/notifications/slack.d.ts +10 -0
  283. package/dist/src/notifications/slack.d.ts.map +1 -0
  284. package/dist/src/notifications/slack.js +218 -0
  285. package/dist/src/notifications/slack.js.map +1 -0
  286. package/dist/src/notifications/telegram.d.ts +10 -0
  287. package/dist/src/notifications/telegram.d.ts.map +1 -0
  288. package/dist/src/notifications/telegram.js +242 -0
  289. package/dist/src/notifications/telegram.js.map +1 -0
  290. package/dist/src/notifications/types.d.ts +119 -0
  291. package/dist/src/notifications/types.d.ts.map +1 -0
  292. package/dist/src/notifications/types.js +6 -0
  293. package/dist/src/notifications/types.js.map +1 -0
  294. package/dist/src/proxy/index.d.ts +8 -0
  295. package/dist/src/proxy/index.d.ts.map +1 -0
  296. package/dist/src/proxy/index.js +9 -0
  297. package/dist/src/proxy/index.js.map +1 -0
  298. package/dist/src/proxy/middleware.d.ts +55 -0
  299. package/dist/src/proxy/middleware.d.ts.map +1 -0
  300. package/dist/src/proxy/middleware.js +215 -0
  301. package/dist/src/proxy/middleware.js.map +1 -0
  302. package/dist/src/proxy/server.d.ts +57 -0
  303. package/dist/src/proxy/server.d.ts.map +1 -0
  304. package/dist/src/proxy/server.js +298 -0
  305. package/dist/src/proxy/server.js.map +1 -0
  306. package/dist/src/proxy/types.d.ts +136 -0
  307. package/dist/src/proxy/types.d.ts.map +1 -0
  308. package/dist/src/proxy/types.js +6 -0
  309. package/dist/src/proxy/types.js.map +1 -0
  310. package/dist/src/sanitization/index.d.ts +10 -0
  311. package/dist/src/sanitization/index.d.ts.map +1 -0
  312. package/dist/src/sanitization/index.js +9 -0
  313. package/dist/src/sanitization/index.js.map +1 -0
  314. package/dist/src/sanitization/patterns.d.ts +51 -0
  315. package/dist/src/sanitization/patterns.d.ts.map +1 -0
  316. package/dist/src/sanitization/patterns.js +266 -0
  317. package/dist/src/sanitization/patterns.js.map +1 -0
  318. package/dist/src/sanitization/scanner.d.ts +29 -0
  319. package/dist/src/sanitization/scanner.d.ts.map +1 -0
  320. package/dist/src/sanitization/scanner.js +328 -0
  321. package/dist/src/sanitization/scanner.js.map +1 -0
  322. package/dist/src/sanitization/types.d.ts +57 -0
  323. package/dist/src/sanitization/types.d.ts.map +1 -0
  324. package/dist/src/sanitization/types.js +5 -0
  325. package/dist/src/sanitization/types.js.map +1 -0
  326. package/openclaw.plugin.json +114 -0
  327. package/package.json +63 -0
  328. package/rules/builtin/README.md +139 -0
  329. package/rules/builtin/ai-services.yaml +70 -0
  330. package/rules/builtin/api-keys.yaml +64 -0
  331. package/rules/builtin/authentication.yaml +56 -0
  332. package/rules/builtin/aws-security.yaml +57 -0
  333. package/rules/builtin/azure-security.yaml +58 -0
  334. package/rules/builtin/cicd-security.yaml +64 -0
  335. package/rules/builtin/cloud-storage.yaml +64 -0
  336. package/rules/builtin/container-registry.yaml +55 -0
  337. package/rules/builtin/crypto-wallets.yaml +71 -0
  338. package/rules/builtin/database-nosql.yaml +58 -0
  339. package/rules/builtin/database-sql.yaml +62 -0
  340. package/rules/builtin/development-env.yaml +67 -0
  341. package/rules/builtin/docker.yaml +57 -0
  342. package/rules/builtin/filesystem.yaml +71 -0
  343. package/rules/builtin/financial-pci.yaml +61 -0
  344. package/rules/builtin/gcp-security.yaml +57 -0
  345. package/rules/builtin/git-operations.yaml +68 -0
  346. package/rules/builtin/healthcare-hipaa.yaml +64 -0
  347. package/rules/builtin/kubernetes.yaml +60 -0
  348. package/rules/builtin/messaging-services.yaml +53 -0
  349. package/rules/builtin/minimal.yaml +47 -0
  350. package/rules/builtin/mobile-development.yaml +61 -0
  351. package/rules/builtin/monitoring.yaml +63 -0
  352. package/rules/builtin/network-security.yaml +57 -0
  353. package/rules/builtin/package-managers.yaml +74 -0
  354. package/rules/builtin/payment-processing.yaml +66 -0
  355. package/rules/builtin/pii-protection.yaml +48 -0
  356. package/rules/builtin/production-strict.yaml +55 -0
  357. package/rules/builtin/secrets-management.yaml +63 -0
  358. package/rules/builtin/serverless.yaml +74 -0
  359. package/rules/builtin/ssh-security.yaml +66 -0
  360. package/rules/builtin/terraform.yaml +51 -0
  361. package/rules/builtin/web-security.yaml +62 -0
@@ -0,0 +1,556 @@
1
+ /**
2
+ * Cloud Detector
3
+ * Detects dangerous cloud operations including AWS, GCP, Azure, Kubernetes, and Terraform
4
+ */
5
+ /**
6
+ * AWS destructive command patterns
7
+ */
8
+ const AWS_PATTERNS = [
9
+ // EC2 terminate instances
10
+ {
11
+ pattern: /\baws\s+ec2\s+terminate-instances\b/i,
12
+ operation: 'terminate-instances',
13
+ description: 'Terminate EC2 instances',
14
+ },
15
+ // S3 bucket removal
16
+ {
17
+ pattern: /\baws\s+s3\s+rb\s+(?:--force\s+)?s3:\/\/([^\s]+)/i,
18
+ operation: 's3 rb',
19
+ description: 'Remove S3 bucket',
20
+ },
21
+ {
22
+ pattern: /\baws\s+s3api\s+delete-bucket\b/i,
23
+ operation: 'delete-bucket',
24
+ description: 'Delete S3 bucket',
25
+ },
26
+ // RDS delete
27
+ {
28
+ pattern: /\baws\s+rds\s+delete-db-(?:instance|cluster)\b/i,
29
+ operation: 'delete-db',
30
+ description: 'Delete RDS database',
31
+ },
32
+ // CloudFormation stack deletion
33
+ {
34
+ pattern: /\baws\s+cloudformation\s+delete-stack\b/i,
35
+ operation: 'delete-stack',
36
+ description: 'Delete CloudFormation stack',
37
+ },
38
+ // Lambda function deletion
39
+ {
40
+ pattern: /\baws\s+lambda\s+delete-function\b/i,
41
+ operation: 'delete-function',
42
+ description: 'Delete Lambda function',
43
+ },
44
+ // EKS cluster deletion
45
+ {
46
+ pattern: /\baws\s+eks\s+delete-cluster\b/i,
47
+ operation: 'delete-cluster',
48
+ description: 'Delete EKS cluster',
49
+ },
50
+ // IAM user/role deletion
51
+ {
52
+ pattern: /\baws\s+iam\s+delete-(?:user|role)\b/i,
53
+ operation: 'delete-iam',
54
+ description: 'Delete IAM user/role',
55
+ },
56
+ // VPC deletion
57
+ {
58
+ pattern: /\baws\s+ec2\s+delete-vpc\b/i,
59
+ operation: 'delete-vpc',
60
+ description: 'Delete VPC',
61
+ },
62
+ // DynamoDB table deletion
63
+ {
64
+ pattern: /\baws\s+dynamodb\s+delete-table\b/i,
65
+ operation: 'delete-table',
66
+ description: 'Delete DynamoDB table',
67
+ },
68
+ ];
69
+ /**
70
+ * GCP destructive command patterns
71
+ */
72
+ const GCP_PATTERNS = [
73
+ // Compute instance deletion
74
+ {
75
+ pattern: /\bgcloud\s+compute\s+instances\s+delete\b/i,
76
+ operation: 'instances delete',
77
+ description: 'Delete GCP compute instances',
78
+ },
79
+ // Project deletion
80
+ {
81
+ pattern: /\bgcloud\s+projects\s+delete\b/i,
82
+ operation: 'projects delete',
83
+ description: 'Delete GCP project',
84
+ },
85
+ // GKE cluster deletion
86
+ {
87
+ pattern: /\bgcloud\s+container\s+clusters\s+delete\b/i,
88
+ operation: 'clusters delete',
89
+ description: 'Delete GKE cluster',
90
+ },
91
+ // Cloud SQL deletion
92
+ {
93
+ pattern: /\bgcloud\s+sql\s+instances\s+delete\b/i,
94
+ operation: 'sql delete',
95
+ description: 'Delete Cloud SQL instance',
96
+ },
97
+ // Cloud Functions deletion
98
+ {
99
+ pattern: /\bgcloud\s+functions\s+delete\b/i,
100
+ operation: 'functions delete',
101
+ description: 'Delete Cloud Function',
102
+ },
103
+ // Storage bucket deletion
104
+ {
105
+ pattern: /\bgsutil\s+(?:-m\s+)?rm\s+-r\s+gs:\/\/([^\s]+)/i,
106
+ operation: 'gsutil rm -r',
107
+ description: 'Remove GCS bucket recursively',
108
+ },
109
+ {
110
+ pattern: /\bgcloud\s+storage\s+(?:buckets\s+)?delete\b/i,
111
+ operation: 'storage delete',
112
+ description: 'Delete GCS bucket',
113
+ },
114
+ // Pub/Sub deletion
115
+ {
116
+ pattern: /\bgcloud\s+pubsub\s+(?:topics|subscriptions)\s+delete\b/i,
117
+ operation: 'pubsub delete',
118
+ description: 'Delete Pub/Sub resource',
119
+ },
120
+ ];
121
+ /**
122
+ * Azure destructive command patterns
123
+ */
124
+ const AZURE_PATTERNS = [
125
+ // VM deletion
126
+ {
127
+ pattern: /\baz\s+vm\s+delete\b/i,
128
+ operation: 'vm delete',
129
+ description: 'Delete Azure VM',
130
+ },
131
+ // Resource group deletion (VERY dangerous - deletes everything in group)
132
+ {
133
+ pattern: /\baz\s+group\s+delete\b/i,
134
+ operation: 'group delete',
135
+ description: 'Delete Azure resource group',
136
+ },
137
+ // Storage account deletion
138
+ {
139
+ pattern: /\baz\s+storage\s+account\s+delete\b/i,
140
+ operation: 'storage delete',
141
+ description: 'Delete Azure storage account',
142
+ },
143
+ // AKS cluster deletion
144
+ {
145
+ pattern: /\baz\s+aks\s+delete\b/i,
146
+ operation: 'aks delete',
147
+ description: 'Delete AKS cluster',
148
+ },
149
+ // SQL database deletion
150
+ {
151
+ pattern: /\baz\s+sql\s+(?:db|server)\s+delete\b/i,
152
+ operation: 'sql delete',
153
+ description: 'Delete Azure SQL resource',
154
+ },
155
+ // Function app deletion
156
+ {
157
+ pattern: /\baz\s+functionapp\s+delete\b/i,
158
+ operation: 'functionapp delete',
159
+ description: 'Delete Azure Function app',
160
+ },
161
+ // App Service deletion
162
+ {
163
+ pattern: /\baz\s+webapp\s+delete\b/i,
164
+ operation: 'webapp delete',
165
+ description: 'Delete Azure Web App',
166
+ },
167
+ // Container registry deletion
168
+ {
169
+ pattern: /\baz\s+acr\s+delete\b/i,
170
+ operation: 'acr delete',
171
+ description: 'Delete Azure Container Registry',
172
+ },
173
+ ];
174
+ /**
175
+ * Kubernetes destructive command patterns
176
+ */
177
+ const KUBERNETES_PATTERNS = [
178
+ // Delete namespace (deletes everything in it)
179
+ {
180
+ pattern: /\bkubectl\s+delete\s+(?:ns|namespace)\s+(\S+)/i,
181
+ operation: 'delete namespace',
182
+ description: 'Delete Kubernetes namespace',
183
+ critical: true,
184
+ },
185
+ // Delete all pods
186
+ {
187
+ pattern: /\bkubectl\s+delete\s+pods?\s+--all\b/i,
188
+ operation: 'delete pods --all',
189
+ description: 'Delete all pods',
190
+ critical: true,
191
+ },
192
+ // Delete all resources of a type
193
+ {
194
+ pattern: /\bkubectl\s+delete\s+\S+\s+--all\b/i,
195
+ operation: 'delete --all',
196
+ description: 'Delete all resources',
197
+ },
198
+ // Delete with -A (all namespaces)
199
+ {
200
+ pattern: /\bkubectl\s+delete\s+.*-A\b/i,
201
+ operation: 'delete -A',
202
+ description: 'Delete across all namespaces',
203
+ },
204
+ // Delete deployment
205
+ {
206
+ pattern: /\bkubectl\s+delete\s+(?:deploy|deployment)\s+(\S+)/i,
207
+ operation: 'delete deployment',
208
+ description: 'Delete Kubernetes deployment',
209
+ },
210
+ // Delete service
211
+ {
212
+ pattern: /\bkubectl\s+delete\s+(?:svc|service)\s+(\S+)/i,
213
+ operation: 'delete service',
214
+ description: 'Delete Kubernetes service',
215
+ },
216
+ // Delete PVC
217
+ {
218
+ pattern: /\bkubectl\s+delete\s+pvc\s+(\S+)/i,
219
+ operation: 'delete pvc',
220
+ description: 'Delete persistent volume claim',
221
+ },
222
+ // Delete from file with force
223
+ {
224
+ pattern: /\bkubectl\s+delete\s+-f\s+\S+\s+--force\b/i,
225
+ operation: 'delete -f --force',
226
+ description: 'Force delete Kubernetes resources',
227
+ },
228
+ // Helm uninstall
229
+ {
230
+ pattern: /\bhelm\s+(?:delete|uninstall)\s+(\S+)/i,
231
+ operation: 'helm uninstall',
232
+ description: 'Uninstall Helm release',
233
+ },
234
+ ];
235
+ /**
236
+ * Terraform destructive command patterns
237
+ */
238
+ const TERRAFORM_PATTERNS = [
239
+ // Terraform destroy
240
+ {
241
+ pattern: /\bterraform\s+destroy\b/i,
242
+ operation: 'destroy',
243
+ description: 'Destroy Terraform-managed infrastructure',
244
+ critical: true,
245
+ },
246
+ // Terraform apply with auto-approve (can be destructive)
247
+ {
248
+ pattern: /\bterraform\s+apply\s+.*-auto-approve\b/i,
249
+ operation: 'apply -auto-approve',
250
+ description: 'Auto-approve Terraform changes',
251
+ },
252
+ // Terraform state rm
253
+ {
254
+ pattern: /\bterraform\s+state\s+rm\b/i,
255
+ operation: 'state rm',
256
+ description: 'Remove resource from Terraform state',
257
+ },
258
+ // Terragrunt destroy
259
+ {
260
+ pattern: /\bterragrunt\s+destroy\b/i,
261
+ operation: 'terragrunt destroy',
262
+ description: 'Destroy Terragrunt-managed infrastructure',
263
+ critical: true,
264
+ },
265
+ // Pulumi destroy
266
+ {
267
+ pattern: /\bpulumi\s+destroy\b/i,
268
+ operation: 'pulumi destroy',
269
+ description: 'Destroy Pulumi-managed infrastructure',
270
+ critical: true,
271
+ },
272
+ ];
273
+ /**
274
+ * Git destructive command patterns
275
+ */
276
+ const GIT_PATTERNS = [
277
+ // Force push to main/master
278
+ {
279
+ pattern: /\bgit\s+push\s+(?:--force|-f)\s+(?:\S+\s+)?(?:main|master)\b/i,
280
+ operation: 'push --force main/master',
281
+ description: 'Force push to main/master branch',
282
+ critical: true,
283
+ },
284
+ {
285
+ pattern: /\bgit\s+push\s+\S+\s+(?:main|master)\s+(?:--force|-f)\b/i,
286
+ operation: 'push --force main/master',
287
+ description: 'Force push to main/master branch',
288
+ critical: true,
289
+ },
290
+ // Git reset --hard
291
+ {
292
+ pattern: /\bgit\s+reset\s+--hard\b/i,
293
+ operation: 'reset --hard',
294
+ description: 'Hard reset discards local changes',
295
+ },
296
+ // Git clean -fd (force delete untracked)
297
+ {
298
+ pattern: /\bgit\s+clean\s+(?:-[^\s]*)?-f(?:[^\s]*)?\s*(?:-d)?/i,
299
+ operation: 'clean -fd',
300
+ description: 'Force delete untracked files',
301
+ },
302
+ // Git branch -D (force delete)
303
+ {
304
+ pattern: /\bgit\s+branch\s+(?:-D|--delete\s+--force)\s+(\S+)/i,
305
+ operation: 'branch -D',
306
+ description: 'Force delete branch',
307
+ },
308
+ // Git checkout . (discard changes)
309
+ {
310
+ pattern: /\bgit\s+checkout\s+\.\s*$/i,
311
+ operation: 'checkout .',
312
+ description: 'Discard all local changes',
313
+ },
314
+ // Git restore . (discard changes)
315
+ {
316
+ pattern: /\bgit\s+restore\s+(?:--staged\s+)?\.\s*$/i,
317
+ operation: 'restore .',
318
+ description: 'Discard all local changes',
319
+ },
320
+ // Git rebase with potential data loss
321
+ {
322
+ pattern: /\bgit\s+rebase\s+(?:-i\s+)?(?:main|master|origin\/main|origin\/master)\b/i,
323
+ operation: 'rebase',
324
+ description: 'Rebase onto main/master (can rewrite history)',
325
+ },
326
+ ];
327
+ /**
328
+ * Match AWS commands
329
+ */
330
+ export function matchAwsCommand(command) {
331
+ for (const { pattern, operation } of AWS_PATTERNS) {
332
+ const match = command.match(pattern);
333
+ if (match) {
334
+ return {
335
+ matched: true,
336
+ command,
337
+ provider: 'aws',
338
+ operation,
339
+ affectedResource: match[1] || undefined,
340
+ confidence: 0.9,
341
+ };
342
+ }
343
+ }
344
+ return { matched: false, confidence: 0 };
345
+ }
346
+ /**
347
+ * Match GCP commands
348
+ */
349
+ export function matchGcpCommand(command) {
350
+ for (const { pattern, operation } of GCP_PATTERNS) {
351
+ const match = command.match(pattern);
352
+ if (match) {
353
+ return {
354
+ matched: true,
355
+ command,
356
+ provider: 'gcp',
357
+ operation,
358
+ affectedResource: match[1] || undefined,
359
+ confidence: 0.9,
360
+ };
361
+ }
362
+ }
363
+ return { matched: false, confidence: 0 };
364
+ }
365
+ /**
366
+ * Match Azure commands
367
+ */
368
+ export function matchAzureCommand(command) {
369
+ for (const { pattern, operation } of AZURE_PATTERNS) {
370
+ const match = command.match(pattern);
371
+ if (match) {
372
+ return {
373
+ matched: true,
374
+ command,
375
+ provider: 'azure',
376
+ operation,
377
+ affectedResource: match[1] || undefined,
378
+ confidence: 0.9,
379
+ };
380
+ }
381
+ }
382
+ return { matched: false, confidence: 0 };
383
+ }
384
+ /**
385
+ * Match Kubernetes commands
386
+ */
387
+ export function matchKubernetesCommand(command) {
388
+ for (const { pattern, operation, critical } of KUBERNETES_PATTERNS) {
389
+ const match = command.match(pattern);
390
+ if (match) {
391
+ return {
392
+ matched: true,
393
+ command,
394
+ provider: 'kubernetes',
395
+ operation,
396
+ affectedResource: match[1] || undefined,
397
+ confidence: critical ? 0.95 : 0.85,
398
+ };
399
+ }
400
+ }
401
+ return { matched: false, confidence: 0 };
402
+ }
403
+ /**
404
+ * Match Terraform/IaC commands
405
+ */
406
+ export function matchTerraformCommand(command) {
407
+ for (const { pattern, operation, critical } of TERRAFORM_PATTERNS) {
408
+ const match = command.match(pattern);
409
+ if (match) {
410
+ return {
411
+ matched: true,
412
+ command,
413
+ provider: 'terraform',
414
+ operation,
415
+ affectedResource: match[1] || undefined,
416
+ confidence: critical ? 0.95 : 0.85,
417
+ };
418
+ }
419
+ }
420
+ return { matched: false, confidence: 0 };
421
+ }
422
+ /**
423
+ * Match Git destructive commands
424
+ */
425
+ export function matchGitCommand(command) {
426
+ for (const { pattern, operation, critical } of GIT_PATTERNS) {
427
+ const match = command.match(pattern);
428
+ if (match) {
429
+ return {
430
+ matched: true,
431
+ command,
432
+ provider: 'git',
433
+ operation,
434
+ affectedResource: match[1] || undefined,
435
+ confidence: critical ? 0.95 : 0.8,
436
+ };
437
+ }
438
+ }
439
+ return { matched: false, confidence: 0 };
440
+ }
441
+ /**
442
+ * Comprehensive cloud command matching
443
+ */
444
+ export function matchCloudCommand(command) {
445
+ // Try all cloud provider patterns
446
+ const awsResult = matchAwsCommand(command);
447
+ if (awsResult.matched)
448
+ return awsResult;
449
+ const gcpResult = matchGcpCommand(command);
450
+ if (gcpResult.matched)
451
+ return gcpResult;
452
+ const azureResult = matchAzureCommand(command);
453
+ if (azureResult.matched)
454
+ return azureResult;
455
+ const k8sResult = matchKubernetesCommand(command);
456
+ if (k8sResult.matched)
457
+ return k8sResult;
458
+ const tfResult = matchTerraformCommand(command);
459
+ if (tfResult.matched)
460
+ return tfResult;
461
+ const gitResult = matchGitCommand(command);
462
+ if (gitResult.matched)
463
+ return gitResult;
464
+ return { matched: false, confidence: 0 };
465
+ }
466
+ /**
467
+ * Cloud detector class
468
+ */
469
+ export class CloudDetector {
470
+ severity;
471
+ constructor(severity = 'critical') {
472
+ this.severity = severity;
473
+ }
474
+ /**
475
+ * Extract command from tool context
476
+ */
477
+ extractCommand(context) {
478
+ const input = context.toolInput;
479
+ // Direct command field
480
+ if (typeof input.command === 'string') {
481
+ return input.command;
482
+ }
483
+ // Shell/bash command field
484
+ if (typeof input.shell === 'string') {
485
+ return input.shell;
486
+ }
487
+ if (typeof input.bash === 'string') {
488
+ return input.bash;
489
+ }
490
+ // Script field
491
+ if (typeof input.script === 'string') {
492
+ return input.script;
493
+ }
494
+ // Code field
495
+ if (typeof input.code === 'string') {
496
+ return input.code;
497
+ }
498
+ // CLI/args field
499
+ if (typeof input.cli === 'string') {
500
+ return input.cli;
501
+ }
502
+ if (typeof input.args === 'string') {
503
+ return input.args;
504
+ }
505
+ // Text content
506
+ if (typeof input.text === 'string') {
507
+ return input.text;
508
+ }
509
+ // Content field
510
+ if (typeof input.content === 'string') {
511
+ return input.content;
512
+ }
513
+ return null;
514
+ }
515
+ detect(context) {
516
+ const command = this.extractCommand(context);
517
+ if (!command) {
518
+ return null;
519
+ }
520
+ const result = matchCloudCommand(command);
521
+ if (!result.matched) {
522
+ return null;
523
+ }
524
+ // Determine the metadata type based on provider
525
+ const metadataType = result.provider === 'git' ? 'git' : 'cloud';
526
+ const providerDescriptions = {
527
+ aws: 'AWS',
528
+ gcp: 'Google Cloud',
529
+ azure: 'Azure',
530
+ kubernetes: 'Kubernetes',
531
+ terraform: 'Terraform/IaC',
532
+ git: 'Git',
533
+ };
534
+ const providerDesc = providerDescriptions[result.provider || 'unknown'] || result.provider;
535
+ return {
536
+ detected: true,
537
+ category: 'destructive',
538
+ severity: this.severity,
539
+ confidence: result.confidence,
540
+ reason: `Dangerous ${providerDesc} operation detected: ${result.operation}`,
541
+ metadata: {
542
+ command: result.command,
543
+ type: metadataType,
544
+ operation: result.operation,
545
+ affectedResource: result.affectedResource,
546
+ },
547
+ };
548
+ }
549
+ }
550
+ /**
551
+ * Create a cloud detector with the given severity
552
+ */
553
+ export function createCloudDetector(severity = 'critical') {
554
+ return new CloudDetector(severity);
555
+ }
556
+ //# sourceMappingURL=cloud-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-detector.js","sourceRoot":"","sources":["../../../../src/detectors/destructive/cloud-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Code Detector
3
+ * Detects dangerous code patterns for file/directory deletion across multiple languages
4
+ */
5
+ import type { CodeMatchResult, DetectionContext, DestructiveDetectionResult, SubDetector } from './types.js';
6
+ import type { Severity } from '../../config/index.js';
7
+ /**
8
+ * Match Python code patterns
9
+ */
10
+ export declare function matchPythonCode(code: string): CodeMatchResult;
11
+ /**
12
+ * Match Node.js code patterns
13
+ */
14
+ export declare function matchNodeCode(code: string): CodeMatchResult;
15
+ /**
16
+ * Match Go code patterns
17
+ */
18
+ export declare function matchGoCode(code: string): CodeMatchResult;
19
+ /**
20
+ * Match Rust code patterns
21
+ */
22
+ export declare function matchRustCode(code: string): CodeMatchResult;
23
+ /**
24
+ * Match Ruby code patterns
25
+ */
26
+ export declare function matchRubyCode(code: string): CodeMatchResult;
27
+ /**
28
+ * Match Java/Kotlin code patterns
29
+ */
30
+ export declare function matchJavaCode(code: string): CodeMatchResult;
31
+ /**
32
+ * Match C# code patterns
33
+ */
34
+ export declare function matchCSharpCode(code: string): CodeMatchResult;
35
+ /**
36
+ * Match PHP code patterns
37
+ */
38
+ export declare function matchPhpCode(code: string): CodeMatchResult;
39
+ /**
40
+ * Comprehensive code pattern matching
41
+ */
42
+ export declare function matchCodePattern(code: string): CodeMatchResult;
43
+ /**
44
+ * Code detector class
45
+ */
46
+ export declare class CodeDetector implements SubDetector {
47
+ private severity;
48
+ constructor(severity?: Severity);
49
+ /**
50
+ * Extract code from tool context
51
+ */
52
+ private extractCode;
53
+ detect(context: DetectionContext): DestructiveDetectionResult | null;
54
+ }
55
+ /**
56
+ * Create a code detector with the given severity
57
+ */
58
+ export declare function createCodeDetector(severity?: Severity): CodeDetector;
59
+ //# sourceMappingURL=code-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-detector.d.ts","sourceRoot":"","sources":["../../../../src/detectors/destructive/code-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAoStD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAezD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAe1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA2B9D;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,GAAE,QAAqB;IAI3C;;OAEG;IACH,OAAO,CAAC,WAAW;IA8CnB,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,0BAA0B,GAAG,IAAI;CAuCrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,GAAE,QAAqB,GAAG,YAAY,CAEhF"}