@qwen-code/qwen-code 0.21.12 → 0.21.13

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 (303) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +7 -5
  2. package/bundled/qc-helper/docs/features/code-review.md +13 -12
  3. package/bundled/review/SKILL.md +96 -68
  4. package/chunks/{MaxSizedBox-ZSJJ2D5S.js → MaxSizedBox-UQALOVVT.js} +41 -41
  5. package/chunks/{StandaloneSessionPicker-WHUHQXSA.js → StandaloneSessionPicker-KEGXNUG6.js} +62 -62
  6. package/chunks/{acp-startup-profiler-SVPUHLXV.js → acp-startup-profiler-NMDXYGDN.js} +2 -2
  7. package/chunks/{acpAgent-7JOAESF5.js → acpAgent-XPES32S7.js} +533 -286
  8. package/chunks/{agent-E6V3VXQR.js → agent-DPTOZFEM.js} +38 -38
  9. package/chunks/{agent-headless-OEQNFOMH.js → agent-headless-GJCQMURW.js} +38 -38
  10. package/chunks/{anthropicContentGenerator-YDT4EOKO.js → anthropicContentGenerator-G7BVXTKN.js} +6 -6
  11. package/chunks/{artifact-tool-4GCQQDZI.js → artifact-tool-GEXTOPVO.js} +2 -2
  12. package/chunks/{askUserQuestion-HZJJLR3Z.js → askUserQuestion-B33XRSB7.js} +2 -2
  13. package/chunks/{bridge-NPBV53UA.js → bridge-YNQBAA4Z.js} +42 -42
  14. package/chunks/{channel-management-service-OADNGQM3.js → channel-management-service-GWY2GAIC.js} +1 -1
  15. package/chunks/{channel-settings-store-4ODLJ4X2.js → channel-settings-store-WNWYFHG7.js} +45 -45
  16. package/chunks/{channel-worker-group-IHBIHQ45.js → channel-worker-group-7LXCMZ77.js} +4 -4
  17. package/chunks/{channel-worker-manager-GEHYJ5AE.js → channel-worker-manager-RYEME4ZZ.js} +4 -4
  18. package/chunks/{channel-worker-supervisor-ZJIIWM4I.js → channel-worker-supervisor-OEVWBHGT.js} +2 -2
  19. package/chunks/{chunk-5RUCD4ED.js → chunk-25EYDK42.js} +3 -3
  20. package/chunks/{chunk-2ZWH53I4.js → chunk-2B2BF7P7.js} +3 -3
  21. package/chunks/{chunk-OYWVIXHT.js → chunk-2M55OBEB.js} +1 -1
  22. package/chunks/{chunk-GZDWTBT3.js → chunk-3EZLLVDF.js} +2 -2
  23. package/chunks/{chunk-V6OBVAST.js → chunk-3U3VAL47.js} +1 -1
  24. package/chunks/{chunk-KWX56CHZ.js → chunk-4PKCUT7F.js} +7 -7
  25. package/chunks/{chunk-EBPLKY6U.js → chunk-4S5337WV.js} +1229 -522
  26. package/chunks/{chunk-QLTATTPS.js → chunk-5CVO7YES.js} +1 -1
  27. package/chunks/{chunk-I7BT2MME.js → chunk-5EYKMUUY.js} +1 -1
  28. package/chunks/{chunk-YIGGWOJE.js → chunk-6HY6IF3Z.js} +1 -1
  29. package/chunks/{chunk-LCX5B364.js → chunk-6ORZ2EDC.js} +3 -3
  30. package/chunks/{chunk-OWGRUU7F.js → chunk-6QFDQMQX.js} +1 -1
  31. package/chunks/{chunk-5AFGJNY6.js → chunk-6YKYPVDV.js} +4 -4
  32. package/chunks/{chunk-X5SLJOMF.js → chunk-76J3IJ3M.js} +4 -4
  33. package/chunks/{chunk-YX2RDGAL.js → chunk-7UXUJ5T3.js} +1 -1
  34. package/chunks/{chunk-3GDBZJD6.js → chunk-A267JX7H.js} +6 -6
  35. package/chunks/{chunk-DD6O3ZRD.js → chunk-A4MFR4C5.js} +1 -1
  36. package/chunks/{chunk-LUISTZXI.js → chunk-AA2BEKV3.js} +2 -2
  37. package/chunks/{chunk-4XA4QIUA.js → chunk-AFSG32D5.js} +1 -1
  38. package/chunks/{chunk-B4VN3VDH.js → chunk-AS5IN4GK.js} +5 -5
  39. package/chunks/{chunk-MELQSJOU.js → chunk-AW4TRXOC.js} +1 -1
  40. package/chunks/{chunk-EJOGLSNJ.js → chunk-AXN7UPYQ.js} +1 -1
  41. package/chunks/{chunk-CGM3E75C.js → chunk-BHILXOC3.js} +2 -2
  42. package/chunks/{chunk-7KJPO7YH.js → chunk-BKPPWD33.js} +2 -2
  43. package/chunks/{chunk-HOSVOUDK.js → chunk-BUQDLC2G.js} +3 -0
  44. package/chunks/{chunk-2IVYL3IF.js → chunk-BVJS5BSP.js} +1 -1
  45. package/chunks/{chunk-TMFWI4RC.js → chunk-BZ263IKX.js} +1 -1
  46. package/chunks/{chunk-G6MUFRNI.js → chunk-CHHABXPE.js} +1 -1
  47. package/chunks/{chunk-YILJKX2T.js → chunk-CKSJECTU.js} +4 -4
  48. package/chunks/{chunk-4AOVQPJU.js → chunk-CPHEPGAO.js} +1 -1
  49. package/chunks/{chunk-OWXFBIB6.js → chunk-CU6GJD55.js} +1 -1
  50. package/chunks/{chunk-FMIH5KMQ.js → chunk-CZBYX5MY.js} +1 -1
  51. package/chunks/{chunk-S6TCTH4Z.js → chunk-DGK6P3BQ.js} +12 -12
  52. package/chunks/{chunk-QPBFRWCP.js → chunk-DGZEMW5R.js} +3 -3
  53. package/chunks/{chunk-NW2GIPG3.js → chunk-DXIBNLBZ.js} +2 -2
  54. package/chunks/{chunk-FA5K6YI2.js → chunk-E23IPNGS.js} +25 -2
  55. package/chunks/{chunk-ULNWG62W.js → chunk-E3DYKPYZ.js} +3 -3
  56. package/chunks/{chunk-N4SVADAV.js → chunk-EL5SXY3T.js} +4 -3
  57. package/chunks/{chunk-YCHNAKC5.js → chunk-EZ5RP345.js} +11 -11
  58. package/chunks/{chunk-D7QGE3RT.js → chunk-FAAUPSY2.js} +1 -1
  59. package/chunks/{chunk-YBHUXEC6.js → chunk-FDGGZIYW.js} +1 -1
  60. package/chunks/{chunk-CIDQISGM.js → chunk-GGDBMYGZ.js} +5 -5
  61. package/chunks/{chunk-DG4IQ6JG.js → chunk-GMIEIY3Y.js} +3 -3
  62. package/chunks/{chunk-ZQUY3ZJU.js → chunk-GO7STP6N.js} +4 -4
  63. package/chunks/{chunk-3AEKDXKT.js → chunk-H4A72DE5.js} +1 -1
  64. package/chunks/{chunk-IRSLAS4M.js → chunk-HUTNYWBG.js} +2 -2
  65. package/chunks/{chunk-ZBB5EZZV.js → chunk-IA2K2HJE.js} +2 -2
  66. package/chunks/{chunk-IX4PWUDU.js → chunk-IGGGG5CX.js} +4329 -1586
  67. package/chunks/{chunk-ZMY2P4L3.js → chunk-IWPYVAO2.js} +4 -4
  68. package/chunks/{chunk-WCEI6J56.js → chunk-JNDY2MDR.js} +2 -2
  69. package/chunks/{chunk-3LDGOQXZ.js → chunk-JOOFMXGF.js} +6 -6
  70. package/chunks/{chunk-RDVNSJQU.js → chunk-JUEPY766.js} +3 -3
  71. package/chunks/{chunk-QBJYSIQ4.js → chunk-K3LPAED5.js} +53 -12
  72. package/chunks/{chunk-FRHQQC2Z.js → chunk-KBXKR5R2.js} +1 -1
  73. package/chunks/{chunk-PTSEETCO.js → chunk-KD5BOPLP.js} +12 -12
  74. package/chunks/{chunk-CPFFU46D.js → chunk-KV27IEHM.js} +1 -1
  75. package/chunks/{chunk-6P5EXEBL.js → chunk-LJQAUZMR.js} +207 -146
  76. package/chunks/{chunk-56HVDG3M.js → chunk-M732YJPW.js} +6 -6
  77. package/chunks/{chunk-LSRI3ND3.js → chunk-MA2HEDVP.js} +1 -1
  78. package/chunks/{chunk-XH3KAV2G.js → chunk-MC4TLKEI.js} +2 -2
  79. package/chunks/{chunk-YBVVOSOH.js → chunk-MIPFDQAF.js} +1 -1
  80. package/chunks/{chunk-47BGDLJG.js → chunk-MLPXSYXR.js} +31 -18
  81. package/chunks/{chunk-KRXPRVGL.js → chunk-MLXTMF7H.js} +0 -1
  82. package/chunks/{chunk-CQ6IPDQW.js → chunk-MRMJCLIY.js} +3 -3
  83. package/chunks/{chunk-62X3CM7Q.js → chunk-N5YPT6PH.js} +4 -4
  84. package/chunks/{chunk-OPVF453Q.js → chunk-NEFOOD54.js} +3 -3
  85. package/chunks/{chunk-DAV4QFD5.js → chunk-NHDR76JX.js} +44 -3
  86. package/chunks/{chunk-36XKGB7E.js → chunk-NM5V5OVW.js} +3 -3
  87. package/chunks/{chunk-QSD4UH74.js → chunk-NNHNLJ2X.js} +42 -42
  88. package/chunks/chunk-NYWWQ437.js +24 -0
  89. package/chunks/{chunk-MDNUCDKZ.js → chunk-O4D7SPJN.js} +2 -2
  90. package/chunks/{chunk-HG3UBTJ4.js → chunk-O565M6A4.js} +411 -10
  91. package/chunks/{chunk-BSR5AXZR.js → chunk-OD2WU5QY.js} +1 -1
  92. package/chunks/{chunk-DPTMKFIH.js → chunk-OMLJNPBE.js} +42 -12
  93. package/chunks/{chunk-Q4ZPYNIZ.js → chunk-OOQUVWIG.js} +4 -4
  94. package/chunks/{chunk-D2RNVVH6.js → chunk-OVZPVYZB.js} +2 -2
  95. package/chunks/{chunk-3GM5DLBI.js → chunk-OXCMMLED.js} +3 -3
  96. package/chunks/{chunk-BSSLSQEW.js → chunk-OY5RNSV4.js} +3 -3
  97. package/chunks/{chunk-PZW46OTB.js → chunk-P7MPQI75.js} +2 -2
  98. package/chunks/{chunk-6JEIRPLN.js → chunk-PP4FUZNV.js} +2 -2
  99. package/chunks/{chunk-DFVXU5YM.js → chunk-PQ36L4F5.js} +1 -1
  100. package/chunks/{chunk-VPV7WBVT.js → chunk-PT4I7NBA.js} +1 -1
  101. package/chunks/{chunk-VLHR7F4E.js → chunk-QF2NHSPB.js} +28 -28
  102. package/chunks/{chunk-NLFLYSS4.js → chunk-QFJ5JHQR.js} +1 -1
  103. package/chunks/{chunk-VIFA5VJD.js → chunk-QIH2HAEN.js} +1 -1
  104. package/chunks/{chunk-HTYND72J.js → chunk-QNQAPSN2.js} +1 -1
  105. package/chunks/{chunk-TDESMS7M.js → chunk-QRCNA3SR.js} +4 -4
  106. package/chunks/{chunk-IH4Z54RJ.js → chunk-QV5YN5YD.js} +5 -5
  107. package/chunks/{chunk-WI6GIM2M.js → chunk-RIAABG2K.js} +2 -2
  108. package/chunks/{chunk-UI5UGEF4.js → chunk-RLKC46YT.js} +16 -10
  109. package/chunks/{chunk-KEC5FHLM.js → chunk-ROIYNTHJ.js} +3 -3
  110. package/chunks/{chunk-4KM2SYK5.js → chunk-RVOJ2FBP.js} +8 -8
  111. package/chunks/{chunk-63FNZTWG.js → chunk-RWDNJBWN.js} +2 -2
  112. package/chunks/{chunk-FQDCO3CJ.js → chunk-S5DWMTHO.js} +5 -0
  113. package/chunks/{chunk-TTRH3RTQ.js → chunk-SG7ZP5PG.js} +4 -4
  114. package/chunks/{chunk-TXP5NGG3.js → chunk-SXCOEJO4.js} +1 -1
  115. package/chunks/{chunk-K34GJQOZ.js → chunk-TIGA2IVL.js} +3 -3
  116. package/chunks/chunk-TS6625XH.js +488 -0
  117. package/chunks/{chunk-WM3LUQLO.js → chunk-TUGSVUJB.js} +6 -6
  118. package/chunks/{chunk-XAFIL4BD.js → chunk-U3VNBPUO.js} +5 -5
  119. package/chunks/{chunk-WDVDVWJ3.js → chunk-UKMR3CKV.js} +6 -6
  120. package/chunks/{chunk-DEDESZDL.js → chunk-UPDOZBWO.js} +1 -1
  121. package/chunks/{chunk-MUNA4QDC.js → chunk-UZPM4XHR.js} +4 -4
  122. package/chunks/{chunk-6SPD4Z7F.js → chunk-V26NVGAU.js} +1 -1
  123. package/chunks/{chunk-XDRXOSAD.js → chunk-V57QC6WW.js} +2 -2
  124. package/chunks/{chunk-NX4A23LY.js → chunk-WFSTRPRO.js} +3 -3
  125. package/chunks/{chunk-H7TMVHKE.js → chunk-WGHHA7ZH.js} +1 -1
  126. package/chunks/{chunk-JRIVMPD2.js → chunk-WSH6GRKG.js} +4 -4
  127. package/chunks/{chunk-OR64CU46.js → chunk-X26JYGTD.js} +1 -1
  128. package/chunks/{chunk-RQJA2YYO.js → chunk-XHRY7BXD.js} +4 -4
  129. package/chunks/{chunk-MAKIANMX.js → chunk-XIT3GURH.js} +3 -3
  130. package/chunks/{chunk-KLOMACIR.js → chunk-XLLKYULU.js} +2 -2
  131. package/chunks/{chunk-PVXEJB66.js → chunk-XUJNK7Y6.js} +1 -1
  132. package/chunks/{chunk-AKBFSOC5.js → chunk-Y3YCSWG5.js} +2 -2
  133. package/chunks/{chunk-6ZKSO6K7.js → chunk-YEYY7TEP.js} +7 -7
  134. package/chunks/{chunk-TB4YFWXG.js → chunk-YZHRN3CF.js} +2 -2
  135. package/chunks/{chunk-TQDFSQQF.js → chunk-YZOSNW4R.js} +1 -1
  136. package/chunks/{chunk-GXTMEATA.js → chunk-ZYBBISBY.js} +7 -7
  137. package/chunks/{chunk-ROIJYS5K.js → chunk-ZYYTZUI2.js} +3 -3
  138. package/chunks/{chunk-CZ4OWGQQ.js → chunk-ZZO74WKW.js} +43 -5
  139. package/chunks/{computer-use-F4URV4TU.js → computer-use-77C5FHMW.js} +38 -38
  140. package/chunks/{config-utils-Z3OW3IQG.js → config-utils-IVHRSXWI.js} +2 -2
  141. package/chunks/{contextCommand-IGSS2U5J.js → contextCommand-PJ77GBWL.js} +40 -40
  142. package/chunks/{core-runtime-H5CZDN3A.js → core-runtime-7VMIKUTG.js} +38 -38
  143. package/chunks/{create-sub-session-PA7MFTHK.js → create-sub-session-2L5MQRN4.js} +38 -38
  144. package/chunks/{create-sub-session-XT6DLYOE.js → create-sub-session-KRQULJE6.js} +2 -2
  145. package/chunks/{cron-create-2JZ2TWTF.js → cron-create-H7UEPDSN.js} +4 -4
  146. package/chunks/{cron-delete-CTPD2P26.js → cron-delete-6SZK7YFM.js} +4 -4
  147. package/chunks/{cron-list-V44KHAF6.js → cron-list-H25JIHEZ.js} +4 -4
  148. package/chunks/{daemon-GED37WOX.js → daemon-2KTG7ZBN.js} +80 -8
  149. package/chunks/{daemon-git-worktree-guard-LZDCNJGV.js → daemon-git-worktree-guard-DXYIMWFT.js} +38 -38
  150. package/chunks/{daemon-status-provider-QYM57Z44.js → daemon-status-provider-ZDOYJCU6.js} +46 -46
  151. package/chunks/{daemon-trust-policy-TSRVEYZR.js → daemon-trust-policy-E67OYUK2.js} +44 -44
  152. package/chunks/{daemon-trust-policy-monitor-2K2YETMT.js → daemon-trust-policy-monitor-RYYGCQ3J.js} +44 -44
  153. package/chunks/{deferred-core-runtime-FKJ3OYE7.js → deferred-core-runtime-3SGXFXEQ.js} +38 -38
  154. package/chunks/discovery-ORA5J7YP.js +27 -0
  155. package/chunks/{display-image-M2ELAVN4.js → display-image-ON3EYFRD.js} +4 -4
  156. package/chunks/{earlyInputCapture-WJBSJQUF.js → earlyInputCapture-KJMLFVQV.js} +39 -39
  157. package/chunks/{edit-X73LA4YO.js → edit-I4LQFAEC.js} +38 -38
  158. package/chunks/{enter-worktree-CLRQTIVN.js → enter-worktree-YNPOJSRH.js} +38 -38
  159. package/chunks/{enterPlanMode-6BDYUQ5T.js → enterPlanMode-XCPK62ER.js} +38 -38
  160. package/chunks/{environment-WOAJXJDJ.js → environment-S7CTIHMX.js} +40 -40
  161. package/chunks/{errors-7OY5MXYY.js → errors-7HB2AIDS.js} +40 -40
  162. package/chunks/{exit-worktree-TFFJXCRT.js → exit-worktree-AIIY7SR6.js} +38 -38
  163. package/chunks/{exitPlanMode-WDURQMIU.js → exitPlanMode-R4JY7V2O.js} +38 -38
  164. package/chunks/{fast-path-QQLGC37M.js → fast-path-NDJV3ZFJ.js} +2 -2
  165. package/chunks/{gemini-VHE62IJL.js → gemini-RSUFP5OE.js} +86 -86
  166. package/chunks/{geminiContentGenerator-VSHIEGAQ.js → geminiContentGenerator-SQ5XBPZ7.js} +6 -6
  167. package/chunks/{glob-VMEEDDLO.js → glob-J4RUJAHX.js} +38 -38
  168. package/chunks/{goal-tools-M4UDAZXP.js → goal-tools-VHTNVOKK.js} +56 -12
  169. package/chunks/{grep-F4UAR7KX.js → grep-VJWPLFOT.js} +38 -38
  170. package/chunks/{handleAutoUpdate-GN7Z6QAC.js → handleAutoUpdate-POCX2MNB.js} +42 -42
  171. package/chunks/{i18n-ETW24DHW.js → i18n-RM5YOICI.js} +39 -39
  172. package/chunks/{image-gen-YPK2AZT4.js → image-gen-EXECB5XM.js} +10 -10
  173. package/chunks/{initializer-UA6KQ7MS.js → initializer-Z2AFGBNR.js} +45 -45
  174. package/chunks/{installationInfo-P7OTIR4P.js → installationInfo-4I5FXNMH.js} +39 -39
  175. package/chunks/{keychain-token-storage-NKKCUHI2.js → keychain-token-storage-3XFJ5ZB2.js} +2 -2
  176. package/chunks/{list-GRAMIQOT.js → list-ZMBFIGZA.js} +47 -47
  177. package/chunks/{list-agents-O6WSY4CT.js → list-agents-OSVDFI6S.js} +2 -2
  178. package/chunks/{loadedSettingsAdapter-5O2TDS3I.js → loadedSettingsAdapter-T6TV4YJ7.js} +44 -44
  179. package/chunks/{loggingContentGenerator-J2J2AANS.js → loggingContentGenerator-WF4ZOJEZ.js} +63 -39
  180. package/chunks/{loop-wakeup-GVQRMUKS.js → loop-wakeup-WQS6JYAG.js} +5 -5
  181. package/chunks/{ls-6W2D7TKU.js → ls-D3HUFHDP.js} +4 -4
  182. package/chunks/{lsp-NJ4KFBI2.js → lsp-3QDDJTCS.js} +2 -2
  183. package/chunks/{managed-npm-update-WMV5ITKU.js → managed-npm-update-E7IW6N7V.js} +39 -39
  184. package/chunks/{mcp-XLP33CAI.js → mcp-6UNYX4HG.js} +44 -44
  185. package/chunks/{monitor-2MM23VDV.js → monitor-EE2UYMGE.js} +38 -38
  186. package/chunks/{nonInteractiveCli-KTA5K6FS.js → nonInteractiveCli-WAY237O4.js} +79 -79
  187. package/chunks/{notebook-edit-QD4TRKLY.js → notebook-edit-NTDY4QDU.js} +38 -38
  188. package/chunks/{openaiContentGenerator-KLHSPVN2.js → openaiContentGenerator-YNFVJMRJ.js} +23 -23
  189. package/chunks/{pidfile-RQGZBNXT.js → pidfile-4XSFLYBZ.js} +39 -39
  190. package/chunks/{processUtils-HZZDA2VV.js → processUtils-WDA2MJFD.js} +2 -2
  191. package/chunks/proper-lockfile-3LHWIM44.js +8 -0
  192. package/chunks/{qwenContentGenerator-T75M2Z3B.js → qwenContentGenerator-434M7QKY.js} +43 -43
  193. package/chunks/{qwenOAuth2-5QZU444W.js → qwenOAuth2-GMYZOO6A.js} +9 -9
  194. package/chunks/{read-file-LOVUSBJC.js → read-file-TAFBKMNI.js} +11 -11
  195. package/chunks/{read-mcp-resource-GWCP23WG.js → read-mcp-resource-XD54ZQMC.js} +2 -2
  196. package/chunks/{record-artifact-IYQDEYMV.js → record-artifact-SEYFJEJF.js} +3 -3
  197. package/chunks/{resumeHistoryUtils-LVKSSQII.js → resumeHistoryUtils-EVG3WYK2.js} +45 -45
  198. package/chunks/{ripGrep-ZJSHKB6H.js → ripGrep-WOEK2PXS.js} +38 -38
  199. package/chunks/{run-qwen-serve-GZW7B4WK.js → run-qwen-serve-3QSGRXAN.js} +411 -209
  200. package/chunks/{runtime-MYRXEO2E.js → runtime-5MLLZ7DC.js} +47 -47
  201. package/chunks/{scheduler-DPTPI6FW.js → scheduler-RPBJ63CH.js} +40 -40
  202. package/chunks/{sdk-exporters-http-NHBYB5FZ.js → sdk-exporters-http-XUVP63H6.js} +2 -2
  203. package/chunks/{sdk-impl-SK4P5WON.js → sdk-impl-YXUEN2Z2.js} +2 -2
  204. package/chunks/{send-message-O7FO63UK.js → send-message-VZENRWRH.js} +6 -6
  205. package/chunks/{serve-XCG4XCDA.js → serve-HS3XLPXU.js} +44 -44
  206. package/chunks/{server-AWQHKXLG.js → server-TC4A7AAZ.js} +3833 -1618
  207. package/chunks/{session-P5FKNCNR.js → session-UBOFXVMN.js} +80 -80
  208. package/chunks/{settings-CSYVIP2R.js → settings-D5644OM5.js} +43 -43
  209. package/chunks/{shell-EGTSUO2P.js → shell-3PZULQQV.js} +38 -38
  210. package/chunks/{skill-IFUD72GF.js → skill-PEVVXQ3L.js} +16 -16
  211. package/chunks/{skill-settings-YOE7LBHE.js → skill-settings-J65JKKES.js} +43 -43
  212. package/chunks/{spawnChannel-PQSZIOLY.js → spawnChannel-IYGXRHSQ.js} +40 -40
  213. package/chunks/{standalone-update-RB2EGUSF.js → standalone-update-IFM53PE7.js} +40 -40
  214. package/chunks/{startInteractiveUI-KMYUJ2MU.js → startInteractiveUI-3AVH7L6H.js} +417 -168
  215. package/chunks/{syntheticOutput-DVHJMUGV.js → syntheticOutput-7GWFIDXT.js} +3 -3
  216. package/chunks/{task-create-4NC7PDI4.js → task-create-FCBDX7UH.js} +11 -11
  217. package/chunks/{task-list-LBSRMOC7.js → task-list-YIYIUFUA.js} +6 -6
  218. package/chunks/{task-stop-YFNATTIM.js → task-stop-X37KYTKB.js} +2 -2
  219. package/chunks/{task-update-BPLM52GD.js → task-update-MYPFVOVM.js} +11 -11
  220. package/chunks/{team-create-B6A6MJBT.js → team-create-ZAIA7KAV.js} +38 -38
  221. package/chunks/{team-delete-MKYMYBFM.js → team-delete-6UMU4XLS.js} +6 -6
  222. package/chunks/{team-plan-approval-5WO3CXXU.js → team-plan-approval-UNIUS7OD.js} +38 -38
  223. package/chunks/{terminal-image-renderer-BTRE2GEU.js → terminal-image-renderer-G343P2RV.js} +40 -40
  224. package/chunks/{theme-manager-XL2N5SBY.js → theme-manager-Z3RIT7DB.js} +39 -39
  225. package/chunks/{todoWrite-K5K7NRE5.js → todoWrite-U2R4NVF4.js} +4 -4
  226. package/chunks/{tool-search-QNBLXUGR.js → tool-search-5R2OE4C7.js} +15 -15
  227. package/chunks/{total-session-admission-N4E5SFBO.js → total-session-admission-4KBHMQQ2.js} +42 -42
  228. package/chunks/{trustedFolders-MQS46LIU.js → trustedFolders-LK6T4XC7.js} +39 -39
  229. package/chunks/{update-relaunch-536KRL33.js → update-relaunch-UBKROIC6.js} +5 -5
  230. package/chunks/{updateCheck-QJI2SYWF.js → updateCheck-W4Y2GFSD.js} +42 -42
  231. package/chunks/{useAutoAcceptIndicator-7QASHD46.js → useAutoAcceptIndicator-C7BEICBF.js} +47 -47
  232. package/chunks/{validateNonInterActiveAuth-ZNRGWBLV.js → validateNonInterActiveAuth-LTEI2TB6.js} +76 -76
  233. package/chunks/{version-DBEQAFRW.js → version-G5A5DGVS.js} +1 -1
  234. package/chunks/{web-fetch-MBIVXKPE.js → web-fetch-RTEQTR5Z.js} +15 -15
  235. package/chunks/{web-search-4LBIN6VF.js → web-search-5OXHEZPV.js} +9 -9
  236. package/chunks/{workflow-LNMA55HY.js → workflow-ISQJHPG2.js} +39 -39
  237. package/chunks/{workspace-providers-status-PDDMI6ST.js → workspace-providers-status-2ZPZPUPZ.js} +47 -47
  238. package/chunks/{workspace-registration-store-BGRKKIYR.js → workspace-registration-store-CYNY6IP6.js} +2 -2
  239. package/chunks/{workspace-registry-L4NCJ34K.js → workspace-registry-34GTUUHB.js} +44 -43
  240. package/chunks/{workspace-service-LOXYKYTR.js → workspace-service-XCDQLE2Y.js} +50 -50
  241. package/chunks/{workspace-skills-status-IJ5FOQI6.js → workspace-skills-status-RS4O7AIJ.js} +45 -45
  242. package/chunks/{workspace-trust-reconciler-H36TCR2S.js → workspace-trust-reconciler-AYGXC7A3.js} +53 -52
  243. package/chunks/{write-file-JJAY7JSP.js → write-file-EWXKVVXF.js} +38 -38
  244. package/chunks/{zoom-image-4MVVVM7E.js → zoom-image-4BFYJ3HG.js} +11 -11
  245. package/cli.js +13 -13
  246. package/package.json +3 -3
  247. package/web-shell/assets/{arc-B-89zHN4.js → arc-CgOpDKvm.js} +1 -1
  248. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BkcOncHk.js → architectureDiagram-3BPJPVTR-0Ag_m34F.js} +1 -1
  249. package/web-shell/assets/{blockDiagram-GPEHLZMM-DQ4yboaF.js → blockDiagram-GPEHLZMM-IwTwFau0.js} +1 -1
  250. package/web-shell/assets/{c4Diagram-AAUBKEIU-C_8ZjPDI.js → c4Diagram-AAUBKEIU-DLa5GUv8.js} +1 -1
  251. package/web-shell/assets/channel-BrGVBa2L.js +1 -0
  252. package/web-shell/assets/{chunk-2J33WTMH-naKVe1Bm.js → chunk-2J33WTMH-DcYP-WFG.js} +1 -1
  253. package/web-shell/assets/{chunk-4BX2VUAB-DdoViKT2.js → chunk-4BX2VUAB-C8MVPMiQ.js} +1 -1
  254. package/web-shell/assets/{chunk-55IACEB6-DUDQZEwU.js → chunk-55IACEB6-BUi4Yfv3.js} +1 -1
  255. package/web-shell/assets/{chunk-727SXJPM-BqpDTR5s.js → chunk-727SXJPM-Cy3Su2YY.js} +1 -1
  256. package/web-shell/assets/{chunk-AQP2D5EJ-CdmEknkT.js → chunk-AQP2D5EJ-Dp8Teqv6.js} +1 -1
  257. package/web-shell/assets/{chunk-FMBD7UC4-CH7fFTLB.js → chunk-FMBD7UC4-BDTDM-4j.js} +1 -1
  258. package/web-shell/assets/{chunk-ND2GUHAM-ObgSuFKF.js → chunk-ND2GUHAM-7HfDt0r2.js} +1 -1
  259. package/web-shell/assets/{chunk-QZHKN3VN-D9fKdv_s.js → chunk-QZHKN3VN-BIBU0uCF.js} +1 -1
  260. package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +1 -0
  261. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +1 -0
  262. package/web-shell/assets/{cose-bilkent-S5V4N54A-CvzATMx9.js → cose-bilkent-S5V4N54A-DRLdcg9p.js} +1 -1
  263. package/web-shell/assets/{dagre-BM42HDAG-M_xU21QW.js → dagre-BM42HDAG-DCCgDwqW.js} +1 -1
  264. package/web-shell/assets/{diagram-2AECGRRQ-CNrl9sW1.js → diagram-2AECGRRQ-CsBTBmk3.js} +1 -1
  265. package/web-shell/assets/{diagram-5GNKFQAL-CUweVT6T.js → diagram-5GNKFQAL-C9qjH8Lt.js} +1 -1
  266. package/web-shell/assets/{diagram-KO2AKTUF-D3n6Lxjo.js → diagram-KO2AKTUF-Brjs_lj2.js} +1 -1
  267. package/web-shell/assets/{diagram-LMA3HP47-0SeFPK4t.js → diagram-LMA3HP47-DtiWCl_F.js} +1 -1
  268. package/web-shell/assets/{diagram-OG6HWLK6-DAgyEwge.js → diagram-OG6HWLK6-DmfKLkBT.js} +1 -1
  269. package/web-shell/assets/{erDiagram-TEJ5UH35-CzxBBDIK.js → erDiagram-TEJ5UH35-Bve_4deH.js} +1 -1
  270. package/web-shell/assets/{flowDiagram-I6XJVG4X-B0uj0jyo.js → flowDiagram-I6XJVG4X-C2_kXCcV.js} +1 -1
  271. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DFzcj5km.js → ganttDiagram-6RSMTGT7-BSBIjiTF.js} +1 -1
  272. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DylJ_Fc9.js → gitGraphDiagram-PVQCEYII-CyebwI55.js} +1 -1
  273. package/web-shell/assets/index-CIDsgxTe.js +1792 -0
  274. package/web-shell/assets/{index-BIGQygTL.css → index-DiQnWi_E.css} +1 -1
  275. package/web-shell/assets/{index-BKSAnXU9.js → index-d0yfnV1M.js} +1 -1
  276. package/web-shell/assets/{infoDiagram-5YYISTIA-BYMcJVMI.js → infoDiagram-5YYISTIA-CSDGnWxU.js} +1 -1
  277. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-t1quI1S3.js → ishikawaDiagram-YF4QCWOH-BK4jU13p.js} +1 -1
  278. package/web-shell/assets/{journeyDiagram-JHISSGLW-YM_QVUJm.js → journeyDiagram-JHISSGLW-D_W6j-oF.js} +1 -1
  279. package/web-shell/assets/{kanban-definition-UN3LZRKU-jw8OddK1.js → kanban-definition-UN3LZRKU-C7xf-SdC.js} +1 -1
  280. package/web-shell/assets/{linear-Dlr3RVuP.js → linear-DQmzxpxd.js} +1 -1
  281. package/web-shell/assets/{mermaid.core-CqGKzNzd.js → mermaid.core-9P7AGOLG.js} +5 -5
  282. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BqureoOS.js → mindmap-definition-RKZ34NQL-DgcgMyPk.js} +1 -1
  283. package/web-shell/assets/{pieDiagram-4H26LBE5-Da20HkK1.js → pieDiagram-4H26LBE5-3wWGb9eG.js} +1 -1
  284. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BsNlMvJy.js → quadrantDiagram-W4KKPZXB-BeCXnQw9.js} +1 -1
  285. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DzVCQCse.js → requirementDiagram-4Y6WPE33-Bi1UOHDz.js} +1 -1
  286. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BMo16voT.js → sankeyDiagram-5OEKKPKP-lrLUjjbb.js} +1 -1
  287. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Bgi-pdHk.js → sequenceDiagram-3UESZ5HK-BFuqKz6Q.js} +1 -1
  288. package/web-shell/assets/{stateDiagram-AJRCARHV-xaPQXwGk.js → stateDiagram-AJRCARHV-8DemQLhu.js} +1 -1
  289. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +1 -0
  290. package/web-shell/assets/{timeline-definition-PNZ67QCA-C_9RuvKG.js → timeline-definition-PNZ67QCA-uzEuVQXg.js} +1 -1
  291. package/web-shell/assets/{vennDiagram-CIIHVFJN-Bgu6vdla.js → vennDiagram-CIIHVFJN-BQTeZ_-o.js} +1 -1
  292. package/web-shell/assets/{wardley-L42UT6IY-CFTZ8IrX.js → wardley-L42UT6IY-B6yM5Im7.js} +1 -1
  293. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BASW9Vmt.js → wardleyDiagram-YWT4CUSO-ChM8bmgn.js} +1 -1
  294. package/web-shell/assets/{xychartDiagram-2RQKCTM6--Nh-CD3F.js → xychartDiagram-2RQKCTM6-oNG6HyB1.js} +1 -1
  295. package/web-shell/index.html +2 -2
  296. package/chunks/discovery-XLHITE74.js +0 -220
  297. package/web-shell/assets/channel-Du2WFns8.js +0 -1
  298. package/web-shell/assets/classDiagram-4FO5ZUOK-Zw0HafH6.js +0 -1
  299. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Zw0HafH6.js +0 -1
  300. package/web-shell/assets/index-J7OMTqAN.js +0 -1789
  301. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D5RqimXD.js +0 -1
  302. package/chunks/{chunk-SYHXR6WM.js → chunk-4W5U2TUT.js} +3 -3
  303. /package/chunks/{chunk-OK47XBYH.js → chunk-A4QRWUDE.js} +0 -0
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-OCPBI7J5.js";
20
20
  import {
21
21
  defaultSpawnChannelFactory
22
- } from "./chunk-DAV4QFD5.js";
22
+ } from "./chunk-NHDR76JX.js";
23
23
  import {
24
24
  BridgeChannelClosedError,
25
25
  BridgeTimeoutError,
@@ -29,7 +29,7 @@ import {
29
29
  SessionRestoreTimeoutError,
30
30
  createIdleWorkspaceExtensionsStatus,
31
31
  createIdleWorkspaceHooksStatus
32
- } from "./chunk-HTYND72J.js";
32
+ } from "./chunk-QNQAPSN2.js";
33
33
  import {
34
34
  ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
35
35
  ACTIVE_WORK_CLOSE_TIMEOUT_MS,
@@ -62,8 +62,9 @@ import {
62
62
  TODO_STOP_GUARD_QUEUE_RELEASE_METHOD,
63
63
  WORKTREE_MCP_DEFER_META_KEY,
64
64
  clampActiveWorkIntervalMs,
65
- isValidTrustedModelPrompt
66
- } from "./chunk-FQDCO3CJ.js";
65
+ isValidTrustedModelPrompt,
66
+ sessionCloseDrainBudgetMs
67
+ } from "./chunk-S5DWMTHO.js";
67
68
  import {
68
69
  BranchWhilePromptActiveError,
69
70
  BridgeChannelQuarantinedError,
@@ -120,16 +121,16 @@ import {
120
121
  metadataBudgetBytes,
121
122
  normalizeSnapshotPayload,
122
123
  stableSessionArtifactId
123
- } from "./chunk-EBPLKY6U.js";
124
+ } from "./chunk-4S5337WV.js";
124
125
  import {
125
126
  DAEMON_TRACEPARENT_META_KEY,
126
127
  DAEMON_TRACESTATE_META_KEY
127
- } from "./chunk-K34GJQOZ.js";
128
+ } from "./chunk-TIGA2IVL.js";
128
129
  import {
129
130
  INVOCATION_CONTEXT_META_KEY,
130
131
  PRIVATE_ACP_CAPABILITY_ENV,
131
132
  PRIVATE_PARENT_CAPABILITY_META_KEY
132
- } from "./chunk-4KM2SYK5.js";
133
+ } from "./chunk-RVOJ2FBP.js";
133
134
  import {
134
135
  init_esbuild_shims
135
136
  } from "./chunk-5O2XNYP6.js";
