@qwen-code/qwen-code 0.23.3-nightly.20260910.c46cb85cf2 → 0.23.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/bundled/goal-draft/SKILL.md +2 -2
  2. package/bundled/qc-helper/docs/features/channels/dingtalk.md +20 -0
  3. package/bundled/qc-helper/docs/features/channels/overview.md +6 -5
  4. package/bundled/qc-helper/docs/features/goals.md +2 -2
  5. package/bundled/qc-helper/docs/features/hooks.md +13 -14
  6. package/bundled/qc-helper/docs/qwen-serve.md +3 -7
  7. package/chunks/{MaxSizedBox-UZW24XUX.js → MaxSizedBox-D4LW7RZZ.js} +15 -15
  8. package/chunks/{StandaloneSessionPicker-IDK7NAZL.js → StandaloneSessionPicker-ALTTRWUP.js} +33 -33
  9. package/chunks/{acp-startup-profiler-ARO4II44.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  10. package/chunks/{acp-subagent-executor-7TLJGISS.js → acp-subagent-executor-LEUN3N7N.js} +15 -15
  11. package/chunks/{acpAgent-YRCNNIIU.js → acpAgent-BBSW7XZG.js} +68 -258
  12. package/chunks/{agent-SGU5EE7U.js → agent-SQ6OY3QD.js} +9 -9
  13. package/chunks/{agent-headless-JVYBLNLT.js → agent-headless-RI2THRQ7.js} +9 -9
  14. package/chunks/{anthropicContentGenerator-SGIR5IKF.js → anthropicContentGenerator-JSKMKS6V.js} +2 -2
  15. package/chunks/{bridge-YF6NYRPZ.js → bridge-DAFMI72L.js} +17 -17
  16. package/chunks/{ca-MX3WCEEG.js → ca-KC2AISNS.js} +1 -1
  17. package/chunks/{channel-management-service-E4HTMU7T.js → channel-management-service-OWDXVL7R.js} +5 -5
  18. package/chunks/{channel-settings-store-FZ5VKHQD.js → channel-settings-store-4I6JONT7.js} +25 -25
  19. package/chunks/{channel-worker-group-X6WH4XWF.js → channel-worker-group-F2ZZMLNS.js} +6 -6
  20. package/chunks/{channel-worker-manager-SICFJDPJ.js → channel-worker-manager-2SZLJJSJ.js} +6 -6
  21. package/chunks/{channel-worker-supervisor-HSFAKML6.js → channel-worker-supervisor-ZFNWMG6D.js} +4 -4
  22. package/chunks/{chunk-NVIBH7WS.js → chunk-2ALXPGB4.js} +1 -1
  23. package/chunks/{chunk-UBEYS536.js → chunk-2PJRI3EH.js} +3 -3
  24. package/chunks/{chunk-GP47UR3M.js → chunk-2ZN3O5FT.js} +6 -6
  25. package/chunks/{chunk-BI3WSRQE.js → chunk-3BTSSIJO.js} +3 -3
  26. package/chunks/{chunk-PIGUW2U2.js → chunk-3KQBQ6FM.js} +2 -14
  27. package/chunks/{chunk-RJZTX2OF.js → chunk-3UXUOFO6.js} +6 -6
  28. package/chunks/{chunk-HL2DQG3Y.js → chunk-3XLK2QMY.js} +10 -10
  29. package/chunks/{chunk-L3DTX6U4.js → chunk-4ALNJDHL.js} +1 -3
  30. package/chunks/{chunk-KHIBLKNK.js → chunk-53GWJOLP.js} +1 -1
  31. package/chunks/{chunk-LIR7YS2O.js → chunk-5KI7ZDTB.js} +4 -4
  32. package/chunks/{chunk-ZT6EPPBY.js → chunk-6JACAGYH.js} +1 -1
  33. package/chunks/{chunk-DMX7RF6E.js → chunk-6W4HBUA2.js} +1 -1
  34. package/chunks/{chunk-CSHX5ZC4.js → chunk-76RGWKLS.js} +1 -1
  35. package/chunks/{chunk-J5PYQVD2.js → chunk-7APZIRH3.js} +2 -2
  36. package/chunks/{chunk-OOLSYRZ7.js → chunk-7BXXIQG4.js} +4 -4
  37. package/chunks/{chunk-WY4N6KS7.js → chunk-7ICHPMBQ.js} +3 -3
  38. package/chunks/{chunk-KZ2CU2LH.js → chunk-7Q2AXRDJ.js} +1 -1
  39. package/chunks/{chunk-C4NLHK7X.js → chunk-7QYWGTHB.js} +128 -33
  40. package/chunks/{chunk-7XM6KEVW.js → chunk-AC6KDLH3.js} +1 -1
  41. package/chunks/{chunk-GDWE23OR.js → chunk-ALMR3E6Q.js} +3 -3
  42. package/chunks/{chunk-B6BDT4RX.js → chunk-AXTFYDXT.js} +1 -1
  43. package/chunks/{chunk-6EDWSKN4.js → chunk-BV6Q5HMY.js} +2 -2
  44. package/chunks/{chunk-3VPFA6L2.js → chunk-BWAMMKIS.js} +2 -2
  45. package/chunks/{chunk-IFHJIEMN.js → chunk-BWQLXU37.js} +10 -10
  46. package/chunks/{chunk-F2RKL5I2.js → chunk-BZM5U74J.js} +3 -3
  47. package/chunks/{chunk-JOMCZWX7.js → chunk-CUEXOHQH.js} +15 -9
  48. package/chunks/{chunk-CAAMI77K.js → chunk-CXTPVBFA.js} +1 -1
  49. package/chunks/{chunk-ATH66AEU.js → chunk-DAWWT2ID.js} +16 -16
  50. package/chunks/{chunk-MXOALJIL.js → chunk-DT75RKNH.js} +1 -1
  51. package/chunks/{chunk-BHR6IN2X.js → chunk-DYFOSJHU.js} +30 -30
  52. package/chunks/{chunk-KVBNJ4K2.js → chunk-E7LB57MB.js} +2 -2
  53. package/chunks/{chunk-XDQUDARC.js → chunk-EDMXGXAK.js} +7 -4
  54. package/chunks/{chunk-KFGPNCCY.js → chunk-EVTNACMT.js} +4 -4
  55. package/chunks/{chunk-TP2DUOB6.js → chunk-F42YYSCK.js} +2 -2
  56. package/chunks/{chunk-UGS62IR2.js → chunk-GCDXVPFK.js} +3 -3
  57. package/chunks/{chunk-SAWPURIU.js → chunk-GOXQL4YH.js} +2 -2
  58. package/chunks/{chunk-SXEE6PND.js → chunk-GSILBZLN.js} +2 -2
  59. package/chunks/{chunk-BTWGOKHU.js → chunk-HBQ2NXOU.js} +2 -2
  60. package/chunks/{chunk-34ZYDM3F.js → chunk-HBU7EKY4.js} +1 -1
  61. package/chunks/{chunk-T4JVQR7Z.js → chunk-HGAELO7B.js} +2 -2
  62. package/chunks/{chunk-ZHECLGA6.js → chunk-HNLMYDQE.js} +4 -2
  63. package/chunks/{chunk-PMS4FVLY.js → chunk-IL5M5NYD.js} +5 -5
  64. package/chunks/{chunk-HZTXKVSV.js → chunk-IV7GDNKC.js} +1 -1
  65. package/chunks/{chunk-5FFAUU4T.js → chunk-J3TJH52D.js} +1 -1
  66. package/chunks/{chunk-JDEW3V5B.js → chunk-JYKWOREU.js} +1 -1
  67. package/chunks/{chunk-E5GQNSJY.js → chunk-KFZYGSJN.js} +3 -3
  68. package/chunks/{chunk-ZUQVZTWG.js → chunk-KOKPXIAN.js} +3 -3
  69. package/chunks/{chunk-Q6HXLBZF.js → chunk-LDVNJZGH.js} +6 -6
  70. package/chunks/{chunk-VHKOULAI.js → chunk-MF6E7FSA.js} +2 -2
  71. package/chunks/{chunk-F45SKYIQ.js → chunk-MHAADZOZ.js} +3 -3
  72. package/chunks/{chunk-72BGC7RT.js → chunk-MLQNSPRZ.js} +4 -4
  73. package/chunks/{chunk-L2KF7HUE.js → chunk-MSNHNAQZ.js} +1 -1
  74. package/chunks/{chunk-JV5YASQA.js → chunk-N7VWZDWW.js} +55 -155
  75. package/chunks/{chunk-Q2XLNLAV.js → chunk-NE624IVP.js} +1 -1
  76. package/chunks/{chunk-CGKEUUYG.js → chunk-NFYEQRLG.js} +1 -1
  77. package/chunks/{chunk-FGRDUDCI.js → chunk-NHCZJQE4.js} +5 -5
  78. package/chunks/{chunk-TWC3FHUI.js → chunk-NHJKAR6E.js} +3 -3
  79. package/chunks/{chunk-VTBPMLRO.js → chunk-NJQTG2G3.js} +9 -9
  80. package/chunks/{chunk-LEGNDA46.js → chunk-NLNQNBZ2.js} +1 -1
  81. package/chunks/{chunk-QPWZX4ZV.js → chunk-NMCDMLHL.js} +12 -12
  82. package/chunks/{chunk-WS7MOFK6.js → chunk-NMRCXKQ5.js} +3 -3
  83. package/chunks/{chunk-YIU5PEAT.js → chunk-NOAG7N22.js} +1 -1
  84. package/chunks/{chunk-C75BXMPM.js → chunk-NOO4QFXM.js} +3 -1
  85. package/chunks/{chunk-B2TGBZXY.js → chunk-NRXWJXJ4.js} +2 -2
  86. package/chunks/{chunk-J2RNOJRV.js → chunk-OLTN767L.js} +2 -2
  87. package/chunks/{chunk-AWMJRE5N.js → chunk-OX7IZ2G5.js} +4 -4
  88. package/chunks/{chunk-O3MKRN2I.js → chunk-POC3YMHG.js} +1 -1
  89. package/chunks/{chunk-YKK2XXHF.js → chunk-PSPAM24S.js} +0 -4
  90. package/chunks/{chunk-YS2ZJSOA.js → chunk-Q2LVVIKF.js} +11 -28
  91. package/chunks/{chunk-AW2SIT3B.js → chunk-Q5BD56BW.js} +2 -2
  92. package/chunks/{chunk-LAP7X6EC.js → chunk-QMUYLYT5.js} +1 -1
  93. package/chunks/{chunk-ONGZNOIP.js → chunk-R4Q2PEFV.js} +1 -1
  94. package/chunks/{chunk-FRVV5SSD.js → chunk-RLLRJJDR.js} +2 -2
  95. package/chunks/{chunk-6EOMQPTS.js → chunk-RWVD5RRY.js} +3 -3
  96. package/chunks/{chunk-FYZ5NZ3V.js → chunk-RZHU3K6M.js} +20 -2
  97. package/chunks/{chunk-CUK6F5UF.js → chunk-S6Q6Q4P2.js} +1 -1
  98. package/chunks/{chunk-SNZWDV67.js → chunk-SBRX4BDI.js} +1 -1
  99. package/chunks/{chunk-5ZJ3KK5J.js → chunk-SODMFNAR.js} +4 -4
  100. package/chunks/{chunk-VID4BW52.js → chunk-SSGAAWLY.js} +28 -28
  101. package/chunks/{chunk-LY2GK2PR.js → chunk-SYLECP23.js} +4 -4
  102. package/chunks/{chunk-BQOP3K76.js → chunk-TWUKBNWM.js} +1 -1
  103. package/chunks/{chunk-5FKZ7KFQ.js → chunk-UKZ45TJL.js} +3 -3
  104. package/chunks/{chunk-7XVQNDFB.js → chunk-V2P3DOQR.js} +1 -1
  105. package/chunks/{chunk-WXFK4MH7.js → chunk-VG3Q2NC4.js} +5 -25
  106. package/chunks/{chunk-74JEYK2C.js → chunk-VZUCTJ2P.js} +9 -9
  107. package/chunks/{chunk-VLZOU6UH.js → chunk-W5FIP7FC.js} +3 -3
  108. package/chunks/{chunk-6NONRGYX.js → chunk-X6K77VHC.js} +1 -1
  109. package/chunks/{chunk-FGV2QEAO.js → chunk-X7UJKOHZ.js} +6 -4
  110. package/chunks/{chunk-7ZVIGDZF.js → chunk-XBZTAGB7.js} +1 -1
  111. package/chunks/{chunk-6UK77U7D.js → chunk-XGYHNWL3.js} +3 -3
  112. package/chunks/{chunk-ZGQIIGNQ.js → chunk-YBUMTY7B.js} +1 -1
  113. package/chunks/{chunk-JEMDIKGQ.js → chunk-YQHLFCPU.js} +1 -1
  114. package/chunks/{chunk-7ZKDPTYO.js → chunk-Z3GF56ME.js} +2 -2
  115. package/chunks/{chunk-IOUBOANU.js → chunk-ZU47FBOC.js} +1 -1
  116. package/chunks/{config-utils-S5LFS4RN.js → config-utils-L6KLDYIV.js} +19 -19
  117. package/chunks/{contextCommand-XXKZMMSQ.js → contextCommand-UYEH7NIU.js} +17 -17
  118. package/chunks/{core-runtime-YGUA42AZ.js → core-runtime-NVHT3Z3V.js} +15 -15
  119. package/chunks/{create-sub-session-SEK6KCYR.js → create-sub-session-YWASE5VH.js} +15 -15
  120. package/chunks/{daemon-git-worktree-guard-3AWINPPX.js → daemon-git-worktree-guard-FOW4RQSK.js} +15 -15
  121. package/chunks/{daemon-status-provider-RTKHKUFJ.js → daemon-status-provider-O5KQZYMP.js} +21 -21
  122. package/chunks/{daemon-trust-policy-6YQOC7B6.js → daemon-trust-policy-3ATXEON7.js} +21 -21
  123. package/chunks/{daemon-trust-policy-monitor-EN5L23GS.js → daemon-trust-policy-monitor-7MCNDNEC.js} +21 -21
  124. package/chunks/{de-OOLZAU2U.js → de-UU2YTO37.js} +1 -1
  125. package/chunks/{deferred-core-runtime-JPLQRVZO.js → deferred-core-runtime-JK5IXL5K.js} +15 -15
  126. package/chunks/{dist-JCXKXRH6.js → dist-AHJYPSJL.js} +5 -2
  127. package/chunks/{dist-3BJVSJ7D.js → dist-AIKC5E5P.js} +630 -9
  128. package/chunks/{dist-HX2LG76F.js → dist-F2DVGTL3.js} +29 -9
  129. package/chunks/{dist-J7PDFK53.js → dist-GWNQVPZT.js} +27 -8
  130. package/chunks/{dist-65Q3TRLH.js → dist-H6G3K26N.js} +34 -14
  131. package/chunks/{dist-SBK33YLC.js → dist-KJGRVIGJ.js} +33 -2
  132. package/chunks/{dist-WMFHZG3R.js → dist-KLZ7XGEQ.js} +4 -1
  133. package/chunks/{dist-LHGMHIDK.js → dist-ZA52JXAS.js} +5 -1
  134. package/chunks/{dist-QPTIRE3U.js → dist-ZXTZTE54.js} +11 -3
  135. package/chunks/{edit-QXJZIWRQ.js → edit-SY35KYIE.js} +9 -9
  136. package/chunks/{en-7BZ2OZKH.js → en-CAJHTIQT.js} +1 -1
  137. package/chunks/{enterPlanMode-2ITCVQ5N.js → enterPlanMode-HXX6KQJR.js} +9 -9
  138. package/chunks/{environment-URPO5ORZ.js → environment-DKXHG4HB.js} +17 -17
  139. package/chunks/{errors-TDUYLEKI.js → errors-ADY7LQJJ.js} +17 -17
  140. package/chunks/{exitPlanMode-RA7KMUEW.js → exitPlanMode-HSK2CQI6.js} +9 -9
  141. package/chunks/{fast-path-Q2JYP64P.js → fast-path-U636VWN2.js} +3 -3
  142. package/chunks/{fast-path-settings-GTHZLVSS.js → fast-path-settings-V7MI7EZJ.js} +1 -1
  143. package/chunks/{fr-JJWM2HUS.js → fr-HKNWVXRJ.js} +1 -1
  144. package/chunks/{glob-VHSV4BKE.js → glob-GUGGTH5L.js} +9 -9
  145. package/chunks/{goal-tools-5FIE56CK.js → goal-tools-PXYRSQGX.js} +11 -15
  146. package/chunks/{handleAutoUpdate-7FZFLKNZ.js → handleAutoUpdate-5KHS4HIN.js} +18 -18
  147. package/chunks/{i18n-NTFQDWKR.js → i18n-KSGKMUPT.js} +16 -16
  148. package/chunks/{image-gen-TF3IQWSH.js → image-gen-OCCR2WWU.js} +4 -4
  149. package/chunks/{initializer-LB3T635H.js → initializer-YYT5XEZF.js} +21 -21
  150. package/chunks/{installationInfo-KRO433ZG.js → installationInfo-UNSBPYW2.js} +15 -15
  151. package/chunks/{ja-L67TXFDJ.js → ja-GJS5RZGU.js} +1 -1
  152. package/chunks/{list-NEP3WPZ7.js → list-YL6LDQKQ.js} +24 -24
  153. package/chunks/{llm-AZEJEIAD.js → llm-XGGLBGPH.js} +57 -57
  154. package/chunks/{llm-content-generator-KWXFHBR3.js → llm-content-generator-ZHQQT5W7.js} +3 -3
  155. package/chunks/{loadedSettingsAdapter-NZORJLSD.js → loadedSettingsAdapter-3DXLASK7.js} +21 -21
  156. package/chunks/{loggingContentGenerator-NGHVU6AK.js → loggingContentGenerator-V72OCCJO.js} +10 -10
  157. package/chunks/{managed-npm-update-3LHNBEAG.js → managed-npm-update-HV5LPZH2.js} +15 -15
  158. package/chunks/{mcp-4SWJKDX7.js → mcp-IYVSIW6O.js} +21 -21
  159. package/chunks/{monitor-V5EFBZC7.js → monitor-TLBNM4MV.js} +9 -9
  160. package/chunks/{nonInteractiveCli-5UFUBUAT.js → nonInteractiveCli-LSJSQ2W4.js} +57 -57
  161. package/chunks/{notebook-edit-ATV46KWD.js → notebook-edit-OSPOLZP6.js} +9 -9
  162. package/chunks/{openaiContentGenerator-BKTO5QJK.js → openaiContentGenerator-BE4S5TRD.js} +6 -6
  163. package/chunks/{pidfile-JAIOWPI3.js → pidfile-H32FEPWA.js} +15 -15
  164. package/chunks/{processUtils-TCQH3LVD.js → processUtils-SSLIPDEA.js} +2 -2
  165. package/chunks/{prompt-terminal-ledger-BYXHEUHX.js → prompt-terminal-ledger-I5SLL6UF.js} +16 -16
  166. package/chunks/{pt-77SBDL4B.js → pt-FXMYXEUV.js} +1 -1
  167. package/chunks/{qwenContentGenerator-K5TJK75P.js → qwenContentGenerator-TMQC623Z.js} +11 -11
  168. package/chunks/{qwenOAuth2-NOXRK323.js → qwenOAuth2-3ZRQHHTC.js} +4 -4
  169. package/chunks/{read-file-DL7GNZD5.js → read-file-T2QAIZE2.js} +2 -2
  170. package/chunks/{resumeHistoryUtils-OYKXZ4YO.js → resumeHistoryUtils-QLKDH5GY.js} +19 -19
  171. package/chunks/{ripGrep-EOUMIU4K.js → ripGrep-YGWL7KCV.js} +3 -3
  172. package/chunks/{ru-UYWHKWF2.js → ru-RMHURE5U.js} +1 -1
  173. package/chunks/{run-qwen-serve-PPTGWC5B.js → run-qwen-serve-26KZDECC.js} +89 -231
  174. package/chunks/{runtime-5RO22P2N.js → runtime-BMEIVDDG.js} +26 -26
  175. package/chunks/{scheduled-tasks-YGERFWLZ.js → scheduled-tasks-NCFPP6VQ.js} +19 -19
  176. package/chunks/{scheduler-S6WU6M3C.js → scheduler-47TVMUVN.js} +17 -17
  177. package/chunks/{serve-HT4WOCWS.js → serve-KL3G6LQQ.js} +22 -22
  178. package/chunks/{server-SWXVPRCS.js → server-LBPYXZ5G.js} +55 -66
  179. package/chunks/{session-6DSFUOMO.js → session-YG6742LO.js} +58 -58
  180. package/chunks/{session-attachments-root-SOZCTQWW.js → session-attachments-root-OUBQDYC4.js} +15 -15
  181. package/chunks/{session-pr-refresh-F7XUBQBH.js → session-pr-refresh-EKGMYNAW.js} +18 -18
  182. package/chunks/{settings-SWQH36PO.js → settings-DDNHJX2L.js} +20 -20
  183. package/chunks/{shell-XUQL6EYV.js → shell-KUCXWITU.js} +9 -9
  184. package/chunks/{skill-HNRDD54C.js → skill-JQLKPNWZ.js} +2 -2
  185. package/chunks/{skill-settings-JU72PCII.js → skill-settings-XERQCUXZ.js} +20 -20
  186. package/chunks/{spawnChannel-7ZVM3GBU.js → spawnChannel-GQ45QFGB.js} +15 -15
  187. package/chunks/{standalone-update-64JQY2LX.js → standalone-update-PRF3ILGZ.js} +17 -17
  188. package/chunks/{start-opentui-ui-RSLBXESU.js → start-opentui-ui-JDSOZE3N.js} +62 -67
  189. package/chunks/{startInteractiveUI-ZDPHD7XE.js → startInteractiveUI-RRW3JVHN.js} +69 -85
  190. package/chunks/{team-create-U52VYSNO.js → team-create-5DRLOLOE.js} +9 -9
  191. package/chunks/{team-plan-approval-IQ4ADQIK.js → team-plan-approval-MWSGAL5T.js} +9 -9
  192. package/chunks/{terminal-image-renderer-ZEMF7LB2.js → terminal-image-renderer-H7PD4FQW.js} +15 -15
  193. package/chunks/{theme-manager-DK2S2SOX.js → theme-manager-7AV73D6R.js} +15 -15
  194. package/chunks/{tool-search-6U4OQG7K.js → tool-search-UGYTBLUV.js} +2 -6
  195. package/chunks/{total-session-admission-BOARHBZU.js → total-session-admission-JIHSTJ5S.js} +17 -17
  196. package/chunks/{trustedFolders-GKQZXZSV.js → trustedFolders-5VCBXFOP.js} +16 -16
  197. package/chunks/{update-relaunch-GLACF7PX.js → update-relaunch-4LF3APCV.js} +5 -5
  198. package/chunks/{updateCheck-NLBSZB4Q.js → updateCheck-4T3WUE5F.js} +17 -17
  199. package/chunks/{useAutoAcceptIndicator-3X3BYU7H.js → useAutoAcceptIndicator-UMGB64Z6.js} +23 -23
  200. package/chunks/{validateNonInterActiveAuth-NE3JLOIR.js → validateNonInterActiveAuth-GFJ72U2C.js} +54 -54
  201. package/chunks/{version-6H5YAT4N.js → version-EAAZN4T2.js} +1 -1
  202. package/chunks/{web-fetch-RWSO7TTN.js → web-fetch-VRU3A2NI.js} +5 -5
  203. package/chunks/{web-search-DADI3LV5.js → web-search-NEGYQNDJ.js} +319 -376
  204. package/chunks/{workflow-LPGCZCIT.js → workflow-UHPFALVZ.js} +10 -10
  205. package/chunks/{workspace-providers-status-QBRBEFTO.js → workspace-providers-status-AEYISSU2.js} +23 -23
  206. package/chunks/{workspace-registration-store-WUKTMJPW.js → workspace-registration-store-A7RGKW62.js} +1 -1
  207. package/chunks/{workspace-registry-CJV7KVGF.js → workspace-registry-C2NGE6SD.js} +17 -17
  208. package/chunks/{workspace-runtime-coordinator-7LYMFMFF.js → workspace-runtime-coordinator-QKMZ24YF.js} +18 -20
  209. package/chunks/{workspace-service-HWXZSA4J.js → workspace-service-RQTTAGGC.js} +24 -24
  210. package/chunks/{workspace-skills-status-D6QXUWCC.js → workspace-skills-status-5HWZU3HX.js} +21 -21
  211. package/chunks/{workspace-trust-reconciler-VZX7G7CZ.js → workspace-trust-reconciler-KFWATZUU.js} +23 -23
  212. package/chunks/{write-file-KKHV26YV.js → write-file-DPVB2SBQ.js} +10 -10
  213. package/chunks/{zh-J2GLI64H.js → zh-S5V3Z5CR.js} +1 -1
  214. package/chunks/{zh-TW-TBAICUJQ.js → zh-TW-2K2WRFPY.js} +1 -1
  215. package/chunks/{zoom-image-OG7X7KAA.js → zoom-image-S7AWLAPC.js} +2 -2
  216. package/cli.js +13 -13
  217. package/export-transcript-document.js +1 -1
  218. package/locales/ca.js +2 -2
  219. package/locales/de.js +2 -2
  220. package/locales/en.js +2 -2
  221. package/locales/fr.js +2 -2
  222. package/locales/ja.js +2 -2
  223. package/locales/pt.js +2 -2
  224. package/locales/ru.js +2 -2
  225. package/locales/zh-TW.js +2 -2
  226. package/locales/zh.js +2 -2
  227. package/package.json +3 -3
  228. package/web-shell/assets/{abnfDiagram-VCTEODGH-NT0lTLRG.js → abnfDiagram-VCTEODGH-nU24rpIE.js} +1 -1
  229. package/web-shell/assets/{arc-DDqnIMMx.js → arc-D1hTu8QI.js} +1 -1
  230. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DfYghE3W.js → architectureDiagram-5GKGNRK7-B_fgkKe7.js} +1 -1
  231. package/web-shell/assets/{blockDiagram-NRAW4CY4-DlqJIx5c.js → blockDiagram-NRAW4CY4-C3pddUNg.js} +1 -1
  232. package/web-shell/assets/{c4Diagram-UCG6FXSJ-CinqLGU4.js → c4Diagram-UCG6FXSJ-kEFoC1ei.js} +1 -1
  233. package/web-shell/assets/channel-Blod4z1X.js +1 -0
  234. package/web-shell/assets/{chunk-2Q5K7J3B-CsjJX5M7.js → chunk-2Q5K7J3B-DbT9wS7j.js} +1 -1
  235. package/web-shell/assets/{chunk-5VM5RSS4-CaVb2tdH.js → chunk-5VM5RSS4-CNbULt6O.js} +1 -1
  236. package/web-shell/assets/{chunk-F27PBJKO-CRyErlzW.js → chunk-F27PBJKO-CbQRy4Tb.js} +1 -1
  237. package/web-shell/assets/{chunk-G27WJ6UU-7I79DZCf.js → chunk-G27WJ6UU-CVbXTxYk.js} +1 -1
  238. package/web-shell/assets/{chunk-JWPE2WC7-Dz4cac5F.js → chunk-JWPE2WC7-D89c_BXy.js} +1 -1
  239. package/web-shell/assets/{chunk-LCL6LL3I-Ls24Derb.js → chunk-LCL6LL3I-B7-I_9KB.js} +1 -1
  240. package/web-shell/assets/{chunk-POPQ4Y6H-JzYe4qx7.js → chunk-POPQ4Y6H-DcLQFzS4.js} +1 -1
  241. package/web-shell/assets/{chunk-SVP7TREG-BxDwesA-.js → chunk-SVP7TREG-DyBb2Axj.js} +1 -1
  242. package/web-shell/assets/{chunk-XXDRQBXY-CW4hjgWc.js → chunk-XXDRQBXY-BIA0eb5B.js} +1 -1
  243. package/web-shell/assets/classDiagram-DTDB5LWJ-D6hFDMqb.js +1 -0
  244. package/web-shell/assets/classDiagram-v2-JRS7N3AN-D6hFDMqb.js +1 -0
  245. package/web-shell/assets/{cose-bilkent-JH36ORCC-DxikE9iF.js → cose-bilkent-JH36ORCC-Db2FYN85.js} +1 -1
  246. package/web-shell/assets/{cynefin-OW5HDTMX-CvVsIkVN.js → cynefin-OW5HDTMX-i4GwmBVy.js} +1 -1
  247. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CDHkk3wq.js → cynefinDiagram-5FMLGOSQ-LENf_IUy.js} +1 -1
  248. package/web-shell/assets/{dagre-3AP2YEHR-BgLdkVLT.js → dagre-3AP2YEHR-CF9XVrD9.js} +1 -1
  249. package/web-shell/assets/{diagram-S7CK7UJ4-DP43cGhe.js → diagram-S7CK7UJ4-DD5PJfSm.js} +1 -1
  250. package/web-shell/assets/{diagram-UQ7AKVKN-BWrZYhoT.js → diagram-UQ7AKVKN-CjD_sBMj.js} +1 -1
  251. package/web-shell/assets/{diagram-VSXAHHWV-B80wjH_n.js → diagram-VSXAHHWV-U5WwMqyA.js} +1 -1
  252. package/web-shell/assets/{diagram-VX7I27RA-DPpKmDsY.js → diagram-VX7I27RA-BujpHJJf.js} +1 -1
  253. package/web-shell/assets/{diagram-Z3DM3KII-kaEBNbNU.js → diagram-Z3DM3KII-3ZLtKEXo.js} +1 -1
  254. package/web-shell/assets/{ebnfDiagram-PWID7BFC-1-qbEZvk.js → ebnfDiagram-PWID7BFC-BGpiquRm.js} +1 -1
  255. package/web-shell/assets/{erDiagram-SSCWMZ5O-CrK2gMkV.js → erDiagram-SSCWMZ5O-D0besu_U.js} +1 -1
  256. package/web-shell/assets/{flowDiagram-A5DVABFB-Dic2xofW.js → flowDiagram-A5DVABFB-9DwDuIyr.js} +1 -1
  257. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DJko8vT7.js → ganttDiagram-EL5Y4UJY-CNlsAeNr.js} +1 -1
  258. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DxsQ-bHT.js → gitGraphDiagram-WWUBYQGX-C_pPFiTR.js} +1 -1
  259. package/web-shell/assets/{index-t7VBrUeD.js → index-BYWs4JWq.js} +1 -1
  260. package/web-shell/assets/{index-DY8CxdBr.js → index-D3YS6KuJ.js} +152 -152
  261. package/web-shell/assets/{infoDiagram-RXCK75RN-DcRUJbNi.js → infoDiagram-RXCK75RN-Bpai64Ll.js} +1 -1
  262. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CUPw-2_e.js → ishikawaDiagram-5VMMS53U-ktpJFq4r.js} +1 -1
  263. package/web-shell/assets/{journeyDiagram-EYS64GPL-yOHhZxkW.js → journeyDiagram-EYS64GPL-iz_DKgFX.js} +1 -1
  264. package/web-shell/assets/{kanban-definition-3QL26DDD-CFUGBbqz.js → kanban-definition-3QL26DDD-m_gG00Yt.js} +1 -1
  265. package/web-shell/assets/{layout-BoilNfBU.js → layout-qEvKgnvU.js} +1 -1
  266. package/web-shell/assets/{linear-DOuHaPrl.js → linear-C6lklGdq.js} +1 -1
  267. package/web-shell/assets/{mermaid.core-1G1fXWda.js → mermaid.core-DSCYB_2P.js} +6 -6
  268. package/web-shell/assets/{mindmap-definition-FBJOCRG2-B8BhkrOX.js → mindmap-definition-FBJOCRG2-DRQbT8w-.js} +1 -1
  269. package/web-shell/assets/{pegDiagram-XKGWAZYB-CipC5K1D.js → pegDiagram-XKGWAZYB-BhD0q0i6.js} +1 -1
  270. package/web-shell/assets/{pieDiagram-E7YTZNPT-CHBDFDUJ.js → pieDiagram-E7YTZNPT-BvIGQCSd.js} +1 -1
  271. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-_iiBkoZO.js → quadrantDiagram-AXDQQJYC-BDQtfpU-.js} +1 -1
  272. package/web-shell/assets/{railroadDiagram-O6MQD6OU-Cx1peHDi.js → railroadDiagram-O6MQD6OU-E1g2KIFK.js} +1 -1
  273. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CBRiPbdQ.js → requirementDiagram-EFPCY7ZU-CuerYJOe.js} +1 -1
  274. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-TT6GcHaZ.js → sankeyDiagram-P5KCCOFB-CqWyCZGA.js} +1 -1
  275. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-CWP42PNb.js → sequenceDiagram-WJ2MYXX4-B-YWb8x4.js} +1 -1
  276. package/web-shell/assets/{sizeCapture-X5ZJPWSS-Bp94roEG.js → sizeCapture-X5ZJPWSS-BB7YY4Tl.js} +1 -1
  277. package/web-shell/assets/{stateDiagram-HBIQ2CUA-0ftrzTAy.js → stateDiagram-HBIQ2CUA-C8LDpNHS.js} +1 -1
  278. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C4CbdvGa.js +1 -0
  279. package/web-shell/assets/{swimlanes-XN3QIQJK-D-FsenYJ.js → swimlanes-XN3QIQJK-D94vOoxZ.js} +1 -1
  280. package/web-shell/assets/swimlanesDiagram-VK2B7HYN--QNSIOC8.js +8 -0
  281. package/web-shell/assets/{timeline-definition-24CTP7MA-Ctvrj28y.js → timeline-definition-24CTP7MA-C9C8uEYm.js} +1 -1
  282. package/web-shell/assets/{vennDiagram-4TSXK5OY-5DZncjOt.js → vennDiagram-4TSXK5OY-CYzMHbVW.js} +1 -1
  283. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-jZjYwPY7.js → wardleyDiagram-VM6X3IG4-G9nhtLES.js} +1 -1
  284. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-Ci6Q2C2_.js → xychartDiagram-S5SC5T6Z-ruD2Wjhg.js} +1 -1
  285. package/web-shell/index.html +1 -1
  286. package/web-shell/assets/channel-BHGoSkEv.js +0 -1
  287. package/web-shell/assets/classDiagram-DTDB5LWJ-E47Xnn15.js +0 -1
  288. package/web-shell/assets/classDiagram-v2-JRS7N3AN-E47Xnn15.js +0 -1
  289. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-PgAST0dK.js +0 -1
  290. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BcWcB5bj.js +0 -8
