@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.2-nightly.20260909.2e212144d3

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 (335) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +189 -116
  3. package/bundled/goal-draft/SKILL.md +23 -13
  4. package/bundled/qc-helper/docs/_meta.ts +1 -0
  5. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +66 -16
  7. package/bundled/qc-helper/docs/configuration/settings.md +50 -0
  8. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  9. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  10. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  11. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  12. package/bundled/qc-helper/docs/features/channels/overview.md +27 -52
  13. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  14. package/bundled/qc-helper/docs/features/commands.md +79 -17
  15. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  16. package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
  17. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  18. package/bundled/qc-helper/docs/features/goals.md +17 -3
  19. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  20. package/bundled/qc-helper/docs/qwen-serve.md +80 -48
  21. package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-ZBGWYJZW.js} +29 -28
  22. package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-NR5ACIJZ.js} +48 -47
  23. package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  24. package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-DM6XRCDQ.js} +361 -210
  25. package/chunks/{agent-GEBPAEJS.js → agent-EF3IIYE3.js} +20 -20
  26. package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-5J2KFYR4.js} +20 -20
  27. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-VIW2FG7G.js} +32 -9
  28. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  29. package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-R3TXY77M.js} +1 -1
  30. package/chunks/{bridge-MHWO5I5T.js → bridge-LEMQM6QE.js} +32 -31
  31. package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TGF6XFXT.js} +4 -4
  32. package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-FV365JSF.js} +40 -39
  33. package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-SQ5FRWOH.js} +7 -7
  34. package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-TU4ZNWOE.js} +7 -7
  35. package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  36. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  37. package/chunks/{chunk-OFB36ZBA.js → chunk-2HYOOFDS.js} +10 -7
  38. package/chunks/chunk-2Z3T52OC.js +82 -0
  39. package/chunks/{chunk-LYHYXJJ3.js → chunk-34VPADLG.js} +3 -3
  40. package/chunks/{chunk-C7M445SS.js → chunk-3A2IMUDH.js} +14 -2
  41. package/chunks/{chunk-P5Z7VD23.js → chunk-3O77M472.js} +294 -87
  42. package/chunks/{chunk-4OCYWXKF.js → chunk-43EUMPKQ.js} +3 -3
  43. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  44. package/chunks/{chunk-VMFPZXRT.js → chunk-4DIMJKWU.js} +64 -43
  45. package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
  46. package/chunks/{chunk-VYCJITND.js → chunk-5HV2HPO7.js} +1 -1
  47. package/chunks/{chunk-22QOQKG4.js → chunk-5WBA3DEF.js} +1 -1
  48. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  49. package/chunks/{chunk-I7UNCY24.js → chunk-6GAYNM3F.js} +3 -3
  50. package/chunks/{chunk-2C3XDBGL.js → chunk-6S7YYUUH.js} +4 -4
  51. package/chunks/{chunk-Y3C5COGI.js → chunk-6VIATHL7.js} +1 -1
  52. package/chunks/{chunk-XNC2TCUO.js → chunk-76I36BEM.js} +4 -4
  53. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  54. package/chunks/{chunk-RGAQDQ3Z.js → chunk-7IDZFJAV.js} +18 -9
  55. package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
  56. package/chunks/{chunk-WLZRMF3C.js → chunk-7KZVXJ4U.js} +353 -11
  57. package/chunks/{chunk-REDVV5NC.js → chunk-7WCJEY3A.js} +7 -7
  58. package/chunks/{chunk-I67KJGM6.js → chunk-A7QZIGRB.js} +3 -3
  59. package/chunks/{chunk-SHX2HIE7.js → chunk-ATBLEXXV.js} +7 -2
  60. package/chunks/{chunk-RH344FKI.js → chunk-AUTUFD5X.js} +1 -1
  61. package/chunks/chunk-AXMWHKXA.js +42 -0
  62. package/chunks/{chunk-WFXD5OZH.js → chunk-AXWTG6R7.js} +2 -5
  63. package/chunks/{chunk-TSLRORQR.js → chunk-BDAVT6K2.js} +1809 -1588
  64. package/chunks/{chunk-HWZOOSEB.js → chunk-BDP3NTWD.js} +3 -3
  65. package/chunks/{chunk-RD3VPM4E.js → chunk-BZUHZCUO.js} +2 -2
  66. package/chunks/{chunk-HPE4LEWX.js → chunk-C24ZDDNY.js} +1 -1
  67. package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
  68. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  69. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  70. package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
  71. package/chunks/{chunk-GEV66YGE.js → chunk-D6AGS266.js} +1 -1
  72. package/chunks/{chunk-EPZWBYQI.js → chunk-D7DFZAK2.js} +19 -11
  73. package/chunks/{chunk-5V4B3EWA.js → chunk-DARWOZY6.js} +1 -1
  74. package/chunks/{chunk-XX4MBBFW.js → chunk-DGNRLJ6S.js} +4 -4
  75. package/chunks/{chunk-UTVIIA7N.js → chunk-DVOCOIS5.js} +1 -1
  76. package/chunks/{chunk-RQNAO42A.js → chunk-E4LXNQAK.js} +1 -1
  77. package/chunks/{chunk-EGRFCIXD.js → chunk-EATP5QCN.js} +84 -25
  78. package/chunks/{chunk-3RMVM33U.js → chunk-EDSU3VUG.js} +12 -5
  79. package/chunks/{chunk-733KQL63.js → chunk-EE5ZD4XU.js} +3 -3
  80. package/chunks/{chunk-QQGAR64U.js → chunk-EN3Q2S3J.js} +4 -4
  81. package/chunks/{chunk-PLUAIHZO.js → chunk-EOLGAQ25.js} +17 -16
  82. package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
  83. package/chunks/{chunk-L36LLVA5.js → chunk-EYCW6UF2.js} +7 -7
  84. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  85. package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
  86. package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
  87. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  88. package/chunks/{chunk-SI6Q52UI.js → chunk-FEEVHJOR.js} +3 -3
  89. package/chunks/{chunk-75UQFGFE.js → chunk-FN4KHWCL.js} +1 -1
  90. package/chunks/{chunk-WQBR7LN5.js → chunk-FRS3P7MQ.js} +15 -2
  91. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  92. package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
  93. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  94. package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
  95. package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
  96. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  97. package/chunks/{chunk-3K456UJF.js → chunk-HSO6D4KX.js} +93 -28
  98. package/chunks/{chunk-ANVC5CSK.js → chunk-HUJJFSMO.js} +10 -10
  99. package/chunks/{chunk-C4NXRR7T.js → chunk-HW4MRP4V.js} +2 -2
  100. package/chunks/{chunk-PMGWY6ZP.js → chunk-HWLLUDIA.js} +113 -18
  101. package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
  102. package/chunks/{chunk-7PMKXGRP.js → chunk-IKK6NNS6.js} +91 -31
  103. package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
  104. package/chunks/{chunk-BNWIX6BM.js → chunk-JFAGT5YG.js} +3 -3
  105. package/chunks/{chunk-RSU3I6UL.js → chunk-JGTMTJSQ.js} +1 -1
  106. package/chunks/{chunk-LTCI6ZOJ.js → chunk-JYGIJA4W.js} +1 -1
  107. package/chunks/{chunk-537SQ2AI.js → chunk-KECCLCXM.js} +146 -24
  108. package/chunks/{chunk-KAZWXVI3.js → chunk-KEPC5BOL.js} +5 -5
  109. package/chunks/{chunk-HZS3JRQW.js → chunk-L5VHJYHH.js} +40 -2
  110. package/chunks/{chunk-KTLT7VCX.js → chunk-LKBOBUA2.js} +2 -2
  111. package/chunks/{chunk-TDHVOZ65.js → chunk-LOBKNYPR.js} +2 -2
  112. package/chunks/{chunk-QW7BUOSI.js → chunk-LOVGQ3HZ.js} +26 -9
  113. package/chunks/{chunk-5FYGZ7E3.js → chunk-MUF4UGPB.js} +2 -2
  114. package/chunks/chunk-N3Z6Q7KC.js +384 -0
  115. package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
  116. package/chunks/chunk-NFXXBWSE.js +463 -0
  117. package/chunks/chunk-NOO4QFXM.js +171 -0
  118. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  119. package/chunks/{chunk-FXYNIZPW.js → chunk-NV4YYXFT.js} +51 -10
  120. package/chunks/{chunk-FWH4736Q.js → chunk-O6BFERWN.js} +3 -3
  121. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  122. package/chunks/{chunk-C55CR5I4.js → chunk-OVTPETDL.js} +6 -6
  123. package/chunks/chunk-PLEBBGHL.js +1401 -0
  124. package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
  125. package/chunks/{chunk-RRCNEW2A.js → chunk-PWR6BQ3U.js} +58 -4
  126. package/chunks/{chunk-SHK2SIR5.js → chunk-QA2B26PL.js} +4 -4
  127. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  128. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  129. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  130. package/chunks/{chunk-MFCWL4LI.js → chunk-SK6VACCM.js} +936 -481
  131. package/chunks/{chunk-SD7Y2PMC.js → chunk-SM66GFKJ.js} +2 -2
  132. package/chunks/{chunk-ADJD4LZF.js → chunk-SNMUO5Z7.js} +1 -1
  133. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  134. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  135. package/chunks/{chunk-YLFICBYK.js → chunk-SYKPMH2X.js} +3 -3
  136. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  137. package/chunks/{chunk-AX23QSX3.js → chunk-TRQNRP2H.js} +4 -4
  138. package/chunks/{chunk-AUJOWIT5.js → chunk-UQOP2APG.js} +4 -24
  139. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  140. package/chunks/{chunk-IGOIYZBG.js → chunk-VAWM3A5N.js} +2 -2
  141. package/chunks/{chunk-6KYWU726.js → chunk-VJJXG73H.js} +417 -292
  142. package/chunks/{chunk-ZNI3V2XA.js → chunk-VJWJOKOQ.js} +2 -2
  143. package/chunks/{chunk-AWDF462I.js → chunk-VR6Y23FW.js} +2 -2
  144. package/chunks/{chunk-T7TP5UQL.js → chunk-VX2NR3SD.js} +21 -6
  145. package/chunks/{chunk-65GHQ4FX.js → chunk-WDVV3LRM.js} +707 -216
  146. package/chunks/{chunk-KP5QK3FB.js → chunk-WEU6O6VN.js} +397 -54
  147. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  148. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  149. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  150. package/chunks/{chunk-RUMSY4ES.js → chunk-Y7YHAY32.js} +28 -10
  151. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  152. package/chunks/{chunk-B5FF3LRF.js → chunk-YIE6REQ5.js} +29 -17
  153. package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
  154. package/chunks/{chunk-TXAEXF2B.js → chunk-ZEFWBG2C.js} +737 -1136
  155. package/chunks/{chunk-AIMZIXZM.js → chunk-ZM2TCZZ7.js} +5 -7
  156. package/chunks/{chunk-ZT3XUGSU.js → chunk-ZZ7RVOTU.js} +135 -26
  157. package/chunks/{config-utils-F4CFJ4MW.js → config-utils-SXFK3G4X.js} +33 -32
  158. package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-QFPD26QO.js} +31 -30
  159. package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-VXKNBODM.js} +35 -33
  160. package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-7WSQETFR.js} +30 -29
  161. package/chunks/{daemon-LCUELM6E.js → daemon-U2456K5H.js} +2 -2
  162. package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-I4DCSDUS.js} +29 -28
  163. package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-5UV56RI4.js} +36 -35
  164. package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-DKIBWTKU.js} +36 -35
  165. package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-CPSD7UKT.js} +36 -35
  166. package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-D2RF35BL.js} +29 -28
  167. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  168. package/chunks/{dist-P6YWBITG.js → dist-6YDUH3BB.js} +817 -152
  169. package/chunks/{dist-T4PRA5EZ.js → dist-BNQVF565.js} +2 -8
  170. package/chunks/{dist-AI25RVRA.js → dist-F34J4FZX.js} +1 -1
  171. package/chunks/{dist-3H3WODVS.js → dist-F6JLAJLE.js} +1 -1
  172. package/chunks/{dist-NXW4DUUX.js → dist-K5GHMXIG.js} +2 -2
  173. package/chunks/{dist-YNQU4CKC.js → dist-NP7QKLVG.js} +2 -2
  174. package/chunks/{dist-VCAS67N5.js → dist-UFTFGI6I.js} +1 -1
  175. package/chunks/{dist-I74QLLQS.js → dist-XLV33CLY.js} +1 -2
  176. package/chunks/{dist-XINEKB5A.js → dist-ZDNJK74R.js} +3 -7
  177. package/chunks/{edit-WPVXLL3T.js → edit-4IBADZ3O.js} +20 -20
  178. package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
  179. package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-YN3GPQU5.js} +20 -20
  180. package/chunks/{environment-5LLJ3I3W.js → environment-E272IJMF.js} +32 -31
  181. package/chunks/{errors-IQT3YZEP.js → errors-CVAH3RWQ.js} +31 -30
  182. package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
  183. package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-24J5IHGC.js} +20 -20
  184. package/chunks/{fast-path-PAUQQEVU.js → fast-path-M5IDBMXF.js} +4 -4
  185. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  186. package/chunks/{glob-SQ7CTZ7F.js → glob-ERBD7JYP.js} +20 -20
  187. package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-245ULLQT.js} +20 -20
  188. package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-JDZHHZKK.js} +32 -31
  189. package/chunks/{i18n-SF5MPWEB.js → i18n-LA4D5IXM.js} +32 -29
  190. package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
  191. package/chunks/{initializer-CK4WPYZG.js → initializer-SHPTSWUZ.js} +36 -35
  192. package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-QEQEPB3G.js} +29 -28
  193. package/chunks/{list-E3PS3EBJ.js → list-IBHCQWTF.js} +39 -38
  194. package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
  195. package/chunks/{llm-JQKBOYAF.js → llm-JAWCQLA4.js} +81 -75
  196. package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-GOV3A23T.js} +23 -8
  197. package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-RVE2GNVU.js} +36 -35
  198. package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-SSHNN5YW.js} +22 -22
  199. package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-BHSTITQO.js} +29 -28
  200. package/chunks/{mcp-I7G2AEWS.js → mcp-6ZZ7P2HU.js} +36 -35
  201. package/chunks/{monitor-4R76BCRZ.js → monitor-RKK6GSHG.js} +20 -20
  202. package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-UQHP3G6P.js} +76 -72
  203. package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-YM47A7WO.js} +20 -20
  204. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  205. package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-FHKDWNI2.js} +11 -11
  206. package/chunks/{pidfile-TGIUY2GG.js → pidfile-SIIEJEEH.js} +32 -29
  207. package/chunks/{processUtils-3USXUQWX.js → processUtils-JF7CWBJC.js} +2 -2
  208. package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-FXXHAEQU.js} +30 -29
  209. package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-KFJ77JP6.js} +24 -24
  210. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  211. package/chunks/{read-file-R256LDWQ.js → read-file-S2NOCBIL.js} +4 -4
  212. package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-QHHPSQWU.js} +33 -32
  213. package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-F6TNOJUO.js} +5 -5
  214. package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-KYBDQRDD.js} +229 -79
  215. package/chunks/{runtime-FS5TL6P7.js → runtime-3WNOFLCR.js} +43 -40
  216. package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-RNBH56DJ.js} +34 -33
  217. package/chunks/{scheduler-EXU5HMVK.js → scheduler-ERMW7Q7B.js} +31 -30
  218. package/chunks/{send-message-GQKXGMPI.js → send-message-V5T3NMFM.js} +4 -4
  219. package/chunks/{serve-ITJC7WNN.js → serve-7NV46RMP.js} +36 -35
  220. package/chunks/{server-6JQY3PTU.js → server-6RZJR5QF.js} +1358 -932
  221. package/chunks/{session-PJDEKXD4.js → session-Z4EV7NVV.js} +107 -78
  222. package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-SG5FC52X.js} +29 -28
  223. package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-ILC4Z3ZM.js} +33 -32
  224. package/chunks/{settings-LO6J5SAZ.js → settings-Y47SPE3X.js} +35 -34
  225. package/chunks/{shell-ANAFVYGR.js → shell-YBVCOPVO.js} +20 -20
  226. package/chunks/{skill-SHJWKSPH.js → skill-AXC63EBA.js} +4 -4
  227. package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-AFPAYGLO.js} +35 -34
  228. package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-ZFL4J2V3.js} +29 -28
  229. package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-Y2OZPLNJ.js} +31 -30
  230. package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-G6TKT4LI.js} +2270 -1026
  231. package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-YTNDPW7J.js} +1789 -2211
  232. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  233. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  234. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  235. package/chunks/{team-create-WKTPCH6D.js → team-create-BUFLGGSH.js} +20 -20
  236. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  237. package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-OUWWM42U.js} +20 -20
  238. package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-WH2WV5ES.js} +29 -28
  239. package/chunks/{theme-manager-BNWESY26.js → theme-manager-5UDRARM2.js} +29 -28
  240. package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-MCDIRPHN.js} +4 -4
  241. package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-VL27U74Z.js} +33 -32
  242. package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-MSXT4VDD.js} +30 -29
  243. package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-JKLEWVCB.js} +5 -5
  244. package/chunks/{updateCheck-3MYFMM35.js → updateCheck-ARTHAJT2.js} +31 -30
  245. package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-YEAAGYVU.js} +38 -37
  246. package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-EMRQKH5S.js} +71 -69
  247. package/chunks/{version-RO2FPO76.js → version-HFQU35WD.js} +3 -1
  248. package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-QBXAO6VF.js} +7 -7
  249. package/chunks/{web-search-XA5Z4ZCD.js → web-search-2URQXA3A.js} +201 -13
  250. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  251. package/chunks/{workflow-QFIOCMDM.js → workflow-JDD6WDAH.js} +211 -75
  252. package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-B4IKR6YJ.js} +38 -37
  253. package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-PJ3YHR45.js} +1 -2
  254. package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-WVYJ5UGB.js} +33 -32
  255. package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-DXL5YVAG.js} +33 -32
  256. package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-QNGAMVH7.js} +40 -39
  257. package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-BEISJIII.js} +36 -35
  258. package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-ORYJF5L4.js} +40 -39
  259. package/chunks/{write-file-QOYVHAKK.js → write-file-DWLKFBTJ.js} +21 -21
  260. package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-BYVIXSNQ.js} +4 -4
  261. package/cli.js +13 -13
  262. package/export-transcript-document.js +123 -119
  263. package/package.json +4 -4
  264. package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
  265. package/web-shell/assets/{arc-DKW0mbPo.js → arc-CDg7Zfpm.js} +1 -1
  266. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
  267. package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
  268. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
  269. package/web-shell/assets/channel-e4xwS72w.js +1 -0
  270. package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
  271. package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
  272. package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
  273. package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
  274. package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
  275. package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
  276. package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
  277. package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
  278. package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
  279. package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
  280. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
  281. package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
  282. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  283. package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
  284. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
  285. package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
  286. package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
  287. package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
  288. package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
  289. package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
  290. package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
  291. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
  292. package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
  293. package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
  294. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
  295. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
  296. package/web-shell/assets/{index-C9R-iojE.js → index-9ie6xLTM.js} +1 -1
  297. package/web-shell/assets/index-DirkXQEg.js +2164 -0
  298. package/web-shell/assets/index-DzdST_7L.css +36 -0
  299. package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
  300. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
  301. package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
  302. package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
  303. package/web-shell/assets/{layout-CFVu37BB.js → layout-C_70RhaT.js} +1 -1
  304. package/web-shell/assets/{linear-ChBxdtWf.js → linear-BJ2ZLmcq.js} +1 -1
  305. package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-RlY0zPNC.js} +6 -6
  306. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
  307. package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
  308. package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
  309. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
  310. package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
  311. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
  312. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
  313. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
  314. package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
  315. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
  316. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
  317. package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
  318. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
  319. package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
  320. package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
  321. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
  322. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
  323. package/web-shell/index.html +2 -2
  324. package/chunks/chunk-2LD5U7Q3.js +0 -114
  325. package/chunks/chunk-3UMWOKJC.js +0 -78
  326. package/chunks/chunk-IQAFKVXS.js +0 -22
  327. package/chunks/chunk-X35VIWWJ.js +0 -276
  328. package/chunks/chunk-ZJ2LM2SI.js +0 -198
  329. package/web-shell/assets/channel-CQx7VSAp.js +0 -1
  330. package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
  331. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
  332. package/web-shell/assets/index-B4TLaxWs.js +0 -2142
  333. package/web-shell/assets/index-CCrkEbzz.css +0 -36
  334. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
  335. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
