@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
@@ -13,17 +13,21 @@ import {
13
13
  matchMcpServerByRef,
14
14
  parseExtensionRef,
15
15
  parseMcpServerRef
16
- } from "./chunk-X5SLJOMF.js";
16
+ } from "./chunk-76J3IJ3M.js";
17
17
  import {
18
18
  getAvailableCommands,
19
19
  handleSlashCommand,
20
20
  insertAfterFunctionResponses,
21
21
  isSlashCommand,
22
22
  normalizePartList
23
- } from "./chunk-QSD4UH74.js";
23
+ } from "./chunk-NNHNLJ2X.js";
24
+ import {
25
+ collectContextData,
26
+ formatContextUsageText
27
+ } from "./chunk-N5YPT6PH.js";
24
28
  import {
25
29
  recomputeMcpGating
26
- } from "./chunk-CIDQISGM.js";
30
+ } from "./chunk-GGDBMYGZ.js";
27
31
  import {
28
32
  SessionIdConflictError,
29
33
  appEvents,
@@ -31,44 +35,40 @@ import {
31
35
  cleanupReviewWorktreeLeases,
32
36
  loadCliConfig,
33
37
  normalizeDisabledToolList
34
- } from "./chunk-IX4PWUDU.js";
38
+ } from "./chunk-IGGGG5CX.js";
35
39
  import {
36
40
  getCommandSubcommandNames
37
- } from "./chunk-4XA4QIUA.js";
41
+ } from "./chunk-AFSG32D5.js";
38
42
  import {
39
43
  getEffectiveSupportedModes
40
- } from "./chunk-MDNUCDKZ.js";
44
+ } from "./chunk-O4D7SPJN.js";
45
+ import "./chunk-4WGODMVR.js";
41
46
  import "./chunk-3SH53ANB.js";
42
47
  import "./chunk-NYX53SV4.js";
43
- import "./chunk-NW2GIPG3.js";
44
- import {
45
- collectContextData,
46
- formatContextUsageText
47
- } from "./chunk-62X3CM7Q.js";
48
- import "./chunk-4WGODMVR.js";
48
+ import "./chunk-DXIBNLBZ.js";
49
49
  import {
50
50
  isGoalStatusKind
51
51
  } from "./chunk-EKTCKZV5.js";
52
- import "./chunk-OYWVIXHT.js";
52
+ import "./chunk-2M55OBEB.js";
53
53
  import {
54
54
  startNonInteractiveOpenAILogHousekeeping
55
- } from "./chunk-5AFGJNY6.js";
55
+ } from "./chunk-6YKYPVDV.js";
56
56
  import "./chunk-KW7NOTN6.js";
57
- import "./chunk-ZQUY3ZJU.js";
58
- import "./chunk-RDVNSJQU.js";
59
- import "./chunk-OPVF453Q.js";
60
- import "./chunk-YAF2MQZ6.js";
61
- import {
62
- computeCpuPercent
63
- } from "./chunk-LBOVL47Y.js";
64
- import "./chunk-TDESMS7M.js";
65
- import "./chunk-6H67XLET.js";
66
57
  import {
67
58
  beginAcpBootstrapConfigProfiling,
68
59
  buildAndFreezeAcpStartupProfile,
69
60
  endAcpBootstrapConfigProfiling,
70
61
  markAcpStartup
71
- } from "./chunk-FMIH5KMQ.js";
62
+ } from "./chunk-CZBYX5MY.js";
63
+ import "./chunk-GO7STP6N.js";
64
+ import "./chunk-JUEPY766.js";
65
+ import "./chunk-NEFOOD54.js";
66
+ import "./chunk-YAF2MQZ6.js";
67
+ import {
68
+ computeCpuPercent
69
+ } from "./chunk-LBOVL47Y.js";
70
+ import "./chunk-QRCNA3SR.js";
71
+ import "./chunk-6H67XLET.js";
72
72
  import {
73
73
  GENERATION_MAX_PROMPT_BYTES,
74
74
  GENERATION_TIMEOUT_MS,
@@ -91,7 +91,7 @@ import {
91
91
  shouldSuppressRememberErrorDetails,
92
92
  workspaceMemoryFailureCode,
93
93
  workspaceMemoryFailureDiagnostics
94
- } from "./chunk-CZ4OWGQQ.js";
94
+ } from "./chunk-ZZO74WKW.js";
95
95
  import {
96
96
  BaseEmitter,
97
97
  HistoryReplayer,
@@ -100,10 +100,10 @@ import {
100
100
  createTranscriptMessageUpdate,
101
101
  createTranscriptUsageUpdate,
102
102
  hasFullSessionContext
103
- } from "./chunk-UI5UGEF4.js";
104
- import "./chunk-TMFWI4RC.js";
103
+ } from "./chunk-RLKC46YT.js";
104
+ import "./chunk-BZ263IKX.js";
105
105
  import "./chunk-4NFY2S7N.js";
106
- import "./chunk-V6OBVAST.js";
106
+ import "./chunk-3U3VAL47.js";
107
107
  import "./chunk-2MIN6GRR.js";
108
108
  import "./chunk-QHTIBUWB.js";
109
109
  import "./chunk-3Z43GZUQ.js";
@@ -121,18 +121,25 @@ import {
121
121
  buildPermissionSettings,
122
122
  normalizePermissionRules,
123
123
  readPermissionRuleSet
124
- } from "./chunk-YX2RDGAL.js";
124
+ } from "./chunk-7UXUJ5T3.js";
125
125
  import {
126
126
  MAX_AUDIO_BYTES,
127
127
  sanitizeVoiceErrorMessage,
128
128
  transcribeVoiceAudio
129
- } from "./chunk-LCX5B364.js";
129
+ } from "./chunk-6ORZ2EDC.js";
130
130
  import {
131
131
  readVoiceModel
132
- } from "./chunk-VIFA5VJD.js";
133
- import "./chunk-H7TMVHKE.js";
132
+ } from "./chunk-QIH2HAEN.js";
133
+ import "./chunk-WGHHA7ZH.js";
134
134
  import "./chunk-NTTBXH7U.js";
135
- import "./chunk-RQJA2YYO.js";
135
+ import "./chunk-XHRY7BXD.js";
136
+ import {
137
+ SESSION_SOURCE_META_KEY,
138
+ parseSessionSource
139
+ } from "./chunk-LJQAUZMR.js";
140
+ import "./chunk-7U5G6JXI.js";
141
+ import "./chunk-WCCLLK7X.js";
142
+ import "./chunk-OCPBI7J5.js";
136
143
  import {
137
144
  ACP_ROUTE_ID_PREFIX,
138
145
  buildAcpModelOptions,
@@ -141,32 +148,26 @@ import {
141
148
  parseAcpModelOption,
142
149
  resolveAcpModelOption,
143
150
  sanitizeProviderBaseUrl
144
- } from "./chunk-ROIJYS5K.js";
151
+ } from "./chunk-ZYYTZUI2.js";
145
152
  import {
146
153
  mapSkillConfigToStatus
147
154
  } from "./chunk-BGXZBI5B.js";
148
155
  import {
149
156
  resolveSkillSettings
150
157
  } from "./chunk-Z4X5MTRT.js";
151
- import "./chunk-WM3LUQLO.js";
152
- import "./chunk-IH4Z54RJ.js";
158
+ import "./chunk-TUGSVUJB.js";
159
+ import "./chunk-QV5YN5YD.js";
153
160
  import "./chunk-57OAHC2Y.js";
154
- import "./chunk-BSR5AXZR.js";
161
+ import "./chunk-OD2WU5QY.js";
155
162
  import "./chunk-45NQKMYB.js";