@@ -114,10 +114,10 @@ Then hand off, and nothing else:
114
114
 
115
115
  **If the `propose_goal` tool is available and no Goal is active**, call it with the objective on one line. The user approves or declines it in a dialog; only their approval sets the Goal. If they decline you will not be told why: stop, do not ask about it, and do not propose the same or a reworded objective again. After approval, acknowledge it in one sentence and end the turn — the Goal runtime starts the first Goal turn on its own.
116
116
 
117
- **Otherwise** (a client without Goal proposal support, headless, the tool is disabled, or a Goal is active), print:
117
+ **Otherwise** (Web Shell or another ACP client, headless, the tool is disabled, or a Goal is active), print:
118
118
 
119
119
  1. The objective in a fenced code block.
120
120
  2. One line the user can run as-is: `/goal set <objective on one line>` (or `/goal edit …` when tightening the active goal). Print it as plain text with no code markers, so it can be copied verbatim.
121
- 3. One sentence explaining that the draft has not been applied and the user must run the command to apply it; include any `[ASSUMPTION]` items. Do not promise a dialog when the tool is unavailable.
121
+ 3. One sentence explaining that the draft has not been applied and the user must run the command to apply it; include any `[ASSUMPTION]` items. Do not promise a dialog in Web Shell or other ACP sessions.
122
122
 
