@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.2-preview.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 (297) hide show
  1. package/bundled/computer-use/SKILL.md +189 -116
  2. package/bundled/goal-draft/SKILL.md +23 -13
  3. package/bundled/qc-helper/docs/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +47 -1
  5. package/bundled/qc-helper/docs/configuration/settings.md +50 -0
  6. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  7. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  8. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  9. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  10. package/bundled/qc-helper/docs/features/goals.md +15 -3
  11. package/bundled/qc-helper/docs/qwen-serve.md +19 -1
  12. package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-ZZJT3PJF.js} +20 -20
  13. package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-DIOSZTMX.js} +38 -38
  14. package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  15. package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-62JUP5A7.js} +118 -91
  16. package/chunks/{agent-GEBPAEJS.js → agent-NLPEQQDZ.js} +13 -13
  17. package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-Y2GR5F2Q.js} +13 -13
  18. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-I7LQZH26.js} +30 -7
  19. package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-I5W5S3D6.js} +1 -1
  20. package/chunks/{bridge-MHWO5I5T.js → bridge-Q66BD62H.js} +23 -23
  21. package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TRTLQTSV.js} +4 -4
  22. package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-R5STFWUW.js} +31 -31
  23. package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-PIYPVCTF.js} +6 -6
  24. package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-FQHEDTD2.js} +6 -6
  25. package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-XJPZZ3VK.js} +3 -3
  26. package/chunks/{chunk-ZJ2LM2SI.js → chunk-2OR32P5M.js} +104 -33
  27. package/chunks/chunk-2Z3T52OC.js +82 -0
  28. package/chunks/{chunk-5FYGZ7E3.js → chunk-33MLFMCL.js} +2 -2
  29. package/chunks/{chunk-RH344FKI.js → chunk-3BTHHXXE.js} +1 -1
  30. package/chunks/{chunk-OFB36ZBA.js → chunk-3LPJ776W.js} +1 -1
  31. package/chunks/{chunk-TSLRORQR.js → chunk-43CI6YWJ.js} +1467 -1323
  32. package/chunks/{chunk-LTCI6ZOJ.js → chunk-45ROPFQY.js} +1 -1
  33. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  34. package/chunks/{chunk-RRCNEW2A.js → chunk-4BLTSTF6.js} +58 -4
  35. package/chunks/{chunk-3RMVM33U.js → chunk-4JKLPTV6.js} +5 -5
  36. package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
  37. package/chunks/{chunk-AWDF462I.js → chunk-5GD7LYOH.js} +2 -2
  38. package/chunks/{chunk-HZS3JRQW.js → chunk-5VZFJTL2.js} +40 -2
  39. package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
  40. package/chunks/{chunk-ZT3XUGSU.js → chunk-63ACHB2H.js} +86 -9
  41. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  42. package/chunks/{chunk-REDVV5NC.js → chunk-6GRDHIVI.js} +7 -7
  43. package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
  44. package/chunks/{chunk-C4NXRR7T.js → chunk-743XE7N7.js} +2 -2
  45. package/chunks/{chunk-I7UNCY24.js → chunk-7GZCCHJL.js} +3 -3
  46. package/chunks/{chunk-XX4MBBFW.js → chunk-7L35FKPF.js} +3 -3
  47. package/chunks/{chunk-GEV66YGE.js → chunk-7RXOEUFF.js} +1 -1
  48. package/chunks/{chunk-TXAEXF2B.js → chunk-BL6B2QS2.js} +21 -8
  49. package/chunks/{chunk-KAZWXVI3.js → chunk-CABDNUJ4.js} +2 -2
  50. package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
  51. package/chunks/{chunk-22QOQKG4.js → chunk-CG2PDIGD.js} +1 -1
  52. package/chunks/{chunk-MFCWL4LI.js → chunk-CPJRFFPH.js} +451 -396
  53. package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
  54. package/chunks/{chunk-RSU3I6UL.js → chunk-DCPRCDSR.js} +1 -1
  55. package/chunks/{chunk-PLUAIHZO.js → chunk-DTB5BXRG.js} +6 -6
  56. package/chunks/{chunk-FWH4736Q.js → chunk-EA4NFWVG.js} +3 -3
  57. package/chunks/{chunk-AX23QSX3.js → chunk-EHTKOO6W.js} +4 -4
  58. package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
  59. package/chunks/{chunk-EGRFCIXD.js → chunk-EUXF6URV.js} +79 -18
  60. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  61. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  62. package/chunks/{chunk-C7M445SS.js → chunk-G5QLLD53.js} +1 -1
  63. package/chunks/{chunk-5V4B3EWA.js → chunk-GM44O6F7.js} +1 -1
  64. package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
  65. package/chunks/{chunk-7PMKXGRP.js → chunk-GXIHBIHC.js} +66 -9
  66. package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
  67. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  68. package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
  69. package/chunks/{chunk-SHX2HIE7.js → chunk-ISPBBKJN.js} +1 -1
  70. package/chunks/{chunk-QQGAR64U.js → chunk-IUJLW6ZI.js} +4 -4
  71. package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
  72. package/chunks/{chunk-AIMZIXZM.js → chunk-J4ECGDA3.js} +5 -7
  73. package/chunks/{chunk-HPE4LEWX.js → chunk-JDPBJIKI.js} +1 -1
  74. package/chunks/{chunk-Y3C5COGI.js → chunk-L6ZME3W7.js} +1 -1
  75. package/chunks/{chunk-EPZWBYQI.js → chunk-LBKYQ33T.js} +8 -6
  76. package/chunks/{chunk-KTLT7VCX.js → chunk-LN3WBOKU.js} +2 -2
  77. package/chunks/{chunk-FXYNIZPW.js → chunk-LUVXLLMS.js} +51 -10
  78. package/chunks/{chunk-RQNAO42A.js → chunk-M6YLOETP.js} +1 -1
  79. package/chunks/{chunk-6KYWU726.js → chunk-M73KHGNR.js} +13 -66
  80. package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
  81. package/chunks/{chunk-SI6Q52UI.js → chunk-MMMA36MN.js} +3 -3
  82. package/chunks/{chunk-QW7BUOSI.js → chunk-MWEF5MUK.js} +20 -3
  83. package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
  84. package/chunks/chunk-NOO4QFXM.js +171 -0
  85. package/chunks/{chunk-UTVIIA7N.js → chunk-NVS4Z6GT.js} +1 -1
  86. package/chunks/{chunk-VMFPZXRT.js → chunk-ODBNTMZW.js} +43 -31
  87. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  88. package/chunks/{chunk-WQBR7LN5.js → chunk-OIPUQE3S.js} +1 -1
  89. package/chunks/{chunk-2C3XDBGL.js → chunk-ORREXWOM.js} +4 -4
  90. package/chunks/{chunk-RD3VPM4E.js → chunk-PQWM4SX2.js} +2 -2
  91. package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
  92. package/chunks/{chunk-RUMSY4ES.js → chunk-Q2F43WTJ.js} +8 -7
  93. package/chunks/{chunk-VYCJITND.js → chunk-QJAFSFYA.js} +1 -1
  94. package/chunks/{chunk-L36LLVA5.js → chunk-QLM7D7W3.js} +3 -3
  95. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  96. package/chunks/{chunk-XNC2TCUO.js → chunk-QXXBW2G4.js} +4 -4
  97. package/chunks/{chunk-TDHVOZ65.js → chunk-R2266LQ5.js} +2 -2
  98. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  99. package/chunks/{chunk-LYHYXJJ3.js → chunk-RDV4NLI3.js} +3 -3
  100. package/chunks/{chunk-733KQL63.js → chunk-RN6V5HKE.js} +3 -3
  101. package/chunks/{chunk-WLZRMF3C.js → chunk-RX3FYFCN.js} +353 -11
  102. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  103. package/chunks/{chunk-ZNI3V2XA.js → chunk-TK4XHPKW.js} +2 -2
  104. package/chunks/{chunk-RGAQDQ3Z.js → chunk-UHUT4IDM.js} +18 -9
  105. package/chunks/{chunk-T7TP5UQL.js → chunk-ULY4ISY2.js} +4 -4
  106. package/chunks/{chunk-PMGWY6ZP.js → chunk-UULHYZ4W.js} +13 -10
  107. package/chunks/{chunk-BNWIX6BM.js → chunk-UXDVUFKU.js} +3 -3
  108. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  109. package/chunks/{chunk-YLFICBYK.js → chunk-VEQBVJYH.js} +3 -3
  110. package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
  111. package/chunks/{chunk-KP5QK3FB.js → chunk-VH764G6B.js} +397 -54
  112. package/chunks/{chunk-IGOIYZBG.js → chunk-VHPG7BH6.js} +2 -2
  113. package/chunks/{chunk-I67KJGM6.js → chunk-W3ONSAYO.js} +3 -3
  114. package/chunks/{chunk-SHK2SIR5.js → chunk-W673V2H3.js} +4 -4
  115. package/chunks/{chunk-C55CR5I4.js → chunk-W7PXLIZJ.js} +6 -6
  116. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  117. package/chunks/{chunk-B5FF3LRF.js → chunk-WIRYFL2L.js} +22 -15
  118. package/chunks/{chunk-P5Z7VD23.js → chunk-WZ4YULVF.js} +106 -39
  119. package/chunks/{chunk-WFXD5OZH.js → chunk-WZS3X663.js} +1 -1
  120. package/chunks/{chunk-HWZOOSEB.js → chunk-XAXTQURR.js} +3 -3
  121. package/chunks/{chunk-ANVC5CSK.js → chunk-XBLG564H.js} +10 -10
  122. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  123. package/chunks/{chunk-SD7Y2PMC.js → chunk-XI7RST4D.js} +2 -2
  124. package/chunks/{chunk-65GHQ4FX.js → chunk-XVTCSVBK.js} +514 -47
  125. package/chunks/{chunk-4OCYWXKF.js → chunk-Y6ZWXM44.js} +3 -3
  126. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  127. package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
  128. package/chunks/{chunk-75UQFGFE.js → chunk-ZIPYCXQP.js} +1 -1
  129. package/chunks/{chunk-AUJOWIT5.js → chunk-ZUNWKOAP.js} +3 -3
  130. package/chunks/{config-utils-F4CFJ4MW.js → config-utils-37FHWPTP.js} +24 -24
  131. package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-R4JUBV5N.js} +22 -22
  132. package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-6U4OXU5C.js} +20 -20
  133. package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-LLUYAGZN.js} +21 -21
  134. package/chunks/{daemon-LCUELM6E.js → daemon-UI6SQSBV.js} +1 -1
  135. package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-O2UTNFJC.js} +20 -20
  136. package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-7GMAKSTX.js} +27 -27
  137. package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-VNP76VMO.js} +27 -27
  138. package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-TD5O3BZA.js} +27 -27
  139. package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-NJM63YJS.js} +20 -20
  140. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  141. package/chunks/{dist-NXW4DUUX.js → dist-24TCWK5H.js} +1 -1
  142. package/chunks/{dist-I74QLLQS.js → dist-5I4HLUTO.js} +1 -1
  143. package/chunks/{dist-XINEKB5A.js → dist-FDISN4AK.js} +1 -1
  144. package/chunks/{dist-VCAS67N5.js → dist-M4CBX53H.js} +1 -1
  145. package/chunks/{dist-AI25RVRA.js → dist-NQ2636VT.js} +1 -1
  146. package/chunks/{dist-3H3WODVS.js → dist-OR2ZQTXZ.js} +1 -1
  147. package/chunks/{dist-P6YWBITG.js → dist-STAGIFNB.js} +430 -51
  148. package/chunks/{dist-YNQU4CKC.js → dist-WZTUKIDR.js} +2 -2
  149. package/chunks/{dist-T4PRA5EZ.js → dist-XJ25G6OH.js} +1 -1
  150. package/chunks/{edit-WPVXLL3T.js → edit-GL7OA6RV.js} +13 -13
  151. package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
  152. package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-VC4BCSZE.js} +13 -13
  153. package/chunks/{environment-5LLJ3I3W.js → environment-BI6IBAZJ.js} +23 -23
  154. package/chunks/{errors-IQT3YZEP.js → errors-D6G2ZM2R.js} +22 -22
  155. package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
  156. package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-DX446CA6.js} +13 -13
  157. package/chunks/{fast-path-PAUQQEVU.js → fast-path-MAYDLJIP.js} +3 -3
  158. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  159. package/chunks/{glob-SQ7CTZ7F.js → glob-TVKRFY36.js} +13 -13
  160. package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-CA6YANRN.js} +13 -13
  161. package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-AW4ZAHON.js} +23 -23
  162. package/chunks/{i18n-SF5MPWEB.js → i18n-IH5CRAY7.js} +23 -21
  163. package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
  164. package/chunks/{initializer-CK4WPYZG.js → initializer-UBR37ZNM.js} +27 -27
  165. package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-Y52756EC.js} +20 -20
  166. package/chunks/{list-E3PS3EBJ.js → list-7V5JDZPO.js} +30 -30
  167. package/chunks/{llm-JQKBOYAF.js → llm-QDB6JVF5.js} +62 -62
  168. package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-EO6MZCEO.js} +23 -8
  169. package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-I3YQKMC4.js} +27 -27
  170. package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-MNXYUGDG.js} +14 -14
  171. package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-EA3EXPTO.js} +20 -20
  172. package/chunks/{mcp-I7G2AEWS.js → mcp-QTAJ544Y.js} +27 -27
  173. package/chunks/{monitor-4R76BCRZ.js → monitor-6FQKQOTP.js} +13 -13
  174. package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-MRCTZL5X.js} +64 -61
  175. package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-BQQCKI7K.js} +13 -13
  176. package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-TTSKXNVH.js} +8 -8
  177. package/chunks/{pidfile-TGIUY2GG.js → pidfile-KPIS6RIT.js} +20 -20
  178. package/chunks/{processUtils-3USXUQWX.js → processUtils-ZCASPKK4.js} +2 -2
  179. package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-D6HM6TV7.js} +21 -21
  180. package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-GGZEFLBD.js} +16 -16
  181. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  182. package/chunks/{read-file-R256LDWQ.js → read-file-VE5GDFLP.js} +2 -2
  183. package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-HSSGMYDC.js} +23 -23
  184. package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-SEJE7AA6.js} +3 -3
  185. package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-OJYVH7N6.js} +58 -60
  186. package/chunks/{runtime-FS5TL6P7.js → runtime-KGMQQFJD.js} +32 -32
  187. package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-7H5HWHYD.js} +25 -25
  188. package/chunks/{scheduler-EXU5HMVK.js → scheduler-BE42AKDG.js} +22 -22
  189. package/chunks/{send-message-GQKXGMPI.js → send-message-AWKUDJBH.js} +1 -1
  190. package/chunks/{serve-ITJC7WNN.js → serve-KZVKYMSL.js} +27 -27
  191. package/chunks/{server-6JQY3PTU.js → server-PJRALPJQ.js} +1296 -822
  192. package/chunks/{session-PJDEKXD4.js → session-IHITXU2S.js} +63 -62
  193. package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-GQ2TUI3Y.js} +20 -20
  194. package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-H43LULTE.js} +24 -24
  195. package/chunks/{settings-LO6J5SAZ.js → settings-RKEQQDFC.js} +26 -26
  196. package/chunks/{shell-ANAFVYGR.js → shell-6PJ444U5.js} +13 -13
  197. package/chunks/{skill-SHJWKSPH.js → skill-Q3UP7B5V.js} +2 -2
  198. package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-LZR5YRRW.js} +26 -26
  199. package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-WM3DT2BF.js} +20 -20
  200. package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-E5474IBI.js} +22 -22
  201. package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-WLWZNQ2I.js} +1991 -986
  202. package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-FBQSGWGO.js} +1119 -1478
  203. package/chunks/{team-create-WKTPCH6D.js → team-create-VIGUFUT4.js} +13 -13
  204. package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-HQVZA3MD.js} +13 -13
  205. package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-LUKNCOVM.js} +20 -20
  206. package/chunks/{theme-manager-BNWESY26.js → theme-manager-LOENKYLY.js} +20 -20
  207. package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-ZIFAQCE2.js} +2 -2
  208. package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-FUUJH3QH.js} +24 -24
  209. package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-C76KYROP.js} +21 -21
  210. package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-4G2SRXKX.js} +5 -5
  211. package/chunks/{updateCheck-3MYFMM35.js → updateCheck-EIZIO7HI.js} +22 -22
  212. package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-EAA6KSY4.js} +29 -29
  213. package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-BRX22QCN.js} +59 -58
  214. package/chunks/{version-RO2FPO76.js → version-E56RU7PR.js} +1 -1
  215. package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-AAUCD7RM.js} +5 -5
  216. package/chunks/{web-search-XA5Z4ZCD.js → web-search-HFUQF44Q.js} +18 -7
  217. package/chunks/{workflow-QFIOCMDM.js → workflow-3MABM53N.js} +15 -15
  218. package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-2FRLBZ5I.js} +29 -29
  219. package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-YL7HLYYI.js} +1 -1
  220. package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-BNRP2ELW.js} +24 -24
  221. package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-WKGF7VHS.js} +24 -24
  222. package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-4MYO72MM.js} +31 -31
  223. package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-SU66TJLZ.js} +27 -27
  224. package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-D5QT7WQB.js} +31 -31
  225. package/chunks/{write-file-QOYVHAKK.js → write-file-NVPQE2AZ.js} +14 -14
  226. package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-RJHC66WG.js} +2 -2
  227. package/cli.js +13 -13
  228. package/export-transcript-document.js +126 -122
  229. package/package.json +3 -3
  230. package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-DHc6plZn.js} +1 -1
  231. package/web-shell/assets/{arc-DKW0mbPo.js → arc-BQ9m8TDV.js} +1 -1
  232. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-D5ap3oVB.js} +1 -1
  233. package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-BIbnyNph.js} +1 -1
  234. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-BRsdx_iG.js} +1 -1
  235. package/web-shell/assets/channel-uMMdTrYk.js +1 -0
  236. package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-3lf1fNlx.js} +1 -1
  237. package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-DP8VNRc4.js} +1 -1
  238. package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-DrohDmZ6.js} +1 -1
  239. package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-UZ2QhSx6.js} +1 -1
  240. package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-BIMHVcZK.js} +1 -1
  241. package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-izRxdSDd.js} +1 -1
  242. package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-CXADD4PP.js} +1 -1
  243. package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG-B96d8Y_1.js} +1 -1
  244. package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-CF2sVQpv.js} +1 -1
  245. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +1 -0
  246. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +1 -0
  247. package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-CT6tXVAS.js} +1 -1
  248. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  249. package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-X1NS4vtV.js} +1 -1
  250. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-DNsKNOT4.js} +1 -1
  251. package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-9-AHKqsb.js} +1 -1
  252. package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-Bjgms7j6.js} +1 -1
  253. package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-h6bCprbE.js} +1 -1
  254. package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-4SbQXVLt.js} +1 -1
  255. package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-B5gPCzzB.js} +1 -1
  256. package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-DFJXIA3A.js} +1 -1
  257. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-FwyaU7VY.js} +1 -1
  258. package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-8vJQh2te.js} +1 -1
  259. package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-BzA_1gMN.js} +1 -1
  260. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-Co-ABbVX.js} +1 -1
  261. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DW_FcyrX.js} +1 -1
  262. package/web-shell/assets/{index-C9R-iojE.js → index-BbMXfhNG.js} +1 -1
  263. package/web-shell/assets/{index-B4TLaxWs.js → index-Bu-rZoJ-.js} +462 -454
  264. package/web-shell/assets/index-CsPwZ1ut.css +36 -0
  265. package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-BEgfhUFN.js} +1 -1
  266. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-DCsMxQmc.js} +1 -1
  267. package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DyIEYoHz.js} +1 -1
  268. package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CkxjqCNr.js} +1 -1
  269. package/web-shell/assets/{layout-CFVu37BB.js → layout-BEWc0Al9.js} +1 -1
  270. package/web-shell/assets/{linear-ChBxdtWf.js → linear-CNuNxirL.js} +1 -1
  271. package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-DZBre674.js} +6 -6
  272. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpafFz_F.js} +1 -1
  273. package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DfZqk_dq.js} +1 -1
  274. package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-S0UWXlgC.js} +1 -1
  275. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-dd37_Ohj.js} +1 -1
  276. package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-CH8NJZ7u.js} +1 -1
  277. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-CFdqWYih.js} +1 -1
  278. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-CsddcEGD.js} +1 -1
  279. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-BZ270mGw.js} +1 -1
  280. package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-CGaS4DBV.js} +1 -1
  281. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-COpIzMu6.js} +1 -1
  282. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +1 -0
  283. package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-CMF889m3.js} +1 -1
  284. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +8 -0
  285. package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-BelnxYz5.js} +1 -1
  286. package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-CU-NRqIB.js} +1 -1
  287. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-CDNKqWh-.js} +1 -1
  288. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-CLqguL5D.js} +1 -1
  289. package/web-shell/index.html +2 -2
  290. package/chunks/chunk-3UMWOKJC.js +0 -78
  291. package/chunks/chunk-IQAFKVXS.js +0 -22
  292. package/web-shell/assets/channel-CQx7VSAp.js +0 -1
  293. package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
  294. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
  295. package/web-shell/assets/index-CCrkEbzz.css +0 -36
  296. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
  297. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
