0sec-cli 0.24.0 → 0.25.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 (243) hide show
  1. package/0.js +64 -60
  2. package/README.md +121 -82
  3. package/chunks/{adapt-loop-TEJPXWFG.js → adapt-loop-L2PXCD4J.js} +6 -5
  4. package/chunks/{artifact-scraper-AJZ3LOQY.js → artifact-scraper-W3LGLXBM.js} +4 -3
  5. package/chunks/{assumption-mining-EATDC4BB.js → assumption-mining-7IJ6ZWZE.js} +22 -20
  6. package/chunks/{backend-connections-QE4NASAK.js → backend-connections-MYH4QRQG.js} +5 -4
  7. package/chunks/{chunk-RBOMXUYL.js → chunk-27SXCYWH.js} +1 -1
  8. package/chunks/{chunk-E42XEJTK.js → chunk-2J3STRJT.js} +337 -257
  9. package/chunks/chunk-36J5ZLFE.js +18729 -0
  10. package/chunks/chunk-3DF55BWV.js +49 -0
  11. package/chunks/{chunk-GHEBZKUS.js → chunk-3HMO42M2.js} +1426 -321
  12. package/chunks/{chunk-BIJPMYFA.js → chunk-3T5R7P4T.js} +6 -6
  13. package/chunks/{chunk-RD4FKFWR.js → chunk-5H2PXZ7Q.js} +1 -1
  14. package/chunks/chunk-5XOYTAOK.js +1546 -0
  15. package/chunks/{chunk-QEA2VHBD.js → chunk-6TA3CWND.js} +2656 -2960
  16. package/chunks/{chunk-H76JYUPE.js → chunk-76CLUI54.js} +3 -3
  17. package/chunks/{chunk-KCA35IL3.js → chunk-7PUJI64A.js} +11 -9
  18. package/chunks/{chunk-W6IYTSZH.js → chunk-7TIWL6E5.js} +8 -10
  19. package/chunks/chunk-ABKUI3QB.js +196 -0
  20. package/chunks/{chunk-YORL5S5V.js → chunk-ACYZMJHC.js} +1 -1
  21. package/chunks/{chunk-5FHFG5P2.js → chunk-AL32F74R.js} +1 -1
  22. package/chunks/{chunk-J6G73WYF.js → chunk-B5TIXHCO.js} +1 -1
  23. package/chunks/{chunk-G2EJ3R5I.js → chunk-BWUW6ZQR.js} +2052 -1075
  24. package/chunks/{chunk-3XLEDCFX.js → chunk-C6ZMPXN2.js} +5 -50
  25. package/chunks/{chunk-4TUR47H5.js → chunk-D4IBEO2K.js} +1 -1
  26. package/chunks/{chunk-EXTN4SQV.js → chunk-DHNYJ2ML.js} +1 -1
  27. package/chunks/{chunk-Y7KV7WV6.js → chunk-DJGJECBV.js} +93 -20
  28. package/chunks/{chunk-UHUW45S3.js → chunk-DMDWIW3E.js} +5 -5
  29. package/chunks/{chunk-V5I5GAQH.js → chunk-EEP6GBUO.js} +16037 -34417
  30. package/chunks/{chunk-EYBMTELO.js → chunk-EIONVEFN.js} +208 -29
  31. package/chunks/chunk-EQBC2ZWL.js +2481 -0
  32. package/chunks/{chunk-FKGFHLLS.js → chunk-FI2H6HV2.js} +1 -1
  33. package/chunks/{chunk-4YRXIVPZ.js → chunk-FI5YL4R2.js} +3 -3
  34. package/chunks/{chunk-DNV3ZMPX.js → chunk-FOLTHXRH.js} +1 -1
  35. package/chunks/{chunk-ZPFBQ3SD.js → chunk-GOUGG7IQ.js} +3 -3
  36. package/chunks/{chunk-O3ADFN2A.js → chunk-GXSECFUE.js} +1 -1
  37. package/chunks/{chunk-YYOQADBB.js → chunk-HDJSHLRM.js} +3 -2
  38. package/chunks/{chunk-A3EKBUEM.js → chunk-HFUOUT2B.js} +61232 -30665
  39. package/chunks/chunk-HJKJ4NQP.js +196 -0
  40. package/chunks/{chunk-RPTO5FY2.js → chunk-I4VIAQHM.js} +1 -1
  41. package/chunks/{chunk-A6AZZ6XX.js → chunk-ITEMDJAB.js} +3 -3
  42. package/chunks/chunk-ITHDAIRY.js +57 -0
  43. package/chunks/{chunk-TOFIGQ63.js → chunk-JCRQV4FE.js} +2 -2
  44. package/chunks/{chunk-SQCBHFWN.js → chunk-LWMEJYCP.js} +2 -2
  45. package/chunks/{chunk-52AWIBCT.js → chunk-MY44EZKD.js} +1 -1
  46. package/chunks/{chunk-SGILXLR3.js → chunk-NBLKIQCW.js} +226 -4
  47. package/chunks/chunk-NO543ZBU.js +90 -0
  48. package/chunks/{chunk-CIMN2AO6.js → chunk-OFPF26WL.js} +333 -3
  49. package/chunks/{chunk-YERUDEXT.js → chunk-PAE7ZAV6.js} +2780 -1255
  50. package/chunks/{chunk-V4BD7GSP.js → chunk-PMAKX6KP.js} +2 -2
  51. package/chunks/{chunk-62PGWN7Y.js → chunk-RBTJYREN.js} +8 -171
  52. package/chunks/{chunk-IK27KMVV.js → chunk-RFK5F45W.js} +1 -1
  53. package/chunks/{chunk-554D4AYM.js → chunk-S2WCYEK2.js} +4 -99
  54. package/chunks/{chunk-RZR2XXAK.js → chunk-S3B6HFSM.js} +144 -14
  55. package/chunks/{chunk-WUPN3D37.js → chunk-S4DFH2FJ.js} +26 -1
  56. package/chunks/{chunk-TZRHWP7R.js → chunk-SEWZ76MN.js} +77 -13
  57. package/chunks/{chunk-HRBOZBMC.js → chunk-TFKY6D7O.js} +1 -1
  58. package/chunks/{chunk-TOAAYJVN.js → chunk-WK6VUCKK.js} +3 -333
  59. package/chunks/{chunk-IXT64DV5.js → chunk-XPDJE537.js} +97 -1
  60. package/chunks/{chunk-RCHAFSWS.js → chunk-YXTV2FRE.js} +113 -22
  61. package/chunks/{chunk-TTDFBFNZ.js → chunk-YYFODVZG.js} +6 -10
  62. package/chunks/{chunk-3XLFB46W.js → chunk-ZWAWZU6C.js} +30 -13
  63. package/chunks/{chunk-5POT5OYF.js → chunk-ZZV56ACK.js} +11 -9
  64. package/chunks/{codex-models-FQPCWRPC.js → codex-models-KCUIVS3R.js} +9 -8
  65. package/chunks/{commands-I5L3VD2A.js → commands-MPPAADGY.js} +798 -608
  66. package/chunks/dashboard-MN7GZLLX.js +75 -0
  67. package/chunks/{db-P5EIKMLP.js → db-R2AQSESC.js} +5 -4
  68. package/chunks/{deep-review-I7RD5QSS.js → deep-review-Q6BJKEV4.js} +37 -38
  69. package/chunks/{disclose-PFBWESVJ.js → disclose-GGULOW27.js} +6 -5
  70. package/chunks/{dist-AJU25UXA.js → dist-6RNAVFAY.js} +376 -333
  71. package/chunks/{dist-VK2M4HNW.js → dist-DWN7U5OV.js} +5 -2
  72. package/chunks/{dist-M2X367VW.js → dist-JAZWL3SC.js} +3 -2
  73. package/chunks/{dist-3SWWY5FZ.js → dist-OLGNKDB2.js} +4 -3
  74. package/chunks/{dist-LNXGATR2.js → dist-WNAOCQGA.js} +5 -4
  75. package/chunks/eval-runner-WCTTIYN4.js +38 -0
  76. package/chunks/{exploit-agent-A4RTIJ4J.js → exploit-agent-M3KUMZJH.js} +1 -1
  77. package/chunks/{exploit-autoclimb-ABMMBC3M.js → exploit-autoclimb-QTTWC5WM.js} +1 -1
  78. package/chunks/{exploit-climb-BQ2SVU63.js → exploit-climb-E4KDELTN.js} +4 -3
  79. package/chunks/{fix-4YCLHFDT.js → fix-U5FFJD4F.js} +9 -8
  80. package/chunks/{harness-DHWULEIZ.js → harness-FMKIMEH5.js} +5 -4
  81. package/chunks/{http-conformance-U5F6GKYG.js → http-conformance-AXMUOE6C.js} +3 -2
  82. package/chunks/hunt-scan-RYPWRUQD.js +43 -0
  83. package/chunks/{kernel-primitive-SF4NALVR.js → kernel-primitive-CVG2E7MJ.js} +4 -3
  84. package/chunks/{kernel-vm-runner-WEBEZEIC.js → kernel-vm-runner-62KISULQ.js} +4 -3
  85. package/chunks/{local-engine-XUG7XRKM.js → local-engine-WP3I7K7G.js} +7 -6
  86. package/chunks/managed-operation-642WPTLC.js +59 -0
  87. package/chunks/{memsafety-scan-L2Z7E7TE.js → memsafety-scan-Q2MBZEGJ.js} +1 -2
  88. package/chunks/{native-loop-ZNAELJGB.js → native-loop-HC77R5NQ.js} +31 -16
  89. package/chunks/operator-services-E2NONBQS.js +79 -0
  90. package/chunks/orchestrate-Z3DW265M.js +62 -0
  91. package/chunks/{prepare-SODWQN6O.js → prepare-7DTS6RJT.js} +7 -6
  92. package/chunks/{remote-workflow-runtime-XNNGI2PG.js → remote-workflow-runtime-6CEVRZXS.js} +4 -3
  93. package/chunks/routing-ITJZBJIU.js +61 -0
  94. package/chunks/{runtime-MB4GEFBY.js → runtime-PZJ77QES.js} +9 -8
  95. package/chunks/{runtime-HFFRUOPL.js → runtime-W6JNDQRO.js} +4 -3
  96. package/chunks/{scan-stream-GXBJHCDF.js → scan-stream-6VOJTHTR.js} +6 -4
  97. package/chunks/{scope-M7L3CD6X.js → scope-FHXW6EX6.js} +4 -3
  98. package/chunks/service-plugins-CN6Q2NSN.js +63 -0
  99. package/chunks/{session-store-K7I4GLNH.js → session-store-DBBI544Y.js} +8 -5
  100. package/chunks/{variant-candidates-2KSP5EHH.js → variant-candidates-DPR6DJ3N.js} +9 -8
  101. package/chunks/{web-recon-prepass-RAXXTEWH.js → web-recon-prepass-HWDHDQMN.js} +7 -6
  102. package/chunks/{workflow-runtime-V26HIJO3.js → workflow-runtime-PLB32XC3.js} +50 -49
  103. package/dashboard/assets/{abnfDiagram-VCTEODGH-CGCueOp5.js → abnfDiagram-VCTEODGH-6e39CQKz.js} +1 -1
  104. package/dashboard/assets/{arc-BjZaQcCc.js → arc-ClYun86B.js} +1 -1
  105. package/dashboard/assets/architecture-7GRP2DOG-rM-lWo7E.js +1 -0
  106. package/dashboard/assets/architectureDiagram-5GKGNRK7-C9gEGZIU.js +36 -0
  107. package/dashboard/assets/{blockDiagram-I7D4REHJ-C-byT12_.js → blockDiagram-I7D4REHJ-Dgh2n5Lf.js} +2 -2
  108. package/dashboard/assets/{c4Diagram-7LVT6UL2-DoYjz-Uv.js → c4Diagram-7LVT6UL2-CsorW08z.js} +1 -1
  109. package/dashboard/assets/channel-BBlDqIBl.js +1 -0
  110. package/dashboard/assets/{chunk-4HAMMTFA-NBNp2zdt.js → chunk-4HAMMTFA-4_b_LGGQ.js} +1 -1
  111. package/dashboard/assets/{chunk-75Z2AOVW-BHmkuP0B.js → chunk-75Z2AOVW-qzNlKGCp.js} +1 -1
  112. package/dashboard/assets/chunk-DU6HZSFF-SAPICW28.js +127 -0
  113. package/dashboard/assets/{chunk-F27PBJKO-3wwNFUgZ.js → chunk-F27PBJKO-DlLotIQx.js} +1 -1
  114. package/dashboard/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-COOliuUh.js} +14 -14
  115. package/dashboard/assets/{chunk-GMAD6QVW-Btg7huZW.js → chunk-GMAD6QVW-DNnr65Nb.js} +7 -7
  116. package/dashboard/assets/{chunk-GVQU2GXP-ihCURK5O.js → chunk-GVQU2GXP-DTwv0VfU.js} +1 -1
  117. package/dashboard/assets/{chunk-IMKFNOWR-FsXj7slg.js → chunk-IMKFNOWR-B1fk1q_W.js} +1 -1
  118. package/dashboard/assets/{chunk-L3NEJ4N5-DorFIxJY.js → chunk-L3NEJ4N5-ByVjFIox.js} +1 -1
  119. package/dashboard/assets/{chunk-OSK3NFVY-DKun_KfC.js → chunk-OSK3NFVY-DUDCzjbh.js} +1 -1
  120. package/dashboard/assets/{chunk-P2QGCYS3-XGgiU1Bz.js → chunk-P2QGCYS3-D_D5qEso.js} +1 -1
  121. package/dashboard/assets/{chunk-POPQ4Y6H-BTXEnGhJ.js → chunk-POPQ4Y6H-CetM-tVm.js} +1 -1
  122. package/dashboard/assets/{chunk-PWAF6VOD-DYZcGkTL.js → chunk-PWAF6VOD-BcJX4exl.js} +1 -1
  123. package/dashboard/assets/{chunk-SHT3W25Y-C4WQfwf8.js → chunk-SHT3W25Y-BWQql238.js} +1 -1
  124. package/dashboard/assets/{chunk-SVP7TREG-C4nCh0-1.js → chunk-SVP7TREG-BSLOD1JE.js} +1 -1
  125. package/dashboard/assets/{chunk-TICWLB2K-DSB-IiGc.js → chunk-TICWLB2K-DReOl-g_.js} +2 -2
  126. package/dashboard/assets/{chunk-XXDRQBXY-CS6fjUcj.js → chunk-XXDRQBXY-DSdSMeei.js} +1 -1
  127. package/dashboard/assets/classDiagram-ZZMXUADV-CRH2kB8G.js +1 -0
  128. package/dashboard/assets/classDiagram-v2-VYDZK3BY-CRH2kB8G.js +1 -0
  129. package/dashboard/assets/common-CRRsylCH.js +5 -0
  130. package/dashboard/assets/cose-bilkent-JH36ORCC-fg-DIBqt.js +1 -0
  131. package/dashboard/assets/cynefin-OW5HDTMX-XmrbEIFh.js +1 -0
  132. package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-CgDOOY67.js → cynefinDiagram-5FMLGOSQ-CoQ7QEPl.js} +1 -1
  133. package/dashboard/assets/cytoscape.esm-BbBREfsg.js +321 -0
  134. package/dashboard/assets/dagre-D7JM2Yhv.js +1 -0
  135. package/dashboard/assets/dagre-GXQ25YYZ-qtQtsg6c.js +4 -0
  136. package/dashboard/assets/{diagram-S7CK7UJ4-CrKqRXZb.js → diagram-S7CK7UJ4-B_ts4_58.js} +2 -2
  137. package/dashboard/assets/{diagram-UQ7AKVKN-Cu6Es0-v.js → diagram-UQ7AKVKN-DwHbbxFy.js} +1 -1
  138. package/dashboard/assets/{diagram-VSXAHHWV-eK4d8FwS.js → diagram-VSXAHHWV-2Tg_RG89.js} +1 -1
  139. package/dashboard/assets/{diagram-VX7I27RA-bFxeFKOc.js → diagram-VX7I27RA-BFYp-YjF.js} +1 -1
  140. package/dashboard/assets/{diagram-Z3DM3KII-C0ClmnhC.js → diagram-Z3DM3KII-DrPiS4V0.js} +1 -1
  141. package/dashboard/assets/{dist-BZh8Kb3O.js → dist-cbVssBvx.js} +1 -1
  142. package/dashboard/assets/{ebnfDiagram-PWID7BFC-CUqxFPzf.js → ebnfDiagram-PWID7BFC-DCMOZtU2.js} +1 -1
  143. package/dashboard/assets/{erDiagram-RLTQ6QDP-CcYM7pLi.js → erDiagram-RLTQ6QDP-CW4rUJGU.js} +1 -1
  144. package/dashboard/assets/eventmodeling-NTZA5JFV-C2q-Aaav.js +1 -0
  145. package/dashboard/assets/flowDiagram-HODETNUW-3NOabgG3.js +1 -0
  146. package/dashboard/assets/{ganttDiagram-EL5Y4UJY-UmZfbMyD.js → ganttDiagram-EL5Y4UJY-C1AqcwIF.js} +1 -1
  147. package/dashboard/assets/gitGraph-4MIJSDKK-DYR76gtd.js +1 -0
  148. package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-CvzeCxVy.js → gitGraphDiagram-WWUBYQGX-B7hL98CE.js} +1 -1
  149. package/dashboard/assets/info-A6RAGUB7-TXB43LiH.js +1 -0
  150. package/dashboard/assets/{infoDiagram-27XIBGKW-DjkpNtVW.js → infoDiagram-27XIBGKW-Dk5dXmh_.js} +1 -1
  151. package/dashboard/assets/{ishikawaDiagram-5VMMS53U-8FhjJaWT.js → ishikawaDiagram-5VMMS53U-BQDuNMka.js} +2 -2
  152. package/dashboard/assets/{journeyDiagram-3NMN7TZE-DyNJ755f.js → journeyDiagram-3NMN7TZE-DkustddD.js} +1 -1
  153. package/dashboard/assets/{kanban-definition-UXKFOSKX-_jCmtaY1.js → kanban-definition-UXKFOSKX-BW7Ann84.js} +1 -1
  154. package/dashboard/assets/{katex-BdBmVSus.js → katex-nLxf_RlZ.js} +2 -2
  155. package/dashboard/assets/{line-Bf0nxyWf.js → line-DVxcLeru.js} +1 -1
  156. package/dashboard/assets/linear-DOM_l9bO.js +1 -0
  157. package/dashboard/assets/mermaid-parser.core-CKg9fDvJ.js +7 -0
  158. package/dashboard/assets/{mermaid.core-B4yCwiN-.js → mermaid.core-DruW_5-Y.js} +9 -9
  159. package/dashboard/assets/{mindmap-definition-YA3MSWOX-D5DjWyXj.js → mindmap-definition-YA3MSWOX-Di5W5VB3.js} +1 -1
  160. package/dashboard/assets/operations-B-t_k60U.js +194 -0
  161. package/dashboard/assets/operations-D2ZKZFOF.css +1 -0
  162. package/dashboard/assets/packet-AYTQ26CC-BABwqtNu.js +1 -0
  163. package/dashboard/assets/{pegDiagram-XKGWAZYB-Bf6a1vaf.js → pegDiagram-XKGWAZYB-Cx4ABT6q.js} +1 -1
  164. package/dashboard/assets/pie-WAS4IAKB-CNdXyrze.js +1 -0
  165. package/dashboard/assets/{pieDiagram-E7YTZNPT-D0L1qbch.js → pieDiagram-E7YTZNPT-BilfQbIs.js} +1 -1
  166. package/dashboard/assets/{quadrantDiagram-AXDQQJYC-CbFyy2Pe.js → quadrantDiagram-AXDQQJYC-BVmMQHE5.js} +1 -1
  167. package/dashboard/assets/radar-RG4KPBEZ-fKNmDeoK.js +1 -0
  168. package/dashboard/assets/railroad-74A4TZTK-DhcvDCOh.js +1 -0
  169. package/dashboard/assets/railroad-abnf-HS5TGJTU-BTRVAmf0.js +1 -0
  170. package/dashboard/assets/railroad-ebnf-LZEXJU2U-CwS8fgC_.js +1 -0
  171. package/dashboard/assets/railroad-peg-WCYAUIDC-CXuhXlNp.js +1 -0
  172. package/dashboard/assets/{railroadDiagram-O6MQD6OU-t7Gp9g2R.js → railroadDiagram-O6MQD6OU-DnBru-jf.js} +1 -1
  173. package/dashboard/assets/{requirementDiagram-BXWQKSXE-LYmqeBXi.js → requirementDiagram-BXWQKSXE-FwdvUZ7_.js} +1 -1
  174. package/dashboard/assets/{sankeyDiagram-P5KCCOFB-DnpfA_94.js → sankeyDiagram-P5KCCOFB-BQvDORai.js} +1 -1
  175. package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-C8s3pTUE.js → sequenceDiagram-WJ2MYXX4-FWYQLzcY.js} +2 -2
  176. package/dashboard/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  177. package/dashboard/assets/src-BwkPhlcp.js +1 -0
  178. package/dashboard/assets/{stateDiagram-D77RDMKH-BMzm6fK1.js → stateDiagram-D77RDMKH-CjPBd_Sa.js} +1 -1
  179. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-DHmenujm.js +1 -0
  180. package/dashboard/assets/swimlanes-42K2YHIH-SQLNsa4J.js +1 -0
  181. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-D1bH4ETZ.js +8 -0
  182. package/dashboard/assets/{timeline-definition-24CTP7MA-BfLJMVeG.js → timeline-definition-24CTP7MA-BxCf20k1.js} +1 -1
  183. package/dashboard/assets/treeView-Q6P3EWNA-BGLYAyGp.js +1 -0
  184. package/dashboard/assets/treemap-WGGIJYW6-BlzAwncU.js +1 -0
  185. package/dashboard/assets/{vennDiagram-4TSXK5OY-BYJRHEaL.js → vennDiagram-4TSXK5OY-D76RIZLz.js} +1 -1
  186. package/dashboard/assets/wardley-WFR3VGLG-Ba_reiVw.js +1 -0
  187. package/dashboard/assets/{wardleyDiagram-VM6X3IG4-DgPN4nSe.js → wardleyDiagram-VM6X3IG4-Cux4coOD.js} +1 -1
  188. package/dashboard/assets/{xychartDiagram-S5SC5T6Z-BhkAMAOT.js → xychartDiagram-S5SC5T6Z-Ch5mvnlH.js} +1 -1
  189. package/dashboard/index.html +2 -2
  190. package/package.json +2 -5
  191. package/chunks/chunk-AV5BF4V7.js +0 -4304
  192. package/chunks/chunk-CSPF47S3.js +0 -6027
  193. package/chunks/chunk-ESM447R6.js +0 -77
  194. package/chunks/chunk-FEOPHBMY.js +0 -56
  195. package/chunks/chunk-GNR3APR6.js +0 -295
  196. package/chunks/chunk-IIBNQTOK.js +0 -1532
  197. package/chunks/chunk-JSTLXPJS.js +0 -284
  198. package/chunks/chunk-NJLKFC66.js +0 -4790
  199. package/chunks/chunk-O7Q2G2KW.js +0 -117
  200. package/chunks/chunk-VIT5ALXF.js +0 -4054
  201. package/chunks/chunk-YJU7QACE.js +0 -279
  202. package/chunks/dashboard-B2AEGCFM.js +0 -76
  203. package/chunks/eval-runner-XVRX3R2Y.js +0 -31
  204. package/chunks/hunt-scan-DXV5H6YN.js +0 -40
  205. package/chunks/managed-operation-SQFMBWHG.js +0 -60
  206. package/chunks/orchestrate-YHFJXGID.js +0 -63
  207. package/chunks/run-5T4Z3Q2D.js +0 -28242
  208. package/chunks/service-plugins-BGS6QKSZ.js +0 -64
  209. package/dashboard/assets/architecture-7GRP2DOG-hcbO-9zX.js +0 -1
  210. package/dashboard/assets/architectureDiagram-5GKGNRK7-DReOXTSq.js +0 -36
  211. package/dashboard/assets/channel-CUURBnpZ.js +0 -1
  212. package/dashboard/assets/chunk-DU6HZSFF-DgfLNaL2.js +0 -127
  213. package/dashboard/assets/classDiagram-ZZMXUADV-CD1Buc26.js +0 -1
  214. package/dashboard/assets/classDiagram-v2-VYDZK3BY-CD1Buc26.js +0 -1
  215. package/dashboard/assets/common-BMdQBwfR.js +0 -5
  216. package/dashboard/assets/cose-bilkent-JH36ORCC-CUjQHTML.js +0 -1
  217. package/dashboard/assets/cynefin-OW5HDTMX-BC7zCtFq.js +0 -1
  218. package/dashboard/assets/cytoscape.esm-CGd-uY3x.js +0 -321
  219. package/dashboard/assets/dagre-GXQ25YYZ-Dqc8FS9x.js +0 -4
  220. package/dashboard/assets/dagre-PrKaheQc.js +0 -1
  221. package/dashboard/assets/eventmodeling-NTZA5JFV-D8ZNnPkV.js +0 -1
  222. package/dashboard/assets/flowDiagram-HODETNUW-pDb1AYm8.js +0 -1
  223. package/dashboard/assets/gitGraph-4MIJSDKK-mvNUo0ZA.js +0 -1
  224. package/dashboard/assets/info-A6RAGUB7-DChKqZMi.js +0 -1
  225. package/dashboard/assets/linear-Bl6JKbf4.js +0 -1
  226. package/dashboard/assets/mermaid-parser.core-Cc6sgCzs.js +0 -7
  227. package/dashboard/assets/operations-B7JAWOi6.js +0 -130
  228. package/dashboard/assets/operations-QjKT0Hwi.css +0 -1
  229. package/dashboard/assets/packet-AYTQ26CC-bQXLDhQC.js +0 -1
  230. package/dashboard/assets/pie-WAS4IAKB-DfzoABIi.js +0 -1
  231. package/dashboard/assets/radar-RG4KPBEZ-CZ2pyeUT.js +0 -1
  232. package/dashboard/assets/railroad-74A4TZTK-CP4Jazfd.js +0 -1
  233. package/dashboard/assets/railroad-abnf-HS5TGJTU-3MvEiHwD.js +0 -1
  234. package/dashboard/assets/railroad-ebnf-LZEXJU2U-BWto6cXE.js +0 -1
  235. package/dashboard/assets/railroad-peg-WCYAUIDC-DasEjbyf.js +0 -1
  236. package/dashboard/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -1
  237. package/dashboard/assets/src-CaNUT1AQ.js +0 -1
  238. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-B3REMjpY.js +0 -1
  239. package/dashboard/assets/swimlanes-42K2YHIH-uJE05Tt_.js +0 -1
  240. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-CIaVMZEy.js +0 -8
  241. package/dashboard/assets/treeView-Q6P3EWNA-ZOE2enu2.js +0 -1
  242. package/dashboard/assets/treemap-WGGIJYW6-yIZoPBF5.js +0 -1
  243. package/dashboard/assets/wardley-WFR3VGLG-D5V-jLbB.js +0 -1
