@qwen-code/qwen-code 0.21.0 → 0.21.1-nightly.20260731.702932cc7

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 (423) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +39 -28
  3. package/bundled/qc-helper/docs/features/channels/_meta.ts +2 -0
  4. package/bundled/qc-helper/docs/features/channels/github.md +139 -0
  5. package/bundled/qc-helper/docs/features/channels/gitlab.md +171 -0
  6. package/bundled/qc-helper/docs/features/channels/overview.md +61 -6
  7. package/bundled/qc-helper/docs/features/code-review.md +21 -1
  8. package/bundled/qc-helper/docs/features/hooks.md +72 -15
  9. package/bundled/qc-helper/docs/features/mcp.md +9 -1
  10. package/bundled/qc-helper/docs/features/scheduled-tasks.md +3 -1
  11. package/bundled/qc-helper/docs/features/sub-agents.md +42 -8
  12. package/bundled/qc-helper/docs/qwen-serve.md +11 -7
  13. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
  14. package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
  15. package/bundled/review/DESIGN.md +19 -0
  16. package/bundled/review/SKILL.md +120 -61
  17. package/chunks/MaxSizedBox-LAFHK4VO.js +88 -0
  18. package/chunks/{StandaloneSessionPicker-BIRMPLRD.js → StandaloneSessionPicker-EMNOBN3S.js} +71 -68
  19. package/chunks/{acp-startup-profiler-RV3IV562.js → acp-startup-profiler-2C4A5ZTJ.js} +2 -2
  20. package/chunks/{acpAgent-6J2U72PQ.js → acpAgent-ERFA6HWV.js} +1674 -591
  21. package/chunks/agent-PLKF6JK4.js +84 -0
  22. package/chunks/agent-headless-JAORDQ63.js +78 -0
  23. package/chunks/{anthropicContentGenerator-75BKLTSP.js → anthropicContentGenerator-OFHSZJBF.js} +79 -27
  24. package/chunks/{artifact-tool-Y5T7GG7F.js → artifact-tool-RDN2W7ND.js} +4 -4
  25. package/chunks/{askUserQuestion-2H6747FR.js → askUserQuestion-OZERWH5R.js} +4 -4
  26. package/chunks/bridge-NYOBVRIT.js +94 -0
  27. package/chunks/{build-RV63TIRH.js → build-GDBLPA24.js} +1 -1
  28. package/chunks/{ca-25EDXPFZ.js → ca-6W3SK7OQ.js} +6 -1
  29. package/chunks/channel-management-service-5S7YCWX5.js +418 -0
  30. package/chunks/channel-settings-store-NLOKYO23.js +91 -0
  31. package/chunks/{channel-worker-group-2ZD7TVAT.js → channel-worker-group-OVWGYMZS.js} +11 -6
  32. package/chunks/{channel-worker-manager-4OA4BCGB.js → channel-worker-manager-H55GKOQA.js} +11 -6
  33. package/chunks/{channel-worker-supervisor-V7KCFJTS.js → channel-worker-supervisor-CABBXYHK.js} +7 -5
  34. package/chunks/{chunk-RIBKPMRP.js → chunk-23F4XGWO.js} +19 -6
  35. package/chunks/{chunk-ACY3A37B.js → chunk-25VHI5T7.js} +23 -18
  36. package/chunks/{chunk-MZAXJAUM.js → chunk-26JK4RPD.js} +1 -1
  37. package/chunks/{chunk-6GMVPFB2.js → chunk-2IIJTXYF.js} +45 -16
  38. package/chunks/{chunk-BPJSQIJX.js → chunk-2J3OJGTL.js} +0 -2
  39. package/chunks/{chunk-2X55UKQE.js → chunk-2JZR3B4A.js} +3 -3
  40. package/chunks/{chunk-7JURR4JT.js → chunk-2OQUICDM.js} +167 -81
  41. package/chunks/{chunk-ZJHVAS7M.js → chunk-2YCYFWYZ.js} +4 -5
  42. package/chunks/{chunk-3QMGYBFN.js → chunk-3APUUXRF.js} +1 -80
  43. package/chunks/{chunk-MUP3T3AD.js → chunk-3I6DUGQD.js} +1 -35
  44. package/chunks/{chunk-JVPM2ULZ.js → chunk-3XZ5SSNR.js} +6 -6
  45. package/chunks/chunk-42VPM33K.js +319 -0
  46. package/chunks/{chunk-VAK25FTU.js → chunk-45IOTAUS.js} +1 -1
  47. package/chunks/chunk-45UYUCJ6.js +363 -0
  48. package/chunks/{chunk-JZA3JUDJ.js → chunk-4KP2F2TE.js} +1 -1
  49. package/chunks/{chunk-IO3IX5Q4.js → chunk-4YJQD2IO.js} +1 -1
  50. package/chunks/{chunk-JXJFVC6E.js → chunk-5G6XUGXO.js} +61 -14
  51. package/chunks/{chunk-ZOIFNCKL.js → chunk-5NNHICSA.js} +3 -23
  52. package/chunks/{chunk-A4UCTEB5.js → chunk-5WV5S2GT.js} +0 -1
  53. package/chunks/{chunk-RHLZR4E5.js → chunk-675H6PLP.js} +1 -1
  54. package/chunks/chunk-6FMJLI5M.js +1591 -0
  55. package/chunks/chunk-6MPDY6ZG.js +76 -0
  56. package/chunks/{chunk-PSOO6YXD.js → chunk-6NUWQ3R7.js} +9 -7
  57. package/chunks/{chunk-7MVVZO4N.js → chunk-6ZRWX46I.js} +4 -4
  58. package/chunks/{chunk-TPRQ7RZH.js → chunk-76E5Y3UZ.js} +3117 -993
  59. package/chunks/{chunk-UUUTRMI2.js → chunk-7ULQIS27.js} +1 -1
  60. package/chunks/{chunk-BKHWX6I2.js → chunk-A5BZ722X.js} +11 -3
  61. package/chunks/{chunk-TEHGS6UP.js → chunk-A5T5W7PR.js} +154 -16
  62. package/chunks/{chunk-VIA5XA4U.js → chunk-A5UODYG3.js} +4 -1
  63. package/chunks/{chunk-JLU636DO.js → chunk-ALMR3E6Q.js} +1 -0
  64. package/chunks/{chunk-EBJQ6AXW.js → chunk-ANDVK2JN.js} +358 -14
  65. package/chunks/{chunk-TOFQCPDC.js → chunk-AOHY3QJ3.js} +14 -8
  66. package/chunks/chunk-AQ37AY7B.js +93 -0
  67. package/chunks/{chunk-PJIZUQVC.js → chunk-AZQ3DT76.js} +2 -2
  68. package/chunks/{chunk-LKEJ26GS.js → chunk-B3TA3IF5.js} +16 -11
  69. package/chunks/{chunk-Q4M4MDQ4.js → chunk-B43QHWY6.js} +1 -1
  70. package/chunks/{chunk-UH3WSE5L.js → chunk-B4AJNNOL.js} +1 -6
  71. package/chunks/{chunk-K36B6G2O.js → chunk-B6FOGNGH.js} +5 -5
  72. package/chunks/{chunk-PWVFN2LF.js → chunk-BP2H5K25.js} +1 -1
  73. package/chunks/{chunk-LB6DUZ26.js → chunk-BTWSGZCT.js} +264 -185
  74. package/chunks/{chunk-ZNAUOR2I.js → chunk-BZBPT52P.js} +2 -2
  75. package/chunks/{chunk-L26JL52R.js → chunk-CBBP4BMC.js} +64 -67
  76. package/chunks/{chunk-ZD6UTE4A.js → chunk-CNTR4GR6.js} +1 -1
  77. package/chunks/{chunk-3SJ43L4W.js → chunk-CPZAH673.js} +6 -0
  78. package/chunks/{chunk-EPDRMGT4.js → chunk-D4HTUMGX.js} +4 -28
  79. package/chunks/{chunk-QAF7NMK7.js → chunk-D7CQTWRS.js} +1 -1
  80. package/chunks/{chunk-XVNQMZ2I.js → chunk-DGEIYUC3.js} +0 -1
  81. package/chunks/{chunk-BPZALHVR.js → chunk-DI35ZN7T.js} +1 -1
  82. package/chunks/{chunk-IKCX4CCL.js → chunk-DKPJUF5F.js} +118 -95
  83. package/chunks/{chunk-DLWL3Z7A.js → chunk-DSFHVTWD.js} +3 -3
  84. package/chunks/{chunk-FSITMZJH.js → chunk-DYRYLJ3O.js} +18 -9
  85. package/chunks/{chunk-NL7LTRLR.js → chunk-E2BHWIDT.js} +48 -72
  86. package/chunks/{chunk-UDX5OBWR.js → chunk-E2FN6SM7.js} +94 -4
  87. package/chunks/{chunk-USTWD7QV.js → chunk-E6CJ2SMM.js} +26 -16
  88. package/chunks/{chunk-KMQ33DO4.js → chunk-EDB7A72S.js} +4 -4
  89. package/chunks/{chunk-7ZCNENPP.js → chunk-FANRZEAJ.js} +1 -1
  90. package/chunks/{chunk-WBL3FJEU.js → chunk-FC4KQFCS.js} +1 -1
  91. package/chunks/{chunk-5NBDS5S6.js → chunk-FCYYAB4S.js} +162 -7
  92. package/chunks/{chunk-OKY7HXPG.js → chunk-FJ5WUMUQ.js} +2 -2
  93. package/chunks/{chunk-PHOF65IG.js → chunk-FRXG4ARO.js} +36273 -44436
  94. package/chunks/{chunk-FQK6JAFG.js → chunk-FS674JW4.js} +4 -4
  95. package/chunks/chunk-FYJ7W2PI.js +194 -0
  96. package/chunks/{chunk-BULDBTYC.js → chunk-G7XXKQYS.js} +3 -28
  97. package/chunks/{chunk-LS77BEZP.js → chunk-GLCZKT5V.js} +1 -5
  98. package/chunks/{chunk-VRYUBFMC.js → chunk-GRUAVQQR.js} +1 -1
  99. package/chunks/{chunk-MVSUYZDT.js → chunk-GWV7DI3S.js} +4 -4
  100. package/chunks/{chunk-A5L3JMUA.js → chunk-HC45LTEN.js} +18 -4
  101. package/chunks/{chunk-PC6JANNU.js → chunk-HKRVXYDN.js} +4 -4
  102. package/chunks/{chunk-GZXCZHCT.js → chunk-I3G5JWBV.js} +1 -1
  103. package/chunks/{chunk-4WIZGAH3.js → chunk-I5BT7ADR.js} +6 -58
  104. package/chunks/{chunk-GSN55ZRI.js → chunk-ID3O7PRB.js} +19 -7
  105. package/chunks/{chunk-L5UHQJTJ.js → chunk-IGTHU3T4.js} +1 -1
  106. package/chunks/{chunk-BIQWWWJN.js → chunk-IIUGIWWY.js} +1 -1
  107. package/chunks/{chunk-RWTEFFPU.js → chunk-JCJ7LKNA.js} +6140 -5616
  108. package/chunks/{chunk-S3TWXGKA.js → chunk-JE7KQ2UP.js} +4 -2
  109. package/chunks/{chunk-PWTZEM3C.js → chunk-JXVC2PL3.js} +3 -37
  110. package/chunks/chunk-JYBU6YUE.js +378 -0
  111. package/chunks/{chunk-RF3EXIHJ.js → chunk-K3PFMM5U.js} +49 -26
  112. package/chunks/{chunk-JCW2R7WC.js → chunk-K623ENWT.js} +3 -79
  113. package/chunks/{chunk-T2NCM2ET.js → chunk-K6KS3LTN.js} +2 -749
  114. package/chunks/chunk-KWHKHSIS.js +81 -0
  115. package/chunks/{chunk-DHHOYAPR.js → chunk-L2E5GFAG.js} +7 -7
  116. package/chunks/{chunk-2W3OOD4W.js → chunk-L55JWS76.js} +6 -3
  117. package/chunks/{chunk-E5TUC6CA.js → chunk-LHKCY7DY.js} +3 -3
  118. package/chunks/{chunk-NH6KE4JX.js → chunk-LOY7RWQG.js} +3 -3
  119. package/chunks/{chunk-U7M2DMGW.js → chunk-M4MSAE7U.js} +130 -5
  120. package/chunks/{chunk-IJTOWOD7.js → chunk-MB32MS4U.js} +92 -9
  121. package/chunks/{chunk-PR75REBZ.js → chunk-MM7TH7ZM.js} +12 -82
  122. package/chunks/{chunk-FODK6UMO.js → chunk-MPHPFVKK.js} +0 -2
  123. package/chunks/{chunk-M5JM7OSF.js → chunk-N4ACHWNH.js} +2 -3
  124. package/chunks/{chunk-JESCGQM3.js → chunk-NAVJD2PQ.js} +8 -7
  125. package/chunks/{chunk-J56UI34H.js → chunk-NBD76HUW.js} +4 -2
  126. package/chunks/{chunk-2SCDWPXI.js → chunk-NC4U4I3Y.js} +5 -5
  127. package/chunks/{chunk-H4SBPHSA.js → chunk-NNL7WPPK.js} +3 -3
  128. package/chunks/{chunk-YBL3QUDD.js → chunk-NQCXWP5D.js} +1 -1
  129. package/chunks/{chunk-CIKQ7KKO.js → chunk-NVFSGPIF.js} +954 -444
  130. package/chunks/{chunk-6OUGMXDC.js → chunk-NWNEANAT.js} +7 -7
  131. package/chunks/chunk-O6GEWCJA.js +21 -0
  132. package/chunks/chunk-OCPBI7J5.js +18 -0
  133. package/chunks/{chunk-KIM5GUMA.js → chunk-OE6F6ZWQ.js} +589 -220
  134. package/chunks/{chunk-SQCQ4KO2.js → chunk-P5DEY3NF.js} +380 -317
  135. package/chunks/{chunk-2JZBVYTU.js → chunk-Q3T5KA2V.js} +1 -8
  136. package/chunks/{chunk-MB4MZHMJ.js → chunk-QARJNL2V.js} +211 -522
  137. package/chunks/{chunk-YH6G52F2.js → chunk-QCXGC7QB.js} +4 -4
  138. package/chunks/chunk-QDK4F2N5.js +1252 -0
  139. package/chunks/{chunk-VDDGDZMA.js → chunk-QHWCP53L.js} +14 -7
  140. package/chunks/{chunk-VULLI6WQ.js → chunk-QIERF2GQ.js} +6 -6
  141. package/chunks/{chunk-TGILQ3YH.js → chunk-QQTJK5GB.js} +200 -77
  142. package/chunks/{chunk-H5FFA6TH.js → chunk-QTHQ6Z5X.js} +16 -3
  143. package/chunks/{chunk-5I2IWRSH.js → chunk-R2XWGR75.js} +2 -2
  144. package/chunks/{chunk-YPE6A4GC.js → chunk-RT7FNC2O.js} +2 -2
  145. package/chunks/{chunk-OFDOK3VM.js → chunk-RX7NJOPE.js} +8 -13
  146. package/chunks/{chunk-6AM5D4ME.js → chunk-S6LOFUVP.js} +0 -12
  147. package/chunks/{chunk-K4XWPEWB.js → chunk-SHN4KHDK.js} +4 -33
  148. package/chunks/{chunk-VYPFXUCB.js → chunk-SZ3KHTDR.js} +1 -1
  149. package/chunks/chunk-T26EAKDL.js +13 -0
  150. package/chunks/chunk-T3CHYWJZ.js +758 -0
  151. package/chunks/{chunk-FNQ6T3CV.js → chunk-TEGJSJDF.js} +10 -7
  152. package/chunks/{chunk-RZIX2G32.js → chunk-THPORXSI.js} +1 -1
  153. package/chunks/{chunk-OHNBB4XR.js → chunk-THVU3RNH.js} +1 -1
  154. package/chunks/{record-artifact-RQKFYO5B.js → chunk-TIRRPCFS.js} +22 -7
  155. package/chunks/{chunk-ETSW4KLJ.js → chunk-TUCOXPHJ.js} +2 -2
  156. package/chunks/{chunk-63P4EL5V.js → chunk-TZTAV5RH.js} +1 -1
  157. package/chunks/{chunk-LK7CHLVP.js → chunk-U4VTUMMK.js} +0 -60
  158. package/chunks/{chunk-3RN6GBKS.js → chunk-U5CODIJW.js} +1 -1
  159. package/chunks/chunk-UU2B5YG6.js +2196 -0
  160. package/chunks/{chunk-R5AFZNQW.js → chunk-VAVHTGU4.js} +15 -8
  161. package/chunks/{chunk-2NH6DYI4.js → chunk-VHPFWR2O.js} +12 -12
  162. package/chunks/{chunk-IKYJHJNF.js → chunk-VOMQ2P6B.js} +3 -3
  163. package/chunks/{chunk-ZFDTEDCF.js → chunk-VX22DUW2.js} +6 -6
  164. package/chunks/{chunk-HTR4WV6U.js → chunk-W4RQUHY3.js} +31 -1
  165. package/chunks/{chunk-M4FMGVY4.js → chunk-WQP7BKWA.js} +3 -3
  166. package/chunks/{chunk-LH2BYDQ5.js → chunk-X2E5TFJ5.js} +18 -12
  167. package/chunks/{chunk-COH43MRJ.js → chunk-XCGIMOLN.js} +27 -1
  168. package/chunks/{chunk-YX324OPW.js → chunk-XDS22O52.js} +1 -1
  169. package/chunks/chunk-XP4L6KS3.js +463 -0
  170. package/chunks/{chunk-6FGBXPWM.js → chunk-XQK4XXTN.js} +38 -44
  171. package/chunks/{chunk-55DJUCI2.js → chunk-XWYPFDB5.js} +53 -43
  172. package/chunks/{chunk-Y34KJKDC.js → chunk-Y7BVNVVW.js} +1 -1
  173. package/chunks/{chunk-IPUUTYMV.js → chunk-YDLJGZHL.js} +1 -1
  174. package/chunks/{chunk-HIJQF5B5.js → chunk-YGE3IXJP.js} +1 -1
  175. package/chunks/{chunk-LQIW3YFY.js → chunk-YJFPRUWX.js} +9 -7
  176. package/chunks/{chunk-J24WCGIN.js → chunk-YQIIG4NA.js} +4 -4
  177. package/chunks/{chunk-BJX6ZSUK.js → chunk-YUFIEIWC.js} +2 -2
  178. package/chunks/{chunk-NIBLUX3Y.js → chunk-Z3S5EMOW.js} +148 -21
  179. package/chunks/{chunk-WCXCRJYB.js → chunk-Z3YLHKB7.js} +1 -1
  180. package/chunks/chunk-Z4X5MTRT.js +133 -0
  181. package/chunks/{chunk-UW5EOVUN.js → chunk-ZBVS26BY.js} +4 -4
  182. package/chunks/{chunk-HTO4JFDZ.js → chunk-ZPJWUGCS.js} +0 -1
  183. package/chunks/{chunk-X5XDDSSH.js → chunk-ZPZ7ZJEE.js} +28 -5
  184. package/chunks/{computer-use-SOQ4E3VX.js → computer-use-GOM42LNK.js} +53 -50
  185. package/chunks/{config-utils-7V7GGIW6.js → config-utils-WADIDWGG.js} +4 -3
  186. package/chunks/contextCommand-6LVPTIWD.js +83 -0
  187. package/chunks/core-runtime-253XV2DB.js +137 -0
  188. package/chunks/{create-sub-session-QRJLW5BV.js → create-sub-session-45POYEVP.js} +50 -47
  189. package/chunks/{create-sub-session-IWW2IZ2T.js → create-sub-session-62YZWVAY.js} +3 -3
  190. package/chunks/{cron-create-YIID5XAW.js → cron-create-6E7GIQTG.js} +6 -6
  191. package/chunks/{cron-delete-ZVHYCEP2.js → cron-delete-JD26XY3W.js} +5 -5
  192. package/chunks/{cron-list-XEGS463Q.js → cron-list-CUWFB44G.js} +6 -6
  193. package/chunks/{daemon-YO6433NF.js → daemon-PCNCI5YU.js} +428 -18
  194. package/chunks/daemon-status-provider-AKALDYJJ.js +93 -0
  195. package/chunks/daemon-trust-policy-XB7ZSQFQ.js +88 -0
  196. package/chunks/daemon-trust-policy-monitor-FUTKP42Q.js +175 -0
  197. package/chunks/{de-HGRCYDEJ.js → de-SY6O76BF.js} +6 -1
  198. package/chunks/deferred-core-runtime-RKLCO7V5.js +92 -0
  199. package/chunks/dist-26BIMQT6.js +4487 -0
  200. package/chunks/{dist-F6IBUDR4.js → dist-2PERFI23.js} +12 -9
  201. package/chunks/{dist-46NQKLTW.js → dist-OAOC5OV4.js} +2 -2
  202. package/chunks/{dist-YFNEUWSE.js → dist-PVEAFLHY.js} +5 -4
  203. package/chunks/{dist-AIKFMUKK.js → dist-SL2LUMML.js} +1449 -14
  204. package/chunks/dist-ULIG4M5H.js +13415 -0
  205. package/chunks/{dist-WEAHOXDM.js → dist-WGMNT3JQ.js} +2 -1
  206. package/chunks/{dist-BBLXMS3N.js → dist-ZHXOBXDN.js} +3 -3
  207. package/chunks/earlyInputCapture-FCWU47OB.js +85 -0
  208. package/chunks/{edit-OBDSQURM.js → edit-TTACM3LN.js} +51 -48
  209. package/chunks/{en-MTWBNGDO.js → en-NBK3JKCE.js} +9 -1
  210. package/chunks/{enter-worktree-U6MRPQ2P.js → enter-worktree-R34GFDX6.js} +51 -48
  211. package/chunks/{enterPlanMode-BC5QUZZ2.js → enterPlanMode-KJPBB6G5.js} +51 -48
  212. package/chunks/environment-IJG3N2PR.js +105 -0
  213. package/chunks/errors-MRON5OJD.js +91 -0
  214. package/chunks/esm-K5FARBNI.js +5548 -0
  215. package/chunks/{exit-worktree-DGNYMECB.js → exit-worktree-UBA66Y4I.js} +51 -48
  216. package/chunks/exitPlanMode-SMSPGNSK.js +76 -0
  217. package/chunks/{fast-path-JJZFJANL.js → fast-path-ZBAMZDCP.js} +16 -6
  218. package/chunks/{fr-45RLL55O.js → fr-4KG5V7UT.js} +6 -1
  219. package/chunks/{gemini-QS36EBZV.js → gemini-XFT7HRNL.js} +106 -99
  220. package/chunks/{geminiContentGenerator-AG4KB6CV.js → geminiContentGenerator-XD3MLYQX.js} +40 -11
  221. package/chunks/{getMachineId-bsd-V7W3GODC.js → getMachineId-bsd-FG7IUY6U.js} +1 -1
  222. package/chunks/{getMachineId-darwin-TDO75DQP.js → getMachineId-darwin-GLCJI2RA.js} +1 -1
  223. package/chunks/{getMachineId-linux-TF43WQT2.js → getMachineId-linux-O6OPPAKO.js} +1 -1
  224. package/chunks/{getMachineId-unsupported-ZGUO3TXT.js → getMachineId-unsupported-S6CKYVGC.js} +1 -1
  225. package/chunks/{getMachineId-win-ECFYZZFQ.js → getMachineId-win-X5SRNEH7.js} +1 -1
  226. package/chunks/{glob-V7R3PSK3.js → glob-HFKY7HXZ.js} +51 -48
  227. package/chunks/goal-tools-HGO6VXPB.js +335 -0
  228. package/chunks/{grep-QYPSK7OP.js → grep-EO5Z3PFV.js} +53 -49
  229. package/chunks/handleAutoUpdate-WRENFE6C.js +84 -0
  230. package/chunks/i18n-ZG5OTVSV.js +100 -0
  231. package/chunks/{image-gen-Z3VPGKRC.js → image-gen-CKWZ4MJI.js} +12 -12
  232. package/chunks/initializer-FYPLLRC7.js +89 -0
  233. package/chunks/installationInfo-5RV4HRMC.js +83 -0
  234. package/chunks/{ja-B7DF7DFG.js → ja-F3GSQXMF.js} +6 -1
  235. package/chunks/{keychain-token-storage-MDTG3WRM.js → keychain-token-storage-IKO4G53C.js} +3 -3
  236. package/chunks/lib-RUF3WZA6.js +9 -0
  237. package/chunks/list-ZNWVL3AT.js +92 -0
  238. package/chunks/{list-agents-5KJJHR6I.js → list-agents-PXJ7ZUFB.js} +3 -3
  239. package/chunks/loadedSettingsAdapter-GQGNHP5I.js +86 -0
  240. package/chunks/{loggingContentGenerator-HS3S5H3Q.js → loggingContentGenerator-MS5DFAWH.js} +78 -113
  241. package/chunks/{loop-wakeup-FXKNNYSY.js → loop-wakeup-Y26NQZ5I.js} +15 -8
  242. package/chunks/{ls-NTK6VOQJ.js → ls-ONQTTMQR.js} +5 -5
  243. package/chunks/{lsp-2JI24STP.js → lsp-YGHHRGMD.js} +3 -3
  244. package/chunks/{managed-npm-update-JYEMMXA3.js → managed-npm-update-67AK4GTL.js} +51 -48
  245. package/chunks/mcp-FVQ4VTLM.js +86 -0
  246. package/chunks/{monitor-R3ODH5U6.js → monitor-BXB33EOZ.js} +51 -48
  247. package/chunks/nonInteractiveCli-CN2GYSN3.js +148 -0
  248. package/chunks/{notebook-edit-BNOK452R.js → notebook-edit-FKYRBV4L.js} +51 -48
  249. package/chunks/{openaiContentGenerator-WMCU3O2H.js → openaiContentGenerator-UUXV5DGU.js} +26 -27
  250. package/chunks/pidfile-MV347TTZ.js +89 -0
  251. package/chunks/process-registry-2CHQBXH5.js +157 -0
  252. package/chunks/{processUtils-RT7UNCC2.js → processUtils-LKFG52RV.js} +2 -2
  253. package/chunks/{pt-22Q3FP73.js → pt-EQ33KWEN.js} +6 -1
  254. package/chunks/{qwenContentGenerator-HHCRK4SX.js → qwenContentGenerator-3WYI2HRW.js} +56 -53
  255. package/chunks/{qwenOAuth2-OWLB5AKH.js → qwenOAuth2-B46MW45O.js} +10 -10
  256. package/chunks/read-file-ACSHVWP3.js +29 -0
  257. package/chunks/{read-mcp-resource-4DKQWGHD.js → read-mcp-resource-U2IJN5HM.js} +4 -4
  258. package/chunks/record-artifact-MGPJ7EG4.js +21 -0
  259. package/chunks/resumeHistoryUtils-AMS4767B.js +94 -0
  260. package/chunks/ripGrep-BAPM2UKC.js +76 -0
  261. package/chunks/{ru-FZCNZHDC.js → ru-7OZAUKGG.js} +6 -1
  262. package/chunks/{run-qwen-serve-FU6HEM4J.js → run-qwen-serve-JEN6FO2A.js} +1018 -263
  263. package/chunks/runtime-WVP22ISH.js +122 -0
  264. package/chunks/{scheduler-G2ZS2Z7E.js → scheduler-HTX5ACVR.js} +50 -47
  265. package/chunks/{sdk-exporters-grpc-AK3LGHNO.js → sdk-exporters-grpc-54L4LS5L.js} +4 -4
  266. package/chunks/{sdk-exporters-http-FYBSUCPD.js → sdk-exporters-http-4BQANSJ6.js} +7 -7
  267. package/chunks/{sdk-impl-GMVPB7NB.js → sdk-impl-Z4VXWVFX.js} +14 -14
  268. package/chunks/{send-message-Q6OOR6BR.js → send-message-PMP4ATVM.js} +8 -13
  269. package/chunks/serve-ELQIVNWN.js +92 -0
  270. package/chunks/{server-4UMH7OIZ.js → server-JNW2NOSQ.js} +5288 -1364
  271. package/chunks/{session-K3O3Q2SV.js → session-NC356XNS.js} +102 -95
  272. package/chunks/{settings-CR2EWTBA.js → settings-73RMIOJ6.js} +54 -51
  273. package/chunks/shell-NMHF5TFG.js +86 -0
  274. package/chunks/{skill-I3SDA4MB.js → skill-XPGXHEKO.js} +22 -22
  275. package/chunks/skill-settings-5IGIJDGA.js +94 -0
  276. package/chunks/spawnChannel-T5THBHFN.js +85 -0
  277. package/chunks/standalone-update-ODXEPDLP.js +95 -0
  278. package/chunks/{startInteractiveUI-SLZGHRPH.js → startInteractiveUI-S27DXVAE.js} +1241 -905
  279. package/chunks/{syntheticOutput-I3757IWH.js → syntheticOutput-D7E6ZFKR.js} +4 -4
  280. package/chunks/task-create-NFCYD43L.js +26 -0
  281. package/chunks/{task-list-FOPULZEP.js → task-list-TAVMGEVD.js} +7 -7
  282. package/chunks/{task-stop-H6RHXFVQ.js → task-stop-ZDF2UJRM.js} +3 -3
  283. package/chunks/{task-update-M57TFZJT.js → task-update-6L7LHGEX.js} +12 -11
  284. package/chunks/{team-create-YJALH5D2.js → team-create-CTLQWTJ2.js} +53 -50
  285. package/chunks/{team-delete-QE2UXJL7.js → team-delete-DPGGRQBU.js} +7 -7
  286. package/chunks/{team-plan-approval-34QFYKGN.js → team-plan-approval-WKRUAPJ4.js} +51 -48
  287. package/chunks/theme-manager-XQHXQQX6.js +80 -0
  288. package/chunks/{todoWrite-VQ7FKOHL.js → todoWrite-2UO5G6G6.js} +34 -6
  289. package/chunks/{tool-search-NF7GB6LE.js → tool-search-45YINAJA.js} +21 -22
  290. package/chunks/total-session-admission-QPUKGHKO.js +88 -0
  291. package/chunks/trustedFolders-YMUTRHEQ.js +98 -0
  292. package/chunks/{update-relaunch-WBUZJC5O.js → update-relaunch-PZUXTVHC.js} +5 -5
  293. package/chunks/updateCheck-IZAN4XTB.js +95 -0
  294. package/chunks/useAutoAcceptIndicator-CGL2MAYE.js +96 -0
  295. package/chunks/{validateNonInterActiveAuth-3R223G3R.js → validateNonInterActiveAuth-GBGNJ65K.js} +97 -90
  296. package/chunks/{version-HS7YSFHV.js → version-Z7EX24NZ.js} +1 -1
  297. package/chunks/{web-fetch-NKCSG7ZE.js → web-fetch-ETTT2H3V.js} +19 -21
  298. package/chunks/{web-search-S62WAP4S.js → web-search-Y3ZSVRJ6.js} +13 -13
  299. package/chunks/{workflow-QAGU5RU4.js → workflow-ATRJSAO7.js} +52 -49
  300. package/chunks/workspace-providers-status-YM3WLW3N.js +89 -0
  301. package/chunks/{workspace-registration-store-24JMHDGF.js → workspace-registration-store-4EGNCIPG.js} +1 -1
  302. package/chunks/workspace-registry-NGZOZKQP.js +96 -0
  303. package/chunks/workspace-service-SVWOXX2B.js +103 -0
  304. package/chunks/workspace-skills-status-YZHZ3PT5.js +89 -0
  305. package/chunks/workspace-trust-reconciler-GGBQV2U5.js +349 -0
  306. package/chunks/write-file-HLGCEB72.js +78 -0
  307. package/chunks/xterm-headless-NTYVIBT3.js +3475 -0
  308. package/chunks/{zh-LUIGBD55.js → zh-H3YDK5QW.js} +9 -1
  309. package/chunks/{zh-TW-F5KG2IYD.js → zh-TW-JYCP7XUA.js} +9 -1
  310. package/chunks/zoom-image-LDECT475.js +224 -0
  311. package/cli.js +50 -16
  312. package/locales/ca.js +7 -2
  313. package/locales/de.js +7 -2
  314. package/locales/en.js +10 -2
  315. package/locales/fr.js +7 -2
  316. package/locales/ja.js +7 -2
  317. package/locales/pt.js +7 -2
  318. package/locales/ru.js +7 -2
  319. package/locales/zh-TW.js +10 -2
  320. package/locales/zh.js +10 -2
  321. package/package.json +5 -4
  322. package/web-shell/assets/{arc-DcbWnB9T.js → arc-Dpy_U6Bb.js} +1 -1
  323. package/web-shell/assets/{architectureDiagram-3BPJPVTR-kMMF5sud.js → architectureDiagram-3BPJPVTR-DgDOg-c5.js} +1 -1
  324. package/web-shell/assets/{blockDiagram-GPEHLZMM-Htl9vTJS.js → blockDiagram-GPEHLZMM-tADd9Ja3.js} +1 -1
  325. package/web-shell/assets/{c4Diagram-AAUBKEIU-BnZnm0mQ.js → c4Diagram-AAUBKEIU-68wj9MCU.js} +1 -1
  326. package/web-shell/assets/channel-Do7fFnFl.js +1 -0
  327. package/web-shell/assets/{chunk-2J33WTMH-DziB7kDG.js → chunk-2J33WTMH-DjJLOeVU.js} +1 -1
  328. package/web-shell/assets/{chunk-4BX2VUAB-CmkD8daw.js → chunk-4BX2VUAB-CMbzGeVC.js} +1 -1
  329. package/web-shell/assets/{chunk-55IACEB6-CHAd9A_U.js → chunk-55IACEB6-SlKgejv9.js} +1 -1
  330. package/web-shell/assets/{chunk-727SXJPM-Dqaam3fE.js → chunk-727SXJPM-CijXssHZ.js} +1 -1
  331. package/web-shell/assets/{chunk-AQP2D5EJ-D_-saBYM.js → chunk-AQP2D5EJ-D8w25nvR.js} +1 -1
  332. package/web-shell/assets/{chunk-FMBD7UC4-B9r_veWD.js → chunk-FMBD7UC4-Bv9dcx_e.js} +1 -1
  333. package/web-shell/assets/{chunk-ND2GUHAM-B3EaCSpL.js → chunk-ND2GUHAM-Bzf6sAOd.js} +1 -1
  334. package/web-shell/assets/{chunk-QZHKN3VN-CYq8x9mn.js → chunk-QZHKN3VN-whNoNeW5.js} +1 -1
  335. package/web-shell/assets/classDiagram-4FO5ZUOK-By_XOP3X.js +1 -0
  336. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-By_XOP3X.js +1 -0
  337. package/web-shell/assets/{cose-bilkent-S5V4N54A-D0ng4uiB.js → cose-bilkent-S5V4N54A-rpQS44Lz.js} +1 -1
  338. package/web-shell/assets/{dagre-BM42HDAG-DCZollQv.js → dagre-BM42HDAG-Ck7VE6nT.js} +1 -1
  339. package/web-shell/assets/{diagram-2AECGRRQ-Dfk2pWS0.js → diagram-2AECGRRQ-CgRrsodR.js} +1 -1
  340. package/web-shell/assets/{diagram-5GNKFQAL-kX38ltWR.js → diagram-5GNKFQAL-CsTZtE5A.js} +1 -1
  341. package/web-shell/assets/{diagram-KO2AKTUF-CJz2vsXh.js → diagram-KO2AKTUF-D5EAdVq4.js} +1 -1
  342. package/web-shell/assets/{diagram-LMA3HP47-BvMLZm_7.js → diagram-LMA3HP47-DNrjHC7Z.js} +1 -1
  343. package/web-shell/assets/{diagram-OG6HWLK6-l7kfStkO.js → diagram-OG6HWLK6-ClJSJGgC.js} +1 -1
  344. package/web-shell/assets/{erDiagram-TEJ5UH35-BSVa8GGT.js → erDiagram-TEJ5UH35-DuVnos_y.js} +1 -1
  345. package/web-shell/assets/{flowDiagram-I6XJVG4X-CoawKIXH.js → flowDiagram-I6XJVG4X-DEpIVl1s.js} +1 -1
  346. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DFUDH0zF.js → ganttDiagram-6RSMTGT7-COnQM2-C.js} +1 -1
  347. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Y2pvpT4e.js → gitGraphDiagram-PVQCEYII-C-lX5H3_.js} +1 -1
  348. package/web-shell/assets/index-C2GE3DAF.js +74 -0
  349. package/web-shell/assets/{index-D0GX0zZf.js → index-DfcyS2E7.js} +1 -1
  350. package/web-shell/assets/index-Qxt6kN7i.js +1700 -0
  351. package/web-shell/assets/index-bo0Z8hfu.css +5 -0
  352. package/web-shell/assets/{infoDiagram-5YYISTIA-CU8_zLiX.js → infoDiagram-5YYISTIA-D0WP-wmU.js} +1 -1
  353. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AVQiV0DU.js → ishikawaDiagram-YF4QCWOH-DgsI3Clu.js} +1 -1
  354. package/web-shell/assets/{journeyDiagram-JHISSGLW-DQ0VSKa3.js → journeyDiagram-JHISSGLW-4yCoMZO6.js} +1 -1
  355. package/web-shell/assets/{kanban-definition-UN3LZRKU-BqnWqsE_.js → kanban-definition-UN3LZRKU-D_05au1N.js} +1 -1
  356. package/web-shell/assets/{linear-BkoihsaA.js → linear-B38fDz0Q.js} +1 -1
  357. package/web-shell/assets/{mermaid.core-5RJs-31j.js → mermaid.core-aGNwTaHi.js} +5 -5
  358. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D33Bxnpd.js → mindmap-definition-RKZ34NQL-C2yf_5WM.js} +1 -1
  359. package/web-shell/assets/{pieDiagram-4H26LBE5-BuEAw3BH.js → pieDiagram-4H26LBE5-DiHABBT-.js} +1 -1
  360. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Kox_usEq.js → quadrantDiagram-W4KKPZXB-W9xkeAGe.js} +1 -1
  361. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CNjeUif0.js → requirementDiagram-4Y6WPE33-BGmRXl9k.js} +1 -1
  362. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BCd2OL_U.js → sankeyDiagram-5OEKKPKP-CvOmT43_.js} +1 -1
  363. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CF2ZTsz0.js → sequenceDiagram-3UESZ5HK-C8pdd0Z-.js} +1 -1
  364. package/web-shell/assets/{stateDiagram-AJRCARHV-qenSzHtm.js → stateDiagram-AJRCARHV-C-CYdFx2.js} +1 -1
  365. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BieEHeN9.js +1 -0
  366. package/web-shell/assets/{timeline-definition-PNZ67QCA-B5DyWdgs.js → timeline-definition-PNZ67QCA-w2KQn1cI.js} +1 -1
  367. package/web-shell/assets/{vennDiagram-CIIHVFJN-DqP4I_o_.js → vennDiagram-CIIHVFJN-DuorhRku.js} +1 -1
  368. package/web-shell/assets/{wardley-L42UT6IY-CJe2e4mg.js → wardley-L42UT6IY-BAXm2cWy.js} +1 -1
  369. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BMDSw-Rr.js → wardleyDiagram-YWT4CUSO-8PHaOXn5.js} +1 -1
  370. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BTVZYkxD.js → xychartDiagram-2RQKCTM6-Do84JFSc.js} +1 -1
  371. package/web-shell/index.html +2 -2
  372. package/chunks/MaxSizedBox-5DPPWPGT.js +0 -85
  373. package/chunks/agent-6ODUANDO.js +0 -81
  374. package/chunks/agent-headless-7BYQTMHW.js +0 -75
  375. package/chunks/bridge-ZUB64FAE.js +0 -90
  376. package/chunks/chunk-LEH5C7FV.js +0 -232
  377. package/chunks/chunk-SZRN75WQ.js +0 -29
  378. package/chunks/chunk-UGYMA4EI.js +0 -219
  379. package/chunks/chunk-Z2BC6UJ5.js +0 -8575
  380. package/chunks/contextCommand-JLHYA34Z.js +0 -80
  381. package/chunks/daemon-status-provider-2233Q37D.js +0 -89
  382. package/chunks/earlyInputCapture-A7NDU3PF.js +0 -82
  383. package/chunks/environment-W5UFC2CH.js +0 -102
  384. package/chunks/errors-M7CLORXH.js +0 -88
  385. package/chunks/exitPlanMode-GXTBWQAR.js +0 -403
  386. package/chunks/handleAutoUpdate-6DBEZYPV.js +0 -81
  387. package/chunks/i18n-VUJJZIMU.js +0 -97
  388. package/chunks/initializer-UWAK5U5O.js +0 -86
  389. package/chunks/installationInfo-6O2YAA52.js +0 -80
  390. package/chunks/list-GB4ESM3T.js +0 -89
  391. package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +0 -83
  392. package/chunks/mcp-6DBDJPFU.js +0 -83
  393. package/chunks/nonInteractiveCli-MOYCYBBU.js +0 -141
  394. package/chunks/pidfile-TFRZZZIO.js +0 -86
  395. package/chunks/read-file-APMO3PSX.js +0 -31
  396. package/chunks/resumeHistoryUtils-6KRYEAWZ.js +0 -91
  397. package/chunks/ripGrep-BEJDEDXW.js +0 -73
  398. package/chunks/runtime-XXRRTNP6.js +0 -118
  399. package/chunks/serve-7BSTXJ4T.js +0 -89
  400. package/chunks/shell-HH3PF3A2.js +0 -83
  401. package/chunks/spawnChannel-RWNDBXGA.js +0 -82
  402. package/chunks/src-GE4TTTML.js +0 -3147
  403. package/chunks/standalone-update-Q6WFRZZQ.js +0 -92
  404. package/chunks/task-create-N7WQSGYA.js +0 -25
  405. package/chunks/theme-manager-SWRILQHI.js +0 -77
  406. package/chunks/total-session-admission-DLHHHLD3.js +0 -84
  407. package/chunks/trustedFolders-KHXHY6PY.js +0 -93
  408. package/chunks/updateCheck-RKL6M5XN.js +0 -92
  409. package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +0 -93
  410. package/chunks/workspace-providers-status-QSVZUETE.js +0 -86
  411. package/chunks/workspace-registry-UT4RBNBM.js +0 -88
  412. package/chunks/workspace-service-JFWRUS4V.js +0 -98
  413. package/chunks/workspace-skills-status-ZBBKJOI2.js +0 -85
  414. package/chunks/write-file-VHIXW5M7.js +0 -73
  415. package/web-shell/assets/channel-Cq7YKtfC.js +0 -1
  416. package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +0 -1
  417. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +0 -1
  418. package/web-shell/assets/index-D9haPt0X.css +0 -5
  419. package/web-shell/assets/index-ckX9Pq5k.js +0 -1230
  420. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +0 -1
  421. package/chunks/{chunk-TARRHLLG.js → chunk-QUGAUQGJ.js} +25 -25
  422. package/chunks/{chunk-U7ZFW55U.js → chunk-VOQXFAY5.js} +977 -977
  423. /package/chunks/{chunk-LXXMOYPL.js → chunk-VXZBKKQR.js} +0 -0
