@qwen-code/qwen-code 0.21.12-preview.4 → 0.21.12

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 (337) hide show
  1. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  2. package/bundled/qc-helper/docs/features/channels/plugins.md +11 -11
  3. package/bundled/qc-helper/docs/qwen-serve.md +65 -0
  4. package/chunks/{MaxSizedBox-GFI5RYXH.js → MaxSizedBox-ZSJJ2D5S.js} +45 -45
  5. package/chunks/{StandaloneSessionPicker-JFWRY4V2.js → StandaloneSessionPicker-WHUHQXSA.js} +64 -65
  6. package/chunks/{acp-startup-profiler-TVI2OVUN.js → acp-startup-profiler-SVPUHLXV.js} +2 -2
  7. package/chunks/{acpAgent-7YC6SNIS.js → acpAgent-7JOAESF5.js} +378 -201
  8. package/chunks/{agent-43KVQSB5.js → agent-E6V3VXQR.js} +41 -41
  9. package/chunks/{agent-headless-P2N7PDGQ.js → agent-headless-OEQNFOMH.js} +41 -41
  10. package/chunks/{anthropicContentGenerator-ZBBX5VMY.js → anthropicContentGenerator-YDT4EOKO.js} +25 -25
  11. package/chunks/{artifact-tool-RWJAKYBZ.js → artifact-tool-4GCQQDZI.js} +5 -5
  12. package/chunks/{askUserQuestion-IQCA2SOX.js → askUserQuestion-HZJJLR3Z.js} +2 -2
  13. package/chunks/{bridge-ZBMNALLA.js → bridge-NPBV53UA.js} +47 -47
  14. package/chunks/{build-RZS65IIX.js → build-GDBLPA24.js} +1 -1
  15. package/chunks/{channel-management-service-5ZYX4ROW.js → channel-management-service-OADNGQM3.js} +4 -4
  16. package/chunks/{channel-settings-store-ZJWM7EDP.js → channel-settings-store-4ODLJ4X2.js} +48 -48
  17. package/chunks/{channel-worker-group-QFJKXO7R.js → channel-worker-group-IHBIHQ45.js} +7 -7
  18. package/chunks/{channel-worker-manager-PWD2UURZ.js → channel-worker-manager-GEHYJ5AE.js} +7 -7
  19. package/chunks/{channel-worker-supervisor-XQJBGFCM.js → channel-worker-supervisor-ZJIIWM4I.js} +5 -5
  20. package/chunks/{chunk-LHOG4E6Y.js → chunk-22C7BQ6D.js} +3 -3
  21. package/chunks/{chunk-2SB4SLKC.js → chunk-2IIJTXYF.js} +1 -3
  22. package/chunks/{chunk-QSMZHJ62.js → chunk-2IVYL3IF.js} +1 -1
  23. package/chunks/{chunk-QEWAHAW2.js → chunk-2ZWH53I4.js} +3 -3
  24. package/chunks/{chunk-6NQWER7D.js → chunk-36XKGB7E.js} +3 -3
  25. package/chunks/{chunk-7JL5YBSA.js → chunk-3AEKDXKT.js} +1 -1
  26. package/chunks/{chunk-H2U4FK62.js → chunk-3GDBZJD6.js} +6 -6
  27. package/chunks/{chunk-VPZMLGD3.js → chunk-3GM5DLBI.js} +5 -5
  28. package/chunks/{chunk-PYLVQ6RT.js → chunk-3LDGOQXZ.js} +6 -6
  29. package/chunks/{chunk-BKHCW2BI.js → chunk-3VUENPWF.js} +10 -0
  30. package/chunks/{chunk-XY7DGTIC.js → chunk-45NQKMYB.js} +1 -1
  31. package/chunks/{chunk-QWAI7FNT.js → chunk-47BGDLJG.js} +119 -27
  32. package/chunks/{chunk-H6BFLALJ.js → chunk-4AOVQPJU.js} +1 -1
  33. package/chunks/{chunk-UAAWNTOC.js → chunk-4KM2SYK5.js} +12 -12
  34. package/chunks/{chunk-VRQD5D7R.js → chunk-4XA4QIUA.js} +1 -1
  35. package/chunks/{chunk-BNRIQWXW.js → chunk-56HVDG3M.js} +4 -4
  36. package/chunks/{chunk-KB4ISUT3.js → chunk-5AFGJNY6.js} +4 -4
  37. package/chunks/{chunk-KTWUFHS4.js → chunk-5RUCD4ED.js} +2 -2
  38. package/chunks/{chunk-TB6DPBE4.js → chunk-62X3CM7Q.js} +7 -7
  39. package/chunks/{chunk-SNHBRO4C.js → chunk-63FNZTWG.js} +2 -2
  40. package/chunks/{chunk-GDNDZJSG.js → chunk-6JEIRPLN.js} +47 -4
  41. package/chunks/{chunk-A2QIWDFO.js → chunk-6P5EXEBL.js} +159 -34
  42. package/chunks/{chunk-NAOHSM56.js → chunk-6SPD4Z7F.js} +1 -1
  43. package/chunks/{chunk-MTV5W6WN.js → chunk-6ZKSO6K7.js} +7 -7
  44. package/chunks/{chunk-QSDPJROT.js → chunk-7KJPO7YH.js} +2 -2
  45. package/chunks/{chunk-JVY7FHUZ.js → chunk-7U5G6JXI.js} +9 -0
  46. package/chunks/{chunk-JW5UEE3V.js → chunk-A6NRNRKE.js} +1 -1
  47. package/chunks/{chunk-AAZWJAPQ.js → chunk-AKBFSOC5.js} +2 -2
  48. package/chunks/{chunk-ADJDLEVO.js → chunk-AW27A43Y.js} +9 -11
  49. package/chunks/{chunk-M4NWDIFU.js → chunk-AZQ3DT76.js} +1 -1
  50. package/chunks/{chunk-HY5OHJEC.js → chunk-B4VN3VDH.js} +5 -5
  51. package/chunks/{chunk-VUTOV2HG.js → chunk-BSR5AXZR.js} +4 -3
  52. package/chunks/{chunk-ARL4UGRW.js → chunk-BSSLSQEW.js} +3 -3
  53. package/chunks/{chunk-OSA2TFDI.js → chunk-CGM3E75C.js} +3 -3
  54. package/chunks/{chunk-OIZWCOYC.js → chunk-CIDQISGM.js} +5 -5
  55. package/chunks/{chunk-67F2BEYW.js → chunk-CPFFU46D.js} +1 -1
  56. package/chunks/{chunk-HOJZ2QQA.js → chunk-CQ6IPDQW.js} +3 -3
  57. package/chunks/{chunk-UWIJU22K.js → chunk-CZ4OWGQQ.js} +6 -8
  58. package/chunks/{chunk-A6GQUQ7I.js → chunk-D2RNVVH6.js} +2 -2
  59. package/chunks/{chunk-PSTHNTHF.js → chunk-D7QGE3RT.js} +1 -1
  60. package/chunks/{chunk-2U3UCXZ3.js → chunk-DAV4QFD5.js} +2 -11
  61. package/chunks/{chunk-4JS2QK7P.js → chunk-DD6O3ZRD.js} +1 -1
  62. package/chunks/{chunk-7WUMS2UA.js → chunk-DEDESZDL.js} +1 -1
  63. package/chunks/{chunk-VYDQD5J4.js → chunk-DFVXU5YM.js} +1 -1
  64. package/chunks/{chunk-CDDLHCC2.js → chunk-DG4IQ6JG.js} +5 -5
  65. package/chunks/{chunk-B66LYK4B.js → chunk-DPTMKFIH.js} +1 -1
  66. package/chunks/{chunk-GHOUZ5X4.js → chunk-EBPLKY6U.js} +384 -311
  67. package/chunks/{chunk-XL6GYJL2.js → chunk-EJOGLSNJ.js} +2 -2
  68. package/chunks/{chunk-4X5J3V2I.js → chunk-FA5K6YI2.js} +2 -2
  69. package/chunks/{chunk-ZZ7RUTJ4.js → chunk-FMIH5KMQ.js} +1 -1
  70. package/chunks/{chunk-UFHPAMAV.js → chunk-FQDCO3CJ.js} +6 -1
  71. package/chunks/{chunk-UHF5VBKO.js → chunk-FRHQQC2Z.js} +1 -1
  72. package/chunks/{chunk-6OJDN5ZT.js → chunk-G6MUFRNI.js} +1 -1
  73. package/chunks/{chunk-XUBM2A4F.js → chunk-GXTMEATA.js} +15 -34
  74. package/chunks/{chunk-V3NMFQD2.js → chunk-GZDWTBT3.js} +2 -2
  75. package/chunks/{chunk-5KZNWF2M.js → chunk-H7TMVHKE.js} +1 -1
  76. package/chunks/{chunk-YY23TR4M.js → chunk-HG3UBTJ4.js} +1 -1
  77. package/chunks/{chunk-YMB77M76.js → chunk-HOSVOUDK.js} +56 -0
  78. package/chunks/{chunk-NHZF4VCD.js → chunk-HTYND72J.js} +1 -1
  79. package/chunks/{chunk-JBZYGFIB.js → chunk-I7BT2MME.js} +1 -1
  80. package/chunks/{chunk-N3J3CO35.js → chunk-IH4Z54RJ.js} +7 -5
  81. package/chunks/{chunk-JXS2JNMZ.js → chunk-IRSLAS4M.js} +2 -2
  82. package/chunks/{chunk-CTEGMF77.js → chunk-IX4PWUDU.js} +155 -87
  83. package/chunks/{chunk-A4BAHMJF.js → chunk-JRIVMPD2.js} +3 -3
  84. package/chunks/{chunk-Q7YDKOGY.js → chunk-JVEGA3MM.js} +1 -1
  85. package/chunks/{chunk-U5C2GIN2.js → chunk-K34GJQOZ.js} +117 -3
  86. package/chunks/{chunk-YI5G32RU.js → chunk-KEC5FHLM.js} +3 -3
  87. package/chunks/{chunk-2RTRFLWH.js → chunk-KLOMACIR.js} +6 -6
  88. package/chunks/{chunk-XJ6IMYUS.js → chunk-KWX56CHZ.js} +7 -7
  89. package/chunks/{chunk-Y2HK3ELT.js → chunk-LCX5B364.js} +3 -3
  90. package/chunks/{chunk-JRTJEGSP.js → chunk-LSRI3ND3.js} +1 -1
  91. package/chunks/{chunk-T4G33L3W.js → chunk-LUISTZXI.js} +3 -3
  92. package/chunks/{chunk-Q7ALOKK7.js → chunk-MAKIANMX.js} +3 -3
  93. package/chunks/{chunk-QXFAQDBV.js → chunk-MDNUCDKZ.js} +2 -2
  94. package/chunks/{chunk-BXAGPCYH.js → chunk-MELQSJOU.js} +1 -1
  95. package/chunks/{chunk-B7IBCWDW.js → chunk-MUNA4QDC.js} +4 -4
  96. package/chunks/{chunk-3MJ44LNC.js → chunk-N4SVADAV.js} +264 -138
  97. package/chunks/{chunk-KK3FEHPJ.js → chunk-NLFLYSS4.js} +1 -1
  98. package/chunks/{chunk-UPUAGRKY.js → chunk-NW2GIPG3.js} +2 -4
  99. package/chunks/{chunk-LSMCI42W.js → chunk-NX4A23LY.js} +3 -3
  100. package/chunks/{chunk-TN3REXN4.js → chunk-OK47XBYH.js} +79 -36
  101. package/chunks/{chunk-L3YACXS2.js → chunk-OPVF453Q.js} +3 -3
  102. package/chunks/{chunk-NX5QZVRS.js → chunk-OR64CU46.js} +1 -1
  103. package/chunks/{chunk-JOVJCXN4.js → chunk-OWGRUU7F.js} +1 -1
  104. package/chunks/{chunk-V2U6FOJB.js → chunk-OWXFBIB6.js} +1 -1
  105. package/chunks/{chunk-6LDLDK6E.js → chunk-OYWVIXHT.js} +1 -3
  106. package/chunks/{chunk-V7RNNPGC.js → chunk-P5Y23G2L.js} +18 -1
  107. package/chunks/{chunk-32SNBMNP.js → chunk-PTSEETCO.js} +27 -27
  108. package/chunks/{chunk-C2DR57L6.js → chunk-PVXEJB66.js} +1 -1
  109. package/chunks/{chunk-O6SLWH4X.js → chunk-PZW46OTB.js} +2 -2
  110. package/chunks/{chunk-ECDXUCEO.js → chunk-Q4ZPYNIZ.js} +4 -4
  111. package/chunks/{chunk-QSWDGAIC.js → chunk-QILD6R27.js} +1 -1
  112. package/chunks/{chunk-6SU6OW5Z.js → chunk-QLTATTPS.js} +1 -1
  113. package/chunks/{chunk-NM33GGOM.js → chunk-QPBFRWCP.js} +3 -3
  114. package/chunks/{chunk-DUFZ3OW6.js → chunk-QSD4UH74.js} +842 -62
  115. package/chunks/{chunk-6T5HCY34.js → chunk-RDVNSJQU.js} +3 -3
  116. package/chunks/{chunk-3JI5D6RU.js → chunk-ROIJYS5K.js} +6 -6
  117. package/chunks/{chunk-WIHSDI6U.js → chunk-RQJA2YYO.js} +4 -4
  118. package/chunks/{chunk-JRMUA53D.js → chunk-S6TCTH4Z.js} +13 -13
  119. package/chunks/{chunk-FVHLDSQS.js → chunk-SYHXR6WM.js} +5 -5
  120. package/chunks/{chunk-FTGU6G45.js → chunk-TB4YFWXG.js} +2 -2
  121. package/chunks/{chunk-SFBRH5RY.js → chunk-TDESMS7M.js} +8 -8
  122. package/chunks/{chunk-EGB2PIYM.js → chunk-TMFWI4RC.js} +1 -1
  123. package/chunks/{chunk-2N6CV4PW.js → chunk-TQDFSQQF.js} +1 -1
  124. package/chunks/{chunk-TROB4PZY.js → chunk-TTRH3RTQ.js} +4 -4
  125. package/chunks/{chunk-E74YSVIN.js → chunk-TXP5NGG3.js} +1 -1
  126. package/chunks/{chunk-E3GLDLYB.js → chunk-TYAMGABM.js} +0 -6
  127. package/chunks/{chunk-APQTLUZ3.js → chunk-UI5UGEF4.js} +129 -8
  128. package/chunks/{chunk-TNETSI2A.js → chunk-ULNWG62W.js} +3 -3
  129. package/chunks/{chunk-FNVF5RR4.js → chunk-V6OBVAST.js} +1 -1
  130. package/chunks/{chunk-BGIKUE5J.js → chunk-VIFA5VJD.js} +1 -1
  131. package/chunks/{chunk-HWCHDINS.js → chunk-VLHR7F4E.js} +595 -58
  132. package/chunks/{chunk-SKRHR6N2.js → chunk-VPV7WBVT.js} +1 -1
  133. package/chunks/{chunk-FB5CQZMK.js → chunk-WCEI6J56.js} +1 -1
  134. package/chunks/{chunk-ORR5EFCL.js → chunk-WDVDVWJ3.js} +6 -6
  135. package/chunks/{chunk-B2BKFWJK.js → chunk-WI6GIM2M.js} +2 -2
  136. package/chunks/{chunk-N56NYJWY.js → chunk-WM3LUQLO.js} +7 -7
  137. package/chunks/{chunk-JGD35ZSJ.js → chunk-X5SLJOMF.js} +9 -7
  138. package/chunks/{chunk-Y5C24BUY.js → chunk-XAFIL4BD.js} +5 -5
  139. package/chunks/{chunk-IJCZP2MA.js → chunk-XDRXOSAD.js} +3 -3
  140. package/chunks/{chunk-FXWGMPAP.js → chunk-XH3KAV2G.js} +2 -2
  141. package/chunks/{chunk-NW7SPXVG.js → chunk-YBHUXEC6.js} +1 -1
  142. package/chunks/{chunk-2ASWIM4A.js → chunk-YBVVOSOH.js} +1 -1
  143. package/chunks/{chunk-62TIEFNN.js → chunk-YCHNAKC5.js} +16 -14
  144. package/chunks/{chunk-ZRT36RSF.js → chunk-YIGGWOJE.js} +1 -1
  145. package/chunks/{chunk-ZPZANKVP.js → chunk-YILJKX2T.js} +3 -3
  146. package/chunks/{chunk-Y2EOB7WZ.js → chunk-YX2RDGAL.js} +1 -1
  147. package/chunks/{chunk-UQPLUR4A.js → chunk-ZBB5EZZV.js} +2 -2
  148. package/chunks/{chunk-U7ROFHSH.js → chunk-ZLCT4C5A.js} +1 -1
  149. package/chunks/{chunk-ZA2JN5IZ.js → chunk-ZMY2P4L3.js} +3 -3
  150. package/chunks/{chunk-LIBTBTHP.js → chunk-ZQUY3ZJU.js} +4 -4
  151. package/chunks/{computer-use-J5VUY257.js → computer-use-F4URV4TU.js} +44 -44
  152. package/chunks/{config-utils-7JZQN6L2.js → config-utils-Z3OW3IQG.js} +4 -4
  153. package/chunks/{contextCommand-RCTGC36R.js → contextCommand-IGSS2U5J.js} +43 -43
  154. package/chunks/{core-runtime-REBZ5ZYE.js → core-runtime-H5CZDN3A.js} +41 -41
  155. package/chunks/{create-sub-session-TEEUROAZ.js → create-sub-session-PA7MFTHK.js} +41 -41
  156. package/chunks/{create-sub-session-23ULO5PO.js → create-sub-session-XT6DLYOE.js} +2 -2
  157. package/chunks/{cron-create-5WUTNKNF.js → cron-create-2JZ2TWTF.js} +4 -4
  158. package/chunks/{cron-delete-JEQ27YPS.js → cron-delete-CTPD2P26.js} +4 -4
  159. package/chunks/{cron-list-IXGCA7UR.js → cron-list-V44KHAF6.js} +4 -4
  160. package/chunks/{daemon-UBVOQMWY.js → daemon-GED37WOX.js} +28 -1
  161. package/chunks/daemon-git-worktree-guard-LZDCNJGV.js +2062 -0
  162. package/chunks/{daemon-status-provider-SV7KRLJ4.js → daemon-status-provider-QYM57Z44.js} +51 -52
  163. package/chunks/{daemon-trust-policy-LFUJ4NGF.js → daemon-trust-policy-TSRVEYZR.js} +47 -47
  164. package/chunks/{daemon-trust-policy-monitor-BQZ77NDD.js → daemon-trust-policy-monitor-2K2YETMT.js} +47 -47
  165. package/chunks/{deferred-core-runtime-F4XOQJQL.js → deferred-core-runtime-FKJ3OYE7.js} +43 -43
  166. package/chunks/{devtools-X6ROTKHE.js → devtools-4QFYJT6U.js} +1 -1
  167. package/chunks/{display-image-CAD7RAUM.js → display-image-M2ELAVN4.js} +4 -4
  168. package/chunks/{dist-B3ODKYEB.js → dist-4ZPG4BY6.js} +2 -2
  169. package/chunks/{dist-CCUH2Z4C.js → dist-BROOP2EG.js} +1 -1
  170. package/chunks/{dist-DANKRAB3.js → dist-IYYN3RUT.js} +2 -2
  171. package/chunks/{dist-5VDE7U3A.js → dist-JWMKPWT5.js} +3 -1
  172. package/chunks/{dist-6RK4U6VU.js → dist-K7IQB53U.js} +1 -1
  173. package/chunks/{dist-EZHCZSW6.js → dist-MAQXAQ2Y.js} +1 -1
  174. package/chunks/{dist-362MN6CP.js → dist-WJ4BHIEW.js} +2 -2
  175. package/chunks/{dist-M3XMEIP2.js → dist-YEPL4RAW.js} +1 -1
  176. package/chunks/{earlyInputCapture-JAJXDT2N.js → earlyInputCapture-WJBSJQUF.js} +42 -42
  177. package/chunks/{edit-OXBMFY5B.js → edit-X73LA4YO.js} +49 -48
  178. package/chunks/{enter-worktree-XS4JX4PO.js → enter-worktree-CLRQTIVN.js} +46 -46
  179. package/chunks/{enterPlanMode-J6PDPFFT.js → enterPlanMode-6BDYUQ5T.js} +47 -47
  180. package/chunks/{environment-BQW6FAZL.js → environment-WOAJXJDJ.js} +43 -43
  181. package/chunks/{errors-TMSN7AZN.js → errors-7OY5MXYY.js} +43 -43
  182. package/chunks/{exit-worktree-2RIE6DAO.js → exit-worktree-TFFJXCRT.js} +46 -46
  183. package/chunks/{exitPlanMode-QQL27HU4.js → exitPlanMode-WDURQMIU.js} +41 -41
  184. package/chunks/{external-tool-guard-provider-5HTGOPGU.js → external-tool-guard-provider-TE4DRY36.js} +1 -1
  185. package/chunks/{fast-path-TSGUVE5K.js → fast-path-QQLGC37M.js} +3 -3
  186. package/chunks/{gemini-RLTFENFV.js → gemini-VHE62IJL.js} +107 -102
  187. package/chunks/{geminiContentGenerator-B6W6PSO7.js → geminiContentGenerator-VSHIEGAQ.js} +11 -11
  188. package/chunks/{glob-JKVAHWL5.js → glob-VMEEDDLO.js} +48 -48
  189. package/chunks/{goal-tools-LQFO4BRY.js → goal-tools-M4UDAZXP.js} +4 -4
  190. package/chunks/{grep-6CN23ZPS.js → grep-F4UAR7KX.js} +46 -46
  191. package/chunks/{handleAutoUpdate-Y6BUNMBG.js → handleAutoUpdate-GN7Z6QAC.js} +45 -45
  192. package/chunks/{i18n-Y5PM6L5V.js → i18n-ETW24DHW.js} +42 -42
  193. package/chunks/{image-gen-DC2IQZ73.js → image-gen-YPK2AZT4.js} +11 -11
  194. package/chunks/{initializer-OYKKBNHO.js → initializer-UA6KQ7MS.js} +48 -48
  195. package/chunks/{installationInfo-63AFHLWA.js → installationInfo-P7OTIR4P.js} +42 -42
  196. package/chunks/{keychain-token-storage-GU75J2T2.js → keychain-token-storage-NKKCUHI2.js} +2 -2
  197. package/chunks/{list-KA63R3R6.js → list-GRAMIQOT.js} +50 -50
  198. package/chunks/{list-agents-5PNMK2AM.js → list-agents-O6WSY4CT.js} +2 -2
  199. package/chunks/{loadedSettingsAdapter-IGBJN7C5.js → loadedSettingsAdapter-5O2TDS3I.js} +47 -47
  200. package/chunks/{loggingContentGenerator-Z3NADCTQ.js → loggingContentGenerator-J2J2AANS.js} +54 -45
  201. package/chunks/{loop-wakeup-OV65FEGR.js → loop-wakeup-GVQRMUKS.js} +5 -5
  202. package/chunks/{ls-RPRSX26R.js → ls-6W2D7TKU.js} +6 -6
  203. package/chunks/{lsp-IWTJWFLT.js → lsp-NJ4KFBI2.js} +2 -2
  204. package/chunks/{managed-npm-update-HA262PFM.js → managed-npm-update-WMV5ITKU.js} +42 -42
  205. package/chunks/{mcp-T5ZUOKT3.js → mcp-XLP33CAI.js} +47 -47
  206. package/chunks/{monitor-SLGY7CYB.js → monitor-2MM23VDV.js} +46 -46
  207. package/chunks/{node-YSOU44FX.js → node-UUDY34IG.js} +3 -3
  208. package/chunks/nonInteractiveCli-KTA5K6FS.js +163 -0
  209. package/chunks/{notebook-edit-STSSB5KQ.js → notebook-edit-QD4TRKLY.js} +46 -46
  210. package/chunks/{openaiContentGenerator-OQED57JE.js → openaiContentGenerator-KLHSPVN2.js} +30 -30
  211. package/chunks/{pidfile-GES3MIHH.js → pidfile-RQGZBNXT.js} +42 -42
  212. package/chunks/{processUtils-FU6VMUOL.js → processUtils-HZZDA2VV.js} +2 -2
  213. package/chunks/{qwenContentGenerator-HWJSEGUL.js → qwenContentGenerator-T75M2Z3B.js} +49 -49
  214. package/chunks/{qwenOAuth2-PAIR7XEW.js → qwenOAuth2-5QZU444W.js} +10 -10
  215. package/chunks/{read-file-IYEBTQT5.js → read-file-LOVUSBJC.js} +11 -11
  216. package/chunks/{read-mcp-resource-THCSZHXO.js → read-mcp-resource-GWCP23WG.js} +2 -2
  217. package/chunks/{record-artifact-76YYQA5F.js → record-artifact-IYQDEYMV.js} +3 -3
  218. package/chunks/{resumeHistoryUtils-WP446RP5.js → resumeHistoryUtils-LVKSSQII.js} +49 -49
  219. package/chunks/{ripGrep-VV2CRCL2.js → ripGrep-ZJSHKB6H.js} +41 -41
  220. package/chunks/{run-qwen-serve-AHQCTALV.js → run-qwen-serve-GZW7B4WK.js} +68 -61
  221. package/chunks/{runtime-AUUZGDK6.js → runtime-MYRXEO2E.js} +52 -52
  222. package/chunks/{scheduler-Y4UPEURR.js → scheduler-DPTPI6FW.js} +43 -43
  223. package/chunks/{sdk-exporters-grpc-4QKV6MCX.js → sdk-exporters-grpc-54L4LS5L.js} +2 -2
  224. package/chunks/{sdk-exporters-http-A7XLKZO7.js → sdk-exporters-http-NHBYB5FZ.js} +12 -12
  225. package/chunks/{sdk-impl-XO4UF6PR.js → sdk-impl-SK4P5WON.js} +8 -8
  226. package/chunks/{send-message-P5SLP57G.js → send-message-O7FO63UK.js} +6 -6
  227. package/chunks/{serve-WI3SE4MY.js → serve-XCG4XCDA.js} +49 -49
  228. package/chunks/{server-G6JU6UWL.js → server-AWQHKXLG.js} +122 -117
  229. package/chunks/{session-2AO2UACB.js → session-P5FKNCNR.js} +91 -94
  230. package/chunks/{settings-3HRWSH66.js → settings-CSYVIP2R.js} +46 -46
  231. package/chunks/{shell-AR7XFLHA.js → shell-EGTSUO2P.js} +41 -41
  232. package/chunks/{skill-K6NOUUYM.js → skill-IFUD72GF.js} +21 -21
  233. package/chunks/{skill-settings-IOXQYS6X.js → skill-settings-YOE7LBHE.js} +46 -46
  234. package/chunks/{spawnChannel-V6P6HF4V.js → spawnChannel-PQSZIOLY.js} +44 -46
  235. package/chunks/{standalone-update-K5G3L2OJ.js → standalone-update-RB2EGUSF.js} +43 -43
  236. package/chunks/{startInteractiveUI-TRRP52QX.js → startInteractiveUI-KMYUJ2MU.js} +3036 -2405
  237. package/chunks/{syntheticOutput-SEW4NA47.js → syntheticOutput-DVHJMUGV.js} +3 -3
  238. package/chunks/{task-create-247EAVF7.js → task-create-4NC7PDI4.js} +11 -11
  239. package/chunks/{task-list-ZJN4QHLK.js → task-list-LBSRMOC7.js} +5 -5
  240. package/chunks/{task-stop-MAYQJ42I.js → task-stop-YFNATTIM.js} +2 -2
  241. package/chunks/{task-update-SU5TMZGG.js → task-update-BPLM52GD.js} +12 -12
  242. package/chunks/{team-create-IEEEBLE2.js → team-create-B6A6MJBT.js} +46 -46
  243. package/chunks/{team-delete-3XVRPQBP.js → team-delete-MKYMYBFM.js} +5 -5
  244. package/chunks/{team-plan-approval-SJGNS5JL.js → team-plan-approval-5WO3CXXU.js} +47 -47
  245. package/chunks/{terminal-image-renderer-C4RQMC67.js → terminal-image-renderer-BTRE2GEU.js} +43 -43
  246. package/chunks/{theme-manager-IKZQJQ6C.js → theme-manager-XL2N5SBY.js} +42 -42
  247. package/chunks/{todoWrite-IE2YTCK7.js → todoWrite-K5K7NRE5.js} +4 -4
  248. package/chunks/{tool-search-4UVNFYWU.js → tool-search-QNBLXUGR.js} +17 -17
  249. package/chunks/{total-session-admission-DIN6FTZP.js → total-session-admission-N4E5SFBO.js} +47 -47
  250. package/chunks/{trustedFolders-IAHOLV6A.js → trustedFolders-MQS46LIU.js} +42 -42
  251. package/chunks/{update-relaunch-5QSJ5CWP.js → update-relaunch-536KRL33.js} +5 -5
  252. package/chunks/{updateCheck-N4RT7HOZ.js → updateCheck-QJI2SYWF.js} +45 -45
  253. package/chunks/{useAutoAcceptIndicator-25T26VZS.js → useAutoAcceptIndicator-7QASHD46.js} +50 -50
  254. package/chunks/{validateNonInterActiveAuth-MCTVPLFE.js → validateNonInterActiveAuth-ZNRGWBLV.js} +83 -85
  255. package/chunks/{version-6PLZ7PCV.js → version-DBEQAFRW.js} +1 -1
  256. package/chunks/{web-fetch-5ANX6FSM.js → web-fetch-MBIVXKPE.js} +20 -20
  257. package/chunks/{web-search-KQJWWRHW.js → web-search-4LBIN6VF.js} +16 -16
  258. package/chunks/{workflow-C57ZKFUF.js → workflow-LNMA55HY.js} +54 -53
  259. package/chunks/{workspace-providers-status-3QAE4G4Y.js → workspace-providers-status-PDDMI6ST.js} +50 -50
  260. package/chunks/{workspace-registration-store-Q3J5LV6T.js → workspace-registration-store-BGRKKIYR.js} +1 -1
  261. package/chunks/{workspace-registry-DSJ5NAII.js → workspace-registry-L4NCJ34K.js} +47 -47
  262. package/chunks/{workspace-service-QW5LH7FA.js → workspace-service-LOXYKYTR.js} +53 -53
  263. package/chunks/{workspace-skills-status-N34ALJPZ.js → workspace-skills-status-IJ5FOQI6.js} +48 -48
  264. package/chunks/{workspace-trust-reconciler-YTOL7QEV.js → workspace-trust-reconciler-H36TCR2S.js} +55 -55
  265. package/chunks/{write-file-MSFRVUZB.js → write-file-JJAY7JSP.js} +41 -41
  266. package/chunks/{zoom-image-4TQA5GHG.js → zoom-image-4MVVVM7E.js} +11 -11
  267. package/cli.js +18 -17
  268. package/package.json +3 -3
  269. package/web-shell/assets/{arc-lZ04kynw.js → arc-B-89zHN4.js} +1 -1
  270. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1wZVhzD.js → architectureDiagram-3BPJPVTR-BkcOncHk.js} +1 -1
  271. package/web-shell/assets/{blockDiagram-GPEHLZMM-CO0e0yJt.js → blockDiagram-GPEHLZMM-DQ4yboaF.js} +1 -1
  272. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dfpo6Qie.js → c4Diagram-AAUBKEIU-C_8ZjPDI.js} +1 -1
  273. package/web-shell/assets/channel-Du2WFns8.js +1 -0
  274. package/web-shell/assets/{chunk-2J33WTMH-BvxArftT.js → chunk-2J33WTMH-naKVe1Bm.js} +1 -1
  275. package/web-shell/assets/{chunk-4BX2VUAB-BS2XXjGY.js → chunk-4BX2VUAB-DdoViKT2.js} +1 -1
  276. package/web-shell/assets/{chunk-55IACEB6-CYL6h3Ph.js → chunk-55IACEB6-DUDQZEwU.js} +1 -1
  277. package/web-shell/assets/{chunk-727SXJPM-C-cWPX30.js → chunk-727SXJPM-BqpDTR5s.js} +1 -1
  278. package/web-shell/assets/{chunk-AQP2D5EJ-CJLxNbVV.js → chunk-AQP2D5EJ-CdmEknkT.js} +1 -1
  279. package/web-shell/assets/{chunk-FMBD7UC4-DwfzKywA.js → chunk-FMBD7UC4-CH7fFTLB.js} +1 -1
  280. package/web-shell/assets/{chunk-ND2GUHAM-BI5raYHQ.js → chunk-ND2GUHAM-ObgSuFKF.js} +1 -1
  281. package/web-shell/assets/{chunk-QZHKN3VN-_GkNI90J.js → chunk-QZHKN3VN-D9fKdv_s.js} +1 -1
  282. package/web-shell/assets/classDiagram-4FO5ZUOK-Zw0HafH6.js +1 -0
  283. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Zw0HafH6.js +1 -0
  284. package/web-shell/assets/{cose-bilkent-S5V4N54A-BAVLNxh9.js → cose-bilkent-S5V4N54A-CvzATMx9.js} +1 -1
  285. package/web-shell/assets/{dagre-BM42HDAG-BD4XNLqp.js → dagre-BM42HDAG-M_xU21QW.js} +1 -1
  286. package/web-shell/assets/{diagram-2AECGRRQ-WO567p8w.js → diagram-2AECGRRQ-CNrl9sW1.js} +1 -1
  287. package/web-shell/assets/{diagram-5GNKFQAL-mAk23VWO.js → diagram-5GNKFQAL-CUweVT6T.js} +1 -1
  288. package/web-shell/assets/{diagram-KO2AKTUF-YQEeHKze.js → diagram-KO2AKTUF-D3n6Lxjo.js} +1 -1
  289. package/web-shell/assets/{diagram-LMA3HP47-CMVjxAjv.js → diagram-LMA3HP47-0SeFPK4t.js} +1 -1
  290. package/web-shell/assets/{diagram-OG6HWLK6-42hPvbM-.js → diagram-OG6HWLK6-DAgyEwge.js} +1 -1
  291. package/web-shell/assets/{erDiagram-TEJ5UH35-CXU_cPfu.js → erDiagram-TEJ5UH35-CzxBBDIK.js} +1 -1
  292. package/web-shell/assets/{flowDiagram-I6XJVG4X-D-3TdhMT.js → flowDiagram-I6XJVG4X-B0uj0jyo.js} +1 -1
  293. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CsgkXolz.js → ganttDiagram-6RSMTGT7-DFzcj5km.js} +1 -1
  294. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-B6Q3PBLD.js → gitGraphDiagram-PVQCEYII-DylJ_Fc9.js} +1 -1
  295. package/web-shell/assets/index-BIGQygTL.css +5 -0
  296. package/web-shell/assets/{index-BFrkGj2B.js → index-BKSAnXU9.js} +1 -1
  297. package/web-shell/assets/index-J7OMTqAN.js +1789 -0
  298. package/web-shell/assets/{infoDiagram-5YYISTIA-jiAfSXp8.js → infoDiagram-5YYISTIA-BYMcJVMI.js} +1 -1
  299. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BWif5KeJ.js → ishikawaDiagram-YF4QCWOH-t1quI1S3.js} +1 -1
  300. package/web-shell/assets/{journeyDiagram-JHISSGLW-B-GAZthS.js → journeyDiagram-JHISSGLW-YM_QVUJm.js} +1 -1
  301. package/web-shell/assets/{kanban-definition-UN3LZRKU-9TEuATdL.js → kanban-definition-UN3LZRKU-jw8OddK1.js} +1 -1
  302. package/web-shell/assets/{linear-dy_QPfyE.js → linear-Dlr3RVuP.js} +1 -1
  303. package/web-shell/assets/{mermaid.core-DB2uLAnq.js → mermaid.core-CqGKzNzd.js} +5 -5
  304. package/web-shell/assets/{mindmap-definition-RKZ34NQL-ey_dyxi-.js → mindmap-definition-RKZ34NQL-BqureoOS.js} +1 -1
  305. package/web-shell/assets/{pieDiagram-4H26LBE5-_6BuMdDj.js → pieDiagram-4H26LBE5-Da20HkK1.js} +1 -1
  306. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-B2rM19W2.js → quadrantDiagram-W4KKPZXB-BsNlMvJy.js} +1 -1
  307. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DWj8b7vW.js → requirementDiagram-4Y6WPE33-DzVCQCse.js} +1 -1
  308. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-D5dtYh0N.js → sankeyDiagram-5OEKKPKP-BMo16voT.js} +1 -1
  309. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DVkdn_qW.js → sequenceDiagram-3UESZ5HK-Bgi-pdHk.js} +1 -1
  310. package/web-shell/assets/{stateDiagram-AJRCARHV-DgwD_fi6.js → stateDiagram-AJRCARHV-xaPQXwGk.js} +1 -1
  311. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D5RqimXD.js +1 -0
  312. package/web-shell/assets/{timeline-definition-PNZ67QCA-vNr_1UNX.js → timeline-definition-PNZ67QCA-C_9RuvKG.js} +1 -1
  313. package/web-shell/assets/{vennDiagram-CIIHVFJN-ChFcGAcu.js → vennDiagram-CIIHVFJN-Bgu6vdla.js} +1 -1
  314. package/web-shell/assets/{wardley-L42UT6IY-C8PXoSWk.js → wardley-L42UT6IY-CFTZ8IrX.js} +1 -1
  315. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-C2nqOV6i.js → wardleyDiagram-YWT4CUSO-BASW9Vmt.js} +1 -1
  316. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BntaqhSB.js → xychartDiagram-2RQKCTM6--Nh-CD3F.js} +1 -1
  317. package/web-shell/index.html +2 -2
  318. package/chunks/chunk-CJNKGZLC.js +0 -649
  319. package/chunks/chunk-L34XSHIZ.js +0 -28
  320. package/chunks/chunk-MUN34TTF.js +0 -830
  321. package/chunks/chunk-N2TNM3QB.js +0 -9
  322. package/chunks/chunk-O4MVJKSX.js +0 -622
  323. package/chunks/chunk-WLML6VIA.js +0 -18
  324. package/chunks/chunk-ZBBVBZBR.js +0 -137
  325. package/chunks/chunk-bdqvmfwv-OHYAFAAO.js +0 -17446
  326. package/chunks/dispatch-FW7DX2CR.js +0 -43
  327. package/chunks/nonInteractiveCli-R5PK5B5G.js +0 -166
  328. package/chunks/opentui-entry-UTJ6MHDI.js +0 -52344
  329. package/chunks/runtime-gate-T4ICWGQJ.js +0 -89
  330. package/chunks/wrapper-46Z24CTM.js +0 -35
  331. package/web-shell/assets/channel-BxvRq3pV.js +0 -1
  332. package/web-shell/assets/classDiagram-4FO5ZUOK-tL8nAxYf.js +0 -1
  333. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-tL8nAxYf.js +0 -1
  334. package/web-shell/assets/index-BgjULKyF.css +0 -5
  335. package/web-shell/assets/index-CxXlPYfl.js +0 -1789
  336. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BWGkVGVB.js +0 -1
  337. /package/chunks/{chunk-44CTCCLY.js → chunk-NWNEANAT.js} +0 -0
