@qwen-code/qwen-code 0.19.2 → 0.19.3-nightly.20260701.a974594d7

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 (291) hide show
  1. package/bundled/extension-creator/SKILL.md +357 -0
  2. package/bundled/loop/SKILL.md +34 -10
  3. package/bundled/loop/SKILL.test.ts +52 -0
  4. package/bundled/loop/autonomous-loop.test.ts +59 -0
  5. package/bundled/loop/autonomous-loop.ts +102 -0
  6. package/bundled/loop/loop-task-file.test.ts +1064 -0
  7. package/bundled/loop/loop-task-file.ts +404 -0
  8. package/bundled/loop/loop-tick-resolver.test.ts +864 -0
  9. package/bundled/loop/loop-tick-resolver.ts +416 -0
  10. package/bundled/qc-helper/SKILL.md +26 -19
  11. package/bundled/qc-helper/docs/configuration/auth.md +11 -11
  12. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
  13. package/bundled/qc-helper/docs/configuration/settings.md +77 -75
  14. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  15. package/bundled/qc-helper/docs/features/commands.md +108 -77
  16. package/bundled/qc-helper/docs/features/hooks.md +6 -1
  17. package/bundled/qc-helper/docs/features/memory.md +53 -1
  18. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  19. package/bundled/qc-helper/docs/ide-integration/ide-integration.md +4 -4
  20. package/bundled/qc-helper/docs/qwen-serve.md +24 -2
  21. package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
  22. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
  23. package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-UZHJ73JB.js} +29 -27
  24. package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-GGUIZWCE.js} +42 -37
  25. package/chunks/{acpAgent-4MCETHF2.js → acpAgent-QYZFICEZ.js} +1292 -332
  26. package/chunks/{agent-K3ENVYSB.js → agent-2EN7YNSW.js} +24 -23
  27. package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-SLTEZ5LV.js} +24 -23
  28. package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-CA3JTAMO.js} +33 -12
  29. package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-RM7WINJO.js} +3 -3
  30. package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-J3P6QAJ7.js} +2 -2
  31. package/chunks/{bridge-4LV2HBH2.js → bridge-HZVAUTMX.js} +29 -28
  32. package/chunks/{ca-7WC7ELX6.js → ca-RYOETBUW.js} +10 -9
  33. package/chunks/{chunk-JXQ23SNT.js → chunk-2JKEQWDZ.js} +623 -78
  34. package/chunks/chunk-32MCHZQC.js +73 -0
  35. package/chunks/{chunk-PXFFKNCO.js → chunk-35FH347N.js} +5308 -2500
  36. package/chunks/{chunk-5JZLXFPD.js → chunk-3O2BJMFW.js} +11 -11
  37. package/chunks/{chunk-2JD55C6G.js → chunk-3TK7FSCP.js} +2 -2
  38. package/chunks/{chunk-USGMPVOY.js → chunk-4722VFFU.js} +19 -10
  39. package/chunks/chunk-6FIWYVN4.js +4932 -0
  40. package/chunks/{chunk-I2RFAW6Q.js → chunk-7SP275SH.js} +7 -5
  41. package/chunks/{chunk-5R4SBCX6.js → chunk-AIBPG5MB.js} +3 -3
  42. package/chunks/{chunk-C4K3FEQ2.js → chunk-AVQDCKNF.js} +124 -21
  43. package/chunks/{chunk-OTBK43JR.js → chunk-B236XPGF.js} +1 -1
  44. package/chunks/{chunk-WA5OJGFL.js → chunk-B5MPZI4K.js} +458 -125
  45. package/chunks/{chunk-5DWXLGOM.js → chunk-BJBWRCSK.js} +1 -1
  46. package/chunks/{chunk-4W4T77MO.js → chunk-BLAE2TCO.js} +109 -6
  47. package/chunks/chunk-BMFMJINR.js +45 -0
  48. package/chunks/{chunk-T2VDEFUU.js → chunk-BZHLWC6T.js} +2 -2
  49. package/chunks/{chunk-XU5P23GN.js → chunk-CA4ML3VH.js} +3 -3
  50. package/chunks/{chunk-WGAEWQTF.js → chunk-DBR7PF4B.js} +1 -2
  51. package/chunks/{chunk-S566HKUS.js → chunk-DHXWNSJA.js} +15 -1
  52. package/chunks/{chunk-LLFFKXZZ.js → chunk-DJ25MIU2.js} +167 -43
  53. package/chunks/{chunk-KBXLIVWQ.js → chunk-DX3TKXNT.js} +2 -2
  54. package/chunks/{chunk-OIC6S73E.js → chunk-E5I6YSNO.js} +1 -1
  55. package/chunks/{chunk-TXVGVZYR.js → chunk-ESVSWG6Z.js} +3 -3
  56. package/chunks/{chunk-EX4W6ZYG.js → chunk-EUURTJY7.js} +1 -1
  57. package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
  58. package/chunks/{chunk-F6XNTYNE.js → chunk-FQDMX5IL.js} +30 -307
  59. package/chunks/{chunk-3QFE4OTE.js → chunk-FR3II765.js} +4 -4
  60. package/chunks/{chunk-VYFMN7C6.js → chunk-FV4SQ54H.js} +382 -55
  61. package/chunks/{chunk-ZD3NW5KL.js → chunk-FZY7NH37.js} +63 -9
  62. package/chunks/{chunk-CI5O6SQL.js → chunk-G525INVW.js} +4 -4
  63. package/chunks/{chunk-CGOMICBE.js → chunk-GDIG7TMG.js} +34 -1
  64. package/chunks/{chunk-R2BXK7SX.js → chunk-GHOTR7HL.js} +6 -1
  65. package/chunks/{chunk-TZM5JIAX.js → chunk-GZKQ36JS.js} +10 -7
  66. package/chunks/{chunk-BS64PXY3.js → chunk-HIYUAXBG.js} +1 -1
  67. package/chunks/{chunk-TMBPDHXD.js → chunk-HTWHAN44.js} +1 -1
  68. package/chunks/{chunk-EL5IHQON.js → chunk-HUGAEYZR.js} +6 -27
  69. package/chunks/{chunk-2BIF2NVV.js → chunk-HWG4XLD7.js} +2 -2
  70. package/chunks/{chunk-I5T6PIBQ.js → chunk-I4MXURND.js} +1076 -954
  71. package/chunks/{chunk-JTYRZODB.js → chunk-IBEM64M4.js} +39 -11
  72. package/chunks/{chunk-XKBP7M7A.js → chunk-IKO44NAT.js} +149 -31
  73. package/chunks/{chunk-2BAQ3ACS.js → chunk-JERW36RG.js} +404 -4
  74. package/chunks/{chunk-TOEGRAVX.js → chunk-JV7A66DR.js} +28 -16
  75. package/chunks/{chunk-3RJ3ZPPR.js → chunk-KKQWC6WS.js} +7 -7
  76. package/chunks/{chunk-EXMX5YHG.js → chunk-KXVVXAAC.js} +1 -1
  77. package/chunks/{chunk-Z7XXFPGP.js → chunk-LDWTYE33.js} +1 -1
  78. package/chunks/{chunk-X6EDWN44.js → chunk-LWGLBVWA.js} +1 -1
  79. package/chunks/{chunk-NYOHZYHM.js → chunk-LXEW6BHF.js} +45 -3
  80. package/chunks/{chunk-BGUDAULQ.js → chunk-LXGWLOCM.js} +5 -5
  81. package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
  82. package/chunks/{chunk-BNXANYLH.js → chunk-MOUXUCXQ.js} +81 -1
  83. package/chunks/{chunk-FPACXT7T.js → chunk-MTJVHQDP.js} +534 -164
  84. package/chunks/{chunk-UAARJR2G.js → chunk-N4V4VBP6.js} +2 -2
  85. package/chunks/chunk-NIOPRZNN.js +27 -0
  86. package/chunks/{chunk-2TJ3YN6Q.js → chunk-NOYV2NXI.js} +517 -490
  87. package/chunks/{chunk-PRYMDRBV.js → chunk-NPQWQYU6.js} +1 -1
  88. package/chunks/{chunk-J6AW7O5D.js → chunk-NVTRORSK.js} +2 -2
  89. package/chunks/{chunk-PF523XJX.js → chunk-OE5J6UA7.js} +1 -1
  90. package/chunks/{chunk-RS4HRC75.js → chunk-OEY3YAL2.js} +99 -8
  91. package/chunks/{chunk-R36VMVEP.js → chunk-PLQTLKMR.js} +5 -5
  92. package/chunks/{chunk-UN3C6GOR.js → chunk-PPFWEV7G.js} +10 -108
  93. package/chunks/chunk-Q3JOGB4U.js +481 -0
  94. package/chunks/{chunk-HG6YKEBI.js → chunk-Q7TDHJ2G.js} +192 -30
  95. package/chunks/{chunk-EW6C27XX.js → chunk-QHHNFG22.js} +9 -3
  96. package/chunks/chunk-QYUE6W3T.js +123 -0
  97. package/chunks/{chunk-GZCJS5WH.js → chunk-SJBIFVD2.js} +2 -2
  98. package/chunks/{chunk-3UALQ56H.js → chunk-T42ACHFI.js} +1 -1
  99. package/chunks/chunk-T44AF4I6.js +690 -0
  100. package/chunks/{chunk-DBZUXSSV.js → chunk-TMILTLP3.js} +6 -6
  101. package/chunks/{chunk-EEEZIVFJ.js → chunk-TOAUDIS7.js} +1 -1
  102. package/chunks/chunk-UAKXW3DN.js +30 -0
  103. package/chunks/{chunk-VQRYPFCV.js → chunk-V5YJAUHW.js} +10 -460
  104. package/chunks/{chunk-D5E5TMYH.js → chunk-VHRREANT.js} +16 -2
  105. package/chunks/{chunk-5RVSM6NW.js → chunk-VN4CKYUW.js} +1 -1
  106. package/chunks/chunk-VXGPYF7U.js +37 -0
  107. package/chunks/{chunk-UAARVVBI.js → chunk-WGY3GIPP.js} +1 -1
  108. package/chunks/{chunk-GYZQA2FO.js → chunk-WJAY4WXR.js} +1 -1
  109. package/chunks/chunk-XKSCTXPK.js +167 -0
  110. package/chunks/chunk-YCEHOJZJ.js +840 -0
  111. package/chunks/{chunk-BG4BIP7F.js → chunk-YCRTJYSQ.js} +4 -2
  112. package/chunks/{chunk-CGEGHF2C.js → chunk-YPCPZSZB.js} +1 -1
  113. package/chunks/chunk-YTFBURQD.js +313 -0
  114. package/chunks/{chunk-HGNSRCRB.js → chunk-YXK4GPYO.js} +1 -1
  115. package/chunks/{chunk-OQHQHJRK.js → chunk-Z34RYLRO.js} +151 -4775
  116. package/chunks/chunk-ZGSV5ORL.js +11273 -0
  117. package/chunks/{computer-use-6BBRNT6S.js → computer-use-FCNWHVPW.js} +103 -49
  118. package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-FVFMZZEU.js} +26 -25
  119. package/chunks/{cron-create-4KQE6YLH.js → cron-create-IY5NMIHQ.js} +4 -4
  120. package/chunks/{cron-delete-THME66UP.js → cron-delete-OLNEQWKO.js} +6 -6
  121. package/chunks/{cron-list-7A54SJ5N.js → cron-list-YAUAUV24.js} +5 -5
  122. package/chunks/{daemon-status-provider-CSL3BUOY.js → daemon-status-provider-42JEXENZ.js} +32 -32
  123. package/chunks/{de-ACHALDED.js → de-HB5NJXGB.js} +10 -9
  124. package/chunks/{dist-BD27IA3L.js → dist-4FCNM6KJ.js} +2 -2
  125. package/chunks/{dist-OD2FY543.js → dist-K4XZILIO.js} +1 -1
  126. package/chunks/{dist-BOOH5JWN.js → dist-SU6L7ZNJ.js} +114 -9
  127. package/chunks/{dist-QHJRBCMP.js → dist-UKPWQJCL.js} +44 -2
  128. package/chunks/{dist-QFFZWACU.js → dist-VD7HXTML.js} +20 -9
  129. package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-FFFEC6P4.js} +25 -24
  130. package/chunks/{edit-7J6WXARF.js → edit-32ILSGZY.js} +72 -30
  131. package/chunks/{en-NCUBOJOY.js → en-U3LWGSFX.js} +19 -9
  132. package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-XWZKIN6A.js} +24 -23
  133. package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-LPFFY7BJ.js} +24 -23
  134. package/chunks/{errors-6G2JYR54.js → errors-UXBPYPI2.js} +26 -25
  135. package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-IBS4UIU7.js} +24 -23
  136. package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-JA72YHII.js} +24 -23
  137. package/chunks/{fast-path-35JJFS3C.js → fast-path-7UU67Y2W.js} +30 -13
  138. package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-UQLRFDQP.js} +3 -2
  139. package/chunks/{fr-GVKZ27MF.js → fr-XY3NQFCM.js} +10 -9
  140. package/chunks/{gemini-NDTG7WAX.js → gemini-GMVKJNMX.js} +211 -105
  141. package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-7NIFF2L4.js} +4 -4
  142. package/chunks/{glob-SJ2JBZK4.js → glob-4NJCW5HI.js} +24 -23
  143. package/chunks/{grep-BRMWFEWR.js → grep-PAIMLQEL.js} +24 -23
  144. package/chunks/{initializer-P5AXF7PV.js → initializer-R6KU4VYM.js} +31 -28
  145. package/chunks/{ja-FKZ2WZ4D.js → ja-J7YAG7SA.js} +10 -9
  146. package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-GPAKRDKQ.js} +2 -2
  147. package/chunks/{list-6COK34BP.js → list-H7LXAO64.js} +32 -29
  148. package/chunks/{loadedSettingsAdapter-XIUTN245.js → loadedSettingsAdapter-H27JMTLU.js} +30 -27
  149. package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-Y3OIRQFM.js} +7 -7
  150. package/chunks/{ls-BYQY7RVV.js → ls-TVJEYS7O.js} +4 -4
  151. package/chunks/{lsp-X54RO4IV.js → lsp-JZSDVR3F.js} +2 -2
  152. package/chunks/{monitor-DH7KFSJV.js → monitor-JSIHDPXP.js} +24 -23
  153. package/chunks/nonInteractiveCli-Y4CHOETG.js +100 -0
  154. package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-SHRNL2UM.js} +52 -23
  155. package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-ORZZ7VFO.js} +13 -12
  156. package/chunks/{pt-SY5NCFGR.js → pt-6RTAA6SS.js} +10 -9
  157. package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-H643PL2G.js} +26 -25
  158. package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-OI2B7PES.js} +5 -4
  159. package/chunks/{read-file-767G23OY.js → read-file-5PRNPTTY.js} +8 -8
  160. package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-QTXGKTEV.js} +2 -2
  161. package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-JIKZMABJ.js} +24 -23
  162. package/chunks/{ru-FWNXJG4F.js → ru-AUBGJ2C4.js} +10 -9
  163. package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-PQV7QOHZ.js} +284 -52
  164. package/chunks/{scheduler-UNTFDQLG.js → scheduler-OS3R5MGU.js} +24 -23
  165. package/chunks/{send-message-2DAFXEYP.js → send-message-DKGHWSTF.js} +2 -2
  166. package/chunks/{serve-KZ56QB5S.js → serve-LVYZDKCZ.js} +31 -29
  167. package/chunks/{server-BV5TZUMU.js → server-P4YIH35I.js} +11458 -8447
  168. package/chunks/{session-OIBXFSGD.js → session-DE4TZBKH.js} +195 -58
  169. package/chunks/{settings-WJTCBIRA.js → settings-DFTYMJYF.js} +30 -27
  170. package/chunks/{shell-WC52IBHW.js → shell-3GNQLNV7.js} +24 -23
  171. package/chunks/{skill-U7F7JR4M.js → skill-NCNG4KKZ.js} +38 -11
  172. package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-DHRIMDVL.js} +26 -25
  173. package/chunks/{src-4F6FBZFI.js → src-PNZYGM3R.js} +104 -28
  174. package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-P6GZBFQW.js} +2817 -2500
  175. package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-X7L5HWLN.js} +3 -3
  176. package/chunks/{task-create-OUYCA553.js → task-create-AWEUI4GI.js} +6 -6
  177. package/chunks/{task-list-WAX7I2IA.js → task-list-KZ3VJLDU.js} +5 -5
  178. package/chunks/{task-stop-CAIL6FNH.js → task-stop-GUNOZKJ5.js} +2 -2
  179. package/chunks/{task-update-AHEO5OUT.js → task-update-Y56GP6DU.js} +6 -6
  180. package/chunks/{team-create-3WC7CIIW.js → team-create-6JMW3KQK.js} +24 -23
  181. package/chunks/{team-delete-HGHFG23B.js → team-delete-6AFRGDJY.js} +5 -5
  182. package/chunks/{theme-manager-DICFCT3P.js → theme-manager-FEHQO22G.js} +25 -24
  183. package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-JRS6NOEU.js} +4 -4
  184. package/chunks/{tool-search-L5K7HLER.js → tool-search-IXAEKS7J.js} +101 -16
  185. package/chunks/trustedFolders-SJRXNHZE.js +76 -0
  186. package/chunks/types-QX5C3CHJ.js +12 -0
  187. package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-HCH7OBDH.js} +56 -51
  188. package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-RELNL37A.js} +29 -15
  189. package/chunks/{workflow-OB3AND7I.js → workflow-M2COBI7R.js} +38 -32
  190. package/chunks/{workspace-providers-status-ZIR5EPOO.js → workspace-providers-status-GOCWYDMK.js} +32 -29
  191. package/chunks/workspace-service-34C7SUBU.js +75 -0
  192. package/chunks/{write-file-SEXBNDZM.js → write-file-E52WRXZL.js} +67 -31
  193. package/chunks/{zh-RBEGQVQT.js → zh-F5T4WWZO.js} +19 -9
  194. package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-LKLBTZHE.js} +19 -9
  195. package/cli-entry.js +20 -9
  196. package/cli.js +6 -6
  197. package/locales/ca.js +15 -13
  198. package/locales/de.js +15 -13
  199. package/locales/en.js +31 -13
  200. package/locales/fr.js +16 -14
  201. package/locales/ja.js +15 -14
  202. package/locales/pt.js +15 -13
  203. package/locales/ru.js +15 -13
  204. package/locales/zh-TW.js +28 -12
  205. package/locales/zh.js +28 -12
  206. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
  207. package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
  208. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
  209. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
  210. package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
  211. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
  212. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
  213. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
  214. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
  215. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
  216. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
  217. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
  218. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  219. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
  220. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
  221. package/node_modules/@qwen-code/audio-capture/package.json +30 -0
  222. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  223. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  224. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  225. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  226. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  227. package/package.json +18 -6
  228. package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
  229. package/postinstall.js +50 -0
  230. package/web-shell/assets/{arc-D_ae_Y9k.js → arc-C2DILvUl.js} +1 -1
  231. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-b8gZ2cNw.js} +1 -1
  232. package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-BuRpghMj.js} +1 -1
  233. package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-2ItdhFmE.js} +1 -1
  234. package/web-shell/assets/channel-eRvn2UA3.js +1 -0
  235. package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-B1QXa0q3.js} +1 -1
  236. package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-DXfhKlNq.js} +1 -1
  237. package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-ClSNjxLo.js} +1 -1
  238. package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-Dsh2wisB.js} +1 -1
  239. package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-C1TkY5AR.js} +1 -1
  240. package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-CGtN9XR6.js} +1 -1
  241. package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-BHiPi1SS.js} +1 -1
  242. package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-CzG3I5o1.js} +1 -1
  243. package/web-shell/assets/classDiagram-4FO5ZUOK-YZNwy1rx.js +1 -0
  244. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-YZNwy1rx.js +1 -0
  245. package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-EgrIoH_K.js} +1 -1
  246. package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-BUnpdX8S.js} +1 -1
  247. package/web-shell/assets/default-aEtf0G7-.svg +1 -0
  248. package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-BlLUCVYu.js} +1 -1
  249. package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-FG-enmjQ.js} +1 -1
  250. package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-BlzmTONk.js} +1 -1
  251. package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-CoBQ8mIx.js} +1 -1
  252. package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-DvxV6sX8.js} +1 -1
  253. package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-Jq1tpAoj.js} +1 -1
  254. package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-CbtYOry5.js} +1 -1
  255. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-ZEn2VEKR.js} +1 -1
  256. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-BZh-LkhJ.js} +1 -1
  257. package/web-shell/assets/index-5FhE0ORO.css +5 -0
  258. package/web-shell/assets/index-CDTGmqVm.js +720 -0
  259. package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-B9HuZygK.js} +1 -1
  260. package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
  261. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D76cNpYG.js} +1 -1
  262. package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-6bGo7P1t.js} +1 -1
  263. package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-DuYyRBvB.js} +1 -1
  264. package/web-shell/assets/{linear-DGGM2kcP.js → linear-CpdSW1BC.js} +1 -1
  265. package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-s5xbZMMj.js} +5 -5
  266. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-go01fZ2y.js} +1 -1
  267. package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-BfuZiEHO.js} +1 -1
  268. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-DsoINqV6.js} +1 -1
  269. package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
  270. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-B7FU4LiU.js} +1 -1
  271. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-BEDjFnGB.js} +1 -1
  272. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-gzmmL5tK.js} +1 -1
  273. package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-BtHD4IN_.js} +1 -1
  274. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DFy6gLDd.js +1 -0
  275. package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-T_8gmMCf.js} +1 -1
  276. package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-DdjuqnjO.js} +1 -1
  277. package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-Cgtrvb37.js} +1 -1
  278. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-BW3f3-yW.js} +1 -1
  279. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-BUS9IKkc.js} +1 -1
  280. package/web-shell/index.html +2 -2
  281. package/chunks/chunk-B6HQGTYR.js +0 -410
  282. package/chunks/chunk-RKIZXJMB.js +0 -13
  283. package/chunks/headlessSafetyWarnings-LJ6FJX77.js +0 -57
  284. package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
  285. package/chunks/workspace-service-OM5D4OI2.js +0 -60
  286. package/web-shell/assets/channel-DYPNiTww.js +0 -1
  287. package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
  288. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
  289. package/web-shell/assets/index-CpOXWDPh.js +0 -714
  290. package/web-shell/assets/index-oVK7qhre.css +0 -5
  291. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
