@qwen-code/qwen-code 0.22.2 → 0.22.3-nightly.20260829.e5cb60ad48

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 (332) hide show
  1. package/bundled/computer-use/SKILL.md +3 -3
  2. package/bundled/qc-helper/docs/configuration/settings.md +37 -36
  3. package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
  5. package/bundled/qc-helper/docs/features/code-review.md +3 -3
  6. package/bundled/qc-helper/docs/features/computer-use.md +2 -2
  7. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  8. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  9. package/bundled/review/SKILL.md +81 -31
  10. package/bundled/review/references/persistence.md +7 -3
  11. package/bundled/review/references/posting.md +10 -4
  12. package/chunks/{MaxSizedBox-X5FZSNAJ.js → MaxSizedBox-JK4LFKJ3.js} +36 -37
  13. package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-UA2MQCCS.js} +54 -55
  14. package/chunks/{acpAgent-MXEAN54C.js → acpAgent-ZKIVHQKW.js} +276 -191
  15. package/chunks/{agent-PJIPDWHB.js → agent-Z3Q5C3RX.js} +27 -28
  16. package/chunks/{agent-headless-B4JVD7UK.js → agent-headless-BIVZ3KYZ.js} +27 -28
  17. package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-YVTB6QX7.js} +43 -47
  18. package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-XSMPHZBT.js} +9 -1
  19. package/chunks/{askUserQuestion-4SWJY65V.js → askUserQuestion-66I3U2QX.js} +29 -5
  20. package/chunks/{bridge-FKZTVIS3.js → bridge-KDQTHAR7.js} +40 -41
  21. package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-HQ6KDS7C.js} +6 -6
  22. package/chunks/{channel-settings-store-4UFCLBBG.js → channel-settings-store-X4WWBVYW.js} +50 -46
  23. package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-6NA6BBZV.js} +5 -5
  24. package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-NEZ2J6RK.js} +5 -5
  25. package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-FKU7DIHJ.js} +4 -4
  26. package/chunks/{chunk-V2NDP3I4.js → chunk-2AEHQRY2.js} +1 -1
  27. package/chunks/{chunk-EOGELB3H.js → chunk-2SXSLSQE.js} +1 -1
  28. package/chunks/chunk-36LGBEM6.js +130 -0
  29. package/chunks/{chunk-2K6ORIHJ.js → chunk-3CAI35FS.js} +11 -11
  30. package/chunks/{chunk-H2WDGQ6D.js → chunk-3JXM2CVW.js} +1 -1
  31. package/chunks/{chunk-JSHHYW6T.js → chunk-3WJLDA3X.js} +3 -3
  32. package/chunks/{chunk-HVEYF6VT.js → chunk-3WK3QDNV.js} +1 -1
  33. package/chunks/{chunk-5XBFCMWD.js → chunk-3XKLXHGK.js} +17 -9
  34. package/chunks/{chunk-SFPGAQUL.js → chunk-42IDLQWS.js} +24 -18
  35. package/chunks/{chunk-KEKZFOL6.js → chunk-44LKG3IY.js} +1 -1
  36. package/chunks/{chunk-43GGFFLY.js → chunk-4K7KNVWH.js} +1 -1
  37. package/chunks/{chunk-F6FV3C5K.js → chunk-4NDLQAY2.js} +24 -272
  38. package/chunks/{chunk-VVW4ZNFY.js → chunk-4QHPPXK2.js} +15 -7
  39. package/chunks/chunk-4VQBQLIZ.js +293 -0
  40. package/chunks/{chunk-ZFKOCECU.js → chunk-5CALJAH7.js} +2 -2
  41. package/chunks/{chunk-F7TNAPZ4.js → chunk-5SBVOOA2.js} +5 -5
  42. package/chunks/{chunk-IK5BW3CS.js → chunk-5ZJL3AIV.js} +2 -2
  43. package/chunks/{chunk-OIVXBW3W.js → chunk-62GQFYID.js} +1 -1
  44. package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
  45. package/chunks/{chunk-77RG5SFQ.js → chunk-6XOIV7MI.js} +1 -1
  46. package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
  47. package/chunks/chunk-7GUOXWPY.js +2597 -0
  48. package/chunks/chunk-7J6OTNGO.js +424 -0
  49. package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
  50. package/chunks/{chunk-XRSOI3DL.js → chunk-A3LWD5MK.js} +1 -1
  51. package/chunks/{chunk-FBSSIAAQ.js → chunk-AMLXTTJJ.js} +7 -7
  52. package/chunks/{chunk-Z7FLBQPR.js → chunk-ARF6IJHM.js} +7 -7
  53. package/chunks/{chunk-4CDSK5AZ.js → chunk-AYFA7MZV.js} +2 -2
  54. package/chunks/{chunk-4JWNNLPT.js → chunk-B42A5ZHA.js} +3 -3
  55. package/chunks/{chunk-3JGZSIDA.js → chunk-B466ZSHZ.js} +1 -1
  56. package/chunks/{chunk-L6BZRIUL.js → chunk-B5PHIJGI.js} +182 -4
  57. package/chunks/{chunk-KUX5D6DK.js → chunk-BFYGL2XL.js} +11383 -11020
  58. package/chunks/{chunk-W5MJJ2V7.js → chunk-BIJEBAAQ.js} +1 -1
  59. package/chunks/{chunk-3I6UTTDX.js → chunk-BKWNKLZB.js} +19 -19
  60. package/chunks/{chunk-3FDFA4MZ.js → chunk-BOWFGCEU.js} +1 -1
  61. package/chunks/{chunk-F5SZP77N.js → chunk-BP5PTNCU.js} +79 -71
  62. package/chunks/{chunk-3AFMQUTI.js → chunk-C2X7KY45.js} +1 -1
  63. package/chunks/{chunk-FDY5RMGH.js → chunk-CFJY4DGX.js} +1 -1
  64. package/chunks/{chunk-LDP5OD6N.js → chunk-CLWO3B77.js} +2 -2
  65. package/chunks/{chunk-L6YT5H34.js → chunk-CVUBULIX.js} +4 -4
  66. package/chunks/{chunk-JU4EEXC7.js → chunk-CWQZUDB7.js} +2 -2
  67. package/chunks/chunk-DJBQCO2E.js +842 -0
  68. package/chunks/{chunk-4J657AJR.js → chunk-DJECZIJX.js} +40 -40
  69. package/chunks/{chunk-RUGNCYNO.js → chunk-DMLVSW7L.js} +532 -22
  70. package/chunks/{chunk-4FTKQNWJ.js → chunk-DYXFD5RO.js} +181 -2
  71. package/chunks/{chunk-PDMJ3KGS.js → chunk-EB6QRGHM.js} +1 -1
  72. package/chunks/{chunk-TGWAQ5RB.js → chunk-ECE3UYVO.js} +4704 -5894
  73. package/chunks/{chunk-5O72BNDD.js → chunk-F5RB4S23.js} +7 -7
  74. package/chunks/{chunk-IJKTMLBE.js → chunk-FIKYKQOO.js} +1 -1
  75. package/chunks/{chunk-BNMF3K5X.js → chunk-FKET6VOO.js} +52 -36
  76. package/chunks/{chunk-Z7TGYN5F.js → chunk-FROAFEFB.js} +2 -2
  77. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  78. package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
  79. package/chunks/{chunk-43UYNAWX.js → chunk-G6FECKTJ.js} +2 -2
  80. package/chunks/{chunk-7UYV53BC.js → chunk-GIHXH2KO.js} +1 -1
  81. package/chunks/{chunk-V4QXXQJ2.js → chunk-H4LCV44K.js} +2 -2
  82. package/chunks/{chunk-LXIBMVRN.js → chunk-H5WQZTAW.js} +13 -7
  83. package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
  84. package/chunks/{chunk-RJC5EIKY.js → chunk-HHQJANFM.js} +3 -3
  85. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  86. package/chunks/{chunk-TRZTNIQ6.js → chunk-I6LYRJPB.js} +2 -2
  87. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  88. package/chunks/{chunk-66KDY3LV.js → chunk-IJMEPQ5N.js} +2 -2
  89. package/chunks/{chunk-4HV6HH33.js → chunk-ISKH4QX3.js} +9 -9
  90. package/chunks/{chunk-6CGL7E7G.js → chunk-IZDKYNKN.js} +2 -2
  91. package/chunks/{chunk-A7YP63XN.js → chunk-J7SS77YW.js} +5 -5
  92. package/chunks/{chunk-XDFHY4R3.js → chunk-JCMS65DJ.js} +2 -2
  93. package/chunks/{chunk-6LFJEACX.js → chunk-JHDPOPQG.js} +7 -7
  94. package/chunks/{chunk-WKK5BQNP.js → chunk-JHYH6PYQ.js} +43 -420
  95. package/chunks/{chunk-PFCQ62V4.js → chunk-JWDMKJG5.js} +6 -6
  96. package/chunks/{chunk-6IUNAPLR.js → chunk-K5KXUXWC.js} +1 -1
  97. package/chunks/{chunk-Y6LSMB6J.js → chunk-K6CTN5TU.js} +1 -1
  98. package/chunks/{chunk-G34IR3D6.js → chunk-KEIMKAM4.js} +26 -109
  99. package/chunks/{chunk-JHS74YAB.js → chunk-KID24ZFN.js} +1 -1
  100. package/chunks/{chunk-EFUM7RVY.js → chunk-KJO2LBUK.js} +942 -16
  101. package/chunks/{chunk-B7CDU2SL.js → chunk-KYWTPLBJ.js} +17 -20
  102. package/chunks/chunk-LGO7DEXL.js +1186 -0
  103. package/chunks/{chunk-P2SU6ZTI.js → chunk-LUEHOUHM.js} +1 -1
  104. package/chunks/{chunk-P5GGM4KS.js → chunk-MAQ2W4IF.js} +3 -3
  105. package/chunks/{chunk-RIEFGNTP.js → chunk-MVDPFLWM.js} +207 -43
  106. package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
  107. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  108. package/chunks/{chunk-BBWV7ONL.js → chunk-NEBSNUMX.js} +6 -6
  109. package/chunks/{chunk-3SGB2UHX.js → chunk-NENQE7VH.js} +23 -11
  110. package/chunks/{chunk-SJ3ZUWFK.js → chunk-NHDNYMBU.js} +4 -4
  111. package/chunks/{chunk-K2NQPH5D.js → chunk-OJEMXKA4.js} +3 -3
  112. package/chunks/{chunk-QP4C6WCE.js → chunk-PI6HYGBE.js} +2 -2
  113. package/chunks/{chunk-OIP7C4FE.js → chunk-PO6YCWIQ.js} +4 -4
  114. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  115. package/chunks/{chunk-4MQEPP3Y.js → chunk-PQZBDDNG.js} +5 -119
  116. package/chunks/{chunk-SMPR7SPO.js → chunk-QJNDUTOL.js} +45 -239
  117. package/chunks/{chunk-L2M46FP5.js → chunk-QYMAKPY5.js} +5 -5
  118. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  119. package/chunks/{chunk-JSC3H3TD.js → chunk-RZKOA4JE.js} +14 -6
  120. package/chunks/{chunk-CPGJJJLU.js → chunk-SEDFP3ZI.js} +1 -1
  121. package/chunks/chunk-SEONHUS3.js +275 -0
  122. package/chunks/{chunk-ZGXYO7DY.js → chunk-SS4MRMKE.js} +122 -13
  123. package/chunks/{chunk-T32W2JHI.js → chunk-SS5SDCD3.js} +2 -2
  124. package/chunks/{chunk-MIIVI25Q.js → chunk-ST5V3ZOC.js} +2 -2
  125. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  126. package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
  127. package/chunks/{chunk-BAJKAAOY.js → chunk-TGJ2PKCW.js} +4315 -1386
  128. package/chunks/{chunk-6LFTG244.js → chunk-TU6WVK67.js} +15 -5
  129. package/chunks/{chunk-T3WXYEZ4.js → chunk-U54AYGEC.js} +38 -5
  130. package/chunks/{chunk-CSMI4FP5.js → chunk-UAOTD2BN.js} +1 -1
  131. package/chunks/{chunk-CCBZDVUA.js → chunk-UI4DXRZW.js} +33 -20
  132. package/chunks/{chunk-JCQD3INC.js → chunk-URE3QBBB.js} +1 -1
  133. package/chunks/chunk-UVY67MSH.js +205 -0
  134. package/chunks/{chunk-Y3QL45LS.js → chunk-V4264FEG.js} +8 -8
  135. package/chunks/{chunk-R4PMVSR5.js → chunk-VBCPNIQD.js} +18 -20
  136. package/chunks/{chunk-Q26AYA62.js → chunk-VKCJPNGU.js} +2 -2
  137. package/chunks/{chunk-IOPCFOTF.js → chunk-VKIGT4OG.js} +2 -2
  138. package/chunks/{chunk-3DXFGHAJ.js → chunk-VNMZLAVG.js} +1 -1
  139. package/chunks/{chunk-FY76G3G5.js → chunk-W3CY4QIO.js} +4 -4
  140. package/chunks/{chunk-O2UN57NX.js → chunk-W4XG7IZ4.js} +19 -2
  141. package/chunks/{chunk-C6K43ZDE.js → chunk-W7HH77GN.js} +5 -5
  142. package/chunks/{chunk-2NYCN6F2.js → chunk-WD3WSEW3.js} +43 -26
  143. package/chunks/chunk-WLEYH7CD.js +332 -0
  144. package/chunks/{chunk-PKAYJDB3.js → chunk-WNPDGUJO.js} +21 -2
  145. package/chunks/{chunk-IZIVM7LZ.js → chunk-WXEA74YB.js} +1 -1
  146. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  147. package/chunks/{chunk-HVQ3B7FF.js → chunk-Y5S7LBOZ.js} +43 -6
  148. package/chunks/{chunk-AGR5UROZ.js → chunk-YN44TEOZ.js} +17 -29
  149. package/chunks/{chunk-DZWPESIF.js → chunk-Z44FUM77.js} +3 -3
  150. package/chunks/{chunk-XDLEZ5HX.js → chunk-ZZUKP7HV.js} +1 -1
  151. package/chunks/{config-utils-BBOCOGZW.js → config-utils-NOCNFTQP.js} +42 -41
  152. package/chunks/{contextCommand-EET67MQ2.js → contextCommand-DH2NOQBI.js} +39 -40
  153. package/chunks/{core-runtime-677KFX6Q.js → core-runtime-OLW4OXMV.js} +43 -44
  154. package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-ZCGPQTIE.js} +37 -38
  155. package/chunks/{daemon-MJQUO7RA.js → daemon-3GNHB3M2.js} +495 -7
  156. package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-SHIU7MPJ.js} +36 -37
  157. package/chunks/{daemon-status-provider-RFKZOK3S.js → daemon-status-provider-WECDBDF7.js} +45 -46
  158. package/chunks/{daemon-trust-policy-DRZPFB4Q.js → daemon-trust-policy-MX4OYXF3.js} +44 -45
  159. package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-73WXIKNL.js} +44 -45
  160. package/chunks/{deferred-core-runtime-BBVIOP24.js → deferred-core-runtime-BKS7O3D6.js} +36 -37
  161. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  162. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  163. package/chunks/{dist-QODVOVWI.js → dist-6BPYWHVD.js} +31 -30
  164. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  165. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  166. package/chunks/{dist-ILDBUWDB.js → dist-LVZCXVPF.js} +1 -1
  167. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  168. package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
  169. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  170. package/chunks/{earlyInputCapture-2JOMMNQ4.js → earlyInputCapture-5NNZSVL7.js} +36 -37
  171. package/chunks/{edit-BSV6YRVW.js → edit-IGHPT4I2.js} +27 -28
  172. package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-35QCAAFP.js} +3 -3
  173. package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-LVTPJSAA.js} +32 -33
  174. package/chunks/{environment-MOZMPUHR.js → environment-HC2PPYDO.js} +40 -41
  175. package/chunks/{errors-DMPQVYJL.js → errors-VCWSG25A.js} +39 -40
  176. package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-XQD6D543.js} +3 -3
  177. package/chunks/{exitPlanMode-UE4FGCY4.js → exitPlanMode-RHI2K2O7.js} +27 -28
  178. package/chunks/{fast-path-773PV7PU.js → fast-path-IQNCJOPE.js} +4 -4
  179. package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
  180. package/chunks/{glob-CZHOWUEA.js → glob-EANAXPNR.js} +27 -28
  181. package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-PTD3MBA7.js} +2 -1
  182. package/chunks/{grep-5GPICQBU.js → grep-3REG7TO6.js} +4 -2
  183. package/chunks/{handleAutoUpdate-SGXKTQM6.js → handleAutoUpdate-PVVFLDQ4.js} +41 -42
  184. package/chunks/{i18n-B42HKHKH.js → i18n-VOKX5QIF.js} +38 -39
  185. package/chunks/{image-gen-HAYOEQ4O.js → image-gen-J6FDGUZP.js} +4 -6
  186. package/chunks/{initializer-FB66WYR3.js → initializer-SZVVTGZL.js} +44 -45
  187. package/chunks/{installationInfo-Y7AULNMX.js → installationInfo-R22453J5.js} +37 -38
  188. package/chunks/{list-2HWGSVRA.js → list-LK5M5W2N.js} +47 -48
  189. package/chunks/{gemini-IP4FJAP5.js → llm-6RQJUVIS.js} +89 -85
  190. package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-Q7JJDSJR.js} +25 -25
  191. package/chunks/{loadedSettingsAdapter-7Y7IEI6T.js → loadedSettingsAdapter-KF2ZPSPG.js} +44 -45
  192. package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-SBCIJG2J.js} +307 -27
  193. package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-UG324XFY.js} +37 -38
  194. package/chunks/{mcp-QGG5NMJJ.js → mcp-PUSCFGS5.js} +44 -45
  195. package/chunks/{monitor-FI7PY36Z.js → monitor-RJW5AP64.js} +27 -28
  196. package/chunks/{nonInteractiveCli-4LO2TL72.js → nonInteractiveCli-OIXN4WSR.js} +82 -81
  197. package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-5MWEIMS2.js} +27 -28
  198. package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
  199. package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-AGTNYSCJ.js} +13 -15
  200. package/chunks/{pidfile-JMF2CLMY.js → pidfile-LTA6NT3P.js} +36 -37
  201. package/chunks/process-registry-OAEG6WGC.js +662 -0
  202. package/chunks/{processUtils-IQZBYWSB.js → processUtils-GY3Q66CJ.js} +2 -2
  203. package/chunks/{prompt-terminal-ledger-DCZO6S7C.js → prompt-terminal-ledger-3QS6TCMF.js} +37 -38
  204. package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-NU6PCDA7.js} +31 -32
  205. package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-OF5WRBQT.js} +4 -6
  206. package/chunks/{read-file-QE2B5FTX.js → read-file-DTQL5V62.js} +5 -5
  207. package/chunks/{record-artifact-RZGZBENU.js → record-artifact-VW23GS4F.js} +2 -2
  208. package/chunks/{report-findings-Q3SYKKW5.js → report-findings-AO5VYFLR.js} +7 -3
  209. package/chunks/{resumeHistoryUtils-CZ4JRDVW.js → resumeHistoryUtils-PZ4BER55.js} +40 -41
  210. package/chunks/{ripGrep-R6B6HWPX.js → ripGrep-A2FGBZGY.js} +7 -7
  211. package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-AESOSKFC.js} +271 -86
  212. package/chunks/{runtime-TTIGSBM4.js → runtime-YQHSEKG4.js} +49 -50
  213. package/chunks/{scheduled-tasks-QB4ZVUQS.js → scheduled-tasks-XG6KK6NY.js} +42 -43
  214. package/chunks/{scheduler-YRUG22M7.js → scheduler-I4WKXWRZ.js} +38 -39
  215. package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-TTU2CHBU.js} +1 -1
  216. package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-UUMVYMAL.js} +10 -4
  217. package/chunks/{send-message-Y5I6NYAM.js → send-message-AJ4OCUBV.js} +18 -2
  218. package/chunks/{serve-MXXCDAQN.js → serve-MQDTVC7X.js} +44 -45
  219. package/chunks/{server-DFUSSSHI.js → server-L5ETIKEW.js} +4153 -3351
  220. package/chunks/{session-3TEHNENZ.js → session-LKKXRUJM.js} +87 -86
  221. package/chunks/session-pr-refresh-5OWA6MC2.js +365 -0
  222. package/chunks/{settings-VOZYKLTT.js → settings-S6KG7JST.js} +43 -44
  223. package/chunks/{shell-6RTKZVMI.js → shell-JEQE5AHC.js} +27 -28
  224. package/chunks/{skill-FEOKFX26.js → skill-QEGMZXKI.js} +58 -14
  225. package/chunks/{skill-settings-VA4XVYVL.js → skill-settings-EVY7QF4H.js} +44 -45
  226. package/chunks/{spawnChannel-F6WVP723.js → spawnChannel-AQP72WPN.js} +38 -39
  227. package/chunks/{standalone-update-RGILUQVK.js → standalone-update-JUJA4BKV.js} +39 -40
  228. package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-5ZMSJZ3J.js} +408 -338
  229. package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
  230. package/chunks/{task-create-TMSV7RD5.js → task-create-QN4LYRSE.js} +3 -3
  231. package/chunks/{task-list-W55RBFRX.js → task-list-JPLGK45U.js} +2 -2
  232. package/chunks/{task-update-N536I4GQ.js → task-update-IWEOJFV2.js} +3 -3
  233. package/chunks/{team-create-QYSWCYCL.js → team-create-ZEGP7KVD.js} +27 -28
  234. package/chunks/{team-delete-FJRFX33M.js → team-delete-RZVVSGCY.js} +2 -2
  235. package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-SXWT2WZN.js} +27 -28
  236. package/chunks/{terminal-image-renderer-SMQE46UJ.js → terminal-image-renderer-42B6N55E.js} +36 -37
  237. package/chunks/{theme-manager-RFO5WWFF.js → theme-manager-DDYUBC25.js} +36 -37
  238. package/chunks/{tool-search-F2EMIAPV.js → tool-search-GDDBA4X4.js} +9 -9
  239. package/chunks/{total-session-admission-HTVTP4BS.js → total-session-admission-6MYP4GBA.js} +40 -41
  240. package/chunks/{trustedFolders-7OCNMUQE.js → trustedFolders-LPEIY3GE.js} +38 -39
  241. package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
  242. package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-BOIIZNT3.js} +6 -6
  243. package/chunks/{updateCheck-7QBDXZRT.js → updateCheck-KSVHYJYE.js} +40 -41
  244. package/chunks/{useAutoAcceptIndicator-UI4SNL2O.js → useAutoAcceptIndicator-43D2A4ZN.js} +46 -47
  245. package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-WSD4SOIM.js} +79 -78
  246. package/chunks/{version-ANP4TS6O.js → version-B4CM7RNG.js} +1 -1
  247. package/chunks/{web-fetch-QJADSAH3.js → web-fetch-MOHILUZL.js} +8 -10
  248. package/chunks/{web-search-7TTQKEKM.js → web-search-G4HIMY2V.js} +5 -7
  249. package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
  250. package/chunks/{workflow-5XN6XSOT.js → workflow-H3PCYU5F.js} +50 -60
  251. package/chunks/{workspace-providers-status-PDFZWL5Q.js → workspace-providers-status-AAX7VWMT.js} +48 -49
  252. package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-YTHZ6SL4.js} +1 -1
  253. package/chunks/{workspace-registry-23R7XRB5.js → workspace-registry-URHGBL4U.js} +40 -41
  254. package/chunks/{workspace-service-MUYO2QIC.js → workspace-service-XJMSLRCU.js} +49 -53
  255. package/chunks/{workspace-skills-status-IKECTOOQ.js → workspace-skills-status-JGEDANNT.js} +47 -48
  256. package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-ZHI5TDYB.js} +48 -49
  257. package/chunks/{write-file-GGRBB5TZ.js → write-file-5O4S63L6.js} +29 -30
  258. package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-N2IBUVXE.js} +5 -5
  259. package/cli.js +128 -91
  260. package/package.json +3 -3
  261. package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-OJQpqC9m.js} +1 -1
  262. package/web-shell/assets/{arc-BSTnk5pu.js → arc-BxH0YR17.js} +1 -1
  263. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-CxyWiGfF.js} +1 -1
  264. package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-DukXbJQ7.js} +1 -1
  265. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-DvS1T6pK.js} +1 -1
  266. package/web-shell/assets/channel-Dbbg7P-u.js +1 -0
  267. package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-qvqfJ7VZ.js} +1 -1
  268. package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-BJ3kJYte.js} +1 -1
  269. package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-BYPVESil.js} +1 -1
  270. package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-B4UYFElk.js} +1 -1
  271. package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-8zGKVNUU.js} +1 -1
  272. package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-CbaHONpI.js} +1 -1
  273. package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-f8kAjzlF.js} +1 -1
  274. package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-Dm8ahq7K.js} +1 -1
  275. package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-yrcLzv8z.js} +1 -1
  276. package/web-shell/assets/classDiagram-DTDB5LWJ-cDYs8iT0.js +1 -0
  277. package/web-shell/assets/classDiagram-v2-JRS7N3AN-cDYs8iT0.js +1 -0
  278. package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-DN1C22IH.js} +1 -1
  279. package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-B2oF7XD_.js} +1 -1
  280. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-DGgIKpiM.js} +1 -1
  281. package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-BHKawzoP.js} +1 -1
  282. package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-6UgKqreR.js} +1 -1
  283. package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-BXJbPJ6F.js} +1 -1
  284. package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-DVnYFPkS.js} +1 -1
  285. package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-CjBoC0Rq.js} +1 -1
  286. package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-KZdUceQT.js} +1 -1
  287. package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-5UekGScM.js} +1 -1
  288. package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-TRWexoj1.js} +1 -1
  289. package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-Di5bhBVo.js} +1 -1
  290. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-DpJUJ8Dp.js} +1 -1
  291. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-b08xIx2C.js} +1 -1
  292. package/web-shell/assets/index-BvDpDHTN.css +36 -0
  293. package/web-shell/assets/index-Cg60lhnI.js +1913 -0
  294. package/web-shell/assets/{index-CBGz4Qjl.js → index-n6dFH09O.js} +1 -1
  295. package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-Cz14FAt7.js} +1 -1
  296. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-7nxp2bIU.js} +1 -1
  297. package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-CjL47fk0.js} +1 -1
  298. package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-CWFl-mHs.js} +1 -1
  299. package/web-shell/assets/{layout-CEz_1L8z.js → layout-BUP1BcwB.js} +1 -1
  300. package/web-shell/assets/{linear-CBjTq9Hc.js → linear-CqbwqSbW.js} +1 -1
  301. package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-C_50HLol.js} +6 -6
  302. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-DbyD_AoU.js} +1 -1
  303. package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-VozWyqyY.js} +1 -1
  304. package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-O7EKamBL.js} +1 -1
  305. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-DOmPZxHg.js} +1 -1
  306. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-ElyfC2zE.js} +1 -1
  307. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-DbnqPbzR.js} +1 -1
  308. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-yPWliSHr.js} +1 -1
  309. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-BImQFomC.js} +1 -1
  310. package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-DEvqeEHo.js} +1 -1
  311. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-BbLtiF9u.js} +1 -1
  312. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DGtlzdpx.js +1 -0
  313. package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-RFewDF6v.js} +1 -1
  314. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-CITCVFdx.js +8 -0
  315. package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-DF4L3-UR.js} +1 -1
  316. package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-BtlSJXaA.js} +1 -1
  317. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-C8ogG8Fh.js} +1 -1
  318. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-C5QVfsGQ.js} +1 -1
  319. package/web-shell/index.html +3 -3
  320. package/chunks/chunk-7DJCPZE3.js +0 -945
  321. package/chunks/chunk-J2OSJFP3.js +0 -202
  322. package/chunks/chunk-K2OJUPOE.js +0 -78
  323. package/chunks/chunk-P3QQPMQA.js +0 -19
  324. package/chunks/chunk-T26EAKDL.js +0 -13
  325. package/chunks/process-registry-PMJOA5CO.js +0 -172
  326. package/web-shell/assets/channel-CENAhErJ.js +0 -1
  327. package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
  328. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
  329. package/web-shell/assets/index-8hXIpvo4.js +0 -1865
  330. package/web-shell/assets/index-DclEv91i.css +0 -5
  331. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
  332. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