@@ -1,14 +1,9 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- recomputeMcpGating
5
- } from "./chunk-OIZWCOYC.js";
6
- import {
7
- classifyApiError
8
- } from "./chunk-V7RNNPGC.js";
9
- import {
4
+ classifyApiError,
10
5
  fireSessionDeleteHook
11
- } from "./chunk-L34XSHIZ.js";
6
+ } from "./chunk-P5Y23G2L.js";
12
7
  import {
13
8
  EXTENSION_CONTEXT_BUDGET,
14
9
  buildExtensionMentionContext,
@@ -18,17 +13,17 @@ import {
18
13
  matchMcpServerByRef,
19
14
  parseExtensionRef,
20
15
  parseMcpServerRef
21
- } from "./chunk-JGD35ZSJ.js";
22
- import "./chunk-WLML6VIA.js";
16
+ } from "./chunk-X5SLJOMF.js";
23
17
  import {
24
18
  getAvailableCommands,
25
19
  handleSlashCommand,
26
20
  insertAfterFunctionResponses,
21
+ isSlashCommand,
27
22
  normalizePartList
28
- } from "./chunk-MUN34TTF.js";
23
+ } from "./chunk-QSD4UH74.js";
29
24
  import {
30
- isSlashCommand
31
- } from "./chunk-DUFZ3OW6.js";
25
+ recomputeMcpGating
26
+ } from "./chunk-CIDQISGM.js";
32
27
  import {
33
28
  SessionIdConflictError,
34
29
  appEvents,
@@ -36,43 +31,44 @@ import {
36
31
  cleanupReviewWorktreeLeases,
37
32
  loadCliConfig,
38
33
  normalizeDisabledToolList
39
- } from "./chunk-CTEGMF77.js";
34
+ } from "./chunk-IX4PWUDU.js";
40
35
  import {
41
36
  getCommandSubcommandNames
42
- } from "./chunk-VRQD5D7R.js";
37
+ } from "./chunk-4XA4QIUA.js";
43
38
  import {
44
39
  getEffectiveSupportedModes
45
- } from "./chunk-QXFAQDBV.js";
40
+ } from "./chunk-MDNUCDKZ.js";
41
+ import "./chunk-3SH53ANB.js";
46
42
  import "./chunk-NYX53SV4.js";
