@qwen-code/qwen-code 0.23.5-preview.0 → 0.24.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 (480) hide show
  1. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  2. package/bundled/qc-helper/docs/features/goals.md +4 -2
  3. package/bundled/qc-helper/docs/features/omni-fixed-policies-preset.json +242 -0
  4. package/bundled/qc-helper/docs/features/omni-media-policies.md +443 -0
  5. package/bundled/qc-helper/docs/overview.md +1 -1
  6. package/bundled/qc-helper/docs/quickstart.md +2 -3
  7. package/chunks/MaxSizedBox-I5COUCHZ.js +148 -0
  8. package/chunks/{StandaloneSessionPicker-V635V72I.js → StandaloneSessionPicker-KUGOBVEW.js} +114 -90
  9. package/chunks/acp-subagent-executor-PRPMLKVJ.js +164 -0
  10. package/chunks/{acpAgent-3DPWZTNC.js → acpAgent-EHXZXVUB.js} +269 -194
  11. package/chunks/{agent-KIHGINKN.js → agent-FWPNJI6N.js} +59 -49
  12. package/chunks/agent-headless-M5Z7WIDL.js +104 -0
  13. package/chunks/{anthropicContentGenerator-4FGOM5LK.js → anthropicContentGenerator-FLTEUSIQ.js} +30 -27
  14. package/chunks/{artifact-tool-MUTNH4NI.js → artifact-tool-3MWM6SN2.js} +11 -7
  15. package/chunks/{askUserQuestion-AKIRLVB5.js → askUserQuestion-YFFBB4K3.js} +6 -4
  16. package/chunks/bridge-EWCKRGWY.js +156 -0
  17. package/chunks/{build-5KWQBWEQ.js → build-5OQN7CDU.js} +1 -1
  18. package/chunks/caption-audio-UXXLI3JZ.js +443 -0
  19. package/chunks/caption-image-B7O4TUFP.js +247 -0
  20. package/chunks/{channel-management-service-RRILWSXX.js → channel-management-service-GRJG5R46.js} +1 -1
  21. package/chunks/channel-settings-store-NXZNLT5L.js +158 -0
  22. package/chunks/{channel-worker-group-3DUJFZJR.js → channel-worker-group-SCSKCSBJ.js} +4 -4
  23. package/chunks/{channel-worker-manager-E5UW2VLA.js → channel-worker-manager-AHCZCKON.js} +4 -4
  24. package/chunks/{channel-worker-supervisor-VN33GSEC.js → channel-worker-supervisor-BGUAVITB.js} +3 -3
  25. package/chunks/{chunk-3LLEB5CU.js → chunk-24ZB2JNI.js} +2 -2
  26. package/chunks/{chunk-5NUKK2DT.js → chunk-25FMWESU.js} +47 -8
  27. package/chunks/{chunk-3WWPEFMX.js → chunk-2FQM443D.js} +82 -4
  28. package/chunks/{chunk-VEXUA6DX.js → chunk-2FRZ4ZP2.js} +13 -11
  29. package/chunks/{chunk-WBSJ6VPZ.js → chunk-2GNZTJRK.js} +3 -3
  30. package/chunks/{chunk-YP2K3WOS.js → chunk-2VWXODMY.js} +7 -4
  31. package/chunks/{chunk-L2A5VBDL.js → chunk-2ZCLSPE4.js} +9 -9
  32. package/chunks/{chunk-KEM7MWS7.js → chunk-366JNNY7.js} +6 -4
  33. package/chunks/{chunk-TKF4JINY.js → chunk-3FEGERVL.js} +1 -1
  34. package/chunks/{chunk-TDKUXSJO.js → chunk-3MW6PPA5.js} +1 -1
  35. package/chunks/{chunk-4LIPOIXS.js → chunk-3NHJLWOD.js} +1 -1
  36. package/chunks/{chunk-3UGMLA4V.js → chunk-3V7RNGLC.js} +10 -10
  37. package/chunks/{chunk-XICCGDWF.js → chunk-3WIPATJX.js} +2 -2
  38. package/chunks/chunk-43QUA4MC.js +135 -0
  39. package/chunks/{chunk-Q2SAQTEJ.js → chunk-4B7U3KQP.js} +1 -1
  40. package/chunks/{chunk-SFL6U7U7.js → chunk-4JFRCIMW.js} +2 -2
  41. package/chunks/{chunk-TPY6HW55.js → chunk-4OZY6LN2.js} +12 -6
  42. package/chunks/{chunk-IVFTLUZD.js → chunk-4SZ2636R.js} +3 -3
  43. package/chunks/{chunk-7CLLH5TI.js → chunk-4YS7RMCB.js} +6 -4
  44. package/chunks/{chunk-NQ272MQG.js → chunk-5XK2YELE.js} +7 -5
  45. package/chunks/{chunk-HX4WXX3H.js → chunk-65YADOPT.js} +89 -74
  46. package/chunks/chunk-6C3D7BKK.js +153 -0
  47. package/chunks/{chunk-DC4ZNGH4.js → chunk-6DB6UHY3.js} +3 -3
  48. package/chunks/{chunk-WZWTY7SG.js → chunk-6IW6SX75.js} +6 -6
  49. package/chunks/{chunk-HYHSMTRA.js → chunk-6XRR4RYH.js} +4 -4
  50. package/chunks/{chunk-AXPOOQAW.js → chunk-736AZVPL.js} +2 -2
  51. package/chunks/{chunk-UQGRJTDK.js → chunk-7JWD2EML.js} +3 -3
  52. package/chunks/{chunk-BUQN5LTI.js → chunk-7PQ65Z5F.js} +2 -2
  53. package/chunks/{chunk-43Y26NPF.js → chunk-A5EWSUYT.js} +3 -3
  54. package/chunks/{chunk-VQDWCQOE.js → chunk-ANKISCKU.js} +1 -0
  55. package/chunks/{chunk-NXUZFW3G.js → chunk-AUFTA63J.js} +1 -1
  56. package/chunks/{chunk-4QPVZA5J.js → chunk-AVVSSP4R.js} +3 -3
  57. package/chunks/{chunk-36SDZ2Q4.js → chunk-B3HGO6BB.js} +7 -5
  58. package/chunks/{chunk-6USYH3EU.js → chunk-B3XJFEEH.js} +5 -3
  59. package/chunks/{chunk-GSKX53AN.js → chunk-BA6AXQDA.js} +1 -1
  60. package/chunks/{chunk-FBY32737.js → chunk-BHHR5MEI.js} +4 -4
  61. package/chunks/{chunk-FX6PZBOV.js → chunk-BJ2TJY7V.js} +4 -4
  62. package/chunks/chunk-BKVPLSEI.js +133 -0
  63. package/chunks/chunk-BQMSZSG6.js +21 -0
  64. package/chunks/{chunk-BW2SMO6L.js → chunk-BXAU2UKM.js} +1 -1
  65. package/chunks/{chunk-3LMDSCLU.js → chunk-C4FISGDN.js} +2 -2
  66. package/chunks/{chunk-XFFRI3WM.js → chunk-CA63HYHU.js} +4 -2
  67. package/chunks/{chunk-IXO2OCIP.js → chunk-CKNBSVBC.js} +12 -8
  68. package/chunks/{chunk-347O2YZJ.js → chunk-CNG7ILRW.js} +39 -61
  69. package/chunks/chunk-CQULG2GJ.js +1330 -0
  70. package/chunks/{chunk-VVI7MK3V.js → chunk-CTGMXP4A.js} +9 -7
  71. package/chunks/{chunk-QT6Z2IBF.js → chunk-CYFQLCCG.js} +2 -2
  72. package/chunks/chunk-DBDJRURL.js +42 -0
  73. package/chunks/{chunk-X7AYIXC7.js → chunk-DJLCK66M.js} +5 -3
  74. package/chunks/chunk-DJYHML3Y.js +121 -0
  75. package/chunks/{chunk-MO4XID7S.js → chunk-DNDECZXY.js} +3 -3
  76. package/chunks/{chunk-D7JMO2GP.js → chunk-DNHL4S5B.js} +1 -1
  77. package/chunks/{chunk-WL36KHUQ.js → chunk-DTSG4EHA.js} +11 -9
  78. package/chunks/{chunk-M23GFJ5B.js → chunk-EHMLJKF5.js} +1 -1
  79. package/chunks/{chunk-TIGXX4PA.js → chunk-EKBQJ627.js} +2 -2
  80. package/chunks/{chunk-RSWBT7AZ.js → chunk-ERIBG3BX.js} +35 -551
  81. package/chunks/{chunk-PPJSG2PU.js → chunk-EVZT24AF.js} +6 -142
  82. package/chunks/{chunk-E2VSBAFA.js → chunk-FL2EJUOY.js} +5 -5
  83. package/chunks/{chunk-2C5TR6HN.js → chunk-FSNLTHNG.js} +1 -1
  84. package/chunks/chunk-FTKXJMQV.js +255 -0
  85. package/chunks/{chunk-TRZ22SG5.js → chunk-FXPP7VLM.js} +6 -4
  86. package/chunks/{chunk-CDDP4ONL.js → chunk-G3PBYAGM.js} +60 -134
  87. package/chunks/{chunk-AEWCOE64.js → chunk-GACWUBXV.js} +2 -2
  88. package/chunks/{chunk-OWUAZXXN.js → chunk-GHG4PQY2.js} +3 -3
  89. package/chunks/{chunk-VU3XMZ5I.js → chunk-GHZJQCSZ.js} +3 -3
  90. package/chunks/{chunk-FIJODK52.js → chunk-GJHAV2F7.js} +3 -3
  91. package/chunks/{chunk-36NRLIR6.js → chunk-GQZA7EYC.js} +11 -11
  92. package/chunks/{chunk-4JFLRHNE.js → chunk-GVHYY2RS.js} +1 -1
  93. package/chunks/{chunk-H6L4NEAT.js → chunk-GVMXFXQG.js} +1 -1
  94. package/chunks/{chunk-G45B3INR.js → chunk-GVTAFLWB.js} +2 -2
  95. package/chunks/{chunk-GJKP6XOB.js → chunk-GW5SJ3II.js} +16 -19
  96. package/chunks/{chunk-AQP3H22J.js → chunk-GY7FOHQP.js} +1 -1
  97. package/chunks/chunk-GZ5MEGA3.js +44 -0
  98. package/chunks/{chunk-FCPJXKDG.js → chunk-HA6DKD44.js} +9 -9
  99. package/chunks/{chunk-FEDFZBGR.js → chunk-HR4OWLKI.js} +3 -3
  100. package/chunks/{chunk-CXY6BICQ.js → chunk-HWKWZSZY.js} +162 -109
  101. package/chunks/{chunk-K4XMAIRX.js → chunk-I3NKMMHS.js} +12 -12
  102. package/chunks/{chunk-QMENOK5T.js → chunk-IH4TNUVS.js} +9 -7
  103. package/chunks/{chunk-FASYATAZ.js → chunk-IHUOMYBO.js} +1 -1
  104. package/chunks/{chunk-IZ2U57NY.js → chunk-IITTKFWM.js} +4 -2
  105. package/chunks/{chunk-M22WLKLI.js → chunk-IQGEZOGN.js} +7 -7
  106. package/chunks/chunk-IVPSLX4P.js +578 -0
  107. package/chunks/{chunk-BTICBRPL.js → chunk-IWMYX5LB.js} +3 -3
  108. package/chunks/{chunk-V4JJAVHQ.js → chunk-JCIDHFSB.js} +2 -2
  109. package/chunks/{chunk-PF7GAP6K.js → chunk-JENFAGVX.js} +65 -54
  110. package/chunks/{chunk-LO2UWNO5.js → chunk-JFEWKEKG.js} +3 -3
  111. package/chunks/{chunk-BHG3H6OZ.js → chunk-JJVDKHQU.js} +1 -1
  112. package/chunks/chunk-JYGESWZM.js +149 -0
  113. package/chunks/{chunk-KVC7HZWK.js → chunk-JYTJ5FCM.js} +1 -1
  114. package/chunks/{chunk-KVQ3QL4K.js → chunk-KCL6OMCX.js} +3 -3
  115. package/chunks/{chunk-3HTUE6ZR.js → chunk-KCRV4F3G.js} +4 -4
  116. package/chunks/{chunk-3WILPKTJ.js → chunk-KKPIFWTZ.js} +11 -6
  117. package/chunks/{chunk-CXONOVBN.js → chunk-KS6F6LZQ.js} +8 -6
  118. package/chunks/chunk-KSEKRQJO.js +253 -0
  119. package/chunks/{chunk-P42KMMU6.js → chunk-KWTLCPYY.js} +19 -6
  120. package/chunks/{chunk-U4AASWUQ.js → chunk-L4GF4IK2.js} +3 -3
  121. package/chunks/{chunk-5FK4MSHB.js → chunk-LADOQIYQ.js} +6 -4
  122. package/chunks/{chunk-DJXSOEFB.js → chunk-LAE6RY3L.js} +1 -1
  123. package/chunks/{chunk-CQPM66MG.js → chunk-LG475XAV.js} +4 -4
  124. package/chunks/{chunk-3BZI5GDP.js → chunk-M5YIHMXP.js} +6 -4
  125. package/chunks/{chunk-6WXVEDT2.js → chunk-MC2RYJMU.js} +5 -3
  126. package/chunks/chunk-MNU36NGH.js +233 -0
  127. package/chunks/{chunk-M4U2LTD2.js → chunk-MS4SXNJ6.js} +1 -1
  128. package/chunks/{chunk-ZFHKUQZ4.js → chunk-NEVUE35Z.js} +5 -5
  129. package/chunks/{chunk-DRAX5YAI.js → chunk-NFC4WTY2.js} +6 -4
  130. package/chunks/{chunk-SOLRBF7L.js → chunk-NSKNTJHU.js} +10 -10
  131. package/chunks/{chunk-B5TJK7B3.js → chunk-NZRX5WYI.js} +1 -1
  132. package/chunks/{chunk-YM6KUQ2S.js → chunk-O4A2B6V2.js} +3 -3
  133. package/chunks/{chunk-DX6JTDMR.js → chunk-OB57Y2WH.js} +1 -1
  134. package/chunks/{chunk-INN5ORKX.js → chunk-OLFTIODD.js} +1 -1
  135. package/chunks/chunk-PF3RVYRK.js +108 -0
  136. package/chunks/{chunk-WSJI6ODG.js → chunk-PGMF3LSO.js} +29 -27
  137. package/chunks/{chunk-OALXNGUA.js → chunk-PJ3GAHED.js} +10 -10
  138. package/chunks/{chunk-XWJFDJZK.js → chunk-PJSZXERN.js} +1 -1
  139. package/chunks/{chunk-GSAOVDTH.js → chunk-POMFSBEC.js} +4 -4
  140. package/chunks/{chunk-EWNKP4V4.js → chunk-PPVM7YLS.js} +1 -1
  141. package/chunks/{chunk-WK6DEH3Q.js → chunk-PQQV3OBW.js} +6 -4
  142. package/chunks/{chunk-BHVF3R6B.js → chunk-PZT2654P.js} +4 -4
  143. package/chunks/{chunk-ZSTCM3MX.js → chunk-Q5N5NEVT.js} +1 -1
  144. package/chunks/{chunk-KFFCDLKV.js → chunk-QE36VXWP.js} +1 -1
  145. package/chunks/{chunk-V545KI73.js → chunk-QPTE6BKL.js} +1 -1
  146. package/chunks/{chunk-5VQR2DD7.js → chunk-QQPRTJOM.js} +5 -3
  147. package/chunks/{chunk-QIPLWW6Q.js → chunk-QU7T5PKF.js} +1 -1
  148. package/chunks/{chunk-Y2KJC55Y.js → chunk-QYT7J3UM.js} +4 -4
  149. package/chunks/{chunk-SFHX5G2S.js → chunk-R34ALEH5.js} +14 -14
  150. package/chunks/{chunk-TXTCM3TC.js → chunk-R4DAJXOV.js} +18 -14
  151. package/chunks/{chunk-2GP6BQ2J.js → chunk-RA6PKQVM.js} +2 -2
  152. package/chunks/{chunk-HXUI5D4H.js → chunk-RDN5ITXF.js} +1 -1
  153. package/chunks/{chunk-G6UUOCUT.js → chunk-RMI3DKMV.js} +1 -1
  154. package/chunks/chunk-RSFNJ6UU.js +1252 -0
  155. package/chunks/{chunk-EDIDYZBT.js → chunk-RVT5L74D.js} +1 -1
  156. package/chunks/{chunk-GI7SLDOI.js → chunk-RXP5FVC4.js} +6 -6
  157. package/chunks/chunk-S34QJ6IR.js +290 -0
  158. package/chunks/chunk-S5BHLTHK.js +190 -0
  159. package/chunks/{chunk-2XRE4KE4.js → chunk-S7BE3FMA.js} +1 -1
  160. package/chunks/{chunk-7O5PYQ3M.js → chunk-SBP43AO6.js} +1 -1
  161. package/chunks/chunk-SLHYLVRW.js +1377 -0
  162. package/chunks/{chunk-HNFKYKHH.js → chunk-SMAAYU3F.js} +16 -16
  163. package/chunks/{chunk-KAYC5FBN.js → chunk-SNPYTKXI.js} +825 -234
  164. package/chunks/{chunk-IKBEIDOH.js → chunk-SOZJODVX.js} +13 -13
  165. package/chunks/{chunk-Y4NNIGYO.js → chunk-SSFOFDNL.js} +1 -1
  166. package/chunks/{chunk-WNQIJTOP.js → chunk-SSGVTJ2W.js} +243 -17
  167. package/chunks/{chunk-NFXXBWSE.js → chunk-SU64336V.js} +2 -2
  168. package/chunks/chunk-TFDCK56Y.js +154 -0
  169. package/chunks/{chunk-JRHKM3YQ.js → chunk-TS4JJ7NN.js} +2 -2
  170. package/chunks/{chunk-C4HBZQNH.js → chunk-U3MTHCJF.js} +1 -1
  171. package/chunks/{chunk-AUX2FL5T.js → chunk-UBQVV7MX.js} +625 -6
  172. package/chunks/{chunk-B6RMK4ED.js → chunk-UHBYCY7U.js} +9 -7
  173. package/chunks/{chunk-Y53DG2HA.js → chunk-UIWUFHRJ.js} +1 -1
  174. package/chunks/chunk-UQRDQCWF.js +102 -0
  175. package/chunks/{chunk-NKTMUPHJ.js → chunk-UVMU7DDP.js} +5 -3
  176. package/chunks/chunk-UXEI7POA.js +273 -0
  177. package/chunks/chunk-V2XJJTAB.js +228 -0
  178. package/chunks/chunk-VDNCKE2O.js +24 -0
  179. package/chunks/{chunk-YQQ2U7AS.js → chunk-VISF4MEY.js} +1 -1
  180. package/chunks/{chunk-RRI764F7.js → chunk-VPFKSRAB.js} +13 -11
  181. package/chunks/chunk-VPGRGNNH.js +578 -0
  182. package/chunks/{chunk-SYMXYRM5.js → chunk-W7JWIIRC.js} +1 -1
  183. package/chunks/{chunk-AZCTY64Z.js → chunk-WEUQIY3Q.js} +1 -1
  184. package/chunks/{chunk-SSWTA7CH.js → chunk-WIKUMTAB.js} +12 -12
  185. package/chunks/chunk-WL2CTQGT.js +1625 -0
  186. package/chunks/chunk-WL2V7PTE.js +78 -0
  187. package/chunks/{chunk-Q54O3EIA.js → chunk-WSZ6VS24.js} +45 -30
  188. package/chunks/{chunk-UZSB57EV.js → chunk-WX4W3FCV.js} +5 -5
  189. package/chunks/{chunk-OSG23MR3.js → chunk-X3T5IOX6.js} +2 -2
  190. package/chunks/{chunk-EIBECN2J.js → chunk-XGHVF5DC.js} +5 -5
  191. package/chunks/{chunk-D3KVGQUV.js → chunk-XJ52OCCN.js} +4 -4
  192. package/chunks/{chunk-YZXSDPOQ.js → chunk-XMAIUTED.js} +84 -40
  193. package/chunks/{chunk-QGEISOJ2.js → chunk-XQBZZVJA.js} +3 -3
  194. package/chunks/{chunk-OZEV3R3S.js → chunk-XYAB5R6E.js} +3 -3
  195. package/chunks/chunk-XZA32HII.js +19 -0
  196. package/chunks/{chunk-4FLUQWJ4.js → chunk-Y3Q5OK4D.js} +1 -1
  197. package/chunks/chunk-YDERQ7ZV.js +248 -0
  198. package/chunks/{chunk-AKRSSKUT.js → chunk-YFHX6MOF.js} +10 -10
  199. package/chunks/{chunk-ZMYKNKET.js → chunk-YPJZDZMP.js} +3 -3
  200. package/chunks/{chunk-3XBUCOWS.js → chunk-YSD6IY6F.js} +2 -2
  201. package/chunks/{chunk-CH2YDT6X.js → chunk-YVYK3JYU.js} +5 -3
  202. package/chunks/{chunk-YL3UJML3.js → chunk-YWDVNBGE.js} +4 -4
  203. package/chunks/{chunk-C3T6HPNM.js → chunk-ZGADNVME.js} +5 -5
  204. package/chunks/{chunk-M3JGHRMQ.js → chunk-ZJ7KIWG5.js} +1 -1
  205. package/chunks/{chunk-QHSOINX6.js → chunk-ZJBYZN5D.js} +2 -2
  206. package/chunks/{chunk-SYROIHU7.js → chunk-ZRQGTRHA.js} +4 -2
  207. package/chunks/{chunk-NCPFOLM2.js → chunk-ZTBP4SFC.js} +78 -18
  208. package/chunks/{chunk-ZAFYHRVY.js → chunk-ZYDMQCQP.js} +4 -274
  209. package/chunks/clip-audio-SH4L7AEY.js +255 -0
  210. package/chunks/clip-image-BQRPECIS.js +239 -0
  211. package/chunks/clip-video-JIRMV5IH.js +277 -0
  212. package/chunks/{codex-subagent-executor-AEAIQZDC.js → codex-subagent-executor-Y5ILNWG6.js} +92 -68
  213. package/chunks/config-3X4AXU45.js +21 -0
  214. package/chunks/config-T5RO4NJV.js +17 -0
  215. package/chunks/config-utils-3YNEDKT4.js +151 -0
  216. package/chunks/contextCommand-7JVXVYN4.js +144 -0
  217. package/chunks/convert-image-D52K2FFB.js +231 -0
  218. package/chunks/{core-runtime-ZI4RTOJQ.js → core-runtime-6IZNPJUN.js} +92 -67
  219. package/chunks/{create-sub-session-BBWFQARJ.js → create-sub-session-5XHUO2PW.js} +90 -66
  220. package/chunks/{create-sub-session-MSGNIM37.js → create-sub-session-6EDEANCD.js} +7 -5
  221. package/chunks/{cron-create-U2JJ5CCF.js → cron-create-GS7ORRO6.js} +8 -5
  222. package/chunks/{cron-delete-7DM4LJWD.js → cron-delete-3GGDNNXD.js} +8 -5
  223. package/chunks/{cron-list-VCUSZK2Y.js → cron-list-EX27DW4H.js} +8 -5
  224. package/chunks/{daemon-git-worktree-guard-KECEMV6A.js → daemon-git-worktree-guard-BULXRIDA.js} +90 -66
  225. package/chunks/daemon-status-provider-VSVXVY4O.js +155 -0
  226. package/chunks/daemon-trust-policy-WVSDS2WT.js +150 -0
  227. package/chunks/{daemon-trust-policy-monitor-546N5ZVL.js → daemon-trust-policy-monitor-HXQ2GLTX.js} +95 -71
  228. package/chunks/deferred-core-runtime-EXI7LXLE.js +153 -0
  229. package/chunks/{display-image-QTHALY6N.js → display-image-FTWDRBOP.js} +10 -7
  230. package/chunks/{dist-BNW423XT.js → dist-CXDHIHN4.js} +5 -0
  231. package/chunks/downsample-audio-LPDWX6GF.js +217 -0
  232. package/chunks/downsample-image-A5JEYIV5.js +249 -0
  233. package/chunks/downscale-video-4W5BX5KO.js +249 -0
  234. package/chunks/{earlyInputCapture-BXP7V2P3.js → earlyInputCapture-UJ3KFVZQ.js} +3 -2
  235. package/chunks/{edit-CMSQB7NP.js → edit-JJ34NKRC.js} +68 -56
  236. package/chunks/{en-56QLKXS2.js → en-FCK6MBTI.js} +16 -0
  237. package/chunks/{enter-worktree-DA6A4XC5.js → enter-worktree-QK7DR5EF.js} +12 -9
  238. package/chunks/{enterPlanMode-UDPMNESD.js → enterPlanMode-H6FBPVLB.js} +62 -51
  239. package/chunks/environment-7DMLANWW.js +167 -0
  240. package/chunks/errors-OH3DYEDL.js +151 -0
  241. package/chunks/{exec-RPKEY6HP.js → exec-7CFNHYCV.js} +31 -9
  242. package/chunks/{exit-worktree-4H6Z2VQI.js → exit-worktree-62COYIHF.js} +14 -10
  243. package/chunks/exitPlanMode-5YR5VWXS.js +102 -0
  244. package/chunks/extract-audio-GSSZQV6G.js +229 -0
  245. package/chunks/extract-keyframes-Q6DRMQAJ.js +621 -0
  246. package/chunks/{fast-path-F2CYDDZ4.js → fast-path-4DS2GR5O.js} +5 -5
  247. package/chunks/ffmpeg-N4LIIVNR.js +21 -0
  248. package/chunks/{glob-Z2JMJKKN.js → glob-GFID3F3R.js} +63 -51
  249. package/chunks/{goal-tools-HXVVLGCV.js → goal-tools-2OB5WPNH.js} +59 -49
  250. package/chunks/{grep-H2I33VAO.js → grep-JB5DGQ3B.js} +13 -9
  251. package/chunks/handleAutoUpdate-5OQL4YBU.js +147 -0
  252. package/chunks/i18n-TV5G7SXO.js +164 -0
  253. package/chunks/{image-gen-HIAZCB5T.js → image-gen-LX3C4V3R.js} +16 -11
  254. package/chunks/initializer-R2EI4UJ6.js +151 -0
  255. package/chunks/installationInfo-HYOWC3BN.js +145 -0
  256. package/chunks/{keychain-token-storage-NQ5XWIPX.js → keychain-token-storage-ZZNRE6D4.js} +3 -2
  257. package/chunks/list-ORJQQUNR.js +154 -0
  258. package/chunks/{list-agents-EWDCEPIW.js → list-agents-HS6HH4DJ.js} +10 -7
  259. package/chunks/{llm-LSUBOJAR.js → llm-YKBQVN7S.js} +159 -134
  260. package/chunks/{llm-content-generator-MLIONRXE.js → llm-content-generator-QJBXJRKT.js} +11 -9
  261. package/chunks/loadedSettingsAdapter-4FQH6Y3D.js +148 -0
  262. package/chunks/{loggingContentGenerator-TUPEXFMM.js → loggingContentGenerator-DEOANG3F.js} +74 -63
  263. package/chunks/{loop-wakeup-ZBVRI6VH.js → loop-wakeup-4B7OY3TV.js} +9 -6
  264. package/chunks/{ls-6ZB3BEIR.js → ls-EZ5PSWU2.js} +8 -5
  265. package/chunks/{lsp-M54FQARP.js → lsp-DYFFHKB3.js} +6 -3
  266. package/chunks/{managed-npm-update-WEA5XMFZ.js → managed-npm-update-36U25ZEZ.js} +91 -67
  267. package/chunks/mcp-ZI7LXLAQ.js +148 -0
  268. package/chunks/memory-side-query-DRV7FXK4.js +221 -0
  269. package/chunks/model-call-collection-RX7C24YP.js +171 -0
  270. package/chunks/model-configuration-3JIO6IRV.js +161 -0
  271. package/chunks/modelConfigUtils-2BJQI2S4.js +140 -0
  272. package/chunks/{monitor-CI7YE7MT.js → monitor-LXQRI2IF.js} +63 -51
  273. package/chunks/nonInteractiveCli-HRXVUV2H.js +235 -0
  274. package/chunks/nonInteractiveToolExecutor-QPAIKNPL.js +101 -0
  275. package/chunks/{notebook-edit-3WCVRNGL.js → notebook-edit-5CM3VYNK.js} +63 -52
  276. package/chunks/ocr-image-Q4HYJ3U7.js +252 -0
  277. package/chunks/omni-A5XLPNSH.js +147 -0
  278. package/chunks/{openaiContentGenerator-OGILGUZE.js → openaiContentGenerator-O5G3QCHX.js} +36 -31
  279. package/chunks/{openaiResponsesContentGenerator-NXOXUPFM.js → openaiResponsesContentGenerator-W2V7AYVE.js} +12 -10
  280. package/chunks/pidfile-MI5FGYF5.js +151 -0
  281. package/chunks/{processUtils-O4II3RYH.js → processUtils-EWKUPVJH.js} +2 -2
  282. package/chunks/prompt-terminal-ledger-5HEXZMWT.js +143 -0
  283. package/chunks/{qwenContentGenerator-I4LRYADV.js → qwenContentGenerator-HHNDIW2Q.js} +70 -60
  284. package/chunks/{qwenOAuth2-3J66TOT5.js → qwenOAuth2-GD3UIYUP.js} +9 -8
  285. package/chunks/reactive-degrade-KWCJUHXH.js +375 -0
  286. package/chunks/read-file-ZQKBXJSH.js +37 -0
  287. package/chunks/{read-mcp-resource-LPSWXVOD.js → read-mcp-resource-INJIV3UC.js} +8 -4
  288. package/chunks/recall-media-memory-tool-PEE2BWRY.js +198 -0
  289. package/chunks/{record-artifact-L3CFJOMA.js → record-artifact-KKW3AIMJ.js} +6 -4
  290. package/chunks/record-source-2VSQINX6.js +24 -0
  291. package/chunks/{report-findings-LY5HQY4K.js → report-findings-OZSLWYAS.js} +7 -5
  292. package/chunks/{request-shutdown-53SNYGVR.js → request-shutdown-3RUGTWRR.js} +12 -9
  293. package/chunks/resumeHistoryUtils-5V3KISJ6.js +156 -0
  294. package/chunks/ripGrep-F5MM4HGA.js +43 -0
  295. package/chunks/{run-qwen-serve-ZVEKGS7Y.js → run-qwen-serve-3K3D5MSR.js} +70 -70
  296. package/chunks/{runtime-SJCRYNPA.js → runtime-FAWN3GQH.js} +98 -74
  297. package/chunks/sandbox-BPRE7KYF.js +170 -0
  298. package/chunks/sandboxConfig-V3OHETXW.js +138 -0
  299. package/chunks/scheduled-tasks-LB2PINB3.js +167 -0
  300. package/chunks/scheduler-NHAWKARI.js +160 -0
  301. package/chunks/{sdk-exporters-http-DR4G663K.js → sdk-exporters-http-SWXTEEVT.js} +3 -2
  302. package/chunks/{sdk-impl-SJR26MQF.js → sdk-impl-FK4JY6LX.js} +5 -4
  303. package/chunks/{send-message-DN76MXDX.js → send-message-TLF36UW2.js} +16 -13
  304. package/chunks/serve-UQL5X5K7.js +156 -0
  305. package/chunks/{server-UHMKPCAZ.js → server-3HUUEDUC.js} +286 -261
  306. package/chunks/{session-ZLUK7E4P.js → session-XODWSTJ3.js} +151 -127
  307. package/chunks/session-attachments-root-BENUIMZM.js +141 -0
  308. package/chunks/{session-pr-refresh-3OMTQWCZ.js → session-pr-refresh-CSRULMTI.js} +95 -71
  309. package/chunks/{settings-P4DHIIUP.js → settings-42FFX5TK.js} +94 -70
  310. package/chunks/{shell-IMFUVQQ5.js → shell-NLNU2TPF.js} +59 -49
  311. package/chunks/{skill-NB5RJGZW.js → skill-KIRNNJMK.js} +22 -17
  312. package/chunks/skill-settings-MPHPE43F.js +164 -0
  313. package/chunks/spawnChannel-TXNLXP2R.js +152 -0
  314. package/chunks/standalone-update-XAC364AM.js +156 -0
  315. package/chunks/{start-opentui-ui-JKAIWGF7.js → start-opentui-ui-3OLDXRMX.js} +223 -189
  316. package/chunks/{startInteractiveUI-YRPOT6GH.js → startInteractiveUI-UB2HRTV7.js} +339 -295
  317. package/chunks/storage-VZECDJNX.js +17 -0
  318. package/chunks/{syntheticOutput-EX5L5GYI.js → syntheticOutput-SSXJ2NEY.js} +5 -3
  319. package/chunks/task-create-EEMYF6LY.js +30 -0
  320. package/chunks/{task-list-ZLJSMRFA.js → task-list-GA5GOR74.js} +9 -6
  321. package/chunks/{task-stop-MD7P6QGK.js → task-stop-3MXTDL7H.js} +6 -3
  322. package/chunks/{task-update-3LSYQDRW.js → task-update-JSBHKL4L.js} +16 -13
  323. package/chunks/{team-create-2XTBYRJF.js → team-create-VES6TOBA.js} +62 -51
  324. package/chunks/{team-delete-RIDINW6I.js → team-delete-V2CROTI6.js} +9 -6
  325. package/chunks/{team-plan-approval-CFNWW7ZQ.js → team-plan-approval-ZMCHBBUM.js} +61 -50
  326. package/chunks/terminal-image-renderer-73NDY7OJ.js +156 -0
  327. package/chunks/theme-manager-YG3L7BV6.js +140 -0
  328. package/chunks/{todoWrite-XSTG2VT5.js → todoWrite-CMBHPR66.js} +8 -5
  329. package/chunks/tool-result-media-V3LNDB5Q.js +45 -0
  330. package/chunks/{tool-search-ZHTJU2MV.js → tool-search-7XR7RHMB.js} +43 -21
  331. package/chunks/total-session-admission-QUZYGACG.js +151 -0
  332. package/chunks/transcribe-audio-AJQZPNEV.js +30 -0
  333. package/chunks/trustedFolders-QRII2BL7.js +160 -0
  334. package/chunks/understand-video-segments-5TMRDQUB.js +438 -0
  335. package/chunks/{update-relaunch-LI7GRP36.js → update-relaunch-735DXN5P.js} +5 -5
  336. package/chunks/updateCheck-FXXOM4YS.js +156 -0
  337. package/chunks/upload-cache-5YULQVZZ.js +17 -0
  338. package/chunks/upload-config-CKDIXTPK.js +25 -0
  339. package/chunks/useAutoAcceptIndicator-KXXTKOGD.js +158 -0
  340. package/chunks/{validateNonInterActiveAuth-YFPCYYNL.js → validateNonInterActiveAuth-DXCBDHIX.js} +143 -119
  341. package/chunks/{version-4MTL4JVU.js → version-76T4NBMQ.js} +1 -1
  342. package/chunks/{web-fetch-O6RG6ISB.js → web-fetch-UIDZX5RN.js} +27 -20
  343. package/chunks/{web-search-JHAXVEMD.js → web-search-VETWDOUJ.js} +14 -11
  344. package/chunks/{web-shell-static-FFWCUUZS.js → web-shell-static-XSCCMXKQ.js} +3 -3
  345. package/chunks/{workflow-O7L6VDYU.js → workflow-MHYBJHPP.js} +63 -52
  346. package/chunks/workspace-providers-status-WFBT3LS5.js +154 -0
  347. package/chunks/{workspace-registration-store-7G4E7YPY.js → workspace-registration-store-M3WKKBJQ.js} +1 -1
  348. package/chunks/workspace-registry-FIUB7MGD.js +160 -0
  349. package/chunks/workspace-runtime-coordinator-5Z7M36W7.js +163 -0
  350. package/chunks/workspace-service-TP4VRTZF.js +165 -0
  351. package/chunks/workspace-skills-status-CILWVQHU.js +151 -0
  352. package/chunks/{workspace-trust-reconciler-XEBW5FUL.js → workspace-trust-reconciler-2OPSTQNS.js} +98 -74
  353. package/chunks/write-file-N7NBKIYD.js +107 -0
  354. package/chunks/{zh-TW-S3YTQ4DS.js → zh-TW-SRB5QSER.js} +16 -0
  355. package/chunks/{zh-F76MZTL3.js → zh-UBQIFP4A.js} +16 -0
  356. package/chunks/{zoom-image-RDPRTP4B.js → zoom-image-3GHVMYEW.js} +18 -13
  357. package/cli.js +14 -14
  358. package/export-transcript-document.js +3 -3
  359. package/locales/en.js +18 -0
  360. package/locales/zh-TW.js +17 -0
  361. package/locales/zh.js +17 -0
  362. package/package.json +3 -3
  363. package/web-shell/assets/{abnfDiagram-VCTEODGH-RxykUDmi.js → abnfDiagram-VCTEODGH-vfbwxn7H.js} +1 -1
  364. package/web-shell/assets/{arc-CZpgGCJC.js → arc-BT0KMrP5.js} +1 -1
  365. package/web-shell/assets/{architectureDiagram-5GKGNRK7-BHSMzNDT.js → architectureDiagram-5GKGNRK7-B3TlGgP4.js} +1 -1
  366. package/web-shell/assets/{blockDiagram-NRAW4CY4-Bn4mF9SZ.js → blockDiagram-NRAW4CY4-DnwF5xi-.js} +1 -1
  367. package/web-shell/assets/{c4Diagram-UCG6FXSJ-CBM-Bj6t.js → c4Diagram-UCG6FXSJ-8qvMMfFg.js} +1 -1
  368. package/web-shell/assets/channel-CTm0xByY.js +1 -0
  369. package/web-shell/assets/{chunk-2Q5K7J3B-D5Fin58O.js → chunk-2Q5K7J3B-CHM51UX6.js} +1 -1
  370. package/web-shell/assets/{chunk-5VM5RSS4-CY05weF7.js → chunk-5VM5RSS4-BNXaOtyN.js} +1 -1
  371. package/web-shell/assets/{chunk-F27PBJKO-3neZnj5Y.js → chunk-F27PBJKO-DT-vcF3X.js} +1 -1
  372. package/web-shell/assets/{chunk-G27WJ6UU-Cd7EU4BE.js → chunk-G27WJ6UU-BXz8438J.js} +1 -1
  373. package/web-shell/assets/{chunk-JWPE2WC7-DwK1mqFw.js → chunk-JWPE2WC7-CP2ozL3M.js} +1 -1
  374. package/web-shell/assets/{chunk-LCL6LL3I-Sl7vY22C.js → chunk-LCL6LL3I-DTAWXvja.js} +1 -1
  375. package/web-shell/assets/{chunk-POPQ4Y6H-BXNzpbVg.js → chunk-POPQ4Y6H-DZENJpGx.js} +1 -1
  376. package/web-shell/assets/{chunk-SVP7TREG-DjjButcp.js → chunk-SVP7TREG-Dl8djRwv.js} +1 -1
  377. package/web-shell/assets/{chunk-XXDRQBXY-DNOiCjOJ.js → chunk-XXDRQBXY-B3lJllMA.js} +1 -1
  378. package/web-shell/assets/classDiagram-DTDB5LWJ-DhMuMK_E.js +1 -0
  379. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DhMuMK_E.js +1 -0
  380. package/web-shell/assets/{cose-bilkent-JH36ORCC-BUnker7a.js → cose-bilkent-JH36ORCC-DeosJDcB.js} +1 -1
  381. package/web-shell/assets/{cynefin-OW5HDTMX-DcUgdWE5.js → cynefin-OW5HDTMX-BvqcLoHm.js} +1 -1
  382. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CvDKsZsL.js → cynefinDiagram-5FMLGOSQ-BYS0pmSs.js} +1 -1
  383. package/web-shell/assets/{dagre-3AP2YEHR-jpCmUbr1.js → dagre-3AP2YEHR-IDScuL-R.js} +1 -1
  384. package/web-shell/assets/{diagram-S7CK7UJ4-DBe_bKE5.js → diagram-S7CK7UJ4-EYNlkkKJ.js} +1 -1
  385. package/web-shell/assets/{diagram-UQ7AKVKN-oXvPpDgs.js → diagram-UQ7AKVKN-D3x9g8Ep.js} +1 -1
  386. package/web-shell/assets/{diagram-VSXAHHWV-BD7-_SGh.js → diagram-VSXAHHWV-C35O1dtR.js} +1 -1
  387. package/web-shell/assets/{diagram-VX7I27RA-DOJL0wub.js → diagram-VX7I27RA-XvMv2aCN.js} +1 -1
  388. package/web-shell/assets/{diagram-Z3DM3KII-DRIiodDD.js → diagram-Z3DM3KII-CeryNvru.js} +1 -1
  389. package/web-shell/assets/{ebnfDiagram-PWID7BFC-Db31Ulmb.js → ebnfDiagram-PWID7BFC-DAmepjvB.js} +1 -1
  390. package/web-shell/assets/{erDiagram-SSCWMZ5O-CVHhwI2_.js → erDiagram-SSCWMZ5O-BkGfBZt_.js} +1 -1
  391. package/web-shell/assets/{flowDiagram-A5DVABFB-DWOFy1FK.js → flowDiagram-A5DVABFB-CzUCgun9.js} +1 -1
  392. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-C0sxQtPd.js → ganttDiagram-EL5Y4UJY-BIFST90r.js} +1 -1
  393. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-CNituBYC.js → gitGraphDiagram-WWUBYQGX-jVvRSGcu.js} +1 -1
  394. package/web-shell/assets/{index-B15NlwB8.js → index-M1TfOjx2.js} +457 -457
  395. package/web-shell/assets/{index-gm9tLk7h.js → index-krCDFzE6.js} +1 -1
  396. package/web-shell/assets/{infoDiagram-RXCK75RN-CxhJYtIR.js → infoDiagram-RXCK75RN-DsU7vA4Q.js} +1 -1
  397. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-By2mchUy.js → ishikawaDiagram-5VMMS53U-K9mTNAbN.js} +1 -1
  398. package/web-shell/assets/{journeyDiagram-EYS64GPL-CVH-OweI.js → journeyDiagram-EYS64GPL-BKuHLGxv.js} +1 -1
  399. package/web-shell/assets/{kanban-definition-3QL26DDD-Cc9dQXLy.js → kanban-definition-3QL26DDD-CXG9frQ_.js} +1 -1
  400. package/web-shell/assets/{layout-C_60ysHw.js → layout-6G_l7UoH.js} +1 -1
  401. package/web-shell/assets/{linear-BvAVfqwu.js → linear-DYpvB2mh.js} +1 -1
  402. package/web-shell/assets/{mermaid.core-C3CoBKAc.js → mermaid.core-Sj3dJttQ.js} +6 -6
  403. package/web-shell/assets/{mindmap-definition-FBJOCRG2-Cuu8Q8LM.js → mindmap-definition-FBJOCRG2-DNJ1e6qd.js} +1 -1
  404. package/web-shell/assets/{pegDiagram-XKGWAZYB-DmAeyDO2.js → pegDiagram-XKGWAZYB-D-KPklHv.js} +1 -1
  405. package/web-shell/assets/{pieDiagram-E7YTZNPT-B7vbB_xv.js → pieDiagram-E7YTZNPT-BQPm03g2.js} +1 -1
  406. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-BqOBkRR7.js → quadrantDiagram-AXDQQJYC-BubBXSqD.js} +1 -1
  407. package/web-shell/assets/{railroadDiagram-O6MQD6OU-sI06lZIu.js → railroadDiagram-O6MQD6OU-DatD6KIT.js} +1 -1
  408. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Bg13d10S.js → requirementDiagram-EFPCY7ZU-DiQ6jsZY.js} +1 -1
  409. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-WFOzZHrR.js → sankeyDiagram-P5KCCOFB-C07fyxbH.js} +1 -1
  410. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-CCdRbA4E.js → sequenceDiagram-WJ2MYXX4-DWXtsWzI.js} +1 -1
  411. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BH5F3bGg.js → sizeCapture-X5ZJPWSS-B0cQ1v0l.js} +1 -1
  412. package/web-shell/assets/{stateDiagram-HBIQ2CUA-NwS2X3QB.js → stateDiagram-HBIQ2CUA-zHgWc00n.js} +1 -1
  413. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C-3ZC2nf.js +1 -0
  414. package/web-shell/assets/{swimlanes-XN3QIQJK-Bm38pM28.js → swimlanes-XN3QIQJK-Dnrrhu0H.js} +1 -1
  415. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Ded1L5cw.js +8 -0
  416. package/web-shell/assets/{timeline-definition-24CTP7MA-Do-agLSo.js → timeline-definition-24CTP7MA-8BV7W2Xq.js} +1 -1
  417. package/web-shell/assets/{vennDiagram-4TSXK5OY-aggLfZzl.js → vennDiagram-4TSXK5OY-tmBBtlnj.js} +1 -1
  418. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-D5JR3mXX.js → wardleyDiagram-VM6X3IG4-Cq96T3gb.js} +1 -1
  419. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DhtLDuXs.js → xychartDiagram-S5SC5T6Z-Dpzx_ZGQ.js} +1 -1
  420. package/web-shell/index.html +1 -1
  421. package/chunks/MaxSizedBox-FCF6M53W.js +0 -124
  422. package/chunks/acp-subagent-executor-TND6W2O5.js +0 -140
  423. package/chunks/agent-headless-EJ4QOUSM.js +0 -94
  424. package/chunks/bridge-MUX5YJZT.js +0 -132
  425. package/chunks/channel-settings-store-7CBIRZER.js +0 -134
  426. package/chunks/config-utils-KX2YS725.js +0 -127
  427. package/chunks/contextCommand-RV6Y5LNJ.js +0 -120
  428. package/chunks/daemon-status-provider-NULJNAEV.js +0 -131
  429. package/chunks/daemon-trust-policy-S4KWGPV3.js +0 -126
  430. package/chunks/deferred-core-runtime-T23ZT443.js +0 -128
  431. package/chunks/environment-TSQJUTPV.js +0 -143
  432. package/chunks/errors-RIVYJS6T.js +0 -127
  433. package/chunks/exitPlanMode-BYBBFN2T.js +0 -92
  434. package/chunks/handleAutoUpdate-FZP45KOR.js +0 -123
  435. package/chunks/i18n-OTB62AKW.js +0 -140
  436. package/chunks/initializer-4JXZEC4B.js +0 -127
  437. package/chunks/installationInfo-2IJV5QKC.js +0 -121
  438. package/chunks/list-KQSQ4A5G.js +0 -130
  439. package/chunks/loadedSettingsAdapter-TZTTNRHI.js +0 -124
  440. package/chunks/mcp-TFDTUPIA.js +0 -124
  441. package/chunks/model-configuration-ZCAKKIOF.js +0 -137
  442. package/chunks/modelConfigUtils-J3ZPW7ZK.js +0 -116
  443. package/chunks/nonInteractiveCli-GPT3TVOK.js +0 -211
  444. package/chunks/pidfile-GBTBIGHF.js +0 -127
  445. package/chunks/prompt-terminal-ledger-ILIXZI3E.js +0 -119
  446. package/chunks/read-file-G4XKW2CS.js +0 -31
  447. package/chunks/record-source-2GSY5JD5.js +0 -22
  448. package/chunks/resumeHistoryUtils-YPJU4XFE.js +0 -132
  449. package/chunks/ripGrep-AAKMALLM.js +0 -39
  450. package/chunks/sandbox-UIXL423Z.js +0 -146
  451. package/chunks/sandboxConfig-CY343YNJ.js +0 -114
  452. package/chunks/scheduled-tasks-5UGBEVNZ.js +0 -143
  453. package/chunks/scheduler-GCZYLZ2P.js +0 -136
  454. package/chunks/serve-2XXQLVK2.js +0 -132
  455. package/chunks/session-attachments-root-DHQM5IEZ.js +0 -117
  456. package/chunks/skill-settings-IXG5CTQO.js +0 -140
  457. package/chunks/spawnChannel-Q3YALTCJ.js +0 -128
  458. package/chunks/standalone-update-H5OJ7MM7.js +0 -132
  459. package/chunks/task-create-75HVPEAH.js +0 -28
  460. package/chunks/terminal-image-renderer-UDPJPGPQ.js +0 -132
  461. package/chunks/theme-manager-SK57EKMO.js +0 -116
  462. package/chunks/total-session-admission-UUZBDQCG.js +0 -127
  463. package/chunks/trustedFolders-4LDBLNTS.js +0 -136
  464. package/chunks/updateCheck-PKSSORPO.js +0 -132
  465. package/chunks/useAutoAcceptIndicator-I32UEQPI.js +0 -134
  466. package/chunks/workspace-providers-status-WRX6CJM4.js +0 -130
  467. package/chunks/workspace-registry-SXIMGT4D.js +0 -136
  468. package/chunks/workspace-runtime-coordinator-7DOEHXYT.js +0 -139
  469. package/chunks/workspace-service-HDXOZMYC.js +0 -141
  470. package/chunks/workspace-skills-status-VN4L37CA.js +0 -127
  471. package/chunks/write-file-LKX4ETIO.js +0 -97
  472. package/web-shell/assets/channel-DFYs_LlK.js +0 -1
  473. package/web-shell/assets/classDiagram-DTDB5LWJ-DnGrKXoM.js +0 -1
  474. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DnGrKXoM.js +0 -1
  475. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-1aU2JZXO.js +0 -1
  476. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Dp-u6kQG.js +0 -8
  477. package/chunks/{chunk-XAJZFGD2.js → chunk-PXXYQOZO.js} +8 -8
  478. package/chunks/{chunk-WVURIAEE.js → chunk-SVWWF5TZ.js} +3 -3
  479. package/chunks/{dist-G5UMXIGF.js → dist-I6D6XOWV.js} +1 -1
  480. package/chunks/{dist-UXVNLQHG.js → dist-VIKOMAGG.js} +3 -3
