agent-threat-rules 0.3.1 → 1.0.0

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 (287) hide show
  1. package/README.md +190 -54
  2. package/package.json +3 -1
  3. package/rules/agent-manipulation/{ATR-2026-030-cross-agent-attack.yaml → ATR-2026-00030-cross-agent-attack.yaml} +3 -1
  4. package/rules/agent-manipulation/{ATR-2026-032-goal-hijacking.yaml → ATR-2026-00032-goal-hijacking.yaml} +3 -1
  5. package/rules/agent-manipulation/{ATR-2026-074-cross-agent-privilege-escalation.yaml → ATR-2026-00074-cross-agent-privilege-escalation.yaml} +3 -1
  6. package/rules/agent-manipulation/{ATR-2026-076-inter-agent-message-spoofing.yaml → ATR-2026-00076-inter-agent-message-spoofing.yaml} +3 -1
  7. package/rules/agent-manipulation/{ATR-2026-077-human-trust-exploitation.yaml → ATR-2026-00077-human-trust-exploitation.yaml} +3 -1
  8. package/rules/agent-manipulation/{ATR-2026-108-consensus-sybil-attack.yaml → ATR-2026-00108-consensus-sybil-attack.yaml} +3 -1
  9. package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +92 -0
  10. package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +92 -0
  11. package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +89 -0
  12. package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +89 -0
  13. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +105 -0
  14. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +53 -0
  15. package/rules/context-exfiltration/{ATR-2026-020-system-prompt-leak.yaml → ATR-2026-00020-system-prompt-leak.yaml} +3 -1
  16. package/rules/context-exfiltration/{ATR-2026-021-api-key-exposure.yaml → ATR-2026-00021-api-key-exposure.yaml} +3 -1
  17. package/rules/context-exfiltration/{ATR-2026-075-agent-memory-manipulation.yaml → ATR-2026-00075-agent-memory-manipulation.yaml} +3 -1
  18. package/rules/context-exfiltration/{ATR-2026-102-disguised-analytics-exfiltration.yaml → ATR-2026-00102-disguised-analytics-exfiltration.yaml} +3 -1
  19. package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +89 -0
  20. package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +89 -0
  21. package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +90 -0
  22. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +100 -0
  23. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +52 -0
  24. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +55 -0
  25. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +49 -0
  26. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +49 -0
  27. package/rules/data-poisoning/{ATR-2026-070-data-poisoning.yaml → ATR-2026-00070-data-poisoning.yaml} +3 -1
  28. package/rules/excessive-autonomy/{ATR-2026-050-runaway-agent-loop.yaml → ATR-2026-00050-runaway-agent-loop.yaml} +3 -1
  29. package/rules/excessive-autonomy/{ATR-2026-051-resource-exhaustion.yaml → ATR-2026-00051-resource-exhaustion.yaml} +3 -1
  30. package/rules/excessive-autonomy/{ATR-2026-052-cascading-failure.yaml → ATR-2026-00052-cascading-failure.yaml} +3 -1
  31. package/rules/excessive-autonomy/{ATR-2026-098-unauthorized-financial-action.yaml → ATR-2026-00098-unauthorized-financial-action.yaml} +3 -1
  32. package/rules/excessive-autonomy/{ATR-2026-099-high-risk-tool-gate.yaml → ATR-2026-00099-high-risk-tool-gate.yaml} +4 -2
  33. package/rules/model-security/{ATR-2026-072-model-behavior-extraction.yaml → ATR-2026-00072-model-behavior-extraction.yaml} +3 -1
  34. package/rules/model-security/{ATR-2026-073-malicious-finetuning-data.yaml → ATR-2026-00073-malicious-finetuning-data.yaml} +3 -1
  35. package/rules/privilege-escalation/{ATR-2026-040-privilege-escalation.yaml → ATR-2026-00040-privilege-escalation.yaml} +3 -1
  36. package/rules/privilege-escalation/{ATR-2026-041-scope-creep.yaml → ATR-2026-00041-scope-creep.yaml} +3 -1
  37. package/rules/privilege-escalation/{ATR-2026-107-delayed-execution-bypass.yaml → ATR-2026-00107-delayed-execution-bypass.yaml} +3 -1
  38. package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +92 -0
  39. package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +93 -0
  40. package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +89 -0
  41. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +53 -0
  42. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +49 -0
  43. package/rules/prompt-injection/{ATR-2026-001-direct-prompt-injection.yaml → ATR-2026-00001-direct-prompt-injection.yaml} +121 -11
  44. package/rules/prompt-injection/{ATR-2026-002-indirect-prompt-injection.yaml → ATR-2026-00002-indirect-prompt-injection.yaml} +3 -1
  45. package/rules/prompt-injection/{ATR-2026-003-jailbreak-attempt.yaml → ATR-2026-00003-jailbreak-attempt.yaml} +3 -1
  46. package/rules/prompt-injection/{ATR-2026-004-system-prompt-override.yaml → ATR-2026-00004-system-prompt-override.yaml} +3 -1
  47. package/rules/prompt-injection/{ATR-2026-005-multi-turn-injection.yaml → ATR-2026-00005-multi-turn-injection.yaml} +3 -1
  48. package/rules/prompt-injection/{ATR-2026-080-encoding-evasion.yaml → ATR-2026-00080-encoding-evasion.yaml} +3 -1
  49. package/rules/prompt-injection/{ATR-2026-081-semantic-multi-turn.yaml → ATR-2026-00081-semantic-multi-turn.yaml} +3 -1
  50. package/rules/prompt-injection/{ATR-2026-082-fingerprint-evasion.yaml → ATR-2026-00082-fingerprint-evasion.yaml} +3 -1
  51. package/rules/prompt-injection/{ATR-2026-083-indirect-tool-injection.yaml → ATR-2026-00083-indirect-tool-injection.yaml} +3 -1
  52. package/rules/prompt-injection/{ATR-2026-084-structured-data-injection.yaml → ATR-2026-00084-structured-data-injection.yaml} +3 -1
  53. package/rules/prompt-injection/{ATR-2026-085-audit-evasion.yaml → ATR-2026-00085-audit-evasion.yaml} +3 -1
  54. package/rules/prompt-injection/{ATR-2026-086-visual-spoofing.yaml → ATR-2026-00086-visual-spoofing.yaml} +3 -1
  55. package/rules/prompt-injection/{ATR-2026-087-rule-probing.yaml → ATR-2026-00087-rule-probing.yaml} +3 -1
  56. package/rules/prompt-injection/{ATR-2026-088-adaptive-countermeasure.yaml → ATR-2026-00088-adaptive-countermeasure.yaml} +3 -1
  57. package/rules/prompt-injection/{ATR-2026-089-polymorphic-skill.yaml → ATR-2026-00089-polymorphic-skill.yaml} +3 -1
  58. package/rules/prompt-injection/{ATR-2026-090-threat-intel-exfil.yaml → ATR-2026-00090-threat-intel-exfil.yaml} +3 -1
  59. package/rules/prompt-injection/{ATR-2026-091-nested-payload.yaml → ATR-2026-00091-nested-payload.yaml} +3 -1
  60. package/rules/prompt-injection/{ATR-2026-092-consensus-poisoning.yaml → ATR-2026-00092-consensus-poisoning.yaml} +3 -1
  61. package/rules/prompt-injection/{ATR-2026-093-gradual-escalation.yaml → ATR-2026-00093-gradual-escalation.yaml} +3 -1
  62. package/rules/prompt-injection/{ATR-2026-094-audit-bypass.yaml → ATR-2026-00094-audit-bypass.yaml} +3 -1
  63. package/rules/prompt-injection/{ATR-2026-097-cjk-injection-patterns.yaml → ATR-2026-00097-cjk-injection-patterns.yaml} +18 -1
  64. package/rules/prompt-injection/{ATR-2026-104-persona-hijacking.yaml → ATR-2026-00104-persona-hijacking.yaml} +3 -1
  65. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +103 -0
  66. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +99 -0
  67. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +117 -0
  68. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +52 -0
  69. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +51 -0
  70. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +52 -0
  71. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +71 -0
  72. package/rules/skill-compromise/{ATR-2026-060-skill-impersonation.yaml → ATR-2026-00060-skill-impersonation.yaml} +3 -1
  73. package/rules/skill-compromise/{ATR-2026-061-description-behavior-mismatch.yaml → ATR-2026-00061-description-behavior-mismatch.yaml} +4 -2
  74. package/rules/skill-compromise/{ATR-2026-062-hidden-capability.yaml → ATR-2026-00062-hidden-capability.yaml} +3 -1
  75. package/rules/skill-compromise/{ATR-2026-063-skill-chain-attack.yaml → ATR-2026-00063-skill-chain-attack.yaml} +5 -2
  76. package/rules/skill-compromise/{ATR-2026-064-over-permissioned-skill.yaml → ATR-2026-00064-over-permissioned-skill.yaml} +3 -1
  77. package/rules/skill-compromise/{ATR-2026-065-skill-update-attack.yaml → ATR-2026-00065-skill-update-attack.yaml} +3 -1
  78. package/rules/skill-compromise/{ATR-2026-066-parameter-injection.yaml → ATR-2026-00066-parameter-injection.yaml} +3 -1
  79. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +121 -0
  80. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +165 -0
  81. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +114 -0
  82. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +118 -0
  83. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +98 -0
  84. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +93 -0
  85. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +99 -0
  86. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +74 -0
  87. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +79 -0
  88. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +73 -0
  89. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +93 -0
  90. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +82 -0
  91. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +48 -0
  92. package/rules/tool-poisoning/{ATR-2026-010-mcp-malicious-response.yaml → ATR-2026-00010-mcp-malicious-response.yaml} +3 -1
  93. package/rules/tool-poisoning/{ATR-2026-011-tool-output-injection.yaml → ATR-2026-00011-tool-output-injection.yaml} +3 -1
  94. package/rules/tool-poisoning/{ATR-2026-012-unauthorized-tool-call.yaml → ATR-2026-00012-unauthorized-tool-call.yaml} +3 -1
  95. package/rules/tool-poisoning/{ATR-2026-013-tool-ssrf.yaml → ATR-2026-00013-tool-ssrf.yaml} +3 -1
  96. package/rules/tool-poisoning/{ATR-2026-095-supply-chain-poisoning.yaml → ATR-2026-00095-supply-chain-poisoning.yaml} +3 -1
  97. package/rules/tool-poisoning/{ATR-2026-096-registry-poisoning.yaml → ATR-2026-00096-registry-poisoning.yaml} +3 -1
  98. package/rules/tool-poisoning/{ATR-2026-100-consent-bypass-instruction.yaml → ATR-2026-00100-consent-bypass-instruction.yaml} +3 -1
  99. package/rules/tool-poisoning/{ATR-2026-101-trust-escalation-override.yaml → ATR-2026-00101-trust-escalation-override.yaml} +3 -1
  100. package/rules/tool-poisoning/{ATR-2026-103-hidden-safety-bypass-instruction.yaml → ATR-2026-00103-hidden-safety-bypass-instruction.yaml} +3 -1
  101. package/rules/tool-poisoning/{ATR-2026-105-silent-action-concealment.yaml → ATR-2026-00105-silent-action-concealment.yaml} +3 -1
  102. package/rules/tool-poisoning/{ATR-2026-106-schema-description-contradiction.yaml → ATR-2026-00106-schema-description-contradiction.yaml} +3 -1
  103. package/spec/atr-schema.yaml +32 -3
  104. package/dist/action-executor.d.ts +0 -44
  105. package/dist/action-executor.d.ts.map +0 -1
  106. package/dist/action-executor.js +0 -130
  107. package/dist/action-executor.js.map +0 -1
  108. package/dist/adapters/default-adapter.d.ts +0 -24
  109. package/dist/adapters/default-adapter.d.ts.map +0 -1
  110. package/dist/adapters/default-adapter.js +0 -51
  111. package/dist/adapters/default-adapter.js.map +0 -1
  112. package/dist/adapters/stdio-adapter.d.ts +0 -30
  113. package/dist/adapters/stdio-adapter.d.ts.map +0 -1
  114. package/dist/adapters/stdio-adapter.js +0 -128
  115. package/dist/adapters/stdio-adapter.js.map +0 -1
  116. package/dist/capability-extractor.d.ts +0 -35
  117. package/dist/capability-extractor.d.ts.map +0 -1
  118. package/dist/capability-extractor.js +0 -91
  119. package/dist/capability-extractor.js.map +0 -1
  120. package/dist/cli.d.ts +0 -12
  121. package/dist/cli.d.ts.map +0 -1
  122. package/dist/cli.js +0 -820
  123. package/dist/cli.js.map +0 -1
  124. package/dist/converters/elastic.d.ts +0 -36
  125. package/dist/converters/elastic.d.ts.map +0 -1
  126. package/dist/converters/elastic.js +0 -125
  127. package/dist/converters/elastic.js.map +0 -1
  128. package/dist/converters/index.d.ts +0 -28
  129. package/dist/converters/index.d.ts.map +0 -1
  130. package/dist/converters/index.js +0 -36
  131. package/dist/converters/index.js.map +0 -1
  132. package/dist/converters/splunk.d.ts +0 -19
  133. package/dist/converters/splunk.d.ts.map +0 -1
  134. package/dist/converters/splunk.js +0 -148
  135. package/dist/converters/splunk.js.map +0 -1
  136. package/dist/coverage-analyzer.d.ts +0 -43
  137. package/dist/coverage-analyzer.d.ts.map +0 -1
  138. package/dist/coverage-analyzer.js +0 -329
  139. package/dist/coverage-analyzer.js.map +0 -1
  140. package/dist/embedding/build-corpus.d.ts +0 -15
  141. package/dist/embedding/build-corpus.d.ts.map +0 -1
  142. package/dist/embedding/build-corpus.js +0 -105
  143. package/dist/embedding/build-corpus.js.map +0 -1
  144. package/dist/embedding/model-loader.d.ts +0 -41
  145. package/dist/embedding/model-loader.d.ts.map +0 -1
  146. package/dist/embedding/model-loader.js +0 -90
  147. package/dist/embedding/model-loader.js.map +0 -1
  148. package/dist/embedding/vector-store.d.ts +0 -41
  149. package/dist/embedding/vector-store.d.ts.map +0 -1
  150. package/dist/embedding/vector-store.js +0 -70
  151. package/dist/embedding/vector-store.js.map +0 -1
  152. package/dist/engine.d.ts +0 -163
  153. package/dist/engine.d.ts.map +0 -1
  154. package/dist/engine.js +0 -869
  155. package/dist/engine.js.map +0 -1
  156. package/dist/eval/corpus.d.ts +0 -42
  157. package/dist/eval/corpus.d.ts.map +0 -1
  158. package/dist/eval/corpus.js +0 -427
  159. package/dist/eval/corpus.js.map +0 -1
  160. package/dist/eval/eval-harness.d.ts +0 -44
  161. package/dist/eval/eval-harness.d.ts.map +0 -1
  162. package/dist/eval/eval-harness.js +0 -296
  163. package/dist/eval/eval-harness.js.map +0 -1
  164. package/dist/eval/index.d.ts +0 -13
  165. package/dist/eval/index.d.ts.map +0 -1
  166. package/dist/eval/index.js +0 -9
  167. package/dist/eval/index.js.map +0 -1
  168. package/dist/eval/metrics.d.ts +0 -74
  169. package/dist/eval/metrics.d.ts.map +0 -1
  170. package/dist/eval/metrics.js +0 -108
  171. package/dist/eval/metrics.js.map +0 -1
  172. package/dist/eval/pint-corpus.d.ts +0 -34
  173. package/dist/eval/pint-corpus.d.ts.map +0 -1
  174. package/dist/eval/pint-corpus.js +0 -109
  175. package/dist/eval/pint-corpus.js.map +0 -1
  176. package/dist/eval/rule-corpus.d.ts +0 -9
  177. package/dist/eval/rule-corpus.d.ts.map +0 -1
  178. package/dist/eval/rule-corpus.js +0 -4780
  179. package/dist/eval/rule-corpus.js.map +0 -1
  180. package/dist/eval/rule-metrics.d.ts +0 -34
  181. package/dist/eval/rule-metrics.d.ts.map +0 -1
  182. package/dist/eval/rule-metrics.js +0 -92
  183. package/dist/eval/rule-metrics.js.map +0 -1
  184. package/dist/eval/run-eval.d.ts +0 -7
  185. package/dist/eval/run-eval.d.ts.map +0 -1
  186. package/dist/eval/run-eval.js +0 -11
  187. package/dist/eval/run-eval.js.map +0 -1
  188. package/dist/eval/run-pint-benchmark.d.ts +0 -18
  189. package/dist/eval/run-pint-benchmark.d.ts.map +0 -1
  190. package/dist/eval/run-pint-benchmark.js +0 -157
  191. package/dist/eval/run-pint-benchmark.js.map +0 -1
  192. package/dist/flywheel.d.ts +0 -54
  193. package/dist/flywheel.d.ts.map +0 -1
  194. package/dist/flywheel.js +0 -121
  195. package/dist/flywheel.js.map +0 -1
  196. package/dist/hook-handler.d.ts +0 -61
  197. package/dist/hook-handler.d.ts.map +0 -1
  198. package/dist/hook-handler.js +0 -178
  199. package/dist/hook-handler.js.map +0 -1
  200. package/dist/index.d.ts +0 -62
  201. package/dist/index.d.ts.map +0 -1
  202. package/dist/index.js +0 -54
  203. package/dist/index.js.map +0 -1
  204. package/dist/layer-integration.d.ts +0 -55
  205. package/dist/layer-integration.d.ts.map +0 -1
  206. package/dist/layer-integration.js +0 -185
  207. package/dist/layer-integration.js.map +0 -1
  208. package/dist/loader.d.ts +0 -21
  209. package/dist/loader.d.ts.map +0 -1
  210. package/dist/loader.js +0 -124
  211. package/dist/loader.js.map +0 -1
  212. package/dist/mcp-server.d.ts +0 -13
  213. package/dist/mcp-server.d.ts.map +0 -1
  214. package/dist/mcp-server.js +0 -220
  215. package/dist/mcp-server.js.map +0 -1
  216. package/dist/mcp-tools/coverage-gaps.d.ts +0 -13
  217. package/dist/mcp-tools/coverage-gaps.d.ts.map +0 -1
  218. package/dist/mcp-tools/coverage-gaps.js +0 -55
  219. package/dist/mcp-tools/coverage-gaps.js.map +0 -1
  220. package/dist/mcp-tools/list-rules.d.ts +0 -17
  221. package/dist/mcp-tools/list-rules.d.ts.map +0 -1
  222. package/dist/mcp-tools/list-rules.js +0 -45
  223. package/dist/mcp-tools/list-rules.js.map +0 -1
  224. package/dist/mcp-tools/scan.d.ts +0 -24
  225. package/dist/mcp-tools/scan.d.ts.map +0 -1
  226. package/dist/mcp-tools/scan.js +0 -94
  227. package/dist/mcp-tools/scan.js.map +0 -1
  228. package/dist/mcp-tools/submit-proposal.d.ts +0 -12
  229. package/dist/mcp-tools/submit-proposal.d.ts.map +0 -1
  230. package/dist/mcp-tools/submit-proposal.js +0 -103
  231. package/dist/mcp-tools/submit-proposal.js.map +0 -1
  232. package/dist/mcp-tools/threat-summary.d.ts +0 -12
  233. package/dist/mcp-tools/threat-summary.d.ts.map +0 -1
  234. package/dist/mcp-tools/threat-summary.js +0 -74
  235. package/dist/mcp-tools/threat-summary.js.map +0 -1
  236. package/dist/mcp-tools/validate.d.ts +0 -15
  237. package/dist/mcp-tools/validate.d.ts.map +0 -1
  238. package/dist/mcp-tools/validate.js +0 -45
  239. package/dist/mcp-tools/validate.js.map +0 -1
  240. package/dist/modules/embedding.d.ts +0 -71
  241. package/dist/modules/embedding.d.ts.map +0 -1
  242. package/dist/modules/embedding.js +0 -141
  243. package/dist/modules/embedding.js.map +0 -1
  244. package/dist/modules/index.d.ts +0 -144
  245. package/dist/modules/index.d.ts.map +0 -1
  246. package/dist/modules/index.js +0 -82
  247. package/dist/modules/index.js.map +0 -1
  248. package/dist/modules/semantic.d.ts +0 -106
  249. package/dist/modules/semantic.d.ts.map +0 -1
  250. package/dist/modules/semantic.js +0 -359
  251. package/dist/modules/semantic.js.map +0 -1
  252. package/dist/modules/session.d.ts +0 -70
  253. package/dist/modules/session.d.ts.map +0 -1
  254. package/dist/modules/session.js +0 -128
  255. package/dist/modules/session.js.map +0 -1
  256. package/dist/rule-scaffolder.d.ts +0 -53
  257. package/dist/rule-scaffolder.d.ts.map +0 -1
  258. package/dist/rule-scaffolder.js +0 -301
  259. package/dist/rule-scaffolder.js.map +0 -1
  260. package/dist/session-tracker.d.ts +0 -58
  261. package/dist/session-tracker.d.ts.map +0 -1
  262. package/dist/session-tracker.js +0 -176
  263. package/dist/session-tracker.js.map +0 -1
  264. package/dist/shadow-evaluator.d.ts +0 -48
  265. package/dist/shadow-evaluator.d.ts.map +0 -1
  266. package/dist/shadow-evaluator.js +0 -128
  267. package/dist/shadow-evaluator.js.map +0 -1
  268. package/dist/skill-fingerprint.d.ts +0 -85
  269. package/dist/skill-fingerprint.d.ts.map +0 -1
  270. package/dist/skill-fingerprint.js +0 -284
  271. package/dist/skill-fingerprint.js.map +0 -1
  272. package/dist/tier0-invariant.d.ts +0 -49
  273. package/dist/tier0-invariant.d.ts.map +0 -1
  274. package/dist/tier0-invariant.js +0 -184
  275. package/dist/tier0-invariant.js.map +0 -1
  276. package/dist/tier1-blacklist.d.ts +0 -48
  277. package/dist/tier1-blacklist.d.ts.map +0 -1
  278. package/dist/tier1-blacklist.js +0 -91
  279. package/dist/tier1-blacklist.js.map +0 -1
  280. package/dist/types.d.ts +0 -190
  281. package/dist/types.d.ts.map +0 -1
  282. package/dist/types.js +0 -6
  283. package/dist/types.js.map +0 -1
  284. package/dist/verdict.d.ts +0 -26
  285. package/dist/verdict.d.ts.map +0 -1
  286. package/dist/verdict.js +0 -127
  287. package/dist/verdict.js.map +0 -1
