@qwen-code/qwen-code 0.21.0-nightly.20260727.c003e1718 → 0.21.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +4 -0
  2. package/bundled/qc-helper/docs/features/channels/github.md +14 -14
  3. package/bundled/qc-helper/docs/features/hooks.md +50 -13
  4. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
  5. package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
  6. package/bundled/review/SKILL.md +15 -0
  7. package/chunks/{MaxSizedBox-2N5IOLMA.js → MaxSizedBox-UQGQ6O3I.js} +36 -36
  8. package/chunks/{StandaloneSessionPicker-6SNFY63D.js → StandaloneSessionPicker-QLO5COVM.js} +51 -51
  9. package/chunks/{acp-startup-profiler-RV3IV562.js → acp-startup-profiler-DFVPFQ6C.js} +2 -2
  10. package/chunks/{acpAgent-6BDY452E.js → acpAgent-ECMKCJPZ.js} +1265 -505
  11. package/chunks/{agent-WPMRCC7E.js → agent-NJ4VPY5B.js} +31 -31
  12. package/chunks/{agent-headless-OSOKZOZK.js → agent-headless-JB6RF5HT.js} +31 -31
  13. package/chunks/{anthropicContentGenerator-EJEHPX2W.js → anthropicContentGenerator-V2QOGVYD.js} +54 -13
  14. package/chunks/{artifact-tool-FQYTXKFY.js → artifact-tool-6K6U7XYJ.js} +2 -2
  15. package/chunks/{askUserQuestion-DJQIJ5T4.js → askUserQuestion-GD2IJJ7I.js} +2 -2
  16. package/chunks/{bridge-VR3WL36L.js → bridge-EXKCQ7MD.js} +38 -37
  17. package/chunks/{build-47LY6L7H.js → build-S6DO7LMM.js} +1 -1
  18. package/chunks/{ca-UBSN3YSM.js → ca-6W3SK7OQ.js} +1 -1
  19. package/chunks/{channel-management-service-2WRAWZQU.js → channel-management-service-XR7GZSWF.js} +7 -7
  20. package/chunks/{channel-settings-store-3FOVM5TF.js → channel-settings-store-VA4J7HPF.js} +38 -38
  21. package/chunks/{channel-worker-group-VMGKUBUY.js → channel-worker-group-XDPTDWTX.js} +9 -5
  22. package/chunks/{channel-worker-manager-2SCF42S2.js → channel-worker-manager-YYEHVRRE.js} +9 -5
  23. package/chunks/{channel-worker-supervisor-F3HADSDC.js → channel-worker-supervisor-74HTWA2G.js} +5 -4
  24. package/chunks/{chunk-2PHWA4IO.js → chunk-2DN4J57Y.js} +2 -2
  25. package/chunks/{chunk-HHYPUCUF.js → chunk-2LKVPASC.js} +3 -3
  26. package/chunks/{chunk-ECBKZ7SV.js → chunk-2LQTH543.js} +2 -2
  27. package/chunks/{chunk-EDEO3ZXU.js → chunk-2XSLTRFZ.js} +2 -2
  28. package/chunks/{chunk-HIJQF5B5.js → chunk-3L2SPEBH.js} +1 -1
  29. package/chunks/{chunk-2KHUM3TN.js → chunk-3MGBLIXX.js} +167 -81
  30. package/chunks/{chunk-CWFC2GZB.js → chunk-3Q4TGVUX.js} +1385 -785
  31. package/chunks/{chunk-KR2UZ6QL.js → chunk-4G2BISNC.js} +1 -1
  32. package/chunks/{chunk-IUYFCE34.js → chunk-4WSL256B.js} +3 -3
  33. package/chunks/{chunk-LI4HGDLZ.js → chunk-5FNROPXI.js} +4 -4
  34. package/chunks/{chunk-ECEJ6T4L.js → chunk-5TBMQLGG.js} +2 -2
  35. package/chunks/{chunk-KW3H2FM4.js → chunk-5YKDXHUY.js} +2 -2
  36. package/chunks/{chunk-PIVH7FAY.js → chunk-5YVWMI26.js} +5 -5
  37. package/chunks/{chunk-IUNB6SUW.js → chunk-64LQLPL7.js} +3 -3
  38. package/chunks/{chunk-7R4YENCL.js → chunk-6QIGFD5W.js} +1 -1
  39. package/chunks/{chunk-SHJ4R6JF.js → chunk-727I7LJ2.js} +5 -5
  40. package/chunks/{chunk-BRKWIX5C.js → chunk-74YNMTJP.js} +30 -19
  41. package/chunks/{chunk-IM6PC55H.js → chunk-75GFAX4R.js} +1 -1
  42. package/chunks/{chunk-IXNNGTUI.js → chunk-75MIQ3LV.js} +18 -3
  43. package/chunks/{chunk-VCBKBEU7.js → chunk-7A4ZDITM.js} +27 -14
  44. package/chunks/{chunk-FZZTCEXC.js → chunk-7HRXAFCW.js} +10 -10
  45. package/chunks/{chunk-BJHP755Z.js → chunk-7I5GTCT4.js} +271 -164
  46. package/chunks/{chunk-BOWYL27T.js → chunk-7XATOOE7.js} +1 -1
  47. package/chunks/{chunk-HAZMIZP7.js → chunk-A2APC6HM.js} +2 -2
  48. package/chunks/{chunk-ZYD3KZPB.js → chunk-A3NDJ5SB.js} +2 -2
  49. package/chunks/{chunk-IIJCNWAY.js → chunk-AL62VKMS.js} +4 -4
  50. package/chunks/{chunk-NZYXKNSZ.js → chunk-AOAYOH3R.js} +1 -1
  51. package/chunks/{chunk-C6U6ZR65.js → chunk-ATZOB5Y2.js} +11 -11
  52. package/chunks/{chunk-UH3WSE5L.js → chunk-B4AJNNOL.js} +1 -6
  53. package/chunks/{chunk-JJY7H2ZU.js → chunk-BCZFQXWK.js} +2 -2
  54. package/chunks/{chunk-FUFNINKB.js → chunk-BGTQCTQW.js} +42 -3
  55. package/chunks/{chunk-6PQHZ4YW.js → chunk-BWKCTLEJ.js} +193 -149
  56. package/chunks/{chunk-3FNJBOF7.js → chunk-CVHIL5IG.js} +3 -3
  57. package/chunks/{chunk-55PWRVIR.js → chunk-DABQX74H.js} +8 -8
  58. package/chunks/{chunk-N7U3LRNS.js → chunk-DDKAZLZ7.js} +17 -6
  59. package/chunks/{chunk-CPF4NIKT.js → chunk-DIQGH5CN.js} +1 -1
  60. package/chunks/{chunk-3YAW4B2W.js → chunk-DJGYJDYR.js} +1 -1
  61. package/chunks/{chunk-4IQSPE3A.js → chunk-DNDETPES.js} +3 -3
  62. package/chunks/{chunk-4CCAX23S.js → chunk-DZLYR4U3.js} +1 -1
  63. package/chunks/{chunk-7XSFZ3FM.js → chunk-EABYVKAK.js} +2 -2
  64. package/chunks/{chunk-SJXVC6ZO.js → chunk-F3EYHTOC.js} +4 -4
  65. package/chunks/{chunk-RKMMVQDZ.js → chunk-FNMZK765.js} +1 -1
  66. package/chunks/{chunk-2KLJYA37.js → chunk-FW4M4GA7.js} +1 -1
  67. package/chunks/chunk-FYJ7W2PI.js +194 -0
  68. package/chunks/{chunk-7GC5YKSS.js → chunk-GATT5TKW.js} +1 -1
  69. package/chunks/{chunk-4CSVLZXK.js → chunk-GBAZKAZW.js} +3 -3
  70. package/chunks/{chunk-5ADNRHTY.js → chunk-GEBV2JGB.js} +28 -5
  71. package/chunks/{chunk-VV6QF662.js → chunk-GKX7E4CO.js} +1 -1
  72. package/chunks/{chunk-ELHHYF7E.js → chunk-GNR2RNMP.js} +157 -4
  73. package/chunks/{chunk-PLMOXLFY.js → chunk-GW3XHA6P.js} +2 -2
  74. package/chunks/{chunk-SAXBG6AR.js → chunk-GXIJHV66.js} +3 -3
  75. package/chunks/{chunk-4AVIERNE.js → chunk-GZ3RCT54.js} +1 -1
  76. package/chunks/{chunk-6K2CPEAB.js → chunk-HKFEPLKW.js} +1 -1
  77. package/chunks/{chunk-QVKDVURA.js → chunk-HRD7NI6D.js} +11 -3
  78. package/chunks/{chunk-G3RJEBAA.js → chunk-HUK2P4RS.js} +2510 -1273
  79. package/chunks/{chunk-RRNQGWR4.js → chunk-HWNLU2HC.js} +7 -7
  80. package/chunks/{chunk-TH6TQR5Y.js → chunk-IZO36O6O.js} +252 -15
  81. package/chunks/{chunk-67IE7N5D.js → chunk-JMONIXMJ.js} +1 -1
  82. package/chunks/{chunk-DMEKUQ5Z.js → chunk-JSD33JG6.js} +3 -3
  83. package/chunks/{chunk-CX2KLDRX.js → chunk-JYBU6YUE.js} +1 -1
  84. package/chunks/{chunk-SJOQ5GW7.js → chunk-KADQPLPX.js} +1 -1
  85. package/chunks/{chunk-PAJNXBXO.js → chunk-KBNDRM4U.js} +3 -3
  86. package/chunks/{chunk-TD665TIY.js → chunk-KFPFJAR3.js} +24 -22
  87. package/chunks/{chunk-ZGVQLKMP.js → chunk-KY3NRFJ5.js} +9 -6
  88. package/chunks/{chunk-DEKCAHRS.js → chunk-LGAOC3ZS.js} +1 -1
  89. package/chunks/{chunk-GVHHFBJ2.js → chunk-LHZRAR2Q.js} +37 -40
  90. package/chunks/{chunk-2WUAKFCQ.js → chunk-LNHZ3A4I.js} +44 -11
  91. package/chunks/{chunk-2LFSPVBC.js → chunk-LW3RFMG7.js} +3 -3
  92. package/chunks/{chunk-SEWRIH7H.js → chunk-M7OONWYU.js} +2 -2
  93. package/chunks/{chunk-CO3BKKFP.js → chunk-ML5M5XOY.js} +269 -248
  94. package/chunks/{chunk-YF6D7CRB.js → chunk-NG3V2LPY.js} +8 -13
  95. package/chunks/{chunk-ZAJIOSFI.js → chunk-NNERMV7T.js} +2 -2
  96. package/chunks/{chunk-N5JEINK3.js → chunk-NOKIVHOL.js} +15 -2
  97. package/chunks/chunk-OCPBI7J5.js +18 -0
  98. package/chunks/{chunk-YF7TVSQK.js → chunk-OKF7JF3R.js} +3 -3
  99. package/chunks/{chunk-5FQ3CINJ.js → chunk-OXWFQXKX.js} +6 -6
  100. package/chunks/{chunk-EWYICJNY.js → chunk-P2YNZWXZ.js} +3 -3
  101. package/chunks/{chunk-6LOSXNKO.js → chunk-PONHVBRT.js} +2 -2
  102. package/chunks/{chunk-FZP2GLM4.js → chunk-QQLCYEN2.js} +1 -1
  103. package/chunks/{chunk-HEVX5YOM.js → chunk-R3NOCPFB.js} +4 -4
  104. package/chunks/{chunk-WZOPR2ZP.js → chunk-R7ZITH3J.js} +3 -1
  105. package/chunks/{chunk-ACPMPDKQ.js → chunk-RPLGZJV2.js} +38 -1
  106. package/chunks/{chunk-MFBM3CQZ.js → chunk-SGFT55XI.js} +1 -1
  107. package/chunks/{chunk-QSDUHJAR.js → chunk-SGM6M3XG.js} +1 -1
  108. package/chunks/{chunk-II55VZQA.js → chunk-SUWVXF2E.js} +3 -3
  109. package/chunks/{chunk-VYPFXUCB.js → chunk-SZ3KHTDR.js} +1 -1
  110. package/chunks/{chunk-UWSREISS.js → chunk-T2QMKU3R.js} +79 -1
  111. package/chunks/{chunk-7VOUXBKJ.js → chunk-TFRMVU6R.js} +1 -1
  112. package/chunks/{chunk-RGZ34F4F.js → chunk-TUQ36KWK.js} +10 -5
  113. package/chunks/{chunk-R2F2DRBY.js → chunk-U3E3UQAA.js} +4 -4
  114. package/chunks/{chunk-2XORP6RV.js → chunk-UEDIRTKG.js} +1 -1
  115. package/chunks/{chunk-VOTXHGKJ.js → chunk-UFI5GRDS.js} +3 -3
  116. package/chunks/{chunk-ATIV6G7N.js → chunk-UHUSJ6X7.js} +1 -1
  117. package/chunks/{chunk-2WVVMSPB.js → chunk-UPUG4GXM.js} +3 -3
  118. package/chunks/{chunk-TXI4LPWT.js → chunk-UWMLWVCA.js} +18 -6
  119. package/chunks/{chunk-G2W6OP2O.js → chunk-V5AWXXVA.js} +3 -3
  120. package/chunks/{chunk-5CGAUBFZ.js → chunk-VYO6YPYG.js} +3 -3
  121. package/chunks/{chunk-67ZRSECV.js → chunk-W4MIWP6M.js} +26 -15
  122. package/chunks/{chunk-OJJVALKY.js → chunk-WBSMNTSV.js} +3 -3
  123. package/chunks/{chunk-BZU6TRNQ.js → chunk-WUKGHS32.js} +5 -5
  124. package/chunks/{chunk-WTCKVXNT.js → chunk-WUNZAP5I.js} +4 -4
  125. package/chunks/{chunk-XM5V2A2E.js → chunk-WZRWHXFE.js} +1 -1
  126. package/chunks/{chunk-K2P7QBXF.js → chunk-X6XZITHR.js} +3 -3
  127. package/chunks/{chunk-ZEVUICUF.js → chunk-XBYYDKAZ.js} +7 -7
  128. package/chunks/{chunk-XL7TLW5I.js → chunk-XBZQT63P.js} +1 -1
  129. package/chunks/{chunk-DC2Y3JSV.js → chunk-XH7E5IGP.js} +1 -1
  130. package/chunks/{chunk-B5DJFAHN.js → chunk-XR2NFLNQ.js} +4 -4
  131. package/chunks/{chunk-FOT6JBY5.js → chunk-XRYM3MCI.js} +348 -126
  132. package/chunks/{chunk-IJDXG4RL.js → chunk-XWWKIXVD.js} +1 -1
  133. package/chunks/{chunk-3SJ43L4W.js → chunk-XZC5VLBZ.js} +2 -0
  134. package/chunks/{chunk-ZWL7SSVL.js → chunk-Y4IHBGBP.js} +1 -1
  135. package/chunks/{chunk-MB3M2BFP.js → chunk-Y6AXW2OG.js} +9 -3
  136. package/chunks/{chunk-6ENJ2DGB.js → chunk-Y6RATHM5.js} +2 -2
  137. package/chunks/{chunk-D33ZN3GK.js → chunk-YAKKV4WO.js} +12 -12
  138. package/chunks/{chunk-IPUUTYMV.js → chunk-YDLJGZHL.js} +1 -1
  139. package/chunks/{chunk-H6YTFKW7.js → chunk-YGF33UXG.js} +60 -7
  140. package/chunks/{chunk-BV6LBI45.js → chunk-YPCRRO7K.js} +3 -3
  141. package/chunks/{chunk-WDMODYUC.js → chunk-ZBVS26BY.js} +4 -0
  142. package/chunks/{chunk-GBJUC5ZL.js → chunk-ZHBO7WVX.js} +1 -1
  143. package/chunks/{chunk-4CKLWQQR.js → chunk-ZSQ5LDBH.js} +1 -1
  144. package/chunks/{computer-use-42W2GDED.js → computer-use-TGJRGZWO.js} +31 -31
  145. package/chunks/{config-utils-OTUC46XY.js → config-utils-NYSXDMEQ.js} +4 -4
  146. package/chunks/{contextCommand-2WIK6DG3.js → contextCommand-HGWDMG36.js} +33 -33
  147. package/chunks/{core-runtime-YFT4JKHA.js → core-runtime-WHE3LSHF.js} +31 -31
  148. package/chunks/{create-sub-session-HQMFFLL5.js → create-sub-session-OWI4RC7D.js} +31 -31
  149. package/chunks/{create-sub-session-Q4BUPKIO.js → create-sub-session-SBYUMSSS.js} +2 -2
  150. package/chunks/{cron-create-NI2G2ACR.js → cron-create-2QK6TCEC.js} +4 -4
  151. package/chunks/{cron-delete-KHD2WOMV.js → cron-delete-FDCDFYMG.js} +4 -4
  152. package/chunks/{cron-list-LZMV5V7N.js → cron-list-XN3WVBTP.js} +4 -4
  153. package/chunks/{daemon-KN3FWTYU.js → daemon-Q2AB5Z23.js} +139 -2
  154. package/chunks/{daemon-status-provider-DYVQTAZX.js → daemon-status-provider-KY35PVUR.js} +43 -42
  155. package/chunks/{daemon-trust-policy-QUHMUDOQ.js → daemon-trust-policy-QSQRPXHD.js} +37 -37
  156. package/chunks/{daemon-trust-policy-monitor-AHIPWCQD.js → daemon-trust-policy-monitor-VJQ54EM3.js} +37 -37
  157. package/chunks/{de-LVJPZWUT.js → de-SY6O76BF.js} +1 -1
  158. package/chunks/{deferred-core-runtime-VWKP5HVD.js → deferred-core-runtime-U3DDMMV2.js} +31 -31
  159. package/chunks/{dist-CWCPAMA2.js → dist-BSTVRPMT.js} +234 -78
  160. package/chunks/{dist-GWORRKWL.js → dist-DOLYHMXE.js} +2 -2
  161. package/chunks/{dist-CRNO2KXU.js → dist-HVRQ2CFL.js} +271 -11
  162. package/chunks/{dist-TPJRJ237.js → dist-IXQEQWRG.js} +1 -1
  163. package/chunks/{dist-ONF2ZUUX.js → dist-SSU66DM4.js} +1 -1
  164. package/chunks/{dist-BRVIXBFA.js → dist-SV7Q3AWJ.js} +1 -1
  165. package/chunks/{dist-2HFXMUT6.js → dist-YGBBMK3Z.js} +1 -1
  166. package/chunks/{earlyInputCapture-AZAUUSDE.js → earlyInputCapture-H4YOY6R7.js} +32 -32
  167. package/chunks/{edit-2GM73YUN.js → edit-NZWMOOX6.js} +31 -31
  168. package/chunks/{en-7JEDYSBE.js → en-NBK3JKCE.js} +4 -1
  169. package/chunks/{enter-worktree-O6MC2FZM.js → enter-worktree-6FMYNZ4S.js} +31 -31
  170. package/chunks/{enterPlanMode-NJNHHLAJ.js → enterPlanMode-RYK5P7WC.js} +31 -31
  171. package/chunks/{environment-L5QWIYKQ.js → environment-RBLY3QVX.js} +33 -33
  172. package/chunks/{errors-GO7MH572.js → errors-WVUI42QV.js} +33 -33
  173. package/chunks/{exit-worktree-FR7KKQSW.js → exit-worktree-FRFYEX6R.js} +31 -31
  174. package/chunks/{exitPlanMode-QKNK5MBZ.js → exitPlanMode-STTGKHP2.js} +31 -31
  175. package/chunks/{fast-path-7SP4KXIF.js → fast-path-OZD2JFDY.js} +3 -3
  176. package/chunks/{fast-path-settings-GTWXZLJZ.js → fast-path-settings-WQJU2LAT.js} +2 -2
  177. package/chunks/{fr-JXF5ONTD.js → fr-4KG5V7UT.js} +1 -1
  178. package/chunks/{gemini-J5WX6DS3.js → gemini-PUKYW6OF.js} +83 -82
  179. package/chunks/{geminiContentGenerator-X4FCO2IH.js → geminiContentGenerator-HYMWIERE.js} +6 -6
  180. package/chunks/{glob-UYGYQ73X.js → glob-IZATNUPS.js} +31 -31
  181. package/chunks/{grep-HWLK333D.js → grep-DWHBLRXJ.js} +33 -32
  182. package/chunks/{handleAutoUpdate-H55RTXMU.js → handleAutoUpdate-3VHGEOAV.js} +35 -35
  183. package/chunks/{i18n-6YL3VGHQ.js → i18n-A56PNKBP.js} +32 -32
  184. package/chunks/{image-gen-ZN43Y352.js → image-gen-RBLQKXQJ.js} +9 -9
  185. package/chunks/{initializer-ATU3WGM5.js → initializer-TCD6H7VY.js} +38 -38
  186. package/chunks/{installationInfo-3D4M363G.js → installationInfo-276EXQW2.js} +32 -32
  187. package/chunks/{ja-72VBFAM5.js → ja-F3GSQXMF.js} +1 -1
  188. package/chunks/{keychain-token-storage-U6BBK3IE.js → keychain-token-storage-72IYCAZV.js} +2 -2
  189. package/chunks/{list-K7TOZQ5T.js → list-NWDHWJ4D.js} +40 -40
  190. package/chunks/{list-agents-FHIQAX2Y.js → list-agents-R6KDXQR3.js} +2 -2
  191. package/chunks/{loadedSettingsAdapter-IDASCO2P.js → loadedSettingsAdapter-YXJKWUYF.js} +37 -37
  192. package/chunks/{loggingContentGenerator-C7ECOBP5.js → loggingContentGenerator-LU6TII3U.js} +18 -18
  193. package/chunks/{loop-wakeup-PSF72P7O.js → loop-wakeup-3IQKCYAH.js} +5 -5
  194. package/chunks/{ls-RVQ2JC4C.js → ls-DKZ37A7N.js} +4 -4
  195. package/chunks/{lsp-UFP2H2RG.js → lsp-QNWN7KN3.js} +2 -2
  196. package/chunks/{managed-npm-update-MWQIFEJC.js → managed-npm-update-AO3CL6VU.js} +32 -32
  197. package/chunks/{mcp-YJ4SZXFF.js → mcp-5PMHEFAR.js} +37 -37
  198. package/chunks/{monitor-MWKW6W4Q.js → monitor-2YELRQ6S.js} +31 -31
  199. package/chunks/nonInteractiveCli-74R5S76M.js +144 -0
  200. package/chunks/{notebook-edit-ALAKK5DZ.js → notebook-edit-SV6GDWUG.js} +31 -31
  201. package/chunks/{openaiContentGenerator-V5GYCLVN.js → openaiContentGenerator-FMBXX26Z.js} +19 -19
  202. package/chunks/{pidfile-I7IOGSVT.js → pidfile-HZA26WFC.js} +32 -32
  203. package/chunks/process-registry-2CHQBXH5.js +157 -0
  204. package/chunks/{processUtils-SRGJPX5P.js → processUtils-4F7EMUKQ.js} +2 -2
  205. package/chunks/{pt-E4AMXNUG.js → pt-EQ33KWEN.js} +1 -1
  206. package/chunks/{qwenContentGenerator-INCMQJG3.js → qwenContentGenerator-CXAD5IOE.js} +37 -37
  207. package/chunks/{qwenOAuth2-MIL7MEKO.js → qwenOAuth2-7V2RGLUU.js} +8 -8
  208. package/chunks/{read-file-BBQ6BN7G.js → read-file-AQKNOXOV.js} +11 -11
  209. package/chunks/{read-mcp-resource-M4IJUOXP.js → read-mcp-resource-GFTWYXMK.js} +2 -2
  210. package/chunks/{record-artifact-4NWBVHNM.js → record-artifact-XAMSFSW4.js} +2 -2
  211. package/chunks/{resumeHistoryUtils-X74IGERO.js → resumeHistoryUtils-NSHGEJZY.js} +37 -37
  212. package/chunks/{ripGrep-GCSZGI22.js → ripGrep-KVWIREMR.js} +31 -31
  213. package/chunks/{ru-OJOR34RM.js → ru-7OZAUKGG.js} +1 -1
  214. package/chunks/{run-qwen-serve-RAPQ4UBN.js → run-qwen-serve-LBBMQRWJ.js} +94 -58
  215. package/chunks/{runtime-F4YK7A5M.js → runtime-XR3VFARS.js} +42 -42
  216. package/chunks/{scheduler-JFOAST7W.js → scheduler-OLI5YERT.js} +31 -31
  217. package/chunks/{sdk-exporters-http-H6MWAYGV.js → sdk-exporters-http-WO556XNU.js} +2 -2
  218. package/chunks/{sdk-impl-U4BU6LE5.js → sdk-impl-LPAVACSF.js} +2 -2
  219. package/chunks/{send-message-GAB3K4KN.js → send-message-SAWK4DZX.js} +4 -4
  220. package/chunks/{serve-WAK4FQIT.js → serve-2WM3HPSN.js} +37 -37
  221. package/chunks/{server-GJFU7OZ6.js → server-T4C6UGPM.js} +895 -127
  222. package/chunks/{session-WFWS7D6U.js → session-IAPGXMG3.js} +78 -77
  223. package/chunks/{settings-NI7K6BOS.js → settings-LIYC7NVY.js} +39 -39
  224. package/chunks/{shell-PI52ZRBM.js → shell-M455ZXG6.js} +31 -31
  225. package/chunks/{skill-EGJY4VDT.js → skill-ZHDF6IVV.js} +15 -15
  226. package/chunks/{skill-settings-27BQIOWC.js → skill-settings-MEFO33AC.js} +36 -36
  227. package/chunks/{spawnChannel-LU6YO2IZ.js → spawnChannel-NAISQSBK.js} +33 -33
  228. package/chunks/{standalone-update-TG2BLT73.js → standalone-update-K4RNR537.js} +33 -33
  229. package/chunks/{startInteractiveUI-4NTL2RZ6.js → startInteractiveUI-HJUQMCBD.js} +426 -216
  230. package/chunks/{syntheticOutput-YCOHYBPM.js → syntheticOutput-355CB6CJ.js} +3 -3
  231. package/chunks/{task-create-YRN3PDAT.js → task-create-INGWNUG4.js} +8 -8
  232. package/chunks/{task-list-FYGHXFOT.js → task-list-5XNNGTF4.js} +5 -5
  233. package/chunks/{task-stop-I7CNWL7J.js → task-stop-4ROAOBXH.js} +2 -2
  234. package/chunks/{task-update-5QOY2AIK.js → task-update-CRK5VWWZ.js} +8 -8
  235. package/chunks/{team-create-5H4T3ENJ.js → team-create-YWCUC55A.js} +31 -31
  236. package/chunks/{team-delete-OAA4YOAC.js → team-delete-S2RCXA4P.js} +5 -5
  237. package/chunks/{team-plan-approval-44SCBFBB.js → team-plan-approval-ZJGZRKV5.js} +31 -31
  238. package/chunks/{theme-manager-HYFW3GL7.js → theme-manager-5LUFI5NY.js} +32 -32
  239. package/chunks/{todoWrite-YFIBFZO3.js → todoWrite-7WM3VDMY.js} +4 -4
  240. package/chunks/{tool-search-YAIIWTSJ.js → tool-search-LZMDLBAK.js} +13 -13
  241. package/chunks/{total-session-admission-FPF66OF6.js → total-session-admission-MDA3ANYQ.js} +39 -38
  242. package/chunks/{trustedFolders-4RSRSIO3.js → trustedFolders-NZEZRJPU.js} +32 -32
  243. package/chunks/{update-relaunch-4NKVI2H5.js → update-relaunch-D7EKBO4E.js} +5 -5
  244. package/chunks/{updateCheck-E2336RGI.js → updateCheck-AKFMZZCG.js} +34 -34
  245. package/chunks/{useAutoAcceptIndicator-YXC4OJ2B.js → useAutoAcceptIndicator-55OEL7UZ.js} +40 -40
  246. package/chunks/{validateNonInterActiveAuth-G5PREALO.js → validateNonInterActiveAuth-K5WQOFUQ.js} +72 -71
  247. package/chunks/{version-IBROP4MJ.js → version-ANSPR52A.js} +1 -1
  248. package/chunks/{web-fetch-G2GFNE3L.js → web-fetch-WFKX5SJM.js} +14 -14
  249. package/chunks/{web-search-4ISTNKIX.js → web-search-XDPHXEUC.js} +9 -9
  250. package/chunks/{workflow-OQY4Y74P.js → workflow-6YYVMHCS.js} +32 -32
  251. package/chunks/{workspace-providers-status-SRB65GMC.js → workspace-providers-status-5L4FEPYR.js} +40 -40
  252. package/chunks/{workspace-registration-store-XOUNCX5G.js → workspace-registration-store-C2HIDNXV.js} +1 -1
  253. package/chunks/{workspace-registry-XMDDRCP3.js → workspace-registry-7B7T5SC3.js} +39 -38
  254. package/chunks/{workspace-service-XUAHBWUX.js → workspace-service-VGGIWADS.js} +46 -45
  255. package/chunks/{workspace-skills-status-GGH6TYSU.js → workspace-skills-status-MZZLEGL5.js} +38 -38
  256. package/chunks/{workspace-trust-reconciler-AKKLKLJQ.js → workspace-trust-reconciler-3PA5PLHX.js} +45 -44
  257. package/chunks/{write-file-7MSTD3VC.js → write-file-5GNKRL2B.js} +31 -31
  258. package/chunks/{zh-2MA5UKNJ.js → zh-H3YDK5QW.js} +4 -1
  259. package/chunks/{zh-TW-JO4Z7CVC.js → zh-TW-JYCP7XUA.js} +4 -1
  260. package/chunks/zoom-image-JIRPKLNA.js +351 -0
  261. package/cli.js +13 -13
  262. package/locales/ca.js +2 -2
  263. package/locales/de.js +2 -2
  264. package/locales/en.js +5 -2
  265. package/locales/fr.js +2 -2
  266. package/locales/ja.js +2 -2
  267. package/locales/pt.js +2 -2
  268. package/locales/ru.js +2 -2
  269. package/locales/zh-TW.js +5 -2
  270. package/locales/zh.js +5 -2
  271. package/package.json +5 -4
  272. package/web-shell/assets/{arc-DYNfZ967.js → arc-75-Wdeo3.js} +1 -1
  273. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CkKsIF39.js → architectureDiagram-3BPJPVTR-FKeXQbyP.js} +1 -1
  274. package/web-shell/assets/{blockDiagram-GPEHLZMM-FfDv_qOy.js → blockDiagram-GPEHLZMM-CY0vc-A3.js} +1 -1
  275. package/web-shell/assets/{c4Diagram-AAUBKEIU-pA5r7guO.js → c4Diagram-AAUBKEIU-CNP-A-8u.js} +1 -1
  276. package/web-shell/assets/channel-DPYMT76A.js +1 -0
  277. package/web-shell/assets/{chunk-2J33WTMH-Bfnf2k-q.js → chunk-2J33WTMH-GybS4Gii.js} +1 -1
  278. package/web-shell/assets/{chunk-4BX2VUAB-BCpgiyb4.js → chunk-4BX2VUAB-02H91V8v.js} +1 -1
  279. package/web-shell/assets/{chunk-55IACEB6-BrwrazA2.js → chunk-55IACEB6-D3M-2VT6.js} +1 -1
  280. package/web-shell/assets/{chunk-727SXJPM-DDCxd_BK.js → chunk-727SXJPM-CCu29u4H.js} +1 -1
  281. package/web-shell/assets/{chunk-AQP2D5EJ-Ce-B1Qi5.js → chunk-AQP2D5EJ-CaFKWgrn.js} +1 -1
  282. package/web-shell/assets/{chunk-FMBD7UC4-Dl2u6_p7.js → chunk-FMBD7UC4-ZZpPqIwQ.js} +1 -1
  283. package/web-shell/assets/{chunk-ND2GUHAM-32W_JFKh.js → chunk-ND2GUHAM-D22DqGs8.js} +1 -1
  284. package/web-shell/assets/{chunk-QZHKN3VN-BmtCt0RT.js → chunk-QZHKN3VN-Bu85S0fw.js} +1 -1
  285. package/web-shell/assets/classDiagram-4FO5ZUOK--JstsIgL.js +1 -0
  286. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--JstsIgL.js +1 -0
  287. package/web-shell/assets/{cose-bilkent-S5V4N54A-D_DXerbn.js → cose-bilkent-S5V4N54A-f1CK1Gwe.js} +1 -1
  288. package/web-shell/assets/{dagre-BM42HDAG-C3fMtjq2.js → dagre-BM42HDAG-D0Ow8F_n.js} +1 -1
  289. package/web-shell/assets/{diagram-2AECGRRQ-CBiuEoIi.js → diagram-2AECGRRQ-BPrmTWp8.js} +1 -1
  290. package/web-shell/assets/{diagram-5GNKFQAL-J8DRS3up.js → diagram-5GNKFQAL-HccuFAzy.js} +1 -1
  291. package/web-shell/assets/{diagram-KO2AKTUF-DEVjvvjZ.js → diagram-KO2AKTUF-BrS76mbA.js} +1 -1
  292. package/web-shell/assets/{diagram-LMA3HP47-Bh9hEXeR.js → diagram-LMA3HP47-V7T9lU-5.js} +1 -1
  293. package/web-shell/assets/{diagram-OG6HWLK6-CgV4R96R.js → diagram-OG6HWLK6-DKidyJMR.js} +1 -1
  294. package/web-shell/assets/{erDiagram-TEJ5UH35-BGCFyfGU.js → erDiagram-TEJ5UH35-DBadZIkp.js} +1 -1
  295. package/web-shell/assets/{flowDiagram-I6XJVG4X-BCaQuiMb.js → flowDiagram-I6XJVG4X-BymfqdNJ.js} +1 -1
  296. package/web-shell/assets/{ganttDiagram-6RSMTGT7-B9J27vXf.js → ganttDiagram-6RSMTGT7-DOw340jf.js} +1 -1
  297. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-C2u3FvFn.js → gitGraphDiagram-PVQCEYII-_8EiD8sl.js} +1 -1
  298. package/web-shell/assets/{index-BF2Ug_o6.js → index-CKIadvET.js} +1 -1
  299. package/web-shell/assets/index-D1eXNRHe.js +1389 -0
  300. package/web-shell/assets/index-DVLD4CQq.css +5 -0
  301. package/web-shell/assets/{infoDiagram-5YYISTIA-VGjh3Icm.js → infoDiagram-5YYISTIA-D61KYQBu.js} +1 -1
  302. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-8AZWigme.js → ishikawaDiagram-YF4QCWOH-CsiXSpNx.js} +1 -1
  303. package/web-shell/assets/{journeyDiagram-JHISSGLW-CnAVNJU5.js → journeyDiagram-JHISSGLW-Sdfionyh.js} +1 -1
  304. package/web-shell/assets/{kanban-definition-UN3LZRKU-DAh7CFUA.js → kanban-definition-UN3LZRKU-C3WI3Cnl.js} +1 -1
  305. package/web-shell/assets/{linear-BMHEIvy4.js → linear-Dpigcc62.js} +1 -1
  306. package/web-shell/assets/{mermaid.core-CpHDMzGU.js → mermaid.core-Ct97pqgW.js} +5 -5
  307. package/web-shell/assets/{mindmap-definition-RKZ34NQL-Cf3CMPHf.js → mindmap-definition-RKZ34NQL-BzeaN0rB.js} +1 -1
  308. package/web-shell/assets/{pieDiagram-4H26LBE5-BpRfWcVA.js → pieDiagram-4H26LBE5-CvjgcbVD.js} +1 -1
  309. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-kqzUnUwh.js → quadrantDiagram-W4KKPZXB-BUzgTNdH.js} +1 -1
  310. package/web-shell/assets/{requirementDiagram-4Y6WPE33-D2FenOqg.js → requirementDiagram-4Y6WPE33-B7zKlgUQ.js} +1 -1
  311. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-dWDMUdUe.js → sankeyDiagram-5OEKKPKP-Bb9CQgrT.js} +1 -1
  312. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CYcL0MEP.js → sequenceDiagram-3UESZ5HK-DJ6V7itG.js} +1 -1
  313. package/web-shell/assets/{stateDiagram-AJRCARHV-DkpIKZM6.js → stateDiagram-AJRCARHV-IImflERY.js} +1 -1
  314. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CYI_YoNR.js +1 -0
  315. package/web-shell/assets/{timeline-definition-PNZ67QCA-B50fgyFY.js → timeline-definition-PNZ67QCA-6Q_uWHKh.js} +1 -1
  316. package/web-shell/assets/{vennDiagram-CIIHVFJN-DMlYXh0E.js → vennDiagram-CIIHVFJN-TmyKyjwv.js} +1 -1
  317. package/web-shell/assets/{wardley-L42UT6IY-B2iJy8jY.js → wardley-L42UT6IY-CRh9uiPv.js} +1 -1
  318. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-B-PG81LW.js → wardleyDiagram-YWT4CUSO-59TKAW8w.js} +1 -1
  319. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1N8kSF9.js → xychartDiagram-2RQKCTM6-GCSUIK2L.js} +1 -1
  320. package/web-shell/index.html +2 -2
  321. package/chunks/nonInteractiveCli-74XMYNLX.js +0 -143
  322. package/web-shell/assets/channel-C-gQ4Nim.js +0 -1
  323. package/web-shell/assets/classDiagram-4FO5ZUOK-DKEurkx0.js +0 -1
  324. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DKEurkx0.js +0 -1
  325. package/web-shell/assets/index-Du08qEb3.js +0 -1249
  326. package/web-shell/assets/index-tq1xUECo.css +0 -5
  327. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-QSG1JRm2.js +0 -1
  328. package/chunks/{chunk-IAU6HCJZ.js → chunk-D3UEZIQH.js} +6 -6
  329. /package/chunks/{chunk-LXXMOYPL.js → chunk-VXZBKKQR.js} +0 -0