156
- import "./chunk-OK47XBYH.js";
163
+ import "./chunk-A4QRWUDE.js";
164
+ import "./chunk-V6WHFGST.js";
157
165
  import {
158
166
  createLoadedSettingsAdapter
159
- } from "./chunk-2IVYL3IF.js";
160
- import {
161
- SESSION_SOURCE_META_KEY,
162
- parseSessionSource
163
- } from "./chunk-6P5EXEBL.js";
164
- import "./chunk-7U5G6JXI.js";
165
- import "./chunk-WCCLLK7X.js";
166
- import "./chunk-OCPBI7J5.js";
167
+ } from "./chunk-BVJS5BSP.js";
167
168
  import {
168
169
  ndJsonStream
169
- } from "./chunk-DAV4QFD5.js";
170
+ } from "./chunk-NHDR76JX.js";
170
171
  import {
171
172
  ACP_PREFLIGHT_KINDS,
172
173
  IDLE_HOOK_EVENTS,
@@ -174,9 +175,9 @@ import {
174
175
  SERVE_STATUS_EXT_METHODS,
175
176
  STATUS_SCHEMA_VERSION,
176
177
  mapDomainErrorToErrorKind
177
- } from "./chunk-HTYND72J.js";
178
+ } from "./chunk-QNQAPSN2.js";
178
179
  import "./chunk-ZLCT4C5A.js";
179
- import "./chunk-V6WHFGST.js";
180
+ import "./chunk-BKPPWD33.js";
180
181
  import {
181
182
  ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
182
183
  ACTIVE_WORK_HEARTBEAT_META_KEY,
@@ -206,7 +207,7 @@ import {
206
207
  WORKTREE_MCP_DEFER_META_KEY,
207
208
  clampActiveWorkIntervalMs,
208
209
  isValidTrustedModelPrompt
209
- } from "./chunk-FQDCO3CJ.js";
210
+ } from "./chunk-S5DWMTHO.js";
210
211
  import {
211
212
  NOT_CURRENTLY_GENERATING_CANCEL_MESSAGE,
212
213
  isNotCurrentlyGeneratingCancelError
@@ -227,7 +228,6 @@ import {
227
228
  SHELL_EXECUTING_TOOL_NAMES,
228
229
  isValidExternalToolGuardDenialReason
229
230
  } from "./chunk-3VUENPWF.js";
230
- import "./chunk-3AEKDXKT.js";
231
231
  import {
232
232
  ACP_EVENT_LOOP_STALL_RESTART_MS,
233
233
  CHANNEL_PROMPT_META_KEY
@@ -237,10 +237,11 @@ import {
237
237
  PROTOCOL_VERSION,
238
238
  RequestError
239
239
  } from "./chunk-IW6RQPQB.js";
240
+ import "./chunk-H4A72DE5.js";
240
241
  import {
241
242
  assembleMcpServers,
242
243
  loadMcpApprovals
243
- } from "./chunk-3LDGOQXZ.js";
244
+ } from "./chunk-JOOFMXGF.js";
244
245
  import {
245
246
  getOutputLanguageFilePath,
246
247
  getPersistScopeForModelSelection,
@@ -249,9 +250,9 @@ import {
249
250
  resolveOutputLanguageOrPreserveAuto,
250
251
  updateOutputLanguageFile,
251
252
  writeOutputLanguageAndRegisterPath
252
- } from "./chunk-3GDBZJD6.js";
253
+ } from "./chunk-A267JX7H.js";
253
254
  import "./chunk-RKUWKYED.js";
254
- import "./chunk-FA5K6YI2.js";
255
+ import "./chunk-E23IPNGS.js";
255
256
  import "./chunk-GOXKNSDZ.js";
256
257
  import {
257
258
  getSystemDefaultsPath,
@@ -260,7 +261,7 @@ import {
260
261
  import {
261
262
  getCurrentLanguage,
262
263
  setLanguageAsync
263
- } from "./chunk-IRSLAS4M.js";
264
+ } from "./chunk-HUTNYWBG.js";
264
265
  import {
265
266
  SUPPORTED_LANGUAGES
266
267
  } from "./chunk-5EJZE3FP.js";
@@ -268,18 +269,17 @@ import {
268
269
  findEnvFiles,
269
270
  preResolveHomeEnvOverrides,
270
271
  reloadEnvironment
271
- } from "./chunk-XH3KAV2G.js";
272
+ } from "./chunk-MC4TLKEI.js";
272
273
  import {
273
274
  ENV_ACP_REPEATED_TOOL_FAILURE_GUARD
274
275
  } from "./chunk-MS7GNABG.js";
275
- import "./chunk-7KJPO7YH.js";
276
- import "./chunk-OWXFBIB6.js";
276
+ import "./chunk-CU6GJD55.js";
277
277
  import "./chunk-WZMH7II3.js";
278
278
  import {
279
279
  isFolderTrustEnabled,
280
280
  isWorkspaceTrusted,
281
281
  loadTrustedFolders
282
- } from "./chunk-ZMY2P4L3.js";
282
+ } from "./chunk-IWPYVAO2.js";
283
283
  import "./chunk-NPQ5ZKRP.js";
284
284
  import "./chunk-MR3PXB6E.js";
285
285
  import "./chunk-XFSFZCM5.js";
@@ -287,6 +287,7 @@ import {
287
287
  ALL_PROVIDERS,
288
288
  APPROVAL_MODE_INFO,
289
289
  BTW_MAX_INPUT_LENGTH,
290
+ BranchPointInvalidError,
290
291
  ExtensionManager,
291
292
  GLOBAL_DUPLICATE_THRESHOLD,
292
293
  IMAGE_CAPABILITY,
@@ -410,25 +411,25 @@ import {
410
411
  updateSetting,
411
412
  validatePlanModeShellApproval,
412
413
  validatePlanModeShellContext
413
- } from "./chunk-EBPLKY6U.js";
414
+ } from "./chunk-4S5337WV.js";
414
415
  import "./chunk-GOFAQQZA.js";
415
416
  import "./chunk-5M6IDOMF.js";
416
417
  import "./chunk-TWPJO254.js";
417
418
  import {
418
419
  external_exports
419
420
  } from "./chunk-CQ35AJ4Z.js";
420
- import "./chunk-QPBFRWCP.js";
421
- import "./chunk-JRIVMPD2.js";
422
- import "./chunk-YILJKX2T.js";
423
- import "./chunk-D2RNVVH6.js";
421
+ import "./chunk-DGZEMW5R.js";
422
+ import "./chunk-WSH6GRKG.js";
423
+ import "./chunk-CKSJECTU.js";
424
+ import "./chunk-OVZPVYZB.js";
424
425
  import {
425
426
  parsePositiveIntegerEnv
426
427
  } from "./chunk-6PVPNMXU.js";
427
- import "./chunk-I7BT2MME.js";
428
+ import "./chunk-5EYKMUUY.js";
428
429
  import "./chunk-IRH27ZC2.js";
429
430
  import "./chunk-QHWCP53L.js";
