0sec-cli 0.23.0 → 0.24.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 (213) hide show
  1. package/0.js +66 -67
  2. package/README.md +37 -11
  3. package/chunks/{adapt-loop-V3JFWOKC.js → adapt-loop-L77BWMNE.js} +4 -4
  4. package/chunks/{artifact-scraper-NYKUF2M5.js → artifact-scraper-BV67RAP5.js} +2 -2
  5. package/chunks/{assumption-mining-ZX3YVWEH.js → assumption-mining-RPVR77A3.js} +18 -18
  6. package/chunks/{backend-connections-H52NIVH2.js → backend-connections-ACIXNYZN.js} +3 -3
  7. package/chunks/{chunk-MQJVU2GZ.js → chunk-2NBZZFRG.js} +79 -9
  8. package/chunks/{chunk-A2ADXAC5.js → chunk-2XGBEH53.js} +1288 -2313
  9. package/chunks/{chunk-3E54JYS4.js → chunk-3LPBJMHB.js} +1 -1
  10. package/chunks/{chunk-XORZUR2H.js → chunk-3WUPCZGF.js} +1 -1
  11. package/chunks/{chunk-65H3MRBF.js → chunk-4ROZFLSR.js} +1 -1
  12. package/chunks/chunk-56UTQKXO.js +56 -0
  13. package/chunks/{chunk-YYS2H33A.js → chunk-5ETI27Q3.js} +2 -2
  14. package/chunks/{chunk-3ZNI7F42.js → chunk-5NFIY2SJ.js} +3 -3
  15. package/chunks/{chunk-A5QO7N3S.js → chunk-5PFRE522.js} +1 -1
  16. package/chunks/{chunk-EH2WTNY7.js → chunk-5WAHHZBF.js} +1424 -859
  17. package/chunks/{chunk-WIYNYNL2.js → chunk-6XMFCVJS.js} +1 -1
  18. package/chunks/chunk-7UHAXEOV.js +289 -0
  19. package/chunks/{chunk-CP6HANBE.js → chunk-BD7WULFS.js} +4 -3
  20. package/chunks/{chunk-T7ZEVY5G.js → chunk-BMDG6T7D.js} +815 -41
  21. package/chunks/{chunk-QMICC5O2.js → chunk-BOBIAHKA.js} +2 -2
  22. package/chunks/{chunk-VDOWARMJ.js → chunk-BPU6M42R.js} +15 -1
  23. package/chunks/{chunk-UELXHK2Y.js → chunk-CGBDEST2.js} +16 -5
  24. package/chunks/{remote-workflow-runtime-RGQ5ECMN.js → chunk-CJRZSWII.js} +39 -8
  25. package/chunks/chunk-F2P25DJY.js +5421 -0
  26. package/chunks/{chunk-TO35Y326.js → chunk-GTED3FSZ.js} +5 -2
  27. package/chunks/{chunk-LT7BFGXA.js → chunk-GV5WXDHY.js} +10 -10
  28. package/chunks/{chunk-LTEE2JWK.js → chunk-GXXX7AGH.js} +251 -8
  29. package/chunks/chunk-GZA7RGK7.js +5198 -0
  30. package/chunks/{chunk-KHPOSLCF.js → chunk-H5QURBBK.js} +174 -710
  31. package/chunks/chunk-I43YYHDU.js +566 -0
  32. package/chunks/{chunk-62ENS6XO.js → chunk-IIBNQTOK.js} +3 -2
  33. package/chunks/{chunk-BF5FIK7H.js → chunk-IJ6UPW3H.js} +108 -24
  34. package/chunks/{chunk-TPUJZ74W.js → chunk-ILRMLA6J.js} +2 -2
  35. package/chunks/{chunk-I3OCJ2OA.js → chunk-JWSOUKFF.js} +5 -3
  36. package/chunks/{chunk-UZUELPFW.js → chunk-K74DRDC5.js} +1 -1
  37. package/chunks/chunk-LMP2T4G2.js +700 -0
  38. package/chunks/{chunk-K55B4OH4.js → chunk-NBV4I237.js} +1 -1
  39. package/chunks/chunk-OOMBOLAF.js +295 -0
  40. package/chunks/{chunk-YAEJAZYW.js → chunk-PJU24AKR.js} +2 -2
  41. package/chunks/{chunk-NI6QYQSK.js → chunk-PVJUPIQG.js} +6 -6
  42. package/chunks/{chunk-WYNZFNMF.js → chunk-Q7JKIKKF.js} +289 -10
  43. package/chunks/{chunk-ITES7BCY.js → chunk-QNRYOJEB.js} +3 -111
  44. package/chunks/{chunk-PIR6BNE7.js → chunk-R2XBH476.js} +2 -2
  45. package/chunks/{chunk-O6Z4XPOM.js → chunk-RURJYCWY.js} +1 -1
  46. package/chunks/chunk-RVJVM5L4.js +164 -0
  47. package/chunks/{chunk-NX4H6L4M.js → chunk-S2GITRD5.js} +2 -2
  48. package/chunks/{chunk-W5VNCB57.js → chunk-SU4IHQQI.js} +1 -1
  49. package/chunks/{chunk-V2BWXPZP.js → chunk-SZDD77KX.js} +6 -6
  50. package/chunks/{chunk-EJH2TNVH.js → chunk-TVS6WVSK.js} +3 -3
  51. package/chunks/{chunk-LVGZGG63.js → chunk-UJE4WOQS.js} +1 -1
  52. package/chunks/chunk-VU7V2SDW.js +284 -0
  53. package/chunks/chunk-W624J7NF.js +117 -0
  54. package/chunks/{chunk-OLSKXTQZ.js → chunk-WUPN3D37.js} +22 -248
  55. package/chunks/{chunk-HFDSIHTE.js → chunk-X2IPO5JO.js} +202 -30
  56. package/chunks/{chunk-JEYIWMGL.js → chunk-X2ZMSRTP.js} +1 -1
  57. package/chunks/{chunk-F344NYUN.js → chunk-XA2IBHPB.js} +1 -1
  58. package/chunks/{chunk-Y4HJRUFE.js → chunk-YERUDEXT.js} +876 -817
  59. package/chunks/{chunk-AAA4PRWK.js → chunk-YKWARO3T.js} +2 -2
  60. package/chunks/{chunk-P7KDN5PK.js → chunk-YSQWZ67M.js} +14 -14
  61. package/chunks/{chunk-4HGGNBKK.js → chunk-ZM6ANQZJ.js} +2593 -1563
  62. package/chunks/{codex-models-Y457ND6Q.js → codex-models-6XVNFRXZ.js} +7 -7
  63. package/chunks/{commands-PBDAOZKA.js → commands-FRPOFIO4.js} +1603 -6945
  64. package/chunks/dashboard-5HDSNBAU.js +76 -0
  65. package/chunks/{db-TPSI552V.js → db-BXJNWUYJ.js} +3 -3
  66. package/chunks/{deep-review-DKED6EN5.js → deep-review-GSJEBLCG.js} +34 -33
  67. package/chunks/{disclose-LDNKAVRH.js → disclose-OU6Z6GVT.js} +4 -2
  68. package/chunks/{dist-RLPNLRZD.js → dist-7KSYDDSG.js} +33 -1
  69. package/chunks/{dist-7Q5A6TQM.js → dist-RKLQIXDT.js} +18 -2
  70. package/chunks/{dist-4LGRIBOC.js → dist-TQMHMSBZ.js} +99 -64
  71. package/chunks/eval-runner-A2DIGVP7.js +31 -0
  72. package/chunks/{exploit-agent-RMFYNG7H.js → exploit-agent-Y2P4GFIY.js} +1 -1
  73. package/chunks/{exploit-autoclimb-2A2PQI4E.js → exploit-autoclimb-YRZ3TMS2.js} +1 -1
  74. package/chunks/{exploit-climb-DEJ232QN.js → exploit-climb-4LEY4SDW.js} +2 -2
  75. package/chunks/{fix-JGBW7XUN.js → fix-RQSIG75B.js} +7 -7
  76. package/chunks/{harness-CBOLMUHB.js → harness-3NVC3DDY.js} +3 -3
  77. package/chunks/{hunt-scan-MIRMABY4.js → hunt-scan-W246VWJC.js} +16 -16
  78. package/chunks/{kernel-primitive-NAPDMJC7.js → kernel-primitive-T47V3RD3.js} +2 -2
  79. package/chunks/{kernel-vm-runner-PR5OSDQ2.js → kernel-vm-runner-AEL5E3SV.js} +2 -2
  80. package/chunks/local-engine-ZCW4YC6E.js +21 -0
  81. package/chunks/managed-operation-6R2QPPW5.js +60 -0
  82. package/chunks/{memsafety-scan-RPS446CD.js → memsafety-scan-L2Z7E7TE.js} +2 -2
  83. package/chunks/{native-loop-CGOJMNHV.js → native-loop-26X2CHBV.js} +14 -13
  84. package/chunks/orchestrate-OBS37FWQ.js +63 -0
  85. package/chunks/{prepare-YVNENPNL.js → prepare-C3KGMBXT.js} +5 -5
  86. package/chunks/provider-model-discovery-QGUGL3XW.js +277 -0
  87. package/chunks/remote-workflow-runtime-DB52SINR.js +12 -0
  88. package/chunks/{run-VH4OIDKF.js → run-MU3MFL2Z.js} +902 -322
  89. package/chunks/{runtime-4TAJFVF7.js → runtime-AUBLQUOH.js} +2 -2
  90. package/chunks/{runtime-HWL6HG7A.js → runtime-U66JNSAY.js} +7 -7
  91. package/chunks/{scan-stream-HJAZJONE.js → scan-stream-34F3LTPV.js} +3 -2
  92. package/chunks/{scope-Q5PIX2IS.js → scope-HSTG63TQ.js} +2 -2
  93. package/chunks/service-plugins-5B23PWXC.js +64 -0
  94. package/chunks/{session-store-2FEIZGSV.js → session-store-MKAAP3WL.js} +2 -2
  95. package/chunks/{variant-candidates-TX5V6XOT.js → variant-candidates-LG767HWH.js} +7 -7
  96. package/chunks/{web-recon-prepass-6HOUGF7Q.js → web-recon-prepass-NJP6J3E4.js} +5 -5
  97. package/chunks/workflow-runtime-AR627I26.js +178 -0
  98. package/dashboard/assets/{abnfDiagram-VCTEODGH-BuvumFYR.js → abnfDiagram-VCTEODGH-Cq149Jpk.js} +1 -1
  99. package/dashboard/assets/{arc-DZzWDuCG.js → arc-CpP-3TRW.js} +1 -1
  100. package/dashboard/assets/architecture-7GRP2DOG-z5EHYkyH.js +1 -0
  101. package/dashboard/assets/{architectureDiagram-5GKGNRK7-Bw5el_EL.js → architectureDiagram-5GKGNRK7-ewtXpjR_.js} +1 -1
  102. package/dashboard/assets/{blockDiagram-I7D4REHJ-BjVLEApp.js → blockDiagram-I7D4REHJ-CZYkRRDi.js} +1 -1
  103. package/dashboard/assets/{c4Diagram-7LVT6UL2-B9nNzx2J.js → c4Diagram-7LVT6UL2-CV7Iu3_Z.js} +1 -1
  104. package/dashboard/assets/channel-CuYjfiC5.js +1 -0
  105. package/dashboard/assets/{chunk-4HAMMTFA-y72Q95nW.js → chunk-4HAMMTFA-PKCyW4m-.js} +1 -1
  106. package/dashboard/assets/{chunk-75Z2AOVW-BOhrOGMO.js → chunk-75Z2AOVW-C5MlFTc_.js} +1 -1
  107. package/dashboard/assets/{chunk-DU6HZSFF-B0EhAaNb.js → chunk-DU6HZSFF-3M37ulcO.js} +2 -2
  108. package/dashboard/assets/{chunk-F27PBJKO-BR-hiDvM.js → chunk-F27PBJKO-DTAok0qM.js} +1 -1
  109. package/dashboard/assets/{chunk-GMAD6QVW-H15vJYXg.js → chunk-GMAD6QVW-CPsr2F33.js} +1 -1
  110. package/dashboard/assets/{chunk-GVQU2GXP-BRndps0o.js → chunk-GVQU2GXP-C2AXGf9A.js} +1 -1
  111. package/dashboard/assets/{chunk-IMKFNOWR-CIzC_OWx.js → chunk-IMKFNOWR-DMG6yD_O.js} +1 -1
  112. package/dashboard/assets/{chunk-L3NEJ4N5-NR4P1Vko.js → chunk-L3NEJ4N5-BSvwdbXx.js} +1 -1
  113. package/dashboard/assets/{chunk-OSK3NFVY-DtjTDf8S.js → chunk-OSK3NFVY-CfB8V7FU.js} +1 -1
  114. package/dashboard/assets/{chunk-P2QGCYS3-CYT11Qjx.js → chunk-P2QGCYS3-CvmZvq6n.js} +1 -1
  115. package/dashboard/assets/{chunk-POPQ4Y6H-Duj2Ygwu.js → chunk-POPQ4Y6H-D_TvwDxL.js} +1 -1
  116. package/dashboard/assets/{chunk-PWAF6VOD-z4p5Tf_y.js → chunk-PWAF6VOD-Da5GnuOY.js} +1 -1
  117. package/dashboard/assets/{chunk-SHT3W25Y-DYeLYLS3.js → chunk-SHT3W25Y-CcsMJpR-.js} +1 -1
  118. package/dashboard/assets/{chunk-SVP7TREG-BKowxCVI.js → chunk-SVP7TREG-COojjieJ.js} +1 -1
  119. package/dashboard/assets/{chunk-TICWLB2K-GDAwEFlH.js → chunk-TICWLB2K-nBAmJwx6.js} +1 -1
  120. package/dashboard/assets/{chunk-XXDRQBXY-DRD79Mjx.js → chunk-XXDRQBXY-r5HyhWDv.js} +1 -1
  121. package/dashboard/assets/classDiagram-ZZMXUADV-DCuOrWUV.js +1 -0
  122. package/dashboard/assets/classDiagram-v2-VYDZK3BY-DCuOrWUV.js +1 -0
  123. package/dashboard/assets/{common-vnzd7UOF.js → common-C6snVPsk.js} +1 -1
  124. package/dashboard/assets/{cose-bilkent-JH36ORCC-GqCLsRyf.js → cose-bilkent-JH36ORCC-BLGcaZHk.js} +1 -1
  125. package/dashboard/assets/{cynefin-OW5HDTMX-CJN9YwWN.js → cynefin-OW5HDTMX-DbZMK00I.js} +1 -1
  126. package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-DVJHCYQY.js → cynefinDiagram-5FMLGOSQ-xodkuQtW.js} +1 -1
  127. package/dashboard/assets/{dagre-GXQ25YYZ-BMCrrJJR.js → dagre-GXQ25YYZ-CRk9qfSG.js} +1 -1
  128. package/dashboard/assets/{diagram-S7CK7UJ4-CLYDdOEm.js → diagram-S7CK7UJ4-DNoTMlCO.js} +1 -1
  129. package/dashboard/assets/{diagram-UQ7AKVKN-CnPuAZK7.js → diagram-UQ7AKVKN-COccuyew.js} +1 -1
  130. package/dashboard/assets/{diagram-VSXAHHWV-Cr2I2DnG.js → diagram-VSXAHHWV-g6D1tWRb.js} +1 -1
  131. package/dashboard/assets/{diagram-VX7I27RA-_mGW1wpp.js → diagram-VX7I27RA-DhO4eVIC.js} +1 -1
  132. package/dashboard/assets/{diagram-Z3DM3KII-igybB0l9.js → diagram-Z3DM3KII-DeOQFexd.js} +1 -1
  133. package/dashboard/assets/{dist-Bb7_-x5y.js → dist-BQYeOQg3.js} +1 -1
  134. package/dashboard/assets/{ebnfDiagram-PWID7BFC-CVCICf2R.js → ebnfDiagram-PWID7BFC-MtkX2feM.js} +1 -1
  135. package/dashboard/assets/{erDiagram-RLTQ6QDP-CRjnfgxj.js → erDiagram-RLTQ6QDP-DIWSsoYZ.js} +1 -1
  136. package/dashboard/assets/eventmodeling-NTZA5JFV-D_3ez4Gv.js +1 -0
  137. package/dashboard/assets/flowDiagram-HODETNUW-D2boyYEd.js +1 -0
  138. package/dashboard/assets/{ganttDiagram-EL5Y4UJY-DppD7sD7.js → ganttDiagram-EL5Y4UJY-DKggkJe0.js} +1 -1
  139. package/dashboard/assets/{gitGraph-4MIJSDKK-Tw0vNnQc.js → gitGraph-4MIJSDKK-DFOQYwXc.js} +1 -1
  140. package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-Cpf96-z3.js → gitGraphDiagram-WWUBYQGX-r_iR8Qzo.js} +1 -1
  141. package/dashboard/assets/{info-A6RAGUB7-DLyt9arx.js → info-A6RAGUB7-DeednLoB.js} +1 -1
  142. package/dashboard/assets/{infoDiagram-27XIBGKW-B6_piSNS.js → infoDiagram-27XIBGKW-ClQk7UyQ.js} +1 -1
  143. package/dashboard/assets/{ishikawaDiagram-5VMMS53U-DvMO0B0X.js → ishikawaDiagram-5VMMS53U-tR7Vziog.js} +1 -1
  144. package/dashboard/assets/{journeyDiagram-3NMN7TZE-f7ZK98b6.js → journeyDiagram-3NMN7TZE-Cpb9IqKL.js} +1 -1
  145. package/dashboard/assets/{kanban-definition-UXKFOSKX-Dso0nAxL.js → kanban-definition-UXKFOSKX-BzUuKbA9.js} +1 -1
  146. package/dashboard/assets/katex-BdBmVSus.js +257 -0
  147. package/dashboard/assets/{line-VcKaFG0G.js → line-BHY_tSHu.js} +1 -1
  148. package/dashboard/assets/{linear-D7YnpiWh.js → linear-naZZ1pHk.js} +1 -1
  149. package/dashboard/assets/{mermaid-parser.core-DriL2hrV.js → mermaid-parser.core-CPvd4cEx.js} +3 -3
  150. package/dashboard/assets/{mermaid.core-DJWYDh_P.js → mermaid.core-D_QsUPU8.js} +4 -4
  151. package/dashboard/assets/{mindmap-definition-YA3MSWOX-DZsoIeac.js → mindmap-definition-YA3MSWOX-CtfLTPPJ.js} +1 -1
  152. package/dashboard/assets/operations-BwCzhVnT.js +130 -0
  153. package/dashboard/assets/operations-QjKT0Hwi.css +1 -0
  154. package/dashboard/assets/{packet-AYTQ26CC-BQBIXKxk.js → packet-AYTQ26CC-DDQbkT9I.js} +1 -1
  155. package/dashboard/assets/{pegDiagram-XKGWAZYB-B0-lslgW.js → pegDiagram-XKGWAZYB-C1Dclbzj.js} +1 -1
  156. package/dashboard/assets/{pie-WAS4IAKB-DoY6dwQs.js → pie-WAS4IAKB-LpU4ULAs.js} +1 -1
  157. package/dashboard/assets/{pieDiagram-E7YTZNPT-ElmdRjp5.js → pieDiagram-E7YTZNPT-Cd7XwYo5.js} +1 -1
  158. package/dashboard/assets/{quadrantDiagram-AXDQQJYC-Ci1h98Q2.js → quadrantDiagram-AXDQQJYC-CaS-GQ4X.js} +1 -1
  159. package/dashboard/assets/{radar-RG4KPBEZ-DHod2WgB.js → radar-RG4KPBEZ-CcxW3NJm.js} +1 -1
  160. package/dashboard/assets/{railroad-74A4TZTK-90JxB4xV.js → railroad-74A4TZTK-9P5Rl8fP.js} +1 -1
  161. package/dashboard/assets/railroad-abnf-HS5TGJTU-CSfpwjna.js +1 -0
  162. package/dashboard/assets/railroad-ebnf-LZEXJU2U-D6R5qzr-.js +1 -0
  163. package/dashboard/assets/railroad-peg-WCYAUIDC-DKEX7ITG.js +1 -0
  164. package/dashboard/assets/{railroadDiagram-O6MQD6OU-k3190A6L.js → railroadDiagram-O6MQD6OU-BeesTrqn.js} +1 -1
  165. package/dashboard/assets/{requirementDiagram-BXWQKSXE-C3-eR7I5.js → requirementDiagram-BXWQKSXE-IjyK0DhW.js} +1 -1
  166. package/dashboard/assets/{sankeyDiagram-P5KCCOFB-Bc86pi8w.js → sankeyDiagram-P5KCCOFB-DmIluQqo.js} +1 -1
  167. package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-Bv_MvEmz.js → sequenceDiagram-WJ2MYXX4-CUp8ZjTc.js} +1 -1
  168. package/dashboard/assets/{src-D7Dqq5yP.js → src-r61wDjcA.js} +1 -1
  169. package/dashboard/assets/{stateDiagram-D77RDMKH-Bq_GVmeW.js → stateDiagram-D77RDMKH-Dy9TQb8P.js} +1 -1
  170. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-CQb0ZtPr.js +1 -0
  171. package/dashboard/assets/{swimlanes-42K2YHIH-q0iK-e0P.js → swimlanes-42K2YHIH-CZuDV7V5.js} +1 -1
  172. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BxgWMq8X.js +8 -0
  173. package/dashboard/assets/{timeline-definition-24CTP7MA-CNfF07hM.js → timeline-definition-24CTP7MA-BGdXW-iY.js} +1 -1
  174. package/dashboard/assets/{treeView-Q6P3EWNA-m629ePnS.js → treeView-Q6P3EWNA-DlRrayjM.js} +1 -1
  175. package/dashboard/assets/{treemap-WGGIJYW6-D9Cb2ETv.js → treemap-WGGIJYW6-C6UqLKfI.js} +1 -1
  176. package/dashboard/assets/{vennDiagram-4TSXK5OY-v4dKF-FE.js → vennDiagram-4TSXK5OY-DzKWHJsl.js} +1 -1
  177. package/dashboard/assets/{wardley-WFR3VGLG-DkwH_nRe.js → wardley-WFR3VGLG-thmyHKb0.js} +1 -1
  178. package/dashboard/assets/{wardleyDiagram-VM6X3IG4-3ImohVu4.js → wardleyDiagram-VM6X3IG4-DGsjYmNJ.js} +1 -1
  179. package/dashboard/assets/{xychartDiagram-S5SC5T6Z-QJu3dm7K.js → xychartDiagram-S5SC5T6Z-C7_T_tWt.js} +1 -1
  180. package/dashboard/index.html +3 -3
  181. package/package.json +3 -2
  182. package/worker-assets/demo-target/README.md +15 -0
  183. package/worker-assets/demo-target/include/decoder.h +27 -0
  184. package/worker-assets/demo-target/patched-decoder.c +40 -0
  185. package/worker-assets/demo-target/src/decoder.c +50 -0
  186. package/worker-assets/demo-target/witness-65537x1.bin +0 -0
  187. package/chunks/chunk-3P3XXSIJ.js +0 -463
  188. package/chunks/chunk-EWXOG6D3.js +0 -1695
  189. package/chunks/chunk-FXR3BT2G.js +0 -226
  190. package/chunks/chunk-R35KKJA4.js +0 -90
  191. package/chunks/eval-runner-RZKDOQ2G.js +0 -30
  192. package/chunks/managed-operation-YNQQEA5V.js +0 -59
  193. package/chunks/orchestrate-5NK34H3W.js +0 -62
  194. package/chunks/service-plugins-QYFITODK.js +0 -63
  195. package/chunks/workflow-runtime-ZEEBJFQG.js +0 -64
  196. package/dashboard/assets/architecture-7GRP2DOG-DK9bv1Md.js +0 -1
  197. package/dashboard/assets/channel-Ck17eKdX.js +0 -1
  198. package/dashboard/assets/classDiagram-ZZMXUADV-BaeZA6LE.js +0 -1
  199. package/dashboard/assets/classDiagram-v2-VYDZK3BY-BaeZA6LE.js +0 -1
  200. package/dashboard/assets/eventmodeling-NTZA5JFV-po5oDydv.js +0 -1
  201. package/dashboard/assets/flowDiagram-HODETNUW-TSV9s7q4.js +0 -1
  202. package/dashboard/assets/katex-CXMH3UgJ.js +0 -257
  203. package/dashboard/assets/operations-BIaUSnYv.js +0 -121
  204. package/dashboard/assets/operations-BeCdkT4S.css +0 -1
  205. package/dashboard/assets/railroad-abnf-HS5TGJTU-BkXGl114.js +0 -1
  206. package/dashboard/assets/railroad-ebnf-LZEXJU2U-QVAERn2C.js +0 -1
  207. package/dashboard/assets/railroad-peg-WCYAUIDC-B1-PM01z.js +0 -1
  208. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-z1XRaftz.js +0 -1
  209. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-C9L6XBQj.js +0 -8
  210. package/dashboard/assets/zero-connect-BGDY0PMZ.webp +0 -0
  211. package/dashboard/assets/zero-curious-DovTLOs8.webp +0 -0
  212. package/dashboard/assets/zero-peek-Dzm3MT3X.png +0 -0
  213. package/dashboard/assets/zero-planning-CBeHDrG_.webp +0 -0