@@ -8,6 +8,7 @@ import {
8
8
  isWithinRoot
9
9
  } from "./chunk-J6MB5ZHZ.js";
10
10
  import {
11
+ atomicWriteFile,
11
12
  atomicWriteJSON
12
13
  } from "./chunk-XFFRI3WM.js";
13
14
  import {
@@ -171,11 +172,17 @@ async function addWorktreeSessionMarkerExclude(worktreePath) {
171
172
  existing = await fs2.readFile(excludePath, "utf8");
172
173
  } catch {
173
174
  }
174
- const rule = WORKTREE_SESSION_FILE;
175
- if (!existing.split(/\r?\n/).includes(rule)) {
176
- const sep = existing.length === 0 || existing.endsWith("\n") ? "" : "\n";
177
- await fs2.writeFile(excludePath, `${existing}${sep}${rule}
178
- `, "utf8");
175
+ const rules = [WORKTREE_SESSION_FILE, `${WORKTREE_SESSION_FILE}.*.tmp`];
176
+ let next = existing;
177
+ for (const rule of rules) {
178
+ if (!next.split(/\r?\n/).includes(rule)) {
179
+ const sep = next.length === 0 || next.endsWith("\n") ? "" : "\n";
180
+ next = `${next}${sep}${rule}
181
+ `;
182
+ }
183
+ }
184
+ if (next !== existing) {
185
+ await fs2.writeFile(excludePath, next, "utf8");
179
186
  }
180
187
  } catch {
181
188
  }
@@ -190,15 +197,32 @@ async function writeWorktreeSessionMarker(worktreePath, sessionId) {
190
197
  await addWorktreeSessionMarkerExclude(worktreePath);
191
198
  }
192
199
  __name(writeWorktreeSessionMarker, "writeWorktreeSessionMarker");
193
- async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
194
- if (sessionId.length === 0 || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES || sessionId.trim() !== sessionId) {
195
- throw new Error("Invalid worktree session marker owner");
200
+ var WorktreeMarkerCommittedError = class extends Error {
201
+ static {
202
+ __name(this, "WorktreeMarkerCommittedError");
196
203
  }
204
+ committedOwner;
205
+ constructor(committedOwner, options) {
206
+ super(
207
+ `Worktree session marker committed for ${committedOwner}; the post-commit close failed`,
208
+ options
209
+ );
210
+ this.name = "WorktreeMarkerCommittedError";
211
+ this.committedOwner = committedOwner;
212
+ }
213
+ };
214
+ async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
215
+ assertValidWorktreeSessionMarkerOwner(sessionId);
197
216
  const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
217
+ const stagedPath = `${markerPath}.${randomBytes(6).toString("hex")}.tmp`;
198
218
  const flags = nodeFs.constants.O_WRONLY | nodeFs.constants.O_CREAT | nodeFs.constants.O_EXCL | (nodeFs.constants.O_NOFOLLOW ?? 0);
199
- const handle = await fs2.open(markerPath, flags, 384);
219
+ const handle = await fs2.open(stagedPath, flags, 384);
220
+ let stagedDev = 0;
221
+ let stagedIno = 0;
200
222
  try {
201
223
  const before = await handle.stat();
224
+ stagedDev = before.dev;
225
+ stagedIno = before.ino;
202
226
  if (!before.isFile() || before.nlink !== 1 || before.ino === 0) {
203
227
  throw new Error("Worktree session marker has an unsafe identity");
204
228
  }
@@ -206,17 +230,43 @@ async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
206
230
  await handle.sync();
207
231
  const [after, pathStats] = await Promise.all([
208
232
  handle.stat(),
209
- fs2.lstat(markerPath)
233
+ fs2.lstat(stagedPath)
210
234
  ]);
211
235
  if (!after.isFile() || after.nlink !== 1 || after.size > WORKTREE_SESSION_MARKER_MAX_BYTES || after.dev !== before.dev || after.ino !== before.ino || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
212
236
  throw new Error("Worktree session marker identity changed");
213
237
  }
214
- } finally {
238
+ await fs2.link(stagedPath, markerPath);
239
+ } catch (error) {
240
+ await handle.close().catch(() => {
241
+ });
242
+ if (stagedIno !== 0) {
243
+ try {
244
+ const current = await fs2.lstat(stagedPath);
245
+ if (current.dev === stagedDev && current.ino === stagedIno) {
246
+ await fs2.unlink(stagedPath);
247
+ }
248
+ } catch {
249
+ }
250
+ }
251
+ throw error;
252
+ }
253
+ try {
254
+ await fs2.unlink(stagedPath);
215
255
  await handle.close();
256
+ } catch (error) {
257
+ await handle.close().catch(() => {
258
+ });
259
+ throw new WorktreeMarkerCommittedError(sessionId, { cause: error });
216
260
  }
217
261
  await addWorktreeSessionMarkerExclude(worktreePath);
218
262
  }
219
263
  __name(createWorktreeSessionMarkerExclusive, "createWorktreeSessionMarkerExclusive");
264
+ function assertValidWorktreeSessionMarkerOwner(sessionId) {
265
+ if (sessionId.length === 0 || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES || sessionId.trim() !== sessionId) {
266
+ throw new Error("Invalid worktree session marker owner");
267
+ }
268
+ }
269
+ __name(assertValidWorktreeSessionMarkerOwner, "assertValidWorktreeSessionMarkerOwner");
220
270
  async function readWorktreeSessionMarkerStrict(worktreePath) {
221
271
  const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
222
272
  let handle;
@@ -267,7 +317,13 @@ async function readWorktreeSessionMarkerStrict(worktreePath) {
267
317
  if (sessionId.length === 0 || sessionId !== raw || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES) {
268
318
  return { state: "invalid", reason: "invalid marker owner" };
269
319
  }
270
- return { state: "valid", sessionId };
320
+ return {
321
+ state: "valid",
322
+ sessionId,
323
+ uid: process.geteuid === void 0 ? null : after.uid,
324
+ dev: after.dev,
325
+ ino: after.ino
326
+ };
271
327
  } catch (error) {
272
328
  if (isNodeError(error) && error.code === "ENOENT") {
273
329
  return observedMarker ? { state: "invalid", reason: "marker disappeared during read" } : { state: "missing" };
@@ -282,6 +338,122 @@ async function readWorktreeSessionMarkerStrict(worktreePath) {
282
338
  }
283
339
  }
284
340
  __name(readWorktreeSessionMarkerStrict, "readWorktreeSessionMarkerStrict");
341
+ function readWorktreeSessionMarkerStrictSync(worktreePath) {
342
+ const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
343
+ let fd;
344
+ let observedMarker = false;
345
+ try {
346
+ const flags = nodeFs.constants.O_RDONLY | (nodeFs.constants.O_NOFOLLOW ?? 0) | (nodeFs.constants.O_NONBLOCK ?? 0);
347
+ const before = nodeFs.lstatSync(markerPath);
348
+ observedMarker = true;
349
+ if (before.isSymbolicLink() || !before.isFile() || before.nlink !== 1) {
350
+ return { state: "invalid", reason: "unsafe marker file type" };
351
+ }
352
+ if (before.ino === 0 || before.size > WORKTREE_SESSION_MARKER_MAX_BYTES) {
353
+ return { state: "invalid", reason: "unsafe marker size or identity" };
354
+ }
355
+ fd = nodeFs.openSync(markerPath, flags);
356
+ const opened = nodeFs.fstatSync(fd);
357
+ if (!opened.isFile() || opened.nlink !== 1 || opened.dev !== before.dev || opened.ino !== before.ino) {
358
+ return {
359
+ state: "invalid",
360
+ reason: "marker identity changed before read"
361
+ };
362
+ }
363
+ const markerBuffer = Buffer.alloc(WORKTREE_SESSION_MARKER_MAX_BYTES + 1);
364
+ let bytesRead = 0;
365
+ while (bytesRead < markerBuffer.length) {
366
+ const chunk = nodeFs.readSync(
367
+ fd,
368
+ markerBuffer,
369
+ bytesRead,
370
+ markerBuffer.length - bytesRead,
371
+ bytesRead
372
+ );
373
+ if (chunk === 0) break;
374
+ bytesRead += chunk;
375
+ }
376
+ if (bytesRead > WORKTREE_SESSION_MARKER_MAX_BYTES) {
377
+ return { state: "invalid", reason: "unsafe marker size or identity" };
378
+ }
379
+ const raw = markerBuffer.subarray(0, bytesRead).toString("utf8");
380
+ const after = nodeFs.fstatSync(fd);
381
+ const pathStats = nodeFs.lstatSync(markerPath);
382
+ if (!after.isFile() || after.nlink !== 1 || after.size !== bytesRead || after.size > WORKTREE_SESSION_MARKER_MAX_BYTES || after.dev !== opened.dev || after.ino !== opened.ino || !pathStats.isFile() || pathStats.nlink !== 1 || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
383
+ return {
384
+ state: "invalid",
385
+ reason: "marker identity changed during read"
386
+ };
387
+ }
388
+ const sessionId = raw.trim();
389
+ if (sessionId.length === 0 || sessionId !== raw || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES) {
390
+ return { state: "invalid", reason: "invalid marker owner" };
391
+ }
392
+ return {
393
+ state: "valid",
394
+ sessionId,
395
+ uid: process.geteuid === void 0 ? null : after.uid,
396
+ dev: after.dev,
397
+ ino: after.ino
398
+ };
399
+ } catch (error) {
400
+ if (isNodeError(error) && error.code === "ENOENT") {
401
+ return observedMarker ? { state: "invalid", reason: "marker disappeared during read" } : { state: "missing" };
402
+ }
403
+ return {
404
+ state: "invalid",
405
+ reason: error instanceof Error ? error.message : String(error)
406
+ };
407
+ } finally {
408
+ if (fd !== void 0) {
409
+ try {
410
+ nodeFs.closeSync(fd);
411
+ } catch {
412
+ }
413
+ }
414
+ }
415
+ }
416
+ __name(readWorktreeSessionMarkerStrictSync, "readWorktreeSessionMarkerStrictSync");
417
+ async function transferWorktreeSessionMarkerOwner(worktreePath, expectedOwner, newOwner) {
418
+ assertValidWorktreeSessionMarkerOwner(newOwner);
419
+ if (expectedOwner !== null) {
420
+ assertValidWorktreeSessionMarkerOwner(expectedOwner);
421
+ if (expectedOwner === newOwner) {
422
+ throw new Error("Worktree marker transfer needs a distinct new owner");
423
+ }
424
+ }
425
+ const opening = await readWorktreeSessionMarkerStrict(worktreePath);
426
+ if (opening.state === "invalid") {
427
+ throw new Error(`Worktree marker is invalid: ${opening.reason}`);
428
+ }
429
+ if (opening.state === "missing") {
430
+ if (expectedOwner !== null) {
431
+ throw new Error("Worktree marker owner does not match the expectation");
432
+ }
433
+ await createWorktreeSessionMarkerExclusive(worktreePath, newOwner);
434
+ return;
435
+ }
436
+ if (opening.sessionId !== expectedOwner) {
437
+ throw new Error("Worktree marker owner does not match the expectation");
438
+ }
439
+ const euid = process.geteuid?.();
440
+ if (euid !== void 0 && opening.uid !== null && opening.uid !== euid) {
441
+ throw new Error("Worktree marker is owned by a different uid");
442
+ }
443
+ const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
444
+ await atomicWriteFile(markerPath, newOwner, {
445
+ mode: 384,
446
+ noFollow: true,
447
+ assertCanCommit: /* @__PURE__ */ __name(() => {
448
+ const current = readWorktreeSessionMarkerStrictSync(worktreePath);
449
+ if (current.state !== "valid" || current.sessionId !== opening.sessionId || current.dev !== opening.dev || current.ino !== opening.ino || current.uid !== opening.uid) {
450
+ throw new Error("Worktree marker changed during ownership transfer");
451
+ }
452
+ }, "assertCanCommit")
453
+ });
454
+ await addWorktreeSessionMarkerExclude(worktreePath);
455
+ }
456
+ __name(transferWorktreeSessionMarkerOwner, "transferWorktreeSessionMarkerOwner");
285
457
  async function readWorktreeSessionMarker(worktreePath) {
286
458
  const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
287
459
  try {
@@ -1826,9 +1998,12 @@ export {
1826
1998
  clearRuntimeStatus,
1827
1999
  loadSimpleGit,
1828
2000
  worktreeBranchForSlug,
2001
+ WORKTREE_SESSION_FILE,
1829
2002
  writeWorktreeSessionMarker,
2003
+ WorktreeMarkerCommittedError,
1830
2004
  createWorktreeSessionMarkerExclusive,
1831
2005
  readWorktreeSessionMarkerStrict,
2006
+ transferWorktreeSessionMarkerOwner,
1832
2007
  readWorktreeSessionMarker,
1833
2008
  AGENT_WORKTREE_SLUG_PATTERN,
1834
2009
  generateAgentWorktreeSlug,
@@ -8,7 +8,7 @@ import {
8
8
  isQuotaExhaustedError,
9
9
  isQwenQuotaExceededError,
10
10
  isRateLimitError
11
- } from "./chunk-W4LL5RZO.js";
11
+ } from "./chunk-4ALNJDHL.js";
12
12
  import {
13
13
  createDebugLogger,
14
14
  getErrorStatus
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-FETY36NQ.js";
7
7
  import {
8
8
  WorkspaceDrainingError
9
- } from "./chunk-F47DITLZ.js";
9
+ } from "./chunk-FAWTMDX7.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -14,7 +14,7 @@ import {
14
14
  init_esbuild_shims();
15
15
  async function getCliVersion() {
16
16
  const pkgJson = await getPackageJson();
17
- return "0.23.1-preview.2";
17
+ return "0.23.2-preview.0";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
20
 
@@ -5,7 +5,7 @@ import {
5
5
  parseChannelDelivery,
6
6
  scheduledTaskRunSessionName,
7
7
  scheduledTaskRunSourceId
8
- } from "./chunk-ZNI3V2XA.js";
8
+ } from "./chunk-TK4XHPKW.js";
9
9
  import {
10
10
  parseCallerSuppliedSessionId
11
11
  } from "./chunk-ZEZKIS2K.js";
@@ -14,10 +14,10 @@ import {
14
14
  } from "./chunk-NYWWQ437.js";
15
15
  import {
16
16
  SCHEDULED_TASK_RUN_SOURCE_TYPE
17
- } from "./chunk-ZT3XUGSU.js";
17
+ } from "./chunk-63ACHB2H.js";
18
18
  import {
19
19
  SessionNotFoundError
20
- } from "./chunk-F47DITLZ.js";
20
+ } from "./chunk-FAWTMDX7.js";
21
21
  import {
22
22
  canonicalizeWorkspace
23
23
  } from "./chunk-6PLDPT2C.js";
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  SessionService,
32
32
  stripTerminalControlSequences
33
- } from "./chunk-TSLRORQR.js";
33
+ } from "./chunk-43CI6YWJ.js";
34
34
  import {
35
35
  MAX_JOBS,
36
36
  nextDurableFireMs
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  CHANNEL_STARTUP_PROFILE_VERSION
5
- } from "./chunk-Z6KFLEG7.js";
5
+ } from "./chunk-PSPAM24S.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -5,14 +5,14 @@ import {
5
5
  } from "./chunk-KW7NOTN6.js";