47
- import "./chunk-UPUAGRKY.js";
43
+ import "./chunk-NW2GIPG3.js";
48
44
  import {
49
45
  collectContextData,
50
46
  formatContextUsageText
51
- } from "./chunk-TB6DPBE4.js";
47
+ } from "./chunk-62X3CM7Q.js";
52
48
  import "./chunk-4WGODMVR.js";
53
49
  import {
54
50
  isGoalStatusKind
55
51
  } from "./chunk-EKTCKZV5.js";
56
- import "./chunk-6LDLDK6E.js";
52
+ import "./chunk-OYWVIXHT.js";
57
53
  import {
58
54
  startNonInteractiveOpenAILogHousekeeping
59
- } from "./chunk-KB4ISUT3.js";
55
+ } from "./chunk-5AFGJNY6.js";
60
56
  import "./chunk-KW7NOTN6.js";
61
- import "./chunk-LIBTBTHP.js";
62
- import "./chunk-6T5HCY34.js";
63
- import "./chunk-L3YACXS2.js";
57
+ import "./chunk-ZQUY3ZJU.js";
58
+ import "./chunk-RDVNSJQU.js";
59
+ import "./chunk-OPVF453Q.js";
64
60
  import "./chunk-YAF2MQZ6.js";
65
61
  import {
66
62
  computeCpuPercent
67
63
  } from "./chunk-LBOVL47Y.js";