package/0.js CHANGED
@@ -2,89 +2,95 @@
2
2
  import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
- Command,
6
5
  runStartupUpdate
7
- } from "./chunks/chunk-OLSKXTQZ.js";
6
+ } from "./chunks/chunk-7UHAXEOV.js";
8
7
  import {
8
+ Command
9
+ } from "./chunks/chunk-WUPN3D37.js";
10
+ import {
11
+ savedConnectionEnvPatch,
9
12
  setHerdrSink
10
- } from "./chunks/chunk-VDOWARMJ.js";
13
+ } from "./chunks/chunk-BPU6M42R.js";
11
14
  import {
12
- getSettings,
13
15
  installConsolePresentationBridge,
14
- installProcessPresentationStreamBridge,
15
- maybeLoadCodexAuth,
16
+ installProcessPresentationStreamBridge
17
+ } from "./chunks/chunk-OOMBOLAF.js";
18
+ import {
16
19
  presentationEventBus
17
- } from "./chunks/chunk-3P3XXSIJ.js";
20
+ } from "./chunks/chunk-56UTQKXO.js";
18
21
  import {
22
+ getSettings,
23
+ maybeLoadCodexAuth,
19
24
  resolveEngagement
20
- } from "./chunks/chunk-R35KKJA4.js";
25
+ } from "./chunks/chunk-LMP2T4G2.js";
21
26
  import {
22
27
  source_default
23
28
  } from "./chunks/chunk-HLFS6WV2.js";
