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,215 @@
1
+ "use strict";
2
+ // AI-layer threat detection patterns
3
+ // L0 regex-based detection for known attack payloads
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.PATTERN_SETS = exports.ALL_PATTERNS = void 0;
6
+ exports.scanText = scanText;
7
+ // --- Prompt Injection Patterns ---
8
+ const promptInjection = [
9
+ {
10
+ id: 'PI-001',
11
+ category: 'prompt-injection',
12
+ description: 'Instruction override attempt — direct override of system instructions',
13
+ pattern: /(?:ignore|disregard|forget|override|bypass)\s+(?:all\s+)?(?:your\s+|the\s+|my\s+)?(?:previous|prior|above|earlier|system|original)\s+(?:instructions?|prompts?|rules?|directives?|guidelines?|constraints?)/i,
14
+ severity: 'critical',
15
+ },
16
+ {
17
+ id: 'PI-002',
18
+ category: 'prompt-injection',
19
+ description: 'Delimiter escape — attempts to break out of user message context',
20
+ pattern: /(?:<\/?(?:system|assistant|tool|function|instruction|context|internal)>|={3,}|---\s*(?:system|end|begin)|```\s*(?:system|instruction)|\[(?:SYSTEM|INST|INSTRUCTION)\]|<\|(?:im_start|im_end|system|endoftext)\|>)/i,
21
+ severity: 'high',
22
+ },
23
+ {
24
+ id: 'PI-003',
25
+ category: 'prompt-injection',
26
+ description: 'Tag injection — embedding fake system/assistant turns',
27
+ pattern: /(?:^|\n)\s*(?:system\s*:|assistant\s*:|AI\s*:|<\|(?:system|assistant)\|>)\s*.{10,}/im,
28
+ severity: 'high',
29
+ },
30
+ ];
31
+ // --- Jailbreak Patterns ---
32
+ const jailbreak = [
33
+ {
34
+ id: 'JB-001',
35
+ category: 'jailbreak',
36
+ description: 'DAN mode — "Do Anything Now" jailbreak attempt',
37
+ pattern: /\b(?:DAN|D\.A\.N|do\s+anything\s+now)\b.*(?:mode|persona|act|pretend|enable|activate|jailbr[eo]ak)/i,
38
+ severity: 'critical',
39
+ },
40
+ {
41
+ id: 'JB-002',
42
+ category: 'jailbreak',
43
+ description: 'Roleplay bypass — using fictional framing to bypass safety',
44
+ pattern: /(?:(?:pretend|imagine|act|roleplay|play|behave)\s+(?:you\s+are|as\s+(?:if\s+)?(?:you\s+(?:are|were)\s+)?|like|that\s+you(?:'re|\s+are))\s*(?:a\s+)?(?:an?\s+)?(?:evil|malicious|unfiltered|uncensored|unrestricted|unaligned|hacker|criminal|without\s+(?:restrictions|rules|limits|safety|guidelines|filters)))/i,
45
+ severity: 'high',
46
+ },
47
+ {
48
+ id: 'JB-003',
49
+ category: 'jailbreak',
50
+ description: 'Hypothetical bypass — using hypothetical framing to extract harmful content',
51
+ pattern: /(?:hypothetically|theoretically|in\s+theory|for\s+(?:educational|research|academic|fictional)\s+purposes?|just\s+for\s+fun|in\s+a\s+(?:fictional|hypothetical)\s+(?:world|scenario|universe)).*(?:how\s+(?:would|could|to)|explain|describe|show|give\s+me|write)\s+.*(?:hack|exploit|attack|inject|bypass|break|steal|exfiltrate)/i,
52
+ severity: 'medium',
53
+ },
54
+ ];
55
+ // --- Data Exfiltration Patterns (in user input) ---
56
+ const dataExfiltration = [
57
+ {
58
+ id: 'DE-001',
59
+ category: 'data-exfiltration',
60
+ description: 'System prompt extraction — attempting to extract system instructions',
61
+ pattern: /(?:(?:repeat|show|reveal|display|print|output|tell|what\s+(?:is|are)|give|list|dump|echo|copy)\s+(?:me\s+)?(?:your\s+|the\s+)?(?:full\s+|complete\s+|entire\s+|exact\s+|original\s+|initial\s+)?(?:system\s+)?(?:prompt|instructions?|rules?|guidelines?|initial\s+(?:prompt|message)|hidden\s+(?:prompt|instructions?)|(?:pre|pre-)?prompt))/i,
62
+ severity: 'high',
63
+ },
64
+ {
65
+ id: 'DE-002',
66
+ category: 'data-exfiltration',
67
+ description: 'Credential extraction — attempting to extract secrets or API keys',
68
+ pattern: /(?:(?:what|show|reveal|give|tell|display|print|dump|list)\s+(?:me\s+)?(?:are\s+)?(?:your\s+|the\s+)?(?:api\s+keys?|secrets?|credentials?|passwords?|tokens?|auth(?:entication)?|(?:private|secret)\s+keys?|(?:access|bearer)\s+tokens?|environment\s+variables?|env\s+vars?|\.env))/i,
69
+ severity: 'critical',
70
+ },
71
+ {
72
+ id: 'DE-003',
73
+ category: 'data-exfiltration',
74
+ description: 'PII extraction — attempting to extract personal data',
75
+ pattern: /(?:(?:list|show|give|reveal|dump|extract|tell)\s+(?:me\s+)?(?:all\s+)?(?:the\s+)?(?:users?|customers?|employees?|people|names?|emails?|addresses?|phone\s+numbers?|ssn|social\s+security|credit\s+cards?|payment|personal\s+(?:data|information|details)))/i,
76
+ severity: 'high',
77
+ },
78
+ ];
79
+ // --- Output Leak Patterns (in LLM responses) ---
80
+ const outputLeak = [
81
+ {
82
+ id: 'OL-001',
83
+ category: 'output-leak',
84
+ description: 'API key in output — LLM response contains API key pattern',
85
+ pattern: /(?:sk-[a-zA-Z0-9\-_]{20,}|(?:AKIA|ASIA)[A-Z0-9]{16}|ghp_[a-zA-Z0-9]{36}|glpat-[a-zA-Z0-9\-_]{20,}|xox[bpas]-[a-zA-Z0-9\-]{10,}|(?:eyJ[a-zA-Z0-9_-]{20,}\.){2}[a-zA-Z0-9_-]{20,})/,
86
+ severity: 'critical',
87
+ },
88
+ {
89
+ id: 'OL-002',
90
+ category: 'output-leak',
91
+ description: 'PII in output — LLM response contains PII patterns',
92
+ pattern: /(?:\b\d{3}-\d{2}-\d{4}\b|\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b|\b[A-Z]{2}\d{6,9}\b)/,
93
+ severity: 'high',
94
+ },
95
+ {
96
+ id: 'OL-003',
97
+ category: 'output-leak',
98
+ description: 'System prompt leak — LLM response appears to contain system instructions',
99
+ pattern: /(?:(?:my|the)\s+system\s+(?:prompt|instructions?)\s+(?:is|are|says?)|(?:here\s+(?:is|are)\s+)?(?:my|the)\s+(?:original|initial|full|hidden|secret)\s+(?:instructions?|prompt|guidelines?))/i,
100
+ severity: 'high',
101
+ },
102
+ ];
103
+ // --- Context Manipulation Patterns ---
104
+ const contextManipulation = [
105
+ {
106
+ id: 'CM-001',
107
+ category: 'context-manipulation',
108
+ description: 'False memory injection — injecting false context or history',
109
+ pattern: /(?:(?:remember|recall)\s+(?:that\s+)?(?:you|we)\s+(?:agreed|decided|confirmed|said|mentioned|established)|you\s+(?:said|told|mentioned|agreed|promised|confirmed)\s+(?:me\s+)?(?:that\s+)?(?:you|we|I)\s+(?:would|should|can|could|will|must|have|are|am))/i,
110
+ severity: 'medium',
111
+ },
112
+ {
113
+ id: 'CM-002',
114
+ category: 'context-manipulation',
115
+ description: 'Context reset — attempting to reset or clear conversation context',
116
+ pattern: /(?:(?:start|begin)\s+(?:a\s+)?(?:new|fresh)\s+(?:conversation|session|context|chat)|(?:clear|reset|wipe|flush|forget)\s+(?:your\s+)?(?:context|memory|history|conversation|session|chat)|new\s+session\s*(?::|started|begins?))/i,
117
+ severity: 'medium',
118
+ },
119
+ ];
120
+ // --- MCP Exploitation Patterns ---
121
+ const mcpExploitation = [
122
+ {
123
+ id: 'MCP-001',
124
+ category: 'mcp-exploitation',
125
+ description: 'Path traversal in MCP tool parameter',
126
+ pattern: /(?:\.\.\/|\.\.\\|%2e%2e(?:%2f|%5c)|\.\.%252f)/i,
127
+ severity: 'critical',
128
+ },
129
+ {
130
+ id: 'MCP-002',
131
+ category: 'mcp-exploitation',
132
+ description: 'Command injection in MCP tool parameter',
133
+ pattern: /(?:[;&|`$]\s*(?:cat|ls|rm|mv|cp|curl|wget|nc|bash|sh|python|perl|ruby|chmod|chown|kill|pkill|dd)\b|`[^`]+`|\$\([^)]+\)|\|\s*(?:sh|bash|zsh|python|perl|ruby|nc|curl|wget)\b)/,
134
+ severity: 'critical',
135
+ },
136
+ {
137
+ id: 'MCP-003',
138
+ category: 'mcp-exploitation',
139
+ description: 'SSRF in MCP tool parameter',
140
+ pattern: /(?:(?:https?|ftp|gopher|dict|ldap):\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(?:1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|::1|\[::1\]|0x7f|2130706433|metadata\.google|169\.254\.169\.254))/i,
141
+ severity: 'critical',
142
+ },
143
+ ];
144
+ // --- A2A Attack Patterns ---
145
+ const a2aAttack = [
146
+ {
147
+ id: 'A2A-001',
148
+ category: 'a2a-attack',
149
+ description: 'Identity spoofing — agent claiming to be another agent',
150
+ pattern: /(?:(?:i\s+am|this\s+is|acting\s+as|speaking\s+(?:as|for)|on\s+behalf\s+of|representing)\s+(?:the\s+)?(?:admin|administrator|orchestrator|supervisor|master|root|system|trusted|authorized|primary)\s+agent)/i,
151
+ severity: 'critical',
152
+ },
153
+ {
154
+ id: 'A2A-002',
155
+ category: 'a2a-attack',
156
+ description: 'Delegation abuse — unauthorized privilege escalation via task delegation',
157
+ pattern: /(?:(?:execute|run|perform|do)\s+(?:this\s+)?(?:\w+\s+)?(?:with|using)\s+(?:elevated|admin|root|system|full|unlimited|unrestricted)\s+(?:privileges?|permissions?|access|authority|rights)|(?:grant|give|elevate|escalate)\s+(?:my\s+)?(?:privileges?|permissions?|access|authority|rights|role))/i,
158
+ severity: 'high',
159
+ },
160
+ ];
161
+ // --- All patterns combined ---
162
+ exports.ALL_PATTERNS = [
163
+ ...promptInjection,
164
+ ...jailbreak,
165
+ ...dataExfiltration,
166
+ ...outputLeak,
167
+ ...contextManipulation,
168
+ ...mcpExploitation,
169
+ ...a2aAttack,
170
+ ];
171
+ /** Pattern sets by category for targeted scanning */
172
+ exports.PATTERN_SETS = {
173
+ promptInjection,
174
+ jailbreak,
175
+ dataExfiltration,
176
+ outputLeak,
177
+ contextManipulation,
178
+ mcpExploitation,
179
+ a2aAttack,
180
+ /** Input scanning: patterns relevant to user/agent input */
181
+ inputPatterns: [...promptInjection, ...jailbreak, ...dataExfiltration, ...contextManipulation],
182
+ /** Output scanning: patterns relevant to LLM responses */
183
+ outputPatterns: [...outputLeak],
184
+ /** MCP scanning: patterns relevant to tool call parameters */
185
+ mcpPatterns: [...mcpExploitation],
186
+ /** A2A scanning: patterns relevant to inter-agent messages */
187
+ a2aPatterns: [...a2aAttack],
188
+ };
189
+ /** Maximum text length to scan (64 KB) — prevents ReDoS on large payloads */
190
+ const MAX_SCAN_LENGTH = 64 * 1024;
191
+ /**
192
+ * Scan text against a set of threat patterns.
193
+ * Returns all matches (not just first) for comprehensive reporting.
194
+ * Input is truncated to MAX_SCAN_LENGTH to prevent ReDoS.
195
+ */
196
+ function scanText(text, patterns) {
197
+ const truncated = text.length > MAX_SCAN_LENGTH;
198
+ const scannable = truncated ? text.slice(0, MAX_SCAN_LENGTH) : text;
199
+ const matches = [];
200
+ for (const pattern of patterns) {
201
+ const match = pattern.pattern.exec(scannable);
202
+ if (match) {
203
+ matches.push({
204
+ pattern,
205
+ matchedText: match[0].slice(0, 200),
206
+ });
207
+ }
208
+ }
209
+ return {
210
+ detected: matches.length > 0,
211
+ matches,
212
+ truncated,
213
+ };
214
+ }
215
+ //# sourceMappingURL=ai-threats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-threats.js","sourceRoot":"","sources":["../../../src/arp/patterns/ai-threats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import * as http from 'http';
2
+ /**
3
+ * Buffer the full request body from an IncomingMessage.
4
+ * Rejects with 413 if body exceeds MAX_BODY_BYTES.
5
+ */
6
+ export declare function bufferBody(req: http.IncomingMessage): Promise<Buffer>;
7
+ /**
8
+ * Forward an HTTP request to an upstream target and pipe the response back.
9
+ * Returns the upstream response and its body buffer (for inspection).
10
+ */
11
+ export declare function forwardRequest(upstream: string, req: http.IncomingMessage, body: Buffer, originalPath: string): Promise<{
12
+ response: http.IncomingMessage;
13
+ body: Buffer;
14
+ }>;
15
+ /**
16
+ * Write headers and body to the client response.
17
+ */
18
+ export declare function sendResponse(res: http.ServerResponse, statusCode: number, headers: http.IncomingHttpHeaders, body: Buffer): void;
19
+ /**
20
+ * Send an error response as JSON.
21
+ */
22
+ export declare function sendError(res: http.ServerResponse, statusCode: number, message: string): void;
23
+ //# sourceMappingURL=forward.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../../src/arp/proxy/forward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBrE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA+C3D;AAsBD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,IAAI,EAAE,MAAM,GACX,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,IAAI,CAON"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.bufferBody = bufferBody;
37
+ exports.forwardRequest = forwardRequest;
38
+ exports.sendResponse = sendResponse;
39
+ exports.sendError = sendError;
40
+ const http = __importStar(require("http"));
41
+ const https = __importStar(require("https"));
42
+ const url_1 = require("url");
43
+ /** Maximum request/response body size (10 MB) */
44
+ const MAX_BODY_BYTES = 10 * 1024 * 1024;
45
+ /**
46
+ * Buffer the full request body from an IncomingMessage.
47
+ * Rejects with 413 if body exceeds MAX_BODY_BYTES.
48
+ */
49
+ function bufferBody(req) {
50
+ return new Promise((resolve, reject) => {
51
+ const chunks = [];
52
+ let totalBytes = 0;
53
+ req.on('data', (chunk) => {
54
+ totalBytes += chunk.length;
55
+ if (totalBytes > MAX_BODY_BYTES) {
56
+ req.destroy();
57
+ reject(new Error('Request body too large'));
58
+ return;
59
+ }
60
+ chunks.push(chunk);
61
+ });
62
+ req.on('end', () => resolve(Buffer.concat(chunks)));
63
+ req.on('error', reject);
64
+ });
65
+ }
66
+ /**
67
+ * Forward an HTTP request to an upstream target and pipe the response back.
68
+ * Returns the upstream response and its body buffer (for inspection).
69
+ */
70
+ function forwardRequest(upstream, req, body, originalPath) {
71
+ return new Promise((resolve, reject) => {
72
+ const target = new url_1.URL(originalPath, upstream);
73
+ const isHttps = target.protocol === 'https:';
74
+ const mod = isHttps ? https : http;
75
+ const options = {
76
+ hostname: target.hostname,
77
+ port: target.port || (isHttps ? 443 : 80),
78
+ path: target.pathname + target.search,
79
+ method: req.method,
80
+ headers: copyHeaders(req.headers, target.hostname),
81
+ timeout: 30000,
82
+ };
83
+ const proxyReq = mod.request(options, (proxyRes) => {
84
+ const chunks = [];
85
+ let totalBytes = 0;
86
+ proxyRes.on('data', (chunk) => {
87
+ totalBytes += chunk.length;
88
+ if (totalBytes > MAX_BODY_BYTES) {
89
+ proxyRes.destroy();
90
+ reject(new Error('Upstream response too large'));
91
+ return;
92
+ }
93
+ chunks.push(chunk);
94
+ });
95
+ proxyRes.on('end', () => {
96
+ resolve({
97
+ response: proxyRes,
98
+ body: Buffer.concat(chunks),
99
+ });
100
+ });
101
+ proxyRes.on('error', reject);
102
+ });
103
+ proxyReq.on('error', reject);
104
+ proxyReq.on('timeout', () => {
105
+ proxyReq.destroy();
106
+ reject(new Error('Upstream request timed out'));
107
+ });
108
+ if (body.length > 0) {
109
+ proxyReq.write(body);
110
+ }
111
+ proxyReq.end();
112
+ });
113
+ }
114
+ /**
115
+ * Copy headers from source to a plain object, updating Host header.
116
+ */
117
+ function copyHeaders(source, targetHost) {
118
+ const headers = {};
119
+ for (const [key, value] of Object.entries(source)) {
120
+ if (key.toLowerCase() === 'host') {
121
+ headers[key] = targetHost;
122
+ }
123
+ else if (key.toLowerCase() !== 'connection') {
124
+ headers[key] = value;
125
+ }
126
+ }
127
+ return headers;
128
+ }
129
+ /**
130
+ * Write headers and body to the client response.
131
+ */
132
+ function sendResponse(res, statusCode, headers, body) {
133
+ for (const [key, value] of Object.entries(headers)) {
134
+ if (value !== undefined && key.toLowerCase() !== 'transfer-encoding') {
135
+ res.setHeader(key, value);
136
+ }
137
+ }
138
+ res.writeHead(statusCode);
139
+ res.end(body);
140
+ }
141
+ /**
142
+ * Send an error response as JSON.
143
+ */
144
+ function sendError(res, statusCode, message) {
145
+ const body = JSON.stringify({ error: message });
146
+ res.writeHead(statusCode, {
147
+ 'content-type': 'application/json',
148
+ 'content-length': Buffer.byteLength(body),
149
+ });
150
+ res.end(body);
151
+ }
152
+ //# sourceMappingURL=forward.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forward.js","sourceRoot":"","sources":["../../../src/arp/proxy/forward.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { ProxyConfig } from '../types';
2
+ import type { EventEngine } from '../engine/event-engine';
3
+ import type { PromptInterceptor } from '../interceptors/prompt';
4
+ import type { MCPProtocolInterceptor } from '../interceptors/mcp-protocol';
5
+ import type { A2AProtocolInterceptor } from '../interceptors/a2a-protocol';
6
+ export interface ARPProxyDeps {
7
+ engine: EventEngine;
8
+ promptInterceptor?: PromptInterceptor;
9
+ mcpInterceptor?: MCPProtocolInterceptor;
10
+ a2aInterceptor?: A2AProtocolInterceptor;
11
+ }
12
+ /**
13
+ * ARP HTTP Reverse Proxy — sits between clients and upstream AI services,
14
+ * inspecting requests and responses for AI-layer threats.
15
+ *
16
+ * Zero external dependencies (uses Node.js built-in http module).
17
+ * Alert-only by default; optional blockOnDetection mode.
18
+ */
19
+ export declare class ARPProxy {
20
+ private readonly config;
21
+ private readonly deps;
22
+ private server;
23
+ constructor(config: ProxyConfig, deps: ARPProxyDeps);
24
+ start(): Promise<void>;
25
+ stop(): Promise<void>;
26
+ getPort(): number;
27
+ private handleRequest;
28
+ private findUpstream;
29
+ /**
30
+ * Inspect inbound request based on upstream protocol type.
31
+ * Returns true if a threat was detected.
32
+ */
33
+ private inspectRequest;
34
+ /**
35
+ * Inspect outbound response based on upstream protocol type.
36
+ */
37
+ private inspectResponse;
38
+ private inspectOpenAIRequest;
39
+ private inspectOpenAIResponse;
40
+ private inspectMCPRequest;
41
+ private inspectMCPResponse;
42
+ private inspectA2AResponse;
43
+ private inspectA2ARequest;
44
+ }
45
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/arp/proxy/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAI3E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED;;;;;;GAMG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,OAAO,CAAC,MAAM,CAA4B;gBAE9B,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY;IAK7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,OAAO,IAAI,MAAM;YAIH,aAAa;IAsD3B,OAAO,CAAC,YAAY;IAQpB;;;OAGG;YACW,cAAc;IA8B5B;;OAEG;YACW,eAAe;IA+B7B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,iBAAiB;CAoC1B"}