68
- import "./chunk-SFBRH5RY.js";
64
+ import "./chunk-TDESMS7M.js";
69
65
  import "./chunk-6H67XLET.js";
70
66
  import {
71
67
  beginAcpBootstrapConfigProfiling,
72
68
  buildAndFreezeAcpStartupProfile,
73
69
  endAcpBootstrapConfigProfiling,
74
70
  markAcpStartup
75
- } from "./chunk-ZZ7RUTJ4.js";
71
+ } from "./chunk-FMIH5KMQ.js";
76
72
  import {
77
73
  GENERATION_MAX_PROMPT_BYTES,
78
74
  GENERATION_TIMEOUT_MS,
@@ -95,8 +91,7 @@ import {
95
91
  shouldSuppressRememberErrorDetails,
96
92
  workspaceMemoryFailureCode,
97
93
  workspaceMemoryFailureDiagnostics
98
- } from "./chunk-UWIJU22K.js";
99
- import "./chunk-ZBBVBZBR.js";
94
+ } from "./chunk-CZ4OWGQQ.js";
100
95
  import {
101
96
  BaseEmitter,
102
97
  HistoryReplayer,
@@ -105,10 +100,10 @@ import {
105
100
  createTranscriptMessageUpdate,
106
101
  createTranscriptUsageUpdate,
107
102
  hasFullSessionContext
108
- } from "./chunk-APQTLUZ3.js";
109
- import "./chunk-EGB2PIYM.js";
103
+ } from "./chunk-UI5UGEF4.js";
104
+ import "./chunk-TMFWI4RC.js";
110
105
  import "./chunk-4NFY2S7N.js";
111
- import "./chunk-FNVF5RR4.js";
106
+ import "./chunk-V6OBVAST.js";
112
107
  import "./chunk-2MIN6GRR.js";
113
108
  import "./chunk-QHTIBUWB.js";
114
109
  import "./chunk-3Z43GZUQ.js";
@@ -126,26 +121,18 @@ import {
126
121
  buildPermissionSettings,
127
122
  normalizePermissionRules,
128
123
  readPermissionRuleSet
129
- } from "./chunk-Y2EOB7WZ.js";
124
+ } from "./chunk-YX2RDGAL.js";
130
125
  import {
131
126
  MAX_AUDIO_BYTES,
132
127
  sanitizeVoiceErrorMessage,
133
128
  transcribeVoiceAudio
134
- } from "./chunk-Y2HK3ELT.js";
129
+ } from "./chunk-LCX5B364.js";
135
130
  import {
136
131
  readVoiceModel
137
- } from "./chunk-BGIKUE5J.js";
138
- import "./chunk-5KZNWF2M.js";
132
+ } from "./chunk-VIFA5VJD.js";
133
+ import "./chunk-H7TMVHKE.js";
139
134
  import "./chunk-NTTBXH7U.js";
140
- import "./chunk-WIHSDI6U.js";
141
- import "./chunk-3SH53ANB.js";
142
- import {
143
- SESSION_SOURCE_META_KEY,
144
- parseSessionSource
145
- } from "./chunk-A2QIWDFO.js";
146
- import "./chunk-JVY7FHUZ.js";
147
- import "./chunk-WCCLLK7X.js";
148
- import "./chunk-OCPBI7J5.js";
135
+ import "./chunk-RQJA2YYO.js";
149
136
  import {
150
137
  ACP_ROUTE_ID_PREFIX,
151
138
  buildAcpModelOptions,
@@ -154,26 +141,32 @@ import {
154
141
  parseAcpModelOption,
155
142
  resolveAcpModelOption,
156
143
  sanitizeProviderBaseUrl
157
- } from "./chunk-3JI5D6RU.js";
144
+ } from "./chunk-ROIJYS5K.js";
158
145
  import {
159
146
  mapSkillConfigToStatus
160
147
  } from "./chunk-BGXZBI5B.js";
161
148
  import {
162
149
  resolveSkillSettings
163
150
  } from "./chunk-Z4X5MTRT.js";
164
- import "./chunk-N56NYJWY.js";
165
- import "./chunk-N3J3CO35.js";
151
+ import "./chunk-WM3LUQLO.js";
152
+ import "./chunk-IH4Z54RJ.js";
166
153
  import "./chunk-57OAHC2Y.js";
167
- import "./chunk-VUTOV2HG.js";
168
- import "./chunk-XY7DGTIC.js";
169
- import "./chunk-TN3REXN4.js";
170
- import "./chunk-V6WHFGST.js";
154
+ import "./chunk-BSR5AXZR.js";
155
+ import "./chunk-45NQKMYB.js";
156
+ import "./chunk-OK47XBYH.js";
171
157
  import {
172
158
  createLoadedSettingsAdapter
173
- } from "./chunk-QSMZHJ62.js";
159
+ } from "./chunk-2IVYL3IF.js";
160
+ import {
161
+ SESSION_SOURCE_META_KEY,
162
+ parseSessionSource
163
+ } from "./chunk-6P5EXEBL.js";
164
+ import "./chunk-7U5G6JXI.js";
165
+ import "./chunk-WCCLLK7X.js";
166
+ import "./chunk-OCPBI7J5.js";
174
167
  import {
175
168
  ndJsonStream
176
- } from "./chunk-2U3UCXZ3.js";
169
+ } from "./chunk-DAV4QFD5.js";
177
170
  import {
178
171
  ACP_PREFLIGHT_KINDS,
179
172
  IDLE_HOOK_EVENTS,
@@ -181,14 +174,15 @@ import {
181
174
  SERVE_STATUS_EXT_METHODS,
182
175
  STATUS_SCHEMA_VERSION,
183
176
  mapDomainErrorToErrorKind
184
- } from "./chunk-NHZF4VCD.js";
185
- import "./chunk-U7ROFHSH.js";
186
- import "./chunk-QSDPJROT.js";
177
+ } from "./chunk-HTYND72J.js";
178
+ import "./chunk-ZLCT4C5A.js";
179
+ import "./chunk-V6WHFGST.js";
187
180
  import {
188
181
  ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
189
182
  ACTIVE_WORK_HEARTBEAT_META_KEY,
190
183
  ACTIVE_WORK_HEARTBEAT_VERSION,
191
184
  ACTIVE_WORK_HOLD_CATEGORIES,
185
+ ACTIVE_WORK_LEGACY_HOLD_CATEGORIES,
192
186
  ACTIVE_WORK_NOTIFICATION_METHOD,
193
187
  CHANNEL_STARTUP_PROFILE_META_KEY,
194
188
  CHANNEL_STARTUP_PROFILE_VERSION,
@@ -212,7 +206,7 @@ import {
212
206
  WORKTREE_MCP_DEFER_META_KEY,
213
207
  clampActiveWorkIntervalMs,
214
208
  isValidTrustedModelPrompt
215
- } from "./chunk-UFHPAMAV.js";
209
+ } from "./chunk-FQDCO3CJ.js";
216
210
  import {
217
211
  NOT_CURRENTLY_GENERATING_CANCEL_MESSAGE,
218
212
  isNotCurrentlyGeneratingCancelError
@@ -220,7 +214,7 @@ import {
220
214
  import "./chunk-6PLDPT2C.js";
221
215
  import "./chunk-FYJ7W2PI.js";
222
216
  import "./chunk-YP5KH5Y7.js";
223
- import "./chunk-JW5UEE3V.js";
217
+ import "./chunk-A6NRNRKE.js";
224
218
  import "./chunk-ALMR3E6Q.js";
225
219
  import "./chunk-HIBNSEJE.js";
226
220
  import "./chunk-M5GB774H.js";
@@ -229,22 +223,24 @@ import {
229
223
  EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
230
224
  EXTERNAL_TOOL_GUARD_TOKEN_ENV,
231
225
  PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
226
+ PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV,
227
+ SHELL_EXECUTING_TOOL_NAMES,
232
228
  isValidExternalToolGuardDenialReason
233
- } from "./chunk-BKHCW2BI.js";
229
+ } from "./chunk-3VUENPWF.js";
230
+ import "./chunk-3AEKDXKT.js";
234
231
  import {
235
232
  ACP_EVENT_LOOP_STALL_RESTART_MS,
236
233
  CHANNEL_PROMPT_META_KEY
237
- } from "./chunk-ADJDLEVO.js";
234
+ } from "./chunk-AW27A43Y.js";
238
235
  import {
239
236
  AgentSideConnection,
240
237
  PROTOCOL_VERSION,
241
238
  RequestError
242
239
  } from "./chunk-IW6RQPQB.js";
243
- import "./chunk-7JL5YBSA.js";
244
240
  import {
245
241
  assembleMcpServers,
246
242
  loadMcpApprovals
247
- } from "./chunk-PYLVQ6RT.js";
243
+ } from "./chunk-3LDGOQXZ.js";
248
244
  import {
249
245
  getOutputLanguageFilePath,
250
246
  getPersistScopeForModelSelection,
@@ -253,9 +249,9 @@ import {
253
249
  resolveOutputLanguageOrPreserveAuto,
254
250
  updateOutputLanguageFile,
255
251
  writeOutputLanguageAndRegisterPath
256
- } from "./chunk-H2U4FK62.js";
252
+ } from "./chunk-3GDBZJD6.js";
257
253
  import "./chunk-RKUWKYED.js";
258
- import "./chunk-4X5J3V2I.js";
254
+ import "./chunk-FA5K6YI2.js";
259
255
  import "./chunk-GOXKNSDZ.js";
260
256
  import {
261
257
  getSystemDefaultsPath,
@@ -264,7 +260,7 @@ import {
264
260
  import {
265
261
  getCurrentLanguage,
266
262
  setLanguageAsync
267
- } from "./chunk-JXS2JNMZ.js";
263
+ } from "./chunk-IRSLAS4M.js";
268
264
  import {
269
265
  SUPPORTED_LANGUAGES
270
266
  } from "./chunk-5EJZE3FP.js";
@@ -272,17 +268,18 @@ import {
272
268
  findEnvFiles,
273
269
  preResolveHomeEnvOverrides,
274
270
  reloadEnvironment
275
- } from "./chunk-FXWGMPAP.js";
271
+ } from "./chunk-XH3KAV2G.js";
276
272
  import {
277
273
  ENV_ACP_REPEATED_TOOL_FAILURE_GUARD
278
274
  } from "./chunk-MS7GNABG.js";
279
- import "./chunk-V2U6FOJB.js";
275
+ import "./chunk-7KJPO7YH.js";
276
+ import "./chunk-OWXFBIB6.js";
280
277
  import "./chunk-WZMH7II3.js";
281
278
  import {
282
279
  isFolderTrustEnabled,
283
280
  isWorkspaceTrusted,
284
281
  loadTrustedFolders
285
- } from "./chunk-ZA2JN5IZ.js";
282
+ } from "./chunk-ZMY2P4L3.js";
286
283
  import "./chunk-NPQ5ZKRP.js";
287
284
  import "./chunk-MR3PXB6E.js";
288
285
  import "./chunk-XFSFZCM5.js";
@@ -395,7 +392,6 @@ import {
395
392
  readManyFiles,
396
393
  recordAllow,
397
394
  recordFallbackApprove,
398
- redactUrlCredentials,
399
395
  refreshMemoryAfterManagedWrite,
400
396
  refreshMemoryInstruction,
401
397
  resolveBaseUrl,
@@ -414,25 +410,25 @@ import {
414
410
  updateSetting,
415
411
  validatePlanModeShellApproval,
416
412
  validatePlanModeShellContext
417
- } from "./chunk-GHOUZ5X4.js";
413
+ } from "./chunk-EBPLKY6U.js";
418
414
  import "./chunk-GOFAQQZA.js";
419
415
  import "./chunk-5M6IDOMF.js";
420
416
  import "./chunk-TWPJO254.js";
421
417
  import {
422
418
  external_exports
423
419
  } from "./chunk-CQ35AJ4Z.js";
424
- import "./chunk-NM33GGOM.js";
425
- import "./chunk-A4BAHMJF.js";
426
- import "./chunk-ZPZANKVP.js";
427
- import "./chunk-A6GQUQ7I.js";
420
+ import "./chunk-QPBFRWCP.js";
421
+ import "./chunk-JRIVMPD2.js";
422
+ import "./chunk-YILJKX2T.js";
423
+ import "./chunk-D2RNVVH6.js";
428
424
  import {
429
425
  parsePositiveIntegerEnv
430
426
  } from "./chunk-6PVPNMXU.js";
431
- import "./chunk-JBZYGFIB.js";
427
+ import "./chunk-I7BT2MME.js";
432
428
  import "./chunk-IRH27ZC2.js";
433
429
  import "./chunk-QHWCP53L.js";
434
- import "./chunk-AAZWJAPQ.js";
435
- import "./chunk-7WUMS2UA.js";
430
+ import "./chunk-AKBFSOC5.js";
431
+ import "./chunk-DEDESZDL.js";
436
432
  import {
437
433
  promptIdContext,
438
434
  todoWorkChainContext
@@ -440,17 +436,14 @@ import {
440
436
  import "./chunk-T26EAKDL.js";
441
437
  import "./chunk-ZPJWUGCS.js";
442
438
  import "./chunk-CPBF7KYF.js";
443
- import {
444
- APPROVAL_MODES
445
- } from "./chunk-SNHBRO4C.js";
446
- import "./chunk-KTWUFHS4.js";
439
+ import "./chunk-5RUCD4ED.js";
447
440
  import "./chunk-KRXPRVGL.js";
448
441
  import {
449
442
  HookEventName,
450
443
  createHookOutput
451
- } from "./chunk-2ASWIM4A.js";
452
- import "./chunk-67F2BEYW.js";
453
- import "./chunk-TNETSI2A.js";
444
+ } from "./chunk-YBVVOSOH.js";
445
+ import "./chunk-CPFFU46D.js";
446
+ import "./chunk-ULNWG62W.js";
454
447
  import {
455
448
  GoalPersistenceUnavailableError,
456
449
  emptyGoalSnapshot,
@@ -458,9 +451,14 @@ import {
458
451
  parseGoalSnapshotV2,
459
452
  parseGoalStateCause,
460
453
  wrapUserPromptSubmitContext
461
- } from "./chunk-B66LYK4B.js";
462
- import "./chunk-VPZMLGD3.js";
454
+ } from "./chunk-DPTMKFIH.js";
463
455
  import {
456
+ APPROVAL_MODES
457
+ } from "./chunk-63FNZTWG.js";
458
+ import "./chunk-3GM5DLBI.js";
459
+ import {
460
+ AgentOutputMessageCapture,
461
+ addAgentInputMessageAttributes,
464
462
  addDaemonRequestAttribute,
465
463
  addToolArgumentsAttributes,
466
464
  addToolCallResultAttributes,
@@ -468,14 +466,43 @@ import {
468
466
  registerAcpEventLoopLagGauge,
469
467
  startEventLoopLagMonitor,
470
468
  withDaemonSpan
471
- } from "./chunk-U5C2GIN2.js";
469
+ } from "./chunk-K34GJQOZ.js";
472
470
  import "./chunk-SAH4BD2J.js";
473
- import "./chunk-2RTRFLWH.js";
471
+ import "./chunk-KLOMACIR.js";
474
472
  import {
475
473
  runWithRuntimeContentGenerator
476
- } from "./chunk-SKRHR6N2.js";
474
+ } from "./chunk-VPV7WBVT.js";
477
475
  import "./chunk-S6LOFUVP.js";
