@qwen-code/qwen-code 0.20.0-nightly.20260721.cda0e0348 → 0.20.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
  3. package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
  4. package/bundled/qc-helper/docs/integration-github-action.md +9 -9
  5. package/bundled/review/DESIGN.md +2 -2
  6. package/bundled/review/SKILL.md +4 -4
  7. package/chunks/{MaxSizedBox-EE76OHAP.js → MaxSizedBox-53BTJ3JK.js} +41 -34
  8. package/chunks/{StandaloneSessionPicker-WZH4PC3K.js → StandaloneSessionPicker-VMFIXQ44.js} +57 -50
  9. package/chunks/{acpAgent-2ATF4LMP.js → acpAgent-5WYAVSFG.js} +1135 -428
  10. package/chunks/{agent-KTOOFWMV.js → agent-44FM7PBX.js} +37 -30
  11. package/chunks/agent-headless-CDBMKM44.js +68 -0
  12. package/chunks/{anthropicContentGenerator-W4JLNYWQ.js → anthropicContentGenerator-NMSS7IMV.js} +13 -12
  13. package/chunks/{artifact-tool-WBCAMD3O.js → artifact-tool-56T5IMBP.js} +3 -3
  14. package/chunks/{askUserQuestion-6DZC4UV5.js → askUserQuestion-E25OBIC2.js} +3 -3
  15. package/chunks/{bridge-T4TLAZSJ.js → bridge-IQZT3KU2.js} +42 -35
  16. package/chunks/{build-SSCNEHZZ.js → build-GHIZ4MSZ.js} +1 -1
  17. package/chunks/{ca-ISKASTR5.js → ca-N6VVUFVB.js} +5 -1
  18. package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-LFBT7K64.js} +3 -3
  19. package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-3RUPERG2.js} +3 -3
  20. package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-A3KVATD3.js} +2 -2
  21. package/chunks/{chunk-OV2KB55J.js → chunk-22OH7L7I.js} +5 -5
  22. package/chunks/chunk-2RFKHEXL.js +74 -0
  23. package/chunks/{chunk-KRI4VCHX.js → chunk-45AIVIUL.js} +9 -9
  24. package/chunks/{chunk-2GFRA3MN.js → chunk-45DNGJKC.js} +3 -3
  25. package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
  26. package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
  27. package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
  28. package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
  29. package/chunks/{chunk-6EFTQYW7.js → chunk-5I5BM454.js} +1 -1
  30. package/chunks/{chunk-JR6UJ24K.js → chunk-5JX7FPHW.js} +2 -2
  31. package/chunks/{chunk-25Y6JSH2.js → chunk-5MZSD2JX.js} +6 -6
  32. package/chunks/{chunk-GPILFVPY.js → chunk-66RKDODM.js} +1 -1
  33. package/chunks/{chunk-L4YSPHR4.js → chunk-6AWRQ4T2.js} +8 -6
  34. package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
  35. package/chunks/{chunk-JQMBPGOU.js → chunk-6NHK6HS7.js} +3 -3
  36. package/chunks/{chunk-EDMGFJ3E.js → chunk-6OHCY3OB.js} +2 -2
  37. package/chunks/chunk-6PVPNMXU.js +29 -0
  38. package/chunks/{chunk-NO6XTCYT.js → chunk-6RQ5IPUX.js} +18366 -16879
  39. package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
  40. package/chunks/chunk-7362QS5B.js +2256 -0
  41. package/chunks/{chunk-USTF7LPI.js → chunk-7KZ2KYAD.js} +27 -23
  42. package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
  43. package/chunks/{chunk-ABIL4ZQU.js → chunk-A7CUSHP7.js} +1 -1
  44. package/chunks/{chunk-246TW4IX.js → chunk-BEKZWVJJ.js} +3 -373
  45. package/chunks/{chunk-LC5CAVMS.js → chunk-BKZEHVPV.js} +171 -169
  46. package/chunks/{chunk-4CWPMWCD.js → chunk-BRHHXGWL.js} +6 -4
  47. package/chunks/{chunk-AY3CSB6F.js → chunk-BXXWWCLA.js} +4 -4
  48. package/chunks/{chunk-G45NOBV7.js → chunk-C3YZ5CLY.js} +7 -6
  49. package/chunks/{chunk-XCHUDLER.js → chunk-CHLNJN3C.js} +1 -1
  50. package/chunks/{chunk-JRW46GQX.js → chunk-CJTAUXKG.js} +3 -3
  51. package/chunks/{chunk-KTNIZG2C.js → chunk-CMRYLH67.js} +2 -2
  52. package/chunks/{chunk-WQQDJE2P.js → chunk-DKZISEDB.js} +54 -51
  53. package/chunks/{chunk-2ITGJJE2.js → chunk-DORJSBMF.js} +6 -6
  54. package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
  55. package/chunks/{chunk-7KGXAXF7.js → chunk-E5MVGARW.js} +1 -1
  56. package/chunks/{chunk-FYA3Y5JR.js → chunk-EJFHUF3D.js} +5 -5
  57. package/chunks/{chunk-CG2HPAVD.js → chunk-EPN5MKRH.js} +2 -2
  58. package/chunks/{chunk-NEEB7UEN.js → chunk-FFFM6NJV.js} +1 -2
  59. package/chunks/chunk-FMXMKPI5.js +1780 -0
  60. package/chunks/{chunk-FEOZBUMT.js → chunk-FODK6UMO.js} +0 -27
  61. package/chunks/{chunk-DZZIOIVF.js → chunk-FSXCGBXB.js} +1 -1
  62. package/chunks/chunk-GLNBDYUX.js +38 -0
  63. package/chunks/{chunk-6MC5ASQK.js → chunk-GOWMC4CS.js} +4 -4
  64. package/chunks/{chunk-OONJNQ42.js → chunk-GPSKDNEE.js} +3 -3
  65. package/chunks/{chunk-W3BKN3LO.js → chunk-GZBHRTNM.js} +1 -1
  66. package/chunks/{chunk-XVVH63JG.js → chunk-H4AR2JQF.js} +3 -3
  67. package/chunks/{chunk-LWQ4IAOJ.js → chunk-H4OWOFZL.js} +2 -2
  68. package/chunks/chunk-HTR4WV6U.js +327 -0
  69. package/chunks/{chunk-IYZENXFW.js → chunk-IE7TPOXP.js} +1 -1
  70. package/chunks/{chunk-R3VZNHRX.js → chunk-IT27F3ES.js} +290 -80
  71. package/chunks/{chunk-5JX5EWR5.js → chunk-J3VSRG5Y.js} +61 -21
  72. package/chunks/{chunk-R5N7NF5D.js → chunk-J63IP5ZT.js} +7 -7
  73. package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
  74. package/chunks/{chunk-U4VGYZN7.js → chunk-JD5FHQ3N.js} +3 -3
  75. package/chunks/{chunk-5WG2K5RH.js → chunk-JIHHXJFH.js} +90 -31
  76. package/chunks/{chunk-AWVS63WA.js → chunk-JJEFX6U5.js} +28 -1766
  77. package/chunks/{chunk-5PZ6R37W.js → chunk-JT7HACMQ.js} +2 -2
  78. package/chunks/{chunk-2GOPPEHK.js → chunk-JWJVZHT5.js} +2 -2
  79. package/chunks/{chunk-FZVSFBNW.js → chunk-JYS55H6Z.js} +41 -1
  80. package/chunks/{chunk-6DHWO5ZF.js → chunk-K4VB66QF.js} +11 -11
  81. package/chunks/{chunk-EIAK6Q2B.js → chunk-KHOVYUHX.js} +2 -2
  82. package/chunks/{chunk-2CWOJ2FA.js → chunk-KNTYRZD4.js} +8 -8
  83. package/chunks/{chunk-ACW3VNUE.js → chunk-KQQ757OQ.js} +1 -1
  84. package/chunks/chunk-KWK7UE6L.js +6194 -0
  85. package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
  86. package/chunks/{chunk-4RA7PWIY.js → chunk-LMQNDPVP.js} +3 -3
  87. package/chunks/chunk-M7WBGLYP.js +151 -0
  88. package/chunks/chunk-NABLFI57.js +82 -0
  89. package/chunks/{chunk-EZVDJFZ7.js → chunk-NPQDJGKU.js} +1 -1
  90. package/chunks/{chunk-GH7OEOYU.js → chunk-NYPUWHHC.js} +4 -4
  91. package/chunks/{chunk-DMRO4GU2.js → chunk-OAGG6CRR.js} +1 -1
  92. package/chunks/chunk-OQ5SYCPE.js +10017 -0
  93. package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
  94. package/chunks/chunk-OZYV6F53.js +391 -0
  95. package/chunks/{chunk-EAUYY7SS.js → chunk-Q2YKNMLS.js} +3 -3
  96. package/chunks/{chunk-PYNCSQSI.js → chunk-Q6DEGTYO.js} +50 -1493
  97. package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
  98. package/chunks/{chunk-32F7BZSK.js → chunk-QD6BRERJ.js} +2 -2
  99. package/chunks/{chunk-6RVJRVQR.js → chunk-QF4DPYPH.js} +1 -1
  100. package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
  101. package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
  102. package/chunks/{chunk-XZOBDSDG.js → chunk-QTROYZUC.js} +83 -39
  103. package/chunks/{chunk-BWK3FX3K.js → chunk-RAUHV362.js} +3 -3
  104. package/chunks/{chunk-JPRLCXAO.js → chunk-RUNR5DAE.js} +4 -4
  105. package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
  106. package/chunks/{chunk-E5QFCC4X.js → chunk-RWCQJC5W.js} +51 -35
  107. package/chunks/{chunk-BUKOHGBE.js → chunk-S4BT3PX3.js} +3 -3
  108. package/chunks/{chunk-PFKNXN67.js → chunk-SOMSZ6W3.js} +13 -8
  109. package/chunks/{chunk-JNWZQ27S.js → chunk-SP5WRGVG.js} +3 -3
  110. package/chunks/{chunk-FSL5W5TI.js → chunk-T2L47JJK.js} +3 -3
  111. package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
  112. package/chunks/chunk-TJQXJJX7.js +121 -0
  113. package/chunks/chunk-U7ZFW55U.js +2098 -0
  114. package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
  115. package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
  116. package/chunks/{chunk-WRRF6TEQ.js → chunk-VHYCUGOT.js} +5 -1
  117. package/chunks/{chunk-LLDGOZMJ.js → chunk-VI7UU7ZI.js} +4 -4
  118. package/chunks/{chunk-IM2A6YO3.js → chunk-VLBJ7ZUG.js} +1 -1
  119. package/chunks/{chunk-CUJX3F4X.js → chunk-VTKWURCJ.js} +5 -5
  120. package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
  121. package/chunks/chunk-WHGVTP7Q.js +1049 -0
  122. package/chunks/{chunk-5YVZ2XLV.js → chunk-X6KLM4LZ.js} +8 -8
  123. package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
  124. package/chunks/{chunk-B452RETY.js → chunk-XFWD3PCA.js} +1 -1
  125. package/chunks/chunk-XHATNRQA.js +1500 -0
  126. package/chunks/{chunk-YGIUIIIF.js → chunk-XP32LURS.js} +3 -3
  127. package/chunks/{chunk-FCUUJKZF.js → chunk-YDLVKCZJ.js} +496 -278
  128. package/chunks/{chunk-OP4MOGXF.js → chunk-YM3SZTH4.js} +8 -1
  129. package/chunks/{chunk-GKY2OJ7R.js → chunk-ZHERRXZJ.js} +1 -1
  130. package/chunks/chunk-ZJVVETCV.js +20600 -0
  131. package/chunks/{computer-use-M6MGRJF2.js → computer-use-FMEBQMCB.js} +42 -35
  132. package/chunks/{config-utils-MOGE4EVB.js → config-utils-WYUQ7II4.js} +1 -1
  133. package/chunks/contextCommand-5YK3QNNJ.js +73 -0
  134. package/chunks/{create-sub-session-P26FE5GG.js → create-sub-session-AZ77LBL3.js} +3 -3
  135. package/chunks/{create-sub-session-MB35IHCR.js → create-sub-session-MLELTOCW.js} +37 -30
  136. package/chunks/{cron-create-JWFHBDRQ.js → cron-create-KTWJM7QT.js} +5 -5
  137. package/chunks/{cron-delete-GDX4E26G.js → cron-delete-2P3I5ULL.js} +5 -5
  138. package/chunks/{cron-list-USMAIWPT.js → cron-list-PXDPGEDQ.js} +5 -5
  139. package/chunks/daemon-status-provider-FXMOD242.js +81 -0
  140. package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
  141. package/chunks/{dist-VGJTZL4E.js → dist-XRYV6TJP.js} +32 -3
  142. package/chunks/{earlyInputCapture-7QJX25AC.js → earlyInputCapture-N3J42S2G.js} +38 -31
  143. package/chunks/{edit-BTPQWGAA.js → edit-T6GO7VPW.js} +42 -37
  144. package/chunks/{en-XE34GKAA.js → en-USMCCJAJ.js} +5 -1
  145. package/chunks/{enter-worktree-N3SEYKOO.js → enter-worktree-OL3FMR3A.js} +42 -35
  146. package/chunks/{enterPlanMode-TN2JV5MY.js → enterPlanMode-LEP7BSBX.js} +42 -35
  147. package/chunks/{environment-HP6RK262.js → environment-6LNBH2LJ.js} +39 -32
  148. package/chunks/{errors-VHGRDDOQ.js → errors-IM3H4DNG.js} +39 -32
  149. package/chunks/{exit-worktree-FI3SQY3U.js → exit-worktree-6MOANJMY.js} +42 -35
  150. package/chunks/{exitPlanMode-NZWRVIIY.js → exitPlanMode-VLBSWDJK.js} +42 -35
  151. package/chunks/{fast-path-EGP7AXNR.js → fast-path-3Z3JY4BL.js} +3 -3
  152. package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-XB3CPUJT.js} +2 -2
  153. package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
  154. package/chunks/{gemini-AN5YMD5O.js → gemini-VDE6O6CX.js} +89 -82
  155. package/chunks/{geminiContentGenerator-ABTMU4FE.js → geminiContentGenerator-NN4ZWALY.js} +5 -5
  156. package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
  157. package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
  158. package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
  159. package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
  160. package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
  161. package/chunks/{glob-5YABOPJB.js → glob-7AZHIY3Z.js} +42 -35
  162. package/chunks/{grep-U67FKUJT.js → grep-E2KEORSD.js} +42 -35
  163. package/chunks/handleAutoUpdate-BCNVTQWW.js +74 -0
  164. package/chunks/{i18n-GMQV324P.js → i18n-VP4NCTZN.js} +38 -31
  165. package/chunks/initializer-5UB4SRPK.js +79 -0
  166. package/chunks/installationInfo-LNYJCXN3.js +73 -0
  167. package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
  168. package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
  169. package/chunks/list-NIZ77KPE.js +82 -0
  170. package/chunks/loadedSettingsAdapter-IQPRO2SO.js +76 -0
  171. package/chunks/{loop-wakeup-5GLTUBHA.js → loop-wakeup-RNMRVA66.js} +6 -6
  172. package/chunks/{ls-FHBY3Y7I.js → ls-J2ZI5XYK.js} +5 -5
  173. package/chunks/{lsp-B6VMEW6Y.js → lsp-UMS3NUB5.js} +3 -3
  174. package/chunks/managed-npm-update-GFRDCD77.js +333 -0
  175. package/chunks/mcp-TCUL7LT2.js +76 -0
  176. package/chunks/{monitor-Z7NZNNRC.js → monitor-NDYKU5VS.js} +42 -35
  177. package/chunks/nonInteractiveCli-UHSHJDFD.js +133 -0
  178. package/chunks/{notebook-edit-GFOYAQAZ.js → notebook-edit-GF3HSMXN.js} +43 -38
  179. package/chunks/{openaiContentGenerator-XAAYV6WR.js → openaiContentGenerator-GE2I3C2T.js} +22 -17
  180. package/chunks/{pidfile-ILI37KRQ.js → pidfile-KS4IGGNX.js} +38 -31
  181. package/chunks/{processUtils-LIPJMLVZ.js → processUtils-TEQQ47A2.js} +2 -2
  182. package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
  183. package/chunks/{qwenContentGenerator-DLJ3KKGZ.js → qwenContentGenerator-NDYOEIUY.js} +44 -35
  184. package/chunks/{qwenOAuth2-J47FU5PW.js → qwenOAuth2-CXDOBPSK.js} +18 -15
  185. package/chunks/{read-file-LCQ2KNNP.js → read-file-QDVJX75S.js} +13 -11
  186. package/chunks/{read-mcp-resource-AKCL7I43.js → read-mcp-resource-F6HYMDUY.js} +3 -3
  187. package/chunks/{record-artifact-PEUB7727.js → record-artifact-7GCFLDD7.js} +3 -3
  188. package/chunks/{resumeHistoryUtils-PSCSAKA6.js → resumeHistoryUtils-5EAQ76W4.js} +43 -36
  189. package/chunks/ripGrep-WANMXNVT.js +66 -0
  190. package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
  191. package/chunks/{run-qwen-serve-DQ5ZIR36.js → run-qwen-serve-TC6M3WTJ.js} +85 -80
  192. package/chunks/{runtime-6MQFF2A6.js → runtime-BB73E3Z3.js} +45 -38
  193. package/chunks/{scheduler-K4S7NY3G.js → scheduler-NDU5OFSJ.js} +37 -30
  194. package/chunks/sdk-exporters-grpc-ETLH47EP.js +23214 -0
  195. package/chunks/sdk-exporters-http-T3POX73F.js +563 -0
  196. package/chunks/sdk-impl-NSLPDH6I.js +9193 -0
  197. package/chunks/{send-message-3RHE7HSM.js → send-message-PYIJ2PZL.js} +6 -4
  198. package/chunks/{serve-JFAAPC5J.js → serve-BTIRWZJ4.js} +43 -36
  199. package/chunks/{server-QB6CHRZN.js → server-JKAQBE2E.js} +277 -208
  200. package/chunks/{session-FKPVXAAB.js → session-66QFVVDS.js} +81 -74
  201. package/chunks/{settings-CADELKSU.js → settings-NBN6GY7E.js} +46 -39
  202. package/chunks/{shell-EON6WVVH.js → shell-JDSLAQVH.js} +37 -30
  203. package/chunks/{skill-FKSYXJ5U.js → skill-TNMHTO3C.js} +24 -20
  204. package/chunks/{spawnChannel-VM5IHLJO.js → spawnChannel-TFLHHXOC.js} +39 -32
  205. package/chunks/{src-Q4XB6SVD.js → src-YFXMPRBL.js} +254 -210
  206. package/chunks/{standalone-update-KGZHPBMA.js → standalone-update-2CQVQRSC.js} +39 -32
  207. package/chunks/{startInteractiveUI-EYDJIIIZ.js → startInteractiveUI-6C6PENRW.js} +370 -266
  208. package/chunks/{syntheticOutput-FG5PQKIR.js → syntheticOutput-H7RTI5KL.js} +4 -4
  209. package/chunks/{task-create-HX32YXO7.js → task-create-7474AJJD.js} +10 -8
  210. package/chunks/{task-list-QWSY4ZIU.js → task-list-633HGOIB.js} +6 -6
  211. package/chunks/{task-stop-GWC6UWAL.js → task-stop-MNUGHPIA.js} +3 -3
  212. package/chunks/{task-update-NCTAB73Q.js → task-update-66GQB5LI.js} +10 -8
  213. package/chunks/{team-create-CYP3YKYT.js → team-create-IPBHD26Z.js} +42 -35
  214. package/chunks/{team-delete-KK37HTOG.js → team-delete-BB3CG3QF.js} +6 -6
  215. package/chunks/{team-plan-approval-5LXIFKNV.js → team-plan-approval-WIGEJXXM.js} +42 -35
  216. package/chunks/theme-manager-OZYKJG3W.js +70 -0
  217. package/chunks/{todoWrite-ERCAMLFS.js → todoWrite-KRAUN54W.js} +5 -5
  218. package/chunks/{tool-search-Q27QHQU3.js → tool-search-J3CBYJRB.js} +21 -17
  219. package/chunks/total-session-admission-CNBQRM44.js +76 -0
  220. package/chunks/{trustedFolders-C6664IQC.js → trustedFolders-5FJRCHGN.js} +38 -31
  221. package/chunks/{update-relaunch-QC3E4FZW.js → update-relaunch-S5APSFJS.js} +13 -13
  222. package/chunks/{updateCheck-MVUKJMBX.js → updateCheck-BPSMOZXS.js} +46 -34
  223. package/chunks/{useAutoAcceptIndicator-J234IFIS.js → useAutoAcceptIndicator-WZVJ52U3.js} +47 -40
  224. package/chunks/{validateNonInterActiveAuth-YPPEKX4N.js → validateNonInterActiveAuth-64SVMELJ.js} +75 -68
  225. package/chunks/{version-5IXFQ4PT.js → version-SQL27GUA.js} +1 -1
  226. package/chunks/{web-fetch-L62NQVKN.js → web-fetch-K7QCHIOJ.js} +100 -41
  227. package/chunks/web-search-KQPQFM7A.js +731 -0
  228. package/chunks/{workflow-6MHBBFQU.js → workflow-BFTW72A5.js} +47 -39
  229. package/chunks/workspace-providers-status-4PLI2VFC.js +79 -0
  230. package/chunks/{workspace-registration-store-P6QHCSMU.js → workspace-registration-store-VAVPVIF3.js} +2 -2
  231. package/chunks/workspace-registry-I4ZRHGBS.js +80 -0
  232. package/chunks/workspace-service-RXYBWBDJ.js +91 -0
  233. package/chunks/workspace-skills-status-35Z2FU4I.js +78 -0
  234. package/chunks/write-file-KCL5RI2I.js +66 -0
  235. package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-BM47YBFH.js} +5 -1
  236. package/chunks/{zh-6ANG2HTL.js → zh-WY5DWYZD.js} +5 -1
  237. package/cli-entry.js +164 -12
  238. package/cli.js +18 -11
  239. package/locales/ca.js +10 -3
  240. package/locales/de.js +8 -2
  241. package/locales/en.js +8 -2
  242. package/locales/fr.js +8 -2
  243. package/locales/ja.js +8 -2
  244. package/locales/pt.js +8 -2
  245. package/locales/ru.js +8 -2
  246. package/locales/zh-TW.js +8 -2
  247. package/locales/zh.js +8 -2
  248. package/package.json +3 -3
  249. package/web-shell/assets/{arc-B0iTWRo2.js → arc-ByltRugA.js} +1 -1
  250. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DSQP4-9D.js → architectureDiagram-3BPJPVTR-CCRTto5d.js} +1 -1
  251. package/web-shell/assets/{blockDiagram-GPEHLZMM-BNPVXVT3.js → blockDiagram-GPEHLZMM-Jfy36u1L.js} +1 -1
  252. package/web-shell/assets/{c4Diagram-AAUBKEIU-DEHfJFiD.js → c4Diagram-AAUBKEIU-4d5FfEZ0.js} +1 -1
  253. package/web-shell/assets/channel-4N2UIFcG.js +1 -0
  254. package/web-shell/assets/{chunk-2J33WTMH-VZ0uL1p9.js → chunk-2J33WTMH-BPwxCEro.js} +1 -1
  255. package/web-shell/assets/{chunk-4BX2VUAB-D5TKmvwG.js → chunk-4BX2VUAB-jY7ZmJWY.js} +1 -1
  256. package/web-shell/assets/{chunk-55IACEB6-BDW1Lcq-.js → chunk-55IACEB6-C98HgCsS.js} +1 -1
  257. package/web-shell/assets/{chunk-727SXJPM-Cj4h85iM.js → chunk-727SXJPM-cDu-ge-q.js} +1 -1
  258. package/web-shell/assets/{chunk-AQP2D5EJ-5LeqiOhZ.js → chunk-AQP2D5EJ-BKdJwxXK.js} +1 -1
  259. package/web-shell/assets/{chunk-FMBD7UC4-BaTgsco7.js → chunk-FMBD7UC4-DnuxqwMu.js} +1 -1
  260. package/web-shell/assets/{chunk-ND2GUHAM-t3uGlIUk.js → chunk-ND2GUHAM-C4fZNPv0.js} +1 -1
  261. package/web-shell/assets/{chunk-QZHKN3VN-rOnNXL2Q.js → chunk-QZHKN3VN-Cf4XWOmz.js} +1 -1
  262. package/web-shell/assets/classDiagram-4FO5ZUOK-Q4dYOtsh.js +1 -0
  263. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Q4dYOtsh.js +1 -0
  264. package/web-shell/assets/{cose-bilkent-S5V4N54A-CcqXykgA.js → cose-bilkent-S5V4N54A-C82mFiqj.js} +1 -1
  265. package/web-shell/assets/{dagre-BM42HDAG-Dkjrchoy.js → dagre-BM42HDAG-Df8KACER.js} +1 -1
  266. package/web-shell/assets/{diagram-2AECGRRQ-B6lcra9M.js → diagram-2AECGRRQ-EzNs7s_2.js} +1 -1
  267. package/web-shell/assets/{diagram-5GNKFQAL-bAIzq3PT.js → diagram-5GNKFQAL-BRLNvreg.js} +1 -1
  268. package/web-shell/assets/{diagram-KO2AKTUF-G9MAZDNW.js → diagram-KO2AKTUF-2HLYHRjC.js} +1 -1
  269. package/web-shell/assets/{diagram-LMA3HP47-DVLF1uWZ.js → diagram-LMA3HP47-DeH0NzSp.js} +1 -1
  270. package/web-shell/assets/{diagram-OG6HWLK6-Cf7y20Tc.js → diagram-OG6HWLK6-k5Gn47-G.js} +1 -1
  271. package/web-shell/assets/{erDiagram-TEJ5UH35-C7ETZB3o.js → erDiagram-TEJ5UH35-gPHFo79f.js} +1 -1
  272. package/web-shell/assets/{flowDiagram-I6XJVG4X-Cl2xgL6J.js → flowDiagram-I6XJVG4X-DYBOiTRW.js} +1 -1
  273. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgjbMs3q.js → ganttDiagram-6RSMTGT7-cxjAuic9.js} +1 -1
  274. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-JVX34Omm.js → gitGraphDiagram-PVQCEYII-3nPqpmCP.js} +1 -1
  275. package/web-shell/assets/index-B7jzUZ_s.css +5 -0
  276. package/web-shell/assets/{index-BG7Zc4f_.js → index-Cl8d-1bK.js} +1 -1
  277. package/web-shell/assets/index-gE8OWwj_.js +1197 -0
  278. package/web-shell/assets/{infoDiagram-5YYISTIA-3NYyMeZU.js → infoDiagram-5YYISTIA-Dph21pR5.js} +1 -1
  279. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C03VCu-U.js → ishikawaDiagram-YF4QCWOH-Cjg1hSaG.js} +1 -1
  280. package/web-shell/assets/{journeyDiagram-JHISSGLW-C9PuBRZW.js → journeyDiagram-JHISSGLW-CR-IzvnU.js} +1 -1
  281. package/web-shell/assets/{kanban-definition-UN3LZRKU-C3LvioWR.js → kanban-definition-UN3LZRKU-BYmuybuC.js} +1 -1
  282. package/web-shell/assets/{linear-Du6Yw8N_.js → linear-CngEEoy8.js} +1 -1
  283. package/web-shell/assets/{mermaid.core-BXY5D2-X.js → mermaid.core-G6fbZRPf.js} +5 -5
  284. package/web-shell/assets/{mindmap-definition-RKZ34NQL-2UrHLaDp.js → mindmap-definition-RKZ34NQL-BtnqnUwJ.js} +1 -1
  285. package/web-shell/assets/{pieDiagram-4H26LBE5-dC03ml45.js → pieDiagram-4H26LBE5-XTq6UHIA.js} +1 -1
  286. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CD6jARrp.js → quadrantDiagram-W4KKPZXB-D1J5PrsS.js} +1 -1
  287. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BrK8aXfv.js → requirementDiagram-4Y6WPE33-CLcBUy3t.js} +1 -1
  288. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-B5Vitki_.js → sankeyDiagram-5OEKKPKP-iwKV02_6.js} +1 -1
  289. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CBy2t6Bo.js → sequenceDiagram-3UESZ5HK-7NFYQcEX.js} +1 -1
  290. package/web-shell/assets/{stateDiagram-AJRCARHV-Enrka6T2.js → stateDiagram-AJRCARHV-Bvm4Wih6.js} +1 -1
  291. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-xXU_zO2Z.js +1 -0
  292. package/web-shell/assets/{timeline-definition-PNZ67QCA-CwFq78ss.js → timeline-definition-PNZ67QCA-B4FZFE9O.js} +1 -1
  293. package/web-shell/assets/{vennDiagram-CIIHVFJN-BkOidM0g.js → vennDiagram-CIIHVFJN-CvMBpmtL.js} +1 -1
  294. package/web-shell/assets/{wardley-L42UT6IY-D_j13hQW.js → wardley-L42UT6IY-E3ag2327.js} +1 -1
  295. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-7EveB1w6.js → wardleyDiagram-YWT4CUSO-BEXWlgxC.js} +1 -1
  296. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DRkBhMXr.js → xychartDiagram-2RQKCTM6-CICK05gI.js} +1 -1
  297. package/web-shell/index.html +2 -2
  298. package/chunks/agent-headless-WVJCQ27D.js +0 -61
  299. package/chunks/chunk-CPCVCKKF.js +0 -358
  300. package/chunks/chunk-P64HXIC5.js +0 -74712
  301. package/chunks/chunk-RF34V75B.js +0 -45
  302. package/chunks/chunk-W7FJ3N32.js +0 -49
  303. package/chunks/contextCommand-HTRJJYNE.js +0 -66
  304. package/chunks/daemon-status-provider-67EKK6S3.js +0 -74
  305. package/chunks/handleAutoUpdate-OOKBP5VD.js +0 -67
  306. package/chunks/initializer-NWALZGQ5.js +0 -72
  307. package/chunks/installationInfo-Y3M433E7.js +0 -66
  308. package/chunks/list-CQDDWHTS.js +0 -75
  309. package/chunks/loadedSettingsAdapter-I5KG37EI.js +0 -69
  310. package/chunks/mcp-24HHCBSP.js +0 -69
  311. package/chunks/nonInteractiveCli-GVF2XDJT.js +0 -126
  312. package/chunks/ripGrep-Y2XW4EFC.js +0 -59
  313. package/chunks/theme-manager-QOUMDWMP.js +0 -63
  314. package/chunks/total-session-admission-HWVCZ2WR.js +0 -69
  315. package/chunks/workspace-providers-status-ZTW2B5QU.js +0 -72
  316. package/chunks/workspace-registry-R54M5O3W.js +0 -73
  317. package/chunks/workspace-service-WYLRGM4A.js +0 -84
  318. package/chunks/workspace-skills-status-NN5QFU3A.js +0 -71
  319. package/chunks/write-file-EAT3CHUK.js +0 -596
  320. package/web-shell/assets/channel-tVz-qNSq.js +0 -1
  321. package/web-shell/assets/classDiagram-4FO5ZUOK-CWuaBxYV.js +0 -1
  322. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CWuaBxYV.js +0 -1
  323. package/web-shell/assets/index-48bIcdqF.js +0 -1197
  324. package/web-shell/assets/index-BI-JAO07.css +0 -5
  325. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DUtYfXpW.js +0 -1
  326. package/chunks/{chunk-H24SOJIQ.js → chunk-D7WXIW7H.js} +3 -3
  327. package/chunks/{chunk-PEJWA3QQ.js → chunk-QZJY47IE.js} +5 -5
  328. package/chunks/{dist-XBJVSWS2.js → dist-HMU6CYS4.js} +1 -1