@@ -2,34 +2,34 @@
2
2
  "use strict";
3
3
  import {
4
4
  appEvents
5
- } from "./chunk-CXY6BICQ.js";
5
+ } from "./chunk-HWKWZSZY.js";
6
6
  import {
7
7
  CUSTOM_SANDBOX_IMAGE_ENV_VAR,
8
8
  HOST_UPDATE_RELAUNCH_ENV_VAR,
9
9
  SKIP_UPDATE_CHECK_ENV_VAR,
10
10
  requestUpdateOnExit
11
- } from "./chunk-B5TJK7B3.js";
11
+ } from "./chunk-NZRX5WYI.js";
12
12
  import {
13
13
  loadUndici
14
14
  } from "./chunk-TXASDT2M.js";
15
15
  import {
16
16
  IdeClient
17
- } from "./chunk-KAYC5FBN.js";
17
+ } from "./chunk-SNPYTKXI.js";
18
18
  import {
19
19
  getAllProviderBaseUrls
20
- } from "./chunk-KEM7MWS7.js";
20
+ } from "./chunk-366JNNY7.js";
21
21
  import {
22
22
  detectRuntime,
23
23
  getOrCreateSharedDispatcher,
24
24
  preloadRuntimeFetchModule,
25
25
  redactProxyCredentials
26
- } from "./chunk-7O5PYQ3M.js";
26
+ } from "./chunk-SBP43AO6.js";
27
27
  import {
28
28
  initializeTelemetry
29
- } from "./chunk-6USYH3EU.js";
29
+ } from "./chunk-B3XJFEEH.js";
30
30
  import {
31
31
  createDebugLogger
32
- } from "./chunk-ZAFYHRVY.js";
32
+ } from "./chunk-ZYDMQCQP.js";
33
33
  import {
34
34
  recordStartupEvent
35
35
  } from "./chunk-QILD6R27.js";