478
476
  import "./chunk-2J3OJGTL.js";
477
+ import {
478
+ FORK_SUBAGENT_TYPE,
479
+ getStartupContextLength,
480
+ isSystemReminderContent
481
+ } from "./chunk-TTRH3RTQ.js";
482
+ import "./chunk-K623ENWT.js";
483
+ import "./chunk-AQ37AY7B.js";
484
+ import "./chunk-FRHQQC2Z.js";
485
+ import {
486
+ clearCachedCredentialFile,
487
+ qwenOAuth2Events
488
+ } from "./chunk-DG4IQ6JG.js";
489
+ import "./chunk-NAVJD2PQ.js";
490
+ import "./chunk-KEC5FHLM.js";
491
+ import "./chunk-2ZWH53I4.js";
492
+ import "./chunk-P3QQPMQA.js";
493
+ import "./chunk-TB4YFWXG.js";
494
+ import "./chunk-D7QGE3RT.js";
495
+ import {
496
+ REASONING_EFFORT_TIERS,
497
+ applyReasoningEffort
498
+ } from "./chunk-KM73TBQ4.js";
499
+ import "./chunk-MPHPFVKK.js";
500
+ import "./chunk-AXMWHKXA.js";
501
+ import {
502
+ getToolCallPreparations
503
+ } from "./chunk-GLCZKT5V.js";
504
+ import "./chunk-DJ2GSRLV.js";
505
+ import "./chunk-NLFLYSS4.js";
479
506
  import {
480
507
  ConversationFinishedEvent,
481
508
  DiscoveredMCPTool,
@@ -508,26 +535,17 @@ import {
508
535
  shouldRunVisionBridge,
509
536
  splitImageParts,
510
537
  uiTelemetryService
511
- } from "./chunk-UAAWNTOC.js";
538
+ } from "./chunk-4KM2SYK5.js";
512
539
  import "./chunk-YRLW2MSX.js";
513
540
  import "./chunk-VGC4I5JJ.js";
514
541
  import {
515
542
  getAutoMemoryRoot,
516
543
  getUserAutoMemoryRoot
517
- } from "./chunk-6OJDN5ZT.js";
544
+ } from "./chunk-G6MUFRNI.js";
518
545
  import {
519
546
  runSideQuery
520
- } from "./chunk-JRTJEGSP.js";
521
- import "./chunk-O6SLWH4X.js";
522
- import "./chunk-C2DR57L6.js";
523
- import {
524
- FORK_SUBAGENT_TYPE,
525
- getStartupContextLength,
526
- isSystemReminderContent
527
- } from "./chunk-TROB4PZY.js";
528
- import "./chunk-K623ENWT.js";
529
- import "./chunk-AQ37AY7B.js";
530
- import "./chunk-UHF5VBKO.js";
547
+ } from "./chunk-LSRI3ND3.js";
548
+ import "./chunk-PVXEJB66.js";
531
549
  import {
532
550
  BaseDeclarativeTool,
533
551
  BaseToolInvocation,
@@ -535,49 +553,31 @@ import {
535
553
  ToolNames,
536
554
  canonicalToolName,
537
555
  isShellProgressData
538
- } from "./chunk-ZRT36RSF.js";
539
- import {
540
- clearCachedCredentialFile,
541
- qwenOAuth2Events
542
- } from "./chunk-CDDLHCC2.js";
543
- import "./chunk-NAVJD2PQ.js";
544
- import "./chunk-YI5G32RU.js";
545
- import "./chunk-QEWAHAW2.js";
546
- import "./chunk-P3QQPMQA.js";
547
- import "./chunk-FTGU6G45.js";
548
- import "./chunk-PSTHNTHF.js";
556
+ } from "./chunk-YIGGWOJE.js";
549
557
  import {
550
558
  AuthType,
551
559
  preloadContentGenerator
552
- } from "./chunk-XJ6IMYUS.js";
560
+ } from "./chunk-KWX56CHZ.js";
553
561
  import "./chunk-F6WFNA7U.js";
554
- import "./chunk-NW7SPXVG.js";
555
- import {
556
- REASONING_EFFORT_TIERS,
557
- applyReasoningEffort
558
- } from "./chunk-KM73TBQ4.js";
559
- import "./chunk-MPHPFVKK.js";
560
- import "./chunk-AXMWHKXA.js";
561
- import {
562
- getToolCallPreparations
563
- } from "./chunk-GLCZKT5V.js";
564
- import "./chunk-KK3FEHPJ.js";
565
562
  import "./chunk-46UV252V.js";
566
563
  import {
567
564
  DEFAULT_TOKEN_LIMIT,
568
565
  tokenLimit
569
566
  } from "./chunk-FPGTNKCP.js";
570
- import "./chunk-DJ2GSRLV.js";
571
- import "./chunk-H6BFLALJ.js";
567
+ import "./chunk-4AOVQPJU.js";
568
+ import "./chunk-PZW46OTB.js";
569
+ import "./chunk-YBHUXEC6.js";
572
570
  import {
573
571
  endToolExecutionSpan,
574
572
  endToolSpan,
573
+ getActiveInteractionSpan,
575
574
  initializeTelemetry,
575
+ redactUrlCredentials,
576
576
  runInToolSpanContext,
577
577
  startToolExecutionSpan,
578
578
  startToolSpan,
579
579
  withInteractionSpan
580
- } from "./chunk-3MJ44LNC.js";
580
+ } from "./chunk-N4SVADAV.js";
581
581
  import "./chunk-HHJLM3WQ.js";
582
582
  import {
583
583
  sessionIdContext
@@ -588,12 +588,12 @@ import {
588
588
  getErrorMessage,
589
589
  getErrorStatus,
590
590
  isSubpath
591
- } from "./chunk-YMB77M76.js";
591
+ } from "./chunk-HOSVOUDK.js";
592
592
  import "./chunk-VOQXFAY5.js";
