@qwen-code/qwen-code 0.22.2 → 0.22.3

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 (324) 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-X42SXBJH.js} +33 -35
  13. package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-2FJAOLGG.js} +51 -53
  14. package/chunks/{acpAgent-MXEAN54C.js → acpAgent-2ZMIJAFV.js} +268 -186
  15. package/chunks/{agent-PJIPDWHB.js → agent-X5WX3L2I.js} +24 -26
  16. package/chunks/{agent-headless-B4JVD7UK.js → agent-headless-IZM25LJA.js} +24 -26
  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/{bridge-FKZTVIS3.js → bridge-ME6QXZNA.js} +37 -39
  20. package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-HQ6KDS7C.js} +6 -6
  21. package/chunks/{channel-settings-store-4UFCLBBG.js → channel-settings-store-PEOI7XCG.js} +47 -44
  22. package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-6NA6BBZV.js} +5 -5
  23. package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-NEZ2J6RK.js} +5 -5
  24. package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-FKU7DIHJ.js} +4 -4
  25. package/chunks/{chunk-P5GGM4KS.js → chunk-2HYKTO7V.js} +3 -3
  26. package/chunks/{chunk-XDFHY4R3.js → chunk-2LNNVAUV.js} +2 -2
  27. package/chunks/{chunk-ZFKOCECU.js → chunk-2OBKDPZZ.js} +2 -2
  28. package/chunks/{chunk-3DXFGHAJ.js → chunk-2OUD5T67.js} +1 -1
  29. package/chunks/{chunk-EOGELB3H.js → chunk-2SXSLSQE.js} +1 -1
  30. package/chunks/{chunk-4JWNNLPT.js → chunk-2YOHKHYR.js} +2 -2
  31. package/chunks/{chunk-JU4EEXC7.js → chunk-36GSQ3MM.js} +2 -2
  32. package/chunks/chunk-36LGBEM6.js +130 -0
  33. package/chunks/{chunk-H2WDGQ6D.js → chunk-3JXM2CVW.js} +1 -1
  34. package/chunks/{chunk-G34IR3D6.js → chunk-3SZC4VP4.js} +26 -109
  35. package/chunks/{chunk-HVEYF6VT.js → chunk-3WK3QDNV.js} +1 -1
  36. package/chunks/{chunk-5XBFCMWD.js → chunk-3XKLXHGK.js} +17 -9
  37. package/chunks/{chunk-SFPGAQUL.js → chunk-42IDLQWS.js} +24 -18
  38. package/chunks/{chunk-43GGFFLY.js → chunk-4K7KNVWH.js} +1 -1
  39. package/chunks/{chunk-F6FV3C5K.js → chunk-4NDLQAY2.js} +24 -272
  40. package/chunks/{chunk-VVW4ZNFY.js → chunk-4QHPPXK2.js} +15 -7
  41. package/chunks/{chunk-IJKTMLBE.js → chunk-4TT3IVGA.js} +1 -1
  42. package/chunks/{chunk-C6K43ZDE.js → chunk-4VPCTGH6.js} +5 -5
  43. package/chunks/chunk-4VQBQLIZ.js +293 -0
  44. package/chunks/{chunk-OIVXBW3W.js → chunk-62GQFYID.js} +1 -1
  45. package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
  46. package/chunks/{chunk-AGR5UROZ.js → chunk-6X7EU5TI.js} +17 -29
  47. package/chunks/{chunk-PFCQ62V4.js → chunk-6ZPDLGHN.js} +6 -6
  48. package/chunks/{chunk-RIEFGNTP.js → chunk-734C6JGI.js} +207 -43
  49. package/chunks/{chunk-FBSSIAAQ.js → chunk-73RM4POK.js} +7 -7
  50. package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
  51. package/chunks/chunk-7J6OTNGO.js +424 -0
  52. package/chunks/{chunk-O2UN57NX.js → chunk-7LOELM2I.js} +19 -2
  53. package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
  54. package/chunks/{chunk-CPGJJJLU.js → chunk-7T52W4SW.js} +1 -1
  55. package/chunks/{chunk-5O72BNDD.js → chunk-7VMIMAVB.js} +7 -7
  56. package/chunks/{chunk-XRSOI3DL.js → chunk-A3LWD5MK.js} +1 -1
  57. package/chunks/{chunk-F7TNAPZ4.js → chunk-AIAOIFY4.js} +5 -5
  58. package/chunks/{chunk-4CDSK5AZ.js → chunk-AYFA7MZV.js} +2 -2
  59. package/chunks/{chunk-3JGZSIDA.js → chunk-B466ZSHZ.js} +1 -1
  60. package/chunks/{chunk-L6BZRIUL.js → chunk-B5PHIJGI.js} +182 -4
  61. package/chunks/{chunk-3I6UTTDX.js → chunk-BKWNKLZB.js} +19 -19
  62. package/chunks/{chunk-3FDFA4MZ.js → chunk-BOWFGCEU.js} +1 -1
  63. package/chunks/{chunk-3AFMQUTI.js → chunk-C2X7KY45.js} +1 -1
  64. package/chunks/{chunk-FY76G3G5.js → chunk-C3PEFRKD.js} +4 -4
  65. package/chunks/{chunk-FDY5RMGH.js → chunk-CFJY4DGX.js} +1 -1
  66. package/chunks/{chunk-CCBZDVUA.js → chunk-CIZCL2MW.js} +33 -20
  67. package/chunks/{chunk-LDP5OD6N.js → chunk-CLWO3B77.js} +2 -2
  68. package/chunks/chunk-DJBQCO2E.js +842 -0
  69. package/chunks/{chunk-4J657AJR.js → chunk-DJECZIJX.js} +40 -40
  70. package/chunks/{chunk-F5SZP77N.js → chunk-DJEZ55D4.js} +71 -65
  71. package/chunks/{chunk-BAJKAAOY.js → chunk-DJPASAUV.js} +3840 -1055
  72. package/chunks/{chunk-RUGNCYNO.js → chunk-DMLVSW7L.js} +532 -22
  73. package/chunks/{chunk-4FTKQNWJ.js → chunk-DYXFD5RO.js} +181 -2
  74. package/chunks/{chunk-PDMJ3KGS.js → chunk-EB6QRGHM.js} +1 -1
  75. package/chunks/{chunk-DZWPESIF.js → chunk-EFWRMA2I.js} +3 -3
  76. package/chunks/{chunk-4MQEPP3Y.js → chunk-EQSBPBZ3.js} +5 -119
  77. package/chunks/{chunk-Z7TGYN5F.js → chunk-FROAFEFB.js} +2 -2
  78. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  79. package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
  80. package/chunks/{chunk-43UYNAWX.js → chunk-G6FECKTJ.js} +2 -2
  81. package/chunks/{chunk-SJ3ZUWFK.js → chunk-GBJBJ4HX.js} +4 -4
  82. package/chunks/{chunk-IOPCFOTF.js → chunk-GPGU4S2N.js} +2 -2
  83. package/chunks/{chunk-6LFJEACX.js → chunk-GVIVASYK.js} +7 -7
  84. package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
  85. package/chunks/{chunk-A7YP63XN.js → chunk-HP5LR5HL.js} +5 -5
  86. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  87. package/chunks/{chunk-TRZTNIQ6.js → chunk-I6LYRJPB.js} +2 -2
  88. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  89. package/chunks/{chunk-4HV6HH33.js → chunk-ISKH4QX3.js} +9 -9
  90. package/chunks/{chunk-WKK5BQNP.js → chunk-JHYH6PYQ.js} +43 -420
  91. package/chunks/{chunk-6IUNAPLR.js → chunk-K5KXUXWC.js} +1 -1
  92. package/chunks/{chunk-JHS74YAB.js → chunk-KID24ZFN.js} +1 -1
  93. package/chunks/{chunk-EFUM7RVY.js → chunk-KJO2LBUK.js} +942 -16
  94. package/chunks/{chunk-B7CDU2SL.js → chunk-KYWTPLBJ.js} +17 -20
  95. package/chunks/{chunk-JSHHYW6T.js → chunk-LHBUKJG2.js} +3 -3
  96. package/chunks/{chunk-P2SU6ZTI.js → chunk-LUEHOUHM.js} +1 -1
  97. package/chunks/{chunk-66KDY3LV.js → chunk-M3QRM3DE.js} +1 -1
  98. package/chunks/{chunk-V4QXXQJ2.js → chunk-MF7HCQWZ.js} +2 -2
  99. package/chunks/{chunk-W5MJJ2V7.js → chunk-MK2GIB46.js} +1 -1
  100. package/chunks/{chunk-Y6LSMB6J.js → chunk-MO3FC2WT.js} +1 -1
  101. package/chunks/{chunk-L6YT5H34.js → chunk-MPNBVAEU.js} +4 -4
  102. package/chunks/{chunk-CSMI4FP5.js → chunk-MSBO7X2W.js} +1 -1
  103. package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
  104. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  105. package/chunks/{chunk-6LFTG244.js → chunk-NMOD2FXQ.js} +15 -5
  106. package/chunks/{chunk-KUX5D6DK.js → chunk-NV55WWD6.js} +11330 -10971
  107. package/chunks/{chunk-Q26AYA62.js → chunk-OU5APVWO.js} +2 -2
  108. package/chunks/{chunk-2K6ORIHJ.js → chunk-P2G476QN.js} +11 -11
  109. package/chunks/{chunk-OIP7C4FE.js → chunk-PADPMMYM.js} +4 -4
  110. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  111. package/chunks/{chunk-TGWAQ5RB.js → chunk-PZ66FRIC.js} +2071 -2124
  112. package/chunks/{chunk-7UYV53BC.js → chunk-Q2MSPKIJ.js} +1 -1
  113. package/chunks/{chunk-L2M46FP5.js → chunk-QYMAKPY5.js} +5 -5
  114. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  115. package/chunks/chunk-SEONHUS3.js +275 -0
  116. package/chunks/{chunk-ZGXYO7DY.js → chunk-SS4MRMKE.js} +122 -13
  117. package/chunks/{chunk-T32W2JHI.js → chunk-SS5SDCD3.js} +2 -2
  118. package/chunks/{chunk-3SGB2UHX.js → chunk-ST5MDGH3.js} +23 -11
  119. package/chunks/{chunk-MIIVI25Q.js → chunk-ST5V3ZOC.js} +2 -2
  120. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  121. package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
  122. package/chunks/{chunk-77RG5SFQ.js → chunk-TEBDFQBZ.js} +1 -1
  123. package/chunks/{chunk-6CGL7E7G.js → chunk-TVC6HQ2U.js} +2 -2
  124. package/chunks/{chunk-BBWV7ONL.js → chunk-TZBSGJ6C.js} +6 -6
  125. package/chunks/{chunk-T3WXYEZ4.js → chunk-U54AYGEC.js} +38 -5
  126. package/chunks/{chunk-JCQD3INC.js → chunk-URE3QBBB.js} +1 -1
  127. package/chunks/{chunk-Y3QL45LS.js → chunk-V4264FEG.js} +8 -8
  128. package/chunks/{chunk-KEKZFOL6.js → chunk-V7EESTJV.js} +1 -1
  129. package/chunks/{chunk-R4PMVSR5.js → chunk-VBCPNIQD.js} +18 -20
  130. package/chunks/{chunk-RJC5EIKY.js → chunk-VGIFXISB.js} +3 -3
  131. package/chunks/{chunk-Z7FLBQPR.js → chunk-W3JH33JE.js} +7 -7
  132. package/chunks/{chunk-K2NQPH5D.js → chunk-WGY3AVGM.js} +3 -3
  133. package/chunks/{chunk-PKAYJDB3.js → chunk-WNPDGUJO.js} +21 -2
  134. package/chunks/{chunk-IZIVM7LZ.js → chunk-WXEA74YB.js} +1 -1
  135. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  136. package/chunks/{chunk-IK5BW3CS.js → chunk-XHF7WQ6B.js} +2 -2
  137. package/chunks/{chunk-2NYCN6F2.js → chunk-XSG6G3G6.js} +43 -26
  138. package/chunks/{chunk-HVQ3B7FF.js → chunk-Y5S7LBOZ.js} +43 -6
  139. package/chunks/{chunk-LXIBMVRN.js → chunk-YLSQLSH7.js} +13 -7
  140. package/chunks/{chunk-JSC3H3TD.js → chunk-ZEYFMJQA.js} +14 -6
  141. package/chunks/chunk-ZWJDJ6RU.js +2597 -0
  142. package/chunks/{chunk-QP4C6WCE.js → chunk-ZYMLPEZQ.js} +2 -2
  143. package/chunks/{chunk-BNMF3K5X.js → chunk-ZZMSC3RG.js} +52 -36
  144. package/chunks/{chunk-XDLEZ5HX.js → chunk-ZZUKP7HV.js} +1 -1
  145. package/chunks/{config-utils-BBOCOGZW.js → config-utils-R6M3TA34.js} +39 -39
  146. package/chunks/{contextCommand-EET67MQ2.js → contextCommand-ZCAP23J6.js} +36 -38
  147. package/chunks/{core-runtime-677KFX6Q.js → core-runtime-AXB6SK5D.js} +41 -43
  148. package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-4QNE64MR.js} +34 -36
  149. package/chunks/{daemon-MJQUO7RA.js → daemon-3GNHB3M2.js} +495 -7
  150. package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-IVAJJWYK.js} +33 -35
  151. package/chunks/{daemon-status-provider-RFKZOK3S.js → daemon-status-provider-K3SJ5C2U.js} +42 -44
  152. package/chunks/{daemon-trust-policy-DRZPFB4Q.js → daemon-trust-policy-DOR3YG62.js} +41 -43
  153. package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-KGGROSIV.js} +41 -43
  154. package/chunks/{deferred-core-runtime-BBVIOP24.js → deferred-core-runtime-WOYLUQQ7.js} +33 -35
  155. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  156. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  157. package/chunks/{dist-QODVOVWI.js → dist-6BPYWHVD.js} +31 -30
  158. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  159. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  160. package/chunks/{dist-ILDBUWDB.js → dist-LVZCXVPF.js} +1 -1
  161. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  162. package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
  163. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  164. package/chunks/{earlyInputCapture-2JOMMNQ4.js → earlyInputCapture-OHBEVO4K.js} +33 -35
  165. package/chunks/{edit-BSV6YRVW.js → edit-LEQLAGPZ.js} +24 -26
  166. package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-35QCAAFP.js} +3 -3
  167. package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-ONQN3WHE.js} +27 -29
  168. package/chunks/{environment-MOZMPUHR.js → environment-UANTR7A4.js} +37 -39
  169. package/chunks/{errors-DMPQVYJL.js → errors-WAK6KFBC.js} +36 -38
  170. package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-XQD6D543.js} +3 -3
  171. package/chunks/{exitPlanMode-UE4FGCY4.js → exitPlanMode-UEYBG6P5.js} +24 -26
  172. package/chunks/{fast-path-773PV7PU.js → fast-path-WUL7UZ6H.js} +4 -4
  173. package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
  174. package/chunks/{glob-CZHOWUEA.js → glob-Y54QUWDY.js} +24 -26
  175. package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-PTD3MBA7.js} +2 -1
  176. package/chunks/{handleAutoUpdate-SGXKTQM6.js → handleAutoUpdate-FP3NWNSG.js} +37 -39
  177. package/chunks/{i18n-B42HKHKH.js → i18n-INIU5X7A.js} +35 -37
  178. package/chunks/{image-gen-HAYOEQ4O.js → image-gen-J6FDGUZP.js} +4 -6
  179. package/chunks/{initializer-FB66WYR3.js → initializer-TYODV6GE.js} +41 -43
  180. package/chunks/{installationInfo-Y7AULNMX.js → installationInfo-AAPKYDSZ.js} +33 -35
  181. package/chunks/{list-2HWGSVRA.js → list-TUODDN6J.js} +44 -46
  182. package/chunks/{gemini-IP4FJAP5.js → llm-NSAVK5V3.js} +84 -82
  183. package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-AY2QKXHE.js} +25 -25
  184. package/chunks/{loadedSettingsAdapter-7Y7IEI6T.js → loadedSettingsAdapter-KJCLZ3C4.js} +41 -43
  185. package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-DSFQHXIF.js} +305 -27
  186. package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-TSWENTK5.js} +33 -35
  187. package/chunks/{mcp-QGG5NMJJ.js → mcp-MWSAPFOL.js} +41 -43
  188. package/chunks/{monitor-FI7PY36Z.js → monitor-RW4GWJHB.js} +24 -26
  189. package/chunks/{nonInteractiveCli-4LO2TL72.js → nonInteractiveCli-JXKL343Q.js} +77 -78
  190. package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-CQNYS5OR.js} +24 -26
  191. package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
  192. package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-J6QIF7EX.js} +13 -15
  193. package/chunks/{pidfile-JMF2CLMY.js → pidfile-QOIQZFT2.js} +33 -35
  194. package/chunks/process-registry-OAEG6WGC.js +662 -0
  195. package/chunks/{processUtils-IQZBYWSB.js → processUtils-GPHNANKZ.js} +2 -2
  196. package/chunks/{prompt-terminal-ledger-DCZO6S7C.js → prompt-terminal-ledger-FOMFTYOM.js} +34 -36
  197. package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-WWDXPYQI.js} +28 -30
  198. package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-OF5WRBQT.js} +4 -6
  199. package/chunks/{read-file-QE2B5FTX.js → read-file-FQUQHC6N.js} +5 -5
  200. package/chunks/{record-artifact-RZGZBENU.js → record-artifact-VW23GS4F.js} +2 -2
  201. package/chunks/{report-findings-Q3SYKKW5.js → report-findings-AO5VYFLR.js} +7 -3
  202. package/chunks/{resumeHistoryUtils-CZ4JRDVW.js → resumeHistoryUtils-NSGF3UCB.js} +37 -39
  203. package/chunks/{ripGrep-R6B6HWPX.js → ripGrep-4CAT6SKV.js} +7 -7
  204. package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-5X6IDZER.js} +271 -86
  205. package/chunks/{runtime-TTIGSBM4.js → runtime-HK27GMPF.js} +46 -48
  206. package/chunks/{scheduled-tasks-QB4ZVUQS.js → scheduled-tasks-MN2ZZ5P6.js} +39 -41
  207. package/chunks/{scheduler-YRUG22M7.js → scheduler-WD4MHMO5.js} +35 -37
  208. package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-TTU2CHBU.js} +1 -1
  209. package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-UUMVYMAL.js} +10 -4
  210. package/chunks/{send-message-Y5I6NYAM.js → send-message-AJ4OCUBV.js} +18 -2
  211. package/chunks/{serve-MXXCDAQN.js → serve-2XCHPPGG.js} +41 -43
  212. package/chunks/{server-DFUSSSHI.js → server-GO2N5DH7.js} +4148 -3348
  213. package/chunks/{session-3TEHNENZ.js → session-IFNHTUBT.js} +81 -82
  214. package/chunks/session-pr-refresh-I3UBWMVP.js +364 -0
  215. package/chunks/{settings-VOZYKLTT.js → settings-L6N54CU6.js} +40 -42
  216. package/chunks/{shell-6RTKZVMI.js → shell-4Y5LLW6N.js} +24 -26
  217. package/chunks/{skill-FEOKFX26.js → skill-YOWTRAKQ.js} +58 -14
  218. package/chunks/{skill-settings-VA4XVYVL.js → skill-settings-ZL4JY5UE.js} +41 -43
  219. package/chunks/{spawnChannel-F6WVP723.js → spawnChannel-ZST6XJVJ.js} +35 -37
  220. package/chunks/{standalone-update-RGILUQVK.js → standalone-update-THVU3OKY.js} +36 -38
  221. package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-XDFSHBZD.js} +401 -334
  222. package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
  223. package/chunks/{task-create-TMSV7RD5.js → task-create-QN4LYRSE.js} +3 -3
  224. package/chunks/{task-list-W55RBFRX.js → task-list-JPLGK45U.js} +2 -2
  225. package/chunks/{task-update-N536I4GQ.js → task-update-IWEOJFV2.js} +3 -3
  226. package/chunks/{team-create-QYSWCYCL.js → team-create-OOPXCDBA.js} +24 -26
  227. package/chunks/{team-delete-FJRFX33M.js → team-delete-RZVVSGCY.js} +2 -2
  228. package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-DSX5EWAT.js} +24 -26
  229. package/chunks/{terminal-image-renderer-SMQE46UJ.js → terminal-image-renderer-KS25G33E.js} +33 -35
  230. package/chunks/{theme-manager-RFO5WWFF.js → theme-manager-YMZNG45F.js} +33 -35
  231. package/chunks/{tool-search-F2EMIAPV.js → tool-search-J5Q6U7DN.js} +9 -9
  232. package/chunks/{total-session-admission-HTVTP4BS.js → total-session-admission-PVN64JVV.js} +37 -39
  233. package/chunks/{trustedFolders-7OCNMUQE.js → trustedFolders-FATSC4YI.js} +35 -37
  234. package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
  235. package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-SIKHLHVR.js} +6 -6
  236. package/chunks/{updateCheck-7QBDXZRT.js → updateCheck-D3YG2WCD.js} +36 -38
  237. package/chunks/{useAutoAcceptIndicator-UI4SNL2O.js → useAutoAcceptIndicator-ILINOSAS.js} +43 -45
  238. package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-JUDQP6V4.js} +74 -75
  239. package/chunks/{version-ANP4TS6O.js → version-C63GDDWN.js} +1 -1
  240. package/chunks/{web-fetch-QJADSAH3.js → web-fetch-FOQZMNSC.js} +8 -10
  241. package/chunks/{web-search-7TTQKEKM.js → web-search-PUJTBFUC.js} +5 -7
  242. package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
  243. package/chunks/{workflow-5XN6XSOT.js → workflow-Y5IPINVH.js} +47 -58
  244. package/chunks/{workspace-providers-status-PDFZWL5Q.js → workspace-providers-status-IJ4VHFMB.js} +45 -47
  245. package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-SMJWI2AI.js} +1 -1
  246. package/chunks/{workspace-registry-23R7XRB5.js → workspace-registry-BTGZIMPK.js} +37 -39
  247. package/chunks/{workspace-service-MUYO2QIC.js → workspace-service-SIN67ITC.js} +46 -51
  248. package/chunks/{workspace-skills-status-IKECTOOQ.js → workspace-skills-status-F3RKCUIX.js} +44 -46
  249. package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-PLIDLJZX.js} +45 -47
  250. package/chunks/{write-file-GGRBB5TZ.js → write-file-PAIGB33C.js} +26 -28
  251. package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-LYQD7BQA.js} +5 -5
  252. package/cli.js +14 -14
  253. package/package.json +3 -3
  254. package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-TRCMSA_6.js} +1 -1
  255. package/web-shell/assets/{arc-BSTnk5pu.js → arc-D9Uls5b3.js} +1 -1
  256. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-Bwb8jPXg.js} +1 -1
  257. package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-DHj71TSX.js} +1 -1
  258. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-uKBBdbyr.js} +1 -1
  259. package/web-shell/assets/channel-CXjVLaBa.js +1 -0
  260. package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-BZd0Phrl.js} +1 -1
  261. package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-7KNeNBqN.js} +1 -1
  262. package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-BeboS7Fi.js} +1 -1
  263. package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-RV3JONoj.js} +1 -1
  264. package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Yw9FCFsP.js} +1 -1
  265. package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-GIMnydDe.js} +1 -1
  266. package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-Cfrux7bL.js} +1 -1
  267. package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-BlvIN0CO.js} +1 -1
  268. package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-DMs7Rr4t.js} +1 -1
  269. package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +1 -0
  270. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +1 -0
  271. package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-DNGqTNwI.js} +1 -1
  272. package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-CojMpaoH.js} +1 -1
  273. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-DF07YXGo.js} +1 -1
  274. package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-17-4WtCH.js} +1 -1
  275. package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-G3Wuyz9m.js} +1 -1
  276. package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-nyWIKZ8P.js} +1 -1
  277. package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-tKHhmYSC.js} +1 -1
  278. package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-CpDf1hYk.js} +1 -1
  279. package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-Cah2IFXG.js} +1 -1
  280. package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-DNaCkgxy.js} +1 -1
  281. package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-CAdRgcf1.js} +1 -1
  282. package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CMUJAShL.js} +1 -1
  283. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-o-_MUNey.js} +1 -1
  284. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js} +1 -1
  285. package/web-shell/assets/{index-CBGz4Qjl.js → index-BK_NKxiJ.js} +1 -1
  286. package/web-shell/assets/index-Ci-z4zWY.js +1913 -0
  287. package/web-shell/assets/index-LDlXZRHA.css +36 -0
  288. package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-qJPeZbGP.js} +1 -1
  289. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-7Om4vNo1.js} +1 -1
  290. package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BNtXqmBW.js} +1 -1
  291. package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-COgFec8P.js} +1 -1
  292. package/web-shell/assets/{layout-CEz_1L8z.js → layout-B9n81PC9.js} +1 -1
  293. package/web-shell/assets/{linear-CBjTq9Hc.js → linear-Bb6nXZQq.js} +1 -1
  294. package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-Cgrm3JVT.js} +6 -6
  295. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-TKwLTjnG.js} +1 -1
  296. package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-BJPuvlpi.js} +1 -1
  297. package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-D01VkNsW.js} +1 -1
  298. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-C4hHsiv-.js} +1 -1
  299. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-CuEO4xK2.js} +1 -1
  300. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-D5J_vIo5.js} +1 -1
  301. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-DQKY223V.js} +1 -1
  302. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-D27YV_cm.js} +1 -1
  303. package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-TJg8UcwV.js} +1 -1
  304. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-CmnPzUIx.js} +1 -1
  305. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +1 -0
  306. package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-ByeP3_Nu.js} +1 -1
  307. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +8 -0
  308. package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-BsFA5juR.js} +1 -1
  309. package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-DREP2ECo.js} +1 -1
  310. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-iyd9lKi2.js} +1 -1
  311. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-CVr1_j9q.js} +1 -1
  312. package/web-shell/index.html +3 -3
  313. package/chunks/chunk-7DJCPZE3.js +0 -945
  314. package/chunks/chunk-J2OSJFP3.js +0 -202
  315. package/chunks/chunk-K2OJUPOE.js +0 -78
  316. package/chunks/chunk-P3QQPMQA.js +0 -19
  317. package/chunks/process-registry-PMJOA5CO.js +0 -172
  318. package/web-shell/assets/channel-CENAhErJ.js +0 -1
  319. package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
  320. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
  321. package/web-shell/assets/index-8hXIpvo4.js +0 -1865
  322. package/web-shell/assets/index-DclEv91i.css +0 -5
  323. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
  324. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