@@ -1,10 +1,5 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import {
4
- openQwenAsrRealtimeStream,
5
- openVoiceStream,
6
- openVoiceStreamWithRetry
7
- } from "./chunk-GKY2OJ7R.js";
8
3
  import {
9
4
  GENERATION_MAX_PROMPT_BYTES,
10
5
  MAX_REMEMBER_CONTENT_BYTES,
@@ -19,7 +14,12 @@ import {
19
14
  shouldSuppressRememberErrorDetails,
20
15
  workspaceMemoryFailureCode,
21
16
  workspaceMemoryFailureDiagnostics
22
- } from "./chunk-CG2HPAVD.js";
17
+ } from "./chunk-EPN5MKRH.js";
18
+ import {
19
+ openQwenAsrRealtimeStream,
20
+ openVoiceStream,
21
+ openVoiceStreamWithRetry
22
+ } from "./chunk-ZHERRXZJ.js";
23
23
  import {
24
24
  SetupGithubError,
25
25
  collectSessionData,
@@ -30,21 +30,17 @@ import {
30
30
  toJson,
31
31
  toJsonl,
32
32
  toMarkdown
33
- } from "./chunk-PFKNXN67.js";
33
+ } from "./chunk-SOMSZ6W3.js";
34
34
  import {
35
35
  OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
36
36
  ObservedChannelContactStore
37
- } from "./chunk-KTUQMDEP.js";
38
- import "./chunk-6RVJRVQR.js";
37
+ } from "./chunk-4K7VDKAD.js";
39
38
  import "./chunk-RS7MT2QG.js";
