0sec-cli 0.25.0 → 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 (187) hide show
  1. package/0.js +41 -40
  2. package/chunks/{adapt-loop-L2PXCD4J.js → adapt-loop-P4HKONB5.js} +4 -4
  3. package/chunks/{artifact-scraper-W3LGLXBM.js → artifact-scraper-IIRJNYKT.js} +2 -2
  4. package/chunks/{assumption-mining-7IJ6ZWZE.js → assumption-mining-YA6VJ2V6.js} +17 -17
  5. package/chunks/{backend-connections-MYH4QRQG.js → backend-connections-64PKYKL7.js} +3 -3
  6. package/chunks/{chunk-EEP6GBUO.js → chunk-3MWQNNJU.js} +151 -58
  7. package/chunks/{chunk-ZZV56ACK.js → chunk-3VQ5EZKG.js} +9 -9
  8. package/chunks/{chunk-I4VIAQHM.js → chunk-6GV5G6U3.js} +1 -1
  9. package/chunks/{chunk-OFPF26WL.js → chunk-6SNOKNCS.js} +2 -2
  10. package/chunks/{chunk-YXTV2FRE.js → chunk-72PU46MS.js} +66 -112
  11. package/chunks/{chunk-NO543ZBU.js → chunk-A7G6S5RA.js} +1 -1
  12. package/chunks/{chunk-ITEMDJAB.js → chunk-AFJ2UMPR.js} +2 -2
  13. package/chunks/{chunk-FOLTHXRH.js → chunk-B7XL6RON.js} +1 -1
  14. package/chunks/{chunk-76CLUI54.js → chunk-BM6EYP2D.js} +3 -3
  15. package/chunks/{chunk-NBLKIQCW.js → chunk-D4M5WURF.js} +2 -2
  16. package/chunks/{chunk-DHNYJ2ML.js → chunk-EHNVP6QB.js} +1 -1
  17. package/chunks/{chunk-C6ZMPXN2.js → chunk-FBZBJYZS.js} +3 -3
  18. package/chunks/{chunk-S3B6HFSM.js → chunk-GYEYTNHK.js} +1 -1
  19. package/chunks/{chunk-EIONVEFN.js → chunk-HS2NQ7K6.js} +192 -36
  20. package/chunks/{chunk-HJKJ4NQP.js → chunk-HUZ2EC2R.js} +1 -1
  21. package/chunks/{chunk-5H2PXZ7Q.js → chunk-IUUNIJPM.js} +1 -1
  22. package/chunks/{chunk-3DF55BWV.js → chunk-JGDA6EIJ.js} +2 -2
  23. package/chunks/{chunk-GOUGG7IQ.js → chunk-K3PTYN43.js} +2 -2
  24. package/chunks/{chunk-7TIWL6E5.js → chunk-KCABBZHN.js} +7 -7
  25. package/chunks/{chunk-ACYZMJHC.js → chunk-LRD5N2TQ.js} +1 -1
  26. package/chunks/{chunk-ITHDAIRY.js → chunk-MNK373HF.js} +1 -1
  27. package/chunks/{chunk-JCRQV4FE.js → chunk-MOEVVXML.js} +2 -2
  28. package/chunks/{chunk-3HMO42M2.js → chunk-MOGWEHSC.js} +68 -771
  29. package/chunks/{chunk-TFKY6D7O.js → chunk-N7YCONYR.js} +1 -1
  30. package/chunks/{chunk-FI2H6HV2.js → chunk-NA3FKCI2.js} +1 -1
  31. package/chunks/{chunk-PMAKX6KP.js → chunk-NABVDAAO.js} +2 -2
  32. package/chunks/{chunk-YYFODVZG.js → chunk-NNMOTHKC.js} +4 -4
  33. package/chunks/{chunk-RBTJYREN.js → chunk-OILVEROI.js} +17 -4
  34. package/chunks/{chunk-GXSECFUE.js → chunk-PAMJEXE2.js} +1 -1
  35. package/chunks/{chunk-2J3STRJT.js → chunk-R7VWEY45.js} +1 -1
  36. package/chunks/{chunk-27SXCYWH.js → chunk-RZZ6VPRY.js} +1 -1
  37. package/chunks/{chunk-HFUOUT2B.js → chunk-SIR7XW2S.js} +1392 -826
  38. package/chunks/{chunk-HDJSHLRM.js → chunk-SSPP64FF.js} +2 -2
  39. package/chunks/{chunk-WK6VUCKK.js → chunk-STPHTPSD.js} +1 -1
  40. package/chunks/{chunk-SEWZ76MN.js → chunk-UGCTPKJG.js} +14 -6
  41. package/chunks/{chunk-MY44EZKD.js → chunk-ULRLUXSS.js} +1 -1
  42. package/chunks/{chunk-BWUW6ZQR.js → chunk-UQS7XCBV.js} +75 -60
  43. package/chunks/{chunk-6TA3CWND.js → chunk-V2KJQVYE.js} +42 -21
  44. package/chunks/{chunk-RFK5F45W.js → chunk-VJBEB2K6.js} +1 -1
  45. package/chunks/{chunk-D4IBEO2K.js → chunk-VWE36MUN.js} +1 -1
  46. package/chunks/{chunk-B5TIXHCO.js → chunk-WNWDQ2TO.js} +1 -1
  47. package/chunks/{chunk-S2WCYEK2.js → chunk-WPJMA5AK.js} +2 -2
  48. package/chunks/{chunk-FI5YL4R2.js → chunk-XJ2TBEV7.js} +3 -3
  49. package/chunks/{chunk-3T5R7P4T.js → chunk-XOVYV7TT.js} +4 -4
  50. package/chunks/{chunk-DJGJECBV.js → chunk-YGYJ2FTH.js} +4 -3
  51. package/chunks/{chunk-ZWAWZU6C.js → chunk-YJGPPPUB.js} +37 -9
  52. package/chunks/chunk-YP2DHYNI.js +650 -0
  53. package/chunks/{chunk-DMDWIW3E.js → chunk-Z2VLJEQJ.js} +4 -4
  54. package/chunks/{chunk-EQBC2ZWL.js → chunk-ZPVSDB63.js} +1604 -246
  55. package/chunks/{codex-models-KCUIVS3R.js → codex-models-CI22KIHY.js} +7 -7
  56. package/chunks/{commands-MPPAADGY.js → commands-C2WRSCNB.js} +210 -101
  57. package/chunks/dashboard-XO2X2SPD.js +75 -0
  58. package/chunks/{db-R2AQSESC.js → db-FU3OIGQK.js} +3 -3
  59. package/chunks/{deep-review-Q6BJKEV4.js → deep-review-5AL6QYTK.js} +30 -30
  60. package/chunks/{disclose-GGULOW27.js → disclose-YPV5KIUU.js} +3 -3
  61. package/chunks/{dist-6RNAVFAY.js → dist-ONIRKDH6.js} +29 -29
  62. package/chunks/{dist-OLGNKDB2.js → dist-QLMPTFT7.js} +2 -2
  63. package/chunks/{dist-DWN7U5OV.js → dist-QXJKD743.js} +1 -1
  64. package/chunks/{eval-runner-WCTTIYN4.js → eval-runner-D3RUCU3R.js} +17 -17
  65. package/chunks/{exploit-agent-M3KUMZJH.js → exploit-agent-4E4HXKUA.js} +1 -1
  66. package/chunks/{exploit-autoclimb-QTTWC5WM.js → exploit-autoclimb-5GRXI6VQ.js} +1 -1
  67. package/chunks/{exploit-climb-E4KDELTN.js → exploit-climb-AHQEJ2I2.js} +2 -2
  68. package/chunks/{fix-U5FFJD4F.js → fix-CHD7LXDS.js} +7 -7
  69. package/chunks/{harness-FMKIMEH5.js → harness-E63KDHPG.js} +3 -3
  70. package/chunks/{hunt-scan-RYPWRUQD.js → hunt-scan-ME2Z4CTC.js} +16 -16
  71. package/chunks/{kernel-primitive-CVG2E7MJ.js → kernel-primitive-S566GXWP.js} +2 -2
  72. package/chunks/{kernel-vm-runner-62KISULQ.js → kernel-vm-runner-KREBY4DC.js} +2 -2
  73. package/chunks/{local-engine-WP3I7K7G.js → local-engine-ZRTZVSSX.js} +5 -5
  74. package/chunks/managed-operation-ZMLLRCCQ.js +59 -0
  75. package/chunks/{native-loop-HC77R5NQ.js → native-loop-UV3Z4Z2F.js} +16 -16
  76. package/chunks/{operator-services-E2NONBQS.js → operator-services-JOCREEBA.js} +35 -35
  77. package/chunks/{orchestrate-Z3DW265M.js → orchestrate-ZF6ZTSIQ.js} +30 -30
  78. package/chunks/{prepare-7DTS6RJT.js → prepare-PLDVGLDX.js} +5 -5
  79. package/chunks/{provider-model-discovery-QGUGL3XW.js → provider-model-discovery-3X6DON3Y.js} +7 -2
  80. package/chunks/{remote-workflow-runtime-6CEVRZXS.js → remote-workflow-runtime-GOI4TYP5.js} +2 -2
  81. package/chunks/routing-WCQLO5SP.js +61 -0
  82. package/chunks/{runtime-W6JNDQRO.js → runtime-6ZIXFTW5.js} +2 -2
  83. package/chunks/{runtime-PZJ77QES.js → runtime-TVH5ORUK.js} +11 -7
  84. package/chunks/{scan-stream-6VOJTHTR.js → scan-stream-HJVTWZ44.js} +4 -4
  85. package/chunks/{scope-FHXW6EX6.js → scope-RCYXVGJR.js} +2 -2
  86. package/chunks/service-plugins-TN6KDX4L.js +63 -0
  87. package/chunks/{session-store-DBBI544Y.js → session-store-6QR3CVUA.js} +2 -2
  88. package/chunks/{variant-candidates-DPR6DJ3N.js → variant-candidates-SGLKPPHI.js} +7 -7
  89. package/chunks/{web-recon-prepass-HWDHDQMN.js → web-recon-prepass-GO7CTMVQ.js} +5 -5
  90. package/chunks/{workflow-runtime-PLB32XC3.js → workflow-runtime-CQTDASFA.js} +43 -43
  91. package/dashboard/assets/{abnfDiagram-VCTEODGH-6e39CQKz.js → abnfDiagram-VCTEODGH-DDZsU70-.js} +1 -1
  92. package/dashboard/assets/{arc-ClYun86B.js → arc-iDXNTSL6.js} +1 -1
  93. package/dashboard/assets/{architecture-7GRP2DOG-rM-lWo7E.js → architecture-7GRP2DOG-DJcY9RFg.js} +1 -1
  94. package/dashboard/assets/{architectureDiagram-5GKGNRK7-C9gEGZIU.js → architectureDiagram-5GKGNRK7-d0ZuOniQ.js} +1 -1
  95. package/dashboard/assets/{blockDiagram-I7D4REHJ-Dgh2n5Lf.js → blockDiagram-I7D4REHJ-B-EWfMy1.js} +1 -1
  96. package/dashboard/assets/{c4Diagram-7LVT6UL2-CsorW08z.js → c4Diagram-7LVT6UL2-KcZRuXZC.js} +1 -1
  97. package/dashboard/assets/channel-CeWMIm0w.js +1 -0
  98. package/dashboard/assets/{chunk-4HAMMTFA-4_b_LGGQ.js → chunk-4HAMMTFA-DXWulBlo.js} +1 -1
  99. package/dashboard/assets/{chunk-75Z2AOVW-qzNlKGCp.js → chunk-75Z2AOVW-RiLZItrz.js} +1 -1
  100. package/dashboard/assets/{chunk-DU6HZSFF-SAPICW28.js → chunk-DU6HZSFF-MBcaIyTX.js} +1 -1
  101. package/dashboard/assets/{chunk-F27PBJKO-DlLotIQx.js → chunk-F27PBJKO-kLWCBX_W.js} +1 -1
  102. package/dashboard/assets/{chunk-GMAD6QVW-DNnr65Nb.js → chunk-GMAD6QVW-BeQeSjpW.js} +1 -1
  103. package/dashboard/assets/{chunk-GVQU2GXP-DTwv0VfU.js → chunk-GVQU2GXP-CjCMlOIB.js} +1 -1
  104. package/dashboard/assets/{chunk-IMKFNOWR-B1fk1q_W.js → chunk-IMKFNOWR-BwNst53D.js} +1 -1
  105. package/dashboard/assets/{chunk-L3NEJ4N5-ByVjFIox.js → chunk-L3NEJ4N5-CHXWQrkL.js} +1 -1
  106. package/dashboard/assets/{chunk-OSK3NFVY-DUDCzjbh.js → chunk-OSK3NFVY-B2vd19Ed.js} +1 -1
  107. package/dashboard/assets/{chunk-P2QGCYS3-D_D5qEso.js → chunk-P2QGCYS3-Dk7Fyh6n.js} +1 -1
  108. package/dashboard/assets/{chunk-POPQ4Y6H-CetM-tVm.js → chunk-POPQ4Y6H-CPAgOvYe.js} +1 -1
  109. package/dashboard/assets/{chunk-PWAF6VOD-BcJX4exl.js → chunk-PWAF6VOD-BotyfMha.js} +1 -1
  110. package/dashboard/assets/{chunk-SHT3W25Y-BWQql238.js → chunk-SHT3W25Y-Buz5gLRP.js} +1 -1
  111. package/dashboard/assets/{chunk-SVP7TREG-BSLOD1JE.js → chunk-SVP7TREG-_rpYEZcs.js} +1 -1
  112. package/dashboard/assets/{chunk-TICWLB2K-DReOl-g_.js → chunk-TICWLB2K-DOJxPoec.js} +1 -1
  113. package/dashboard/assets/{chunk-XXDRQBXY-DSdSMeei.js → chunk-XXDRQBXY-EXxKJbAs.js} +1 -1
  114. package/dashboard/assets/classDiagram-ZZMXUADV-DV_h1NoS.js +1 -0
  115. package/dashboard/assets/classDiagram-v2-VYDZK3BY-DV_h1NoS.js +1 -0
  116. package/dashboard/assets/{common-CRRsylCH.js → common-VLJRx-Jq.js} +1 -1
  117. package/dashboard/assets/{cose-bilkent-JH36ORCC-fg-DIBqt.js → cose-bilkent-JH36ORCC-B1SVC57o.js} +1 -1
  118. package/dashboard/assets/{cynefin-OW5HDTMX-XmrbEIFh.js → cynefin-OW5HDTMX-BzhRorj4.js} +1 -1
  119. package/dashboard/assets/{cynefinDiagram-5FMLGOSQ-CoQ7QEPl.js → cynefinDiagram-5FMLGOSQ-JXzRmldX.js} +1 -1
  120. package/dashboard/assets/{dagre-GXQ25YYZ-qtQtsg6c.js → dagre-GXQ25YYZ-1LZ-X0-Z.js} +1 -1
  121. package/dashboard/assets/{diagram-S7CK7UJ4-B_ts4_58.js → diagram-S7CK7UJ4-C_-J_LQ4.js} +1 -1
  122. package/dashboard/assets/{diagram-UQ7AKVKN-DwHbbxFy.js → diagram-UQ7AKVKN-CnxL1k8g.js} +1 -1
  123. package/dashboard/assets/{diagram-VSXAHHWV-2Tg_RG89.js → diagram-VSXAHHWV-WzSb3aby.js} +1 -1
  124. package/dashboard/assets/{diagram-VX7I27RA-BFYp-YjF.js → diagram-VX7I27RA-DKhrMInE.js} +1 -1
  125. package/dashboard/assets/{diagram-Z3DM3KII-DrPiS4V0.js → diagram-Z3DM3KII-CDhI2WGP.js} +1 -1
  126. package/dashboard/assets/{dist-cbVssBvx.js → dist-B0bfBMeP.js} +1 -1
  127. package/dashboard/assets/{ebnfDiagram-PWID7BFC-DCMOZtU2.js → ebnfDiagram-PWID7BFC-iL5NQ1PE.js} +1 -1
  128. package/dashboard/assets/{erDiagram-RLTQ6QDP-CW4rUJGU.js → erDiagram-RLTQ6QDP-RK2Voa5O.js} +1 -1
  129. package/dashboard/assets/{eventmodeling-NTZA5JFV-C2q-Aaav.js → eventmodeling-NTZA5JFV-WgE7OJBb.js} +1 -1
  130. package/dashboard/assets/flowDiagram-HODETNUW-B9YcQ0Aq.js +1 -0
  131. package/dashboard/assets/{ganttDiagram-EL5Y4UJY-C1AqcwIF.js → ganttDiagram-EL5Y4UJY-D8CJXHRF.js} +1 -1
  132. package/dashboard/assets/{gitGraph-4MIJSDKK-DYR76gtd.js → gitGraph-4MIJSDKK-BuZ9Lg04.js} +1 -1
  133. package/dashboard/assets/{gitGraphDiagram-WWUBYQGX-B7hL98CE.js → gitGraphDiagram-WWUBYQGX-LEJMh54j.js} +1 -1
  134. package/dashboard/assets/{info-A6RAGUB7-TXB43LiH.js → info-A6RAGUB7-BL5k3pev.js} +1 -1
  135. package/dashboard/assets/{infoDiagram-27XIBGKW-Dk5dXmh_.js → infoDiagram-27XIBGKW-LJvntUnZ.js} +1 -1
  136. package/dashboard/assets/{ishikawaDiagram-5VMMS53U-BQDuNMka.js → ishikawaDiagram-5VMMS53U-BYTYgKCG.js} +1 -1
  137. package/dashboard/assets/{journeyDiagram-3NMN7TZE-DkustddD.js → journeyDiagram-3NMN7TZE-G25qgQgO.js} +1 -1
  138. package/dashboard/assets/{kanban-definition-UXKFOSKX-BW7Ann84.js → kanban-definition-UXKFOSKX-Bk3uLl1i.js} +1 -1
  139. package/dashboard/assets/{line-DVxcLeru.js → line-i4qHBaWO.js} +1 -1
  140. package/dashboard/assets/{linear-DOM_l9bO.js → linear-DmrqRsKG.js} +1 -1
  141. package/dashboard/assets/{mermaid-parser.core-CKg9fDvJ.js → mermaid-parser.core-BxbKr4QF.js} +3 -3
  142. package/dashboard/assets/{mermaid.core-DruW_5-Y.js → mermaid.core-Cltee6FS.js} +4 -4
  143. package/dashboard/assets/{mindmap-definition-YA3MSWOX-Di5W5VB3.js → mindmap-definition-YA3MSWOX-DkzO2JgS.js} +1 -1
  144. package/dashboard/assets/operations-B4_timQX.css +1 -0
  145. package/dashboard/assets/operations-DwppJviL.js +199 -0
  146. package/dashboard/assets/{packet-AYTQ26CC-BABwqtNu.js → packet-AYTQ26CC-uZQUKnrE.js} +1 -1
  147. package/dashboard/assets/{pegDiagram-XKGWAZYB-Cx4ABT6q.js → pegDiagram-XKGWAZYB-CrOEi00T.js} +1 -1
  148. package/dashboard/assets/{pie-WAS4IAKB-CNdXyrze.js → pie-WAS4IAKB-Dn9_tpQT.js} +1 -1
  149. package/dashboard/assets/{pieDiagram-E7YTZNPT-BilfQbIs.js → pieDiagram-E7YTZNPT-D-niUkzc.js} +1 -1
  150. package/dashboard/assets/{quadrantDiagram-AXDQQJYC-BVmMQHE5.js → quadrantDiagram-AXDQQJYC-CJOTiG5V.js} +1 -1
  151. package/dashboard/assets/{radar-RG4KPBEZ-fKNmDeoK.js → radar-RG4KPBEZ-DIIVz4e8.js} +1 -1
  152. package/dashboard/assets/{railroad-74A4TZTK-DhcvDCOh.js → railroad-74A4TZTK-1kiqDEID.js} +1 -1
  153. package/dashboard/assets/{railroad-abnf-HS5TGJTU-BTRVAmf0.js → railroad-abnf-HS5TGJTU-DK6rQPZR.js} +1 -1
  154. package/dashboard/assets/{railroad-ebnf-LZEXJU2U-CwS8fgC_.js → railroad-ebnf-LZEXJU2U-C6cOgYW4.js} +1 -1
  155. package/dashboard/assets/{railroad-peg-WCYAUIDC-CXuhXlNp.js → railroad-peg-WCYAUIDC-CQ3ptKef.js} +1 -1
  156. package/dashboard/assets/{railroadDiagram-O6MQD6OU-DnBru-jf.js → railroadDiagram-O6MQD6OU-nEfkpa-m.js} +1 -1
  157. package/dashboard/assets/{requirementDiagram-BXWQKSXE-FwdvUZ7_.js → requirementDiagram-BXWQKSXE-CdFMY8tG.js} +1 -1
  158. package/dashboard/assets/{sankeyDiagram-P5KCCOFB-BQvDORai.js → sankeyDiagram-P5KCCOFB-C0KxrFYv.js} +1 -1
  159. package/dashboard/assets/{sequenceDiagram-WJ2MYXX4-FWYQLzcY.js → sequenceDiagram-WJ2MYXX4-DeZ5ATiu.js} +1 -1
  160. package/dashboard/assets/{src-BwkPhlcp.js → src-Cg-chcoE.js} +1 -1
  161. package/dashboard/assets/{stateDiagram-D77RDMKH-CjPBd_Sa.js → stateDiagram-D77RDMKH-B9MwWL5B.js} +1 -1
  162. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-SucFndhx.js +1 -0
  163. package/dashboard/assets/{swimlanes-42K2YHIH-SQLNsa4J.js → swimlanes-42K2YHIH-DB--fwQE.js} +1 -1
  164. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-BzH-rIaK.js +8 -0
  165. package/dashboard/assets/{timeline-definition-24CTP7MA-BxCf20k1.js → timeline-definition-24CTP7MA-DLkkTbWb.js} +1 -1
  166. package/dashboard/assets/{treeView-Q6P3EWNA-BGLYAyGp.js → treeView-Q6P3EWNA-XkZ9rl9H.js} +1 -1
  167. package/dashboard/assets/{treemap-WGGIJYW6-BlzAwncU.js → treemap-WGGIJYW6-JCtVKxCE.js} +1 -1
  168. package/dashboard/assets/{vennDiagram-4TSXK5OY-D76RIZLz.js → vennDiagram-4TSXK5OY-DEb-x29Z.js} +1 -1
  169. package/dashboard/assets/{wardley-WFR3VGLG-Ba_reiVw.js → wardley-WFR3VGLG-DhI7ROY3.js} +1 -1
  170. package/dashboard/assets/{wardleyDiagram-VM6X3IG4-Cux4coOD.js → wardleyDiagram-VM6X3IG4-KNckudc5.js} +1 -1
  171. package/dashboard/assets/{xychartDiagram-S5SC5T6Z-Ch5mvnlH.js → xychartDiagram-S5SC5T6Z-D4c0ynCk.js} +1 -1
  172. package/dashboard/index.html +13 -2
  173. package/package.json +1 -1
  174. package/worker-assets/demo-target/README.md +7 -3
  175. package/chunks/chunk-AL32F74R.js +0 -1123
  176. package/chunks/dashboard-MN7GZLLX.js +0 -75
  177. package/chunks/managed-operation-642WPTLC.js +0 -59
  178. package/chunks/routing-ITJZBJIU.js +0 -61
  179. package/chunks/service-plugins-CN6Q2NSN.js +0 -63
  180. package/dashboard/assets/channel-BBlDqIBl.js +0 -1
  181. package/dashboard/assets/classDiagram-ZZMXUADV-CRH2kB8G.js +0 -1
  182. package/dashboard/assets/classDiagram-v2-VYDZK3BY-CRH2kB8G.js +0 -1
  183. package/dashboard/assets/flowDiagram-HODETNUW-3NOabgG3.js +0 -1
  184. package/dashboard/assets/operations-B-t_k60U.js +0 -194
  185. package/dashboard/assets/operations-D2ZKZFOF.css +0 -1
  186. package/dashboard/assets/stateDiagram-v2-MP3YSRHH-DHmenujm.js +0 -1
  187. package/dashboard/assets/swimlanesDiagram-VR7AAH4N-D1bH4ETZ.js +0 -8