430
- import "./chunk-AKBFSOC5.js";
431
- import "./chunk-DEDESZDL.js";
431
+ import "./chunk-Y3YCSWG5.js";
432
+ import "./chunk-UPDOZBWO.js";
432
433
  import {
433
434
  promptIdContext,
434
435
  todoWorkChainContext
@@ -436,14 +437,17 @@ import {
436
437
  import "./chunk-T26EAKDL.js";
437
438
  import "./chunk-ZPJWUGCS.js";
438
439
  import "./chunk-CPBF7KYF.js";
439
- import "./chunk-5RUCD4ED.js";
440
- import "./chunk-KRXPRVGL.js";
440
+ import {
441
+ APPROVAL_MODES
442
+ } from "./chunk-RWDNJBWN.js";
443
+ import "./chunk-25EYDK42.js";
441
444
  import {
442
445
  HookEventName,
443
446
  createHookOutput
444
- } from "./chunk-YBVVOSOH.js";
445
- import "./chunk-CPFFU46D.js";
446
- import "./chunk-ULNWG62W.js";
447
+ } from "./chunk-MIPFDQAF.js";
448
+ import "./chunk-MLXTMF7H.js";
449
+ import "./chunk-KV27IEHM.js";
450
+ import "./chunk-E3DYKPYZ.js";
447
451
  import {
448
452
  GoalPersistenceUnavailableError,
449
453
  emptyGoalSnapshot,
@@ -451,11 +455,8 @@ import {
451
455
  parseGoalSnapshotV2,
452
456
  parseGoalStateCause,
453
457
  wrapUserPromptSubmitContext
454
- } from "./chunk-DPTMKFIH.js";
455
- import {
456
- APPROVAL_MODES
457
- } from "./chunk-63FNZTWG.js";
458
- import "./chunk-3GM5DLBI.js";
458
+ } from "./chunk-OMLJNPBE.js";
459
+ import "./chunk-OXCMMLED.js";
459
460
  import {
460
461
  AgentOutputMessageCapture,
461
462
  addAgentInputMessageAttributes,
@@ -466,32 +467,32 @@ import {
466
467
  registerAcpEventLoopLagGauge,
467
468
  startEventLoopLagMonitor,
468
469
  withDaemonSpan
469
- } from "./chunk-K34GJQOZ.js";
470
+ } from "./chunk-TIGA2IVL.js";
470
471
  import "./chunk-SAH4BD2J.js";
471
- import "./chunk-KLOMACIR.js";
472
+ import "./chunk-XLLKYULU.js";
472
473
  import {
473
474
  runWithRuntimeContentGenerator
474
- } from "./chunk-VPV7WBVT.js";
475
+ } from "./chunk-PT4I7NBA.js";
475
476
  import "./chunk-S6LOFUVP.js";
476
477
  import "./chunk-2J3OJGTL.js";
477
478
  import {
478
479
  FORK_SUBAGENT_TYPE,
479
480
  getStartupContextLength,
480
481
  isSystemReminderContent
481
- } from "./chunk-TTRH3RTQ.js";
482
+ } from "./chunk-SG7ZP5PG.js";
482
483
  import "./chunk-K623ENWT.js";
483
484
  import "./chunk-AQ37AY7B.js";
484
- import "./chunk-FRHQQC2Z.js";
485
+ import "./chunk-KBXKR5R2.js";
485
486
  import {
486
487
  clearCachedCredentialFile,
487
488
  qwenOAuth2Events
488
- } from "./chunk-DG4IQ6JG.js";
489
+ } from "./chunk-GMIEIY3Y.js";
489
490
  import "./chunk-NAVJD2PQ.js";
490
- import "./chunk-KEC5FHLM.js";
491
- import "./chunk-2ZWH53I4.js";
491
+ import "./chunk-ROIYNTHJ.js";
492
+ import "./chunk-2B2BF7P7.js";
492
493
  import "./chunk-P3QQPMQA.js";
493
- import "./chunk-TB4YFWXG.js";
494
- import "./chunk-D7QGE3RT.js";
494
+ import "./chunk-YZHRN3CF.js";
495
+ import "./chunk-FAAUPSY2.js";
495
496
  import {
496
497
  REASONING_EFFORT_TIERS,
497
498
  applyReasoningEffort
@@ -502,7 +503,7 @@ import {
502
503
  getToolCallPreparations
503
504
  } from "./chunk-GLCZKT5V.js";
504
505
  import "./chunk-DJ2GSRLV.js";
505
- import "./chunk-NLFLYSS4.js";
506
+ import "./chunk-QFJ5JHQR.js";
506
507
  import {
507
508
  ConversationFinishedEvent,
508
509
  DiscoveredMCPTool,
@@ -535,17 +536,17 @@ import {
535
536
  shouldRunVisionBridge,
536
537
  splitImageParts,
537
538
  uiTelemetryService
538
- } from "./chunk-4KM2SYK5.js";
539
+ } from "./chunk-RVOJ2FBP.js";
539
540
  import "./chunk-YRLW2MSX.js";
540
541
  import "./chunk-VGC4I5JJ.js";
541
542
  import {
542
543
  getAutoMemoryRoot,
543
544
  getUserAutoMemoryRoot
544
- } from "./chunk-G6MUFRNI.js";
545
+ } from "./chunk-CHHABXPE.js";
545
546
  import {
546
547
  runSideQuery
547
- } from "./chunk-LSRI3ND3.js";
548
- import "./chunk-PVXEJB66.js";
548
+ } from "./chunk-MA2HEDVP.js";
549
+ import "./chunk-XUJNK7Y6.js";
549
550
  import {
550
551
  BaseDeclarativeTool,
551
552
  BaseToolInvocation,
@@ -553,20 +554,20 @@ import {
553
554
  ToolNames,
554
555
  canonicalToolName,
555
556
  isShellProgressData
556
- } from "./chunk-YIGGWOJE.js";
557
+ } from "./chunk-6HY6IF3Z.js";
557
558
  import {
558
559
  AuthType,
559
560
  preloadContentGenerator
560
- } from "./chunk-KWX56CHZ.js";
561
+ } from "./chunk-4PKCUT7F.js";
561
562
  import "./chunk-F6WFNA7U.js";
562
563
  import "./chunk-46UV252V.js";
563
564
  import {
564
565
  DEFAULT_TOKEN_LIMIT,
565
566
  tokenLimit
566
567
  } from "./chunk-FPGTNKCP.js";
567
- import "./chunk-4AOVQPJU.js";
568
- import "./chunk-PZW46OTB.js";
569
- import "./chunk-YBHUXEC6.js";
568
+ import "./chunk-CPHEPGAO.js";
569
+ import "./chunk-P7MPQI75.js";
570
+ import "./chunk-FDGGZIYW.js";
570
571
  import {
571
572
  endToolExecutionSpan,
572
573
  endToolSpan,
@@ -577,7 +578,7 @@ import {
577
578
  startToolExecutionSpan,
578
579
  startToolSpan,
579
580
  withInteractionSpan
580
- } from "./chunk-N4SVADAV.js";
581
+ } from "./chunk-EL5SXY3T.js";
581
582
  import "./chunk-HHJLM3WQ.js";
582
583
  import {
583
584
  sessionIdContext
@@ -588,12 +589,12 @@ import {
588
589
  getErrorMessage,
589
590
  getErrorStatus,
590
591
  isSubpath
591
- } from "./chunk-HOSVOUDK.js";
592
+ } from "./chunk-BUQDLC2G.js";
592
593
  import "./chunk-VOQXFAY5.js";