123
123
  Do not run /goal yourself. Do not begin the task. Stop and wait for the user.
@@ -111,6 +111,26 @@ Background Agent output is sent as soon as each response segment is available.
111
111
  Every message is labeled with the Agent name so concurrent work remains
112
112
  attributable.
113
113
 
114
+ To buffer each Agent's notification turn and send it as one labeled message,
115
+ enable aggregation for the DingTalk channel in `settings.json`:
116
+
117
+ ```json
118
+ {
119
+ "channels": {
120
+ "my-dingtalk": {
121
+ "type": "dingtalk",
122
+ "clientId": "$DINGTALK_CLIENT_ID",
123
+ "clientSecret": "$DINGTALK_CLIENT_SECRET",
124
+ "aggregateBackgroundAgentResponses": true
125
+ }
126
+ }
127
+ }
128
+ ```
129
+
130
+ Aggregation is disabled by default. A partial labeled message is sent if the
131
+ Agent turn is interrupted, fails before producing a final response, or does
132
+ not finish within ten minutes.
133
+
114
134
  ## Running
115
135
 
116
136
  ```bash
@@ -63,6 +63,7 @@ Channels are configured under the `channels` key in `settings.json`. Each channe
63
63
  | `allowedUsers` | No | List of user IDs allowed to use the bot (used by `allowlist` and `pairing` policies) |
64
64
  | `sessionScope` | No | How sessions are scoped: `user` (default), `chat_thread`, or `single`. Legacy `thread` remains compatible when already configured but is not offered for new Web Shell configurations |
65
65
  | `multiSession` | No | Retain up to eight owner-scoped named tasks in one chat. Requires daemon-managed mode, `sessionScope: "user"`, no webhooks or group-history backfill, and no enabled Channel loops |
66
+ | `messagePrefix` | No | Only dispatch user messages that begin with this exact, case-sensitive prefix after any leading `@mentions`; the prefix and following whitespace are removed before dispatch |
66
67
  | `cwd` | No | Working directory for the agent. Defaults to the current directory |
67
68
  | `approvalMode` | No | Tool approval mode for channel sessions. Unattended webhook tasks require `yolo`; the setting applies to every session on the channel |
68
69
  | `instructions` | No | Custom instructions prepended to the first message of each session |
@@ -73,6 +74,10 @@ Channels are configured under the `channels` key in `settings.json`. Each channe
73
74
  | `groups` | No | Per-group settings. Keys are group chat IDs or `"*"` for defaults. See [Group Chats](#group-chats) |
74
75
  | `dispatchMode` | No | What happens when you send a message while the bot is busy: `steer` (default), `collect`, or `followup`. See [Dispatch Modes](#dispatch-modes) |
75
76
 
77
+ When `messagePrefix` is set, every user-authored message must begin with the prefix and a non-empty payload, for example `/review inspect #123`. Only the prefix and the mentions ahead of it are removed; a mention the user typed after the prefix reaches the agent unchanged. Shared and agent commands use the same rule (`/review /help`, `/review /clear`, and so on). Telegram's registered command-menu actions remain available without the prefix — unless the configured prefix is itself one of them, in which case the prefix wins and that command has to be sent prefixed too (`/new /new`). Attachments need a matching caption when the platform supports one; captionless Telegram, Feishu, WeChat, DingTalk and WeCom media messages continue to run, and their placeholder text is never quoted back as group history. Native todos, webhooks, and provider-generated assignment or review-request events also continue to run without a prefix because they are system events rather than chat messages.
78
+
79
+ Two behaviours are deliberate and worth knowing before you turn the prefix on. A voice message whose transcript DingTalk or WeCom fills in counts as text the user spoke, so it must carry the prefix like any other message and is dropped otherwise — only an untranscribed voice note runs as captionless media. And the prefix is checked before pairing, so first contact from an unknown sender or an unapproved group has to carry the prefix as well; without that ordering every unprefixed message in a busy group would draw a pairing reply, which is exactly the noise the prefix exists to suppress. Tell new users the prefix out of band, or leave pairing channels unprefixed.
80
+
76
81
  ### Sender Policy
