@cdot65/prisma-airs-cli 2.12.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +27 -169
  2. package/dist/chunk-JXHYQFEK.js +1752 -0
  3. package/dist/cli/index.js +6511 -4
  4. package/dist/dlp-5XKWITZX.js +710 -0
  5. package/dist/index.d.ts +1396 -26
  6. package/dist/index.js +40 -37
  7. package/package.json +22 -25
  8. package/dist/airs/dlp/data-filtering-profiles.d.ts +0 -10
  9. package/dist/airs/dlp/data-filtering-profiles.d.ts.map +0 -1
  10. package/dist/airs/dlp/data-filtering-profiles.js +0 -17
  11. package/dist/airs/dlp/data-filtering-profiles.js.map +0 -1
  12. package/dist/airs/dlp/data-patterns.d.ts +0 -13
  13. package/dist/airs/dlp/data-patterns.d.ts.map +0 -1
  14. package/dist/airs/dlp/data-patterns.js +0 -26
  15. package/dist/airs/dlp/data-patterns.js.map +0 -1
  16. package/dist/airs/dlp/data-profiles.d.ts +0 -12
  17. package/dist/airs/dlp/data-profiles.d.ts.map +0 -1
  18. package/dist/airs/dlp/data-profiles.js +0 -23
  19. package/dist/airs/dlp/data-profiles.js.map +0 -1
  20. package/dist/airs/dlp/dictionaries.d.ts +0 -13
  21. package/dist/airs/dlp/dictionaries.d.ts.map +0 -1
  22. package/dist/airs/dlp/dictionaries.js +0 -34
  23. package/dist/airs/dlp/dictionaries.js.map +0 -1
  24. package/dist/airs/dlp/index.d.ts +0 -6
  25. package/dist/airs/dlp/index.d.ts.map +0 -1
  26. package/dist/airs/dlp/index.js +0 -6
  27. package/dist/airs/dlp/index.js.map +0 -1
  28. package/dist/airs/dlp/types.d.ts +0 -36
  29. package/dist/airs/dlp/types.d.ts.map +0 -1
  30. package/dist/airs/dlp/types.js +0 -2
  31. package/dist/airs/dlp/types.js.map +0 -1
  32. package/dist/airs/management.d.ts +0 -69
  33. package/dist/airs/management.d.ts.map +0 -1
  34. package/dist/airs/management.js +0 -370
  35. package/dist/airs/management.js.map +0 -1
  36. package/dist/airs/modelsecurity.d.ts +0 -74
  37. package/dist/airs/modelsecurity.d.ts.map +0 -1
  38. package/dist/airs/modelsecurity.js +0 -337
  39. package/dist/airs/modelsecurity.js.map +0 -1
  40. package/dist/airs/promptsets.d.ts +0 -50
  41. package/dist/airs/promptsets.d.ts.map +0 -1
  42. package/dist/airs/promptsets.js +0 -120
  43. package/dist/airs/promptsets.js.map +0 -1
  44. package/dist/airs/redteam.d.ts +0 -75
  45. package/dist/airs/redteam.d.ts.map +0 -1
  46. package/dist/airs/redteam.js +0 -418
  47. package/dist/airs/redteam.js.map +0 -1
  48. package/dist/airs/runtime.d.ts +0 -27
  49. package/dist/airs/runtime.d.ts.map +0 -1
  50. package/dist/airs/runtime.js +0 -158
  51. package/dist/airs/runtime.js.map +0 -1
  52. package/dist/airs/scanner.d.ts +0 -36
  53. package/dist/airs/scanner.d.ts.map +0 -1
  54. package/dist/airs/scanner.js +0 -101
  55. package/dist/airs/scanner.js.map +0 -1
  56. package/dist/airs/types.d.ts +0 -838
  57. package/dist/airs/types.d.ts.map +0 -1
  58. package/dist/airs/types.js +0 -6
  59. package/dist/airs/types.js.map +0 -1
  60. package/dist/audit/evaluator.d.ts +0 -17
  61. package/dist/audit/evaluator.d.ts.map +0 -1
  62. package/dist/audit/evaluator.js +0 -82
  63. package/dist/audit/evaluator.js.map +0 -1
  64. package/dist/audit/report.d.ts +0 -38
  65. package/dist/audit/report.d.ts.map +0 -1
  66. package/dist/audit/report.js +0 -141
  67. package/dist/audit/report.js.map +0 -1
  68. package/dist/audit/runner.d.ts +0 -18
  69. package/dist/audit/runner.d.ts.map +0 -1
  70. package/dist/audit/runner.js +0 -60
  71. package/dist/audit/runner.js.map +0 -1
  72. package/dist/audit/types.d.ts +0 -53
  73. package/dist/audit/types.d.ts.map +0 -1
  74. package/dist/audit/types.js +0 -5
  75. package/dist/audit/types.js.map +0 -1
  76. package/dist/backup/index.d.ts +0 -3
  77. package/dist/backup/index.d.ts.map +0 -1
  78. package/dist/backup/index.js +0 -3
  79. package/dist/backup/index.js.map +0 -1
  80. package/dist/backup/io.d.ts +0 -15
  81. package/dist/backup/io.d.ts.map +0 -1
  82. package/dist/backup/io.js +0 -67
  83. package/dist/backup/io.js.map +0 -1
  84. package/dist/backup/types.d.ts +0 -25
  85. package/dist/backup/types.d.ts.map +0 -1
  86. package/dist/backup/types.js +0 -2
  87. package/dist/backup/types.js.map +0 -1
  88. package/dist/cli/builders/profile-builder.d.ts +0 -45
  89. package/dist/cli/builders/profile-builder.d.ts.map +0 -1
  90. package/dist/cli/builders/profile-builder.js +0 -308
  91. package/dist/cli/builders/profile-builder.js.map +0 -1
  92. package/dist/cli/bulk-scan-state.d.ts +0 -15
  93. package/dist/cli/bulk-scan-state.d.ts.map +0 -1
  94. package/dist/cli/bulk-scan-state.js +0 -20
  95. package/dist/cli/bulk-scan-state.js.map +0 -1
  96. package/dist/cli/commands/audit.d.ts +0 -4
  97. package/dist/cli/commands/audit.d.ts.map +0 -1
  98. package/dist/cli/commands/audit.js +0 -113
  99. package/dist/cli/commands/audit.js.map +0 -1
  100. package/dist/cli/commands/backup.d.ts +0 -10
  101. package/dist/cli/commands/backup.d.ts.map +0 -1
  102. package/dist/cli/commands/backup.js +0 -102
  103. package/dist/cli/commands/backup.js.map +0 -1
  104. package/dist/cli/commands/dlp/build-body.d.ts +0 -28
  105. package/dist/cli/commands/dlp/build-body.d.ts.map +0 -1
  106. package/dist/cli/commands/dlp/build-body.js +0 -174
  107. package/dist/cli/commands/dlp/build-body.js.map +0 -1
  108. package/dist/cli/commands/dlp/dictionaries.d.ts +0 -3
  109. package/dist/cli/commands/dlp/dictionaries.d.ts.map +0 -1
  110. package/dist/cli/commands/dlp/dictionaries.js +0 -167
  111. package/dist/cli/commands/dlp/dictionaries.js.map +0 -1
  112. package/dist/cli/commands/dlp/filtering-profiles.d.ts +0 -3
  113. package/dist/cli/commands/dlp/filtering-profiles.d.ts.map +0 -1
  114. package/dist/cli/commands/dlp/filtering-profiles.js +0 -82
  115. package/dist/cli/commands/dlp/filtering-profiles.js.map +0 -1
  116. package/dist/cli/commands/dlp/generate.d.ts +0 -3
  117. package/dist/cli/commands/dlp/generate.d.ts.map +0 -1
  118. package/dist/cli/commands/dlp/generate.js +0 -51
  119. package/dist/cli/commands/dlp/generate.js.map +0 -1
  120. package/dist/cli/commands/dlp/index.d.ts +0 -3
  121. package/dist/cli/commands/dlp/index.d.ts.map +0 -1
  122. package/dist/cli/commands/dlp/index.js +0 -16
  123. package/dist/cli/commands/dlp/index.js.map +0 -1
  124. package/dist/cli/commands/dlp/patch.d.ts +0 -15
  125. package/dist/cli/commands/dlp/patch.d.ts.map +0 -1
  126. package/dist/cli/commands/dlp/patch.js +0 -70
  127. package/dist/cli/commands/dlp/patch.js.map +0 -1
  128. package/dist/cli/commands/dlp/patterns.d.ts +0 -3
  129. package/dist/cli/commands/dlp/patterns.d.ts.map +0 -1
  130. package/dist/cli/commands/dlp/patterns.js +0 -127
  131. package/dist/cli/commands/dlp/patterns.js.map +0 -1
  132. package/dist/cli/commands/dlp/profiles.d.ts +0 -3
  133. package/dist/cli/commands/dlp/profiles.d.ts.map +0 -1
  134. package/dist/cli/commands/dlp/profiles.js +0 -126
  135. package/dist/cli/commands/dlp/profiles.js.map +0 -1
  136. package/dist/cli/commands/modelsecurity.d.ts +0 -4
  137. package/dist/cli/commands/modelsecurity.d.ts.map +0 -1
  138. package/dist/cli/commands/modelsecurity.js +0 -605
  139. package/dist/cli/commands/modelsecurity.js.map +0 -1
  140. package/dist/cli/commands/profiles-cleanup.d.ts +0 -26
  141. package/dist/cli/commands/profiles-cleanup.d.ts.map +0 -1
  142. package/dist/cli/commands/profiles-cleanup.js +0 -113
  143. package/dist/cli/commands/profiles-cleanup.js.map +0 -1
  144. package/dist/cli/commands/redteam.d.ts +0 -12
  145. package/dist/cli/commands/redteam.d.ts.map +0 -1
  146. package/dist/cli/commands/redteam.js +0 -1075
  147. package/dist/cli/commands/redteam.js.map +0 -1
  148. package/dist/cli/commands/restore.d.ts +0 -11
  149. package/dist/cli/commands/restore.d.ts.map +0 -1
  150. package/dist/cli/commands/restore.js +0 -109
  151. package/dist/cli/commands/restore.js.map +0 -1
  152. package/dist/cli/commands/runtime.d.ts +0 -6
  153. package/dist/cli/commands/runtime.d.ts.map +0 -1
  154. package/dist/cli/commands/runtime.js +0 -869
  155. package/dist/cli/commands/runtime.js.map +0 -1
  156. package/dist/cli/commands/topics-apply.d.ts +0 -16
  157. package/dist/cli/commands/topics-apply.d.ts.map +0 -1
  158. package/dist/cli/commands/topics-apply.js +0 -69
  159. package/dist/cli/commands/topics-apply.js.map +0 -1
  160. package/dist/cli/commands/topics-create.d.ts +0 -16
  161. package/dist/cli/commands/topics-create.d.ts.map +0 -1
  162. package/dist/cli/commands/topics-create.js +0 -71
  163. package/dist/cli/commands/topics-create.js.map +0 -1
  164. package/dist/cli/commands/topics-eval.d.ts +0 -7
  165. package/dist/cli/commands/topics-eval.d.ts.map +0 -1
  166. package/dist/cli/commands/topics-eval.js +0 -65
  167. package/dist/cli/commands/topics-eval.js.map +0 -1
  168. package/dist/cli/commands/topics-revert.d.ts +0 -9
  169. package/dist/cli/commands/topics-revert.d.ts.map +0 -1
  170. package/dist/cli/commands/topics-revert.js +0 -52
  171. package/dist/cli/commands/topics-revert.js.map +0 -1
  172. package/dist/cli/commands/topics-sample.d.ts +0 -4
  173. package/dist/cli/commands/topics-sample.d.ts.map +0 -1
  174. package/dist/cli/commands/topics-sample.js +0 -27
  175. package/dist/cli/commands/topics-sample.js.map +0 -1
  176. package/dist/cli/debug-logger.d.ts +0 -11
  177. package/dist/cli/debug-logger.d.ts.map +0 -1
  178. package/dist/cli/debug-logger.js +0 -137
  179. package/dist/cli/debug-logger.js.map +0 -1
  180. package/dist/cli/index.d.ts +0 -3
  181. package/dist/cli/index.d.ts.map +0 -1
  182. package/dist/cli/index.js.map +0 -1
  183. package/dist/cli/parse-input.d.ts +0 -9
  184. package/dist/cli/parse-input.d.ts.map +0 -1
  185. package/dist/cli/parse-input.js +0 -109
  186. package/dist/cli/parse-input.js.map +0 -1
  187. package/dist/cli/program.d.ts +0 -3
  188. package/dist/cli/program.d.ts.map +0 -1
  189. package/dist/cli/program.js +0 -32
  190. package/dist/cli/program.js.map +0 -1
  191. package/dist/cli/renderer/audit.d.ts +0 -11
  192. package/dist/cli/renderer/audit.d.ts.map +0 -1
  193. package/dist/cli/renderer/audit.js +0 -58
  194. package/dist/cli/renderer/audit.js.map +0 -1
  195. package/dist/cli/renderer/backup.d.ts +0 -8
  196. package/dist/cli/renderer/backup.d.ts.map +0 -1
  197. package/dist/cli/renderer/backup.js +0 -50
  198. package/dist/cli/renderer/backup.js.map +0 -1
  199. package/dist/cli/renderer/common.d.ts +0 -14
  200. package/dist/cli/renderer/common.d.ts.map +0 -1
  201. package/dist/cli/renderer/common.js +0 -50
  202. package/dist/cli/renderer/common.js.map +0 -1
  203. package/dist/cli/renderer/dlp.d.ts +0 -34
  204. package/dist/cli/renderer/dlp.d.ts.map +0 -1
  205. package/dist/cli/renderer/dlp.js +0 -348
  206. package/dist/cli/renderer/dlp.js.map +0 -1
  207. package/dist/cli/renderer/eval.d.ts +0 -30
  208. package/dist/cli/renderer/eval.d.ts.map +0 -1
  209. package/dist/cli/renderer/eval.js +0 -61
  210. package/dist/cli/renderer/eval.js.map +0 -1
  211. package/dist/cli/renderer/index.d.ts +0 -9
  212. package/dist/cli/renderer/index.d.ts.map +0 -1
  213. package/dist/cli/renderer/index.js +0 -9
  214. package/dist/cli/renderer/index.js.map +0 -1
  215. package/dist/cli/renderer/modelsecurity.d.ts +0 -35
  216. package/dist/cli/renderer/modelsecurity.d.ts.map +0 -1
  217. package/dist/cli/renderer/modelsecurity.js +0 -339
  218. package/dist/cli/renderer/modelsecurity.js.map +0 -1
  219. package/dist/cli/renderer/redteam.d.ts +0 -224
  220. package/dist/cli/renderer/redteam.d.ts.map +0 -1
  221. package/dist/cli/renderer/redteam.js +0 -500
  222. package/dist/cli/renderer/redteam.js.map +0 -1
  223. package/dist/cli/renderer/runtime.d.ts +0 -135
  224. package/dist/cli/renderer/runtime.d.ts.map +0 -1
  225. package/dist/cli/renderer/runtime.js +0 -426
  226. package/dist/cli/renderer/runtime.js.map +0 -1
  227. package/dist/config/loader.d.ts +0 -3
  228. package/dist/config/loader.d.ts.map +0 -1
  229. package/dist/config/loader.js +0 -59
  230. package/dist/config/loader.js.map +0 -1
  231. package/dist/config/schema.d.ts +0 -63
  232. package/dist/config/schema.d.ts.map +0 -1
  233. package/dist/config/schema.js +0 -38
  234. package/dist/config/schema.js.map +0 -1
  235. package/dist/core/constraints.d.ts +0 -19
  236. package/dist/core/constraints.d.ts.map +0 -1
  237. package/dist/core/constraints.js +0 -82
  238. package/dist/core/constraints.js.map +0 -1
  239. package/dist/core/metrics.d.ts +0 -13
  240. package/dist/core/metrics.d.ts.map +0 -1
  241. package/dist/core/metrics.js +0 -73
  242. package/dist/core/metrics.js.map +0 -1
  243. package/dist/core/prompt-loader.d.ts +0 -14
  244. package/dist/core/prompt-loader.d.ts.map +0 -1
  245. package/dist/core/prompt-loader.js +0 -122
  246. package/dist/core/prompt-loader.js.map +0 -1
  247. package/dist/core/types.d.ts +0 -96
  248. package/dist/core/types.d.ts.map +0 -1
  249. package/dist/core/types.js +0 -5
  250. package/dist/core/types.js.map +0 -1
  251. package/dist/dlp/embed/docx.d.ts +0 -3
  252. package/dist/dlp/embed/docx.d.ts.map +0 -1
  253. package/dist/dlp/embed/docx.js +0 -63
  254. package/dist/dlp/embed/docx.js.map +0 -1
  255. package/dist/dlp/embed/index.d.ts +0 -6
  256. package/dist/dlp/embed/index.d.ts.map +0 -1
  257. package/dist/dlp/embed/index.js +0 -20
  258. package/dist/dlp/embed/index.js.map +0 -1
  259. package/dist/dlp/embed/jpeg.d.ts +0 -5
  260. package/dist/dlp/embed/jpeg.d.ts.map +0 -1
  261. package/dist/dlp/embed/jpeg.js +0 -67
  262. package/dist/dlp/embed/jpeg.js.map +0 -1
  263. package/dist/dlp/embed/overlay.d.ts +0 -7
  264. package/dist/dlp/embed/overlay.d.ts.map +0 -1
  265. package/dist/dlp/embed/overlay.js +0 -21
  266. package/dist/dlp/embed/overlay.js.map +0 -1
  267. package/dist/dlp/embed/pdf.d.ts +0 -7
  268. package/dist/dlp/embed/pdf.d.ts.map +0 -1
  269. package/dist/dlp/embed/pdf.js +0 -124
  270. package/dist/dlp/embed/pdf.js.map +0 -1
  271. package/dist/dlp/embed/png-chunks.d.ts +0 -12
  272. package/dist/dlp/embed/png-chunks.d.ts.map +0 -1
  273. package/dist/dlp/embed/png-chunks.js +0 -85
  274. package/dist/dlp/embed/png-chunks.js.map +0 -1
  275. package/dist/dlp/embed/png.d.ts +0 -5
  276. package/dist/dlp/embed/png.d.ts.map +0 -1
  277. package/dist/dlp/embed/png.js +0 -75
  278. package/dist/dlp/embed/png.js.map +0 -1
  279. package/dist/dlp/embed/svg.d.ts +0 -3
  280. package/dist/dlp/embed/svg.d.ts.map +0 -1
  281. package/dist/dlp/embed/svg.js +0 -43
  282. package/dist/dlp/embed/svg.js.map +0 -1
  283. package/dist/dlp/embed/zip.d.ts +0 -3
  284. package/dist/dlp/embed/zip.d.ts.map +0 -1
  285. package/dist/dlp/embed/zip.js +0 -25
  286. package/dist/dlp/embed/zip.js.map +0 -1
  287. package/dist/dlp/generate/docx.d.ts +0 -3
  288. package/dist/dlp/generate/docx.d.ts.map +0 -1
  289. package/dist/dlp/generate/docx.js +0 -24
  290. package/dist/dlp/generate/docx.js.map +0 -1
  291. package/dist/dlp/generate/index.d.ts +0 -5
  292. package/dist/dlp/generate/index.d.ts.map +0 -1
  293. package/dist/dlp/generate/index.js +0 -21
  294. package/dist/dlp/generate/index.js.map +0 -1
  295. package/dist/dlp/generate/jpeg.d.ts +0 -3
  296. package/dist/dlp/generate/jpeg.d.ts.map +0 -1
  297. package/dist/dlp/generate/jpeg.js +0 -8
  298. package/dist/dlp/generate/jpeg.js.map +0 -1
  299. package/dist/dlp/generate/pdf.d.ts +0 -3
  300. package/dist/dlp/generate/pdf.d.ts.map +0 -1
  301. package/dist/dlp/generate/pdf.js +0 -19
  302. package/dist/dlp/generate/pdf.js.map +0 -1
  303. package/dist/dlp/generate/png.d.ts +0 -3
  304. package/dist/dlp/generate/png.d.ts.map +0 -1
  305. package/dist/dlp/generate/png.js +0 -8
  306. package/dist/dlp/generate/png.js.map +0 -1
  307. package/dist/dlp/generate/raster.d.ts +0 -9
  308. package/dist/dlp/generate/raster.d.ts.map +0 -1
  309. package/dist/dlp/generate/raster.js +0 -20
  310. package/dist/dlp/generate/raster.js.map +0 -1
  311. package/dist/dlp/generate/svg.d.ts +0 -3
  312. package/dist/dlp/generate/svg.d.ts.map +0 -1
  313. package/dist/dlp/generate/svg.js +0 -17
  314. package/dist/dlp/generate/svg.js.map +0 -1
  315. package/dist/dlp/index.d.ts +0 -15
  316. package/dist/dlp/index.d.ts.map +0 -1
  317. package/dist/dlp/index.js +0 -54
  318. package/dist/dlp/index.js.map +0 -1
  319. package/dist/dlp/lorem.d.ts +0 -3
  320. package/dist/dlp/lorem.d.ts.map +0 -1
  321. package/dist/dlp/lorem.js +0 -65
  322. package/dist/dlp/lorem.js.map +0 -1
  323. package/dist/dlp/manifest.d.ts +0 -11
  324. package/dist/dlp/manifest.d.ts.map +0 -1
  325. package/dist/dlp/manifest.js +0 -14
  326. package/dist/dlp/manifest.js.map +0 -1
  327. package/dist/dlp/payload.d.ts +0 -6
  328. package/dist/dlp/payload.d.ts.map +0 -1
  329. package/dist/dlp/payload.js +0 -62
  330. package/dist/dlp/payload.js.map +0 -1
  331. package/dist/dlp/rng.d.ts +0 -9
  332. package/dist/dlp/rng.d.ts.map +0 -1
  333. package/dist/dlp/rng.js +0 -28
  334. package/dist/dlp/rng.js.map +0 -1
  335. package/dist/dlp/types.d.ts +0 -26
  336. package/dist/dlp/types.d.ts.map +0 -1
  337. package/dist/dlp/types.js +0 -2
  338. package/dist/dlp/types.js.map +0 -1
  339. package/dist/index.d.ts.map +0 -1
  340. package/dist/index.js.map +0 -1
  341. package/dist/llm/prompts/analyze-results.d.ts +0 -3
  342. package/dist/llm/prompts/analyze-results.d.ts.map +0 -1
  343. package/dist/llm/prompts/analyze-results.js +0 -52
  344. package/dist/llm/prompts/analyze-results.js.map +0 -1
  345. package/dist/llm/prompts/generate-companion.d.ts +0 -3
  346. package/dist/llm/prompts/generate-companion.d.ts.map +0 -1
  347. package/dist/llm/prompts/generate-companion.js +0 -42
  348. package/dist/llm/prompts/generate-companion.js.map +0 -1
  349. package/dist/llm/prompts/generate-tests.d.ts +0 -3
  350. package/dist/llm/prompts/generate-tests.d.ts.map +0 -1
  351. package/dist/llm/prompts/generate-tests.js +0 -46
  352. package/dist/llm/prompts/generate-tests.js.map +0 -1
  353. package/dist/llm/prompts/generate-topic.d.ts +0 -4
  354. package/dist/llm/prompts/generate-topic.d.ts.map +0 -1
  355. package/dist/llm/prompts/generate-topic.js +0 -41
  356. package/dist/llm/prompts/generate-topic.js.map +0 -1
  357. package/dist/llm/prompts/improve-topic.d.ts +0 -3
  358. package/dist/llm/prompts/improve-topic.d.ts.map +0 -1
  359. package/dist/llm/prompts/improve-topic.js +0 -77
  360. package/dist/llm/prompts/improve-topic.js.map +0 -1
  361. package/dist/llm/prompts/simplify-topic.d.ts +0 -3
  362. package/dist/llm/prompts/simplify-topic.d.ts.map +0 -1
  363. package/dist/llm/prompts/simplify-topic.js +0 -50
  364. package/dist/llm/prompts/simplify-topic.js.map +0 -1
  365. package/dist/llm/provider.d.ts +0 -21
  366. package/dist/llm/provider.d.ts.map +0 -1
  367. package/dist/llm/provider.js +0 -76
  368. package/dist/llm/provider.js.map +0 -1
  369. package/dist/llm/schemas.d.ts +0 -97
  370. package/dist/llm/schemas.d.ts.map +0 -1
  371. package/dist/llm/schemas.js +0 -24
  372. package/dist/llm/schemas.js.map +0 -1
  373. package/dist/llm/service.d.ts +0 -34
  374. package/dist/llm/service.d.ts.map +0 -1
  375. package/dist/llm/service.js +0 -268
  376. package/dist/llm/service.js.map +0 -1
  377. package/dist/llm/types.d.ts +0 -18
  378. package/dist/llm/types.d.ts.map +0 -1
  379. package/dist/llm/types.js +0 -2
  380. package/dist/llm/types.js.map +0 -1
  381. package/dist/report/html.d.ts +0 -6
  382. package/dist/report/html.d.ts.map +0 -1
  383. package/dist/report/html.js +0 -200
  384. package/dist/report/html.js.map +0 -1
  385. package/dist/report/json.d.ts +0 -11
  386. package/dist/report/json.d.ts.map +0 -1
  387. package/dist/report/json.js +0 -74
  388. package/dist/report/json.js.map +0 -1
  389. package/dist/report/types.d.ts +0 -58
  390. package/dist/report/types.d.ts.map +0 -1
  391. package/dist/report/types.js +0 -5
  392. package/dist/report/types.js.map +0 -1