@@ -233,11 +233,11 @@ function startPostRenderPrefetches(config, settings, options = {}) {
233
233
  { updateEventEmitter },
234
234
  { t }
235
235
  ] = await Promise.all([
236
- import("./updateCheck-PKSSORPO.js"),
237
- import("./handleAutoUpdate-FZP45KOR.js"),
238
- import("./installationInfo-2IJV5QKC.js"),
236
+ import("./updateCheck-FXXOM4YS.js"),
237
+ import("./handleAutoUpdate-5OQL4YBU.js"),
238
+ import("./installationInfo-HYOWC3BN.js"),
239
239
  import("./updateEventEmitter-5MKC7BLQ.js"),
240
- import("./i18n-OTB62AKW.js")
240
+ import("./i18n-TV5G7SXO.js")
241
241
  ]);
242
242
  const updateCheckSkippedMessage = /* @__PURE__ */ __name((error) => t("Update check skipped ({{reason}}) \u2014 run /update to retry.", {
243
243
  reason: describeUpdateCheckFailure(error)
@@ -310,7 +310,7 @@ ${t(
310
310
  state: "connecting"
311
311
  });
312
312
  try {
313
- const { connectIdeForStartup } = await import("./initializer-4JXZEC4B.js");
313
+ const { connectIdeForStartup } = await import("./initializer-R2EI4UJ6.js");
314
314
  await withTimeout(
315
315
  connectIdeForStartup(config),
316
316
  "ide_connect",
@@ -334,7 +334,7 @@ ${t(
334
334
  }
335
335
  if (config.isInteractive()) {
336
336
  runDeferredTask("background_housekeeping", async () => {
337
- const { startBackgroundHousekeeping } = await import("./scheduler-GCZYLZ2P.js");
337
+ const { startBackgroundHousekeeping } = await import("./scheduler-NHAWKARI.js");
338
338
  startBackgroundHousekeeping(config, settings);
339
339
  });
340
340
  }
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-GSAOVDTH.js";
5
+ } from "./chunk-POMFSBEC.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-GSAOVDTH.js";
5
+ } from "./chunk-POMFSBEC.js";
6
6
  import {
7
7
  SessionReferenceService,
8
8
  readManyFiles
9
- } from "./chunk-347O2YZJ.js";
9
+ } from "./chunk-CNG7ILRW.js";
10
10
  import {
11
11
  emptyMcpResourceText,
12
12
  formatMcpResourceContents,
@@ -14,22 +14,24 @@ import {
14
14
  } from "./chunk-ZPJWUGCS.js";
15
15
  import {
16
16
  SessionService
17
- } from "./chunk-KAYC5FBN.js";
17
+ } from "./chunk-SNPYTKXI.js";
18
18
  import {
19
19
  qualifySkillName,
20
20
  stripTerminalControlSequences
21
- } from "./chunk-P42KMMU6.js";
21
+ } from "./chunk-KWTLCPYY.js";
22
22
  import {
23
23
  shouldRunVisionBridge
24
- } from "./chunk-CDDP4ONL.js";
24
+ } from "./chunk-G3PBYAGM.js";
25
25
  import {
26
26
  Storage,
27
- getErrorMessage,
28
- isNodeError,
29
27
  isSubpath,
30
28
  unescapePath,
31
29
  unescapeShellSpecials
32
- } from "./chunk-ZAFYHRVY.js";
30
+ } from "./chunk-ZYDMQCQP.js";
31
+ import {
32
+ getErrorMessage,
33
+ isNodeError
34
+ } from "./chunk-S34QJ6IR.js";
33
35
  import {
34
36
  init_esbuild_shims
35
37
  } from "./chunk-5O2XNYP6.js";