@@ -14,7 +14,7 @@ import {
14
14
  init_esbuild_shims();
15
15
  async function getCliVersion() {
16
16
  const pkgJson = await getPackageJson();
17
- return "0.22.2";
17
+ return "0.22.3";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
20
 
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  defaultModalities
5
- } from "./chunk-YRLW2MSX.js";
5
+ } from "./chunk-XBVNNDPK.js";
6
6
  import {
7
7
  Mutex
8
8
  } from "./chunk-VGC4I5JJ.js";
@@ -14,7 +14,7 @@ import {
14
14
  isCacheableReadResult,
15
15
  parsePDFPageRange,
16
16
  processSingleFileContent
17
- } from "./chunk-3I6UTTDX.js";
17
+ } from "./chunk-BKWNKLZB.js";
18
18
  import {
19
19
  isAnyAutoMemPath
20
20
  } from "./chunk-6PJOTWAN.js";
@@ -102,7 +102,7 @@ import {
102
102
  recordTokenUsageMetrics,
103
103
  recordToolCallMetrics,
104
104
  recordToolExecutionMetrics
105
- } from "./chunk-L6BZRIUL.js";
105
+ } from "./chunk-B5PHIJGI.js";
106
106
  import {
107
107
  SemanticAttributes,
108
108
  init_esm,
@@ -2599,7 +2599,7 @@ var QwenLogger = class _QwenLogger {
2599
2599
  this.flushIfNeeded();
2600
2600
  }
2601
2601
  // Phase 4b — HTTP-status retry from retryWithBackoff (429/5xx). Distinct from
2602
- // logContentRetryEvent which is fired by geminiChat's content-recovery loop.
2602
+ // logContentRetryEvent which is fired by llmChat's content-recovery loop.
2603
2603
  logApiRetryEvent(event) {
2604
2604
  const rumEvent = this.createActionEvent("misc", "api_retry", {
2605
2605
  properties: {
@@ -2932,7 +2932,7 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
2932
2932
  *
2933
2933
  * `outgoingSessionId` is the session the process was on when the replay
2934
2934
  * begins — the swap transaction's begin-time `outgoingHint`, falling back
2935
- * to `GeminiClient.initializedSessionId`. An earlier failed swap's abort
2935
+ * to `LlmClient.initializedSessionId`. An earlier failed swap's abort
2936
2936
  * clears `initializedSessionId`, so keying on it alone would capture no
2937
2937
  * outgoing session and lose the live bucket (#9844 review). Its bucket and
2938
2938
  * closed flag are captured too: the `/branch` rollback re-initializes that
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-M5GB774H.js";
6
6
  import {
7
7
  sanitizeLogText
8
- } from "./chunk-E55H6BZ7.js";
8
+ } from "./chunk-ICURCKIU.js";
9
9
  import {
10
10
  stripAnsi
11
11
  } from "./chunk-TWPJO254.js";
@@ -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";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-E7REAOTN.js";
6
6
  import {
7
7
  formatHistoryGapNotice
8
- } from "./chunk-XDLEZ5HX.js";
8
+ } from "./chunk-ZZUKP7HV.js";
9
9
  import {
10
10
  loadUndici
11
11
  } from "./chunk-TXASDT2M.js";
@@ -14,20 +14,22 @@ import {
14
14
  } from "./chunk-OZ6KS6KW.js";
15
15
  import {
16
16
  projectGoalStateToLegacy
17
- } from "./chunk-KUX5D6DK.js";
17
+ } from "./chunk-NV55WWD6.js";
18
18
  import {
19
19
  observeToolResultBoundary,
20
20
  toolResultBoundaryArtifact
21
- } from "./chunk-TGWAQ5RB.js";
21
+ } from "./chunk-PZ66FRIC.js";
22
22
  import {
23
23
  parseGoalSnapshotV2,
24
- parseGoalStateCause,
24
+ parseGoalStateCause
25
+ } from "./chunk-JHYH6PYQ.js";
26
+ import {
25
27
  projectUserTranscriptForDisplay
26
- } from "./chunk-WKK5BQNP.js";
28
+ } from "./chunk-7J6OTNGO.js";
27
29
  import {
28
30
  formatVisionBridgeNoticeDisplay,
29
31
  isVisionBridgeNoticeDisplay
30
- } from "./chunk-L2M46FP5.js";
32
+ } from "./chunk-QYMAKPY5.js";
31
33
  import {
32
34
  ToolNames
33
35
  } from "./chunk-UTLCH2FK.js";
