@qwen-code/qwen-code 0.21.12 → 0.21.14-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +13 -5
  2. package/bundled/qc-helper/docs/features/code-review.md +18 -13
  3. package/bundled/qc-helper/docs/features/commands.md +120 -8
  4. package/bundled/qc-helper/docs/features/sub-agents.md +2 -2
  5. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  6. package/bundled/qc-helper/docs/qwen-serve.md +20 -3
  7. package/bundled/review/SKILL.md +130 -82
  8. package/chunks/{MaxSizedBox-ZSJJ2D5S.js → MaxSizedBox-3PZITE2Y.js} +46 -45
  9. package/chunks/{StandaloneSessionPicker-WHUHQXSA.js → StandaloneSessionPicker-2C34PNGO.js} +68 -67
  10. package/chunks/{acp-startup-profiler-SVPUHLXV.js → acp-startup-profiler-HUYGO57H.js} +2 -2
  11. package/chunks/{acpAgent-7JOAESF5.js → acpAgent-3J4NHAYT.js} +1098 -366
  12. package/chunks/{agent-E6V3VXQR.js → agent-VFX4RPP5.js} +42 -41
  13. package/chunks/agent-headless-6WCF4J6N.js +88 -0
  14. package/chunks/{anthropicContentGenerator-YDT4EOKO.js → anthropicContentGenerator-M7XRJMSK.js} +8 -8
  15. package/chunks/{artifact-tool-4GCQQDZI.js → artifact-tool-GEXTOPVO.js} +2 -2
  16. package/chunks/{askUserQuestion-HZJJLR3Z.js → askUserQuestion-B33XRSB7.js} +2 -2
  17. package/chunks/{bridge-NPBV53UA.js → bridge-XR5ZSR7U.js} +46 -45
  18. package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
  19. package/chunks/{channel-management-service-OADNGQM3.js → channel-management-service-X6LCQUAD.js} +1 -1
  20. package/chunks/{channel-settings-store-4ODLJ4X2.js → channel-settings-store-Z7BUEUJE.js} +50 -49
  21. package/chunks/{channel-worker-group-IHBIHQ45.js → channel-worker-group-TJ35JDPE.js} +4 -4
  22. package/chunks/{channel-worker-manager-GEHYJ5AE.js → channel-worker-manager-G5LKWGOG.js} +4 -4
  23. package/chunks/{channel-worker-supervisor-ZJIIWM4I.js → channel-worker-supervisor-OEVWBHGT.js} +2 -2
  24. package/chunks/{chunk-47BGDLJG.js → chunk-25GHLMQQ.js} +42 -20
  25. package/chunks/{chunk-2ZWH53I4.js → chunk-2B2BF7P7.js} +3 -3
  26. package/chunks/chunk-2C6HJMG3.js +757 -0
  27. package/chunks/{chunk-WM3LUQLO.js → chunk-2JXDFSVE.js} +6 -6
  28. package/chunks/{chunk-OYWVIXHT.js → chunk-2M55OBEB.js} +1 -1
  29. package/chunks/{chunk-B4VN3VDH.js → chunk-2OA3JMRD.js} +5 -5
  30. package/chunks/{chunk-GZDWTBT3.js → chunk-3EZLLVDF.js} +2 -2
  31. package/chunks/chunk-3PWCMXIR.js +9169 -0
  32. package/chunks/{chunk-XAFIL4BD.js → chunk-4KQ2TI2K.js} +5 -5
  33. package/chunks/{chunk-OPVF453Q.js → chunk-4V4DFJBS.js} +3 -3
  34. package/chunks/{chunk-DPTMKFIH.js → chunk-4ZMS3JCR.js} +43 -12
  35. package/chunks/{chunk-6JEIRPLN.js → chunk-55PIFSP2.js} +2 -2
  36. package/chunks/{chunk-V6OBVAST.js → chunk-57KOJ2KZ.js} +1 -1
  37. package/chunks/{chunk-QLTATTPS.js → chunk-5CVO7YES.js} +1 -1
  38. package/chunks/{chunk-OK47XBYH.js → chunk-5IYS4WWR.js} +1 -1
  39. package/chunks/chunk-5MK45KZ3.js +492 -0
  40. package/chunks/{chunk-OWXFBIB6.js → chunk-6DFPR7CS.js} +1 -1
  41. package/chunks/{chunk-YIGGWOJE.js → chunk-6HY6IF3Z.js} +1 -1
  42. package/chunks/{chunk-XDRXOSAD.js → chunk-6LAPGPVA.js} +7 -5
  43. package/chunks/{chunk-Q4ZPYNIZ.js → chunk-6PDOHRN6.js} +4 -4
  44. package/chunks/{chunk-OWGRUU7F.js → chunk-6QFDQMQX.js} +1 -1
  45. package/chunks/{chunk-MUNA4QDC.js → chunk-6VDPDHIP.js} +29 -8
  46. package/chunks/{chunk-MDNUCDKZ.js → chunk-73G3Z7QS.js} +3 -3
  47. package/chunks/{chunk-VIFA5VJD.js → chunk-7OCSX7FC.js} +1 -1
  48. package/chunks/{chunk-D2RNVVH6.js → chunk-AKBOLMUF.js} +96 -18
  49. package/chunks/{chunk-S6TCTH4Z.js → chunk-AQBHJ2IG.js} +12 -12
  50. package/chunks/{chunk-WCEI6J56.js → chunk-BOJNAPUE.js} +2 -2
  51. package/chunks/{chunk-DAV4QFD5.js → chunk-BQWNIPTE.js} +44 -3
  52. package/chunks/{chunk-HOSVOUDK.js → chunk-BUQDLC2G.js} +3 -0
  53. package/chunks/{chunk-LUISTZXI.js → chunk-CH5OFRV7.js} +2 -2
  54. package/chunks/{chunk-G6MUFRNI.js → chunk-CHHABXPE.js} +1 -1
  55. package/chunks/{chunk-4AOVQPJU.js → chunk-CPHEPGAO.js} +1 -1
  56. package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
  57. package/chunks/{chunk-K5IDV3PC.js → chunk-D34RDOLP.js} +12 -2
  58. package/chunks/{chunk-3GM5DLBI.js → chunk-DGJ7O55J.js} +3 -3
  59. package/chunks/{chunk-7KJPO7YH.js → chunk-DRKYT2TR.js} +2 -2
  60. package/chunks/{chunk-PZW46OTB.js → chunk-DVR7XKO5.js} +2 -2
  61. package/chunks/{chunk-CQ6IPDQW.js → chunk-DZCV3ZYU.js} +3 -3
  62. package/chunks/{chunk-ULNWG62W.js → chunk-E3DYKPYZ.js} +3 -3
  63. package/chunks/{chunk-YCHNAKC5.js → chunk-E5RS7LF4.js} +44 -13
  64. package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
  65. package/chunks/chunk-EOCQCNV4.js +3887 -0
  66. package/chunks/{chunk-D7QGE3RT.js → chunk-FAAUPSY2.js} +1 -1
  67. package/chunks/{chunk-2IVYL3IF.js → chunk-FCTLOVYW.js} +1 -1
  68. package/chunks/{chunk-QPBFRWCP.js → chunk-FS5NGKWC.js} +3 -3
  69. package/chunks/{chunk-RQJA2YYO.js → chunk-G6FFFICU.js} +4 -4
  70. package/chunks/{chunk-36XKGB7E.js → chunk-GV3OIADZ.js} +3 -3
  71. package/chunks/{chunk-3AEKDXKT.js → chunk-H4A72DE5.js} +1 -1
  72. package/chunks/{chunk-IH4Z54RJ.js → chunk-HGPMOXLZ.js} +5 -5
  73. package/chunks/{chunk-DG4IQ6JG.js → chunk-I3N2Z25H.js} +3 -3
  74. package/chunks/{chunk-WI6GIM2M.js → chunk-I7NTHW4C.js} +2 -2
  75. package/chunks/{chunk-ZBB5EZZV.js → chunk-IA2K2HJE.js} +2 -2
  76. package/chunks/{chunk-IRSLAS4M.js → chunk-IOTPI425.js} +19 -11
  77. package/chunks/{chunk-ROIJYS5K.js → chunk-ISRHAMNL.js} +3 -3
  78. package/chunks/{chunk-CGM3E75C.js → chunk-J63PKMYA.js} +3 -3
  79. package/chunks/{chunk-PTSEETCO.js → chunk-J6YS7Z25.js} +107 -13
  80. package/chunks/{chunk-ZQUY3ZJU.js → chunk-K3CECR5C.js} +4 -4
  81. package/chunks/{chunk-QBJYSIQ4.js → chunk-K3LPAED5.js} +53 -12
  82. package/chunks/{chunk-FRHQQC2Z.js → chunk-KBXKR5R2.js} +1 -1
  83. package/chunks/{chunk-4KM2SYK5.js → chunk-KC4WMLZO.js} +1491 -10579
  84. package/chunks/{chunk-IX4PWUDU.js → chunk-KSGWAYNE.js} +14350 -8679
  85. package/chunks/{chunk-CPFFU46D.js → chunk-KV27IEHM.js} +1 -1
  86. package/chunks/{chunk-OR64CU46.js → chunk-L6CCLB3G.js} +1 -1
  87. package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
  88. package/chunks/{chunk-GXTMEATA.js → chunk-LLR424CQ.js} +18 -15
  89. package/chunks/{chunk-RDVNSJQU.js → chunk-LRDB2OLB.js} +3 -3
  90. package/chunks/{chunk-LSRI3ND3.js → chunk-MA2HEDVP.js} +1 -1
  91. package/chunks/{chunk-DFVXU5YM.js → chunk-MCG53LWC.js} +1 -1
  92. package/chunks/{chunk-YBVVOSOH.js → chunk-MIPFDQAF.js} +1 -1
  93. package/chunks/{chunk-KRXPRVGL.js → chunk-MLXTMF7H.js} +0 -1
  94. package/chunks/{chunk-BSR5AXZR.js → chunk-NRPXRNN4.js} +1 -1
  95. package/chunks/{chunk-X5SLJOMF.js → chunk-NV6LW6FT.js} +4 -4
  96. package/chunks/{chunk-YILJKX2T.js → chunk-NVRMCWTP.js} +10 -6
  97. package/chunks/chunk-NYWWQ437.js +24 -0
  98. package/chunks/{chunk-AKBFSOC5.js → chunk-OBJYN4MX.js} +2 -2
  99. package/chunks/{chunk-NX4A23LY.js → chunk-OJOP26ET.js} +3 -3
  100. package/chunks/{chunk-3GDBZJD6.js → chunk-OLZSWUZR.js} +7 -7
  101. package/chunks/{chunk-K34GJQOZ.js → chunk-OO4FKHLO.js} +4 -4
  102. package/chunks/{chunk-BSSLSQEW.js → chunk-OSAFWBNR.js} +3 -3
  103. package/chunks/{chunk-TMFWI4RC.js → chunk-OVY67CYC.js} +1 -1
  104. package/chunks/{chunk-6ZKSO6K7.js → chunk-P425IVUK.js} +7 -7
  105. package/chunks/{chunk-4XA4QIUA.js → chunk-PMS7O6SA.js} +1 -1
  106. package/chunks/{chunk-LCX5B364.js → chunk-PPTM4O4R.js} +3 -3
  107. package/chunks/{chunk-VPV7WBVT.js → chunk-PT4I7NBA.js} +1 -1
  108. package/chunks/{chunk-3LDGOQXZ.js → chunk-QECSDJET.js} +6 -6
  109. package/chunks/{chunk-FMIH5KMQ.js → chunk-QEJZUXSK.js} +1 -1
  110. package/chunks/{chunk-NLFLYSS4.js → chunk-QFJ5JHQR.js} +1 -1
  111. package/chunks/{chunk-KWX56CHZ.js → chunk-QIHHJKXT.js} +7 -7
  112. package/chunks/{chunk-TDESMS7M.js → chunk-RAQBBGS6.js} +50 -70
  113. package/chunks/{chunk-KEC5FHLM.js → chunk-ROIYNTHJ.js} +3 -3
  114. package/chunks/{chunk-63FNZTWG.js → chunk-RWDNJBWN.js} +2 -2
  115. package/chunks/{chunk-56HVDG3M.js → chunk-RXHBTKMG.js} +6 -6
  116. package/chunks/{chunk-MAKIANMX.js → chunk-S6CXQKDD.js} +3 -3
  117. package/chunks/{chunk-CIDQISGM.js → chunk-SA7GBPEA.js} +5 -5
  118. package/chunks/{chunk-YX2RDGAL.js → chunk-SBRIBTYN.js} +1 -1
  119. package/chunks/{chunk-TTRH3RTQ.js → chunk-SG7ZP5PG.js} +4 -4
  120. package/chunks/{chunk-XH3KAV2G.js → chunk-SGLPDKRT.js} +3 -3
  121. package/chunks/{chunk-JRIVMPD2.js → chunk-SLILKYV2.js} +4 -4
  122. package/chunks/{chunk-NW2GIPG3.js → chunk-SNQZZ765.js} +2 -2
  123. package/chunks/{chunk-I7BT2MME.js → chunk-SR2LYSMT.js} +1 -1
  124. package/chunks/{chunk-TXP5NGG3.js → chunk-SXCOEJO4.js} +1 -1
  125. package/chunks/{chunk-MELQSJOU.js → chunk-TNPWODIZ.js} +1 -1
  126. package/chunks/{chunk-VLHR7F4E.js → chunk-U6RZRKNM.js} +247 -198
  127. package/chunks/{chunk-HTYND72J.js → chunk-UC67T4SF.js} +3 -1
  128. package/chunks/{chunk-HG3UBTJ4.js → chunk-UYDGFWIJ.js} +609 -23
  129. package/chunks/{chunk-6P5EXEBL.js → chunk-VGAAAMRD.js} +1126 -232
  130. package/chunks/{chunk-WDVDVWJ3.js → chunk-VHPMDDPT.js} +6 -6
  131. package/chunks/{chunk-H7TMVHKE.js → chunk-WGHHA7ZH.js} +1 -1
  132. package/chunks/{chunk-FQDCO3CJ.js → chunk-WP4WIUOJ.js} +7 -0
  133. package/chunks/{chunk-5RUCD4ED.js → chunk-WPVUOVYX.js} +3 -3
  134. package/chunks/{chunk-EJOGLSNJ.js → chunk-WSSH2BNO.js} +2 -2
  135. package/chunks/{chunk-5AFGJNY6.js → chunk-WVIABDXV.js} +4 -4
  136. package/chunks/chunk-WZAD4ZNJ.js +59 -0
  137. package/chunks/{chunk-62X3CM7Q.js → chunk-X3YA3YGG.js} +8 -5
  138. package/chunks/{chunk-EBPLKY6U.js → chunk-XC377TLN.js} +5483 -3168
  139. package/chunks/{chunk-KLOMACIR.js → chunk-XLLKYULU.js} +2 -2
  140. package/chunks/{chunk-QSD4UH74.js → chunk-XO24LIZC.js} +254 -56
  141. package/chunks/{chunk-N4SVADAV.js → chunk-XT4RKHVE.js} +5 -4
  142. package/chunks/{chunk-PVXEJB66.js → chunk-XUJNK7Y6.js} +1 -1
  143. package/chunks/{chunk-YBHUXEC6.js → chunk-YECDICIO.js} +3 -3
  144. package/chunks/{chunk-FA5K6YI2.js → chunk-YFPZ3NNC.js} +36 -4
  145. package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
  146. package/chunks/{chunk-6SPD4Z7F.js → chunk-YIWH3MKK.js} +8 -3
  147. package/chunks/{chunk-ZMY2P4L3.js → chunk-YXC7JYUI.js} +4 -4
  148. package/chunks/{chunk-TB4YFWXG.js → chunk-YZHRN3CF.js} +2 -2
  149. package/chunks/{chunk-TQDFSQQF.js → chunk-YZOSNW4R.js} +1 -1
  150. package/chunks/{chunk-DD6O3ZRD.js → chunk-ZIGC3MUS.js} +3 -5
  151. package/chunks/{chunk-CZ4OWGQQ.js → chunk-ZXEAEZFN.js} +63 -19
  152. package/chunks/{computer-use-F4URV4TU.js → computer-use-ABECHPS5.js} +42 -41
  153. package/chunks/{config-utils-Z3OW3IQG.js → config-utils-NJQA5YLJ.js} +2 -2
  154. package/chunks/{contextCommand-IGSS2U5J.js → contextCommand-4CD5HZQQ.js} +44 -43
  155. package/chunks/{core-runtime-H5CZDN3A.js → core-runtime-2MOVQ4VX.js} +42 -41
  156. package/chunks/{create-sub-session-XT6DLYOE.js → create-sub-session-KRQULJE6.js} +2 -2
  157. package/chunks/{create-sub-session-PA7MFTHK.js → create-sub-session-L6NNHG5N.js} +46 -44
  158. package/chunks/{cron-create-2JZ2TWTF.js → cron-create-NFRZEOQX.js} +4 -4
  159. package/chunks/{cron-delete-CTPD2P26.js → cron-delete-GFVSVO7C.js} +4 -4
  160. package/chunks/{cron-list-V44KHAF6.js → cron-list-NRW34CLU.js} +4 -4
  161. package/chunks/{daemon-GED37WOX.js → daemon-XH76IXOC.js} +436 -29
  162. package/chunks/{daemon-git-worktree-guard-LZDCNJGV.js → daemon-git-worktree-guard-BLXFEG4Q.js} +44 -43
  163. package/chunks/daemon-status-provider-XGD3TPTO.js +103 -0
  164. package/chunks/daemon-trust-policy-THEGCWPO.js +100 -0
  165. package/chunks/{daemon-trust-policy-monitor-2K2YETMT.js → daemon-trust-policy-monitor-L7L4ACWQ.js} +49 -48
  166. package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
  167. package/chunks/{deferred-core-runtime-FKJ3OYE7.js → deferred-core-runtime-YQLHDUGE.js} +42 -41
  168. package/chunks/discovery-X2NV535U.js +27 -0
  169. package/chunks/{display-image-M2ELAVN4.js → display-image-ON3EYFRD.js} +4 -4
  170. package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
  171. package/chunks/{earlyInputCapture-WJBSJQUF.js → earlyInputCapture-PCTXNW7N.js} +43 -42
  172. package/chunks/{edit-X73LA4YO.js → edit-QX2EGWYW.js} +45 -43
  173. package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
  174. package/chunks/{enter-worktree-CLRQTIVN.js → enter-worktree-EM3ZZ2SB.js} +42 -41
  175. package/chunks/{enterPlanMode-6BDYUQ5T.js → enterPlanMode-ESCMVAKB.js} +42 -41
  176. package/chunks/{environment-WOAJXJDJ.js → environment-TOJI56YV.js} +45 -44
  177. package/chunks/{errors-7OY5MXYY.js → errors-DZ5FWWEM.js} +44 -43
  178. package/chunks/{exit-worktree-TFFJXCRT.js → exit-worktree-KUIJ36XA.js} +42 -41
  179. package/chunks/exitPlanMode-NFVY54FV.js +86 -0
  180. package/chunks/{fast-path-QQLGC37M.js → fast-path-JLQXJSH6.js} +3 -3
  181. package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
  182. package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
  183. package/chunks/{gemini-VHE62IJL.js → gemini-I7OT4FWL.js} +92 -91
  184. package/chunks/{geminiContentGenerator-VSHIEGAQ.js → geminiContentGenerator-GRIS77NJ.js} +6 -6
  185. package/chunks/{glob-VMEEDDLO.js → glob-7TBUUV6R.js} +42 -41
  186. package/chunks/{goal-tools-M4UDAZXP.js → goal-tools-K5OHOJ6B.js} +56 -12
  187. package/chunks/{grep-F4UAR7KX.js → grep-743SYWCZ.js} +42 -41
  188. package/chunks/handleAutoUpdate-GAOYUYOD.js +95 -0
  189. package/chunks/{i18n-ETW24DHW.js → i18n-2ITURYX6.js} +43 -42
  190. package/chunks/{image-gen-YPK2AZT4.js → image-gen-4OIWDZD6.js} +10 -10
  191. package/chunks/initializer-OC7LWA6X.js +101 -0
  192. package/chunks/{installationInfo-P7OTIR4P.js → installationInfo-CO47QX3Q.js} +43 -42
  193. package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
  194. package/chunks/{keychain-token-storage-NKKCUHI2.js → keychain-token-storage-3XFJ5ZB2.js} +2 -2
  195. package/chunks/list-ATR2SFWT.js +104 -0
  196. package/chunks/{list-agents-O6WSY4CT.js → list-agents-OSVDFI6S.js} +2 -2
  197. package/chunks/loadedSettingsAdapter-NK4B7AGK.js +98 -0
  198. package/chunks/{loggingContentGenerator-J2J2AANS.js → loggingContentGenerator-3WXBU5TQ.js} +67 -41
  199. package/chunks/{loop-wakeup-GVQRMUKS.js → loop-wakeup-HWVUU5CF.js} +5 -5
  200. package/chunks/{ls-6W2D7TKU.js → ls-D3HUFHDP.js} +4 -4
  201. package/chunks/{lsp-NJ4KFBI2.js → lsp-3QDDJTCS.js} +2 -2
  202. package/chunks/{managed-npm-update-WMV5ITKU.js → managed-npm-update-4SSBWI2D.js} +43 -42
  203. package/chunks/mcp-C62AE2QI.js +98 -0
  204. package/chunks/{monitor-2MM23VDV.js → monitor-FEYEGASA.js} +42 -41
  205. package/chunks/nonInteractiveCli-AJEV5ZWO.js +165 -0
  206. package/chunks/{notebook-edit-QD4TRKLY.js → notebook-edit-SLLTEY4O.js} +46 -44
  207. package/chunks/{openaiContentGenerator-KLHSPVN2.js → openaiContentGenerator-WLUGIAPX.js} +27 -26
  208. package/chunks/{pidfile-RQGZBNXT.js → pidfile-TV2VWUMB.js} +43 -42
  209. package/chunks/{processUtils-HZZDA2VV.js → processUtils-3IN2ZR55.js} +2 -2
  210. package/chunks/proper-lockfile-3LHWIM44.js +8 -0
  211. package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
  212. package/chunks/{qwenContentGenerator-T75M2Z3B.js → qwenContentGenerator-GSGRFPJE.js} +47 -46
  213. package/chunks/{qwenOAuth2-5QZU444W.js → qwenOAuth2-JLSTIS4Z.js} +9 -9
  214. package/chunks/{read-file-LOVUSBJC.js → read-file-6PZZRGZZ.js} +15 -13
  215. package/chunks/{read-mcp-resource-GWCP23WG.js → read-mcp-resource-XD54ZQMC.js} +2 -2
  216. package/chunks/{record-artifact-IYQDEYMV.js → record-artifact-GLU3UWBV.js} +5 -3
  217. package/chunks/{resumeHistoryUtils-LVKSSQII.js → resumeHistoryUtils-5GEWKOOO.js} +49 -48
  218. package/chunks/ripGrep-FX7GBGFN.js +86 -0
  219. package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
  220. package/chunks/{run-qwen-serve-GZW7B4WK.js → run-qwen-serve-7RHU3NSV.js} +423 -212
  221. package/chunks/{runtime-MYRXEO2E.js → runtime-EPOXAMLP.js} +52 -51
  222. package/chunks/{scheduler-DPTPI6FW.js → scheduler-F4Y7ENVV.js} +44 -43
  223. package/chunks/{sdk-exporters-http-NHBYB5FZ.js → sdk-exporters-http-NC746HLT.js} +3 -3
  224. package/chunks/{sdk-impl-SK4P5WON.js → sdk-impl-YVL7BP6Y.js} +3 -3
  225. package/chunks/{send-message-O7FO63UK.js → send-message-TNBG5EVA.js} +7 -7
  226. package/chunks/{serve-XCG4XCDA.js → serve-LQV4TN5A.js} +49 -50
  227. package/chunks/{server-AWQHKXLG.js → server-IZCKLIYQ.js} +5042 -1725
  228. package/chunks/{session-P5FKNCNR.js → session-52ZGTDVB.js} +87 -85
  229. package/chunks/{settings-CSYVIP2R.js → settings-WCVB34HW.js} +48 -47
  230. package/chunks/{shell-EGTSUO2P.js → shell-33BIUBLH.js} +42 -41
  231. package/chunks/{skill-IFUD72GF.js → skill-IYVQ2QNK.js} +20 -18
  232. package/chunks/{skill-settings-YOE7LBHE.js → skill-settings-YG4ZS4OZ.js} +48 -47
  233. package/chunks/{spawnChannel-PQSZIOLY.js → spawnChannel-BLA4YT4W.js} +44 -43
  234. package/chunks/{standalone-update-RB2EGUSF.js → standalone-update-ALRIPWSM.js} +44 -43
  235. package/chunks/{startInteractiveUI-KMYUJ2MU.js → startInteractiveUI-PISBXWKA.js} +614 -294
  236. package/chunks/{syntheticOutput-DVHJMUGV.js → syntheticOutput-7GWFIDXT.js} +3 -3
  237. package/chunks/{task-create-4NC7PDI4.js → task-create-EILHJJB7.js} +11 -11
  238. package/chunks/{task-list-LBSRMOC7.js → task-list-WGJR6YL5.js} +21 -7
  239. package/chunks/{task-stop-YFNATTIM.js → task-stop-X37KYTKB.js} +2 -2
  240. package/chunks/{task-update-BPLM52GD.js → task-update-XZAHVXJ5.js} +86 -15
  241. package/chunks/{team-create-B6A6MJBT.js → team-create-CIQDCC6A.js} +43 -43
  242. package/chunks/{team-delete-MKYMYBFM.js → team-delete-UEP4QOOT.js} +6 -6
  243. package/chunks/{team-plan-approval-5WO3CXXU.js → team-plan-approval-664XCRB4.js} +42 -41
  244. package/chunks/{terminal-image-renderer-BTRE2GEU.js → terminal-image-renderer-TEBO6ONY.js} +44 -43
  245. package/chunks/theme-manager-3CIFH2JV.js +90 -0
  246. package/chunks/{todoWrite-K5K7NRE5.js → todoWrite-ATS62CAP.js} +4 -4
  247. package/chunks/{tool-search-QNBLXUGR.js → tool-search-IJX5JHJB.js} +19 -17
  248. package/chunks/{total-session-admission-N4E5SFBO.js → total-session-admission-XBK2NVRV.js} +46 -45
  249. package/chunks/{trustedFolders-MQS46LIU.js → trustedFolders-OOFNLRWK.js} +43 -42
  250. package/chunks/{update-relaunch-536KRL33.js → update-relaunch-EIG7EYAQ.js} +5 -5
  251. package/chunks/{updateCheck-QJI2SYWF.js → updateCheck-KYDCBLSF.js} +46 -45
  252. package/chunks/{useAutoAcceptIndicator-7QASHD46.js → useAutoAcceptIndicator-RFX3KNBN.js} +52 -51
  253. package/chunks/{validateNonInterActiveAuth-ZNRGWBLV.js → validateNonInterActiveAuth-MZXSAITU.js} +83 -81
  254. package/chunks/{version-DBEQAFRW.js → version-PJC6ZNXV.js} +1 -1
  255. package/chunks/{web-fetch-MBIVXKPE.js → web-fetch-XXICVGKQ.js} +21 -18
  256. package/chunks/{web-search-4LBIN6VF.js → web-search-LHPM6QWC.js} +9 -9
  257. package/chunks/{workflow-LNMA55HY.js → workflow-4CUO2BV7.js} +159 -57
  258. package/chunks/workspace-providers-status-G4MUGH3X.js +101 -0
  259. package/chunks/{workspace-registration-store-BGRKKIYR.js → workspace-registration-store-QMDMFWBE.js} +2 -2
  260. package/chunks/{workspace-registry-L4NCJ34K.js → workspace-registry-FKBB4MZK.js} +48 -46
  261. package/chunks/{workspace-service-LOXYKYTR.js → workspace-service-TIDTTA65.js} +55 -54
  262. package/chunks/workspace-skills-status-LBC2TZKM.js +101 -0
  263. package/chunks/{workspace-trust-reconciler-H36TCR2S.js → workspace-trust-reconciler-4KJ567XP.js} +58 -56
  264. package/chunks/{write-file-JJAY7JSP.js → write-file-R6LAEER5.js} +42 -41
  265. package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
  266. package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
  267. package/chunks/{zoom-image-4MVVVM7E.js → zoom-image-XLCK6DDK.js} +20 -17
  268. package/cli.js +13 -13
  269. package/locales/ca.js +13 -0
  270. package/locales/de.js +12 -0
  271. package/locales/en.js +11 -0
  272. package/locales/fr.js +13 -0
  273. package/locales/ja.js +13 -0
  274. package/locales/pt.js +12 -0
  275. package/locales/ru.js +12 -0
  276. package/locales/zh-TW.js +11 -0
  277. package/locales/zh.js +11 -0
  278. package/package.json +3 -3
  279. package/web-shell/assets/{arc-B-89zHN4.js → arc-DItbX0DI.js} +1 -1
  280. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BkcOncHk.js → architectureDiagram-3BPJPVTR-CmnIlH8y.js} +1 -1
  281. package/web-shell/assets/{blockDiagram-GPEHLZMM-DQ4yboaF.js → blockDiagram-GPEHLZMM-pObnB9kw.js} +1 -1
  282. package/web-shell/assets/{c4Diagram-AAUBKEIU-C_8ZjPDI.js → c4Diagram-AAUBKEIU-BNBmMS0Y.js} +1 -1
  283. package/web-shell/assets/channel-hZnMfWA9.js +1 -0
  284. package/web-shell/assets/{chunk-2J33WTMH-naKVe1Bm.js → chunk-2J33WTMH-Dz4JBOO6.js} +1 -1
  285. package/web-shell/assets/{chunk-4BX2VUAB-DdoViKT2.js → chunk-4BX2VUAB-Cz2GnvAR.js} +1 -1
  286. package/web-shell/assets/{chunk-55IACEB6-DUDQZEwU.js → chunk-55IACEB6-CC6kOQYx.js} +1 -1
  287. package/web-shell/assets/{chunk-727SXJPM-BqpDTR5s.js → chunk-727SXJPM-Z4lY4gbh.js} +1 -1
  288. package/web-shell/assets/{chunk-AQP2D5EJ-CdmEknkT.js → chunk-AQP2D5EJ-Yz0hZr3D.js} +1 -1
  289. package/web-shell/assets/{chunk-FMBD7UC4-CH7fFTLB.js → chunk-FMBD7UC4-nKmTWTv9.js} +1 -1
  290. package/web-shell/assets/{chunk-ND2GUHAM-ObgSuFKF.js → chunk-ND2GUHAM-CjZz0f6Y.js} +1 -1
  291. package/web-shell/assets/{chunk-QZHKN3VN-D9fKdv_s.js → chunk-QZHKN3VN-Bab3FpuS.js} +1 -1
  292. package/web-shell/assets/classDiagram-4FO5ZUOK-BRnxm8DX.js +1 -0
  293. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BRnxm8DX.js +1 -0
  294. package/web-shell/assets/{cose-bilkent-S5V4N54A-CvzATMx9.js → cose-bilkent-S5V4N54A-BuSAGFox.js} +1 -1
  295. package/web-shell/assets/{dagre-BM42HDAG-M_xU21QW.js → dagre-BM42HDAG-CRZXTg3g.js} +1 -1
  296. package/web-shell/assets/{diagram-2AECGRRQ-CNrl9sW1.js → diagram-2AECGRRQ-BFx1Ayrz.js} +1 -1
  297. package/web-shell/assets/{diagram-5GNKFQAL-CUweVT6T.js → diagram-5GNKFQAL-B2hMZ3gS.js} +1 -1
  298. package/web-shell/assets/{diagram-KO2AKTUF-D3n6Lxjo.js → diagram-KO2AKTUF-DKxAQLmc.js} +1 -1
  299. package/web-shell/assets/{diagram-LMA3HP47-0SeFPK4t.js → diagram-LMA3HP47-Bo1xGqVY.js} +1 -1
  300. package/web-shell/assets/{diagram-OG6HWLK6-DAgyEwge.js → diagram-OG6HWLK6-B9NG78d-.js} +1 -1
  301. package/web-shell/assets/{erDiagram-TEJ5UH35-CzxBBDIK.js → erDiagram-TEJ5UH35-DltQKiqQ.js} +1 -1
  302. package/web-shell/assets/{flowDiagram-I6XJVG4X-B0uj0jyo.js → flowDiagram-I6XJVG4X-5xXGmS4I.js} +1 -1
  303. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DFzcj5km.js → ganttDiagram-6RSMTGT7-bhGL5n0l.js} +1 -1
  304. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DylJ_Fc9.js → gitGraphDiagram-PVQCEYII-ZYnz9hgh.js} +1 -1
  305. package/web-shell/assets/{index-BKSAnXU9.js → index-CBBeUArD.js} +1 -1
  306. package/web-shell/assets/index-CbgU-jUo.css +5 -0
  307. package/web-shell/assets/index-_nhzXqab.js +1750 -0
  308. package/web-shell/assets/{infoDiagram-5YYISTIA-BYMcJVMI.js → infoDiagram-5YYISTIA-Cg-jamQf.js} +1 -1
  309. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-t1quI1S3.js → ishikawaDiagram-YF4QCWOH-CcmvKlyq.js} +1 -1
  310. package/web-shell/assets/{journeyDiagram-JHISSGLW-YM_QVUJm.js → journeyDiagram-JHISSGLW-BRsOQZp1.js} +1 -1
  311. package/web-shell/assets/{kanban-definition-UN3LZRKU-jw8OddK1.js → kanban-definition-UN3LZRKU-xW-dmEHK.js} +1 -1
  312. package/web-shell/assets/{linear-Dlr3RVuP.js → linear-ClBfEZH2.js} +1 -1
  313. package/web-shell/assets/{mermaid.core-CqGKzNzd.js → mermaid.core-D65NDkzc.js} +5 -5
  314. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BqureoOS.js → mindmap-definition-RKZ34NQL-CyvFslYa.js} +1 -1
  315. package/web-shell/assets/{pieDiagram-4H26LBE5-Da20HkK1.js → pieDiagram-4H26LBE5-BwSefMyG.js} +1 -1
  316. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BsNlMvJy.js → quadrantDiagram-W4KKPZXB-GqBJspFS.js} +1 -1
  317. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DzVCQCse.js → requirementDiagram-4Y6WPE33-B137PlTJ.js} +1 -1
  318. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BMo16voT.js → sankeyDiagram-5OEKKPKP-maHkkt8i.js} +1 -1
  319. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Bgi-pdHk.js → sequenceDiagram-3UESZ5HK-DJ1mRaG3.js} +1 -1
  320. package/web-shell/assets/{stateDiagram-AJRCARHV-xaPQXwGk.js → stateDiagram-AJRCARHV-aRmP7Q4i.js} +1 -1
  321. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Db39gvZ_.js +1 -0
  322. package/web-shell/assets/{timeline-definition-PNZ67QCA-C_9RuvKG.js → timeline-definition-PNZ67QCA-CIQ3BRPA.js} +1 -1
  323. package/web-shell/assets/{vennDiagram-CIIHVFJN-Bgu6vdla.js → vennDiagram-CIIHVFJN-DR9VPd5h.js} +1 -1
  324. package/web-shell/assets/{wardley-L42UT6IY-CFTZ8IrX.js → wardley-L42UT6IY-ZcfIbT4D.js} +1 -1
  325. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BASW9Vmt.js → wardleyDiagram-YWT4CUSO-D0jgPi4T.js} +1 -1
  326. package/web-shell/assets/{xychartDiagram-2RQKCTM6--Nh-CD3F.js → xychartDiagram-2RQKCTM6-BGWU4s5o.js} +1 -1
  327. package/web-shell/index.html +2 -2
  328. package/chunks/agent-headless-OEQNFOMH.js +0 -87
  329. package/chunks/chunk-DEDESZDL.js +0 -358
  330. package/chunks/chunk-MPHPFVKK.js +0 -48
  331. package/chunks/chunk-UI5UGEF4.js +0 -3576
  332. package/chunks/daemon-status-provider-QYM57Z44.js +0 -102
  333. package/chunks/daemon-trust-policy-TSRVEYZR.js +0 -99
  334. package/chunks/discovery-XLHITE74.js +0 -220
  335. package/chunks/exitPlanMode-WDURQMIU.js +0 -85
  336. package/chunks/handleAutoUpdate-GN7Z6QAC.js +0 -94
  337. package/chunks/initializer-UA6KQ7MS.js +0 -100
  338. package/chunks/list-GRAMIQOT.js +0 -103
  339. package/chunks/loadedSettingsAdapter-5O2TDS3I.js +0 -97
  340. package/chunks/mcp-XLP33CAI.js +0 -97
  341. package/chunks/nonInteractiveCli-KTA5K6FS.js +0 -163
  342. package/chunks/ripGrep-ZJSHKB6H.js +0 -85
  343. package/chunks/theme-manager-XL2N5SBY.js +0 -89
  344. package/chunks/workspace-providers-status-PDDMI6ST.js +0 -100
  345. package/chunks/workspace-skills-status-IJ5FOQI6.js +0 -100
  346. package/web-shell/assets/channel-Du2WFns8.js +0 -1
  347. package/web-shell/assets/classDiagram-4FO5ZUOK-Zw0HafH6.js +0 -1
  348. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Zw0HafH6.js +0 -1
  349. package/web-shell/assets/index-BIGQygTL.css +0 -5
  350. package/web-shell/assets/index-J7OMTqAN.js +0 -1789
  351. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D5RqimXD.js +0 -1
  352. package/chunks/{chunk-SYHXR6WM.js → chunk-4W5U2TUT.js} +3 -3
  353. /package/chunks/{chunk-NTTBXH7U.js → chunk-UGK4K2N2.js} +0 -0