593
- import "./chunk-BXAGPCYH.js";
593
+ import "./chunk-MELQSJOU.js";
594
594
  import {
595
595
  runExitCleanup
596
- } from "./chunk-NX5QZVRS.js";
596
+ } from "./chunk-OR64CU46.js";
597
597
  import {
598
598
  writeStderrLine,
599
599
  writeStderrLineSafe
@@ -3136,6 +3136,7 @@ var DAEMON_INVALID_TOOL_PARAMS_THRESHOLD = 3;
3136
3136
  var PERMISSION_CANCEL_SKIP_MESSAGE = "Skipped because a permission request was cancelled before the user answered; user input is required before continuing.";
3137
3137
  var LOOP_DETECTED_SKIP_MESSAGE = "Skipped because loop detection stopped the current turn before this tool call could run.";
3138
3138
  var LOOP_DETECTED_CONTEXT_MESSAGE = "System: this turn was terminated because the model exceeded tool-call safety limits. Try a different approach on the next turn.";
3139
+ var LOOP_DETECTED_TURN_ERROR_MESSAGE = "Tool-call loop protection stopped this turn. The session is still available; send a more specific instruction to continue.";
3139
3140
  var TOOL_EXECUTION_CANCELLED_MESSAGE = "Tool execution was cancelled.";
3140
3141
  var TOOL_POST_EXECUTION_CANCELLED_MESSAGE = "The tool had already completed; its output was discarded.";
3141
3142
  function createDaemonToolLoopState(repeatedToolFailureMode) {
@@ -3204,6 +3205,7 @@ __name(recordRepeatedToolFailureDecision, "recordRepeatedToolFailureDecision");
3204
3205
  function recordDaemonLoopDetected(config, promptId, loopType, message, loopState, options = {}) {
3205
3206
  if (!loopState.loopDetected) {
3206
3207
  loopState.loopDetected = true;
3208
+ loopState.loopType = loopType;
3207
3209
  debugLogger6.warn(message);
3208
3210
  try {
3209
3211
  logLoopDetected(
@@ -3221,6 +3223,25 @@ function recordDaemonLoopDetected(config, promptId, loopType, message, loopState
3221
3223
  return true;
3222
3224
  }
3223
3225
  __name(recordDaemonLoopDetected, "recordDaemonLoopDetected");
3226
+ function createLoopDetectedTurnError(loopState) {
3227
+ return new RequestError(-32603, LOOP_DETECTED_TURN_ERROR_MESSAGE, {
3228
+ code: "LOOP_DETECTED",
3229
+ errorKind: "loop_detected",
3230
+ ...loopState.loopType ? { loopType: loopState.loopType } : {}
3231
+ });
3232
+ }
3233
+ __name(createLoopDetectedTurnError, "createLoopDetectedTurnError");
3234
+ function cancelledOrThrowLoopDetected(signal, loopState) {
3235
+ if (signal.aborted) return "cancelled";
3236
+ throw createLoopDetectedTurnError(loopState);
3237
+ }
3238
+ __name(cancelledOrThrowLoopDetected, "cancelledOrThrowLoopDetected");
3239
+ function isLoopDetectedTurnError(error) {
3240
+ if (!(error instanceof RequestError)) return false;
3241
+ const data = error.data;
3242
+ return typeof data === "object" && data !== null && data.code === "LOOP_DETECTED";
3243
+ }
3244
+ __name(isLoopDetectedTurnError, "isLoopDetectedTurnError");
3224
3245
  function recordDaemonToolCalls(config, promptId, loopState, calls) {
3225
3246
  if (!loopState || loopState.loopDetected)
3226
3247
  return loopState?.loopDetected ?? false;
@@ -3484,14 +3505,16 @@ var TodoStopGuardClaimTimeoutError = class extends Error {
3484
3505
  }
3485
3506
  };
3486
3507
  function beginChannelDeliveryResponseBlock(capture) {
3487
- if (!capture) return void 0;
3488
- capture.finalText = "";
3508
+ capture?.agentOutput.beginResponse();
3509
+ if (!capture?.channelDelivery) return void 0;
3510
+ capture.channelDelivery.finalText = "";
3489
3511
  return [];
3490
3512
  }
3491
3513
  __name(beginChannelDeliveryResponseBlock, "beginChannelDeliveryResponseBlock");
3492
3514
  function commitChannelDeliveryResponseBlock(capture, responseBlock, hasFunctionCalls) {
3493
- if (capture && responseBlock && !hasFunctionCalls) {
3494
- capture.finalText = responseBlock.join("");
3515
+ capture?.agentOutput.commitResponse(hasFunctionCalls);
3516
+ if (capture?.channelDelivery && responseBlock && !hasFunctionCalls) {
3517
+ capture.channelDelivery.finalText = responseBlock.join("");
3495
3518
  }
3496
3519
  }
3497
3520
  __name(commitChannelDeliveryResponseBlock, "commitChannelDeliveryResponseBlock");
@@ -3784,6 +3807,7 @@ var Session = class {
3784
3807
  notificationAbortController = null;
3785
3808
  notificationCompletion = null;
3786
3809
  currentAgentNotificationTaskId = null;
3810
+ currentShellNotificationActive = false;
3787
3811
  persistedBackgroundNotificationTaskIds = /* @__PURE__ */ new Set();
3788
3812
  backgroundNotificationAcceptances = /* @__PURE__ */ new Map();
3789
3813
  activeAgentNotificationAcceptances = /* @__PURE__ */ new Set();
@@ -3811,6 +3835,7 @@ var Session = class {
3811
3835
  /** The exact status-change callback this Session installed, so dispose can
3812
3836
  * retract its own and nobody else's. */
3813
3837
  #statusChangeCallback;
3838
+ #shellStatusChangeCallback;
3814
3839
  workflowApprovalAbortController = new AbortController();
3815
3840
  activeTodoPlanRevision;
3816
3841
  // Modular components
@@ -4779,6 +4804,10 @@ var Session = class {
4779
4804
  for (const taskId of notificationIds) {
4780
4805
  holds.push({ category: "notification", id: taskId });
4781
4806
  }
4807
+ const shellActive = this.config.getBackgroundShellRegistry().hasRunningEntries() || this.notificationQueue.some((item) => item.kind === "shell") || this.currentShellNotificationActive;
4808
+ if (shellActive) {
4809
+ holds.push({ category: "shell", id: "background-shells" });
4810
+ }
4782
4811
  return holds;
4783
4812
  }
4784
4813
  #activeWorkChanged() {
@@ -4906,7 +4935,12 @@ var Session = class {
4906
4935
  this.#statusChangeCallback = void 0;
4907
4936
  }
4908
4937
  this.config.getMonitorRegistry().setNotificationCallback(void 0);
4909
- this.config.getBackgroundShellRegistry().setNotificationCallback(void 0);
4938
+ const shellRegistry = this.config.getBackgroundShellRegistry();
4939
+ shellRegistry.setNotificationCallback(void 0);
4940
+ if (this.#shellStatusChangeCallback) {
4941
+ shellRegistry.clearStatusChangeCallback(this.#shellStatusChangeCallback);
4942
+ this.#shellStatusChangeCallback = void 0;
4943
+ }
4910
4944
  this.config.getChatRecordingService()?.setTitleRecordedCallback(void 0);
4911
4945
  this.unsubscribeChatRecordingFailure?.();
4912
4946
  this.unsubscribeChatRecordingFailure = void 0;
@@ -5277,21 +5311,37 @@ var Session = class {
5277
5311
  }
5278
5312
  this.duplicateProviderToolCallResponseIds.clear();
5279
5313
  const channelDelivery = parsePromptChannelDelivery(params);
5280
- const channelDeliveryCapture = channelDelivery ? { finalText: "" } : void 0;
5314
+ const responseCapture = {
5315
+ ...channelDelivery ? { channelDelivery: { finalText: "" } } : {},
5316
+ agentOutput: new AgentOutputMessageCapture(this.config)
5317
+ };
5318
+ const channelPromptTurn = params._meta?.[CHANNEL_PROMPT_META_KEY] === true;
5281
5319
  let resolveCompletion;
5282
5320
  this.pendingPromptCompletion = new Promise((resolve6) => {
5283
5321
  resolveCompletion = resolve6;
5284
5322
  });
5323
+ let rejectedByLoopProtection = false;
5285
5324
  let promptResult;
5286
5325
  let promptFailed = false;
5287
5326
  try {
5288
5327
  const result = await this.#executePrompt(
5289
5328
  params,
5290
5329
  pendingSend,
5291
- channelDeliveryCapture,
5330
+ responseCapture,
5292
5331
  invocationContext,
5293
5332
  modelPrompt,
5294
- goalTurn
5333
+ // Channel turns are non-interactive deliveries: like cron,
5334
+ // background-notification, and goal turns they keep the graceful
5335
+ // end-turn handling so the collected response text is still
5336
+ // delivered. Only the authenticated CHANNEL_PROMPT_META_KEY turns
5337
+ // sent by the channel bridges qualify; the delivery meta alone
5338
+ // schedules the delivery but keeps the foreground rejection. Goal
5339
+ // turns bypass the bridge entirely, so a rejection there would
5340
+ // settle the turn as failed and pause the goal without any
5341
+ // turn_error ever being published.
5342
+ !channelPromptTurn && goalTurn === void 0,
5343
+ goalTurn,
5344
+ channelPromptTurn
5295
5345
  );
5296
5346
  promptResult = result;
5297
5347
  releasePendingSend();
@@ -5305,7 +5355,7 @@ var Session = class {
5305
5355
  source: "prompt",
5306
5356
  target: channelDelivery.target,
5307
5357
  text: normalizeChannelDeliveryText(
5308
- channelDeliveryCapture?.finalText ?? ""
5358
+ responseCapture.channelDelivery?.finalText ?? ""
5309
5359
  ),
5310
5360
  promptId: channelDelivery.deliveryId
5311
5361
  });
@@ -5318,11 +5368,17 @@ var Session = class {
5318
5368
  errorKind: error.errorKind
5319
5369
  });
5320
5370
  }
5371
+ rejectedByLoopProtection = isLoopDetectedTurnError(error);
5321
5372
  throw error;
5322
5373
  } finally {
5323
5374
  const stillOwnsPendingPrompt = this.pendingPrompt === pendingSend;
5324
5375
  releasePendingSend();
5325
- const shouldDrainAutomaticQueues = todoStopGuardPreparation.drainSupersededAutomaticQueues || this.todoStopGuardDrainAutomaticQueuesWhenIdle || this.todoStopGuard.blocksUnrelatedAutomaticTurns || this.todoStopGuard.hasCommittedContinuation || this.todoStopGuardQueuedPromptPriority;
5376
+ const shouldDrainAutomaticQueues = (
5377
+ // Loop-detected turns resolved end_turn (and drained) before loop
5378
+ // stops became rejections; keep that invariant on the new path so
5379
+ // queued cron/notification work is not stranded.
5380
+ rejectedByLoopProtection || todoStopGuardPreparation.drainSupersededAutomaticQueues || this.todoStopGuardDrainAutomaticQueuesWhenIdle || this.todoStopGuard.blocksUnrelatedAutomaticTurns || this.todoStopGuard.hasCommittedContinuation || this.todoStopGuardQueuedPromptPriority
5381
+ );
5326
5382
  if (stillOwnsPendingPrompt) {
5327
5383
  this.todoStopGuardDrainAutomaticQueuesWhenIdle = false;
5328
5384
  }
@@ -5460,7 +5516,7 @@ var Session = class {
5460
5516
  }
5461
5517
  })();
5462
5518
  }
5463
- async #executePrompt(params, pendingSend, channelDeliveryCapture, invocationContext, modelPrompt, goalTurn) {
5519
+ async #executePrompt(params, pendingSend, responseCapture, invocationContext, modelPrompt, rejectOnLoopDetected = false, goalTurn, channelTurn = false) {
5464
5520
  const sessionId = this.config.getSessionId();
5465
5521
  if (invocationContext !== void 0 && invocationContext.sessionId !== sessionId) {
5466
5522
  throw RequestError.invalidParams(
@@ -5475,15 +5531,17 @@ var Session = class {
5475
5531
  () => this.#executePromptInner(
5476
5532
  params,
5477
5533
  pendingSend,
5478
- channelDeliveryCapture,
5534
+ responseCapture,
5479
5535
  modelPrompt,
5480
- goalTurn
5536
+ rejectOnLoopDetected,
5537
+ goalTurn,
5538
+ channelTurn
5481
5539
  )
5482
5540
  )
5483
5541
  ), "execute");
5484
5542
  return goalTurn ? goalTurnContext.run(goalTurn.permit, execute) : goalTurnContext.exit(execute);
5485
5543
  }
5486
- async #executePromptInner(params, pendingSend, channelDeliveryCapture, modelPrompt, goalTurn) {
5544
+ async #executePromptInner(params, pendingSend, responseCapture, modelPrompt, rejectOnLoopDetected = false, goalTurn, channelTurn = false) {
5487
5545
  return Storage.runWithRuntimeBaseDir(
5488
5546
  this.runtimeBaseDir,
5489
5547
  this.config.getWorkingDir(),
@@ -5521,6 +5579,16 @@ var Session = class {
5521
5579
  );
5522
5580
  const isRetry = params.retry === true || params._meta?.[DAEMON_RETRY_META_KEY] === true;
5523
5581
  const isContinue = params._meta?.[DAEMON_CONTINUE_META_KEY] === true;
5582
+ if (!isRetry && !isContinue && goalTurn?.origin !== "runtime") {
5583
+ const interactionSpan = getActiveInteractionSpan();
5584
+ if (interactionSpan) {
5585
+ addAgentInputMessageAttributes(
5586
+ this.config,
5587
+ interactionSpan,
5588
+ promptDisplayText ?? promptText
5589
+ );
5590
+ }
5591
+ }
5524
5592
  let continuationParts = null;
5525
5593
  let strippedOrphanEntries = null;
5526
5594
  let orphanPushCountSnapshot = 0;
@@ -5719,7 +5787,7 @@ ${this.pendingRecoveredAgentsNotice}
5719
5787
  let nextMessage = { role: "user", parts };
5720
5788
  let turnCount = 0;
5721
5789
  const toolLoopState = createDaemonToolLoopState(
5722
- promptMetadata?.[CHANNEL_PROMPT_META_KEY] === true ? "off" : this.repeatedToolFailureGuardMode
5790
+ channelTurn ? "off" : this.repeatedToolFailureGuardMode
5723
5791
  );
5724
5792
  try {
5725
5793
  while (nextMessage !== null) {
@@ -5739,6 +5807,7 @@ ${this.pendingRecoveredAgentsNotice}
5739
5807
  pendingSend.signal
5740
5808
  );
5741
5809
  let channelDeliveryResponseBlock;
5810
+ let channelDeliveryCheckpoint = 0;
5742
5811
  try {
5743
5812
  if (goalTurn) goalTurn.modelStarted = true;
5744
5813
  const sendResult = await this.#sendMessageStreamWithAutoCompression(
@@ -5757,8 +5826,8 @@ ${this.pendingRecoveredAgentsNotice}
5757
5826
  }
5758
5827
  const responseStream = sendResult.responseStream;
5759
5828
  nextMessage = null;
5760
- channelDeliveryResponseBlock = beginChannelDeliveryResponseBlock(channelDeliveryCapture);
5761
- const channelDeliveryCheckpoint = channelDeliveryResponseBlock?.length ?? 0;
5829
+ channelDeliveryResponseBlock = beginChannelDeliveryResponseBlock(responseCapture);
5830
+ channelDeliveryCheckpoint = channelDeliveryResponseBlock?.length ?? 0;
5762
5831
  let streamFailed = false;
5763
5832
  try {
5764
5833
  for await (const resp of responseStream) {
@@ -5778,10 +5847,14 @@ ${this.pendingRecoveredAgentsNotice}
5778
5847
  part.thought
5779
5848
  );
5780
5849
  if (!part.thought) {
5850
+ responseCapture.agentOutput.appendText(part.text);
5781
5851
  channelDeliveryResponseBlock?.push(part.text);
5782
5852
  messageDisplay?.addChunk(part.text);
5783
5853
  }
5784
5854
  }
5855
+ responseCapture.agentOutput.observeFinishReason(
5856
+ candidate.finishReason
5857
+ );
5785
5858
  }
5786
5859
  if (resp.type === "chunk" /* CHUNK */ && resp.value.usageMetadata) {
5787
5860
  usageMetadata = resp.value.usageMetadata;
@@ -5794,6 +5867,9 @@ ${this.pendingRecoveredAgentsNotice}
5794
5867
  }
5795
5868
  }
5796
5869
  if (resp.type === "retry" /* RETRY */ || resp.type === "model_fallback" /* MODEL_FALLBACK */) {
5870
+ responseCapture.agentOutput.restartAttempt(
5871
+ resp.type === "retry" /* RETRY */ && resp.isContinuation === true
5872
+ );
5797
5873
  if (resp.type === "model_fallback" /* MODEL_FALLBACK */ || !resp.isContinuation) {
5798
5874
  if (channelDeliveryResponseBlock) {
5799
5875
  channelDeliveryResponseBlock.length = channelDeliveryCheckpoint;
@@ -5854,7 +5930,7 @@ ${this.pendingRecoveredAgentsNotice}
5854
5930
  await messageDisplay?.finish();
5855
5931
  }
5856
5932
  commitChannelDeliveryResponseBlock(
5857
- channelDeliveryCapture,
5933
+ responseCapture,
5858
5934
  channelDeliveryResponseBlock,
5859
5935
  functionCalls.length > 0
5860
5936
  );
@@ -5898,14 +5974,16 @@ ${this.pendingRecoveredAgentsNotice}
5898
5974
  pendingSend.signal,
5899
5975
  promptId,
5900
5976
  toolLoopState,
5901
- onFullTurnModel
5977
+ onFullTurnModel,
5978
+ rejectOnLoopDetected
5902
5979
  );
5903
5980
  nextMessage = nextAfterTools.message;
5904
5981
  if (nextAfterTools.stoppedByRepeatedToolFailure) {
5905
5982
  return {
5906
- stopReason: getAbortAwareEndTurnStopReason(
5907
- pendingSend.signal
5908
- )
5983
+ stopReason: rejectOnLoopDetected ? cancelledOrThrowLoopDetected(
5984
+ pendingSend.signal,
5985
+ toolLoopState
5986
+ ) : getAbortAwareEndTurnStopReason(pendingSend.signal)
5909
5987
  };
5910
5988
  }
5911
5989
  if (toolRun.loopDetected) {
@@ -5915,9 +5993,10 @@ ${this.pendingRecoveredAgentsNotice}
5915
5993
  pendingSend.signal
5916
5994
  );
5917
5995
  return {
5918
- stopReason: getAbortAwareEndTurnStopReason(
5919
- pendingSend.signal
5920
- )
5996
+ stopReason: rejectOnLoopDetected ? cancelledOrThrowLoopDetected(
5997
+ pendingSend.signal,
5998
+ toolLoopState
5999
+ ) : getAbortAwareEndTurnStopReason(pendingSend.signal)
5921
6000
  };
5922
6001
  }
5923
6002
  }
@@ -5925,15 +6004,22 @@ ${this.pendingRecoveredAgentsNotice}
5925
6004
  if (this.messageRewriter) {
5926
6005
  await this.messageRewriter.waitForPendingRewrites();
5927
6006
  }
5928
- return await this.#handleStopHookLoop(
6007
+ const result = await this.#handleStopHookLoop(
5929
6008
  pendingSend,
5930
6009
  promptId,
5931
6010
  hooksEnabled,
5932
6011
  messageBus,
5933
6012
  true,
5934
6013
  fullTurnModelOverride,
5935
- channelDeliveryCapture
6014
+ responseCapture,
6015
+ rejectOnLoopDetected
5936
6016
  );
6017
+ if (result.stopReason !== "cancelled") {
6018
+ responseCapture.agentOutput.writeToSpan(
6019
+ getActiveInteractionSpan()
6020
+ );
6021
+ }
6022
+ return result;
5937
6023
  } finally {
5938
6024
  logConversationFinishedEvent(
5939
6025
  this.config,
@@ -5954,7 +6040,7 @@ ${this.pendingRecoveredAgentsNotice}
5954
6040
  }
5955
6041
  );
5956
6042
  }
5957
- async #handleStopHookLoop(pendingSend, promptId, hooksEnabled, messageBus, allowExternalHooks = true, modelOverride, channelDeliveryCapture) {
6043
+ async #handleStopHookLoop(pendingSend, promptId, hooksEnabled, messageBus, allowExternalHooks = true, modelOverride, responseCapture, rejectOnLoopDetected = false) {
5958
6044
  const stopHookBlockingCap = this.config.getStopHookBlockingCap();
5959
6045
  let stopHookIterationCount = 0;
5960
6046
  let stopHookReasons = [];
@@ -6014,7 +6100,8 @@ ${this.pendingRecoveredAgentsNotice}
6014
6100
  {
6015
6101
  onFullTurnModel,
6016
6102
  getModelOverride: /* @__PURE__ */ __name(() => modelOverride, "getModelOverride"),
6017
- channelDeliveryCapture
6103
+ responseCapture,
6104
+ rejectOnLoopDetected
6018
6105
  }
6019
6106
  );