@@ -12,6 +12,163 @@ import {
12
12
  __name
13
13
  } from "./chunk-J2S4EL5Y.js";
14
14
 
15
+ // packages/channels/base/dist/ChannelLoopTools.js
16
+ init_esbuild_shims();
17
+ var CHANNEL_LOOP_MCP_SERVER_NAME = "channel_loop";
18
+ var CLIENT_MCP_MESSAGE_METHOD = "qwen/control/client_mcp/message";
19
+ var WORKSPACE_MCP_RUNTIME_ADD_METHOD = "qwen/control/workspace/mcp/runtime-add";
20
+ var CLIENT_MCP_OVER_WS_CONFIG_FLAG = "__clientMcpOverWs";
21
+ var createTool = {
22
+ name: "channel_loop_create",
23
+ description: "Create a recurring proactive reminder or scheduled prompt for the current channel chat. Use this in channel sessions instead of cron_create.",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ cron: {
28
+ type: "string",
29
+ description: 'Standard 5-field cron expression in local time, for example "*/5 * * * *".'
30
+ },
31
+ prompt: {
32
+ type: "string",
33
+ description: "The message or instruction to run and proactively push to this channel chat."
34
+ },
35
+ recurring: {
36
+ type: "boolean",
37
+ description: "Whether the loop recurs. Defaults to true."
38
+ }
39
+ },
40
+ required: ["cron", "prompt"]
41
+ }
42
+ };
43
+ var listTool = {
44
+ name: "channel_loop_list",
45
+ description: "List proactive loops for the current channel chat.",
46
+ inputSchema: { type: "object", properties: {} }
47
+ };
48
+ var cancelTool = {
49
+ name: "channel_loop_cancel",
50
+ description: "Cancel a proactive loop for the current channel chat.",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: {
54
+ id: { type: "string", description: "Loop id to cancel." }
55
+ },
56
+ required: ["id"]
57
+ }
58
+ };
59
+ var CHANNEL_LOOP_MCP_TOOLS = [createTool, listTool, cancelTool];
60
+ var ChannelLoopMcpServer = class {
61
+ static {
62
+ __name(this, "ChannelLoopMcpServer");
63
+ }
64
+ handler;
65
+ constructor(handler) {
66
+ this.handler = handler;
67
+ }
68
+ async handleMessage(message, context) {
69
+ const id = message["id"];
70
+ if (id === void 0 || id === null) {
71
+ return void 0;
72
+ }
73
+ try {
74
+ const result = await this.dispatch(message, context);
75
+ return { jsonrpc: "2.0", id, result };
76
+ } catch (error) {
77
+ return {
78
+ jsonrpc: "2.0",
79
+ id,
80
+ error: {
81
+ code: -32603,
82
+ message: error instanceof Error ? error.message : String(error)
83
+ }
84
+ };
85
+ }
86
+ }
87
+ async dispatch(message, context) {
88
+ switch (message["method"]) {
89
+ case "initialize":
90
+ return {
91
+ protocolVersion: "2024-11-05",
92
+ capabilities: { tools: {} },
93
+ serverInfo: { name: CHANNEL_LOOP_MCP_SERVER_NAME, version: "0.0.1" }
94
+ };
95
+ case "tools/list":
96
+ return { tools: CHANNEL_LOOP_MCP_TOOLS };
97
+ case "tools/call":
98
+ return this.callTool(message["params"], context);
99
+ case "ping":
100
+ return {};
101
+ default:
102
+ throw new Error(`Method not found: ${String(message["method"])}`);
103
+ }
104
+ }
105
+ async callTool(rawParams, context) {
106
+ if (!context.sessionId) {
107
+ throw new Error("Missing channel session id.");
108
+ }
109
+ if (typeof rawParams !== "object" || rawParams === null) {
110
+ throw new Error("Invalid tools/call params.");
111
+ }
112
+ const params = rawParams;
113
+ const name = params["name"];
114
+ const args = typeof params["arguments"] === "object" && params["arguments"] !== null ? params["arguments"] : {};
115
+ let toolResult;
116
+ switch (name) {
117
+ case createTool.name:
118
+ toolResult = await this.handler.create(context.sessionId, readCreateInput(args));
119
+ break;
120
+ case listTool.name:
121
+ toolResult = await this.handler.list(context.sessionId);
122
+ break;
123
+ case cancelTool.name:
124
+ toolResult = await this.handler.cancel(context.sessionId, readId(args));
125
+ break;
126
+ default:
127
+ throw new Error(`Unknown channel loop tool: ${String(name)}`);
128
+ }
129
+ const result = typeof toolResult === "string" ? { text: toolResult } : toolResult;
130
+ return {
131
+ content: [{ type: "text", text: result.text }],
132
+ ...result.isError ? { isError: true } : {}
133
+ };
134
+ }
135
+ };
136
+ function readCreateInput(args) {
137
+ const cron = args["cron"];
138
+ const prompt = args["prompt"];
139
+ if (typeof cron !== "string" || cron.trim().length === 0) {
140
+ throw new Error("cron must be a non-empty string.");
141
+ }
142
+ if (typeof prompt !== "string" || prompt.trim().length === 0) {
143
+ throw new Error("prompt must be a non-empty string.");
144
+ }
145
+ const recurring = readRecurring(args["recurring"]);
146
+ return {
147
+ cron: cron.trim(),
148
+ prompt: prompt.trim(),
149
+ ...recurring !== void 0 ? { recurring } : {}
150
+ };
151
+ }
152
+ __name(readCreateInput, "readCreateInput");
153
+ function readRecurring(value) {
154
+ if (typeof value === "boolean")
155
+ return value;
156
+ if (value === "false" || value === 0)
157
+ return false;
158
+ if (value === "true" || value === 1)
159
+ return true;
160
+ return void 0;
161
+ }
162
+ __name(readRecurring, "readRecurring");
163
+ function readId(args) {
164
+ const id = args["id"];
165
+ if (typeof id !== "string" || id.trim().length === 0) {
166
+ throw new Error("id must be a non-empty string.");
167
+ }
168
+ return id.trim();
169
+ }
170
+ __name(readId, "readId");
171
+
15
172
  // packages/channels/base/dist/sanitize.js