@@ -0,0 +1,492 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ LIVE_HOST_PROTOCOL_VERSION
5
+ } from "./chunk-NKLP3DCK.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-5O2XNYP6.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/serve/live/discovery.ts
14
+ init_esbuild_shims();
15
+ import { randomUUID } from "node:crypto";
16
+ import { constants as fsConstants } from "node:fs";
17
+ import * as fs from "node:fs/promises";
18
+ import { isIP } from "node:net";
19
+ import { homedir } from "node:os";
20
+ import * as path from "node:path";
21
+ var LIVE_DISCOVERY_RELATIVE_PATH = path.join("live", "daemon.json");
22
+ var MAX_DISCOVERY_BYTES = 16 * 1024;
23
+ var NONCE_PATTERN = /^[A-Za-z0-9_-]{16,256}$/;
24
+ var DEFAULT_HANDOFF_GRACE_MS = 1e3;
25
+ var LOCK_OPTIONS = {
26
+ realpath: false,
27
+ stale: 1e4,
28
+ update: 2e3,
29
+ retries: {
30
+ retries: 120,
31
+ minTimeout: 10,
32
+ maxTimeout: 100,
33
+ factor: 1.2,
34
+ randomize: true
35
+ }
36
+ };
37
+ var LiveDiscoveryOwnerActiveError = class extends Error {
38
+ constructor(ownerPid) {
39
+ super(`Live discovery is owned by active daemon pid ${ownerPid}.`);
40
+ this.ownerPid = ownerPid;
41
+ this.name = "LiveDiscoveryOwnerActiveError";
42
+ }
43
+ static {
44
+ __name(this, "LiveDiscoveryOwnerActiveError");
45
+ }
46
+ };
47
+ var LiveDiscoveryStateError = class extends Error {
48
+ static {
49
+ __name(this, "LiveDiscoveryStateError");
50
+ }
51
+ constructor(cause) {
52
+ super("Existing Live discovery record is invalid.", { cause });
53
+ this.name = "LiveDiscoveryStateError";
54
+ }
55
+ };
56
+ var LiveDiscoveryPublicationError = class extends Error {
57
+ static {
58
+ __name(this, "LiveDiscoveryPublicationError");
59
+ }
60
+ published = true;
61
+ constructor(cause) {
62
+ super("Live discovery publication completed with cleanup errors.", {
63
+ cause
64
+ });
65
+ this.name = "LiveDiscoveryPublicationError";
66
+ }
67
+ };
68
+ function getStableLiveDiscoveryBaseDir(homeDirectory = homedir()) {
69
+ return path.join(homeDirectory, ".qwen");
70
+ }
71
+ __name(getStableLiveDiscoveryBaseDir, "getStableLiveDiscoveryBaseDir");
72
+ function getLiveDiscoveryPath(runtimeBaseDir) {
73
+ return path.join(runtimeBaseDir, LIVE_DISCOVERY_RELATIVE_PATH);
74
+ }
75
+ __name(getLiveDiscoveryPath, "getLiveDiscoveryPath");
76
+ function assertSafeRecord(record) {
77
+ if (typeof record.url !== "string" || typeof record.instanceNonce !== "string" || record.token !== void 0 && typeof record.token !== "string") {
78
+ throw new Error("Live discovery record is invalid.");
79
+ }
80
+ let url;
81
+ try {
82
+ url = new URL(record.url);
83
+ } catch {
84
+ throw new Error("Live discovery URL is invalid.");
85
+ }
86
+ const hostname = url.hostname.replace(/^\[|\]$/g, "").toLowerCase();
87
+ const loopback = hostname === "localhost" || hostname === "::1" || isIP(hostname) === 4 && hostname.startsWith("127.");
88
+ if (url.protocol !== "http:" && url.protocol !== "https:" || !loopback || url.username.length > 0 || url.password.length > 0) {
89
+ throw new Error("Live discovery URL must be a loopback HTTP URL.");
90
+ }
91
+ if (!Number.isSafeInteger(record.protocolVersion) || record.protocolVersion <= 0 || !Number.isSafeInteger(record.pid) || record.pid <= 0 || !NONCE_PATTERN.test(record.instanceNonce) || record.token !== void 0 && (record.token.length === 0 || record.token.length > 4096)) {
92
+ throw new Error("Live discovery record is invalid.");
93
+ }
94
+ }
95
+ __name(assertSafeRecord, "assertSafeRecord");
96
+ function assertRecord(record) {
97
+ assertSafeRecord(record);
98
+ if (record.protocolVersion !== LIVE_HOST_PROTOCOL_VERSION) {
99
+ throw new Error("Live discovery record is invalid.");
100
+ }
101
+ }
102
+ __name(assertRecord, "assertRecord");
103
+ function processIsAlive(pid) {
104
+ try {
105
+ process.kill(pid, 0);
106
+ return true;
107
+ } catch (error) {
108
+ return error.code !== "ESRCH";
109
+ }
110
+ }
111
+ __name(processIsAlive, "processIsAlive");
112
+ function delay(milliseconds) {
113
+ return new Promise((resolve) => {
114
+ setTimeout(resolve, milliseconds);
115
+ });
116
+ }
117
+ __name(delay, "delay");
118
+ async function readExistingRecord(filePath) {
119
+ let stat;
120
+ try {
121
+ stat = await fs.lstat(filePath);
122
+ } catch (error) {
123
+ if (error.code === "ENOENT") return void 0;
124
+ throw error;
125
+ }
126
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.nlink !== 1 || process.platform !== "win32" && ((stat.mode & 511) !== 384 || typeof process.getuid === "function" && stat.uid !== process.getuid()) || stat.size <= 0 || stat.size > MAX_DISCOVERY_BYTES) {
127
+ throw new LiveDiscoveryStateError();
128
+ }
129
+ let handle;
130
+ try {
131
+ handle = await fs.open(
132
+ filePath,
133
+ process.platform === "win32" ? fsConstants.O_RDONLY : fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW
134
+ );
135
+ } catch (error) {
136
+ if (error.code === "ELOOP") {
137
+ throw new LiveDiscoveryStateError(error);
138
+ }
139
+ throw error;
140
+ }
141
+ try {
142
+ const handleStat = await handle.stat();
143
+ if (!handleStat.isFile() || handleStat.nlink !== 1 || handleStat.dev !== stat.dev || handleStat.ino !== stat.ino || handleStat.size !== stat.size || process.platform !== "win32" && ((handleStat.mode & 511) !== 384 || typeof process.getuid === "function" && handleStat.uid !== process.getuid())) {
144
+ throw new LiveDiscoveryStateError();
145
+ }
146
+ const serialized = await handle.readFile("utf8");
147
+ let parsed;
148
+ try {
149
+ parsed = JSON.parse(serialized);
150
+ } catch (error) {
151
+ throw new LiveDiscoveryStateError(error);
152
+ }
153
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
154
+ throw new LiveDiscoveryStateError();
155
+ }
156
+ const record = parsed;
157
+ try {
158
+ assertSafeRecord(record);
159
+ } catch {
160
+ throw new LiveDiscoveryStateError();
161
+ }
162
+ return record;
163
+ } finally {
164
+ await handle.close();
165
+ }
166
+ }
167
+ __name(readExistingRecord, "readExistingRecord");
168
+ async function inspectDirectory(directory, requirePrivateMode = true) {
169
+ const stat = await fs.lstat(directory);
170
+ if (!stat.isDirectory() || stat.isSymbolicLink() || process.platform !== "win32" && (requirePrivateMode && (stat.mode & 511) !== 448 || typeof process.getuid === "function" && stat.uid !== process.getuid())) {
171
+ throw new LiveDiscoveryStateError();
172
+ }
173
+ return { directory, dev: stat.dev, ino: stat.ino };
174
+ }
175
+ __name(inspectDirectory, "inspectDirectory");
176
+ async function assertDirectoryIdentity(expected, requirePrivateMode = true) {
177
+ const current = await inspectDirectory(
178
+ expected.directory,
179
+ requirePrivateMode
180
+ );
181
+ if (current.dev !== expected.dev || current.ino !== expected.ino) {
182
+ throw new LiveDiscoveryStateError();
183
+ }
184
+ }
185
+ __name(assertDirectoryIdentity, "assertDirectoryIdentity");
186
+ async function ensureDirectory(directory, requirePrivateMode) {
187
+ try {
188
+ return await inspectDirectory(directory, requirePrivateMode);
189
+ } catch (error) {
190
+ try {
191
+ await fs.lstat(directory);
192
+ throw error;
193
+ } catch (statError) {
194
+ if (statError.code !== "ENOENT") throw error;
195
+ }
196
+ }
197
+ const parent = path.dirname(directory);
198
+ if (parent === directory) throw new LiveDiscoveryStateError();
199
+ const parentIdentity = await ensureDirectory(parent, false);
200
+ await assertDirectoryIdentity(parentIdentity, false);
201
+ let created = false;
202
+ try {
203
+ await fs.mkdir(directory, { mode: 448 });
204
+ created = true;
205
+ } catch (error) {
206
+ if (error.code !== "EEXIST") throw error;
207
+ }
208
+ if (created && process.platform !== "win32") {
209
+ await fs.chmod(directory, 448);
210
+ }
211
+ await assertDirectoryIdentity(parentIdentity, false);
212
+ return inspectDirectory(directory, requirePrivateMode);
213
+ }
214
+ __name(ensureDirectory, "ensureDirectory");
215
+ async function assertLockShapeIfPresent(lockPath) {
216
+ let stat;
217
+ try {
218
+ stat = await fs.lstat(lockPath);
219
+ } catch (error) {
220
+ if (error.code === "ENOENT") return;
221
+ throw error;
222
+ }
223
+ if (!stat.isDirectory() || stat.isSymbolicLink() || process.platform !== "win32" && typeof process.getuid === "function" && stat.uid !== process.getuid()) {
224
+ throw new LiveDiscoveryStateError();
225
+ }
226
+ }
227
+ __name(assertLockShapeIfPresent, "assertLockShapeIfPresent");
228
+ async function prepareDirectory(runtimeBaseDir, create = true) {
229
+ const directory = path.dirname(getLiveDiscoveryPath(runtimeBaseDir));
230
+ let runtimeBaseIdentity;
231
+ try {
232
+ runtimeBaseIdentity = await inspectDirectory(runtimeBaseDir, false);
233
+ } catch (error) {
234
+ try {
235
+ await fs.lstat(runtimeBaseDir);
236
+ throw error;
237
+ } catch (statError) {
238
+ if (statError.code !== "ENOENT") throw error;
239
+ }
240
+ if (!create) return void 0;
241
+ runtimeBaseIdentity = await ensureDirectory(runtimeBaseDir, false);
242
+ }
243
+ let created = false;
244
+ try {
245
+ const identity = await inspectDirectory(directory);
246
+ await assertDirectoryIdentity(runtimeBaseIdentity, false);
247
+ return identity;
248
+ } catch (error) {
249
+ try {
250
+ await fs.lstat(directory);
251
+ throw error;
252
+ } catch (statError) {
253
+ if (statError.code !== "ENOENT") throw error;
254
+ }
255
+ }
256
+ if (!create) return void 0;
257
+ await assertDirectoryIdentity(runtimeBaseIdentity, false);
258
+ try {
259
+ await fs.mkdir(directory, { mode: 448 });
260
+ created = true;
261
+ } catch (error) {
262
+ if (error.code !== "EEXIST") throw error;
263
+ }
264
+ if (created && process.platform !== "win32") {
265
+ await fs.chmod(directory, 448);
266
+ }
267
+ await assertDirectoryIdentity(runtimeBaseIdentity, false);
268
+ return inspectDirectory(directory);
269
+ }
270
+ __name(prepareDirectory, "prepareDirectory");
271
+ async function lockDirectory(target) {
272
+ const lockPath = path.join(target.directory, ".daemon.lock");
273
+ await assertLockShapeIfPresent(lockPath);
274
+ const lockfile = (await import("./proper-lockfile-3LHWIM44.js")).default;
275
+ let compromised = false;
276
+ const release = await lockfile.lock(target.directory, {
277
+ ...LOCK_OPTIONS,
278
+ lockfilePath: lockPath,
279
+ onCompromised: /* @__PURE__ */ __name(() => {
280
+ compromised = true;
281
+ }, "onCompromised")
282
+ });
283
+ try {
284
+ await assertLockShapeIfPresent(lockPath);
285
+ } catch (error) {
286
+ let releaseError;
287
+ await release().catch((candidate) => {
288
+ releaseError = candidate;
289
+ });
290
+ throw new LiveDiscoveryStateError(
291
+ releaseError ? new AggregateError(
292
+ [error, releaseError],
293
+ "Live discovery lock validation cleanup failed."
294
+ ) : error
295
+ );
296
+ }
297
+ return {
298
+ release,
299
+ assertHealthy: /* @__PURE__ */ __name(() => {
300
+ if (compromised) throw new LiveDiscoveryStateError();
301
+ }, "assertHealthy")
302
+ };
303
+ }
304
+ __name(lockDirectory, "lockDirectory");
305
+ async function syncDirectory(directory) {
306
+ if (process.platform === "win32") return;
307
+ const handle = await fs.open(directory, "r");
308
+ try {
309
+ await handle.sync();
310
+ } finally {
311
+ await handle.close();
312
+ }
313
+ }
314
+ __name(syncDirectory, "syncDirectory");
315
+ async function handoffLiveDiscoveryOwner(runtimeBaseDir, owner, commitOwner, options = {}) {
316
+ const target = await prepareDirectory(runtimeBaseDir, false);
317
+ if (!target) {
318
+ await commitOwner();
319
+ return { reclaimed: false };
320
+ }
321
+ const lock = await lockDirectory(target);
322
+ let result;
323
+ let operationError;
324
+ try {
325
+ lock.assertHealthy();
326
+ await assertDirectoryIdentity(target);
327
+ const filePath = getLiveDiscoveryPath(runtimeBaseDir);
328
+ const current = await readExistingRecord(filePath);
329
+ if (current && (current.pid !== owner.pid || current.instanceNonce !== owner.instanceNonce)) {
330
+ if (current.pid === owner.pid || (options.isProcessAlive ?? processIsAlive)(current.pid)) {
331
+ throw new LiveDiscoveryOwnerActiveError(current.pid);
332
+ }
333
+ await commitOwner();
334
+ lock.assertHealthy();
335
+ await assertDirectoryIdentity(target);
336
+ const confirmed = await readExistingRecord(filePath);
337
+ if (!confirmed || confirmed.pid !== current.pid || confirmed.instanceNonce !== current.instanceNonce) {
338
+ throw new LiveDiscoveryStateError();
339
+ }
340
+ lock.assertHealthy();
341
+ await assertDirectoryIdentity(target);
342
+ await fs.unlink(filePath);
343
+ await syncDirectory(target.directory);
344
+ lock.assertHealthy();
345
+ result = { reclaimed: true };
346
+ } else {
347
+ await commitOwner();
348
+ lock.assertHealthy();
349
+ result = { reclaimed: false };
350
+ }
351
+ } catch (error) {
352
+ operationError = error;
353
+ }
354
+ let releaseError;
355
+ await lock.release().catch((error) => {
356
+ releaseError = error;
357
+ });
358
+ if (releaseError) {
359
+ throw new LiveDiscoveryStateError(
360
+ operationError ? new AggregateError(
361
+ [operationError, releaseError],
362
+ "Live discovery handoff cleanup failed."
363
+ ) : releaseError
364
+ );
365
+ }
366
+ if (operationError) throw operationError;
367
+ if (result?.reclaimed && options.waitForHandoffGrace !== false) {
368
+ await (options.wait ?? delay)(
369
+ options.handoffGraceMs ?? DEFAULT_HANDOFF_GRACE_MS
370
+ );
371
+ }
372
+ return result;
373
+ }
374
+ __name(handoffLiveDiscoveryOwner, "handoffLiveDiscoveryOwner");
375
+ async function writeLiveDiscoveryFile(runtimeBaseDir, record, options = {}) {
376
+ assertRecord(record);
377
+ const target = await prepareDirectory(runtimeBaseDir);
378
+ if (!target) throw new LiveDiscoveryStateError();
379
+ const { directory } = target;
380
+ const filePath = getLiveDiscoveryPath(runtimeBaseDir);
381
+ const temporaryPath = path.join(
382
+ directory,
383
+ `.daemon.${process.pid}.${randomUUID()}.tmp`
384
+ );
385
+ const lock = await lockDirectory(target);
386
+ let handle;
387
+ let operationError;
388
+ let operationSucceeded = false;
389
+ let published = false;
390
+ try {
391
+ lock.assertHealthy();
392
+ await assertDirectoryIdentity(target);
393
+ const current = await readExistingRecord(filePath);
394
+ if (current && (current.pid !== record.pid || current.instanceNonce !== record.instanceNonce)) {
395
+ if ((options.isProcessAlive ?? processIsAlive)(current.pid)) {
396
+ throw new LiveDiscoveryOwnerActiveError(current.pid);
397
+ }
398
+ throw new LiveDiscoveryStateError();
399
+ }
400
+ handle = await fs.open(temporaryPath, "wx", 384);
401
+ const serialized = `${JSON.stringify(record)}
402
+ `;
403
+ if (Buffer.byteLength(serialized) > MAX_DISCOVERY_BYTES) {
404
+ throw new Error("Live discovery record is too large.");
405
+ }
406
+ await handle.writeFile(serialized, "utf8");
407
+ await handle.chmod(384);
408
+ await handle.sync();
409
+ await handle.close();
410
+ handle = void 0;
411
+ lock.assertHealthy();
412
+ await assertDirectoryIdentity(target);
413
+ await fs.rename(temporaryPath, filePath);
414
+ published = true;
415
+ await syncDirectory(directory);
416
+ lock.assertHealthy();
417
+ operationSucceeded = true;
418
+ } catch (error) {
419
+ operationError = error;
420
+ }
421
+ const cleanupErrors = [];
422
+ await handle?.close().catch((error) => cleanupErrors.push(error));
423
+ await fs.unlink(temporaryPath).catch((error) => {
424
+ if (error.code !== "ENOENT") cleanupErrors.push(error);
425
+ });
426
+ await lock.release().catch((error) => cleanupErrors.push(error));
427
+ if (!operationSucceeded) {
428
+ const cause = cleanupErrors.length > 0 ? new AggregateError(
429
+ [operationError, ...cleanupErrors],
430
+ "Live discovery publication cleanup failed."
431
+ ) : operationError;
432
+ if (published) throw new LiveDiscoveryPublicationError(cause);
433
+ if (cleanupErrors.length > 0) {
434
+ throw cause;
435
+ }
436
+ throw operationError;
437
+ }
438
+ if (cleanupErrors.length > 0) {
439
+ throw new LiveDiscoveryPublicationError(
440
+ new AggregateError(
441
+ cleanupErrors,
442
+ "Live discovery publication cleanup failed."
443
+ )
444
+ );
445
+ }
446
+ return filePath;
447
+ }
448
+ __name(writeLiveDiscoveryFile, "writeLiveDiscoveryFile");
449
+ async function removeLiveDiscoveryFile(runtimeBaseDir, owner) {
450
+ if (!NONCE_PATTERN.test(owner.instanceNonce) || !Number.isSafeInteger(owner.pid) || owner.pid <= 0) {
451
+ throw new LiveDiscoveryStateError();
452
+ }
453
+ const target = await prepareDirectory(runtimeBaseDir, false);
454
+ if (!target) return false;
455
+ const filePath = getLiveDiscoveryPath(runtimeBaseDir);
456
+ const lock = await lockDirectory(target);
457
+ try {
458
+ lock.assertHealthy();
459
+ await assertDirectoryIdentity(target);
460
+ const current = await readExistingRecord(filePath);
461
+ if (!current) return false;
462
+ if (current.instanceNonce !== owner.instanceNonce || current.pid !== owner.pid) {
463
+ throw new LiveDiscoveryStateError();
464
+ }
465
+ lock.assertHealthy();
466
+ await assertDirectoryIdentity(target);
467
+ await fs.unlink(filePath);
468
+ await syncDirectory(target.directory);
469
+ lock.assertHealthy();
470
+ return true;
471
+ } finally {
472
+ await lock.release();
473
+ }
474
+ }
475
+ __name(removeLiveDiscoveryFile, "removeLiveDiscoveryFile");
476
+
477
+ export {
478
+ LIVE_DISCOVERY_RELATIVE_PATH,
479
+ LiveDiscoveryOwnerActiveError,
480
+ LiveDiscoveryStateError,
481
+ LiveDiscoveryPublicationError,
482
+ getStableLiveDiscoveryBaseDir,
483
+ getLiveDiscoveryPath,
484
+ handoffLiveDiscoveryOwner,
485
+ writeLiveDiscoveryFile,
486
+ removeLiveDiscoveryFile
487
+ };
488
+ /**
489
+ * @license
490
+ * Copyright 2026 Qwen Team
491
+ * SPDX-License-Identifier: Apache-2.0
492
+ */
@@ -14,7 +14,7 @@ import {
14
14
  init_esbuild_shims();
15
15
  async function getCliVersion() {
16
16
  const pkgJson = await getPackageJson();
17
- return "0.21.12";
17
+ return "0.21.14-preview.0";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
20
 
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-HOSVOUDK.js";
5
+ } from "./chunk-BUQDLC2G.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -9,19 +9,21 @@ import {
9
9
  relaxSchemaForFunctionCalling,
10
10
  safeJsonParse,
11
11
  setGenAiUsageProvenance
12
- } from "./chunk-QLTATTPS.js";
12
+ } from "./chunk-5CVO7YES.js";
13
13
  import {
14
14
  setToolCallPreparations
15
15
  } from "./chunk-GLCZKT5V.js";
