0sec-cli 0.24.1 → 0.26.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 (246) hide show
  1. package/0.js +67 -62
  2. package/README.md +121 -82
  3. package/chunks/{adapt-loop-L77BWMNE.js → adapt-loop-P4HKONB5.js} +6 -5
  4. package/chunks/{artifact-scraper-BV67RAP5.js → artifact-scraper-IIRJNYKT.js} +4 -3
  5. package/chunks/{assumption-mining-RPVR77A3.js → assumption-mining-YA6VJ2V6.js} +22 -20
  6. package/chunks/{backend-connections-ACIXNYZN.js → backend-connections-64PKYKL7.js} +5 -4
  7. package/chunks/chunk-36J5ZLFE.js +18729 -0
  8. package/chunks/{chunk-ZM6ANQZJ.js → chunk-3MWQNNJU.js} +16180 -34467
  9. package/chunks/{chunk-GV5WXDHY.js → chunk-3VQ5EZKG.js} +11 -9
  10. package/chunks/chunk-5XOYTAOK.js +1546 -0
  11. package/chunks/{chunk-UJE4WOQS.js → chunk-6GV5G6U3.js} +1 -1
  12. package/chunks/{chunk-X2ZMSRTP.js → chunk-6SNOKNCS.js} +333 -3
  13. package/chunks/{chunk-BMDG6T7D.js → chunk-72PU46MS.js} +178 -133
  14. package/chunks/{chunk-KCA35IL3.js → chunk-7PUJI64A.js} +11 -9
  15. package/chunks/chunk-A7G6S5RA.js +90 -0
  16. package/chunks/chunk-ABKUI3QB.js +196 -0
  17. package/chunks/{chunk-5ETI27Q3.js → chunk-AFJ2UMPR.js} +3 -3
  18. package/chunks/{chunk-XA2IBHPB.js → chunk-B7XL6RON.js} +1 -1
  19. package/chunks/{chunk-TVS6WVSK.js → chunk-BM6EYP2D.js} +3 -3
  20. package/chunks/{chunk-7UHAXEOV.js → chunk-D4M5WURF.js} +226 -4
  21. package/chunks/{chunk-K74DRDC5.js → chunk-EHNVP6QB.js} +1 -1
  22. package/chunks/{chunk-I43YYHDU.js → chunk-FBZBJYZS.js} +5 -50
  23. package/chunks/{chunk-GXXX7AGH.js → chunk-GYEYTNHK.js} +144 -14
  24. package/chunks/{chunk-IJ6UPW3H.js → chunk-HS2NQ7K6.js} +393 -58
  25. package/chunks/chunk-HUZ2EC2R.js +196 -0
  26. package/chunks/{chunk-SU4IHQQI.js → chunk-IUUNIJPM.js} +1 -1
  27. package/chunks/chunk-JGDA6EIJ.js +49 -0
  28. package/chunks/{chunk-CJRZSWII.js → chunk-K3PTYN43.js} +3 -3
  29. package/chunks/{chunk-2NBZZFRG.js → chunk-KCABBZHN.js} +8 -10
  30. package/chunks/{chunk-3LPBJMHB.js → chunk-LRD5N2TQ.js} +1 -1
  31. package/chunks/{chunk-SQCBHFWN.js → chunk-LWMEJYCP.js} +2 -2
  32. package/chunks/chunk-MNK373HF.js +57 -0
  33. package/chunks/{chunk-R2XBH476.js → chunk-MOEVVXML.js} +2 -2
  34. package/chunks/{chunk-F2P25DJY.js → chunk-MOGWEHSC.js} +1448 -1050
  35. package/chunks/{chunk-6XMFCVJS.js → chunk-N7YCONYR.js} +1 -1
  36. package/chunks/{chunk-3WUPCZGF.js → chunk-NA3FKCI2.js} +1 -1
  37. package/chunks/{chunk-S2GITRD5.js → chunk-NABVDAAO.js} +2 -2
  38. package/chunks/{chunk-SZDD77KX.js → chunk-NNMOTHKC.js} +6 -10
  39. package/chunks/{chunk-LMP2T4G2.js → chunk-OILVEROI.js} +22 -172
  40. package/chunks/{chunk-YERUDEXT.js → chunk-PAE7ZAV6.js} +2780 -1255
  41. package/chunks/{chunk-NBV4I237.js → chunk-PAMJEXE2.js} +1 -1
  42. package/chunks/{chunk-PJU24AKR.js → chunk-R7VWEY45.js} +337 -257
  43. package/chunks/{chunk-QNRYOJEB.js → chunk-RZZ6VPRY.js} +1 -1
  44. package/chunks/{chunk-WUPN3D37.js → chunk-S4DFH2FJ.js} +26 -1
  45. package/chunks/{chunk-5WAHHZBF.js → chunk-SIR7XW2S.js} +61910 -30777
  46. package/chunks/{chunk-BD7WULFS.js → chunk-SSPP64FF.js} +3 -2
  47. package/chunks/{chunk-BOBIAHKA.js → chunk-STPHTPSD.js} +3 -333
  48. package/chunks/{chunk-Q7JKIKKF.js → chunk-UGCTPKJG.js} +89 -17
  49. package/chunks/{chunk-5PFRE522.js → chunk-ULRLUXSS.js} +1 -1
  50. package/chunks/{chunk-GZA7RGK7.js → chunk-UQS7XCBV.js} +2085 -1093
  51. package/chunks/{chunk-X2IPO5JO.js → chunk-V2KJQVYE.js} +2676 -2959
  52. package/chunks/{chunk-CGBDEST2.js → chunk-VJBEB2K6.js} +1 -1
  53. package/chunks/{chunk-ILRMLA6J.js → chunk-VWE36MUN.js} +1 -1
  54. package/chunks/{chunk-RURJYCWY.js → chunk-WNWDQ2TO.js} +1 -1
  55. package/chunks/{chunk-GTED3FSZ.js → chunk-WPJMA5AK.js} +4 -99
  56. package/chunks/{chunk-5NFIY2SJ.js → chunk-XJ2TBEV7.js} +3 -3
  57. package/chunks/{chunk-PVJUPIQG.js → chunk-XOVYV7TT.js} +6 -6
  58. package/chunks/{chunk-IXT64DV5.js → chunk-XPDJE537.js} +97 -1
  59. package/chunks/{chunk-YKWARO3T.js → chunk-YGYJ2FTH.js} +95 -21
  60. package/chunks/{chunk-JWSOUKFF.js → chunk-YJGPPPUB.js} +66 -21
  61. package/chunks/chunk-YP2DHYNI.js +650 -0
  62. package/chunks/{chunk-RVJVM5L4.js → chunk-Z2VLJEQJ.js} +5 -5
  63. package/chunks/chunk-ZPVSDB63.js +3839 -0
  64. package/chunks/{codex-models-6XVNFRXZ.js → codex-models-CI22KIHY.js} +9 -8
  65. package/chunks/{commands-FRPOFIO4.js → commands-C2WRSCNB.js} +909 -610
  66. package/chunks/dashboard-XO2X2SPD.js +75 -0
  67. package/chunks/{db-BXJNWUYJ.js → db-FU3OIGQK.js} +5 -4
  68. package/chunks/{deep-review-GSJEBLCG.js → deep-review-5AL6QYTK.js} +37 -38
  69. package/chunks/{disclose-OU6Z6GVT.js → disclose-YPV5KIUU.js} +6 -5
  70. package/chunks/{dist-M2X367VW.js → dist-JAZWL3SC.js} +3 -2
  71. package/chunks/{dist-TQMHMSBZ.js → dist-ONIRKDH6.js} +376 -333
  72. package/chunks/{dist-RKLQIXDT.js → dist-QLMPTFT7.js} +4 -3
  73. package/chunks/{dist-7KSYDDSG.js → dist-QXJKD743.js} +5 -2
  74. package/chunks/{dist-LNXGATR2.js → dist-WNAOCQGA.js} +5 -4
  75. package/chunks/eval-runner-D3RUCU3R.js +38 -0
  76. package/chunks/{exploit-agent-Y2P4GFIY.js → exploit-agent-4E4HXKUA.js} +1 -1
  77. package/chunks/{exploit-autoclimb-YRZ3TMS2.js → exploit-autoclimb-5GRXI6VQ.js} +1 -1
  78. package/chunks/{exploit-climb-4LEY4SDW.js → exploit-climb-AHQEJ2I2.js} +4 -3
  79. package/chunks/{fix-RQSIG75B.js → fix-CHD7LXDS.js} +9 -8
  80. package/chunks/{harness-3NVC3DDY.js → harness-E63KDHPG.js} +5 -4
  81. package/chunks/{http-conformance-U5F6GKYG.js → http-conformance-AXMUOE6C.js} +3 -2
  82. package/chunks/hunt-scan-ME2Z4CTC.js +43 -0
  83. package/chunks/{kernel-primitive-T47V3RD3.js → kernel-primitive-S566GXWP.js} +4 -3
  84. package/chunks/{kernel-vm-runner-AEL5E3SV.js → kernel-vm-runner-KREBY4DC.js} +4 -3
  85. package/chunks/{local-engine-ZCW4YC6E.js → local-engine-ZRTZVSSX.js} +7 -6
  86. package/chunks/managed-operation-ZMLLRCCQ.js +59 -0
  87. package/chunks/{memsafety-scan-L2Z7E7TE.js → memsafety-scan-Q2MBZEGJ.js} +1 -2
  88. package/chunks/{native-loop-26X2CHBV.js → native-loop-UV3Z4Z2F.js} +31 -16
  89. package/chunks/operator-services-JOCREEBA.js +79 -0
  90. package/chunks/orchestrate-ZF6ZTSIQ.js +62 -0
  91. package/chunks/{prepare-C3KGMBXT.js → prepare-PLDVGLDX.js} +7 -6
  92. package/chunks/{provider-model-discovery-QGUGL3XW.js → provider-model-discovery-3X6DON3Y.js} +7 -2
  93. package/chunks/{remote-workflow-runtime-DB52SINR.js → remote-workflow-runtime-GOI4TYP5.js} +4 -3
  94. package/chunks/routing-WCQLO5SP.js +61 -0
  95. package/chunks/{runtime-AUBLQUOH.js → runtime-6ZIXFTW5.js} +4 -3
  96. package/chunks/{runtime-U66JNSAY.js → runtime-TVH5ORUK.js} +13 -8
  97. package/chunks/{scan-stream-34F3LTPV.js → scan-stream-HJVTWZ44.js} +6 -4
  98. package/chunks/{scope-HSTG63TQ.js → scope-RCYXVGJR.js} +4 -3
  99. package/chunks/service-plugins-TN6KDX4L.js +63 -0
  100. package/chunks/{session-store-MKAAP3WL.js → session-store-6QR3CVUA.js} +8 -5
  101. package/chunks/{variant-candidates-LG767HWH.js → variant-candidates-SGLKPPHI.js} +9 -8
  102. package/chunks/{web-recon-prepass-NJP6J3E4.js → web-recon-prepass-GO7CTMVQ.js} +7 -6
  103. package/chunks/{workflow-runtime-AR627I26.js → workflow-runtime-CQTDASFA.js} +50 -49
  104. package/dashboard/assets/{abnfDiagram-VCTEODGH-Cq149Jpk.js → abnfDiagram-VCTEODGH-DDZsU70-.js} +1 -1
  105. package/dashboard/assets/{arc-CpP-3TRW.js → arc-iDXNTSL6.js} +1 -1
  106. package/dashboard/assets/architecture-7GRP2DOG-DJcY9RFg.js +1 -0
  107. package/dashboard/assets/architectureDiagram-5GKGNRK7-d0ZuOniQ.js +36 -0
  108. package/dashboard/assets/{blockDiagram-I7D4REHJ-CZYkRRDi.js → blockDiagram-I7D4REHJ-B-EWfMy1.js} +2 -2
  109. package/dashboard/assets/{c4Diagram-7LVT6UL2-CV7Iu3_Z.js → c4Diagram-7LVT6UL2-KcZRuXZC.js} +1 -1
  110. package/dashboard/assets/channel-CeWMIm0w.js +1 -0
  111. package/dashboard/assets/{chunk-4HAMMTFA-PKCyW4m-.js → chunk-4HAMMTFA-DXWulBlo.js} +1 -1
  112. package/dashboard/assets/{chunk-75Z2AOVW-C5MlFTc_.js → chunk-75Z2AOVW-RiLZItrz.js} +1 -1
  113. package/dashboard/assets/chunk-DU6HZSFF-MBcaIyTX.js +127 -0
  114. package/dashboard/assets/{chunk-F27PBJKO-DTAok0qM.js → chunk-F27PBJKO-kLWCBX_W.js} +1 -1
  115. package/dashboard/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-COOliuUh.js} +14 -14
  116. package/dashboard/assets/{chunk-GMAD6QVW-CPsr2F33.js → chunk-GMAD6QVW-BeQeSjpW.js} +7 -7
  117. package/dashboard/assets/{chunk-GVQU2GXP-C2AXGf9A.js → chunk-GVQU2GXP-CjCMlOIB.js} +1 -1
  118. package/dashboard/assets/{chunk-IMKFNOWR-DMG6yD_O.js → chunk-IMKFNOWR-BwNst53D.js} +1 -1
  119. package/dashboard/assets/{chunk-L3NEJ4N5-BSvwdbXx.js → chunk-L3NEJ4N5-CHXWQrkL.js} +1 -1
  120. package/dashboard/assets/{chunk-OSK3NFVY-CfB8V7FU.js → chunk-OSK3NFVY-B2vd19Ed.js} +1 -1
  121. package/dashboard/assets/{chunk-P2QGCYS3-CvmZvq6n.js → chunk-P2QGCYS3-Dk7Fyh6n.js} +1 -1
  122. package/dashboard/assets/{chunk-POPQ4Y6H-D_TvwDxL.js → chunk-POPQ4Y6H-CPAgOvYe.js} +1 -1
  123. package/dashboard/assets/{chunk-PWAF6VOD-Da5GnuOY.js → chunk-PWAF6VOD-BotyfMha.js} +1 -1
  124. package/dashboard/assets/{chunk-SHT3W25Y-CcsMJpR-.js → chunk-SHT3W25Y-Buz5gLRP.js} +1 -1
  125. package/dashboard/assets/{chunk-SVP7TREG-COojjieJ.js → chunk-SVP7TREG-_rpYEZcs.js} +1 -1
  126. package/dashboard/assets/{chunk-TICWLB2K-nBAmJwx6.js → chunk-TICWLB2K-DOJxPoec.js} +2 -2
  127. package/dashboard/assets/{chunk-XXDRQBXY-r5HyhWDv.js → chunk-XXDRQBXY-EXxKJbAs.js} +1 -1
  128. package/dashboard/assets/classDiagram-ZZMXUADV-DV_h1NoS.js +1 -0
  129. package/dashboard/assets/classDiagram-v2-VYDZK3BY-DV_h1NoS.js +1 -0
  130. package/dashboard/assets/common-VLJRx-Jq.js +5 -0
  131. package/dashboard/assets/cose-bilkent-JH36ORCC-B1SVC57o.js +1 -0
  132. package/dashboard/assets/cynefin-OW5HDTMX-BzhRorj4.js +1 -0
  133. package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-xodkuQtW.js → cynefinDiagram-5FMLGOSQ-JXzRmldX.js} +1 -1
  134. package/dashboard/assets/cytoscape.esm-BbBREfsg.js +321 -0
  135. package/dashboard/assets/dagre-D7JM2Yhv.js +1 -0
  136. package/dashboard/assets/dagre-GXQ25YYZ-1LZ-X0-Z.js +4 -0
  137. package/dashboard/assets/{diagram-S7CK7UJ4-DNoTMlCO.js → diagram-S7CK7UJ4-C_-J_LQ4.js} +2 -2
  138. package/dashboard/assets/{diagram-UQ7AKVKN-COccuyew.js → diagram-UQ7AKVKN-CnxL1k8g.js} +1 -1
  139. package/dashboard/assets/{diagram-VSXAHHWV-g6D1tWRb.js → diagram-VSXAHHWV-WzSb3aby.js} +1 -1
  140. package/dashboard/assets/{diagram-VX7I27RA-DhO4eVIC.js → diagram-VX7I27RA-DKhrMInE.js} +1 -1
  141. package/dashboard/assets/{diagram-Z3DM3KII-DeOQFexd.js → diagram-Z3DM3KII-CDhI2WGP.js} +1 -1
  142. package/dashboard/assets/{dist-BQYeOQg3.js → dist-B0bfBMeP.js} +1 -1
  143. package/dashboard/assets/{ebnfDiagram-PWID7BFC-MtkX2feM.js → ebnfDiagram-PWID7BFC-iL5NQ1PE.js} +1 -1
  144. package/dashboard/assets/{erDiagram-RLTQ6QDP-DIWSsoYZ.js → erDiagram-RLTQ6QDP-RK2Voa5O.js} +1 -1
  145. package/dashboard/assets/eventmodeling-NTZA5JFV-WgE7OJBb.js +1 -0
  146. package/dashboard/assets/flowDiagram-HODETNUW-B9YcQ0Aq.js +1 -0
  147. package/dashboard/assets/{ganttDiagram-EL5Y4UJY-DKggkJe0.js → ganttDiagram-EL5Y4UJY-D8CJXHRF.js} +1 -1
  148. package/dashboard/assets/gitGraph-4MIJSDKK-BuZ9Lg04.js +1 -0
  149. package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-r_iR8Qzo.js → gitGraphDiagram-WWUBYQGX-LEJMh54j.js} +1 -1
  150. package/dashboard/assets/info-A6RAGUB7-BL5k3pev.js +1 -0
  151. package/dashboard/assets/{infoDiagram-27XIBGKW-ClQk7UyQ.js → infoDiagram-27XIBGKW-LJvntUnZ.js} +1 -1
  152. package/dashboard/assets/{ishikawaDiagram-5VMMS53U-tR7Vziog.js → ishikawaDiagram-5VMMS53U-BYTYgKCG.js} +2 -2
  153. package/dashboard/assets/{journeyDiagram-3NMN7TZE-Cpb9IqKL.js → journeyDiagram-3NMN7TZE-G25qgQgO.js} +1 -1
  154. package/dashboard/assets/{kanban-definition-UXKFOSKX-BzUuKbA9.js → kanban-definition-UXKFOSKX-Bk3uLl1i.js} +1 -1
  155. package/dashboard/assets/{katex-BdBmVSus.js → katex-nLxf_RlZ.js} +2 -2
  156. package/dashboard/assets/{line-BHY_tSHu.js → line-i4qHBaWO.js} +1 -1
  157. package/dashboard/assets/linear-DmrqRsKG.js +1 -0
  158. package/dashboard/assets/mermaid-parser.core-BxbKr4QF.js +7 -0
  159. package/dashboard/assets/{mermaid.core-D_QsUPU8.js → mermaid.core-Cltee6FS.js} +9 -9
  160. package/dashboard/assets/{mindmap-definition-YA3MSWOX-CtfLTPPJ.js → mindmap-definition-YA3MSWOX-DkzO2JgS.js} +1 -1
  161. package/dashboard/assets/operations-B4_timQX.css +1 -0
  162. package/dashboard/assets/operations-DwppJviL.js +199 -0
  163. package/dashboard/assets/packet-AYTQ26CC-uZQUKnrE.js +1 -0
  164. package/dashboard/assets/{pegDiagram-XKGWAZYB-C1Dclbzj.js → pegDiagram-XKGWAZYB-CrOEi00T.js} +1 -1
  165. package/dashboard/assets/pie-WAS4IAKB-Dn9_tpQT.js +1 -0
  166. package/dashboard/assets/{pieDiagram-E7YTZNPT-Cd7XwYo5.js → pieDiagram-E7YTZNPT-D-niUkzc.js} +1 -1
  167. package/dashboard/assets/{quadrantDiagram-AXDQQJYC-CaS-GQ4X.js → quadrantDiagram-AXDQQJYC-CJOTiG5V.js} +1 -1
  168. package/dashboard/assets/radar-RG4KPBEZ-DIIVz4e8.js +1 -0
  169. package/dashboard/assets/railroad-74A4TZTK-1kiqDEID.js +1 -0
  170. package/dashboard/assets/railroad-abnf-HS5TGJTU-DK6rQPZR.js +1 -0
  171. package/dashboard/assets/railroad-ebnf-LZEXJU2U-C6cOgYW4.js +1 -0
  172. package/dashboard/assets/railroad-peg-WCYAUIDC-CQ3ptKef.js +1 -0
  173. package/dashboard/assets/{railroadDiagram-O6MQD6OU-BeesTrqn.js → railroadDiagram-O6MQD6OU-nEfkpa-m.js} +1 -1
  174. package/dashboard/assets/{requirementDiagram-BXWQKSXE-IjyK0DhW.js → requirementDiagram-BXWQKSXE-CdFMY8tG.js} +1 -1
  175. package/dashboard/assets/{sankeyDiagram-P5KCCOFB-DmIluQqo.js → sankeyDiagram-P5KCCOFB-C0KxrFYv.js} +1 -1
  176. package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-CUp8ZjTc.js → sequenceDiagram-WJ2MYXX4-DeZ5ATiu.js} +2 -2
  177. package/dashboard/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  178. package/dashboard/assets/src-Cg-chcoE.js +1 -0
  179. package/dashboard/assets/{stateDiagram-D77RDMKH-Dy9TQb8P.js → stateDiagram-D77RDMKH-B9MwWL5B.js} +1 -1
  180. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-SucFndhx.js +1 -0
  181. package/dashboard/assets/swimlanes-42K2YHIH-DB--fwQE.js +1 -0
  182. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BzH-rIaK.js +8 -0
  183. package/dashboard/assets/{timeline-definition-24CTP7MA-BGdXW-iY.js → timeline-definition-24CTP7MA-DLkkTbWb.js} +1 -1
  184. package/dashboard/assets/treeView-Q6P3EWNA-XkZ9rl9H.js +1 -0
  185. package/dashboard/assets/treemap-WGGIJYW6-JCtVKxCE.js +1 -0
  186. package/dashboard/assets/{vennDiagram-4TSXK5OY-DzKWHJsl.js → vennDiagram-4TSXK5OY-DEb-x29Z.js} +1 -1
  187. package/dashboard/assets/wardley-WFR3VGLG-DhI7ROY3.js +1 -0
  188. package/dashboard/assets/{wardleyDiagram-VM6X3IG4-DGsjYmNJ.js → wardleyDiagram-VM6X3IG4-KNckudc5.js} +1 -1
  189. package/dashboard/assets/{xychartDiagram-S5SC5T6Z-C7_T_tWt.js → xychartDiagram-S5SC5T6Z-D4c0ynCk.js} +1 -1
  190. package/dashboard/index.html +13 -2
  191. package/package.json +2 -5
  192. package/worker-assets/demo-target/README.md +7 -3
  193. package/chunks/chunk-2XGBEH53.js +0 -4304
  194. package/chunks/chunk-4ROZFLSR.js +0 -279
  195. package/chunks/chunk-56UTQKXO.js +0 -56
  196. package/chunks/chunk-BPU6M42R.js +0 -77
  197. package/chunks/chunk-H5QURBBK.js +0 -1123
  198. package/chunks/chunk-IIBNQTOK.js +0 -1532
  199. package/chunks/chunk-NJLKFC66.js +0 -4790
  200. package/chunks/chunk-OOMBOLAF.js +0 -295
  201. package/chunks/chunk-VIT5ALXF.js +0 -4054
  202. package/chunks/chunk-VU7V2SDW.js +0 -284
  203. package/chunks/chunk-W624J7NF.js +0 -117
  204. package/chunks/chunk-YSQWZ67M.js +0 -6027
  205. package/chunks/dashboard-5HDSNBAU.js +0 -76
  206. package/chunks/eval-runner-A2DIGVP7.js +0 -31
  207. package/chunks/hunt-scan-W246VWJC.js +0 -40
  208. package/chunks/managed-operation-6R2QPPW5.js +0 -60
  209. package/chunks/orchestrate-OBS37FWQ.js +0 -63
  210. package/chunks/run-MU3MFL2Z.js +0 -28242
  211. package/chunks/service-plugins-5B23PWXC.js +0 -64
  212. package/dashboard/assets/architecture-7GRP2DOG-z5EHYkyH.js +0 -1
  213. package/dashboard/assets/architectureDiagram-5GKGNRK7-ewtXpjR_.js +0 -36
  214. package/dashboard/assets/channel-CuYjfiC5.js +0 -1
  215. package/dashboard/assets/chunk-DU6HZSFF-3M37ulcO.js +0 -127
  216. package/dashboard/assets/classDiagram-ZZMXUADV-DCuOrWUV.js +0 -1
  217. package/dashboard/assets/classDiagram-v2-VYDZK3BY-DCuOrWUV.js +0 -1
  218. package/dashboard/assets/common-C6snVPsk.js +0 -5
  219. package/dashboard/assets/cose-bilkent-JH36ORCC-BLGcaZHk.js +0 -1
  220. package/dashboard/assets/cynefin-OW5HDTMX-DbZMK00I.js +0 -1
  221. package/dashboard/assets/cytoscape.esm-CGd-uY3x.js +0 -321
  222. package/dashboard/assets/dagre-GXQ25YYZ-CRk9qfSG.js +0 -4
  223. package/dashboard/assets/dagre-PrKaheQc.js +0 -1
  224. package/dashboard/assets/eventmodeling-NTZA5JFV-D_3ez4Gv.js +0 -1
  225. package/dashboard/assets/flowDiagram-HODETNUW-D2boyYEd.js +0 -1
  226. package/dashboard/assets/gitGraph-4MIJSDKK-DFOQYwXc.js +0 -1
  227. package/dashboard/assets/info-A6RAGUB7-DeednLoB.js +0 -1
  228. package/dashboard/assets/linear-naZZ1pHk.js +0 -1
  229. package/dashboard/assets/mermaid-parser.core-CPvd4cEx.js +0 -7
  230. package/dashboard/assets/operations-BwCzhVnT.js +0 -130
  231. package/dashboard/assets/operations-QjKT0Hwi.css +0 -1
  232. package/dashboard/assets/packet-AYTQ26CC-DDQbkT9I.js +0 -1
  233. package/dashboard/assets/pie-WAS4IAKB-LpU4ULAs.js +0 -1
  234. package/dashboard/assets/radar-RG4KPBEZ-CcxW3NJm.js +0 -1
  235. package/dashboard/assets/railroad-74A4TZTK-9P5Rl8fP.js +0 -1
  236. package/dashboard/assets/railroad-abnf-HS5TGJTU-CSfpwjna.js +0 -1
  237. package/dashboard/assets/railroad-ebnf-LZEXJU2U-D6R5qzr-.js +0 -1
  238. package/dashboard/assets/railroad-peg-WCYAUIDC-DKEX7ITG.js +0 -1
  239. package/dashboard/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -1
  240. package/dashboard/assets/src-r61wDjcA.js +0 -1
  241. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-CQb0ZtPr.js +0 -1
  242. package/dashboard/assets/swimlanes-42K2YHIH-CZuDV7V5.js +0 -1
  243. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BxgWMq8X.js +0 -8
  244. package/dashboard/assets/treeView-Q6P3EWNA-DlRrayjM.js +0 -1
  245. package/dashboard/assets/treemap-WGGIJYW6-C6UqLKfI.js +0 -1
  246. package/dashboard/assets/wardley-WFR3VGLG-thmyHKb0.js +0 -1