@@ -7,28 +7,28 @@ import {
7
7
  require_jsx_runtime,
8
8
  use_stdin_default,
9
9
  use_stdout_default
10
- } from "./chunk-UAARJR2G.js";
10
+ } from "./chunk-N4V4VBP6.js";
11
11
  import {
12
12
  require_react
13
13
  } from "./chunk-KYMBIKIW.js";
14
14
  import {
15
15
  sanitizeFilenameForDisplay
16
- } from "./chunk-CGOMICBE.js";
16
+ } from "./chunk-GDIG7TMG.js";
17
17
  import {
18
18
  t
19
- } from "./chunk-5JZLXFPD.js";
19
+ } from "./chunk-3O2BJMFW.js";
20
20
  import {
21
21
  fetchGitDiff,
22
22
  findProviderByCredentials,
23
23
  resolveMetadataKey
24
- } from "./chunk-PXFFKNCO.js";
24
+ } from "./chunk-35FH347N.js";
25
25
  import {
26
26
  KittySequenceOverflowEvent,
27
27
  logKittySequenceOverflow
28
- } from "./chunk-WA5OJGFL.js";
28
+ } from "./chunk-B5MPZI4K.js";
29
29
  import {
30
30
  createDebugLogger
31
- } from "./chunk-C4K3FEQ2.js";
31
+ } from "./chunk-AVQDCKNF.js";
32
32
  import {
33
33
  init_esbuild_shims
34
34
  } from "./chunk-A4BMJM77.js";
