@qwen-code/qwen-code 0.22.1 → 0.22.2-nightly.20260828.7357136dd1

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 (418) hide show
  1. package/bundled/goal-draft/SKILL.md +109 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +13 -13
  3. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
  5. package/bundled/qc-helper/docs/features/code-review.md +3 -3
  6. package/bundled/qc-helper/docs/features/commands.md +2 -1
  7. package/bundled/qc-helper/docs/features/goals.md +58 -0
  8. package/bundled/qc-helper/docs/features/headless.md +13 -11
  9. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  10. package/bundled/review/SKILL.md +70 -22
  11. package/bundled/review/references/persistence.md +7 -3
  12. package/bundled/review/references/posting.md +2 -0
  13. package/chunks/MaxSizedBox-LMWXCLDV.js +110 -0
  14. package/chunks/{StandaloneSessionPicker-XF2TVJFK.js → StandaloneSessionPicker-W3F7U3JL.js} +79 -81
  15. package/chunks/{acpAgent-GY53MJIW.js → acpAgent-EYZ6EEHD.js} +1132 -339
  16. package/chunks/{agent-7U6CC5KF.js → agent-RBLGBY65.js} +44 -46
  17. package/chunks/agent-headless-L5T4Y4OZ.js +85 -0
  18. package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-GMHML35Q.js} +10 -11
  19. package/chunks/{artifact-tool-XDJCZZCF.js → artifact-tool-XSMPHZBT.js} +11 -3
  20. package/chunks/{askUserQuestion-ZXXERLEV.js → askUserQuestion-4SWJY65V.js} +2 -2
  21. package/chunks/bridge-5LR2F2ND.js +119 -0
  22. package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-KHR3N6CH.js} +6 -6
  23. package/chunks/channel-settings-store-4FOAZW72.js +120 -0
  24. package/chunks/{channel-worker-group-EVDC2P4K.js → channel-worker-group-6NA6BBZV.js} +8 -7
  25. package/chunks/{channel-worker-manager-IJJZHGEI.js → channel-worker-manager-NEZ2J6RK.js} +10 -8
  26. package/chunks/{channel-worker-supervisor-YSKB5GVB.js → channel-worker-supervisor-FKU7DIHJ.js} +6 -5
  27. package/chunks/{chunk-7QGEJI7M.js → chunk-23RFD54N.js} +1 -1
  28. package/chunks/{chunk-LJP2BBMK.js → chunk-2SXSLSQE.js} +4 -4
  29. package/chunks/chunk-2TNL5KPM.js +49 -0
  30. package/chunks/chunk-335CJSNF.js +2320 -0
  31. package/chunks/chunk-36LGBEM6.js +130 -0
  32. package/chunks/{chunk-ZWKGZB2K.js → chunk-3JXM2CVW.js} +3 -3
  33. package/chunks/{chunk-ICWGPK23.js → chunk-3K6TUZHS.js} +7 -7
  34. package/chunks/{chunk-43C2II2G.js → chunk-3OOXT6CR.js} +5 -5
  35. package/chunks/{chunk-ILPXSKGQ.js → chunk-3WK3QDNV.js} +2 -2
  36. package/chunks/{chunk-2YDYDDE2.js → chunk-3XOKEVII.js} +3 -3
  37. package/chunks/chunk-3Y34Q3JV.js +1584 -0
  38. package/chunks/{chunk-ZLTEQYNC.js → chunk-42IDLQWS.js} +26 -20
  39. package/chunks/{chunk-5MK32KJV.js → chunk-454XFGH4.js} +3 -3
  40. package/chunks/chunk-4CMJKUND.js +95 -0
  41. package/chunks/{chunk-77TOMRBG.js → chunk-4K7KNVWH.js} +3 -3
  42. package/chunks/{chunk-V3GINY6K.js → chunk-4QHPPXK2.js} +16 -8
  43. package/chunks/{chunk-UCSV2IZW.js → chunk-62GQFYID.js} +3 -3
  44. package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
  45. package/chunks/{chunk-I6YW3T3W.js → chunk-6JCGO55P.js} +723 -3399
  46. package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
  47. package/chunks/{chunk-5Y2JCJAH.js → chunk-6W2IK5KC.js} +956 -17
  48. package/chunks/{chunk-A7X32SCT.js → chunk-6ZZBRRKQ.js} +5 -5
  49. package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
  50. package/chunks/{chunk-4DCP3362.js → chunk-7GWQW5ID.js} +4 -4
  51. package/chunks/chunk-7J6OTNGO.js +424 -0
  52. package/chunks/{chunk-CITGRGCM.js → chunk-7TUBJBBJ.js} +4 -1
  53. package/chunks/{chunk-L436XFLJ.js → chunk-7VD6IPQM.js} +1 -1
  54. package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
  55. package/chunks/{chunk-2ZV3CZKI.js → chunk-AJGR6E6Z.js} +49 -32
  56. package/chunks/{chunk-HJOWQUE2.js → chunk-AU3MMVJF.js} +31 -14
  57. package/chunks/{chunk-I32QCIK7.js → chunk-AXC26UCQ.js} +1 -1
  58. package/chunks/{chunk-7AS7QX72.js → chunk-AY3BNYEQ.js} +1 -1
  59. package/chunks/{chunk-FVDQ5E67.js → chunk-B466ZSHZ.js} +3 -3
  60. package/chunks/{chunk-OI2DR6QB.js → chunk-B5OUL5EL.js} +2 -2
  61. package/chunks/{chunk-6US7BF3G.js → chunk-B5PHIJGI.js} +183 -5
  62. package/chunks/{chunk-5T4LWWNX.js → chunk-B7CDU2SL.js} +2 -2
  63. package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
  64. package/chunks/{chunk-WBT3STGU.js → chunk-BKWNKLZB.js} +20 -20
  65. package/chunks/{chunk-73WFGVIZ.js → chunk-BOWFGCEU.js} +3 -3
  66. package/chunks/{chunk-EMGAVCBZ.js → chunk-BPAKYXQ3.js} +2 -2
  67. package/chunks/{chunk-IPQA4SR5.js → chunk-BWORX6FA.js} +1 -1
  68. package/chunks/{chunk-BKDAF7ES.js → chunk-BXDAPVQU.js} +2 -2
  69. package/chunks/{chunk-ZEADBZLO.js → chunk-C2X7KY45.js} +3 -3
  70. package/chunks/{chunk-T2HMXHYA.js → chunk-C3KURPP7.js} +6 -6
  71. package/chunks/{chunk-JUIJ3FXC.js → chunk-CAJTKR6W.js} +5 -5
  72. package/chunks/{chunk-2FN2HNTI.js → chunk-CFJY4DGX.js} +2 -2
  73. package/chunks/{chunk-DP7LABIB.js → chunk-CMHFCLBU.js} +1 -1
  74. package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
  75. package/chunks/{chunk-J7MLXFC5.js → chunk-CRKKHXTI.js} +185 -174
  76. package/chunks/{chunk-XNXWEGKB.js → chunk-CYAUBK46.js} +3 -3
  77. package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
  78. package/chunks/{chunk-SRGENTPF.js → chunk-DFDWJE6Z.js} +48 -31
  79. package/chunks/chunk-DJBQCO2E.js +842 -0
  80. package/chunks/{chunk-2CRNTW2B.js → chunk-DP4MWIM3.js} +2 -2
  81. package/chunks/{chunk-EB4VDXNI.js → chunk-DYXFD5RO.js} +182 -3
  82. package/chunks/{chunk-ODXCSIH5.js → chunk-E3XVSVKK.js} +26 -4
  83. package/chunks/{chunk-ZKAZP2ZG.js → chunk-EB6QRGHM.js} +3 -3
  84. package/chunks/{chunk-GNRVKN76.js → chunk-EKNBU2X7.js} +4 -4
  85. package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
  86. package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
  87. package/chunks/chunk-EW5VVLJT.js +3525 -0
  88. package/chunks/{chunk-XYX474JQ.js → chunk-EWIQ3NAE.js} +2522 -2030
  89. package/chunks/{chunk-O5YGAEQS.js → chunk-FALBWZF4.js} +6 -6
  90. package/chunks/{chunk-GZJUCMH4.js → chunk-FEHMA4RO.js} +542 -654
  91. package/chunks/{chunk-2YEZNBSD.js → chunk-FMFBLTLY.js} +320 -86
  92. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  93. package/chunks/{chunk-ZJG323IA.js → chunk-G6FECKTJ.js} +7 -5
  94. package/chunks/{chunk-6KS24S3X.js → chunk-GGNE3JAW.js} +1 -1
  95. package/chunks/{chunk-BQBUZDDH.js → chunk-H33EQVMG.js} +4 -4
  96. package/chunks/chunk-H72BQNM3.js +645 -0
  97. package/chunks/{chunk-5ZYZPDDF.js → chunk-HGIMWQVT.js} +30 -25
  98. package/chunks/{chunk-DCSAVGDJ.js → chunk-HOCJDUFY.js} +2 -2
  99. package/chunks/{chunk-MDZO5V2O.js → chunk-HPXV655A.js} +9 -7
  100. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  101. package/chunks/{chunk-2MHGD7EE.js → chunk-HYDJDQGJ.js} +1 -1
  102. package/chunks/{chunk-BDHLBR46.js → chunk-IB7FQJRY.js} +34 -11
  103. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  104. package/chunks/{chunk-PAJGKZAA.js → chunk-ISKH4QX3.js} +14 -12
  105. package/chunks/{chunk-3B5DCAQU.js → chunk-J6S24ZJE.js} +34 -34
  106. package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
  107. package/chunks/{chunk-C4WBKZJT.js → chunk-JN4IWWMN.js} +4 -4
  108. package/chunks/{chunk-6HTMIKXZ.js → chunk-JUUBLSZU.js} +4 -4
  109. package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
  110. package/chunks/{chunk-SKNVVYIJ.js → chunk-K5KXUXWC.js} +3 -3
  111. package/chunks/{chunk-IRIX323G.js → chunk-KTJFDCX4.js} +2 -2
  112. package/chunks/{chunk-FK4H3V6S.js → chunk-LEFCFTEX.js} +6 -6
  113. package/chunks/{chunk-OQ6LTSX3.js → chunk-LEGTMYAE.js} +1 -1
  114. package/chunks/{chunk-NY3IJYAV.js → chunk-LLZA2IK3.js} +15 -9
  115. package/chunks/{chunk-5CI4AXDD.js → chunk-LNETQKBE.js} +4 -4
  116. package/chunks/{chunk-TOF4UZHH.js → chunk-LUEHOUHM.js} +3 -3
  117. package/chunks/{chunk-62PXFOK4.js → chunk-LVPZO674.js} +4 -4
  118. package/chunks/{chunk-EEQYTWGU.js → chunk-M4ORUPYI.js} +5 -5
  119. package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
  120. package/chunks/{chunk-MYLXL7F6.js → chunk-MAYHGRP4.js} +9 -9
  121. package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
  122. package/chunks/{chunk-SM7ZVKTF.js → chunk-MTJN7FOT.js} +7 -7
  123. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  124. package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
  125. package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
  126. package/chunks/{chunk-R2ZJH3FV.js → chunk-NXMBRVMQ.js} +3 -3
  127. package/chunks/{chunk-JLGFGPZJ.js → chunk-OI4NY7RA.js} +2 -2
  128. package/chunks/{chunk-RRKNX553.js → chunk-PDQGMSZK.js} +1 -1
  129. package/chunks/{chunk-GTUKW3I6.js → chunk-PPKZ7JOE.js} +1 -1
  130. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  131. package/chunks/{chunk-MW5AHWOZ.js → chunk-PWIGAMA4.js} +93 -14
  132. package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
  133. package/chunks/{chunk-EAV3TENS.js → chunk-QPTRRPZU.js} +44 -7
  134. package/chunks/{chunk-SQPOJ4ZI.js → chunk-RFI4YGMR.js} +21 -266
  135. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  136. package/chunks/chunk-RKFGE7JH.js +93 -0
  137. package/chunks/chunk-RNVFRIOO.js +275 -0
  138. package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
  139. package/chunks/{chunk-OT26ITEY.js → chunk-RVXDXY6I.js} +3 -3
  140. package/chunks/{chunk-W2WRNJKX.js → chunk-RWZB422L.js} +5 -5
  141. package/chunks/{chunk-6YAR6ZU3.js → chunk-RYNZQGXN.js} +19 -2
  142. package/chunks/{chunk-EKP3M4RF.js → chunk-SJ5ERAW3.js} +1 -1
  143. package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
  144. package/chunks/{chunk-3BV7TZNQ.js → chunk-SRZZY4IY.js} +3 -3
  145. package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
  146. package/chunks/{chunk-TKO4TLT6.js → chunk-SUX7HDNA.js} +3 -3
  147. package/chunks/{chunk-76WGY6LW.js → chunk-SVNO44PF.js} +3 -3
  148. package/chunks/{chunk-UX3IFLJM.js → chunk-SZLBBZH4.js} +150 -23
  149. package/chunks/{chunk-K63NK3KL.js → chunk-T2NKRHZZ.js} +13 -13
  150. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  151. package/chunks/{chunk-2NCVUT3C.js → chunk-TLHUNMO7.js} +4 -4
  152. package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
  153. package/chunks/{chunk-ZXDM7DYV.js → chunk-TQHGJYR3.js} +2029 -616
  154. package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
  155. package/chunks/{chunk-OX44MOAN.js → chunk-TW3E6YNO.js} +3 -3
  156. package/chunks/chunk-U54AYGEC.js +337 -0
  157. package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
  158. package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
  159. package/chunks/{chunk-KCOXDRQL.js → chunk-UY3PBNY3.js} +17 -29
  160. package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
  161. package/chunks/{chunk-47SIHHPL.js → chunk-V2QDDC5J.js} +19 -9
  162. package/chunks/{chunk-BVE5EMIG.js → chunk-V5J4J5TP.js} +2 -2
  163. package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
  164. package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
  165. package/chunks/{chunk-VMDURMFY.js → chunk-W6DUQ5GA.js} +11307 -10424
  166. package/chunks/{chunk-BX2BZPFJ.js → chunk-WALC5VJH.js} +4 -4
  167. package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
  168. package/chunks/{chunk-LI2HEMKO.js → chunk-WBHKK3CU.js} +4 -4
  169. package/chunks/{chunk-O3BUXIPM.js → chunk-WXEA74YB.js} +3 -3
  170. package/chunks/{chunk-NER3H7PI.js → chunk-X3ZRTCJD.js} +1 -1
  171. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  172. package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
  173. package/chunks/{chunk-FN5C6C7G.js → chunk-XLLQJRAH.js} +190 -478
  174. package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
  175. package/chunks/{chunk-FJWICLG7.js → chunk-Y3QL45LS.js} +1 -1
  176. package/chunks/{chunk-IKN3IUJP.js → chunk-Y4TPOUEV.js} +17 -9
  177. package/chunks/{chunk-NVK4HJYQ.js → chunk-YRZX2PHA.js} +1 -1
  178. package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
  179. package/chunks/{chunk-KWFP3WV6.js → chunk-YWQ237GX.js} +4 -193
  180. package/chunks/{chunk-6E4WHQJV.js → chunk-ZTP35P4B.js} +1 -1
  181. package/chunks/{chunk-E6FGMDFQ.js → chunk-ZU4UDIWX.js} +19 -1
  182. package/chunks/config-utils-JVGAP34H.js +113 -0
  183. package/chunks/contextCommand-XDB7OSO7.js +106 -0
  184. package/chunks/{core-runtime-PKNQ63VL.js → core-runtime-XHYA2RH7.js} +59 -61
  185. package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
  186. package/chunks/{create-sub-session-PLGPY6TV.js → create-sub-session-MHYCFNCM.js} +163 -84
  187. package/chunks/{cron-create-IJGVR5R2.js → cron-create-KJ4IY6PP.js} +57 -10
  188. package/chunks/{cron-delete-4N5BI6GL.js → cron-delete-MBLQCAYY.js} +4 -4
  189. package/chunks/{cron-list-2CATIPUX.js → cron-list-DWH2PQ47.js} +4 -4
  190. package/chunks/{daemon-NAYK4XXU.js → daemon-K5XS42ID.js} +516 -3
  191. package/chunks/{daemon-git-worktree-guard-LDBJXH2U.js → daemon-git-worktree-guard-V3P5XLHB.js} +56 -58
  192. package/chunks/daemon-status-provider-KKU7ZTLM.js +117 -0
  193. package/chunks/daemon-trust-policy-TZGK34DW.js +112 -0
  194. package/chunks/{daemon-trust-policy-monitor-IGEJPHQ4.js → daemon-trust-policy-monitor-F23DD2M4.js} +62 -64
  195. package/chunks/deferred-core-runtime-LKLGBCGZ.js +114 -0
  196. package/chunks/{display-image-DR55LL6M.js → display-image-BE7I6ZB6.js} +5 -5
  197. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  198. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  199. package/chunks/{dist-6H6RZ5H6.js → dist-6BPYWHVD.js} +89 -65
  200. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  201. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  202. package/chunks/{dist-FVJZSIO4.js → dist-LVZCXVPF.js} +72 -20
  203. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  204. package/chunks/{dist-4Q7NTUNB.js → dist-QDLFKWOL.js} +2 -2
  205. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  206. package/chunks/earlyInputCapture-NERYFYTR.js +107 -0
  207. package/chunks/{edit-KSPVUEAS.js → edit-ACCATIXB.js} +45 -47
  208. package/chunks/{en-6MDBWMTG.js → en-YLXBXM4Z.js} +2 -1
  209. package/chunks/{enter-worktree-UOZ6ZTP7.js → enter-worktree-35QCAAFP.js} +7 -7
  210. package/chunks/{enterPlanMode-DZTABSKN.js → enterPlanMode-NEN6EPVM.js} +44 -46
  211. package/chunks/{environment-JXOSW25V.js → environment-CKWHBC5T.js} +58 -60
  212. package/chunks/errors-XTZPNQ77.js +113 -0
  213. package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-XQD6D543.js} +7 -7
  214. package/chunks/exitPlanMode-CY344X5J.js +83 -0
  215. package/chunks/{fast-path-EBS7NAVL.js → fast-path-YSOX4PAM.js} +5 -5
  216. package/chunks/{gemini-JELEKOVS.js → gemini-VQY2YCPH.js} +110 -108
  217. package/chunks/{geminiContentGenerator-I2CKP7XI.js → geminiContentGenerator-PAPXNIGU.js} +8 -8
  218. package/chunks/{glob-TDVEVPQZ.js → glob-GVCUSBBF.js} +44 -46
  219. package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-5STK6OXW.js} +10 -8
  220. package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
  221. package/chunks/handleAutoUpdate-ZJPJN42W.js +109 -0
  222. package/chunks/i18n-BZYKOST7.js +124 -0
  223. package/chunks/{image-gen-63NN2H5N.js → image-gen-J6FDGUZP.js} +8 -10
  224. package/chunks/initializer-GO2C5HE3.js +113 -0
  225. package/chunks/installationInfo-WM2GXQZ6.js +107 -0
  226. package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
  227. package/chunks/list-ERDJB7PQ.js +116 -0
  228. package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
  229. package/chunks/loadedSettingsAdapter-7JOCVOKV.js +110 -0
  230. package/chunks/{loggingContentGenerator-CZWUAHAI.js → loggingContentGenerator-3ONLU3BS.js} +321 -30
  231. package/chunks/{loop-wakeup-XBPB2BRO.js → loop-wakeup-XJFONSQ7.js} +5 -5
  232. package/chunks/{ls-WFONAND2.js → ls-3VAT2J7A.js} +4 -4
  233. package/chunks/{lsp-DUKPDUXN.js → lsp-5W7IRUBH.js} +2 -2
  234. package/chunks/{managed-npm-update-54W23SP5.js → managed-npm-update-TLRCC2GE.js} +57 -59
  235. package/chunks/mcp-2LH3QXR2.js +110 -0
  236. package/chunks/{monitor-A4J5QRGJ.js → monitor-P7LDAL4W.js} +44 -46
  237. package/chunks/nonInteractiveCli-E5T7PZ27.js +184 -0
  238. package/chunks/{notebook-edit-4ANFZON5.js → notebook-edit-F7KSG4WQ.js} +45 -47
  239. package/chunks/{openaiContentGenerator-JCCJJQZC.js → openaiContentGenerator-2EXCZUGN.js} +26 -28
  240. package/chunks/pidfile-P25DWA5Q.js +111 -0
  241. package/chunks/process-registry-OAEG6WGC.js +662 -0
  242. package/chunks/{processUtils-JJAR56SO.js → processUtils-PVDKBL35.js} +2 -2
  243. package/chunks/prompt-terminal-ledger-AJ7T7OIV.js +105 -0
  244. package/chunks/{qwenContentGenerator-5JM44ZSA.js → qwenContentGenerator-TBBRLWIT.js} +49 -51
  245. package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-OF5WRBQT.js} +7 -9
  246. package/chunks/{read-file-N3E5DY7N.js → read-file-6IIY4RLJ.js} +13 -13
  247. package/chunks/{read-mcp-resource-7A7NFSFL.js → read-mcp-resource-XD257PGJ.js} +2 -2
  248. package/chunks/{record-artifact-CPJ4IJSD.js → record-artifact-VW23GS4F.js} +4 -4
  249. package/chunks/{report-findings-VFM5DENC.js → report-findings-XA3FJG3N.js} +5 -5
  250. package/chunks/{request-shutdown-AXVOFN5C.js → request-shutdown-BCLA3JV2.js} +7 -7
  251. package/chunks/resumeHistoryUtils-44IETXDY.js +118 -0
  252. package/chunks/ripGrep-E7ESZ7SS.js +39 -0
  253. package/chunks/{run-qwen-serve-IWGPZADI.js → run-qwen-serve-DXBCYW7V.js} +356 -331
  254. package/chunks/{runtime-I76HPFUE.js → runtime-RUSPD35D.js} +67 -69
  255. package/chunks/scheduled-tasks-DVRJZO6I.js +127 -0
  256. package/chunks/{scheduler-M6YL4K4I.js → scheduler-TDRB2NSY.js} +58 -60
  257. package/chunks/{sdk-exporters-http-XXSKBD2C.js → sdk-exporters-http-TTU2CHBU.js} +2 -2
  258. package/chunks/{sdk-impl-VPNBLV7I.js → sdk-impl-UUMVYMAL.js} +11 -5
  259. package/chunks/{send-message-A2GXDX3B.js → send-message-AJ4OCUBV.js} +25 -9
  260. package/chunks/serve-KITOM7OR.js +118 -0
  261. package/chunks/{server-TWXRRREO.js → server-THCOMUC2.js} +5476 -4771
  262. package/chunks/{session-IT5ZXU7A.js → session-XKR5MPXE.js} +105 -106
  263. package/chunks/session-pr-refresh-KRBH7KDA.js +278 -0
  264. package/chunks/{settings-IX5HOOCG.js → settings-YXZ4XBKK.js} +61 -63
  265. package/chunks/{shell-LZ55AAJB.js → shell-5FJ2DZ3W.js} +44 -46
  266. package/chunks/{skill-WSZ53D2R.js → skill-VMMJZ6CJ.js} +71 -26
  267. package/chunks/skill-settings-7SG4YA2W.js +118 -0
  268. package/chunks/spawnChannel-BPMIXRBI.js +112 -0
  269. package/chunks/standalone-update-QN5HFRIC.js +118 -0
  270. package/chunks/{startInteractiveUI-O6BI2OSA.js → startInteractiveUI-5A7RQFRP.js} +2902 -2289
  271. package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
  272. package/chunks/{task-create-CDJSOEQD.js → task-create-QN4LYRSE.js} +11 -11
  273. package/chunks/{task-list-BELMPA75.js → task-list-JPLGK45U.js} +5 -5
  274. package/chunks/{task-stop-U3S3KZG2.js → task-stop-CXEH5L2D.js} +2 -2
  275. package/chunks/{task-update-77VCFDDZ.js → task-update-IWEOJFV2.js} +11 -11
  276. package/chunks/{team-create-UF4TMQEH.js → team-create-HVGVUL2L.js} +44 -46
  277. package/chunks/{team-delete-YWFXX77L.js → team-delete-RZVVSGCY.js} +5 -5
  278. package/chunks/{team-plan-approval-U57NSR6C.js → team-plan-approval-S5A5FQWU.js} +44 -46
  279. package/chunks/terminal-image-renderer-SIVPPXDI.js +114 -0
  280. package/chunks/theme-manager-TA33UZZX.js +102 -0
  281. package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
  282. package/chunks/{tool-search-SV35UV72.js → tool-search-NX7IPDKP.js} +18 -18
  283. package/chunks/total-session-admission-PWXZBOVX.js +114 -0
  284. package/chunks/{trustedFolders-YKK67IP3.js → trustedFolders-V6Y4CU3F.js} +57 -59
  285. package/chunks/{update-relaunch-DX7LVA4P.js → update-relaunch-CGSX3R37.js} +5 -5
  286. package/chunks/updateCheck-T5O2WGIB.js +118 -0
  287. package/chunks/useAutoAcceptIndicator-ULBJJWPY.js +120 -0
  288. package/chunks/{validateNonInterActiveAuth-B26O4YJP.js → validateNonInterActiveAuth-E5S2JSRC.js} +101 -102
  289. package/chunks/{version-K5D7VJ4B.js → version-LS5JPU36.js} +1 -1
  290. package/chunks/{web-fetch-VFHZLLNZ.js → web-fetch-RLMFZTS3.js} +16 -18
  291. package/chunks/{web-search-AQE5A4J5.js → web-search-LMCIC4N5.js} +9 -11
  292. package/chunks/{workflow-XL6AEUZ7.js → workflow-JBXU3IGA.js} +128 -94
  293. package/chunks/workspace-providers-status-525ORQBH.js +114 -0
  294. package/chunks/{workspace-registration-store-I4U3V5LL.js → workspace-registration-store-7Y44R4LV.js} +1 -1
  295. package/chunks/workspace-registry-HS4RWUSQ.js +123 -0
  296. package/chunks/workspace-service-7PXDM6EB.js +129 -0
  297. package/chunks/workspace-skills-status-FMJGC2XI.js +113 -0
  298. package/chunks/{workspace-trust-reconciler-GJ466KCE.js → workspace-trust-reconciler-3YTWSQBY.js} +70 -70
  299. package/chunks/write-file-BVQRYQQO.js +88 -0
  300. package/chunks/{zh-TW-MV4FWFB6.js → zh-TW-RPTMRTHG.js} +2 -1
  301. package/chunks/{zh-X3WGU6SI.js → zh-UNY63FR3.js} +2 -1
  302. package/chunks/{zoom-image-NYJPC3NI.js → zoom-image-FGCELNS4.js} +13 -13
  303. package/cli.js +14 -14
  304. package/locales/en.js +2 -0
  305. package/locales/zh-TW.js +2 -0
  306. package/locales/zh.js +2 -0
  307. package/package.json +3 -3
  308. package/web-shell/assets/{abnfDiagram-VCTEODGH-yq7z7Anb.js → abnfDiagram-VCTEODGH-2XZDeWYO.js} +1 -1
  309. package/web-shell/assets/{arc-CbJO0xnT.js → arc-B6UgMh90.js} +1 -1
  310. package/web-shell/assets/{architectureDiagram-5GKGNRK7-CRh89421.js → architectureDiagram-5GKGNRK7-DZgNFeN1.js} +1 -1
  311. package/web-shell/assets/{blockDiagram-NRAW4CY4-C75KAhKv.js → blockDiagram-NRAW4CY4-DQ2wvBFN.js} +1 -1
  312. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BzlMveFB.js → c4Diagram-UCG6FXSJ-DMmQMrc4.js} +1 -1
  313. package/web-shell/assets/channel-D_TyfiTx.js +1 -0
  314. package/web-shell/assets/{chunk-2Q5K7J3B-DA8QDX3a.js → chunk-2Q5K7J3B-C8Zh2e9y.js} +1 -1
  315. package/web-shell/assets/{chunk-5VM5RSS4-Bgu7gQ7Y.js → chunk-5VM5RSS4-C3LTenP8.js} +1 -1
  316. package/web-shell/assets/{chunk-F27PBJKO-BOew7pIK.js → chunk-F27PBJKO-CxABOc8n.js} +1 -1
  317. package/web-shell/assets/{chunk-G27WJ6UU-DHx1I-hO.js → chunk-G27WJ6UU-CD_JxHDC.js} +1 -1
  318. package/web-shell/assets/{chunk-JWPE2WC7-SarFW0WU.js → chunk-JWPE2WC7-BdmZPmce.js} +1 -1
  319. package/web-shell/assets/{chunk-LCL6LL3I-BLzP083Z.js → chunk-LCL6LL3I-80bcHmfK.js} +1 -1
  320. package/web-shell/assets/{chunk-POPQ4Y6H-Bmkv_iKm.js → chunk-POPQ4Y6H-CNpLZyQF.js} +1 -1
  321. package/web-shell/assets/{chunk-SVP7TREG-MPx9r1N2.js → chunk-SVP7TREG-CXlKgMv3.js} +1 -1
  322. package/web-shell/assets/{chunk-XXDRQBXY-Ck-09rKG.js → chunk-XXDRQBXY-CivyYyvL.js} +1 -1
  323. package/web-shell/assets/classDiagram-DTDB5LWJ-Bw_H3xMd.js +1 -0
  324. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Bw_H3xMd.js +1 -0
  325. package/web-shell/assets/{cose-bilkent-JH36ORCC-DWm6lfOG.js → cose-bilkent-JH36ORCC-COAjRH3w.js} +1 -1
  326. package/web-shell/assets/{cynefin-OW5HDTMX-DcBUyr5R.js → cynefin-OW5HDTMX-DqU1JHO6.js} +1 -1
  327. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Df8qmd_p.js → cynefinDiagram-5FMLGOSQ-BCLI1Bvj.js} +1 -1
  328. package/web-shell/assets/{dagre-3AP2YEHR-DDmGspD7.js → dagre-3AP2YEHR-DmAz8nqF.js} +1 -1
  329. package/web-shell/assets/{diagram-S7CK7UJ4-BK_qFvbi.js → diagram-S7CK7UJ4-Ck-5QLT5.js} +1 -1
  330. package/web-shell/assets/{diagram-UQ7AKVKN-Uw3AP_bi.js → diagram-UQ7AKVKN-C0ljX0mW.js} +1 -1
  331. package/web-shell/assets/{diagram-VSXAHHWV-CJOQKxY7.js → diagram-VSXAHHWV-DPgvT24v.js} +1 -1
  332. package/web-shell/assets/{diagram-VX7I27RA-DhdvZna5.js → diagram-VX7I27RA-D7hWr1LR.js} +1 -1
  333. package/web-shell/assets/{diagram-Z3DM3KII-edQU0nlP.js → diagram-Z3DM3KII-D59tlOta.js} +1 -1
  334. package/web-shell/assets/{ebnfDiagram-PWID7BFC-4kugBEsO.js → ebnfDiagram-PWID7BFC-CY2DDx00.js} +1 -1
  335. package/web-shell/assets/{erDiagram-SSCWMZ5O-BMkFivWO.js → erDiagram-SSCWMZ5O-AR4h8Q8k.js} +1 -1
  336. package/web-shell/assets/{flowDiagram-A5DVABFB-BM1ea8g-.js → flowDiagram-A5DVABFB-DbF0HqBz.js} +1 -1
  337. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CXj_cKRf.js → ganttDiagram-EL5Y4UJY-J52mrIhc.js} +1 -1
  338. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-D0nEqwqu.js → gitGraphDiagram-WWUBYQGX-CcgMY5EV.js} +1 -1
  339. package/web-shell/assets/index-BjUg3vPr.css +5 -0
  340. package/web-shell/assets/index-CFwYYVFU.js +1873 -0
  341. package/web-shell/assets/{index-B6JN54Pd.js → index-MQs7l15A.js} +1 -1
  342. package/web-shell/assets/{infoDiagram-RXCK75RN-DF7aGGbQ.js → infoDiagram-RXCK75RN-Buu3ibp2.js} +1 -1
  343. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CZYNX1lL.js → ishikawaDiagram-5VMMS53U-CoKQxnF3.js} +1 -1
  344. package/web-shell/assets/{journeyDiagram-EYS64GPL-CvrqMUz1.js → journeyDiagram-EYS64GPL-CxK35mTC.js} +1 -1
  345. package/web-shell/assets/{kanban-definition-3QL26DDD-BZNJQZBj.js → kanban-definition-3QL26DDD-tk2CHTQ1.js} +1 -1
  346. package/web-shell/assets/{layout-Bf83x7D6.js → layout-DEpMwb4u.js} +1 -1
  347. package/web-shell/assets/{linear-Bkc3ES2f.js → linear-DSQsLh53.js} +1 -1
  348. package/web-shell/assets/{mermaid.core-C6xuovwz.js → mermaid.core-DIZuPBQT.js} +6 -6
  349. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DzH6gVRg.js → mindmap-definition-FBJOCRG2-CCAvk8r_.js} +1 -1
  350. package/web-shell/assets/{pegDiagram-XKGWAZYB-DCvLh2fa.js → pegDiagram-XKGWAZYB-CpJ28jxz.js} +1 -1
  351. package/web-shell/assets/{pieDiagram-E7YTZNPT-BtjVlx_6.js → pieDiagram-E7YTZNPT-ziJR2R32.js} +1 -1
  352. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-IbroqxFe.js → quadrantDiagram-AXDQQJYC-B60zE3Mh.js} +1 -1
  353. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BvMykiWW.js → railroadDiagram-O6MQD6OU-M3GqQ_g1.js} +1 -1
  354. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-D-HHMyrh.js → requirementDiagram-EFPCY7ZU-ntCtYqTk.js} +1 -1
  355. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C0XXhB6d.js → sankeyDiagram-P5KCCOFB-AYLoItcZ.js} +1 -1
  356. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DseAXj5d.js → sequenceDiagram-WJ2MYXX4-DEWk4Mlj.js} +1 -1
  357. package/web-shell/assets/{sizeCapture-X5ZJPWSS-Cek2EweK.js → sizeCapture-X5ZJPWSS-OOWvzPay.js} +1 -1
  358. package/web-shell/assets/{stateDiagram-HBIQ2CUA-yLv8wafW.js → stateDiagram-HBIQ2CUA-BcMmvxem.js} +1 -1
  359. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DRLLqPWO.js +1 -0
  360. package/web-shell/assets/{swimlanes-XN3QIQJK-Cwz-opvE.js → swimlanes-XN3QIQJK-DuZTWWvh.js} +1 -1
  361. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DOfLQQYt.js +8 -0
  362. package/web-shell/assets/{timeline-definition-24CTP7MA-BJuFD7OG.js → timeline-definition-24CTP7MA-CjqtZXEd.js} +1 -1
  363. package/web-shell/assets/{vennDiagram-4TSXK5OY-CNAavdoV.js → vennDiagram-4TSXK5OY-knVCVkQ4.js} +1 -1
  364. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-DaIjAidq.js → wardleyDiagram-VM6X3IG4-yoWhw0a2.js} +1 -1
  365. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DkcQXjTy.js → xychartDiagram-S5SC5T6Z-ue14E_gL.js} +1 -1
  366. package/web-shell/index.html +3 -3
  367. package/chunks/MaxSizedBox-UUTUE42J.js +0 -112
  368. package/chunks/agent-headless-32O4L2CT.js +0 -87
  369. package/chunks/bridge-DFX2FFH4.js +0 -119
  370. package/chunks/channel-settings-store-ELLH2M4M.js +0 -117
  371. package/chunks/chunk-I6VVOZDK.js +0 -202
  372. package/chunks/chunk-JS73NNWF.js +0 -30
  373. package/chunks/chunk-K2OJUPOE.js +0 -78
  374. package/chunks/chunk-P3QQPMQA.js +0 -19
  375. package/chunks/chunk-SDVF6A42.js +0 -945
  376. package/chunks/chunk-VGHZT6JR.js +0 -51
  377. package/chunks/config-utils-7M6PCTLT.js +0 -113
  378. package/chunks/contextCommand-G4QG3TW6.js +0 -108
  379. package/chunks/daemon-status-provider-F5FEHVVG.js +0 -118
  380. package/chunks/daemon-trust-policy-C6YTU5CQ.js +0 -114
  381. package/chunks/deferred-core-runtime-GHT3GDOR.js +0 -116
  382. package/chunks/earlyInputCapture-HOSJTLWP.js +0 -109
  383. package/chunks/errors-IOXFDE4J.js +0 -115
  384. package/chunks/exitPlanMode-PZG4FXRB.js +0 -85
  385. package/chunks/handleAutoUpdate-AWAGHKOX.js +0 -111
  386. package/chunks/i18n-CYA25C5F.js +0 -126
  387. package/chunks/initializer-JD2FLNLO.js +0 -115
  388. package/chunks/installationInfo-N3DCWVWR.js +0 -109
  389. package/chunks/list-XDQAUET5.js +0 -118
  390. package/chunks/loadedSettingsAdapter-IK7H5JRK.js +0 -112
  391. package/chunks/mcp-2E7ZLMEE.js +0 -112
  392. package/chunks/nonInteractiveCli-ZNDXB62Y.js +0 -185
  393. package/chunks/pidfile-DHV2Y7UD.js +0 -113
  394. package/chunks/process-registry-PMJOA5CO.js +0 -172
  395. package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +0 -107
  396. package/chunks/resumeHistoryUtils-YQRITQAG.js +0 -120
  397. package/chunks/ripGrep-NEIHKBKB.js +0 -39
  398. package/chunks/serve-XY5S63GN.js +0 -120
  399. package/chunks/skill-settings-5U7FTJIK.js +0 -120
  400. package/chunks/spawnChannel-TMC6VXGN.js +0 -113
  401. package/chunks/standalone-update-CUYGWTR4.js +0 -120
  402. package/chunks/terminal-image-renderer-DRL3BROJ.js +0 -116
  403. package/chunks/theme-manager-HHJPUDRN.js +0 -104
  404. package/chunks/total-session-admission-TQI7TCTL.js +0 -114
  405. package/chunks/updateCheck-6JRTKTUF.js +0 -120
  406. package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +0 -122
  407. package/chunks/workspace-providers-status-H6TG34YV.js +0 -116
  408. package/chunks/workspace-registry-2PWNIYNI.js +0 -123
  409. package/chunks/workspace-service-4FGTUJLA.js +0 -131
  410. package/chunks/workspace-skills-status-7VOLUDT6.js +0 -115
  411. package/chunks/write-file-PWOYCT2K.js +0 -90
  412. package/web-shell/assets/channel-B3sGR79J.js +0 -1
  413. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +0 -1
  414. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +0 -1
  415. package/web-shell/assets/index-C-XlQn24.css +0 -5
  416. package/web-shell/assets/index-DLjXM0dn.js +0 -1860
  417. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +0 -1
  418. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +0 -8