39
+ import "./chunk-QF4DPYPH.js";
40
40
  import "./chunk-H2XVO6NE.js";
41
41
  import "./chunk-QHTIBUWB.js";
42
42
  import "./chunk-QTERJVPZ.js";
43
43
  import "./chunk-L573Z2QZ.js";
44
- import {
45
- createSingleWorkspaceRegistry,
46
- createWorkspaceSessionOwnerIndex
47
- } from "./chunk-W7H223ZZ.js";
48
44
  import {
49
45
  CAPABILITIES_SCHEMA_VERSION,
50
46
  CLIENT_ID_HEADER,
@@ -100,29 +96,29 @@ import {
100
96
  setRateLimiter,
101
97
  unsafeRevealSecret,
102
98
  validateMcpRuntimeServerName
103
- } from "./chunk-LC5CAVMS.js";
99
+ } from "./chunk-BKZEHVPV.js";
104
100
  import {
105
101
  isLoopbackBind
106
102
  } from "./chunk-RXFQM6FQ.js";
107
103
  import {
108
104
  createDaemonStatusProvider
109
- } from "./chunk-LLDGOZMJ.js";
105
+ } from "./chunk-VI7UU7ZI.js";
110
106
  import "./chunk-LXXMOYPL.js";
111
- import "./chunk-GH7OEOYU.js";
107
+ import "./chunk-NYPUWHHC.js";
112
108
  import "./chunk-E5Z2AVNV.js";