@@ -37,7 +39,7 @@ import {
37
39
  import {
38
40
  writeStderrLine,
39
41
  writeStderrLineSafe
40
- } from "./chunk-KGJGEEVR.js";
42
+ } from "./chunk-7FA2II6K.js";
41
43
  import {
42
44
  init_esbuild_shims
43
45
  } from "./chunk-5O2XNYP6.js";
@@ -748,12 +750,22 @@ function createTranscriptToolCallResultUpdate(options) {
748
750
  }
749
751
  })
750
752
  };
751
- if (options.resultDisplay !== void 0 && !isTruncatedSessionDiffDisplay(options.resultDisplay)) {
752
- update["rawOutput"] = options.resultDisplay;
753
- }
753
+ const rawOutput = getReplayRawOutput(options.resultDisplay);
754
+ if (rawOutput !== void 0) update["rawOutput"] = rawOutput;
754
755
  return update;
755
756
  }
756
757
  __name(createTranscriptToolCallResultUpdate, "createTranscriptToolCallResultUpdate");
758
+ function getReplayRawOutput(resultDisplay) {
759
+ if (!isTruncatedSessionDiffDisplay(resultDisplay)) return resultDisplay;
760
+ if (resultDisplay["fileDiffTruncated"] === true || typeof resultDisplay["fileDiff"] !== "string") {
761
+ return void 0;
762
+ }
763
+ return {
764
+ fileName: resultDisplay["fileName"],
765
+ fileDiff: resultDisplay["fileDiff"]
766
+ };
767
+ }
768
+ __name(getReplayRawOutput, "getReplayRawOutput");
757
769
  function createTranscriptPlanUpdate(todos, cumulativeUsage, options = {}) {
758
770
  const meta = buildUpdateMeta({
759
771
  ...options,
@@ -2954,7 +2966,7 @@ async function extractMetadata(conversation, config) {
2954
2966
  const gitBranch = firstRecord?.gitBranch;
2955
2967
  let gitRepo;
2956
2968
  if (cwd) {
2957
- const { getGitRepoName } = await import("./deferred-core-runtime-BBVIOP24.js");
2969
+ const { getGitRepoName } = await import("./deferred-core-runtime-WOYLUQQ7.js");
2958
2970
  gitRepo = getGitRepoName(cwd);
2959
2971
  }
2960
2972
  let model;
@@ -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";