6020
6107
  if (continuation2.kind === "terminal") {
@@ -6098,7 +6185,8 @@ ${this.pendingRecoveredAgentsNotice}
6098
6185
  {
6099
6186
  onFullTurnModel,
6100
6187
  getModelOverride: /* @__PURE__ */ __name(() => modelOverride, "getModelOverride"),
6101
- channelDeliveryCapture
6188
+ responseCapture,
6189
+ rejectOnLoopDetected
6102
6190
  }
6103
6191
  );
6104
6192
  if (continuation2.kind === "terminal") {
@@ -6197,7 +6285,8 @@ ${this.pendingRecoveredAgentsNotice}
6197
6285
  } : {},
6198
6286
  onFullTurnModel,
6199
6287
  getModelOverride: /* @__PURE__ */ __name(() => modelOverride, "getModelOverride"),
6200
- channelDeliveryCapture
6288
+ responseCapture,
6289
+ rejectOnLoopDetected
6201
6290
  }
6202
6291
  );
6203
6292
  if (continuation.supersededAutomaticContinuation && externalReason) {
@@ -6264,6 +6353,7 @@ ${this.pendingRecoveredAgentsNotice}
6264
6353
  pendingSend.signal
6265
6354
  );
6266
6355
  let channelDeliveryResponseBlock;
6356
+ let channelDeliveryCheckpoint = 0;
6267
6357
  let providerSendChat;
6268
6358
  let userContentPushCountBeforeSend = 0;
6269
6359
  try {
@@ -6494,9 +6584,9 @@ ${this.pendingRecoveredAgentsNotice}
6494
6584
  const responseStream = sendResult.responseStream;
6495
6585
  nextMessage = null;
6496
6586
  channelDeliveryResponseBlock = beginChannelDeliveryResponseBlock(
6497
- options.channelDeliveryCapture
6587
+ options.responseCapture
6498
6588
  );
6499
- const channelDeliveryCheckpoint = channelDeliveryResponseBlock?.length ?? 0;
6589
+ channelDeliveryCheckpoint = channelDeliveryResponseBlock?.length ?? 0;
6500
6590
  initialSend = false;
6501
6591
  if (guardForThisSend) {
6502
6592
  const guardCommitted = this.todoStopGuard.commitContinuation(
@@ -6528,10 +6618,14 @@ ${this.pendingRecoveredAgentsNotice}
6528
6618
  part.thought
6529
6619
  );
6530
6620
  if (!part.thought) {
6621
+ options.responseCapture?.agentOutput.appendText(part.text);
6531
6622
  channelDeliveryResponseBlock?.push(part.text);
6532
6623
  messageDisplay?.addChunk(part.text);
6533
6624
  }
6534
6625
  }
6626
+ options.responseCapture?.agentOutput.observeFinishReason(
6627
+ candidate.finishReason
6628
+ );
6535
6629
  }
6536
6630
  if (response.type === "chunk" /* CHUNK */ && response.value.usageMetadata) {
6537
6631
  usageMetadata = response.value.usageMetadata;
@@ -6544,6 +6638,9 @@ ${this.pendingRecoveredAgentsNotice}
6544
6638
  }
6545
6639
  }
6546
6640
  if (response.type === "retry" /* RETRY */ || response.type === "model_fallback" /* MODEL_FALLBACK */) {
6641
+ options.responseCapture?.agentOutput.restartAttempt(
6642
+ response.type === "retry" /* RETRY */ && response.isContinuation === true
6643
+ );
6547
6644
  if (response.type === "model_fallback" /* MODEL_FALLBACK */ || !response.isContinuation) {
6548
6645
  if (channelDeliveryResponseBlock) {
6549
6646
  channelDeliveryResponseBlock.length = channelDeliveryCheckpoint;
@@ -6606,7 +6703,7 @@ ${this.pendingRecoveredAgentsNotice}
6606
6703
  }
6607
6704
  }
6608
6705
  commitChannelDeliveryResponseBlock(
6609
- options.channelDeliveryCapture,
6706
+ options.responseCapture,
6610
6707
  channelDeliveryResponseBlock,
6611
6708
  functionCalls.length > 0
6612
6709
  );
@@ -6630,7 +6727,7 @@ ${this.pendingRecoveredAgentsNotice}
6630
6727
  options.onFullTurnModel
6631
6728
  )
6632
6729
  );
6633
- if (toolRun.stopAfterPermissionCancel || toolRun.loopDetected || pendingSend.signal.aborted) {
6730
+ if (toolRun.stopAfterPermissionCancel || pendingSend.signal.aborted) {
6634
6731
  this.todoStopGuard.suspend();
6635
6732
  await this.#preserveStoppedToolRun(toolRun, pendingSend.signal);
6636
6733
  return {
@@ -6639,12 +6736,25 @@ ${this.pendingRecoveredAgentsNotice}
6639
6736
  ...supersededAutomaticContinuation ? { supersededAutomaticContinuation: true } : {}
6640
6737
  };
6641
6738
  }
6739
+ if (toolRun.loopDetected) {
6740
+ this.todoStopGuard.suspend();
6741
+ await this.#preserveStoppedToolRun(toolRun, pendingSend.signal);
6742
+ return {
6743
+ kind: "terminal",
6744
+ // Only the foreground chain rejects a loop-detected stop; cron
6745
+ // and background-notification turns keep the graceful end-turn
6746
+ // handling they had before loop stops became rejections.
6747
+ stopReason: options.rejectOnLoopDetected ? cancelledOrThrowLoopDetected(pendingSend.signal, toolLoopState) : getAbortAwareEndTurnStopReason(pendingSend.signal),
6748
+ ...supersededAutomaticContinuation ? { supersededAutomaticContinuation: true } : {}
6749
+ };
6750
+ }
6642
6751
  const nextAfterTools = await this.#buildNextMessageAfterToolRun(
6643
6752
  toolRun,
6644
6753
  pendingSend.signal,
6645
6754
  toolPromptId,
6646
6755
  toolLoopState,
6647
- options.onFullTurnModel
6756
+ options.onFullTurnModel,
6757
+ options.rejectOnLoopDetected ?? false
6648
6758
  );
6649
6759
  nextMessage = nextAfterTools.message;
6650
6760
  if (nextAfterTools.hadMidTurnUserInput) {
@@ -6949,7 +7059,7 @@ ${this.pendingRecoveredAgentsNotice}
6949
7059
  );
6950
7060
  await this.messageRewriter?.waitForPendingRewrites();
6951
7061
  }
6952
- async #buildNextMessageAfterToolRun(toolRun, abortSignal, promptId, toolLoopState, onFullTurnModel) {
7062
+ async #buildNextMessageAfterToolRun(toolRun, abortSignal, promptId, toolLoopState, onFullTurnModel, rejectOnLoopDetected = false) {
6953
7063
  if (toolRun.loopDetected) {
6954
7064
  debugLogger6.debug("Stopping ACP turn after daemon loop detection.");
6955
7065
  return { message: null, hadMidTurnUserInput: false };
@@ -7039,14 +7149,16 @@ ${this.pendingRecoveredAgentsNotice}
7039
7149
  toolLoopState,
7040
7150
  { recordToQwenLogger: false }
7041
7151
  );
7042
- try {
7043
- await this.messageEmitter.emitAgentMessage(
7044
- REPEATED_TOOL_FAILURE_STOP_MESSAGE
7045
- );
7046
- } catch (error) {
7047
- debugLogger6.warn(
7048
- `Failed to emit repeated tool failure stop message: ${this.#formatError(error)}`
7049
- );
7152
+ if (!rejectOnLoopDetected) {
7153
+ try {
7154
+ await this.messageEmitter.emitAgentMessage(
7155
+ REPEATED_TOOL_FAILURE_STOP_MESSAGE
7156
+ );
7157
+ } catch (error) {
7158
+ debugLogger6.warn(
7159
+ `Failed to emit repeated tool failure stop message: ${this.#formatError(error)}`
7160
+ );
7161
+ }
7050
7162
  }
7051
7163
  return {
7052
7164
  message: null,
@@ -7483,7 +7595,10 @@ ${this.pendingRecoveredAgentsNotice}
7483
7595
  const promptId = this.config.getSessionId() + "########cron" + Date.now();
7484
7596
  let cronHadError = false;
7485
7597
  let cronCompleted = false;
7486
- const channelDeliveryCapture = item.delivery ? { finalText: "" } : void 0;
7598
+ const responseCapture = {
7599
+ ...item.delivery ? { channelDelivery: { finalText: "" } } : {},
7600
+ agentOutput: new AgentOutputMessageCapture(this.config)
7601
+ };
7487
7602
  await withInteractionSpan(
7488
7603
  this.config,
7489
7604
  {
@@ -7596,7 +7711,7 @@ ${this.pendingRecoveredAgentsNotice}
7596
7711
  return;
7597
7712
  }
7598
7713
  const responseStream = sendResult.responseStream;
7599
- const channelDeliveryResponseBlock = beginChannelDeliveryResponseBlock(channelDeliveryCapture);
7714
+ const channelDeliveryResponseBlock = beginChannelDeliveryResponseBlock(responseCapture);
7600
7715
  const channelDeliveryCheckpoint = channelDeliveryResponseBlock?.length ?? 0;
7601
7716
  if (loopTick && turnCount === 1) {
7602
7717
  this.loopTickResolver?.markDelivered();
@@ -7622,10 +7737,14 @@ ${this.pendingRecoveredAgentsNotice}
7622
7737
  part.thought
7623
7738
  );
7624
7739
  if (!part.thought) {
7740
+ responseCapture.agentOutput.appendText(part.text);
7625
7741
  channelDeliveryResponseBlock?.push(part.text);
7626
7742
  messageDisplay?.addChunk(part.text);
7627
7743
  }
7628
7744
  }
7745
+ responseCapture.agentOutput.observeFinishReason(
7746
+ candidate.finishReason
7747
+ );
7629
7748
  }
7630
7749
  if (resp.type === "chunk" /* CHUNK */ && resp.value.usageMetadata) {
7631
7750
  usageMetadata = resp.value.usageMetadata;
@@ -7638,6 +7757,9 @@ ${this.pendingRecoveredAgentsNotice}
7638
7757
  }
7639
7758
  }
7640
7759
  if (resp.type === "retry" /* RETRY */ || resp.type === "model_fallback" /* MODEL_FALLBACK */) {
7760
+ responseCapture.agentOutput.restartAttempt(
7761
+ resp.type === "retry" /* RETRY */ && resp.isContinuation === true
7762
+ );
7641
7763
  if (resp.type === "model_fallback" /* MODEL_FALLBACK */ || !resp.isContinuation) {
7642
7764
  if (channelDeliveryResponseBlock) {
7643
7765
  channelDeliveryResponseBlock.length = channelDeliveryCheckpoint;
@@ -7666,7 +7788,7 @@ ${this.pendingRecoveredAgentsNotice}
7666
7788
  }
7667
7789
  }
7668
7790
  commitChannelDeliveryResponseBlock(
7669
- channelDeliveryCapture,
7791
+ responseCapture,
7670
7792
  channelDeliveryResponseBlock,
7671
7793
  functionCalls.length > 0
7672
7794
  );
@@ -7717,7 +7839,7 @@ ${this.pendingRecoveredAgentsNotice}
7717
7839
  void 0,
7718
7840
  false,
7719
7841
  void 0,
7720
- channelDeliveryCapture
7842
+ responseCapture
7721
7843
  );
7722
7844
  stopReason = guardStop.stopReason;
7723
7845
  if (guardStop.stopReason === "max_tokens") {
@@ -7750,6 +7872,11 @@ ${this.pendingRecoveredAgentsNotice}
7750
7872
  )
7751
7873
  );
7752
7874
  }
7875
+ if (!ac.signal.aborted && !cronHadError) {
7876
+ responseCapture.agentOutput.writeToSpan(
7877
+ getActiveInteractionSpan()
7878
+ );
7879
+ }
7753
7880
  },
7754
7881
  () => ac.signal.aborted ? "cancelled" : cronHadError ? "error" : "ok"
7755
7882
  );
@@ -7760,7 +7887,7 @@ ${this.pendingRecoveredAgentsNotice}
7760
7887
  source: "scheduled",
7761
7888
  target: item.delivery.target,
7762
7889
  text: normalizeChannelDeliveryText(
7763
- channelDeliveryCapture?.finalText ?? ""
7890
+ responseCapture.channelDelivery?.finalText ?? ""
7764
7891
  ),
7765
7892
  taskId: item.taskId,
7766
7893
  firedAt: item.firedAt
@@ -7832,6 +7959,10 @@ ${this.pendingRecoveredAgentsNotice}
7832
7959
  });
7833
7960
  });
7834
7961
  const shellRegistry = this.config.getBackgroundShellRegistry();
7962
+ this.#shellStatusChangeCallback = () => {
7963
+ this.#activeWorkChanged();
7964
+ };
7965
+ shellRegistry.setStatusChangeCallback(this.#shellStatusChangeCallback);
7835
7966
  shellRegistry.setNotificationCallback((displayText, modelText, meta) => {
7836
7967
  const entry = shellRegistry.get(meta.shellId);
7837
7968
  this.#enqueueBackgroundNotification({
@@ -7990,6 +8121,7 @@ ${this.pendingRecoveredAgentsNotice}
7990
8121
  const [item] = this.notificationQueue.splice(nextIndex, 1);
7991
8122
  if (!item) break;
7992
8123
  this.currentAgentNotificationTaskId = item.kind === "agent" ? item.taskId : null;
8124
+ this.currentShellNotificationActive = item.kind === "shell";
7993
8125
  this.#activeWorkChanged();
7994
8126
  try {
7995
8127
  await runWithInvocationContext(
@@ -8001,6 +8133,7 @@ ${this.pendingRecoveredAgentsNotice}
8001
8133
  );
8002
8134
  } finally {
8003
8135
  this.currentAgentNotificationTaskId = null;
8136
+ this.currentShellNotificationActive = false;
8004
8137
  this.#activeWorkChanged();
8005
8138
  }
8006
8139
  }
@@ -10016,6 +10149,13 @@ ${this.pendingRecoveredAgentsNotice}
10016
10149
  toolName: policyToolName,
10017
10150
  args: invocation.params,
10018
10151
  signal: activeToolAbortSignal,
10152
+ // Same identity and execution scope `CoreToolScheduler`
10153
+ // supplies. This is the path daemon ACP sessions actually
10154
+ // take, so without them a host policy that falls back to the
10155
+ // session — or reasons about where the tool runs — sees
10156
+ // neither on every call made here.
10157
+ sessionId: this.config.getSessionId(),
10158
+ cwd: this.config.getTargetDir(),
10019
10159
  ...invocationContext ? { invocationContext } : {}
10020
10160
  }
10021
10161
  );