@@ -604,7 +605,7 @@ var TurnBoundaryCompactionEngine = class {
604
605
  const slot = this.slots[existingIdx];
605
606
  slot.chunks.push(text);
606
607
  if (event.id !== void 0) slot.lastEventId = event.id;
607
- slot.lastMeta = meta ?? slot.lastMeta;
608
+ slot.lastMeta = mergeTranscriptUpdateMeta(slot.lastMeta, meta);
608
609
  slot.lastEnvelopeMeta = event._meta ?? slot.lastEnvelopeMeta;
609
610
  slot.lastTurn = captureTurnFields(event, slot.lastTurn);
610
611
  slot.lastSessionId = captureSessionId(event) ?? slot.lastSessionId;
@@ -628,7 +629,7 @@ var TurnBoundaryCompactionEngine = class {
628
629
  if (lastSlot && lastSlot.kind === kind && lastSlot.parentToolCallId == null && stringArraysEqual(lastSlot.sourceRecordIds, sourceRecordIds)) {
629
630
  lastSlot.chunks.push(text);
630
631
  if (event.id !== void 0) lastSlot.lastEventId = event.id;
631
- lastSlot.lastMeta = meta ?? lastSlot.lastMeta;
632
+ lastSlot.lastMeta = mergeTranscriptUpdateMeta(lastSlot.lastMeta, meta);
632
633
  lastSlot.lastEnvelopeMeta = event._meta ?? lastSlot.lastEnvelopeMeta;
633
634
  lastSlot.lastTurn = captureTurnFields(event, lastSlot.lastTurn);
634
635
  lastSlot.lastSessionId = captureSessionId(event) ?? lastSlot.lastSessionId;
@@ -1053,13 +1054,26 @@ function mergeTranscriptUpdateMeta(existing, incoming) {
1053
1054
  ...extractSourceRecordIdsFromMeta(incomingRecord) ?? []
1054
1055
  ])
1055
1056
  ];
1057
+ const existingTranscript = extractTranscriptMeta(existingRecord);
1058
+ const incomingTranscript = extractTranscriptMeta(incomingRecord);
1056
1059
  return {
1057
1060
  ...existingRecord ?? {},
1058
1061
  ...incomingRecord ?? {},
1059
- ...sourceRecordIds.length > 0 ? { qwenTranscript: { sourceRecordIds } } : {}
1062
+ ...existingTranscript || incomingTranscript || sourceRecordIds.length > 0 ? {
1063
+ qwenTranscript: {
1064
+ ...existingTranscript ?? {},
1065
+ ...incomingTranscript ?? {},
1066
+ ...sourceRecordIds.length > 0 ? { sourceRecordIds } : {}
1067
+ }
1068
+ } : {}
1060
1069
  };
1061
1070
  }