@@ -23,10 +23,11 @@ import {
23
23
  SessionConflictError,
24
24
  SessionNotArchivedError,
25
25
  SessionNotFoundError
26
- } from "./chunk-F47DITLZ.js";
26
+ } from "./chunk-FAWTMDX7.js";
27
27
  import {
28
- readWorktreeSession
29
- } from "./chunk-E4VX6LXB.js";
28
+ readWorktreeSession,
29
+ readWorktreeSessionStrict
30
+ } from "./chunk-YZTGGCEE.js";
30
31
  import {
31
32
  SESSION_PR_LIST_LIMIT,
32
33
  SESSION_PR_URL_MAX_LENGTH,
@@ -40,7 +41,12 @@ import {
40
41
  gitEnv,
41
42
  readSessionPrs,
42
43
  toSessionPrInfo
43
- } from "./chunk-TSLRORQR.js";
44
+ } from "./chunk-BDAVT6K2.js";
45
+ import {
46
+ GitWorktreeService,
47
+ WORKTREE_SESSION_FILE,
48
+ readWorktreeSessionMarkerStrict
49
+ } from "./chunk-HIXUUCGY.js";
44
50
  import {
45
51
  updateCronTasks
46
52
  } from "./chunk-F53KKZUD.js";
@@ -1322,6 +1328,7 @@ __name(createWorkspaceRuntimeSessionService, "createWorkspaceRuntimeSessionServi
1322
1328
 
1323
1329
  // packages/cli/src/serve/server/session-archive.ts
1324
1330
  init_esbuild_shims();
1331
+ import fs2 from "node:fs";
1325
1332
 
1326
1333
  // packages/cli/src/serve/scheduled-task-session-lifecycle.ts
1327
1334
  init_esbuild_shims();
@@ -1394,6 +1401,296 @@ async function removeTasksForSessions(projectRoot, sessionIds, options = {}) {
1394
1401
  }
1395
1402
  __name(removeTasksForSessions, "removeTasksForSessions");
1396
1403
 
1404
+ // packages/cli/src/serve/server/worktree-orphan-cleanup.ts
1405
+ init_esbuild_shims();
1406
+ import fs from "node:fs";
1407
+ import * as fsp from "node:fs/promises";
1408
+ import path2 from "node:path";
1409
+ import { execFile } from "node:child_process";
1410
+ import { promisify } from "node:util";
1411
+
1412
+ // packages/cli/src/serve/server/worktree-ownership-op.ts
1413
+ init_esbuild_shims();
1414
+ var worktreeOwnershipOpTails = /* @__PURE__ */ new Map();
1415
+ async function acquireWorktreeOwnershipOp(worktreeKey) {
1416
+ const previous = worktreeOwnershipOpTails.get(worktreeKey);
1417
+ let releaseGate;
1418
+ const gate = new Promise((resolve) => {
1419
+ releaseGate = resolve;
1420
+ });
1421
+ const tail = (previous ?? Promise.resolve()).then(() => gate);
1422
+ worktreeOwnershipOpTails.set(worktreeKey, tail);
1423
+ if (previous) {
1424
+ await previous;
1425
+ }
1426
+ let released = false;
1427
+ return () => {
1428
+ if (released) return;
1429
+ released = true;
1430
+ releaseGate();
1431
+ if (worktreeOwnershipOpTails.get(worktreeKey) === tail) {
1432
+ worktreeOwnershipOpTails.delete(worktreeKey);
1433
+ }
1434
+ };
1435
+ }
1436
+ __name(acquireWorktreeOwnershipOp, "acquireWorktreeOwnershipOp");
1437
+
1438
+ // packages/cli/src/serve/server/worktree-orphan-cleanup.ts
1439
+ function canonicalPath(candidate) {
1440
+ try {
1441
+ return fs.realpathSync(candidate);
1442
+ } catch {
1443
+ return candidate;
1444
+ }
1445
+ }
1446
+ __name(canonicalPath, "canonicalPath");
1447
+ var execFileAsync = promisify(execFile);
1448
+ var DISPOSABLE_IGNORED_ROOTS = /* @__PURE__ */ new Set(["node_modules", "dist", "coverage"]);
1449
+ async function checkoutHasWork(worktreePath) {
1450
+ try {
1451
+ const { stdout } = await execFileAsync(
1452
+ "git",
1453
+ [
1454
+ "status",
1455
+ "--porcelain",
1456
+ "--untracked-files=normal",
1457
+ "--ignored=matching"
1458
+ ],
1459
+ { cwd: worktreePath, env: gitEnv() }
1460
+ );
1461
+ return stdout.split("\n").filter((line) => line.trim().length > 0).some((line) => {
1462
+ const entry = line.slice(3);
1463
+ if (entry === WORKTREE_SESSION_FILE) return false;
1464
+ if (line.startsWith("!!")) {
1465
+ return !DISPOSABLE_IGNORED_ROOTS.has(entry.split("/")[0]);
1466
+ }
1467
+ return true;
1468
+ });
1469
+ } catch {
1470
+ return true;
1471
+ }
1472
+ }
1473
+ __name(checkoutHasWork, "checkoutHasWork");
1474
+ function logWarning(message) {
1475
+ writeStderrLine(`qwen serve: ${message}`);
1476
+ }
1477
+ __name(logWarning, "logWarning");
1478
+ function logWorktreeCleanupPreserve(sessionId, reason) {
1479
+ logWarning(
1480
+ `worktree cleanup preserved checkout action=delete session=${safeLogValue(
1481
+ sessionId
1482
+ )} reason=${safeLogValue(reason)}`
1483
+ );
1484
+ }
1485
+ __name(logWorktreeCleanupPreserve, "logWorktreeCleanupPreserve");
1486
+ async function preclassifyWorktreeCleanup(service, sessionId, runtimeWorkspaceCwd) {
1487
+ let sidecarPath = service.getWorktreeSessionPath(sessionId);
1488
+ let sidecar = await readWorktreeSessionStrict(sidecarPath);
1489
+ if (sidecar.state === "missing") {
1490
+ const archivedPath = service.getWorktreeSessionPathForArchiveState(
1491
+ sessionId,
1492
+ "archived"
1493
+ );
1494
+ if (archivedPath !== sidecarPath) {
1495
+ sidecarPath = archivedPath;
1496
+ sidecar = await readWorktreeSessionStrict(sidecarPath);
1497
+ }
1498
+ }
1499
+ if (sidecar.state === "missing") return void 0;
1500
+ if (sidecar.state === "invalid") {
1501
+ logWorktreeCleanupPreserve(
1502
+ sessionId,
1503
+ `unreadable sidecar (${sidecar.reason})`
1504
+ );
1505
+ return void 0;
1506
+ }
1507
+ const session = sidecar.session;
1508
+ if (session.workspaceCwd === void 0) return void 0;
1509
+ if (session.supersededBy !== void 0) return void 0;
1510
+ if (!path2.isAbsolute(session.workspaceCwd) || !path2.isAbsolute(session.originalCwd)) {
1511
+ logWorktreeCleanupPreserve(
1512
+ sessionId,
1513
+ "sidecar base is not an absolute path"
1514
+ );
1515
+ return void 0;
1516
+ }
1517
+ if (runtimeWorkspaceCwd !== void 0) {
1518
+ if (canonicalPath(session.workspaceCwd) !== canonicalPath(runtimeWorkspaceCwd)) {
1519
+ logWorktreeCleanupPreserve(
1520
+ sessionId,
1521
+ "sidecar belongs to another workspace"
1522
+ );
1523
+ return void 0;
1524
+ }
1525
+ const workspaceRoots = [canonicalPath(runtimeWorkspaceCwd)];
1526
+ try {
1527
+ const repoTop = await new GitWorktreeService(
1528
+ runtimeWorkspaceCwd
1529
+ ).getRepoTopLevel();
1530
+ if (repoTop && canonicalPath(repoTop) !== workspaceRoots[0]) {
1531
+ workspaceRoots.push(canonicalPath(repoTop));
1532
+ }
1533
+ } catch {
1534
+ }
1535
+ if (!workspaceRoots.includes(canonicalPath(session.originalCwd))) {
1536
+ logWorktreeCleanupPreserve(
1537
+ sessionId,
1538
+ "sidecar original cwd is outside the accepted roots"
1539
+ );
1540
+ return void 0;
1541
+ }
1542
+ }
1543
+ return {
1544
+ sessionId,
1545
+ sidecar: session,
1546
+ sidecarPath,
1547
+ lockKey: canonicalPath(session.worktreePath)
1548
+ };
1549
+ }
1550
+ __name(preclassifyWorktreeCleanup, "preclassifyWorktreeCleanup");
1551
+ function acquireWorktreeCleanupLock(plan) {
1552
+ return acquireWorktreeOwnershipOp(plan.lockKey);
1553
+ }
1554
+ __name(acquireWorktreeCleanupLock, "acquireWorktreeCleanupLock");
1555
+ async function worktreeAllowedRoots(workspaceCwd, originalCwd) {
1556
+ const roots = /* @__PURE__ */ new Set();
1557
+ for (const base of [workspaceCwd, originalCwd]) {
1558
+ if (!path2.isAbsolute(base)) continue;
1559
+ roots.add(path2.join(base, ".qwen", "worktrees"));
1560
+ try {
1561
+ const repoTop = await new GitWorktreeService(base).getRepoTopLevel();
1562
+ if (repoTop) {
1563
+ roots.add(path2.join(repoTop, ".qwen", "worktrees"));
1564
+ }
1565
+ } catch {
1566
+ }
1567
+ }
1568
+ return [...roots];
1569
+ }
1570
+ __name(worktreeAllowedRoots, "worktreeAllowedRoots");
1571
+ async function verifyWorktreeCleanupOwnership(plan) {
1572
+ const { sessionId, sidecar } = plan;
1573
+ const locked = await readWorktreeSessionStrict(plan.sidecarPath);
1574
+ if (locked.state !== "valid") {
1575
+ return {
1576
+ ok: false,
1577
+ reason: locked.state === "missing" ? "sidecar disappeared before delete" : `unreadable sidecar (${locked.reason})`
1578
+ };
1579
+ }
1580
+ const current = locked.session;
1581
+ if (current.workspaceCwd === void 0 || current.supersededBy !== void 0 || current.slug !== sidecar.slug || current.worktreePath !== sidecar.worktreePath || current.originalCwd !== sidecar.originalCwd || current.workspaceCwd !== sidecar.workspaceCwd) {
1582
+ return { ok: false, reason: "sidecar changed before delete" };
1583
+ }
1584
+ const marker = await readWorktreeSessionMarkerStrict(plan.lockKey);
1585
+ if (marker.state !== "valid" || marker.sessionId !== sessionId) {
1586
+ return {
1587
+ ok: false,
1588
+ reason: marker.state === "valid" ? "marker names another session" : `marker ${marker.state}`
1589
+ };
1590
+ }
1591
+ const allowedRoots = await worktreeAllowedRoots(
1592
+ current.workspaceCwd,
1593
+ current.originalCwd
1594
+ );
1595
+ const contained = allowedRoots.some((root) => {
1596
+ try {
1597
+ const realRoot = fs.realpathSync(root);
1598
+ return plan.lockKey === realRoot || plan.lockKey.startsWith(realRoot + path2.sep);
1599
+ } catch {
1600
+ return false;
1601
+ }
1602
+ });
1603
+ if (!contained) {
1604
+ return { ok: false, reason: "checkout outside workspace worktree roots" };
1605
+ }
1606
+ const chatsDir = path2.dirname(plan.sidecarPath);
1607
+ const ownFile = path2.basename(plan.sidecarPath);
1608
+ let entries;
1609
+ try {
1610
+ entries = await fsp.readdir(chatsDir);
1611
+ } catch (error) {
1612
+ return {
1613
+ ok: false,
1614
+ reason: `sidecar scan failed: ${error instanceof Error ? error.message : String(error)}`
1615
+ };
1616
+ }
1617
+ for (const entry of entries) {
1618
+ if (!entry.endsWith(".worktree.json") || entry === ownFile) continue;
1619
+ const other = await readWorktreeSessionStrict(path2.join(chatsDir, entry));
1620
+ if (other.state === "missing") continue;
1621
+ if (other.state === "invalid") {
1622
+ return { ok: false, reason: `unreadable sibling sidecar ${entry}` };
1623
+ }
1624
+ if (canonicalPath(other.session.worktreePath) === plan.lockKey) {
1625
+ if (other.session.supersededBy === sessionId) continue;
1626
+ return { ok: false, reason: `checkout shared with ${entry}` };
1627
+ }
1628
+ }
1629
+ const removalTarget = canonicalPath(
1630
+ new GitWorktreeService(current.originalCwd).getUserWorktreePath(
1631
+ current.slug
1632
+ )
1633
+ );
1634
+ if (removalTarget !== plan.lockKey) {
1635
+ return {
1636
+ ok: false,
1637
+ reason: "slug does not resolve to the verified checkout"
1638
+ };
1639
+ }
1640
+ plan.sidecar = current;
1641
+ return { ok: true };
1642
+ }
1643
+ __name(verifyWorktreeCleanupOwnership, "verifyWorktreeCleanupOwnership");
1644
+ async function checkoutStillPopulated(worktreePath) {
1645
+ try {
1646
+ return (await fsp.readdir(worktreePath)).length > 0;
1647
+ } catch {
1648
+ return false;
1649
+ }
1650
+ }
1651
+ __name(checkoutStillPopulated, "checkoutStillPopulated");
1652
+ async function executeWorktreeCleanup(plan) {
1653
+ const { sessionId, sidecar } = plan;
1654
+ const marker = await readWorktreeSessionMarkerStrict(plan.lockKey);
1655
+ if (marker.state !== "valid" || marker.sessionId !== sessionId) {
1656
+ logWorktreeCleanupPreserve(sessionId, "marker changed after delete");
1657
+ return;
1658
+ }
1659
+ if (await checkoutHasWork(plan.lockKey)) {
1660
+ logWorktreeCleanupPreserve(sessionId, "checkout has uncommitted work");
1661
+ return;
1662
+ }
1663
+ const result = await new GitWorktreeService(
1664
+ sidecar.originalCwd
1665
+ ).removeUserWorktree(sidecar.slug, { deleteBranch: true });
1666
+ if (!result.success) {
1667
+ const errorText = result.error ?? "unknown error";
1668
+ if (await checkoutStillPopulated(plan.lockKey)) {
1669
+ logWorktreeCleanupPreserve(
1670
+ sessionId,
1671
+ `checkout removal failed: ${errorText}`
1672
+ );
1673
+ } else {
1674
+ logWarning(
1675
+ `worktree cleanup removal failed, checkout may be partially deleted action=delete session=${safeLogValue(
1676
+ sessionId
1677
+ )} reason=${safeLogValue(errorText)}`
1678
+ );
1679
+ }
1680
+ return;
1681
+ }
1682
+ if (result.branchPreserved) {
1683
+ logWarning(
1684
+ `worktree cleanup removed checkout but kept branch action=delete session=${safeLogValue(
1685
+ sessionId
1686
+ )} slug=${safeLogValue(sidecar.slug)} branch=${safeLogValue(
1687
+ sidecar.worktreeBranch
1688
+ )} reason=unmerged commits`
1689
+ );
1690
+ }
1691
+ }
1692
+ __name(executeWorktreeCleanup, "executeWorktreeCleanup");
1693
+
1397
1694
  // packages/cli/src/serve/server/session-archive.ts
1398
1695
  var DaemonDrainingError = class extends Error {
1399
1696
  static {
@@ -1755,6 +2052,7 @@ async function deleteDaemonSessions(params) {
1755
2052
  coordinator,
1756
2053
  coordinatorLockHeld = false,
1757
2054
  assertCanMutate,
2055
+ runtimeWorkspaceCwd,
1758
2056
  onError
1759
2057
  } = params;
1760
2058
  const uniqueSessionIds = [
@@ -1765,6 +2063,49 @@ async function deleteDaemonSessions(params) {
1765
2063
  coordinator.assertNotTransitioning(sessionId);
1766
2064
  }
1767
2065
  }
2066
+ const runWithWorktreeCleanup = /* @__PURE__ */ __name(async (sessionId, mutateSession) => {
2067
+ const activeSidecarPath = service.getWorktreeSessionPath(sessionId);
2068
+ const archivedSidecarPath = service.getWorktreeSessionPathForArchiveState(
2069
+ sessionId,
2070
+ "archived"
2071
+ );
2072
+ if (!fs2.existsSync(activeSidecarPath) && (archivedSidecarPath === activeSidecarPath || !fs2.existsSync(archivedSidecarPath))) {
2073
+ return coordinator.runExclusiveMany([sessionId], mutateSession);
2074
+ }
2075
+ const cleanupPlan = await preclassifyWorktreeCleanup(
2076
+ service,
2077
+ sessionId,
2078
+ runtimeWorkspaceCwd
2079
+ );
2080
+ if (!cleanupPlan) {
2081
+ return coordinator.runExclusiveMany([sessionId], mutateSession);
2082
+ }
2083
+ const releaseCleanupLock = await acquireWorktreeCleanupLock(cleanupPlan);
2084
+ try {
2085
+ const ownership = await verifyWorktreeCleanupOwnership(cleanupPlan);
2086
+ if (!ownership.ok) {
2087
+ logWorktreeCleanupPreserve(sessionId, ownership.reason);
2088
+ }
2089
+ const result = await coordinator.runExclusiveMany(
2090
+ [sessionId],
2091
+ mutateSession
2092
+ );
2093
+ if (ownership.ok && result.kind === "removed") {
2094
+ try {
2095
+ assertCanMutate?.();
2096
+ await executeWorktreeCleanup(cleanupPlan);
2097
+ } catch (error) {
2098
+ logWorktreeCleanupPreserve(
2099
+ sessionId,
2100
+ `cleanup execution failed: ${errorMessage(error)}`
2101
+ );
2102
+ }
2103
+ }
2104
+ return result;
2105
+ } finally {
2106
+ releaseCleanupLock();
2107
+ }
2108
+ }, "runWithWorktreeCleanup");
1768
2109
  const results = await Promise.all(
1769
2110
  uniqueSessionIds.map(async (sessionId) => {
1770
2111
  try {
@@ -1810,7 +2151,7 @@ async function deleteDaemonSessions(params) {
1810
2151
  try {
1811
2152
  await bridge.closeSession(sessionId);
1812
2153
  } catch (error) {
1813
- if (isSessionNotFoundError(error)) {
2154
+ if (isSessionNotFoundError(error) && error.code !== "session_closing") {
1814
2155
  return await removePersistedSession();
1815
2156
  }
1816
2157
  onError?.({
@@ -1826,7 +2167,7 @@ async function deleteDaemonSessions(params) {
1826
2167
  }
1827
2168
  return await removePersistedSession();
1828
2169
  }, "mutateSession");
1829
- return await (coordinatorLockHeld ? mutateSession() : coordinator.runExclusiveMany([sessionId], mutateSession));
2170
+ return await (coordinatorLockHeld ? mutateSession() : runWithWorktreeCleanup(sessionId, mutateSession));
1830
2171
  } catch (error) {
1831
2172
  if (error instanceof DaemonDrainingError) {
1832
2173
  throw error;
@@ -2361,12 +2702,12 @@ __name(unarchiveDaemonSessions, "unarchiveDaemonSessions");
2361
2702
 
2362
2703
  // packages/cli/src/serve/server/aone-mrs.ts
2363
2704
  init_esbuild_shims();
2364
- import { execFile } from "node:child_process";
2365
- import { promisify } from "node:util";
2366
- var execFileAsync = promisify(execFile);
2705
+ import { execFile as execFile2 } from "node:child_process";
2706
+ import { promisify as promisify2 } from "node:util";
2707
+ var execFileAsync2 = promisify2(execFile2);
2367
2708
  var a1AvailabilityVerified = false;
2368
2709
  var defaultA1Exec = /* @__PURE__ */ __name(async (args, options) => {
2369
- const { stdout } = await execFileAsync("a1", [...args], {
2710
+ const { stdout } = await execFileAsync2("a1", [...args], {
2370
2711
  ...options,
2371
2712
  encoding: "utf8",
2372
2713
  windowsHide: true
@@ -2409,7 +2750,7 @@ async function resolveAoneWorkspaceRepo(workspaceCwd, env) {
2409
2750
  if (!gitRoot) return void 0;
2410
2751
  let origin;
2411
2752
  try {
2412
- ({ stdout: origin } = await execFileAsync(
2753
+ ({ stdout: origin } = await execFileAsync2(
2413
2754
  "git",
2414
2755
  ["remote", "get-url", "origin"],
2415
2756
  {
@@ -2578,6 +2919,7 @@ export {
2578
2919
  parseSessionPageSizeQuery,
2579
2920
  runWithWorkspaceRuntimeStorage,
2580
2921
  createWorkspaceRuntimeSessionService,
2922
+ acquireWorktreeOwnershipOp,
2581
2923
  DaemonDrainingError,
2582
2924
  SessionArchiveCoordinator,
2583
2925
  deleteDaemonSessions,
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  buildPermissionSettings
5
- } from "./chunk-75UQFGFE.js";
5
+ } from "./chunk-FN4KHWCL.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-Z6DDPSGJ.js";
10
+ } from "./chunk-GNY7B3CA.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,7 +16,7 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-JOV46WGX.js";
19
+ } from "./chunk-NB3NDQQK.js";
20
20
  import {
21
21
  MCP_RESTART_SERVER_DEADLINE_MS
22
22
  } from "./chunk-OCPBI7J5.js";
@@ -47,19 +47,19 @@ import {
47
47
  WorkspaceInitPathEscapeError,
48
48
  WorkspaceInitRaceError,
49
49
  WorkspaceInitSymlinkError
50
- } from "./chunk-F47DITLZ.js";
50
+ } from "./chunk-FAWTMDX7.js";
51
51
  import {
52
52
  getPersistScopeForModelSelection,
53
53
  loadSettings
54
- } from "./chunk-RUMSY4ES.js";
54
+ } from "./chunk-Y7YHAY32.js";
55
55
  import {
56
56
  getWorkspaceTrustStatus
57
- } from "./chunk-GEV66YGE.js";
57
+ } from "./chunk-D6AGS266.js";
58
58
  import {
59
59
  ModelsConfig,
60
60
  SkillManager,
61
61
  require_yauzl
62
- } from "./chunk-TSLRORQR.js";
62
+ } from "./chunk-BDAVT6K2.js";
63
63
  import {
64
64
  Storage,
65
65
  createDebugLogger
@@ -5,15 +5,15 @@ import {
5
5
  } from "./chunk-47ECGEJC.js";
6
6
  import {
7
7
  t
8
- } from "./chunk-LD53HMPV.js";
8
+ } from "./chunk-CRZBDVP2.js";
9
9
  import {
10
10
  findProviderByCredentials,
11
11
  resolveMetadataKey
12
- } from "./chunk-TXAEXF2B.js";
12
+ } from "./chunk-PLEBBGHL.js";
13
13
  import {
14
14
  fetchGitDiff,
15
15
  isCompressionFailureStatus
16
- } from "./chunk-TSLRORQR.js";
16
+ } from "./chunk-BDAVT6K2.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-5O2XNYP6.js";
@@ -14,12 +14,17 @@ 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-nightly.20260909.2e212144d3";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
+ function formatVersionLabel(version) {
21
+ return /^\d/.test(version) ? `v${version}` : version;
22
+ }
23
+ __name(formatVersionLabel, "formatVersionLabel");
20
24
 
21
25
  export {
22
- getCliVersion
26
+ getCliVersion,
27
+ formatVersionLabel
23
28
  };
24
29
  /**
25
30
  * @license
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  resolvePath
5
- } from "./chunk-65GHQ4FX.js";
5
+ } from "./chunk-WDVV3LRM.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -0,0 +1,42 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/core/src/core/openaiContentGenerator/constants.ts
11
+ init_esbuild_shims();
12
+ var DEFAULT_TIMEOUT = 12e4;
13
+ var DISABLED_REQUEST_TIMEOUT_MS = 2147483647;
14
+ function resolveRequestTimeout(timeout) {
15
+ if (timeout === void 0 || timeout === null) {
16
+ return DEFAULT_TIMEOUT;
17
+ }
18
+ return timeout <= 0 ? DISABLED_REQUEST_TIMEOUT_MS : timeout;
19
+ }
20
+ __name(resolveRequestTimeout, "resolveRequestTimeout");
21
+ var DEFAULT_STREAM_IDLE_TIMEOUT_MS = 24e4;
22
+ var QWEN_STREAM_IDLE_TIMEOUT_MS_ENV = "QWEN_STREAM_IDLE_TIMEOUT_MS";
23
+ var MAX_STREAM_GUARD_TIMEOUT_MS = 2147483647;
24
+ var DEFAULT_STREAM_MAX_LIFETIME_MS = 9e5;
25
+ var QWEN_STREAM_MAX_LIFETIME_MS_ENV = "QWEN_STREAM_MAX_LIFETIME_MS";
26
+ var DEFAULT_MAX_RETRIES = 3;
27
+ var DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
28
+ var DEFAULT_DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
29
+ var DASHSCOPE_PROXY_BASE_URL = process.env["DASHSCOPE_PROXY_BASE_URL"];
30
+
31
+ export {
32
+ resolveRequestTimeout,
33
+ DEFAULT_STREAM_IDLE_TIMEOUT_MS,
34
+ QWEN_STREAM_IDLE_TIMEOUT_MS_ENV,
35
+ MAX_STREAM_GUARD_TIMEOUT_MS,
36
+ DEFAULT_STREAM_MAX_LIFETIME_MS,
37
+ QWEN_STREAM_MAX_LIFETIME_MS_ENV,
38
+ DEFAULT_MAX_RETRIES,
39
+ DEFAULT_OPENAI_BASE_URL,
40
+ DEFAULT_DASHSCOPE_BASE_URL,
41
+ DASHSCOPE_PROXY_BASE_URL
42
+ };
@@ -4,9 +4,6 @@ import {
4
4
  MAX_WORKSPACE_PATH_LENGTH,
5
5
  canonicalizeWorkspace
6
6
  } from "./chunk-6PLDPT2C.js";
7
- import {
8
- MAX_DAEMON_WORKSPACES
9
- } from "./chunk-5HBA2Z7V.js";
10
7
  import {
11
8
  getGlobalQwenDirLite
12
9
  } from "./chunk-IDS7MSUP.js";
@@ -38,7 +35,7 @@ import * as path from "node:path";
38
35
 
39
36
  // packages/cli/src/serve/workspace-inputs.ts
40
37
  init_esbuild_shims();
41
- var MAX_REGISTERED_WORKSPACES = MAX_DAEMON_WORKSPACES;
38
+ var MAX_REGISTERED_WORKSPACES = 25;
42
39
  var DuplicateWorkspaceInputError = class extends Error {
43
40
  static {
44
41
  __name(this, "DuplicateWorkspaceInputError");
@@ -568,7 +565,7 @@ var WorkspaceRegistrationStore = class {
568
565
  return removed;
569
566
  }
570
567
  async update(mutate) {
571
- const { atomicWriteFile } = await import("./deferred-core-runtime-DWOXIU5S.js");
568
+ const { atomicWriteFile } = await import("./deferred-core-runtime-D2RF35BL.js");
572
569
  return withInProcessLock(this.filePath, async () => {
573
570
  const lock = await acquireFileLock(this.filePath);
574
571
  let committed = false;