@waratahlabs/canopy 0.5.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 (319) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -0
  3. package/SKILL.md +97 -0
  4. package/demo/data/openclaw-demo.tc.json +397 -0
  5. package/demo/data/openclaw-nemoclaw-demo.tc.json +475 -0
  6. package/demo/index.html +556 -0
  7. package/dist/adapters/a2a.d.ts +82 -0
  8. package/dist/adapters/a2a.d.ts.map +1 -0
  9. package/dist/adapters/a2a.js +215 -0
  10. package/dist/adapters/a2a.js.map +1 -0
  11. package/dist/adapters/a2a.test.d.ts +2 -0
  12. package/dist/adapters/a2a.test.d.ts.map +1 -0
  13. package/dist/adapters/a2a.test.js +196 -0
  14. package/dist/adapters/a2a.test.js.map +1 -0
  15. package/dist/adapters/langfuse.d.ts +28 -0
  16. package/dist/adapters/langfuse.d.ts.map +1 -0
  17. package/dist/adapters/langfuse.js +192 -0
  18. package/dist/adapters/langfuse.js.map +1 -0
  19. package/dist/adapters/n8n.d.ts +4 -0
  20. package/dist/adapters/n8n.d.ts.map +1 -0
  21. package/dist/adapters/n8n.js +89 -0
  22. package/dist/adapters/n8n.js.map +1 -0
  23. package/dist/adapters/openclaw.d.ts +58 -0
  24. package/dist/adapters/openclaw.d.ts.map +1 -0
  25. package/dist/adapters/openclaw.js +275 -0
  26. package/dist/adapters/openclaw.js.map +1 -0
  27. package/dist/adapters/types.d.ts +33 -0
  28. package/dist/adapters/types.d.ts.map +1 -0
  29. package/dist/adapters/types.js +2 -0
  30. package/dist/adapters/types.js.map +1 -0
  31. package/dist/aivss/atlas/coverage-matrix.d.ts +12 -0
  32. package/dist/aivss/atlas/coverage-matrix.d.ts.map +1 -0
  33. package/dist/aivss/atlas/coverage-matrix.js +272 -0
  34. package/dist/aivss/atlas/coverage-matrix.js.map +1 -0
  35. package/dist/aivss/atlas/loader.d.ts +28 -0
  36. package/dist/aivss/atlas/loader.d.ts.map +1 -0
  37. package/dist/aivss/atlas/loader.js +126 -0
  38. package/dist/aivss/atlas/loader.js.map +1 -0
  39. package/dist/aivss/atlas/loader.test.d.ts +11 -0
  40. package/dist/aivss/atlas/loader.test.d.ts.map +1 -0
  41. package/dist/aivss/atlas/loader.test.js +111 -0
  42. package/dist/aivss/atlas/loader.test.js.map +1 -0
  43. package/dist/aivss/atlas/resolve-path.d.ts +34 -0
  44. package/dist/aivss/atlas/resolve-path.d.ts.map +1 -0
  45. package/dist/aivss/atlas/resolve-path.js +58 -0
  46. package/dist/aivss/atlas/resolve-path.js.map +1 -0
  47. package/dist/aivss/batch/batch-builder.d.ts +11 -0
  48. package/dist/aivss/batch/batch-builder.d.ts.map +1 -0
  49. package/dist/aivss/batch/batch-builder.js +75 -0
  50. package/dist/aivss/batch/batch-builder.js.map +1 -0
  51. package/dist/aivss/index.d.ts +21 -0
  52. package/dist/aivss/index.d.ts.map +1 -0
  53. package/dist/aivss/index.js +19 -0
  54. package/dist/aivss/index.js.map +1 -0
  55. package/dist/aivss/knowledge-base/kb-client.d.ts +9 -0
  56. package/dist/aivss/knowledge-base/kb-client.d.ts.map +1 -0
  57. package/dist/aivss/knowledge-base/kb-client.js +139 -0
  58. package/dist/aivss/knowledge-base/kb-client.js.map +1 -0
  59. package/dist/aivss/knowledge-base/kb-types.d.ts +21 -0
  60. package/dist/aivss/knowledge-base/kb-types.d.ts.map +1 -0
  61. package/dist/aivss/knowledge-base/kb-types.js +2 -0
  62. package/dist/aivss/knowledge-base/kb-types.js.map +1 -0
  63. package/dist/aivss/knowledge-base/search-builder.d.ts +7 -0
  64. package/dist/aivss/knowledge-base/search-builder.d.ts.map +1 -0
  65. package/dist/aivss/knowledge-base/search-builder.js +119 -0
  66. package/dist/aivss/knowledge-base/search-builder.js.map +1 -0
  67. package/dist/aivss/metrics/aa.d.ts +3 -0
  68. package/dist/aivss/metrics/aa.d.ts.map +1 -0
  69. package/dist/aivss/metrics/aa.js +26 -0
  70. package/dist/aivss/metrics/aa.js.map +1 -0
  71. package/dist/aivss/metrics/ad.d.ts +3 -0
  72. package/dist/aivss/metrics/ad.d.ts.map +1 -0
  73. package/dist/aivss/metrics/ad.js +30 -0
  74. package/dist/aivss/metrics/ad.js.map +1 -0
  75. package/dist/aivss/metrics/cs.d.ts +3 -0
  76. package/dist/aivss/metrics/cs.d.ts.map +1 -0
  77. package/dist/aivss/metrics/cs.js +50 -0
  78. package/dist/aivss/metrics/cs.js.map +1 -0
  79. package/dist/aivss/metrics/dc.d.ts +3 -0
  80. package/dist/aivss/metrics/dc.d.ts.map +1 -0
  81. package/dist/aivss/metrics/dc.js +30 -0
  82. package/dist/aivss/metrics/dc.js.map +1 -0
  83. package/dist/aivss/metrics/ds.d.ts +3 -0
  84. package/dist/aivss/metrics/ds.d.ts.map +1 -0
  85. package/dist/aivss/metrics/ds.js +26 -0
  86. package/dist/aivss/metrics/ds.js.map +1 -0
  87. package/dist/aivss/metrics/ei.d.ts +3 -0
  88. package/dist/aivss/metrics/ei.d.ts.map +1 -0
  89. package/dist/aivss/metrics/ei.js +30 -0
  90. package/dist/aivss/metrics/ei.js.map +1 -0
  91. package/dist/aivss/metrics/gv.d.ts +3 -0
  92. package/dist/aivss/metrics/gv.d.ts.map +1 -0
  93. package/dist/aivss/metrics/gv.js +34 -0
  94. package/dist/aivss/metrics/gv.js.map +1 -0
  95. package/dist/aivss/metrics/ll.d.ts +3 -0
  96. package/dist/aivss/metrics/ll.d.ts.map +1 -0
  97. package/dist/aivss/metrics/ll.js +30 -0
  98. package/dist/aivss/metrics/ll.js.map +1 -0
  99. package/dist/aivss/metrics/mr.d.ts +3 -0
  100. package/dist/aivss/metrics/mr.d.ts.map +1 -0
  101. package/dist/aivss/metrics/mr.js +26 -0
  102. package/dist/aivss/metrics/mr.js.map +1 -0
  103. package/dist/aivss/metrics/shared.d.ts +22 -0
  104. package/dist/aivss/metrics/shared.d.ts.map +1 -0
  105. package/dist/aivss/metrics/shared.js +70 -0
  106. package/dist/aivss/metrics/shared.js.map +1 -0
  107. package/dist/aivss/prompts/base-system-prompt.d.ts +2 -0
  108. package/dist/aivss/prompts/base-system-prompt.d.ts.map +1 -0
  109. package/dist/aivss/prompts/base-system-prompt.js +31 -0
  110. package/dist/aivss/prompts/base-system-prompt.js.map +1 -0
  111. package/dist/aivss/prompts/prompt-composer.d.ts +13 -0
  112. package/dist/aivss/prompts/prompt-composer.d.ts.map +1 -0
  113. package/dist/aivss/prompts/prompt-composer.js +21 -0
  114. package/dist/aivss/prompts/prompt-composer.js.map +1 -0
  115. package/dist/aivss/scoring/a2a-corpus.test.d.ts +28 -0
  116. package/dist/aivss/scoring/a2a-corpus.test.d.ts.map +1 -0
  117. package/dist/aivss/scoring/a2a-corpus.test.js +109 -0
  118. package/dist/aivss/scoring/a2a-corpus.test.js.map +1 -0
  119. package/dist/aivss/scoring/determinism.test.d.ts +16 -0
  120. package/dist/aivss/scoring/determinism.test.d.ts.map +1 -0
  121. package/dist/aivss/scoring/determinism.test.js +169 -0
  122. package/dist/aivss/scoring/determinism.test.js.map +1 -0
  123. package/dist/aivss/scoring/heuristic-scorer.d.ts +21 -0
  124. package/dist/aivss/scoring/heuristic-scorer.d.ts.map +1 -0
  125. package/dist/aivss/scoring/heuristic-scorer.js +299 -0
  126. package/dist/aivss/scoring/heuristic-scorer.js.map +1 -0
  127. package/dist/aivss/scoring/heuristic-scorer.test.d.ts +8 -0
  128. package/dist/aivss/scoring/heuristic-scorer.test.d.ts.map +1 -0
  129. package/dist/aivss/scoring/heuristic-scorer.test.js +150 -0
  130. package/dist/aivss/scoring/heuristic-scorer.test.js.map +1 -0
  131. package/dist/aivss/scoring/scoring-mode.d.ts +48 -0
  132. package/dist/aivss/scoring/scoring-mode.d.ts.map +1 -0
  133. package/dist/aivss/scoring/scoring-mode.js +64 -0
  134. package/dist/aivss/scoring/scoring-mode.js.map +1 -0
  135. package/dist/aivss/scoring/v4-engine.d.ts +15 -0
  136. package/dist/aivss/scoring/v4-engine.d.ts.map +1 -0
  137. package/dist/aivss/scoring/v4-engine.js +84 -0
  138. package/dist/aivss/scoring/v4-engine.js.map +1 -0
  139. package/dist/aivss/scoring/v4-engine.test.d.ts +16 -0
  140. package/dist/aivss/scoring/v4-engine.test.d.ts.map +1 -0
  141. package/dist/aivss/scoring/v4-engine.test.js +156 -0
  142. package/dist/aivss/scoring/v4-engine.test.js.map +1 -0
  143. package/dist/aivss/types.d.ts +92 -0
  144. package/dist/aivss/types.d.ts.map +1 -0
  145. package/dist/aivss/types.js +25 -0
  146. package/dist/aivss/types.js.map +1 -0
  147. package/dist/baseline/baseline.test.d.ts +2 -0
  148. package/dist/baseline/baseline.test.d.ts.map +1 -0
  149. package/dist/baseline/baseline.test.js +219 -0
  150. package/dist/baseline/baseline.test.js.map +1 -0
  151. package/dist/baseline/diff.d.ts +42 -0
  152. package/dist/baseline/diff.d.ts.map +1 -0
  153. package/dist/baseline/diff.js +124 -0
  154. package/dist/baseline/diff.js.map +1 -0
  155. package/dist/baseline/store.d.ts +51 -0
  156. package/dist/baseline/store.d.ts.map +1 -0
  157. package/dist/baseline/store.js +92 -0
  158. package/dist/baseline/store.js.map +1 -0
  159. package/dist/batch/anthropic-batch-runner.d.ts +50 -0
  160. package/dist/batch/anthropic-batch-runner.d.ts.map +1 -0
  161. package/dist/batch/anthropic-batch-runner.js +91 -0
  162. package/dist/batch/anthropic-batch-runner.js.map +1 -0
  163. package/dist/batch/bedrock-batch-runner.d.ts +90 -0
  164. package/dist/batch/bedrock-batch-runner.d.ts.map +1 -0
  165. package/dist/batch/bedrock-batch-runner.js +199 -0
  166. package/dist/batch/bedrock-batch-runner.js.map +1 -0
  167. package/dist/batch/providers/anthropic.d.ts +55 -0
  168. package/dist/batch/providers/anthropic.d.ts.map +1 -0
  169. package/dist/batch/providers/anthropic.js +103 -0
  170. package/dist/batch/providers/anthropic.js.map +1 -0
  171. package/dist/batch/providers/bedrock.d.ts +31 -0
  172. package/dist/batch/providers/bedrock.d.ts.map +1 -0
  173. package/dist/batch/providers/bedrock.js +42 -0
  174. package/dist/batch/providers/bedrock.js.map +1 -0
  175. package/dist/batch/providers/harness.d.ts +36 -0
  176. package/dist/batch/providers/harness.d.ts.map +1 -0
  177. package/dist/batch/providers/harness.js +65 -0
  178. package/dist/batch/providers/harness.js.map +1 -0
  179. package/dist/batch/providers/harness.test.d.ts +7 -0
  180. package/dist/batch/providers/harness.test.d.ts.map +1 -0
  181. package/dist/batch/providers/harness.test.js +84 -0
  182. package/dist/batch/providers/harness.test.js.map +1 -0
  183. package/dist/batch/providers/index.d.ts +82 -0
  184. package/dist/batch/providers/index.d.ts.map +1 -0
  185. package/dist/batch/providers/index.js +82 -0
  186. package/dist/batch/providers/index.js.map +1 -0
  187. package/dist/batch/providers/ollama.d.ts +68 -0
  188. package/dist/batch/providers/ollama.d.ts.map +1 -0
  189. package/dist/batch/providers/ollama.js +108 -0
  190. package/dist/batch/providers/ollama.js.map +1 -0
  191. package/dist/batch/response-parser.d.ts +45 -0
  192. package/dist/batch/response-parser.d.ts.map +1 -0
  193. package/dist/batch/response-parser.js +161 -0
  194. package/dist/batch/response-parser.js.map +1 -0
  195. package/dist/batch/types.d.ts +87 -0
  196. package/dist/batch/types.d.ts.map +1 -0
  197. package/dist/batch/types.js +8 -0
  198. package/dist/batch/types.js.map +1 -0
  199. package/dist/cli.d.ts +15 -0
  200. package/dist/cli.d.ts.map +1 -0
  201. package/dist/cli.js +1037 -0
  202. package/dist/cli.js.map +1 -0
  203. package/dist/examples/a2a-assessment.d.ts +20 -0
  204. package/dist/examples/a2a-assessment.d.ts.map +1 -0
  205. package/dist/examples/a2a-assessment.js +115 -0
  206. package/dist/examples/a2a-assessment.js.map +1 -0
  207. package/dist/examples/batch-assessment.d.ts +18 -0
  208. package/dist/examples/batch-assessment.d.ts.map +1 -0
  209. package/dist/examples/batch-assessment.js +112 -0
  210. package/dist/examples/batch-assessment.js.map +1 -0
  211. package/dist/examples/batch-submission-flow.d.ts +2 -0
  212. package/dist/examples/batch-submission-flow.d.ts.map +1 -0
  213. package/dist/examples/batch-submission-flow.js +279 -0
  214. package/dist/examples/batch-submission-flow.js.map +1 -0
  215. package/dist/examples/demo-agent-definition.json +58 -0
  216. package/dist/examples/langfuse-assessment.d.ts +2 -0
  217. package/dist/examples/langfuse-assessment.d.ts.map +1 -0
  218. package/dist/examples/langfuse-assessment.js +46 -0
  219. package/dist/examples/langfuse-assessment.js.map +1 -0
  220. package/dist/examples/model-eval.d.ts +25 -0
  221. package/dist/examples/model-eval.d.ts.map +1 -0
  222. package/dist/examples/model-eval.js +94 -0
  223. package/dist/examples/model-eval.js.map +1 -0
  224. package/dist/examples/openclaw-assessment.d.ts +17 -0
  225. package/dist/examples/openclaw-assessment.d.ts.map +1 -0
  226. package/dist/examples/openclaw-assessment.js +79 -0
  227. package/dist/examples/openclaw-assessment.js.map +1 -0
  228. package/dist/examples/simple-assessment.d.ts +2 -0
  229. package/dist/examples/simple-assessment.d.ts.map +1 -0
  230. package/dist/examples/simple-assessment.js +146 -0
  231. package/dist/examples/simple-assessment.js.map +1 -0
  232. package/dist/examples/threat-model-demo.d.ts +2 -0
  233. package/dist/examples/threat-model-demo.d.ts.map +1 -0
  234. package/dist/examples/threat-model-demo.js +103 -0
  235. package/dist/examples/threat-model-demo.js.map +1 -0
  236. package/dist/index.d.ts +60 -0
  237. package/dist/index.d.ts.map +1 -0
  238. package/dist/index.js +155 -0
  239. package/dist/index.js.map +1 -0
  240. package/dist/output/likec4-generator.d.ts +43 -0
  241. package/dist/output/likec4-generator.d.ts.map +1 -0
  242. package/dist/output/likec4-generator.js +287 -0
  243. package/dist/output/likec4-generator.js.map +1 -0
  244. package/dist/output/slot-filler.d.ts +6 -0
  245. package/dist/output/slot-filler.d.ts.map +1 -0
  246. package/dist/output/slot-filler.js +71 -0
  247. package/dist/output/slot-filler.js.map +1 -0
  248. package/dist/output/tc-assembler.d.ts +30 -0
  249. package/dist/output/tc-assembler.d.ts.map +1 -0
  250. package/dist/output/tc-assembler.js +227 -0
  251. package/dist/output/tc-assembler.js.map +1 -0
  252. package/dist/output/tc-types.d.ts +41 -0
  253. package/dist/output/tc-types.d.ts.map +1 -0
  254. package/dist/output/tc-types.js +5 -0
  255. package/dist/output/tc-types.js.map +1 -0
  256. package/dist/output/tc-validator.test.d.ts +9 -0
  257. package/dist/output/tc-validator.test.d.ts.map +1 -0
  258. package/dist/output/tc-validator.test.js +194 -0
  259. package/dist/output/tc-validator.test.js.map +1 -0
  260. package/dist/providers/anthropic.d.ts +9 -0
  261. package/dist/providers/anthropic.d.ts.map +1 -0
  262. package/dist/providers/anthropic.js +30 -0
  263. package/dist/providers/anthropic.js.map +1 -0
  264. package/dist/providers/bedrock.d.ts +9 -0
  265. package/dist/providers/bedrock.d.ts.map +1 -0
  266. package/dist/providers/bedrock.js +38 -0
  267. package/dist/providers/bedrock.js.map +1 -0
  268. package/dist/providers/index.d.ts +6 -0
  269. package/dist/providers/index.d.ts.map +1 -0
  270. package/dist/providers/index.js +14 -0
  271. package/dist/providers/index.js.map +1 -0
  272. package/dist/providers/types.d.ts +12 -0
  273. package/dist/providers/types.d.ts.map +1 -0
  274. package/dist/providers/types.js +5 -0
  275. package/dist/providers/types.js.map +1 -0
  276. package/dist/references/acsc-risks.d.ts +18 -0
  277. package/dist/references/acsc-risks.d.ts.map +1 -0
  278. package/dist/references/acsc-risks.js +232 -0
  279. package/dist/references/acsc-risks.js.map +1 -0
  280. package/dist/references/aicm.d.ts +41 -0
  281. package/dist/references/aicm.d.ts.map +1 -0
  282. package/dist/references/aicm.js +447 -0
  283. package/dist/references/aicm.js.map +1 -0
  284. package/dist/references/dstg-meaid.d.ts +59 -0
  285. package/dist/references/dstg-meaid.d.ts.map +1 -0
  286. package/dist/references/dstg-meaid.js +352 -0
  287. package/dist/references/dstg-meaid.js.map +1 -0
  288. package/dist/references/index.d.ts +20 -0
  289. package/dist/references/index.d.ts.map +1 -0
  290. package/dist/references/index.js +31 -0
  291. package/dist/references/index.js.map +1 -0
  292. package/dist/references/nemoclaw.d.ts +48 -0
  293. package/dist/references/nemoclaw.d.ts.map +1 -0
  294. package/dist/references/nemoclaw.js +140 -0
  295. package/dist/references/nemoclaw.js.map +1 -0
  296. package/dist/references/nist-ai-rmf.d.ts +31 -0
  297. package/dist/references/nist-ai-rmf.d.ts.map +1 -0
  298. package/dist/references/nist-ai-rmf.js +627 -0
  299. package/dist/references/nist-ai-rmf.js.map +1 -0
  300. package/dist/references/owasp-agentic-top10.d.ts +50 -0
  301. package/dist/references/owasp-agentic-top10.d.ts.map +1 -0
  302. package/dist/references/owasp-agentic-top10.js +202 -0
  303. package/dist/references/owasp-agentic-top10.js.map +1 -0
  304. package/dist/references/registry-parity.test.d.ts +17 -0
  305. package/dist/references/registry-parity.test.d.ts.map +1 -0
  306. package/dist/references/registry-parity.test.js +87 -0
  307. package/dist/references/registry-parity.test.js.map +1 -0
  308. package/dist/references/registry.d.ts +90 -0
  309. package/dist/references/registry.d.ts.map +1 -0
  310. package/dist/references/registry.js +29 -0
  311. package/dist/references/registry.js.map +1 -0
  312. package/dist/tools/model-eval.d.ts +97 -0
  313. package/dist/tools/model-eval.d.ts.map +1 -0
  314. package/dist/tools/model-eval.js +307 -0
  315. package/dist/tools/model-eval.js.map +1 -0
  316. package/package.json +105 -0
  317. package/schemas/threat-composer-v1.schema.json +966 -0
  318. package/vendor/atlas-release/ATLAS-2026.07.yaml +17877 -0
  319. package/vendor/atlas-release/README.md +41 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nist-ai-rmf.js","sourceRoot":"","sources":["../../src/references/nist-ai-rmf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * OWASP Top 10 for Agentic Applications 2026