@@ -3,14 +3,14 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  eventBus
6
- } from "./chunk-MY44EZKD.js";
6
+ } from "./chunk-ULRLUXSS.js";
7
7
  import {
8
8
  compareFindingsByBusinessPriority,
9
9
  estimateCost,
10
10
  modelProvider,
11
11
  splitCost,
12
12
  validateScanPlan
13
- } from "./chunk-S3B6HFSM.js";
13
+ } from "./chunk-GYEYTNHK.js";
14
14
 
15
15
  // packages/core/dist/agent/cost-ledger.js
16
16
  var recordedResults = /* @__PURE__ */ new WeakMap();
@@ -4,7 +4,7 @@ const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  RateLimiter,
6
6
  parseRateLimitFlag
7
- } from "./chunk-OFPF26WL.js";
7
+ } from "./chunk-6SNOKNCS.js";
8
8
 
9
9
  // packages/core/dist/stages/web.js
10
10
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  resolveOsecDbPath
6
- } from "./chunk-YXTV2FRE.js";
6
+ } from "./chunk-72PU46MS.js";
7
7
  import {
8
8
  BACKEND_PROTOCOL_VERSION,
9
9
  BackendDescriptorSchema,
@@ -12,7 +12,7 @@ import {
12
12
  backendCapabilitiesForApiPath,
13
13
  homeStateDir,
14
14
  parseBackendHandshake
15
- } from "./chunk-S3B6HFSM.js";
15
+ } from "./chunk-GYEYTNHK.js";
16
16
  import {
17
17
  external_exports
18
18
  } from "./chunk-5XOYTAOK.js";