24
29
  import {
25
30
  launchConfiguredWorkbench,
26
31
  remoteBackendClientId
27
- } from "./chunks/chunk-HFDSIHTE.js";
32
+ } from "./chunks/chunk-X2IPO5JO.js";
28
33
  import {
29
34
  createHerdrEventSink,
30
35
  maybeSubscribeOperationalEventSink
31
- } from "./chunks/chunk-4HGGNBKK.js";
32
- import "./chunks/chunk-QMICC5O2.js";
33
- import "./chunks/chunk-TPUJZ74W.js";
36
+ } from "./chunks/chunk-ZM6ANQZJ.js";
37
+ import "./chunks/chunk-H5QURBBK.js";
38
+ import "./chunks/chunk-5NFIY2SJ.js";
39
+ import "./chunks/chunk-BOBIAHKA.js";
40
+ import "./chunks/chunk-ILRMLA6J.js";
41
+ import "./chunks/chunk-GVD6SJGH.js";
34
42
  import "./chunks/chunk-QCUFBVIZ.js";
35
- import "./chunks/chunk-NX4H6L4M.js";
36
- import "./chunks/chunk-62ENS6XO.js";
43
+ import "./chunks/chunk-S2GITRD5.js";
44
+ import "./chunks/chunk-IIBNQTOK.js";
37
45
  import "./chunks/chunk-2WNCI664.js";