@@ -3,12 +3,12 @@
3
3
  import {
4
4
  computeCpuPercent
5
5
  } from "./chunk-LBOVL47Y.js";
6
- import {
7
- RUNTIME_STARTUP_CANCELLED_MESSAGE
8
- } from "./chunk-QUPXZXLV.js";
9
6
  import {
10
7
  resolveServeToken
11
8
  } from "./chunk-ZELCTN6Y.js";
9
+ import {
10
+ RUNTIME_STARTUP_CANCELLED_MESSAGE
11
+ } from "./chunk-QUPXZXLV.js";
12
12
  import {
13
13
  ACCESS_LOG_CONTROLLER_LOCAL,
14
14
  CAPABILITIES_SCHEMA_VERSION,
@@ -38,13 +38,20 @@ import {
38
38
  positiveFiniteOrNull,
39
39
  prepareManagedScratchRoot,
40
40
  resolveAcpHttpEnabled,
41
- setDeferredRuntimeRequestTiming,
42
41
  toDaemonStatusMemoryLimits
43
- } from "./chunk-SQPOJ4ZI.js";
44
- import "./chunk-VGHZT6JR.js";
42
+ } from "./chunk-RFI4YGMR.js";
45
43
  import {
46
- normalizeSessionIdForLookup
47
- } from "./chunk-ZEZKIS2K.js";
44
+ ConversationDirectoryIdentityError,
45
+ assertExactConversationRootIdentity,
46
+ createConversationRootIdentity,
47
+ getConversationDirectoryName,
48
+ getConversationStagedDirectoryName,
49
+ inspectConversationDirectoryIdentity,
50
+ inspectConversationStagedDirectoryIdentity,
51
+ isSameConversationDirectoryObject,
52
+ materializeConversationDirectoryIdentity,
53
+ revalidateConversationRootIdentity
54
+ } from "./chunk-U54AYGEC.js";
48
55
  import {
49
56
  isLoopbackBind
50
57
  } from "./chunk-RXFQM6FQ.js";