@@ -2,20 +2,23 @@
2
2
  "use strict";
3
3
  import {
4
4
  mapSkillConfigToStatus
5
- } from "./chunk-2W3OOD4W.js";
5
+ } from "./chunk-L55JWS76.js";
6
6
  import {
7
7
  STATUS_SCHEMA_VERSION
8
- } from "./chunk-VIA5XA4U.js";
8
+ } from "./chunk-A5UODYG3.js";
9
+ import {
10
+ resolveSkillSettings
11
+ } from "./chunk-Z4X5MTRT.js";
9
12
  import {
10
13
  loadSettings
11
- } from "./chunk-TEHGS6UP.js";
14
+ } from "./chunk-A5T5W7PR.js";
12
15
  import {
13
16
  writeStderrLine
14
17
  } from "./chunk-OWAK7LMW.js";
15
18
  import {
16
19
  SkillManager,
17
20
  isSafeModeEnv
18
- } from "./chunk-PHOF65IG.js";
21
+ } from "./chunk-FRXG4ARO.js";
19
22
  import {
20
23
  init_esbuild_shims
21
24
  } from "./chunk-5O2XNYP6.js";
@@ -25,17 +28,18 @@ import {
25
28
 
26
29
  // packages/cli/src/serve/workspace-skills-status.ts
27
30
  init_esbuild_shims();
28
- function createWorkspaceSkillsStatusProvider() {
31
+ function createWorkspaceSkillsStatusProvider(options = {}) {
29
32
  const managers = /* @__PURE__ */ new Map();
30
33
  const provider = /* @__PURE__ */ __name((workspaceCwd) => buildWorkspaceSkillsStatus(
31
34
  workspaceCwd,
32
- managers
35
+ managers,
36
+ options.workspaceTrusted ?? true
33
37
  ), "provider");
34
38
  provider.invalidate = (workspaceCwd) => managers.delete(workspaceCwd);
35
39
  return provider;
36
40
  }
37
41
  __name(createWorkspaceSkillsStatusProvider, "createWorkspaceSkillsStatusProvider");
38
- async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
42
+ async function buildWorkspaceSkillsStatus(workspaceCwd, managers, workspaceTrusted) {
39
43
  try {
40
44
  let skillManager = managers.get(workspaceCwd);
41
45
  if (!skillManager) {
@@ -43,7 +47,7 @@ async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
43
47
  // Honor the safe-mode env the same way `Config` does when no explicit
44
48
  // flag is passed, so an operator running in safe mode gets the same
45
49
  // bundled-only listing the child would produce.
46
- isSafeMode: /* @__PURE__ */ __name(() => isSafeModeEnv(), "isSafeMode"),
50
+ isSafeMode: /* @__PURE__ */ __name(() => !workspaceTrusted || isSafeModeEnv(), "isSafeMode"),
47
51
  // Bare mode is the interactive `--bare` CLI flag; the daemon never runs
48
52
  // bare, so it is always off here.
49
53
  getBareMode: /* @__PURE__ */ __name(() => false, "getBareMode"),
@@ -55,13 +59,22 @@ async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
55
59
  skillManager = new SkillManager(shim);
56
60
  managers.set(workspaceCwd, skillManager);
57
61
  }
58
- const disabled = readDisabledSkillNames(workspaceCwd);
62
+ const disablements = resolveSkillSettings(
63
+ loadSettings(workspaceCwd, {
64
+ consumeCorruptionEnvVars: false,
65
+ skipLoadEnvironment: !workspaceTrusted,
66
+ skipWorkspaceSettings: !workspaceTrusted,
67
+ workspaceTrusted
68
+ })
69
+ ).disablements;
59
70
  const skills = await skillManager.listSkills();
60
71
  return {
61
72
  v: STATUS_SCHEMA_VERSION,
62
73
  workspaceCwd,
63
74
  initialized: true,
64
- skills: skills.map((skill) => mapSkillConfigToStatus(skill, disabled))
75
+ skills: skills.map(
76
+ (skill) => mapSkillConfigToStatus(skill, disablements)
77
+ )
65
78
  };
66
79
  } catch (error) {
67
80
  const message = error instanceof Error ? error.message : String(error);
@@ -84,14 +97,6 @@ async function buildWorkspaceSkillsStatus(workspaceCwd, managers) {
84
97
  }
85
98
  }
86
99
  __name(buildWorkspaceSkillsStatus, "buildWorkspaceSkillsStatus");
87
- function readDisabledSkillNames(workspaceCwd) {
88
- const raw = loadSettings(workspaceCwd, false).merged.skills?.disabled;
89
- if (!Array.isArray(raw)) return /* @__PURE__ */ new Set();
90
- return new Set(
91
- raw.filter((name) => typeof name === "string").map((name) => name.trim().toLowerCase()).filter(Boolean)
92
- );
93
- }
94
- __name(readDisabledSkillNames, "readDisabledSkillNames");
95
100
 
96
101
  export {
97
102
  createWorkspaceSkillsStatusProvider
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  AuthType
5
- } from "./chunk-IKCX4CCL.js";
5
+ } from "./chunk-DKPJUF5F.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -14440,6 +14440,20 @@ var cleanupYogaNode = /* @__PURE__ */ __name((node) => {
14440
14440
  node?.unsetMeasureFunc();
14441
14441
  node?.freeRecursive();
14442
14442
  }, "cleanupYogaNode");