3
+ *
4
+ * Source: "OWASP Top 10 For Agentic Applications 2026" (Version 2026, December 2025)
5
+ * Authors: OWASP Gen AI Security Project — Agentic Security Initiative
6
+ * URL: https://genai.owasp.org
7
+ *
8
+ * This module maps the OWASP Agentic Top 10 to AIVSS V4 metrics and MITRE ATLAS techniques,
9
+ * enabling threat statements to be grounded in the OWASP community-driven agentic guidance.
10
+ */
11
+ import type { MetricCode } from "../aivss/types.js";
12
+ import { type FrameworkAdapter, type FrameworkCitation, type FrameworkRisk } from "./registry.js";
13
+ /**
14
+ * OWASP Top 10 for Agentic Applications 2026 — complete risk catalogue with AIVSS metric
15
+ * and MITRE ATLAS technique cross-references.
16
+ *
17
+ * Mapping rationale:
18
+ * - ASI01 Agent Goal Hijack → MR (model robustness against instruction override), CS (input sanitisation)
19
+ * - ASI02 Tool Misuse → CS (tool permission controls), DC (deployment constraints), AD (adaptive defence)
20
+ * - ASI03 Identity & Privilege → DC (deployment context, least-privilege), CS (access controls), GV (governance)
21
+ * - ASI04 Supply Chain → CS (supply chain integrity), LL (lifecycle & lineage), DC (runtime composition)
22
+ * - ASI05 Unexpected RCE → DC (sandbox/execution constraints), CS (code execution controls), MR (injection hardening)
23
+ * - ASI06 Memory & Context Poison → DS (data/store integrity), MR (context robustness), GV (oversight of persisted state)
24
+ * - ASI07 Insecure Inter-Agent Comm → CS (comms security), DC (protocol controls), GV (inter-agent governance)
25
+ * - ASI08 Cascading Failures → DC (fault isolation), GV (governance gates), LL (lineage/traceability for rollback)
26
+ * - ASI09 Human-Agent Trust Exploit → GV (human-in-the-loop governance), EI (ethical implications of anthropomorphism)
27
+ * - ASI10 Rogue Agents → AA (adversarial awareness / behavioural detection), GV (governance & audit), LL (lineage)
28
+ */
29
+ export declare const OWASP_AGENTIC_TOP10_RISKS: FrameworkRisk[];
30
+ /** Citation block for use in threat statement metadata and README credits */
31
+ export declare const OWASP_AGENTIC_TOP10_CITATION: FrameworkCitation;
32
+ /**
33
+ * Return OWASP Agentic Top 10 risks relevant to a given AIVSS metric.
34
+ * Results are ordered by number of ATLAS techniques (most-grounded first).
35
+ */
36
+ export declare const getRisksForMetric: (metric: MetricCode) => FrameworkRisk[];
37
+ /**
38
+ * Return OWASP Agentic Top 10 risks by risk type.
39
+ */
40
+ export declare const getRisksByType: (type: import("./registry.js").RiskType) => FrameworkRisk[];
41
+ /**
42
+ * Find an OWASP Agentic Top 10 risk by its ID.
43
+ */
44
+ export declare const getRiskById: (id: string) => FrameworkRisk | undefined;
45
+ /**
46
+ * The registrable adapter. Registered in ./index.ts — an adapter that is not
47
+ * registered there never annotates a finding, however complete its risk list.
48
+ */
49
+ export declare const OWASP_AGENTIC_TOP10_ADAPTER: FrameworkAdapter;
50
+ //# sourceMappingURL=owasp-agentic-top10.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owasp-agentic-top10.d.ts","sourceRoot":"","sources":["../../src/references/owasp-agentic-top10.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,EAAE,aAAa,EAoLpD,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,EAAE,iBAO1C,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,yCAA4B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,cAAc,6DAAyB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,WAAW,2CAAsB,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,gBAIzC,CAAC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * OWASP Top 10 for Agentic Applications 2026
3
+ *
4
+ * Source: "OWASP Top 10 For Agentic Applications 2026" (Version 2026, December 2025)
5
+ * Authors: OWASP Gen AI Security Project — Agentic Security Initiative
6
+ * URL: https://genai.owasp.org
7
+ *
8
+ * This module maps the OWASP Agentic Top 10 to AIVSS V4 metrics and MITRE ATLAS techniques,
9
+ * enabling threat statements to be grounded in the OWASP community-driven agentic guidance.
10
+ */
11
+ import { buildHelpers, } from "./registry.js";
12
+ /**
13
+ * OWASP Top 10 for Agentic Applications 2026 — complete risk catalogue with AIVSS metric
14
+ * and MITRE ATLAS technique cross-references.
15
+ *
16
+ * Mapping rationale:
17
+ * - ASI01 Agent Goal Hijack → MR (model robustness against instruction override), CS (input sanitisation)
18
+ * - ASI02 Tool Misuse → CS (tool permission controls), DC (deployment constraints), AD (adaptive defence)
19
+ * - ASI03 Identity & Privilege → DC (deployment context, least-privilege), CS (access controls), GV (governance)
20
+ * - ASI04 Supply Chain → CS (supply chain integrity), LL (lifecycle & lineage), DC (runtime composition)
21
+ * - ASI05 Unexpected RCE → DC (sandbox/execution constraints), CS (code execution controls), MR (injection hardening)
22
+ * - ASI06 Memory & Context Poison → DS (data/store integrity), MR (context robustness), GV (oversight of persisted state)
23
+ * - ASI07 Insecure Inter-Agent Comm → CS (comms security), DC (protocol controls), GV (inter-agent governance)
24
+ * - ASI08 Cascading Failures → DC (fault isolation), GV (governance gates), LL (lineage/traceability for rollback)
25
+ * - ASI09 Human-Agent Trust Exploit → GV (human-in-the-loop governance), EI (ethical implications of anthropomorphism)
26
+ * - ASI10 Rogue Agents → AA (adversarial awareness / behavioural detection), GV (governance & audit), LL (lineage)
27
+ */
28
+ export const OWASP_AGENTIC_TOP10_RISKS = [
29
+ // ── ASI01 ──────────────────────────────────────────────────────────────────
30
+ {
31
+ id: "owasp-asi01-agent-goal-hijack",
32
+ framework: "owasp-agentic-top10",
33
+ category: "ASI01 — Agent Goal Hijack",
34
+ name: "Agent Goal Hijack",
35
+ description: "Attackers manipulate an agent's objectives, task selection, or decision pathways through prompt-based manipulation, deceptive tool outputs, malicious artefacts, forged agent-to-agent messages, or poisoned external data. Because agents rely on untyped natural-language inputs and loosely governed orchestration logic, they cannot reliably distinguish legitimate instructions from attacker-controlled content. Unlike prompt injection targeting a single model response, ASI01 captures the broader agentic impact where manipulated inputs redirect goals, planning, and multi-step behaviour across an entire workflow.",
36
+ riskType: "security",
37
+ aivssMetrics: ["MR", "CS", "GV"],
38
+ atlasTechniqueIds: [
39
+ "AML.T0051", // LLM prompt injection — primary vector for goal hijack
40
+ "AML.T0054", // LLM jailbreak — bypasses goal constraints
41
+ ],
42
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI01: Agent Goal Hijack",
43
+ },
44
+ // ── ASI02 ──────────────────────────────────────────────────────────────────
45
+ {
46
+ id: "owasp-asi02-tool-misuse",
47
+ framework: "owasp-agentic-top10",
48
+ category: "ASI02 — Tool Misuse and Exploitation",
49
+ name: "Tool Misuse and Exploitation",
50
+ description: "Agents can misuse legitimate tools due to prompt injection, misalignment, unsafe delegation, or ambiguous instructions, leading to data exfiltration, tool-output manipulation, or workflow hijacking. This entry covers cases where the agent operates within its authorised privileges but applies a tool in an unsafe or unintended way — for example deleting valuable data, over-invoking costly APIs, or exfiltrating information. Risks arise from agent memory, dynamic tool selection, and delegation chains that can enable tool chaining, privilege escalation, and unintended side effects.",
51
+ riskType: "security",
52
+ aivssMetrics: ["CS", "DC", "AD"],
53
+ atlasTechniqueIds: [
54
+ "AML.T0051", // LLM prompt injection — triggers unsafe tool use
55
+ "AML.T0080", // LLM meta-prompt extraction — tool descriptor manipulation / tool poisoning
56
+ ],
57
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI02: Tool Misuse and Exploitation",
58
+ },
59
+ // ── ASI03 ──────────────────────────────────────────────────────────────────
60
+ {
61
+ id: "owasp-asi03-identity-privilege-abuse",
62
+ framework: "owasp-agentic-top10",
63
+ category: "ASI03 — Identity and Privilege Abuse",
64
+ name: "Identity and Privilege Abuse",
65
+ description: "Identity and Privilege Abuse exploits dynamic trust and delegation in agents to escalate access and bypass controls by manipulating delegation chains, role inheritance, control flows, and agent context including cached credentials or conversation history across interconnected systems. Without a distinct, governed identity of its own, an agent operates in an attribution gap that makes enforcing true least privilege impossible. Agent-to-agent trust or inherited credentials can be exploited to escalate access, hijack privileges, or execute unauthorised actions — including via time-of-check/time-of-use races, synthetic identity injection, and memory-based credential retention.",
66
+ riskType: "security",
67
+ aivssMetrics: ["DC", "CS", "GV"],
68
+ atlasTechniqueIds: [
69
+ "AML.T0069", // Discover ML model family — reconnaissance enabling targeted impersonation
70
+ ],
71
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI03: Identity and Privilege Abuse",
72
+ },
73
+ // ── ASI04 ──────────────────────────────────────────────────────────────────
74
+ {
75
+ id: "owasp-asi04-supply-chain",
76
+ framework: "owasp-agentic-top10",
77
+ category: "ASI04 — Agentic Supply Chain Vulnerabilities",
78
+ name: "Agentic Supply Chain Vulnerabilities",
79
+ description: "Agentic supply chain vulnerabilities arise when agents, tools, and related artefacts they work with are provided by third parties and may be malicious, compromised, or tampered with in transit — including models and model weights, tools, plug-ins, datasets, other agents, agentic interfaces (MCP, A2A), agentic registries, or update channels. Unlike traditional software supply chains, agentic ecosystems compose capabilities at runtime by loading external tools and agent personas dynamically, increasing the attack surface. Distributed runtime coordination combined with agentic autonomy creates a live supply chain that can cascade vulnerabilities across agents without static analysis catching them.",
80
+ riskType: "security",
81
+ aivssMetrics: ["CS", "LL", "DC"],
82
+ atlasTechniqueIds: [
83
+ "AML.T0010", // ML supply chain compromise — poisoned models/tools/plugins
84
+ "AML.T0115.000", // Publish poisoned AI artifacts: datasets — analogue: publish malicious MCP tools or prompt templates
85
+ "AML.T0020", // Poison training data — via poisoned knowledge plugins and RAG sources
86
+ ],
87
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI04: Agentic Supply Chain Vulnerabilities",
88
+ },
89
+ // ── ASI05 ──────────────────────────────────────────────────────────────────
90
+ {
91
+ id: "owasp-asi05-unexpected-rce",
92
+ framework: "owasp-agentic-top10",
93
+ category: "ASI05 — Unexpected Code Execution (RCE)",
94
+ name: "Unexpected Code Execution (RCE)",
95
+ description: "Agentic systems — including code-generation and 'vibe coding' tools — often generate and execute code at runtime. Attackers exploit code-generation features or embedded tool access to escalate actions into remote code execution, local misuse, or exploitation of internal systems; because this code is generated in real-time it can bypass traditional static security controls. Prompt injection, tool misuse, or unsafe serialisation can convert natural-language text into unintended executable behaviour through scripts, binaries, JIT/WASM modules, deserialised objects, template engines, or in-memory evaluations that lead to host or container compromise, persistence, or sandbox escape.",
96
+ riskType: "security",
97
+ aivssMetrics: ["DC", "CS", "MR"],
98
+ atlasTechniqueIds: [
99
+ "AML.T0051", // LLM prompt injection — primary trigger for injected code execution
100
+ ],
101
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI05: Unexpected Code Execution (RCE)",
102
+ },
103
+ // ── ASI06 ──────────────────────────────────────────────────────────────────
104
+ {
105
+ id: "owasp-asi06-memory-context-poisoning",
106
+ framework: "owasp-agentic-top10",
107
+ category: "ASI06 — Memory & Context Poisoning",
108
+ name: "Memory & Context Poisoning",
109
+ description: "Agentic systems rely on stored and retrievable information — conversation history, memory tools, expanded context, summaries, embeddings, and RAG stores — that supports continuity across tasks and reasoning cycles. Adversaries corrupt or seed this context with malicious or misleading data, causing future reasoning, planning, or tool use to become biased, unsafe, or aid exfiltration. This is distinct from direct goal hijack (ASI01) in that it targets persistent corruption of stored context or long-term memory rather than interactively overriding instructions; the poisoned state propagates across sessions and alters autonomous reasoning long after the original injection.",
110
+ riskType: "security",
111
+ aivssMetrics: ["DS", "MR", "GV"],
112
+ atlasTechniqueIds: [
113
+ "AML.T0020", // Poison training data — analogue: poison RAG/memory stores
114
+ "AML.T0051", // LLM prompt injection — used to implant memory via indirect injection
115
+ ],
116
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI06: Memory & Context Poisoning",
117
+ },
118
+ // ── ASI07 ──────────────────────────────────────────────────────────────────
119
+ {
120
+ id: "owasp-asi07-insecure-inter-agent-comm",
121
+ framework: "owasp-agentic-top10",
122
+ category: "ASI07 — Insecure Inter-Agent Communication",
123
+ name: "Insecure Inter-Agent Communication",
124
+ description: "Multi-agent systems depend on continuous communication between autonomous agents that coordinate via APIs, message buses, and shared memory, significantly expanding the attack surface. Decentralised architecture, varying autonomy levels, and uneven trust make perimeter-based security models ineffective. Insecure inter-agent communication occurs when these exchanges lack proper authentication, integrity, or semantic validation, allowing interception, spoofing, or manipulation of agent messages and intents across transport, routing, discovery, and semantic layers — including covert or side-channels where agents leak or infer data through timing or behavioural cues.",
125
+ riskType: "security",
126
+ aivssMetrics: ["CS", "DC", "GV"],
127
+ atlasTechniqueIds: [],
128
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI07: Insecure Inter-Agent Communication",
129
+ },
130
+ // ── ASI08 ──────────────────────────────────────────────────────────────────
131
+ {
132
+ id: "owasp-asi08-cascading-failures",
133
+ framework: "owasp-agentic-top10",
134
+ category: "ASI08 — Cascading Failures",
135
+ name: "Cascading Failures",
136
+ description: "Agentic cascading failures occur when a single fault — hallucination, malicious input, corrupted tool, or poisoned memory — propagates across autonomous agents, compounding into system-wide harm. Because agents plan, persist, and delegate autonomously, a single error can bypass stepwise human checks and persist in a saved state; as agents form emergent links to new tools or peers, these latent faults chain into privileged operations that compromise confidentiality, integrity, and availability. ASI08 focuses on the propagation and amplification of an initial fault across agents, tools, and workflows — not the initial vulnerability itself — causing measurable fan-out or systemic impact beyond the original breach.",
137
+ riskType: "security",
138
+ aivssMetrics: ["DC", "GV", "LL"],
139
+ atlasTechniqueIds: [],
140
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI08: Cascading Failures",
141
+ },
142
+ // ── ASI09 ──────────────────────────────────────────────────────────────────
143
+ {
144
+ id: "owasp-asi09-human-agent-trust-exploitation",
145
+ framework: "owasp-agentic-top10",
146
+ category: "ASI09 — Human-Agent Trust Exploitation",
147
+ name: "Human-Agent Trust Exploitation",
148
+ description: "Intelligent agents can establish strong trust with human users through natural language fluency, emotional intelligence, and perceived expertise — a phenomenon known as anthropomorphism. Adversaries or misaligned designs may exploit this trust to influence user decisions, extract sensitive information, or steer outcomes for malicious purposes; in agentic systems this risk is amplified when humans over-rely on autonomous recommendations or unverifiable rationales, approving actions without independent validation. The agent acts as an untraceable 'bad influence,' manipulating the human into performing the final, audited action while making the agent's role invisible to forensics.",
149
+ riskType: "security",
150
+ aivssMetrics: ["GV", "EI"],
151
+ atlasTechniqueIds: [],
152
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI09: Human-Agent Trust Exploitation",
153
+ },
154
+ // ── ASI10 ──────────────────────────────────────────────────────────────────
155
+ {
156
+ id: "owasp-asi10-rogue-agents",
157
+ framework: "owasp-agentic-top10",
158
+ category: "ASI10 — Rogue Agents",
159
+ name: "Rogue Agents",
160
+ description: "Rogue Agents are malicious or compromised AI agents that deviate from their intended function or authorised scope, acting harmfully, deceptively, or parasitically within multi-agent or human-agent ecosystems. The agent's actions may individually appear legitimate but its emergent behaviour becomes harmful, creating a containment gap for traditional rule-based systems. ASI10 focuses on the loss of behavioural integrity and governance once drift begins — not the initial intrusion itself — with consequences including sensitive information disclosure, misinformation propagation, workflow hijacking, reward hacking, autonomous self-replication, and operational sabotage.",
161
+ riskType: "security",
162
+ aivssMetrics: ["AA", "GV", "LL"],
163
+ atlasTechniqueIds: [
164
+ "AML.T0054", // LLM jailbreak — can initiate behavioural divergence
165
+ "AML.T0010", // ML supply chain compromise — compromised agent introduced into workflow
166
+ ],
167
+ sourceSection: "OWASP Top 10 for Agentic Applications 2026 > ASI10: Rogue Agents",
168
+ },
169
+ ];
170
+ /** Citation block for use in threat statement metadata and README credits */
171
+ export const OWASP_AGENTIC_TOP10_CITATION = {
172
+ id: "owasp-agentic-top10",
173
+ title: "OWASP Top 10 For Agentic Applications 2026",
174
+ version: "2026",
175
+ authors: ["OWASP Gen AI Security Project — Agentic Security Initiative"],
176
+ year: 2025,
177
+ url: "https://genai.owasp.org",
178
+ };
179
+ const helpers = buildHelpers(OWASP_AGENTIC_TOP10_RISKS);
180
+ /**
181
+ * Return OWASP Agentic Top 10 risks relevant to a given AIVSS metric.
182
+ * Results are ordered by number of ATLAS techniques (most-grounded first).
183
+ */
184
+ export const getRisksForMetric = helpers.getRisksForMetric;
185
+ /**
186
+ * Return OWASP Agentic Top 10 risks by risk type.
187
+ */
188
+ export const getRisksByType = helpers.getRisksByType;
189
+ /**
190
+ * Find an OWASP Agentic Top 10 risk by its ID.
191
+ */
192
+ export const getRiskById = helpers.getRiskById;
193
+ /**
194
+ * The registrable adapter. Registered in ./index.ts — an adapter that is not
195
+ * registered there never annotates a finding, however complete its risk list.
196
+ */
197
+ export const OWASP_AGENTIC_TOP10_ADAPTER = {
198
+ citation: OWASP_AGENTIC_TOP10_CITATION,
199
+ risks: OWASP_AGENTIC_TOP10_RISKS,
200
+ ...helpers,
201
+ };
202
+ //# sourceMappingURL=owasp-agentic-top10.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owasp-agentic-top10.js","sourceRoot":"","sources":["../../src/references/owasp-agentic-top10.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Framework parity — package metadata must match what the engine registers.
3
+ *
4
+ * Why this test exists: the package advertised "OWASP, NIST AI RMF" in its
5
+ * description and keywords while src/references/index.ts registered only three
6
+ * adapters. NIST and OWASP Agentic Top 10 had complete risk catalogues but
7
+ * never assembled a FrameworkAdapter, and NemoClaw assembled one that was
8
+ * never registered. A user reading the package page would have expected
9
+ * framework annotations that the engine could not produce.
10
+ *
11
+ * For a tool whose product is trust, an advertised-but-absent framework is a
12
+ * correctness defect, not a documentation lag. This test makes the drift
13
+ * mechanical to catch: add an adapter without advertising it, or advertise one
14
+ * without registering it, and the suite fails.
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=registry-parity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-parity.test.d.ts","sourceRoot":"","sources":["../../src/references/registry-parity.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Framework parity — package metadata must match what the engine registers.
3
+ *
4
+ * Why this test exists: the package advertised "OWASP, NIST AI RMF" in its
5
+ * description and keywords while src/references/index.ts registered only three
6
+ * adapters. NIST and OWASP Agentic Top 10 had complete risk catalogues but
7
+ * never assembled a FrameworkAdapter, and NemoClaw assembled one that was
8
+ * never registered. A user reading the package page would have expected
9
+ * framework annotations that the engine could not produce.
10
+ *
11
+ * For a tool whose product is trust, an advertised-but-absent framework is a
12
+ * correctness defect, not a documentation lag. This test makes the drift
13
+ * mechanical to catch: add an adapter without advertising it, or advertise one
14
+ * without registering it, and the suite fails.
15
+ */
16
+ import { describe, expect, test } from "bun:test";
17
+ import * as fs from "node:fs";
18
+ import * as path from "node:path";
19
+ import { fileURLToPath } from "node:url";
20
+ import { FRAMEWORK_REGISTRY, REGISTERED_FRAMEWORK_IDS } from "./index.js";
21
+ const packageJsonPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../package.json");
22
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
23
+ describe("framework registry parity", () => {
24
+ test("package.json declares a canopy.frameworks list", () => {
25
+ expect(Array.isArray(pkg.canopy?.frameworks)).toBe(true);
26
+ expect(pkg.canopy.frameworks.length).toBeGreaterThan(0);
27
+ });
28
+ test("advertised frameworks exactly match registered adapters", () => {
29
+ const advertised = [...pkg.canopy.frameworks].sort();
30
+ // Set equality in both directions — an adapter registered but not
31
+ // advertised is as much a defect as the reverse, because the README and
32
+ // package page under-report what the tool actually does.
33
+ expect(advertised).toEqual(REGISTERED_FRAMEWORK_IDS);
34
+ });
35
+ test("no duplicate framework ids are registered", () => {
36
+ const ids = FRAMEWORK_REGISTRY.map((a) => a.citation.id);
37
+ expect(new Set(ids).size).toBe(ids.length);
38
+ });
39
+ });
40
+ describe("registered adapters are well-formed", () => {
41
+ test.each(FRAMEWORK_REGISTRY.map((a) => [a.citation.id, a]))("%s carries a complete citation and a non-empty risk list", (_id, adapter) => {
42
+ expect(adapter.citation.title.length).toBeGreaterThan(0);
43
+ expect(adapter.citation.authors.length).toBeGreaterThan(0);
44
+ expect(adapter.citation.url).toMatch(/^https?:\/\//);
45
+ expect(adapter.citation.year).toBeGreaterThan(2000);
46
+ expect(adapter.risks.length).toBeGreaterThan(0);
47
+ });
48
+ test.each(FRAMEWORK_REGISTRY.map((a) => [a.citation.id, a]))("%s risks declare the framework id they belong to", (id, adapter) => {
49
+ for (const risk of adapter.risks) {
50
+ expect(risk.framework).toBe(id);
51
+ }
52
+ });
53
+ test.each(FRAMEWORK_REGISTRY.map((a) => [a.citation.id, a]))("%s risk ids are unique within the framework", (_id, adapter) => {
54
+ const ids = adapter.risks.map((r) => r.id);
55
+ expect(new Set(ids).size).toBe(ids.length);
56
+ });
57
+ test.each(FRAMEWORK_REGISTRY.map((a) => [a.citation.id, a]))("%s cites only real ATLAS technique ids", (_id, adapter) => {
58
+ // Shape check rather than a lookup against vendored ATLAS: this catches
59
+ // the failure mode competitors have shipped — a model asked to "attach a
60
+ // technique id" inventing a plausible-looking one.
61
+ for (const risk of adapter.risks) {
62
+ for (const techniqueId of risk.atlasTechniqueIds) {
63
+ expect(techniqueId).toMatch(/^AML\.T\d{4}(\.\d{3})?$/);
64
+ }
65
+ }
66
+ });
67
+ test.each(FRAMEWORK_REGISTRY.map((a) => [a.citation.id, a]))("%s risks declare a valid riskType and known AIVSS metrics", (_id, adapter) => {
68
+ const validMetrics = new Set([
69
+ "MR",
70
+ "DS",
71
+ "EI",
72
+ "DC",
73
+ "AD",
74
+ "AA",
75
+ "LL",
76
+ "GV",
77
+ "CS",
78
+ ]);
79
+ for (const risk of adapter.risks) {
80
+ expect(["security", "ethical", "compliance"]).toContain(risk.riskType);
81
+ for (const metric of risk.aivssMetrics) {
82
+ expect(validMetrics.has(metric)).toBe(true);
83
+ }
84
+ }
85
+ });
86
+ });
87
+ //# sourceMappingURL=registry-parity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-parity.test.js","sourceRoot":"","sources":["../../src/references/registry-parity.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Framework Registry — shared interface for all risk framework adapters.
3
+ *
4
+ * Each adapter (asd-acsc-risks.ts, owasp-agentic-top10.ts, dstg-meaid.ts,
5
+ * nist-ai-rmf.ts, …) exports a list of FrameworkRisk entries and a citation
6
+ * block. New frameworks are added via GitHub PRs — one file per framework,
7
+ * implementing this interface.
8
+ *
9
+ * Design: assess once (AIVSS V4 + ATLAS), map many (each framework adapter
10
+ * annotates findings with its own risk IDs and categories).
11
+ */
12
+ import type { MetricCode } from "../aivss/types.js";
13
+ /**
14
+ * The type of risk a finding represents.
15
+ *
16
+ * - "security" — CIA triad violation; AIVSS + ATLAS territory
17
+ * - "ethical" — bias, fairness, misappropriation, transparency; MEAID territory.
18
+ * BAU misuse of AI resources is ethical, not necessarily a security event.
19
+ * - "compliance" — governance, audit, regulatory accountability; ISO 42001, NIST AI RMF territory
20
+ */
21
+ export type RiskType = "security" | "ethical" | "compliance";
22
+ /**
23
+ * A single named risk from any framework, normalised to a common shape.
24
+ */
25
+ export interface FrameworkRisk {
26
+ /** Unique slug within this framework (kebab-case, framework-prefixed). e.g. "owasp-a1-prompt-injection" */
27
+ id: string;
28
+ /** Short framework identifier. e.g. "owasp-agentic-top10", "dstg-meaid", "nist-ai-rmf", "asd-acsc" */
29
+ framework: string;
30
+ /** The framework's own top-level category or function. e.g. "GOVERN", "Privilege", "A1" */
31
+ category: string;
32
+ /** Risk name as used in the source document */
33
+ name: string;
34
+ /** One-paragraph description faithful to the source document */
35
+ description: string;
36
+ /** Type of risk — determines which stakeholder audience this finding is relevant to */
37
+ riskType: RiskType;
38
+ /**
39
+ * AIVSS V4 metrics most relevant to assessing this risk.
40
+ * Ordered by relevance (primary first). May be empty for purely ethical/compliance risks
41
+ * that fall outside AIVSS's scoring scope — those still appear in TC output as framework findings.
42
+ */
43
+ aivssMetrics: MetricCode[];
44
+ /**
45
+ * MITRE ATLAS technique IDs that operationalise this risk as adversary TTPs.
46
+ * Empty where ATLAS does not directly cover the risk (e.g. ethical, governance domains).
47
+ */
48
+ atlasTechniqueIds: string[];
49
+ /** Section or identifier in the source document for traceability */
50
+ sourceSection: string;
51
+ }
52
+ /**
53
+ * Citation block for a framework — used in TC metadata and README attribution.
54
+ */
55
+ export interface FrameworkCitation {
56
+ /** Short identifier matching FrameworkRisk.framework */
57
+ id: string;
58
+ /** Full title of the document or framework */
59
+ title: string;
60
+ /** Version string if applicable */
61
+ version?: string;
62
+ /** Publishing organisation(s) */
63
+ authors: string[];
64
+ /** Publication year */
65
+ year: number;
66
+ /** Canonical URL */
67
+ url: string;
68
+ }
69
+ /**
70
+ * A complete framework adapter — citation + risk list + lookup helpers.
71
+ * Each adapter file exports one of these.
72
+ */
73
+ export interface FrameworkAdapter {
74
+ citation: FrameworkCitation;
75
+ risks: FrameworkRisk[];
76
+ /** Return risks relevant to a given AIVSS metric */
77
+ getRisksForMetric(metric: MetricCode): FrameworkRisk[];
78
+ /** Return risks of a given type */
79
+ getRisksByType(type: RiskType): FrameworkRisk[];
80
+ /** Look up a risk by its id */
81
+ getRiskById(id: string): FrameworkRisk | undefined;
82
+ }
83
+ /**
84
+ * Convenience: build the three standard lookup helpers from a risk list.
85
+ * Each adapter file calls this rather than re-implementing the same functions.
86
+ */
87
+ export declare function buildHelpers(risks: FrameworkRisk[]): Pick<FrameworkAdapter, "getRisksForMetric" | "getRisksByType" | "getRiskById">;
88
+ export declare const FRAMEWORK_REGISTRY: FrameworkAdapter[];
89
+ export declare function registerFrameworkAdapter(adapter: FrameworkAdapter): void;
90
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/references/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2GAA2G;IAC3G,EAAE,EAAE,MAAM,CAAC;IACX,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,oDAAoD;IACpD,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,EAAE,CAAC;IACvD,mCAAmC;IACnC,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,CAAC;IAChD,+BAA+B;IAC/B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,aAAa,CAAC,CASnI;AAED,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAAO,CAAC;AAEzD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAExE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Framework Registry — shared interface for all risk framework adapters.
3
+ *
4
+ * Each adapter (asd-acsc-risks.ts, owasp-agentic-top10.ts, dstg-meaid.ts,
5
+ * nist-ai-rmf.ts, …) exports a list of FrameworkRisk entries and a citation
6
+ * block. New frameworks are added via GitHub PRs — one file per framework,
7
+ * implementing this interface.
8
+ *
9
+ * Design: assess once (AIVSS V4 + ATLAS), map many (each framework adapter
10
+ * annotates findings with its own risk IDs and categories).
11
+ */
12
+ /**
13
+ * Convenience: build the three standard lookup helpers from a risk list.
14
+ * Each adapter file calls this rather than re-implementing the same functions.
15
+ */
16
+ export function buildHelpers(risks) {
17
+ return {
18
+ getRisksForMetric: (metric) => risks
19
+ .filter((r) => r.aivssMetrics.includes(metric))
20
+ .sort((a, b) => b.atlasTechniqueIds.length - a.atlasTechniqueIds.length),
21
+ getRisksByType: (type) => risks.filter((r) => r.riskType === type),
22
+ getRiskById: (id) => risks.find((r) => r.id === id),
23
+ };
24
+ }
25
+ export const FRAMEWORK_REGISTRY = [];
26
+ export function registerFrameworkAdapter(adapter) {
27
+ FRAMEWORK_REGISTRY.push(adapter);
28
+ }
29
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/references/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8EH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,OAAO;QACL,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC5B,KAAK;aACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC5E,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;QAClE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAuB,EAAE,CAAC;AAEzD,MAAM,UAAU,wBAAwB,CAAC,OAAyB;IAChE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}