@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260715.c538bd70d

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 (310) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +8 -0
  2. package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -0
  3. package/bundled/qc-helper/docs/features/channels/overview.md +11 -3
  4. package/bundled/qc-helper/docs/features/code-review.md +88 -44
  5. package/bundled/qc-helper/docs/features/commands.md +6 -6
  6. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  7. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  8. package/bundled/qc-helper/docs/qwen-serve.md +46 -20
  9. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  10. package/bundled/review/DESIGN.md +219 -33
  11. package/bundled/review/SKILL.md +449 -153
  12. package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-LOOBDOTZ.js} +31 -31
  13. package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-76CLZSH2.js} +51 -49
  14. package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-DFJOK7EB.js} +567 -482
  15. package/chunks/{agent-HOLHB3RT.js → agent-OJQWXNHP.js} +26 -26
  16. package/chunks/{agent-headless-SXL6H56A.js → agent-headless-ND7GOORY.js} +26 -26
  17. package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
  18. package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
  19. package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
  20. package/chunks/{bridge-BCJQ7BBB.js → bridge-SNJK2JLK.js} +32 -32
  21. package/chunks/{ca-UJ6HC4H2.js → ca-C2JTT2N5.js} +4 -1
  22. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  23. package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
  24. package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
  25. package/chunks/{chunk-CCDMCZPP.js → chunk-26UABK2C.js} +1 -1
  26. package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
  27. package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
  28. package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
  29. package/chunks/chunk-3MX7D6QN.js +516 -0
  30. package/chunks/{chunk-CLFKOZEK.js → chunk-3XULHBC7.js} +1 -1
  31. package/chunks/chunk-4QZADKJS.js +34 -0
  32. package/chunks/{chunk-E2IY465S.js → chunk-4UDHAJFV.js} +10 -10
  33. package/chunks/{chunk-5U27BZ72.js → chunk-55SAYASQ.js} +190 -77
  34. package/chunks/chunk-5HBA2Z7V.js +28 -0
  35. package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
  36. package/chunks/{chunk-HVY356M2.js → chunk-5SQ55XJZ.js} +3 -3
  37. package/chunks/{chunk-EAXLGSFP.js → chunk-6GRAQNTY.js} +8 -8
  38. package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
  39. package/chunks/{chunk-VWPVHAMO.js → chunk-7DXHIMXL.js} +5 -1
  40. package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
  41. package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
  42. package/chunks/{chunk-W2UIXQDL.js → chunk-7STBROEV.js} +1 -1
  43. package/chunks/{chunk-BMGVRZN4.js → chunk-AETEZU4U.js} +1 -1
  44. package/chunks/{chunk-HPDUL5MF.js → chunk-AGZWN4WV.js} +1 -1
  45. package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
  46. package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
  47. package/chunks/{chunk-34Z3U5RQ.js → chunk-AU4R7ACM.js} +518 -114
  48. package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-B7MFJBKE.js} +67 -35
  49. package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
  50. package/chunks/{chunk-MC23XKFE.js → chunk-BLPMRN4B.js} +3 -3
  51. package/chunks/{chunk-A3XKDTSH.js → chunk-BRRKAUGR.js} +4 -4
  52. package/chunks/{chunk-W3JHSWRP.js → chunk-BUPLOPUA.js} +4 -4
  53. package/chunks/{chunk-3VAGG5T5.js → chunk-BYOOK22F.js} +121 -16
  54. package/chunks/{chunk-EMDMPBJ4.js → chunk-C47ENMZJ.js} +3 -3
  55. package/chunks/{chunk-3AHXV67U.js → chunk-C5TVXLJZ.js} +1 -1
  56. package/chunks/{chunk-X6TJ3YZV.js → chunk-CGT5TQIZ.js} +159 -57
  57. package/chunks/{chunk-4C5BQ2D2.js → chunk-CQQD7MDG.js} +82 -12
  58. package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
  59. package/chunks/{chunk-P67PFTUT.js → chunk-EPY4ZEU6.js} +4 -4
  60. package/chunks/{chunk-6PESIEKJ.js → chunk-EZSRHWGS.js} +68 -6
  61. package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
  62. package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
  63. package/chunks/{chunk-Q6I5QHMH.js → chunk-FGTCZJOD.js} +1 -1
  64. package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
  65. package/chunks/{chunk-B4G2WOFA.js → chunk-FTU55ZZ7.js} +3 -3
  66. package/chunks/{chunk-EGYZ275M.js → chunk-GCD7PEDZ.js} +4 -4
  67. package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
  68. package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
  69. package/chunks/{chunk-GZRTYZ2R.js → chunk-GQKWT45X.js} +154 -1
  70. package/chunks/chunk-GYTKQYDB.js +23 -0
  71. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  72. package/chunks/{chunk-N3EMS75V.js → chunk-HKM2TEF7.js} +1268 -1233
  73. package/chunks/chunk-IDS7MSUP.js +74 -0
  74. package/chunks/{chunk-PVZM22CK.js → chunk-INKAZNYC.js} +5 -5
  75. package/chunks/{chunk-3G7CIHVV.js → chunk-IOQ75R4R.js} +4 -4
  76. package/chunks/{chunk-AURZZYMD.js → chunk-IQOOJSPR.js} +4 -4
  77. package/chunks/{chunk-AKIVHSJR.js → chunk-J4UQXGVL.js} +111 -93
  78. package/chunks/{chunk-VTU57BWZ.js → chunk-JEKOCLRN.js} +1 -1
  79. package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
  80. package/chunks/{chunk-PDZ7MBDG.js → chunk-JIQHT2O6.js} +27 -6
  81. package/chunks/{chunk-XUOOWUZS.js → chunk-JPAH76WA.js} +1 -1
  82. package/chunks/{chunk-BAPGSC7U.js → chunk-K4LG6TVJ.js} +23 -9
  83. package/chunks/chunk-KET3M4K4.js +493 -0
  84. package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
  85. package/chunks/{chunk-SCGXUJBT.js → chunk-KPA5QGN2.js} +3 -3
  86. package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
  87. package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
  88. package/chunks/{chunk-77XJ3SWN.js → chunk-LIUEXYPL.js} +5 -5
  89. package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
  90. package/chunks/{chunk-34MW4KTI.js → chunk-LT5CRUA5.js} +2 -2
  91. package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
  92. package/chunks/{chunk-VA4KQY6V.js → chunk-MEK7CQJR.js} +3 -3
  93. package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
  94. package/chunks/chunk-MR3PXB6E.js +48 -0
  95. package/chunks/{chunk-PODM4SZ4.js → chunk-MV52C5MA.js} +5 -5
  96. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  97. package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
  98. package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
  99. package/chunks/{chunk-ECNYL4AA.js → chunk-OPNPGO6D.js} +1 -1
  100. package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
  101. package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
  102. package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
  103. package/chunks/{chunk-5HOMWMCL.js → chunk-QEDYXCLG.js} +4167 -1338
  104. package/chunks/chunk-QNNTA7IX.js +91 -0
  105. package/chunks/{chunk-D2GFWEXB.js → chunk-QNT5T4Q2.js} +6 -6
  106. package/chunks/{chunk-CUMMSHH6.js → chunk-R5XLNDE2.js} +1 -1
  107. package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
  108. package/chunks/{chunk-WQUQVGTF.js → chunk-RQWDLG6Z.js} +183 -96
  109. package/chunks/{chunk-XYQSMABS.js → chunk-SLCVZX6F.js} +4 -4
  110. package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
  111. package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
  112. package/chunks/chunk-TV6K2FB4.js +224 -0
  113. package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
  114. package/chunks/{chunk-CNEIYWSA.js → chunk-UKWAQ7AV.js} +5 -5
  115. package/chunks/{chunk-7PU4FYLG.js → chunk-US4YQT62.js} +4 -4
  116. package/chunks/{chunk-Q4YQW46J.js → chunk-UYPPCIJQ.js} +36 -18
  117. package/chunks/{chunk-YAUFFXDS.js → chunk-UZKG7HFG.js} +12 -11
  118. package/chunks/{chunk-GWLSNBG4.js → chunk-VQLRHJKL.js} +30 -26
  119. package/chunks/{chunk-L6P4KPHR.js → chunk-VRUHAVZS.js} +59 -39
  120. package/chunks/{chunk-HKMAENAO.js → chunk-W2U4RJJU.js} +8 -6
  121. package/chunks/{chunk-ATAKVRIF.js → chunk-WDSCTLAB.js} +7 -7
  122. package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
  123. package/chunks/{chunk-OQ4DRIOA.js → chunk-WJOC24IW.js} +2 -2
  124. package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
  125. package/chunks/{chunk-NVYTCB5Z.js → chunk-XCR44EEA.js} +14589 -13980
  126. package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
  127. package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
  128. package/chunks/{chunk-D5SKC4YG.js → chunk-ZBAROUR6.js} +41 -13
  129. package/chunks/{chunk-U2NNEY4R.js → chunk-ZEEVKDO7.js} +1 -1
  130. package/chunks/{chunk-5VXNZWGF.js → chunk-ZLOHB76C.js} +1 -1
  131. package/chunks/{chunk-JZETEN3Z.js → chunk-ZNCLTRNU.js} +3 -3
  132. package/chunks/{chunk-TO6QE22P.js → chunk-ZP4ZZJJG.js} +26 -22
  133. package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
  134. package/chunks/{chunk-XLA62MYB.js → chunk-ZTXZ7FM4.js} +2 -2
  135. package/chunks/{computer-use-HM37RX6A.js → computer-use-DRETHEQF.js} +26 -26
  136. package/chunks/{config-utils-NV2SVGPB.js → config-utils-XSHOMMK4.js} +3 -2
  137. package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-7YJUW23J.js} +28 -28
  138. package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
  139. package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-L5HOZAEL.js} +26 -26
  140. package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
  141. package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
  142. package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
  143. package/chunks/{daemon-ARHTSTXP.js → daemon-MI5HF26N.js} +603 -62
  144. package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-2D47GOJT.js} +36 -36
  145. package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
  146. package/chunks/{dist-WKPOYU7O.js → dist-IEXZC5ZR.js} +1 -1
  147. package/chunks/{dist-XKU3ABM5.js → dist-PQK4GCKA.js} +1 -1
  148. package/chunks/{dist-VHV4EVHG.js → dist-U75JK3PF.js} +1 -1
  149. package/chunks/{dist-R7LN5AZE.js → dist-VXO7QBON.js} +2 -2
  150. package/chunks/{dist-PNVLTKTL.js → dist-WH4TZSH3.js} +158 -4
  151. package/chunks/{dist-QYCAEZIT.js → dist-X2ABIW5R.js} +5 -1
  152. package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-OJQPGCSX.js} +27 -27
  153. package/chunks/{edit-VNI4NJ73.js → edit-LZOAFLT2.js} +27 -27
  154. package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
  155. package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-VL2TCGI5.js} +26 -26
  156. package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-QGHBHZWI.js} +42 -27
  157. package/chunks/{environment-5HSSRMJ7.js → environment-2G5IC2EU.js} +30 -29
  158. package/chunks/{errors-HMFCJJ7P.js → errors-7QNQDNI2.js} +28 -28
  159. package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-5V3X2MRH.js} +26 -26
  160. package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-XDPNQB4H.js} +26 -26
  161. package/chunks/{fast-path-FRDMDVHG.js → fast-path-NNSD4BVZ.js} +3 -3
  162. package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
  163. package/chunks/{fr-YXRABLYZ.js → fr-5F3E7WKD.js} +4 -1
  164. package/chunks/{gemini-QYSEGHAX.js → gemini-RKDUWGXJ.js} +139 -76
  165. package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-V7QGHXVF.js} +4 -4
  166. package/chunks/{glob-BRCSGFOT.js → glob-ZNQUUOTS.js} +28 -27
  167. package/chunks/{grep-EE2DUOSY.js → grep-NYIGLM7R.js} +26 -26
  168. package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-UBQ4IQXY.js} +30 -30
  169. package/chunks/{i18n-BASPENNQ.js → i18n-5T3S6SGP.js} +27 -27
  170. package/chunks/initializer-TJED246Q.js +73 -0
  171. package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-OTEU7FKR.js} +27 -27
  172. package/chunks/{ja-7VQOANVG.js → ja-66J6B53L.js} +5 -2
  173. package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
  174. package/chunks/list-6OHS7MFJ.js +76 -0
  175. package/chunks/loadedSettingsAdapter-5456XIYG.js +70 -0
  176. package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-C4EXLYVA.js} +5 -5
  177. package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
  178. package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
  179. package/chunks/mcp-NOWRPFKY.js +70 -0
  180. package/chunks/{monitor-X5Z3H4FY.js → monitor-CVDZO3IZ.js} +26 -26
  181. package/chunks/nonInteractiveCli-UGI7Y43E.js +129 -0
  182. package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-NWIA5TEJ.js} +27 -27
  183. package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KJONBBJO.js} +12 -12
  184. package/chunks/{pidfile-D4I4FTVA.js → pidfile-L3TGXMTF.js} +27 -27
  185. package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
  186. package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-GXUZB5SJ.js} +28 -28
  187. package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  188. package/chunks/{read-file-7SZSIZOL.js → read-file-I4OUZXTA.js} +8 -8
  189. package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
  190. package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
  191. package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-XLCXANIO.js} +26 -26
  192. package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
  193. package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-R6SBP6YS.js} +1232 -371
  194. package/chunks/{runtime-57WWRVHN.js → runtime-U3S33YUQ.js} +42 -37
  195. package/chunks/{scheduler-YBLGWSIL.js → scheduler-65QCIELP.js} +26 -26
  196. package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
  197. package/chunks/{serve-R63NK3CV.js → serve-PSPOFCOD.js} +36 -34
  198. package/chunks/{server-Z22GCAXP.js → server-6P5ZB56O.js} +5561 -1377
  199. package/chunks/{session-HKAAI7BN.js → session-ILLOYW75.js} +298 -98
  200. package/chunks/{settings-3EYN66GK.js → settings-RMUJGYIK.js} +34 -32
  201. package/chunks/{shell-6YXINTWJ.js → shell-65GTAN5Q.js} +28 -26
  202. package/chunks/{skill-OO57P4X6.js → skill-L76U3YCX.js} +10 -10
  203. package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-LXIGZ4EM.js} +28 -28
  204. package/chunks/{src-G5UPLZSZ.js → src-DWZT2X3Z.js} +87 -27
  205. package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-F6SRKPSD.js} +28 -28
  206. package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-UEJQP7S3.js} +730 -397
  207. package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
  208. package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
  209. package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
  210. package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
  211. package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
  212. package/chunks/{team-create-PECAAPXK.js → team-create-4QBZVOGN.js} +26 -26
  213. package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
  214. package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-BK4CIOFV.js} +26 -26
  215. package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-5F2IGW6E.js} +27 -27
  216. package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
  217. package/chunks/{tool-search-THVIWAPB.js → tool-search-J2ESO33H.js} +9 -9
  218. package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-U4LZ5QTQ.js} +33 -33
  219. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  220. package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-TIDOXCJA.js} +29 -28
  221. package/chunks/types-ML3TRJQ5.js +16 -0
  222. package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-VRVR26FI.js} +29 -29
  223. package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-UGKYAVLG.js} +75 -71
  224. package/chunks/{version-3UEA6ZIR.js → version-7HR6VZAT.js} +1 -1
  225. package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-QGODBB6S.js} +5 -5
  226. package/chunks/{workflow-QCCCMYP3.js → workflow-EDQAITEW.js} +27 -27
  227. package/chunks/workspace-providers-status-27UGAK77.js +73 -0
  228. package/chunks/workspace-registration-store-5H7577YQ.js +27 -0
  229. package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-F3THGAXC.js} +33 -33
  230. package/chunks/workspace-service-4JSAQAHP.js +86 -0
  231. package/chunks/workspace-skills-status-5JTWZHZU.js +72 -0
  232. package/chunks/{write-file-I3MUDRIE.js → write-file-UY6XCZZM.js} +27 -27
  233. package/chunks/{zh-RQE7I22T.js → zh-FSAH32JB.js} +6 -2
  234. package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-D2YIE2LO.js} +6 -2
  235. package/cli.js +11 -11
  236. package/locales/ca.js +6 -0
  237. package/locales/de.js +6 -0
  238. package/locales/en.js +8 -0
  239. package/locales/fr.js +6 -0
  240. package/locales/ja.js +7 -1
  241. package/locales/pt.js +6 -0
  242. package/locales/ru.js +6 -0
  243. package/locales/zh-TW.js +9 -1
  244. package/locales/zh.js +9 -1
  245. package/package.json +3 -3
  246. package/web-shell/assets/{arc-C15hqnJe.js → arc-CObt_TK9.js} +1 -1
  247. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
  248. package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
  249. package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
  250. package/web-shell/assets/channel-BBaLq8MV.js +1 -0
  251. package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
  252. package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
  253. package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
  254. package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
  255. package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
  256. package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
  257. package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
  258. package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
  259. package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
  260. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
  261. package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
  262. package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
  263. package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
  264. package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
  265. package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
  266. package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
  267. package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
  268. package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
  269. package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
  270. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
  271. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
  272. package/web-shell/assets/index-3uAT3ehO.css +5 -0
  273. package/web-shell/assets/index-CVHa2QH7.js +3 -0
  274. package/web-shell/assets/index-D1KigWat.js +1128 -0
  275. package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
  276. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
  277. package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
  278. package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
  279. package/web-shell/assets/{linear-C8wKCbIC.js → linear-vpW4FrZs.js} +1 -1
  280. package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-DsHRUnDd.js} +5 -5
  281. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
  282. package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
  283. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
  284. package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
  285. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
  286. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
  287. package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
  288. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
  289. package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
  290. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
  291. package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
  292. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
  293. package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
  294. package/web-shell/index.html +2 -2
  295. package/chunks/chunk-CU3L64TP.js +0 -93
  296. package/chunks/initializer-UTQ7FB7G.js +0 -71
  297. package/chunks/list-DEICDL65.js +0 -74
  298. package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
  299. package/chunks/mcp-L5JXEEIA.js +0 -68
  300. package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
  301. package/chunks/types-JNKGKUJT.js +0 -12
  302. package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
  303. package/chunks/workspace-service-RVLBMSMZ.js +0 -80
  304. package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
  305. package/web-shell/assets/channel-CLiQD50f.js +0 -1
  306. package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
  307. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
  308. package/web-shell/assets/index-D5IWFVk1.css +0 -5
  309. package/web-shell/assets/index-KFJRDhX7.js +0 -783
  310. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  buildPermissionSettings