77
82
 
78
83
  Controls who can interact with the bot:
@@ -519,11 +524,7 @@ qwen channel status --daemon-url http://127.0.0.1:4170 --token secret
519
524
  qwen channel stop --daemon-url http://127.0.0.1:4170 --token secret
520
525
  ```
521
526
 
522
- This mode starts workspace-grouped channel worker processes owned by `qwen serve`. Workers connect back to the daemon through the SDK and use the same channel adapters. They are separate from the daemon process, so a channel adapter crash does not crash the daemon. An explicit `--channel` selection takes precedence and fails daemon startup if it cannot become ready. On a flagless boot, the trusted primary workspace's `serve.channels` setting is restored. Secondary workspaces do not independently restore their own `serve.channels`. Without either source, the daemon does not load channel adapters or reserve the lease until the first `qwen channel set`.
523
-
524
- Automatic restore skips invalid startup settings and validation or lease failures that occur before workers start, while preserving unrelated settings. After a worker startup fails, the daemon continues only once cleanup succeeds. A global runtime startup timeout or an unconfirmed worker stop still follows the normal startup-failure path; the service lease remains held while worker termination is unconfirmed. Check the daemon log for messages identifying `serve.channels` when a channel does not restore.
525
-
526
- Stored startup names must be non-empty, have no leading or trailing whitespace, and contain no unsafe control or invisible characters. Invalid entries are skipped individually and logged by their array index. Startup does not rename instances or rewrite the configuration. The channel startup toggle reflects the saved setting; runtime state shows whether the channel is running.
527
+ This mode starts workspace-grouped channel worker processes owned by `qwen serve`. Workers connect back to the daemon through the SDK and use the same channel adapters. They are separate from the daemon process, so a channel adapter crash does not crash the daemon. A daemon started without `--channel` does not load channel adapters or reserve the channel-service PID lease until the first `qwen channel set`.
527
528
 
528
529
  `qwen serve --channel` is not the same service as `qwen channel start`. Standalone `qwen channel start` still uses the ACP-backed channel service and can run channel configs with different `cwd` values. Daemon-managed channels require every selected channel's `cwd` to resolve to a workspace registered by the daemon. In multi-workspace mode, a selection replacement keeps workers for workspaces whose ordered channel list did not change; `all` remains primary-workspace-only.
529
530
 
@@ -73,13 +73,13 @@ For an audit, completion means covering the agreed scenarios and reporting evide
73
73
 
74
74
  If a success criterion, command, input path, or essential decision cannot be established, the skill returns a draft marked "Needs clarification" with `<TODO: …>` items. It does not offer that draft for approval or print a runnable `/goal set` or `/goal edit` command. Nonessential defaults are marked `[ASSUMPTION]`; they do not stand in for missing success criteria.
75
75
 
76
- Once the objective is ready, an interactive terminal or Web Shell session can show the `propose_goal` approval dialog described below. Clients without Goal proposal support, headless runs, sessions with the tool disabled, and sessions with an active Goal receive a command to run manually instead. The hand-off says that the draft has not been applied. The skill never starts the work itself, and nothing is set without your approval.
76
+ Once the objective is ready, an interactive terminal session can show the `propose_goal` approval dialog described below. Web Shell and other ACP clients, headless runs, sessions with the tool disabled, and sessions with an active Goal receive a command to run manually instead. The hand-off says that the draft has not been applied. The skill never starts the work itself, and nothing is set without your approval.
77
77
 
78
78
  Pass an existing objective to tighten it: `/goal-draft all tests pass and the lint is clean`. For an active Goal, an explicit request to tighten it produces `/goal edit`; a replacement uses `/goal set`. If the intended operation is unclear, the skill includes that choice in its single round of questions.
79
79
 
80
80
  ### Approve a Goal the model proposes
81
81
 
82
- In an interactive terminal or a Web Shell turn with an attached client, the model has a `propose_goal` tool. When `/goal-draft` finishes, or when you ask for an outcome that spans several turns, it can propose the objective instead of printing a `/goal set …` line for you to copy. The proposal appears as an approval dialog showing the full objective. Approving it sets the Goal exactly as `/goal set` would, the moment the current turn ends (the model acknowledges and stops; the first Goal turn then starts on its own), and declining sets nothing — the model sees only that the tool call was not allowed, and its instructions tell it not to ask why and not to propose the same objective again. The approval is bound to the turn that asked for it: if that turn is cancelled or otherwise never reaches its end, the approval is dropped rather than applied under a later message or an automated turn. No permission rule or approval mode (including YOLO) skips this dialog, and the tool refuses while another Goal is active, in plan mode, and in untrusted folders; subagents are never offered it. Web Shell uses its existing Allow/Reject permission panel. A stopped Goal can be replaced only if it still matches the version shown for approval; changing it invalidates the proposal. Headless runs, Web Shell channel deliveries and automatic turns, and ACP clients without the required approval and turn-lifecycle support retain the printed `/goal set` hand-off.
82
+ In an interactive terminal session the model has a `propose_goal` tool. When `/goal-draft` finishes, or when you ask for an outcome that spans several turns, it can propose the objective instead of printing a `/goal set …` line for you to copy. The proposal appears as an approval dialog showing the full objective. Approving it sets the Goal exactly as `/goal set` would, the moment the current turn ends (the model acknowledges and stops; the first Goal turn then starts on its own), and declining sets nothing — the model sees only that the tool call was not allowed, and its instructions tell it not to ask why and not to propose the same objective again. The approval is bound to the turn that asked for it: if that turn is cancelled or otherwise never reaches its end, the approval is dropped rather than applied under a later message or an automated turn. No permission rule or approval mode (including YOLO) skips this dialog, and the tool refuses while another Goal is active, in plan mode, and in untrusted folders; subagents are never offered it. It is not available in headless runs, nor yet in Web Shell or other ACP-driven sessions (they do not pass through the turn boundary that applies the approval); there the printed `/goal set` line remains the hand-off.
83
83
 
84
84
  Turn it off with `goals.modelProposed: "disabled"` in your user settings. Because the setting decides whether the model may ask you to start an autonomous loop, it is honored only from user and system scope; a workspace `.qwen/settings.json` value is ignored with a warning.
85
85
 
@@ -610,28 +610,24 @@ For `"ask"`, the TUI displays `permissionDecisionReason` as literal text rather
610
610
 
611
611
  #### UserPromptSubmit
612
612
 
613
- **Purpose**: Executed before supported model invocations to validate, block, or enrich their input. On the core/headless path, the event currently covers `UserQuery`, `ToolResult`, and `Hook` sends, while `Retry`, `Steer`, `Cron`, `Notification`, and `Teammate` sends are skipped. It can therefore occur on continuation paths, and `prompt` must not be assumed to be raw user input. The ACP session path has its own invocation policy: retries and newly dispatched background tasks can still invoke legacy hooks; continue, restored-question, and runtime-goal turns do not.
613
+ **Purpose**: Executed before supported model invocations to validate, block, or enrich the current model-bound prompt. The event currently covers `UserQuery`, `ToolResult`, and `Hook` sends, while `Retry`, `Steer`, `Cron`, `Notification`, and `Teammate` sends are skipped. It can therefore occur on continuation paths, and `prompt` must not be assumed to be raw user input.
614
614
 
615
615
  **Event-specific fields**:
616
616
 
617
617
  ```json