14443
+ var clearStaticNodeIfContained = /* @__PURE__ */ __name((removeNode) => {
14444
+ const staticNode = currentRootNode?.staticNode;
14445
+ if (!staticNode) {
14446
+ return;
14447
+ }
14448
+ let current = staticNode;
14449
+ while (current) {
14450
+ if (current === removeNode) {
14451
+ currentRootNode.staticNode = void 0;
14452
+ return;
14453
+ }
14454
+ current = current.parentNode;
14455
+ }
14456
+ }, "clearStaticNodeIfContained");
14443
14457
  var currentUpdatePriority = import_constants.NoEventPriority;
14444
14458
  var currentRootNode;
14445
14459
  async function loadPackageJson() {
@@ -14594,11 +14608,10 @@ var reconciler_default = (0, import_react_reconciler.default)({
14594
14608
  appendChildToContainer: appendChildNode,
14595
14609
  insertInContainerBefore: insertBeforeNode,
14596
14610
  removeChildFromContainer(node, removeNode) {
14611
+ clearStaticNodeIfContained(removeNode);
14597
14612
  removeChildNode(node, removeNode);
14598
14613
  cleanupYogaNode(removeNode.yogaNode);
14599
- if (removeNode.internal_static && currentRootNode?.staticNode === removeNode) {
14600
- currentRootNode.staticNode = void 0;
14601
- }
14614
+ removeNode.yogaNode = void 0;
14602
14615
  },
14603
14616
  commitUpdate(node, _type, oldProps, newProps) {
14604
14617
  if (currentRootNode && node.internal_static) {
@@ -14634,11 +14647,10 @@ var reconciler_default = (0, import_react_reconciler.default)({
14634
14647
  setTextNodeValue(node, newText);
14635
14648
  },
14636
14649
  removeChild(node, removeNode) {
14650
+ clearStaticNodeIfContained(removeNode);
14637
14651
  removeChildNode(node, removeNode);
14638
14652
  cleanupYogaNode(removeNode.yogaNode);
14639
- if (removeNode.internal_static && currentRootNode?.staticNode === removeNode) {
14640
- currentRootNode.staticNode = void 0;
14641
- }
14653
+ removeNode.yogaNode = void 0;
14642
14654
  },
14643
14655
  setCurrentUpdatePriority(newPriority) {
14644
14656
  currentUpdatePriority = newPriority;
@@ -16452,11 +16464,11 @@ init_esbuild_shims();
16452
16464
  var showCursorEscape = "\x1B[?25h";
16453
16465
  var hideCursorEscape = "\x1B[?25l";
16454
16466
  var cursorPositionChanged = /* @__PURE__ */ __name((a, b) => a?.x !== b?.x || a?.y !== b?.y, "cursorPositionChanged");
16455
- var buildCursorSuffix = /* @__PURE__ */ __name((visibleLineCount2, cursorPosition) => {
16467
+ var buildCursorSuffix = /* @__PURE__ */ __name((visibleLineCount2, cursorPosition, hasTrailingNewline = true) => {
16456
16468
  if (!cursorPosition) {
16457
16469
  return "";
16458
16470
  }
16459
- const moveUp = visibleLineCount2 - cursorPosition.y;
16471
+ const moveUp = (hasTrailingNewline ? visibleLineCount2 : visibleLineCount2 - 1) - cursorPosition.y;
16460
16472
  return (moveUp > 0 ? base_exports.cursorUp(moveUp) : "") + base_exports.cursorTo(cursorPosition.x) + showCursorEscape;
16461
16473
  }, "buildCursorSuffix");
16462
16474
  var buildReturnToBottom = /* @__PURE__ */ __name((previousLineCount, previousCursorPosition) => {
@@ -16469,7 +16481,7 @@ var buildReturnToBottom = /* @__PURE__ */ __name((previousLineCount, previousCur
16469
16481
  var buildCursorOnlySequence = /* @__PURE__ */ __name((input) => {
16470
16482
  const hidePrefix = input.cursorWasShown ? hideCursorEscape : "";
16471
16483
  const returnToBottom = buildReturnToBottom(input.previousLineCount, input.previousCursorPosition);
16472
- const cursorSuffix = buildCursorSuffix(input.visibleLineCount, input.cursorPosition);
16484
+ const cursorSuffix = buildCursorSuffix(input.visibleLineCount, input.cursorPosition, input.hasTrailingNewline);
16473
16485
  return hidePrefix + returnToBottom + cursorSuffix;
16474
16486
  }, "buildCursorOnlySequence");
16475
16487
  var buildReturnToBottomPrefix = /* @__PURE__ */ __name((cursorWasShown, previousLineCount, previousCursorPosition) => {
@@ -16538,6 +16550,7 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
16538
16550
  let cursorDirty = false;
16539
16551
  let previousCursorPosition;
16540
16552
  let cursorWasShown = false;
16553
+ let previousHasTrailingNewline = true;
16541
16554
  const getActiveCursor = /* @__PURE__ */ __name(() => cursorDirty ? cursorPosition : void 0, "getActiveCursor");
16542
16555
  const hasChanges = /* @__PURE__ */ __name((str, activeCursor) => {
16543
16556
  const cursorChanged = cursorPositionChanged(activeCursor, previousCursorPosition);
@@ -16556,20 +16569,23 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
16556
16569
  }
16557
16570
  const lines = str.split("\n");
16558
16571
  const visibleCount = visibleLineCount(lines, str);
16559
- const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor);
16572
+ const hasTrailingNewline = str.endsWith("\n");
16573
+ const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor, hasTrailingNewline);
16560
16574
  if (str === previousOutput && cursorChanged) {
16561
16575
  stream.write(buildCursorOnlySequence({
16562
16576
  cursorWasShown,
16563
16577
  previousLineCount,
16564
16578
  previousCursorPosition,
16565
16579
  visibleLineCount: visibleCount,
16566
- cursorPosition: activeCursor
16580
+ cursorPosition: activeCursor,
16581
+ hasTrailingNewline: previousHasTrailingNewline
16567
16582
  }));
16568
16583
  } else {
16569
16584
  previousOutput = str;
16570
16585
  const returnPrefix = buildReturnToBottomPrefix(cursorWasShown, previousLineCount, previousCursorPosition);
16571
16586
  stream.write(returnPrefix + base_exports.eraseLines(previousLineCount) + str + cursorSuffix);
16572
16587
  previousLineCount = lines.length;
16588
+ previousHasTrailingNewline = hasTrailingNewline;
16573
16589
  }
16574
16590
  previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
16575
16591
  cursorWasShown = activeCursor !== void 0;
@@ -16582,12 +16598,14 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
16582
16598
  previousLineCount = 0;
16583
16599
  previousCursorPosition = void 0;
16584
16600
  cursorWasShown = false;
16601
+ previousHasTrailingNewline = true;
16585
16602
  };
16586
16603
  render2.done = () => {
16587
16604
  previousOutput = "";
16588
16605
  previousLineCount = 0;
16589
16606
  previousCursorPosition = void 0;
16590
16607
  cursorWasShown = false;
16608
+ previousHasTrailingNewline = true;
16591
16609
  if (!showCursor) {
16592
16610
  cli_cursor_default.show(stream);
16593
16611
  hasHiddenCursor = false;
@@ -16598,6 +16616,7 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
16598
16616
  previousLineCount = 0;
16599
16617
  previousCursorPosition = void 0;
16600
16618
  cursorWasShown = false;
16619
+ previousHasTrailingNewline = true;
16601
16620
  };
16602
16621
  render2.sync = (str) => {
16603
16622
  const activeCursor = cursorDirty ? cursorPosition : void 0;
@@ -16605,11 +16624,12 @@ var createStandard = /* @__PURE__ */ __name((stream, { showCursor = false } = {}
16605
16624
  const lines = str.split("\n");
16606
16625
  previousOutput = str;
16607
16626
  previousLineCount = lines.length;
16627
+ previousHasTrailingNewline = str.endsWith("\n");
16608
16628
  if (!activeCursor && cursorWasShown) {
16609
16629
  stream.write(hideCursorEscape);
16610
16630
  }
16611
16631
  if (activeCursor) {
16612
- stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor));
16632
+ stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor, previousHasTrailingNewline));
16613
16633
  }
16614
16634
  previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
16615
16635
  cursorWasShown = activeCursor !== void 0;
@@ -16630,6 +16650,7 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16630
16650
  let cursorDirty = false;
16631
16651
  let previousCursorPosition;
16632
16652
  let cursorWasShown = false;
16653
+ let previousHasTrailingNewline = true;
16633
16654
  const getActiveCursor = /* @__PURE__ */ __name(() => cursorDirty ? cursorPosition : void 0, "getActiveCursor");
16634
16655
  const hasChanges = /* @__PURE__ */ __name((str, activeCursor) => {
16635
16656
  const cursorChanged = cursorPositionChanged(activeCursor, previousCursorPosition);
@@ -16655,7 +16676,8 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16655
16676
  previousLineCount: previousLines.length,
16656
16677
  previousCursorPosition,
16657
16678
  visibleLineCount: visibleCount,
16658
- cursorPosition: activeCursor
16679
+ cursorPosition: activeCursor,
16680
+ hasTrailingNewline: previousHasTrailingNewline
16659
16681
  }));
16660
16682
  previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
16661
16683
  cursorWasShown = activeCursor !== void 0;
@@ -16663,12 +16685,13 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16663
16685
  }
16664
16686
  const returnPrefix = buildReturnToBottomPrefix(cursorWasShown, previousLines.length, previousCursorPosition);
16665
16687
  if (str === "\n" || previousOutput.length === 0) {
16666
- const cursorSuffix2 = buildCursorSuffix(visibleCount, activeCursor);
16688
+ const cursorSuffix2 = buildCursorSuffix(visibleCount, activeCursor, str.endsWith("\n"));
16667
16689
  stream.write(returnPrefix + base_exports.eraseLines(previousLines.length) + str + cursorSuffix2);
16668
16690
  cursorWasShown = activeCursor !== void 0;
16669
16691
  previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
16670
16692
  previousOutput = str;
16671
16693
  previousLines = nextLines;
16694
+ previousHasTrailingNewline = str.endsWith("\n");
16672
16695
  return true;
16673
16696
  }
16674
16697
  const hasTrailingNewline = str.endsWith("\n");
@@ -16693,13 +16716,14 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16693
16716
  // has no trailing newline (fullscreen mode).
16694
16717
  (isLastLine && !hasTrailingNewline ? "" : "\n"));
16695
16718
  }
16696
- const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor);
16719
+ const cursorSuffix = buildCursorSuffix(visibleCount, activeCursor, hasTrailingNewline);
16697
16720
  buffer.push(cursorSuffix);
16698
16721
  stream.write(buffer.join(""));
16699
16722
  cursorWasShown = activeCursor !== void 0;
16700
16723
  previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
16701
16724
  previousOutput = str;
16702
16725
  previousLines = nextLines;
16726
+ previousHasTrailingNewline = hasTrailingNewline;
16703
16727
  return true;
16704
16728
  }, "render");
16705
16729
  render2.clear = () => {
@@ -16709,12 +16733,14 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16709
16733
  previousLines = [];
16710
16734
  previousCursorPosition = void 0;
16711
16735
  cursorWasShown = false;
16736
+ previousHasTrailingNewline = true;
16712
16737
  };
16713
16738
  render2.done = () => {
16714
16739
  previousOutput = "";
16715
16740
  previousLines = [];
16716
16741
  previousCursorPosition = void 0;
16717
16742
  cursorWasShown = false;
16743
+ previousHasTrailingNewline = true;
16718
16744
  if (!showCursor) {
16719
16745
  cli_cursor_default.show(stream);
16720
16746
  hasHiddenCursor = false;
@@ -16725,6 +16751,7 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16725
16751
  previousLines = [];
16726
16752
  previousCursorPosition = void 0;
16727
16753
  cursorWasShown = false;
16754
+ previousHasTrailingNewline = true;
16728
16755
  };
16729
16756
  render2.sync = (str) => {
16730
16757
  const activeCursor = cursorDirty ? cursorPosition : void 0;
@@ -16732,11 +16759,12 @@ var createIncremental = /* @__PURE__ */ __name((stream, { showCursor = false } =
16732
16759
  const lines = str.split("\n");
16733
16760
  previousOutput = str;
16734
16761
  previousLines = lines;
16762
+ previousHasTrailingNewline = str.endsWith("\n");
16735
16763
  if (!activeCursor && cursorWasShown) {
16736
16764
  stream.write(hideCursorEscape);
16737
16765
  }
16738
16766
  if (activeCursor) {
16739
- stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor));
16767
+ stream.write(buildCursorSuffix(visibleLineCount(lines, str), activeCursor, previousHasTrailingNewline));
16740
16768
  }
16741
16769
  previousCursorPosition = activeCursor ? { ...activeCursor } : void 0;
16742
16770
  cursorWasShown = activeCursor !== void 0;
@@ -18485,6 +18513,7 @@ var Ink = class {
18485
18513
  return this.nextRenderCommit.promise;
18486
18514
  }
18487
18515
  renderInteractiveFrame(output, outputHeight, staticOutput) {
18516
+ this.log.setCursorPosition(this.cursorPosition);
18488
18517
  const hasStaticOutput = staticOutput !== "";
18489
18518
  const isTty = this.options.stdout.isTTY;
18490
18519
  const viewportRows = isTty ? getWindowSize(this.options.stdout).rows : 24;
@@ -83,8 +83,6 @@ var InvalidStreamError = class extends Error {
83
83
 
84
84
  export {
85
85
  createOpenAIReasoningThoughtPart,
86
- isOpenAIReasoningThoughtPart,
87
- parseThought,
88
86
  getThoughtSummary,
89
87
  InvalidStreamError
90
88
  };
@@ -2,16 +2,16 @@
2
2
  "use strict";
3
3
  import {
4
4
  useKeypress
5
- } from "./chunk-LQIW3YFY.js";
5
+ } from "./chunk-YJFPRUWX.js";
6
6
  import {
7
7
  require_react
8
8
  } from "./chunk-5QWWOFGG.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-LKEJ26GS.js";
11
+ } from "./chunk-B3TA3IF5.js";
12
12
  import {
13
13
  APPROVAL_MODES
14
- } from "./chunk-L26JL52R.js";
14
+ } from "./chunk-CBBP4BMC.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  MissingCliEntryError
5
- } from "./chunk-VIA5XA4U.js";
5
+ } from "./chunk-A5UODYG3.js";
6
6
  import {
7
7
  redactLogCredentials
8
8
  } from "./chunk-M5GB774H.js";
@@ -125,6 +125,144 @@ function callHook(hook, value) {
125
125
  }
126
126
  __name(callHook, "callHook");
127
127
 
128
+ // packages/acp-bridge/src/process-registry.ts
129
+ init_esbuild_shims();
130
+ var TERM_GRACE_MS = 5e3;
131
+ var EXIT_DEADLINE_MS = 1e4;
132
+ var ProcessRegistry = class {
133
+ static {
134
+ __name(this, "ProcessRegistry");
135
+ }
136
+ reservations = /* @__PURE__ */ new Set();
137
+ children = /* @__PURE__ */ new Set();
138
+ draining = false;
139
+ shutdownPromise;
140
+ reserve() {
141
+ if (this.draining) {
142
+ throw new Error("ACP process registry is draining");
143
+ }
144
+ const token = Symbol("acp-child");
145
+ this.reservations.add(token);
146
+ let settled = false;
147
+ return {
148
+ attach: /* @__PURE__ */ __name((child) => {
149
+ if (settled || !this.reservations.delete(token)) {
150
+ throw new Error("ACP process reservation is no longer active");
151
+ }
152
+ settled = true;
153
+ const tracked = new TrackedChild(child, () => {
154
+ this.children.delete(tracked);
155
+ });
156
+ this.children.add(tracked);
157
+ if (this.draining) void tracked.terminate().catch(() => {
158
+ });
159
+ return tracked;
160
+ }, "attach"),
161
+ cancel: /* @__PURE__ */ __name(() => {
162
+ if (settled) return;
163
+ settled = true;
164
+ this.reservations.delete(token);
165
+ }, "cancel")
166
+ };
167
+ }
168
+ shutdown() {
169
+ if (this.shutdownPromise) return this.shutdownPromise;
170
+ this.draining = true;
171
+ this.shutdownPromise = Promise.allSettled(
172
+ [...this.children].map((child) => child.terminate())
173
+ ).then((results) => {
174
+ const failures = results.flatMap(
175
+ (result) => result.status === "rejected" ? [result.reason] : []
176
+ );
177
+ if (failures.length > 0) {
178
+ throw new AggregateError(failures, "ACP child process shutdown failed");
179
+ }
180
+ });
181
+ return this.shutdownPromise;
182
+ }
183
+ killAllSync() {
184
+ this.draining = true;
185
+ for (const child of this.children) child.killSync();
186
+ }
187
+ get activeProcessCount() {
188
+ return this.children.size;
189
+ }
190
+ };
191
+ var TrackedChild = class {
192
+ constructor(child, onExit) {
193
+ this.child = child;
194
+ this.onExit = onExit;
195
+ this.exited = new Promise((resolve) => {
196
+ const finish = /* @__PURE__ */ __name((info) => {
197
+ if (this.exitedSettled) return;
198
+ this.exitedSettled = true;
199
+ this.onExit();
200
+ resolve(info);
201
+ }, "finish");
202
+ child.once("exit", (exitCode, signalCode) => {
203
+ finish({ exitCode, signalCode });
204
+ });
205
+ child.once("spawn", () => {
206
+ this.spawnConfirmed = true;
207
+ });
208
+ child.once("error", () => {
209
+ if (!this.spawnConfirmed) finish(void 0);
210
+ });
211
+ });
212
+ }
213
+ static {
214
+ __name(this, "TrackedChild");
215
+ }
216
+ exited;
217
+ exitedSettled = false;
218
+ spawnConfirmed = false;
219
+ terminatePromise;
220
+ terminate() {
221
+ this.terminatePromise ??= this.terminateOnce();
222
+ return this.terminatePromise;
223
+ }
224
+ killSync() {
225
+ if (this.exitedSettled) return;
226
+ try {
227
+ this.child.kill("SIGKILL");
228
+ } catch {
229
+ }
230
+ }
231
+ async terminateOnce() {
232
+ if (this.exitedSettled) return;
233
+ try {
234
+ this.child.kill("SIGTERM");
235
+ } catch {
236
+ if (this.exitedSettled) return;
237
+ }
238
+ let hardKillTimer;
239
+ let deadlineTimer;
240
+ const deadline = new Promise((_, reject) => {
241
+ hardKillTimer = setTimeout(() => this.killSync(), TERM_GRACE_MS);
242
+ hardKillTimer.unref();
243
+ deadlineTimer = setTimeout(() => {
244
+ reject(
245
+ new Error(
246
+ `ACP child pid=${this.child.pid ?? "unknown"} did not exit within ${EXIT_DEADLINE_MS}ms`
247
+ )
248
+ );
249
+ }, EXIT_DEADLINE_MS);
250
+ deadlineTimer.unref();
251
+ });
252
+ try {
253
+ const exitInfo = await Promise.race([this.exited, deadline]);
254
+ if (exitInfo && (exitInfo.exitCode !== 0 || exitInfo.signalCode !== null)) {
255
+ throw new Error(
256
+ `ACP child pid=${this.child.pid ?? "unknown"} exited uncleanly during shutdown (code=${exitInfo.exitCode ?? "none"}, signal=${exitInfo.signalCode ?? "none"})`
257
+ );
258
+ }
259
+ } finally {
260
+ if (hardKillTimer) clearTimeout(hardKillTimer);
261
+ if (deadlineTimer) clearTimeout(deadlineTimer);
262
+ }
263
+ }
264
+ };
265
+
128
266
  // packages/acp-bridge/src/spawnChannel.ts
129
267
  var cachedMemoryArgs;
130
268
  function getAcpMemoryArgs() {
@@ -178,6 +316,7 @@ function createStderrForwarder(opts) {
178
316
  }
179
317
  __name(createStderrForwarder, "createStderrForwarder");
180
318
  function createSpawnChannelFactory(options = {}) {
319
+ const processRegistry = options.processRegistry ?? new ProcessRegistry();
181
320
  return async (workspaceCwd, childEnvOverrides) => {
182
321
  const sourceEnv = options.sourceEnv ?? process.env;
183
322
  const cliEntry = sourceEnv["QWEN_CLI_ENTRY"] || process.argv[1];
@@ -194,21 +333,29 @@ function createSpawnChannelFactory(options = {}) {
194
333
  const execArgs = process.execArgv.filter(
195
334
  (a) => !/^--inspect(-brk)?($|=)/.test(a)
196
335
  );
197
- const child = spawn(
198
- process.execPath,
199
- [
200
- ...execArgs,
201
- ...memoryArgs,
202
- cliEntry,
203
- "--acp",
204
- ...options.extraArgs ?? []
205
- ],
206
- {
207
- cwd: workspaceCwd,
208
- stdio: ["pipe", "pipe", "pipe"],
209
- env: childEnv
210
- }
211
- );
336
+ const reservation = processRegistry.reserve();
337
+ let child;
338
+ try {
339
+ child = spawn(
340
+ process.execPath,
341
+ [
342
+ ...execArgs,
343
+ ...memoryArgs,
344
+ cliEntry,
345
+ "--acp",
346
+ ...options.extraArgs ?? []
347
+ ],
348
+ {
349
+ cwd: workspaceCwd,
350
+ stdio: ["pipe", "pipe", "pipe"],
351
+ env: childEnv
352
+ }
353
+ );
354
+ } catch (error) {
355
+ reservation.cancel();
356
+ throw error;
357
+ }
358
+ const trackedChild = reservation.attach(child);
212
359
  if (child.stderr) {
213
360
  const prefix = `[serve pid=${child.pid} cwd=${workspaceCwd}] `;
214
361
  const forwarder = createStderrForwarder({
@@ -221,21 +368,8 @@ function createSpawnChannelFactory(options = {}) {
221
368
  child.stderr.on("error", () => {
222
369
  });
223
370
  }
224
- const exited = new Promise((resolve) => {
225
- let resolved = false;
226
- const finish = /* @__PURE__ */ __name((info) => {
227
- if (resolved) return;
228
- resolved = true;
229
- resolve(info);
230
- }, "finish");
231
- child.once(
232
- "exit",
233
- (code, signal) => finish({ exitCode: code, signalCode: signal })
234
- );
235
- child.once("error", () => finish(void 0));
236
- });
237
371
  if (!child.stdin || !child.stdout) {
238
- child.kill("SIGKILL");
372
+ trackedChild.killSync();
239
373
  throw new Error(
240
374
  "Spawned ACP child has no stdin/stdout \u2014 cannot establish NDJSON channel."
241
375
  );
@@ -245,22 +379,14 @@ function createSpawnChannelFactory(options = {}) {
245
379
  const stream = ndJsonStream(writable, readable, options.pipeHooks);
246
380
  return {
247
381
  stream,
248
- kill: /* @__PURE__ */ __name(() => killChild(child), "kill"),
249
- killSync: /* @__PURE__ */ __name(() => {
250
- if (child.exitCode === null && child.signalCode === null) {
251
- try {
252
- child.kill("SIGKILL");
253
- } catch {
254
- }
255
- }
256
- }, "killSync"),
257
- exited
382
+ kill: /* @__PURE__ */ __name(() => trackedChild.terminate(), "kill"),
383
+ killSync: /* @__PURE__ */ __name(() => trackedChild.killSync(), "killSync"),
384
+ exited: trackedChild.exited
258
385
  };
259
386
  };
260
387
  }
261
388
  __name(createSpawnChannelFactory, "createSpawnChannelFactory");
262
389
  var defaultSpawnChannelFactory = createSpawnChannelFactory();
263
- var KILL_HARD_DEADLINE_MS = 1e4;
264
390
  var SCRUBBED_CHILD_ENV_KEYS = /* @__PURE__ */ new Set([
265
391
  "QWEN_SERVER_TOKEN",
266
392
  "QWEN_CODE_SIMPLE"
@@ -283,46 +409,6 @@ function scrubChildEnv(source, scrubbed, overrides) {
283
409
  return childEnv;
284
410
  }
285
411
  __name(scrubChildEnv, "scrubChildEnv");
286
- function killChild(child) {
287
- return new Promise((resolve) => {
288
- if (child.exitCode !== null || child.signalCode !== null) {
289
- resolve();
290
- return;
291
- }
292
- let resolved = false;
293
- const finish = /* @__PURE__ */ __name(() => {
294
- if (resolved) return;
295
- resolved = true;
296
- child.removeListener("exit", finish);
297
- resolve();
298
- }, "finish");
299
- child.once("exit", finish);
300
- try {
301
- child.kill("SIGTERM");
302
- } catch {
303
- finish();
304
- return;
305
- }
306
- setTimeout(() => {
307
- if (!resolved && child.exitCode === null && child.signalCode === null) {
308
- try {
309
- child.kill("SIGKILL");
310
- } catch {
311
- }
312
- }
313
- }, 5e3).unref();
314
- setTimeout(() => {
315
- if (!resolved) {
316
- process.stderr.write(
317
- `qwen serve: killChild hard deadline (${KILL_HARD_DEADLINE_MS}ms) reached; child pid=${child.pid} still alive (uninterruptible sleep?) \u2014 abandoning. Operator should check for zombie qwen --acp processes holding workspace resources.
318
- `
319
- );
320
- finish();
321
- }
322
- }, KILL_HARD_DEADLINE_MS).unref();
323
- });
324
- }
325
- __name(killChild, "killChild");
326
412
 
327
413
  export {
328
414
  ndJsonStream,