5
- } from "./chunk-5VXNZWGF.js";
5
+ } from "./chunk-ZLOHB76C.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-PDZ7MBDG.js";
10
+ } from "./chunk-JIQHT2O6.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,11 +16,13 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-HPDUL5MF.js";
19
+ } from "./chunk-AGZWN4WV.js";
20
20
  import {
21
21
  WorkspacePermissionRulesSessionRequiredError,
22
- WorkspaceSettingsPartialPersistError
23
- } from "./chunk-WL4L7EZH.js";
22
+ WorkspaceSettingsPartialPersistError,
23
+ WorkspaceSkillNotFoundError,
24
+ WorkspaceSkillNotToggleableError
25
+ } from "./chunk-OA4JVLSA.js";
24
26
  import {
25
27
  MCP_RESTART_SERVER_DEADLINE_MS
26
28
  } from "./chunk-OCPBI7J5.js";
@@ -32,8 +34,9 @@ import {
32
34
  WorkspaceInitPathEscapeError,
33
35
  WorkspaceInitRaceError,
34
36
  WorkspaceInitSymlinkError
35
- } from "./chunk-IAVB3HM3.js";
37
+ } from "./chunk-KSO42X3Z.js";
36
38
  import {
39
+ BridgeChannelClosedError,
37
40
  SERVE_CONTROL_EXT_METHODS,
38
41
  SERVE_STATUS_EXT_METHODS,
39
42
  STATUS_SCHEMA_VERSION,
@@ -45,23 +48,23 @@ import {
45
48
  createIdleWorkspaceProvidersStatus,
46
49
  createIdleWorkspaceSkillsStatus,
47
50
  mapDomainErrorToErrorKind
48
- } from "./chunk-VWPVHAMO.js";
51
+ } from "./chunk-7DXHIMXL.js";
49
52
  import {
50
53
  getPersistScopeForModelSelection,
51
54
  loadSettings
52
- } from "./chunk-4C5BQ2D2.js";
55
+ } from "./chunk-CQQD7MDG.js";
53
56
  import {
54
57
  getWorkspaceTrustStatus
55
- } from "./chunk-HKMAENAO.js";
58
+ } from "./chunk-W2U4RJJU.js";
56
59
  import {
57
60
  writeStderrLine
58
61
  } from "./chunk-YUZI3WAC.js";