618
618
  {
619
- "prompt": "legacy prompt for this invocation; semantics depend on the execution path",
620
- "submitted_prompt": "optional user text captured at a supported submission boundary"
619
+ "prompt": "current model-bound prompt for this hook invocation",
620
+ "submitted_prompt": "optional user text captured at a supported interactive TUI submission boundary"
621
621
  }
622
622
  ```
623
623
 
624
- `submitted_prompt` is optional. It is present on supported interactive TUI submissions and first-turn headless `UserQuery` sends. On the ACP session path used by ACP clients, `serve`, and daemon hosts, a fresh turn must carry an explicit submission declaration. Missing, non-string, empty, or whitespace-only declarations omit the field; the value is never reconstructed from `prompt` or a display label. Retries, continuations, and channel-classified turns omit it. The channel exclusion includes both automated events and human messages relayed through channel adapters.
624
+ `submitted_prompt` is optional. It is present only when Qwen can carry provenance from a supported interactive TUI submission to a fresh `UserQuery`. It is omitted for unsupported producers and machine-driven paths such as same-turn steering, tool-result continuations, retries, cron, notifications, and teammate traffic. ACP, headless, `serve`, SDK, and remote-input paths do not produce it in this version.
625
625
 
626
- Web Shell provides the original composer text at its submission boundary. Realtime voice handoffs do not declare provenance because their request text comes from model-generated tool arguments. Other ACP/daemon SDK clients can opt in per request with `_meta: { "qwen.submittedPrompt": "original submitted text" }`, captured before resource or model-only expansion. Existing clients without this declaration continue running legacy hooks but do not trigger provenance-gated Auto Recall. Do not add the declaration globally to an SDK transport: scheduled tasks, Live task runs, sub-session spawns, model-authored cross-session messages, and promoted mid-turn messages must not acquire it automatically. The private `qwen.daemon.submittedPrompt` key is reserved for the daemon-to-child hop and is stripped from external callers. These declarations are caller-supplied provenance, not proof of human authorship or authorization.
627
-
628
- On the ACP path, the initial legacy `prompt` is the request's text blocks joined with a space before resource, attachment, slash-command, or model-only expansion. It does not expose the complete expanded model input. `submitted_prompt` can equal that text, but comes only from the explicit declaration and preserves its original whitespace. On the core/headless path, legacy `prompt` represents the current model-bound text for the hook invocation. Neither field is a complete DLP inspection surface.
629
-
630
- The following composer rules apply to the interactive TUI, not to ACP clients. Deferred input can retain the field when its provenance remains complete. A combined batch retains provenance only when every constituent item has it; edited, partially known, or otherwise ambiguous input omits the field. Prompt, command, and shell-history navigation or selected search matches, cross-restart stash restores, and conversation rewind restores also omit it because those paths can surface model-bound text without its original provenance. Consumers that require user-submitted text should treat absence as unavailable rather than falling back to `prompt`.
626
+ Deferred input can retain the field when its provenance remains complete. A combined batch retains provenance only when every constituent item has it; edited, partially known, or otherwise ambiguous input omits the field. Prompt, command, and shell-history navigation or selected search matches, cross-restart stash restores, and conversation rewind restores also omit it because those paths can surface model-bound text without its original provenance. Consumers that require user-submitted text should treat absence as unavailable rather than falling back to `prompt`.
631
627
 
632
628
  After restored or provenance-unavailable model-bound input is cleared or submitted, the composer also clears its undo and redo history. This prevents undo from restoring expanded text after its marker or sidecar has been consumed.
633
629
 
634
- Large-paste placeholders remain compact in `submitted_prompt`; the expanded pasted content appears only in `prompt`. On that TUI path, consumers should treat the field as a text projection rather than a byte-for-byte record of clipboard input. ACP clients have no equivalent built-in Vim, paste-placeholder, history, or rewind provenance tracking; they own whether restored or edited text retains a valid submission declaration.
630
+ Large-paste placeholders remain compact in `submitted_prompt`; the expanded pasted content appears only in `prompt`. Consumers should treat the field as a TUI text projection rather than a byte-for-byte record of clipboard input.
635
631
 
636
632
  Any non-empty input present while Vim mode is enabled omits `submitted_prompt`, including after Vim is disabled, because Vim registers do not carry provenance in this version. This conservative rule also covers drafts entered before enabling Vim. Clearing the composer starts a new eligible input.
637
633
 
@@ -669,7 +665,10 @@ This two-field payload is written only for this kind of user-prompt record.
669
665
  `hookContext` intentionally duplicates the tagged part so offline and
670
666
  third-party consumers can identify its provenance without parsing model text.
671
667
  `displayText` is the pre-hook display projection and never includes the hook
672
- context. On the core/headless path it is the submitted projection when available, otherwise the expanded pre-hook prompt. ACP records the trusted display projection or raw request text before expansion when a projection or attachment references require a payload; otherwise it records the user message without `systemPayload` or `displayText`.
668
+ context. For a supported interactive TUI submission it is the raw composer
669
+ projection carried by `submitted_prompt`; ACP, headless, `serve`, SDK, remote
670
+ input, and other paths without that provenance record the expanded pre-hook
671
+ prompt instead.
673
672
 
674
673
  Transcript display consumers treat `displayText` as this user-prompt projection
675
674
  when `systemPayload.hookContext` is a string. For compatibility with released
@@ -1496,11 +1495,11 @@ A PostToolUse HTTP hook that sends all tool execution records to a remote audit
1496
1495
  }
1497
1496
  ```
