@qwen-code/qwen-code 0.21.1-simplify-system-prompt.0 → 0.21.1

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 (405) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +38 -28
  3. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/features/channels/github.md +107 -0
  5. package/bundled/qc-helper/docs/features/channels/overview.md +61 -6
  6. package/bundled/qc-helper/docs/features/code-review.md +1 -1
  7. package/bundled/qc-helper/docs/features/hooks.md +52 -15
  8. package/bundled/qc-helper/docs/features/mcp.md +9 -1
  9. package/bundled/qc-helper/docs/features/scheduled-tasks.md +3 -1
  10. package/bundled/qc-helper/docs/features/sub-agents.md +20 -0
  11. package/bundled/qc-helper/docs/qwen-serve.md +4 -2
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
  13. package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
  14. package/bundled/review/DESIGN.md +19 -0
  15. package/bundled/review/SKILL.md +120 -61
  16. package/chunks/MaxSizedBox-VI3ROJJA.js +84 -0
  17. package/chunks/{StandaloneSessionPicker-O6RKBPU4.js → StandaloneSessionPicker-LYXKD2EV.js} +66 -68
  18. package/chunks/{acp-startup-profiler-RV3IV562.js → acp-startup-profiler-DFVPFQ6C.js} +2 -2
  19. package/chunks/{acpAgent-HYFVXVDR.js → acpAgent-WN5SRDQO.js} +1317 -542
  20. package/chunks/agent-K6ECSM64.js +80 -0
  21. package/chunks/agent-headless-NO4Y2HOE.js +74 -0
  22. package/chunks/{anthropicContentGenerator-LXUXMOE7.js → anthropicContentGenerator-V2QOGVYD.js} +61 -20
  23. package/chunks/{artifact-tool-Y5T7GG7F.js → artifact-tool-6K6U7XYJ.js} +4 -4
  24. package/chunks/{askUserQuestion-2H6747FR.js → askUserQuestion-GD2IJJ7I.js} +4 -4
  25. package/chunks/bridge-3KJEWDNE.js +90 -0
  26. package/chunks/{build-RV63TIRH.js → build-S6DO7LMM.js} +1 -1
  27. package/chunks/{ca-25EDXPFZ.js → ca-6W3SK7OQ.js} +6 -1
  28. package/chunks/{channel-management-service-G74LFADV.js → channel-management-service-XR7GZSWF.js} +4 -4
  29. package/chunks/channel-settings-store-HW4FXXUA.js +87 -0
  30. package/chunks/{channel-worker-group-PTJIJSKC.js → channel-worker-group-XDPTDWTX.js} +9 -5
  31. package/chunks/{channel-worker-manager-WIMGM2FD.js → channel-worker-manager-YYEHVRRE.js} +9 -5
  32. package/chunks/{channel-worker-supervisor-KUFTR6P5.js → channel-worker-supervisor-74HTWA2G.js} +5 -4
  33. package/chunks/{chunk-M5JM7OSF.js → chunk-2DN4J57Y.js} +2 -3
  34. package/chunks/{chunk-WDSWXQU3.js → chunk-2FAK6PNM.js} +2 -2
  35. package/chunks/{chunk-BPJSQIJX.js → chunk-2J3OJGTL.js} +0 -2
  36. package/chunks/{chunk-EPDRMGT4.js → chunk-2LKVPASC.js} +4 -28
  37. package/chunks/{chunk-PWTZEM3C.js → chunk-2LQTH543.js} +3 -37
  38. package/chunks/{chunk-PANH4R3B.js → chunk-2N7CODY5.js} +18 -12
  39. package/chunks/{chunk-ER5LWJR6.js → chunk-2XSLTRFZ.js} +3 -3
  40. package/chunks/{chunk-6PSLCFQ2.js → chunk-3EFXSQCM.js} +18 -9
  41. package/chunks/{chunk-HIJQF5B5.js → chunk-3L2SPEBH.js} +1 -1
  42. package/chunks/{chunk-BIQWWWJN.js → chunk-4G2BISNC.js} +1 -1
  43. package/chunks/{chunk-B4UMZKMU.js → chunk-52ZSWYEG.js} +1 -1
  44. package/chunks/{chunk-YAF5VNU7.js → chunk-5KTQXHPY.js} +4 -5
  45. package/chunks/{chunk-2YZJCM5T.js → chunk-5MKRTI4T.js} +4 -4
  46. package/chunks/{chunk-DHHOYAPR.js → chunk-5TBMQLGG.js} +7 -7
  47. package/chunks/{chunk-A4UCTEB5.js → chunk-5WV5S2GT.js} +0 -1
  48. package/chunks/{chunk-FY3M44RD.js → chunk-5YKDXHUY.js} +3 -3
  49. package/chunks/{chunk-TF2X2WCT.js → chunk-5ZF5XXTS.js} +2 -2
  50. package/chunks/{chunk-K4XWPEWB.js → chunk-64LQLPL7.js} +4 -33
  51. package/chunks/{chunk-B7QDM6Z7.js → chunk-657BH7VM.js} +2 -2
  52. package/chunks/{chunk-5THCYPLO.js → chunk-65PQENQP.js} +14 -7
  53. package/chunks/{chunk-J6D3VXCC.js → chunk-6PE7N3A4.js} +17 -6
  54. package/chunks/{chunk-JZA3JUDJ.js → chunk-6QIGFD5W.js} +1 -1
  55. package/chunks/{chunk-Z5BLYMZM.js → chunk-6RPMI2AB.js} +6 -6
  56. package/chunks/{chunk-OHNBB4XR.js → chunk-75GFAX4R.js} +1 -1
  57. package/chunks/{chunk-BO4XCS7P.js → chunk-75MIQ3LV.js} +20 -85
  58. package/chunks/{chunk-52O2CIUL.js → chunk-7AEJDLRA.js} +130 -5
  59. package/chunks/{chunk-BYFNTGKI.js → chunk-7BAU433D.js} +2287 -941
  60. package/chunks/{chunk-ZE5WPL4I.js → chunk-7DXQIJID.js} +3 -3
  61. package/chunks/{chunk-ML52PL6O.js → chunk-7I5GTCT4.js} +483 -248
  62. package/chunks/{chunk-A5L3JMUA.js → chunk-7XATOOE7.js} +18 -4
  63. package/chunks/{chunk-C3NS4F2Q.js → chunk-A2D5BAVP.js} +1 -1
  64. package/chunks/{chunk-5I2IWRSH.js → chunk-A3NDJ5SB.js} +2 -2
  65. package/chunks/{chunk-2JM6GZ5D.js → chunk-A4COXFB3.js} +8 -13
  66. package/chunks/{chunk-CC4N4M36.js → chunk-AQIDMUGU.js} +1 -1
  67. package/chunks/{chunk-PJIZUQVC.js → chunk-AZQ3DT76.js} +2 -2
  68. package/chunks/{chunk-UH3WSE5L.js → chunk-B4AJNNOL.js} +1 -6
  69. package/chunks/{chunk-BJX6ZSUK.js → chunk-BCZFQXWK.js} +2 -2
  70. package/chunks/{chunk-SRZ6DXVG.js → chunk-BGTQCTQW.js} +44 -136
  71. package/chunks/{chunk-PSWQZHEA.js → chunk-BMFALVGQ.js} +1 -1
  72. package/chunks/{chunk-XHRTVPG2.js → chunk-BNWB5CYE.js} +7 -7
  73. package/chunks/{chunk-P5V4T7NK.js → chunk-BPZKP57P.js} +11 -3
  74. package/chunks/{chunk-2OM7GEXO.js → chunk-CAPPWD3X.js} +3 -3
  75. package/chunks/{chunk-LNURQEMZ.js → chunk-CQL64ESB.js} +7 -7
  76. package/chunks/{chunk-TOFQCPDC.js → chunk-CVHIL5IG.js} +4 -5
  77. package/chunks/{chunk-XVNQMZ2I.js → chunk-DGEIYUC3.js} +0 -1
  78. package/chunks/{chunk-BPZALHVR.js → chunk-DI35ZN7T.js} +1 -1
  79. package/chunks/{chunk-SQBYH7PX.js → chunk-DZLYR4U3.js} +1 -1
  80. package/chunks/{chunk-JALU3ZDU.js → chunk-EIF3FXTB.js} +117 -24
  81. package/chunks/{chunk-TQCBGUHN.js → chunk-EJGJIBRS.js} +5 -5
  82. package/chunks/{chunk-5U4IPFBR.js → chunk-EVKE2FZL.js} +4 -4
  83. package/chunks/{chunk-OKY7HXPG.js → chunk-FNMZK765.js} +2 -2
  84. package/chunks/{chunk-KU5XMLDK.js → chunk-FTD6DP4T.js} +3 -1
  85. package/chunks/chunk-FYJ7W2PI.js +194 -0
  86. package/chunks/{chunk-L5UHQJTJ.js → chunk-GATT5TKW.js} +1 -1
  87. package/chunks/{chunk-MVS3NS2N.js → chunk-GEBV2JGB.js} +28 -5
  88. package/chunks/{chunk-VAK25FTU.js → chunk-GKX7E4CO.js} +1 -1
  89. package/chunks/{chunk-LS77BEZP.js → chunk-GLCZKT5V.js} +1 -5
  90. package/chunks/{chunk-N3FAY5CM.js → chunk-GNR2RNMP.js} +157 -4
  91. package/chunks/{chunk-YH6G52F2.js → chunk-GXIJHV66.js} +4 -4
  92. package/chunks/{chunk-HV3G62R6.js → chunk-GZ3RCT54.js} +1 -1
  93. package/chunks/{chunk-QY5MMZ6O.js → chunk-HMRM2A3U.js} +3 -3
  94. package/chunks/chunk-HV26XH34.js +319 -0
  95. package/chunks/{chunk-M4UKFCZ2.js → chunk-J7OACQDE.js} +193 -155
  96. package/chunks/{chunk-3HBZKBMQ.js → chunk-JFMA7Y5M.js} +5 -5
  97. package/chunks/{chunk-OJGCZBB7.js → chunk-JHNRZMHI.js} +41 -36
  98. package/chunks/{chunk-63P4EL5V.js → chunk-JMONIXMJ.js} +1 -1
  99. package/chunks/{chunk-L26JL52R.js → chunk-JSD33JG6.js} +47 -64
  100. package/chunks/{chunk-KIUFNBHR.js → chunk-JTV5K7NH.js} +1 -1
  101. package/chunks/{chunk-PHVR5UUY.js → chunk-JX27F6QS.js} +1 -1
  102. package/chunks/chunk-JYBU6YUE.js +378 -0
  103. package/chunks/{chunk-A6UO2C7C.js → chunk-KAMYKP7E.js} +167 -81
  104. package/chunks/{chunk-LG4GZIVV.js → chunk-KCO4FLFJ.js} +4 -4
  105. package/chunks/{chunk-2W3OOD4W.js → chunk-L55JWS76.js} +6 -3
  106. package/chunks/{chunk-RHLZR4E5.js → chunk-LGAOC3ZS.js} +1 -1
  107. package/chunks/{chunk-DM22XS4K.js → chunk-LO4ROVP4.js} +261 -15
  108. package/chunks/{chunk-NH6KE4JX.js → chunk-LW3RFMG7.js} +3 -3
  109. package/chunks/{chunk-J56UI34H.js → chunk-M7OONWYU.js} +2 -2
  110. package/chunks/{chunk-V6VRAM7B.js → chunk-MHAIJPTD.js} +12 -12
  111. package/chunks/{chunk-FODK6UMO.js → chunk-MPHPFVKK.js} +0 -2
  112. package/chunks/{chunk-LZEMEFKY.js → chunk-MR5EAQ5M.js} +1 -1
  113. package/chunks/{chunk-JESCGQM3.js → chunk-NAVJD2PQ.js} +8 -7
  114. package/chunks/{chunk-H5FFA6TH.js → chunk-NOKIVHOL.js} +16 -3
  115. package/chunks/{chunk-6OUGMXDC.js → chunk-NWNEANAT.js} +7 -7
  116. package/chunks/{chunk-B6ZJ7SI6.js → chunk-OCESJA77.js} +391 -328
  117. package/chunks/chunk-OCPBI7J5.js +18 -0
  118. package/chunks/{chunk-E5TUC6CA.js → chunk-OKF7JF3R.js} +3 -3
  119. package/chunks/{chunk-2Q3OT4OV.js → chunk-P4WOAOJW.js} +141 -64
  120. package/chunks/{chunk-4M377AZG.js → chunk-PB3MBFKG.js} +6 -6
  121. package/chunks/{chunk-QPDRAXDJ.js → chunk-PLDQBIO6.js} +1 -1
  122. package/chunks/{chunk-FNQ6T3CV.js → chunk-PONHVBRT.js} +10 -7
  123. package/chunks/{chunk-RWS5VYWC.js → chunk-PT722TDT.js} +267 -378
  124. package/chunks/chunk-Q43KPN7X.js +2196 -0
  125. package/chunks/{chunk-VDDGDZMA.js → chunk-QHWCP53L.js} +14 -7
  126. package/chunks/{chunk-SASBXAQL.js → chunk-QIZKCVM3.js} +4 -4
  127. package/chunks/{chunk-32MVHM4T.js → chunk-RCUQIPTN.js} +1 -1
  128. package/chunks/{chunk-6FGBXPWM.js → chunk-RPLGZJV2.js} +38 -44
  129. package/chunks/{chunk-3IXOIAKE.js → chunk-S4WJVPZW.js} +18 -6
  130. package/chunks/{chunk-6AM5D4ME.js → chunk-S6LOFUVP.js} +0 -12
  131. package/chunks/{chunk-INADJJGW.js → chunk-S7W2GKIO.js} +0 -2
  132. package/chunks/{chunk-MUP3T3AD.js → chunk-SGFT55XI.js} +1 -35
  133. package/chunks/{chunk-VYPFXUCB.js → chunk-SZ3KHTDR.js} +1 -1
  134. package/chunks/chunk-T26EAKDL.js +13 -0
  135. package/chunks/{chunk-3MSHSCSN.js → chunk-T2QMKU3R.js} +79 -1
  136. package/chunks/{chunk-VFSJ5VRH.js → chunk-T3O2B4XO.js} +3 -3
  137. package/chunks/{chunk-MSLKI6C2.js → chunk-T4TXDL7G.js} +32 -21
  138. package/chunks/{chunk-E5WH5O3C.js → chunk-TBBV36Y4.js} +4 -4
  139. package/chunks/{chunk-VV6XU5L7.js → chunk-TCIFAA7K.js} +16 -11
  140. package/chunks/{chunk-DN6ZX5AY.js → chunk-TDL6LB4K.js} +46 -11
  141. package/chunks/{chunk-W4CQXHT6.js → chunk-TFRMVU6R.js} +1 -1
  142. package/chunks/{chunk-GDIPH4JY.js → chunk-TV64SXKD.js} +6 -6
  143. package/chunks/{chunk-FQK6JAFG.js → chunk-U3E3UQAA.js} +4 -4
  144. package/chunks/{chunk-7FZEBPKS.js → chunk-UBEPNVDI.js} +23 -18
  145. package/chunks/{chunk-NL7LTRLR.js → chunk-UHUSJ6X7.js} +29 -68
  146. package/chunks/{chunk-ZOIFNCKL.js → chunk-UPUG4GXM.js} +3 -23
  147. package/chunks/{chunk-6GMVPFB2.js → chunk-UWMLWVCA.js} +19 -6
  148. package/chunks/{chunk-U7TXFVUN.js → chunk-VCPIZRYH.js} +118 -95
  149. package/chunks/{chunk-LNARWLZQ.js → chunk-VWOOBLTY.js} +2 -2
  150. package/chunks/{chunk-I7XZ3RY5.js → chunk-VYOXCEPJ.js} +1 -1
  151. package/chunks/{chunk-USTWD7QV.js → chunk-W4MIWP6M.js} +26 -16
  152. package/chunks/{chunk-DLWL3Z7A.js → chunk-WBSMNTSV.js} +3 -3
  153. package/chunks/{chunk-G4WFQUYQ.js → chunk-WUZ7H6DP.js} +1 -1
  154. package/chunks/{chunk-2JZBVYTU.js → chunk-WZRWHXFE.js} +1 -8
  155. package/chunks/{chunk-DM4Q4JJH.js → chunk-X5WNMMIA.js} +22506 -33611
  156. package/chunks/{chunk-MK7VQDN3.js → chunk-XBYYDKAZ.js} +7 -6
  157. package/chunks/{chunk-COH43MRJ.js → chunk-XCGIMOLN.js} +27 -1
  158. package/chunks/{chunk-BRRAJXPA.js → chunk-XFZYFU3I.js} +1 -1
  159. package/chunks/{chunk-3QMGYBFN.js → chunk-XWWKIXVD.js} +1 -80
  160. package/chunks/{chunk-3SJ43L4W.js → chunk-XZC5VLBZ.js} +2 -0
  161. package/chunks/{chunk-UUUTRMI2.js → chunk-Y4IHBGBP.js} +1 -1
  162. package/chunks/{chunk-PR75REBZ.js → chunk-Y6AXW2OG.js} +12 -82
  163. package/chunks/{chunk-IPUUTYMV.js → chunk-YDLJGZHL.js} +1 -1
  164. package/chunks/{chunk-3JAQDSXN.js → chunk-YGF33UXG.js} +70 -8
  165. package/chunks/chunk-Z4X5MTRT.js +133 -0
  166. package/chunks/{chunk-UW5EOVUN.js → chunk-ZBVS26BY.js} +4 -4
  167. package/chunks/{chunk-ZD6UTE4A.js → chunk-ZHBO7WVX.js} +1 -1
  168. package/chunks/{chunk-HTO4JFDZ.js → chunk-ZPJWUGCS.js} +0 -1
  169. package/chunks/{chunk-66RMLJHC.js → chunk-ZURDMIDR.js} +355 -143
  170. package/chunks/{computer-use-DOFAHZAB.js → computer-use-ZTIDHMMA.js} +48 -50
  171. package/chunks/{config-utils-VFQXVGNR.js → config-utils-NYSXDMEQ.js} +4 -4
  172. package/chunks/contextCommand-2PIEU37Z.js +79 -0
  173. package/chunks/core-runtime-3XEYLQFK.js +133 -0
  174. package/chunks/{create-sub-session-7543K2QA.js → create-sub-session-R76FVXCI.js} +45 -47
  175. package/chunks/{create-sub-session-IWW2IZ2T.js → create-sub-session-SBYUMSSS.js} +3 -3
  176. package/chunks/{cron-create-YIID5XAW.js → cron-create-2QK6TCEC.js} +6 -6
  177. package/chunks/{cron-delete-ZVHYCEP2.js → cron-delete-FDCDFYMG.js} +5 -5
  178. package/chunks/{cron-list-XEGS463Q.js → cron-list-XN3WVBTP.js} +6 -6
  179. package/chunks/{daemon-VOMQW7KZ.js → daemon-Q2AB5Z23.js} +167 -15
  180. package/chunks/daemon-status-provider-3XJI6CAL.js +89 -0
  181. package/chunks/daemon-trust-policy-ILUDTLHD.js +84 -0
  182. package/chunks/daemon-trust-policy-monitor-HS3PKKRO.js +171 -0
  183. package/chunks/{de-HGRCYDEJ.js → de-SY6O76BF.js} +6 -1
  184. package/chunks/deferred-core-runtime-X4QV662U.js +88 -0
  185. package/chunks/dist-BSTVRPMT.js +4227 -0
  186. package/chunks/{dist-NNVBBOGU.js → dist-DOLYHMXE.js} +2 -2
  187. package/chunks/{dist-RTJFMNEZ.js → dist-HVRQ2CFL.js} +271 -11
  188. package/chunks/{dist-ANLAT3GS.js → dist-IXQEQWRG.js} +2 -1
  189. package/chunks/{dist-BRB6EXK4.js → dist-SSU66DM4.js} +3 -3
  190. package/chunks/{dist-KTYYJ2C5.js → dist-SV7Q3AWJ.js} +1 -1
  191. package/chunks/{dist-K6Y4E7FX.js → dist-YGBBMK3Z.js} +1 -1
  192. package/chunks/earlyInputCapture-XKLZT7ZD.js +81 -0
  193. package/chunks/{edit-RIEOJWKB.js → edit-HHGIOTQ2.js} +47 -49
  194. package/chunks/{en-MTWBNGDO.js → en-NBK3JKCE.js} +9 -1
  195. package/chunks/{enter-worktree-OGK5FQ3R.js → enter-worktree-ZN7PUQ46.js} +47 -49
  196. package/chunks/{enterPlanMode-IWZYALIB.js → enterPlanMode-EIFIDSIV.js} +47 -49
  197. package/chunks/{environment-VZ7BRI4Q.js → environment-XXQ75D2Q.js} +47 -49
  198. package/chunks/errors-4GMVU7CK.js +87 -0
  199. package/chunks/esm-K5FARBNI.js +5548 -0
  200. package/chunks/{exit-worktree-4TEYVIVP.js → exit-worktree-GXMI4ATY.js} +47 -49
  201. package/chunks/exitPlanMode-34UVY7M6.js +72 -0
  202. package/chunks/{fast-path-HYE7IFEV.js → fast-path-VPIVA7L6.js} +13 -3
  203. package/chunks/{fr-45RLL55O.js → fr-4KG5V7UT.js} +6 -1
  204. package/chunks/{gemini-NGRQX3YJ.js → gemini-4BWIK4WD.js} +103 -103
  205. package/chunks/{geminiContentGenerator-FQHPFZSR.js → geminiContentGenerator-3XVV5MSS.js} +7 -7
  206. package/chunks/{getMachineId-bsd-V7W3GODC.js → getMachineId-bsd-FG7IUY6U.js} +1 -1
  207. package/chunks/{getMachineId-darwin-TDO75DQP.js → getMachineId-darwin-GLCJI2RA.js} +1 -1
  208. package/chunks/{getMachineId-linux-TF43WQT2.js → getMachineId-linux-O6OPPAKO.js} +1 -1
  209. package/chunks/{getMachineId-unsupported-ZGUO3TXT.js → getMachineId-unsupported-S6CKYVGC.js} +1 -1
  210. package/chunks/{getMachineId-win-ECFYZZFQ.js → getMachineId-win-X5SRNEH7.js} +1 -1
  211. package/chunks/{glob-FRTM3X2E.js → glob-TZ2ABCJG.js} +47 -49
  212. package/chunks/{grep-RKWVROCW.js → grep-BEF463NA.js} +49 -50
  213. package/chunks/handleAutoUpdate-L6ERF36Y.js +80 -0
  214. package/chunks/i18n-FMM5FDXR.js +96 -0
  215. package/chunks/{image-gen-WIEM7KZA.js → image-gen-HHVLF7HS.js} +12 -12
  216. package/chunks/initializer-625TIAIO.js +85 -0
  217. package/chunks/installationInfo-6AM4I2Y3.js +79 -0
  218. package/chunks/{ja-B7DF7DFG.js → ja-F3GSQXMF.js} +6 -1
  219. package/chunks/{keychain-token-storage-MDTG3WRM.js → keychain-token-storage-72IYCAZV.js} +3 -3
  220. package/chunks/lib-RUF3WZA6.js +9 -0
  221. package/chunks/list-L2GA674Y.js +88 -0
  222. package/chunks/{list-agents-5KJJHR6I.js → list-agents-R6KDXQR3.js} +3 -3
  223. package/chunks/loadedSettingsAdapter-SPUTNKAV.js +82 -0
  224. package/chunks/{loggingContentGenerator-WGM27QAW.js → loggingContentGenerator-LKOF7XI7.js} +31 -30
  225. package/chunks/{loop-wakeup-FXKNNYSY.js → loop-wakeup-3IQKCYAH.js} +7 -7
  226. package/chunks/{ls-NTK6VOQJ.js → ls-DKZ37A7N.js} +5 -5
  227. package/chunks/{lsp-2JI24STP.js → lsp-QNWN7KN3.js} +3 -3
  228. package/chunks/{managed-npm-update-JQ2CG3RH.js → managed-npm-update-ACQGGIN5.js} +46 -48
  229. package/chunks/mcp-SZLHKFJW.js +82 -0
  230. package/chunks/{monitor-7FEWXX5F.js → monitor-DF52UVHI.js} +47 -49
  231. package/chunks/nonInteractiveCli-5T7KYKLK.js +144 -0
  232. package/chunks/{notebook-edit-JGJV2K6J.js → notebook-edit-FCWS4XVN.js} +47 -49
  233. package/chunks/{openaiContentGenerator-JPVXDTAO.js → openaiContentGenerator-7LDK3DCJ.js} +25 -27
  234. package/chunks/pidfile-6ERW3DF4.js +85 -0
  235. package/chunks/process-registry-2CHQBXH5.js +157 -0
  236. package/chunks/{processUtils-V2LCK6T6.js → processUtils-COKZAMUP.js} +2 -2
  237. package/chunks/{pt-22Q3FP73.js → pt-EQ33KWEN.js} +6 -1
  238. package/chunks/{qwenContentGenerator-TICV2W2Z.js → qwenContentGenerator-TKWUMR7N.js} +51 -53
  239. package/chunks/{qwenOAuth2-XGFI5XJG.js → qwenOAuth2-7HMU47SF.js} +10 -10
  240. package/chunks/read-file-X6DRC574.js +29 -0
  241. package/chunks/{read-mcp-resource-4DKQWGHD.js → read-mcp-resource-GFTWYXMK.js} +4 -4
  242. package/chunks/{record-artifact-RQKFYO5B.js → record-artifact-XAMSFSW4.js} +3 -3
  243. package/chunks/resumeHistoryUtils-PFPM2GWM.js +90 -0
  244. package/chunks/ripGrep-OWV2IVJC.js +72 -0
  245. package/chunks/{ru-FZCNZHDC.js → ru-7OZAUKGG.js} +6 -1
  246. package/chunks/{run-qwen-serve-3VCV4I7E.js → run-qwen-serve-TSTCO4XE.js} +917 -249
  247. package/chunks/{runtime-AXJWIEDU.js → runtime-DAUPSUKI.js} +55 -57
  248. package/chunks/{scheduler-RS2I6RU5.js → scheduler-KMADMT26.js} +45 -47
  249. package/chunks/{sdk-exporters-grpc-AK3LGHNO.js → sdk-exporters-grpc-54L4LS5L.js} +4 -4
  250. package/chunks/{sdk-exporters-http-FS6ZV7MF.js → sdk-exporters-http-WO556XNU.js} +7 -7
  251. package/chunks/{sdk-impl-7FZSCSXB.js → sdk-impl-LPAVACSF.js} +10 -10
  252. package/chunks/{send-message-Q6OOR6BR.js → send-message-SAWK4DZX.js} +6 -6
  253. package/chunks/serve-NNRWS6F4.js +88 -0
  254. package/chunks/{server-HRZ23U7M.js → server-WEH7DVCH.js} +3304 -842
  255. package/chunks/{session-7XHZKTVV.js → session-WXC56V2I.js} +94 -94
  256. package/chunks/{settings-7ZGZDXAS.js → settings-DJDXFDZ3.js} +54 -56
  257. package/chunks/shell-JN5VRQXD.js +82 -0
  258. package/chunks/{skill-LIWXNLDW.js → skill-SGXPKJCS.js} +20 -22
  259. package/chunks/skill-settings-VJ5PDMZI.js +90 -0
  260. package/chunks/spawnChannel-ETMJW7YX.js +81 -0
  261. package/chunks/standalone-update-MK3Z7KBI.js +91 -0
  262. package/chunks/{startInteractiveUI-IW3CSKHA.js → startInteractiveUI-ZCGIXPGT.js} +715 -373
  263. package/chunks/{syntheticOutput-I3757IWH.js → syntheticOutput-355CB6CJ.js} +4 -4
  264. package/chunks/{task-create-N7WQSGYA.js → task-create-INGWNUG4.js} +10 -10
  265. package/chunks/{task-list-FOPULZEP.js → task-list-5XNNGTF4.js} +7 -7
  266. package/chunks/{task-stop-H6RHXFVQ.js → task-stop-4ROAOBXH.js} +3 -3
  267. package/chunks/{task-update-M57TFZJT.js → task-update-CRK5VWWZ.js} +10 -10
  268. package/chunks/{team-create-O2FROQ4R.js → team-create-QQGAJG7P.js} +49 -51
  269. package/chunks/{team-delete-QE2UXJL7.js → team-delete-S2RCXA4P.js} +7 -7
  270. package/chunks/{team-plan-approval-Q6WDBXTQ.js → team-plan-approval-RT7Q5R6O.js} +47 -49
  271. package/chunks/theme-manager-EEWIQJ7J.js +76 -0
  272. package/chunks/{todoWrite-VQ7FKOHL.js → todoWrite-7WM3VDMY.js} +7 -7
  273. package/chunks/{tool-search-APECNQ3Z.js → tool-search-Z3Z4AYKP.js} +19 -21
  274. package/chunks/total-session-admission-44JKRWQD.js +84 -0
  275. package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
  276. package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
  277. package/chunks/trustedFolders-X2JEIO57.js +94 -0
  278. package/chunks/{update-relaunch-ON5MDJQG.js → update-relaunch-VWNPYDIP.js} +5 -5
  279. package/chunks/updateCheck-KAQH67DV.js +91 -0
  280. package/chunks/useAutoAcceptIndicator-JH6BCF7S.js +92 -0
  281. package/chunks/{validateNonInterActiveAuth-JBLKBKRD.js → validateNonInterActiveAuth-GIUJ2UFS.js} +88 -88
  282. package/chunks/{version-LTNUBQJY.js → version-BGLYIJUY.js} +1 -1
  283. package/chunks/{web-fetch-L5UTI53V.js → web-fetch-OTDU4VQF.js} +19 -21
  284. package/chunks/{web-search-KM33JOS3.js → web-search-FP6SIHPR.js} +13 -13
  285. package/chunks/{workflow-K7FAWV77.js → workflow-YCIVBYSB.js} +48 -50
  286. package/chunks/workspace-providers-status-S35YAIUS.js +85 -0
  287. package/chunks/{workspace-registration-store-6TGVDJV5.js → workspace-registration-store-OTMS3H4C.js} +1 -1
  288. package/chunks/workspace-registry-O63R6IZ4.js +92 -0
  289. package/chunks/workspace-service-M6LLHKJ5.js +99 -0
  290. package/chunks/workspace-skills-status-C2V7BAIS.js +85 -0
  291. package/chunks/workspace-trust-reconciler-IBUPOUJN.js +345 -0
  292. package/chunks/write-file-3BZC3EAE.js +72 -0
  293. package/chunks/xterm-headless-NTYVIBT3.js +3475 -0
  294. package/chunks/{zh-LUIGBD55.js → zh-H3YDK5QW.js} +9 -1
  295. package/chunks/{zh-TW-F5KG2IYD.js → zh-TW-JYCP7XUA.js} +9 -1
  296. package/chunks/zoom-image-TZ6S2O57.js +351 -0
  297. package/cli.js +13 -13
  298. package/locales/ca.js +7 -2
  299. package/locales/de.js +7 -2
  300. package/locales/en.js +10 -2
  301. package/locales/fr.js +7 -2
  302. package/locales/ja.js +7 -2
  303. package/locales/pt.js +7 -2
  304. package/locales/ru.js +7 -2
  305. package/locales/zh-TW.js +10 -2
  306. package/locales/zh.js +10 -2
  307. package/package.json +5 -4
  308. package/web-shell/assets/{arc-BbHijhiN.js → arc-75-Wdeo3.js} +1 -1
  309. package/web-shell/assets/{architectureDiagram-3BPJPVTR-Cb4B_JD0.js → architectureDiagram-3BPJPVTR-FKeXQbyP.js} +1 -1
  310. package/web-shell/assets/{blockDiagram-GPEHLZMM-Dsjlh3H-.js → blockDiagram-GPEHLZMM-CY0vc-A3.js} +1 -1
  311. package/web-shell/assets/{c4Diagram-AAUBKEIU-Cp5AeR4U.js → c4Diagram-AAUBKEIU-CNP-A-8u.js} +1 -1
  312. package/web-shell/assets/channel-DPYMT76A.js +1 -0
  313. package/web-shell/assets/{chunk-2J33WTMH-CLcY7W2e.js → chunk-2J33WTMH-GybS4Gii.js} +1 -1
  314. package/web-shell/assets/{chunk-4BX2VUAB-BUhvY2LR.js → chunk-4BX2VUAB-02H91V8v.js} +1 -1
  315. package/web-shell/assets/{chunk-55IACEB6-kDIFC_71.js → chunk-55IACEB6-D3M-2VT6.js} +1 -1
  316. package/web-shell/assets/{chunk-727SXJPM-CIBO15f2.js → chunk-727SXJPM-CCu29u4H.js} +1 -1
  317. package/web-shell/assets/{chunk-AQP2D5EJ-BJ_T_slV.js → chunk-AQP2D5EJ-CaFKWgrn.js} +1 -1
  318. package/web-shell/assets/{chunk-FMBD7UC4-BEkW35J8.js → chunk-FMBD7UC4-ZZpPqIwQ.js} +1 -1
  319. package/web-shell/assets/{chunk-ND2GUHAM-GGPxofay.js → chunk-ND2GUHAM-D22DqGs8.js} +1 -1
  320. package/web-shell/assets/{chunk-QZHKN3VN-Bifllrb6.js → chunk-QZHKN3VN-Bu85S0fw.js} +1 -1
  321. package/web-shell/assets/classDiagram-4FO5ZUOK--JstsIgL.js +1 -0
  322. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--JstsIgL.js +1 -0
  323. package/web-shell/assets/{cose-bilkent-S5V4N54A-C-Add_Dp.js → cose-bilkent-S5V4N54A-f1CK1Gwe.js} +1 -1
  324. package/web-shell/assets/{dagre-BM42HDAG-B7MfwNq2.js → dagre-BM42HDAG-D0Ow8F_n.js} +1 -1
  325. package/web-shell/assets/{diagram-2AECGRRQ-CY_0zuDz.js → diagram-2AECGRRQ-BPrmTWp8.js} +1 -1
  326. package/web-shell/assets/{diagram-5GNKFQAL-VyYSbCgA.js → diagram-5GNKFQAL-HccuFAzy.js} +1 -1
  327. package/web-shell/assets/{diagram-KO2AKTUF-CBiIZ2PL.js → diagram-KO2AKTUF-BrS76mbA.js} +1 -1
  328. package/web-shell/assets/{diagram-LMA3HP47-BL3CrVOx.js → diagram-LMA3HP47-V7T9lU-5.js} +1 -1
  329. package/web-shell/assets/{diagram-OG6HWLK6-CZUPx96P.js → diagram-OG6HWLK6-DKidyJMR.js} +1 -1
  330. package/web-shell/assets/{erDiagram-TEJ5UH35-B81xHr1-.js → erDiagram-TEJ5UH35-DBadZIkp.js} +1 -1
  331. package/web-shell/assets/{flowDiagram-I6XJVG4X-EZWhir-J.js → flowDiagram-I6XJVG4X-BymfqdNJ.js} +1 -1
  332. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CVFSuIAg.js → ganttDiagram-6RSMTGT7-DOw340jf.js} +1 -1
  333. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-C1H2uQDv.js → gitGraphDiagram-PVQCEYII-_8EiD8sl.js} +1 -1
  334. package/web-shell/assets/{index-BYo99NBH.js → index-CKIadvET.js} +1 -1
  335. package/web-shell/assets/index-D1eXNRHe.js +1389 -0
  336. package/web-shell/assets/index-DVLD4CQq.css +5 -0
  337. package/web-shell/assets/{infoDiagram-5YYISTIA-BwyFMlF8.js → infoDiagram-5YYISTIA-D61KYQBu.js} +1 -1
  338. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CQ7Yhn2Y.js → ishikawaDiagram-YF4QCWOH-CsiXSpNx.js} +1 -1
  339. package/web-shell/assets/{journeyDiagram-JHISSGLW-CJn2sf0l.js → journeyDiagram-JHISSGLW-Sdfionyh.js} +1 -1
  340. package/web-shell/assets/{kanban-definition-UN3LZRKU-DaNRqwVN.js → kanban-definition-UN3LZRKU-C3WI3Cnl.js} +1 -1
  341. package/web-shell/assets/{linear-DCKODZe2.js → linear-Dpigcc62.js} +1 -1
  342. package/web-shell/assets/{mermaid.core-CTGJOk27.js → mermaid.core-Ct97pqgW.js} +5 -5
  343. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BKU3_3rg.js → mindmap-definition-RKZ34NQL-BzeaN0rB.js} +1 -1
  344. package/web-shell/assets/{pieDiagram-4H26LBE5-COcwBJ82.js → pieDiagram-4H26LBE5-CvjgcbVD.js} +1 -1
  345. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CQnQ443x.js → quadrantDiagram-W4KKPZXB-BUzgTNdH.js} +1 -1
  346. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CZ2oj5cD.js → requirementDiagram-4Y6WPE33-B7zKlgUQ.js} +1 -1
  347. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BxAv5mNu.js → sankeyDiagram-5OEKKPKP-Bb9CQgrT.js} +1 -1
  348. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CztaySPs.js → sequenceDiagram-3UESZ5HK-DJ6V7itG.js} +1 -1
  349. package/web-shell/assets/{stateDiagram-AJRCARHV-CTQT1oGD.js → stateDiagram-AJRCARHV-IImflERY.js} +1 -1
  350. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CYI_YoNR.js +1 -0
  351. package/web-shell/assets/{timeline-definition-PNZ67QCA-K9Mkex5A.js → timeline-definition-PNZ67QCA-6Q_uWHKh.js} +1 -1
  352. package/web-shell/assets/{vennDiagram-CIIHVFJN-B2rVIw76.js → vennDiagram-CIIHVFJN-TmyKyjwv.js} +1 -1
  353. package/web-shell/assets/{wardley-L42UT6IY-Z1w2JR4M.js → wardley-L42UT6IY-CRh9uiPv.js} +1 -1
  354. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CIX9aKXf.js → wardleyDiagram-YWT4CUSO-59TKAW8w.js} +1 -1
  355. package/web-shell/assets/{xychartDiagram-2RQKCTM6-CI9DLIKB.js → xychartDiagram-2RQKCTM6-GCSUIK2L.js} +1 -1
  356. package/web-shell/index.html +2 -2
  357. package/chunks/MaxSizedBox-INHRH72H.js +0 -86
  358. package/chunks/agent-VXDAN5JK.js +0 -82
  359. package/chunks/agent-headless-K4ZMMNBD.js +0 -76
  360. package/chunks/bridge-LGPZCFHO.js +0 -91
  361. package/chunks/channel-settings-store-CHCDRTPY.js +0 -89
  362. package/chunks/chunk-SZRN75WQ.js +0 -29
  363. package/chunks/chunk-UGYMA4EI.js +0 -219
  364. package/chunks/chunk-VCBZUOSI.js +0 -8575
  365. package/chunks/contextCommand-QIZYHDR5.js +0 -81
  366. package/chunks/daemon-status-provider-OS5UWBHV.js +0 -90
  367. package/chunks/earlyInputCapture-WQT24RWD.js +0 -83
  368. package/chunks/errors-PCX25DVP.js +0 -89
  369. package/chunks/exitPlanMode-GHPUHBZJ.js +0 -423
  370. package/chunks/handleAutoUpdate-2CZQRJ66.js +0 -82
  371. package/chunks/i18n-XEQVMRKN.js +0 -98
  372. package/chunks/initializer-OVGZ4FLY.js +0 -87
  373. package/chunks/installationInfo-5UUQJI6Y.js +0 -81
  374. package/chunks/list-HODU6RXD.js +0 -90
  375. package/chunks/loadedSettingsAdapter-TYNLBALY.js +0 -84
  376. package/chunks/mcp-J3DFWX4A.js +0 -84
  377. package/chunks/nonInteractiveCli-F4GYSMHT.js +0 -144
  378. package/chunks/pidfile-4VNAR3EP.js +0 -87
  379. package/chunks/read-file-LZXUR4TO.js +0 -31
  380. package/chunks/resumeHistoryUtils-65OX3SGJ.js +0 -92
  381. package/chunks/ripGrep-2U2FRGMV.js +0 -74
  382. package/chunks/serve-W2GC47CM.js +0 -90
  383. package/chunks/shell-45IPBDP5.js +0 -84
  384. package/chunks/spawnChannel-PVXQ5AGV.js +0 -83
  385. package/chunks/src-AY65BYR7.js +0 -3166
  386. package/chunks/standalone-update-ZMFNKAEY.js +0 -93
  387. package/chunks/theme-manager-YYPZFBAH.js +0 -78
  388. package/chunks/total-session-admission-JXES723M.js +0 -85
  389. package/chunks/trustedFolders-HVI7IXUH.js +0 -94
  390. package/chunks/updateCheck-WUJGHWZZ.js +0 -93
  391. package/chunks/useAutoAcceptIndicator-CHSTZLZD.js +0 -94
  392. package/chunks/workspace-providers-status-GAKSF4LL.js +0 -87
  393. package/chunks/workspace-registry-A7NQUONG.js +0 -89
  394. package/chunks/workspace-service-STGVSO4N.js +0 -99
  395. package/chunks/workspace-skills-status-66AK3DUA.js +0 -86
  396. package/chunks/write-file-HUUCEG4P.js +0 -74
  397. package/web-shell/assets/channel-Bzdx6E8P.js +0 -1
  398. package/web-shell/assets/classDiagram-4FO5ZUOK-Cd6wbiuK.js +0 -1
  399. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Cd6wbiuK.js +0 -1
  400. package/web-shell/assets/index-B2bXx96W.js +0 -1249
  401. package/web-shell/assets/index-_8mKjx8q.css +0 -5
  402. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BjMdT6E_.js +0 -1
  403. package/chunks/{chunk-TARRHLLG.js → chunk-QUGAUQGJ.js} +25 -25
  404. package/chunks/{chunk-U7ZFW55U.js → chunk-VOQXFAY5.js} +977 -977
  405. /package/chunks/{chunk-LXXMOYPL.js → chunk-VXZBKKQR.js} +0 -0