@@ -11022,10 +11162,11 @@ ${contextPart.text}`
11022
11162
  init_esbuild_shims();
11023
11163
  var debugLogger7 = createDebugLogger("ACTIVE_WORK");
11024
11164
  var ActiveWorkReporter = class {
11025
- constructor(send, listSources, intervalMs) {
11165
+ constructor(send, listSources, intervalMs, enabledCategories) {
11026
11166
  this.send = send;
11027
11167
  this.listSources = listSources;
11028
11168
  this.intervalMs = intervalMs;
11169
+ this.#enabledCategories = new Set(enabledCategories);
11029
11170
  this.#timer = setInterval(() => {
11030
11171
  this.#publish();
11031
11172
  }, intervalMs);
@@ -11040,6 +11181,7 @@ var ActiveWorkReporter = class {
11040
11181
  #coalescing = false;
11041
11182
  #timer;
11042
11183
  #disposed = false;
11184
+ #enabledCategories;
11043
11185
  /**
11044
11186
  * Note that some Session's derived state may have changed. Coalesced to
11045
11187
  * one snapshot per microtask so a burst of transitions (an agent finishing
@@ -11087,7 +11229,7 @@ var ActiveWorkReporter = class {
11087
11229
  for (const source of this.listSources()) {
11088
11230
  sessions.push({
11089
11231
  sessionId: source.sessionId,
11090
- holds: source.collectActiveWorkHolds()
11232
+ holds: source.collectActiveWorkHolds().filter((hold) => this.#enabledCategories.has(hold.category))
11091
11233
  });
11092
11234
  }
11093
11235
  } catch (error) {
@@ -13086,23 +13228,28 @@ async function deliverClientMcpMessage(connection, serverName, message, sessionI
13086
13228
  return payload;
13087
13229
  }
13088
13230
  __name(deliverClientMcpMessage, "deliverClientMcpMessage");
13089
- function createManagedExternalToolGuard(connection) {
13231
+ function createManagedExternalToolGuard(connection, options = {
13232
+ externalProviderAttached: false
13233
+ }) {
13090
13234
  return async (context) => {
13235
+ if (!options.externalProviderAttached && !SHELL_EXECUTING_TOOL_NAMES.has(context.toolName)) {
13236
+ return { allowed: true };
13237
+ }
13091
13238
  const invocation = context.invocationContext;
13092
- if (!invocation) {
13239
+ if (!invocation && options.externalProviderAttached) {
13093
13240
  throw new Error(
13094
13241
  "Managed external tool guard requires a runtime invocation context."
13095
13242
  );
13096
13243
  }
13244
+ const sessionId = invocation?.sessionId ?? context.sessionId;
13245
+ if (typeof sessionId !== "string" || sessionId.length === 0) {
13246
+ throw new Error(
13247
+ "Managed external tool guard requires a session identity."
13248
+ );
13249
+ }
13097
13250
  if (context.signal.aborted) {
13098
13251
  throw new DOMException("Tool invocation aborted", "AbortError");
13099
13252
  }
13100
- if (context.toolName === ToolNames.AGENT || context.toolName === ToolNames.WORKFLOW || context.toolName === ToolNames.CREATE_SUB_SESSION || context.toolName === ToolNames.SEND_MESSAGE) {
13101
- return {
13102
- allowed: false,
13103
- reason: "Managed external tool guard v1 does not support nested or delegated agent execution."
13104
- };
13105
- }
13106
13253
  let rejectOnAbort;
13107
13254
  const aborted = new Promise((_resolve, reject) => {
13108
13255
  rejectOnAbort = reject;
@@ -13117,11 +13264,14 @@ function createManagedExternalToolGuard(connection) {
13117
13264
  connection.extMethod(
13118
13265
  SERVE_CONTROL_EXT_METHODS.externalToolGuardPrepare,
13119
13266
  {
13120
- sessionId: invocation.sessionId,
13121
- promptId: invocation.promptId,
13267
+ sessionId,
13268
+ ...invocation ? { promptId: invocation.promptId } : {},
13122
13269
  toolCallId: context.callId,
13123
13270
  toolName: context.toolName,
13124
- arguments: context.args
13271
+ arguments: context.args,
13272
+ // A sub-agent pinned to a worktree executes here, not in the
13273
+ // session's own directory; the host validates this before use.
13274
+ ...typeof context.cwd === "string" && context.cwd.length > 0 ? { invocationCwd: context.cwd } : {}
13125
13275
  }
13126
13276
  ),
13127
13277
  aborted
@@ -13248,8 +13398,10 @@ async function runAcpAgent(config, settings, argv, options) {
13248
13398
  const privateParentCapability = options === void 0 ? process.env[PRIVATE_ACP_CAPABILITY_ENV] : options.privateParentCapability;
13249
13399
  delete process.env[PRIVATE_ACP_CAPABILITY_ENV];
13250
13400
  delete process.env[PRIVATE_EXTERNAL_TOOL_GUARD_ENV];
13401
+ delete process.env[PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV];
13251
13402
  delete process.env[EXTERNAL_TOOL_GUARD_TOKEN_ENV];
13252
13403
  const externalToolGuardRequired = options?.externalToolGuardRequired === true;
13404
+ const externalToolGuardProviderAttached = options?.externalToolGuardProviderAttached === true;
13253
13405
  if (externalToolGuardRequired && privateParentCapability === void 0) {
13254
13406
  throw new Error(
13255
13407
  "Required external tool guard is available only to a private managed ACP parent."
@@ -13331,7 +13483,9 @@ async function runAcpAgent(config, settings, argv, options) {
13331
13483
  });
13332
13484
  connection = new AgentSideConnection((conn) => {
13333
13485
  acpConnection = conn;
13334
- const managedToolInvocationGuard = externalToolGuardRequired ? createManagedExternalToolGuard(conn) : void 0;
13486
+ const managedToolInvocationGuard = externalToolGuardRequired ? createManagedExternalToolGuard(conn, {
13487
+ externalProviderAttached: externalToolGuardProviderAttached
13488
+ }) : void 0;
13335
13489
  agentInstance = new QwenAgent(
13336
13490
  config,
13337
13491
  settings,
@@ -13339,7 +13493,8 @@ async function runAcpAgent(config, settings, argv, options) {
13339
13493
  conn,
13340
13494
  privateParentCapability,
13341
13495
  sessionWriterLeaseEnabledAtStartup,
13342
- managedToolInvocationGuard
13496
+ managedToolInvocationGuard,
13497
+ externalToolGuardProviderAttached
13343
13498
  );
13344
13499
  return agentInstance;
13345
13500
  }, stream);
@@ -13645,7 +13800,7 @@ function isOwnerOnlyDirectory(stats) {
13645
13800
  }
13646
13801
  __name(isOwnerOnlyDirectory, "isOwnerOnlyDirectory");
13647
13802
  var QwenAgent = class {
13648
- constructor(config, settings, argv, connection, expectedPrivateParentCapability, sessionWriterLeaseEnabledAtStartup = false, managedToolInvocationGuard) {
13803
+ constructor(config, settings, argv, connection, expectedPrivateParentCapability, sessionWriterLeaseEnabledAtStartup = false, managedToolInvocationGuard, externalToolGuardProviderAttached = false) {
13649
13804
  this.config = config;
13650
13805
  this.settings = settings;
13651
13806
  this.argv = argv;
@@ -13653,6 +13808,7 @@ var QwenAgent = class {
13653
13808
  this.expectedPrivateParentCapability = expectedPrivateParentCapability;
13654
13809
  this.sessionWriterLeaseEnabledAtStartup = sessionWriterLeaseEnabledAtStartup;
13655
13810
  this.managedToolInvocationGuard = managedToolInvocationGuard;
13811
+ this.externalToolGuardProviderAttached = externalToolGuardProviderAttached;
13656
13812
  if (process.env["QWEN_SERVE_NO_MCP_POOL"] === "1") {
13657
13813
  this.mcpPool = void 0;
13658
13814
  this.workspaceMcpBudget = void 0;
@@ -13747,7 +13903,7 @@ var QwenAgent = class {
13747
13903
  }
13748
13904
  }
13749
13905
  rejectUnsupportedGuardedHiddenAgent(operation) {
13750
- if (this.managedToolInvocationGuard) {
13906
+ if (this.managedToolInvocationGuard && this.externalToolGuardProviderAttached) {
13751
13907
  throw RequestError.invalidParams(
13752
13908
  void 0,
13753
13909
  `Managed external tool guard v1 does not support ${operation}.`
@@ -14278,6 +14434,12 @@ var QwenAgent = class {
14278
14434
  drainTimeoutMs,
14279
14435
  "close"
14280
14436
  );
14437
+ if (opts?.onlyIfUnheld) {
14438
+ const holds = session.collectActiveWorkHolds();
14439
+ if (holds.length > 0) {
14440
+ return { closed: false, holds };
14441
+ }
14442
+ }
14281
14443
  recorder?.finalize();
14282
14444
  let flushError;
14283
14445
  try {
@@ -14411,7 +14573,7 @@ var QwenAgent = class {
14411
14573
  }
14412
14574
  this.clientCapabilities = args.clientCapabilities;
14413
14575
  const authMethods = buildAuthMethods();
14414
- const version = "0.21.12-preview.4";
14576
+ const version = "0.21.12";
14415
14577
  const response = {
14416
14578
  protocolVersion: PROTOCOL_VERSION,
14417
14579
  agentInfo: {
@@ -14455,12 +14617,17 @@ var QwenAgent = class {
14455
14617
  const activeWorkIntervalMs = activeWorkRequested ? clampActiveWorkIntervalMs(
14456
14618
  requestedActiveWork["intervalMs"]
14457
14619
  ) : void 0;
14620
+ const requestedActiveWorkCategories = activeWorkRequested ? requestedActiveWork["categories"] : void 0;
14621
+ const activeWorkCategories = activeWorkRequested ? Array.isArray(requestedActiveWorkCategories) ? ACTIVE_WORK_HOLD_CATEGORIES.filter(
14622
+ (category) => requestedActiveWorkCategories.includes(category)
14623
+ ) : ACTIVE_WORK_LEGACY_HOLD_CATEGORIES : void 0;
14458
14624
  if (activeWorkIntervalMs !== void 0) {
14459
14625
  this.activeWorkReporter?.dispose();
14460
14626
  this.activeWorkReporter = new ActiveWorkReporter(
14461
14627
  (method, params) => this.connection.extNotification(method, params),
14462
14628
  () => this.sessions.values(),
14463
- activeWorkIntervalMs
14629
+ activeWorkIntervalMs,
14630
+ activeWorkCategories ?? []
14464
14631
  );
14465
14632
  }
14466
14633
  const responseMeta = {
@@ -14472,7 +14639,7 @@ var QwenAgent = class {
14472
14639
  [ACTIVE_WORK_HEARTBEAT_META_KEY]: {
14473
14640
  v: ACTIVE_WORK_HEARTBEAT_VERSION,
14474
14641
  intervalMs: activeWorkIntervalMs,
14475
- categories: [...ACTIVE_WORK_HOLD_CATEGORIES]
14642
+ categories: [...activeWorkCategories ?? []]
14476
14643
  }
14477
14644
  } : {}
14478
14645
  };
@@ -15234,13 +15401,23 @@ var QwenAgent = class {
15234
15401
  const suppliedContext = meta[INVOCATION_CONTEXT_META_KEY];
15235
15402
  const suppliedModelPrompt = meta[DAEMON_MODEL_PROMPT_META_KEY];
15236
15403
  const suppliedPromptDisplayText = meta[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY];
15404
+ const suppliedChannelPrompt = meta[CHANNEL_PROMPT_META_KEY];
15405
+ const suppliedChannelDelivery = meta[DAEMON_CHANNEL_DELIVERY_META_KEY];
15237
15406
  delete meta[INVOCATION_CONTEXT_META_KEY];
15238
15407
  delete meta[DAEMON_MODEL_PROMPT_META_KEY];
15239
15408
  delete meta[PRIVATE_PARENT_CAPABILITY_META_KEY];
15240
15409
  delete meta[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY];
15410
+ delete meta[CHANNEL_PROMPT_META_KEY];
15411
+ delete meta[DAEMON_CHANNEL_DELIVERY_META_KEY];
15241
15412
  if (this.privateParentState === "trusted" && typeof suppliedPromptDisplayText === "string") {
15242
15413
  meta[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY] = suppliedPromptDisplayText;
15243
15414
  }
15415
+ if (this.privateParentState === "trusted" && suppliedChannelPrompt === true) {
15416
+ meta[CHANNEL_PROMPT_META_KEY] = true;
15417
+ }
15418
+ if (this.privateParentState === "trusted" && suppliedChannelDelivery !== void 0) {
15419
+ meta[DAEMON_CHANNEL_DELIVERY_META_KEY] = suppliedChannelDelivery;
15420
+ }
15244
15421
  if (Object.keys(meta).length > 0) {
15245
15422
  sanitizedParams._meta = meta;
15246
15423
  } else {
@@ -17597,7 +17774,7 @@ var QwenAgent = class {
17597
17774
  );
17598
17775
  case SERVE_CONTROL_EXT_METHODS.workspaceMemoryRememberAvailability:
17599
17776
  return {
17600
- available: !this.managedToolInvocationGuard && this.config.isManagedMemoryAvailable()
17777
+ available: !(this.managedToolInvocationGuard && this.externalToolGuardProviderAttached) && this.config.isManagedMemoryAvailable()
17601
17778
  };
17602
17779
  case SERVE_CONTROL_EXT_METHODS.workspaceMemoryRemember: {
17603
17780
  this.rejectUnsupportedGuardedHiddenAgent(
@@ -19154,7 +19331,7 @@ var QwenAgent = class {
19154
19331
  return { sessionId, answer: result.text || null };
19155
19332
  }
19156
19333
  case SERVE_CONTROL_EXT_METHODS.sessionForkAgent: {
19157
- if (this.managedToolInvocationGuard) {
19334
+ if (this.managedToolInvocationGuard && this.externalToolGuardProviderAttached) {
19158
19335
  throw RequestError.invalidParams(
19159
19336
  void 0,
19160
19337
  "Managed external tool guard v1 does not support /fork."