@@ -53,6 +60,12 @@ import {
53
60
  resolveDaemonMemoryBudget,
54
61
  serveJournalGrowthPoolMb
55
62
  } from "./chunk-UXEO7E3V.js";
63
+ import {
64
+ setDeferredRuntimeRequestTiming
65
+ } from "./chunk-RNVFRIOO.js";
66
+ import {
67
+ normalizeSessionIdForLookup
68
+ } from "./chunk-ZEZKIS2K.js";
56
69
  import "./chunk-NYWWQ437.js";
57
70
  import {
58
71
  resolveSessionRestoreTimeoutMs
@@ -74,7 +87,7 @@ import {
74
87
  } from "./chunk-FBX2SDQ4.js";
75
88
  import {
76
89
  resolveChannelCwd
77
- } from "./chunk-7JPW6IYH.js";
90
+ } from "./chunk-HVC3PNVC.js";
78
91
  import {
79
92
  LIVE_HOST_PROTOCOL_VERSION
80
93
  } from "./chunk-NKLP3DCK.js";
@@ -90,12 +103,12 @@ import {
90
103
  MAX_REGISTERED_WORKSPACES,
91
104
  resolveWorkspaceInputs,
92
105
  workspaceRegistrationId
93
- } from "./chunk-OQ6LTSX3.js";
94
- import "./chunk-ZJG323IA.js";
106
+ } from "./chunk-LEGTMYAE.js";
107
+ import "./chunk-G6FECKTJ.js";
95
108
  import {
96
109
  LOAD_REPLAY_META_KEY
97
110
  } from "./chunk-OZ6KS6KW.js";