@@ -0,0 +1,275 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ normalizeSessionIdForLookup
5
+ } from "./chunk-ZEZKIS2K.js";
6
+ import {
7
+ MAX_WORKSPACE_PATH_LENGTH,
8
+ translateAndCheckAbsoluteWorkspacePath
9
+ } from "./chunk-6PLDPT2C.js";
10
+ import {
11
+ writeStderrLine
12
+ } from "./chunk-7FA2II6K.js";
13
+ import {
14
+ init_esbuild_shims
15
+ } from "./chunk-5O2XNYP6.js";
16
+ import {
17
+ __name
18
+ } from "./chunk-J2S4EL5Y.js";
19
+
20
+ // packages/cli/src/serve/server/request-helpers.ts
21
+ init_esbuild_shims();
22
+ function sendJsonBodyParserError(res, err) {
23
+ if (err instanceof SyntaxError && "status" in err && err.status === 400) {
24
+ res.status(400).json({ error: "Invalid JSON in request body" });
25
+ return true;
26
+ }
27
+ if (err && typeof err === "object" && "status" in err && err.status === 413) {
28
+ res.status(413).json({ error: "Request body too large (max 10 MB)" });
29
+ return true;
30
+ }
31
+ return false;
32
+ }
33
+ __name(sendJsonBodyParserError, "sendJsonBodyParserError");
34
+ var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
35
+ "__proto__",
36
+ "constructor",
37
+ "prototype"
38
+ ]);
39
+ var CLIENT_ID_HEADER = "x-qwen-client-id";
40
+ var MAX_CLIENT_ID_LENGTH = 128;
41
+ var MAX_TOOL_NAME_LENGTH = 256;
42
+ var MAX_SERVER_NAME_LENGTH = 256;
43
+ var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
44
+ var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
45
+ var deferredRuntimeTimingKey = Symbol(
46
+ "deferredRuntimeRequestTiming"
47
+ );
48
+ function setDeferredRuntimeRequestTiming(req, timing) {
49
+ req[deferredRuntimeTimingKey] = timing;
50
+ }
51
+ __name(setDeferredRuntimeRequestTiming, "setDeferredRuntimeRequestTiming");
52
+ function getDeferredRuntimeRequestTiming(req) {
53
+ return req[deferredRuntimeTimingKey];
54
+ }
55
+ __name(getDeferredRuntimeRequestTiming, "getDeferredRuntimeRequestTiming");
56
+ function safeBody(req) {
57
+ const raw = req.body;
58
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
59
+ return /* @__PURE__ */ Object.create(null);
60
+ }
61
+ const out = /* @__PURE__ */ Object.create(null);
62
+ for (const [key, value] of Object.entries(raw)) {
63
+ if (PROTOTYPE_POLLUTION_KEYS.has(key)) continue;
64
+ out[key] = value;
65
+ }
66
+ return out;
67
+ }
68
+ __name(safeBody, "safeBody");
69
+ function parseOptionalWorkspaceCwd(body, boundWorkspace, res) {
70
+ const hasCwd = "cwd" in body;
71
+ if (hasCwd && typeof body["cwd"] !== "string") {
72
+ res.status(400).json({ error: "`cwd` must be a string absolute path when provided" });
73
+ return void 0;
74
+ }
75
+ if (hasCwd && body["cwd"].length > MAX_WORKSPACE_PATH_LENGTH) {
76
+ res.status(400).json({
77
+ error: `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`
78
+ });
79
+ return void 0;
80
+ }
81
+ const cwd = translateAndCheckAbsoluteWorkspacePath(
82
+ hasCwd ? body["cwd"] : boundWorkspace
83
+ );
84
+ if (cwd === null) {
85
+ res.status(400).json({ error: "`cwd` must be an absolute path when provided" });
86
+ return void 0;
87
+ }
88
+ return cwd;
89
+ }
90
+ __name(parseOptionalWorkspaceCwd, "parseOptionalWorkspaceCwd");
91
+ function requireSessionId(req, res) {
92
+ const sessionId = req.params["id"];
93
+ if (!sessionId) {
94
+ res.status(400).json({ error: "`sessionId` route parameter is required" });
95
+ return null;
96
+ }
97
+ return normalizeSessionIdForLookup(sessionId);
98
+ }
99
+ __name(requireSessionId, "requireSessionId");
100
+ function parseClientIdHeader(req, res) {
101
+ const raw = req.get(CLIENT_ID_HEADER);
102
+ if (raw === void 0 || raw === "") return void 0;
103
+ if (raw.length > MAX_CLIENT_ID_LENGTH || !CLIENT_ID_RE.test(raw)) {
104
+ res.status(400).json({
105
+ error: "`X-Qwen-Client-Id` must be a non-empty token of 128 characters or fewer",
106
+ code: "invalid_client_id"
107
+ });
108
+ return null;
109
+ }
110
+ return raw;
111
+ }
112
+ __name(parseClientIdHeader, "parseClientIdHeader");
113
+ function detectFromLoopback(req) {
114
+ const addr = req.socket?.remoteAddress;
115
+ if (typeof addr !== "string") return false;
116
+ if (addr === "::1") return true;
117
+ if (addr.startsWith("127.")) return true;
118
+ if (addr.startsWith("::ffff:127.")) return true;
119
+ return false;
120
+ }
121
+ __name(detectFromLoopback, "detectFromLoopback");
122
+ function validateMcpRuntimeServerName(name, res) {
123
+ if (typeof name !== "string" || name.length === 0) {
124
+ res.status(400).json({
125
+ error: "Server name is required and must be a non-empty string",
126
+ code: "invalid_server_name"
127
+ });
128
+ return false;
129
+ }
130
+ if (name.length > MAX_SERVER_NAME_LENGTH) {
131
+ res.status(400).json({
132
+ error: `Server name exceeds ${MAX_SERVER_NAME_LENGTH}-character limit`,
133
+ code: "invalid_server_name"
134
+ });
135
+ return false;
136
+ }
137
+ if (!/^[A-Za-z0-9_-]+$/.test(name)) {
138
+ res.status(400).json({
139
+ error: "Server name must contain only alphanumeric characters, underscores, and hyphens",
140
+ code: "invalid_server_name"
141
+ });
142
+ return false;
143
+ }
144
+ if (name === "__proto__" || name === "constructor" || name === "prototype") {
145
+ res.status(400).json({
146
+ error: "Server name must not be a reserved JS property name",
147
+ code: "invalid_server_name"
148
+ });
149
+ return false;
150
+ }
151
+ return true;
152
+ }
153
+ __name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
154
+ function parseAndValidateWorkspaceClientId(req, res, bridge) {
155
+ const raw = parseClientIdHeader(req, res);
156
+ if (raw === null || raw === void 0) return raw;
157
+ const bridges = Array.isArray(bridge) ? bridge : [bridge];
158
+ if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
159
+ res.status(400).json({
160
+ error: `Client id "${raw}" is not registered for this workspace`,
161
+ code: "invalid_client_id",
162
+ clientId: raw
163
+ });
164
+ return null;
165
+ }
166
+ return raw;
167
+ }
168
+ __name(parseAndValidateWorkspaceClientId, "parseAndValidateWorkspaceClientId");
169
+ function createBuildWorkspaceCtx(boundWorkspace) {
170
+ return (route, clientId) => ({
171
+ originatorClientId: clientId,
172
+ route,
173
+ workspaceCwd: boundWorkspace
174
+ });
175
+ }
176
+ __name(createBuildWorkspaceCtx, "createBuildWorkspaceCtx");
177
+ function parsePermissionVoteBody(req, res) {
178
+ const body = safeBody(req);
179
+ const outcome = body["outcome"];
180
+ if (!isValidOutcome(outcome)) {
181
+ res.status(400).json({ error: INVALID_PERMISSION_OUTCOME_ERROR });
182
+ return void 0;
183
+ }
184
+ return {
185
+ ...body,
186
+ outcome
187
+ };
188
+ }
189
+ __name(parsePermissionVoteBody, "parsePermissionVoteBody");
190
+ function isValidOutcome(raw) {
191
+ if (typeof raw !== "object" || raw === null) return false;
192
+ const obj = raw;
193
+ if (obj["outcome"] === "cancelled") return true;
194
+ return obj["outcome"] === "selected" && typeof obj["optionId"] === "string" && obj["optionId"].length > 0;
195
+ }
196
+ __name(isValidOutcome, "isValidOutcome");
197
+ var MIN_QUERY_MAX_QUEUED = 16;
198
+ var MAX_QUERY_MAX_QUEUED = 2048;
199
+ function parseMaxQueuedQuery(raw, res) {
200
+ if (raw === void 0) return void 0;
201
+ if (typeof raw !== "string" || !/^\d+$/.test(raw)) {
202
+ writeStderrLine(
203
+ `qwen serve: rejected ?maxQueued ${safeLogValue(raw)} (not a decimal integer)`
204
+ );
205
+ res.status(400).json({
206
+ error: "`maxQueued` must be a decimal integer",
207
+ code: "invalid_max_queued"
208
+ });
209
+ return null;
210
+ }
211
+ const n = Number.parseInt(raw, 10);
212
+ if (!Number.isFinite(n) || n < MIN_QUERY_MAX_QUEUED || n > MAX_QUERY_MAX_QUEUED) {
213
+ writeStderrLine(
214
+ `qwen serve: rejected ?maxQueued ${safeLogValue(raw)} (outside [${MIN_QUERY_MAX_QUEUED}, ${MAX_QUERY_MAX_QUEUED}])`
215
+ );
216
+ res.status(400).json({
217
+ error: `\`maxQueued\` must be in [${MIN_QUERY_MAX_QUEUED}, ${MAX_QUERY_MAX_QUEUED}]`,
218
+ code: "invalid_max_queued"
219
+ });
220
+ return null;
221
+ }
222
+ return n;
223
+ }
224
+ __name(parseMaxQueuedQuery, "parseMaxQueuedQuery");
225
+ function safeLogValue(raw) {
226
+ return JSON.stringify(String(raw)).slice(0, 82);
227
+ }
228
+ __name(safeLogValue, "safeLogValue");
229
+ function parseLastEventId(raw) {
230
+ if (typeof raw !== "string" || !/^\d+$/.test(raw)) {
231
+ if (typeof raw === "string" && raw.length > 0) {
232
+ writeStderrLine(
233
+ `qwen serve: rejected Last-Event-ID ${safeLogValue(raw)} (not a decimal integer)`
234
+ );
235
+ }
236
+ return void 0;
237
+ }
238
+ const n = Number.parseInt(raw, 10);
239
+ if (!Number.isFinite(n) || n > Number.MAX_SAFE_INTEGER) {
240
+ writeStderrLine(
241
+ `qwen serve: rejected Last-Event-ID ${safeLogValue(raw)} (exceeds Number.MAX_SAFE_INTEGER)`
242
+ );
243
+ return void 0;
244
+ }
245
+ return n;
246
+ }
247
+ __name(parseLastEventId, "parseLastEventId");
248
+
249
+ export {
250
+ sendJsonBodyParserError,
251
+ CLIENT_ID_HEADER,
252
+ MAX_CLIENT_ID_LENGTH,
253
+ MAX_TOOL_NAME_LENGTH,
254
+ MAX_SERVER_NAME_LENGTH,
255
+ CLIENT_ID_RE,
256
+ setDeferredRuntimeRequestTiming,
257
+ getDeferredRuntimeRequestTiming,
258
+ safeBody,
259
+ parseOptionalWorkspaceCwd,
260
+ requireSessionId,
261
+ parseClientIdHeader,
262
+ detectFromLoopback,
263
+ validateMcpRuntimeServerName,
264
+ parseAndValidateWorkspaceClientId,
265
+ createBuildWorkspaceCtx,
266
+ parsePermissionVoteBody,
267
+ parseMaxQueuedQuery,
268
+ safeLogValue,
269
+ parseLastEventId
270
+ };
271
+ /**
272
+ * @license
273
+ * Copyright 2025 Qwen Team
274
+ * SPDX-License-Identifier: Apache-2.0
275
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  SERVE_CONTROL_EXT_METHODS
5
- } from "./chunk-JHS74YAB.js";
5
+ } from "./chunk-KID24ZFN.js";
6
6
  import {
7
7
  ACTIVE_WORK_HEARTBEAT_VERSION,
8
8
  ACTIVE_WORK_HOLD_CATEGORIES,
@@ -39,7 +39,7 @@ import {
39
39
  } from "./chunk-V5J4J5TP.js";
40
40
  import {
41
41
  getSpecificMimeType
42
- } from "./chunk-3I6UTTDX.js";
42
+ } from "./chunk-BKWNKLZB.js";
43
43
  import {
44
44
  init_esbuild_shims
45
45
  } from "./chunk-5O2XNYP6.js";
@@ -741,8 +741,7 @@ __name(writeStderrLine, "writeStderrLine");
741
741
 
742
742
  // packages/acp-bridge/src/sessionAttachments.ts
743
743
  init_esbuild_shims();
744
- import { randomUUID } from "node:crypto";
745
- import { promises as fs, statSync } from "node:fs";
744
+ import { constants as fsConstants, promises as fs, statSync } from "node:fs";
746
745
  import { tmpdir } from "node:os";
747
746
  import * as path from "node:path";
748
747
  var SESSION_ATTACHMENT_MAX_ITEM_BYTES = 8 * 1024 * 1024;
@@ -754,6 +753,74 @@ var SUPPORTED_IMAGE_MIME_TYPES = /* @__PURE__ */ new Set([
754
753
  "image/png",
755
754
  "image/webp"
756
755
  ]);