113
109
  import {
114
110
  createWorkspaceProvidersStatusProvider
115
- } from "./chunk-2CWOJ2FA.js";
111
+ } from "./chunk-KNTYRZD4.js";
116
112
  import {
117
113
  getAuthTypeFromEnv,
118
114
  resolveCliGenerationConfig
119
- } from "./chunk-L4YSPHR4.js";
115
+ } from "./chunk-6AWRQ4T2.js";
120
116
  import {
121
117
  snapshotProcessEnv
122
- } from "./chunk-JR6UJ24K.js";
118
+ } from "./chunk-5JX7FPHW.js";
123
119
  import {
124
120
  createWorkspaceSkillsStatusProvider
125
- } from "./chunk-JRW46GQX.js";
121
+ } from "./chunk-CJTAUXKG.js";
126
122
  import "./chunk-2W3OOD4W.js";
127
123
  import {
128
124
  EMPTY_WORKSPACE_VOICE_UPDATE_ERROR,
@@ -137,14 +133,14 @@ import {
137
133
  validateWorkspaceSkillName,
138
134
  validateWorkspaceVoiceState,
139
135
  voiceSettingsScopeToWire
140
- } from "./chunk-KRI4VCHX.js";
136
+ } from "./chunk-45AIVIUL.js";
141
137
  import {
142
138
  PermissionRulesValidationError,
143
139
  buildPermissionSettings,
144
140
  isPermissionRuleType,
145
141
  normalizePermissionRules,
146
142
  readPermissionRuleSet
147
- } from "./chunk-IM2A6YO3.js";
143
+ } from "./chunk-VLBJ7ZUG.js";
148
144
  import {
149
145
  assertVoiceBaseUrlNetworkAllowed,
150
146
  isStreamingVoiceModel,
@@ -152,13 +148,13 @@ import {
152
148
  resolveVoiceTranscriptionConfig,
153
149
  sanitizeVoiceErrorMessage,
154
150
  transcribeVoiceAudio
155
- } from "./chunk-U4VGYZN7.js";
151
+ } from "./chunk-JD5FHQ3N.js";
156
152
  import {
157
153
  isVoiceEnabled,
158
154
  isVoiceMode,
159
155
  readVoiceModel
160
- } from "./chunk-GPILFVPY.js";
161
- import "./chunk-BVLROR2T.js";
156
+ } from "./chunk-66RKDODM.js";
157
+ import "./chunk-QLJUC7TG.js";
162
158
  import {
163
159
  WorkspacePermissionRulesSessionRequiredError,
164
160
  WorkspaceSettingsPartialPersistError,
@@ -167,21 +163,35 @@ import {
167
163
  } from "./chunk-OA4JVLSA.js";
168
164
  import {
169
165
  createTotalSessionAdmissionController
170
- } from "./chunk-R3VWUU2E.js";
166
+ } from "./chunk-VYPFXUCB.js";
167
+ import {
168
+ createSingleWorkspaceRegistry,
169
+ createWorkspaceSessionOwnerIndex
170
+ } from "./chunk-UGYMA4EI.js";
171
171
  import "./chunk-GRC5HGPI.js";
172
+ import {
173
+ daemonObservedContactsPath,
174
+ loadChannelsConfig
175
+ } from "./chunk-VTKWURCJ.js";
176
+ import "./chunk-GOWMC4CS.js";
177
+ import "./chunk-57OAHC2Y.js";
178
+ import {
179
+ parseChannelWebhookConfigLenient
180
+ } from "./chunk-QD6BRERJ.js";
181
+ import "./chunk-6ZBPS62S.js";
182
+ import "./chunk-V6WHFGST.js";
172
183
  import {
173
184
  SessionArtifactAuthorizationError,
174
185
  SessionArtifactValidationError,
175
186
  createAcpSessionBridge,
176
187
  parseSessionSource
177
- } from "./chunk-R3VZNHRX.js";
188
+ } from "./chunk-IT27F3ES.js";
178
189
  import {
179
190
  EVENT_SCHEMA_VERSION,
180
191
  SubscriberLimitExceededError
181
192
  } from "./chunk-6RLROE6G.js";
182
193
  import "./chunk-COH43MRJ.js";
183
194
  import "./chunk-QR6U5QPP.js";
184
- import "./chunk-DMRO4GU2.js";
185
195
  import {
186
196
  BranchWhilePromptActiveError,
187
197
  CancelSentinelCollisionError,
@@ -195,6 +205,7 @@ import {
195
205
  McpServerRestartFailedError,
196
206
  PermissionForbiddenError,
197
207
  PermissionPolicyNotImplementedError,
208
+ PromptDeadlineExceededError,
198
209
  PromptQueueFullError,
199
210
  RestoreInProgressError,
200
211
  SessionArchivedError,
@@ -213,37 +224,13 @@ import {
213
224
  WorkspaceInitRaceError,
214
225
  WorkspaceInitSymlinkError,
215
226
  WorkspaceMismatchError
216
- } from "./chunk-X6YQWCIJ.js";
227
+ } from "./chunk-UH3WSE5L.js";
228
+ import "./chunk-OAGG6CRR.js";
217
229
  import {
218
230
  STATUS_SCHEMA_VERSION,
219
231
  createIdleWorkspaceMemoryStatus,
220
232
  mapDomainErrorToErrorKind
221
- } from "./chunk-DZZIOIVF.js";
222
- import "./chunk-WBL3FJEU.js";
223
- import {
224
- daemonObservedContactsPath,
225
- loadChannelsConfig
226
- } from "./chunk-CUJX3F4X.js";
227
- import "./chunk-6MC5ASQK.js";
228
- import "./chunk-57OAHC2Y.js";
229
- import {
230
- parseChannelWebhookConfigLenient
231
- } from "./chunk-32F7BZSK.js";
232
- import "./chunk-6ZBPS62S.js";
233
- import "./chunk-V6WHFGST.js";
234
- import {
235
- MAX_REGISTERED_WORKSPACES,
236
- WorkspaceDisplayNameValidationError,
237
- WorkspaceRegistrationStoreCommittedError,
238
- WorkspaceRegistrationStoreLimitError,
239
- normalizeWorkspaceDisplayName,
240
- workspaceRegistrationId
241
- } from "./chunk-LWQ4IAOJ.js";
242
- import {
243
- MAX_WORKSPACE_PATH_LENGTH,
244
- canonicalizeWorkspace,
245
- canonicalizeWorkspaces
246
- } from "./chunk-W7FJ3N32.js";
233
+ } from "./chunk-FSXCGBXB.js";
247
234
  import {
248
235
  MAX_CHANNEL_STARTUP_FAILURES,
249
236
  MAX_CHANNEL_STARTUP_FAILURE_CHANNEL_LENGTH,
@@ -259,7 +246,7 @@ import {
259
246
  import {
260
247
  redactLogCredentials
261
248
  } from "./chunk-M5GB774H.js";
262
- import "./chunk-5HBA2Z7V.js";
249
+ import "./chunk-WBL3FJEU.js";
263
250
  import "./chunk-T2NCM2ET.js";
264
251
  import {
265
252
  sanitizeLogText
@@ -274,23 +261,38 @@ import {
274
261
  getWritableScopes,
275
262
  loadSettings,
276
263
  validateSettingValue
277
- } from "./chunk-5JX5EWR5.js";
264
+ } from "./chunk-J3VSRG5Y.js";
278
265
  import "./chunk-RKUWKYED.js";
279
- import "./chunk-GOXKNSDZ.js";
280
- import "./chunk-IDS7MSUP.js";
281
266
  import {
282
267
  SUPPORTED_LANGUAGES,
283
268
  detectSystemLanguage,
284
269
  resolveLanguageSetting,
285
270
  resolveSupportedLanguage
286
- } from "./chunk-6DHWO5ZF.js";
287
- import "./chunk-KTNIZG2C.js";
271
+ } from "./chunk-K4VB66QF.js";
272
+ import "./chunk-CMRYLH67.js";
273
+ import "./chunk-GOXKNSDZ.js";
288
274
  import "./chunk-QRUIS3DN.js";
289
- import "./chunk-XCHUDLER.js";
275
+ import {
276
+ MAX_REGISTERED_WORKSPACES,
277
+ WorkspaceDisplayNameValidationError,
278
+ WorkspaceRegistrationStoreCommittedError,
279
+ WorkspaceRegistrationStoreLimitError,
280
+ normalizeWorkspaceDisplayName,
281
+ workspaceRegistrationId
282
+ } from "./chunk-H4OWOFZL.js";
283
+ import {
284
+ MAX_WORKSPACE_PATH_LENGTH,
285
+ canonicalizeWorkspace,
286
+ canonicalizeWorkspaces,
287
+ translateAndCheckAbsoluteWorkspacePath
288
+ } from "./chunk-2RFKHEXL.js";
289
+ import "./chunk-5HBA2Z7V.js";
290
+ import "./chunk-IDS7MSUP.js";
291
+ import "./chunk-CHLNJN3C.js";
290
292
  import "./chunk-VJNBRRZG.js";
291
293
  import {
292
294
  getWorkspaceTrustStatus
293
- } from "./chunk-4RA7PWIY.js";
295
+ } from "./chunk-LMQNDPVP.js";
294
296
  import "./chunk-ALGGS7UH.js";
295
297
  import {
296
298
  isWithinRoot as isWithinRoot2
@@ -316,6 +318,7 @@ import {
316
318
  SESSION_TRANSCRIPT_MAX_INDEX_BYTES,
317
319
  SESSION_TRANSCRIPT_MAX_LIMIT,
318
320
  SESSION_TRANSCRIPT_MAX_PAGE_BYTES,
321
+ SESSION_WRITER_RPC_CODES,
319
322
  SessionOrganizationError,
320
323
  SessionOrganizationService,
321
324
  SessionService,
@@ -324,6 +327,7 @@ import {
324
327
  SessionTranscriptReader,
325
328
  SessionTranscriptSnapshotUnavailableError,
326
329
  SessionTranscriptTooLargeError,
330
+ SessionWriterError,
327
331
  StandardFileSystemService,
328
332
  StdioClientTransport,
329
333
  StreamableHTTPClientTransport,
@@ -354,18 +358,18 @@ import {
354
358
  writeWorkspaceContextFile,
355
359
  writeWorktreeSession,
356
360
  writeWorktreeSessionMarker
357
- } from "./chunk-NO6XTCYT.js";
358
- import "./chunk-5M6IDOMF.js";
361
+ } from "./chunk-6RQ5IPUX.js";
359
362
  import "./chunk-T4TZQJ7W.js";
360
363
  import "./chunk-H6XPXXMH.js";
364
+ import "./chunk-5M6IDOMF.js";
365
+ import "./chunk-T2L47JJK.js";
366
+ import "./chunk-GPSKDNEE.js";
367
+ import "./chunk-X6N25LXS.js";
368
+ import "./chunk-E2UVIFI2.js";
361
369
  import {
362
370
  MAX_JOBS,
363
371
  nextDurableFireMs
364
- } from "./chunk-EAUYY7SS.js";
365
- import "./chunk-FSL5W5TI.js";
366
- import "./chunk-OONJNQ42.js";
367
- import "./chunk-D2VIDMVM.js";
368
- import "./chunk-E2UVIFI2.js";
372
+ } from "./chunk-Q2YKNMLS.js";
369
373
  import {
370
374
  nextFireTime,
371
375
  parseCron
@@ -378,20 +382,27 @@ import {
378
382
  readCronTasks,
379
383
  taskHasLegacyCondition,
380
384
  updateCronTasks
381
- } from "./chunk-EIAK6Q2B.js";
385
+ } from "./chunk-KHOVYUHX.js";
382
386
  import "./chunk-SZRN75WQ.js";
383
- import "./chunk-HTO4JFDZ.js";
387
+ import "./chunk-6PVPNMXU.js";
388
+ import "./chunk-TJQXJJX7.js";
384
389
  import "./chunk-CPBF7KYF.js";
390
+ import "./chunk-NABLFI57.js";
391
+ import "./chunk-QBUDF33N.js";
392
+ import "./chunk-LIZRAKPB.js";
385
393
  import {
386
394
  APPROVAL_MODES,
387
395
  SubagentError,
388
396
  SubagentErrorCode
389
- } from "./chunk-CPCVCKKF.js";
397
+ } from "./chunk-WHGVTP7Q.js";
390
398
  import "./chunk-6AM5D4ME.js";