593
- import "./chunk-MELQSJOU.js";
594
+ import "./chunk-AW4TRXOC.js";
594
595
  import {
595
596
  runExitCleanup
596
- } from "./chunk-OR64CU46.js";
597
+ } from "./chunk-X26JYGTD.js";
597
598
  import {
598
599
  writeStderrLine,
599
600
  writeStderrLineSafe
@@ -3700,10 +3701,11 @@ async function buildAvailableCommandsSnapshot(config, abortSignal = AbortSignal.
3700
3701
  }
3701
3702
  __name(buildAvailableCommandsSnapshot, "buildAvailableCommandsSnapshot");
3702
3703
  var Session = class {
3703
- constructor(id, config, client, settings, onActiveWorkChanged) {
3704
+ constructor(id, config, client, settings, runExclusiveAutomaticHistoryMutation = (operation) => operation(), onActiveWorkChanged) {
3704
3705
  this.config = config;
3705
3706
  this.client = client;
3706
3707
  this.settings = settings;
3708
+ this.runExclusiveAutomaticHistoryMutation = runExclusiveAutomaticHistoryMutation;
3707
3709
  this.onActiveWorkChanged = onActiveWorkChanged;
3708
3710
  this.sessionId = id;
3709
3711
  this.runtimeBaseDir = config.storage.getRuntimeBaseDir();
@@ -3829,6 +3831,7 @@ var Session = class {
3829
3831
  // on a session whose registries are already unregistered.
3830
3832
  disposed = false;
3831
3833
  closing = false;
3834
+ historyMutationActive = false;
3832
3835
  closeGateCompletion = null;
3833
3836
  resolveCloseGate = null;
3834
3837
  unsubscribeChatRecordingFailure;
@@ -4050,6 +4053,12 @@ var Session = class {
4050
4053
  return publication;
4051
4054
  }
4052
4055
  async #drainGoalQueue() {
4056
+ if (this.goalQueue.length === 0) return;
4057
+ await this.runExclusiveAutomaticHistoryMutation(
4058
+ () => this.#drainGoalQueueExclusive()
4059
+ );
4060
+ }
4061
+ async #drainGoalQueueExclusive() {
4053
4062
  if (this.disposed || this.closing || this.goalProcessing || this.pendingPrompt || this.pendingPromptCompletion || this.cronProcessing || this.cronAbortController || this.notificationProcessing || this.notificationAbortController) {
4054
4063
  return;
4055
4064
  }
@@ -4748,6 +4757,12 @@ var Session = class {
4748
4757
  if (this.closing) {
4749
4758
  throw RequestError.invalidParams(void 0, "Session is closing");
4750
4759
  }
4760
+ if (this.historyMutationActive) {
4761
+ throw RequestError.invalidParams(
4762
+ void 0,
4763
+ "Session history mutation is in progress"
4764
+ );
4765
+ }
4751
4766
  try {
4752
4767
  await this.config.assertCanStartTurn();
4753
4768
  } catch (error) {
@@ -4761,9 +4776,18 @@ var Session = class {
4761
4776
  if (this.closing) {
4762
4777
  throw RequestError.invalidParams(void 0, "Session is closing");
4763
4778
  }
4779
+ if (this.historyMutationActive) {
4780
+ throw RequestError.invalidParams(
4781
+ void 0,
4782
+ "Session history mutation is in progress"
4783
+ );
4784
+ }
4785
+ }
4786
+ isTurnIdle() {
4787
+ return !this.closing && !this.#hasActiveTurn();
4764
4788
  }
4765
4789
  isIdle() {
4766
- return !this.closing && !this.#hasActiveTurn() && this.collectActiveWorkHolds().length === 0;
4790
+ return this.isTurnIdle() && this.collectActiveWorkHolds().length === 0;
4767
4791
  }
4768
4792
  /**
4769
4793
  * The Session's current active-work holds, derived on every call.
@@ -4815,9 +4839,29 @@ var Session = class {
4815
4839
  }
4816
4840
  #hasActiveTurn() {
4817
4841
  return Boolean(
4818
- this.pendingPrompt || this.pendingPromptCompletion || this.goalProcessing || this.cronProcessing || this.cronAbortController || this.cronCompletion || this.notificationProcessing || this.notificationAbortController || this.notificationCompletion
4842
+ this.pendingPrompt || this.historyMutationActive || this.pendingPromptCompletion || this.goalProcessing || this.cronProcessing || this.cronAbortController || this.cronCompletion || this.notificationProcessing || this.notificationAbortController || this.notificationCompletion
4819
4843
  );
4820
4844
  }
4845
+ beginHistoryMutation() {
4846
+ if (this.closing) {
4847
+ throw RequestError.invalidParams(void 0, "Session is closing");
4848
+ }
4849
+ if (this.#hasActiveTurn()) {
4850
+ throw new RequestError(-32602, "Session is busy processing a turn", {
4851
+ errorKind: "session_busy"
4852
+ });
4853
+ }
4854
+ this.historyMutationActive = true;
4855
+ let released = false;
4856
+ return () => {
4857
+ if (released) return;
4858
+ released = true;
4859
+ this.historyMutationActive = false;
4860
+ if (this.disposed) return;
4861
+ void this.#drainCronQueue();
4862
+ void this.#drainNotificationQueue();
4863
+ };
4864
+ }
4821
4865
  beginClose() {
4822
4866
  if (this.closing) {
4823
4867
  throw RequestError.invalidParams(
@@ -5167,6 +5211,12 @@ var Session = class {
5167
5211
  if (this.closing) {
5168
5212
  throw RequestError.invalidParams(void 0, "Session is closing");
5169
5213
  }
5214
+ if (this.historyMutationActive) {
5215
+ throw RequestError.invalidParams(
5216
+ void 0,
5217
+ "Session history mutation is in progress"
5218
+ );
5219
+ }
5170
5220
  if (modelPrompt !== void 0 && invocationContext === void 0) {
5171
5221
  throw RequestError.invalidParams(
5172
5222
  void 0,
@@ -5186,6 +5236,12 @@ var Session = class {
5186
5236
  if (this.closing) {
5187
5237
  throw RequestError.invalidParams(void 0, "Session is closing");
5188
5238
  }
5239
+ if (this.historyMutationActive) {
5240
+ throw RequestError.invalidParams(
5241
+ void 0,
5242
+ "Session history mutation is in progress"
5243
+ );
5244
+ }
5189
5245
  if (admissionCancellation?.aborted) {
5190
5246
  return { stopReason: "cancelled" };
5191
5247
  }
@@ -5304,6 +5360,9 @@ var Session = class {
5304
5360
  this.todoStopGuard.suspend();
5305
5361
  return { stopReason: "cancelled" };
5306
5362
  }
5363
+ const channelPromptTurn = params._meta?.[CHANNEL_PROMPT_META_KEY] === true;
5364
+ const recording = this.config.getChatRecordingService();
5365
+ const branchCheckpointCursor = scheduledGoalTurn === void 0 && !channelPromptTurn ? recording?.getBranchCheckpointCursor() : void 0;
5307
5366
  if (todoStopGuardPreparation.startsWorkChain) {
5308
5367
  this.#clearTodoStopGuardQueuedPromptWait();
5309
5368
  this.todoStopGuard.startOrdinaryPrompt();
@@ -5315,7 +5374,6 @@ var Session = class {
5315
5374
  ...channelDelivery ? { channelDelivery: { finalText: "" } } : {},
5316
5375
  agentOutput: new AgentOutputMessageCapture(this.config)
5317
5376
  };
5318
- const channelPromptTurn = params._meta?.[CHANNEL_PROMPT_META_KEY] === true;
5319
5377
  let resolveCompletion;
5320
5378
  this.pendingPromptCompletion = new Promise((resolve6) => {
5321
5379
  resolveCompletion = resolve6;
@@ -5343,12 +5401,36 @@ var Session = class {
5343
5401
  goalTurn,
5344
5402
  channelPromptTurn
5345
5403
  );
5346
- promptResult = result;
5404
+ let branchPoint;
5405
+ if (recording && branchCheckpointCursor) {
5406
+ try {
5407
+ branchPoint = await recording.recordBranchCheckpointTransaction({
5408
+ cursor: branchCheckpointCursor,
5409
+ stopReason: result.stopReason
5410
+ });
5411
+ } catch (error) {
5412
+ debugLogger6.warn(
5413
+ "Failed to record branch checkpoint; completing the turn without a branch point",
5414
+ error
5415
+ );
5416
+ }
5417
+ }
5418
+ const completedResult = branchPoint ? {
5419
+ ...result,
5420
+ _meta: {
5421
+ ...result._meta,
5422
+ "qwen.branchPoint": {
5423
+ assistantRecordUuid: branchPoint.assistantRecordUuid,
5424
+ checkpointUuid: branchPoint.checkpointUuid
5425
+ }
5426
+ }
5427
+ } : result;
5428
+ promptResult = completedResult;
5347
5429
  releasePendingSend();
5348
5430
  void this.#drainCronQueue();
5349
5431
  void this.#drainNotificationQueue();
5350
- this.#maybeEmitFollowupSuggestion(result);
5351
- if (channelDelivery && result.stopReason === "end_turn") {
5432
+ this.#maybeEmitFollowupSuggestion(completedResult);
5433
+ if (channelDelivery && completedResult.stopReason === "end_turn") {
5352
5434
  this.#scheduleChannelDelivery({
5353
5435
  sessionId: this.sessionId,
5354
5436
  deliveryId: channelDelivery.deliveryId,
@@ -5360,7 +5442,7 @@ var Session = class {
5360
5442
  promptId: channelDelivery.deliveryId
5361
5443
  });
5362
5444
  }
5363
- return result;
5445
+ return completedResult;
5364
5446
  } catch (error) {
5365
5447
  promptFailed = true;
5366
5448
  if (error instanceof SessionWriterError) {
@@ -7501,6 +7583,15 @@ ${this.pendingRecoveredAgentsNotice}
7501
7583
  if (this.notificationProcessing) return;
7502
7584
  if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
7503
7585
  if (this.#nextCronQueueIndex() < 0) return;
7586
+ await this.runExclusiveAutomaticHistoryMutation(
7587
+ () => this.#drainCronQueueExclusive()
7588
+ );
7589
+ }
7590
+ async #drainCronQueueExclusive() {
7591
+ if (this.disposed || this.closing || this.cronProcessing) return;
7592
+ if (this.pendingPrompt || this.notificationProcessing) return;
7593
+ if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
7594
+ if (this.#nextCronQueueIndex() < 0) return;
7504
7595
  try {
7505
7596
  await this.assertCanStartTurn();
7506
7597
  } catch (error) {
@@ -8094,6 +8185,18 @@ ${this.pendingRecoveredAgentsNotice}
8094
8185
  if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
8095
8186
  if (this.notificationQueue.length === 0) return;
8096
8187
  if (this.#nextNotificationQueueIndex() < 0) return;
8188
+ await this.runExclusiveAutomaticHistoryMutation(
8189
+ () => this.#drainNotificationQueueExclusive()
8190
+ );
8191
+ }
8192
+ async #drainNotificationQueueExclusive() {
8193
+ if (this.disposed || this.closing || this.notificationProcessing) return;
8194
+ if (this.pendingPrompt || this.cronProcessing || this.cronAbortController) {
8195
+ return;
8196
+ }
8197
+ if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
8198
+ if (this.notificationQueue.length === 0) return;
8199
+ if (this.#nextNotificationQueueIndex() < 0) return;
8097
8200
  try {
8098
8201
  await this.assertCanStartTurn();
8099
8202
  } catch (error) {
@@ -11523,11 +11626,15 @@ async function shutdownSessionConfig(config) {
11523
11626
  }
11524
11627
  }
11525
11628
  __name(shutdownSessionConfig, "shutdownSessionConfig");
11526
- async function waitForSessionDrain(operation, timeoutMs, kind) {
11629
+ async function waitForSessionDrain(operation, timeoutMs, kind, displayTimeoutMs) {
11527
11630
  let timer;
11528
11631
  const timeout = new Promise((_, reject) => {
11529
11632
  timer = setTimeout(
11530
- () => reject(new Error(`Session ${kind} timed out after ${timeoutMs}ms`)),
11633
+ () => reject(
11634
+ new Error(
11635
+ `Session ${kind} timed out after ${displayTimeoutMs ?? timeoutMs}ms`
11636
+ )
11637
+ ),
11531
11638
  timeoutMs
11532
11639
  );
11533
11640
  timer.unref();
@@ -11833,6 +11940,15 @@ function getLoadReplayPageSize(params) {
11833
11940
  return value;
11834
11941
  }
11835
11942
  __name(getLoadReplayPageSize, "getLoadReplayPageSize");
11943
+ function deriveForkBaseName(name, recording, sessionId) {
11944
+ if (typeof name === "string" && name.trim().length > 0) {
11945
+ return name.trim();
11946
+ }
11947
+ const existingTitle = recording?.getCurrentCustomTitle();
11948
+ const stripped = existingTitle?.replace(/\s*\(Branch(?:\s+\d+)?\)\s*$/, "").trim();
11949
+ return stripped && stripped.length > 0 ? stripped : sessionId.slice(0, 8);
11950
+ }
11951
+ __name(deriveForkBaseName, "deriveForkBaseName");
11836
11952
  function createHiddenWorkspaceMemoryConfig(config) {
11837
11953
  return new Proxy(config, {
11838
11954
  get(target, prop) {
@@ -13839,6 +13955,7 @@ var QwenAgent = class {
13839
13955
  __name(this, "QwenAgent");
13840
13956
  }
13841
13957
  sessions = /* @__PURE__ */ new Map();
13958
+ historyMutationTails = /* @__PURE__ */ new Map();
13842
13959
  startingSessionIds = /* @__PURE__ */ new Set();
13843
13960
  activePromptCalls = /* @__PURE__ */ new Map();
13844
13961
  workspaceMcpDiscoveryConfig;
@@ -13902,6 +14019,43 @@ var QwenAgent = class {
13902
14019
  throw new SessionWriterUnavailableError();
13903
14020
  }
13904
14021
  }
14022
+ async runExclusiveHistoryMutation(sessionId, operation, waitTimeoutMs, waitDisplayTimeoutMs) {
14023
+ const previous = this.historyMutationTails.get(sessionId) ?? Promise.resolve();
14024
+ let release;
14025
+ const gate = new Promise((resolve6) => {
14026
+ release = resolve6;
14027
+ });
14028
+ const current = previous.then(() => gate);
14029
+ this.historyMutationTails.set(sessionId, current);
14030
+ try {
14031
+ if (waitTimeoutMs === void 0) {
14032
+ await previous;
14033
+ } else {
14034
+ await waitForSessionDrain(
14035
+ previous,
14036
+ waitTimeoutMs,
14037
+ "close",
14038
+ waitDisplayTimeoutMs
14039
+ );
14040
+ }
14041
+ } catch (error) {
14042
+ release();
14043
+ void current.then(() => {
14044
+ if (this.historyMutationTails.get(sessionId) === current) {
14045
+ this.historyMutationTails.delete(sessionId);
14046
+ }
14047
+ });
14048
+ throw error;
14049
+ }
14050
+ try {
14051
+ return await operation();
14052
+ } finally {
14053
+ release();
14054
+ if (this.historyMutationTails.get(sessionId) === current) {
14055
+ this.historyMutationTails.delete(sessionId);
14056
+ }
14057
+ }
14058
+ }
13905
14059
  rejectUnsupportedGuardedHiddenAgent(operation) {
13906
14060
  if (this.managedToolInvocationGuard && this.externalToolGuardProviderAttached) {
13907
14061
  throw RequestError.invalidParams(
@@ -14401,11 +14555,10 @@ var QwenAgent = class {
14401
14555
  }
14402
14556
  const recorder = session.getConfig().getChatRecordingService();
14403
14557
  const requireFlush = opts?.requireFlush === true;
14404
- if (requireFlush) {
14405
- await recorder?.flush();
14406
- }
14558
+ if (requireFlush) await recorder?.flush();
14407
14559
  const drainTimeoutMs = opts?.drainTimeoutMs ?? SESSION_DRAIN_TIMEOUT_MS;
14408
14560
  const cancelClose = opts?.waitForCloseGate ? await beginSessionCloseAfterCurrentGate(session, drainTimeoutMs) : session.beginClose();
14561
+ const conditionalDrainDeadline = opts?.onlyIfUnheld ? Date.now() + drainTimeoutMs : void 0;
14409
14562
  if (opts?.onlyIfUnheld) {
14410
14563
  const holds = session.collectActiveWorkHolds();
14411
14564
  if (holds.length > 0) {
@@ -14413,13 +14566,24 @@ var QwenAgent = class {
14413
14566
  return { closed: false, holds };
14414
14567
  }
14415
14568
  }
14416
- for (const [requestId, generation] of this.generationControllers) {
14417
- if (generation.sessionId !== sessionId) continue;
14418
- generation.controller.abort();
14419
- this.generationControllers.delete(requestId);
14420
- }
14421
14569
  let removedFromStore = false;
14422
14570
  try {
14571
+ if (opts?.onlyIfUnheld) {
14572
+ await waitForSessionDrain(
14573
+ session.waitForActiveTurnsToSettle(),
14574
+ drainTimeoutMs,
14575
+ "close"
14576
+ );
14577
+ const holds = session.collectActiveWorkHolds();
14578
+ if (holds.length > 0) {
14579
+ return { closed: false, holds };
14580
+ }
14581
+ }
14582
+ for (const [requestId, generation] of this.generationControllers) {
14583
+ if (generation.sessionId !== sessionId) continue;
14584
+ generation.controller.abort();
14585
+ this.generationControllers.delete(requestId);
14586
+ }
14423
14587
  await waitForSessionDrain(
14424
14588
  (async () => {
14425
14589
  try {
@@ -14431,41 +14595,68 @@ var QwenAgent = class {
14431
14595
  }
14432
14596
  await session.waitForActiveTurnsToSettle();
14433
14597
  })(),
14434
- drainTimeoutMs,
14435
- "close"
14598
+ conditionalDrainDeadline === void 0 ? drainTimeoutMs : Math.max(1, conditionalDrainDeadline - Date.now()),
14599
+ "close",
14600
+ // Report the shared budget, not the phase-2 residue — a residue like
14601
+ // "1ms" hides that the settle phase consumed the budget and sends
14602
+ // oncall grepping for a timeout setting that does not exist.
14603
+ drainTimeoutMs
14436
14604
  );
14437
- if (opts?.onlyIfUnheld) {
14438
- const holds = session.collectActiveWorkHolds();
14439
- if (holds.length > 0) {
14440
- return { closed: false, holds };
14441
- }
14442
- }
14443
- recorder?.finalize();
14444
- let flushError;
14445
- try {
14446
- await recorder?.flush();
14447
- } catch (error) {
14448
- flushError = error;
14449
- }
14450
- if (flushError !== void 0 && requireFlush) {
14451
- throw flushError;
14452
- }
14453
- let closeError;
14454
- try {
14455
- await recorder?.close();
14456
- } catch (error) {
14457
- closeError = error;
14458
- }
14459
- if (recorder?.hasWriteOwnership()) {
14460
- throw closeError ?? new SessionWriterUnavailableError();
14461
- }
14462
- const cleanupErrors = [];
14463
- if (flushError !== void 0) cleanupErrors.push(flushError);
14464
- if (closeError !== void 0) cleanupErrors.push(closeError);
14465
- await this.removeStoredSessionEntry(sessionId, session, cleanupErrors, {
14466
- shutdownConfig: opts?.shutdownConfig
14467
- });
14468
- removedFromStore = true;
14605
+ const blockedByHolds = await this.runExclusiveHistoryMutation(
14606
+ sessionId,
14607
+ async () => {
14608
+ if (this.sessions.get(sessionId) !== session) {
14609
+ removedFromStore = true;
14610
+ return void 0;
14611
+ }
14612
+ if (opts?.onlyIfUnheld) {
14613
+ const holds = session.collectActiveWorkHolds();
14614
+ if (holds.length > 0) {
14615
+ return { closed: false, holds };
14616
+ }
14617
+ }
14618
+ recorder?.finalize();
14619
+ let flushError;
14620
+ try {
14621
+ await recorder?.flush();
14622
+ } catch (error) {
14623
+ flushError = error;
14624
+ }
14625
+ if (flushError !== void 0 && requireFlush) {
14626
+ throw flushError;
14627
+ }
14628
+ let closeError;
14629
+ try {
14630
+ await recorder?.close();
14631
+ } catch (error) {
14632
+ closeError = error;
14633
+ }
14634
+ if (recorder?.hasWriteOwnership()) {
14635
+ throw closeError ?? new SessionWriterUnavailableError();
14636
+ }
14637
+ const cleanupErrors = [];
14638
+ if (flushError !== void 0) cleanupErrors.push(flushError);
14639
+ if (closeError !== void 0) cleanupErrors.push(closeError);
14640
+ await this.removeStoredSessionEntry(
14641
+ sessionId,
14642
+ session,
14643
+ cleanupErrors,
14644
+ {
14645
+ shutdownConfig: opts?.shutdownConfig
14646
+ }
14647
+ );
14648
+ removedFromStore = true;
14649
+ return void 0;
14650
+ },
14651
+ // The mutation wait shares the conditional close's budget too, or
14652
+ // the whole round trip can outlast the daemon's outer wait — the
14653
+ // coupling the drain budget exists to keep. The mutation body
14654
+ // itself stays untimed, so the guarantee remains approximate. The
14655
+ // message reports the shared budget, not the residue.
14656
+ conditionalDrainDeadline === void 0 ? drainTimeoutMs : Math.max(1, conditionalDrainDeadline - Date.now()),
14657
+ drainTimeoutMs
14658
+ );
14659
+ if (blockedByHolds) return blockedByHolds;
14469
14660
  } finally {
14470
14661
  if (!removedFromStore) cancelClose();
14471
14662
  }
@@ -14573,7 +14764,7 @@ var QwenAgent = class {
14573
14764
  }
14574
14765
  this.clientCapabilities = args.clientCapabilities;
14575
14766
  const authMethods = buildAuthMethods();
14576
- const version = "0.21.12";
14767
+ const version = "0.21.13";
14577
14768
  const response = {
14578
14769
  protocolVersion: PROTOCOL_VERSION,
14579
14770
  agentInfo: {
@@ -15480,6 +15671,9 @@ var QwenAgent = class {
15480
15671
  throw error;
15481
15672
  }
15482
15673
  }
15674
+ for (const call of this.activePromptCalls.get(sessionId) ?? []) {
15675
+ call.controller.abort();
15676
+ }
15483
15677
  }
15484
15678
  loadPermissionSettings(cwd) {
15485
15679
  this.settings = loadSettings(cwd);
@@ -19814,9 +20008,25 @@ ${outputText}
19814
20008
  `Session not found for id: ${sessionId}`
19815
20009
  );
19816
20010
  }
20011
+ if (!session.isTurnIdle()) {
20012
+ throw new RequestError(
20013
+ -32602,
20014
+ "Cannot rewind while a prompt is running",
20015
+ {
20016
+ errorKind: "session_busy"
20017
+ }
20018
+ );
20019
+ }
20020
+ const rawPromptId = params["promptId"];
20021
+ if (rawPromptId !== void 0 && typeof rawPromptId !== "string") {
20022
+ throw new RequestError(-32602, "Invalid promptId format", {
20023
+ errorKind: "invalid_rewind_target"
20024
+ });
20025
+ }
20026
+ const promptId = typeof rawPromptId === "string" ? rawPromptId : void 0;
19817
20027
  let turnIndex = params["targetTurnIndex"];
19818
- const promptId = params["promptId"];
19819
- if (promptId && (turnIndex === void 0 || turnIndex === null)) {
20028
+ const resolveFromPromptId = promptId !== void 0 && (turnIndex === void 0 || turnIndex === null);
20029
+ if (resolveFromPromptId) {
19820
20030
  const prefix = sessionId + "########";
19821
20031
  if (!promptId.startsWith(prefix)) {
19822
20032
  throw new RequestError(-32602, "Invalid promptId format", {
@@ -19831,104 +20041,113 @@ ${outputText}
19831
20041
  { errorKind: "invalid_rewind_target" }
19832
20042
  );
19833
20043
  }
19834
- const fhs = session.getConfig().getFileHistoryService();
19835
- const snapshots = fhs.getSnapshots();
19836
- const snapshotIdx = snapshots.findIndex(
19837
- (s) => s.promptId === promptId
19838
- );
19839
- if (snapshotIdx < 0) {
19840
- throw new RequestError(
19841
- -32602,
19842
- "Snapshot not found for the given promptId",
19843
- { errorKind: "invalid_rewind_target" }
19844
- );
19845
- }
19846
- turnIndex = snapshotIdx;
19847
- }
19848
- if (!Number.isInteger(turnIndex) || turnIndex < 0) {
20044
+ } else if (!Number.isInteger(turnIndex) || turnIndex < 0) {
19849
20045
  throw RequestError.invalidParams(
19850
20046
  void 0,
19851
20047
  "Invalid or missing targetTurnIndex"
19852
20048
  );
19853
20049
  }
19854
- const rewindFiles = params["rewindFiles"] !== false;
19855
- const historyBeforeRewind = session.captureHistorySnapshot();
19856
- let rewindResult;
19857
- try {
19858
- rewindResult = session.rewindToTurn(turnIndex, {
19859
- rewindFiles
19860
- });
19861
- } catch (err) {
19862
- if (err instanceof RequestError) {
19863
- const msg = err.message;
19864
- if (msg.includes("Cannot rewind while a prompt is running")) {
19865
- throw new RequestError(err.code, msg, {
19866
- errorKind: "session_busy"
19867
- });
19868
- }
19869
- if (msg.includes("compressed or does not exist")) {
19870
- throw new RequestError(err.code, msg, {
19871
- errorKind: "invalid_rewind_target"
19872
- });
20050
+ return await this.runExclusiveHistoryMutation(sessionId, async () => {
20051
+ if (resolveFromPromptId) {
20052
+ const fhs = session.getConfig().getFileHistoryService();
20053
+ const snapshots = fhs.getSnapshots();
20054
+ const snapshotIdx = snapshots.findIndex(
20055
+ (s) => s.promptId === promptId
20056
+ );
20057
+ if (snapshotIdx < 0) {
20058
+ throw new RequestError(
20059
+ -32602,
20060
+ "Snapshot not found for the given promptId",
20061
+ { errorKind: "invalid_rewind_target" }
20062
+ );
19873
20063
  }
20064
+ turnIndex = snapshotIdx;
19874
20065
  }
19875
- throw err;
19876
- }
19877
- let filesChanged = [];
19878
- let filesFailed = [];
19879
- if (rewindFiles && promptId) {
19880
- const fhs = session.getConfig().getFileHistoryService();
20066
+ const rewindFiles = params["rewindFiles"] !== false;
20067
+ const historyBeforeRewind = session.captureHistorySnapshot();
20068
+ let rewindResult;
20069
+ let releaseHistoryMutation;
19881
20070
  try {
19882
- const fileResult = await fhs.rewind(promptId, true);
19883
- filesChanged = fileResult.filesChanged;
19884
- filesFailed = fileResult.filesFailed;
20071
+ rewindResult = session.rewindToTurn(turnIndex, {
20072
+ rewindFiles
20073
+ });
20074
+ releaseHistoryMutation = session.beginHistoryMutation();
19885
20075
  } catch (err) {
19886
- const reason = err instanceof Error ? err.message : String(err);
19887
- debugLogger8.error(
19888
- `[ACP] File-history rewind failed for session=${sessionId} promptId=${promptId}: ${reason}`
19889
- );
19890
- filesFailed = [`file-history-rewind: ${reason}`];
20076
+ if (err instanceof RequestError) {
20077
+ const msg = err.message;
20078
+ if (msg.includes("Cannot rewind while a prompt is running") || msg.includes("Session is busy processing a turn")) {
20079
+ throw new RequestError(err.code, msg, {
20080
+ errorKind: "session_busy"
20081
+ });
20082
+ }
20083
+ if (msg.includes("compressed or does not exist")) {
20084
+ throw new RequestError(err.code, msg, {
20085
+ errorKind: "invalid_rewind_target"
20086
+ });
20087
+ }
20088
+ }
20089
+ throw err;
19891
20090
  }
19892
- }
19893
- let artifactSnapshot;
19894
- let artifactSnapshotUnavailable;
19895
- try {
19896
- const config = session.getConfig();
19897
- const recording = config.getChatRecordingService();
19898
- await recording?.flush();
19899
- const loadAuthoritative = /* @__PURE__ */ __name(() => config.getSessionService().loadSession(sessionId), "loadAuthoritative");
19900
- const sessionData = recording ? await recording.runWithWriteBarrier(loadAuthoritative) : await loadAuthoritative();
19901
- if (sessionData === void 0) {
19902
- artifactSnapshotUnavailable = "session data unavailable after rewind";
19903
- } else if (sessionData.artifactSnapshot) {
19904
- artifactSnapshot = sessionData.artifactSnapshot;
19905
- } else {
19906
- artifactSnapshot = {
19907
- v: SESSION_ARTIFACT_PERSISTENCE_VERSION,
19908
- sessionId,
19909
- sequence: 0,
19910
- artifacts: [],
19911
- tombstonedIds: [],
19912
- stickyEphemeralIds: [],
19913
- warnings: []
20091
+ try {
20092
+ let filesChanged = [];
20093
+ let filesFailed = [];
20094
+ if (rewindFiles && promptId) {
20095
+ const fhs = session.getConfig().getFileHistoryService();
20096
+ try {
20097
+ const fileResult = await fhs.rewind(promptId, true);
20098
+ filesChanged = fileResult.filesChanged;
20099
+ filesFailed = fileResult.filesFailed;
20100
+ } catch (err) {
20101
+ const reason = err instanceof Error ? err.message : String(err);
20102
+ debugLogger8.error(
20103
+ `[ACP] File-history rewind failed for session=${sessionId} promptId=${promptId}: ${reason}`
20104
+ );
20105
+ filesFailed = [`file-history-rewind: ${reason}`];
20106
+ }
20107
+ }
20108
+ let artifactSnapshot;
20109
+ let artifactSnapshotUnavailable;
20110
+ try {
20111
+ const config = session.getConfig();
20112
+ const recording = config.getChatRecordingService();
20113
+ await recording?.flush();
20114
+ const loadAuthoritative = /* @__PURE__ */ __name(() => config.getSessionService().loadSession(sessionId), "loadAuthoritative");
20115
+ const sessionData = recording ? await recording.runWithWriteBarrier(loadAuthoritative) : await loadAuthoritative();
20116
+ if (sessionData === void 0) {
20117
+ artifactSnapshotUnavailable = "session data unavailable after rewind";
20118
+ } else if (sessionData.artifactSnapshot) {
20119
+ artifactSnapshot = sessionData.artifactSnapshot;
20120
+ } else {
20121
+ artifactSnapshot = {
20122
+ v: SESSION_ARTIFACT_PERSISTENCE_VERSION,
20123
+ sessionId,
20124
+ sequence: 0,
20125
+ artifacts: [],
20126
+ tombstonedIds: [],
20127
+ stickyEphemeralIds: [],
20128
+ warnings: []
20129
+ };
20130
+ }
20131
+ } catch (err) {
20132
+ const reason = err instanceof Error ? err.message : String(err);
20133
+ artifactSnapshotUnavailable = "artifact snapshot unavailable after rewind";
20134
+ debugLogger8.warn(
20135
+ `[ACP] Failed to rebuild artifact snapshot after rewind for session=${sessionId}: ${reason}`
20136
+ );
20137
+ }
20138
+ return {
20139
+ success: true,
20140
+ historyBeforeRewind,
20141
+ ...rewindResult,
20142
+ filesChanged,
20143
+ filesFailed,
20144
+ ...artifactSnapshot ? { artifactSnapshot } : {},
20145
+ ...artifactSnapshotUnavailable ? { artifactSnapshotUnavailable } : {}
19914
20146
  };
20147
+ } finally {
20148
+ releaseHistoryMutation();
19915
20149
  }
19916
- } catch (err) {
19917
- const reason = err instanceof Error ? err.message : String(err);
19918
- artifactSnapshotUnavailable = "artifact snapshot unavailable after rewind";
19919
- debugLogger8.warn(
19920
- `[ACP] Failed to rebuild artifact snapshot after rewind for session=${sessionId}: ${reason}`
19921
- );
19922
- }
19923
- return {
19924
- success: true,
19925
- historyBeforeRewind,
19926
- ...rewindResult,
19927
- filesChanged,
19928
- filesFailed,
19929
- ...artifactSnapshot ? { artifactSnapshot } : {},
19930
- ...artifactSnapshotUnavailable ? { artifactSnapshotUnavailable } : {}
19931
- };
20150
+ });
19932
20151
  }
19933
20152
  case "qwen/session/loadUpdates": {
19934
20153
  const sessionId = params["sessionId"];
@@ -20031,6 +20250,16 @@ ${outputText}
20031
20250
  );
20032
20251
  }
20033
20252
  const name = params["name"];
20253
+ const atRecordId = params["atRecordId"];
20254
+ if (atRecordId !== void 0 && typeof atRecordId !== "string") {
20255
+ throw RequestError.invalidParams(void 0, "Invalid atRecordId");
20256
+ }
20257
+ if (isSideTask && atRecordId !== void 0) {
20258
+ throw RequestError.invalidParams(
20259
+ void 0,
20260
+ "atRecordId is not supported for side tasks"
20261
+ );
20262
+ }
20034
20263
  const sourceSession = this.sessions.get(sessionId);
20035
20264
  if (!sourceSession) {
20036
20265
  throw new RequestError(-32004, `Session not found: ${sessionId}`, {
@@ -20038,60 +20267,77 @@ ${outputText}
20038
20267
  sessionId
20039
20268
  });
20040
20269
  }
20270
+ if (!isSideTask) {
20271
+ if (!sourceSession.isTurnIdle()) {
20272
+ throw new RequestError(
20273
+ -32602,
20274
+ "Cannot branch while a prompt is running",
20275
+ { errorKind: "session_busy" }
20276
+ );
20277
+ }
20278
+ try {
20279
+ return await this.runExclusiveHistoryMutation(
20280
+ sessionId,
20281
+ async () => {
20282
+ await sourceSession.assertCanStartTurn();
20283
+ const releaseHistoryMutation = sourceSession.beginHistoryMutation();
20284
+ try {
20285
+ const sourceConfig2 = sourceSession.getConfig();
20286
+ const recording2 = sourceConfig2.getChatRecordingService();
20287
+ const sessionService2 = sourceConfig2.getSessionService();
20288
+ const baseName = deriveForkBaseName(
20289
+ name,
20290
+ recording2,
20291
+ sessionId
20292
+ );
20293
+ const title2 = await computeUniqueBranchTitle(
20294
+ baseName,
20295
+ sessionService2
20296
+ );
20297
+ const newSessionId2 = randomUUID2();
20298
+ const fork2 = /* @__PURE__ */ __name(() => sessionService2.forkSession(sessionId, newSessionId2, {
20299
+ title: title2,
20300
+ ...atRecordId !== void 0 ? { atRecordId } : {}
20301
+ }), "fork");
20302
+ if (recording2) {
20303
+ await recording2.runWithWriteBarrier(fork2);
20304
+ } else {
20305
+ await fork2();
20306
+ }
20307
+ return { newSessionId: newSessionId2, title: title2, displayName: title2 };
20308
+ } finally {
20309
+ releaseHistoryMutation();
20310
+ }
20311
+ }
20312
+ );
20313
+ } catch (error) {
20314
+ if (error instanceof BranchPointInvalidError) {
20315
+ throw new RequestError(-32009, error.message, {
20316
+ errorKind: "branch_point_invalid",
20317
+ recordId: error.recordId
20318
+ });
20319
+ }
20320
+ throw error;
20321
+ }
20322
+ }
20041
20323
  const sourceConfig = sourceSession.getConfig();
20042
20324
  const recording = sourceConfig.getChatRecordingService();
20043
- if (recording) {
20044
- await recording.flush();
20045
- }
20046
- const newSessionId = randomUUID2();
20325
+ if (recording) await recording.flush();
20047
20326
  const sessionService = sourceConfig.getSessionService();
20048
- const fork = /* @__PURE__ */ __name(() => isSideTask ? sessionService.forkSession(sessionId, newSessionId, {
20327
+ const title = deriveForkBaseName(name, recording, sessionId);
20328
+ const newSessionId = randomUUID2();
20329
+ const fork = /* @__PURE__ */ __name(() => sessionService.forkSession(sessionId, newSessionId, {
20049
20330
  source: {
20050
20331
  sourceType: "side_task",
20051
20332
  sourceId: sessionId
20052
- }
20053
- }) : sessionService.forkSession(sessionId, newSessionId), "fork");
20054
- if (isSideTask && recording) {
20333
+ },
20334
+ title
20335
+ }), "fork");
20336
+ if (recording) {
20055
20337
  await recording.runWithWriteBarrier(fork);
20056
20338
  } else {
20057
20339
  await fork();
20058
20340
  }
20059
- let title;
20060
- try {
20061
- let baseName;
20062
- if (typeof name === "string" && name.trim().length > 0) {
20063
- baseName = name.trim();
20064
- } else {
20065
- const existingTitle = recording?.getCurrentCustomTitle();
20066
- const stripped = existingTitle?.replace(/\s*\(Branch(?:\s+\d+)?\)\s*$/, "").trim();
20067
- if (stripped && stripped.length > 0) {
20068
- baseName = stripped;
20069
- } else {
20070
- baseName = sessionId.slice(0, 8);
20071
- }
20072
- }
20073
- title = isSideTask ? baseName : await computeUniqueBranchTitle(baseName, sessionService);
20074
- const renamed = await sessionService.renameSession(
20075
- newSessionId,
20076
- title,
20077
- "manual"
20078
- );
20079
- if (!renamed) {
20080
- throw new RequestError(
20081
- -32603,
20082
- `Failed to set title on forked session ${newSessionId}`,
20083
- { errorKind: "internal", sessionId: newSessionId }
20084
- );
20085
- }
20086
- } catch (err) {
20087
- sessionService.removeSession(newSessionId).catch((rmErr) => {
20088
- process.stderr.write(
20089
- `qwen serve: failed to clean up orphan session ${newSessionId}: ${rmErr instanceof Error ? rmErr.message : rmErr}
20090
- `
20091
- );
20092
- });
20093
- throw err;
20094
- }
20095
20341
  return { newSessionId, title, displayName: title };
20096
20342
  }
20097
20343
  case "qwen/settings/getCore": {
@@ -20876,6 +21122,7 @@ ${outputText}
20876
21122
  config,
20877
21123
  this.connection,
20878
21124
  settings,
21125
+ (operation) => this.runExclusiveHistoryMutation(sessionId, operation),
20879
21126
  () => this.activeWorkReporter?.notifyChanged()
20880
21127
  );
20881
21128
  let published = false;