@@ -759,6 +759,7 @@ var useFocus = /* @__PURE__ */ __name(() => {
759
759
  // packages/cli/src/ui/contexts/KeypressContext.tsx
760
760
  var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
761
761
  var ESC3 = "\x1B";
762
+ var OPTION_T_COMPOSED_GLYPH = "\u2020";
762
763
  var PASTE_MODE_PREFIX = `${ESC3}[200~`;
763
764
  var PASTE_MODE_SUFFIX = `${ESC3}[201~`;
764
765
  var KITTY_SEQUENCE_TIMEOUT_MS = 200;
@@ -1529,6 +1530,10 @@ function KeypressProvider({
1529
1530
  if (key.name === "return" && key.sequence === `${ESC3}\r`) {
1530
1531
  key.meta = true;
1531
1532
  }
1533
+ if (process.platform === "darwin" && !isPaste && key.sequence === OPTION_T_COMPOSED_GLYPH) {
1534
+ key.name = "t";
1535
+ key.meta = true;
1536
+ }
1532
1537
  broadcast({ ...key, paste: isPaste });
1533
1538
  }, "handleKeypress");
1534
1539
  const clearRawFlushTimeout = /* @__PURE__ */ __name(() => {
@@ -2036,7 +2041,11 @@ function convertToHistoryItems(conversation, config) {
2036
2041
  });
2037
2042
  currentToolGroup = [];
2038
2043
  }
2039
- items.push({ type: "gemini", text });
2044
+ items.push({
2045
+ type: "gemini",
2046
+ text,
2047
+ timestamp: new Date(record.timestamp).getTime()
2048
+ });
2040
2049
  }
2041
2050
  for (const fc of functionCalls) {
2042
2051
  const tool = getTool(config, fc.name);
@@ -2148,14 +2157,33 @@ function expandCollapsedHistory(items) {
2148
2157
  return items.filter((item) => item.display?.kind !== "collapse-summary").map(stripSuppressOnRestore);
2149
2158
  }
2150
2159
  __name(expandCollapsedHistory, "expandCollapsedHistory");
2151
- function applyCollapsePolicyAndSummary(rawItems, collapseOnResume) {
2160
+ function applyCollapsePolicyAndSummary(rawItems, collapseOnResume, collapsePreviewCount = 0) {
2152
2161
  if (!collapseOnResume) return rawItems;
2153
- const uiHistoryItems = applyResumeDisplayPolicy(rawItems);
2154
- if (rawItems.length > 0) {
2162
+ if (collapsePreviewCount === -1) return rawItems;
2163
+ let boundary = rawItems.length;
2164
+ if (collapsePreviewCount > 0) {
2165
+ let userTurnCount = 0;
2166
+ for (let i = rawItems.length - 1; i >= 0; i--) {
2167
+ if (rawItems[i].type === "user" /* USER */) {
2168
+ userTurnCount++;
2169
+ if (userTurnCount === collapsePreviewCount) {
2170
+ boundary = i;
2171
+ break;
2172
+ }
2173
+ }
2174
+ }
2175
+ if (userTurnCount < collapsePreviewCount) {
2176
+ boundary = 0;
2177
+ }
2178
+ }
2179
+ const hiddenItems = applyResumeDisplayPolicy(rawItems.slice(0, boundary));
2180
+ const visibleItems = rawItems.slice(boundary);
2181
+ const uiHistoryItems = [...hiddenItems, ...visibleItems];
2182
+ if (boundary > 0) {
2155
2183
  const nextId = rawItems[rawItems.length - 1].id + 1;
2156
2184
  return [
2157
2185
  ...uiHistoryItems,
2158
- { id: nextId, ...createHistoryCollapseSummaryItem(rawItems.length) }
2186
+ { id: nextId, ...createHistoryCollapseSummaryItem(boundary) }
2159
2187
  ];
2160
2188
  }
2161
2189
  return uiHistoryItems;
@@ -4,36 +4,40 @@ import {
4
4
  OpenAIContentConverter,
5
5
  TaggedThinkingParser,
6
6
  openaiRequestCaptureContext
7
- } from "./chunk-WA5OJGFL.js";
8
- import {
9
- createChildAbortController
10
- } from "./chunk-64WXLC72.js";
7
+ } from "./chunk-B5MPZI4K.js";
11
8
  import {
12
9
  RequestTokenizer
13
- } from "./chunk-KBXLIVWQ.js";
10
+ } from "./chunk-DX3TKXNT.js";
14
11
  import {
15
- CAPPED_DEFAULT_MAX_TOKENS,
16
12
  DASHSCOPE_PROXY_BASE_URL,
17
13
  DEFAULT_DASHSCOPE_BASE_URL,
18
14
  DEFAULT_MAX_RETRIES,
15
+ DEFAULT_STREAM_IDLE_TIMEOUT_MS,
19
16
  DEFAULT_TIMEOUT,
20
- buildRuntimeFetchOptions,
17
+ MAX_STREAM_IDLE_TIMEOUT_MS,
18
+ QWEN_STREAM_IDLE_TIMEOUT_MS_ENV,
21
19
  hasExplicitOutputLimit,
22
20
  parsePositiveIntegerEnvValue,
23
- redactProxyError,
24
21
  tokenLimit
25
- } from "./chunk-F6XNTYNE.js";
22
+ } from "./chunk-YTFBURQD.js";
26
23
  import {
27
24
  runtimeDiagnostics,
28
25
  safeJsonParse
29
- } from "./chunk-CGEGHF2C.js";
26
+ } from "./chunk-YPCPZSZB.js";
30
27
  import {
31
28
  GenerateContentResponse
32
29
  } from "./chunk-55ZMG67I.js";
30
+ import {
31
+ createChildAbortController
32
+ } from "./chunk-64WXLC72.js";
33
+ import {
34
+ buildRuntimeFetchOptions,
35
+ redactProxyError
36
+ } from "./chunk-FQDMX5IL.js";
33
37
  import {
34
38
  createDebugLogger,
35
39
  isAbortError
36
- } from "./chunk-C4K3FEQ2.js";
40
+ } from "./chunk-AVQDCKNF.js";
37
41
  import {
38
42
  init_esbuild_shims
39
43
  } from "./chunk-A4BMJM77.js";