1498
1497
 
1499
- ### Example 3: Submitted Prompt Validation Hook
1498
+ ### Example 3: Interactive TUI Submitted Prompt Validation Hook
1500
1499
 
1501
- On the core/headless path, `prompt` can include generated or expanded content rather than original user input. On ACP it starts with the pre-expansion request text, so reading it does not inspect attachment bodies or the complete model input. `UserPromptSubmit` does not cover every model send. Do not silently fall back from `submitted_prompt` to `prompt` when source provenance is required.
1500
+ To inspect the current model-bound content instead, read `prompt`. That field can include generated or expanded content, is not the original user input, and does not imply that `UserPromptSubmit` covers every model send. Do not silently fall back from `submitted_prompt` to `prompt` when source provenance is required.
1502
1501
 
1503
- A UserPromptSubmit hook that validates supported submitted text and provides context for long prompts. It also runs on headless submissions and explicitly declared ACP/daemon submissions; it is not TUI-only. It skips invocations where source provenance is unavailable. A blocking result stops the affected invocation, including on these non-TUI paths. The keyword check is illustrative and is not a complete DLP policy:
1502
+ A UserPromptSubmit hook that validates supported interactive TUI submissions for sensitive information and provides context for long prompts. It skips invocations where source provenance is unavailable. The keyword check is illustrative and is not a complete DLP policy:
1504
1503
 
1505
1504
  **prompt_validator.py**
1506
1505
 
@@ -166,19 +166,15 @@ qwen channel status --daemon-url http://127.0.0.1:4170 --token secret
166
166
  qwen channel stop --daemon-url http://127.0.0.1:4170 --token secret