38
46
  import "./chunks/chunk-23DG5YKS.js";
39
47
  import "./chunks/chunk-DQTNI3KY.js";
40
- import "./chunks/chunk-XORZUR2H.js";
41
- import "./chunks/chunk-LVGZGG63.js";
42
- import "./chunks/chunk-3ZNI7F42.js";
43
- import "./chunks/chunk-WIYNYNL2.js";
48
+ import "./chunks/chunk-3WUPCZGF.js";
49
+ import "./chunks/chunk-UJE4WOQS.js";
50
+ import "./chunks/chunk-PJU24AKR.js";
51
+ import "./chunks/chunk-6XMFCVJS.js";
44
52
  import "./chunks/chunk-AZ7L3HFD.js";
45
- import "./chunks/chunk-EJH2TNVH.js";
46
- import "./chunks/chunk-P7KDN5PK.js";
47
- import "./chunks/chunk-EH2WTNY7.js";
53
+ import "./chunks/chunk-TVS6WVSK.js";
54
+ import "./chunks/chunk-YSQWZ67M.js";
55
+ import "./chunks/chunk-5WAHHZBF.js";
56
+ import "./chunks/chunk-3LPBJMHB.js";
48
57
  import "./chunks/chunk-K2PWUPUI.js";
49
- import "./chunks/chunk-JEYIWMGL.js";
50
- import "./chunks/chunk-Y4HJRUFE.js";
58
+ import "./chunks/chunk-X2ZMSRTP.js";
59
+ import "./chunks/chunk-YERUDEXT.js";
51
60
  import "./chunks/chunk-UEX7PFSE.js";