6
6
  import {
7
7
  DEFAULT_OPENAI_LOG_RETENTION_DAYS
8
- } from "./chunk-QW7BUOSI.js";
8
+ } from "./chunk-MWEF5MUK.js";
9
9
  import {
10
10
  resolveOpenAILogDir
11
- } from "./chunk-SD7Y2PMC.js";
11
+ } from "./chunk-XI7RST4D.js";
12
12
  import {
13
13
  FILE_HISTORY_DIR,
14
14
  getSubagentsRootDir
15
- } from "./chunk-TSLRORQR.js";
15
+ } from "./chunk-43CI6YWJ.js";
16
16
  import {
17
17
  Storage,
18
18
  createDebugLogger,
@@ -169,10 +169,8 @@ var STALE_LOCK_MS = 60 * 60 * 1e3;
169
169
  async function runThrottledOnce(opts, task) {
170
170
  const minIntervalMs = opts.minIntervalMs ?? ONE_DAY_MS;
171
171
  const staleLockMs = opts.staleLockMs ?? STALE_LOCK_MS;
172
- await mkdir(dirname(opts.lockPath), { recursive: true, mode: 448 }).catch(
173
- () => {
174
- }
175
- );
172
+ await mkdir(dirname(opts.lockPath), { mode: 448 }).catch(() => {
173
+ });
176
174
  const firstFreshForMs = await markerFreshForMs(
177
175
  opts.markerPath,
178
176
  minIntervalMs,
@@ -64,7 +64,7 @@ async function runExitCleanup(options = {}) {
64
64
  }
65
65
  __name(runExitCleanup, "runExitCleanup");
66
66
  async function cleanupCheckpoints() {
67
- const { Storage } = await import("./deferred-core-runtime-DWOXIU5S.js");
67
+ const { Storage } = await import("./deferred-core-runtime-NJM63YJS.js");
68
68
  const storage = new Storage(process.cwd());
69
69
  const tempDir = storage.getProjectTempDir();
70
70
  const checkpointsDir = join(tempDir, "checkpoints");
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  registerCleanup
5
- } from "./chunk-HPE4LEWX.js";
5
+ } from "./chunk-JDPBJIKI.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  buildModelReasoningConfigPreview,
5
5
  resolvePersistedReasoningConfigState
6
- } from "./chunk-ZJ2LM2SI.js";
6
+ } from "./chunk-2OR32P5M.js";
7
7
  import {
8
8
  ACP_ROUTE_ID_PREFIX,
9
9
  buildAcpModelOptions,
@@ -12,7 +12,7 @@ import {
12
12
  parseAcpBaseModelId,
13
13
  resolveCliGenerationConfig,
14
14
  sanitizeProviderBaseUrl
15
- } from "./chunk-I7UNCY24.js";
15
+ } from "./chunk-7GZCCHJL.js";
16
16
  import {
17
17
  snapshotProcessEnv
18
18
  } from "./chunk-6RZX2HIH.js";