59
62
  import {
60
63
  ModelsConfig
61
- } from "./chunk-NVYTCB5Z.js";
64
+ } from "./chunk-XCR44EEA.js";
62
65
  import {
63
66
  createDebugLogger
64
- } from "./chunk-J4TSQ5EQ.js";
67
+ } from "./chunk-7NFB7LBQ.js";
65
68
  import {
66
69
  init_esbuild_shims
67
70
  } from "./chunk-5O2XNYP6.js";
@@ -96,14 +99,11 @@ function voiceSettingsScopeToWire(scope) {
96
99
  }
97
100
  __name(voiceSettingsScopeToWire, "voiceSettingsScopeToWire");
98
101
  function buildWorkspaceVoiceSettingsWrites(settings, update, opts = {}) {
99
- const voiceSettingsScope = getVoiceSettingsScope(
100
- settings,
101
- opts.workspaceTrusted
102
- );
102
+ const voiceSettingsScope = opts.scopeOverride ?? getVoiceSettingsScope(settings, opts.workspaceTrusted);
103
103
  const writes = [];
104
104
  if (update.voiceModel !== void 0) {
105
105
  writes.push({
106
- scope: getPersistScopeForModelSelection(settings),
106
+ scope: opts.scopeOverride ?? getPersistScopeForModelSelection(settings),
107
107
  key: "voiceModel",
108
108
  value: update.voiceModel
109
109
  });
@@ -158,13 +158,13 @@ function listAvailableVoiceModels(settings) {
158
158
  );
159
159
  }
160
160
  __name(listAvailableVoiceModels, "listAvailableVoiceModels");
161
- function hasConfiguredBatchVoiceTranscriptionModel(settings) {
161
+ function hasConfiguredBatchVoiceTranscriptionModel(settings, opts = {}) {
162
162
  for (const model of listAvailableVoiceModels(settings)) {
163
163
  if (model.transport !== "qwen-asr-chat") {
164
164
  continue;
165
165
  }
166
166
  try {
167
- validateWorkspaceVoiceConfig(settings, model.id);
167
+ validateWorkspaceVoiceConfig(settings, model.id, opts);
168
168
  return true;
169
169
  } catch (err) {
170
170
  debugLogger.debug(
@@ -223,14 +223,24 @@ function validateWorkspaceVoiceModel(settings, voiceModel) {
223
223
  return { id: model.id, transport };
224
224
  }
225
225
  __name(validateWorkspaceVoiceModel, "validateWorkspaceVoiceModel");
226
- function validateWorkspaceVoiceConfig(settings, voiceModel) {
226
+ function validateWorkspaceVoiceConfig(settings, voiceModel, opts = {}) {
227
227
  const descriptor = validateWorkspaceVoiceModel(settings, voiceModel);
228
228
  try {
229
229
  const config = createVoiceModelSource(settings);
230
230
  if (descriptor.transport === "qwen-asr-chat") {
231
- resolveVoiceTranscriptionConfig({ config, settings, voiceModel });
231
+ resolveVoiceTranscriptionConfig({
232
+ config,
233
+ settings,
234
+ voiceModel,
235
+ env: opts.env
236
+ });
232
237
  } else {
233
- resolveVoiceStreamConfig({ config, settings, voiceModel });
238
+ resolveVoiceStreamConfig({
239
+ config,
240
+ settings,
241
+ voiceModel,
242
+ env: opts.env
243
+ });
234
244
  }
235
245
  } catch (err) {
236
246
  throw new WorkspaceVoiceError(
@@ -242,7 +252,7 @@ function validateWorkspaceVoiceConfig(settings, voiceModel) {
242
252
  return descriptor;
243
253
  }
244
254
  __name(validateWorkspaceVoiceConfig, "validateWorkspaceVoiceConfig");
245
- function validateWorkspaceVoiceState(settings, update) {
255
+ function validateWorkspaceVoiceState(settings, update, opts = {}) {
246
256
  if (update.enabled === void 0 && update.mode === void 0 && update.language === void 0 && update.voiceModel === void 0) {
247
257
  throw new WorkspaceVoiceError(
248
258
  400,
@@ -265,7 +275,7 @@ function validateWorkspaceVoiceState(settings, update) {
265
275
  "A valid voiceModel is required before enabling voice."
266
276
  );
267
277
  }
268
- validateWorkspaceVoiceConfig(settings, nextVoiceModel);
278
+ validateWorkspaceVoiceConfig(settings, nextVoiceModel, opts);
269
279
  }
270
280
  __name(validateWorkspaceVoiceState, "validateWorkspaceVoiceState");
271
281
  async function transcribeWorkspaceVoiceAudio(input) {
@@ -286,6 +296,7 @@ async function transcribeWorkspaceVoiceAudio(input) {
286
296
  config: createVoiceModelSource(input.settings),
287
297
  settings: input.settings,
288
298
  voiceModel: input.voiceModel,
299
+ env: input.env,
289
300
  abortSignal: input.abortSignal
290
301
  }
291
302
  );
@@ -360,8 +371,11 @@ function createDaemonWorkspaceService(deps) {
360
371
  workspaceSkillsStatusProvider,
361
372
  isChannelLive,
362
373
  persistDisabledTools,
374
+ persistDisabledSkills,
363
375
  persistSetting,
364
376
  persistSettings,
377
+ voiceEnv,
378
+ voiceSettingsScope,
365
379
  preheatAcpChild: preheatAcpChildOnBridge,
366
380
  queryWorkspaceStatus,
367
381
  invokeWorkspaceCommand,
@@ -370,6 +384,35 @@ function createDaemonWorkspaceService(deps) {
370
384
  } = deps;
371
385
  let lastWorkspaceSkillsStatus;
372
386
  let inFlightAcpPreheat;
387
+ const getWorkspaceSkillsStatus = /* @__PURE__ */ __name(async () => {
388
+ let status;
389
+ try {
390
+ status = await queryWorkspaceStatus(
391
+ SERVE_STATUS_EXT_METHODS.workspaceSkills,
392
+ () => createIdleWorkspaceSkillsStatus(boundWorkspace)
393
+ );
394
+ } catch (err) {
395
+ writeStderrLine(
396
+ `qwen serve: getWorkspaceSkillsStatus query failed: ${err instanceof Error ? err.message : String(err)}`
397
+ );
398
+ status = createIdleWorkspaceSkillsStatus(boundWorkspace);
399
+ }
400
+ if (status.initialized) {
401
+ lastWorkspaceSkillsStatus = status;
402
+ return status;
403
+ }
404
+ if (lastWorkspaceSkillsStatus) return lastWorkspaceSkillsStatus;
405
+ if (workspaceSkillsStatusProvider) {
406
+ try {
407
+ return await workspaceSkillsStatusProvider(boundWorkspace);
408
+ } catch (err) {
409
+ writeStderrLine(
410
+ `qwen serve: getWorkspaceSkillsStatus local provider failed: ${err instanceof Error ? err.message : String(err)}`
411
+ );
412
+ }
413
+ }
414
+ return status;
415
+ }, "getWorkspaceSkillsStatus");
373
416
  return {
374
417
  // -- Status queries (delegate to ACP child via queryWorkspaceStatus) --
375
418
  async getWorkspaceMcpStatus(_ctx) {
@@ -379,35 +422,7 @@ function createDaemonWorkspaceService(deps) {
379
422
  );
380
423
  },
381
424
  async getWorkspaceSkillsStatus(_ctx) {
382
- let status;
383
- try {
384
- status = await queryWorkspaceStatus(
385
- SERVE_STATUS_EXT_METHODS.workspaceSkills,
386
- () => createIdleWorkspaceSkillsStatus(boundWorkspace)
387
- );
388
- } catch (err) {
389
- writeStderrLine(
390
- `qwen serve: getWorkspaceSkillsStatus query failed: ${err instanceof Error ? err.message : String(err)}`
391
- );
392
- status = createIdleWorkspaceSkillsStatus(boundWorkspace);
393
- }
394
- if (status.initialized) {
395
- lastWorkspaceSkillsStatus = status;
396
- return status;
397
- }
398
- if (lastWorkspaceSkillsStatus) {
399
- return lastWorkspaceSkillsStatus;
400
- }
401
- if (workspaceSkillsStatusProvider) {
402
- try {
403
- return await workspaceSkillsStatusProvider(boundWorkspace);
404
- } catch (err) {
405
- writeStderrLine(
406
- `qwen serve: getWorkspaceSkillsStatus local provider failed: ${err instanceof Error ? err.message : String(err)}`
407
- );
408
- }
409
- }
410
- return status;
425
+ return getWorkspaceSkillsStatus();
411
426
  },
412
427
  async getWorkspaceProvidersStatus(_ctx) {
413
428
  if (workspaceProvidersStatusProvider) {
@@ -566,7 +581,10 @@ function createDaemonWorkspaceService(deps) {
566
581
  async getWorkspaceVoiceStatus(_ctx) {
567
582
  return buildWorkspaceVoiceStatus(
568
583
  boundWorkspace,
569
- loadSettings(boundWorkspace)
584
+ loadSettings(
585
+ boundWorkspace,
586
+ voiceEnv ? { skipLoadEnvironment: true } : true
587
+ )
570
588
  );
571
589
  },
572
590
  // -- Mutations --
@@ -619,11 +637,15 @@ function createDaemonWorkspaceService(deps) {
619
637
  "Workspace voice settings persistence is not available"
620
638
  );
621
639
  }
622
- const settings = loadSettings(boundWorkspace);
623
- validateWorkspaceVoiceState(settings, request);
640
+ const settings = loadSettings(
641
+ boundWorkspace,
642
+ voiceEnv ? { skipLoadEnvironment: true } : true
643
+ );
644
+ validateWorkspaceVoiceState(settings, request, { env: voiceEnv });
624
645
  const workspaceTrusted = getWorkspaceTrustStatus(settings.merged, boundWorkspace).effective.state === "trusted";
625
646
  const writes = buildWorkspaceVoiceSettingsWrites(settings, request, {
626
- workspaceTrusted
647
+ workspaceTrusted,
648
+ ...voiceSettingsScope ? { scopeOverride: voiceSettingsScope } : {}
627
649
  });
628
650
  const publishWrite = /* @__PURE__ */ __name((write) => {
629
651
  publishWorkspaceEvent({
@@ -664,6 +686,9 @@ function createDaemonWorkspaceService(deps) {
664
686
  writeStderrLine(
665
687
  `qwen serve: workspace voice partial persist error (workspace=${boundWorkspace}, committed=${committed.length}/${writes.length}, failedKey=${write.key}, failedScope=${voiceSettingsScopeToWire(write.scope)}): ${err instanceof Error ? err.message : String(err)}`
666
688
  );
689
+ for (const committedWrite of committed) {
690
+ publishWrite(committedWrite);
691
+ }
667
692
  throw new WorkspaceSettingsPartialPersistError(
668
693
  `Voice settings partial persist failed: committed=${committed.length}/${writes.length}`,
669
694
  committed,
@@ -678,7 +703,10 @@ function createDaemonWorkspaceService(deps) {
678
703
  }
679
704
  return buildWorkspaceVoiceStatus(
680
705
  boundWorkspace,
681
- loadSettings(boundWorkspace)
706
+ loadSettings(
707
+ boundWorkspace,
708
+ voiceEnv ? { skipLoadEnvironment: true } : true
709
+ )
682
710
  );
683
711
  },
684
712
  async setWorkspaceToolEnabled(ctx, toolName, enabled) {
@@ -690,6 +718,80 @@ function createDaemonWorkspaceService(deps) {
690
718
  });
691
719
  return { toolName, enabled };
692
720
  },
721
+ async setWorkspaceSkillEnabled(ctx, requestedSkillName, enabled) {
722
+ const normalizedName = requestedSkillName.trim().toLowerCase();
723
+ const status = await getWorkspaceSkillsStatus();
724
+ const skill = status.skills.find(
725
+ (candidate) => candidate.name.trim().toLowerCase() === normalizedName
726
+ );
727
+ if (!skill) throw new WorkspaceSkillNotFoundError(requestedSkillName);
728
+ if (skill.userInvocable === false) {
729
+ throw new WorkspaceSkillNotToggleableError(
730
+ skill.name,
731
+ "not_user_invocable"
732
+ );
733
+ }
734
+ const disabled = loadSettings(boundWorkspace).merged.skills?.disabled;
735
+ const disabledNames = new Set(
736
+ (Array.isArray(disabled) ? disabled : []).filter((name) => typeof name === "string").map((name) => name.trim().toLowerCase()).filter(Boolean)
737
+ );
738
+ if (skill.level === "extension" && skill.status === "disabled" && !disabledNames.has(normalizedName)) {
739
+ throw new WorkspaceSkillNotToggleableError(
740
+ skill.name,
741
+ "inactive_extension"
742
+ );
743
+ }
744
+ const persisted = await persistDisabledSkills(
745
+ boundWorkspace,
746
+ skill.name,
747
+ enabled
748
+ );
749
+ const channelLive = isChannelLive?.() ?? false;
750
+ let activation = channelLive ? "applied" : "deferred";
751
+ let sessionsRefreshed = 0;
752
+ let sessionsFailed = 0;
753
+ if (persisted.changed) {
754
+ lastWorkspaceSkillsStatus = void 0;
755
+ if (channelLive) {
756
+ try {
757
+ const refreshed = await invokeWorkspaceCommand(
758
+ SERVE_CONTROL_EXT_METHODS.workspaceSkillsRefresh,
759
+ { cwd: boundWorkspace }
760
+ );
761
+ sessionsRefreshed = refreshed.sessionsRefreshed;
762
+ sessionsFailed = refreshed.sessionsFailed;
763
+ if (sessionsFailed > 0) activation = "partial";
764
+ } catch (err) {
765
+ if (err instanceof SessionNotFoundError || err instanceof BridgeChannelClosedError) {
766
+ activation = "deferred";
767
+ } else {
768
+ activation = "partial";
769
+ sessionsFailed = 1;
770
+ writeStderrLine(
771
+ `qwen serve: workspace skill refresh failed: ${err instanceof Error ? err.message : String(err)}`
772
+ );
773
+ }
774
+ }
775
+ }
776
+ publishWorkspaceEvent({
777
+ type: "settings_changed",
778
+ data: {
779
+ key: "skills.disabled",
780
+ value: persisted.disabled.length > 0 ? persisted.disabled : void 0,
781
+ scope: "workspace"
782
+ },
783
+ originatorClientId: ctx.originatorClientId
784
+ });
785
+ }
786
+ return {
787
+ skillName: skill.name,
788
+ enabled,
789
+ changed: persisted.changed,
790
+ activation,
791
+ sessionsRefreshed,
792
+ sessionsFailed
793
+ };
794
+ },
693
795
  async initWorkspace(ctx, opts) {
694
796
  const filename = contextFilename;
695
797
  const target = path.resolve(boundWorkspace, filename);
@@ -10,22 +10,24 @@ import {
10
10
  getLanguageNameFromLocale,
11
11
  getLanguageSettingsOptions,
12
12
  t
13
- } from "./chunk-YAUFFXDS.js";
13
+ } from "./chunk-UZKG7HFG.js";
14
14
  import {
15
15
  getHomeEnvFallbackVars,
16
16
  loadEnvironment,
17
17
  preResolveHomeEnvOverrides
18
- } from "./chunk-SCGXUJBT.js";
18
+ } from "./chunk-KPA5QGN2.js";
19
19
  import {
20
20
  CONSOLIDATED_DISABLE_KEYS,
21
21
  V1_INDICATOR_KEYS,
22
22
  V1_TO_V2_MIGRATION_MAP,
23
23
  V1_TO_V2_PRESERVE_DISABLE_MAP,
24
24
  V2_CONTAINER_KEYS,
25
- getSystemDefaultsPath,
26
- getSystemSettingsPath,
27
25
  resolveEnvVarsInObject
28
- } from "./chunk-3BTRNWWD.js";
26
+ } from "./chunk-GOXKNSDZ.js";
27
+ import {
28
+ getSystemDefaultsPath,
29
+ getSystemSettingsPath
30
+ } from "./chunk-IDS7MSUP.js";
29
31
  import {
30
32
  ENV_CORRUPTED_PATH,
31
33
  ENV_WAS_RECOVERED
@@ -33,10 +35,10 @@ import {
33
35
  import {
34
36
  isWorkspaceTrusted,
35
37
  updateSettingsFilePreservingFormat
36
- } from "./chunk-HKMAENAO.js";
38
+ } from "./chunk-W2U4RJJU.js";
37
39
  import {
38
40
  require_strip_json_comments
39
- } from "./chunk-RDJSGHZE.js";
41
+ } from "./chunk-ALGGS7UH.js";
40
42
  import {
41
43
  DEFAULT_MAX_SUBAGENT_DEPTH,
42
44
  DEFAULT_MAX_TOOL_CALLS_PER_TURN,
@@ -46,20 +48,20 @@ import {
46
48
  DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
47
49
  DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
48
50
  stripRuntimeSnapshotPrefix
49
- } from "./chunk-NVYTCB5Z.js";
51
+ } from "./chunk-XCR44EEA.js";
50
52
  import {
51
53
  DEFAULT_QWEN_CUSTOM_IGNORE_FILE_NAMES
52
- } from "./chunk-4QLQE5WJ.js";
54
+ } from "./chunk-L5U3ELZX.js";
53
55
  import {
54
56
  DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
55
57
  SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT
56
- } from "./chunk-3VAGG5T5.js";
58
+ } from "./chunk-BYOOK22F.js";
57
59
  import {
58
60
  FatalConfigError,
59
61
  Storage,
60
62
  createDebugLogger,
61
63
  getErrorMessage
62
- } from "./chunk-J4TSQ5EQ.js";
64
+ } from "./chunk-7NFB7LBQ.js";
63
65
  import {
64
66
  init_esbuild_shims
65
67
  } from "./chunk-5O2XNYP6.js";
@@ -100,6 +102,18 @@ function getPersistScopeForModelSelection(settings) {
100
102
  return getModelProvidersOwnerScope(settings) ?? "User" /* User */;
101
103
  }
102
104
  __name(getPersistScopeForModelSelection, "getPersistScopeForModelSelection");
105
+ function getWritableScopes(settings) {
106
+ return settings.isTrusted ? ["Workspace" /* Workspace */, "User" /* User */] : ["User" /* User */];
107
+ }
108
+ __name(getWritableScopes, "getWritableScopes");
109
+ function getOwnKeyScope(settings, key) {
110
+ for (const scope of getWritableScopes(settings)) {
111
+ const obj = settings.forScope(scope).settings;
112
+ if (Object.prototype.hasOwnProperty.call(obj, key)) return scope;
113
+ }
114
+ return void 0;
115
+ }
116
+ __name(getOwnKeyScope, "getOwnKeyScope");
103
117
 
104
118
  // packages/cli/src/config/settingsSchema.ts
105
119
  init_esbuild_shims();
@@ -1955,6 +1969,28 @@ var SETTINGS_SCHEMA = {
1955
1969
  default: false,
1956
1970
  description: "Show color in shell output.",
1957
1971
  showInDialog: false
1972
+ },
1973
+ defaultTimeoutMs: {
1974
+ type: "integer",
1975
+ minimum: 0,
1976
+ maximum: 6e5,
1977
+ label: "Default Command Timeout (ms)",
1978
+ category: "Tools",
1979
+ requiresRestart: true,
1980
+ default: void 0,
1981
+ description: "Default timeout, in milliseconds, for foreground shell commands started by the agent. A per-call timeout on the shell tool overrides this. When unset, foreground commands time out after 120000 ms (2 minutes). Set to 0 to disable the timeout.",
1982
+ showInDialog: false
1983
+ },
1984
+ heartbeatIntervalMs: {
1985
+ type: "integer",
1986
+ minimum: 0,
1987
+ maximum: 6e5,
1988
+ label: "Silent Command Heartbeat Interval (ms)",
1989
+ category: "Tools",
1990
+ requiresRestart: true,
1991
+ default: void 0,
1992
+ description: "Interval, in milliseconds, between liveness heartbeats emitted while a foreground shell command produces no output. Heartbeats are forwarded to ACP clients and stream-json consumers so they can tell a silent command from a dead session. When unset, heartbeats fire every 10000 ms (10 seconds). Set to 0 to disable heartbeats.",
1993
+ showInDialog: false
1958
1994
  }
1959
1995
  }
1960
1996
  },
@@ -2407,9 +2443,29 @@ var SETTINGS_SCHEMA = {
2407
2443
  category: "Advanced",
2408
2444
  requiresRestart: false,
2409
2445
  default: {},
2410
- description: "Settings for multi-agent collaboration features (Arena, Team, Swarm).",
2446
+ description: "Settings for built-in agents and multi-agent collaboration features (Arena, Team, Swarm).",
2411
2447
  showInDialog: false,
2412
2448
  properties: {
2449
+ builtin: {
2450
+ type: "object",
2451
+ label: "Built-in Agents",
2452
+ category: "Advanced",
2453
+ requiresRestart: true,
2454
+ default: {},
2455
+ description: "Settings for built-in subagents.",
2456
+ showInDialog: false,
2457
+ properties: {
2458
+ exploreModel: {
2459
+ type: "string",
2460
+ label: "Explore Model",
2461
+ category: "Model",
2462
+ requiresRestart: true,
2463
+ default: "inherit",
2464
+ description: 'Model selector for the built-in Explore subagent. Use "inherit" for the main session model, "fast" for fastModel, a model ID, or an authType:model-id selector. Custom same-name agents are unaffected.',
2465
+ showInDialog: false
2466
+ }
2467
+ }
2468
+ },
2413
2469
  maxParallelAgents: {
2414
2470
  type: "number",
2415
2471
  label: "Max Parallel Agents",
@@ -2573,6 +2629,17 @@ var SETTINGS_SCHEMA = {
2573
2629
  mergeStrategy: "concat" /* CONCAT */,
2574
2630
  items: HOOK_DEFINITION_ITEMS
2575
2631
  },
2632
+ MessageDisplay: {
2633
+ type: "array",
2634
+ label: "Message Display Hooks",
2635
+ category: "Advanced",
2636
+ requiresRestart: false,
2637
+ default: [],
2638
+ description: "Hooks that execute repeatedly as the assistant reply streams, before the After Agent (Stop) hooks fire.",
2639
+ showInDialog: false,
2640
+ mergeStrategy: "concat" /* CONCAT */,
2641
+ items: HOOK_DEFINITION_ITEMS
2642
+ },
2576
2643
  Notification: {
2577
2644
  type: "array",
2578
2645
  label: "Notification Hooks",
@@ -4658,7 +4725,10 @@ function saveSettings(settingsFile, updates = settingsFile.originalSettings, rep
4658
4725
  __name(saveSettings, "saveSettings");
4659
4726
 
4660
4727
  export {
4728
+ getModelProvidersOwnerScope,
4661
4729
  getPersistScopeForModelSelection,
4730
+ getWritableScopes,
4731
+ getOwnKeyScope,
4662
4732
  TOGGLE_TYPES,
4663
4733
  OUTPUT_LANGUAGE_AUTO,
4664
4734
  isAutoLanguage,