@@ -6995,16 +6999,15 @@ var DefaultOpenAICompatibleProvider = class {
6995
6999
  * configured value entirely (backend may support larger limits)
6996
7000
  * 2. If user didn't configure max_tokens:
6997
7001
  * - Check QWEN_CODE_MAX_OUTPUT_TOKENS env var first
6998
- * - Otherwise use min(modelLimit, CAPPED_DEFAULT_MAX_TOKENS=8K)
6999
- * - Requests hitting the 8K cap get one clean retry at 64K (geminiChat.ts)
7002
+ * - Otherwise use the model's output limit
7000
7003
  * 3. If model has no specific limit (tokenLimit returns default):
7001
- * - Still apply CAPPED_DEFAULT_MAX_TOKENS as safeguard
7004
+ * - Use DEFAULT_OUTPUT_TOKEN_LIMIT
7002
7005
  *
7003
7006
  * Examples:
7004
7007
  * - User sets 4K, known model limit 64K → uses 4K (respects user preference)
7005
7008
  * - User sets 100K, known model limit 64K → uses 64K (capped to avoid API error)
7006
7009
  * - User sets 100K, unknown model → uses 100K (respects user, backend may support it)
7007
- * - User not set, model limit 64K → uses 8K (capped default for slot optimization)
7010
+ * - User not set, model limit 64K → uses 64K
7008
7011
  * - User not set, model limit 4K → uses 4K (model limit is lower)
7009
7012
  * - User not set, env QWEN_CODE_MAX_OUTPUT_TOKENS=16000 -> uses 16K
7010
7013
  *
@@ -7032,7 +7035,7 @@ var DefaultOpenAICompatibleProvider = class {
7032
7035
  if (envMaxTokens !== void 0) {
7033
7036
  effectiveMaxTokens = isKnownModel ? Math.min(envMaxTokens, modelLimit) : envMaxTokens;
7034
7037
  } else {
7035
- effectiveMaxTokens = Math.min(modelLimit, CAPPED_DEFAULT_MAX_TOKENS);
7038
+ effectiveMaxTokens = modelLimit;
7036
7039
  }
7037
7040
  }
7038
7041
  return {
@@ -7229,6 +7232,12 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7229
7232
  getDefaultGenerationConfig() {
7230
7233
  return {};
7231
7234
  }
7235
+ getResponseParsingOptions(model) {
7236
+ if (this.isGlmModel(model ?? this.contentGeneratorConfig.model)) {
7237
+ return { taggedThinkingTags: true };
7238
+ }
7239
+ return {};
7240
+ }
7232
7241
  /**
7233
7242
  * Add cache control flag to specified message(s) for DashScope providers
7234
7243
  */
@@ -7995,6 +8004,7 @@ var StreamingToolCallParser = class {
7995
8004
  };
7996
8005
 
7997
8006
  // packages/core/src/core/openaiContentGenerator/pipeline.ts
8007
+ var debugLogger3 = createDebugLogger("OPENAI_PIPELINE");
7998
8008
  var StreamContentError = class extends Error {
7999
8009
  static {
8000
8010
  __name(this, "StreamContentError");
@@ -8004,17 +8014,114 @@ var StreamContentError = class extends Error {
8004
8014
  this.name = "StreamContentError";
8005
8015
  }
8006
8016
  };
8017
+ var StreamInactivityTimeoutError = class extends Error {
8018
+ constructor(idleMs, chunksReceived, streamLifetimeMs) {
8019
+ super(
8020
+ `No stream activity for ${idleMs}ms after ${chunksReceived} chunks (stream lifetime: ${streamLifetimeMs}ms)`
8021
+ );
8022
+ this.idleMs = idleMs;
8023
+ this.chunksReceived = chunksReceived;
8024
+ this.streamLifetimeMs = streamLifetimeMs;
8025
+ this.name = "StreamInactivityTimeoutError";
8026
+ }
8027
+ static {
8028
+ __name(this, "StreamInactivityTimeoutError");
8029
+ }
8030
+ code = "ETIMEDOUT";
8031
+ };
8032
+ function resolveStreamIdleTimeoutMs(config) {
8033
+ const fromConfig = config.streamIdleTimeoutMs;
8034
+ if (typeof fromConfig === "number") {
8035
+ if (Number.isInteger(fromConfig) && fromConfig <= MAX_STREAM_IDLE_TIMEOUT_MS) {
8036
+ return fromConfig;
8037
+ }
8038
+ console.warn(
8039
+ `[qwen-code] Ignoring out-of-range streamIdleTimeoutMs=${fromConfig} (expected an integer in (-\u221E, ${MAX_STREAM_IDLE_TIMEOUT_MS}]); falling back to ${QWEN_STREAM_IDLE_TIMEOUT_MS_ENV}/default.`
8040
+ );
8041
+ }
8042
+ const raw = process.env[QWEN_STREAM_IDLE_TIMEOUT_MS_ENV];
8043
+ const trimmed = raw?.trim();
8044
+ if (trimmed) {
8045
+ if (/^\d+$/.test(trimmed)) {
8046
+ const parsed = Number(trimmed);
8047
+ if (parsed <= MAX_STREAM_IDLE_TIMEOUT_MS) {
8048
+ return parsed;
8049
+ }
8050
+ }
8051
+ console.warn(
8052
+ `[qwen-code] Ignoring invalid ${QWEN_STREAM_IDLE_TIMEOUT_MS_ENV}="${raw}" (expected an integer of milliseconds in [0, ${MAX_STREAM_IDLE_TIMEOUT_MS}]); using default ${DEFAULT_STREAM_IDLE_TIMEOUT_MS}ms.`
8053
+ );
8054
+ }
8055
+ return DEFAULT_STREAM_IDLE_TIMEOUT_MS;
8056
+ }
8057
+ __name(resolveStreamIdleTimeoutMs, "resolveStreamIdleTimeoutMs");
8058
+ async function* withStreamInactivityTimeout(source, idleMs, abortRequest, parentSignal) {
8059
+ const it = source[Symbol.asyncIterator]();
8060
+ const streamStartedAt = Date.now();
8061
+ let chunksReceived = 0;
8062
+ try {
8063
+ while (true) {
8064
+ const nextPromise = it.next();
8065
+ let timer;
8066
+ const timeout = new Promise((_resolve, reject) => {
8067
+ timer = setTimeout(() => {
8068
+ if (parentSignal?.aborted) {
8069
+ const abortErr = new Error("Aborted");
8070
+ abortErr.name = "AbortError";
8071
+ reject(abortErr);
8072
+ } else {
8073
+ abortRequest();
8074
+ reject(
8075
+ new StreamInactivityTimeoutError(
8076
+ idleMs,
8077
+ chunksReceived,
8078
+ Date.now() - streamStartedAt
8079
+ )
8080
+ );
8081
+ }
8082
+ }, idleMs);
8083
+ timer.unref?.();
8084
+ });
8085
+ let result;
8086
+ try {
8087
+ result = await Promise.race([nextPromise, timeout]);
8088
+ } catch (err) {
8089
+ void Promise.resolve(nextPromise).catch(() => {
8090
+ });
8091
+ throw err;
8092
+ } finally {
8093
+ if (timer !== void 0) clearTimeout(timer);
8094
+ }
8095
+ if (result.done) return;
8096
+ chunksReceived += 1;
8097
+ yield result.value;
8098
+ }
8099
+ } finally {
8100
+ abortRequest();
8101
+ try {
8102
+ await it.return?.();
8103
+ } catch {
8104
+ }
8105
+ }
8106
+ }
8107
+ __name(withStreamInactivityTimeout, "withStreamInactivityTimeout");
8007
8108
  var ContentGenerationPipeline = class {
8008
8109
  constructor(config) {
8009
8110
  this.config = config;
8010
8111
  this.contentGeneratorConfig = config.contentGeneratorConfig;
8011
8112
  this.client = this.config.provider.buildClient();
8113
+ this.streamIdleTimeoutMs = resolveStreamIdleTimeoutMs(
8114
+ this.contentGeneratorConfig
8115
+ );
8012
8116
  }
8013
8117
  static {
8014
8118
  __name(this, "ContentGenerationPipeline");
8015
8119
  }
8016
8120
  client;
8017
8121
  contentGeneratorConfig;
8122
+ // Resolved once (config field > env > default) so the env read + any
8123
+ // invalid-value warning happen per pipeline, not per streaming request.
8124
+ streamIdleTimeoutMs;
8018
8125
  async execute(request, userPromptId) {
8019
8126
  return this.executeWithErrorHandling(
8020
8127
  request,
@@ -8048,22 +8155,25 @@ var ContentGenerationPipeline = class {
8048
8155
  true,
8049
8156
  async (openaiRequest, context) => {
8050
8157
  const parentSignal = request.config?.abortSignal;
8051
- const perRequestAc = parentSignal ? createChildAbortController(parentSignal) : void 0;
8158
+ const perRequestAc = createChildAbortController(parentSignal);
8052
8159
  let stream;
8053
8160
  try {
8054
8161
  stream = await this.client.chat.completions.create(openaiRequest, {
8055
- signal: perRequestAc?.signal
8162
+ signal: perRequestAc.signal
8056
8163
  });
8057
8164
  } catch (e) {
8058
- perRequestAc?.abort();
8165
+ perRequestAc.abort();
8059
8166
  throw e;
8060
8167
  }
8061
- if (!perRequestAc) {
8062
- return this.processStreamWithLogging(stream, context, request);
8063
- }
8064
- const ac = perRequestAc;
8065
- const innerStream = this.processStreamWithLogging(
8168
+ const idleMs = this.streamIdleTimeoutMs;
8169
+ const guarded = idleMs > 0 ? withStreamInactivityTimeout(
8066
8170
  stream,
8171
+ idleMs,
8172
+ () => perRequestAc.abort(),
8173
+ parentSignal
8174
+ ) : stream;
8175
+ const innerStream = this.processStreamWithLogging(
8176
+ guarded,
8067
8177
  context,
8068
8178
  request
8069
8179
  );
@@ -8071,7 +8181,7 @@ var ContentGenerationPipeline = class {
8071
8181
  try {
8072
8182
  yield* innerStream;
8073
8183
  } finally {
8074
- ac.abort();
8184
+ perRequestAc.abort();
8075
8185
  }
8076
8186
  }
8077
8187
  __name(drainThenCleanup, "drainThenCleanup");
@@ -8138,6 +8248,14 @@ var ContentGenerationPipeline = class {
8138
8248
  if (error instanceof StreamContentError) {
8139
8249
  throw redactProxyError(error);
8140
8250
  }
8251
+ if (error instanceof StreamInactivityTimeoutError) {
8252
+ debugLogger3.warn("OpenAI stream inactivity timeout", {
8253
+ idleMs: error.idleMs,
8254
+ chunksReceived: error.chunksReceived,
8255
+ streamLifetimeMs: error.streamLifetimeMs
8256
+ });
8257
+ throw redactProxyError(error);
8258
+ }
8141
8259
  await this.handleError(error, context, request);
8142
8260
  }
8143
8261
  }
@@ -8320,7 +8438,7 @@ var ContentGenerationPipeline = class {
8320
8438
  const effectiveModel = request.model || this.contentGeneratorConfig.model;
8321
8439
  const providerOverrides = this.config.provider.getRequestContextOverrides?.() ?? {};
8322
8440
  const toolCallParser = isStreaming ? new StreamingToolCallParser() : void 0;
8323
- const responseParsingOptions = this.config.provider.getResponseParsingOptions?.();
8441
+ const responseParsingOptions = this.config.provider.getResponseParsingOptions?.(effectiveModel);
8324
8442
  const taggedThinkingParser = isStreaming && responseParsingOptions?.taggedThinkingTags ? new TaggedThinkingParser() : void 0;
8325
8443
  return {
8326
8444
  model: effectiveModel,
@@ -8344,7 +8462,7 @@ var ContentGenerationPipeline = class {
8344
8462
 
8345
8463
  // packages/core/src/core/openaiContentGenerator/errorHandler.ts
8346
8464
  init_esbuild_shims();
8347
- var debugLogger3 = createDebugLogger("OPENAI_ERROR");
8465
+ var debugLogger4 = createDebugLogger("OPENAI_ERROR");
8348
8466
  var EnhancedErrorHandler = class {
8349
8467
  constructor(shouldSuppressLogging = () => false) {
8350
8468
  this.shouldSuppressLogging = shouldSuppressLogging;
@@ -8361,7 +8479,7 @@ var EnhancedErrorHandler = class {
8361
8479
  isTimeoutError
8362
8480
  );
8363
8481
  if (!this.shouldSuppressErrorLogging(redactedError, request)) {
8364
- debugLogger3.error("OpenAI API Error:", errorMessage);
8482
+ debugLogger4.error("OpenAI API Error:", errorMessage);
8365
8483
  }
8366
8484
  if (isTimeoutError) {
8367
8485
  throw new Error(
@@ -8401,7 +8519,7 @@ ${tips.join("\n")}`;
8401
8519
  };
8402
8520
 
8403
8521
  // packages/core/src/core/openaiContentGenerator/openaiContentGenerator.ts
8404
- var debugLogger4 = createDebugLogger("OPENAI");
8522
+ var debugLogger5 = createDebugLogger("OPENAI");
8405
8523
  var OpenAIContentGenerator = class {
8406
8524
  static {
8407
8525
  __name(this, "OpenAIContentGenerator");
@@ -8444,7 +8562,7 @@ var OpenAIContentGenerator = class {
8444
8562
  totalTokens: result.totalTokens
8445
8563
  };
8446
8564
  } catch (error) {
8447
- debugLogger4.warn(
8565
+ debugLogger5.warn(
8448
8566
  "Failed to calculate tokens with new tokenizer, falling back to simple method:",
8449
8567
  error
8450
8568
  );
@@ -8491,7 +8609,7 @@ var OpenAIContentGenerator = class {
8491
8609
  };
8492
8610
  } catch (error) {
8493
8611
  const redactedError = redactProxyError(error);
8494
- debugLogger4.error("OpenAI API Embedding Error:", redactedError);
8612
+ debugLogger5.error("OpenAI API Embedding Error:", redactedError);
8495
8613
  throw new Error(
8496
8614
  `OpenAI API error: ${redactedError instanceof Error ? redactedError.message : String(redactedError)}`
8497
8615
  );