@@ -21,10 +21,10 @@ import {
21
21
  } from "./chunk-FETY36NQ.js";
22
22
  import {
23
23
  loadSettings
24
- } from "./chunk-RUMSY4ES.js";
24
+ } from "./chunk-Q2F43WTJ.js";
25
25
  import {
26
26
  ModelsConfig
27
- } from "./chunk-TSLRORQR.js";
27
+ } from "./chunk-43CI6YWJ.js";
28
28
  import {
29
29
  APPROVAL_MODES
30
30
  } from "./chunk-JX6XHPTX.js";
@@ -130,8 +130,10 @@ function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
130
130
  model.authType,
131
131
  model.id,
132
132
  model.registryBaseUrl ?? model.baseUrl
133
- )?.generationConfig.thinkingMandatory === true
134
- )
133
+ )?.generationConfig.thinkingMandatory === true,
134
+ model.capabilities?.reasoning
135
+ ),
136
+ model.capabilities?.reasoning
135
137
  );
136
138
  const providerModel = {
137
139
  modelId,
@@ -20,12 +20,12 @@ import {
20
20
  detectLineEnding,
21
21
  getDiffStat,
22
22
  needsUtf8Bom
23
- } from "./chunk-TSLRORQR.js";
23
+ } from "./chunk-43CI6YWJ.js";
24
24
  import {
25
25
  FileOperationEvent,
26
26
  getLanguageFromFilePath,
27
27
  logFileOperation
28
- } from "./chunk-WQBR7LN5.js";
28
+ } from "./chunk-OIPUQE3S.js";
29
29
  import {
30
30
  fileExists,
31
31
  getSpecificMimeType
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-TXASDT2M.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-LD53HMPV.js";
11
+ } from "./chunk-CRZBDVP2.js";
12
12
  import {
13
13
  So
14
- } from "./chunk-TSLRORQR.js";
14
+ } from "./chunk-43CI6YWJ.js";
15
15
  import {
16
16
  createDebugLogger
17
17
  } from "./chunk-ZAFYHRVY.js";