52
- import "./chunks/chunk-3E54JYS4.js";
53
- import "./chunks/chunk-F344NYUN.js";
54
- import "./chunks/chunk-YYS2H33A.js";
55
- import "./chunks/chunk-AAA4PRWK.js";
61
+ import "./chunks/chunk-4ROZFLSR.js";
62
+ import "./chunks/chunk-BD7WULFS.js";
63
+ import "./chunks/chunk-XA2IBHPB.js";
64
+ import "./chunks/chunk-5ETI27Q3.js";
65
+ import "./chunks/chunk-YKWARO3T.js";
56
66
  import "./chunks/chunk-SQCBHFWN.js";
57
- import "./chunks/chunk-GVD6SJGH.js";
58
- import "./chunks/chunk-UZUELPFW.js";
67
+ import "./chunks/chunk-K74DRDC5.js";
59
68
  import "./chunks/chunk-O6KPVYOI.js";
60
69
  import "./chunks/chunk-FHC2B7LN.js";
61
70
  import "./chunks/chunk-DKSCN2AB.js";
62
71
  import "./chunks/chunk-UFHN6RIU.js";
63
- import "./chunks/chunk-T7ZEVY5G.js";
64
- import "./chunks/chunk-TO35Y326.js";
72
+ import "./chunks/chunk-BMDG6T7D.js";
73
+ import "./chunks/chunk-GTED3FSZ.js";
65
74
  import "./chunks/chunk-IXT64DV5.js";
66
- import "./chunks/chunk-W5VNCB57.js";
67
- import "./chunks/chunk-YAEJAZYW.js";
68
- import "./chunks/chunk-65H3MRBF.js";
69
- import "./chunks/chunk-CP6HANBE.js";
75
+ import "./chunks/chunk-SU4IHQQI.js";
70
76
  import "./chunks/chunk-NJLKFC66.js";
71
- import "./chunks/chunk-K55B4OH4.js";
72
- import "./chunks/chunk-BF5FIK7H.js";
77
+ import "./chunks/chunk-NBV4I237.js";
78
+ import "./chunks/chunk-IJ6UPW3H.js";
73
79
  import {
74
80
  analyticsPipeline,
75
81
  configureRunContributionsFromEnvironment
76
- } from "./chunks/chunk-NI6QYQSK.js";
77
- import "./chunks/chunk-RS4MAN3Q.js";
78
- import "./chunks/chunk-UELXHK2Y.js";
82
+ } from "./chunks/chunk-PVJUPIQG.js";
79
83
  import {
80
84
  eventBus,
81
85
  presentationEventSink
82
- } from "./chunks/chunk-A5QO7N3S.js";
83
- import "./chunks/chunk-ITES7BCY.js";
86
+ } from "./chunks/chunk-5PFRE522.js";
87
+ import "./chunks/chunk-RS4MAN3Q.js";
88
+ import "./chunks/chunk-CGBDEST2.js";
89
+ import "./chunks/chunk-QNRYOJEB.js";
84
90
  import "./chunks/chunk-5IBCBQEH.js";
85
91
  import {
86
92
  VERSION
87
- } from "./chunks/chunk-LTEE2JWK.js";
93
+ } from "./chunks/chunk-GXXX7AGH.js";
88
94
  import "./chunks/chunk-VIT5ALXF.js";
89
95
  import "./chunks/chunk-VCSFCHAJ.js";
90
96
 
@@ -110,7 +116,7 @@ import { fileURLToPath } from "node:url";
110
116
  var BYPASS_ENV = "ZERO_ALLOW_STALE_SOURCE_DIST";
111
117
  function currentBuildCommit() {
112
118
  if (true) {
113
- return "8f4d9ec0535d64def1bc2c3fc9c917d4ec220cb4";
119
+ return "42ab1fa74044b79edd6b8f0990b2afa7ccfd824b";
114
120
  }
115
121
  return void 0;
116
122
  }
@@ -230,9 +236,14 @@ setHerdrSink(herdrSink);
230
236
  enforceSourceDistFreshness({ entryUrl: import.meta.url });
231
237
  if (!isWorkbenchManagement && !isRemoteBackendClient) await runStartupUpdate(VERSION);