@@ -1,284 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire as __0CreateRequire } from "node:module";
3
- const require = __0CreateRequire(import.meta.url);
4
- import {
5
- inspectLensRegistry,
6
- lastGreen,
7
- loadLedger,
8
- loadManifest,
9
- makeFinderLensProbe,
10
- retireArchetype,
11
- runLensSynthesisLoop
12
- } from "./chunk-V5I5GAQH.js";
13
- import {
14
- harvestMissesFromLedgerEntry,
15
- mergeHarvestedMisses
16
- } from "./chunk-A3EKBUEM.js";
17
-
18
- // packages/cli/src/commands/lens-synth.ts
19
- import { createHash } from "node:crypto";
20
- import { readFileSync } from "node:fs";
21
- import { resolve } from "node:path";
22
- function isRecord(value) {
23
- return typeof value === "object" && value !== null && !Array.isArray(value);
24
- }
25
- function parseFixtures(value, label) {
26
- if (value === void 0) return [];
27
- if (!Array.isArray(value)) throw new Error(`${label} must be an array`);
28
- return value.map((entry, i) => {
29
- if (!isRecord(entry)) throw new Error(`${label}[${i}] must be an object`);
30
- const id = entry.id;
31
- const path = entry.path;
32
- if (typeof id !== "string" || id.trim() === "") throw new Error(`${label}[${i}].id must be a non-empty string`);
33
- if (typeof path !== "string" || path.trim() === "") throw new Error(`${label}[${i}].path must be a non-empty string`);
34
- const fixture = { id, path };
35
- if (typeof entry.note === "string") fixture.note = entry.note;
36
- if (typeof entry.expectedCwe === "string") fixture.expectedCwe = entry.expectedCwe;
37
- if (typeof entry.expectedFile === "string") fixture.expectedFile = entry.expectedFile;
38
- if (typeof entry.expectedLine === "number" && Number.isFinite(entry.expectedLine)) {
39
- fixture.expectedLine = entry.expectedLine;
40
- }
41
- if (Array.isArray(entry.expectedRange) && entry.expectedRange.length === 2 && typeof entry.expectedRange[0] === "number" && typeof entry.expectedRange[1] === "number") {
42
- fixture.expectedRange = [entry.expectedRange[0], entry.expectedRange[1]];
43
- }
44
- if (typeof entry.contentDigest === "string") fixture.contentDigest = entry.contentDigest;
45
- if (typeof entry.cleanProvenance === "string") fixture.cleanProvenance = entry.cleanProvenance;
46
- return fixture;
47
- });
48
- }
49
- function parseMissInputFile(raw) {
50
- if (!isRecord(raw)) throw new Error("miss-input must be a JSON object");
51
- const missesRaw = isRecord(raw.misses) ? raw.misses : {};
52
- const corpusRaw = isRecord(raw.corpus) ? raw.corpus : {};
53
- const misses = {
54
- ...Array.isArray(missesRaw.confirmedMisses) ? { confirmedMisses: missesRaw.confirmedMisses } : {},
55
- ...Array.isArray(missesRaw.incompleteCoverage) ? { incompleteCoverage: missesRaw.incompleteCoverage } : {},
56
- ...Array.isArray(missesRaw.curatedCandidates) ? { curatedCandidates: missesRaw.curatedCandidates } : {}
57
- };
58
- const heldOutFixtures = parseFixtures(corpusRaw.heldOut, "corpus.heldOut");
59
- const corpus = {
60
- positives: parseFixtures(corpusRaw.positives, "corpus.positives"),
61
- negativeControls: parseFixtures(corpusRaw.negativeControls, "corpus.negativeControls"),
62
- ...heldOutFixtures.length > 0 ? { heldOut: heldOutFixtures } : {},
63
- ...typeof corpusRaw.baselineDigest === "string" ? { baselineDigest: corpusRaw.baselineDigest } : {}
64
- };
65
- if (corpus.positives.length === 0) {
66
- throw new Error("corpus.positives must contain at least one fixture (the seeded miss) \u2014 the loop is fail-closed without it");
67
- }
68
- if (corpus.negativeControls.length === 0) {
69
- throw new Error("corpus.negativeControls must contain at least one fixture \u2014 the loop cannot measure FP regression without it");
70
- }
71
- if (!corpus.heldOut || corpus.heldOut.length === 0) {
72
- throw new Error("corpus.heldOut must contain at least one fixture \u2014 held-out positives are required to demonstrate generalisation beyond development misses");
73
- }
74
- return { misses, corpus };
75
- }
76
- async function harvestBenchMisses(fromBench, manifestPath) {
77
- const ledger = await loadLedger(resolve(fromBench));
78
- const entry = lastGreen(ledger) ?? ledger.entries[ledger.entries.length - 1];
79
- if (!entry) throw new Error(`--from-bench: ledger ${fromBench} has no entries to harvest`);
80
- const manifest = await loadManifest(resolve(manifestPath));
81
- const result = harvestMissesFromLedgerEntry(entry, manifest);
82
- return { misses: result.misses, result };
83
- }
84
- function trialCount(value) {
85
- const count = value ?? 2;
86
- if (!Number.isSafeInteger(count) || count < 2 || count > 10) throw new Error("--trials must be an integer between 2 and 10");
87
- return count;
88
- }
89
- async function runLensSynthesisInput(input, opts, deps = {}) {
90
- const trials = trialCount(opts.trials);
91
- const log = deps.log ?? (() => {
92
- });
93
- const probe = deps.probe ?? makeFinderLensProbe({ log });
94
- return runLensSynthesisLoop(input, {
95
- ...deps.model ? { model: deps.model } : {},
96
- ...opts.model ? { modelId: opts.model } : {},
97
- probe,
98
- ...opts.registry ? { registryPath: resolve(opts.registry) } : {},
99
- maxRegistrations: opts.maxRegister ?? 1,
100
- dryRun: !opts.promote,
101
- trials,
102
- ...opts.signal ? { signal: opts.signal } : {},
103
- log
104
- });
105
- }
106
- async function runLensSynthCommand(opts, deps = {}) {
107
- const raw = JSON.parse(readFileSync(resolve(opts.missInput), "utf8"));
108
- let input = parseMissInputFile(raw);
109
- if (opts.fromBench) {
110
- if (!opts.manifest) throw new Error("--from-bench requires --manifest");
111
- const { misses } = await harvestBenchMisses(opts.fromBench, opts.manifest);
112
- input = { ...input, misses: mergeHarvestedMisses(input.misses, misses) };
113
- deps.log?.(`[lens-synth] harvested ${misses.length} bench miss(es) from ${opts.fromBench}`);
114
- }
115
- return runLensSynthesisInput(input, opts, deps);
116
- }
117
- async function watchLensSynthCommand(opts, deps = {}) {
118
- const inputPath = resolve(opts.missInput);
119
- const log = deps.log ?? (() => {
120
- });
121
- const requestedInterval = opts.pollIntervalMs ?? 2e3;
122
- const pollIntervalMs = Number.isFinite(requestedInterval) ? Math.max(100, Math.floor(requestedInterval)) : 2e3;
123
- const sleep = deps.sleep ?? ((milliseconds) => new Promise((done) => setTimeout(done, milliseconds)));
124
- let previousRevision;
125
- while (!deps.signal?.aborted) {
126
- try {
127
- const bytes = readFileSync(inputPath);
128
- const revision = createHash("sha256").update(bytes).digest("hex");
129
- if (revision !== previousRevision) {
130
- previousRevision = revision;
131
- const input = parseMissInputFile(JSON.parse(bytes.toString("utf8")));
132
- const result = await runLensSynthesisInput(input, opts, deps);
133
- deps.onResult?.(result);
134
- }
135
- } catch (cause) {
136
- const error = cause instanceof Error ? cause : new Error(String(cause));
137
- const revision = `error:${error.name}:${error.message}`;
138
- if (revision !== previousRevision) {
139
- previousRevision = revision;
140
- if (deps.onError) deps.onError(error);
141
- else log(`[lens-synth] input revision rejected: ${error.message}`);
142
- }
143
- }
144
- if (deps.signal?.aborted) return;
145
- const signal = deps.signal;
146
- if (!signal) {
147
- await sleep(pollIntervalMs);
148
- continue;
149
- }
150
- if (signal.aborted) return;
151
- await new Promise((resume) => {
152
- const onAbort = () => {
153
- signal.removeEventListener("abort", onAbort);
154
- resume();
155
- };
156
- signal.addEventListener("abort", onAbort, { once: true });
157
- void sleep(pollIntervalMs).then(() => {
158
- signal.removeEventListener("abort", onAbort);
159
- resume();
160
- });
161
- });
162
- }
163
- }
164
- function formatLensSynthResult(result, dryRun) {
165
- const lines = [
166
- `captured ${result.candidatesCaptured} miss candidate(s) \u2192 ${result.clusters} cluster(s) \u2192 ${result.synthesized.length} synthesized`
167
- ];
168
- for (const validation of result.validations) {
169
- lines.push(` validate ${validation.lensId}: ${validation.passed ? "CHAMPION" : "rejected"} \u2014 ${validation.reason}`);
170
- }
171
- if (dryRun) {
172
- lines.push(`dry-run: ${result.validations.filter((validation) => validation.passed).length} champion(s) would register (nothing written)`);
173
- } else {
174
- lines.push(
175
- result.registered.length > 0 ? `REGISTERED ${result.registered.length} lens(es): ${result.registered.map((registered) => registered.uid).join(", ")}` : "registered 0 lenses"
176
- );
177
- }
178
- for (const rejected of result.rejected) lines.push(` rejected ${rejected.id}: ${rejected.reason}`);
179
- for (const warning of result.warnings) lines.push(` warning: ${warning}`);
180
- return lines.join("\n");
181
- }
182
- function formatLensRegistryStatus(status) {
183
- const lines = [
184
- `registry: ${status.path}`,
185
- `state: ${status.valid ? "valid" : "INVALID"}`,
186
- `exists: ${status.exists ? "yes" : "no"}`,
187
- `active lenses: ${status.activeLensCount}`,
188
- `ledger entries: ${status.ledgerEntries}`,
189
- `unbound archetypes: ${status.unboundArchetypes}`
190
- ];
191
- if (status.error) lines.push(`error: ${status.error}`);
192
- return lines.join("\n");
193
- }
194
- function registerLensSynthCommand(program) {
195
- program.command("lens-synth").description("Improve appsec detection coverage from curated missed findings").option("--miss-input <path>", "curated miss-input JSON ({ misses, corpus })").option("--registry <path>", "durable overlay path (default: ~/.0/lenses/appsec-archetypes.json)").option("--max-register <n>", "cap promoted champions per input revision", (value) => Number.parseInt(value, 10)).option("-m, --model <id>", "synthesis model override").option("--promote", "persist a validated champion to the durable overlay", false).option("--trials <n>", "repeated validation trials (2\u201310; default 2)", Number).option("--from-bench <ledger>", "harvest the champion's false-negatives from a benchmark ledger into the curated misses (requires --manifest)").option("--manifest <path>", "bench manifest path (ground-truth vuln class + sink); required with --from-bench").option("--watch", "poll the miss-input and process each new content revision", false).option("--poll-interval <ms>", "watch polling interval (minimum 100ms)", "2000").option("--status", "show the active durable overlay and promotion ledger", false).option("--rollback <lens-id>", "retire one previously promoted overlay lens").option("--json", "print machine-readable output", false).action(async (opts) => {
196
- try {
197
- const registry = opts.registry ? resolve(opts.registry) : void 0;
198
- if (opts.status && opts.rollback) throw new Error("--status and --rollback cannot be combined");
199
- if (opts.status) {
200
- const status = inspectLensRegistry(registry);
201
- process.stdout.write(opts.json ? `${JSON.stringify(status, null, 2)}
202
- ` : `${formatLensRegistryStatus(status)}
203
- `);
204
- if (!status.valid) process.exitCode = 3;
205
- return;
206
- }
207
- if (opts.rollback) {
208
- const outcome = retireArchetype(String(opts.rollback), { ...registry ? { registryPath: registry } : {} });
209
- process.stdout.write(
210
- opts.json ? `${JSON.stringify(outcome, null, 2)}
211
- ` : outcome.retired ? `RETIRED ${outcome.id} from ${outcome.registryPath}
212
- ` : `not retired ${outcome.id}: ${outcome.reason ?? "unknown reason"}
213
- `
214
- );
215
- if (!outcome.retired) process.exitCode = 3;
216
- return;
217
- }
218
- if (!opts.missInput) throw new Error("--miss-input is required unless --status or --rollback is used");
219
- if (opts.maxRegister !== void 0 && (!Number.isInteger(opts.maxRegister) || opts.maxRegister < 0)) {
220
- throw new Error("--max-register must be a non-negative integer");
221
- }
222
- if (opts.fromBench && !opts.manifest) throw new Error("--from-bench requires --manifest");
223
- if (opts.fromBench && opts.watch) throw new Error("--from-bench cannot be combined with --watch");
224
- const pollIntervalMs = Number.parseInt(opts.pollInterval ?? "2000", 10);
225
- if (!Number.isInteger(pollIntervalMs) || pollIntervalMs < 100) {
226
- throw new Error("--poll-interval must be an integer of at least 100ms");
227
- }
228
- const request = {
229
- missInput: String(opts.missInput),
230
- ...registry ? { registry } : {},
231
- ...opts.maxRegister !== void 0 ? { maxRegister: opts.maxRegister } : {},
232
- ...opts.model ? { model: String(opts.model) } : {},
233
- promote: Boolean(opts.promote),
234
- trials: trialCount(opts.trials),
235
- ...opts.fromBench ? { fromBench: String(opts.fromBench) } : {},
236
- ...opts.manifest ? { manifest: resolve(String(opts.manifest)) } : {}
237
- };
238
- const printResult = (result) => {
239
- process.stdout.write(
240
- opts.json ? `${JSON.stringify(result, null, 2)}
241
- ` : `${formatLensSynthResult(result, !opts.promote)}
242
- `
243
- );
244
- };
245
- const log = (message) => {
246
- process.stderr.write(`${message}
247
- `);
248
- };
249
- if (!opts.watch) {
250
- printResult(await runLensSynthCommand(request, { log }));
251
- return;
252
- }
253
- const controller = new AbortController();
254
- const stop = () => controller.abort();
255
- process.once("SIGINT", stop);
256
- process.once("SIGTERM", stop);
257
- try {
258
- await watchLensSynthCommand(
259
- { ...request, pollIntervalMs },
260
- {
261
- log,
262
- signal: controller.signal,
263
- onResult: printResult,
264
- onError: (error) => process.stderr.write(`lens-synth watch: ${error.message}
265
- `)
266
- }
267
- );
268
- } finally {
269
- process.off("SIGINT", stop);
270
- process.off("SIGTERM", stop);
271
- }
272
- } catch (error) {
273
- process.stderr.write(`lens-synth: ${error instanceof Error ? error.message : String(error)}
274
- `);
275
- process.exitCode = 3;
276
- }
277
- });
278
- }
279
-
280
- export {
281
- runLensSynthesisInput,
282
- watchLensSynthCommand,
283
- registerLensSynthCommand
284
- };