16
+ import {
17
+ normalizeMcpToolName
18
+ } from "./chunk-WZAD4ZNJ.js";
16
19
  import {
17
20
  TOKEN_ESTIMATE_UNITS_PER_TOKEN,
18
21
  estimateTextTokenUnits,
19
- estimateTextTokens,
20
- normalizeMcpToolName
21
- } from "./chunk-46UV252V.js";
22
+ estimateTextTokens
23
+ } from "./chunk-YHC2EYYG.js";
22
24
  import {
23
25
  createDebugLogger
24
- } from "./chunk-HOSVOUDK.js";
26
+ } from "./chunk-BUQDLC2G.js";
25
27
  import {
26
28
  FinishReason,
27
29
  GenerateContentResponse
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  getGitVersion,
5
5
  getNpmVersion
6
- } from "./chunk-RQJA2YYO.js";
6
+ } from "./chunk-G6FFFICU.js";
7
7
  import {
8
8
  buildEnvStatusFromEnv,
9
9
  snapshotProcessEnv
10
- } from "./chunk-36XKGB7E.js";
10
+ } from "./chunk-GV3OIADZ.js";
11
11
  import {
12
12
  mapDomainErrorToErrorKind
13
- } from "./chunk-HTYND72J.js";
13
+ } from "./chunk-UC67T4SF.js";
14
14
  import {
15
15
  canUseRipgrep
16
- } from "./chunk-EBPLKY6U.js";
16
+ } from "./chunk-XC377TLN.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  themeManager
5
- } from "./chunk-OYWVIXHT.js";
5
+ } from "./chunk-2M55OBEB.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,17 +2,20 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-QSD4UH74.js";
5
+ } from "./chunk-XO24LIZC.js";
6
6
  import {
7
+ observeHeadlessToolResultProjection,
8
+ observeHeadlessToolResultWire,
7
9
  projectJsonStringToByteBudget
8
- } from "./chunk-UI5UGEF4.js";
10
+ } from "./chunk-EOCQCNV4.js";
9
11
  import {
10
- parseAndFormatApiError
11
- } from "./chunk-EBPLKY6U.js";
12
+ parseAndFormatApiError,
13
+ toolResultBoundaryArtifact
14
+ } from "./chunk-XC377TLN.js";
12
15
  import {
13
16
  formatVisionBridgeNoticeDisplay,
14
17
  isVisionBridgeNoticeDisplay
15
- } from "./chunk-4KM2SYK5.js";
18
+ } from "./chunk-KC4WMLZO.js";
16
19
  import {
17
20
  init_esbuild_shims
18
21
  } from "./chunk-5O2XNYP6.js";