@@ -46,6 +46,9 @@ function resolveWorkerRepoRoot(moduleUrl = import.meta.url) {
46
46
  directory = parent;
47
47
  }
48
48
  }
49
+ function resolveWorkerDemoRoot(repoRoot, bundleRoot) {
50
+ return existsSync(join(bundleRoot, "dist/worker-assets/demo-target")) ? join(bundleRoot, "dist/worker-assets") : join(repoRoot, "assets/worker-demo");
51
+ }
49
52
  function validateWorkerOptions(options) {
50
53
  if (options.enginePort !== void 0 && (!Number.isInteger(options.enginePort) || options.enginePort < 1 || options.enginePort > 65535)) throw new Error("enginePort must be 1-65535");
51
54
  if (options.ssh && (!SSH_HOST_PATTERN.test(options.ssh) || options.ssh.startsWith("-"))) {
@@ -116,7 +119,7 @@ async function deployWorker(options, runner = createRunner(options)) {
116
119
  }
117
120
  }
118
121
  execFileSync("tar", ["-czf", join(staging, "bundle.tar.gz"), "-C", bundleRoot, "dist"], { stdio: "inherit", env: { ...process.env, COPYFILE_DISABLE: "1" } });
119
- const demoRoot = existsSync(join(bundleRoot, "dist/worker-assets/demo-target")) ? join(bundleRoot, "dist/worker-assets") : join(repoRoot, "research/counterexample-decoder");
122
+ const demoRoot = resolveWorkerDemoRoot(repoRoot, bundleRoot);
120
123
  if (!options.targetGit) execFileSync("tar", ["-czf", join(staging, "demo-target.tar.gz"), "-C", demoRoot, "demo-target"], { stdio: "inherit", env: { ...process.env, COPYFILE_DISABLE: "1" } });
121
124
  shell(`for entry in /proc/[0-9]*/cwd; do
122
125
  test "$(readlink "$entry" 2>/dev/null)" = "${REMOTE_DIR}" || continue
@@ -425,6 +428,9 @@ var BackendConnectionRegistry = class {
425
428
  #descriptors = /* @__PURE__ */ new Map();
426
429
  #pins = /* @__PURE__ */ new Map();
427
430
  #handshakes = /* @__PURE__ */ new Map();
431
+ // Bind the safe classification to the exact returned view, so concurrent
432
+ // reprobes cannot replace another caller's failure. No cause crosses the API.
433
+ #disconnectedStatuses = /* @__PURE__ */ new WeakMap();
428
434
  #pending = /* @__PURE__ */ new Map();
429
435
  #env;
430
436
  #fetch;
@@ -529,7 +535,7 @@ var BackendConnectionRegistry = class {
529
535
  delete descriptor.error;
530
536
  try {
531
537
  const response = await this.#send(row, "/api/backend/handshake", {});
532
- if (!response.ok) throw new BackendConnectionError("Backend handshake was rejected.", response.status === 401 || response.status === 403 ? 403 : 502);
538
+ if (!response.ok) throw new BackendConnectionError("Backend handshake was rejected.", response.status);
533
539
  const raw = BackendHandshakeSchema.parse(await response.json());
534
540
  descriptor.protocolVersion = raw.protocolVersion;
535
541
  if (raw.protocolVersion !== BACKEND_PROTOCOL_VERSION) {
@@ -549,7 +555,9 @@ var BackendConnectionRegistry = class {
549
555
  if (descriptor.status !== "incompatible") descriptor.status = "disconnected";
550
556
  descriptor.error = error instanceof BackendConnectionError ? error.message : "Backend connection failed.";
551
557
  this.#handshakes.delete(id);
552
- return { backend: structuredClone(descriptor), error: descriptor.error };
558
+ const backend = structuredClone(descriptor);
559
+ this.#disconnectedStatuses.set(backend, error instanceof BackendConnectionError ? error.statusCode : 502);
560
+ return { backend, error: descriptor.error };
553
561
  }
554
562
  }
555
563
  async request(id, path, options = {}) {
@@ -559,7 +567,7 @@ var BackendConnectionRegistry = class {
559
567
  const canonical = apiPath(path);
560
568
  const cached = this.#handshakes.get(id);
561
569
  const view = cached && Date.now() - cached.at < 5e3 ? { backend: this.#descriptors.get(id) } : await this.handshake(id);
562
- if (view.backend.status !== "connected") throw new BackendConnectionError(view.backend.error ?? "Backend is disconnected.", view.backend.status === "incompatible" ? 409 : 503);
570
+ if (view.backend.status !== "connected") throw new BackendConnectionError(view.backend.error ?? "Backend is disconnected.", this.#disconnectedStatuses.get(view.backend) ?? (view.backend.status === "incompatible" ? 409 : 503));
563
571
  for (const required of capabilities(canonical)) if (!view.backend.capabilities.includes(required)) throw new BackendConnectionError(`Backend does not support ${required}.`, 409);
564
572
  try {
565
573
  return await this.#send(row, canonical, options);
@@ -3,7 +3,7 @@ import { createRequire as __0CreateRequire } from "node:module";
3
3
  const require = __0CreateRequire(import.meta.url);
4
4
  import {
5
5
  createPresentationEvent
6
- } from "./chunk-S3B6HFSM.js";
6
+ } from "./chunk-GYEYTNHK.js";
7
7
 
8
8
  // packages/core/dist/events/bus.js
9
9
  function presentationEventSink(sink, options = {}) {
@@ -5,10 +5,10 @@ import {
5
5
  formatAuditReport,
6
6
  formatReport,
7
7
  formatReviewReport
8
- } from "./chunk-C6ZMPXN2.js";
8
+ } from "./chunk-FBZBJYZS.js";
9
9
  import {
10
10
  executeManagedOperation
11
- } from "./chunk-JCRQV4FE.js";
11
+ } from "./chunk-MOEVVXML.js";
12
12
  import {
13
13
  deleteSession,
14
14
  isValidSessionId,
@@ -18,7 +18,7 @@ import {
18
18
  sessionsDir,
19
19
  setSessionArchived,
20
20
  storedSessionMetadata
21
- } from "./chunk-ZWAWZU6C.js";
21
+ } from "./chunk-YJGPPPUB.js";
22
22
  import {
23
23
  applyWebConsoleRuntimeSelection,
24
24
  createWebConsoleRuntime,
@@ -28,21 +28,21 @@ import {
28
28
  reloadWebConsoleRuntimeConnection,
29
29
  sanitizeComposerText,
30
30
  savedWebRuntimeSelection
31
- } from "./chunk-EQBC2ZWL.js";
31
+ } from "./chunk-ZPVSDB63.js";
32
32
  import {
33
33
  checkRuntimeAvailability
34
- } from "./chunk-ITHDAIRY.js";
34
+ } from "./chunk-MNK373HF.js";
35
35
  import {
36
36
  consoleExecutionProfile,
37
37
  createIsolatedConsoleSession,
38
38
  loadServicePluginConnections
39
- } from "./chunk-7TIWL6E5.js";
39
+ } from "./chunk-KCABBZHN.js";
40
40
  import {
41
41
  resolveEngagement
42
- } from "./chunk-NO543ZBU.js";
42
+ } from "./chunk-A7G6S5RA.js";
43
43
  import {
44
44
  getSettings
45
- } from "./chunk-RBTJYREN.js";
45
+ } from "./chunk-OILVEROI.js";
46
46
  import {
47
47
  source_default
48
48
  } from "./chunk-HLFS6WV2.js";
@@ -71,10 +71,10 @@ import {
71
71
  runReproductionBundle,
72
72
  runResearch,
73
73
  toToolContextJevRuntime
74
- } from "./chunk-EEP6GBUO.js";
74
+ } from "./chunk-3MWQNNJU.js";
75
75
  import {
76
76
  generatePdfReport
77
- } from "./chunk-AL32F74R.js";
77
+ } from "./chunk-YP2DHYNI.js";
78
78
  import {
79
79
  DockerRunner,
80
80
  HuntMemoryStore,
@@ -90,13 +90,13 @@ import {
90
90
  sendOperatorMessage,
91
91
  withWorkflowAuditExecutionPolicy,
92
92
  workflowPolicyRuntime
93
- } from "./chunk-HFUOUT2B.js";
93
+ } from "./chunk-SIR7XW2S.js";
94
94
  import {
95
95
  oracleForCategory
96
96
  } from "./chunk-PAE7ZAV6.js";
97
97
  import {
98
98
  budgetNativeRuntime
99
- } from "./chunk-HDJSHLRM.js";
99
+ } from "./chunk-SSPP64FF.js";
100
100
  import {
101
101
  applySourceFixCandidate,
102
102
  loadSourceFixProjectInputs,
@@ -106,7 +106,7 @@ import {
106
106
  runSourceFix,
107
107
  saveSourceFixProjectInputs,
108
108
  verifySourceFixCandidate
109
- } from "./chunk-ITEMDJAB.js";
109
+ } from "./chunk-AFJ2UMPR.js";
110
110
  import {
111
111
  LearningStoreError,
112
112
  SecurityWorkflowStore,
@@ -115,32 +115,33 @@ import {
115
115
  listOsecRunDatabasePaths,
116
116
  osecDB,
117
117
  resolveOsecDbPath
118
- } from "./chunk-YXTV2FRE.js";
118
+ } from "./chunk-72PU46MS.js";
119
119
  import {
120
120
  evidenceKindForFinding,
121
121
  executePocSteps
122
122
  } from "./chunk-XPDJE537.js";
123
123
  import {
124
- LlmApiRuntime
125
- } from "./chunk-EIONVEFN.js";
124
+ LlmApiRuntime,
125
+ features
126
+ } from "./chunk-HS2NQ7K6.js";
126
127
  import {
127
128
  WORKBENCH_BROKER_WORKSPACE,
128
129
  isAdmittedSmolvmWorkbench,
129
130
  runWorkbenchBrokerProgram
130
- } from "./chunk-3T5R7P4T.js";
131
+ } from "./chunk-XOVYV7TT.js";
131
132
  import {
132
133
  eventBus
133
- } from "./chunk-MY44EZKD.js";
134
+ } from "./chunk-ULRLUXSS.js";
134
135
  import {
135
136
  redactSensitiveHeaders
136
- } from "./chunk-RFK5F45W.js";
137
+ } from "./chunk-VJBEB2K6.js";
137
138
  import {
138
139
  ScopePolicy,
139
140
  getScopeEnforcementState,
140
141
  loadScope,
141
142
  normalizeScopeHostname,
142
143
  withScopeEnforcement
143
- } from "./chunk-27SXCYWH.js";
144
+ } from "./chunk-RZZ6VPRY.js";
144
145
  import {
145
146
  sanitizedEnv
146
147
  } from "./chunk-5IBCBQEH.js";
@@ -166,7 +167,7 @@ import {
166
167
  resolvePersistedScanResume,
167
168
  severityRank,
168
169
  validateScanPlan
169
- } from "./chunk-S3B6HFSM.js";
170
+ } from "./chunk-GYEYTNHK.js";
170
171
  import {
171
172
  external_exports
172
173
  } from "./chunk-5XOYTAOK.js";
@@ -226,7 +227,7 @@ async function loadCoreModule() {
226
227
  if (!coreModulePromise) {
227
228
  const srcUrl = new URL("../../../core/src/index.ts", import.meta.url);
228
229
  const srcExists = process.versions.bun && existsSync(fileURLToPath(srcUrl));
229
- coreModulePromise = srcExists ? import(srcUrl.href) : import("./dist-6RNAVFAY.js");
230
+ coreModulePromise = srcExists ? import(srcUrl.href) : import("./dist-ONIRKDH6.js");
230
231
  }
231
232
  return coreModulePromise;
232
233
  }
@@ -317,12 +318,13 @@ function printCrossValidatedLeads(summary) {
317
318
  }
318
319
  }
319
320
  function attachedAssessmentTarget(opts) {
320
- const accepted = /* @__PURE__ */ new Set(["target", "targetType", "depth", "format", "runtime", "timeout", "verbose", "plan", "signal", "suppressOutput", "suppressUi", "dbPath", "reportPath", "onEvent", "onReport", "onOutcome", "sessionUiFactory", "costCeilingUsd", "embedded", "mode", "reviewStrategy"]);
321
+ const accepted = /* @__PURE__ */ new Set(["target", "targetType", "depth", "format", "runtime", "timeout", "verbose", "plan", "signal", "suppressOutput", "suppressUi", "dbPath", "reportPath", "onEvent", "onReport", "onOutcome", "sessionUiFactory", "costCeilingUsd", "embedded", "mode", "reviewStrategy", "reviewProfile"]);
321
322
  const inactiveFalse = /* @__PURE__ */ new Set(["changedOnly", "race", "egats", "allowScanners", "seedOnly", "npmDynamicDiscovery", "emitPrDryRun"]);
322
323
  const unsupported = Object.entries(opts).filter(([key, value]) => value !== void 0 && !accepted.has(key) && (value !== false || !inactiveFalse.has(key))).map(([key]) => key);
323
324
  if (opts.runtime !== "api" && opts.runtime !== "auto") unsupported.push("runtime");
324
325
  if (opts.mode !== void 0 && opts.mode !== "web") unsupported.push("mode");
325
326
  if (opts.reviewStrategy !== void 0 && opts.reviewStrategy !== "lenses") unsupported.push("reviewStrategy");
327
+ if (opts.reviewProfile !== void 0 && opts.reviewProfile !== "default") unsupported.push("reviewProfile");
326
328
  if (unsupported.length) throw new Error(`The running engine cannot represent these assessment overrides: ${[...new Set(unsupported)].join(", ")}. Configure or select an engine that supports them; no separate assessment was started.`);
327
329
  const prefix = { "npm-package": "npm:", "pypi-package": "pypi:", "cargo-package": "cargo:", "oci-image": "oci:", "source-code": "source:" }[opts.targetType ?? ""];
328
330
  if (prefix === "source:" || opts.target.startsWith("source:")) {
@@ -392,7 +394,7 @@ async function runUnified(opts) {
392
394
  if (opts.plan) validateScanPlan(opts.plan);
393
395
  const { target, format, runtime, timeout } = opts;
394
396
  const depth = opts.plan?.depth ?? opts.depth;
395
- const attachedEngine = !opts.embedded && !opts.resumeScanId ? await (await import("./local-engine-WP3I7K7G.js")).connectLocalEngine({ dbPath: opts.dbPath, workspace: process.cwd(), model: opts.model, scopePath: opts.scopeFile }) : null;
397
+ const attachedEngine = !opts.embedded && !opts.resumeScanId ? await (await import("./local-engine-ZRTZVSSX.js")).connectLocalEngine({ dbPath: opts.dbPath, workspace: process.cwd(), model: opts.model, scopePath: opts.scopeFile }) : null;
396
398
  if (attachedEngine) {
397
399
  try {
398
400
  opts.signal?.throwIfAborted();
@@ -416,7 +418,7 @@ async function runUnified(opts) {
416
418
  if (opts.embedded) throw new Error("--branch-from requires --resume <run-id>");
417
419
  process.exit(2);
418
420
  }
419
- const { branchJournal } = await import("./dist-6RNAVFAY.js");
421
+ const { branchJournal } = await import("./dist-ONIRKDH6.js");
420
422
  const result = branchJournal({
421
423
  runId: effectiveResumeScanId,
422
424
  fromEntry: opts.branchFromEntry
@@ -475,7 +477,7 @@ async function runUnified(opts) {
475
477
  if (opts.sessionUiFactory) {
476
478
  inkUI = await opts.sessionUiFactory({ target, depth, mode: mode2 });
477
479
  } else {
478
- const { renderScanStream } = await import("./scan-stream-6VOJTHTR.js");
480
+ const { renderScanStream } = await import("./scan-stream-HJVTWZ44.js");
479
481
  inkUI = renderScanStream({ version: VERSION, target, depth, mode: mode2 });
480
482
  }
481
483
  eventHandler = (event) => {
@@ -502,7 +504,7 @@ async function runUnified(opts) {
502
504
  reviewStrategy: _reviewStrategy,
503
505
  ...assessmentOptions
504
506
  } = opts;
505
- const retainedStore = opts.embedded || attachedEngine ? void 0 : new (await import("./dist-OLGNKDB2.js")).SecurityWorkflowStore(opts.dbPath);
507
+ const retainedStore = opts.embedded || attachedEngine ? void 0 : new (await import("./dist-QLMPTFT7.js")).SecurityWorkflowStore(opts.dbPath);
506
508
  const scanIds = [];
507
509
  const dbPaths = [];
508
510
  let assessment;
@@ -998,7 +1000,7 @@ async function readConversationCatalog(options = {}) {
998
1000
  const files = await Promise.all(candidates.slice(0, MAX_FILES).map(async (entry) => {
999
1001
  try {
1000
1002
  const info = await stat(join3(dir, entry.name));
1001
- return { name: entry.name, size: info.size, modified: info.mtimeMs };
1003
+ return { name: entry.name, modified: info.mtimeMs };
1002
1004
  } catch {
1003
1005
  return null;
1004
1006
  }
@@ -1006,27 +1008,23 @@ async function readConversationCatalog(options = {}) {
1006
1008
  const ordered = files.filter((file) => file !== null).sort((a, b) => b.modified - a.modified || a.name.localeCompare(b.name));
1007
1009
  let bytes = 0;
1008
1010
  for (const file of ordered) {
1009
- if (file.size > MAX_FILE_BYTES || bytes + file.size > MAX_READ_BYTES) {
1010
- truncated = true;
1011
- continue;
1012
- }
1013
- bytes += file.size;
1014
1011
  let handle;
1015
1012
  try {
1016
1013
  handle = await open(join3(dir, file.name), constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
1017
1014
  const info = await handle.stat();
1018
- if (!info.isFile() || info.size > file.size) {
1015
+ if (!info.isFile() || info.size > MAX_FILE_BYTES || bytes + info.size > MAX_READ_BYTES) {
1019
1016
  truncated = true;
1020
1017
  continue;
1021
1018
  }
1022
- const buffer = Buffer.alloc(file.size + 1);
1019
+ bytes += info.size;
1020
+ const buffer = Buffer.alloc(info.size + 1);
1023
1021
  let bytesRead = 0;
1024
1022
  while (bytesRead < buffer.length) {
1025
1023
  const chunk = await handle.read(buffer, bytesRead, buffer.length - bytesRead, bytesRead);
1026
1024
  if (!chunk.bytesRead) break;
1027
1025
  bytesRead += chunk.bytesRead;
1028
1026
  }
1029
- if (bytesRead > file.size) {
1027
+ if (bytesRead > info.size) {
1030
1028
  truncated = true;
1031
1029
  continue;
1032
1030
  }
@@ -1172,7 +1170,7 @@ function assertSessionContract(session) {
1172
1170
  if (!session || typeof session !== "object" || !session.ready || typeof session.ready.then !== "function") {
1173
1171
  throw new Error("Built engine does not implement asynchronous session readiness");
1174
1172
  }
1175
- for (const method of ["send", "cleanup", "exportCheckpoint", "prepareHandoff", "setAutonomyMode", "configureEngagement", "configureWorkspace", "clearConversation", "stopPersistentAgent", "stopPersistentAgents"]) {
1173
+ for (const method of ["send", "cleanup", "exportCheckpoint", "prepareHandoff", "configureEngagement", "configureWorkspace", "clearConversation", "stopPersistentAgent", "stopPersistentAgents"]) {
1176
1174
  if (typeof session[method] !== "function") throw new Error(`Built engine omitted ${method}`);
1177
1175
  }
1178
1176
  }
@@ -1400,10 +1398,6 @@ function withDevEngineUpdates(initial, config, closeStore) {
1400
1398
  get(_target, key) {
1401
1399
  if (key === "send") return send;
1402
1400
  if (key === "cleanup") return cleanup;
1403
- if (key === "setAutonomyMode") return (mode2) => {
1404
- current.setAutonomyMode(mode2);
1405
- handoffCandidate?.setAutonomyMode(mode2);
1406
- };
1407
1401
  if (key === "configureWorkspace") return (path) => {
1408
1402
  current.configureWorkspace(path);
1409
1403
  };
@@ -1433,10 +1427,10 @@ var CONSOLE_JEV_FEATURES = /* @__PURE__ */ new Set([
1433
1427
  "foxguard"
1434
1428
  ]);
1435
1429
  function consoleJevRuntimeFromEnvironment() {
1436
- const features = [...new Set(
1430
+ const features2 = [...new Set(
1437
1431
  (process.env["ZERO_JEV_FEATURES"] ?? "").split(",").map((feature) => feature.trim()).filter((feature) => CONSOLE_JEV_FEATURES.has(feature))
1438
1432
  )];
1439
- return toToolContextJevRuntime(createConsoleJevRuntime({ provider: "direct", features }));
1433
+ return toToolContextJevRuntime(createConsoleJevRuntime({ provider: "direct", features: features2 }));
1440
1434
  }
1441
1435
  function createLocalConsoleSession(config, dbPath, options = {}) {
1442
1436
  config = { ...config, codebaseLearning: config.codebaseLearning ?? true };
@@ -1802,8 +1796,9 @@ function scopePolicy(value) {
1802
1796
  }
1803
1797
  function configuration(value) {
1804
1798
  const raw = object(value, "Configuration");
1805
- allowedKeys(raw, ["title", "target", "autonomyMode", "scope", "runtime", "workspacePath", "modelSource"]);
1799
+ allowedKeys(raw, ["title", "target", "autonomyMode", "scope", "runtime", "workspacePath", "modelSource", "webSearchEnabled"]);
1806
1800
  const result = {};
1801
+ if (raw.webSearchEnabled !== void 0) result.webSearchEnabled = external_exports.boolean().parse(raw.webSearchEnabled);
1807
1802
  if (raw.modelSource !== void 0) result.modelSource = external_exports.object({ kind: external_exports.literal("local"), grantId: external_exports.string().uuid() }).strict().parse(raw.modelSource);
1808
1803
  if (raw.workspacePath !== void 0) result.workspacePath = text(raw.workspacePath, "Workspace folder", MAX_TARGET_LENGTH);
1809
1804
  if (raw.title !== void 0) result.title = text(raw.title, "Title", 200);
@@ -1996,7 +1991,7 @@ var ConsoleGateway = class {
1996
1991
  }
1997
1992
  #createRecord(value) {
1998
1993
  const raw = object(value, "Session");
1999
- allowedKeys(raw, ["target", "role", "autonomyMode", "title", "scope", "runtime", "findingId", "findingIntent", "modelSource", "workflowId", "skillId"]);
1994
+ allowedKeys(raw, ["target", "role", "autonomyMode", "title", "scope", "runtime", "findingId", "findingIntent", "modelSource", "workflowId", "skillId", "webSearchEnabled"]);
2000
1995
  const id = this.#createId();
2001
1996
  if (!isValidSessionId(id) || this.#sessions.has(id)) throw new ConsoleGatewayError("Generated session ID is invalid or already in use.", 500);
2002
1997
  const now = this.#now().toISOString();
@@ -2046,6 +2041,7 @@ var ConsoleGateway = class {
2046
2041
  createdAt: now,
2047
2042
  updatedAt: now,
2048
2043
  target: raw.target === void 0 ? "" : text(raw.target, "Target", MAX_TARGET_LENGTH, true),
2044
+ webSearchEnabled: raw.webSearchEnabled === void 0 ? features.webSearch : external_exports.boolean().parse(raw.webSearchEnabled),
2049
2045
  role: raw.role === void 0 ? "audit" : role(raw.role),
2050
2046
  autonomyMode: raw.autonomyMode === void 0 ? DEFAULT_AUTONOMY_MODE : mode(raw.autonomyMode),
2051
2047
  title: raw.title === void 0 ? "New chat" : text(raw.title, "Title", 200),
@@ -2275,6 +2271,11 @@ var ConsoleGateway = class {
2275
2271
  async configure(id, value) {
2276
2272
  const managed = this.#requireOpen(id);
2277
2273
  const input = configuration(value);
2274
+ if (input.webSearchEnabled !== void 0) {
2275
+ this.#assertIdle(managed);
2276
+ if ([...managed.workers.values()].some((worker) => Object.hasOwn(ACTIVE_WORKERS, worker.status))) throw new ConsoleGatewayError("Finish active agents before changing web search.", 409);
2277
+ if (managed.session && !managed.session.setWebSearchEnabled) throw new ConsoleGatewayError("This engine does not support changing web search. Start a new chat with the setting selected.", 409);
2278
+ }
2278
2279
  if (input.modelSource) {
2279
2280
  this.#assertIdle(managed);
2280
2281
  if (!this.#options.remoteProviderRelays) throw new ConsoleGatewayError("This host does not support a local model relay.", 409);
@@ -2347,7 +2348,7 @@ var ConsoleGateway = class {
2347
2348
  const hadRuntime = managed.runtime !== null;
2348
2349
  await this.#ensureSession(managed);
2349
2350
  if (hadRuntime && managed.runtime) {
2350
- managed.info = managed.modelRelayId ? { ...describeWebConsoleRuntime(managed.runtime), modelSource: "local" } : await reloadWebConsoleRuntimeConnection(managed.runtime);
2351
+ managed.info = managed.modelRelayId ? { ...describeWebConsoleRuntime(managed.runtime), modelSource: "local" } : await reloadWebConsoleRuntimeConnection(managed.runtime, { allowChatGptPlan: this.#options.allowChatGptPlan !== false });
2351
2352
  managed.session?.reconfigureRuntime({ contextWindowTokens: managed.info.contextWindowTokens });
2352
2353
  }
2353
2354
  if (managed.status !== "closed") managed.status = "ready";
@@ -2432,7 +2433,7 @@ var ConsoleGateway = class {
2432
2433
  async resume(id, value = {}) {
2433
2434
  const stored = this.#stored(id);
2434
2435
  const raw = object(value, "Resume configuration");
2435
- allowedKeys(raw, ["title", "role", "runtime", "autonomyMode", "target", "scope"]);
2436
+ allowedKeys(raw, ["title", "role", "runtime", "autonomyMode", "target", "scope", "webSearchEnabled"]);
2436
2437
  if (raw.title !== void 0) text(raw.title, "Title", 200);
2437
2438
  if (raw.target !== void 0) text(raw.target, "Target", MAX_TARGET_LENGTH, true);
2438
2439
  if (raw.role !== void 0) role(raw.role);
@@ -2453,6 +2454,7 @@ var ConsoleGateway = class {
2453
2454
  const defaults2 = {
2454
2455
  autonomyMode: "standard",
2455
2456
  target: configuration2?.target ?? stored.target ?? "",
2457
+ ...configuration2?.webSearchEnabled !== void 0 ? { webSearchEnabled: configuration2.webSearchEnabled } : {},
2456
2458
  ...configuration2?.workflowId ? { workflowId: configuration2.workflowId } : {},
2457
2459
  ...configuration2?.skillId ? { skillId: configuration2.skillId } : {},
2458
2460
  ...configuration2 ? { role: configuration2.role, runtime: configuration2.runtime } : stored.model ? { runtime: { model: stored.model } } : {}
@@ -2462,6 +2464,7 @@ var ConsoleGateway = class {
2462
2464
  managed.initialMessages = initialMessages;
2463
2465
  managed.workspacePath = stored.cwd;
2464
2466
  managed.savedId = id;
2467
+ managed.resumePending = true;
2465
2468
  managed.title = raw.title === void 0 ? stored.summary ?? stored.preview ?? "Resumed chat" : managed.title;
2466
2469
  if (configuration2?.modelSource === "local") {
2467
2470
  managed.requiresModelRelay = true;
@@ -2760,10 +2763,10 @@ var ConsoleGateway = class {
2760
2763
  const skillDiscoveryOptions = this.#options.skillDiscoveryOptions ? () => this.#options.skillDiscoveryOptions(managed.workspacePath ?? this.#projectPath ?? process.cwd()) : void 0;
2761
2764
  if (managed.modelRelayId && consoleExecutionProfile(this.#options.homeDir) === "smolvm") throw new ConsoleGatewayError("Local model relays currently require the operator-selected host execution profile on this host.", 409);
2762
2765
  if (this.#options.createSession) {
2763
- session = await this.#options.createSession({ scanId: managed.id, target: managed.target, role: managed.role, autonomyMode: managed.autonomyMode, scope: managed.scope, skillDiscoveryOptions, skillAuthoring, skillEditor, workspaceRoot: managed.workspacePath ?? this.#projectPath, initialMessages: managed.initialMessages, codebaseLearning: true, ...this.#sourceLearningStore ? { learningStore: this.#sourceLearningStore } : {}, ...this.#workflowLifecycle ? { workflowLifecycle: this.#workflowCallbacks(managed) } : {}, ...callbacks });
2766
+ session = await this.#options.createSession({ scanId: managed.id, target: managed.target, role: managed.role, autonomyMode: managed.autonomyMode, webSearchEnabled: managed.webSearchEnabled, scope: managed.scope, skillDiscoveryOptions, skillAuthoring, skillEditor, workspaceRoot: managed.workspacePath ?? this.#projectPath, initialMessages: managed.initialMessages, codebaseLearning: true, ...this.#sourceLearningStore ? { learningStore: this.#sourceLearningStore } : {}, ...this.#workflowLifecycle ? { workflowLifecycle: this.#workflowCallbacks(managed) } : {}, ...callbacks });
2764
2767
  } else if (consoleExecutionProfile(this.#options.homeDir) === "smolvm") {
2765
2768
  if (!managed.runtime) {
2766
- const created = await createWebConsoleRuntime(managed.selection);
2769
+ const created = await createWebConsoleRuntime(managed.selection, { allowChatGptPlan: this.#options.allowChatGptPlan !== false });
2767
2770
  managed.runtime = created.runtime;
2768
2771
  managed.info = created.info;
2769
2772
  }
@@ -2775,6 +2778,7 @@ var ConsoleGateway = class {
2775
2778
  target: managed.target,
2776
2779
  role: managed.role,
2777
2780
  autonomyMode: managed.autonomyMode,
2781
+ webSearchEnabled: managed.webSearchEnabled,
2778
2782
  scope: managed.scope,
2779
2783
  initialMessages: managed.initialMessages,
2780
2784
  skillDiscoveryOptions,
@@ -2801,7 +2805,7 @@ var ConsoleGateway = class {
2801
2805
  } else {
2802
2806
  managed.execution = { backend: "local", status: "ready", workspacePath: this.#projectPath };
2803
2807
  if (!managed.runtime) {
2804
- const created = await createWebConsoleRuntime(managed.selection);
2808
+ const created = await createWebConsoleRuntime(managed.selection, { allowChatGptPlan: this.#options.allowChatGptPlan !== false });
2805
2809
  managed.runtime = created.runtime;
2806
2810
  managed.info = created.info;
2807
2811
  }
@@ -2820,6 +2824,7 @@ var ConsoleGateway = class {
2820
2824
  target: managed.target,
2821
2825
  role: managed.role,
2822
2826
  autonomyMode: managed.autonomyMode,
2827
+ webSearchEnabled: managed.webSearchEnabled,
2823
2828
  scope: managed.scope,
2824
2829
  initialMessages: managed.initialMessages,
2825
2830
  codebaseLearning: true,
@@ -2855,6 +2860,7 @@ var ConsoleGateway = class {
2855
2860
  throw new ConsoleGatewayError("Console session is closed.", 410);
2856
2861
  }
2857
2862
  managed.session = session;
2863
+ managed.resumePending = false;
2858
2864
  if (managed.status === "failed") managed.status = "ready";
2859
2865
  managed.initialMessages = [];
2860
2866
  return session;
@@ -3004,14 +3010,17 @@ var ConsoleGateway = class {
3004
3010
  onUsage: (usage) => {
3005
3011
  managed.usage.inputTokens += usage.inputTokens;
3006
3012
  managed.usage.outputTokens += usage.outputTokens;
3007
- const model = managed.runtime?.resolvedModel() ?? managed.info?.model;
3008
- if (model && Object.hasOwn(MODEL_PRICING, model)) {
3009
- if (managed.usage.inputTokens === usage.inputTokens && managed.usage.outputTokens === usage.outputTokens) managed.usage.costUnavailable = false;
3013
+ const model = usage.kind === "worker" ? usage.model : usage.model ?? managed.runtime?.resolvedModel() ?? managed.info?.model;
3014
+ if (!usage.usageUnavailable && model && Object.hasOwn(MODEL_PRICING, model)) {
3015
+ if (managed.usage.costUsd === void 0 && managed.usage.inputTokens === usage.inputTokens && managed.usage.outputTokens === usage.outputTokens) managed.usage.costUnavailable = false;
3010
3016
  managed.usage.costUsd = (managed.usage.costUsd ?? 0) + estimateCost(usage, model);
3011
3017
  managed.usage.costKind = "estimated";
3012
- } else managed.usage.costUnavailable = true;
3018
+ } else {
3019
+ managed.usage.costUnavailable = true;
3020
+ managed.usage.costUsd ??= 0;
3021
+ }
3013
3022
  if (usage.kind === "planner") managed.contextInputTokens = usage.inputTokens;
3014
- this.#emit(managed, { type: "usage", usage: { ...usage, turnTokenBudget: Number.isFinite(usage.turnTokenBudget) ? usage.turnTokenBudget : null } });
3023
+ this.#emit(managed, { type: "usage", usage: { ...usage, turnTokenBudget: Number.isFinite(usage.turnTokenBudget) ? usage.turnTokenBudget : null, maxToolIterations: Number.isFinite(usage.maxToolIterations) ? usage.maxToolIterations : null } });
3015
3024
  },
3016
3025
  onNotice: (text3) => this.#emit(managed, { type: "notice", text: text3 }),
3017
3026
  onCompaction: (event) => {
@@ -3247,7 +3256,7 @@ var ConsoleGateway = class {
3247
3256
  }
3248
3257
  }
3249
3258
  #outcome(outcome) {
3250
- return { assistantText: outcome.assistantText, stopReason: outcome.stopReason, budget: { ...outcome.budget, tokenBudget: Number.isFinite(outcome.budget.tokenBudget) ? outcome.budget.tokenBudget : null }, usage: { ...outcome.usage }, ...outcome.error ? { error: outcome.error } : {}, ...outcome.contextInputTokens !== void 0 ? { contextInputTokens: outcome.contextInputTokens } : {}, ...outcome.outputCap ? { outputCap: { ...outcome.outputCap, checkpoint: json(outcome.outputCap.checkpoint) } } : {} };
3259
+ return { assistantText: outcome.assistantText, stopReason: outcome.stopReason, budget: { ...outcome.budget, maxToolIterations: Number.isFinite(outcome.budget.maxToolIterations) ? outcome.budget.maxToolIterations : null, tokenBudget: Number.isFinite(outcome.budget.tokenBudget) ? outcome.budget.tokenBudget : null }, usage: { ...outcome.usage }, ...outcome.error ? { error: outcome.error } : {}, ...outcome.contextInputTokens !== void 0 ? { contextInputTokens: outcome.contextInputTokens } : {}, ...outcome.outputCap ? { outputCap: { ...outcome.outputCap, checkpoint: json(outcome.outputCap.checkpoint) } } : {} };
3251
3260
  }
3252
3261
  #cancelTurn(managed) {
3253
3262
  for (const request of managed.workflowRequests.values()) if (request.turnOwner === managed.turnOwner && request.status === "queued") {
@@ -3307,7 +3316,7 @@ var ConsoleGateway = class {
3307
3316
  managed.runtime.reconfigure({ model: input.runtime.model, provider: input.runtime.providerId, agentModels: input.runtime.agentModels, singleModel: input.runtime.singleModel, autoRoute: input.runtime.autoRoute });
3308
3317
  if (input.runtime.reasoningEffort) managed.runtime.setReasoningEffort(input.runtime.reasoningEffort);
3309
3318
  return { ...describeWebConsoleRuntime(managed.runtime), modelSource: "local" };
3310
- })() : await applyWebConsoleRuntimeSelection(managed.runtime, input.runtime);
3319
+ })() : await applyWebConsoleRuntimeSelection(managed.runtime, input.runtime, { allowChatGptPlan: this.#options.allowChatGptPlan !== false });
3311
3320
  managed.info = info;
3312
3321
  managed.session?.reconfigureRuntime({ contextWindowTokens: info.contextWindowTokens });
3313
3322
  managed.selection = { ...managed.selection, ...input.runtime };
@@ -3315,6 +3324,10 @@ var ConsoleGateway = class {
3315
3324
  }
3316
3325
  if (input.target !== void 0) managed.target = input.target;
3317
3326
  if (input.scope !== void 0) managed.scope = input.scope === null ? void 0 : ScopePolicy.fromJson(input.scope);
3327
+ if (input.webSearchEnabled !== void 0) {
3328
+ await managed.session?.setWebSearchEnabled?.(input.webSearchEnabled);
3329
+ managed.webSearchEnabled = input.webSearchEnabled;
3330
+ }
3318
3331
  if (input.autonomyMode) {
3319
3332
  managed.autonomyMode = input.autonomyMode;
3320
3333
  managed.session?.setAutonomyMode(input.autonomyMode);
@@ -3440,6 +3453,7 @@ var ConsoleGateway = class {
3440
3453
  return stored;
3441
3454
  }
3442
3455
  #save(managed) {
3456
+ if (managed.resumePending) return true;
3443
3457
  const messages = managed.session?.messages ?? managed.initialMessages;
3444
3458
  const id = managed.savedId ?? managed.id;
3445
3459
  const consoleState = {
@@ -3447,6 +3461,7 @@ var ConsoleGateway = class {
3447
3461
  ...managed.requiresModelRelay ? { modelSource: "local" } : {},
3448
3462
  target: managed.session?.target ?? managed.target,
3449
3463
  role: managed.role,
3464
+ webSearchEnabled: managed.session?.webSearchEnabled ?? managed.webSearchEnabled,
3450
3465
  ...managed.workflowId ? { workflowId: managed.workflowId } : {},
3451
3466
  ...managed.skillId ? { skillId: managed.skillId } : {},
3452
3467
  runtime: savedWebRuntimeSelection(managed.selection, managed.info)
@@ -3478,7 +3493,7 @@ var ConsoleGateway = class {
3478
3493
  return { id, name: call.name, arguments: json(call.arguments) };
3479
3494
  }
3480
3495
  #summary(managed) {
3481
- return { id: managed.id, ...managed.workflowId ? { workflowId: managed.workflowId } : {}, ...managed.skillId ? { skillId: managed.skillId } : {}, ...managed.savedId ? { savedId: managed.savedId } : {}, target: managed.session?.target ?? managed.target, role: managed.role, autonomyMode: managed.session?.autonomyMode ?? managed.autonomyMode, scopeConfigured: Boolean(managed.session?.scope ?? managed.scope), localScopeConfigured: Boolean(managed.session?.localScopePath), status: managed.status, createdAt: managed.createdAt, updatedAt: managed.updatedAt, title: managed.title, messageCount: (managed.session?.messages ?? managed.initialMessages).length + managed.queued.length, execution: structuredClone(managed.execution), ...managed.info ? { runtime: structuredClone(managed.info) } : {}, ...managed.pendingConfiguration ? { pendingConfiguration: structuredClone(managed.pendingConfiguration) } : {} };
3496
+ return { id: managed.id, ...managed.workflowId ? { workflowId: managed.workflowId } : {}, ...managed.skillId ? { skillId: managed.skillId } : {}, ...managed.savedId ? { savedId: managed.savedId } : {}, target: managed.session?.target ?? managed.target, role: managed.role, autonomyMode: managed.session?.autonomyMode ?? managed.autonomyMode, webSearchEnabled: managed.session?.webSearchEnabled ?? managed.webSearchEnabled, scopeConfigured: Boolean(managed.session?.scope ?? managed.scope), localScopeConfigured: Boolean(managed.session?.localScopePath), status: managed.status, createdAt: managed.createdAt, updatedAt: managed.updatedAt, title: managed.title, messageCount: (managed.session?.messages ?? managed.initialMessages).length + managed.queued.length, execution: structuredClone(managed.execution), ...managed.info ? { runtime: structuredClone(managed.info) } : {}, ...managed.pendingConfiguration ? { pendingConfiguration: structuredClone(managed.pendingConfiguration) } : {} };
3482
3497
  }
3483
3498
  #emitSession(managed) {
3484
3499
  this.#emit(managed, { type: "session", session: this.#summary(managed) });
@@ -3856,7 +3871,7 @@ function parseDurationMs(raw) {
3856
3871
  }
3857
3872
  }
3858
3873
  async function runKernelFindingVerify(opts) {
3859
- const { verifyStaticKernelFinding, applyVerificationToFinding } = await import("./dist-6RNAVFAY.js");
3874
+ const { verifyStaticKernelFinding, applyVerificationToFinding } = await import("./dist-ONIRKDH6.js");
3860
3875
  const rawFinding = readJson(opts.findingPath, "finding");
3861
3876
  let finding;
3862
3877
  try {
@@ -4677,7 +4692,7 @@ function createResearchWorkflowExecutors(options) {
4677
4692
  const target = await scopedPath(options.workspace, context.target);
4678
4693
  const selected = options.model ?? options.runtime.resolvedModel?.();
4679
4694
  if (input.models?.some((model) => model !== selected)) throw new Error("Workflow deep review models must match its bound model connection.");
4680
- const { runDeepReview } = await import("./deep-review-Q6BJKEV4.js");
4695
+ const { runDeepReview } = await import("./deep-review-5AL6QYTK.js");
4681
4696
  const result = await runDeepReview({
4682
4697
  ...input,
4683
4698
  target,