package/dist/backup/io.js DELETED
@@ -1,67 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import yaml from 'js-yaml';
4
- /**
5
- * Sanitize a resource name into a filesystem-safe filename (no extension).
6
- * Lowercases, replaces non-alphanumeric with hyphens, collapses runs, trims.
7
- */
8
- export function sanitizeFilename(name) {
9
- if (!name)
10
- return 'unnamed';
11
- const sanitized = name
12
- .toLowerCase()
13
- .replace(/[^a-z0-9-]/g, '-')
14
- .replace(/-{2,}/g, '-')
15
- .replace(/^-+|-+$/g, '');
16
- return sanitized || 'unnamed';
17
- }
18
- /** Resolve output directory — user-specified or default `./airs-backup/<subdir>/`. */
19
- export function resolveOutputDir(userDir, defaultSubdir) {
20
- if (userDir)
21
- return path.resolve(userDir);
22
- return path.resolve('./airs-backup', defaultSubdir);
23
- }
24
- /** Serialize envelope and write to `dir/filename.{json|yaml}`. Creates dir if needed. */
25
- export function writeBackupFile(dir, filename, envelope, format) {
26
- fs.mkdirSync(dir, { recursive: true });
27
- const ext = format === 'yaml' ? 'yaml' : 'json';
28
- const filePath = path.join(dir, `${filename}.${ext}`);
29
- const content = format === 'yaml'
30
- ? yaml.dump(envelope, { lineWidth: -1, noRefs: true })
31
- : `${JSON.stringify(envelope, null, 2)}\n`;
32
- fs.writeFileSync(filePath, content, 'utf-8');
33
- }
34
- /** Read and parse a single backup file. Detects format from extension. */
35
- export function readBackupFile(filePath) {
36
- const ext = path.extname(filePath).toLowerCase();
37
- if (ext !== '.json' && ext !== '.yaml' && ext !== '.yml') {
38
- throw new Error(`Unsupported file format: ${ext} (expected .json, .yaml, or .yml)`);
39
- }
40
- const raw = fs.readFileSync(filePath, 'utf-8');
41
- const parsed = ext === '.json' ? JSON.parse(raw) : yaml.load(raw);
42
- if (!parsed || typeof parsed !== 'object' || !('version' in parsed) || !('data' in parsed)) {
43
- throw new Error(`Invalid backup file: ${filePath} (missing version or data)`);
44
- }
45
- return parsed;
46
- }
47
- /** Read all backup files from a directory, filtering by resourceType. */
48
- export function readBackupDir(dirPath, resourceType) {
49
- const files = fs
50
- .readdirSync(dirPath)
51
- .filter((f) => /\.(json|ya?ml)$/i.test(f))
52
- .map((f) => path.join(dirPath, f));
53
- const envelopes = [];
54
- for (const filePath of files) {
55
- try {
56
- const envelope = readBackupFile(filePath);
57
- if (envelope.resourceType === resourceType) {
58
- envelopes.push(envelope);
59
- }
60
- }
61
- catch {
62
- // Skip malformed or unrelated files
63
- }
64
- }
65
- return envelopes;
66
- }
67
- //# sourceMappingURL=io.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/backup/io.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /** Supported backup serialization formats. */
2
- export type BackupFormat = 'json' | 'yaml';
3
- /** Discriminator for multi-resource backup directories. */
4
- export type ResourceType = 'redteam-target';
5
- /** Envelope wrapping any backed-up resource. */
6
- export interface BackupEnvelope<T> {
7
- version: string;
8
- resourceType: ResourceType;
9
- exportedAt: string;
10
- data: T;
11
- }
12
- /** Per-target result reported after a backup run. */
13
- export interface BackupResult {
14
- name: string;
15
- filename: string;
16
- status: 'ok' | 'failed';
17
- error?: string;
18
- }
19
- /** Per-target result reported after a restore run. */
20
- export interface RestoreResult {
21
- name: string;
22
- action: 'created' | 'updated' | 'skipped' | 'failed';
23
- error?: string;
24
- }
25
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backup/types.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,2DAA2D;AAC3D,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,gDAAgD;AAChD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,IAAI,GAAG,QAAQ,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backup/types.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import type { CreateSecurityProfileRequest, Policy } from '@cdot65/prisma-airs-sdk';
2
- /**
3
- * Parsed CLI flag values for profile create/update commands.
4
- */
5
- export interface ProfileFlags {
6
- name: string;
7
- active?: boolean;
8
- promptInjection?: string;
9
- toxicContent?: string;
10
- contextualGrounding?: string;
11
- maliciousCode?: string;
12
- urlAction?: string;
13
- allowUrlCategories?: string;
14
- blockUrlCategories?: string;
15
- alertUrlCategories?: string;
16
- agentSecurity?: string;
17
- dlpAction?: string;
18
- dlpProfiles?: string;
19
- maskDataInline?: boolean;
20
- dbSecurityCreate?: string;
21
- dbSecurityRead?: string;
22
- dbSecurityUpdate?: string;
23
- dbSecurityDelete?: string;
24
- inlineTimeoutAction?: string;
25
- maxInlineLatency?: number;
26
- maskDataInStorage?: boolean;
27
- }
28
- /** Build a full CreateSecurityProfileRequest from CLI flags (used by `create`). */
29
- export declare function buildProfileRequest(flags: ProfileFlags): CreateSecurityProfileRequest;
30
- /** Build a partial Policy from flags (used by `update` — merged into existing). */
31
- export declare function buildProfileOverrides(flags: Partial<ProfileFlags>): Policy | undefined;
32
- /**
33
- * Deep-merge overrides INTO the existing policy.
34
- *
35
- * Merge rules:
36
- * - model-protection: keyed merge by `name`, preserves unmentioned items
37
- * - topic-guardrails: NEVER modified by flags — always preserved from existing
38
- * - app-protection: field-level overlay, preserves unmentioned fields
39
- * - agent-protection: keyed merge by `name`
40
- * - data-protection: field-level overlay; database-security merged by `name`
41
- * - latency: field-level overlay
42
- * - dlp-data-profiles: preserved unless overridden
43
- */
44
- export declare function mergeProfilePolicy(existing: Record<string, unknown> | undefined, overrides: Policy | undefined): Policy;
45
- //# sourceMappingURL=profile-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-builder.d.ts","sourceRoot":"","sources":["../../../src/cli/builders/profile-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAyKD,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,4BAA4B,CAsCrF;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,GAAG,SAAS,CAYtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAqGR"}
@@ -1,308 +0,0 @@
1
- /** Parse comma-separated string into trimmed array. */
2
- function parseList(value) {
3
- if (!value)
4
- return undefined;
5
- return value
6
- .split(',')
7
- .map((s) => s.trim())
8
- .filter(Boolean);
9
- }
10
- /** Build model-protection items from flags. Returns undefined if none set. */
11
- function buildModelProtection(flags) {
12
- const items = [];
13
- if (flags.promptInjection) {
14
- items.push({ name: 'prompt-injection', action: flags.promptInjection });
15
- }
16
- if (flags.toxicContent) {
17
- // AIRS UI expects "high:<action>, moderate:<action>" format — expand bare values
18
- const tc = flags.toxicContent;
19
- const toxicAction = tc.includes(':') ? tc : `high:${tc}, moderate:${tc}`;
20
- items.push({ name: 'toxic-content', action: toxicAction });
21
- }
22
- if (flags.contextualGrounding) {
23
- items.push({ name: 'contextual-grounding', action: flags.contextualGrounding });
24
- }
25
- return items.length > 0 ? items : undefined;
26
- }
27
- /** Build app-protection object from flags. Returns undefined if none set. */
28
- function buildAppProtection(flags) {
29
- const ap = {};
30
- let hasAny = false;
31
- if (flags.maliciousCode) {
32
- ap['malicious-code-protection'] = {
33
- name: 'malicious-code-detection',
34
- action: flags.maliciousCode,
35
- };
36
- hasAny = true;
37
- }
38
- if (flags.urlAction) {
39
- ap['url-detected-action'] = flags.urlAction;
40
- hasAny = true;
41
- }
42
- const allowCats = parseList(flags.allowUrlCategories);
43
- if (allowCats) {
44
- ap['allow-url-category'] = { member: allowCats };
45
- hasAny = true;
46
- }
47
- const blockCats = parseList(flags.blockUrlCategories);
48
- if (blockCats) {
49
- ap['block-url-category'] = { member: blockCats };
50
- hasAny = true;
51
- }
52
- const alertCats = parseList(flags.alertUrlCategories);
53
- if (alertCats) {
54
- ap['alert-url-category'] = { member: alertCats };
55
- hasAny = true;
56
- }
57
- return hasAny ? ap : undefined;
58
- }
59
- /** Build agent-protection array from flags. Returns undefined if none set. */
60
- function buildAgentProtection(flags) {
61
- if (!flags.agentSecurity)
62
- return undefined;
63
- return [{ name: 'agent-security', action: flags.agentSecurity }];
64
- }
65
- /** Build data-protection object from flags. Returns undefined if none set. */
66
- function buildDataProtection(flags) {
67
- const dp = {};
68
- let hasAny = false;
69
- if (flags.dlpAction) {
70
- const dld = { action: flags.dlpAction };
71
- const profiles = parseList(flags.dlpProfiles);
72
- if (profiles) {
73
- dld.member = profiles.map((text) => ({ text }));
74
- }
75
- if (flags.maskDataInline != null) {
76
- dld['mask-data-inline'] = flags.maskDataInline;
77
- }
78
- dp['data-leak-detection'] = dld;
79
- hasAny = true;
80
- }
81
- const dbItems = [];
82
- if (flags.dbSecurityCreate) {
83
- dbItems.push({ name: 'database-security-create', action: flags.dbSecurityCreate });
84
- }
85
- if (flags.dbSecurityRead) {
86
- dbItems.push({ name: 'database-security-read', action: flags.dbSecurityRead });
87
- }
88
- if (flags.dbSecurityUpdate) {
89
- dbItems.push({ name: 'database-security-update', action: flags.dbSecurityUpdate });
90
- }
91
- if (flags.dbSecurityDelete) {
92
- dbItems.push({ name: 'database-security-delete', action: flags.dbSecurityDelete });
93
- }
94
- if (dbItems.length > 0) {
95
- dp['database-security'] = dbItems;
96
- hasAny = true;
97
- }
98
- return hasAny ? dp : undefined;
99
- }
100
- /** Build latency object from flags. Returns undefined if none set. */
101
- function buildLatency(flags) {
102
- if (!flags.inlineTimeoutAction && flags.maxInlineLatency == null)
103
- return undefined;
104
- const lat = {};
105
- if (flags.inlineTimeoutAction)
106
- lat['inline-timeout-action'] = flags.inlineTimeoutAction;
107
- if (flags.maxInlineLatency != null)
108
- lat['max-inline-latency'] = flags.maxInlineLatency;
109
- return lat;
110
- }
111
- /** Check if any protection/config flag is set. */
112
- function hasAnyProtectionFlag(flags) {
113
- return !!(flags.promptInjection ||
114
- flags.toxicContent ||
115
- flags.contextualGrounding ||
116
- flags.maliciousCode ||
117
- flags.urlAction ||
118
- flags.allowUrlCategories ||
119
- flags.blockUrlCategories ||
120
- flags.alertUrlCategories ||
121
- flags.agentSecurity ||
122
- flags.dlpAction ||
123
- flags.dbSecurityCreate ||
124
- flags.dbSecurityRead ||
125
- flags.dbSecurityUpdate ||
126
- flags.dbSecurityDelete ||
127
- flags.inlineTimeoutAction ||
128
- flags.maxInlineLatency != null ||
129
- flags.maskDataInStorage != null);
130
- }
131
- /** Assemble model-configuration from flags, only including non-empty sections. */
132
- function buildModelConfiguration(flags) {
133
- const config = {};
134
- const mp = buildModelProtection(flags);
135
- if (mp)
136
- config['model-protection'] = mp;
137
- const ap = buildAppProtection(flags);
138
- if (ap)
139
- config['app-protection'] = ap;
140
- const agp = buildAgentProtection(flags);
141
- if (agp)
142
- config['agent-protection'] = agp;
143
- const dp = buildDataProtection(flags);
144
- if (dp)
145
- config['data-protection'] = dp;
146
- const lat = buildLatency(flags);
147
- if (lat)
148
- config.latency = lat;
149
- if (flags.maskDataInStorage != null) {
150
- config['mask-data-in-storage'] = flags.maskDataInStorage;
151
- }
152
- return config;
153
- }
154
- /** Build a full CreateSecurityProfileRequest from CLI flags (used by `create`). */
155
- export function buildProfileRequest(flags) {
156
- const request = {
157
- profile_name: flags.name,
158
- active: flags.active ?? true,
159
- };
160
- if (hasAnyProtectionFlag(flags)) {
161
- const modelConfig = buildModelConfiguration(flags);
162
- // AIRS UI requires these sections to exist — crashes with "is not iterable" otherwise
163
- if (!modelConfig['app-protection']) {
164
- modelConfig['app-protection'] = {
165
- 'default-url-category': { member: ['malicious'] },
166
- 'url-detected-action': 'block',
167
- };
168
- }
169
- if (!modelConfig['data-protection']) {
170
- modelConfig['data-protection'] = {
171
- 'data-leak-detection': { action: '', 'mask-data-inline': false, member: null },
172
- 'database-security': null,
173
- };
174
- }
175
- if (!modelConfig.latency) {
176
- modelConfig.latency = { 'inline-timeout-action': 'block', 'max-inline-latency': 5 };
177
- }
178
- if (modelConfig['mask-data-in-storage'] == null) {
179
- modelConfig['mask-data-in-storage'] = false;
180
- }
181
- request.policy = {
182
- 'ai-security-profiles': [
183
- {
184
- 'model-type': 'default',
185
- 'model-configuration': modelConfig,
186
- },
187
- ],
188
- };
189
- }
190
- return request;
191
- }
192
- /** Build a partial Policy from flags (used by `update` — merged into existing). */
193
- export function buildProfileOverrides(flags) {
194
- if (!hasAnyProtectionFlag(flags))
195
- return undefined;
196
- const modelConfig = buildModelConfiguration(flags);
197
- return {
198
- 'ai-security-profiles': [
199
- {
200
- 'model-type': 'default',
201
- 'model-configuration': modelConfig,
202
- },
203
- ],
204
- };
205
- }
206
- /**
207
- * Deep-merge overrides INTO the existing policy.
208
- *
209
- * Merge rules:
210
- * - model-protection: keyed merge by `name`, preserves unmentioned items
211
- * - topic-guardrails: NEVER modified by flags — always preserved from existing
212
- * - app-protection: field-level overlay, preserves unmentioned fields
213
- * - agent-protection: keyed merge by `name`
214
- * - data-protection: field-level overlay; database-security merged by `name`
215
- * - latency: field-level overlay
216
- * - dlp-data-profiles: preserved unless overridden
217
- */
218
- export function mergeProfilePolicy(existing, overrides) {
219
- const base = structuredClone(existing ?? {});
220
- if (!overrides)
221
- return base;
222
- const overrideProfiles = overrides['ai-security-profiles'];
223
- if (!overrideProfiles?.length)
224
- return base;
225
- // Ensure base has ai-security-profiles structure
226
- if (!base['ai-security-profiles']) {
227
- base['ai-security-profiles'] = [{ 'model-type': 'default', 'model-configuration': {} }];
228
- }
229
- const baseProfiles = base['ai-security-profiles'];
230
- const baseConfig = (baseProfiles[0]['model-configuration'] ?? {});
231
- const overConfig = (overrideProfiles[0]['model-configuration'] ?? {});
232
- // Merge model-protection (keyed by name, topic-guardrails preserved)
233
- if (overConfig['model-protection']) {
234
- const baseMp = (baseConfig['model-protection'] ?? []);
235
- const overMp = overConfig['model-protection'];
236
- for (const overItem of overMp) {
237
- const existing = baseMp.find((b) => b.name === overItem.name);
238
- if (existing) {
239
- Object.assign(existing, overItem);
240
- }
241
- else {
242
- baseMp.push(overItem);
243
- }
244
- }
245
- baseConfig['model-protection'] = baseMp;
246
- }
247
- // Merge app-protection (field-level overlay)
248
- if (overConfig['app-protection']) {
249
- const baseAp = (baseConfig['app-protection'] ?? {});
250
- const overAp = overConfig['app-protection'];
251
- Object.assign(baseAp, overAp);
252
- baseConfig['app-protection'] = baseAp;
253
- }
254
- // Merge agent-protection (keyed by name)
255
- if (overConfig['agent-protection']) {
256
- const baseAgp = (baseConfig['agent-protection'] ?? []);
257
- const overAgp = overConfig['agent-protection'];
258
- for (const overItem of overAgp) {
259
- const existing = baseAgp.find((b) => b.name === overItem.name);
260
- if (existing) {
261
- Object.assign(existing, overItem);
262
- }
263
- else {
264
- baseAgp.push(overItem);
265
- }
266
- }
267
- baseConfig['agent-protection'] = baseAgp;
268
- }
269
- // Merge data-protection (field-level overlay, database-security by name)
270
- if (overConfig['data-protection']) {
271
- const baseDp = (baseConfig['data-protection'] ?? {});
272
- const overDp = overConfig['data-protection'];
273
- // data-leak-detection: overlay
274
- if (overDp['data-leak-detection']) {
275
- baseDp['data-leak-detection'] = overDp['data-leak-detection'];
276
- }
277
- // database-security: merge by name
278
- if (overDp['database-security']) {
279
- const baseDb = (baseDp['database-security'] ?? []);
280
- const overDb = overDp['database-security'];
281
- for (const overItem of overDb) {
282
- const existing = baseDb.find((b) => b.name === overItem.name);
283
- if (existing) {
284
- Object.assign(existing, overItem);
285
- }
286
- else {
287
- baseDb.push(overItem);
288
- }
289
- }
290
- baseDp['database-security'] = baseDb;
291
- }
292
- baseConfig['data-protection'] = baseDp;
293
- }
294
- // Merge latency (field-level overlay)
295
- if (overConfig.latency) {
296
- const baseLat = (baseConfig.latency ?? {});
297
- const overLat = overConfig.latency;
298
- Object.assign(baseLat, overLat);
299
- baseConfig.latency = baseLat;
300
- }
301
- // Merge mask-data-in-storage
302
- if (overConfig['mask-data-in-storage'] != null) {
303
- baseConfig['mask-data-in-storage'] = overConfig['mask-data-in-storage'];
304
- }
305
- baseProfiles[0]['model-configuration'] = baseConfig;
306
- return base;
307
- }
308
- //# sourceMappingURL=profile-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-builder.js","sourceRoot":"","sources":["../../../src/cli/builders/profile-builder.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export interface BulkScanState {
2
- scanIds: string[];
3
- profile: string;
4
- promptCount: number;
5
- sessionId?: string;
6
- timestamp?: string;
7
- }
8
- /**
9
- * Persist bulk scan IDs to a JSON file so polling can be resumed
10
- * if the process crashes or hits a rate limit.
11
- */
12
- export declare function saveBulkScanState(state: BulkScanState, dir: string): Promise<string>;
13
- /** Load a previously saved bulk scan state file. */
14
- export declare function loadBulkScanState(filePath: string): Promise<BulkScanState>;
15
- //# sourceMappingURL=bulk-scan-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulk-scan-state.d.ts","sourceRoot":"","sources":["../../src/cli/bulk-scan-state.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1F;AAED,oDAAoD;AACpD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAGhF"}
@@ -1,20 +0,0 @@
1
- import * as fs from 'node:fs/promises';
2
- import * as path from 'node:path';
3
- /**
4
- * Persist bulk scan IDs to a JSON file so polling can be resumed
5
- * if the process crashes or hits a rate limit.
6
- */
7
- export async function saveBulkScanState(state, dir) {
8
- await fs.mkdir(dir, { recursive: true });
9
- const ts = new Date().toISOString().replace(/[:.]/g, '-');
10
- const filePath = path.join(dir, `${ts}.bulk-scan.json`);
11
- const payload = { ...state, timestamp: new Date().toISOString() };
12
- await fs.writeFile(filePath, JSON.stringify(payload, null, 2), 'utf-8');
13
- return filePath;
14
- }
15
- /** Load a previously saved bulk scan state file. */
16
- export async function loadBulkScanState(filePath) {
17
- const raw = await fs.readFile(filePath, 'utf-8');
18
- return JSON.parse(raw);
19
- }
20
- //# sourceMappingURL=bulk-scan-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulk-scan-state.js","sourceRoot":"","sources":["../../src/cli/bulk-scan-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAUlC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAoB,EAAE,GAAW;IACvE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAClE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;AAC1C,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { Command } from 'commander';
2
- /** Register the `audit` command — evaluate all topics in a profile. */
3
- export declare function registerAuditCommand(parent: Command): void;
4
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6G1D"}
@@ -1,113 +0,0 @@
1
- import { writeFile } from 'node:fs/promises';
2
- import chalk from 'chalk';
3
- import { SdkManagementService } from '../../airs/management.js';
4
- import { AirsScanService } from '../../airs/scanner.js';
5
- import { buildAuditReportHtml, buildAuditReportJson } from '../../audit/report.js';
6
- import { runAudit } from '../../audit/runner.js';
7
- import { loadConfig } from '../../config/loader.js';
8
- import { createLlmProvider } from '../../llm/provider.js';
9
- import { LangChainLlmService } from '../../llm/service.js';
10
- import { renderAuditComplete, renderAuditTopics, renderConflicts, renderError, renderMetrics, } from '../renderer/index.js';
11
- /** Register the `audit` command — evaluate all topics in a profile. */
12
- export function registerAuditCommand(parent) {
13
- parent
14
- .command('audit <profileName>')
15
- .description('Evaluate all topics in a security profile')
16
- .option('--max-tests-per-topic <n>', 'Max tests per topic', '20')
17
- .option('--format <format>', 'Output format: terminal, json, html', 'terminal')
18
- .option('--output <path>', 'Output file path (json/html)')
19
- .option('--provider <provider>', 'LLM provider override')
20
- .option('--model <model>', 'LLM model override')
21
- .action(async (profileName, opts) => {
22
- try {
23
- const config = await loadConfig({
24
- llmProvider: opts.provider,
25
- llmModel: opts.model,
26
- });
27
- const model = await createLlmProvider({
28
- provider: config.llmProvider,
29
- model: config.llmModel,
30
- anthropicApiKey: config.anthropicApiKey,
31
- googleApiKey: config.googleApiKey,
32
- googleCloudProject: config.googleCloudProject,
33
- googleCloudLocation: config.googleCloudLocation,
34
- awsRegion: config.awsRegion,
35
- awsAccessKeyId: config.awsAccessKeyId,
36
- awsSecretAccessKey: config.awsSecretAccessKey,
37
- });
38
- const llm = new LangChainLlmService(model);
39
- const management = new SdkManagementService({
40
- clientId: config.mgmtClientId,
41
- clientSecret: config.mgmtClientSecret,
42
- tsgId: config.mgmtTsgId,
43
- tokenEndpoint: config.mgmtTokenEndpoint,
44
- });
45
- if (!config.airsApiKey) {
46
- renderError('PANW_AI_SEC_API_KEY is required');
47
- process.exit(1);
48
- }
49
- const scanner = new AirsScanService(config.airsApiKey);
50
- const format = opts.format;
51
- console.log(chalk.bold.cyan('\n Prisma AIRS Profile Audit'));
52
- console.log(chalk.dim(` Evaluating all topics in "${profileName}"\n`));
53
- for await (const event of runAudit({
54
- profileName,
55
- maxTestsPerTopic: Number.parseInt(opts.maxTestsPerTopic, 10),
56
- scanConcurrency: config.scanConcurrency,
57
- }, { llm, management, scanner })) {
58
- switch (event.type) {
59
- case 'topics:loaded':
60
- console.log(chalk.dim(` Found ${event.topics.length} topic(s) in profile\n`));
61
- renderAuditTopics(event.topics);
62
- break;
63
- case 'tests:generated':
64
- console.log(chalk.dim(` Generated ${event.count} tests for "${event.topicName}"`));
65
- break;
66
- case 'scan:progress':
67
- console.log(chalk.dim(`\n Scanned ${event.completed}/${event.total} prompts`));
68
- break;
69
- case 'evaluate:complete':
70
- break;
71
- case 'audit:complete': {
72
- const { result } = event;
73
- if (format === 'json') {
74
- const report = buildAuditReportJson(result);
75
- const output = JSON.stringify(report, null, 2);
76
- if (opts.output) {
77
- await writeFile(opts.output, output, 'utf-8');
78
- console.log(chalk.green(`\n Report written to ${opts.output}`));
79
- }
80
- else {
81
- console.log(output);
82
- }
83
- return;
84
- }
85
- if (format === 'html') {
86
- const html = buildAuditReportHtml(result);
87
- const outputPath = opts.output ?? `audit-${profileName.replace(/\s+/g, '-')}.html`;
88
- await writeFile(outputPath, html, 'utf-8');
89
- console.log(chalk.green(`\n Report written to ${outputPath}`));
90
- return;
91
- }
92
- // Terminal format
93
- renderAuditComplete(result);
94
- console.log(chalk.bold('\n Composite Metrics:'));
95
- renderMetrics(result.compositeMetrics);
96
- if (result.conflicts.length > 0) {
97
- renderConflicts(result.conflicts);
98
- }
99
- else {
100
- console.log(chalk.green('\n No cross-topic conflicts detected.\n'));
101
- }
102
- break;
103
- }
104
- }
105
- }
106
- }
107
- catch (err) {
108
- renderError(err instanceof Error ? err.message : String(err));
109
- process.exit(1);
110
- }
111
- });
112
- }
113
- //# sourceMappingURL=audit.js.map