16
173
  init_esbuild_shims();
17
174
  var PROMPT_UNSAFE_INVISIBLES = new RegExp("[\\u0080-\\u009f\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
@@ -294,166 +451,8 @@ import { spawn } from "node:child_process";
294
451
  import { randomUUID } from "node:crypto";
295
452
  import { Readable, Writable } from "node:stream";
296
453
  import { EventEmitter } from "node:events";
297
-
298
- // packages/channels/base/dist/ChannelLoopTools.js
299
- init_esbuild_shims();
300
- var CHANNEL_LOOP_MCP_SERVER_NAME = "channel_loop";
301
- var CLIENT_MCP_MESSAGE_METHOD = "qwen/control/client_mcp/message";
302
- var WORKSPACE_MCP_RUNTIME_ADD_METHOD = "qwen/control/workspace/mcp/runtime-add";
303
- var CLIENT_MCP_OVER_WS_CONFIG_FLAG = "__clientMcpOverWs";
304
- var createTool = {
305
- name: "channel_loop_create",
306
- description: "Create a recurring proactive reminder or scheduled prompt for the current channel chat. Use this in channel sessions instead of cron_create.",
307
- inputSchema: {
308
- type: "object",
309
- properties: {
310
- cron: {
311
- type: "string",
312
- description: 'Standard 5-field cron expression in local time, for example "*/5 * * * *".'
313
- },
314
- prompt: {
315
- type: "string",
316
- description: "The message or instruction to run and proactively push to this channel chat."
317
- },
318
- recurring: {
319
- type: "boolean",
320
- description: "Whether the loop recurs. Defaults to true."
321
- }
322
- },
323
- required: ["cron", "prompt"]
324
- }
325
- };
326
- var listTool = {
327
- name: "channel_loop_list",
328
- description: "List proactive loops for the current channel chat.",
329
- inputSchema: { type: "object", properties: {} }
330
- };
331
- var cancelTool = {
332
- name: "channel_loop_cancel",
333
- description: "Cancel a proactive loop for the current channel chat.",
334
- inputSchema: {
335
- type: "object",
336
- properties: {
337
- id: { type: "string", description: "Loop id to cancel." }
338
- },
339
- required: ["id"]
340
- }
341
- };
342
- var CHANNEL_LOOP_MCP_TOOLS = [createTool, listTool, cancelTool];
343
- var ChannelLoopMcpServer = class {
344
- static {
345
- __name(this, "ChannelLoopMcpServer");
346
- }
347
- handler;
348
- constructor(handler) {
349
- this.handler = handler;
350
- }
351
- async handleMessage(message, context) {
352
- const id = message["id"];
353
- if (id === void 0 || id === null) {
354
- return void 0;
355
- }
356
- try {
357
- const result = await this.dispatch(message, context);
358
- return { jsonrpc: "2.0", id, result };
359
- } catch (error) {
360
- return {
361
- jsonrpc: "2.0",
362
- id,
363
- error: {
364
- code: -32603,
365
- message: error instanceof Error ? error.message : String(error)
366
- }
367
- };
368
- }
369
- }
370
- async dispatch(message, context) {
371
- switch (message["method"]) {
372
- case "initialize":
373
- return {
374
- protocolVersion: "2024-11-05",
375
- capabilities: { tools: {} },
376
- serverInfo: { name: CHANNEL_LOOP_MCP_SERVER_NAME, version: "0.0.1" }
377
- };
378
- case "tools/list":
379
- return { tools: CHANNEL_LOOP_MCP_TOOLS };
380
- case "tools/call":
381
- return this.callTool(message["params"], context);
382
- case "ping":
383
- return {};
384
- default:
385
- throw new Error(`Method not found: ${String(message["method"])}`);
386
- }
387
- }
388
- async callTool(rawParams, context) {
389
- if (!context.sessionId) {
390
- throw new Error("Missing channel session id.");
391
- }
392
- if (typeof rawParams !== "object" || rawParams === null) {
393
- throw new Error("Invalid tools/call params.");
394
- }
395
- const params = rawParams;
396
- const name = params["name"];
397
- const args = typeof params["arguments"] === "object" && params["arguments"] !== null ? params["arguments"] : {};
398
- let toolResult;
399
- switch (name) {
400
- case createTool.name:
401
- toolResult = await this.handler.create(context.sessionId, readCreateInput(args));
402
- break;
403
- case listTool.name:
404
- toolResult = await this.handler.list(context.sessionId);
405
- break;
406
- case cancelTool.name:
407
- toolResult = await this.handler.cancel(context.sessionId, readId(args));
408
- break;
409
- default:
410
- throw new Error(`Unknown channel loop tool: ${String(name)}`);
411
- }
412
- const result = typeof toolResult === "string" ? { text: toolResult } : toolResult;
413
- return {
414
- content: [{ type: "text", text: result.text }],
415
- ...result.isError ? { isError: true } : {}
416
- };
417
- }
418
- };
419
- function readCreateInput(args) {
420
- const cron = args["cron"];
421
- const prompt = args["prompt"];
422
- if (typeof cron !== "string" || cron.trim().length === 0) {
423
- throw new Error("cron must be a non-empty string.");
424
- }
425
- if (typeof prompt !== "string" || prompt.trim().length === 0) {
426
- throw new Error("prompt must be a non-empty string.");
427
- }
428
- const recurring = readRecurring(args["recurring"]);
429
- return {
430
- cron: cron.trim(),
431
- prompt: prompt.trim(),
432
- ...recurring !== void 0 ? { recurring } : {}
433
- };
434
- }
435
- __name(readCreateInput, "readCreateInput");
436
- function readRecurring(value) {
437
- if (typeof value === "boolean")
438
- return value;
439
- if (value === "false" || value === 0)
440
- return false;
441
- if (value === "true" || value === 1)
442
- return true;
443
- return void 0;
444
- }
445
- __name(readRecurring, "readRecurring");
446
- function readId(args) {
447
- const id = args["id"];
448
- if (typeof id !== "string" || id.trim().length === 0) {
449
- throw new Error("id must be a non-empty string.");
450
- }
451
- return id.trim();
452
- }
453
- __name(readId, "readId");
454
-
455
- // packages/channels/base/dist/AcpBridge.js
456
454
  var MID_TURN_QUEUE_DRAIN_METHOD = "craft/drainMidTurnQueue";
455
+ var TODO_STOP_GUARD_CONTINUATION_CLAIM_METHOD = "craft/claimTodoStopGuardContinuation";
457
456
  var ACP_EVENT_LOOP_STALL_RESTART_MS = 5 * 60 * 1e3;
458
457
  var ACP_PERMISSION_RESPONSE_TIMEOUT_MS = 5 * 60 * 1e3;
459
458
  var ACP_EVENT_LOOP_STALL_RE = /^\[perf\] acp agent event loop stall: max=(\d+(?:\.\d+)?)ms/m;
@@ -480,6 +479,8 @@ var AcpBridge = class extends EventEmitter {
480
479
  _availableCommands = [];
481
480
  channelLoopMcpServer;
482
481
  channelLoopToolHandlers = [];
482
+ knownSessionIds = /* @__PURE__ */ new Set();
483
+ sessionBindingTokens = /* @__PURE__ */ new Map();
483
484
  channelLoopMcpRegistered = false;
484
485
  channelLoopMcpRegistration = null;
485
486
  pendingPermissions = /* @__PURE__ */ new Map();
@@ -518,6 +519,8 @@ var AcpBridge = class extends EventEmitter {
518
519
  process.stderr.write(`[AcpBridge] Process exited (code=${code}, signal=${signal})
519
520
  `);
520
521
  this.resolvePendingPermissions();
522
+ this.knownSessionIds.clear();
523
+ this.sessionBindingTokens.clear();
521
524
  this.connection = null;
522
525
  this.child = null;
523
526
  this.emit("disconnected", code, signal);
@@ -556,13 +559,15 @@ var AcpBridge = class extends EventEmitter {
556
559
  });
557
560
  void this.registerChannelLoopMcpServer();
558
561
  }
559
- async newSession(cwd) {
562
+ async newSession(cwd, _options, bindingToken) {
560
563
  const conn = this.ensureConnection();
561
564
  await this.registerChannelLoopMcpServer();
562
565
  const response = await conn.newSession({ cwd, mcpServers: [] });
566
+ this.knownSessionIds.add(response.sessionId);
567
+ this.sessionBindingTokens.set(response.sessionId, bindingToken);
563
568
  return response.sessionId;
564
569
  }
565
- async loadSession(sessionId, cwd) {
570
+ async loadSession(sessionId, cwd, _options, bindingToken) {
566
571
  const conn = this.ensureConnection();
567
572
  await this.registerChannelLoopMcpServer();
568
573
  await conn.loadSession({
@@ -570,6 +575,8 @@ var AcpBridge = class extends EventEmitter {
570
575
  cwd,
571
576
  mcpServers: []
572
577
  });
578
+ this.knownSessionIds.add(sessionId);
579
+ this.sessionBindingTokens.set(sessionId, bindingToken);
573
580
  return sessionId;
574
581
  }
575
582
  async prompt(sessionId, text, options) {
@@ -622,6 +629,19 @@ var AcpBridge = class extends EventEmitter {
622
629
  this.resolvePendingPermissions(sessionId);
623
630
  }
624
631
  }
632
+ async discardSession(sessionId, expectedBindingToken) {
633
+ if (expectedBindingToken !== void 0 && this.sessionBindingTokens.get(sessionId) !== expectedBindingToken) {
634
+ return;
635
+ }
636
+ if (!this.knownSessionIds.delete(sessionId))
637
+ return;
638
+ this.sessionBindingTokens.delete(sessionId);
639
+ this.resolvePendingPermissions(sessionId);
640
+ const conn = this.connection;
641
+ if (!conn || !this.isConnected)
642
+ return;
643
+ await conn.extMethod("qwen/control/session/close", { sessionId });
644
+ }
625
645
  async respondToPermission(requestId, response) {
626
646
  const pending = this.pendingPermissions.get(requestId);
627
647
  if (!pending) {
@@ -638,6 +658,8 @@ var AcpBridge = class extends EventEmitter {
638
658
  }
639
659
  stop() {
640
660
  this.resolvePendingPermissions();
661
+ this.knownSessionIds.clear();
662
+ this.sessionBindingTokens.clear();
641
663
  if (this.child) {
642
664
  this.child.kill();
643
665
  this.child = null;
@@ -814,7 +836,14 @@ var AcpBridge = class extends EventEmitter {
814
836
  return this.handleClientMcpMessage(params);
815
837
  }
816
838
  if (method === MID_TURN_QUEUE_DRAIN_METHOD) {
817
- return { messages: [] };
839
+ return { messages: [], hasQueuedPrompt: false };
840
+ }
841
+ if (method === TODO_STOP_GUARD_CONTINUATION_CLAIM_METHOD) {
842
+ const sessionId = typeof params["sessionId"] === "string" ? params["sessionId"] : "";
843
+ return {
844
+ claimed: this.knownSessionIds.has(sessionId),
845
+ hasQueuedPrompt: false
846
+ };
818
847
  }
819
848
  throw new Error(`Method not found: ${method}`);
820
849
  }
@@ -948,6 +977,10 @@ var DaemonChannelBridge = class extends EventEmitter2 {
948
977
  activePromptControllers = /* @__PURE__ */ new Map();
949
978
  availableCommandsBySession = /* @__PURE__ */ new Map();
950
979
  turnBarriers = /* @__PURE__ */ new Map();
980
+ channelLoopToolHandlers = [];
981
+ registeredChannelLoopMcpSessions = /* @__PURE__ */ new Set();
982
+ channelLoopMcpRegistrations = /* @__PURE__ */ new Map();
983
+ channelLoopMcpServer;
951
984
  connected = false;
952
985
  lifecycleGeneration = 0;
953
986
  latestAvailableCommandsSessionId;
@@ -998,6 +1031,7 @@ var DaemonChannelBridge = class extends EventEmitter2 {
998
1031
  await this.rejectStaleSession(session);
999
1032
  }
1000
1033
  this.attachSession(session, bindingToken);
1034
+ await this.registerChannelLoopMcpForSession(session.sessionId);
1001
1035
  return session.sessionId;
1002
1036
  }
1003
1037
  async loadSession(sessionId, cwd, options, bindingToken) {
@@ -1019,8 +1053,22 @@ var DaemonChannelBridge = class extends EventEmitter2 {
1019
1053
  throw new Error(`Daemon returned session ${session.sessionId} while loading ${sessionId}`);
1020
1054
  }
1021
1055
  this.attachSession(session, bindingToken);
1056
+ await this.registerChannelLoopMcpForSession(session.sessionId);
1022
1057
  return session.sessionId;
1023
1058
  }
1059
+ registerChannelLoopToolHandler(handler) {
1060
+ if (!this.channelLoopToolHandlers.includes(handler)) {
1061
+ this.channelLoopToolHandlers.push(handler);
1062
+ }
1063
+ this.channelLoopMcpServer ??= new ChannelLoopMcpServer({
1064
+ create: /* @__PURE__ */ __name((sessionId, input) => this.resolveChannelLoopToolHandler(sessionId).create(sessionId, input), "create"),
1065
+ list: /* @__PURE__ */ __name((sessionId) => this.resolveChannelLoopToolHandler(sessionId).list(sessionId), "list"),
1066
+ cancel: /* @__PURE__ */ __name((sessionId, id) => this.resolveChannelLoopToolHandler(sessionId).cancel(sessionId, id), "cancel")
1067
+ });
1068
+ for (const sessionId of this.sessions.keys()) {
1069
+ void this.registerChannelLoopMcpForSession(sessionId);
1070
+ }
1071
+ }
1024
1072
  async prompt(sessionId, text, options) {
1025
1073
  const session = this.ensureSession(sessionId);
1026
1074
  if (this.activePrompts.has(sessionId)) {
@@ -1177,7 +1225,7 @@ var DaemonChannelBridge = class extends EventEmitter2 {
1177
1225
  return this.connected;
1178
1226
  }
1179
1227
  attachSession(session, bindingToken) {
1180
- const replacedSession = this.removeSessionBinding(session.sessionId);
1228
+ const replacedSession = this.removeSessionBinding(session.sessionId, false);
1181
1229
  if (replacedSession) {
1182
1230
  void this.releaseSessionClient(replacedSession).catch((error) => {
1183
1231
  this.lastError = error;
@@ -1441,7 +1489,7 @@ var DaemonChannelBridge = class extends EventEmitter2 {
1441
1489
  }
1442
1490
  this.emit("sessionDied", { sessionId, reason });
1443
1491
  }
1444
- removeSessionBinding(sessionId) {
1492
+ removeSessionBinding(sessionId, unregisterChannelLoopMcp = true) {
1445
1493
  const session = this.sessions.get(sessionId);
1446
1494
  if (!session)
1447
1495
  return void 0;
@@ -1466,8 +1514,51 @@ var DaemonChannelBridge = class extends EventEmitter2 {
1466
1514
  this.respondedRequestToSession.delete(requestId);
1467
1515
  }
1468
1516
  }
1517
+ if (unregisterChannelLoopMcp) {
1518
+ this.unregisterChannelLoopMcpForSession(sessionId);
1519
+ }
1469
1520
  return session;
1470
1521
  }
1522
+ async registerChannelLoopMcpForSession(sessionId) {
1523
+ const host = this.options.channelLoopMcpHost;
1524
+ const server = this.channelLoopMcpServer;
1525
+ if (!host || !server || this.registeredChannelLoopMcpSessions.has(sessionId)) {
1526
+ return;
1527
+ }
1528
+ const pending = this.channelLoopMcpRegistrations.get(sessionId);
1529
+ if (pending) {
1530
+ await pending;
1531
+ return;
1532
+ }
1533
+ const registration = host.register(sessionId, (message) => server.handleMessage(message, { sessionId })).then(async () => {
1534
+ if (this.sessions.has(sessionId)) {
1535
+ this.registeredChannelLoopMcpSessions.add(sessionId);
1536
+ } else {
1537
+ await host.unregister(sessionId);
1538
+ }
1539
+ }).catch((error) => {
1540
+ this.lastError = error;
1541
+ }).finally(() => {
1542
+ if (this.channelLoopMcpRegistrations.get(sessionId) === registration) {
1543
+ this.channelLoopMcpRegistrations.delete(sessionId);
1544
+ }
1545
+ });
1546
+ this.channelLoopMcpRegistrations.set(sessionId, registration);
1547
+ await registration;
1548
+ }
1549
+ unregisterChannelLoopMcpForSession(sessionId) {
1550
+ if (!this.registeredChannelLoopMcpSessions.delete(sessionId))
1551
+ return;
1552
+ void this.options.channelLoopMcpHost?.unregister(sessionId).catch((error) => {
1553
+ this.lastError = error;
1554
+ });
1555
+ }
1556
+ resolveChannelLoopToolHandler(sessionId) {
1557
+ const handler = this.channelLoopToolHandlers.find((candidate) => candidate.canHandle?.(sessionId) === true || this.channelLoopToolHandlers.length === 1 && !candidate.canHandle);
1558
+ if (handler)
1559
+ return handler;
1560
+ throw new Error(`No channel loop handler matched session ${sessionId}.`);
1561
+ }
1471
1562
  getStringField(data, field, fallback) {
1472
1563
  return isRecord(data) && typeof data[field] === "string" ? data[field] : fallback;
1473
1564
  }
@@ -4288,6 +4379,7 @@ ${promptText}` : promptText;
4288
4379
  this.router.removeSessionId(sessionId);
4289
4380
  this.instructedSessions.delete(sessionId);
4290
4381
  this.unattendedMemorySessions.delete(sessionId);
4382
+ this.discardRetiredSession(promptBridge, sessionId, `timed-out loop ${jobId}`);
4291
4383
  process.stderr.write(`[${this.name}] retired timed out loop ${jobId} session ${sessionId} after cancel did not settle
4292
4384
  `);
4293
4385
  }
@@ -4298,6 +4390,19 @@ ${promptText}` : promptText;
4298
4390
  clearTimeout(graceTimer);
4299
4391
  }
4300
4392
  }
4393
+ discardRetiredSession(promptBridge, sessionId, reason) {
4394
+ const safeSessionId = sanitizeLogText(sessionId, 64);
4395
+ const safeReason = sanitizeLogText(reason, 128);
4396
+ try {
4397
+ void promptBridge.discardSession?.(sessionId).catch((err) => {
4398
+ process.stderr.write(`[${this.name}] failed to discard ${safeReason} session ${safeSessionId}: ${this.lifecycleError(err)}
4399
+ `);
4400
+ });
4401
+ } catch (err) {
4402
+ process.stderr.write(`[${this.name}] failed to discard ${safeReason} session ${safeSessionId}: ${this.lifecycleError(err)}
4403
+ `);
4404
+ }
4405
+ }
4301
4406
  requestActivePromptCancellation(sessionId, reason = "cancel_command") {
4302
4407
  const active = this.activePrompts.get(sessionId);
4303
4408
  if (!active) {
@@ -4702,6 +4807,7 @@ ${requestList}`);
4702
4807
  } else {
4703
4808
  this.sessionGenerations.delete(id);
4704
4809
  }
4810
+ this.discardRetiredSession(this.bridge, id, "cleared");
4705
4811
  }
4706
4812
  await this.sendThreadMessage(envelope.chatId, envelope.threadId, "Session cleared. The next message starts a fresh conversation.");
4707
4813
  } else {
@@ -6665,6 +6771,7 @@ var PollingChannelBase = class extends ChannelBase {
6665
6771
  export {
6666
6772
  resolvePath,
6667
6773
  getGlobalQwenDir,
6774
+ CHANNEL_LOOP_MCP_SERVER_NAME,
6668
6775
  sanitizeSenderName,
6669
6776
  sanitizePromptText,
6670
6777
  sanitizeLogText,
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  createDebugLogger,
5
5
  isNodeError
6
- } from "./chunk-ATIV6G7N.js";
6
+ } from "./chunk-UHUSJ6X7.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-5O2XNYP6.js";
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  STATUS_SCHEMA_VERSION
5
- } from "./chunk-WZOPR2ZP.js";
5
+ } from "./chunk-R7ZITH3J.js";
6
6
  import {
7
7
  detectRuntime,
8
8
  redactProxyCredentials
9
- } from "./chunk-XM5V2A2E.js";
9
+ } from "./chunk-WZRWHXFE.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  atomicWriteFileSync
5
- } from "./chunk-BOWYL27T.js";
5
+ } from "./chunk-7XATOOE7.js";
6
6
  import {
7
7
  Storage,
8
8
  createDebugLogger
9
- } from "./chunk-ATIV6G7N.js";
9
+ } from "./chunk-UHUSJ6X7.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -15,7 +15,7 @@ import {
15
15
  MODIFIER_CTRL_BIT,
16
16
  MODIFIER_SHIFT_BIT,
17
17
  clipboardHasImage
18
- } from "./chunk-SEWRIH7H.js";
18
+ } from "./chunk-M7OONWYU.js";
19
19
  import {
20
20
  noteInteraction
21
21
  } from "./chunk-KW7NOTN6.js";
@@ -25,17 +25,17 @@ import {
25
25
  import {
26
26
  use_stdin_default,
27
27
  use_stdout_default
28
- } from "./chunk-TXI4LPWT.js";
28
+ } from "./chunk-UWMLWVCA.js";
29
29
  import {
30
30
  require_react
31
31
  } from "./chunk-5QWWOFGG.js";
32
32
  import {
33
33
  KittySequenceOverflowEvent,
34
34
  logKittySequenceOverflow
35
- } from "./chunk-6PQHZ4YW.js";
35
+ } from "./chunk-BWKCTLEJ.js";
36
36
  import {
37
37
  createDebugLogger
38
- } from "./chunk-ATIV6G7N.js";
38
+ } from "./chunk-UHUSJ6X7.js";
39
39
  import {
40
40
  init_esbuild_shims
41
41
  } from "./chunk-5O2XNYP6.js";
@@ -14,7 +14,7 @@ import {
14
14
  init_esbuild_shims();
15
15
  async function getCliVersion() {
16
16
  const pkgJson = await getPackageJson();
17
- return "0.21.0-nightly.20260727.c003e1718";
17
+ return "0.21.0-preview.0";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
20
 
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-OWAK7LMW.js";
6
6
  import {
7
7
  resolveBundleDir
8
- } from "./chunk-G3RJEBAA.js";
8
+ } from "./chunk-HUK2P4RS.js";
9
9
  import {
10
10
  Storage
11
- } from "./chunk-ATIV6G7N.js";
11
+ } from "./chunk-UHUSJ6X7.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -272,15 +272,15 @@ var MUST_TRANSLATE_KEYS = [
272
272
 
273
273
  // import("./locales/**/*.js") in packages/cli/src/i18n/index.ts
274
274
  var globImport_locales_js = __glob({
275
- "./locales/ca.js": () => import("./ca-UBSN3YSM.js"),
276
- "./locales/de.js": () => import("./de-LVJPZWUT.js"),
277
- "./locales/en.js": () => import("./en-7JEDYSBE.js"),
278
- "./locales/fr.js": () => import("./fr-JXF5ONTD.js"),
279
- "./locales/ja.js": () => import("./ja-72VBFAM5.js"),
280
- "./locales/pt.js": () => import("./pt-E4AMXNUG.js"),
281
- "./locales/ru.js": () => import("./ru-OJOR34RM.js"),
282
- "./locales/zh-TW.js": () => import("./zh-TW-JO4Z7CVC.js"),
283
- "./locales/zh.js": () => import("./zh-2MA5UKNJ.js")
275
+ "./locales/ca.js": () => import("./ca-6W3SK7OQ.js"),
276
+ "./locales/de.js": () => import("./de-SY6O76BF.js"),
277
+ "./locales/en.js": () => import("./en-NBK3JKCE.js"),
278
+ "./locales/fr.js": () => import("./fr-4KG5V7UT.js"),
279
+ "./locales/ja.js": () => import("./ja-F3GSQXMF.js"),
280
+ "./locales/pt.js": () => import("./pt-EQ33KWEN.js"),
281
+ "./locales/ru.js": () => import("./ru-7OZAUKGG.js"),
282
+ "./locales/zh-TW.js": () => import("./zh-TW-JYCP7XUA.js"),
283
+ "./locales/zh.js": () => import("./zh-H3YDK5QW.js")
284
284
  });
285
285
 
286
286
  // packages/cli/src/i18n/index.ts