167
167
  ```
168
168
 
169
- This mode is experimental and daemon-managed. It does not replace the standalone `qwen channel start` command: without `--daemon-url`, existing `qwen channel start`, `stop`, and `status` behavior remains standalone. With `qwen serve --channel`, the explicit selection wins, the daemon reserves the channel-service lease before listening, and startup fails if the initial worker cannot become ready. On a flagless boot, the daemon restores `serve.channels` from the trusted primary workspace. If neither source selects channels, the heavy channel runtime remains unloaded and no channel-service lease is reserved until the first runtime PUT. Secondary workspaces do not independently restore their own `serve.channels`; enable those channels through the runtime API after boot. If a ready worker later crashes, the daemon keeps running, relaunches it under a bounded restart policy, and reports its state (including `channel_worker_exited` warnings) in `GET /daemon/status`.
169
+ This mode is experimental and daemon-managed. It does not replace the standalone `qwen channel start` command: without `--daemon-url`, existing `qwen channel start`, `stop`, and `status` behavior remains standalone. With `qwen serve --channel`, the daemon reserves the channel-service lease before listening and fails startup if the initial worker cannot become ready. Without `--channel`, it loads no channel runtime and reserves no channel-service lease until the first runtime PUT. If a ready worker later crashes, the daemon keeps running, relaunches it under a bounded restart policy, and reports its state (including `channel_worker_exited` warnings) in `GET /daemon/status`.
170
170
 
171
- Automatic restore skips an invalid startup field or a validation or lease error before workers start, logs its `serve.channels` source, and keeps unrelated settings in effect. After a worker startup fails, the daemon continues only once cleanup succeeds. Global runtime startup timeouts and unconfirmed worker stops retain the normal startup-failure behavior; the service lease remains held while worker termination is unconfirmed. Check the daemon log for skipped or failed restores.
172
-
173
- Stored startup names must be non-empty, have no leading or trailing whitespace, and contain no unsafe control or invisible characters. Invalid entries are skipped individually and logged by array index. Startup neither trims them into a different instance name nor rewrites settings. The channel startup toggle reflects persisted configuration, while runtime state reports whether the channel is running.
174
-
175
- Runtime control is exposed as `GET`, `PUT`, and `DELETE /workspace/channel`; SDK helpers are `getChannelWorkerControl()`, `setChannelWorkerSelection()`, and `stopChannelWorker()`. PUT/DELETE/reload use the strict mutation gate: trusted-loopback primary callers may use them without a token, while other deployments require operator credentials. Runtime selections are deliberately ephemeral: PUT does not edit settings or the boot options, and a restart returns to the explicit `qwen serve --channel` selection, otherwise to the trusted primary workspace's `serve.channels`, or to disabled when neither exists. Explicit CLI and runtime named selections are trimmed and deduplicated in first-occurrence order; order is preserved because the first channel can affect shared model selection.
171
+ Runtime control is exposed as `GET`, `PUT`, and `DELETE /workspace/channel`; SDK helpers are `getChannelWorkerControl()`, `setChannelWorkerSelection()`, and `stopChannelWorker()`. PUT/DELETE/reload use the strict mutation gate: trusted-loopback primary callers may use them without a token, while other deployments require operator credentials. Runtime selections are deliberately ephemeral: PUT does not edit settings or the boot options, and a restart returns to the `qwen serve --channel` selection (or disabled when that flag is omitted). Named selections are trimmed and deduplicated in first-occurrence order; order is preserved because the first channel can affect shared model selection.
176
172
 
177
173
  Daemon-backed `qwen channel set` and `qwen channel reload`, plus `status` and `stop` with `--daemon-url`, cannot discover a token generated by `--open-with-auth`. Use `QWEN_SERVER_TOKEN` and pass the same value with `--token` to those clients, or omit authenticated-open mode.
178
174
 
179
175
  The daemon reads each channel's settings (tokens, `proxy`, per-channel `model`) when its worker starts. To re-read settings without changing the committed selection, call `POST /workspace/channel/reload` (SDK `client.reloadChannelWorker()`, or `qwen channel reload`). Reload re-resolves workspace ownership and restarts selected workers through the same rollback-safe reconcile path. The `channel_control` capability is present whenever runtime control is wired; `channel_reload` is present only while the manager is enabled. Persisted threads are restored from disk.
180
176
 
181
- Each selected channel's `cwd` must resolve to a registered workspace, and channels are grouped by that owning workspace: a single-workspace daemon runs one worker (unchanged from before); a multi-workspace daemon (`--workspace` repeated) runs one worker per workspace that owns a selected channel, each bound to that workspace's cwd, `QWEN_DAEMON_WORKSPACE`, and env overlay. To host a channel in a non-primary workspace, define it in that workspace's own `.qwen/settings.json` (no `cwd` needed) or set an explicit `cwd` equal to the workspace path. A channel defined only in user/system scope with no `cwd` is ambiguous across multiple workspaces: an explicit `--channel` selection fails startup, while automatic restore logs the ownership error and skips that selection before workers start. `--channel all` stays primary-only (it hosts the primary workspace's channels) and cannot be combined with named channels.
177
+ Each selected channel's `cwd` must resolve to a registered workspace, and channels are grouped by that owning workspace: a single-workspace daemon runs one worker (unchanged from before); a multi-workspace daemon (`--workspace` repeated) runs one worker per workspace that owns a selected channel, each bound to that workspace's cwd, `QWEN_DAEMON_WORKSPACE`, and env overlay. To host a channel in a non-primary workspace, define it in that workspace's own `.qwen/settings.json` (no `cwd` needed) or set an explicit `cwd` equal to the workspace path; a channel defined only in user/system scope with no `cwd` is ambiguous across workspaces and causes a boot error. `--channel all` stays primary-only (it hosts the primary workspace's channels) and cannot be combined with named channels.
182
178
 
183
179
  Replacing a selection preflights configuration, ownership, and trust before stopping anything. It keeps workspace workers whose ordered selection is unchanged. If a changed worker cannot start, the daemon stops new workers and restores the old selection. If the daemon cannot confirm that an old child exited even after SIGKILL, it keeps the PID lease and refuses to create a duplicate worker. A worker is still considered ready when at least one requested adapter connects; PUT then returns `partial: true`, and `/daemon/status` reports `channel_worker_partial_connect` for the missing adapters.
184
180
 
@@ -14,25 +14,25 @@ import "./chunk-47ECGEJC.js";
14
14
  import "./chunk-2MIN6GRR.js";
15
15
  import "./chunk-QHTIBUWB.js";
16
16
  import "./chunk-RKUWKYED.js";
17
- import "./chunk-F2RKL5I2.js";
17
+ import "./chunk-BZM5U74J.js";
18
18
  import "./chunk-GELRJXE2.js";
19
19
  import "./chunk-32CM56LO.js";
20
20
  import "./chunk-AEY27Z35.js";
21
21
  import "./chunk-Y2MYW47X.js";
22
22
  import "./chunk-LJZSMWOH.js";
23
- import "./chunk-TP2DUOB6.js";
23
+ import "./chunk-F42YYSCK.js";
24
24
  import "./chunk-NUQVB25K.js";
25
25
  import "./chunk-ZKZHSB5W.js";
26
- import "./chunk-L2KF7HUE.js";
26
+ import "./chunk-MSNHNAQZ.js";
27
27
  import "./chunk-DJXSOEFB.js";
28
28
  import "./chunk-ZKYR7QS4.js";
29
29
  import "./chunk-532WHF4F.js";
30
30
  import "./chunk-BUQN5LTI.js";
31
31
  import "./chunk-ZPJWUGCS.js";
32
32
  import "./chunk-LK2WUCDQ.js";
33
- import "./chunk-5FKZ7KFQ.js";
34
- import "./chunk-FRVV5SSD.js";
35
- import "./chunk-JV5YASQA.js";
33
+ import "./chunk-UKZ45TJL.js";
34
+ import "./chunk-RLLRJJDR.js";
35
+ import "./chunk-N7VWZDWW.js";
36
36
  import "./chunk-GOFAQQZA.js";
37
37
  import "./chunk-TWPJO254.js";
38
38
  import "./chunk-CQ35AJ4Z.js";
@@ -53,7 +53,7 @@ import "./chunk-2SZH22YO.js";
53
53
  import "./chunk-DTNV6UZY.js";
54
54
  import "./chunk-QJNDUTOL.js";
55
55
  import "./chunk-JXNIF2O5.js";
56
- import "./chunk-CGKEUUYG.js";
56
+ import "./chunk-NFYEQRLG.js";
57
57
  import "./chunk-ELRMZTPF.js";
58
58
  import "./chunk-CHEIIBT3.js";
59
59
  import "./chunk-PLLIWEM3.js";
@@ -65,7 +65,7 @@ import "./chunk-MLXTMF7H.js";
65
65
  import "./chunk-LILGKQ4B.js";
66
66
  import "./chunk-3CZ2BQV6.js";
67
67
  import "./chunk-SAH4BD2J.js";
68
- import "./chunk-CAAMI77K.js";
68
+ import "./chunk-CXTPVBFA.js";
69
69
  import "./chunk-U7O65WKL.js";
70
70
  import "./chunk-S6LOFUVP.js";
71
71
  import "./chunk-FN3JNDRU.js";
@@ -74,20 +74,20 @@ import "./chunk-G6UUOCUT.js";
74
74
  import "./chunk-IZ2U57NY.js";
75
75
  import "./chunk-NUQ4GK5I.js";
76
76
  import "./chunk-K2OJUPOE.js";
77
- import "./chunk-B6BDT4RX.js";
77
+ import "./chunk-AXTFYDXT.js";
78
78
  import "./chunk-NAVJD2PQ.js";
79
- import "./chunk-ZGQIIGNQ.js";
80
- import "./chunk-ZHECLGA6.js";
79
+ import "./chunk-YBUMTY7B.js";
80
+ import "./chunk-HNLMYDQE.js";
81
81
  import "./chunk-QHMLYMMS.js";
82
82
  import "./chunk-VNOVK4I7.js";
83
83
  import "./chunk-CFKIH3D3.js";
84
84
  import "./chunk-JL6APGBX.js";
85
85
  import "./chunk-DJ2GSRLV.js";
86
- import "./chunk-L3DTX6U4.js";
87
- import "./chunk-C75BXMPM.js";
86
+ import "./chunk-4ALNJDHL.js";
87
+ import "./chunk-NOO4QFXM.js";
88
88
  import "./chunk-KFFCDLKV.js";
89
89
  import "./chunk-ZW2EUO2A.js";
90
- import "./chunk-34ZYDM3F.js";
90
+ import "./chunk-HBU7EKY4.js";
91
91
  import "./chunk-5ETULJLP.js";
92
92
  import "./chunk-ZHKTKHMO.js";
93
93
  import "./chunk-VGC4I5JJ.js";
@@ -98,7 +98,7 @@ import "./chunk-WZAD4ZNJ.js";
98
98
  import "./chunk-3FPYT6QC.js";
99
99
  import "./chunk-FPGTNKCP.js";
100
100
  import "./chunk-TIGXX4PA.js";
101
- import "./chunk-RJZTX2OF.js";
101
+ import "./chunk-3UXUOFO6.js";
102
102
  import "./chunk-XFFRI3WM.js";
103
103
  import "./chunk-ERU3SDXT.js";
104
104
  import "./chunk-EWJTAP3Y.js";
@@ -4,18 +4,18 @@ import {
4
4
  ConfigContext,
5
5
  SessionPicker,
6
6
  SettingsContext
7
- } from "./chunk-ATH66AEU.js";
7
+ } from "./chunk-DAWWT2ID.js";
8
8
  import {
9
9
  KeypressProvider
10
- } from "./chunk-KVBNJ4K2.js";
11
- import "./chunk-TWC3FHUI.js";
12
- import "./chunk-KZ2CU2LH.js";
13
- import "./chunk-3VPFA6L2.js";
14
- import "./chunk-CUK6F5UF.js";
10
+ } from "./chunk-E7LB57MB.js";
11
+ import "./chunk-NHJKAR6E.js";
12
+ import "./chunk-7Q2AXRDJ.js";
13
+ import "./chunk-BWAMMKIS.js";
14
+ import "./chunk-S6Q6Q4P2.js";
15
15
  import "./chunk-4WGODMVR.js";
16
16
  import "./chunk-2UWQX4FP.js";
17
- import "./chunk-PMS4FVLY.js";
18
- import "./chunk-LAP7X6EC.js";
17
+ import "./chunk-IL5M5NYD.js";
18
+ import "./chunk-QMUYLYT5.js";
19
19
  import "./chunk-4LIPOIXS.js";
20
20
  import {
21
21
  require_jsx_runtime
@@ -33,47 +33,47 @@ import "./chunk-WBCPROWX.js";
33
33
  import "./chunk-EKTCKZV5.js";
34
34
  import "./chunk-2XRE4KE4.js";
35
35
  import "./chunk-KW7NOTN6.js";
36
- import "./chunk-UGS62IR2.js";
37
- import "./chunk-7XM6KEVW.js";
36
+ import "./chunk-GCDXVPFK.js";
37
+ import "./chunk-AC6KDLH3.js";
38
38
  import "./chunk-47ECGEJC.js";
39
- import "./chunk-ZT6EPPBY.js";
39
+ import "./chunk-6JACAGYH.js";
40
40
  import "./chunk-2MIN6GRR.js";
41
41
  import "./chunk-QHTIBUWB.js";
42
- import "./chunk-BQOP3K76.js";
42
+ import "./chunk-TWUKBNWM.js";
43
43
  import "./chunk-57OAHC2Y.js";
44
- import "./chunk-OOLSYRZ7.js";
44
+ import "./chunk-7BXXIQG4.js";
45
45
  import "./chunk-RKUWKYED.js";
46
- import "./chunk-IOUBOANU.js";
47
- import "./chunk-YIU5PEAT.js";
46
+ import "./chunk-ZU47FBOC.js";
47
+ import "./chunk-NOAG7N22.js";
48
48
  import "./chunk-BW4333PP.js";
49
49
  import "./chunk-VX63RJXE.js";
50
50
  import "./chunk-IDS7MSUP.js";
51
- import "./chunk-74JEYK2C.js";
51
+ import "./chunk-VZUCTJ2P.js";
52
52
  import "./chunk-5EJZE3FP.js";
53
- import "./chunk-KHIBLKNK.js";
53
+ import "./chunk-53GWJOLP.js";
54
54
  import "./chunk-NPQ5ZKRP.js";
55
55
  import "./chunk-MR3PXB6E.js";
56
- import "./chunk-F2RKL5I2.js";
56
+ import "./chunk-BZM5U74J.js";
57
57
  import "./chunk-GELRJXE2.js";
58
58
  import "./chunk-32CM56LO.js";
59
59
  import "./chunk-AEY27Z35.js";
60
60
  import "./chunk-Y2MYW47X.js";
61
61
  import "./chunk-LJZSMWOH.js";
62
- import "./chunk-TP2DUOB6.js";
62
+ import "./chunk-F42YYSCK.js";
63
63
  import "./chunk-NUQVB25K.js";
64
64
  import "./chunk-ZKZHSB5W.js";
65
- import "./chunk-L2KF7HUE.js";
65
+ import "./chunk-MSNHNAQZ.js";
66
66
  import "./chunk-DJXSOEFB.js";
67
67
  import "./chunk-ZKYR7QS4.js";
68
68
  import "./chunk-532WHF4F.js";
69
69
  import "./chunk-BUQN5LTI.js";
70
70
  import "./chunk-ZPJWUGCS.js";
71
71
  import "./chunk-LK2WUCDQ.js";
72
- import "./chunk-5FKZ7KFQ.js";
73
- import "./chunk-FRVV5SSD.js";
72
+ import "./chunk-UKZ45TJL.js";
73
+ import "./chunk-RLLRJJDR.js";
74
74
  import {
75
75
  SessionService
76
- } from "./chunk-JV5YASQA.js";
76
+ } from "./chunk-N7VWZDWW.js";
77
77
  import "./chunk-GOFAQQZA.js";
78
78
  import "./chunk-TWPJO254.js";
79
79
  import "./chunk-CQ35AJ4Z.js";
@@ -94,7 +94,7 @@ import "./chunk-2SZH22YO.js";
94
94
  import "./chunk-DTNV6UZY.js";
95
95
  import "./chunk-QJNDUTOL.js";
96
96
  import "./chunk-JXNIF2O5.js";
97
- import "./chunk-CGKEUUYG.js";
97
+ import "./chunk-NFYEQRLG.js";
98
98
  import "./chunk-ELRMZTPF.js";
99
99
  import "./chunk-CHEIIBT3.js";
100
100
  import "./chunk-PLLIWEM3.js";
@@ -108,7 +108,7 @@ import {
108
108
  getGitBranch
109
109
  } from "./chunk-3CZ2BQV6.js";
110
110
  import "./chunk-SAH4BD2J.js";
111
- import "./chunk-CAAMI77K.js";
111
+ import "./chunk-CXTPVBFA.js";
112
112
  import "./chunk-U7O65WKL.js";
113
113
  import "./chunk-S6LOFUVP.js";
114
114
  import "./chunk-FN3JNDRU.js";
@@ -117,20 +117,20 @@ import "./chunk-G6UUOCUT.js";
117
117
  import "./chunk-IZ2U57NY.js";
118
118
  import "./chunk-NUQ4GK5I.js";
119
119
  import "./chunk-K2OJUPOE.js";
120
- import "./chunk-B6BDT4RX.js";
120
+ import "./chunk-AXTFYDXT.js";
121
121
  import "./chunk-NAVJD2PQ.js";
122
- import "./chunk-ZGQIIGNQ.js";
123
- import "./chunk-ZHECLGA6.js";
122
+ import "./chunk-YBUMTY7B.js";
123
+ import "./chunk-HNLMYDQE.js";
124
124
  import "./chunk-QHMLYMMS.js";
125
125
  import "./chunk-VNOVK4I7.js";
126
126
  import "./chunk-CFKIH3D3.js";
127
127
  import "./chunk-JL6APGBX.js";
128
128
  import "./chunk-DJ2GSRLV.js";
129
- import "./chunk-L3DTX6U4.js";
130
- import "./chunk-C75BXMPM.js";
129
+ import "./chunk-4ALNJDHL.js";
130
+ import "./chunk-NOO4QFXM.js";
131
131
  import "./chunk-KFFCDLKV.js";
132
132
  import "./chunk-ZW2EUO2A.js";
133
- import "./chunk-34ZYDM3F.js";
133
+ import "./chunk-HBU7EKY4.js";
134
134
  import "./chunk-5ETULJLP.js";
135
135
  import "./chunk-ZHKTKHMO.js";
136
136
  import "./chunk-VGC4I5JJ.js";
@@ -141,7 +141,7 @@ import "./chunk-WZAD4ZNJ.js";
141
141
  import "./chunk-3FPYT6QC.js";
142
142
  import "./chunk-FPGTNKCP.js";
143
143
  import "./chunk-TIGXX4PA.js";
144
- import "./chunk-RJZTX2OF.js";
144
+ import "./chunk-3UXUOFO6.js";
145
145
  import "./chunk-XFFRI3WM.js";
146
146
  import "./chunk-ERU3SDXT.js";
147
147
  import "./chunk-EWJTAP3Y.js";
@@ -152,7 +152,7 @@ import "./chunk-HUXPEUFL.js";
152
152
  import "./chunk-TP6FYVQT.js";
153
153
  import "./chunk-ZAFYHRVY.js";
154
154
  import "./chunk-TBWQLLFO.js";
155
- import "./chunk-JDEW3V5B.js";
155
+ import "./chunk-JYKWOREU.js";
156
156
  import {
157
157
  writeStdoutLine
158
158
  } from "./chunk-7FA2II6K.js";
@@ -9,8 +9,8 @@ import {
9
9
  markAcpStartup,
10
10
  recordAcpConfigStartupEvent,
11
11
  resetAcpStartupProfilerForTesting
12
- } from "./chunk-5FFAUU4T.js";
13
- import "./chunk-YKK2XXHF.js";
12
+ } from "./chunk-J3TJH52D.js";
13
+ import "./chunk-PSPAM24S.js";
14
14
  import "./chunk-5O2XNYP6.js";
15
15
  import "./chunk-J2S4EL5Y.js";
16
16
  export {
@@ -15,28 +15,28 @@ import {
15
15
  RequestError,
16
16
  ndJsonStream
17
17
  } from "./chunk-IJOS26LH.js";
18
- import "./chunk-F2RKL5I2.js";
18
+ import "./chunk-BZM5U74J.js";
19
19
  import "./chunk-GELRJXE2.js";
20
20
  import "./chunk-32CM56LO.js";
21
21
  import "./chunk-AEY27Z35.js";
22
22
  import "./chunk-Y2MYW47X.js";
23
23
  import "./chunk-LJZSMWOH.js";
24
- import "./chunk-TP2DUOB6.js";
24
+ import "./chunk-F42YYSCK.js";
25
25
  import "./chunk-NUQVB25K.js";
26
26
  import "./chunk-ZKZHSB5W.js";
27
- import "./chunk-L2KF7HUE.js";
27
+ import "./chunk-MSNHNAQZ.js";
28
28
  import "./chunk-DJXSOEFB.js";
29
29
  import "./chunk-ZKYR7QS4.js";
30
30
  import "./chunk-532WHF4F.js";
31
31
  import "./chunk-BUQN5LTI.js";
32
32
  import "./chunk-ZPJWUGCS.js";
33
33
  import "./chunk-LK2WUCDQ.js";
34
- import "./chunk-5FKZ7KFQ.js";
35
- import "./chunk-FRVV5SSD.js";
34
+ import "./chunk-UKZ45TJL.js";
35
+ import "./chunk-RLLRJJDR.js";
36
36
  import {
37
37
  AgentEventEmitter,
38
38
  renderSubagentSystemPrompt
39
- } from "./chunk-JV5YASQA.js";
39
+ } from "./chunk-N7VWZDWW.js";
40
40
  import "./chunk-GOFAQQZA.js";
41
41
  import "./chunk-TWPJO254.js";
42
42
  import "./chunk-CQ35AJ4Z.js";
@@ -59,7 +59,7 @@ import "./chunk-2SZH22YO.js";
59
59
  import "./chunk-DTNV6UZY.js";
60
60
  import "./chunk-QJNDUTOL.js";
61
61
  import "./chunk-JXNIF2O5.js";
62
- import "./chunk-CGKEUUYG.js";
62
+ import "./chunk-NFYEQRLG.js";
63
63
  import "./chunk-ELRMZTPF.js";
64
64
  import "./chunk-CHEIIBT3.js";
65
65
  import "./chunk-PLLIWEM3.js";
@@ -71,7 +71,7 @@ import "./chunk-MLXTMF7H.js";
71
71
  import "./chunk-LILGKQ4B.js";
72
72
  import "./chunk-3CZ2BQV6.js";
73
73
  import "./chunk-SAH4BD2J.js";
74
- import "./chunk-CAAMI77K.js";
74
+ import "./chunk-CXTPVBFA.js";
75
75
  import "./chunk-U7O65WKL.js";
76
76
  import "./chunk-S6LOFUVP.js";
77
77
  import "./chunk-FN3JNDRU.js";
@@ -80,20 +80,20 @@ import "./chunk-G6UUOCUT.js";
80
80
  import "./chunk-IZ2U57NY.js";
81
81
  import "./chunk-NUQ4GK5I.js";
82
82
  import "./chunk-K2OJUPOE.js";
83
- import "./chunk-B6BDT4RX.js";
83
+ import "./chunk-AXTFYDXT.js";
84
84
  import "./chunk-NAVJD2PQ.js";
85
- import "./chunk-ZGQIIGNQ.js";
86
- import "./chunk-ZHECLGA6.js";
85
+ import "./chunk-YBUMTY7B.js";
86
+ import "./chunk-HNLMYDQE.js";
87
87
  import "./chunk-QHMLYMMS.js";
88
88
  import "./chunk-VNOVK4I7.js";
89
89
  import "./chunk-CFKIH3D3.js";
90
90
  import "./chunk-JL6APGBX.js";
91
91
  import "./chunk-DJ2GSRLV.js";
92
- import "./chunk-L3DTX6U4.js";
93
- import "./chunk-C75BXMPM.js";
92
+ import "./chunk-4ALNJDHL.js";
93
+ import "./chunk-NOO4QFXM.js";
94
94
  import "./chunk-KFFCDLKV.js";
95
95
  import "./chunk-ZW2EUO2A.js";
96
- import "./chunk-34ZYDM3F.js";
96
+ import "./chunk-HBU7EKY4.js";
97
97
  import "./chunk-5ETULJLP.js";
98
98
  import "./chunk-ZHKTKHMO.js";
99
99
  import "./chunk-VGC4I5JJ.js";
@@ -104,7 +104,7 @@ import "./chunk-WZAD4ZNJ.js";
104
104
  import "./chunk-3FPYT6QC.js";
105
105
  import "./chunk-FPGTNKCP.js";
106
106
  import "./chunk-TIGXX4PA.js";
107
- import "./chunk-RJZTX2OF.js";
107
+ import "./chunk-3UXUOFO6.js";
108
108
  import "./chunk-XFFRI3WM.js";
109
109
  import "./chunk-ERU3SDXT.js";
110
110
  import "./chunk-EWJTAP3Y.js";