232
238
  async function buildProgram() {
233
- const c = await import("./chunks/commands-PBDAOZKA.js");
239
+ const c = await import("./chunks/commands-FRPOFIO4.js");
234
240
  const program = new Command();
235
241
  program.name("0").description("Open-source multi-model security research harness").version(VERSION).enablePositionalOptions();
242
+ program.hook("preAction", (_command, action) => {
243
+ if (!isWorkbenchManagement && !isRemoteBackendClient && ["review", "scan"].includes(action.name())) {
244
+ Object.assign(process.env, savedConnectionEnvPatch(process.env));
245
+ }
246
+ });
236
247
  c.registerScanCommand(program);
237
248
  c.registerResumeCommand(program);
238
249
  c.registerReplayCommand(program);
@@ -245,6 +256,7 @@ async function buildProgram() {
245
256
  c.registerDoctorCommand(program);
246
257
  c.registerDashboardCommand(program);
247
258
  c.registerTuiCommand(program);
259
+ c.registerTeamCommand(program);
248
260
  c.registerOrchestrateCommand(program);
249
261
  c.registerDbCommand(program);
250
262
  c.registerMcpServerCommand(program);
@@ -280,6 +292,7 @@ async function buildProgram() {
280
292
  c.registerCloudCommand(program);
281
293
  c.registerXnuFuzzCommand(program);
282
294
  c.registerResearchCommand(program);
295
+ c.registerWorkerCommand(program);
283
296
  c.registerRadarCommand(program);
284
297
  c.registerTimelineCommand(program);
285
298
  c.registerAgentAssureCommand(program);
@@ -287,41 +300,27 @@ async function buildProgram() {
287
300
  c.registerPluginCommand(program);
288
301
  c.registerThemeCommand(program);
289
302
  c.registerEvolveCommand(program);
303
+ c.registerLearningCommand(program);
290
304
  c.registerConfigCommand(program);
291
305
  c.registerWorkbenchCommand(program);
292
306
  c.registerReviewChecksCommand(program);
293
307
  c.registerHackstoreCommand(program);
294
308
  return program;
295
309
  }
296
- async function showInteractiveMenu() {
297
- const { isBunRuntime } = await import("./chunks/runtime-4TAJFVF7.js");
298
- if (isBunRuntime()) {
299
- const { showOpenTuiHome } = await import("./chunks/run-VH4OIDKF.js");
300
- await showOpenTuiHome();
301
- return;
302
- }
303
- console.log("");
304
- console.log(` ${source_default.bold("0")} ${source_default.dim(`v${VERSION}`)}`);
305
- console.log("");
306
- console.log(` ${source_default.dim("From v0.9.0 onwards, 0 ships as a self-contained binary.")}`);
307
- console.log(` ${source_default.dim("The full TUI (mission control + live scan view) needs Bun's runtime.")}`);
308
- console.log("");
309
- console.log(` ${source_default.bold("Install")} (single curl, no Node / Bun required):`);
310
- console.log(` curl -fsSL https://raw.githubusercontent.com/0sec-labs/0/main/install.sh | bash`);
311
- console.log("");
312
- console.log(` ${source_default.dim("After install, run:")}`);
313
- console.log(` 0 scan --target https://example.com`);
314
- console.log(` 0 --help`);
315
- console.log("");
310
+ async function showWebConsole() {
311
+ const { registerDashboardCommand } = await import("./chunks/dashboard-5HDSNBAU.js");
312
+ const program = new Command();
313
+ registerDashboardCommand(program);
314
+ await program.parseAsync(["web"], { from: "user" });
316
315
  }
317
316
  process.once("beforeExit", () => {
318
317
  void analyticsPipeline.flushNow().catch(() => {
319
318
  });
320
319
  });
321
320
  var userArgs = process.argv.slice(2);
322
- var knownCommands = ["scan", "resume", "replay", "history", "findings", "secure", "review", "fix", "audit", "deps", "doctor", "dashboard", "web", "tui", "watch", "orchestrate", "db", "mcp-server", "workflow", "runs", "triage", "eval", "bench", "ingest", "kernel", "disclose", "verify", "exploit", "hunt", "recency-hunt", "deep-review", "lens-synth", "memsafety", "assumption-hunt", "specdrift", "protocol-check", "cve", "upgrade", "update", "h1", "intel", "recon", "js-recon", "npm-discovery", "identity", "adgraph", "entragraph", "cloud", "xnu-fuzz", "research", "radar", "timeline", "console", "agent-assure", "binary", "plugin", "theme", "config", "workbench", "checks", "evolve", "hackstore", "hack", "store", "help"];
321
+ var knownCommands = ["scan", "resume", "replay", "history", "findings", "secure", "review", "fix", "audit", "deps", "doctor", "dashboard", "web", "chat", "team", "tui", "watch", "orchestrate", "db", "mcp-server", "workflow", "runs", "sessions", "triage", "eval", "bench", "ingest", "kernel", "disclose", "verify", "exploit", "hunt", "recency-hunt", "deep-review", "lens-synth", "memsafety", "assumption-hunt", "specdrift", "protocol-check", "cve", "upgrade", "update", "h1", "intel", "recon", "js-recon", "npm-discovery", "identity", "adgraph", "entragraph", "cloud", "xnu-fuzz", "research", "worker", "radar", "timeline", "console", "agent-assure", "binary", "plugin", "theme", "config", "workbench", "checks", "evolve", "learning", "hackstore", "hack", "store", "help"];
323
322
  if (userArgs.length === 0) {
324
- showInteractiveMenu().catch((err) => {
323
+ showWebConsole().catch((err) => {
325
324
  console.error(source_default.red(err instanceof Error ? err.message : String(err)));
326
325
  process.exit(2);
327
326
  });
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://0.security/">
3
- <img src="assets/readme-cover.png" alt="0security terminal security research workflow" width="100%">
3
+ <img src="assets/readme-cover.png" alt="0security landscape with Zero and the security research mission" width="100%">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -12,7 +12,7 @@
12
12
  </p>
13
13
 
14
14
  <p align="center">
15
- <strong>Open-source security workflows in your browser, terminal, or coding agent.</strong><br/>
15
+ <strong>Open-source security workflows in your browser or coding agent.</strong><br/>
16
16
  <sub>Backed by Y Combinator · The Swiss Applied AI &amp; Cybersecurity Research Lab</sub><br/>
17
17
  <a href="https://0.security/">0.security</a> ·
18
18
  <a href="https://docs.0.security/">Documentation</a> ·
@@ -39,7 +39,7 @@ export PATH="$HOME/.0/bin:$PATH"
39
39
  0 web
40
40
  ```
41
41
 
42
- **Browser:** `0 web` · **Terminal:** `0`
42
+ **Command Center (browser):** `0 web` · **Terminal:** `0`
43
43
 
44
44
  Configure a [model provider](https://docs.0.security/api-keys/) before running AI workflows.
45
45
 
@@ -47,6 +47,10 @@ Configure a [model provider](https://docs.0.security/api-keys/) before running A
47
47
 
48
48
  Browser, CLI, and MCP share one workflow runner with retained results.
49
49
 
50
+ Findings are prioritized by business impact: affected customers and data, fraud,
51
+ critical services, and disruption. Each priority includes a rationale; missing
52
+ context stays **Not assessed**. CVSS remains available as technical severity.
53
+
50
54
  | Work | Built-in templates |
51
55
  | --- | --- |
52
56
  | Assess | Repositories, dependencies, APIs, web configuration, scoped penetration tests, package behavior, smart contracts, native code |
@@ -57,6 +61,11 @@ Browser, CLI, and MCP share one workflow runner with retained results.
57
61
  Start from 12 templates, customize steps, and run manually or with browser triggers and schedules.
58
62
  **Template:** starting point · **Workflow:** reusable steps · **Run:** one execution.
59
63
 
64
+ **Learning** retains local run activity, source-grounded notes and evaluated
65
+ improvement history. Saved workflows keep immutable revisions and support restore.
66
+ Use `0 learning status` or open Learning in the browser.
67
+ [Learning documentation](https://docs.0.security/learning/).
68
+
60
69
  ```bash
61
70
  0 workflow list --templates
62
71
  0 workflow run --template security-research \
@@ -67,14 +76,15 @@ Start from 12 templates, customize steps, and run manually or with browser trigg
67
76
 
68
77
  [Workflow guide: inputs, limits, and results](https://docs.0.security/workflow/).
69
78
 
70
- <details>
71
- <summary>Preview the web app</summary>
79
+ ## See Zero at work
72
80
 
73
- ![Customer API security review in the Zero web app](assets/screenshots/web-chat.jpg)
81
+ A source review of the included [demo API](assets/examples/demo-api/), with code locations and suggested fixes.
74
82
 
75
- ![Customer API security workflow in the Zero web app](assets/screenshots/web-workflow.jpg)
83
+ ![Demo API source review in Zero](assets/screenshots/web-chat.jpg)
76
84
 
77
- </details>
85
+ Start a workflow from a template and edit its steps.
86
+
87
+ ![Workflow editor in Zero](assets/screenshots/web-workflow.jpg)
78
88
 
79
89
  ## Use 0 from another agent
80
90
 
@@ -89,6 +99,20 @@ For a registered remote engine, use `0 mcp-server --workflows --backend producti
89
99
  0's model provider is separate from the connecting agent's session.
90
100
 
91
101
  Browser chat's **Connect an external agent** copies a setup prompt.
102
+ CLI and MCP workflow clients automatically attach to a running local web engine
103
+ for the same workspace and control database. To attach explicitly to the sessions
104
+ and runs already open in an engine:
105
+
106
+ ```bash
107
+ 0 mcp-server --workflows --engine-url http://127.0.0.1:3000 \
108
+ --engine-token-env ENGINE_TOKEN --session SESSION_ID
109
+ 0 sessions list --engine-url http://127.0.0.1:3000 --engine-token-env ENGINE_TOKEN
110
+ ```
111
+
112
+ Set `ENGINE_TOKEN` to the engine's configured bearer credential. Attached clients
113
+ share the browser's session and run lifecycle; disconnecting leaves the engine
114
+ running. Omit `--session` to create a session under the engine's admission grants.
115
+
92
116
  See [MCP setup and individual tools](https://docs.0.security/integrations/) or
93
117
  [local and remote engines](https://docs.0.security/engine-connections/).
94
118
 
@@ -105,15 +129,17 @@ More guides: [installation](https://docs.0.security/getting-started/) ·
105
129
  ## Development
106
130
 
107
131
  Install dependencies, run `npm run dev`, and open the printed browser address.
108
- See [CONTRIBUTING.md](CONTRIBUTING.md).
132
+ See [CONTRIBUTING.md](https://github.com/0sec-labs/0/blob/main/.github/CONTRIBUTING.md).
109
133
 
110
134
  ## Status and safety
111
135
 
112
136
  **Research preview.** Assess authorized systems and review findings and fixes.
113
- The terminal defaults to YOLO; use `0 console --mode standard` for confirmations.
137
+ Run `0` or `0 web` to open the browser console without an account.
138
+ The interactive terminal UI is retired; headless CLI, automation, MCP and binary commands remain available.
139
+ Use `0 chat --prompt "your request"` for one-shot automation; set `--mode standard` for explicit scope checks.
114
140
  The optional [scope plugin](https://docs.0.security/scope/) enforces target boundaries.
115
141
 
116
- Report vulnerabilities through [SECURITY.md](SECURITY.md).
142
+ Report vulnerabilities through [SECURITY.md](https://github.com/0sec-labs/0/blob/main/.github/SECURITY.md).
117
143
  Licensed under [MIT](LICENSE-MIT) OR [Apache-2.0](LICENSE).
118
144
 
119
145
  [Public disclosures and upstream fixes](https://0.security/research/#disclosures).
@@ -5,10 +5,10 @@ import {
5
5
  adaptAndVerify,
6
6
  applyUnifiedDiff,
7
7
  renderAdaptationPrompt
8
- } from "./chunk-3ZNI7F42.js";
9
- import "./chunk-3E54JYS4.js";
10
- import "./chunk-F344NYUN.js";
11
- import "./chunk-LTEE2JWK.js";
8
+ } from "./chunk-5NFIY2SJ.js";
9
+ import "./chunk-3LPBJMHB.js";
10
+ import "./chunk-XA2IBHPB.js";
11
+ import "./chunk-GXXX7AGH.js";
12
12
  import "./chunk-VIT5ALXF.js";
13
13
  import "./chunk-VCSFCHAJ.js";
14
14
  export {
@@ -14,8 +14,8 @@ import {
14
14
  parseUbuntuTracker,
15
15
  scoreCodeCandidate,
16
16
  scoreRepoCandidate
17
- } from "./chunk-W5VNCB57.js";
18
- import "./chunk-LTEE2JWK.js";
17
+ } from "./chunk-SU4IHQQI.js";
18
+ import "./chunk-GXXX7AGH.js";
19
19
  import "./chunk-VIT5ALXF.js";
20
20
  import "./chunk-VCSFCHAJ.js";
21
21
  export {
@@ -24,33 +24,33 @@ import {
24
24
  scoreDualViewWeaponizability,
25
25
  storeAssumptionModel,
26
26
  subjectSelfEnforces
27
- } from "./chunk-EJH2TNVH.js";
27
+ } from "./chunk-TVS6WVSK.js";
28
28
  import {
29
29
  composeGate,
30
30
  makeSkepticVerifier
31
- } from "./chunk-P7KDN5PK.js";
32
- import "./chunk-EH2WTNY7.js";
31
+ } from "./chunk-YSQWZ67M.js";
32
+ import "./chunk-5WAHHZBF.js";
33
+ import "./chunk-3LPBJMHB.js";
33
34
  import "./chunk-K2PWUPUI.js";
34
- import "./chunk-JEYIWMGL.js";
35
- import "./chunk-Y4HJRUFE.js";
35
+ import "./chunk-X2ZMSRTP.js";
36
+ import "./chunk-YERUDEXT.js";
36
37
  import "./chunk-UEX7PFSE.js";
37
- import "./chunk-3E54JYS4.js";
38
- import "./chunk-F344NYUN.js";
39
- import "./chunk-AAA4PRWK.js";
40
- import "./chunk-UZUELPFW.js";
38
+ import "./chunk-4ROZFLSR.js";
39
+ import "./chunk-BD7WULFS.js";
40
+ import "./chunk-XA2IBHPB.js";
41
+ import "./chunk-YKWARO3T.js";
42
+ import "./chunk-K74DRDC5.js";
41
43
  import "./chunk-O6KPVYOI.js";
42
- import "./chunk-T7ZEVY5G.js";
44
+ import "./chunk-BMDG6T7D.js";
43
45
  import "./chunk-IXT64DV5.js";
44
- import "./chunk-65H3MRBF.js";
45
- import "./chunk-CP6HANBE.js";
46
- import "./chunk-BF5FIK7H.js";
47
- import "./chunk-NI6QYQSK.js";
46
+ import "./chunk-IJ6UPW3H.js";
47
+ import "./chunk-PVJUPIQG.js";
48
+ import "./chunk-5PFRE522.js";
48
49
  import "./chunk-RS4MAN3Q.js";
49
- import "./chunk-UELXHK2Y.js";
50
- import "./chunk-A5QO7N3S.js";
51
- import "./chunk-ITES7BCY.js";
50
+ import "./chunk-CGBDEST2.js";
51
+ import "./chunk-QNRYOJEB.js";
52
52
  import "./chunk-5IBCBQEH.js";
53
- import "./chunk-LTEE2JWK.js";
53
+ import "./chunk-GXXX7AGH.js";
54
54
  import "./chunk-VIT5ALXF.js";
55
55
  import "./chunk-VCSFCHAJ.js";
56
56
  export {
@@ -8,9 +8,9 @@ import {
8
8
  createBackendHandshake,
9
9
  handleBackendConnectionRequest,
10
10
  loadBackendConnectionConfig
11
- } from "./chunk-WYNZFNMF.js";
12
- import "./chunk-T7ZEVY5G.js";
13
- import "./chunk-LTEE2JWK.js";
11
+ } from "./chunk-Q7JKIKKF.js";
12
+ import "./chunk-BMDG6T7D.js";
13
+ import "./chunk-GXXX7AGH.js";
14
14
  import "./chunk-VIT5ALXF.js";
15
15
  import "./chunk-VCSFCHAJ.js";
16
16
  export {
@@ -7,23 +7,31 @@ import {
7
7
  loadGlobalSettings,
8
8
  loadWorkbenchConfig,
9
9
  resolveWorkbenchGuestSettings,
10
+ validateWorkbenchSourceLesson,
10
11
  workbenchConfigPath,
11
12
  workbenchNetworkEnabled
12
- } from "./chunk-HFDSIHTE.js";
13
+ } from "./chunk-X2IPO5JO.js";
13
14
  import {
14
15
  createWorkbenchProviderBroker
15
- } from "./chunk-4HGGNBKK.js";
16
+ } from "./chunk-ZM6ANQZJ.js";
16
17
  import {
18
+ HuntMemoryStore,
19
+ LearningService
20
+ } from "./chunk-5WAHHZBF.js";
21
+ import {
22
+ LearningStore,
23
+ learningArtifactDigest,
24
+ learningProjectId,
17
25
  osecDB
18
- } from "./chunk-T7ZEVY5G.js";
26
+ } from "./chunk-BMDG6T7D.js";
19
27
  import {
20
28
  isAdmittedSmolvmWorkbench
21
- } from "./chunk-NI6QYQSK.js";
29
+ } from "./chunk-PVJUPIQG.js";
22
30
  import {
23
31
  SERVICE_PLUGIN_CATALOG,
24
32
  findingSchema,
25
33
  homeStateDir
26
- } from "./chunk-LTEE2JWK.js";
34
+ } from "./chunk-GXXX7AGH.js";
27
35
 
28
36
  // packages/cli/src/web/service-plugins.ts
29
37
  import { constants, closeSync, fstatSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, writeFileSync, chmodSync } from "node:fs";
@@ -32,6 +40,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
32
40
 
33
41
  // packages/cli/src/console-execution.ts
34
42
  import { existsSync, realpathSync } from "node:fs";
43
+ import { relative, resolve, sep } from "node:path";
35
44
  import { randomUUID } from "node:crypto";
36
45
  function consoleExecutionProfile(homeDir) {
37
46
  if (process.platform === "linux" && isAdmittedSmolvmWorkbench()) return "local";
@@ -53,19 +62,80 @@ function createIsolatedConsoleSession(config, options = {}) {
53
62
  const models = [.../* @__PURE__ */ new Set([model, ...Object.values(routing?.agentModels ?? {}).filter((value) => value !== "auto")])];
54
63
  if (!runtime.workbenchCredentialResolver) throw new Error("The selected runtime cannot bind its account to the host provider broker.");
55
64
  const broker = createWorkbenchProviderBroker({ provider, models, resolveCredentials: runtime.workbenchCredentialResolver() });
56
- const { runtime: _runtime, ...guestConfig } = config;
65
+ const { runtime: _runtime, learningStore: hostLearningStore, huntMemoryStore: hostMemoryStore, sourceLessonHints: _hostHints, ...guestConfig } = config;
66
+ const learningEnabled = config.codebaseLearning === true && config.role !== "verify";
67
+ if (/^(1|true)$/i.test(process.env.ZERO_DISABLE_HUNT_MEMORY ?? "")) guestConfig.codebaseLearning = false;
68
+ let memory = hostMemoryStore;
69
+ const hostMemory = () => memory ??= new HuntMemoryStore({ home: options.homeDir });
70
+ const withLearning = (use) => {
71
+ const store = hostLearningStore ?? new LearningStore(options.dbPath);
72
+ try {
73
+ return use(new LearningService(store));
74
+ } finally {
75
+ if (!hostLearningStore) store.close();
76
+ }
77
+ };
78
+ const approvedWorkspace = realpathSync(workbench.workspaceRoot ?? options.workspaceRoot ?? config.workspaceRoot ?? process.cwd());
57
79
  const scanId = config.scanId ?? `console-${randomUUID()}`;
58
80
  try {
59
81
  return createWorkbenchConsoleSession({
60
- config: { ...guestConfig, scanId, workspaceRoot: realpathSync(workbench.workspaceRoot ?? options.workspaceRoot ?? config.workspaceRoot ?? process.cwd()) },
82
+ config: { ...guestConfig, scanId, workspaceRoot: approvedWorkspace },
61
83
  workbench,
62
84
  selection: { provider, model, contextWindowTokens: config.contextWindowTokens, ...routing },
63
85
  provider: { ...broker.grant, request: broker.request, close: broker.close },
64
86
  pluginHomeDir: options.homeDir,
65
- assets: currentWorkbenchAssets(),
87
+ assets: options.assets ?? currentWorkbenchAssets(),
66
88
  guestSettings: resolveWorkbenchGuestSettings(loadGlobalSettings(options.homeDir)),
67
89
  network: workbenchNetworkEnabled(),
68
90
  onExecution: options.onExecution,
91
+ onSourceLesson: (artifact, context) => {
92
+ if (!learningEnabled || /^(1|true)$/i.test(process.env.ZERO_DISABLE_HUNT_MEMORY ?? "")) return;
93
+ if (realpathSync(context.workspaceRoot) !== approvedWorkspace) throw new Error("Source lesson workspace differs from host grant");
94
+ const lesson = validateWorkbenchSourceLesson(artifact, approvedWorkspace, context.scopePath);
95
+ const memory2 = hostMemory();
96
+ const paths = lesson.sourceLinks.map((link) => relative(context.scopePath, resolve(context.workspaceRoot, link.path)).split(sep).join("/"));
97
+ const prior = memory2.all().find((note) => note.codebase?.root === realpathSync(context.scopePath) && note.title === lesson.title && note.summary === lesson.summary && JSON.stringify(note.codebase?.files.map((file) => ({ path: file.path, hash: file.digest }))) === JSON.stringify(lesson.sourceLinks.map((link, index) => ({ path: paths[index], hash: link.hash }))));
98
+ if (!prior) memory2.rememberCodebase({ root: context.scopePath, paths, title: lesson.title, summary: lesson.summary, source: `smolvm:${context.scanId}` });
99
+ withLearning((service) => service.importCodebaseNotes(learningProjectId(context.scopePath), context.scopePath, memory2, 8));
100
+ },
101
+ readSourceLessons: (context) => {
102
+ if (!learningEnabled || /^(1|true)$/i.test(process.env.ZERO_DISABLE_HUNT_MEMORY ?? "")) return [];
103
+ if (realpathSync(context.workspaceRoot) !== approvedWorkspace) return [];
104
+ const memory2 = hostMemory();
105
+ return withLearning((service) => {
106
+ const entries = service.importCodebaseNotes(learningProjectId(context.scopePath), context.scopePath, memory2, 8);
107
+ return memory2.recallCodebase(context.scopePath, 6).flatMap((note) => {
108
+ const sourceLinks = note.codebase.files.map((file) => ({ path: file.path, hash: file.digest }));
109
+ if (!entries.some((entry) => entry.status === "current" && entry.summary === note.summary && JSON.stringify(entry.sourceLinks) === JSON.stringify(sourceLinks))) return [];
110
+ const lesson = { title: note.title, summary: note.summary, sourceLinks: sourceLinks.map((link) => ({ ...link, path: relative(context.workspaceRoot, resolve(context.scopePath, link.path)).split(sep).join("/") })) };
111
+ try {
112
+ return [validateWorkbenchSourceLesson(lesson, context.workspaceRoot, context.scopePath)];
113
+ } catch {
114
+ return [];
115
+ }
116
+ });
117
+ });
118
+ },
119
+ onSourceContext: (artifact, context) => {
120
+ if (!learningEnabled || /^(1|true)$/i.test(process.env.ZERO_DISABLE_HUNT_MEMORY ?? "")) return;
121
+ const store = new LearningStore(options.dbPath);
122
+ try {
123
+ const digest = learningArtifactDigest(JSON.stringify(artifact.sourceLinks));
124
+ store.recordExperience({
125
+ idempotencyKey: `vm-source:${learningArtifactDigest(context.runId + digest)}`,
126
+ projectId: learningProjectId(context.workspaceRoot),
127
+ kind: "source-context",
128
+ outcome: "current",
129
+ evidenceStrength: "hypothesis",
130
+ summary: "Source references retained from an isolated workspace.",
131
+ runId: context.runId,
132
+ sourceLinks: artifact.sourceLinks,
133
+ evidenceDigests: [digest]
134
+ });
135
+ } finally {
136
+ store.close();
137
+ }
138
+ },
69
139
  onFindings: (findings, completion) => {
70
140
  const validated = findings.map((finding) => findingSchema.parse(finding));
71
141
  const db = new osecDB(options.dbPath);
@@ -217,7 +287,7 @@ var ServicePluginServices = class {
217
287
  }
218
288
  async #probe(connection) {
219
289
  try {
220
- const probe = this.#options.probe ?? (await import("./dist-4LGRIBOC.js")).testServicePluginConnection;
290
+ const probe = this.#options.probe ?? (await import("./dist-TQMHMSBZ.js")).testServicePluginConnection;
221
291
  const result = await probe(connection);
222
292
  if (!Array.isArray(result.tools) || result.tools.length > 512 || result.tools.some((tool) => typeof tool.name !== "string" || tool.name.length > 256 || typeof tool.description !== "string" || tool.description.length > 16384)) throw new Error("Invalid tool catalog.");
223
293
  const configurations = [...readStore(this.#options.homeDir), connection];