@@ -5,28 +5,34 @@ import {
5
5
  } from "./chunk-VGC4I5JJ.js";
6
6
  import {
7
7
  isAnyAutoMemPath
8
- } from "./chunk-MUP3T3AD.js";
8
+ } from "./chunk-SGFT55XI.js";
9
+ import {
10
+ STRUCTURED_OUTPUT_REDACTED_ARGS
11
+ } from "./chunk-Y4IHBGBP.js";
12
+ import {
13
+ BaseDeclarativeTool,
14
+ BaseToolInvocation,
15
+ SchemaValidator,
16
+ ToolDisplayNames,
17
+ ToolNames
18
+ } from "./chunk-Y6AXW2OG.js";
9
19
  import {
10
20
  DEFAULT_QWEN_MODEL
11
- } from "./chunk-U7TXFVUN.js";
21
+ } from "./chunk-VCPIZRYH.js";
12
22
  import {
13
23
  estimateTextTokens,
14
24
  generateLegacyMcpToolName,
15
25
  normalizeToolNameForProvider
16
26
  } from "./chunk-46UV252V.js";
17
- import {
18
- require_lib
19
- } from "./chunk-A4UCTEB5.js";
20
27
  import {
21
28
  normalize
22
- } from "./chunk-UW5EOVUN.js";
29
+ } from "./chunk-ZBVS26BY.js";
23
30
  import {
24
31
  InstallationManager
25
- } from "./chunk-5I2IWRSH.js";
32
+ } from "./chunk-A3NDJ5SB.js";
26
33
  import {
27
- atomicWriteFile,
28
- atomicWriteFileSync
29
- } from "./chunk-A5L3JMUA.js";
34
+ atomicWriteFile
35
+ } from "./chunk-7XATOOE7.js";
30
36
  import {
31
37
  isTelemetrySdkInitialized,
32
38
  recordApiErrorMetrics,
@@ -47,7 +53,7 @@ import {
47
53
  recordSubagentExecutionMetrics,
48
54
  recordTokenUsageMetrics,
49
55
  recordToolCallMetrics
50
- } from "./chunk-SRZ6DXVG.js";
56
+ } from "./chunk-BGTQCTQW.js";
51
57
  import {
52
58
  require_src,
53
59
  safeJsonStringify
@@ -73,7 +79,6 @@ import {
73
79
  EVENT_EXTENSION_UNINSTALL,
74
80
  EVENT_EXTENSION_UPDATE,
75
81
  EVENT_FILE_OPERATION,
76
- EVENT_FLASH_FALLBACK,
77
82
  EVENT_IDE_CONNECTION,
78
83
  EVENT_MEMORY_DREAM,
79
84
  EVENT_MEMORY_EXTRACT,
@@ -96,21 +101,7 @@ import {
96
101
  EVENT_WORKFLOW_KEYWORD,
97
102
  EVENT_WORKFLOW_RUN,
98
103
  SERVICE_NAME
99
- } from "./chunk-INADJJGW.js";
100
- import {
101
- SemanticAttributes,
102
- init_esm
103
- } from "./chunk-U7ZFW55U.js";
104
- import {
105
- STRUCTURED_OUTPUT_REDACTED_ARGS
106
- } from "./chunk-UUUTRMI2.js";
107
- import {
108
- BaseDeclarativeTool,
109
- BaseToolInvocation,
110
- SchemaValidator,
111
- ToolDisplayNames,
112
- ToolNames
113
- } from "./chunk-PR75REBZ.js";
104
+ } from "./chunk-S7W2GKIO.js";
114
105
  import {
115
106
  Storage,
116
107
  createDebugLogger,
@@ -121,7 +112,11 @@ import {
121
112
  makeRelative,
122
113
  shortenPath,
123
114
  unescapePath
124
- } from "./chunk-NL7LTRLR.js";
115
+ } from "./chunk-UHUSJ6X7.js";
116
+ import {
117
+ SemanticAttributes,
118
+ init_esm
119
+ } from "./chunk-VOQXFAY5.js";
125
120
  import {
126
121
  require_dist
127
122
  } from "./chunk-75DOP5OR.js";
@@ -5697,7 +5692,7 @@ var require_utils = __commonJS({
5697
5692
  });
5698
5693
 
5699
5694
  // node_modules/chardet/lib/index.js
5700
- var require_lib2 = __commonJS({
5695
+ var require_lib = __commonJS({
5701
5696
  "node_modules/chardet/lib/index.js"(exports) {
5702
5697
  "use strict";
5703
5698
  init_esbuild_shims();
@@ -7399,7 +7394,7 @@ var require_lru_cache = __commonJS({
7399
7394
 
7400
7395
  // packages/core/src/tools/read-file.ts
7401
7396
  init_esbuild_shims();
7402
- import path8 from "node:path";
7397
+ import path9 from "node:path";
7403
7398
  import fs6 from "node:fs/promises";
7404
7399
 
7405
7400
  // packages/core/src/utils/fileUtils.ts
@@ -7830,12 +7825,12 @@ var Mime = class {
7830
7825
  }
7831
7826
  return this;
7832
7827
  }
7833
- getType(path9) {
7834
- if (typeof path9 !== "string")
7828
+ getType(path10) {
7829
+ if (typeof path10 !== "string")
7835
7830
  return null;
7836
- const last = path9.replace(/^.*[/\\]/s, "").toLowerCase();
7831
+ const last = path10.replace(/^.*[/\\]/s, "").toLowerCase();
7837
7832
  const ext = last.replace(/^.*\./s, "").toLowerCase();
7838
- const hasPath = last.length < path9.length;
7833
+ const hasPath = last.length < path10.length;
7839
7834
  const hasDot = ext.length < last.length - 1;
7840
7835
  if (!hasDot && hasPath)
7841
7836
  return null;
@@ -7875,28 +7870,34 @@ var Mime_default = Mime;
7875
7870
  // packages/core/node_modules/mime/dist/src/index_lite.js
7876
7871
  var index_lite_default = new Mime_default(standard_default)._freeze();
7877
7872
 
7878
- // packages/core/src/utils/iconvHelper.ts
7873
+ // packages/core/src/utils/encoding.ts
7879
7874
  init_esbuild_shims();
7880
- var import_iconv_lite = __toESM(require_lib(), 1);
7881
- var iconvLite = import_iconv_lite.default;
7882
- function iconvDecode(buffer, encoding) {
7883
- return iconvLite.decode(buffer, encoding);
7884
- }
7885
- __name(iconvDecode, "iconvDecode");
7886
- function iconvEncode(content, encoding) {
7887
- return iconvLite.encode(content, encoding);
7888
- }
7889
- __name(iconvEncode, "iconvEncode");
7890
- function iconvEncodingExists(encoding) {
7891
- return iconvLite.encodingExists(encoding);
7892
- }
7893
- __name(iconvEncodingExists, "iconvEncodingExists");
7894
7875
  function isUtf8CompatibleEncoding(encoding) {
7895
7876
  const lower = encoding.toLowerCase().replace(/[^a-z0-9]/g, "");
7896
7877
  return lower === "utf8" || lower === "ascii" || lower === "usascii";
7897
7878
  }
7898
7879
  __name(isUtf8CompatibleEncoding, "isUtf8CompatibleEncoding");
7899
7880
 
7881
+ // packages/core/src/utils/load-iconv-lite.ts
7882
+ init_esbuild_shims();
7883
+ var iconvLiteModulePromise;
7884
+ function isIconvLite(candidate) {
7885
+ return "decode" in candidate && typeof candidate.decode === "function" && "encode" in candidate && typeof candidate.encode === "function" && "encodingExists" in candidate && typeof candidate.encodingExists === "function";
7886
+ }
7887
+ __name(isIconvLite, "isIconvLite");
7888
+ function loadIconvLite() {
7889
+ iconvLiteModulePromise ??= import("./lib-RUF3WZA6.js").then((module) => {
7890
+ const imported = module;
7891
+ const candidate = "default" in imported && imported.default ? imported.default : imported;
7892
+ if (!isIconvLite(candidate)) {
7893
+ throw new Error("iconv-lite module does not match the expected API");
7894
+ }
7895
+ return candidate;
7896
+ });
7897
+ return iconvLiteModulePromise;
7898
+ }
7899
+ __name(loadIconvLite, "loadIconvLite");
7900
+
7900
7901
  // packages/core/src/utils/ignorePatterns.ts
7901
7902
  init_esbuild_shims();
7902
7903
  import path from "node:path";
@@ -8106,16 +8107,12 @@ var BINARY_EXTENSIONS = [
8106
8107
 
8107
8108
  // packages/core/src/utils/systemEncoding.ts
8108
8109
  init_esbuild_shims();
8109
- var import_chardet = __toESM(require_lib2(), 1);
8110
+ var import_chardet = __toESM(require_lib(), 1);
8110
8111
  import { isUtf8 } from "node:buffer";
8111
8112
  import { execSync } from "node:child_process";
8112
8113
  import os from "node:os";
8113
8114
  var debugLogger = createDebugLogger("ENCODING");
8114
8115
  var cachedSystemEncoding = void 0;
8115
- function resetEncodingCache() {
8116
- cachedSystemEncoding = void 0;
8117
- }
8118
- __name(resetEncodingCache, "resetEncodingCache");
8119
8116
  function getCachedEncodingForBuffer(buffer) {
8120
8117
  if (isUtf8(buffer)) {
8121
8118
  return "utf-8";
@@ -9068,7 +9065,6 @@ __name(detectLineEndingFromContent, "detectLineEndingFromContent");
9068
9065
 
9069
9066
  // packages/core/src/utils/fileUtils.ts
9070
9067
  var debugLogger2 = createDebugLogger("FILE_UTILS");
9071
- var DEFAULT_ENCODING = "utf-8";
9072
9068
  var PDF_FULL_TEXT_EXTRACTION_MAX_MB = 100;
9073
9069
  var PDF_PAGED_TEXT_EXTRACTION_MAX_MB = 512;
9074
9070
  function detectBOM(buf) {
@@ -9127,7 +9123,7 @@ function isValidUtf8(buffer) {
9127
9123
  }
9128
9124
  }
9129
9125
  __name(isValidUtf8, "isValidUtf8");
9130
- function decodeBufferWithEncodingInfo(full) {
9126
+ async function decodeBufferWithEncodingInfoAsync(full) {
9131
9127
  if (full.length === 0) {
9132
9128
  return { content: "", encoding: "utf-8", bom: false };
9133
9129
  }
@@ -9147,9 +9143,10 @@ function decodeBufferWithEncodingInfo(full) {
9147
9143
  const detected = detectEncodingFromBuffer(full);
9148
9144
  if (detected && !isUtf8CompatibleEncoding(detected)) {
9149
9145
  try {
9150
- if (iconvEncodingExists(detected)) {
9146
+ const iconvLite = await loadIconvLite();
9147
+ if (iconvLite.encodingExists(detected)) {
9151
9148
  return {
9152
- content: iconvDecode(full, detected),
9149
+ content: iconvLite.decode(full, detected),
9153
9150
  encoding: detected,
9154
9151
  bom: false
9155
9152
  };
@@ -9162,7 +9159,7 @@ function decodeBufferWithEncodingInfo(full) {
9162
9159
  }
9163
9160
  return { content: full.toString("utf8"), encoding: "utf-8", bom: false };
9164
9161
  }
9165
- __name(decodeBufferWithEncodingInfo, "decodeBufferWithEncodingInfo");
9162
+ __name(decodeBufferWithEncodingInfoAsync, "decodeBufferWithEncodingInfoAsync");
9166
9163
  function decodeBOMBuffer(buf, bomInfo) {
9167
9164
  const content = buf.subarray(bomInfo.bomLength);
9168
9165
  switch (bomInfo.encoding) {
@@ -9203,7 +9200,7 @@ async function readFileWithEncodingInfo(filePath, signal) {
9203
9200
  filePath,
9204
9201
  signal === void 0 ? void 0 : { signal }
9205
9202
  );
9206
- return decodeBufferWithEncodingInfo(full);
9203
+ return await decodeBufferWithEncodingInfoAsync(full);
9207
9204
  }
9208
9205
  __name(readFileWithEncodingInfo, "readFileWithEncodingInfo");
9209
9206
  async function readFileWithEncoding(filePath) {
@@ -11232,6 +11229,12 @@ var createInitialSkillMetrics = /* @__PURE__ */ __name(() => ({
11232
11229
  totalFail: 0,
11233
11230
  byName: {}
11234
11231
  }), "createInitialSkillMetrics");
11232
+ var createInitialGenerationMetrics = /* @__PURE__ */ __name(() => ({
11233
+ timedRequests: 0,
11234
+ totalTtftMs: 0,
11235
+ totalGenerationDurationMs: 0,
11236
+ totalThroughputOutputTokens: 0
11237
+ }), "createInitialGenerationMetrics");
11235
11238
  var createInitialMetrics = /* @__PURE__ */ __name(() => ({
11236
11239
  models: {},
11237
11240
  tools: {
@@ -11376,6 +11379,23 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
11376
11379
  bucket.tokens.cached += event.cached_content_token_count;
11377
11380
  bucket.tokens.thoughts += event.thoughts_token_count;
11378
11381
  }
11382
+ if (event.ttft_ms === void 0 || !Number.isFinite(event.ttft_ms) || event.ttft_ms < 0 || isInternalPromptId(event.prompt_id)) {
11383
+ return;
11384
+ }
11385
+ const generation = metrics.generation ?? (metrics.generation = createInitialGenerationMetrics());
11386
+ const generationDurationMs = Math.max(0, event.duration_ms - event.ttft_ms);
11387
+ generation.timedRequests++;
11388
+ generation.totalTtftMs += event.ttft_ms;
11389
+ if (generationDurationMs > 0) {
11390
+ generation.totalGenerationDurationMs += generationDurationMs;
11391
+ generation.totalThroughputOutputTokens += event.output_token_count;
11392
+ }
11393
+ generation.last = {
11394
+ model: event.model,
11395
+ ttftMs: event.ttft_ms,
11396
+ generationDurationMs,
11397
+ outputTokens: event.output_token_count
11398
+ };
11379
11399
  }
11380
11400
  #accumulateApiError(metrics, event) {
11381
11401
  const modelMetrics = this.#getOrCreateModelMetrics(metrics, event.model);
@@ -11678,10 +11698,6 @@ async function read(filePath, options = {}) {
11678
11698
  }
11679
11699
  __name(read, "read");
11680
11700
  var ensuredDirs = /* @__PURE__ */ new Set();
11681
- function _resetEnsuredDirsCacheForTest() {
11682
- ensuredDirs.clear();
11683
- }
11684
- __name(_resetEnsuredDirsCacheForTest, "_resetEnsuredDirsCacheForTest");
11685
11701
  async function writeLine(filePath, data) {
11686
11702
  const lock = getFileLock(filePath);
11687
11703
  await lock.runExclusive(async () => {
@@ -11708,42 +11724,6 @@ function writeLineSync(filePath, data) {
11708
11724
  fs4.appendFileSync(filePath, Buffer.from(line, "utf8"), { flush: true });
11709
11725
  }
11710
11726
  __name(writeLineSync, "writeLineSync");
11711
- function write(filePath, data) {
11712
- const lines = data.map((item) => `${JSON.stringify(item)}
11713
- `).join("");
11714
- const dir = path5.dirname(filePath);
11715
- if (!fs4.existsSync(dir)) {
11716
- fs4.mkdirSync(dir, { recursive: true });
11717
- }
11718
- atomicWriteFileSync(filePath, lines, { encoding: "utf8" });
11719
- }
11720
- __name(write, "write");
11721
- async function countLines(filePath) {
11722
- let fileStream;
11723
- let rl;
11724
- try {
11725
- fileStream = fs4.createReadStream(filePath);
11726
- rl = readline.createInterface({
11727
- input: fileStream,
11728
- crlfDelay: Infinity
11729
- });
11730
- let count = 0;
11731
- for await (const line of rl) {
11732
- if (line.trim().length > 0) {
11733
- count++;
11734
- }
11735
- }
11736
- return count;
11737
- } catch (error) {
11738
- if (error.code !== "ENOENT") {
11739
- debugLogger3.error(`Error counting lines in ${filePath}:`, error);
11740
- }
11741
- return 0;
11742
- } finally {
11743
- await closeLineReader(rl, fileStream);
11744
- }
11745
- }
11746
- __name(countLines, "countLines");
11747
11727
  function exists(filePath) {
11748
11728
  try {
11749
11729
  const stats = fs4.statSync(filePath);
@@ -11997,11 +11977,6 @@ function summarizeRecords(period, value, records) {
11997
11977
  };
11998
11978
  }
11999
11979
  __name(summarizeRecords, "summarizeRecords");
12000
- async function recordTokenUsageFromApiResponse(config, event) {
12001
- const record = apiResponseEventToTokenUsageRecord(config, event);
12002
- await writeLine(getTokenUsageFilePath(record.localMonth), record);
12003
- }
12004
- __name(recordTokenUsageFromApiResponse, "recordTokenUsageFromApiResponse");
12005
11980
  var lastLoggedTimeByCode = /* @__PURE__ */ new Map();
12006
11981
  var suppressedCountByCode = /* @__PURE__ */ new Map();
12007
11982
  var TOKEN_USAGE_FAILURE_LOG_COOLDOWN_MS = 6e4;
@@ -12137,12 +12112,6 @@ function formatTokenUsageSummaryAsJson(summary) {
12137
12112
  `;
12138
12113
  }
12139
12114
  __name(formatTokenUsageSummaryAsJson, "formatTokenUsageSummaryAsJson");
12140
- async function exportTokenUsageSummary(options) {
12141
- const summary = await queryTokenUsage(options);
12142
- return options.format === "json" ? formatTokenUsageSummaryAsJson(summary) : `${formatTokenUsageSummaryAsCsv(summary)}
12143
- `;
12144
- }
12145
- __name(exportTokenUsageSummary, "exportTokenUsageSummary");
12146
12115
 
12147
12116
  // packages/core/src/utils/chat-recording-suppression-context.ts
12148
12117
  init_esbuild_shims();
@@ -12359,23 +12328,6 @@ function logApiRequest(config, event) {
12359
12328
  logger.emit(logRecord);
12360
12329
  }
12361
12330
  __name(logApiRequest, "logApiRequest");
12362
- function logFlashFallback(config, event) {
12363
- QwenLogger.getInstance(config)?.logFlashFallbackEvent(event);
12364
- if (!isTelemetrySdkInitialized()) return;
12365
- const attributes = {
12366
- ...getCommonAttributes(config),
12367
- ...event,
12368
- "event.name": EVENT_FLASH_FALLBACK,
12369
- "event.timestamp": (/* @__PURE__ */ new Date()).toISOString()
12370
- };
12371
- const logger = import_api_logs.logs.getLogger(SERVICE_NAME);
12372
- const logRecord = {
12373
- body: `Switching to flash as Fallback.`,
12374
- attributes
12375
- };
12376
- logger.emit(logRecord);
12377
- }
12378
- __name(logFlashFallback, "logFlashFallback");
12379
12331
  function logRipgrepFallback(config, event) {
12380
12332
  QwenLogger.getInstance(config)?.logRipgrepFallbackEvent(event);
12381
12333
  if (!isTelemetrySdkInitialized()) return;
@@ -13217,22 +13169,26 @@ async function truncateAndSaveToFile(content, fileName, projectTempDir, threshol
13217
13169
  const separator = "\n\n---\n... [CONTENT TRUNCATED] ...\n---\n\n";
13218
13170
  const ellipsis = "...";
13219
13171
  const previewBudget = Math.max(0, previewChars);
13220
- const headBudget = keep === "head" ? previewBudget : keep === "tail" ? 0 : Math.floor(previewBudget / 5);
13172
+ const sep = previewBudget > separator.length ? separator : "";
13173
+ const contentBudget = previewBudget - sep.length;
13174
+ const headBudget = keep === "head" ? contentBudget : keep === "tail" ? 0 : Math.floor(contentBudget / 5);
13221
13175
  const beginning = [];
13222
13176
  let headChars = 0;
13223
13177
  for (let i = 0; i < Math.min(headCount, lines.length); i++) {
13224
13178
  const remaining = headBudget - headChars;
13225
13179
  if (remaining <= 0) break;
13226
13180
  if (lines[i].length + 1 > remaining) {
13227
- const sliceLen = Math.max(remaining - ellipsis.length, 0);
13228
- beginning.push(lines[i].slice(0, sliceLen) + ellipsis);
13181
+ if (remaining >= ellipsis.length) {
13182
+ const sliceLen = remaining - ellipsis.length;
13183
+ beginning.push(lines[i].slice(0, sliceLen) + ellipsis);
13184
+ }
13229
13185
  headChars = headBudget;
13230
13186
  break;
13231
13187
  }
13232
13188
  beginning.push(lines[i]);
13233
13189
  headChars += lines[i].length + 1;
13234
13190
  }
13235
- const tailBudget = keep === "head" ? 0 : Math.max(previewBudget - headChars - separator.length, 0);
13191
+ const tailBudget = keep === "head" ? 0 : Math.max(contentBudget - headChars, 0);
13236
13192
  const end = [];
13237
13193
  let tailChars = 0;
13238
13194
  const tailStart = Math.max(lines.length - tailCount, beginning.length);
@@ -13240,15 +13196,17 @@ async function truncateAndSaveToFile(content, fileName, projectTempDir, threshol
13240
13196
  const remaining = tailBudget - tailChars;
13241
13197
  if (remaining <= 0) break;
13242
13198
  if (lines[i].length + 1 > remaining) {
13243
- const sliceLen = Math.max(remaining - ellipsis.length, 0);
13244
- end.unshift(ellipsis + (sliceLen > 0 ? lines[i].slice(-sliceLen) : ""));
13199
+ if (remaining >= ellipsis.length) {
13200
+ const sliceLen = remaining - ellipsis.length;
13201
+ end.unshift(ellipsis + (sliceLen > 0 ? lines[i].slice(-sliceLen) : ""));
13202
+ }
13245
13203
  tailChars = tailBudget;
13246
13204
  break;
13247
13205
  }
13248
13206
  end.unshift(lines[i]);
13249
13207
  tailChars += lines[i].length + 1;
13250
13208
  }
13251
- const truncatedContent = keep === "head" ? beginning.join("\n") + separator : keep === "tail" ? separator + end.join("\n") : beginning.join("\n") + separator + end.join("\n");
13209
+ const truncatedContent = keep === "head" ? beginning.join("\n") + sep : keep === "tail" ? sep + end.join("\n") : beginning.join("\n") + sep + end.join("\n");
13252
13210
  const safeFileName = `${path7.basename(fileName)}.output`;
13253
13211
  const outputFile = path7.join(projectTempDir, safeFileName);
13254
13212
  const wrappedMessage = `${TOOL_OUTPUT_TRUNCATED_PREFIX}.
@@ -13478,12 +13436,6 @@ __name(buildStub, "buildStub");
13478
13436
 
13479
13437
  // packages/core/src/tools/mcp-status.ts
13480
13438
  init_esbuild_shims();
13481
- var MCPServerStatus = /* @__PURE__ */ ((MCPServerStatus2) => {
13482
- MCPServerStatus2["DISCONNECTED"] = "disconnected";
13483
- MCPServerStatus2["CONNECTING"] = "connecting";
13484
- MCPServerStatus2["CONNECTED"] = "connected";
13485
- return MCPServerStatus2;
13486
- })(MCPServerStatus || {});
13487
13439
  var serverStatuses = /* @__PURE__ */ new Map();
13488
13440
  var statusChangeListeners = [];
13489
13441
  function addMCPStatusChangeListener(listener) {
@@ -13575,6 +13527,75 @@ function getInvocationContext() {
13575
13527
  }
13576
13528
  __name(getInvocationContext, "getInvocationContext");
13577
13529
 
13530
+ // packages/core/src/services/visionBridge/image-part-utils.ts
13531
+ init_esbuild_shims();
13532
+ function normalizeParts(input) {
13533
+ if (typeof input === "string") {
13534
+ return [{ text: input }];
13535
+ }
13536
+ if (Array.isArray(input)) {
13537
+ return input.map(
13538
+ (part) => typeof part === "string" ? { text: part } : part
13539
+ );
13540
+ }
13541
+ return [input];
13542
+ }
13543
+ __name(normalizeParts, "normalizeParts");
13544
+ function isImagePart(part) {
13545
+ const mimeType = part.inlineData?.mimeType;
13546
+ const data = part.inlineData?.data;
13547
+ return typeof mimeType === "string" && mimeType.startsWith("image/") && typeof data === "string" && data.length > 0;
13548
+ }
13549
+ __name(isImagePart, "isImagePart");
13550
+ function hasImageParts(input) {
13551
+ return normalizeParts(input).some(isImagePart);
13552
+ }
13553
+ __name(hasImageParts, "hasImageParts");
13554
+ function splitImageParts(input) {
13555
+ const imageParts = [];
13556
+ const nonImageParts = [];
13557
+ for (const part of normalizeParts(input)) {
13558
+ if (isImagePart(part)) {
13559
+ imageParts.push(part);
13560
+ } else {
13561
+ nonImageParts.push(part);
13562
+ }
13563
+ }
13564
+ return { imageParts, nonImageParts };
13565
+ }
13566
+ __name(splitImageParts, "splitImageParts");
13567
+ function replaceImagesWithText(input, text) {
13568
+ const result = [];
13569
+ let replaced = false;
13570
+ for (const part of normalizeParts(input)) {
13571
+ if (isImagePart(part)) {
13572
+ if (!replaced) {
13573
+ result.push({ text });
13574
+ replaced = true;
13575
+ }
13576
+ continue;
13577
+ }
13578
+ result.push(part);
13579
+ }
13580
+ if (!replaced) {
13581
+ result.push({ text });
13582
+ }
13583
+ return result;
13584
+ }
13585
+ __name(replaceImagesWithText, "replaceImagesWithText");
13586
+ function isUsableImagePart(part) {
13587
+ const data = part.inlineData?.data;
13588
+ if (typeof data !== "string" || data.length === 0) {
13589
+ return false;
13590
+ }
13591
+ return data.length <= VISION_BRIDGE_MAX_IMAGE_BASE64_BYTES;
13592
+ }
13593
+ __name(isUsableImagePart, "isUsableImagePart");
13594
+ function collectText(parts) {
13595
+ return parts.map((part) => typeof part.text === "string" ? part.text : "").filter((text) => text.length > 0).join("\n").trim();
13596
+ }
13597
+ __name(collectText, "collectText");
13598
+
13578
13599
  // packages/core/src/tools/mcp-tool.ts
13579
13600
  var debugLogger6 = createDebugLogger("MCP_TOOL");
13580
13601
  var MCP_CONNECTION_ERROR_PATTERNS = [
@@ -13796,18 +13817,10 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
13796
13817
  callToolResult
13797
13818
  );
13798
13819
  if (this.isMCPToolError(rawResponseParts)) {
13799
- const errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify({
13820
+ return await this.buildMcpToolError(rawResponseParts, {
13800
13821
  name: this.serverToolName,
13801
13822
  args: this.params
13802
- })} with response: ${safeJsonStringify(rawResponseParts)}`;
13803
- return {
13804
- llmContent: errorMessage,
13805
- returnDisplay: `Error: MCP tool '${this.serverToolName}' reported an error.`,
13806
- error: {
13807
- message: errorMessage,
13808
- type: "mcp_tool_error" /* MCP_TOOL_ERROR */
13809
- }
13810
- };
13823
+ });
13811
13824
  }
13812
13825
  const transformedParts = transformMcpContentToParts(rawResponseParts);
13813
13826
  const truncated = await this.truncateTextParts(transformedParts);
@@ -13865,17 +13878,7 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
13865
13878
  });
13866
13879
  });
13867
13880
  if (this.isMCPToolError(rawResponseParts)) {
13868
- const errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify(
13869
- functionCalls[0]
13870
- )} with response: ${safeJsonStringify(rawResponseParts)}`;
13871
- return {
13872
- llmContent: errorMessage,
13873
- returnDisplay: `Error: MCP tool '${this.serverToolName}' reported an error.`,
13874
- error: {
13875
- message: errorMessage,
13876
- type: "mcp_tool_error" /* MCP_TOOL_ERROR */
13877
- }
13878
- };
13881
+ return await this.buildMcpToolError(rawResponseParts, functionCalls[0]);
13879
13882
  }
13880
13883
  const transformedParts = transformMcpContentToParts(rawResponseParts);
13881
13884
  const truncated = await this.truncateTextParts(transformedParts);
@@ -13891,6 +13894,34 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
13891
13894
  return this.handleReconnectOnError(error, signal);
13892
13895
  }
13893
13896
  }
13897
+ async buildMcpToolError(rawResponseParts, functionCall) {
13898
+ const imageContent = getMcpErrorImageContent(rawResponseParts);
13899
+ let llmContent;
13900
+ let errorMessage;
13901
+ let persistedOutputFiles;
13902
+ if (imageContent) {
13903
+ const truncatedContent = await this.truncateTextParts(imageContent);
13904
+ llmContent = truncatedContent.parts;
13905
+ persistedOutputFiles = truncatedContent.persistedOutputFiles;
13906
+ errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify(
13907
+ functionCall
13908
+ )} with response: ${getDisplayFromParts(truncatedContent.parts)}`;
13909
+ } else {
13910
+ errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify(
13911
+ functionCall
13912
+ )} with response: ${safeJsonStringify(rawResponseParts)}`;
13913
+ llmContent = errorMessage;
13914
+ }
13915
+ return {
13916
+ llmContent,
13917
+ returnDisplay: `Error: MCP tool '${this.serverToolName}' reported an error.`,
13918
+ error: {
13919
+ message: errorMessage,
13920
+ type: "mcp_tool_error" /* MCP_TOOL_ERROR */
13921
+ },
13922
+ ...persistedOutputFiles !== void 0 ? { persistedOutputFiles } : {}
13923
+ };
13924
+ }
13894
13925
  /**
13895
13926
  * Truncates text parts in the transformed result if they exceed the
13896
13927
  * configured threshold. Non-text parts (images, audio, etc.) are preserved.
@@ -14145,6 +14176,11 @@ function transformMcpContentToParts(sdkResponse) {
14145
14176
  return transformed.filter((part) => part !== null);
14146
14177
  }
14147
14178
  __name(transformMcpContentToParts, "transformMcpContentToParts");
14179
+ function getMcpErrorImageContent(rawResponseParts) {
14180
+ const transformedParts = transformMcpContentToParts(rawResponseParts);
14181
+ return transformedParts.some(isImagePart) ? transformedParts : void 0;
14182
+ }
14183
+ __name(getMcpErrorImageContent, "getMcpErrorImageContent");
14148
14184
  function getDisplayFromParts(parts) {
14149
14185
  if (parts.length === 0) {
14150
14186
  return "";
@@ -14245,19 +14281,6 @@ var StartSessionEvent = class {
14245
14281
  }
14246
14282
  }
14247
14283
  };
14248
- var EndSessionEvent = class {
14249
- static {
14250
- __name(this, "EndSessionEvent");
14251
- }
14252
- "event.name";
14253
- "event.timestamp";
14254
- session_id;
14255
- constructor(config) {
14256
- this["event.name"] = "end_session";
14257
- this["event.timestamp"] = (/* @__PURE__ */ new Date()).toISOString();
14258
- this.session_id = config?.getSessionId();
14259
- }
14260
- };
14261
14284
  var UserPromptEvent = class {
14262
14285
  static {
14263
14286
  __name(this, "UserPromptEvent");
@@ -14454,12 +14477,14 @@ var ApiResponseEvent = class {
14454
14477
  response_text;
14455
14478
  prompt_id;
14456
14479
  auth_type;
14480
+ /** Time from stream dispatch to first user-visible content. */
14481
+ ttft_ms;
14457
14482
  /**
14458
14483
  * Name of the subagent that issued this request, or undefined when the
14459
14484
  * request originates from the main conversation.
14460
14485
  */
14461
14486
  subagent_name;
14462
- constructor(response_id, model, duration_ms, prompt_id, auth_type, usage_data, response_text, subagent_name) {
14487
+ constructor(response_id, model, duration_ms, prompt_id, auth_type, usage_data, response_text, subagent_name, ttft_ms) {
14463
14488
  this["event.name"] = "api_response";
14464
14489
  this["event.timestamp"] = (/* @__PURE__ */ new Date()).toISOString();
14465
14490
  this.response_id = response_id;
@@ -14475,19 +14500,7 @@ var ApiResponseEvent = class {
14475
14500
  this.prompt_id = prompt_id;
14476
14501
  this.auth_type = auth_type;
14477
14502
  this.subagent_name = subagent_name;
14478
- }
14479
- };
14480
- var FlashFallbackEvent = class {
14481
- static {
14482
- __name(this, "FlashFallbackEvent");
14483
- }
14484
- "event.name";
14485
- "event.timestamp";
14486
- auth_type;
14487
- constructor(auth_type) {
14488
- this["event.name"] = "flash_fallback";
14489
- this["event.timestamp"] = (/* @__PURE__ */ new Date()).toISOString();
14490
- this.auth_type = auth_type;
14503
+ this.ttft_ms = ttft_ms;
14491
14504
  }
14492
14505
  };
14493
14506
  var RipgrepFallbackEvent = class {
@@ -14507,19 +14520,6 @@ var RipgrepFallbackEvent = class {
14507
14520
  this.error = error;
14508
14521
  }
14509
14522
  };
14510
- var LoopType = /* @__PURE__ */ ((LoopType2) => {
14511
- LoopType2["CONSECUTIVE_IDENTICAL_TOOL_CALLS"] = "consecutive_identical_tool_calls";
14512
- LoopType2["CHANTING_IDENTICAL_SENTENCES"] = "chanting_identical_sentences";
14513
- LoopType2["REPETITIVE_THOUGHTS"] = "repetitive_thoughts";
14514
- LoopType2["READ_FILE_LOOP"] = "read_file_loop";
14515
- LoopType2["ACTION_STAGNATION"] = "action_stagnation";
14516
- LoopType2["SHELL_COMMAND_STAGNATION"] = "shell_command_stagnation";
14517
- LoopType2["GLOBAL_TOOL_CALL_DUPLICATE"] = "global_tool_call_duplicate";
14518
- LoopType2["ALTERNATING_TOOL_CALL_PATTERN"] = "alternating_tool_call_pattern";
14519
- LoopType2["TURN_TOOL_CALL_CAP"] = "turn_tool_call_cap";
14520
- LoopType2["INVALID_TOOL_PARAMS_STAGNATION"] = "invalid_tool_params_stagnation";
14521
- return LoopType2;
14522
- })(LoopType || {});
14523
14523
  var LoopDetectedEvent = class {
14524
14524
  static {
14525
14525
  __name(this, "LoopDetectedEvent");
@@ -14579,11 +14579,6 @@ function makeSlashCommandEvent({
14579
14579
  };
14580
14580
  }
14581
14581
  __name(makeSlashCommandEvent, "makeSlashCommandEvent");
14582
- var SlashCommandStatus = /* @__PURE__ */ ((SlashCommandStatus2) => {
14583
- SlashCommandStatus2["SUCCESS"] = "success";
14584
- SlashCommandStatus2["ERROR"] = "error";
14585
- return SlashCommandStatus2;
14586
- })(SlashCommandStatus || {});
14587
14582
  function makeChatCompressionEvent({
14588
14583
  tokens_before,
14589
14584
  tokens_after,
@@ -14600,11 +14595,6 @@ function makeChatCompressionEvent({
14600
14595
  };
14601
14596
  }
14602
14597
  __name(makeChatCompressionEvent, "makeChatCompressionEvent");
14603
- var IdeConnectionType = /* @__PURE__ */ ((IdeConnectionType2) => {
14604
- IdeConnectionType2["START"] = "start";
14605
- IdeConnectionType2["SESSION"] = "session";
14606
- return IdeConnectionType2;
14607
- })(IdeConnectionType || {});
14608
14598
  var IdeConnectionEvent = class {
14609
14599
  static {
14610
14600
  __name(this, "IdeConnectionEvent");
@@ -14976,12 +14966,6 @@ var SkillLaunchEvent = class {
14976
14966
  this.prompt_id = prompt_id;
14977
14967
  }
14978
14968
  };
14979
- var UserFeedbackRating = /* @__PURE__ */ ((UserFeedbackRating2) => {
14980
- UserFeedbackRating2[UserFeedbackRating2["BAD"] = 1] = "BAD";
14981
- UserFeedbackRating2[UserFeedbackRating2["FINE"] = 2] = "FINE";
14982
- UserFeedbackRating2[UserFeedbackRating2["GOOD"] = 3] = "GOOD";
14983
- return UserFeedbackRating2;
14984
- })(UserFeedbackRating || {});
14985
14969
  var UserFeedbackEvent = class {
14986
14970
  static {
14987
14971
  __name(this, "UserFeedbackEvent");
@@ -15302,6 +15286,38 @@ function memoryFreshnessNote(mtimeMs) {
15302
15286
  }
15303
15287
  __name(memoryFreshnessNote, "memoryFreshnessNote");
15304
15288
 
15289
+ // packages/core/src/tools/file-read-permission.ts
15290
+ init_esbuild_shims();
15291
+ import path8 from "node:path";
15292
+ function getFileReadDefaultPermission(config, requestedPath) {
15293
+ const filePath = path8.resolve(requestedPath);
15294
+ const workspaceContext = config.getWorkspaceContext();
15295
+ const allowedRoots = [
15296
+ config.storage.getProjectTempDir(),
15297
+ // Background subagent transcripts live under <projectDir>/subagents/ and
15298
+ // are advertised to the model as polling targets via read_file.
15299
+ path8.join(config.storage.getProjectDir(), "subagents"),
15300
+ Storage.getGlobalTempDir(),
15301
+ ...config.storage.getUserSkillsDirs(),
15302
+ Storage.getUserExtensionsDir(),
15303
+ // Approved plans are persisted here (default ~/.qwen/plans, outside
15304
+ // the workspace) and after approval nothing re-injects the plan text,
15305
+ // so the saved file is the model's only recovery route — reading it
15306
+ // back must not stall on a confirmation prompt. The dir holds only
15307
+ // session plan files, never credentials or settings.
15308
+ config.getPlansDir()
15309
+ ];
15310
+ if (workspaceContext.isPathWithinWorkspace(filePath) || isSubpaths(allowedRoots, filePath) || // isAnyAutoMemPath narrows to the managed auto-memory roots
15311
+ // (per-project + user-level under ~/.qwen/memories/) — never the
15312
+ // broad getMemoryBaseDir() — to avoid exposing sensitive ~/.qwen
15313
+ // files such as settings.json or OAuth credentials.
15314
+ isAnyAutoMemPath(filePath, config.getTargetDir())) {
15315
+ return "allow";
15316
+ }
15317
+ return "ask";
15318
+ }
15319
+ __name(getFileReadDefaultPermission, "getFileReadDefaultPermission");
15320
+
15305
15321
  // packages/core/src/services/visionBridge/vision-bridge-service.ts
15306
15322
  init_esbuild_shims();
15307
15323
 
@@ -15503,77 +15519,9 @@ async function runSideQuery(config, options) {
15503
15519
  }
15504
15520
  __name(runSideQuery, "runSideQuery");
15505
15521
 
15506
- // packages/core/src/services/visionBridge/image-part-utils.ts
15507
- init_esbuild_shims();
15508
- function normalizeParts(input) {
15509
- if (typeof input === "string") {
15510
- return [{ text: input }];
15511
- }
15512
- if (Array.isArray(input)) {
15513
- return input.map(
15514
- (part) => typeof part === "string" ? { text: part } : part
15515
- );
15516
- }
15517
- return [input];
15518
- }
15519
- __name(normalizeParts, "normalizeParts");
15520
- function isImagePart(part) {
15521
- const mimeType = part.inlineData?.mimeType;
15522
- const data = part.inlineData?.data;
15523
- return typeof mimeType === "string" && mimeType.startsWith("image/") && typeof data === "string" && data.length > 0;
15524
- }
15525
- __name(isImagePart, "isImagePart");
15526
- function hasImageParts(input) {
15527
- return normalizeParts(input).some(isImagePart);
15528
- }
15529
- __name(hasImageParts, "hasImageParts");
15530
- function splitImageParts(input) {
15531
- const imageParts = [];
15532
- const nonImageParts = [];
15533
- for (const part of normalizeParts(input)) {
15534
- if (isImagePart(part)) {
15535
- imageParts.push(part);
15536
- } else {
15537
- nonImageParts.push(part);
15538
- }
15539
- }
15540
- return { imageParts, nonImageParts };
15541
- }
15542
- __name(splitImageParts, "splitImageParts");
15543
- function replaceImagesWithText(input, text) {
15544
- const result = [];
15545
- let replaced = false;
15546
- for (const part of normalizeParts(input)) {
15547
- if (isImagePart(part)) {
15548
- if (!replaced) {
15549
- result.push({ text });
15550
- replaced = true;
15551
- }
15552
- continue;
15553
- }
15554
- result.push(part);
15555
- }
15556
- if (!replaced) {
15557
- result.push({ text });
15558
- }
15559
- return result;
15560
- }
15561
- __name(replaceImagesWithText, "replaceImagesWithText");
15562
- function isUsableImagePart(part) {
15563
- const data = part.inlineData?.data;
15564
- if (typeof data !== "string" || data.length === 0) {
15565
- return false;
15566
- }
15567
- return data.length <= VISION_BRIDGE_MAX_IMAGE_BASE64_BYTES;
15568
- }
15569
- __name(isUsableImagePart, "isUsableImagePart");
15570
- function collectText(parts) {
15571
- return parts.map((part) => typeof part.text === "string" ? part.text : "").filter((text) => text.length > 0).join("\n").trim();
15572
- }
15573
- __name(collectText, "collectText");
15574
-
15575
15522
  // packages/core/src/services/visionBridge/vision-bridge-service.ts
15576
15523
  var debugLogger7 = createDebugLogger("VISION_BRIDGE");
15524
+ var turnImageCounts = /* @__PURE__ */ new WeakMap();
15577
15525
  var BRIDGE_MAX_OUTPUT_TOKENS = 2048;
15578
15526
  var VISION_BRIDGE_TIMEOUT_MS = 3e4;
15579
15527
  var VISION_BRIDGE_MAX_ATTEMPTS = 2;
@@ -15730,8 +15678,10 @@ function formatFullTurnVisionNotice(selection) {
15730
15678
  return `Routing this image turn to ${target}; retries and tool continuations will stay on that model until the turn ends.`;
15731
15679
  }
15732
15680
  __name(formatFullTurnVisionNotice, "formatFullTurnVisionNotice");
15733
- function buildIntentPart(intentText, sourceContext) {
15734
- const sourceHint = sourceContext ? `The images are consecutive pages ${sourceContext.renderedRange.firstPage}-${sourceContext.renderedRange.lastPage} from PDF ${JSON.stringify(sourceContext.displayName)}. Transcribe each page separately and label each section with its original PDF page number.` : "";
15681
+ function buildIntentPart(intentText, sourceContext, imageParts = []) {
15682
+ const sourceHint = sourceContext ? `The images are consecutive pages ${sourceContext.renderedRange.firstPage}-${sourceContext.renderedRange.lastPage} from PDF ${JSON.stringify(sourceContext.displayName)}. Transcribe each page separately and label each section with its original PDF page number.` : imageParts.length > 0 ? `Describe each image separately under these ordered labels: ${imageParts.map(
15683
+ (part, index) => `${index + 1}. ${JSON.stringify(part.inlineData?.displayName?.trim() || `image ${index + 1}`)}`
15684
+ ).join("; ")}.` : "";
15735
15685
  const focusHint = intentText.length > 0 ? `Focus hint \u2014 do NOT answer this, use it only to decide which details to transcribe thoroughly: ${intentText}` : "Describe the image(s) and transcribe any visible text, code, and errors.";
15736
15686
  return sourceHint ? `${sourceHint}
15737
15687
  ${focusHint}` : focusHint;
@@ -15779,7 +15729,7 @@ function failure(reason, parts, omittedCount, extra = {}) {
15779
15729
  }
15780
15730
  __name(failure, "failure");
15781
15731
  async function runVisionBridge(params) {
15782
- const { config, parts, signal, sourceContext } = params;
15732
+ const { config, parts, signal, sourceContext, intentText } = params;
15783
15733
  const { imageParts, nonImageParts } = splitImageParts(parts);
15784
15734
  if (imageParts.length === 0) {
15785
15735
  return {
@@ -15790,9 +15740,14 @@ async function runVisionBridge(params) {
15790
15740
  };
15791
15741
  }
15792
15742
  const validImages = imageParts.filter(isUsableImagePart);
15793
- const toConvert = validImages.slice(0, VISION_BRIDGE_MAX_IMAGES);
15743
+ const usedImages = turnImageCounts.get(signal) ?? 0;
15744
+ const remainingImages = Math.max(0, VISION_BRIDGE_MAX_IMAGES - usedImages);
15745
+ const toConvert = validImages.slice(0, remainingImages);
15794
15746
  const omittedCount = imageParts.length - toConvert.length;
15795
- const intent = collectText(nonImageParts).slice(0, BRIDGE_INTENT_MAX_CHARS);
15747
+ const intent = (intentText ?? collectText(nonImageParts)).slice(
15748
+ 0,
15749
+ BRIDGE_INTENT_MAX_CHARS
15750
+ );
15796
15751
  const resolvedSourceContext = sourceContext ?? inferPdfSourceContext(toConvert);
15797
15752
  const selection = config.getDefaultVisionBridgeModel?.();
15798
15753
  const modelId = selection?.id;
@@ -15814,13 +15769,14 @@ async function runVisionBridge(params) {
15814
15769
  { modelId, ...modelEndpoint && { modelEndpoint } }
15815
15770
  );
15816
15771
  }
15772
+ turnImageCounts.set(signal, usedImages + toConvert.length);
15817
15773
  const timeoutMs = config.getVisionBridgeTimeoutMs?.() ?? VISION_BRIDGE_TIMEOUT_MS;
15818
15774
  const requestContents = [
15819
15775
  {
15820
15776
  role: "user",
15821
15777
  parts: [
15822
15778
  ...toConvert,
15823
- { text: buildIntentPart(intent, resolvedSourceContext) }
15779
+ { text: buildIntentPart(intent, resolvedSourceContext, toConvert) }
15824
15780
  ]
15825
15781
  }
15826
15782
  ];
@@ -15955,35 +15911,13 @@ var ReadFileToolInvocation = class extends BaseToolInvocation {
15955
15911
  * Returns 'ask' for paths outside the workspace/temp/userSkills directories,
15956
15912
  * so that external file reads require user confirmation.
15957
15913
  */
15958
- async getDefaultPermission() {
15959
- const filePath = path8.resolve(this.params.file_path);
15960
- const workspaceContext = this.config.getWorkspaceContext();
15961
- const allowedRoots = [
15962
- this.config.storage.getProjectTempDir(),
15963
- // Background subagent transcripts live under <projectDir>/subagents/ and
15964
- // are advertised to the model as polling targets via read_file.
15965
- path8.join(this.config.storage.getProjectDir(), "subagents"),
15966
- Storage.getGlobalTempDir(),
15967
- ...this.config.storage.getUserSkillsDirs(),
15968
- Storage.getUserExtensionsDir(),
15969
- // Approved plans are persisted here (default ~/.qwen/plans, outside
15970
- // the workspace) and after approval nothing re-injects the plan text,
15971
- // so the saved file is the model's only recovery route — reading it
15972
- // back must not stall on a confirmation prompt. The dir holds only
15973
- // session plan files, never credentials or settings.
15974
- this.config.getPlansDir()
15975
- ];
15976
- if (workspaceContext.isPathWithinWorkspace(filePath) || isSubpaths(allowedRoots, filePath) || // isAnyAutoMemPath narrows to the managed auto-memory roots
15977
- // (per-project + user-level under ~/.qwen/memories/) — never the
15978
- // broad getMemoryBaseDir() — to avoid exposing sensitive ~/.qwen
15979
- // files such as settings.json or OAuth credentials.
15980
- isAnyAutoMemPath(filePath, this.config.getTargetDir())) {
15981
- return "allow";
15982
- }
15983
- return "ask";
15914
+ getDefaultPermission() {
15915
+ return Promise.resolve(
15916
+ getFileReadDefaultPermission(this.config, this.params.file_path)
15917
+ );
15984
15918
  }
15985
15919
  async execute(signal) {
15986
- const absPath = path8.resolve(this.params.file_path);
15920
+ const absPath = path9.resolve(this.params.file_path);
15987
15921
  const projectRoot = this.config.getTargetDir();
15988
15922
  const isAutoMem = isAnyAutoMemPath(absPath, projectRoot);
15989
15923
  const cacheEnabled = !this.config.getFileReadCacheDisabled();
@@ -16009,7 +15943,7 @@ var ReadFileToolInvocation = class extends BaseToolInvocation {
16009
15943
  }
16010
15944
  debugLogger8.debug("miss", { path: absPath, state: status.state });
16011
15945
  }
16012
- const preparePdfForVisionBridge = shouldRunVisionBridge(this.config);
15946
+ const prepareForVisionBridge = shouldRunVisionBridge(this.config);
16013
15947
  let result = await processSingleFileContent(
16014
15948
  this.params.file_path,
16015
15949
  this.config,
@@ -16017,7 +15951,8 @@ var ReadFileToolInvocation = class extends BaseToolInvocation {
16017
15951
  offset: this.params.offset,
16018
15952
  limit: this.params.limit,
16019
15953
  pages: this.params.pages,
16020
- preparePdfForVisionBridge,
15954
+ preserveUnsupportedImage: prepareForVisionBridge,
15955
+ preparePdfForVisionBridge: prepareForVisionBridge,
16021
15956
  signal
16022
15957
  }
16023
15958
  );
@@ -16077,7 +16012,7 @@ ${result.llmContent}`;
16077
16012
  "read" /* READ */,
16078
16013
  lines,
16079
16014
  mimetype,
16080
- path8.extname(this.params.file_path),
16015
+ path9.extname(this.params.file_path),
16081
16016
  programming_language
16082
16017
  )
16083
16018
  );
@@ -16280,7 +16215,7 @@ var ReadFileTool = class _ReadFileTool extends BaseDeclarativeTool {
16280
16215
  if (!filePath) {
16281
16216
  return "The 'file_path' parameter must be non-empty.";
16282
16217
  }
16283
- if (!path8.isAbsolute(filePath)) {
16218
+ if (!path9.isAbsolute(filePath)) {
16284
16219
  return `File path must be absolute, but was relative: ${filePath}. You must provide an absolute path.`;
16285
16220
  }
16286
16221
  if (params.offset !== void 0 && (!Number.isInteger(params.offset) || params.offset < 0)) {
@@ -16293,7 +16228,7 @@ var ReadFileTool = class _ReadFileTool extends BaseDeclarativeTool {
16293
16228
  const pages = params.pages.trim();
16294
16229
  params.pages = pages.length > 0 ? pages : void 0;
16295
16230
  }
16296
- const ext = path8.extname(filePath).toLowerCase();
16231
+ const ext = path9.extname(filePath).toLowerCase();
16297
16232
  if ((params.offset !== void 0 || params.limit !== void 0) && ext === ".ipynb") {
16298
16233
  return "offset and limit are not supported for Jupyter notebook (.ipynb) files. Notebooks are always read in full with structured cell output.";
16299
16234
  }
@@ -16333,13 +16268,10 @@ export {
16333
16268
  isImagePart,
16334
16269
  hasImageParts,
16335
16270
  splitImageParts,
16336
- replaceImagesWithText,
16337
- isUsableImagePart,
16338
16271
  collectText,
16339
16272
  isImageCapable,
16340
16273
  isFullTurnVisionCapable,
16341
16274
  getQualifiedVisionModelId,
16342
- getVisionModelSelector,
16343
16275
  getFullTurnVisionModelSelector,
16344
16276
  selectVisionBridgeModel,
16345
16277
  shouldRunVisionBridge,
@@ -16350,40 +16282,28 @@ export {
16350
16282
  runVisionBridge,
16351
16283
  MAIN_SOURCE,
16352
16284
  subagentNameContext,
16285
+ isInternalPromptId,
16353
16286
  UiTelemetryService,
16354
16287
  uiTelemetryService,
16355
- isInternalPromptId,
16356
- sanitizeHookName,
16357
16288
  import_lru_cache,
16358
- QwenLogger,
16359
16289
  apiActivityTracker,
16360
16290
  _recoverObjectsFromLine,
16361
16291
  parseLineTolerant,
16362
16292
  readLines,
16363
16293
  read,
16364
- _resetEnsuredDirsCacheForTest,
16365
16294
  writeLine,
16366
16295
  writeLineSync,
16367
- write,
16368
- countLines,
16369
16296
  exists,
16370
- getTokenUsageFilePath,
16371
- apiResponseEventToTokenUsageRecord,
16372
- recordTokenUsageFromApiResponse,
16373
- recordTokenUsageFromApiResponseBestEffort,
16374
16297
  queryTokenUsage,
16375
16298
  formatTokenUsageSummaryAsCsv,
16376
16299
  formatTokenUsageSummaryAsJson,
16377
- exportTokenUsageSummary,
16378
16300
  runWithChatRecordingSuppressed,
16379
16301
  logStartSession,
16380
16302
  logUserPrompt,
16381
16303
  logUserRetry,
16382
16304
  logToolCall,
16383
- logToolOutputTruncated,
16384
16305
  logFileOperation,
16385
16306
  logApiRequest,
16386
- logFlashFallback,
16387
16307
  logRipgrepFallback,
16388
16308
  logApiError,
16389
16309
  logApiCancel,
@@ -16423,31 +16343,16 @@ export {
16423
16343
  logMemoryDream,
16424
16344
  logMemoryRecall,
16425
16345
  logMemoryRecallDelivery,
16426
- iconvEncode,
16427
- iconvEncodingExists,
16428
16346
  isUtf8CompatibleEncoding,
16429
- DEFAULT_CONTEXT_FILENAME,
16430
- AGENT_CONTEXT_FILENAME,
16347
+ loadIconvLite,
16431
16348
  LOCAL_CONTEXT_FILENAME,
16432
16349
  MEMORY_SECTION_HEADER,
16433
16350
  setGeminiMdFilename,
16434
16351
  getCurrentGeminiMdFilename,
16435
16352
  getAllGeminiMdFilenames,
16436
- COMMON_IGNORE_PATTERNS,
16437
- BINARY_FILE_PATTERNS,
16438
- MEDIA_FILE_PATTERNS,
16439
- COMMON_DIRECTORY_EXCLUDES,
16440
- PYTHON_EXCLUDES,
16441
- SYSTEM_FILE_EXCLUDES,
16442
- DEFAULT_FILE_EXCLUDES,
16443
16353
  FileExclusions,
16444
- extractExtensionsFromPatterns,
16445
- BINARY_EXTENSIONS,
16446
- resetEncodingCache,
16447
16354
  getCachedEncodingForBuffer,
16448
16355
  getSystemEncoding,
16449
- windowsCodePageToEncoding,
16450
- detectEncodingFromBuffer,
16451
16356
  extractPDFText,
16452
16357
  normalizeSource,
16453
16358
  parseNotebook,
@@ -16462,24 +16367,17 @@ export {
16462
16367
  inferInsertedCellSourceArrayStyle,
16463
16368
  toNotebookSource,
16464
16369
  normalizeEditedCell,
16465
- DEFAULT_ENCODING,
16466
- detectBOM,
16467
- decodeBufferWithEncodingInfo,
16468
- readFileWithEncodingInfo,
16469
- readFileWithEncoding,
16470
- countFileLines,
16370
+ decodeBufferWithEncodingInfoAsync,
16471
16371
  readFileWithLineAndLimit,
16472
- detectFileEncoding,
16473
16372
  getSpecificMimeType,
16474
16373
  isWithinRoot,
16475
- isBinaryFile,
16476
- detectFileType,
16477
16374
  isCacheableReadResult,
16478
16375
  processSingleFileContent,
16479
16376
  fileExists,
16480
16377
  getLanguageFromFilePath,
16481
16378
  memoryAge,
16482
16379
  memoryFreshnessText,
16380
+ getFileReadDefaultPermission,
16483
16381
  ReadFileTool,
16484
16382
  MAX_SESSION_BYTES,
16485
16383
  TOOL_OUTPUT_TRUNCATED_PREFIX,
@@ -16488,7 +16386,6 @@ export {
16488
16386
  isAlreadyTruncated,
16489
16387
  normalizeToolResultCallId,
16490
16388
  persistAndTruncateToolResult,
16491
- MCPServerStatus,
16492
16389
  addMCPStatusChangeListener,
16493
16390
  removeMCPStatusChangeListener,
16494
16391
  updateMCPServerStatus,
@@ -16502,9 +16399,7 @@ export {
16502
16399
  runWithInvocationContext,
16503
16400
  getInvocationContext,
16504
16401
  DiscoveredMCPTool,
16505
- generateValidName,
16506
16402
  StartSessionEvent,
16507
- EndSessionEvent,
16508
16403
  UserPromptEvent,
16509
16404
  UserRetryEvent,
16510
16405
  ToolCallEvent,
@@ -16512,16 +16407,12 @@ export {
16512
16407
  ApiErrorEvent,
16513
16408
  ApiCancelEvent,
16514
16409
  ApiResponseEvent,
16515
- FlashFallbackEvent,
16516
16410
  RipgrepFallbackEvent,
16517
- LoopType,
16518
16411
  LoopDetectedEvent,
16519
16412
  LoopDetectionDisabledEvent,
16520
16413
  NextSpeakerCheckEvent,
16521
16414
  makeSlashCommandEvent,
16522
- SlashCommandStatus,
16523
16415
  makeChatCompressionEvent,
16524
- IdeConnectionType,
16525
16416
  IdeConnectionEvent,
16526
16417
  ConversationFinishedEvent,
16527
16418
  KittySequenceOverflowEvent,
@@ -16531,7 +16422,6 @@ export {
16531
16422
  ApiRetryEvent,
16532
16423
  ContentRetryFailureEvent,
16533
16424
  ExtensionInstallEvent,
16534
- ToolOutputTruncatedEvent,
16535
16425
  ExtensionUninstallEvent,
16536
16426
  ExtensionUpdateEvent,
16537
16427
  ExtensionEnableEvent,
@@ -16540,7 +16430,6 @@ export {
16540
16430
  AuthEvent,
16541
16431
  HookCallEvent,
16542
16432
  SkillLaunchEvent,
16543
- UserFeedbackRating,
16544
16433
  UserFeedbackEvent,
16545
16434
  makeArenaSessionStartedEvent,
16546
16435
  makeArenaAgentCompletedEvent,
@@ -16557,17 +16446,17 @@ export {
16557
16446
  };
16558
16447
  /**
16559
16448
  * @license
16560
- * Copyright 2025 Google LLC
16449
+ * Copyright 2026 Qwen Team
16561
16450
  * SPDX-License-Identifier: Apache-2.0
16562
16451
  */
16563
16452
  /**
16564
16453
  * @license
16565
- * Copyright 2025 Qwen Team
16454
+ * Copyright 2025 Google LLC
16566
16455
  * SPDX-License-Identifier: Apache-2.0
16567
16456
  */
16568
16457
  /**
16569
16458
  * @license
16570
- * Copyright 2026 Qwen Team
16459
+ * Copyright 2025 Qwen Team
16571
16460
  * SPDX-License-Identifier: Apache-2.0
16572
16461
  */
16573
16462
  /**