98
- import "./chunk-624NHDGB.js";
111
+ import "./chunk-ERFDKH32.js";
99
112
  import {
100
113
  canonicalizeWorkspace,
101
114
  translateAndCheckAbsoluteWorkspacePath
@@ -103,26 +116,27 @@ import {
103
116
  import {
104
117
  ExtraCaInspectionError,
105
118
  loadableCertificates
106
- } from "./chunk-PAJGKZAA.js";
119
+ } from "./chunk-ISKH4QX3.js";
107
120
  import "./chunk-FYJ7W2PI.js";
108
121
  import "./chunk-Z7B6SRPM.js";
109
122
  import {
110
- ChannelDeliveryError,
111
- ChannelWebhookEnqueueError,
112
- isChannelDeliveryError
113
- } from "./chunk-7CWEZQ6T.js";
114
- import {
115
- normalizeWorkerDiagnostic,
116
- sanitizeWorkerDiagnostic
117
- } from "./chunk-JVPFTDBK.js";
123
+ ChannelWebhookEnqueueError
124
+ } from "./chunk-STUJ7IMZ.js";
118
125
  import {
119
126
  QWEN_SERVER_TOKEN_ENV
120
127
  } from "./chunk-GYTKQYDB.js";
128
+ import {
129
+ normalizeWorkerDiagnostic,
130
+ sanitizeWorkerDiagnostic
131
+ } from "./chunk-RFIDDFAL.js";
121
132
  import {
122
133
  channelSelectionNames
123
134
  } from "./chunk-ALMR3E6Q.js";
135
+ import {
136
+ ChannelDeliveryError,
137
+ isChannelDeliveryError
138
+ } from "./chunk-RKFGE7JH.js";
124
139
  import "./chunk-UDG5EZJI.js";
125
- import "./chunk-M5GB774H.js";
126
140
  import {
127
141
  EXTERNAL_TOOL_GUARD_PROVIDER_ATTACHED_VALUE,
128
142
  EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
@@ -130,12 +144,13 @@ import {
130
144
  PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
131
145
  PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV
132
146
  } from "./chunk-3VUENPWF.js";
147
+ import "./chunk-M5GB774H.js";
133
148
  import {
134
149
  MAX_DAEMON_WORKSPACES
135
150
  } from "./chunk-5HBA2Z7V.js";
136
151
  import {
137
152
  sanitizeLogText
138
- } from "./chunk-E55H6BZ7.js";
153
+ } from "./chunk-ICURCKIU.js";
139
154
  import "./chunk-IW6RQPQB.js";
140
155
  import "./chunk-GOXKNSDZ.js";
141
156
  import {
@@ -150,7 +165,7 @@ import {
150
165
  } from "./chunk-5PA6UEYA.js";
151
166
  import {
152
167
  getCliVersion
153
- } from "./chunk-6KS24S3X.js";
168
+ } from "./chunk-GGNE3JAW.js";
154
169
  import "./chunk-W3N5XAZ6.js";
155
170
  import "./chunk-NPQ5ZKRP.js";