391
- import "./chunk-G45X5TRN.js";
392
- import "./chunk-PBATSWUQ.js";
393
- import "./chunk-ZEOZL37W.js";
394
- import "./chunk-OOCI5VVU.js";
399
+ import "./chunk-JCW2R7WC.js";
400
+ import "./chunk-57FIIFJN.js";
401
+ import "./chunk-HTO4JFDZ.js";
402
+ import "./chunk-XVNQMZ2I.js";
403
+ import "./chunk-CR3C7WXL.js";
404
+ import "./chunk-FODK6UMO.js";
405
+ import "./chunk-GLNBDYUX.js";
395
406
  import {
396
407
  QwenOAuth2Client,
397
408
  QwenOAuthPollError,
@@ -400,9 +411,12 @@ import {
400
411
  isDeviceAuthorizationSuccess,
401
412
  isDeviceTokenPending,
402
413
  isDeviceTokenSuccess
403
- } from "./chunk-25Y6JSH2.js";
404
- import "./chunk-246TW4IX.js";
414
+ } from "./chunk-5MZSD2JX.js";
405
415
  import "./chunk-JESCGQM3.js";
416
+ import "./chunk-OZYV6F53.js";
417
+ import "./chunk-BEKZWVJJ.js";
418
+ import "./chunk-DJ2GSRLV.js";
419
+ import "./chunk-5I5BM454.js";
406
420
  import {
407
421
  addDaemonRequestAttribute,
408
422
  decodeBufferWithEncodingInfo,
@@ -416,37 +430,35 @@ import {
416
430
  recordDaemonHttpRequest,
417
431
  recordDaemonHttpResponse,
418
432
  withDaemonRequestSpan
419
- } from "./chunk-P64HXIC5.js";
420
- import "./chunk-4WKAA4KS.js";
421
- import "./chunk-CR3C7WXL.js";
433
+ } from "./chunk-ZJVVETCV.js";
422
434
  import "./chunk-VGC4I5JJ.js";
423
- import "./chunk-JD3MKVKL.js";
424
- import "./chunk-UEY4AYUL.js";
425
- import "./chunk-BDBMYST4.js";
426
- import "./chunk-EZVDJFZ7.js";
427
- import "./chunk-OP4MOGXF.js";
428
- import "./chunk-XVNQMZ2I.js";
429
- import "./chunk-FEOZBUMT.js";
430
- import "./chunk-DJ2GSRLV.js";
431
- import "./chunk-6EFTQYW7.js";
432
- import "./chunk-FZVSFBNW.js";
435
+ import "./chunk-4K56OJFJ.js";
436
+ import "./chunk-JYS55H6Z.js";
433
437
  import "./chunk-A4UCTEB5.js";
434
438
  import "./chunk-XWRJCPHC.js";
439
+ import "./chunk-QNLNLENL.js";
440
+ import "./chunk-6X4GWOPW.js";
435
441
  import "./chunk-TYQMGACW.js";
436
442
  import {
437
443
  import_websocket_server
438
444
  } from "./chunk-TYAMGABM.js";
439
445
  import "./chunk-FCMNKVXT.js";
446
+ import "./chunk-7362QS5B.js";
447
+ import "./chunk-HTR4WV6U.js";
448
+ import "./chunk-M7WBGLYP.js";
449
+ import "./chunk-U7ZFW55U.js";
450
+ import "./chunk-NPQDJGKU.js";
451
+ import "./chunk-YM3SZTH4.js";
440
452
  import {
441
453
  FatalConfigError,
442
454
  Storage,
443
455
  createDebugLogger,
444
456
  runWithoutDebugLogSession
445
- } from "./chunk-C27BYUX6.js";
457
+ } from "./chunk-OQB4EXO4.js";
446
458
  import "./chunk-75DOP5OR.js";
447
459
  import "./chunk-DMTGGOSA.js";
448
460
  import "./chunk-YQ3U5MUC.js";
449
- import "./chunk-TB6UDU4T.js";
461
+ import "./chunk-THJNPLI4.js";
450
462
  import {
451
463
  init_esbuild_shims
452
464
  } from "./chunk-5O2XNYP6.js";
@@ -465,7 +477,6 @@ import { createHash as createHash3, timingSafeEqual } from "node:crypto";
465
477
 
466
478
  // packages/cli/src/serve/acp-http/dispatch.ts
467
479
  init_esbuild_shims();
468
- import path9 from "node:path";
469
480
 
470
481
  // packages/cli/src/serve/fs/errors.ts
471
482
  init_esbuild_shims();
@@ -6573,6 +6584,43 @@ function errMsg(err) {
6573
6584
  return err instanceof Error ? err.message : String(err);
6574
6585
  }
6575
6586
  __name(errMsg, "errMsg");
6587
+ var SESSION_WRITER_RPC_ERRORS = {
6588
+ session_writer_conflict: {
6589
+ code: SESSION_WRITER_RPC_CODES.session_writer_conflict,
6590
+ message: "This session is already open in another Qwen process."
6591
+ },
6592
+ session_writer_lost: {
6593
+ code: SESSION_WRITER_RPC_CODES.session_writer_lost,
6594
+ message: "Write ownership for this session was lost."
6595
+ },
6596
+ session_transcript_changed: {
6597
+ code: SESSION_WRITER_RPC_CODES.session_transcript_changed,
6598
+ message: "The session transcript changed outside its active writer."
6599
+ },
6600
+ session_writer_unavailable: {
6601
+ code: SESSION_WRITER_RPC_CODES.session_writer_unavailable,
6602
+ message: "Session write ownership could not be verified."
6603
+ }
6604
+ };
6605
+ function sessionWriterRpcError(err) {
6606
+ if (!err || typeof err !== "object") return void 0;
6607
+ const candidate = err;
6608
+ const data = isObject(candidate["data"]) ? candidate["data"] : void 0;
6609
+ const errorKind = data?.["errorKind"] ?? candidate["errorKind"];
6610
+ if (typeof errorKind !== "string" || !(errorKind in SESSION_WRITER_RPC_ERRORS)) {
6611
+ return void 0;
6612
+ }
6613
+ const typedKind = errorKind;
6614
+ const expected = SESSION_WRITER_RPC_ERRORS[typedKind];
6615
+ const code = candidate["code"] ?? candidate["rpcCode"];
6616
+ if (code !== expected.code) return void 0;
6617
+ return {
6618
+ code: expected.code,
6619
+ message: expected.message,
6620
+ data: { errorKind: typedKind }
6621
+ };
6622
+ }
6623
+ __name(sessionWriterRpcError, "sessionWriterRpcError");
6576
6624
  var debugLogger2 = createDebugLogger("ACP_HTTP_DISPATCH");
6577
6625
  var SESSION_SHELL_METHOD = `${QWEN_METHOD_NS}session/shell`;
6578
6626
  var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
@@ -6705,10 +6753,11 @@ function parseOptionalWorkspaceCwd2(params, boundWorkspace) {
6705
6753
  `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`
6706
6754
  );
6707
6755
  }
6708
- if (!path9.isAbsolute(cwd)) {
6756
+ const sandboxCwd = translateAndCheckAbsoluteWorkspacePath(cwd);
6757
+ if (sandboxCwd === null) {
6709
6758
  throw new AcpParamError("`cwd` must be an absolute path when provided");
6710
6759
  }
6711
- return cwd;
6760
+ return sandboxCwd;
6712
6761
  }
6713
6762
  __name(parseOptionalWorkspaceCwd2, "parseOptionalWorkspaceCwd");