@@ -325,6 +327,8 @@ function parseAllAtCommands(query) {
325
327
  content: query.substring(currentIndex, atIndex)
326
328
  });
327
329
  }
330
+ const isUrlRef = /^https?:\/\//i.test(query.slice(atIndex + 1));
331
+ const NON_URL_CHAR = /[^A-Za-z0-9\-._~:/?#[\]@!$&'()*+,;=%]/;
328
332
  let pathEndIndex = atIndex + 1;
329
333
  let inEscape = false;
330
334
  while (pathEndIndex < query.length) {
@@ -333,6 +337,8 @@ function parseAllAtCommands(query) {
333
337
  inEscape = false;
334
338
  } else if (char === "\\") {
335
339
  inEscape = true;
340
+ } else if (isUrlRef) {
341
+ if (NON_URL_CHAR.test(char)) break;
336
342
  } else if (/[,\s;!?()[\]{}]/.test(char)) {
337
343
  break;
338
344
  } else if (char === ".") {
@@ -343,7 +349,12 @@ function parseAllAtCommands(query) {
343
349
  }
344
350
  pathEndIndex++;
345
351
  }
346
- const rawAtPath = query.substring(atIndex, pathEndIndex);
352
+ let rawAtPath = query.substring(atIndex, pathEndIndex);
353
+ if (isUrlRef) {
354
+ const trimmed = rawAtPath.replace(/[.,;:!?]+$/, "");
355
+ pathEndIndex = atIndex + trimmed.length;
356
+ rawAtPath = trimmed;
357
+ }
347
358
  const atPath = unescapePath(rawAtPath);
348
359
  parts.push({ type: "atPath", content: atPath });
349
360
  currentIndex = pathEndIndex;
@@ -410,6 +421,8 @@ async function resolveAtCommandQuery({
410
421
  const activeExtensions = config.getActiveExtensions?.() ?? [];
411
422
  const extensionMentions = [];
412
423
  const sessionMentions = [];
424
+ const urlMediaRefs = [];
425
+ const rememberedMediaRefs = [];
413
426
  for (const atPathPart of atPathCommandParts) {
414
427
  const originalAtPath = atPathPart.content;
415
428
  if (originalAtPath === "@") {
@@ -419,6 +432,16 @@ async function resolveAtCommandQuery({
419
432
  continue;
420
433
  }
421
434
  const pathName = originalAtPath.substring(1);
435
+ if (/^https?:\/\//i.test(pathName) && config.isOmniEnabled?.()) {
436
+ const omni = await import("./omni-A5XLPNSH.js");
437
+ if (omni.isOmniDeliveryActive(config) && omni.parseHttpUrlRef(pathName)) {
438
+ if (!urlMediaRefs.some((r) => r.url === pathName)) {
439
+ urlMediaRefs.push({ originalAtPath, url: pathName });
440
+ }
441
+ atPathToResolvedSpecMap.set(originalAtPath, pathName);
442
+ continue;
443
+ }
444
+ }
422
445
  const extRef = parseExtensionRef(pathName);
423
446
  if (extRef) {
424
447
  const extension = matchExtensionByRef(extRef.name, activeExtensions);
@@ -544,9 +567,33 @@ async function resolveAtCommandQuery({
544
567
  }
545
568
  }
546
569
  if (!resolvedSuccessfully && sawNotFound) {
547
- onDebugMessage(
548
- `Path ${pathName} not found. Path ${pathName} will be skipped.`
549
- );
570
+ let reanchored = false;
571
+ if (config.isOmniEnabled?.()) {
572
+ const { reanchorRememberedMedia } = await import("./omni-A5XLPNSH.js");
573
+ for (const dir of config.getWorkspaceContext().getDirectories()) {
574
+ const anchor = await reanchorRememberedMedia(
575
+ config,
576
+ path.resolve(dir, pathName)
577
+ );
578
+ if (!anchor) continue;
579
+ rememberedMediaRefs.push({
580
+ originalAtPath,
581
+ pathName,
582
+ annotation: anchor.annotation
583
+ });
584
+ atPathToResolvedSpecMap.set(originalAtPath, pathName);
585
+ onDebugMessage(
586
+ `Path ${pathName} is gone but remembered; re-anchored as ${anchor.resourceId} (bytes unavailable).`
587
+ );
588
+ reanchored = true;
589
+ break;
590
+ }
591
+ }
592
+ if (!reanchored) {
593
+ onDebugMessage(
594
+ `Path ${pathName} not found. Path ${pathName} will be skipped.`
595
+ );
596
+ }
550
597
  }
551
598
  if (!resolvedSuccessfully && deferredIgnoreReason) {
552
599
  ignoredByReason[deferredIgnoreReason].push(pathName);
@@ -600,6 +647,169 @@ ${messages.join("\n")}`;
600
647
  (ref) => config.getToolRegistry().readMcpResource(ref.serverName, ref.uri, { signal })
601
648
  )
602
649
  );
650
+ const urlMediaParts = [];
651
+ const urlMediaDisplays = [];
652
+ const urlMediaLabels = [];
653
+ if (urlMediaRefs.length > 0) {
654
+ const core = await import("./omni-A5XLPNSH.js");
655
+ for (let i = 0; i < urlMediaRefs.length; i++) {
656
+ const ref = urlMediaRefs[i];
657
+ const callId = `client-url-media-${userMessageTimestamp}-${i}`;
658
+ const hostLabel = (() => {
659
+ try {
660
+ return new URL(ref.url).hostname;
661
+ } catch {
662
+ return "invalid-url";
663
+ }
664
+ })();
665
+ let tempPartPath;
666
+ try {
667
+ const store = new core.OmniObjectStore(config.storage.getQwenDir());
668
+ const downloadsDir = path.join(store.getOmniRootDir(), "downloads");
669
+ const downloaded = await core.downloadMediaUrl({
670
+ url: ref.url,
671
+ downloadsDir,
672
+ maxBytes: core.effectiveMaxDownloadFileBytes(config),
673
+ signal
674
+ });
675
+ tempPartPath = downloaded.partPath;
676
+ const urlBase = path.basename(new URL(ref.url).pathname) || hostLabel;
677
+ const modalities = config.getContentGeneratorConfig?.()?.modalities ?? {};
678
+ const sniffedModality = await core.sniffFileModality(
679
+ downloaded.partPath
680
+ );
681
+ if (sniffedModality && !modalities[sniffedModality]) {
682
+ urlMediaDisplays.push({
683
+ callId,
684
+ name: "Fetch Media URL",
685
+ description: `Download ${ref.url}`,
686
+ status: "Error" /* Error */,
687
+ resultDisplay: `Skipped ${urlBase}: the active model does not accept ${sniffedModality} input.`,
688
+ confirmationDetails: void 0
689
+ });
690
+ continue;
691
+ }
692
+ const delivery = await core.processMediaForOmniDelivery(
693
+ downloaded.partPath,
694
+ config,
695
+ // displayName: guard/error messages must name the URL's file, not
696
+ // the opaque staging path the download landed under. sourceUrl:
697
+ // the staging path is deleted in the finally below, so memory
698
+ // must anchor this media's identity to the object store and
699
+ // record the URL as its source — a handle bound to the staging
700
+ // path would resolve to ENOENT for the rest of the session.
701
+ { signal, displayName: urlBase, sourceUrl: ref.url }
702
+ );
703
+ const transcriptParts = core.buildTranscriptParts(
704
+ urlBase,
705
+ delivery.transcripts
706
+ );
707
+ const additionalParts = core.buildAdditionalMediaParts(
708
+ urlBase,
709
+ delivery.additionalMedia
710
+ );
711
+ const handleParts = delivery.resourceId ? [
712
+ {
713
+ text: core.formatResourceHandleText(
714
+ urlBase,
715
+ delivery.resourceId
716
+ )
717
+ }
718
+ ] : [];
719
+ if (delivery.omission) {
720
+ urlMediaParts.push(...handleParts);
721
+ urlMediaParts.push({
722
+ text: core.formatOmissionText(urlBase, delivery.omission.reason)
723
+ });
724
+ urlMediaParts.push(...additionalParts);
725
+ urlMediaParts.push(...transcriptParts);
726
+ urlMediaLabels.push(ref.url);
727
+ urlMediaDisplays.push({
728
+ callId,
729
+ name: "Fetch Media URL",
730
+ description: `Downloaded ${ref.url}`,
731
+ status: "Success" /* Success */,
732
+ resultDisplay: `Media omitted by the omni transport guard: ${urlBase}`,
733
+ confirmationDetails: void 0
734
+ });
735
+ continue;
736
+ }
737
+ if (!delivery.fileUri && transcriptParts.length > 0) {
738
+ urlMediaParts.push(...handleParts);
739
+ if (delivery.disclosure) {
740
+ urlMediaParts.push({
741
+ text: core.formatDisclosureText(urlBase, delivery.disclosure)
742
+ });
743
+ }
744
+ urlMediaParts.push(...additionalParts);
745
+ urlMediaParts.push(...transcriptParts);
746
+ urlMediaLabels.push(ref.url);
747
+ urlMediaDisplays.push({
748
+ callId,
749
+ name: "Fetch Media URL",
750
+ description: `Downloaded ${ref.url}`,
751
+ status: "Success" /* Success */,
752
+ resultDisplay: `Localized ${urlBase} and delivered as transcript (omni policy).`,
753
+ confirmationDetails: void 0
754
+ });
755
+ continue;
756
+ }
757
+ urlMediaParts.push(...handleParts);
758
+ if (delivery.disclosure) {
759
+ urlMediaParts.push({
760
+ text: core.formatDisclosureText(urlBase, delivery.disclosure)
761
+ });
762
+ }
763
+ urlMediaParts.push({
764
+ fileData: {
765
+ fileUri: delivery.fileUri,
766
+ mimeType: delivery.mimeType,
767
+ displayName: urlBase
768
+ }
769
+ });
770
+ urlMediaParts.push(...additionalParts);
771
+ urlMediaParts.push(...transcriptParts);
772
+ urlMediaLabels.push(ref.url);
773
+ urlMediaDisplays.push({
774
+ callId,
775
+ name: "Fetch Media URL",
776
+ description: `Downloaded ${ref.url}`,
777
+ status: "Success" /* Success */,
778
+ resultDisplay: `Localized ${urlBase} (${delivery.recognized.modality}, ${(delivery.recognized.sizeBytes / 1024 / 1024).toFixed(1)}MB) and delivered via omni upload${delivery.degraded ? " (degraded by media policy)" : ""}.`,
779
+ confirmationDetails: void 0
780
+ });
781
+ } catch (error) {
782
+ if (signal.aborted) {
783
+ if (tempPartPath) {
784
+ await fs2.rm(tempPartPath, { force: true }).catch(() => {
785
+ });
786
+ }
787
+ return {
788
+ processedQuery: null,
789
+ shouldProceed: false,
790
+ toolDisplays: [...urlMediaDisplays],
791
+ filesRead: urlMediaLabels
792
+ // No chat-recording entry for a user-cancelled resolution.
793
+ };
794
+ }
795
+ const reason = getErrorMessage(error);
796
+ onDebugMessage(`Failed to localize media URL ${ref.url}: ${reason}`);
797
+ urlMediaDisplays.push({
798
+ callId,
799
+ name: "Fetch Media URL",
800
+ description: `Download ${ref.url}`,
801
+ status: "Error" /* Error */,
802
+ resultDisplay: `Failed to fetch media from ${hostLabel}: ${reason}`,
803
+ confirmationDetails: void 0
804
+ });
805
+ } finally {
806
+ if (tempPartPath) {
807
+ await fs2.rm(tempPartPath, { force: true }).catch(() => {
808
+ });
809
+ }
810
+ }
811
+ }
812
+ }
603
813
  const resourceParts = [];
604
814
  const resourceDisplays = [];
605
815
  const resourceLabels = [];
@@ -638,7 +848,10 @@ ${messages.join("\n")}`;
638
848
  confirmationDetails: void 0
639
849
  });
640
850
  }
641
- if (pathSpecsToRead.length === 0 && mcpResourceRefs.length === 0 && mcpServerMentions.length === 0 && extensionMentions.length === 0 && sessionMentions.length === 0) {
851
+ if (pathSpecsToRead.length === 0 && mcpResourceRefs.length === 0 && mcpServerMentions.length === 0 && extensionMentions.length === 0 && sessionMentions.length === 0 && // URL media refs count as content too: without this, a URL-only prompt
852
+ // would run the whole download→upload pipeline and then discard the
853
+ // delivered parts (and their display cards) via this early return.
854
+ urlMediaRefs.length === 0) {
642
855
  onDebugMessage("No valid file paths found in @ commands to read.");
643
856
  if (initialQueryText === "@" && query.trim() === "@") {
644
857
  return { processedQuery: [{ text: query }], shouldProceed: true };
@@ -917,7 +1130,8 @@ ${messages.join("\n")}`;
917
1130
  const labelsOnError = [
918
1131
  ...scopedMentionLabels,
919
1132
  ...contentLabelsForDisplay,
920
- ...resourceLabels
1133
+ ...resourceLabels,
1134
+ ...urlMediaLabels
921
1135
  ];
922
1136
  return {
923
1137
  processedQuery: null,
@@ -925,6 +1139,7 @@ ${messages.join("\n")}`;
925
1139
  toolDisplays: [
926
1140
  ...scopedMentionDisplays,
927
1141
  ...resourceDisplays,
1142
+ ...urlMediaDisplays,
928
1143
  errorToolCallDisplay
929
1144
  ],
930
1145
  filesRead: labelsOnError,
@@ -936,16 +1151,26 @@ ${messages.join("\n")}`;
936
1151
  };
937
1152
  }
938
1153
  }
1154
+ const rememberedMediaParts = rememberedMediaRefs.flatMap((ref) => [
1155
+ { text: ref.annotation },
1156
+ {
1157
+ text: `\u3010\u5A92\u4F53\u7F3A\u5931\u3011${ref.pathName}\uFF1A\u6587\u4EF6\u5DF2\u4E0D\u5728\u78C1\u76D8\u4E0A\uFF0C\u65E0\u6CD5\u6295\u9012\u753B\u9762/\u97F3\u9891\u3002\u5176\u5904\u7406\u8BB0\u5FC6\u4ECD\u53EF\u7528\u2014\u2014\u7528\u4E0A\u9762\u7684\u53E5\u67C4\u8C03\u7528 omni_recall_media_memory \u53D6\u56DE\u3002`
1158
+ }
1159
+ ]);
939
1160
  const processedQueryParts = [
940
1161
  { text: initialQueryText },
941
1162
  ...scopedMentionParts,
942
1163
  ...fileParts,
943
- ...resourceParts
1164
+ ...resourceParts,
1165
+ ...urlMediaParts,
1166
+ ...rememberedMediaParts
944
1167
  ];
945
1168
  const allLabels = [
946
1169
  ...scopedMentionLabels,
947
1170
  ...contentLabelsForDisplay,
948
- ...resourceLabels
1171
+ ...resourceLabels,
1172
+ ...urlMediaLabels,
1173
+ ...rememberedMediaRefs.map((ref) => `${ref.pathName} (\u8BB0\u5FC6)`)
949
1174
  ];
950
1175
  return {
951
1176
  processedQuery: processedQueryParts,
@@ -953,7 +1178,8 @@ ${messages.join("\n")}`;
953
1178
  toolDisplays: [
954
1179
  ...scopedMentionDisplays,
955
1180
  ...fileDisplays,
956
- ...resourceDisplays
1181
+ ...resourceDisplays,
1182
+ ...urlMediaDisplays
957
1183
  ],
958
1184
  filesRead: allLabels,
959
1185
  recording: {
@@ -5,13 +5,13 @@ import {
5
5
  readLocalBootId,
6
6
  readPidNamespaceId,
7
7
  readProcStartToken
8
- } from "./chunk-CH2YDT6X.js";
8
+ } from "./chunk-YVYK3JYU.js";
9
9
  import {
10
10
  require_proper_lockfile
11
11
  } from "./chunk-MLXTMF7H.js";
12
12
  import {
13
13
  Storage
14
- } from "./chunk-ZAFYHRVY.js";
14
+ } from "./chunk-ZYDMQCQP.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-5O2XNYP6.js";
@@ -0,0 +1,154 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ atomicWriteFile
5
+ } from "./chunk-CA63HYHU.js";
6
+ import {
7
+ createDebugLogger
8
+ } from "./chunk-ZYDMQCQP.js";
9
+ import {
10
+ init_esbuild_shims
11
+ } from "./chunk-5O2XNYP6.js";
12
+ import {
13
+ __name
14
+ } from "./chunk-J2S4EL5Y.js";
15
+
16
+ // packages/core/src/omni/json-cache-file.ts
17
+ init_esbuild_shims();
18
+ import fs from "node:fs/promises";
19
+ import path from "node:path";
20
+ var fileOps = /* @__PURE__ */ new Map();
21
+ function serializeFileOperation(key, fn) {
22
+ const prev = fileOps.get(key) ?? Promise.resolve();
23
+ const run = prev.then(fn, fn);
24
+ const settled = run.then(
25
+ () => {
26
+ },
27
+ () => {
28
+ }
29
+ );
30
+ fileOps.set(key, settled);
31
+ void settled.then(() => {
32
+ if (fileOps.get(key) === settled) fileOps.delete(key);
33
+ });
34
+ return run;
35
+ }
36
+ __name(serializeFileOperation, "serializeFileOperation");
37
+ var MAX_CORRUPT_BACKUPS = 2;
38
+ var OmniJsonCacheFile = class {
39
+ constructor(filePath, debugChannel) {
40
+ this.filePath = filePath;
41
+ this.debugLogger = createDebugLogger(debugChannel);
42
+ }
43
+ static {
44
+ __name(this, "OmniJsonCacheFile");
45
+ }
46
+ debugLogger;
47
+ /**
48
+ * Run one serialized operation against the entry map. `fn` returns the
49
+ * operation result plus whether it changed the map (triggering an
50
+ * atomic save). When the file exists but cannot be read,
51
+ * `unreadableResult` is returned and nothing is saved.
52
+ */
53
+ async access(unreadableResult, fn) {
54
+ return serializeFileOperation(this.filePath, async () => {
55
+ const data = await this.load();
56
+ if (!data) return unreadableResult;
57
+ const { result, changed } = await fn(data.entries);
58
+ if (changed) await this.save(data);
59
+ return result;
60
+ });
61
+ }
62
+ /**
63
+ * Load the cache file. Returns null when the file exists but could not
64
+ * be read (EACCES, EMFILE, …): the caller must skip its operation for
65
+ * this call — proceeding with an empty snapshot and later saving it
66
+ * would overwrite N valid entries with one (self-inflicted cache wipe).
67
+ * Only a genuinely missing file means empty-and-writable.
68
+ */
69
+ async load() {
70
+ let raw;
71
+ try {
72
+ raw = await fs.readFile(this.filePath, "utf8");
73
+ } catch (err) {
74
+ const code = err.code;
75
+ if (code === "ENOENT" || code === "ENOTDIR") {
76
+ return { version: 1, entries: {} };
77
+ }
78
+ this.debugLogger.debug(
79
+ `cache read failed, operation skipped: ${err instanceof Error ? err.message : err}`
80
+ );
81
+ return null;
82
+ }
83
+ try {
84
+ const parsed = JSON.parse(raw);
85
+ if (parsed?.version === 1 && typeof parsed.entries === "object" && parsed.entries !== null && !Array.isArray(parsed.entries)) {
86
+ let pruned = 0;
87
+ for (const [k, v] of Object.entries(parsed.entries)) {
88
+ if (typeof v !== "object" || v === null || Array.isArray(v)) {
89
+ delete parsed.entries[k];
90
+ pruned++;
91
+ }
92
+ }
93
+ if (pruned > 0) {
94
+ this.debugLogger.debug(
95
+ `dropped ${pruned} malformed cache entr${pruned === 1 ? "y" : "ies"} from ${this.filePath}`
96
+ );
97
+ }
98
+ return parsed;
99
+ }
100
+ throw new Error("unexpected shape");
101
+ } catch {
102
+ const backup = `${this.filePath}.corrupt-${Date.now()}`;
103
+ await fs.rename(this.filePath, backup).catch(() => {
104
+ });
105
+ await this.pruneCorruptBackups();
106
+ this.debugLogger.debug(`corrupt cache backed up to ${backup}`);
107
+ return { version: 1, entries: {} };
108
+ }
109
+ }
110
+ /** Best-effort: keep only the newest {@link MAX_CORRUPT_BACKUPS}. */
111
+ async pruneCorruptBackups() {
112
+ const dir = path.dirname(this.filePath);
113
+ const prefix = `${path.basename(this.filePath)}.corrupt-`;
114
+ try {
115
+ const backups = (await fs.readdir(dir)).filter((n) => n.startsWith(prefix)).sort().reverse();
116
+ for (const name of backups.slice(MAX_CORRUPT_BACKUPS)) {
117
+ await fs.rm(path.join(dir, name), { force: true }).catch(() => {
118
+ });
119
+ }
120
+ } catch {
121
+ }
122
+ }
123
+ async save(data) {
124
+ try {
125
+ await fs.mkdir(path.dirname(this.filePath), {
126
+ recursive: true,
127
+ mode: 448
128
+ });
129
+ await atomicWriteFile(this.filePath, JSON.stringify(data, null, 1), {
130
+ mode: 384,
131
+ forceMode: true,
132
+ // Rename-replacement semantics: a symlink planted at the cache
133
+ // path is REPLACED by the rename, never written through — without
134
+ // this the default symlink resolution would redirect the write
135
+ // (and the 0600 chmod) onto the link's target.
136
+ noFollow: true
137
+ });
138
+ } catch (err) {
139
+ this.debugLogger.debug(
140
+ `cache write failed: ${err instanceof Error ? err.message : err}`
141
+ );
142
+ }
143
+ }
144
+ };
145
+
146
+ export {
147
+ serializeFileOperation,
148
+ OmniJsonCacheFile
149
+ };
150
+ /**
151
+ * @license
152
+ * Copyright 2025 Google LLC
153
+ * SPDX-License-Identifier: Apache-2.0
154
+ */
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  MAX_INLINE_IMAGE_ENCODED_LENGTH
5
- } from "./chunk-C4HBZQNH.js";
5
+ } from "./chunk-U3MTHCJF.js";
6
6
  import {
7
7
  MAX_TERMINAL_IMAGE_BYTES
8
- } from "./chunk-RSWBT7AZ.js";
8
+ } from "./chunk-VPGRGNNH.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  MAX_TERMINAL_IMAGE_BYTES
5
- } from "./chunk-RSWBT7AZ.js";
5
+ } from "./chunk-VPGRGNNH.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";