@qwen-code/qwen-code 0.19.8 → 0.19.9-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/bundled/qc-helper/SKILL.md +1 -0
  2. package/bundled/qc-helper/docs/configuration/auth.md +40 -55
  3. package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
  4. package/bundled/qc-helper/docs/configuration/settings.md +68 -51
  5. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  6. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -2
  7. package/bundled/qc-helper/docs/features/channels/overview.md +82 -7
  8. package/bundled/qc-helper/docs/features/channels/wecom.md +6 -0
  9. package/bundled/qc-helper/docs/features/code-review.md +109 -41
  10. package/bundled/qc-helper/docs/features/commands.md +45 -44
  11. package/bundled/qc-helper/docs/features/computer-use.md +77 -0
  12. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  13. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  14. package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
  15. package/bundled/qc-helper/docs/integration-vscode.md +2 -2
  16. package/bundled/qc-helper/docs/qwen-serve.md +66 -23
  17. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
  18. package/bundled/review/DESIGN.md +303 -46
  19. package/bundled/review/SKILL.md +670 -165
  20. package/chunks/MaxSizedBox-BEVSAWZ6.js +70 -0
  21. package/chunks/{StandaloneSessionPicker-EYRGH6PJ.js → StandaloneSessionPicker-2DA2MDDE.js} +81 -79
  22. package/chunks/{acpAgent-GRFTTRHW.js → acpAgent-G3WJU3PS.js} +1318 -465
  23. package/chunks/agent-DD3WSHXE.js +68 -0
  24. package/chunks/agent-headless-MHI7U2CU.js +62 -0
  25. package/chunks/{anthropicContentGenerator-CPF22MA7.js → anthropicContentGenerator-56U3YCP2.js} +187 -31
  26. package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-MIZLXBLF.js} +5 -5
  27. package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-XMJVPNWM.js} +6 -6
  28. package/chunks/bridge-HKEWPNB5.js +78 -0
  29. package/chunks/{ca-MKD32FQL.js → ca-C2JTT2N5.js} +68 -6
  30. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  31. package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
  32. package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
  33. package/chunks/chunk-2FMQQXMM.js +38 -0
  34. package/chunks/{chunk-CSOTA7KX.js → chunk-2FO5GFKZ.js} +2 -2
  35. package/chunks/{chunk-QQDPRDVW.js → chunk-2HRYPZT5.js} +1 -1
  36. package/chunks/{chunk-UXEW557D.js → chunk-2J4ZWME4.js} +3 -3
  37. package/chunks/{chunk-P3XEEI3X.js → chunk-2TQXXQMI.js} +36 -7
  38. package/chunks/{chunk-GSHQYYIV.js → chunk-2UW5RFRP.js} +6 -26
  39. package/chunks/{chunk-6IAWPIQ6.js → chunk-2W3OOD4W.js} +5 -3
  40. package/chunks/{chunk-2PSWA5ID.js → chunk-2X56YUSZ.js} +1 -1
  41. package/chunks/{chunk-NQKLOAVJ.js → chunk-2Z5UX4KI.js} +2 -2
  42. package/chunks/chunk-3MX7D6QN.js +516 -0
  43. package/chunks/{chunk-EEN2TKST.js → chunk-43RXPU5Q.js} +2 -2
  44. package/chunks/{chunk-55ZMG67I.js → chunk-4LD5APFL.js} +4 -4
  45. package/chunks/{chunk-WF4FAXDL.js → chunk-4QZ3XHWE.js} +62 -62
  46. package/chunks/chunk-4QZADKJS.js +34 -0
  47. package/chunks/{chunk-UIDXQNMV.js → chunk-4WGODMVR.js} +1 -1
  48. package/chunks/{chunk-E6US47KI.js → chunk-4WKAA4KS.js} +1 -1
  49. package/chunks/{chunk-TI3BWD4D.js → chunk-54UZQ57N.js} +39 -19
  50. package/chunks/{chunk-3GONHQOA.js → chunk-57OAHC2Y.js} +1 -1
  51. package/chunks/{chunk-JZSY4WP3.js → chunk-5DTTYNB7.js} +1 -1
  52. package/chunks/chunk-5HBA2Z7V.js +28 -0
  53. package/chunks/{chunk-SKAZWEV5.js → chunk-5M6IDOMF.js} +35 -98
  54. package/chunks/{chunk-A4BMJM77.js → chunk-5O2XNYP6.js} +1 -0
  55. package/chunks/{chunk-FQNC62B2.js → chunk-5VHASII5.js} +11 -11
  56. package/chunks/{chunk-GO6LNQXT.js → chunk-6AM5D4ME.js} +1 -1
  57. package/chunks/{chunk-BJBWRCSK.js → chunk-6H67XLET.js} +1 -1
  58. package/chunks/{chunk-O7FIRWJV.js → chunk-6JPDCEDB.js} +3 -3
  59. package/chunks/{chunk-3UP777ZS.js → chunk-6RLROE6G.js} +1 -1
  60. package/chunks/{chunk-GN3F6PIU.js → chunk-6WPJRYLZ.js} +5 -5
  61. package/chunks/{chunk-ZERZSAZL.js → chunk-75DOP5OR.js} +2 -2
  62. package/chunks/chunk-7DKX4A5Z.js +91 -0
  63. package/chunks/{chunk-M7S4GK5Z.js → chunk-7IDCQ35Q.js} +147 -30
  64. package/chunks/{chunk-22MNNNXE.js → chunk-7NFB7LBQ.js} +11 -3
  65. package/chunks/{chunk-ZL5HN75Q.js → chunk-7R4DPSRA.js} +37 -3
  66. package/chunks/{chunk-VZ7HY3YU.js → chunk-7STBROEV.js} +3 -3
  67. package/chunks/{chunk-SAIILPQ3.js → chunk-7X7TEQNX.js} +5 -3
  68. package/chunks/{chunk-RMLZAUWH.js → chunk-A3U2TQUL.js} +10 -12
  69. package/chunks/{chunk-IRJWHZWU.js → chunk-A4UCTEB5.js} +2 -2
  70. package/chunks/{chunk-BOBRZZKD.js → chunk-A7W4GQRW.js} +5 -5
  71. package/chunks/{chunk-O33TBKDC.js → chunk-AAUZBE5Y.js} +155 -19
  72. package/chunks/{chunk-SQ2UATK7.js → chunk-ADLYZJYZ.js} +11 -11
  73. package/chunks/{chunk-QYUE6W3T.js → chunk-ALGGS7UH.js} +2 -39
  74. package/chunks/{chunk-WMPVYQ4P.js → chunk-ARKANCNX.js} +3 -2
  75. package/chunks/{chunk-IBY3Q3HG.js → chunk-AU4R7ACM.js} +967 -181
  76. package/chunks/{channel-worker-supervisor-NZQUOEFJ.js → chunk-B7MFJBKE.js} +190 -34
  77. package/chunks/{chunk-HW4N45EE.js → chunk-B7NUUEXC.js} +38 -11
  78. package/chunks/{chunk-3B26UVCX.js → chunk-BLPMRN4B.js} +39 -10
  79. package/chunks/{chunk-ZN5T4BHI.js → chunk-BPZALHVR.js} +2 -2
  80. package/chunks/{chunk-BVYU3ZTI.js → chunk-BXT6PQ73.js} +1020 -942
  81. package/chunks/{chunk-OFEVLU4C.js → chunk-CARU2RR2.js} +1 -1
  82. package/chunks/{chunk-HDOH3QYE.js → chunk-CEGKYZDB.js} +2 -2
  83. package/chunks/{chunk-GLE2YUPU.js → chunk-COH43MRJ.js} +1 -1
  84. package/chunks/{chunk-E5A7LHNN.js → chunk-CPBF7KYF.js} +1 -1
  85. package/chunks/{chunk-UWCTAVOD.js → chunk-CR3C7WXL.js} +1 -1
  86. package/chunks/{chunk-IWKSG2AR.js → chunk-CXAOG665.js} +1 -1
  87. package/chunks/{chunk-64WXLC72.js → chunk-DJ2GSRLV.js} +1 -1
  88. package/chunks/{chunk-QN5NZ3UQ.js → chunk-DMTGGOSA.js} +2 -2
  89. package/chunks/{chunk-27BHARDE.js → chunk-DMVA55W5.js} +2124 -30
  90. package/chunks/{chunk-JPALE3PA.js → chunk-DQCCLVQK.js} +6 -6
  91. package/chunks/{chunk-X2XNQQJI.js → chunk-E2UVIFI2.js} +186 -399
  92. package/chunks/{chunk-KHDZHZMH.js → chunk-E5Z2AVNV.js} +1 -1
  93. package/chunks/{chunk-E7EMCSUG.js → chunk-EAHMOXLL.js} +64 -42
  94. package/chunks/{chunk-VGGOPZUL.js → chunk-EJ3KGYWL.js} +36 -8
  95. package/chunks/{chunk-DIWVZ3VM.js → chunk-ERTHKDKN.js} +5 -5
  96. package/chunks/{chunk-UX6OTBVD.js → chunk-EX5OULP3.js} +2 -2
  97. package/chunks/{chunk-5MBO76SL.js → chunk-F333XEAU.js} +3 -3
  98. package/chunks/{chunk-OACJLMLD.js → chunk-FBU7WRZI.js} +18 -2
  99. package/chunks/{chunk-5IFG2VC4.js → chunk-FCMNKVXT.js} +1 -1
  100. package/chunks/chunk-FEOBU3FA.js +253 -0
  101. package/chunks/{chunk-LAXNEOBG.js → chunk-FI2WSOWX.js} +19 -3
  102. package/chunks/{chunk-E7KNELIZ.js → chunk-FSA7ERJ2.js} +2 -2
  103. package/chunks/{chunk-44NROQYV.js → chunk-GDQQRV43.js} +4 -4
  104. package/chunks/{chunk-ZE6E424U.js → chunk-GN5HJJBO.js} +2 -2
  105. package/chunks/{chunk-O2YT7VB4.js → chunk-GOXKNSDZ.js} +2 -65
  106. package/chunks/{chunk-V35MD7KN.js → chunk-GRC5HGPI.js} +1 -1
  107. package/chunks/{chunk-ON3JA3RU.js → chunk-GTENQOEJ.js} +7 -9
  108. package/chunks/{chunk-S6RLAIUR.js → chunk-GYTKQYDB.js} +1 -1
  109. package/chunks/{chunk-A2X3KLC3.js → chunk-GZXCZHCT.js} +3 -3
  110. package/chunks/{chunk-K5PGHDBN.js → chunk-H6XPXXMH.js} +1 -1
  111. package/chunks/{chunk-PMFULMLX.js → chunk-HCJTURZD.js} +2262 -384
  112. package/chunks/chunk-HGG2RRXD.js +445 -0
  113. package/chunks/{chunk-II73RK2S.js → chunk-HGT6JR3U.js} +20 -1
  114. package/chunks/{chunk-DICGXFAI.js → chunk-HJCVNZLQ.js} +11 -9
  115. package/chunks/{chunk-3GNOQZDC.js → chunk-HJUDVNCO.js} +17663 -14877
  116. package/chunks/{chunk-AYNCLGTW.js → chunk-HRUGYOJN.js} +8 -51
  117. package/chunks/{chunk-KYMBIKIW.js → chunk-HTHUX2T5.js} +1 -1
  118. package/chunks/{chunk-LQ7TMOCE.js → chunk-HTO4JFDZ.js} +1 -1
  119. package/chunks/{chunk-BUZ6HGL4.js → chunk-HWTL6MPR.js} +357 -59
  120. package/chunks/chunk-IDS7MSUP.js +74 -0
  121. package/chunks/{chunk-4CGOWHKM.js → chunk-J4MOFEOK.js} +2 -2
  122. package/chunks/chunk-JCD4FM7K.js +296 -0
  123. package/chunks/{chunk-22IFUCVR.js → chunk-JESCGQM3.js} +1 -1
  124. package/chunks/{chunk-JZHIQJOE.js → chunk-JGO6RFI2.js} +6 -6
  125. package/chunks/{chunk-X3YGAX7V.js → chunk-JGUT3LWZ.js} +9 -2
  126. package/chunks/{chunk-JRQ7EVGE.js → chunk-JW7OOJC6.js} +2 -2
  127. package/chunks/{chunk-OQXDAMKY.js → chunk-KF5MMGG4.js} +8 -8
  128. package/chunks/{chunk-42XGFRJS.js → chunk-KKRTYONM.js} +8 -6
  129. package/chunks/{chunk-GGQQA4JW.js → chunk-KSO42X3Z.js} +15 -2
  130. package/chunks/{chunk-MRO43B25.js → chunk-KW7NOTN6.js} +1 -1
  131. package/chunks/{chunk-54YZOP7P.js → chunk-L573Z2QZ.js} +11894 -5190
  132. package/chunks/{chunk-TLWA7TPR.js → chunk-L5U3ELZX.js} +2 -2
  133. package/chunks/{chunk-YHKAK72D.js → chunk-LHEOLOXU.js} +251 -63
  134. package/chunks/{chunk-H6EMK6QK.js → chunk-LQIDP6K5.js} +11913 -5207
  135. package/chunks/{chunk-I6WGFJJ3.js → chunk-LSEJG6AM.js} +73 -19
  136. package/chunks/{chunk-MZ7BABX3.js → chunk-LXLTBIDP.js} +44 -7
  137. package/chunks/{chunk-HLKG6CZN.js → chunk-M5GB774H.js} +1 -1
  138. package/chunks/{chunk-JCH35JB3.js → chunk-MKK4XGLF.js} +2 -2
  139. package/chunks/{chunk-YKZIAK7C.js → chunk-MO7O5722.js} +424 -40
  140. package/chunks/chunk-MR3PXB6E.js +48 -0
  141. package/chunks/{chunk-A5JOJ77H.js → chunk-MRYWYBQ4.js} +38 -15
  142. package/chunks/{chunk-332PWN27.js → chunk-NHDKSOEY.js} +1 -1
  143. package/chunks/{chunk-TSPB77TG.js → chunk-NRAFASYX.js} +1016 -2967
  144. package/chunks/{chunk-BMFMJINR.js → chunk-OA4JVLSA.js} +28 -2
  145. package/chunks/{chunk-P7M4GA57.js → chunk-OCPBI7J5.js} +1 -1
  146. package/chunks/chunk-OJAMDVF5.js +66 -0
  147. package/chunks/{chunk-IJRL2S3D.js → chunk-OKAIGAYW.js} +6 -6
  148. package/chunks/{chunk-FBET5XZ2.js → chunk-PEJWA3QQ.js} +29 -10
  149. package/chunks/{chunk-L4AMBVQG.js → chunk-PMKW35AT.js} +54 -22
  150. package/chunks/{chunk-AGHU5VRK.js → chunk-PZL23GTM.js} +1 -1
  151. package/chunks/{chunk-PC4ZXHU2.js → chunk-Q6TUALBE.js} +3 -3
  152. package/chunks/{chunk-FXGLL2HL.js → chunk-Q7YDKOGY.js} +1 -1
  153. package/chunks/{chunk-XOHNA2S6.js → chunk-QAW7PIHT.js} +3 -3
  154. package/chunks/{chunk-XYR5RUA5.js → chunk-QE2WJ7FS.js} +10 -3
  155. package/chunks/{chunk-LGFAYIKX.js → chunk-QHTIBUWB.js} +1 -1
  156. package/chunks/{chunk-P3MYAZBY.js → chunk-QMGX2KO2.js} +1 -1
  157. package/chunks/{chunk-Z3I3QJK3.js → chunk-QRUIS3DN.js} +1 -1
  158. package/chunks/{chunk-ITOGNELQ.js → chunk-QSWDGAIC.js} +2 -2
  159. package/chunks/{chunk-PUVCVELY.js → chunk-QUJOI7SR.js} +70 -8
  160. package/chunks/{chunk-GHOTR7HL.js → chunk-QUPXZXLV.js} +1 -1
  161. package/chunks/{chunk-6VK6FIMQ.js → chunk-R5D5JOAM.js} +415 -379
  162. package/chunks/{chunk-CD6USWHZ.js → chunk-R5XLNDE2.js} +2 -2
  163. package/chunks/{chunk-W7EEOR7D.js → chunk-RCEEXIOO.js} +8 -6
  164. package/chunks/{chunk-TLRYABYP.js → chunk-RKUWKYED.js} +1 -1
  165. package/chunks/{chunk-RNBYOUGV.js → chunk-RXFQM6FQ.js} +1 -1
  166. package/chunks/{chunk-QXPI7FEC.js → chunk-S3TWXGKA.js} +4 -4
  167. package/chunks/{chunk-2EM7ECZD.js → chunk-SMSFWUFY.js} +309 -80
  168. package/chunks/{chunk-FV7425LN.js → chunk-SPJQO2CE.js} +18 -5
  169. package/chunks/{chunk-MLZQVCF3.js → chunk-SZRN75WQ.js} +1 -1
  170. package/chunks/{chunk-7RYW5LQV.js → chunk-T2NCM2ET.js} +2 -2
  171. package/chunks/{chunk-Z2Z3GUXZ.js → chunk-TB6UDU4T.js} +1 -1
  172. package/chunks/{chunk-EXPMGZZV.js → chunk-TEGEBB2I.js} +1 -1
  173. package/chunks/{chunk-MX2YXRER.js → chunk-TJTKSVIV.js} +1 -1
  174. package/chunks/{chunk-CCGOFQV3.js → chunk-TQBODCFD.js} +8 -7
  175. package/chunks/chunk-TV6K2FB4.js +224 -0
  176. package/chunks/{chunk-H6BD2ELD.js → chunk-TYAMGABM.js} +2 -2
  177. package/chunks/{chunk-QYNNN7BK.js → chunk-TYLOFD2U.js} +2 -2
  178. package/chunks/{chunk-VRDMOSQS.js → chunk-UDXSXLER.js} +2 -2
  179. package/chunks/{chunk-DHOLNQLC.js → chunk-UFDX27PL.js} +60 -40
  180. package/chunks/{chunk-WHJQ3JUS.js → chunk-UGN6CTNZ.js} +10 -10
  181. package/chunks/{chunk-CHB5SLZZ.js → chunk-UNLRKDMW.js} +4 -4
  182. package/chunks/{chunk-CJCKDMWO.js → chunk-URK542T4.js} +1 -1
  183. package/chunks/{chunk-AHNXYU4O.js → chunk-V6WHFGST.js} +1 -1
  184. package/chunks/{chunk-ZTQ26VBE.js → chunk-VDDGDZMA.js} +1 -1
  185. package/chunks/{chunk-BOBOCR5H.js → chunk-VEETSXYX.js} +4 -4
  186. package/chunks/{chunk-OMX7CUOE.js → chunk-VGC4I5JJ.js} +1 -1
  187. package/chunks/{chunk-43W4YSO6.js → chunk-VJNBRRZG.js} +2 -2
  188. package/chunks/{chunk-WQTHLB5T.js → chunk-VKS7EIOA.js} +7 -7
  189. package/chunks/{chunk-J7RCB6N5.js → chunk-VVDNGM6X.js} +2 -2
  190. package/chunks/{chunk-ER3BKOLB.js → chunk-W7FJ3N32.js} +1 -1
  191. package/chunks/{chunk-3HX5LZ6R.js → chunk-WBL3FJEU.js} +2 -2
  192. package/chunks/{chunk-7LTB54MK.js → chunk-WIEO4CWB.js} +2 -2
  193. package/chunks/chunk-WMC6HH7Y.js +493 -0
  194. package/chunks/{chunk-FEJ2FZ3U.js → chunk-WTNZ6DXB.js} +2 -2
  195. package/chunks/{chunk-L46XKEGM.js → chunk-X6ODDESK.js} +5 -8
  196. package/chunks/chunk-XDPYM5DE.js +71 -0
  197. package/chunks/{chunk-3RW4AZJV.js → chunk-XFSFZCM5.js} +1 -1
  198. package/chunks/{chunk-2MPVVENX.js → chunk-XU457J4V.js} +2 -2
  199. package/chunks/{chunk-SIUQ3YYX.js → chunk-XVNQMZ2I.js} +1 -1
  200. package/chunks/{chunk-SYCJMSIJ.js → chunk-XWRJCPHC.js} +1 -1
  201. package/chunks/{chunk-SUAKHHK7.js → chunk-Y66VOBRP.js} +3 -3
  202. package/chunks/chunk-YAF2MQZ6.js +19 -0
  203. package/chunks/chunk-YHN5SUIJ.js +219 -0
  204. package/chunks/{chunk-BR4QREVK.js → chunk-YQ3U5MUC.js} +1 -1
  205. package/chunks/{chunk-Y6Z2O3WR.js → chunk-YUZI3WAC.js} +1 -1
  206. package/chunks/{chunk-YDOXPLYL.js → chunk-ZA74ZTQU.js} +4564 -1326
  207. package/chunks/{chunk-DCZWC4PF.js → chunk-ZGE3222J.js} +5 -5
  208. package/chunks/chunk-ZP4ZZJJG.js +448 -0
  209. package/chunks/{chunk-AHNJGLFV.js → chunk-ZPAHLFZU.js} +3 -3
  210. package/chunks/cli-entry-path-4VJ3Y6T2.js +10 -0
  211. package/chunks/{computer-use-WMY3UOBX.js → computer-use-SHA6C3ES.js} +50 -50
  212. package/chunks/config-utils-XSHOMMK4.js +24 -0
  213. package/chunks/contextCommand-HOAF5LUC.js +68 -0
  214. package/chunks/create-sub-session-EAB2U5XW.js +207 -0
  215. package/chunks/create-sub-session-WJOWBFEP.js +375 -0
  216. package/chunks/{cron-create-JSXEIPVS.js → cron-create-GMVKSXZT.js} +9 -9
  217. package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-VDZKUAVK.js} +7 -7
  218. package/chunks/{cron-list-D4ZX4IOE.js → cron-list-UG7C7RAR.js} +14 -10
  219. package/chunks/{daemon-WPAENEBW.js → daemon-MI5HF26N.js} +1074 -61
  220. package/chunks/daemon-status-provider-KFL3LRTP.js +76 -0
  221. package/chunks/{de-ZFPPQVSF.js → de-2VCDRDGU.js} +68 -6
  222. package/chunks/{devtools-FM6GJPYG.js → devtools-4QFYJT6U.js} +3 -3
  223. package/chunks/{dist-O2IRTRPP.js → dist-IEXZC5ZR.js} +10 -10
  224. package/chunks/{dist-SCFLLYMK.js → dist-PQK4GCKA.js} +12 -11
  225. package/chunks/{dist-63IS3ZMI.js → dist-PZV5RKM6.js} +4 -4
  226. package/chunks/{dist-E6UANPIM.js → dist-U75JK3PF.js} +1011 -197
  227. package/chunks/{dist-H2AEJCZ5.js → dist-VXO7QBON.js} +5 -5
  228. package/chunks/{dist-Z34QPAQW.js → dist-WH4TZSH3.js} +529 -79
  229. package/chunks/{dist-BEXOZXLQ.js → dist-X2ABIW5R.js} +36 -15
  230. package/chunks/earlyInputCapture-PKAQJMIP.js +69 -0
  231. package/chunks/{edit-OTYWAXGP.js → edit-6TXLYHJ2.js} +51 -51
  232. package/chunks/{en-N4EPZAQI.js → en-NJCA3TAA.js} +78 -6
  233. package/chunks/{enter-worktree-HNYBDVCX.js → enter-worktree-ZTILGPJX.js} +50 -50
  234. package/chunks/{enterPlanMode-CJCNGT63.js → enterPlanMode-62HRAMCH.js} +66 -51
  235. package/chunks/environment-OYA3ZVEL.js +89 -0
  236. package/chunks/errors-BFXOUUUR.js +75 -0
  237. package/chunks/{exit-worktree-DUUKOE3X.js → exit-worktree-HHJ5M6MV.js} +50 -50
  238. package/chunks/{exitPlanMode-AMMSXOAJ.js → exitPlanMode-M3SWHCL7.js} +51 -51
  239. package/chunks/{fast-path-OV6NIP3K.js → fast-path-3VMPLM74.js} +8 -8
  240. package/chunks/{fast-path-settings-7RIFI3PK.js → fast-path-settings-DAOVFADC.js} +8 -6
  241. package/chunks/{fileFromPath-IBEHA3CO.js → fileFromPath-UDALK7FM.js} +3 -3
  242. package/chunks/{fr-5WWMY53B.js → fr-5F3E7WKD.js} +68 -6
  243. package/chunks/{gemini-NQ3WWBKB.js → gemini-ZCGVYOJL.js} +181 -110
  244. package/chunks/{geminiContentGenerator-CDUNEJQE.js → geminiContentGenerator-XBYBAIDQ.js} +9 -9
  245. package/chunks/{getMachineId-bsd-4CASPIU4.js → getMachineId-bsd-EXV7SWPA.js} +3 -3
  246. package/chunks/{getMachineId-darwin-HPQPEMZR.js → getMachineId-darwin-IUOMFXU3.js} +3 -3
  247. package/chunks/{getMachineId-linux-AUARKYHL.js → getMachineId-linux-K7XJYFHL.js} +2 -2
  248. package/chunks/{getMachineId-unsupported-S32ZDA2T.js → getMachineId-unsupported-EA5FDRJ6.js} +2 -2
  249. package/chunks/{getMachineId-win-4EFLHYIJ.js → getMachineId-win-KBA6RAI5.js} +3 -3
  250. package/chunks/{glob-ROV3YS4R.js → glob-UOEYQNHN.js} +97 -75
  251. package/chunks/{grep-NRITKDCD.js → grep-OQM3CH7W.js} +50 -50
  252. package/chunks/handleAutoUpdate-ORBYVJHZ.js +69 -0
  253. package/chunks/i18n-NBP574CO.js +84 -0
  254. package/chunks/initializer-CWD7TCCD.js +73 -0
  255. package/chunks/installationInfo-CHPDUPWC.js +65 -0
  256. package/chunks/{ja-CUHZOLEJ.js → ja-66J6B53L.js} +69 -7
  257. package/chunks/{keychain-token-storage-UJV5XP4Z.js → keychain-token-storage-AU22CQI6.js} +4 -4
  258. package/chunks/{kittyProtocolDetector-OJRCJLIU.js → kittyProtocolDetector-HCNNKJTI.js} +2 -2
  259. package/chunks/list-ZTTO362W.js +76 -0
  260. package/chunks/loadedSettingsAdapter-V4ZTRKUO.js +70 -0
  261. package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-C4EXLYVA.js} +10 -10
  262. package/chunks/{lowlight-FYAAUU5J.js → lowlight-J2OZNPCA.js} +1 -1
  263. package/chunks/{ls-7MFU2QYW.js → ls-2OUTG3IZ.js} +6 -6
  264. package/chunks/{lsp-XHDTPTGV.js → lsp-4VMNXZW6.js} +4 -4
  265. package/chunks/mcp-UH5PSGIK.js +70 -0
  266. package/chunks/{monitor-FL2ZO33W.js → monitor-F4NYEU5J.js} +50 -50
  267. package/chunks/{multipart-parser-AJ4WASWR.js → multipart-parser-AWZKXSQN.js} +3 -3
  268. package/chunks/nonInteractiveCli-7IHPXVNH.js +129 -0
  269. package/chunks/{notebook-edit-6PULTHL5.js → notebook-edit-HPDXNGQH.js} +51 -51
  270. package/chunks/openaiContentGenerator-OBDNNOE2.js +56 -0
  271. package/chunks/pidfile-AUMGYIOK.js +73 -0
  272. package/chunks/{pt-OLYN42DS.js → pt-TFZO5Y6T.js} +68 -6
  273. package/chunks/{qwenContentGenerator-NX2E7PB7.js → qwenContentGenerator-LH2U2YRG.js} +52 -52
  274. package/chunks/{qwenOAuth2-ZV7YLMND.js → qwenOAuth2-LEYOU7RU.js} +9 -9
  275. package/chunks/read-file-HUUFBLEO.js +30 -0
  276. package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-JUFHCKSC.js} +5 -5
  277. package/chunks/{read-package-up-ER5OJUGP.js → read-package-up-TCM6I7S2.js} +2 -2
  278. package/chunks/{record-artifact-SQ2OKRJW.js → record-artifact-DWSMBXYY.js} +4 -4
  279. package/chunks/ripGrep-C7X33LU6.js +60 -0
  280. package/chunks/{ru-LDM3GWVQ.js → ru-4L4LFHIT.js} +68 -6
  281. package/chunks/{run-qwen-serve-JK2DL7PI.js → run-qwen-serve-DGW5AFDJ.js} +1465 -283
  282. package/chunks/runtime-NYUSLBEZ.js +99 -0
  283. package/chunks/{scheduler-O4IGVZKK.js → scheduler-5VKDXULT.js} +51 -51
  284. package/chunks/{send-message-76GT3JMC.js → send-message-JZ752NWD.js} +7 -7
  285. package/chunks/serve-UTAHSFXH.js +76 -0
  286. package/chunks/{server-SGNPKX2O.js → server-VUHSYSUV.js} +9088 -1817
  287. package/chunks/{session-5BNM25EZ.js → session-QSGSSNFB.js} +340 -135
  288. package/chunks/settings-X24RYEED.js +120 -0
  289. package/chunks/shell-4MSI2R4O.js +70 -0
  290. package/chunks/{skill-I22QK5XS.js → skill-JR3GTNVZ.js} +24 -24
  291. package/chunks/spawnChannel-RFAAO44J.js +70 -0
  292. package/chunks/{src-7XL4G4DC.js → src-VLI3TKEY.js} +4 -4
  293. package/chunks/{src-BBQSM46M.js → src-YDBNMIIM.js} +183 -53
  294. package/chunks/standalone-update-4CY4HKGC.js +79 -0
  295. package/chunks/{startInteractiveUI-JII36UGN.js → startInteractiveUI-FOD7MMVB.js} +2368 -1923
  296. package/chunks/stdioHelpers-UMY72QRP.js +14 -0
  297. package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-LELY6HAI.js} +5 -5
  298. package/chunks/task-create-QY3BIMNM.js +23 -0
  299. package/chunks/{task-list-TGGJX7EA.js → task-list-D2U47WBJ.js} +11 -10
  300. package/chunks/{task-stop-W7NGTMYQ.js → task-stop-N6E5IYLH.js} +4 -4
  301. package/chunks/{task-update-XYWMHJGJ.js → task-update-HJCQILLB.js} +13 -12
  302. package/chunks/{team-create-A7NUU5AQ.js → team-create-ZLQSU2E3.js} +50 -50
  303. package/chunks/{team-delete-UHQQ2QQX.js → team-delete-RCWYDRF4.js} +11 -10
  304. package/chunks/{team-plan-approval-TOQRJ2KI.js → team-plan-approval-YUAYBYLS.js} +50 -50
  305. package/chunks/theme-manager-SKNEBMOG.js +64 -0
  306. package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-FKCGATPJ.js} +6 -6
  307. package/chunks/{tool-search-SZ4EFS2T.js → tool-search-V5J3TGWY.js} +24 -24
  308. package/chunks/total-session-admission-2WIH72I3.js +72 -0
  309. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  310. package/chunks/trustedFolders-JF265CRI.js +80 -0
  311. package/chunks/types-ML3TRJQ5.js +16 -0
  312. package/chunks/updateCheck-AMXNPBP6.js +69 -0
  313. package/chunks/updateEventEmitter-5MKC7BLQ.js +10 -0
  314. package/chunks/validateNonInterActiveAuth-6YHQO7PD.js +194 -0
  315. package/chunks/{version-NO2XSNNP.js → version-UEJJK7PE.js} +3 -3
  316. package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-QGODBB6S.js} +8 -8
  317. package/chunks/{workflow-WO2H6NRI.js → workflow-5YFA5V4M.js} +51 -51
  318. package/chunks/workspace-providers-status-LMBLBNR7.js +73 -0
  319. package/chunks/workspace-registration-store-VV2S4MSV.js +27 -0
  320. package/chunks/workspace-registry-BVMPYRLN.js +76 -0
  321. package/chunks/workspace-service-PUYIZ3J4.js +86 -0
  322. package/chunks/workspace-skills-status-CJ7J2KPP.js +72 -0
  323. package/chunks/{write-file-PX2Z7IBE.js → write-file-OV77M6X7.js} +51 -51
  324. package/chunks/{yargs-B64EYTCF.js → yargs-6H2AUULL.js} +2 -2
  325. package/chunks/{zh-J4F6QWQV.js → zh-FSAH32JB.js} +79 -7
  326. package/chunks/{zh-TW-XVDWOLSW.js → zh-TW-D2YIE2LO.js} +79 -7
  327. package/cli.js +18 -17
  328. package/locales/ca.js +91 -7
  329. package/locales/de.js +90 -7
  330. package/locales/en.js +109 -7
  331. package/locales/fr.js +91 -7
  332. package/locales/ja.js +93 -7
  333. package/locales/pt.js +90 -7
  334. package/locales/ru.js +90 -7
  335. package/locales/zh-TW.js +106 -7
  336. package/locales/zh.js +106 -7
  337. package/package.json +3 -6
  338. package/web-shell/assets/{arc-BWyoJpY2.js → arc-CObt_TK9.js} +1 -1
  339. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BT0mGrz2.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
  340. package/web-shell/assets/{blockDiagram-GPEHLZMM-BLgUWvyf.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
  341. package/web-shell/assets/{c4Diagram-AAUBKEIU-DYx9M7oU.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
  342. package/web-shell/assets/channel-BBaLq8MV.js +1 -0
  343. package/web-shell/assets/{chunk-2J33WTMH-CfMHWbuZ.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
  344. package/web-shell/assets/{chunk-4BX2VUAB-B1URoqEV.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
  345. package/web-shell/assets/{chunk-55IACEB6-DAIaM4QF.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
  346. package/web-shell/assets/{chunk-727SXJPM-B2X34knw.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
  347. package/web-shell/assets/{chunk-AQP2D5EJ-Cif-zLTQ.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
  348. package/web-shell/assets/{chunk-FMBD7UC4-H18WCXdY.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
  349. package/web-shell/assets/{chunk-ND2GUHAM-YFtetHi0.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
  350. package/web-shell/assets/{chunk-QZHKN3VN-By2hiH3r.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
  351. package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
  352. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
  353. package/web-shell/assets/{cose-bilkent-S5V4N54A-VrcnnLZu.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
  354. package/web-shell/assets/{dagre-BM42HDAG-CGo-IaVV.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
  355. package/web-shell/assets/{diagram-2AECGRRQ-Dl4QjzIB.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
  356. package/web-shell/assets/{diagram-5GNKFQAL-qMLmsO0u.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
  357. package/web-shell/assets/{diagram-KO2AKTUF-CHlmuxPI.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
  358. package/web-shell/assets/{diagram-LMA3HP47-BUwU3GwT.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
  359. package/web-shell/assets/{diagram-OG6HWLK6-HEhwPDUM.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
  360. package/web-shell/assets/{erDiagram-TEJ5UH35-1n0llBmM.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
  361. package/web-shell/assets/{flowDiagram-I6XJVG4X-BN74uMnt.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
  362. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BoOq78i3.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
  363. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CN8b00c8.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
  364. package/web-shell/assets/index-3uAT3ehO.css +5 -0
  365. package/web-shell/assets/index-CVHa2QH7.js +3 -0
  366. package/web-shell/assets/index-D1KigWat.js +1128 -0
  367. package/web-shell/assets/{infoDiagram-5YYISTIA-CCurnIna.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
  368. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AwuRqdUP.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
  369. package/web-shell/assets/{journeyDiagram-JHISSGLW-B7IICk-E.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
  370. package/web-shell/assets/{kanban-definition-UN3LZRKU-BYF0OKhx.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
  371. package/web-shell/assets/{linear-GWWguGfD.js → linear-vpW4FrZs.js} +1 -1
  372. package/web-shell/assets/{mermaid.core-JqtkxvCl.js → mermaid.core-DsHRUnDd.js} +5 -5
  373. package/web-shell/assets/{mindmap-definition-RKZ34NQL-B0MmHsZ6.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
  374. package/web-shell/assets/{pieDiagram-4H26LBE5-DhImUZLQ.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
  375. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DGeSC3DT.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
  376. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DkspY6Re.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
  377. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CaOofS2x.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
  378. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DFQ_kFnN.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
  379. package/web-shell/assets/{stateDiagram-AJRCARHV-D3snw0Tz.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
  380. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
  381. package/web-shell/assets/{timeline-definition-PNZ67QCA-l4zH8nLM.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
  382. package/web-shell/assets/{vennDiagram-CIIHVFJN-BnRlA98M.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
  383. package/web-shell/assets/{wardley-L42UT6IY-BS0xUdmd.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
  384. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKGBUWyQ.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
  385. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVb2HuOB.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
  386. package/web-shell/index.html +16 -4
  387. package/chunks/MaxSizedBox-5DT2SD7B.js +0 -71
  388. package/chunks/agent-H2DGKS77.js +0 -68
  389. package/chunks/agent-headless-KFMFIT6J.js +0 -62
  390. package/chunks/bridge-NA3ZQQKJ.js +0 -78
  391. package/chunks/chunk-5P5XGNYH.js +0 -93
  392. package/chunks/chunk-6SHO7WFF.js +0 -79
  393. package/chunks/chunk-IFEWJXFS.js +0 -37
  394. package/chunks/chunk-XNXVCNAT.js +0 -88
  395. package/chunks/contextCommand-LXFZRP4L.js +0 -68
  396. package/chunks/daemon-status-provider-GJRXY5EN.js +0 -76
  397. package/chunks/earlyInputCapture-KNOYZ4MJ.js +0 -69
  398. package/chunks/environment-ATFTYMLZ.js +0 -88
  399. package/chunks/errors-A54HAADA.js +0 -75
  400. package/chunks/handleAutoUpdate-CEZJAARW.js +0 -65
  401. package/chunks/initializer-BRFJKRRX.js +0 -71
  402. package/chunks/list-KVHF7O4X.js +0 -73
  403. package/chunks/loadedSettingsAdapter-LL5PSFKX.js +0 -68
  404. package/chunks/mcp-3GCXRTOQ.js +0 -68
  405. package/chunks/nonInteractiveCli-PTQI3DV6.js +0 -119
  406. package/chunks/openaiContentGenerator-YE42PKCY.js +0 -56
  407. package/chunks/pidfile-NZYSCFRK.js +0 -73
  408. package/chunks/read-file-33XGP5HF.js +0 -30
  409. package/chunks/ripGrep-QWZLGTAN.js +0 -60
  410. package/chunks/serve-JTMIGANH.js +0 -74
  411. package/chunks/settings-3MI4XXP6.js +0 -118
  412. package/chunks/shell-YJKBE67T.js +0 -68
  413. package/chunks/spawnChannel-UNV6W4DU.js +0 -70
  414. package/chunks/task-create-WCHTB435.js +0 -22
  415. package/chunks/theme-manager-WZ4RRMMB.js +0 -64
  416. package/chunks/total-session-admission-ULXJWXFV.js +0 -72
  417. package/chunks/trustedFolders-LAZZPZ3D.js +0 -79
  418. package/chunks/types-QX5C3CHJ.js +0 -12
  419. package/chunks/updateCheck-KONLM73X.js +0 -65
  420. package/chunks/validateNonInterActiveAuth-MPKSRCXD.js +0 -184
  421. package/chunks/workspace-providers-status-3W7E7DFW.js +0 -71
  422. package/chunks/workspace-registry-SXJZNN3O.js +0 -74
  423. package/chunks/workspace-service-CZRQZ4Q4.js +0 -80
  424. package/chunks/workspace-skills-status-K7WFREPD.js +0 -70
  425. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
  426. package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
  427. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
  428. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
  429. package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
  430. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
  431. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
  432. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
  433. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
  434. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
  435. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
  436. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
  437. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  438. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
  439. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
  440. package/node_modules/@qwen-code/audio-capture/package.json +0 -30
  441. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  442. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  443. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  444. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  445. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  446. package/web-shell/assets/channel-wmPUGHtg.js +0 -1
  447. package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +0 -1
  448. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +0 -1
  449. package/web-shell/assets/index-CNwoO1Cn.js +0 -783
  450. package/web-shell/assets/index-CWQ0z6kZ.css +0 -5
  451. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +0 -1
@@ -10,49 +10,49 @@ import {
10
10
  require_rpc,
11
11
  require_umd,
12
12
  require_writer
13
- } from "./chunk-E6US47KI.js";
13
+ } from "./chunk-4WKAA4KS.js";
14
14
  import {
15
15
  require_hasown
16
- } from "./chunk-UWCTAVOD.js";
16
+ } from "./chunk-CR3C7WXL.js";
17
17
  import {
18
18
  DEFAULT_QWEN_MODEL,
19
19
  MAINLINE_CODER_MODEL
20
- } from "./chunk-OFEVLU4C.js";
20
+ } from "./chunk-CARU2RR2.js";
21
21
  import {
22
22
  Mutex
23
- } from "./chunk-OMX7CUOE.js";
23
+ } from "./chunk-VGC4I5JJ.js";
24
24
  import {
25
25
  isAnyAutoMemPath
26
- } from "./chunk-OACJLMLD.js";
26
+ } from "./chunk-FBU7WRZI.js";
27
27
  import {
28
28
  InstallationManager
29
- } from "./chunk-SUAKHHK7.js";
29
+ } from "./chunk-Y66VOBRP.js";
30
30
  import {
31
31
  STRUCTURED_OUTPUT_REDACTED_ARGS
32
- } from "./chunk-FEJ2FZ3U.js";
32
+ } from "./chunk-WTNZ6DXB.js";
33
33
  import {
34
34
  BaseDeclarativeTool,
35
35
  BaseToolInvocation,
36
36
  ToolDisplayNames,
37
37
  ToolNames
38
- } from "./chunk-X3YGAX7V.js";
38
+ } from "./chunk-JGUT3LWZ.js";
39
39
  import {
40
40
  atomicWriteFile,
41
41
  atomicWriteFileSync
42
- } from "./chunk-7LTB54MK.js";
42
+ } from "./chunk-WIEO4CWB.js";
43
43
  import {
44
44
  convertSchema,
45
45
  estimateTextTokens,
46
46
  runtimeDiagnostics,
47
47
  safeJsonParse
48
- } from "./chunk-CCGOFQV3.js";
48
+ } from "./chunk-TQBODCFD.js";
49
49
  import {
50
50
  require_lib
51
- } from "./chunk-IRJWHZWU.js";
51
+ } from "./chunk-A4UCTEB5.js";
52
52
  import {
53
53
  FinishReason,
54
54
  GenerateContentResponse
55
- } from "./chunk-55ZMG67I.js";
55
+ } from "./chunk-4LD5APFL.js";
56
56
  import {
57
57
  FatalConfigError,
58
58
  Storage,
@@ -71,13 +71,13 @@ import {
71
71
  setShellTracePropagation,
72
72
  shortenPath,
73
73
  unescapePath
74
- } from "./chunk-22MNNNXE.js";
74
+ } from "./chunk-7NFB7LBQ.js";
75
75
  import {
76
76
  require_dist
77
- } from "./chunk-ZERZSAZL.js";
77
+ } from "./chunk-75DOP5OR.js";
78
78
  import {
79
79
  require_src
80
- } from "./chunk-QN5NZ3UQ.js";
80
+ } from "./chunk-DMTGGOSA.js";
81
81
  import {
82
82
  DiagLogLevel,
83
83
  ROOT_CONTEXT,
@@ -93,11 +93,11 @@ import {
93
93
  metrics,
94
94
  propagation,
95
95
  trace
96
- } from "./chunk-Z2Z3GUXZ.js";
96
+ } from "./chunk-TB6UDU4T.js";
97
97
  import {
98
98
  __qwen_dirname,
99
99
  init_esbuild_shims
100
- } from "./chunk-A4BMJM77.js";
100
+ } from "./chunk-5O2XNYP6.js";
101
101
  import {
102
102
  __commonJS,
103
103
  __esm,
@@ -45840,19 +45840,19 @@ var require_getMachineId = __commonJS({
45840
45840
  if (!getMachineIdImpl) {
45841
45841
  switch (process2.platform) {
45842
45842
  case "darwin":
45843
- getMachineIdImpl = (await import("./getMachineId-darwin-HPQPEMZR.js")).getMachineId;
45843
+ getMachineIdImpl = (await import("./getMachineId-darwin-IUOMFXU3.js")).getMachineId;
45844
45844
  break;
45845
45845
  case "linux":
45846
- getMachineIdImpl = (await import("./getMachineId-linux-AUARKYHL.js")).getMachineId;
45846
+ getMachineIdImpl = (await import("./getMachineId-linux-K7XJYFHL.js")).getMachineId;
45847
45847
  break;
45848
45848
  case "freebsd":
45849
- getMachineIdImpl = (await import("./getMachineId-bsd-4CASPIU4.js")).getMachineId;
45849
+ getMachineIdImpl = (await import("./getMachineId-bsd-EXV7SWPA.js")).getMachineId;
45850
45850
  break;
45851
45851
  case "win32":
45852
- getMachineIdImpl = (await import("./getMachineId-win-4EFLHYIJ.js")).getMachineId;
45852
+ getMachineIdImpl = (await import("./getMachineId-win-KBA6RAI5.js")).getMachineId;
45853
45853
  break;
45854
45854
  default:
45855
- getMachineIdImpl = (await import("./getMachineId-unsupported-S32ZDA2T.js")).getMachineId;
45855
+ getMachineIdImpl = (await import("./getMachineId-unsupported-EA5FDRJ6.js")).getMachineId;
45856
45856
  break;
45857
45857
  }
45858
45858
  }
@@ -52768,8 +52768,8 @@ var require_async = __commonJS({
52768
52768
  cb(null, x);
52769
52769
  }
52770
52770
  }, "maybeRealpath");
52771
- var defaultReadPackage = /* @__PURE__ */ __name(function defaultReadPackage2(readFile, pkgfile, cb) {
52772
- readFile(pkgfile, function(readFileErr, body) {
52771
+ var defaultReadPackage = /* @__PURE__ */ __name(function defaultReadPackage2(readFile2, pkgfile, cb) {
52772
+ readFile2(pkgfile, function(readFileErr, body) {
52773
52773
  if (readFileErr) cb(readFileErr);
52774
52774
  else {
52775
52775
  try {
@@ -52804,7 +52804,7 @@ var require_async = __commonJS({
52804
52804
  opts = normalizeOptions(x, opts);
52805
52805
  var isFile = opts.isFile || defaultIsFile;
52806
52806
  var isDirectory = opts.isDirectory || defaultIsDir;
52807
- var readFile = opts.readFile || fs9.readFile;
52807
+ var readFile2 = opts.readFile || fs9.readFile;
52808
52808
  var realpath = opts.realpath || defaultRealpath;
52809
52809
  var readPackage = opts.readPackage || defaultReadPackage;
52810
52810
  if (opts.readFile && opts.readPackage) {
@@ -52930,7 +52930,7 @@ var require_async = __commonJS({
52930
52930
  var pkgfile = path11.join(pkgdir, "package.json");
52931
52931
  isFile(pkgfile, function(err2, ex) {
52932
52932
  if (!ex) return loadpkg(path11.dirname(dir), cb2);
52933
- readPackage(readFile, pkgfile, function(err3, pkgParam) {
52933
+ readPackage(readFile2, pkgfile, function(err3, pkgParam) {
52934
52934
  if (err3) cb2(err3);
52935
52935
  var pkg = pkgParam;
52936
52936
  if (pkg && opts.packageFilter) {
@@ -52955,7 +52955,7 @@ var require_async = __commonJS({
52955
52955
  isFile(pkgfile, function(err2, ex) {
52956
52956
  if (err2) return cb2(err2);
52957
52957
  if (!ex) return loadAsFile(path11.join(x2, "index"), fpkg, cb2);
52958
- readPackage(readFile, pkgfile, function(err3, pkgParam) {
52958
+ readPackage(readFile2, pkgfile, function(err3, pkgParam) {
52959
52959
  if (err3) return cb2(err3);
52960
52960
  var pkg = pkgParam;
52961
52961
  if (pkg && opts.packageFilter) {
@@ -59215,6 +59215,9 @@ __name(detectEncodingFromBuffer, "detectEncodingFromBuffer");
59215
59215
  // packages/core/src/utils/pdf.ts
59216
59216
  init_esbuild_shims();
59217
59217
  import { execFile } from "node:child_process";
59218
+ import { mkdtemp, readdir, readFile, rm } from "node:fs/promises";
59219
+ import { tmpdir } from "node:os";
59220
+ import { join } from "node:path";
59218
59221
  var MAX_PDF_TEXT_OUTPUT_CHARS = 1e5;
59219
59222
  var PDF_FULL_TEXT_PAGE_LIMIT = 10;
59220
59223
  var PDF_MAX_PAGES_PER_READ = 20;
@@ -59223,6 +59226,10 @@ var PDF_TEXT_RESULT_MAX_TOKENS = 12e3;
59223
59226
  var PDF_TEXT_RESULT_WRAPPER_TOKEN_CHARS = 64;
59224
59227
  var PDF_TEXT_RESULT_CHARS_PER_TOKEN = 4;
59225
59228
  var PDF_TEXT_EXTRACTION_UNAVAILABLE_MESSAGE = "pdftotext is not installed. Install poppler-utils to enable PDF text extraction (e.g. `apt-get install poppler-utils` or `brew install poppler`).";
59229
+ var PDF_RENDER_UNAVAILABLE_MESSAGE = "pdftoppm is not installed. Install poppler-utils to enable PDF page rendering (e.g. `apt-get install poppler-utils` or `brew install poppler`).";
59230
+ var PDF_RENDER_SCALE_TO_PX = 1600;
59231
+ var PDF_RENDER_MAX_TOTAL_BASE64_BYTES = 25 * 1024 * 1024;
59232
+ var PDF_RENDER_TIMEOUT_MS = 12e4;
59226
59233
  var MAX_PDF_PAGE_NUMBER = 1e6;
59227
59234
  function shouldRequirePDFPageRange(pageCount, sizeBytes) {
59228
59235
  const hadPdfInfo = pageCount !== null;
@@ -59447,6 +59454,125 @@ async function extractPDFText(filePath, options) {
59447
59454
  }
59448
59455
  }
59449
59456
  __name(extractPDFText, "extractPDFText");
59457
+ var pdftoppmAvailable;
59458
+ var pdftoppmAvailablePromise;
59459
+ async function isPdftoppmAvailable() {
59460
+ if (pdftoppmAvailable !== void 0) return pdftoppmAvailable;
59461
+ if (pdftoppmAvailablePromise) return pdftoppmAvailablePromise;
59462
+ pdftoppmAvailablePromise = (async () => {
59463
+ try {
59464
+ const { code } = await execCommand("pdftoppm", ["-v"], {
59465
+ timeout: 5e3
59466
+ });
59467
+ return code === 0;
59468
+ } catch {
59469
+ return false;
59470
+ }
59471
+ })().then((result) => {
59472
+ pdftoppmAvailable = result;
59473
+ return result;
59474
+ }).finally(() => {
59475
+ pdftoppmAvailablePromise = void 0;
59476
+ });
59477
+ return pdftoppmAvailablePromise;
59478
+ }
59479
+ __name(isPdftoppmAvailable, "isPdftoppmAvailable");
59480
+ function comparePdfPageFilenames(a, b) {
59481
+ const pageNumber = /* @__PURE__ */ __name((name) => {
59482
+ const match = /(\d+)\.jpg$/i.exec(name);
59483
+ return match ? parseInt(match[1], 10) : 0;
59484
+ }, "pageNumber");
59485
+ return pageNumber(a) - pageNumber(b);
59486
+ }
59487
+ __name(comparePdfPageFilenames, "comparePdfPageFilenames");
59488
+ async function renderPDFPagesToImages(filePath, options) {
59489
+ const available = await isPdftoppmAvailable();
59490
+ if (!available) {
59491
+ return { success: false, error: PDF_RENDER_UNAVAILABLE_MESSAGE };
59492
+ }
59493
+ let tempDir;
59494
+ try {
59495
+ tempDir = await mkdtemp(join(tmpdir(), "pdf-render-"));
59496
+ const outputPrefix = join(tempDir, "page");
59497
+ const args = [
59498
+ "-jpeg",
59499
+ "-scale-to",
59500
+ String(PDF_RENDER_SCALE_TO_PX)
59501
+ ];
59502
+ if (options?.firstPage) {
59503
+ args.push("-f", String(options.firstPage));
59504
+ }
59505
+ if (options?.lastPage && options.lastPage !== Infinity) {
59506
+ args.push("-l", String(options.lastPage));
59507
+ }
59508
+ args.push("--", filePath, outputPrefix);
59509
+ const { stderr, code, timedOut } = await execCommand("pdftoppm", args, {
59510
+ timeout: PDF_RENDER_TIMEOUT_MS
59511
+ });
59512
+ if (timedOut) {
59513
+ return {
59514
+ success: false,
59515
+ error: `pdftoppm timed out after ${Math.round(
59516
+ PDF_RENDER_TIMEOUT_MS / 1e3
59517
+ )}s. The PDF may be unusually large or complex; try the 'pages' parameter to narrow the range.`
59518
+ };
59519
+ }
59520
+ if (code !== 0) {
59521
+ if (/password/i.test(stderr)) {
59522
+ return {
59523
+ success: false,
59524
+ error: "PDF is password-protected. Please provide an unprotected version."
59525
+ };
59526
+ }
59527
+ if (/damaged|corrupt|invalid/i.test(stderr)) {
59528
+ return { success: false, error: "PDF file is corrupted or invalid." };
59529
+ }
59530
+ return {
59531
+ success: false,
59532
+ error: `pdftoppm failed: ${stderr || "(no stderr)"}`
59533
+ };
59534
+ }
59535
+ const entries = (await readdir(tempDir)).filter((name) => name.toLowerCase().endsWith(".jpg")).sort(comparePdfPageFilenames);
59536
+ if (entries.length === 0) {
59537
+ return {
59538
+ success: false,
59539
+ error: "pdftoppm produced no image output. The PDF may be empty or the page range may be out of bounds."
59540
+ };
59541
+ }
59542
+ const images = [];
59543
+ let totalBytes = 0;
59544
+ let bytesTruncated = false;
59545
+ for (const name of entries) {
59546
+ const buffer = await readFile(join(tempDir, name));
59547
+ const data = buffer.toString("base64");
59548
+ if (images.length > 0 && totalBytes + data.length > PDF_RENDER_MAX_TOTAL_BASE64_BYTES) {
59549
+ bytesTruncated = true;
59550
+ break;
59551
+ }
59552
+ totalBytes += data.length;
59553
+ images.push({ data, mimeType: "image/jpeg" });
59554
+ }
59555
+ return { success: true, images, bytesTruncated };
59556
+ } catch (e) {
59557
+ return {
59558
+ success: false,
59559
+ error: `pdftoppm execution failed: ${e instanceof Error ? e.message : String(e)}`
59560
+ };
59561
+ } finally {
59562
+ if (tempDir) {
59563
+ await rm(tempDir, { recursive: true, force: true }).catch(() => {
59564
+ });
59565
+ }
59566
+ }
59567
+ }
59568
+ __name(renderPDFPagesToImages, "renderPDFPagesToImages");
59569
+
59570
+ // packages/core/src/services/visionBridge/vision-bridge-constants.ts
59571
+ init_esbuild_shims();
59572
+ var VISION_BRIDGE_MAX_IMAGES = 4;
59573
+ var VISION_BRIDGE_MAX_IMAGE_BASE64_BYTES = Math.floor(
59574
+ 9.9 * 1024 * 1024
59575
+ );
59450
59576
 
59451
59577
  // packages/core/src/utils/notebook.ts
59452
59578
  init_esbuild_shims();
@@ -60494,6 +60620,8 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
60494
60620
  const relativePathForDisplay = path2.relative(rootDirectory, filePath).replace(/\\/g, "/");
60495
60621
  const displayName = path2.basename(filePath);
60496
60622
  const modalities = config.getContentGeneratorConfig?.()?.modalities ?? {};
60623
+ const willRenderPdfImages = fileType === "pdf" && !!modalities.image && largePdfBehavior !== "reference";
60624
+ const renderForBridge = fileType === "pdf" && !modalities.image && preserveUnsupportedImage;
60497
60625
  const fileSizeInMB = stats.size / (1024 * 1024);
60498
60626
  const normalizedPages = pages?.trim();
60499
60627
  let pageRange;
@@ -60545,10 +60673,11 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
60545
60673
  if (willExtractPdfText && !pageRange) {
60546
60674
  const pageCount = await getPDFPageCount(filePath);
60547
60675
  const requirement = shouldRequirePDFPageRange(pageCount, stats.size);
60676
+ const rangeRequired = willRenderPdfImages ? requirement.effectivePageCount > PDF_MAX_PAGES_PER_READ : requirement.required;
60548
60677
  debugLogger2.debug(
60549
- `PDF full-text fallback gate: file=${relativePathForDisplay}, sizeMB=${fileSizeInMB.toFixed(2)}, pageCount=${pageCount ?? "unknown"}, required=${requirement.required}, effectivePageCount=${requirement.effectivePageCount}, hadPdfInfo=${requirement.hadPdfInfo}, behavior=${largePdfBehavior}`
60678
+ `PDF full-text fallback gate: file=${relativePathForDisplay}, sizeMB=${fileSizeInMB.toFixed(2)}, pageCount=${pageCount ?? "unknown"}, required=${requirement.required}, rangeRequired=${rangeRequired}, effectivePageCount=${requirement.effectivePageCount}, hadPdfInfo=${requirement.hadPdfInfo}, behavior=${largePdfBehavior}`
60550
60679
  );
60551
- if (requirement.required) {
60680
+ if (rangeRequired) {
60552
60681
  if (largePdfBehavior === "error" && !await isPdftotextAvailable()) {
60553
60682
  return {
60554
60683
  llmContent: `[Cannot extract text from PDF: "${displayName}". ${PDF_TEXT_EXTRACTION_UNAVAILABLE_MESSAGE}]`,
@@ -60755,34 +60884,95 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
60755
60884
  const pdfResult = await extractPDFText(filePath, pageRange);
60756
60885
  if (pdfResult.success) {
60757
60886
  const estimatedTokens = estimatePDFTextOutputTokens(pdfResult.text);
60758
- if (estimatedTokens > PDF_TEXT_RESULT_MAX_TOKENS) {
60759
- debugLogger2.debug(
60760
- `PDF text extraction output exceeds token limit: file=${relativePathForDisplay}, pages=${normalizedPages ?? "all"}, estimatedTokens=${estimatedTokens}, limit=${PDF_TEXT_RESULT_MAX_TOKENS}`
60761
- );
60762
- const guidance = buildPDFTextTooLargeGuidance(
60763
- displayName,
60764
- estimatedTokens,
60765
- normalizedPages
60766
- );
60767
- if (!pageRange && largePdfBehavior === "reference") {
60768
- return {
60769
- llmContent: guidance,
60770
- returnDisplay: `Referenced large PDF: ${relativePathForDisplay}`,
60771
- stats
60772
- };
60887
+ if (estimatedTokens <= PDF_TEXT_RESULT_MAX_TOKENS) {
60888
+ const pagesLabel = normalizedPages ? ` (pages ${normalizedPages})` : "";
60889
+ return {
60890
+ llmContent: pdfResult.text,
60891
+ returnDisplay: `Read pdf as text${pagesLabel}: ${relativePathForDisplay}`,
60892
+ stats
60893
+ };
60894
+ }
60895
+ }
60896
+ const toImageParts = /* @__PURE__ */ __name((images, startPage) => images.map((image, index) => ({
60897
+ inlineData: {
60898
+ data: image.data,
60899
+ mimeType: image.mimeType,
60900
+ displayName: `${displayName} (page ${startPage + index})`
60901
+ }
60902
+ })), "toImageParts");
60903
+ if (willRenderPdfImages) {
60904
+ const startPage = pageRange?.firstPage ?? 1;
60905
+ const render = await renderPDFPagesToImages(
60906
+ filePath,
60907
+ pageRange ?? { firstPage: 1, lastPage: PDF_MAX_PAGES_PER_READ }
60908
+ );
60909
+ if (render.success) {
60910
+ const parts = toImageParts(render.images, startPage);
60911
+ if (render.bytesTruncated) {
60912
+ parts.push({
60913
+ text: `[Rendered the first ${render.images.length} page(s) of "${displayName}"; later pages were omitted to stay within size limits. Use the 'pages' parameter to read a specific range.]`
60914
+ });
60915
+ } else if (!pageRange && render.images.length >= PDF_MAX_PAGES_PER_READ) {
60916
+ parts.push({
60917
+ text: `[Rendered the first ${render.images.length} page(s) (the per-read maximum) of "${displayName}". If the document has more pages, use the 'pages' parameter to read a later range.]`
60918
+ });
60919
+ }
60920
+ return {
60921
+ llmContent: parts,
60922
+ returnDisplay: `Read pdf as ${render.images.length} image(s): ${relativePathForDisplay}`,
60923
+ stats
60924
+ };
60925
+ }
60926
+ debugLogger2.debug(
60927
+ `PDF image render failed, falling back to text outcome: file=${relativePathForDisplay}, error=${render.error}`
60928
+ );
60929
+ }
60930
+ if (renderForBridge && pdfResult.success === false) {
60931
+ const render = await renderPDFPagesToImages(filePath, {
60932
+ firstPage: 1,
60933
+ lastPage: VISION_BRIDGE_MAX_IMAGES
60934
+ });
60935
+ if (render.success) {
60936
+ const parts = toImageParts(render.images, 1);
60937
+ const pageCount = await getPDFPageCount(filePath);
60938
+ const mayHaveMore = pageCount !== null ? pageCount > render.images.length : render.images.length >= VISION_BRIDGE_MAX_IMAGES;
60939
+ if (mayHaveMore || render.bytesTruncated) {
60940
+ const total = pageCount !== null ? ` of ${pageCount}` : "";
60941
+ parts.push({
60942
+ text: `[Rendered the first ${render.images.length}${total} page(s) of "${displayName}" for transcription; later pages were not included.]`
60943
+ });
60773
60944
  }
60945
+ return {
60946
+ llmContent: parts,
60947
+ returnDisplay: `Rendered ${render.images.length} page(s) for transcription: ${relativePathForDisplay}`,
60948
+ stats
60949
+ };
60950
+ }
60951
+ debugLogger2.debug(
60952
+ `PDF bridge render failed, falling back to text outcome: file=${relativePathForDisplay}, error=${render.error}`
60953
+ );
60954
+ }
60955
+ if (pdfResult.success) {
60956
+ const guidance = buildPDFTextTooLargeGuidance(
60957
+ displayName,
60958
+ estimatePDFTextOutputTokens(pdfResult.text),
60959
+ normalizedPages
60960
+ );
60961
+ debugLogger2.debug(
60962
+ `PDF text extraction output exceeds token limit: file=${relativePathForDisplay}, pages=${normalizedPages ?? "all"}, limit=${PDF_TEXT_RESULT_MAX_TOKENS}`
60963
+ );
60964
+ if (!pageRange && largePdfBehavior === "reference") {
60774
60965
  return {
60775
60966
  llmContent: guidance,
60776
- returnDisplay: `PDF text too large: ${relativePathForDisplay}`,
60777
- error: guidance,
60778
- errorType: "file_too_large" /* FILE_TOO_LARGE */,
60967
+ returnDisplay: `Referenced large PDF: ${relativePathForDisplay}`,
60779
60968
  stats
60780
60969
  };
60781
60970
  }
60782
- const pagesLabel = normalizedPages ? ` (pages ${normalizedPages})` : "";
60783
60971
  return {
60784
- llmContent: pdfResult.text,
60785
- returnDisplay: `Read pdf as text${pagesLabel}: ${relativePathForDisplay}`,
60972
+ llmContent: guidance,
60973
+ returnDisplay: `PDF text too large: ${relativePathForDisplay}`,
60974
+ error: guidance,
60975
+ errorType: "file_too_large" /* FILE_TOO_LARGE */,
60786
60976
  stats
60787
60977
  };
60788
60978
  }
@@ -61746,7 +61936,7 @@ function getLanguageFromFilePath(filePath) {
61746
61936
  return extensionToLanguageMap[extension];
61747
61937
  }
61748
61938
  const filename = path3.basename(filePath).toLowerCase();
61749
- return extensionToLanguageMap[`.${filename}`];
61939
+ return extensionToLanguageMap[filename] ?? extensionToLanguageMap[`.${filename}`];
61750
61940
  }
61751
61941
  __name(getLanguageFromFilePath, "getLanguageFromFilePath");
61752
61942
 
@@ -63984,6 +64174,20 @@ function parseTaggedThinkingText(text) {
63984
64174
  }
63985
64175
  __name(parseTaggedThinkingText, "parseTaggedThinkingText");
63986
64176
 
64177
+ // packages/core/src/core/invalid-stream-error.ts
64178
+ init_esbuild_shims();
64179
+ var InvalidStreamError = class extends Error {
64180
+ static {
64181
+ __name(this, "InvalidStreamError");
64182
+ }
64183
+ type;
64184
+ constructor(message, type) {
64185
+ super(message);
64186
+ this.name = "InvalidStreamError";
64187
+ this.type = type;
64188
+ }
64189
+ };
64190
+
63987
64191
  // packages/core/src/core/openaiContentGenerator/converter.ts
63988
64192
  var debugLogger6 = createDebugLogger("CONVERTER");
63989
64193
  var SPLIT_TOOL_MEDIA_TEXT = "(attached media from previous tool call)";
@@ -64640,6 +64844,10 @@ function hasThoughtPart(parts) {
64640
64844
  return parts.some((part) => part.thought === true);
64641
64845
  }
64642
64846
  __name(hasThoughtPart, "hasThoughtPart");
64847
+ var THINKING_TAG_PATTERN = /<\/?think(?:ing)?\s*>/i;
64848
+ var CLOSING_THINKING_TAG_PATTERN = /\n[^\S\r\n]*<\/think(?:ing)?[^\S\r\n]*>/i;
64849
+ var LEADING_CLOSING_THINKING_TAG_PATTERN = /^[^\S\r\n]*<\/think(?:ing)?[^\S\r\n]*>/i;
64850
+ var LEADING_THINKING_TAG_PATTERN = /^\s*<\/?think(?:ing)?\s*>/i;
64643
64851
  function convertOpenAIResponseToGemini(openaiResponse, requestContext) {
64644
64852
  const choice = openaiResponse.choices?.[0];
64645
64853
  const response = new GenerateContentResponse();
@@ -64723,7 +64931,7 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
64723
64931
  );
64724
64932
  }
64725
64933
  if (choice) {
64726
- const parts = [];
64934
+ let parts = [];
64727
64935
  let contentParts = [];
64728
64936
  const reasoningText = choice.delta?.reasoning_content ?? choice.delta?.reasoning;
64729
64937
  if (typeof choice.delta?.content === "string") {
@@ -64768,6 +64976,12 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
64768
64976
  cumulativeMode: false
64769
64977
  }
64770
64978
  );
64979
+ if (normalizedReasoningText) {
64980
+ requestContext.hasStructuredReasoningContent = true;
64981
+ if (THINKING_TAG_PATTERN.test(normalizedReasoningText)) {
64982
+ requestContext.hasThinkingTagInReasoning = true;
64983
+ }
64984
+ }
64771
64985
  if (normalizedReasoningText && !requestContext.responseParsingOptions?.taggedThinkingTags) {
64772
64986
  parts.push(createOpenAIReasoningThoughtPart(normalizedReasoningText));
64773
64987
  } else if (normalizedReasoningText && !requestContext.hasTaggedThinkingThought) {
@@ -64825,10 +65039,45 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
64825
65039
  }
64826
65040
  }
64827
65041
  }
65042
+ const visibleText = parts.map(
65043
+ (part) => part.thought !== true && typeof part.text === "string" ? part.text : ""
65044
+ ).join("");
65045
+ const leakedThinkingTag = requestContext.hasStructuredReasoningContent === true && (requestContext.hasVisibleContent !== true && LEADING_THINKING_TAG_PATTERN.test(visibleText) || requestContext.hasThinkingTagInReasoning === true && (CLOSING_THINKING_TAG_PATTERN.test(visibleText) || requestContext.atVisibleLineStart === true && LEADING_CLOSING_THINKING_TAG_PATTERN.test(visibleText)));
65046
+ if (/\S/.test(visibleText)) {
65047
+ requestContext.hasVisibleContent = true;
65048
+ }
65049
+ if (visibleText && requestContext.hasThinkingTagInReasoning === true) {
65050
+ const lastLineBreak = visibleText.lastIndexOf("\n");
65051
+ const lineSuffix = visibleText.slice(lastLineBreak + 1);
65052
+ requestContext.atVisibleLineStart = (lastLineBreak >= 0 || requestContext.atVisibleLineStart === true) && /^[^\S\r\n]*$/.test(lineSuffix);
65053
+ }
65054
+ if (leakedThinkingTag) {
65055
+ requestContext.pendingUntrustedResponseParts = void 0;
65056
+ throw new InvalidStreamError(
65057
+ "Model response leaked thinking tags.",
65058
+ "PROTOCOL_TAG_LEAK"
65059
+ );
65060
+ }
65061
+ const toolCallWithoutName = toolCallParser.hasNamelessToolCall();
65062
+ const completedToolCalls = choice.finish_reason ? toolCallParser.getCompletedToolCalls() : [];
65063
+ if (choice.finish_reason && (toolCallWithoutName || choice.finish_reason === "tool_calls" && completedToolCalls.length === 0)) {
65064
+ requestContext.pendingUntrustedResponseParts = void 0;
65065
+ throw new InvalidStreamError(
65066
+ "Model response contained a malformed tool call.",
65067
+ "MALFORMED_TOOL_CALL"
65068
+ );
65069
+ }
65070
+ const shouldHoldParts = !choice.finish_reason && (toolCallWithoutName || requestContext.hasThinkingTagInReasoning === true);
65071
+ if (shouldHoldParts) {
65072
+ (requestContext.pendingUntrustedResponseParts ??= []).push(...parts);
65073
+ parts.length = 0;
65074
+ } else if (requestContext.pendingUntrustedResponseParts) {
65075
+ parts = requestContext.pendingUntrustedResponseParts.concat(parts);
65076
+ requestContext.pendingUntrustedResponseParts = void 0;
65077
+ }
64828
65078
  let toolCallsTruncated = false;
64829
65079
  if (choice.finish_reason) {
64830
65080
  toolCallsTruncated = toolCallParser.hasIncompleteToolCalls();
64831
- const completedToolCalls = toolCallParser.getCompletedToolCalls();
64832
65081
  for (const toolCall of completedToolCalls) {
64833
65082
  if (toolCall.name) {
64834
65083
  parts.push({
@@ -66538,7 +66787,11 @@ function endToolExecutionSpan(span, metadata) {
66538
66787
  spanCtx.ended = true;
66539
66788
  try {
66540
66789
  const duration = Date.now() - spanCtx.startTime;
66541
- const endAttributes = { duration_ms: duration };
66790
+ const endAttributes = {};
66791
+ if (metadata?.attributes) {
66792
+ Object.assign(endAttributes, metadata.attributes);
66793
+ }
66794
+ endAttributes["duration_ms"] = duration;
66542
66795
  if (metadata) {
66543
66796
  if (metadata.success !== void 0)
66544
66797
  endAttributes["success"] = metadata.success;
@@ -68172,6 +68425,44 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
68172
68425
  };
68173
68426
  var uiTelemetryService = new UiTelemetryService();
68174
68427
 
68428
+ // packages/core/src/telemetry/api-activity-tracker.ts
68429
+ init_esbuild_shims();
68430
+ var ApiActivityTracker = class {
68431
+ static {
68432
+ __name(this, "ApiActivityTracker");
68433
+ }
68434
+ #errors = 0;
68435
+ #retries = 0;
68436
+ /** Fold in one model API error (called from `logApiError`). */
68437
+ recordError() {
68438
+ this.#errors += 1;
68439
+ }
68440
+ /** Fold in one automatic retry (called from `logApiRetry`). */
68441
+ recordRetry() {
68442
+ this.#retries += 1;
68443
+ }
68444
+ /**
68445
+ * Return the counts accumulated since the last drain and reset them to zero.
68446
+ * The read+reset is synchronous (no `await` between), so a `recordError` /
68447
+ * `recordRetry` racing an in-progress drain can never be lost — it simply
68448
+ * lands in the next window.
68449
+ */
68450
+ drain() {
68451
+ const counts = {
68452
+ errors: this.#errors,
68453
+ retries: this.#retries
68454
+ };
68455
+ this.#errors = 0;
68456
+ this.#retries = 0;
68457
+ return counts;
68458
+ }
68459
+ /** Peek at the pending counts without draining (tests / diagnostics). */
68460
+ peek() {
68461
+ return { errors: this.#errors, retries: this.#retries };
68462
+ }
68463
+ };
68464
+ var apiActivityTracker = new ApiActivityTracker();
68465
+
68175
68466
  // packages/core/src/telemetry/daemon-tracing.ts
68176
68467
  init_esbuild_shims();
68177
68468
  init_esm();
@@ -69674,6 +69965,7 @@ var MODEL_GENERATION_CONFIG_FIELDS = [
69674
69965
  "maxRetries",
69675
69966
  "retryErrorCodes",
69676
69967
  "enableCacheControl",
69968
+ "forceGlobalCacheScope",
69677
69969
  "schemaCompliance",
69678
69970
  "reasoning",
69679
69971
  "contextWindowSize",
@@ -69870,11 +70162,11 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
69870
70162
  let baseGenerator;
69871
70163
  try {
69872
70164
  if (authType === "openai" /* USE_OPENAI */) {
69873
- const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-YE42PKCY.js");
70165
+ const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-OBDNNOE2.js");
69874
70166
  baseGenerator = createOpenAIContentGenerator(generatorConfig, config);
69875
70167
  } else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
69876
- const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-ZV7YLMND.js");
69877
- const { QwenContentGenerator } = await import("./qwenContentGenerator-NX2E7PB7.js");
70168
+ const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-LEYOU7RU.js");
70169
+ const { QwenContentGenerator } = await import("./qwenContentGenerator-LH2U2YRG.js");
69878
70170
  try {
69879
70171
  const qwenClient = await getQwenOauthClient(
69880
70172
  config,
@@ -69892,10 +70184,10 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
69892
70184
  throw new Error(error instanceof Error ? error.message : String(error));
69893
70185
  }
69894
70186
  } else if (authType === "anthropic" /* USE_ANTHROPIC */) {
69895
- const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-CPF22MA7.js");
70187
+ const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-56U3YCP2.js");
69896
70188
  baseGenerator = createAnthropicContentGenerator(generatorConfig, config);
69897
70189
  } else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
69898
- const { createGeminiContentGenerator } = await import("./geminiContentGenerator-CDUNEJQE.js");
70190
+ const { createGeminiContentGenerator } = await import("./geminiContentGenerator-XBYBAIDQ.js");
69899
70191
  baseGenerator = createGeminiContentGenerator(generatorConfig, config);
69900
70192
  } else {
69901
70193
  throw new Error(
@@ -71620,6 +71912,7 @@ function logApiError(config, event) {
71620
71912
  "event.timestamp": (/* @__PURE__ */ new Date()).toISOString()
71621
71913
  };
71622
71914
  uiTelemetryService.addEvent(uiEvent, config.getSessionId());
71915
+ apiActivityTracker.recordError();
71623
71916
  if (!isInternalPromptId(event.prompt_id)) {
71624
71917
  recordUiTelemetryEventToChat(config, uiEvent);
71625
71918
  }
@@ -71886,6 +72179,7 @@ function logContentRetryFailure(config, event) {
71886
72179
  }
71887
72180
  __name(logContentRetryFailure, "logContentRetryFailure");
71888
72181
  function logApiRetry(config, event) {
72182
+ apiActivityTracker.recordRetry();
71889
72183
  QwenLogger.getInstance(config)?.logApiRetryEvent(event);
71890
72184
  if (!isTelemetrySdkInitialized()) return;
71891
72185
  const attributes = {
@@ -72663,6 +72957,8 @@ var ReadFileTool = class _ReadFileTool extends BaseDeclarativeTool {
72663
72957
  };
72664
72958
 
72665
72959
  export {
72960
+ VISION_BRIDGE_MAX_IMAGES,
72961
+ VISION_BRIDGE_MAX_IMAGE_BASE64_BYTES,
72666
72962
  EVENT_TOOL_CALL,
72667
72963
  EVENT_API_ERROR,
72668
72964
  EVENT_API_RESPONSE,
@@ -72796,6 +73092,7 @@ export {
72796
73092
  refreshSessionContext,
72797
73093
  shutdownTelemetry,
72798
73094
  forceFlushMetrics,
73095
+ apiActivityTracker,
72799
73096
  _recoverObjectsFromLine,
72800
73097
  parseLineTolerant,
72801
73098
  readLines,
@@ -72931,6 +73228,7 @@ export {
72931
73228
  parseThought,
72932
73229
  getThoughtSummary,
72933
73230
  TaggedThinkingParser,
73231
+ InvalidStreamError,
72934
73232
  OpenAIContentConverter,
72935
73233
  openaiRequestCaptureContext,
72936
73234
  isApiError,