6714
6763
  function validatePrompt(params) {
@@ -6785,6 +6834,8 @@ function pickSessionArtifactInput(params) {
6785
6834
  }
6786
6835
  __name(pickSessionArtifactInput, "pickSessionArtifactInput");
6787
6836
  function toRpcError(err) {
6837
+ const writerError = sessionWriterRpcError(err);
6838
+ if (writerError) return writerError;
6788
6839
  if (err instanceof AcpParamError || err instanceof InvalidCursorError) {
6789
6840
  return { code: RPC.INVALID_PARAMS, message: err.message };
6790
6841
  }
@@ -7521,22 +7572,21 @@ var AcpDispatcher = class {
7521
7572
  conn.ownedSessions.delete(sessionId);
7522
7573
  conn.closingSessions.add(sessionId);
7523
7574
  let closeStarted = false;
7524
- const closeSession = /* @__PURE__ */ __name(async () => {
7525
- closeStarted = true;
7575
+ const closeLocalSessionStream = /* @__PURE__ */ __name(() => {
7526
7576
  try {
7527
- await this.bridge.closeSession(
7528
- sessionId,
7529
- this.sessionCtx(conn, sessionId, loopback)
7577
+ conn.closeSessionStream(sessionId);
7578
+ } catch (teardownErr) {
7579
+ writeStderrLine(
7580
+ `qwen serve: /acp session/close local teardown failed (${logSafe(sessionId)}): ${logSafe(errMsg(teardownErr))}`
7530
7581
  );
7531
- } finally {
7532
- try {
7533
- conn.closeSessionStream(sessionId);
7534
- } catch (teardownErr) {
7535
- writeStderrLine(
7536
- `qwen serve: /acp session/close local teardown failed (${logSafe(sessionId)}): ${logSafe(errMsg(teardownErr))}`
7537
- );
7538
- }
7539
7582
  }
7583
+ }, "closeLocalSessionStream");
7584
+ const closeSession = /* @__PURE__ */ __name(async () => {
7585
+ closeStarted = true;
7586
+ await this.bridge.closeSession(
7587
+ sessionId,
7588
+ this.sessionCtx(conn, sessionId, loopback)
7589
+ );
7540
7590
  }, "closeSession");
7541
7591
  try {
7542
7592
  try {
@@ -7558,11 +7608,19 @@ var AcpDispatcher = class {
7558
7608
  } catch (err) {
7559
7609
  if (!closeStarted) {
7560
7610
  conn.ownedSessions.add(sessionId);
7611
+ } else {
7612
+ try {
7613
+ this.bridge.getSessionSummary(sessionId);
7614
+ conn.ownedSessions.add(sessionId);
7615
+ } catch {
7616
+ closeLocalSessionStream();
7617
+ }
7561
7618
  }
7562
7619
  throw err;
7563
7620
  } finally {
7564
7621
  conn.closingSessions.delete(sessionId);
7565
7622
  }
7623
+ closeLocalSessionStream();
7566
7624
  this.replyConn(conn, id, {});
7567
7625
  return;
7568
7626
  }
@@ -11954,7 +12012,7 @@ function mountAcpHttp(app, bridge, opts) {
11954
12012
  if (!enabled) return void 0;
11955
12013
  const daemonEnv = opts.daemonEnv ?? process.env;
11956
12014
  const primaryEnv = opts.workspaceRegistry ? runtimeEffectiveEnv(opts.workspaceRegistry.primary, daemonEnv) : daemonEnv;
11957
- const path16 = opts.path ?? "/acp";
12015
+ const path15 = opts.path ?? "/acp";
11958
12016
  const dispatcherRef = {};
11959
12017
  let disposed = false;
11960
12018
  const rejectIfDisposed = /* @__PURE__ */ __name((res) => {
@@ -12116,7 +12174,7 @@ function mountAcpHttp(app, bridge, opts) {
12116
12174
  const primaryMount = {
12117
12175
  primary: true,
12118
12176
  workspaceCwd: opts.boundWorkspace,
12119
- routeLabel: logSafe(path16),
12177
+ routeLabel: logSafe(path15),
12120
12178
  rateLimitScope: opts.workspaceRegistry?.primary.workspaceId ?? "primary",
12121
12179
  registry,
12122
12180
  dispatcher,
@@ -12270,7 +12328,7 @@ function mountAcpHttp(app, bridge, opts) {
12270
12328
  });
12271
12329
  }, "handleAcpPost");
12272
12330
  app.post(
12273
- path16,
12331
+ path15,
12274
12332
  (req, res) => handleAcpPost(primaryMount, req, res)
12275
12333
  );
12276
12334
  const handleAcpGet = /* @__PURE__ */ __name((mount, req, res) => {
@@ -12360,10 +12418,10 @@ function mountAcpHttp(app, bridge, opts) {
12360
12418
  onPumpSettled();
12361
12419
  });
12362
12420
  }, "handleAcpGet");
12363
- app.get(path16, (req, res) => {
12421
+ app.get(path15, (req, res) => {
12364
12422
  handleAcpGet(primaryMount, req, res);
12365
12423
  });
12366
- app.delete(path16, (req, res) => {
12424
+ app.delete(path15, (req, res) => {
12367
12425
  handleAcpDelete(primaryMount, req, res);
12368
12426
  });
12369
12427
  const createSecondaryAcpMount = /* @__PURE__ */ __name((rt) => {
@@ -12555,7 +12613,7 @@ function mountAcpHttp(app, bridge, opts) {
12555
12613
  const isPluralAcpShape = pluralRawSelector !== null;
12556
12614
  const pluralVoiceRawSelector = opts.workspaceVoiceConnection ? pluralWorkspaceRawSelector(rawPath, PLURAL_VOICE_WS_SUFFIX) : null;
12557
12615
  const isPluralVoiceShape = pluralVoiceRawSelector !== null;
12558
- if (rawPath !== path16 && !isCdpPath && !extraRoute && !isPluralAcpShape && !isPluralVoiceShape) {
12616
+ if (rawPath !== path15 && !isCdpPath && !extraRoute && !isPluralAcpShape && !isPluralVoiceShape) {
12559
12617
  logReject(`unknown-path ${logSafe(rawPath)}`);
12560
12618
  socket.destroy();
12561
12619
  return;
@@ -13080,7 +13138,7 @@ function mountAcpHttp(app, bridge, opts) {
13080
13138
  });
13081
13139
  }, "upgradeListener");
13082
13140
  httpServer.on("upgrade", upgradeListener);
13083
- writeStderrLine(`qwen serve: /acp WebSocket transport enabled on ${path16}`);
13141
+ writeStderrLine(`qwen serve: /acp WebSocket transport enabled on ${path15}`);
13084
13142
  }
13085
13143
  __name(setupWebSocket, "setupWebSocket");
13086
13144
  return {
@@ -13710,7 +13768,7 @@ var CdpTunnelRegistry = class {
13710
13768
  // packages/cli/src/serve/web-shell-static.ts
13711
13769
  init_esbuild_shims();
13712
13770
  var import_express2 = __toESM(require_express(), 1);
13713
- import * as path10 from "node:path";
13771
+ import * as path9 from "node:path";
13714
13772
  var WEB_SHELL_CSP_DIRECTIVES = [
13715
13773
  "default-src 'self'",
13716
13774
  "script-src 'self' 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",
@@ -13738,7 +13796,7 @@ function isDocumentNavigation(req) {
13738
13796
  }
13739
13797
  __name(isDocumentNavigation, "isDocumentNavigation");
13740
13798
  function createSendIndex(webShellDir, frameAncestors = []) {
13741
- const indexPath = path10.join(webShellDir, "index.html");
13799
+ const indexPath = path9.join(webShellDir, "index.html");
13742
13800
  const csp = buildWebShellCsp(frameAncestors);
13743
13801
  return (res) => {
13744
13802
  res.status(200).set("Content-Security-Policy", csp).set("X-Content-Type-Options", "nosniff").set("Referrer-Policy", "no-referrer").set(
@@ -13774,7 +13832,7 @@ function mountWebShellAssets(app, webShellDir, frameAncestors = []) {
13774
13832
  const sendIndex = createSendIndex(webShellDir, frameAncestors);
13775
13833
  app.use(
13776
13834
  "/assets",
13777
- import_express2.default.static(path10.join(webShellDir, "assets"), {
13835
+ import_express2.default.static(path9.join(webShellDir, "assets"), {
13778
13836
  index: false,
13779
13837
  immutable: true,
13780
13838
  maxAge: "1y"
@@ -18068,8 +18126,8 @@ function decodePathSegment(value) {
18068
18126
  }
18069
18127
  __name(decodePathSegment, "decodePathSegment");
18070
18128
  function matchLegacySessionTelemetryRoute(method, requestPath) {
18071
- const path16 = requestPath.length > 1 && requestPath.endsWith("/") ? requestPath.slice(0, -1) : requestPath;
18072
- const requestSegments = path16.split("/").slice(1);
18129
+ const path15 = requestPath.length > 1 && requestPath.endsWith("/") ? requestPath.slice(0, -1) : requestPath;
18130
+ const requestSegments = path15.split("/").slice(1);
18073
18131
  const prefix = requestSegments[0]?.toLowerCase();
18074
18132
  if (prefix !== "session" && prefix !== "sessions" && prefix !== "permission") {
18075
18133
  return void 0;
@@ -18121,23 +18179,23 @@ __name(setDaemonTelemetryWorkspace, "setDaemonTelemetryWorkspace");
18121
18179
  function resolveDaemonTelemetryRoute(req) {
18122
18180
  const legacyRoute = matchLegacySessionTelemetryRoute(req.method, req.path);
18123
18181
  if (legacyRoute) return legacyRoute;
18124
- const path16 = req.path.replace(/\/$/, "") || "/";
18125
- if (req.method === "GET" && path16 === "/daemon/status") {
18182
+ const path15 = req.path.replace(/\/$/, "") || "/";
18183
+ if (req.method === "GET" && path15 === "/daemon/status") {
18126
18184
  return { route: "GET /daemon/status" };
18127
18185
  }
18128
- if (req.method === "GET" && /^\/workspace\/[^/]+\/sessions$/.test(path16)) {
18186
+ if (req.method === "GET" && /^\/workspace\/[^/]+\/sessions$/.test(path15)) {
18129
18187
  return { route: "GET /workspace/:id/sessions" };
18130
18188
  }
18131
- if (req.method === "GET" && /^\/workspaces\/[^/]+\/sessions$/.test(path16)) {
18189
+ if (req.method === "GET" && /^\/workspaces\/[^/]+\/sessions$/.test(path15)) {
18132
18190
  return { route: "GET /workspace/:id/sessions" };
18133
18191
  }
18134
- if (req.method === "GET" && /^\/workspace\/[^/]+\/session-info$/.test(path16)) {
18192
+ if (req.method === "GET" && /^\/workspace\/[^/]+\/session-info$/.test(path15)) {
18135
18193
  return { route: "GET /workspace/:id/session-info" };
18136
18194
  }
18137
- if (req.method === "GET" && /^\/workspaces\/[^/]+\/session-info$/.test(path16)) {
18195
+ if (req.method === "GET" && /^\/workspaces\/[^/]+\/session-info$/.test(path15)) {
18138
18196
  return { route: "GET /workspace/:id/session-info" };
18139
18197
  }
18140
- const workspaceTranscript = path16.match(
18198
+ const workspaceTranscript = path15.match(
18141
18199
  /^\/workspaces\/[^/]+\/session\/([^/]+)\/transcript$/
18142
18200
  );
18143
18201
  if (workspaceTranscript?.[1] && req.method === "GET") {
@@ -18146,7 +18204,7 @@ function resolveDaemonTelemetryRoute(req) {
18146
18204
  sessionId: decodePathSegment(workspaceTranscript[1])
18147
18205
  };
18148
18206
  }
18149
- const workspaceExport = path16.match(
18207
+ const workspaceExport = path15.match(
18150
18208
  /^\/workspaces\/[^/]+\/session\/([^/]+)\/export$/
18151
18209
  );
18152
18210
  if (workspaceExport?.[1] && req.method === "GET") {
@@ -18155,7 +18213,7 @@ function resolveDaemonTelemetryRoute(req) {
18155
18213
  sessionId: decodePathSegment(workspaceExport[1])
18156
18214
  };
18157
18215
  }
18158
- const workspaceArchivedExport = path16.match(
18216
+ const workspaceArchivedExport = path15.match(
18159
18217
  /^\/workspaces\/[^/]+\/session\/([^/]+)\/archive\/export$/
18160
18218
  );
18161
18219
  if (workspaceArchivedExport?.[1] && req.method === "GET") {
@@ -18165,8 +18223,8 @@ function resolveDaemonTelemetryRoute(req) {
18165
18223
  };
18166
18224
  }
18167
18225
  const pluralWorkspacePrefix = /^\/workspaces\/[^/]+/;
18168
- if (pluralWorkspacePrefix.test(path16)) {
18169
- const suffix = path16.replace(pluralWorkspacePrefix, "/workspace");
18226
+ if (pluralWorkspacePrefix.test(path15)) {
18227
+ const suffix = path15.replace(pluralWorkspacePrefix, "/workspace");
18170
18228
  if (req.method === "GET") {
18171
18229
  if (suffix === "/workspace/mcp" || suffix === "/workspace/skills" || suffix === "/workspace/tools" || suffix === "/workspace/providers" || suffix === "/workspace/env" || suffix === "/workspace/preflight" || suffix === "/workspace/hooks" || suffix === "/workspace/settings" || suffix === "/workspace/voice" || suffix === "/workspace/permissions" || suffix === "/workspace/trust" || suffix === "/workspace/memory" || suffix === "/workspace/agents") {
18172
18230
  return { route: `GET ${suffix}` };
@@ -18225,58 +18283,58 @@ function resolveDaemonTelemetryRoute(req) {
18225
18283
  return { route: "DELETE /workspace/session-groups/:groupId" };
18226
18284
  }
18227
18285
  }
18228
- if (req.method === "POST" && path16 === "/workspace/init") {
18286
+ if (req.method === "POST" && path15 === "/workspace/init") {
18229
18287
  return { route: "POST /workspace/init" };
18230
18288
  }
18231
- if (req.method === "POST" && path16 === "/workspace/setup-github") {
18289
+ if (req.method === "POST" && path15 === "/workspace/setup-github") {
18232
18290
  return { route: "POST /workspace/setup-github" };
18233
18291
  }
18234
- if (req.method === "POST" && path16 === "/workspace/reload") {
18292
+ if (req.method === "POST" && path15 === "/workspace/reload") {
18235
18293
  return { route: "POST /workspace/reload" };
18236
18294
  }
18237
- const mcpRestart = path16.match(/^\/workspace\/mcp\/([^/]+)\/restart$/);
18295
+ const mcpRestart = path15.match(/^\/workspace\/mcp\/([^/]+)\/restart$/);
18238
18296
  if (mcpRestart?.[1] && req.method === "POST") {
18239
18297
  return { route: "POST /workspace/mcp/:server/restart" };
18240
18298
  }
18241
- if (req.method === "POST" && path16 === "/workspace/mcp/servers") {
18299
+ if (req.method === "POST" && path15 === "/workspace/mcp/servers") {
18242
18300
  return { route: "POST /workspace/mcp/servers" };
18243
18301
  }
18244
- const mcpDelete = path16.match(/^\/workspace\/mcp\/servers\/([^/]+)$/);
18302
+ const mcpDelete = path15.match(/^\/workspace\/mcp\/servers\/([^/]+)$/);
18245
18303
  if (mcpDelete?.[1] && req.method === "DELETE") {
18246
18304
  return { route: "DELETE /workspace/mcp/servers/:name" };
18247
18305
  }
18248
- if (req.method === "POST" && path16 === "/workspace/auth/device-flow") {
18306
+ if (req.method === "POST" && path15 === "/workspace/auth/device-flow") {
18249
18307
  return { route: "POST /workspace/auth/device-flow" };
18250
18308
  }
18251
- const deviceFlowDelete = path16.match(
18309
+ const deviceFlowDelete = path15.match(
18252
18310
  /^\/workspace\/auth\/device-flow\/([^/]+)$/
18253
18311
  );
18254
18312
  if (deviceFlowDelete?.[1] && req.method === "DELETE") {
18255
18313
  return { route: "DELETE /workspace/auth/device-flow/:id" };
18256
18314
  }
18257
- const toolEnable = path16.match(/^\/workspace\/tools\/([^/]+)\/enable$/);
18315
+ const toolEnable = path15.match(/^\/workspace\/tools\/([^/]+)\/enable$/);
18258
18316
  if (toolEnable?.[1] && req.method === "POST") {
18259
18317
  return { route: "POST /workspace/tools/:name/enable" };
18260
18318
  }
18261
- if (path16 === "/workspace/settings") {
18319
+ if (path15 === "/workspace/settings") {
18262
18320
  if (req.method === "GET") return { route: "GET /workspace/settings" };
18263
18321
  if (req.method === "POST") return { route: "POST /workspace/settings" };
18264
18322
  }
18265
- if (path16 === "/workspace/permissions") {
18323
+ if (path15 === "/workspace/permissions") {
18266
18324
  if (req.method === "GET") return { route: "GET /workspace/permissions" };
18267
18325
  if (req.method === "POST") return { route: "POST /workspace/permissions" };
18268
18326
  }
18269
- if (path16 === "/workspace/trust") {
18327
+ if (path15 === "/workspace/trust") {
18270
18328
  if (req.method === "GET") return { route: "GET /workspace/trust" };
18271
18329
  }
18272
- if (req.method === "POST" && path16 === "/workspace/trust/request") {
18330
+ if (req.method === "POST" && path15 === "/workspace/trust/request") {
18273
18331
  return { route: "POST /workspace/trust/request" };
18274
18332
  }
18275
- if (path16 === "/workspace/voice") {
18333
+ if (path15 === "/workspace/voice") {
18276
18334
  if (req.method === "GET") return { route: "GET /workspace/voice" };
18277
18335
  if (req.method === "POST") return { route: "POST /workspace/voice" };
18278
18336
  }
18279
- if (req.method === "POST" && path16 === "/workspace/voice/transcribe") {
18337
+ if (req.method === "POST" && path15 === "/workspace/voice/transcribe") {
18280
18338
  return { route: "POST /workspace/voice/transcribe" };
18281
18339
  }
18282
18340
  return void 0;
@@ -18536,21 +18594,10 @@ __name(registerPermissionRoutes, "registerPermissionRoutes");
18536
18594
  init_esbuild_shims();
18537
18595
  import * as crypto3 from "node:crypto";
18538
18596
  import * as fs3 from "node:fs";
18539
- import * as path11 from "node:path";
18597
+ import * as path10 from "node:path";
18540
18598
 
18541
18599
  // packages/cli/src/serve/server/prompt-deadline.ts
18542
18600
  init_esbuild_shims();
18543
- var PromptDeadlineExceededError = class extends Error {
18544
- static {
18545
- __name(this, "PromptDeadlineExceededError");
18546
- }
18547
- deadlineMs;
18548
- constructor(deadlineMs) {
18549
- super(`prompt exceeded the ${deadlineMs}ms deadline`);
18550
- this.name = "PromptDeadlineExceededError";
18551
- this.deadlineMs = deadlineMs;
18552
- }
18553
- };
18554
18601
  function resolvePromptDeadlineMs(serverMs, requestMs) {
18555
18602
  if (serverMs === void 0 || !Number.isFinite(serverMs) || serverMs <= 0) {
18556
18603
  return void 0;
@@ -19477,7 +19524,7 @@ function registerSessionRoutes(app, deps) {
19477
19524
  const workspaceParam = req.params[paramName] ?? "";
19478
19525
  const byId = workspaceRegistry.getByWorkspaceId(workspaceParam);
19479
19526
  if (byId) return byId;
19480
- if (!path11.isAbsolute(workspaceParam)) {
19527
+ if (!path10.isAbsolute(workspaceParam)) {
19481
19528
  res.status(400).json({
19482
19529
  error: `\`:${paramName}\` must decode to a workspace id or absolute path`
19483
19530
  });
@@ -19891,7 +19938,7 @@ function registerSessionRoutes(app, deps) {
19891
19938
  })), "serializeSessionErrors");
19892
19939
  const resolveWorkspaceParam = /* @__PURE__ */ __name((req, res) => {
19893
19940
  const workspaceCwd = req.params["id"] ?? "";
19894
- if (!path11.isAbsolute(workspaceCwd)) {
19941
+ if (!path10.isAbsolute(workspaceCwd)) {
19895
19942
  res.status(400).json({ error: "`:id` must decode to an absolute workspace path" });
19896
19943
  return null;
19897
19944
  }
@@ -20077,7 +20124,7 @@ function registerSessionRoutes(app, deps) {
20077
20124
  if (worktreeMeta) {
20078
20125
  try {
20079
20126
  const createAllowedRoots = [
20080
- path11.join(workspaceCwd, ".qwen", "worktrees")
20127
+ path10.join(workspaceCwd, ".qwen", "worktrees")
20081
20128
  ];
20082
20129
  let createRepoTop = null;
20083
20130
  try {
@@ -20088,7 +20135,7 @@ function registerSessionRoutes(app, deps) {
20088
20135
  }
20089
20136
  if (createRepoTop && createRepoTop !== workspaceCwd) {
20090
20137
  createAllowedRoots.push(
20091
- path11.join(createRepoTop, ".qwen", "worktrees")
20138
+ path10.join(createRepoTop, ".qwen", "worktrees")
20092
20139
  );
20093
20140
  }
20094
20141
  await runtime.bridge.changeSessionCwd(session.sessionId, {
@@ -20233,7 +20280,7 @@ function registerSessionRoutes(app, deps) {
20233
20280
  if (sidecar) {
20234
20281
  let realTarget;
20235
20282
  const candidateRoots = [
20236
- path11.join(workspaceCwd, ".qwen", "worktrees")
20283
+ path10.join(workspaceCwd, ".qwen", "worktrees")
20237
20284
  ];
20238
20285
  try {
20239
20286
  realTarget = fs3.realpathSync(sidecar.worktreePath);
@@ -20245,13 +20292,13 @@ function registerSessionRoutes(app, deps) {
20245
20292
  } catch {
20246
20293
  }
20247
20294
  if (repoTop && repoTop !== workspaceCwd) {
20248
- candidateRoots.push(path11.join(repoTop, ".qwen", "worktrees"));
20295
+ candidateRoots.push(path10.join(repoTop, ".qwen", "worktrees"));
20249
20296
  }
20250
20297
  const contained = candidateRoots.some((root) => {
20251
20298
  try {
20252
20299
  const realRoot = fs3.realpathSync(root);
20253
- const rel = path11.relative(realRoot, realTarget);
20254
- return !rel.startsWith("..") && !path11.isAbsolute(rel);
20300
+ const rel = path10.relative(realRoot, realTarget);
20301
+ return !rel.startsWith("..") && !path10.isAbsolute(rel);
20255
20302
  } catch {
20256
20303
  return false;
20257
20304
  }
@@ -20274,10 +20321,12 @@ function registerSessionRoutes(app, deps) {
20274
20321
  branch: sidecar.worktreeBranch
20275
20322
  };
20276
20323
  try {
20277
- await runtime.bridge.changeSessionCwd(sessionId, {
20278
- path: wt.path,
20279
- allowedRoots: candidateRoots
20280
- });
20324
+ if (!session.hasActivePrompt) {
20325
+ await runtime.bridge.changeSessionCwd(sessionId, {
20326
+ path: wt.path,
20327
+ allowedRoots: candidateRoots
20328
+ });
20329
+ }
20281
20330
  runtime.bridge.setSessionWorktree(sessionId, wt);
20282
20331
  session.worktree = wt;
20283
20332
  } catch (restoreErr) {
@@ -20371,7 +20420,7 @@ function registerSessionRoutes(app, deps) {
20371
20420
  async (req, res, sessionId) => {
20372
20421
  const body = safeBody(req);
20373
20422
  const targetPath = body["path"];
20374
- if (typeof targetPath !== "string" || targetPath.length === 0 || !path11.isAbsolute(targetPath)) {
20423
+ if (typeof targetPath !== "string" || targetPath.length === 0 || !path10.isAbsolute(targetPath)) {
20375
20424
  res.status(400).json({
20376
20425
  error: "`path` is required and must be an absolute path",
20377
20426
  code: "invalid_path"
@@ -20873,15 +20922,6 @@ function registerSessionRoutes(app, deps) {
20873
20922
  promptDeadlineMs,
20874
20923
  requestDeadlineMs
20875
20924
  );
20876
- let deadlineTimer;
20877
- if (effectiveDeadlineMs !== void 0) {
20878
- deadlineTimer = setTimeout(() => {
20879
- if (!abort.signal.aborted) {
20880
- abort.abort(new PromptDeadlineExceededError(effectiveDeadlineMs));
20881
- }
20882
- }, effectiveDeadlineMs);
20883
- deadlineTimer.unref();
20884
- }
20885
20925
  let promptPromise;
20886
20926
  try {
20887
20927
  promptPromise = ownerBridge.sendPrompt(
@@ -20894,11 +20934,11 @@ function registerSessionRoutes(app, deps) {
20894
20934
  abort.signal,
20895
20935
  {
20896
20936
  ...clientId !== void 0 ? { clientId } : {},
20897
- promptId
20937
+ promptId,
20938
+ ...effectiveDeadlineMs !== void 0 ? { deadlineMs: effectiveDeadlineMs } : {}
20898
20939
  }
20899
20940
  );
20900
20941
  } catch (err) {
20901
- if (deadlineTimer !== void 0) clearTimeout(deadlineTimer);
20902
20942
  res.off("close", onResClose);
20903
20943
  res.off("finish", onResFinish);
20904
20944
  if (daemonLog && err instanceof PromptQueueFullError) {
@@ -20943,9 +20983,7 @@ function registerSessionRoutes(app, deps) {
20943
20983
  );
20944
20984
  }
20945
20985
  }
20946
- ).finally(() => {
20947
- if (deadlineTimer !== void 0) clearTimeout(deadlineTimer);
20948
- }).catch(() => {
20986
+ ).catch(() => {
20949
20987
  });
20950
20988
  if (daemonLog) {
20951
20989
  daemonLog.info("prompt enqueued", { sessionId, promptId, clientId });
@@ -22818,7 +22856,7 @@ __name(registerUsageStatsRoutes, "registerUsageStatsRoutes");
22818
22856
  // packages/cli/src/serve/scheduled-task-keepalive.ts
22819
22857
  init_esbuild_shims();
22820
22858
  import * as fsSync from "node:fs";
22821
- import * as path12 from "node:path";
22859
+ import * as path11 from "node:path";
22822
22860
  var log = createDebugLogger("SCHED_KEEPALIVE");
22823
22861
  function collectBoundSessionIds(tasks) {
22824
22862
  const seen = /* @__PURE__ */ new Set();
@@ -23029,8 +23067,8 @@ function startScheduledTaskKeepalive(opts) {
23029
23067
  timer.unref?.();
23030
23068
  let bindDebounce;
23031
23069
  const cronFilePath = getCronFilePath(boundWorkspace);
23032
- const cronDir = path12.dirname(cronFilePath);
23033
- const cronFileName = path12.basename(cronFilePath);
23070
+ const cronDir = path11.dirname(cronFilePath);
23071
+ const cronFileName = path11.basename(cronFilePath);
23034
23072
  let fileWatcher;
23035
23073
  try {
23036
23074
  fsSync.mkdirSync(cronDir, { recursive: true });
@@ -24220,6 +24258,12 @@ init_esbuild_shims();
24220
24258
 
24221
24259
  // packages/cli/src/serve/server/error-response.ts
24222
24260
  init_esbuild_shims();
24261
+ var SESSION_WRITER_ERROR_MESSAGES = {
24262
+ session_writer_conflict: "This session is already open in another Qwen process.",
24263
+ session_writer_lost: "Write ownership for this session was lost.",
24264
+ session_transcript_changed: "The session transcript changed outside its active writer.",
24265
+ session_writer_unavailable: "Session write ownership could not be verified."
24266
+ };
24223
24267
  function bridgeErrorExtraContext(ctx) {
24224
24268
  const extra = {};
24225
24269
  for (const [key, value] of Object.entries(ctx ?? {})) {
@@ -24272,6 +24316,14 @@ function sendPermissionVoteError(res, err, ctx, daemonLog) {
24272
24316
  }
24273
24317
  __name(sendPermissionVoteError, "sendPermissionVoteError");
24274
24318
  function sendBridgeError(res, err, ctx, daemonLog) {
24319
+ if (err instanceof SessionWriterError) {
24320
+ res.status(err.httpStatus).json({
24321
+ error: err.message,
24322
+ code: err.errorKind,
24323
+ errorKind: err.errorKind
24324
+ });
24325
+ return;
24326
+ }
24275
24327
  if (err instanceof WorkspaceSkillNotFoundError) {
24276
24328
  res.status(404).json({
24277
24329
  error: err.message,
@@ -24584,6 +24636,22 @@ function sendBridgeError(res, err, ctx, daemonLog) {
24584
24636
  const data = err.data;
24585
24637
  if (data && typeof data === "object") {
24586
24638
  const kind = data.errorKind;
24639
+ if (kind === "session_writer_conflict" || kind === "session_writer_lost" || kind === "session_transcript_changed") {
24640
+ res.status(409).json({
24641
+ error: SESSION_WRITER_ERROR_MESSAGES[kind],
24642
+ code: kind,
24643
+ errorKind: kind
24644
+ });
24645
+ return;
24646
+ }
24647
+ if (kind === "session_writer_unavailable") {
24648
+ res.status(503).json({
24649
+ error: SESSION_WRITER_ERROR_MESSAGES[kind],
24650
+ code: kind,
24651
+ errorKind: kind
24652
+ });
24653
+ return;
24654
+ }
24587
24655
  if (kind === "mcp_budget_would_exceed") {
24588
24656
  const d = data;
24589
24657
  res.status(409).json({
@@ -25215,7 +25283,7 @@ __name(registerWorkspaceModelsRoutes, "registerWorkspaceModelsRoutes");
25215
25283
  // packages/cli/src/serve/routes/a2ui-action.ts
25216
25284
  init_esbuild_shims();
25217
25285
  import * as fsp4 from "node:fs/promises";
25218
- import * as path13 from "node:path";
25286
+ import * as path12 from "node:path";
25219
25287
  var A2UI_MIME = "application/a2ui+json";
25220
25288
  var ACTION_TOOL = "action";
25221
25289
  var CALL_TIMEOUT_MS = 15e3;
@@ -25238,7 +25306,7 @@ __name(usableServerConfig, "usableServerConfig");
25238
25306
  async function findFromSettingsFile(workspaceCwd) {
25239
25307
  try {
25240
25308
  const raw = await fsp4.readFile(
25241
- path13.join(workspaceCwd, ".qwen", "settings.json"),
25309
+ path12.join(workspaceCwd, ".qwen", "settings.json"),
25242
25310
  "utf8"
25243
25311
  );
25244
25312
  const settings = JSON.parse(raw);
@@ -25375,7 +25443,7 @@ __name(registerA2uiActionRoutes, "registerA2uiActionRoutes");
25375
25443
 
25376
25444
  // packages/cli/src/serve/server/fs-factory.ts
25377
25445
  init_esbuild_shims();
25378
- import * as path14 from "node:path";
25446
+ import * as path13 from "node:path";
25379
25447
  var IDE_WORKSPACE_PATH_ENV_VAR = "QWEN_CODE_IDE_WORKSPACE_PATH";
25380
25448
  function createDefaultFsAuditEmit() {
25381
25449
  const WARN_EVERY = 100;
@@ -25449,14 +25517,14 @@ function parseIdeWorkspacePathEnv(value) {
25449
25517
  const parsed = JSON.parse(value);
25450
25518
  if (Array.isArray(parsed) && parsed.every((item) => typeof item === "string")) {
25451
25519
  return parsed.filter(
25452
- (workspace) => workspace.length > 0 && path14.isAbsolute(workspace)
25520
+ (workspace) => workspace.length > 0 && path13.isAbsolute(workspace)
25453
25521
  );
25454
25522
  }
25455
25523
  throw new Error("IDE workspace path JSON must be a string array");
25456
25524
  } catch {
25457
25525
  }
25458
25526
  }
25459
- return value.split(path14.delimiter).filter((workspace) => workspace.length > 0 && path14.isAbsolute(workspace));
25527
+ return value.split(path13.delimiter).filter((workspace) => workspace.length > 0 && path13.isAbsolute(workspace));
25460
25528
  }
25461
25529
  __name(parseIdeWorkspacePathEnv, "parseIdeWorkspacePathEnv");
25462
25530
  function dropNestedWorkspacesPreservingPrimary(workspaces) {
@@ -25780,10 +25848,10 @@ function installRateLimiter(app, opts, daemonLog, options = {}) {
25780
25848
  { tier, key: key.slice(0, 64) }
25781
25849
  );
25782
25850
  } : void 0,
25783
- onError: daemonLog ? (err, path16) => {
25851
+ onError: daemonLog ? (err, path15) => {
25784
25852
  daemonLog.warn(
25785
25853
  `rate limiter error (fail-open): ${err instanceof Error ? err.message : String(err)}`,
25786
- { path: path16 }
25854
+ { path: path15 }
25787
25855
  );
25788
25856
  } : void 0
25789
25857
  });
@@ -26134,23 +26202,24 @@ function registerWorkspaceManagementRoutes(app, deps) {
26134
26202
  });
26135
26203
  return;
26136
26204
  }
26137
- if (!isAbsolute7(cwd)) {
26205
+ if (cwd.length > MAX_WORKSPACE_PATH_LENGTH) {
26138
26206
  res.status(400).json({
26139
- error: "`cwd` must be an absolute path",
26207
+ error: `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`,
26140
26208
  code: "invalid_path"
26141
26209
  });
26142
26210
  return;
26143
26211
  }
26144
- if (cwd.length > MAX_WORKSPACE_PATH_LENGTH) {
26212
+ const sandboxCwd = translateAndCheckAbsoluteWorkspacePath(cwd);
26213
+ if (sandboxCwd === null) {
26145
26214
  res.status(400).json({
26146
- error: `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`,
26215
+ error: "`cwd` must be an absolute path",
26147
26216
  code: "invalid_path"
26148
26217
  });
26149
26218
  return;
26150
26219
  }
26151
26220
  let canonical;
26152
26221
  try {
26153
- canonical = realpathSync2.native(resolve4(cwd));
26222
+ canonical = realpathSync2.native(resolve4(sandboxCwd));
26154
26223
  } catch {
26155
26224
  res.status(400).json({
26156
26225
  error: "Path does not exist or is not accessible",
@@ -26971,7 +27040,7 @@ __name(registerWorkspaceManagementRoutes, "registerWorkspaceManagementRoutes");
26971
27040
  // packages/cli/src/serve/routes/workspace-git.ts
26972
27041
  init_esbuild_shims();
26973
27042
  import * as fs4 from "node:fs";
26974
- import * as path15 from "node:path";
27043
+ import * as path14 from "node:path";
26975
27044
  function registerWorkspaceGitRoutes(app, deps) {
26976
27045
  app.get("/workspace/git", async (_req, res) => {
26977
27046
  try {
@@ -26997,10 +27066,10 @@ function registerWorkspaceQualifiedGitRoutes(app, deps) {
26997
27066
  let gitCwd = runtime.workspaceCwd;
26998
27067
  if (typeof rawCwd === "string" && rawCwd.length > 0) {
26999
27068
  try {
27000
- const resolved = fs4.realpathSync(path15.resolve(rawCwd));
27069
+ const resolved = fs4.realpathSync(path14.resolve(rawCwd));
27001
27070
  const root = fs4.realpathSync(runtime.workspaceCwd);
27002
- const rel = path15.relative(root, resolved);
27003
- if (!rel.startsWith("..") && !path15.isAbsolute(rel)) {
27071
+ const rel = path14.relative(root, resolved);
27072
+ if (!rel.startsWith("..") && !path14.isAbsolute(rel)) {
27004
27073
  gitCwd = resolved;
27005
27074
  }
27006
27075
  } catch {
@@ -27052,8 +27121,8 @@ function buildDiffList(workspaceCwd, result) {
27052
27121
  hiddenCount: 0
27053
27122
  };
27054
27123
  }
27055
- const files = [...result.perFileStats.entries()].map(([path16, s]) => ({
27056
- path: path16,
27124
+ const files = [...result.perFileStats.entries()].map(([path15, s]) => ({
27125
+ path: path15,
27057
27126
  oldPath: s.oldPath,
27058
27127
  added: s.added,
27059
27128
  removed: s.removed,