756
+ function hasVerifiableInode(ino) {
757
+ return Number.isSafeInteger(ino) && ino > 0;
758
+ }
759
+ __name(hasVerifiableInode, "hasVerifiableInode");
760
+ async function openDurableAttachmentDirectory(directory, openedHandle) {
761
+ const handle = openedHandle ?? await fs.open(
762
+ directory,
763
+ fsConstants.O_RDONLY | (process.platform === "win32" ? 0 : fsConstants.O_NOFOLLOW ?? 0)
764
+ );
765
+ try {
766
+ const opened = await handle.stat();
767
+ const current = await fs.stat(directory);
768
+ const openedInodeVerifiable = hasVerifiableInode(opened.ino);
769
+ const currentInodeVerifiable = hasVerifiableInode(current.ino);
770
+ if (!opened.isDirectory() || !current.isDirectory() || opened.dev !== current.dev || openedInodeVerifiable !== currentInodeVerifiable || openedInodeVerifiable && opened.ino !== current.ino) {
771
+ throw new Error("Session attachment parent directory changed.");
772
+ }
773
+ return {
774
+ path: directory,
775
+ handle,
776
+ dev: opened.dev,
777
+ ino: opened.ino,
778
+ inodeVerifiable: openedInodeVerifiable
779
+ };
780
+ } catch (error) {
781
+ await handle.close().catch(() => void 0);
782
+ throw error;
783
+ }
784
+ }
785
+ __name(openDurableAttachmentDirectory, "openDurableAttachmentDirectory");
786
+ async function openDurableAttachmentDirectoryIfPresent(directory) {
787
+ let handle;
788
+ try {
789
+ handle = await fs.open(
790
+ directory,
791
+ fsConstants.O_RDONLY | (process.platform === "win32" ? 0 : fsConstants.O_NOFOLLOW ?? 0)
792
+ );
793
+ } catch (error) {
794
+ if (error.code === "ENOENT") return void 0;
795
+ throw error;
796
+ }
797
+ return openDurableAttachmentDirectory(directory, handle);
798
+ }
799
+ __name(openDurableAttachmentDirectoryIfPresent, "openDurableAttachmentDirectoryIfPresent");
800
+ async function syncDurableAttachmentDirectory(expected) {
801
+ const opened = await expected.handle.stat();
802
+ const openedInodeVerifiable = hasVerifiableInode(opened.ino);
803
+ const current = await fs.stat(expected.path);
804
+ const currentInodeVerifiable = hasVerifiableInode(current.ino);
805
+ if (!opened.isDirectory() || !current.isDirectory() || opened.dev !== expected.dev || openedInodeVerifiable !== expected.inodeVerifiable || expected.inodeVerifiable && opened.ino !== expected.ino || current.dev !== expected.dev || currentInodeVerifiable !== expected.inodeVerifiable || expected.inodeVerifiable && current.ino !== expected.ino) {
806
+ throw new Error("Session attachment parent directory changed.");
807
+ }
808
+ try {
809
+ await expected.handle.sync();
810
+ } catch (error) {
811
+ if (process.platform !== "win32" || !["EACCES", "EINVAL", "EPERM"].includes(
812
+ error.code ?? ""
813
+ )) {
814
+ throw error;
815
+ }
816
+ }
817
+ const after = await fs.stat(expected.path);
818
+ const afterInodeVerifiable = hasVerifiableInode(after.ino);
819
+ if (!after.isDirectory() || after.dev !== expected.dev || afterInodeVerifiable !== expected.inodeVerifiable || expected.inodeVerifiable && after.ino !== expected.ino) {
820
+ throw new Error("Session attachment parent directory changed.");
821
+ }
822
+ }
823
+ __name(syncDurableAttachmentDirectory, "syncDurableAttachmentDirectory");
757
824
  var SESSION_ATTACHMENT_UNAVAILABLE_TEXT = "[Attachment is no longer available]";