@@ -93,6 +93,24 @@ function escapePS(s) {
93
93
  return s.replace(/'/g, "''");
94
94
  }
95
95
  __name(escapePS, "escapePS");
96
+ function resolveUpdateBaseUrl() {
97
+ const value = process.env["QWEN_UPDATE_BASE_URL"]?.trim();
98
+ if (!value) return void 0;
99
+ const invalidUrl = /* @__PURE__ */ __name(() => new Error(
100
+ "QWEN_UPDATE_BASE_URL must be an absolute HTTPS URL without credentials, query parameters, or a fragment."
101
+ ), "invalidUrl");
102
+ let url;
103
+ try {
104
+ url = new URL(value);
105
+ } catch {
106
+ throw invalidUrl();
107
+ }
108
+ if (!/^https:\/\//i.test(value) || url.username || url.password || /[?#\s]/.test(value)) {
109
+ throw invalidUrl();
110
+ }
111
+ return url.href.replace(/\/+$/, "");
112
+ }
113
+ __name(resolveUpdateBaseUrl, "resolveUpdateBaseUrl");
96
114
  async function tryFetch(url, timeoutMs = FETCH_TIMEOUT_MS) {
97
115
  try {
98
116
  const { fetch } = await loadUndici();
@@ -110,7 +128,17 @@ async function tryFetch(url, timeoutMs = FETCH_TIMEOUT_MS) {
110
128
  }
111
129
  }
112
130
  __name(tryFetch, "tryFetch");
113
- async function downloadWithFallback(versionPath, filename, timeoutMs = FETCH_TIMEOUT_MS) {
131
+ async function downloadWithFallback(versionPath, filename, timeoutMs = FETCH_TIMEOUT_MS, baseUrl) {
132
+ if (baseUrl) {
133
+ const result = await tryFetch(
134
+ `${baseUrl}/${versionPath}/${filename}`,
135
+ timeoutMs
136
+ );
137
+ if (result.response) return result.response;
138
+ throw new Error(
139
+ `Failed to download ${filename} from QWEN_UPDATE_BASE_URL: ${result.error.message}`
140
+ );
141
+ }
114
142
  const ossUrl = `${OSS_BASE}/${versionPath}/${filename}`;
115
143
  const ossResult = await tryFetch(ossUrl, timeoutMs);
116
144
  if (ossResult.response) return ossResult.response;
@@ -122,13 +150,23 @@ async function downloadWithFallback(versionPath, filename, timeoutMs = FETCH_TIM
122
150
  );
123
151
  }
124
152
  __name(downloadWithFallback, "downloadWithFallback");
125
- async function verifyChecksum(actualHash, filename, versionPath) {
126
- const response = await downloadWithFallback(versionPath, "SHA256SUMS");
153
+ async function verifyChecksum(actualHash, filename, versionPath, baseUrl) {
154
+ const response = await downloadWithFallback(
155
+ versionPath,
156
+ "SHA256SUMS",
157
+ FETCH_TIMEOUT_MS,
158
+ baseUrl
159
+ );
127
160
  const text = await response.text();
128
161
  const requireSig = process.env["QWEN_REQUIRE_SIGNATURE"] === "1";
129
162
  let sigResponse;
130
163
  try {
131
- sigResponse = await downloadWithFallback(versionPath, "SHA256SUMS.sig");
164
+ sigResponse = await downloadWithFallback(
165
+ versionPath,
166
+ "SHA256SUMS.sig",
167
+ FETCH_TIMEOUT_MS,
168
+ baseUrl
169
+ );
132
170
  } catch (err) {
133
171
  debugLogger.debug("SHA256SUMS.sig not available:", err);
134
172
  }
@@ -163,11 +201,12 @@ async function verifyChecksum(actualHash, filename, versionPath) {
163
201
  }
164
202
  __name(verifyChecksum, "verifyChecksum");
165
203
  var MAX_DOWNLOAD_BYTES = 512 * 1024 * 1024;
166
- async function downloadToFile(versionPath, filename, destPath) {
204
+ async function downloadToFile(versionPath, filename, destPath, baseUrl) {
167
205
  const response = await downloadWithFallback(
168
206
  versionPath,
169
207
  filename,
170
- ARCHIVE_TIMEOUT_MS
208
+ ARCHIVE_TIMEOUT_MS,
209
+ baseUrl
171
210
  );
172
211
  const body = response.body;
173
212
  if (!body) throw new Error("Empty response body");
@@ -772,6 +811,7 @@ function detectTarget() {
772
811
  __name(detectTarget, "detectTarget");
773
812
  async function performStandaloneUpdate(standaloneDir, newVersion) {
774
813
  const versionPath = normalizeVersion(newVersion);
814
+ const baseUrl = resolveUpdateBaseUrl();
775
815
  let target;
776
816
  let isFirstTimeMigration = false;
777
817
  const manifestPath = path.join(standaloneDir, "manifest.json");
@@ -823,10 +863,11 @@ async function performStandaloneUpdate(standaloneDir, newVersion) {
823
863
  const archiveHash = await downloadToFile(
824
864
  versionPath,
825
865
  filename,
826
- archivePath
866
+ archivePath,
867
+ baseUrl
827
868
  );
828
869
  debugLogger.info("Verifying checksum...");
829
- await verifyChecksum(archiveHash, filename, versionPath);
870
+ await verifyChecksum(archiveHash, filename, versionPath, baseUrl);
830
871
  debugLogger.info("Extracting archive...");
831
872
  await extractArchive(archivePath, extractDir, target);
832
873
  const newInstallDir = path.join(extractDir, "qwen-code");
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  getGitVersion,
5
5
  getNpmVersion
6
- } from "./chunk-FWH4736Q.js";
6
+ } from "./chunk-EA4NFWVG.js";
7
7
  import {
8
8
  buildEnvStatusFromEnv,
9
9
  snapshotProcessEnv