@@ -1,70 +0,0 @@
1
- /**
2
- * In-memory vector store with cosine similarity search.
3
- *
4
- * Stores pre-computed attack embeddings and finds nearest neighbors
5
- * for incoming text. Sub-millisecond for ~2000 vectors at 384 dimensions.
6
- *
7
- * @module agent-threat-rules/embedding/vector-store
8
- */
9
- export class VectorStore {
10
- entries;
11
- constructor(entries) {
12
- this.entries = entries ?? [];
13
- }
14
- /** Create new store with additional entries (immutable) */
15
- withEntries(newEntries) {
16
- return new VectorStore([...this.entries, ...newEntries]);
17
- }
18
- /**
19
- * Find top-K nearest neighbors by cosine similarity.
20
- * Only returns results above the threshold.
21
- */
22
- search(query, topK = 3, threshold = 0.82) {
23
- if (this.entries.length === 0)
24
- return [];
25
- const results = [];
26
- for (const entry of this.entries) {
27
- const sim = cosineSimilarity(query, entry.vector);
28
- if (sim >= threshold) {
29
- results.push({ entry, similarity: sim });
30
- }
31
- }
32
- // Sort by similarity descending, take top K
33
- results.sort((a, b) => b.similarity - a.similarity);
34
- return results.slice(0, topK);
35
- }
36
- size() {
37
- return this.entries.length;
38
- }
39
- }
40
- /**
41
- * Cosine similarity between two vectors.
42
- * Returns value between -1 and 1 (1 = identical direction).
43
- */
44
- function cosineSimilarity(a, b) {
45
- if (a.length !== b.length)
46
- return 0;
47
- let dot = 0;
48
- let magA = 0;
49
- let magB = 0;
50
- for (let i = 0; i < a.length; i++) {
51
- dot += a[i] * b[i];
52
- magA += a[i] * a[i];
53
- magB += b[i] * b[i];
54
- }
55
- const denom = Math.sqrt(magA) * Math.sqrt(magB);
56
- if (denom === 0)
57
- return 0;
58
- return dot / denom;
59
- }
60
- /** Load pre-computed embeddings from JSON */
61
- export function loadVectorEntries(data) {
62
- return data.map((d) => ({
63
- id: d.id,
64
- vector: new Float32Array(d.vector),
65
- label: d.label,
66
- category: d.category,
67
- severity: (d.severity || 'medium'),
68
- }));
69
- }
70
- //# sourceMappingURL=vector-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../src/embedding/vector-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,MAAM,OAAO,WAAW;IACL,OAAO,CAAyB;IAEjD,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,2DAA2D;IAC3D,WAAW,CAAC,UAAkC;QAC5C,OAAO,IAAI,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAmB,EAAE,OAAe,CAAC,EAAE,YAAoB,IAAI;QACpE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,CAAe,EAAE,CAAe;IACxD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAEpC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACxB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE1B,OAAO,GAAG,GAAG,KAAK,CAAC;AACrB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,iBAAiB,CAC/B,IAAoG;IAEpG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAgB;KAClD,CAAC,CAAC,CAAC;AACN,CAAC"}
package/dist/engine.d.ts DELETED
@@ -1,163 +0,0 @@
1
- /**
2
- * ATR Engine - Evaluates agent events against ATR rules
3
- *
4
- * Core detection engine that:
5
- * 1. Loads ATR YAML rules from disk
6
- * 2. Evaluates agent events (LLM I/O, tool calls, behaviors) against rules
7
- * 3. Returns matched rules with confidence scores
8
- * 4. Supports two condition formats:
9
- * - Array format: conditions is an array of {field, operator, value} objects
10
- * - Named format: conditions is an object map of named condition blocks
11
- *
12
- * @module agent-threat-rules/engine
13
- */
14
- import type { ATRRule, ATRMatch, AgentEvent, ATRVerdict, ActionResult } from './types.js';
15
- import type { SessionTracker } from './session-tracker.js';
16
- import type { ActionExecutor } from './action-executor.js';
17
- import type { SkillFingerprintStore } from './skill-fingerprint.js';
18
- import type { SemanticLayerConfig } from './layer-integration.js';
19
- import type { InvariantChecker } from './tier0-invariant.js';
20
- import type { BlacklistProvider } from './tier1-blacklist.js';
21
- import type { EmbeddingModule } from './modules/embedding.js';
22
- export interface ATREngineConfig {
23
- /** Directory containing ATR rule YAML files */
24
- rulesDir?: string;
25
- /** Pre-loaded rules (for testing or embedding) */
26
- rules?: ATRRule[];
27
- /** Optional session tracker for behavioral detection across events */
28
- sessionTracker?: SessionTracker;
29
- /** Optional Tier 0: Invariant enforcement (hard boundaries, pre-check) */
30
- invariantChecker?: InvariantChecker;
31
- /** Optional Tier 1: Skill blacklist provider (known-bad lookup) */
32
- blacklistProvider?: BlacklistProvider;
33
- /** Optional Layer 2: Skill behavioral fingerprinting (no LLM required) */
34
- fingerprintStore?: SkillFingerprintStore;
35
- /** Optional Tier 2.5: Embedding similarity module (requires @xenova/transformers) */
36
- embeddingModule?: EmbeddingModule;
37
- /** Optional Layer 3: Semantic LLM-as-judge analysis (requires API key) */
38
- semanticModule?: SemanticLayerConfig;
39
- }
40
- export declare class ATREngine {
41
- private readonly config;
42
- private rules;
43
- private readonly compiledPatterns;
44
- private readonly semanticModuleInstance;
45
- constructor(config?: ATREngineConfig);
46
- /**
47
- * Load rules from configured directory and/or pre-loaded rules.
48
- */
49
- loadRules(): Promise<number>;
50
- /**
51
- * Load a single rule file and add it to the engine.
52
- */
53
- addRuleFile(filePath: string): void;
54
- /**
55
- * Add a pre-parsed rule to the engine.
56
- */
57
- addRule(rule: ATRRule): void;
58
- /**
59
- * Evaluate an agent event against all loaded ATR rules.
60
- * Returns all matching rules with details.
61
- */
62
- evaluate(event: AgentEvent): ATRMatch[];
63
- /**
64
- * Evaluate a single rule against an event.
65
- * Supports both array-format and named-map-format conditions.
66
- */
67
- private evaluateRule;
68
- /**
69
- * Evaluate array-format conditions: [{field, operator, value}, ...]
70
- * with condition: "any" | "all"
71
- */
72
- private evaluateArrayConditions;
73
- /**
74
- * Evaluate a single array-format condition {field, operator, value}.
75
- */
76
- private evaluateArrayCondition;
77
- /**
78
- * Evaluate named-map-format conditions: {name: {field, patterns, match_type}, ...}
79
- * with condition: "name1 AND name2" | "name1 OR name2" | "name1"
80
- */
81
- private evaluateNamedConditions;
82
- /**
83
- * Evaluate a single named condition against an event.
84
- */
85
- private evaluateNamedCondition;
86
- /**
87
- * Evaluate a pattern matching condition (named format with patterns array).
88
- */
89
- private evaluatePatternCondition;
90
- /**
91
- * Evaluate a behavioral threshold condition.
92
- * When a session tracker is available and the event has a sessionId,
93
- * supports session-derived metrics: call_frequency, pattern_frequency, event_count.
94
- */
95
- private evaluateBehavioralCondition;
96
- /**
97
- * Resolve a metric value from event metrics or session tracker.
98
- * Session-derived metrics use the format: "call_frequency:toolName" or "pattern_frequency:pattern".
99
- */
100
- private resolveMetricValue;
101
- /**
102
- * Parse a window string (e.g. "5m", "1h", "30s") to milliseconds.
103
- * Defaults to 5 minutes if not specified or unparseable.
104
- */
105
- private parseWindowMs;
106
- /**
107
- * Evaluate a sequence condition against the current event.
108
- *
109
- * Two modes:
110
- * 1. Session-aware (when SessionTracker + sessionId available):
111
- * Checks patterns across historical events in the session.
112
- * Respects `ordered` flag and `within` time window.
113
- * 2. Single-event fallback: checks if patterns co-occur in one event.
114
- */
115
- private evaluateSequenceCondition;
116
- /**
117
- * Cross-event sequence detection using SessionTracker.
118
- * Checks if step patterns have been seen across events in order.
119
- */
120
- private evaluateSequenceAcrossSession;
121
- /**
122
- * Single-event fallback: check if step patterns co-occur in one event.
123
- */
124
- private evaluateSequenceSingleEvent;
125
- /**
126
- * Resolve a field value from an agent event.
127
- */
128
- private resolveField;
129
- /**
130
- * Evaluate a boolean expression string against condition results.
131
- * Supports AND, OR, NOT operators.
132
- */
133
- private evaluateExpression;
134
- /**
135
- * Split expression by operator, respecting parentheses.
136
- */
137
- private splitByOperator;
138
- /**
139
- * Pre-compile regex patterns for a rule (performance optimization).
140
- * Supports both array-format and named-map-format conditions.
141
- */
142
- private compilePatterns;
143
- /**
144
- * Evaluate an event and compute a verdict with optional action execution.
145
- *
146
- * Combines evaluate() + computeVerdict() + optional ActionExecutor
147
- * into a single call for convenience.
148
- */
149
- evaluateWithVerdict(event: AgentEvent, executor?: ActionExecutor): Promise<{
150
- verdict: ATRVerdict;
151
- actionResults: readonly ActionResult[];
152
- layersUsed: readonly string[];
153
- }>;
154
- /** Get loaded rule count */
155
- getRuleCount(): number;
156
- /** Get all loaded rules */
157
- getRules(): readonly ATRRule[];
158
- /** Get a rule by ID */
159
- getRuleById(id: string): ATRRule | undefined;
160
- /** Get rules by category */
161
- getRulesByCategory(category: string): ATRRule[];
162
- }
163
- //# sourceMappingURL=engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}