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,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntelligenceCoordinator = void 0;
4
+ const budget_1 = require("./budget");
5
+ const adapters_1 = require("./adapters");
6
+ const anomaly_1 = require("./anomaly");
7
+ const license_1 = require("../license");
8
+ const SEVERITY_ORDER = ['info', 'low', 'medium', 'high', 'critical'];
9
+ /**
10
+ * The 3-Layer Intelligence Coordinator.
11
+ *
12
+ * L0: Rules (free) — Pattern matching, allowlists, thresholds. Every event.
13
+ * L1: Statistical (free) — Z-score anomaly detection, baseline deviation. L0 flags.
14
+ * L2: LLM-Assisted ($) — Micro-prompt to agent's LLM. Only L1 flags + budget check.
15
+ *
16
+ * 99% of events never reach L2. Cost is ~$0.01/day for most agents.
17
+ */
18
+ class IntelligenceCoordinator {
19
+ constructor(arpConfig, dataDir) {
20
+ this.adapter = null;
21
+ this.batchQueue = [];
22
+ this.config = arpConfig.intelligence ?? {};
23
+ this.budget = new budget_1.BudgetController(dataDir, this.config);
24
+ this.anomaly = new anomaly_1.AnomalyDetector();
25
+ // Build agent context for LLM prompts
26
+ this.agentContext = buildAgentContext(arpConfig);
27
+ // Initialize LLM adapter if intelligence is enabled
28
+ if (this.config.enabled !== false) {
29
+ try {
30
+ if (this.config.adapter) {
31
+ this.adapter = (0, adapters_1.createAdapter)(this.config.adapter, this.config.adapterConfig);
32
+ }
33
+ else {
34
+ this.adapter = (0, adapters_1.autoDetectAdapter)(this.config.adapterConfig);
35
+ }
36
+ }
37
+ catch {
38
+ // No adapter available — L2 disabled, L0+L1 still work
39
+ this.adapter = null;
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Analyze an event through the 3-layer stack.
45
+ * Mutates the event's category, severity, and classifiedBy fields.
46
+ * Returns the LLM assessment if L2 was invoked.
47
+ */
48
+ async analyze(event) {
49
+ // L0: Already classified by the monitor that emitted it
50
+ // L1: Statistical anomaly detection (free)
51
+ const anomalyScore = this.anomaly.score(event);
52
+ if (anomalyScore > 2.0) {
53
+ // Z-score > 2 standard deviations — flag as anomaly
54
+ if (event.category === 'normal') {
55
+ event.category = 'anomaly';
56
+ }
57
+ if (severityIndex(event.severity) < severityIndex('medium')) {
58
+ event.severity = 'medium';
59
+ }
60
+ event.classifiedBy = 'L1-statistical';
61
+ }
62
+ // L1 records this event for future baseline
63
+ this.anomaly.record(event);
64
+ // L2: LLM assessment (only if L1 flagged and budget allows)
65
+ if (this.shouldEscalateToL2(event)) {
66
+ // AI-layer L2 assessment requires premium license
67
+ if (AI_LAYER_SOURCES.has(event.source)) {
68
+ const licensed = await (0, license_1.hasFeature)(license_1.PREMIUM_FEATURES.AI_LAYER_L2);
69
+ if (!licensed)
70
+ return null;
71
+ }
72
+ if (this.config.enableBatching && event.severity !== 'critical') {
73
+ return this.queueForBatch(event);
74
+ }
75
+ return this.assessWithLlm(event);
76
+ }
77
+ return null;
78
+ }
79
+ /** Get budget status */
80
+ getBudgetStatus() {
81
+ return this.budget.getStatus();
82
+ }
83
+ /** Stop the coordinator (flush batches, clean up) */
84
+ async stop() {
85
+ if (this.batchTimer) {
86
+ clearTimeout(this.batchTimer);
87
+ this.batchTimer = undefined;
88
+ }
89
+ // Flush remaining batch
90
+ if (this.batchQueue.length > 0) {
91
+ await this.flushBatch();
92
+ }
93
+ }
94
+ shouldEscalateToL2(event) {
95
+ // L2 disabled
96
+ if (this.config.enabled === false)
97
+ return false;
98
+ if (!this.adapter)
99
+ return false;
100
+ // Only escalate if L1 flagged it
101
+ if (event.category === 'normal')
102
+ return false;
103
+ // Minimum severity check
104
+ const minSev = this.config.minSeverityForLlm ?? 'medium';
105
+ if (severityIndex(event.severity) < severityIndex(minSev))
106
+ return false;
107
+ // Budget check
108
+ const estimatedCost = this.adapter.estimateCost(200, // ~200 input tokens for micro-prompt
109
+ this.config.maxTokensPerCall ?? 300);
110
+ if (!this.budget.canAfford(estimatedCost))
111
+ return false;
112
+ return true;
113
+ }
114
+ async assessWithLlm(event) {
115
+ if (!this.adapter)
116
+ return null;
117
+ const prompt = buildMicroPrompt(this.agentContext, event);
118
+ const maxTokens = this.config.maxTokensPerCall ?? 300;
119
+ try {
120
+ const response = await this.adapter.assess(prompt, maxTokens);
121
+ const cost = this.adapter.estimateCost(response.inputTokens, response.outputTokens);
122
+ this.budget.record(cost, response.inputTokens + response.outputTokens);
123
+ const assessment = parseAssessment(response.content, response.inputTokens + response.outputTokens, cost);
124
+ event.llmAssessment = assessment;
125
+ event.classifiedBy = 'L2-llm';
126
+ // LLM can upgrade severity
127
+ if (assessment.recommendation === 'kill') {
128
+ event.severity = 'critical';
129
+ event.category = 'threat';
130
+ }
131
+ else if (assessment.recommendation === 'pause') {
132
+ event.severity = 'high';
133
+ event.category = 'violation';
134
+ }
135
+ return assessment;
136
+ }
137
+ catch {
138
+ // LLM failure — fall back to L1 classification
139
+ return null;
140
+ }
141
+ }
142
+ queueForBatch(event) {
143
+ this.batchQueue.push(event);
144
+ if (!this.batchTimer) {
145
+ const windowMs = this.config.batchWindowMs ?? 300000;
146
+ this.batchTimer = setTimeout(() => {
147
+ this.flushBatch().catch(() => { });
148
+ this.batchTimer = undefined;
149
+ }, windowMs);
150
+ if (this.batchTimer.unref) {
151
+ this.batchTimer.unref();
152
+ }
153
+ }
154
+ return null; // Assessment will come later
155
+ }
156
+ async flushBatch() {
157
+ if (this.batchQueue.length === 0 || !this.adapter)
158
+ return;
159
+ const events = this.batchQueue.splice(0);
160
+ const prompt = buildBatchPrompt(this.agentContext, events);
161
+ const maxTokens = Math.min((this.config.maxTokensPerCall ?? 300) * 2, 1000);
162
+ try {
163
+ const response = await this.adapter.assess(prompt, maxTokens);
164
+ const cost = this.adapter.estimateCost(response.inputTokens, response.outputTokens);
165
+ this.budget.record(cost, response.inputTokens + response.outputTokens);
166
+ }
167
+ catch {
168
+ // Batch failure — events remain at L1 classification
169
+ }
170
+ }
171
+ }
172
+ exports.IntelligenceCoordinator = IntelligenceCoordinator;
173
+ // --- Prompt Engineering (the craft) ---
174
+ function buildAgentContext(config) {
175
+ const parts = [`Agent: ${config.agentName}`];
176
+ if (config.agentDescription) {
177
+ parts.push(`Purpose: ${config.agentDescription}`);
178
+ }
179
+ if (config.declaredCapabilities?.length) {
180
+ parts.push(`Capabilities: ${config.declaredCapabilities.join(', ')}`);
181
+ }
182
+ return parts.join('\n');
183
+ }
184
+ /** AI-layer monitor sources that use specialized prompts */
185
+ const AI_LAYER_SOURCES = new Set(['prompt', 'mcp-protocol', 'a2a-protocol']);
186
+ /**
187
+ * Micro-prompt: ~200 tokens in, ~100 tokens out.
188
+ * Designed for speed and cost efficiency. No chain-of-thought.
189
+ * Uses specialized templates for AI-layer threats.
190
+ */
191
+ function buildMicroPrompt(agentContext, event) {
192
+ if (AI_LAYER_SOURCES.has(event.source)) {
193
+ return buildAILayerPrompt(agentContext, event);
194
+ }
195
+ return `SECURITY ASSESSMENT — answer concisely.
196
+
197
+ ${agentContext}
198
+
199
+ Event: ${event.source} monitor detected ${event.category} (${event.severity})
200
+ Detail: ${event.description}
201
+ Data: ${JSON.stringify(event.data).slice(0, 500)}
202
+
203
+ Is this behavior consistent with the agent's declared purpose and capabilities?
204
+ Respond in exactly this format:
205
+ CONSISTENT: YES or NO
206
+ CONFIDENCE: 0.0-1.0
207
+ REASONING: one sentence
208
+ ACTION: ALLOW, ALERT, PAUSE, or KILL`;
209
+ }
210
+ /**
211
+ * Specialized prompt for AI-layer threats (prompt injection, MCP exploitation, A2A spoofing).
212
+ * Provides the LLM with pattern match context for true/false positive assessment.
213
+ */
214
+ function buildAILayerPrompt(agentContext, event) {
215
+ const data = event.data;
216
+ const patternId = data.patternId ?? 'unknown';
217
+ const patternCategory = data.patternCategory ?? event.source;
218
+ const matchedText = data.matchedText ?? '';
219
+ const direction = data.direction ?? '';
220
+ let contentContext = '';
221
+ if (event.source === 'prompt') {
222
+ contentContext = direction === 'input'
223
+ ? `User/agent sent input that matched pattern ${patternId} (${patternCategory}).`
224
+ : `LLM response matched output leak pattern ${patternId} (${patternCategory}).`;
225
+ }
226
+ else if (event.source === 'mcp-protocol') {
227
+ const toolName = data.toolName ?? 'unknown';
228
+ contentContext = `MCP tool call "${toolName}" has parameters matching exploitation pattern ${patternId}.`;
229
+ }
230
+ else if (event.source === 'a2a-protocol') {
231
+ const from = data.from ?? 'unknown';
232
+ const to = data.to ?? 'unknown';
233
+ contentContext = `A2A message from "${from}" to "${to}" matched attack pattern ${patternId}.`;
234
+ }
235
+ return `AI-LAYER THREAT ASSESSMENT — determine if this is a true positive or false positive.
236
+
237
+ ${agentContext}
238
+
239
+ Detection: ${event.description}
240
+ Context: ${contentContext}
241
+ Matched text: "${String(matchedText).slice(0, 300)}"
242
+ Pattern: ${patternId} — ${patternCategory}
243
+ Severity: ${event.severity}
244
+
245
+ Could this be legitimate usage given the agent's purpose, or is this a genuine attack attempt?
246
+ Consider: obfuscation techniques, benign edge cases, and the agent's declared capabilities.
247
+
248
+ Respond in exactly this format:
249
+ CONSISTENT: YES (benign/false positive) or NO (genuine threat)
250
+ CONFIDENCE: 0.0-1.0
251
+ REASONING: one sentence explaining why
252
+ ACTION: ALLOW, ALERT, PAUSE, or KILL`;
253
+ }
254
+ function buildBatchPrompt(agentContext, events) {
255
+ const summary = events.map((e, i) => `${i + 1}. [${e.source}] ${e.severity}: ${e.description}`).join('\n');
256
+ return `BATCH SECURITY ASSESSMENT — ${events.length} anomalies.
257
+
258
+ ${agentContext}
259
+
260
+ Events:
261
+ ${summary}
262
+
263
+ Are any of these inconsistent with the agent's purpose? Flag only genuinely suspicious items.
264
+ Format: EVENT_NUM: ALLOW/ALERT/PAUSE/KILL — one sentence reason`;
265
+ }
266
+ function parseAssessment(content, tokens, cost) {
267
+ const lines = content.trim().split('\n');
268
+ let consistent = true;
269
+ let confidence = 0.5;
270
+ let reasoning = 'No assessment available';
271
+ let recommendation = 'allow';
272
+ for (const line of lines) {
273
+ const upper = line.toUpperCase();
274
+ if (upper.startsWith('CONSISTENT:')) {
275
+ consistent = upper.includes('YES');
276
+ }
277
+ else if (upper.startsWith('CONFIDENCE:')) {
278
+ const val = parseFloat(line.split(':')[1]?.trim() ?? '0.5');
279
+ confidence = isNaN(val) ? 0.5 : Math.max(0, Math.min(1, val));
280
+ }
281
+ else if (upper.startsWith('REASONING:')) {
282
+ reasoning = line.split(':').slice(1).join(':').trim();
283
+ }
284
+ else if (upper.startsWith('ACTION:')) {
285
+ const action = line.split(':')[1]?.trim().toUpperCase();
286
+ if (action === 'ALERT')
287
+ recommendation = 'alert';
288
+ else if (action === 'PAUSE')
289
+ recommendation = 'pause';
290
+ else if (action === 'KILL')
291
+ recommendation = 'kill';
292
+ else
293
+ recommendation = 'allow';
294
+ }
295
+ }
296
+ return { consistent, confidence, reasoning, recommendation, tokensUsed: tokens, estimatedCost: cost };
297
+ }
298
+ function severityIndex(severity) {
299
+ return SEVERITY_ORDER.indexOf(severity);
300
+ }
301
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/arp/intelligence/coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Monitor, MonitorType } from '../types';
2
+ import type { EventEngine } from '../engine/event-engine';
3
+ import { type ScanResult } from '../patterns/ai-threats';
4
+ /**
5
+ * A2A Protocol interceptor -- scans agent-to-agent messages for
6
+ * identity spoofing, delegation abuse, and embedded prompt injection.
7
+ *
8
+ * Enforces a trusted agent list and validates message content.
9
+ */
10
+ export declare class A2AProtocolInterceptor implements Monitor {
11
+ readonly type: MonitorType;
12
+ private readonly engine;
13
+ private readonly trustedAgents;
14
+ private active;
15
+ constructor(engine: EventEngine, trustedAgents?: string[]);
16
+ start(): Promise<void>;
17
+ stop(): Promise<void>;
18
+ isRunning(): boolean;
19
+ /**
20
+ * Scan an A2A message for identity spoofing, delegation abuse,
21
+ * and embedded prompt injection.
22
+ *
23
+ * @param from - Sending agent identifier
24
+ * @param to - Receiving agent identifier
25
+ * @param content - Message content
26
+ */
27
+ scanMessage(from: string, to: string, content: string): ScanResult;
28
+ }
29
+ //# sourceMappingURL=a2a-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-protocol.d.ts","sourceRoot":"","sources":["../../../src/arp/interceptors/a2a-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEjF;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,OAAO;IACpD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAC5C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;IAKnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,SAAS,IAAI,OAAO;IAIpB;;;;;;;OAOG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;CA8EnE"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.A2AProtocolInterceptor = void 0;
4
+ const ai_threats_1 = require("../patterns/ai-threats");
5
+ /**
6
+ * A2A Protocol interceptor -- scans agent-to-agent messages for
7
+ * identity spoofing, delegation abuse, and embedded prompt injection.
8
+ *
9
+ * Enforces a trusted agent list and validates message content.
10
+ */
11
+ class A2AProtocolInterceptor {
12
+ constructor(engine, trustedAgents) {
13
+ this.type = 'a2a-protocol';
14
+ this.active = false;
15
+ this.engine = engine;
16
+ this.trustedAgents = new Set(trustedAgents ?? []);
17
+ }
18
+ async start() {
19
+ this.active = true;
20
+ }
21
+ async stop() {
22
+ this.active = false;
23
+ }
24
+ isRunning() {
25
+ return this.active;
26
+ }
27
+ /**
28
+ * Scan an A2A message for identity spoofing, delegation abuse,
29
+ * and embedded prompt injection.
30
+ *
31
+ * @param from - Sending agent identifier
32
+ * @param to - Receiving agent identifier
33
+ * @param content - Message content
34
+ */
35
+ scanMessage(from, to, content) {
36
+ if (!this.active)
37
+ return { detected: false, matches: [] };
38
+ const allMatches = [];
39
+ // Check trusted agent list
40
+ if (this.trustedAgents.size > 0 && !this.trustedAgents.has(from)) {
41
+ this.engine.emit({
42
+ source: 'a2a-protocol',
43
+ category: 'violation',
44
+ severity: 'high',
45
+ description: `A2A message from untrusted agent: ${from}`,
46
+ data: {
47
+ from,
48
+ to,
49
+ reason: 'untrusted-agent',
50
+ trustedAgents: Array.from(this.trustedAgents),
51
+ },
52
+ });
53
+ allMatches.push({
54
+ pattern: {
55
+ id: 'A2A-TRUST',
56
+ category: 'a2a-attack',
57
+ description: 'Message from untrusted agent',
58
+ pattern: /./,
59
+ severity: 'high',
60
+ },
61
+ matchedText: from,
62
+ });
63
+ }
64
+ // Scan for A2A-specific attack patterns
65
+ const a2aResult = (0, ai_threats_1.scanText)(content, ai_threats_1.PATTERN_SETS.a2aPatterns);
66
+ if (a2aResult.detected) {
67
+ for (const match of a2aResult.matches) {
68
+ this.engine.emit({
69
+ source: 'a2a-protocol',
70
+ category: 'threat',
71
+ severity: match.pattern.severity,
72
+ description: `[${match.pattern.id}] ${match.pattern.description} from ${from} to ${to}`,
73
+ data: {
74
+ patternId: match.pattern.id,
75
+ patternCategory: match.pattern.category,
76
+ from,
77
+ to,
78
+ matchedText: match.matchedText,
79
+ },
80
+ });
81
+ }
82
+ allMatches.push(...a2aResult.matches);
83
+ }
84
+ // Also scan for prompt injection embedded in A2A messages
85
+ const injectionResult = (0, ai_threats_1.scanText)(content, ai_threats_1.PATTERN_SETS.promptInjection);
86
+ if (injectionResult.detected) {
87
+ for (const match of injectionResult.matches) {
88
+ this.engine.emit({
89
+ source: 'a2a-protocol',
90
+ category: 'threat',
91
+ severity: match.pattern.severity,
92
+ description: `[${match.pattern.id}] Prompt injection in A2A message from ${from} to ${to}`,
93
+ data: {
94
+ patternId: match.pattern.id,
95
+ patternCategory: 'prompt-injection-via-a2a',
96
+ from,
97
+ to,
98
+ matchedText: match.matchedText,
99
+ },
100
+ });
101
+ }
102
+ allMatches.push(...injectionResult.matches);
103
+ }
104
+ return {
105
+ detected: allMatches.length > 0,
106
+ matches: allMatches,
107
+ };
108
+ }
109
+ }
110
+ exports.A2AProtocolInterceptor = A2AProtocolInterceptor;
111
+ //# sourceMappingURL=a2a-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-protocol.js","sourceRoot":"","sources":["../../../src/arp/interceptors/a2a-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { Monitor, MonitorType } from '../types';
2
+ import type { EventEngine } from '../engine/event-engine';
3
+ /**
4
+ * Filesystem interceptor — hooks fs module functions to intercept
5
+ * ALL file operations at the application level.
6
+ *
7
+ * Advantages over fs.watch:
8
+ * - Catches reads (fs.watch only sees writes/renames)
9
+ * - Catches operations in ALL directories (not just watched paths)
10
+ * - Zero latency: events fire before the I/O happens
11
+ * - 100% accuracy: no debouncing artifacts, no missed events
12
+ * - Full operation context: knows read vs write vs delete vs mkdir
13
+ */
14
+ export declare class FilesystemInterceptor implements Monitor {
15
+ readonly type: MonitorType;
16
+ private readonly engine;
17
+ private readonly allowedPaths;
18
+ private readonly excludePaths;
19
+ private readonly fsModule;
20
+ private originals;
21
+ private active;
22
+ constructor(engine: EventEngine, allowedPaths?: string[], excludePaths?: string[]);
23
+ start(): Promise<void>;
24
+ stop(): Promise<void>;
25
+ isRunning(): boolean;
26
+ private isSensitivePath;
27
+ private isOutsideAllowed;
28
+ private isExcluded;
29
+ private handleWrite;
30
+ private handleRead;
31
+ private handleDelete;
32
+ }
33
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/arp/interceptors/filesystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAW1D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,YAAW,OAAO;IACnD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAG3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE;IAQ3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+CtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,YAAY;CAarB"}