156
171
  import {
@@ -193,7 +208,7 @@ import {
193
208
  // packages/cli/src/serve/run-qwen-serve.ts
194
209
  init_esbuild_shims();
195
210
  var import_express = __toESM(require_express(), 1);
196
- import { X509Certificate, createHash as createHash3, timingSafeEqual } from "node:crypto";
211
+ import { X509Certificate, createHash as createHash2, timingSafeEqual } from "node:crypto";
197
212
  import { execFile } from "node:child_process";
198
213
  import * as fs from "node:fs";
199
214
  import { createServer } from "node:http";
@@ -611,11 +626,11 @@ async function ensureRealDirectory(fs2, dirPath, mutationAllowed = () => true) {
611
626
  __name(ensureRealDirectory, "ensureRealDirectory");
612
627
  async function activeFileSize(fs2, activePath) {
613
628
  try {
614
- const stat = await fs2.lstat(activePath);
615
- if (!stat.isFile() || stat.isSymbolicLink()) {
629
+ const stat2 = await fs2.lstat(activePath);
630
+ if (!stat2.isFile() || stat2.isSymbolicLink()) {
616
631
  throw new Error(`${activePath} is not a regular file`);
617
632
  }
618
- return stat.size;
633
+ return stat2.size;
619
634
  } catch (error) {
620
635
  if (isErrno(error, "ENOENT")) return 0;
621
636
  throw error;
@@ -1036,8 +1051,8 @@ __name(closeFallbackFamily, "closeFallbackFamily");
1036
1051
  async function cleanupFallbacksBestEffort(input) {
1037
1052
  const runsDir = nodePath.join(input.daemonDir, "runs");
1038
1053
  try {
1039
- const stat = await input.fs.lstat(runsDir);
1040
- if (!stat.isDirectory() || stat.isSymbolicLink()) {
1054
+ const stat2 = await input.fs.lstat(runsDir);
1055
+ if (!stat2.isDirectory() || stat2.isSymbolicLink()) {
1041
1056
  throw new Error(`${runsDir} is not a real directory`);
1042
1057
  }
1043
1058
  } catch (error) {
@@ -1404,7 +1419,7 @@ function createConcreteLogger(input) {
1404
1419
  }
1405
1420
  });
1406
1421
  let timeout;
1407
- const deadline = new Promise((resolve4) => {
1422
+ const deadline = new Promise((resolve3) => {
1408
1423
  timeout = setTimeout(() => {
1409
1424
  try {
1410
1425
  input.warnOnce(
@@ -1413,7 +1428,7 @@ function createConcreteLogger(input) {
1413
1428
  );
1414
1429
  } catch {
1415
1430
  } finally {
1416
- resolve4();
1431
+ resolve3();
1417
1432
  }
1418
1433
  }, input.policy.closeDrainBudgetMs);
1419
1434
  timeout.unref();
@@ -1759,251 +1774,10 @@ __name(initDaemonLogger, "initDaemonLogger");
1759
1774
 
1760
1775
  // packages/cli/src/serve/conversations/conversation-workspace.ts
1761
1776
  init_esbuild_shims();
1762
- import { readdir, rmdir } from "node:fs/promises";
1777
+ import { constants as fsConstants } from "node:fs";
1778
+ import { open, readdir, rename, rm, rmdir, stat } from "node:fs/promises";
1763
1779
  import { homedir } from "node:os";
1764
- import { resolve as resolve2 } from "node:path";
1765
-
1766
- // packages/cli/src/utils/conversation-directory-identity.ts
1767
- init_esbuild_shims();
1768
- import { createHash as createHash2 } from "node:crypto";
1769
- import { lstat, mkdir, realpath } from "node:fs/promises";
1770
- import { isAbsolute, join as join2, relative as relative2, resolve, sep } from "node:path";
1771
- function hasVerifiableInode(ino) {
1772
- return Number(ino) !== 0;
1773
- }
1774
- __name(hasVerifiableInode, "hasVerifiableInode");
1775
- var ConversationDirectoryIdentityError = class extends Error {
1776
- constructor(scope, reason, cause) {
1777
- super(
1778
- `Conversation ${scope} identity validation failed: ${reason}`,
1779
- cause !== void 0 ? { cause } : void 0
1780
- );
1781
- this.scope = scope;
1782
- this.reason = reason;
1783
- }
1784
- static {
1785
- __name(this, "ConversationDirectoryIdentityError");
1786
- }
1787
- name = "ConversationDirectoryIdentityError";
1788
- };
1789
- function throwIdentityIoError(scope, cause) {
1790
- throw new ConversationDirectoryIdentityError(scope, "io_error", cause);
1791
- }
1792
- __name(throwIdentityIoError, "throwIdentityIoError");
1793
- var isSameConversationPath = /* @__PURE__ */ __name((left, right) => process.platform === "win32" ? left.toLowerCase() === right.toLowerCase() : left === right, "isSameConversationPath");
1794
- function getConversationDirectoryName(storageSessionId) {
1795
- if (storageSessionId.length === 0 || storageSessionId.length > 256) {
1796
- throw new ConversationDirectoryIdentityError("child", "invalid_session_id");
1797
- }
1798
- return `conversation-${createHash2("sha256").update(storageSessionId).digest("hex")}`;
1799
- }
1800
- __name(getConversationDirectoryName, "getConversationDirectoryName");
1801
- function validateDirectoryStats(stats, scope) {
1802
- if (stats.isSymbolicLink() || !stats.isDirectory()) {
1803
- throw new ConversationDirectoryIdentityError(scope, "not_directory");
1804
- }
1805
- if (process.platform !== "win32" && typeof process.getuid === "function" && stats.uid !== process.getuid()) {
1806
- throw new ConversationDirectoryIdentityError(scope, "wrong_owner");
1807
- }
1808
- if (process.platform !== "win32" && (stats.mode & 63) !== 0) {
1809
- throw new ConversationDirectoryIdentityError(scope, "wrong_mode");
1810
- }
1811
- }
1812
- __name(validateDirectoryStats, "validateDirectoryStats");
1813
- function hasRootIdentity(stats, root) {
1814
- if (!root.inodeVerifiable) return stats.dev === root.device;
1815
- return hasVerifiableInode(stats.ino) && stats.dev === root.device && stats.ino === root.inode;
1816
- }
1817
- __name(hasRootIdentity, "hasRootIdentity");
1818
- function isSameDirectoryIdentity(before, after) {
1819
- if (!hasVerifiableInode(before.ino) || !hasVerifiableInode(after.ino)) {
1820
- return before.dev === after.dev;
1821
- }
1822
- return before.dev === after.dev && before.ino === after.ino;
1823
- }
1824
- __name(isSameDirectoryIdentity, "isSameDirectoryIdentity");
1825
- function hasExpectedDirectoryIdentity(identity, expected) {
1826
- const inodesProvable = hasVerifiableInode(identity.inode) && hasVerifiableInode(expected.inode);
1827
- return identity.storageSessionId === expected.storageSessionId && identity.name === expected.name && isSameConversationPath(identity.canonicalPath, expected.canonicalPath) && identity.device === expected.device && (!inodesProvable || identity.inode === expected.inode) && isSameConversationPath(
1828
- identity.root.configuredRoot,
1829
- expected.root.configuredRoot
1830
- ) && isSameConversationPath(
1831
- identity.root.canonicalRoot,
1832
- expected.root.canonicalRoot
1833
- ) && identity.root.device === expected.root.device && (!identity.root.inodeVerifiable || !expected.root.inodeVerifiable || identity.root.inode === expected.root.inode);
1834
- }
1835
- __name(hasExpectedDirectoryIdentity, "hasExpectedDirectoryIdentity");
1836
- async function createConversationRootIdentity(configuredRoot) {
1837
- try {
1838
- await mkdir(configuredRoot, { recursive: true, mode: 448 });
1839
- } catch (error) {
1840
- let existing;
1841
- try {
1842
- existing = await lstat(configuredRoot);
1843
- } catch {
1844
- throwIdentityIoError("root", error);
1845
- }
1846
- validateDirectoryStats(existing, "root");
1847
- throwIdentityIoError("root", error);
1848
- }
1849
- let before;
1850
- try {
1851
- before = await lstat(configuredRoot);
1852
- } catch (error) {
1853
- throwIdentityIoError("root", error);
1854
- }
1855
- validateDirectoryStats(before, "root");
1856
- let canonicalRoot;
1857
- let after;
1858
- try {
1859
- canonicalRoot = await realpath(configuredRoot);
1860
- after = await lstat(canonicalRoot);
1861
- } catch (error) {
1862
- throwIdentityIoError("root", error);
1863
- }
1864
- validateDirectoryStats(after, "root");
1865
- if (!isSameDirectoryIdentity(before, after)) {
1866
- throw new ConversationDirectoryIdentityError("root", "identity_changed");
1867
- }
1868
- return {
1869
- configuredRoot,
1870
- canonicalRoot,
1871
- device: after.dev,
1872
- inode: after.ino,
1873
- inodeVerifiable: hasVerifiableInode(after.ino)
1874
- };
1875
- }
1876
- __name(createConversationRootIdentity, "createConversationRootIdentity");
1877
- async function revalidateConversationRootIdentity(root) {
1878
- let configuredStats;
1879
- try {
1880
- configuredStats = await lstat(root.configuredRoot);
1881
- } catch (error) {
1882
- throwIdentityIoError("root", error);
1883
- }
1884
- validateDirectoryStats(configuredStats, "root");
1885
- if (!hasRootIdentity(configuredStats, root)) {
1886
- throw new ConversationDirectoryIdentityError("root", "identity_changed");
1887
- }
1888
- let canonical;
1889
- try {
1890
- canonical = await realpath(root.configuredRoot);
1891
- } catch (error) {
1892
- throwIdentityIoError("root", error);
1893
- }
1894
- if (!isSameConversationPath(canonical, root.canonicalRoot)) {
1895
- throw new ConversationDirectoryIdentityError(
1896
- "root",
1897
- "canonical_path_changed"
1898
- );
1899
- }
1900
- let canonicalStats;
1901
- try {
1902
- canonicalStats = await lstat(root.canonicalRoot);
1903
- } catch (error) {
1904
- throwIdentityIoError("root", error);
1905
- }
1906
- validateDirectoryStats(canonicalStats, "root");
1907
- if (!hasRootIdentity(canonicalStats, root)) {
1908
- throw new ConversationDirectoryIdentityError("root", "identity_changed");
1909
- }
1910
- return root;
1911
- }
1912
- __name(revalidateConversationRootIdentity, "revalidateConversationRootIdentity");
1913
- async function assertExactConversationRootIdentity(root, candidate) {
1914
- await revalidateConversationRootIdentity(root);
1915
- const resolvedCandidate = resolve(candidate);
1916
- if (!isSameConversationPath(resolvedCandidate, root.configuredRoot) && !isSameConversationPath(resolvedCandidate, root.canonicalRoot)) {
1917
- throw new ConversationDirectoryIdentityError("root", "unexpected_identity");
1918
- }
1919
- let stats;
1920
- let canonical;
1921
- try {
1922
- stats = await lstat(resolvedCandidate);
1923
- validateDirectoryStats(stats, "root");
1924
- canonical = await realpath(resolvedCandidate);
1925
- } catch (error) {
1926
- if (error instanceof ConversationDirectoryIdentityError) throw error;
1927
- throwIdentityIoError("root", error);
1928
- }
1929
- if (!isSameConversationPath(canonical, root.canonicalRoot) || !hasRootIdentity(stats, root)) {
1930
- throw new ConversationDirectoryIdentityError("root", "unexpected_identity");
1931
- }
1932
- return root;
1933
- }
1934
- __name(assertExactConversationRootIdentity, "assertExactConversationRootIdentity");
1935
- async function inspectConversationDirectoryIdentity(root, storageSessionId, expected) {
1936
- await revalidateConversationRootIdentity(root);
1937
- const name = getConversationDirectoryName(storageSessionId);
1938
- const candidate = join2(root.canonicalRoot, name);
1939
- let before;
1940
- try {
1941
- before = await lstat(candidate);
1942
- } catch (error) {
1943
- if (error.code === "ENOENT") return void 0;
1944
- throwIdentityIoError("child", error);
1945
- }
1946
- validateDirectoryStats(before, "child");
1947
- let canonical;
1948
- let after;
1949
- try {
1950
- canonical = await realpath(candidate);
1951
- after = await lstat(canonical);
1952
- } catch (error) {
1953
- if (error.code === "ENOENT") return void 0;
1954
- throwIdentityIoError("child", error);
1955
- }
1956
- validateDirectoryStats(after, "child");
1957
- const child = relative2(root.canonicalRoot, canonical);
1958
- if (child !== name || child.includes(sep) || child.startsWith("..") || isAbsolute(child)) {
1959
- throw new ConversationDirectoryIdentityError("child", "not_direct_child");
1960
- }
1961
- if (!isSameDirectoryIdentity(before, after)) {
1962
- throw new ConversationDirectoryIdentityError("child", "identity_changed");
1963
- }
1964
- await revalidateConversationRootIdentity(root);
1965
- const identity = {
1966
- root,
1967
- storageSessionId,
1968
- name,
1969
- canonicalPath: canonical,
1970
- device: after.dev,
1971
- inode: after.ino
1972
- };
1973
- if (expected && !hasExpectedDirectoryIdentity(identity, expected)) {
1974
- throw new ConversationDirectoryIdentityError(
1975
- "child",
1976
- "unexpected_identity"
1977
- );
1978
- }
1979
- return identity;
1980
- }
1981
- __name(inspectConversationDirectoryIdentity, "inspectConversationDirectoryIdentity");
1982
- async function materializeConversationDirectoryIdentity(root, storageSessionId) {
1983
- await revalidateConversationRootIdentity(root);
1984
- const name = getConversationDirectoryName(storageSessionId);
1985
- const candidate = join2(root.canonicalRoot, name);
1986
- let created = false;
1987
- try {
1988
- await mkdir(candidate, { mode: 448 });
1989
- created = true;
1990
- } catch (error) {
1991
- if (error.code !== "EEXIST") {
1992
- throwIdentityIoError("child", error);
1993
- }
1994
- }
1995
- const identity = await inspectConversationDirectoryIdentity(
1996
- root,
1997
- storageSessionId
1998
- );
1999
- if (!identity) {
2000
- throw new ConversationDirectoryIdentityError("child", "identity_changed");
2001
- }
2002
- return { identity, created };
2003
- }
2004
- __name(materializeConversationDirectoryIdentity, "materializeConversationDirectoryIdentity");
2005
-
2006
- // packages/cli/src/serve/conversations/conversation-workspace.ts
1780
+ import { join as join2, resolve } from "node:path";
2007
1781
  function liveIdentityError(error, exactRoot = false, creatingRoot = false) {
2008
1782
  if (!(error instanceof ConversationDirectoryIdentityError)) throw error;
2009
1783
  if (error.reason === "io_error" && error.cause !== void 0) {
@@ -2061,7 +1835,7 @@ function liveIdentityError(error, exactRoot = false, creatingRoot = false) {
2061
1835
  }
2062
1836
  __name(liveIdentityError, "liveIdentityError");
2063
1837
  function getConversationRootPath(homeDir = homedir()) {
2064
- return resolve2(homeDir, "Documents", "Qwen Code", "Conversations");
1838
+ return resolve(homeDir, "Documents", "Qwen Code", "Conversations");
2065
1839
  }
2066
1840
  __name(getConversationRootPath, "getConversationRootPath");
2067
1841
  async function revalidateConversationRoot(root) {
@@ -2245,6 +2019,171 @@ var ConversationWorkspace = class {
2245
2019
  throw error;
2246
2020
  }
2247
2021
  }
2022
+ async inspectStandaloneDeletionPaths(storageSessionId, expected) {
2023
+ const root = await this.revalidateStandaloneRoot();
2024
+ try {
2025
+ const normal = await inspectConversationDirectoryIdentity(
2026
+ root,
2027
+ storageSessionId
2028
+ );
2029
+ const staged = await inspectConversationStagedDirectoryIdentity(
2030
+ root,
2031
+ storageSessionId
2032
+ );
2033
+ if (normal && staged) {
2034
+ throw new ConversationDirectoryIdentityError(
2035
+ "child",
2036
+ "unexpected_identity"
2037
+ );
2038
+ }
2039
+ const identity = normal ?? staged;
2040
+ if (identity && expected && !isSameConversationDirectoryObject(identity, expected)) {
2041
+ throw new ConversationDirectoryIdentityError(
2042
+ "child",
2043
+ "unexpected_identity"
2044
+ );
2045
+ }
2046
+ if (normal) return { status: "normal", identity: normal };
2047
+ if (staged) return { status: "staged", identity: staged };
2048
+ return { status: "absent" };
2049
+ } catch (error) {
2050
+ if (error instanceof ConversationDirectoryIdentityError && error.scope === "child") {
2051
+ return { status: "compromised", error };
2052
+ }
2053
+ throw error;
2054
+ }
2055
+ }
2056
+ async createStandaloneDeletionExpectation(storageSessionId, recorded) {
2057
+ if (recorded.inodeVerifiable !== (recorded.inode !== 0)) {
2058
+ throw new ConversationDirectoryIdentityError(
2059
+ "child",
2060
+ "unexpected_identity"
2061
+ );
2062
+ }
2063
+ const root = await this.revalidateStandaloneRoot();
2064
+ const name = getConversationDirectoryName(storageSessionId);
2065
+ return {
2066
+ root,
2067
+ storageSessionId,
2068
+ name,
2069
+ canonicalPath: join2(root.canonicalRoot, name),
2070
+ device: recorded.device,
2071
+ inode: recorded.inode
2072
+ };
2073
+ }
2074
+ async stageStandaloneDirectory(storageSessionId, expected) {
2075
+ const inspected = await this.inspectStandaloneDeletionPaths(
2076
+ storageSessionId,
2077
+ expected
2078
+ );
2079
+ if (inspected.status === "compromised") throw inspected.error;
2080
+ if (inspected.status !== "normal") {
2081
+ throw new ConversationDirectoryIdentityError("child", "identity_changed");
2082
+ }
2083
+ const root = await this.revalidateStandaloneRoot();
2084
+ await rename(
2085
+ inspected.identity.canonicalPath,
2086
+ join2(
2087
+ root.canonicalRoot,
2088
+ getConversationStagedDirectoryName(storageSessionId)
2089
+ )
2090
+ );
2091
+ await revalidateConversationRootIdentity(root);
2092
+ const staged = await inspectConversationStagedDirectoryIdentity(
2093
+ root,
2094
+ storageSessionId
2095
+ );
2096
+ if (!staged || !isSameConversationDirectoryObject(staged, inspected.identity)) {
2097
+ throw new ConversationDirectoryIdentityError("child", "identity_changed");
2098
+ }
2099
+ await this.syncStandaloneRoot(root);
2100
+ return staged;
2101
+ }
2102
+ async restoreStagedStandaloneDirectory(storageSessionId, expected) {
2103
+ const inspected = await this.inspectStandaloneDeletionPaths(
2104
+ storageSessionId,
2105
+ expected
2106
+ );
2107
+ if (inspected.status === "compromised") throw inspected.error;
2108
+ if (inspected.status !== "staged") {
2109
+ throw new ConversationDirectoryIdentityError("child", "identity_changed");
2110
+ }
2111
+ const root = await this.revalidateStandaloneRoot();
2112
+ await rename(
2113
+ inspected.identity.canonicalPath,
2114
+ join2(root.canonicalRoot, getConversationDirectoryName(storageSessionId))
2115
+ );
2116
+ await revalidateConversationRootIdentity(root);
2117
+ const restored = await inspectConversationDirectoryIdentity(
2118
+ root,
2119
+ storageSessionId
2120
+ );
2121
+ if (!restored || !isSameConversationDirectoryObject(restored, inspected.identity)) {
2122
+ throw new ConversationDirectoryIdentityError("child", "identity_changed");
2123
+ }
2124
+ await this.syncStandaloneRoot(root);
2125
+ return restored;
2126
+ }
2127
+ async removeStagedStandaloneDirectory(storageSessionId, expected) {
2128
+ const inspected = await this.inspectStandaloneDeletionPaths(
2129
+ storageSessionId,
2130
+ expected
2131
+ );
2132
+ if (inspected.status === "compromised") throw inspected.error;
2133
+ if (inspected.status !== "staged") {
2134
+ throw new ConversationDirectoryIdentityError("child", "identity_changed");
2135
+ }
2136
+ const confirmed = await inspectConversationStagedDirectoryIdentity(
2137
+ inspected.identity.root,
2138
+ storageSessionId
2139
+ );
2140
+ if (!confirmed || !isSameConversationDirectoryObject(confirmed, inspected.identity)) {
2141
+ throw new ConversationDirectoryIdentityError("child", "identity_changed");
2142
+ }
2143
+ await rm(confirmed.canonicalPath, { recursive: true });
2144
+ await this.syncStandaloneRoot(confirmed.root);
2145
+ }
2146
+ async confirmStandaloneRootDurability(root) {
2147
+ await this.syncStandaloneRoot(root);
2148
+ }
2149
+ async syncStandaloneRoot(root) {
2150
+ await revalidateConversationRootIdentity(root);
2151
+ let handle;
2152
+ try {
2153
+ handle = await open(
2154
+ root.canonicalRoot,
2155
+ fsConstants.O_RDONLY | (process.platform === "win32" ? 0 : fsConstants.O_NOFOLLOW ?? 0)
2156
+ );
2157
+ const stats = await handle.stat();
2158
+ const inodeVerifiable = Number.isSafeInteger(stats.ino) && stats.ino > 0;
2159
+ if (!stats.isDirectory() || stats.dev !== root.device || inodeVerifiable !== root.inodeVerifiable || root.inodeVerifiable && stats.ino !== root.inode) {
2160
+ throw new ConversationDirectoryIdentityError(
2161
+ "root",
2162
+ "identity_changed"
2163
+ );
2164
+ }
2165
+ try {
2166
+ await handle.sync();
2167
+ } catch (error) {
2168
+ if (process.platform !== "win32" || !["EACCES", "EINVAL", "EPERM"].includes(
2169
+ error.code ?? ""
2170
+ )) {
2171
+ throw error;
2172
+ }
2173
+ }
2174
+ const current = await stat(root.canonicalRoot);
2175
+ const currentInodeVerifiable = Number.isSafeInteger(current.ino) && current.ino > 0;
2176
+ if (!current.isDirectory() || current.dev !== root.device || currentInodeVerifiable !== root.inodeVerifiable || root.inodeVerifiable && current.ino !== root.inode) {
2177
+ throw new ConversationDirectoryIdentityError(
2178
+ "root",
2179
+ "identity_changed"
2180
+ );
2181
+ }
2182
+ } finally {
2183
+ await handle?.close().catch(() => void 0);
2184
+ }
2185
+ await revalidateConversationRootIdentity(root);
2186
+ }
2248
2187
  };
2249
2188
 
2250
2189
  // packages/cli/src/serve/daemon-metrics-ring.ts
@@ -3105,8 +3044,8 @@ async function flushDaemonLogBounded(daemonLog, budgetMs) {
3105
3044
  await Promise.race([
3106
3045
  daemonLog.flush().catch(() => {
3107
3046
  }),
3108
- new Promise((resolve4) => {
3109
- timer = setTimeout(resolve4, budgetMs);
3047
+ new Promise((resolve3) => {
3048
+ timer = setTimeout(resolve3, budgetMs);
3110
3049
  timer.unref();
3111
3050
  })
3112
3051
  ]);
@@ -3337,7 +3276,7 @@ try {
3337
3276
  `;
3338
3277
  async function verifyWorkerTlsTrust(opts) {
3339
3278
  const timeoutMs = opts.timeoutMs ?? 5e3;
3340
- return new Promise((resolve4) => {
3279
+ return new Promise((resolve3) => {
3341
3280
  execFile(
3342
3281
  process.execPath,
3343
3282
  [
@@ -3358,10 +3297,10 @@ async function verifyWorkerTlsTrust(opts) {
3358
3297
  (error, stdout) => {
3359
3298
  try {
3360
3299
  const result = JSON.parse(stdout);
3361
- resolve4(result.ok ? void 0 : result);
3300
+ resolve3(result.ok ? void 0 : result);
3362
3301
  } catch {
3363
3302
  const failure = error;
3364
- resolve4({
3303
+ resolve3({
3365
3304
  code: failure?.code != null ? String(failure.code) : "WORKER_TLS_VERIFY_FAILED",
3366
3305
  message: failure?.message ?? "TLS verification probe failed."
3367
3306
  });
@@ -3799,12 +3738,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
3799
3738
  var channelWorkerRuntimePromise;
3800
3739
  async function loadChannelWorkerRuntime() {
3801
3740
  channelWorkerRuntimePromise ??= Promise.all([
3802
- import("./channel-worker-supervisor-YSKB5GVB.js"),
3803
- import("./pidfile-DHV2Y7UD.js"),
3804
- import("./runtime-I76HPFUE.js"),
3741
+ import("./channel-worker-supervisor-FKU7DIHJ.js"),
3742
+ import("./pidfile-P25DWA5Q.js"),
3743
+ import("./runtime-RUSPD35D.js"),
3805
3744
  import("./cli-entry-path-4VJ3Y6T2.js"),
3806
- import("./channel-worker-group-EVDC2P4K.js"),
3807
- import("./channel-worker-manager-IJJZHGEI.js")
3745
+ import("./channel-worker-group-6NA6BBZV.js"),
3746
+ import("./channel-worker-manager-NEZ2J6RK.js")
3808
3747
  ]).then(
3809
3748
  ([
3810
3749
  supervisor,
@@ -3910,7 +3849,7 @@ function shouldPreheatBridge(deps) {
3910
3849
  __name(shouldPreheatBridge, "shouldPreheatBridge");
3911
3850
  var coreRuntimePromise;
3912
3851
  function loadCoreRuntime() {
3913
- coreRuntimePromise ??= import("./core-runtime-PKNQ63VL.js");
3852
+ coreRuntimePromise ??= import("./core-runtime-XHYA2RH7.js");
3914
3853
  return coreRuntimePromise;
3915
3854
  }
3916
3855
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -3946,10 +3885,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
3946
3885
  var settingsRuntimePromise;
3947
3886
  function loadSettingsRuntimeModules() {
3948
3887
  settingsRuntimePromise ??= Promise.all([
3949
- import("./settings-IX5HOOCG.js"),
3950
- import("./environment-JXOSW25V.js"),
3951
- import("./loadedSettingsAdapter-IK7H5JRK.js"),
3952
- import("./trustedFolders-YKK67IP3.js")
3888
+ import("./settings-YXZ4XBKK.js"),
3889
+ import("./environment-CKWHBC5T.js"),
3890
+ import("./loadedSettingsAdapter-7JOCVOKV.js"),
3891
+ import("./trustedFolders-V6Y4CU3F.js")
3953
3892
  ]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
3954
3893
  settings,
3955
3894
  environment,
@@ -3962,8 +3901,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
3962
3901
  var channelWebhookConfigRuntimePromise;
3963
3902
  function loadChannelWebhookConfigRuntime() {
3964
3903
  channelWebhookConfigRuntimePromise ??= Promise.all([
3965
- import("./runtime-I76HPFUE.js"),
3966
- import("./config-utils-7M6PCTLT.js")
3904
+ import("./runtime-RUSPD35D.js"),
3905
+ import("./config-utils-JVGAP34H.js")
3967
3906
  ]).then(([channelRuntime, configUtils]) => ({
3968
3907
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
3969
3908
  parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
@@ -3989,18 +3928,18 @@ async function loadServeRuntimeModules() {
3989
3928
  workspaceRegistryModule,
3990
3929
  promptLedgerModule
3991
3930
  ] = await Promise.all([
3992
- import("./server-TWXRRREO.js"),
3993
- import("./bridge-DFX2FFH4.js"),
3994
- import("./spawnChannel-TMC6VXGN.js"),
3995
- import("./process-registry-PMJOA5CO.js"),
3996
- import("./workspace-service-4FGTUJLA.js"),
3931
+ import("./server-THCOMUC2.js"),
3932
+ import("./bridge-5LR2F2ND.js"),
3933
+ import("./spawnChannel-BPMIXRBI.js"),
3934
+ import("./process-registry-OAEG6WGC.js"),
3935
+ import("./workspace-service-7PXDM6EB.js"),
3997
3936
  import("./types-WYCFCEHR.js"),
3998
- import("./daemon-status-provider-F5FEHVVG.js"),
3999
- import("./workspace-providers-status-H6TG34YV.js"),
4000
- import("./workspace-skills-status-7VOLUDT6.js"),
4001
- import("./total-session-admission-TQI7TCTL.js"),
4002
- import("./workspace-registry-2PWNIYNI.js"),
4003
- import("./prompt-terminal-ledger-LDZ6QVYA.js")
3937
+ import("./daemon-status-provider-KKU7ZTLM.js"),
3938
+ import("./workspace-providers-status-525ORQBH.js"),
3939
+ import("./workspace-skills-status-FMJGC2XI.js"),
3940
+ import("./total-session-admission-PWXZBOVX.js"),
3941
+ import("./workspace-registry-HS4RWUSQ.js"),
3942
+ import("./prompt-terminal-ledger-AJ7T7OIV.js")
4004
3943
  ]);
4005
3944
  return {
4006
3945
  createServeApp: serverModule.createServeApp,
@@ -4045,7 +3984,7 @@ function sessionIdleTimeoutMs(value) {
4045
3984
  return value !== void 0 ? channelIdleTimeoutMs(value) : DEFAULT_SESSION_IDLE_TIMEOUT_MS;
4046
3985
  }
4047
3986
  __name(sessionIdleTimeoutMs, "sessionIdleTimeoutMs");
4048
- function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, sessionArtifactsPersistenceAvailable, env) {
3987
+ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, sessionArtifactsPersistenceAvailable, currentSessionSchedulingAvailable, env) {
4049
3988
  return getAdvertisedServeFeatures(void 0, {
4050
3989
  requireAuth: opts.requireAuth === true,
4051
3990
  mcpPoolActive: opts.mcpPoolActive !== false,
@@ -4057,6 +3996,7 @@ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, s
4057
3996
  sessionShellCommandEnabled,
4058
3997
  sessionArtifactsPersistenceAvailable,
4059
3998
  sessionGenerationAvailable: true,
3999
+ currentSessionSchedulingAvailable,
4060
4000
  workspaceGenerationAvailable: true,
4061
4001
  rateLimit: opts.rateLimit === true,
4062
4002
  reloadAvailable: true,
@@ -4083,6 +4023,7 @@ function createBootstrapCapabilities(input) {
4083
4023
  input.opts,
4084
4024
  input.sessionShellCommandEnabled,
4085
4025
  input.sessionArtifactsPersistenceAvailable,
4026
+ input.currentSessionSchedulingAvailable,
4086
4027
  input.env
4087
4028
  ),
4088
4029
  modelServices: [],
@@ -4198,12 +4139,12 @@ async function waitForRuntimeStartingForShutdown(runtimeStarting, daemonLog, tim
4198
4139
  let timer;
4199
4140
  await Promise.race([
4200
4141
  runtimeStarting,
4201
- new Promise((resolve4) => {
4142
+ new Promise((resolve3) => {
4202
4143
  timer = setTimeout(() => {
4203
4144
  daemonLog.warn(
4204
4145
  `${timeoutMs}ms runtime-startup wait reached during shutdown; continuing listener close`
4205
4146
  );
4206
- resolve4();
4147
+ resolve3();
4207
4148
  }, timeoutMs);
4208
4149
  timer.unref();
4209
4150
  })
@@ -4242,6 +4183,7 @@ function createBootstrapServeApp(input) {
4242
4183
  qwenCodeVersion,
4243
4184
  sessionShellCommandEnabled,
4244
4185
  sessionArtifactsPersistenceAvailable,
4186
+ currentSessionSchedulingAvailable,
4245
4187
  permissionPolicy,
4246
4188
  multiWorkspaceCapabilitiesRequireRuntime,
4247
4189
  getRuntimeError,
@@ -4301,6 +4243,7 @@ function createBootstrapServeApp(input) {
4301
4243
  qwenCodeVersion,
4302
4244
  sessionShellCommandEnabled,
4303
4245
  sessionArtifactsPersistenceAvailable,
4246
+ currentSessionSchedulingAvailable,
4304
4247
  permissionPolicy,
4305
4248
  env: process.env
4306
4249
  })
@@ -4418,6 +4361,7 @@ function createBootstrapServeApp(input) {
4418
4361
  opts,
4419
4362
  sessionShellCommandEnabled,
4420
4363
  sessionArtifactsPersistenceAvailable,
4364
+ currentSessionSchedulingAvailable,
4421
4365
  process.env
4422
4366
  )
4423
4367
  },
@@ -4614,8 +4558,8 @@ function matchesWebhookSecret(candidate, expected) {
4614
4558
  if (typeof candidate !== "string" || typeof expected !== "string" || expected.length === 0) {
4615
4559
  return false;
4616
4560
  }
4617
- const expectedDigest = createHash3("sha256").update(expected).digest();
4618
- const candidateDigest = createHash3("sha256").update(candidate).digest();
4561
+ const expectedDigest = createHash2("sha256").update(expected).digest();
4562
+ const candidateDigest = createHash2("sha256").update(candidate).digest();
4619
4563
  return timingSafeEqual(expectedDigest, candidateDigest);
4620
4564
  }
4621
4565
  __name(matchesWebhookSecret, "matchesWebhookSecret");
@@ -5041,7 +4985,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5041
4985
  }
5042
4986
  let workspaceRegistrationStore = deps.workspaceRegistrationStore;
5043
4987
  if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
5044
- const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-I4U3V5LL.js");
4988
+ const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-7Y44R4LV.js");
5045
4989
  workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
5046
4990
  }
5047
4991
  if (workspaceRegistrationStore) {
@@ -5325,7 +5269,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5325
5269
  "qwen serve: required external tool guard handshake succeeded."
5326
5270
  );
5327
5271
  }
5328
- const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-LDBJXH2U.js");
5272
+ const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-V3P5XLHB.js");
5329
5273
  const daemonToolGuardHandler = createDaemonToolGuard(
5330
5274
  externalToolGuardHandler
5331
5275
  );
@@ -5371,8 +5315,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5371
5315
  let resolveServeAppStartup;
5372
5316
  let rejectServeAppStartup;
5373
5317
  let serveAppStartupSettled = false;
5374
- const serveAppStartupReady = new Promise((resolve4, reject) => {
5375
- resolveServeAppStartup = resolve4;
5318
+ const serveAppStartupReady = new Promise((resolve3, reject) => {
5319
+ resolveServeAppStartup = resolve3;
5376
5320
  rejectServeAppStartup = reject;
5377
5321
  });
5378
5322
  void serveAppStartupReady.catch(() => void 0);
@@ -5394,6 +5338,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5394
5338
  const internalRuntimeBridgesForCleanup = [];
5395
5339
  let daemonEventLoopMonitor;
5396
5340
  let daemonMetricsSampler;
5341
+ let sessionPrRefreshTimer;
5342
+ let sessionPrRefreshGeneration = 0;
5397
5343
  let runtimeStartupError;
5398
5344
  let runtimeStarting;
5399
5345
  let markRuntimeReady;
@@ -5402,8 +5348,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5402
5348
  let startRuntimeAfterHealth;
5403
5349
  let startRuntimeForRequest;
5404
5350
  const deferRuntimeUntilFirstHealth = deps.resolveOnListen === true && deps.deferRuntimeUntilFirstHealth === true;
5405
- const runtimeReady = new Promise((resolve4, reject) => {
5406
- markRuntimeReady = resolve4;
5351
+ const runtimeReady = new Promise((resolve3, reject) => {
5352
+ markRuntimeReady = resolve3;
5407
5353
  markRuntimeFailed = reject;
5408
5354
  });
5409
5355
  void runtimeReady.catch(() => {
@@ -5413,6 +5359,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5413
5359
  daemonEventLoopMonitor = void 0;
5414
5360
  const metricsSampler = daemonMetricsSampler;
5415
5361
  daemonMetricsSampler = void 0;
5362
+ const prRefreshTimer = sessionPrRefreshTimer;
5363
+ sessionPrRefreshTimer = void 0;
5364
+ sessionPrRefreshGeneration += 1;
5365
+ prRefreshTimer?.dispose();
5416
5366
  try {
5417
5367
  eventLoopMonitor?.dispose();
5418
5368
  } catch (err) {
@@ -5664,7 +5614,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5664
5614
  loadCoreRuntime(),
5665
5615
  loadSettingsRuntimeModules(),
5666
5616
  cliVersionPromise,
5667
- import("./daemon-trust-policy-C6YTU5CQ.js")
5617
+ import("./daemon-trust-policy-TZGK34DW.js")
5668
5618
  ]);
5669
5619
  cliVersion = resolvedCliVersion;
5670
5620
  settingsRuntime.environment.preResolveHomeEnvOverrides();
@@ -6040,7 +5990,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6040
5990
  resolveSkillSettings,
6041
5991
  skillSettingStrings,
6042
5992
  updateWorkspaceSkillSettingLists
6043
- } = await import("./skill-settings-5U7FTJIK.js");
5993
+ } = await import("./skill-settings-7SG4YA2W.js");
6044
5994
  const fresh = loadSettingsForPersistence(workspace);
6045
5995
  const normalizedName = skillName.trim().toLowerCase();
6046
5996
  const resolved = resolveSkillSettings(fresh);
@@ -6105,7 +6055,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6105
6055
  resolveSkillSettings,
6106
6056
  skillSettingStrings,
6107
6057
  updateWorkspaceSkillSettingLists
6108
- } = await import("./skill-settings-5U7FTJIK.js");
6058
+ } = await import("./skill-settings-7SG4YA2W.js");
6109
6059
  const fresh = loadSettingsForPersistence(workspace);
6110
6060
  const resolved = resolveSkillSettings(fresh);
6111
6061
  const initialDisabled = skillSettingStrings(
@@ -6210,7 +6160,43 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6210
6160
  );
6211
6161
  }
6212
6162
  }), "persistSettingsFn");
6213
- const { createSubSessionLauncher } = await import("./create-sub-session-PLGPY6TV.js");
6163
+ const [{ createSubSessionLauncher }, scheduledTaskRoutes] = await Promise.all([
6164
+ import("./create-sub-session-MHYCFNCM.js"),
6165
+ import("./scheduled-tasks-DVRJZO6I.js")
6166
+ ]);
6167
+ const createCurrentSessionScheduledTaskHandler = /* @__PURE__ */ __name((workspaceCwd, runtimeBaseDir, getBridge, assertGenerationOpen) => async ({
6168
+ callerSessionId,
6169
+ cron,
6170
+ prompt,
6171
+ recurring,
6172
+ assertCallerPromptActive
6173
+ }) => {
6174
+ const targetBridge = getBridge();
6175
+ if (!targetBridge) {
6176
+ throw new Error(
6177
+ "Current-session scheduling is unavailable while the workspace runtime is starting."
6178
+ );
6179
+ }
6180
+ const task = await scheduledTaskRoutes.createScheduledTaskWithExistingSession(
6181
+ {
6182
+ workspaceCwd,
6183
+ runtimeBaseDir,
6184
+ bridge: targetBridge,
6185
+ assertGenerationOpen,
6186
+ resolveLiveSessionOwner: /* @__PURE__ */ __name((sessionId) => workspaceRegistryForPersistence.current === void 0 ? { kind: "unavailable" } : workspaceRegistryForPersistence.current.resolveLiveSessionOwner(
6187
+ sessionId
6188
+ ), "resolveLiveSessionOwner")
6189
+ },
6190
+ {
6191
+ sessionId: callerSessionId,
6192
+ cron,
6193
+ prompt,
6194
+ recurring
6195
+ },
6196
+ { source: "cron-tool", assertCallerPromptActive }
6197
+ );
6198
+ return { id: task.id, cron: task.cron };
6199
+ }, "createCurrentSessionScheduledTaskHandler");
6214
6200
  const subSessionLauncher = createSubSessionLauncher({
6215
6201
  getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
6216
6202
  boundWorkspace,
@@ -6227,6 +6213,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6227
6213
  // connection that hosts a named client MCP server (#5626).
6228
6214
  clientMcpSender: clientMcpSenderRegistry.lookup,
6229
6215
  onCreateSubSession: subSessionLauncher.launch,
6216
+ onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
6217
+ boundWorkspace,
6218
+ primarySessionRuntimeBaseDir,
6219
+ () => bridgeRef,
6220
+ () => primaryGenerationGuard.assertOpen()
6221
+ ),
6230
6222
  onChannelDelivery: createBoundChannelDeliveryHandler(
6231
6223
  boundWorkspace,
6232
6224
  () => channelWorkerManager,
@@ -6572,6 +6564,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6572
6564
  ),
6573
6565
  clientMcpSender: secondaryClientMcpSenderRegistry.lookup,
6574
6566
  onCreateSubSession: secondarySubSessionLauncher.launch,
6567
+ onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
6568
+ workspaceInput.cwd,
6569
+ secondaryEnv.sessionRuntimeBaseDir,
6570
+ () => secondaryBridgeRef,
6571
+ () => secondaryGenerationGuard.assertOpen()
6572
+ ),
6575
6573
  onChannelDelivery: createBoundChannelDeliveryHandler(
6576
6574
  workspaceInput.cwd,
6577
6575
  () => channelWorkerManager,
@@ -6860,6 +6858,22 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6860
6858
  metricsLoopDelay.disable();
6861
6859
  }
6862
6860
  };
6861
+ sessionPrRefreshTimer?.dispose();
6862
+ const refreshGeneration = ++sessionPrRefreshGeneration;
6863
+ void import("./session-pr-refresh-KRBH7KDA.js").then((mod) => {
6864
+ if (refreshGeneration !== sessionPrRefreshGeneration) return;
6865
+ sessionPrRefreshTimer = mod.startSessionPrRefreshTimer({
6866
+ workspaceRegistry,
6867
+ // The coordinator lives on the serve app (createServeApp below),
6868
+ // which is built after this timer starts; read it per tick like
6869
+ // the metrics sampler reads `acpHandle`.
6870
+ getArchiveCoordinator: /* @__PURE__ */ __name(() => app2.locals.sessionArchiveCoordinator, "getArchiveCoordinator")
6871
+ });
6872
+ }).catch((error) => {
6873
+ daemonLog.warn(
6874
+ `session-pr-refresh load failed: ${error instanceof Error ? error.message : String(error)}`
6875
+ );
6876
+ });
6863
6877
  const createDynamicWorkspaceRuntime = /* @__PURE__ */ __name(async (cwd, buildOptions) => {
6864
6878
  const provenance = buildOptions?.provenance ?? "existing";
6865
6879
  if (provenance === "managed-scratch" && (!managedScratchRoot || !isManagedScratchChild(cwd, managedScratchRoot.canonicalRoot))) {
@@ -6931,6 +6945,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6931
6945
  boundWorkspace: cwd,
6932
6946
  ...provenance === "live-conversation" ? {
6933
6947
  notifySentCompletion: true,
6948
+ getStandaloneSessionService: /* @__PURE__ */ __name(() => (runtimeApp ?? runtimeAppForCleanup)?.locals?.["standaloneSessionService"], "getStandaloneSessionService"),
6934
6949
  isolatedWorkspace: {
6935
6950
  materializeDirectory: /* @__PURE__ */ __name((sessionId) => liveConversationWorkspace.materializeConversationDirectory(
6936
6951
  sessionId
@@ -6953,6 +6968,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6953
6968
  ),
6954
6969
  clientMcpSender: wsClientMcpRegistry.lookup,
6955
6970
  onCreateSubSession: wsSubSessionLauncher.launch,
6971
+ onCreateCurrentSessionScheduledTask: createCurrentSessionScheduledTaskHandler(
6972
+ cwd,
6973
+ wsEnv.sessionRuntimeBaseDir,
6974
+ () => wsBridgeRef,
6975
+ () => generationGuard.assertOpen()
6976
+ ),
6956
6977
  onChannelDelivery: createBoundChannelDeliveryHandler(
6957
6978
  cwd,
6958
6979
  () => channelWorkerManager,
@@ -7439,8 +7460,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7439
7460
  { createChannelManagementService },
7440
7461
  { WorkspaceChannelSettingsStore }
7441
7462
  ] = await Promise.all([
7442
- import("./channel-management-service-HXXS3HOZ.js"),
7443
- import("./channel-settings-store-ELLH2M4M.js")
7463
+ import("./channel-management-service-KHR3N6CH.js"),
7464
+ import("./channel-settings-store-4FOAZW72.js")
7444
7465
  ]);
7445
7466
  return createChannelManagementService({
7446
7467
  workspaceCwd: targetRuntime.workspaceCwd,
@@ -7520,6 +7541,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7520
7541
  // (keepalive) and reloads them on boot (rehydration). Off by default so
7521
7542
  // direct createServeApp embeds/tests don't spawn sessions.
7522
7543
  manageScheduledTaskSessions: true,
7544
+ currentSessionSchedulingAvailable: deps.bridge === void 0,
7523
7545
  fsFactory: routeFsFactory,
7524
7546
  primaryWorkspaceTrusted: trustedWorkspace,
7525
7547
  primaryRuntimeEnv,
@@ -7644,8 +7666,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7644
7666
  { createWorkspaceTrustReconciler },
7645
7667
  { createDaemonTrustPolicyMonitor }
7646
7668
  ] = await Promise.all([
7647
- import("./workspace-trust-reconciler-GJ466KCE.js"),
7648
- import("./daemon-trust-policy-monitor-IGEJPHQ4.js")
7669
+ import("./workspace-trust-reconciler-3YTWSQBY.js"),
7670
+ import("./daemon-trust-policy-monitor-F23DD2M4.js")
7649
7671
  ]);
7650
7672
  const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
7651
7673
  const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
@@ -7740,7 +7762,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7740
7762
  handle?.disposeWorkspace(runtimeToDispose.workspaceId);
7741
7763
  const deadline = Date.now() + 1e3;
7742
7764
  while ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0 && Date.now() < deadline) {
7743
- await new Promise((resolve4) => setTimeout(resolve4, 25));
7765
+ await new Promise((resolve3) => setTimeout(resolve3, 25));
7744
7766
  }
7745
7767
  if ((handle?.getWorkspaceActivity(runtimeToDispose.workspaceId).memoryTasks ?? 0) > 0) {
7746
7768
  throw new Error(
@@ -7817,6 +7839,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7817
7839
  qwenCodeVersion: cliVersion,
7818
7840
  sessionShellCommandEnabled,
7819
7841
  sessionArtifactsPersistenceAvailable,
7842
+ currentSessionSchedulingAvailable: false,
7820
7843
  permissionPolicy,
7821
7844
  multiWorkspaceCapabilitiesRequireRuntime: workspaceInputs.length > 1,
7822
7845
  getRuntimeError: /* @__PURE__ */ __name(() => runtimeStartupError, "getRuntimeError"),
@@ -7860,7 +7883,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7860
7883
  );
7861
7884
  }
7862
7885
  const channelValidationSettingsRuntime = opts.channelSelection ? await loadSettingsRuntimeModules() : void 0;
7863
- const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-C6YTU5CQ.js") : void 0;
7886
+ const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-TZGK34DW.js") : void 0;
7864
7887
  const channelValidationTrustSnapshot = channelValidationTrustPolicy ? await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot() : void 0;
7865
7888
  const resolveChannelWorkspaceGroupsAtListen = /* @__PURE__ */ __name(() => {
7866
7889
  if (!opts.channelSelection || !channelValidationSettingsRuntime || !channelRuntime) {
@@ -7966,7 +7989,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7966
7989
  if (opts.channelSelection) {
7967
7990
  reserveChannelServicePidfile(opts.channelSelection);
7968
7991
  }
7969
- return await new Promise((resolve4, reject) => {
7992
+ return await new Promise((resolve3, reject) => {
7970
7993
  let closeHost;
7971
7994
  const onListening = /* @__PURE__ */ __name((error) => {
7972
7995
  if (error) return;
@@ -8748,6 +8771,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8748
8771
  if (!preserveSignalHandlers) {
8749
8772
  process.removeListener("SIGINT", onSignal);
8750
8773
  process.removeListener("SIGTERM", onSignal);
8774
+ process.removeListener("SIGHUP", onSignal);
8751
8775
  }
8752
8776
  process.removeListener(
8753
8777
  "uncaughtExceptionMonitor",
@@ -8967,6 +8991,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8967
8991
  }
8968
8992
  process.on("SIGINT", onSignal);
8969
8993
  process.on("SIGTERM", onSignal);
8994
+ process.on("SIGHUP", onSignal);
8970
8995
  process.on("uncaughtExceptionMonitor", onUncaughtExceptionMonitor);
8971
8996
  server.on("error", (err) => {
8972
8997
  daemonLog.error("server error", err instanceof Error ? err : null);
@@ -8997,7 +9022,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8997
9022
  loggerPublished = true;
8998
9023
  loggerLifecycle.published();
8999
9024
  void (liveDiscoveryPublish ?? Promise.resolve()).then(
9000
- () => resolve4(handle)
9025
+ () => resolve3(handle)
9001
9026
  );
9002
9027
  } else {
9003
9028
  void runtimeReady.then(
@@ -9005,7 +9030,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9005
9030
  await liveDiscoveryPublish;
9006
9031
  loggerPublished = true;
9007
9032
  loggerLifecycle.published();
9008
- resolve4(handle);
9033
+ resolve3(handle);
9009
9034
  },
9010
9035
  (err) => {
9011
9036
  void handle.close().then(
@@ -9054,10 +9079,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9054
9079
  drainHost: /* @__PURE__ */ __name(() => {
9055
9080
  if (closeHost) return closeHost();
9056
9081
  if (!server.listening) return Promise.resolve();
9057
- return new Promise((resolve5, rejectClose) => {
9082
+ return new Promise((resolve4, rejectClose) => {
9058
9083
  server.close((error) => {
9059
9084
  if (error) rejectClose(error);
9060
- else resolve5();
9085
+ else resolve4();
9061
9086
  });
9062
9087
  });
9063
9088
  }, "drainHost")