758
825
  var SessionAttachmentReferenceError = class extends Error {
759
826
  constructor(message, code) {
@@ -1169,17 +1236,59 @@ var SessionAttachmentStore = class {
1169
1236
  const directory = this.persistentDirectory ?? await this.directoryPromise?.catch(() => void 0);
1170
1237
  if (directory) {
1171
1238
  options.assertCanCommit?.();
1239
+ const parent = await openDurableAttachmentDirectoryIfPresent(
1240
+ path.dirname(directory)
1241
+ );
1242
+ if (!parent) return;
1172
1243
  const tombstone = path.join(
1173
1244
  path.dirname(directory),
1174
- `.${path.basename(directory)}.deleting-${randomUUID()}`
1245
+ `.${path.basename(directory)}.deleting`
1175
1246
  );
1176
1247
  try {
1177
- await fs.rename(directory, tombstone);
1178
- } catch (error) {
1179
- if (error.code === "ENOENT") return;
1180
- throw error;
1248
+ options.assertCanCommit?.();
1249
+ let tombstoneExists = false;
1250
+ try {
1251
+ const stats = await fs.lstat(tombstone);
1252
+ if (!stats.isDirectory() || stats.isSymbolicLink()) {
1253
+ throw new Error("Session attachment tombstone is not a directory.");
1254
+ }
1255
+ tombstoneExists = true;
1256
+ } catch (error) {
1257
+ if (error.code !== "ENOENT") throw error;
1258
+ }
1259
+ if (tombstoneExists) {
1260
+ options.assertCanCommit?.();
1261
+ await fs.rm(tombstone, { recursive: true, force: true });
1262
+ await syncDurableAttachmentDirectory(parent);
1263
+ return;
1264
+ }
1265
+ options.assertCanCommit?.();
1266
+ try {
1267
+ await fs.rename(directory, tombstone);
1268
+ } catch (error) {
1269
+ if (error.code !== "ENOENT") throw error;
1270
+ try {
1271
+ const stats = await fs.lstat(tombstone);
1272
+ if (!stats.isDirectory() || stats.isSymbolicLink()) {
1273
+ throw new Error(
1274
+ "Session attachment tombstone is not a directory."
1275
+ );
1276
+ }
1277
+ options.assertCanCommit?.();
1278
+ await fs.rm(tombstone, { recursive: true, force: true });
1279
+ } catch (tombstoneError) {
1280
+ if (tombstoneError.code !== "ENOENT") {
1281
+ throw tombstoneError;
1282
+ }
1283
+ }
1284
+ await syncDurableAttachmentDirectory(parent);
1285
+ return;
1286
+ }
1287
+ await fs.rm(tombstone, { recursive: true, force: true });
1288
+ await syncDurableAttachmentDirectory(parent);
1289
+ } finally {
1290
+ await parent.handle.close().catch(() => void 0);
1181
1291
  }
1182
- await fs.rm(tombstone, { recursive: true, force: true });
1183
1292
  }
1184
1293
  }
1185
1294
  assertStored(reference) {
@@ -1274,7 +1383,7 @@ var SessionAttachmentStore = class {
1274
1383
 
1275
1384
  // packages/acp-bridge/src/bridgeClient.ts
1276
1385
  init_esbuild_shims();
1277
- import { randomUUID as randomUUID2 } from "node:crypto";
1386
+ import { randomUUID } from "node:crypto";
1278
1387
  import { promises as fs2 } from "node:fs";
1279
1388
  import * as path2 from "node:path";
1280
1389
 
@@ -1643,7 +1752,7 @@ var BridgeClient = class {
1643
1752
  options.map((o) => String(o.optionId ?? ""))
1644
1753
  );
1645
1754
  allowedOptionIds.delete("");
1646
- const requestId = randomUUID2();
1755
+ const requestId = randomUUID();
1647
1756
  if (allowedOptionIds.has(CANCEL_VOTE_SENTINEL)) {
1648
1757
  throw new CancelSentinelCollisionError(requestId, CANCEL_VOTE_SENTINEL);
1649
1758
  }
@@ -3200,7 +3309,7 @@ var BridgeClient = class {
3200
3309
  } catch {
3201
3310
  }
3202
3311
  }
3203
- const tmp = `${realTarget}.${process.pid}.${Date.now()}.${randomUUID2()}.tmp`;
3312
+ const tmp = `${realTarget}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;
3204
3313
  let preserveMode;
3205
3314
  try {
3206
3315
  const targetStat = await fs2.stat(realTarget);
@@ -16,7 +16,7 @@ import {
16
16
  MODIFIER_SHIFT_BIT,
17
17
  MODIFIER_SUPER_BIT,
18
18
  clipboardHasImage
19
- } from "./chunk-FDY5RMGH.js";
19
+ } from "./chunk-CFJY4DGX.js";
20
20
  import {
21
21
  require_jsx_runtime
22
22
  } from "./chunk-SV5PQVQE.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  KittySequenceOverflowEvent,
35
35
  logKittySequenceOverflow
36
- } from "./chunk-L2M46FP5.js";
36
+ } from "./chunk-QYMAKPY5.js";
37
37
  import {
38
38
  createDebugLogger
39
39
  } from "./chunk-UHQFIS7N.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  getRateLimitErrorDetails
5
- } from "./chunk-4FTKQNWJ.js";
5
+ } from "./chunk-DYXFD5RO.js";
6
6
  import {
7
7
  isInternalPromptId
8
- } from "./chunk-L2M46FP5.js";
8
+ } from "./chunk-QYMAKPY5.js";
9
9
  import {
10
10
  createDebugLogger
11
11
  } from "./chunk-UHQFIS7N.js";
@@ -49,7 +49,8 @@ __name(getModelConfiguration, "getModelConfiguration");
49
49
  function buildModelReasoningConfigOption(modelId, state = {}) {
50
50
  const reasoning = getModelConfiguration(modelId)?.reasoning;
51
51
  if (!reasoning?.thinking) return void 0;
52
- const currentValue = state.enabled === false ? REASONING_EFFORT_NONE : reasoning.toggleOnly ? REASONING_EFFORT_DEFAULT : reasoning.efforts.find((effort) => effort === state.effort) ?? reasoning.defaultEffort;
52
+ const thinkingMandatory = state.thinkingMandatory === true;
53
+ const currentValue = state.enabled === false && !thinkingMandatory ? REASONING_EFFORT_NONE : reasoning.toggleOnly ? REASONING_EFFORT_DEFAULT : reasoning.efforts.find((effort) => effort === state.effort) ?? reasoning.defaultEffort;
53
54
  return {
54
55
  id: "reasoning_effort",
55
56
  name: "Reasoning effort",
@@ -58,11 +59,13 @@ function buildModelReasoningConfigOption(modelId, state = {}) {
58
59
  type: "select",
59
60
  currentValue,
60
61
  options: [
61
- {
62
- value: REASONING_EFFORT_NONE,
63
- name: "Thinking off",
64
- description: "Disable thinking for this session"
65
- },
62
+ ...thinkingMandatory ? [] : [
63
+ {
64
+ value: REASONING_EFFORT_NONE,
65
+ name: "Thinking off",
66
+ description: "Disable thinking for this session"
67
+ }
68
+ ],
66
69
  ...reasoning.toggleOnly ? [
67
70
  {
68
71
  value: REASONING_EFFORT_DEFAULT,
@@ -76,15 +79,21 @@ function buildModelReasoningConfigOption(modelId, state = {}) {
76
79
  }))
77
80
  ],
78
81
  _meta: {
79
- "qwenCode/reasoning": reasoning.toggleOnly ? { toggleOnly: true } : { defaultEffort: reasoning.defaultEffort }
82
+ "qwenCode/reasoning": reasoning.toggleOnly ? {
83
+ toggleOnly: true,
84
+ ...thinkingMandatory ? { thinkingMandatory: true } : {}
85
+ } : {
86
+ defaultEffort: reasoning.defaultEffort,
87
+ ...thinkingMandatory ? { thinkingMandatory: true } : {}
88
+ }
80
89
  }
81
90
  };
82
91
  }
83
92
  __name(buildModelReasoningConfigOption, "buildModelReasoningConfigOption");
84
- function buildModelReasoningConfigPreview(modelId) {
93
+ function buildModelReasoningConfigPreview(modelId, state = {}) {
85
94
  const reasoning = getModelConfiguration(modelId)?.reasoning;
86
95
  if (!reasoning?.thinking || reasoning.toggleOnly) return void 0;
87
- const option = buildModelReasoningConfigOption(modelId);
96
+ const option = buildModelReasoningConfigOption(modelId, state);
88
97
  return option ? [option] : void 0;
89
98
  }
90
99
  __name(buildModelReasoningConfigPreview, "buildModelReasoningConfigPreview");
@@ -17,7 +17,7 @@ import {
17
17
  isLoaderEnvKey,
18
18
  publishPendingCompileCache,
19
19
  reportRejectedLoaderKeys
20
- } from "./chunk-5PA6UEYA.js";
20
+ } from "./chunk-MZCJWS5Y.js";
21
21
  import {
22
22
  buildTrustPrecedenceRules,
23
23
  require_strip_json_comments,