@@ -725,8 +728,10 @@ ${event.value}`, null);
725
728
  is_error: hasError
726
729
  };
727
730
  const content = toolResultContent(response);
731
+ let projectedContent;
728
732
  if (content !== void 0) {
729
- block.content = projectHeadlessToolResultContent(content);
733
+ projectedContent = projectHeadlessToolResultContent(content);
734
+ block.content = projectedContent;
730
735
  }
731
736
  const message = {
732
737
  type: "user",
@@ -738,6 +743,18 @@ ${event.value}`, null);
738
743
  content: [block]
739
744
  }
740
745
  };
746
+ if (content !== void 0 && projectedContent !== void 0) {
747
+ observeHeadlessToolResultProjection(
748
+ message,
749
+ content,
750
+ projectedContent,
751
+ request.callId,
752
+ response.boundaryArtifact ?? toolResultBoundaryArtifact(
753
+ response.persistedOutputFiles,
754
+ response.artifacts
755
+ )
756
+ );
757
+ }
741
758
  this.emitMessageImpl(message);
742
759
  }
743
760
  /**
@@ -1018,8 +1035,12 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
1018
1035
  if (typeof message === "object" && message !== null && "type" in message && message.type === "assistant") {
1019
1036
  this.updateLastAssistantMessage(message);
1020
1037
  }
1021
- this.outputStream.write(`${JSON.stringify(message)}
1022
- `);
1038
+ const frame = `${JSON.stringify(message)}
1039
+ `;
1040
+ if ("session_id" in message) {
1041
+ observeHeadlessToolResultWire(message, frame);
1042
+ }
1043
+ this.outputStream.write(frame);
1023
1044
  }
1024
1045
  /**
1025
1046
  * Control-plane messages (control_request / control_response) share the
@@ -2,15 +2,15 @@
2
2
  "use strict";
3
3
  import {
4
4
  sanitizeFilenameForDisplay
5
- } from "./chunk-4NFY2S7N.js";
5
+ } from "./chunk-E7REAOTN.js";
6
6
  import {
7
7
  t
8
- } from "./chunk-IRSLAS4M.js";
8
+ } from "./chunk-IOTPI425.js";
9
9
  import {
10
10
  fetchGitDiff,
11
11
  findProviderByCredentials,
12
12
  resolveMetadataKey
13
- } from "./chunk-EBPLKY6U.js";
13
+ } from "./chunk-XC377TLN.js";
14
14
  import {
15
15
  init_esbuild_shims
16
16
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-IRSLAS4M.js";
5
+ } from "./chunk-IOTPI425.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";