@@ -3,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  severityRank
6
- } from "./chunk-GXXX7AGH.js";
6
+ } from "./chunk-GYEYTNHK.js";
7
7
 
8
8
  // packages/core/dist/triage/kernel-primitive.js
9
9
  function maxSeverity(a, b) {
@@ -1,9 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
+ import {
5
+ scanExecutionSignal
6
+ } from "./chunk-SSPP64FF.js";
4
7
  import {
5
8
  homeStateDir
6
- } from "./chunk-GXXX7AGH.js";
9
+ } from "./chunk-GYEYTNHK.js";
7
10
 
8
11
  // packages/core/dist/scope/waf-detect.js
9
12
  function readHeader(headers, name) {
@@ -2584,9 +2587,332 @@ function warnRejectedSources(sources, results, context) {
2584
2587
  }
2585
2588
  }
2586
2589
 
2590
+ // packages/core/dist/scope/rate-limit.js
2591
+ var TokenBucket = class {
2592
+ state;
2593
+ nowFn;
2594
+ sleepFn;
2595
+ jitter;
2596
+ constructor(rps, capacity = rps, nowFn = () => Date.now(), sleepFn = defaultSleep2, jitter) {
2597
+ if (!Number.isFinite(rps) || rps <= 0) {
2598
+ throw new Error(`TokenBucket: rps must be a positive finite number, got ${rps}`);
2599
+ }
2600
+ if (!Number.isFinite(capacity) || capacity <= 0) {
2601
+ throw new Error(`TokenBucket: capacity must be a positive finite number, got ${capacity}`);
2602
+ }
2603
+ this.nowFn = nowFn;
2604
+ this.sleepFn = sleepFn;
2605
+ this.jitter = jitter && jitter.baseMs > 0 ? jitter : void 0;
2606
+ this.state = {
2607
+ tokens: capacity,
2608
+ refillRatePerMs: rps / 1e3,
2609
+ capacity,
2610
+ lastRefill: nowFn(),
2611
+ retryUntil: 0
2612
+ };
2613
+ }
2614
+ refill() {
2615
+ const now = this.nowFn();
2616
+ const elapsed = now - this.state.lastRefill;
2617
+ if (elapsed > 0) {
2618
+ this.state.tokens = Math.min(this.state.capacity, this.state.tokens + elapsed * this.state.refillRatePerMs);
2619
+ this.state.lastRefill = now;
2620
+ }
2621
+ }
2622
+ /**
2623
+ * Non-blocking. Returns true and consumes `n` tokens if available;
2624
+ * returns false and consumes nothing otherwise. Blocked during 429
2625
+ * cool-off (returns false until park expires).
2626
+ */
2627
+ tryConsume(n = 1) {
2628
+ if (this.nowFn() < this.state.retryUntil)
2629
+ return false;
2630
+ this.refill();
2631
+ if (this.state.tokens >= n) {
2632
+ this.state.tokens -= n;
2633
+ return true;
2634
+ }
2635
+ return false;
2636
+ }
2637
+ /**
2638
+ * Block until `n` tokens are available, then consume them. Honours
2639
+ * the 429 park deadline first, then refill-and-spin with sleeps
2640
+ * sized to the exact next-token-available time.
2641
+ */
2642
+ async acquire(n = 1, signal = scanExecutionSignal()) {
2643
+ signal?.throwIfAborted();
2644
+ if (n > this.state.capacity) {
2645
+ n = this.state.capacity;
2646
+ }
2647
+ while (this.nowFn() < this.state.retryUntil) {
2648
+ const wait = this.state.retryUntil - this.nowFn();
2649
+ await this.sleepFn(Math.max(1, Math.min(wait, 1e3)), signal);
2650
+ }
2651
+ while (true) {
2652
+ signal?.throwIfAborted();
2653
+ this.refill();
2654
+ if (this.state.tokens >= n) {
2655
+ this.state.tokens -= n;
2656
+ await this.pace(signal);
2657
+ return;
2658
+ }
2659
+ const tokensNeeded = n - this.state.tokens;
2660
+ const waitMs = Math.max(1, Math.ceil(tokensNeeded / this.state.refillRatePerMs));
2661
+ await this.sleepFn(waitMs, signal);
2662
+ }
2663
+ }
2664
+ /**
2665
+ * Sleep the configured full-jitter delay. No-op (and no `await`-visible
2666
+ * sleep) when no jitter is configured, so the default path is unchanged.
2667
+ *
2668
+ * Reuses `jitterFor` from `waf-detect.ts` — attempt 0 with an injected rng
2669
+ * yields full jitter in `[0, baseMs]` — rather than growing a second
2670
+ * jitter implementation.
2671
+ */
2672
+ async pace(signal = scanExecutionSignal()) {
2673
+ signal?.throwIfAborted();
2674
+ if (!this.jitter)
2675
+ return;
2676
+ const ms = jitterFor(0, this.jitter.baseMs, this.jitter.rng ?? Math.random);
2677
+ if (ms > 0)
2678
+ await this.sleepFn(ms, signal);
2679
+ }
2680
+ /**
2681
+ * Park the bucket until `deadline` (ms since epoch). Subsequent
2682
+ * `acquire`/`tryConsume` calls block until the deadline passes.
2683
+ * Idempotent in the "later wins" sense: a longer park overrides a
2684
+ * shorter one, but a shorter park does NOT shorten an existing one.
2685
+ */
2686
+ markRetryUntil(deadline) {
2687
+ if (deadline > this.state.retryUntil) {
2688
+ this.state.retryUntil = deadline;
2689
+ }
2690
+ }
2691
+ /** Test introspection. */
2692
+ _peek() {
2693
+ this.refill();
2694
+ return {
2695
+ tokens: this.state.tokens,
2696
+ retryUntil: this.state.retryUntil,
2697
+ capacity: this.state.capacity
2698
+ };
2699
+ }
2700
+ };
2701
+ var RateLimiter = class _RateLimiter {
2702
+ buckets = /* @__PURE__ */ new Map();
2703
+ defaultCfg;
2704
+ perHost;
2705
+ jitter;
2706
+ nowFn;
2707
+ sleepFn;
2708
+ /**
2709
+ * Conservative cool-off floor when a 429 lands without a useful
2710
+ * `Retry-After`, or with a tiny one. 60s matches the PoC-runtime
2711
+ * precedent in #206 — a target that just told us to slow down has
2712
+ * earned more than a one-second pause.
2713
+ */
2714
+ static RETRY_AFTER_FLOOR_MS = 6e4;
2715
+ /**
2716
+ * Optional observer invoked once whenever a fetch is actually throttled:
2717
+ * either an `acquire` that had to block because the bucket was dry, or a
2718
+ * 429 response parking the host. Used by the http_audit enforcement
2719
+ * tracker to populate `rate_limited_count`. No-op when unset, so the
2720
+ * normal scan path is unaffected.
2721
+ */
2722
+ onThrottle;
2723
+ constructor(config, opts = {}) {
2724
+ this.defaultCfg = config.default;
2725
+ this.jitter = config.jitter;
2726
+ this.perHost = {};
2727
+ if (config.perHost) {
2728
+ for (const [host, cfg] of Object.entries(config.perHost)) {
2729
+ this.perHost[host.toLowerCase()] = cfg;
2730
+ }
2731
+ }
2732
+ this.nowFn = opts.nowFn ?? (() => Date.now());
2733
+ this.sleepFn = opts.sleepFn ?? defaultSleep2;
2734
+ this.onThrottle = opts.onThrottle;
2735
+ }
2736
+ /**
2737
+ * Normalize a URL or host string to a bucket key. Lowercased,
2738
+ * port-stripped, IPv6 brackets retained on the literal but dropped
2739
+ * from the port suffix (e.g. `[::1]:443` → `[::1]`).
2740
+ */
2741
+ hostKey(urlOrHost) {
2742
+ let host;
2743
+ try {
2744
+ host = new URL(urlOrHost).hostname;
2745
+ } catch {
2746
+ const trimmed = urlOrHost.trim();
2747
+ if (!trimmed)
2748
+ return null;
2749
+ if (trimmed.startsWith("[")) {
2750
+ const close = trimmed.indexOf("]");
2751
+ if (close < 0)
2752
+ return null;
2753
+ host = trimmed.slice(0, close + 1);
2754
+ } else {
2755
+ host = trimmed.split(":")[0];
2756
+ }
2757
+ }
2758
+ return host.toLowerCase();
2759
+ }
2760
+ getBucket(host) {
2761
+ let bucket = this.buckets.get(host);
2762
+ if (!bucket) {
2763
+ const cfg = this.perHost[host] ?? this.defaultCfg;
2764
+ bucket = new TokenBucket(cfg.rps, cfg.burst ?? cfg.rps, this.nowFn, this.sleepFn, this.jitter);
2765
+ this.buckets.set(host, bucket);
2766
+ }
2767
+ return bucket;
2768
+ }
2769
+ /**
2770
+ * Block until a token is available for `urlOrHost`'s host, then
2771
+ * consume it. Unparseable input is treated as a no-op (returns
2772
+ * immediately) — callers should not rely on rate-limiting unknowable
2773
+ * hosts. The fetch sites that wire this up always pass full URLs.
2774
+ */
2775
+ async acquire(urlOrHost, n = 1, signal = scanExecutionSignal()) {
2776
+ signal?.throwIfAborted();
2777
+ const host = this.hostKey(urlOrHost);
2778
+ if (!host)
2779
+ return;
2780
+ const bucket = this.getBucket(host);
2781
+ if (bucket.tryConsume(n)) {
2782
+ await bucket.pace(signal);
2783
+ return;
2784
+ }
2785
+ this.onThrottle?.();
2786
+ await bucket.acquire(n, signal);
2787
+ }
2788
+ /**
2789
+ * Non-blocking variant. Returns true and consumes if available,
2790
+ * false otherwise. Used by callers that want to fall through to a
2791
+ * fast-path / degrade rather than wait.
2792
+ */
2793
+ tryAcquire(urlOrHost, n = 1) {
2794
+ const host = this.hostKey(urlOrHost);
2795
+ if (!host)
2796
+ return true;
2797
+ return this.getBucket(host).tryConsume(n);
2798
+ }
2799
+ /**
2800
+ * Inspect a fetch response and, if it's a 429, park the host's
2801
+ * bucket until `Retry-After` (or 60s, whichever is longer). The
2802
+ * parsed value supports both delta-seconds (RFC 7231 §7.1.3) and
2803
+ * HTTP-date forms; anything else falls back to the floor.
2804
+ *
2805
+ * No-ops on non-429 responses, or on hosts with no bucket yet
2806
+ * (which can't happen if the caller acquired before fetching, but
2807
+ * we don't depend on that).
2808
+ */
2809
+ noteResponse(urlOrHost, res) {
2810
+ if (res.status !== 429)
2811
+ return;
2812
+ const host = this.hostKey(urlOrHost);
2813
+ if (!host)
2814
+ return;
2815
+ this.onThrottle?.();
2816
+ const bucket = this.getBucket(host);
2817
+ const retryAfter = readHeader2(res.headers, "retry-after");
2818
+ const delayMs = parseRetryAfter(retryAfter, this.nowFn());
2819
+ const deadline = this.nowFn() + Math.max(delayMs, _RateLimiter.RETRY_AFTER_FLOOR_MS);
2820
+ bucket.markRetryUntil(deadline);
2821
+ }
2822
+ /** Test-only. Reset all buckets. */
2823
+ _reset() {
2824
+ this.buckets.clear();
2825
+ }
2826
+ };
2827
+ function defaultSleep2(ms, signal) {
2828
+ signal?.throwIfAborted();
2829
+ const { promise, resolve, reject } = Promise.withResolvers();
2830
+ const timer = setTimeout(() => {
2831
+ signal?.removeEventListener("abort", abort);
2832
+ resolve();
2833
+ }, ms);
2834
+ const abort = () => {
2835
+ clearTimeout(timer);
2836
+ reject(signal?.reason ?? new Error("Rate-limit wait cancelled."));
2837
+ };
2838
+ signal?.addEventListener("abort", abort, { once: true });
2839
+ return promise;
2840
+ }
2841
+ function readHeader2(headers, name) {
2842
+ if (typeof headers.get === "function") {
2843
+ return headers.get(name);
2844
+ }
2845
+ return null;
2846
+ }
2847
+ function parseRetryAfter(value, now) {
2848
+ if (!value)
2849
+ return 0;
2850
+ const trimmed = value.trim();
2851
+ if (!trimmed)
2852
+ return 0;
2853
+ if (/^\d+$/.test(trimmed)) {
2854
+ const seconds = parseInt(trimmed, 10);
2855
+ return Number.isFinite(seconds) && seconds > 0 ? seconds * 1e3 : 0;
2856
+ }
2857
+ const date = Date.parse(trimmed);
2858
+ if (Number.isFinite(date)) {
2859
+ return Math.max(0, date - now);
2860
+ }
2861
+ return 0;
2862
+ }
2863
+ function parseRateLimitFlag(spec, fallbackRps = 5) {
2864
+ const trimmed = spec.trim();
2865
+ if (!trimmed) {
2866
+ return { default: { rps: fallbackRps } };
2867
+ }
2868
+ const parts = trimmed.split(",").map((p) => p.trim()).filter(Boolean);
2869
+ let defaultCfg = null;
2870
+ const perHost = {};
2871
+ for (const part of parts) {
2872
+ const eq = part.indexOf("=");
2873
+ if (eq < 0) {
2874
+ const cfg = parseRpsBurst(part);
2875
+ defaultCfg = cfg;
2876
+ } else {
2877
+ const host = part.slice(0, eq).trim().toLowerCase();
2878
+ const cfg = parseRpsBurst(part.slice(eq + 1));
2879
+ if (!host) {
2880
+ throw new Error(`--rate-limit: empty host in "${part}"`);
2881
+ }
2882
+ perHost[host] = cfg;
2883
+ }
2884
+ }
2885
+ return {
2886
+ default: defaultCfg ?? { rps: fallbackRps },
2887
+ perHost: Object.keys(perHost).length > 0 ? perHost : void 0
2888
+ };
2889
+ }
2890
+ function parseRpsBurst(s) {
2891
+ const trimmed = s.trim();
2892
+ if (!trimmed) {
2893
+ throw new Error(`--rate-limit: empty rps value`);
2894
+ }
2895
+ const colon = trimmed.indexOf(":");
2896
+ if (colon < 0) {
2897
+ const rps2 = Number(trimmed);
2898
+ if (!Number.isFinite(rps2) || rps2 <= 0) {
2899
+ throw new Error(`--rate-limit: invalid rps "${trimmed}"`);
2900
+ }
2901
+ return { rps: rps2 };
2902
+ }
2903
+ const rps = Number(trimmed.slice(0, colon));
2904
+ const burst = Number(trimmed.slice(colon + 1));
2905
+ if (!Number.isFinite(rps) || rps <= 0) {
2906
+ throw new Error(`--rate-limit: invalid rps "${trimmed.slice(0, colon)}"`);
2907
+ }
2908
+ if (!Number.isFinite(burst) || burst <= 0) {
2909
+ throw new Error(`--rate-limit: invalid burst "${trimmed.slice(colon + 1)}"`);
2910
+ }
2911
+ return { rps, burst };
2912
+ }
2913
+
2587
2914
  export {
2588
2915
  classifyResponse,
2589
- jitterFor,
2590
2916
  runEvasionCampaign,
2591
2917
  WafDetector,
2592
2918
  enumerateSubdomains,
@@ -2622,5 +2948,9 @@ export {
2622
2948
  searchTargetHistory,
2623
2949
  lookupAdvisory,
2624
2950
  searchPublicReports,
2625
- advisorySweep
2951
+ advisorySweep,
2952
+ TokenBucket,
2953
+ RateLimiter,
2954
+ parseRetryAfter,
2955
+ parseRateLimitFlag
2626
2956
  };