1062
1071
  __name(mergeTranscriptUpdateMeta, "mergeTranscriptUpdateMeta");
1072
+ function extractTranscriptMeta(meta) {
1073
+ const transcript = meta?.["qwenTranscript"];
1074
+ return typeof transcript === "object" && transcript !== null ? transcript : void 0;
1075
+ }
1076
+ __name(extractTranscriptMeta, "extractTranscriptMeta");
1063
1077
 
1064
1078
  // packages/acp-bridge/src/journalGrowthPolicy.ts
1065
1079
  init_esbuild_shims();
@@ -6678,13 +6692,20 @@ function broadcastPromptCancelledOnce(entry, sessionId, promptId, originatorClie
6678
6692
  __name(broadcastPromptCancelledOnce, "broadcastPromptCancelledOnce");
6679
6693
  function broadcastTurnComplete(entry, sessionId, promptResult, promptId, originatorClientId, mutateTurnState) {
6680
6694
  try {
6695
+ const meta = promptResult["_meta"] && typeof promptResult["_meta"] === "object" ? promptResult["_meta"] : void 0;
6696
+ const rawBranchPoint = meta?.["qwen.branchPoint"] && typeof meta["qwen.branchPoint"] === "object" ? meta["qwen.branchPoint"] : void 0;
6697
+ const branchPoint = promptResult.stopReason === "end_turn" && typeof rawBranchPoint?.["assistantRecordUuid"] === "string" && CHAT_RECORD_UUID_RE.test(rawBranchPoint["assistantRecordUuid"]) && typeof rawBranchPoint["checkpointUuid"] === "string" && CHAT_RECORD_UUID_RE.test(rawBranchPoint["checkpointUuid"]) ? {
6698
+ assistantRecordUuid: rawBranchPoint["assistantRecordUuid"],
6699
+ checkpointUuid: rawBranchPoint["checkpointUuid"]
6700
+ } : void 0;
6681
6701
  const published = entry.events.publish({
6682
6702
  type: "turn_complete",
6683
6703
  ...promptId ? { promptId } : {},
6684
6704
  data: {
6685
6705
  sessionId,
6686
6706
  stopReason: promptResult.stopReason ?? "end_turn",
6687
- ...promptId ? { promptId } : {}
6707
+ ...promptId ? { promptId } : {},
6708
+ ...branchPoint ? { branchPoint } : {}
6688
6709
  },
6689
6710
  ...originatorClientId ? { originatorClientId } : {}
6690
6711
  });
@@ -6949,6 +6970,7 @@ var MAX_SHELL_OUTPUT_FOR_HISTORY = 1e4;
6949
6970
  var MAX_MID_TURN_QUEUE_DEPTH = 20;
6950
6971
  var DEFAULT_MAX_SESSIONS = 32;
6951
6972
  var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
6973
+ var CHAT_RECORD_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
6952
6974
  var MAX_EVENT_RING_SIZE = 1e6;
6953
6975
  var DEFAULT_PERMISSION_TIMEOUT_MS = 5 * 60 * 1e3;
6954
6976
  var DEFAULT_MAX_PENDING_PER_SESSION = 64;
@@ -7158,12 +7180,15 @@ function createAcpSessionBridge(opts) {
7158
7180
  }
7159
7181
  __name(isClosingOrAuthorizingClose, "isClosingOrAuthorizingClose");
7160
7182
  async function maybeCloseIdleSession(entry, reason) {
7161
- if (!entryIsAutoCloseCandidate(entry)) return;
7162
- if (entry.spawnOwnerWantedKill && entry.attachCount === 0) {
7183
+ if (byId.get(entry.sessionId) === entry && !isClosingOrAuthorizingClose(entry) && entry.spawnOwnerWantedKill && entry.attachCount === 0) {
7184
+ writeStderrLine(
7185
+ `qwen serve: completing deferred kill of session ${JSON.stringify(entry.sessionId)} (${reason})`
7186
+ );
7163
7187
  await bridgeApi.killSession(entry.sessionId).catch(() => {
7164
7188
  });
7165
7189
  return;
7166
7190
  }
7191
+ if (!entryIsAutoCloseCandidate(entry)) return;
7167
7192
  if (entry.clientIds.size > 0) return;
7168
7193
  await closeIfChildUnheld(entry, {
7169
7194
  trigger: reason,
@@ -7200,7 +7225,10 @@ function createAcpSessionBridge(opts) {
7200
7225
  const response = await withTimeout(
7201
7226
  entry.connection.extMethod(SERVE_CONTROL_EXT_METHODS.sessionClose, {
7202
7227
  sessionId: entry.sessionId,
7203
- [ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM]: true
7228
+ [ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM]: true,
7229
+ drainTimeoutMs: sessionCloseDrainBudgetMs(
7230
+ ACTIVE_WORK_CLOSE_TIMEOUT_MS
7231
+ )
7204
7232
  }),
7205
7233
  ACTIVE_WORK_CLOSE_TIMEOUT_MS,
7206
7234
  SERVE_CONTROL_EXT_METHODS.sessionClose
@@ -8730,7 +8758,9 @@ function createAcpSessionBridge(opts) {
8730
8758
  SERVE_CONTROL_EXT_METHODS.sessionClose,
8731
8759
  {
8732
8760
  sessionId: entry.sessionId,
8733
- drainTimeoutMs: Math.max(1, Math.floor(initTimeoutMs * 0.8)),
8761
+ drainTimeoutMs: sessionCloseDrainBudgetMs(
8762
+ opts2?.timeoutMs ?? initTimeoutMs
8763
+ ),
8734
8764
  ...opts2?.requireFlush === true ? { requireFlush: true } : {}
8735
8765
  }
8736
8766
  );
@@ -9531,7 +9561,7 @@ function createAcpSessionBridge(opts) {
9531
9561
  SERVE_CONTROL_EXT_METHODS.sessionClose,
9532
9562
  {
9533
9563
  sessionId: req.sessionId,
9534
- drainTimeoutMs: Math.max(1, Math.floor(initTimeoutMs * 0.8))
9564
+ drainTimeoutMs: sessionCloseDrainBudgetMs(initTimeoutMs)
9535
9565
  }
9536
9566
  ),
9537
9567
  initTimeoutMs,
@@ -11044,53 +11074,68 @@ function createAcpSessionBridge(opts) {
11044
11074
  if (shuttingDown) throw new Error("AcpSessionBridge is shutting down");
11045
11075
  const entry = byId.get(sessionId);
11046
11076
  if (!entry) throw new SessionNotFoundError(sessionId);
11077
+ if (isClosingOrAuthorizingClose(entry)) {
11078
+ throw new SessionNotFoundError(sessionId, "The session is closing");
11079
+ }
11047
11080
  const source = parseSessionSource(req.sourceType, req.sourceId);
11048
11081
  if ("error" in source) {
11049
11082
  throw new InvalidSessionMetadataError("sourceType", source.error);
11050
11083
  }
11051
11084
  const isSideTask = source.sourceType === "side_task";
11052
- let originatorClientId;
11085
+ const restoreBranch = isSideTask || req.atRecordId === void 0;
11053
11086
  if (context?.clientId !== void 0) {
11054
- originatorClientId = resolveTrustedClientId(entry, context.clientId);
11087
+ resolveTrustedClientId(entry, context.clientId);
11055
11088
  }
11056
11089
  const concurrentSideTask = isSideTask && entry.promptActive;
11090
+ if (!isSideTask && (entry.pendingPromptCount > 0 || entry.promptActive)) {
11091
+ throw new BranchWhilePromptActiveError(sessionId);
11092
+ }
11057
11093
  const branchResult = (concurrentSideTask ? Promise.resolve() : entry.promptQueue).then(async () => {
11058
- if (entry.promptActive && !isSideTask) {
11059
- throw new BranchWhilePromptActiveError(sessionId);
11094
+ if (isClosingOrAuthorizingClose(entry) || byId.get(sessionId) !== entry) {
11095
+ throw new SessionNotFoundError(sessionId, "The session is closing");
11060
11096
  }
11061
11097
  assertFreshSessionsAvailable();
11062
- if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
11063
- throw new SessionLimitExceededError(maxSessions);
11098
+ let admission;
11099
+ if (restoreBranch) {
11100
+ if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
11101
+ throw new SessionLimitExceededError(maxSessions);
11102
+ }
11103
+ admission = reserveFreshSession({
11104
+ operation: "branch",
11105
+ workspaceCwd: boundWorkspace,
11106
+ sourceSessionId: sessionId
11107
+ });
11064
11108
  }
11065
- const admission = reserveFreshSession({
11066
- operation: "branch",
11067
- workspaceCwd: boundWorkspace,
11068
- sourceSessionId: sessionId
11069
- });
11070
11109
  let admissionReleased = false;
11071
11110
  const releaseAdmissionOnce = /* @__PURE__ */ __name(() => {
11072
- if (admissionReleased) return;
11111
+ if (admissionReleased || !admission) return;
11073
11112
  admissionReleased = true;
11074
11113
  releaseFreshSessionReservation(admission);
11075
11114
  }, "releaseAdmissionOnce");
11076
11115
  try {
11077
- assertLivePromptEntry(sessionId, entry);
11078
- const ci = channelInfoForEntry(entry);
11079
- const result = await withTimeout(
11080
- Promise.race([
11081
- ci.connection.extMethod(
11082
- isSideTask ? SERVE_CONTROL_EXT_METHODS.sessionSideTask : SERVE_CONTROL_EXT_METHODS.sessionBranch,
11083
- {
11084
- sessionId,
11085
- cwd: boundWorkspace,
11086
- name: req.name
11087
- }
11088
- ),
11089
- getTransportClosedReject(entry)
11090
- ]),
11091
- initTimeoutMs,
11092
- isSideTask ? "createSideTaskSession" : "branchSession"
11116
+ const mutation = entry.connection.extMethod(
11117
+ isSideTask ? SERVE_CONTROL_EXT_METHODS.sessionSideTask : SERVE_CONTROL_EXT_METHODS.sessionBranch,
11118
+ {
11119
+ sessionId,
11120
+ cwd: boundWorkspace,
11121
+ name: req.name,
11122
+ ...req.atRecordId !== void 0 ? { atRecordId: req.atRecordId } : {}
11123
+ }
11093
11124
  );
11125
+ let result;
11126
+ try {
11127
+ result = await Promise.race([
11128
+ mutation,
11129
+ getTransportClosedReject(entry)
11130
+ ]);
11131
+ } catch (err) {
11132
+ const data = err?.data;
11133
+ if (!isSideTask && data && typeof data === "object" && data.errorKind === "session_busy") {
11134
+ const msg = err?.message ?? "Branch failed";
11135
+ throw new SessionBusyError(sessionId, msg);
11136
+ }
11137
+ throw err;
11138
+ }
11094
11139
  if (!result || typeof result.newSessionId !== "string") {
11095
11140
  throw new Error(
11096
11141
  `branchSession: agent returned invalid response: ${JSON.stringify(result)}`
@@ -11098,6 +11143,17 @@ function createAcpSessionBridge(opts) {
11098
11143
  }
11099
11144
  const rawBranchName = result.displayName ?? result.title;
11100
11145
  const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
11146
+ if (!restoreBranch) {
11147
+ return {
11148
+ sessionId: result.newSessionId,
11149
+ displayName: branchDisplayName,
11150
+ forkedFrom: {
11151
+ sessionId,
11152
+ displayName: entry.displayName ?? sessionId.slice(0, 8)
11153
+ }
11154
+ };
11155
+ }
11156
+ const ci = await ensureChannel();
11101
11157
  let restored;
11102
11158
  try {
11103
11159
  const hideInheritedHistory = req.replayInheritedHistory === false;
@@ -11120,7 +11176,7 @@ function createAcpSessionBridge(opts) {
11120
11176
  releaseAdmissionOnce();
11121
11177
  } catch (restoreErr) {
11122
11178
  writeStderrLine(
11123
- `qwen serve: branchSession load failed for ${result.newSessionId}, attempting cleanup...`
11179
+ `qwen serve: branchSession load failed for ${result.newSessionId}; closing partial live state while preserving the committed session...`
11124
11180
  );
11125
11181
  try {
11126
11182
  if (!ci.isDying) {
@@ -11130,7 +11186,8 @@ function createAcpSessionBridge(opts) {
11130
11186
  SERVE_CONTROL_EXT_METHODS.sessionClose,
11131
11187
  {
11132
11188
  sessionId: result.newSessionId,
11133
- cwd: boundWorkspace
11189
+ cwd: boundWorkspace,
11190
+ drainTimeoutMs: sessionCloseDrainBudgetMs(initTimeoutMs)
11134
11191
  }
11135
11192
  ),
11136
11193
  channelUnavailableReject(
@@ -11144,7 +11201,7 @@ function createAcpSessionBridge(opts) {
11144
11201
  }
11145
11202
  } catch (cleanupErr) {
11146
11203
  writeStderrLine(
11147
- `qwen serve: branchSession cleanup of ${result.newSessionId} failed: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`
11204
+ `qwen serve: branchSession live-state close for ${result.newSessionId} failed: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`
11148
11205
  );
11149
11206
  }
11150
11207
  throw restoreErr;
@@ -11174,19 +11231,6 @@ function createAcpSessionBridge(opts) {
11174
11231
  );
11175
11232
  }
11176
11233
  }
11177
- if (!isSideTask) {
11178
- const eventData = {
11179
- sourceSessionId: sessionId,
11180
- newSessionId: result.newSessionId,
11181
- displayName: branchDisplayName
11182
- };
11183
- const branchEnvelope = {
11184
- type: "session_branched",
11185
- data: eventData,
11186
- ...originatorClientId ? { originatorClientId } : {}
11187
- };
11188
- newEntry?.events.publish(branchEnvelope);
11189
- }
11190
11234
  return {
11191
11235
  ...restored,
11192
11236
  displayName: branchDisplayName,
@@ -11219,7 +11263,8 @@ function createAcpSessionBridge(opts) {
11219
11263
  },
11220
11264
  context
11221
11265
  );
11222
- const { forkedFrom: _forkedFrom, ...sideTask } = result;
11266
+ const restoredResult = result;
11267
+ const { forkedFrom: _forkedFrom, ...sideTask } = restoredResult;
11223
11268
  return {
11224
11269
  ...sideTask,
11225
11270
  parentSessionId: sessionId
@@ -12634,10 +12679,19 @@ function createAcpSessionBridge(opts) {
12634
12679
  entry,
12635
12680
  context?.clientId
12636
12681
  );
12637
- let response;
12638
- try {
12639
- response = await Promise.race([
12640
- withTimeout(
12682
+ if (entry.pendingPromptCount > 0 || entry.promptActive) {
12683
+ throw new SessionBusyError(
12684
+ sessionId,
12685
+ "Cannot rewind while a prompt is running"
12686
+ );
12687
+ }
12688
+ const rewindResult = entry.promptQueue.then(async () => {
12689
+ if (entry.closing) {
12690
+ throw new SessionNotFoundError(sessionId, "The session is closing");
12691
+ }
12692
+ let response;
12693
+ try {
12694
+ response = await Promise.race([
12641
12695
  entry.connection.extMethod(
12642
12696
  SERVE_CONTROL_EXT_METHODS.sessionRewind,
12643
12697
  {
@@ -12646,92 +12700,95 @@ function createAcpSessionBridge(opts) {
12646
12700
  rewindFiles: req.rewindFiles !== false
12647
12701
  }
12648
12702
  ),
12649
- initTimeoutMs,
12650
- SERVE_CONTROL_EXT_METHODS.sessionRewind
12651
- ),
12652
- getTransportClosedReject(entry)
12653
- ]);
12654
- } catch (err) {
12655
- const data = err?.data;
12656
- if (data && typeof data === "object" && "errorKind" in data) {
12657
- const kind = data.errorKind;
12658
- const msg = err?.message ?? "Rewind failed";
12659
- if (kind === "session_busy") {
12660
- throw new SessionBusyError(sessionId, msg);
12661
- }
12662
- if (kind === "invalid_rewind_target") {
12663
- throw new InvalidRewindTargetError(sessionId, msg);
12703
+ getTransportClosedReject(entry)
12704
+ ]);
12705
+ } catch (err) {
12706
+ const data = err?.data;
12707
+ if (data && typeof data === "object" && "errorKind" in data) {
12708
+ const kind = data.errorKind;
12709
+ const msg = err?.message ?? "Rewind failed";
12710
+ if (kind === "session_busy") {
12711
+ throw new SessionBusyError(sessionId, msg);
12712
+ }
12713
+ if (kind === "invalid_rewind_target") {
12714
+ throw new InvalidRewindTargetError(sessionId, msg);
12715
+ }
12664
12716
  }
12717
+ throw err;
12665
12718
  }
12666
- throw err;
12667
- }
12668
- const targetTurnIndex = response["targetTurnIndex"] ?? 0;
12669
- const filesChanged = response["filesChanged"] ?? [];
12670
- const filesFailed = response["filesFailed"] ?? [];
12671
- const artifactSnapshot = restoredArtifactSnapshotFromState(
12672
- response
12673
- );
12674
- const artifactSnapshotUnavailable = artifactSnapshotUnavailableReason(
12675
- response
12676
- );
12677
- const beforeArtifacts = (await entry.artifacts.list()).artifacts;
12678
- const shouldRestoreArtifactSnapshot = artifactSnapshot !== void 0 && artifactSnapshotUnavailable === void 0;
12679
- const artifactRestoreWarnings = artifactSnapshotUnavailable !== void 0 ? [
12680
- `artifact snapshot rebuild unavailable during rewind: ${artifactSnapshotUnavailable}`
12681
- ] : shouldRestoreArtifactSnapshot ? await entry.artifacts.restore(artifactSnapshot, {
12682
- preserveLiveEphemeral: true
12683
- }) : [];
12684
- const artifactRestoreFailed = artifactRestoreWarnings.some(
12685
- isArtifactRestoreFailureWarning
12686
- );
12687
- const shouldRecordArtifactSnapshot = shouldRestoreArtifactSnapshot && !artifactRestoreFailed;
12688
- const artifactSnapshotWarnings = shouldRecordArtifactSnapshot ? await entry.artifacts.recordSnapshot() : [];
12689
- const artifactWarnings = [
12690
- ...artifactRestoreWarnings,
12691
- ...artifactSnapshotWarnings
12692
- ];
12693
- for (const warning of artifactRestoreWarnings) {
12694
- writeStderrLine(
12695
- `[artifacts] session=${entry.sessionId} action=rewind_restore_warning warning=${JSON.stringify(
12696
- warning
12697
- )}`
12719
+ const targetTurnIndex = response["targetTurnIndex"] ?? 0;
12720
+ const filesChanged = response["filesChanged"] ?? [];
12721
+ const filesFailed = response["filesFailed"] ?? [];
12722
+ const artifactSnapshot = restoredArtifactSnapshotFromState(
12723
+ response
12698
12724
  );
12699
- }
12700
- for (const warning of artifactSnapshotWarnings) {
12701
- writeStderrLine(
12702
- `[artifacts] session=${entry.sessionId} action=rewind_snapshot_warning warning=${JSON.stringify(
12703
- warning
12704
- )}`
12725
+ const artifactSnapshotUnavailable = artifactSnapshotUnavailableReason(
12726
+ response
12705
12727
  );
12706
- }
12707
- const afterArtifacts = (await entry.artifacts.list()).artifacts;
12708
- publishArtifactChanges(
12709
- entry,
12710
- artifactReseedChanges(beforeArtifacts, afterArtifacts),
12711
- originatorClientId
12728
+ const beforeArtifacts = (await entry.artifacts.list()).artifacts;
12729
+ const shouldRestoreArtifactSnapshot = artifactSnapshot !== void 0 && artifactSnapshotUnavailable === void 0;
12730
+ const artifactRestoreWarnings = artifactSnapshotUnavailable !== void 0 ? [
12731
+ `artifact snapshot rebuild unavailable during rewind: ${artifactSnapshotUnavailable}`
12732
+ ] : shouldRestoreArtifactSnapshot ? await entry.artifacts.restore(artifactSnapshot, {
12733
+ preserveLiveEphemeral: true
12734
+ }) : [];
12735
+ const artifactRestoreFailed = artifactRestoreWarnings.some(
12736
+ isArtifactRestoreFailureWarning
12737
+ );
12738
+ const shouldRecordArtifactSnapshot = shouldRestoreArtifactSnapshot && !artifactRestoreFailed;
12739
+ const artifactSnapshotWarnings = shouldRecordArtifactSnapshot ? await entry.artifacts.recordSnapshot() : [];
12740
+ const artifactWarnings = [
12741
+ ...artifactRestoreWarnings,
12742
+ ...artifactSnapshotWarnings
12743
+ ];
12744
+ for (const warning of artifactRestoreWarnings) {
12745
+ writeStderrLine(
12746
+ `[artifacts] session=${entry.sessionId} action=rewind_restore_warning warning=${JSON.stringify(
12747
+ warning
12748
+ )}`
12749
+ );
12750
+ }
12751
+ for (const warning of artifactSnapshotWarnings) {
12752
+ writeStderrLine(
12753
+ `[artifacts] session=${entry.sessionId} action=rewind_snapshot_warning warning=${JSON.stringify(
12754
+ warning
12755
+ )}`
12756
+ );
12757
+ }
12758
+ const afterArtifacts = (await entry.artifacts.list()).artifacts;
12759
+ publishArtifactChanges(
12760
+ entry,
12761
+ artifactReseedChanges(beforeArtifacts, afterArtifacts),
12762
+ originatorClientId
12763
+ );
12764
+ try {
12765
+ entry.events.publish({
12766
+ type: "session_rewound",
12767
+ data: {
12768
+ sessionId,
12769
+ promptId: req.promptId,
12770
+ targetTurnIndex,
12771
+ filesChanged,
12772
+ filesFailed,
12773
+ ...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
12774
+ },
12775
+ ...originatorClientId ? { originatorClientId } : {}
12776
+ });
12777
+ } catch {
12778
+ }
12779
+ return {
12780
+ rewound: filesFailed.length === 0,
12781
+ targetTurnIndex,
12782
+ filesChanged,
12783
+ filesFailed,
12784
+ ...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
12785
+ };
12786
+ });
12787
+ entry.promptQueue = rewindResult.then(
12788
+ () => void 0,
12789
+ () => void 0
12712
12790
  );
12713
- try {
12714
- entry.events.publish({
12715
- type: "session_rewound",
12716
- data: {
12717
- sessionId,
12718
- promptId: req.promptId,
12719
- targetTurnIndex,
12720
- filesChanged,
12721
- filesFailed,
12722
- ...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
12723
- },
12724
- ...originatorClientId ? { originatorClientId } : {}
12725
- });
12726
- } catch {
12727
- }
12728
- return {
12729
- rewound: filesFailed.length === 0,
12730
- targetTurnIndex,
12731
- filesChanged,
12732
- filesFailed,
12733
- ...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
12734
- };
12791
+ return rewindResult;
12735
12792
  },
12736
12793
  async manageMcpServer(serverName, action, originatorClientId) {
12737
12794
  const info = await ensureChannel();
@@ -13059,6 +13116,10 @@ function createAcpSessionBridge(opts) {
13059
13116
  timeoutMs: initTimeoutMs
13060
13117
  });
13061
13118
  } catch (error) {
13119
+ if (isDefinitiveAcpRequestError(error)) {
13120
+ entry.closing = false;
13121
+ return false;
13122
+ }
13062
13123
  if (ci) {
13063
13124
  await killChannelWithLog(
13064
13125
  ci,
@@ -16,27 +16,27 @@ import {
16
16
  MODIFIER_SHIFT_BIT,
17
17
  MODIFIER_SUPER_BIT,
18
18
  clipboardHasImage
19
- } from "./chunk-NW2GIPG3.js";
19
+ } from "./chunk-DXIBNLBZ.js";
20
20
  import {
21
21
  require_jsx_runtime
22
22
  } from "./chunk-SV5PQVQE.js";
23
- import {
24
- noteInteraction
25
- } from "./chunk-KW7NOTN6.js";
26
23
  import {
27
24
  use_stdin_default,
28
25
  use_stdout_default
29
26
  } from "./chunk-2IIJTXYF.js";
27
+ import {
28
+ noteInteraction
29
+ } from "./chunk-KW7NOTN6.js";
30
30
  import {
31
31
  require_react
32
32
  } from "./chunk-5QWWOFGG.js";
33
33
  import {
34
34
  KittySequenceOverflowEvent,
35
35
  logKittySequenceOverflow
36
- } from "./chunk-4KM2SYK5.js";
36
+ } from "./chunk-RVOJ2FBP.js";
37
37
  import {
38
38
  createDebugLogger
39
- } from "./chunk-HOSVOUDK.js";
39
+ } from "./chunk-BUQDLC2G.js";
40
40
  import {
41
41
  init_esbuild_shims
42
42
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  SchemaValidator
5
- } from "./chunk-YIGGWOJE.js";
5
+ } from "./chunk-6HY6IF3Z.js";
6
6
  import {
7
7
  DEFAULT_QWEN_MODEL
8
8
  } from "./chunk-F6WFNA7U.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-MS7GNABG.js";
13
13
  import {
14
14
  isWorkspaceTrusted
15
- } from "./chunk-ZMY2P4L3.js";
15
+ } from "./chunk-IWPYVAO2.js";
16
16
  import {
17
17
  require_main
18
18
  } from "./chunk-5M6IDOMF.js";
@@ -20,7 +20,7 @@ import {
20
20
  QWEN_DIR,
21
21
  Storage,
22
22
  getErrorMessage
23
- } from "./chunk-HOSVOUDK.js";
23
+ } from "./chunk-BUQDLC2G.js";
24
24
  import {
25
25
  init_esbuild_shims
26
26
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-HOSVOUDK.js";
5
+ } from "./chunk-BUQDLC2G.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";