@qwen-code/qwen-code 0.21.6 → 0.21.7-nightly.20260808.4ec0371e6

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 (323) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +50 -31
  2. package/bundled/qc-helper/docs/features/channels/dingtalk.md +41 -3
  3. package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
  4. package/bundled/qc-helper/docs/features/channels/github.md +13 -11
  5. package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
  6. package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
  7. package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
  8. package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
  9. package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
  10. package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
  11. package/bundled/qc-helper/docs/features/code-review.md +31 -0
  12. package/bundled/qc-helper/docs/features/hooks.md +2 -0
  13. package/bundled/qc-helper/docs/qwen-serve.md +4 -1
  14. package/bundled/review/SKILL.md +52 -16
  15. package/chunks/{MaxSizedBox-2HFKP4LI.js → MaxSizedBox-COZBVNCI.js} +42 -41
  16. package/chunks/{StandaloneSessionPicker-RBV72M5N.js → StandaloneSessionPicker-3OF2FS6S.js} +59 -57
  17. package/chunks/{acpAgent-WO6JFCVQ.js → acpAgent-3JCJ6KWG.js} +236 -185
  18. package/chunks/{agent-AHGLYNZ4.js → agent-DBSC47CD.js} +39 -38
  19. package/chunks/{agent-headless-NTXKKGRO.js → agent-headless-ZJHZ7I3S.js} +39 -38
  20. package/chunks/{anthropicContentGenerator-3CAHEZBM.js → anthropicContentGenerator-SSFE2753.js} +15 -15
  21. package/chunks/{artifact-tool-RROCCJDA.js → artifact-tool-N652YE4L.js} +2 -2
  22. package/chunks/{askUserQuestion-2EPPBPUZ.js → askUserQuestion-ONW74PKJ.js} +2 -2
  23. package/chunks/{bridge-RPAU64CA.js → bridge-NFBYT4ZI.js} +43 -42
  24. package/chunks/{channel-management-service-IGEUOVRT.js → channel-management-service-LXSJXQGM.js} +19 -10
  25. package/chunks/{channel-settings-store-ON64MF7G.js → channel-settings-store-LABKDKSI.js} +46 -45
  26. package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-MTW2AGT3.js} +4 -4
  27. package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-UU6PTQSI.js} +4 -4
  28. package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-5SRD24FG.js} +3 -3
  29. package/chunks/{chunk-XC656O42.js → chunk-22NBYCPD.js} +3 -3
  30. package/chunks/{chunk-K2B3X3E7.js → chunk-26ISE5EG.js} +4 -4
  31. package/chunks/{chunk-Z7JILXGX.js → chunk-2UUMVNYT.js} +3 -3
  32. package/chunks/{chunk-ACZRB7AD.js → chunk-3ARO4N5G.js} +3 -3
  33. package/chunks/{chunk-CJ5WLD5Y.js → chunk-3HS6Y4UA.js} +96 -22
  34. package/chunks/{chunk-MBEMTXQT.js → chunk-3K7FH2KQ.js} +1 -32
  35. package/chunks/{chunk-QYPT3QUD.js → chunk-3ULCB3NE.js} +3 -3
  36. package/chunks/{chunk-IMOQO6YL.js → chunk-4Q6N3SNL.js} +1 -1
  37. package/chunks/{chunk-3UOLYNTF.js → chunk-4QJJHIZ5.js} +23 -14
  38. package/chunks/{chunk-VGFPFM4U.js → chunk-5PGKKSO6.js} +42 -16
  39. package/chunks/{chunk-NGJOAKJY.js → chunk-5YT3Y33M.js} +3 -3
  40. package/chunks/{chunk-T4JSA7KU.js → chunk-64YLXLMY.js} +3 -3
  41. package/chunks/{chunk-5L6CQ4ZU.js → chunk-6M26GBKX.js} +2 -2
  42. package/chunks/{chunk-ZPPP6VCL.js → chunk-6ZRFAKXK.js} +1 -1
  43. package/chunks/{chunk-OP2OHZ7K.js → chunk-764F335K.js} +18 -9
  44. package/chunks/{chunk-PPUOYL77.js → chunk-77WOUGCA.js} +53 -22
  45. package/chunks/{chunk-33FNCQSY.js → chunk-7MH4J33A.js} +2 -2
  46. package/chunks/{chunk-S7CV4KO6.js → chunk-AB4A73VL.js} +2 -2
  47. package/chunks/{chunk-O7V7N4G7.js → chunk-ACHMWGC5.js} +198 -35
  48. package/chunks/{chunk-NKSF7HYF.js → chunk-AG3P2RES.js} +1 -1
  49. package/chunks/{chunk-6PEXNQTX.js → chunk-ALFTV7GA.js} +26 -2
  50. package/chunks/{chunk-JELIWHXD.js → chunk-AOHJKPKL.js} +1 -1
  51. package/chunks/{chunk-XA4TMLFN.js → chunk-APMRLB2H.js} +580 -394
  52. package/chunks/{chunk-75QMRMO7.js → chunk-APNNM3JC.js} +3 -3
  53. package/chunks/{chunk-GLNBDYUX.js → chunk-AXMWHKXA.js} +6 -2
  54. package/chunks/{chunk-VNQCPBC2.js → chunk-B23P3YWE.js} +3 -3
  55. package/chunks/{chunk-H36SETQS.js → chunk-B2GJNDTV.js} +1 -1
  56. package/chunks/{chunk-Q5RM32DR.js → chunk-BCMJPTXV.js} +1 -1
  57. package/chunks/{chunk-A4VTILZT.js → chunk-BFSQBXHV.js} +714 -398
  58. package/chunks/{chunk-QMBEW7EW.js → chunk-BGG4MBYD.js} +2 -2
  59. package/chunks/{chunk-SLSWFHDF.js → chunk-BJKFFPX2.js} +4 -4
  60. package/chunks/{chunk-N2GJU6KI.js → chunk-BN3OROB3.js} +12 -12
  61. package/chunks/chunk-CE5UCTKO.js +3508 -0
  62. package/chunks/{chunk-2UISUFHQ.js → chunk-CJXIIILK.js} +3 -3
  63. package/chunks/{chunk-WK4TJUEA.js → chunk-CKASRHZI.js} +1 -1
  64. package/chunks/chunk-CPG6P4GG.js +82 -0
  65. package/chunks/{chunk-KKN2IE7Q.js → chunk-CTJLZLB5.js} +1 -1
  66. package/chunks/{chunk-DIEFUBV6.js → chunk-DIWZNWZT.js} +205 -35
  67. package/chunks/{chunk-CA4UIDFU.js → chunk-DPH3MUAP.js} +1 -1
  68. package/chunks/{chunk-4LKVQFHM.js → chunk-DREZZAZM.js} +2 -2
  69. package/chunks/{chunk-2DNKEBXY.js → chunk-EI3HZX6C.js} +1 -1
  70. package/chunks/{chunk-U25CMJYY.js → chunk-EKPKKXY2.js} +1 -1
  71. package/chunks/{chunk-432XCUHF.js → chunk-EQL65XGA.js} +1 -1
  72. package/chunks/{chunk-TYERNYH4.js → chunk-EUNWC2VS.js} +2 -2
  73. package/chunks/{chunk-4JH77A2U.js → chunk-EZ53KMUN.js} +1 -1
  74. package/chunks/{chunk-HY25ULVN.js → chunk-F3LPXDJP.js} +157 -56
  75. package/chunks/{chunk-D3UEZIQH.js → chunk-FJ6YHWHZ.js} +2 -2
  76. package/chunks/{chunk-UH7Z7Y45.js → chunk-FOGU3LJX.js} +1 -1
  77. package/chunks/{chunk-E4WHKETF.js → chunk-FVKHVJZQ.js} +2 -49
  78. package/chunks/{chunk-YZQTA3ID.js → chunk-GDXET5XU.js} +31 -3396
  79. package/chunks/{chunk-A5YZ3FA2.js → chunk-GM463R2B.js} +1 -1
  80. package/chunks/{chunk-MOHAWIAW.js → chunk-GNPNYXJB.js} +2 -2
  81. package/chunks/{chunk-SUKEUUAA.js → chunk-GUFY6D3E.js} +1 -1
  82. package/chunks/{chunk-FZFP7RZI.js → chunk-H2352CX2.js} +3 -3
  83. package/chunks/{chunk-GWRHVJY2.js → chunk-HKCYGZZ4.js} +22 -22
  84. package/chunks/{chunk-3PRJYMXC.js → chunk-HUWENAHO.js} +1 -1
  85. package/chunks/{chunk-G5NNWEYE.js → chunk-HY2INPTA.js} +4 -4
  86. package/chunks/{chunk-WVAESIM6.js → chunk-IA7TGCN2.js} +4 -4
  87. package/chunks/{chunk-HU5TUALO.js → chunk-IIJEYBNH.js} +3 -3
  88. package/chunks/{chunk-XM2O73NC.js → chunk-IMK3SJ43.js} +5703 -4343
  89. package/chunks/{chunk-4S4OEQ6U.js → chunk-J6SZID63.js} +2 -2
  90. package/chunks/{chunk-OWSW7EYP.js → chunk-JACAHYEN.js} +7 -7
  91. package/chunks/{chunk-R5RBXLNC.js → chunk-JRIJOZXO.js} +5 -5
  92. package/chunks/{chunk-SQOMTWQT.js → chunk-JSJTZ6GO.js} +4 -4
  93. package/chunks/{chunk-VWOVHOTT.js → chunk-KJZ26VBX.js} +1 -1
  94. package/chunks/{chunk-BFHXDAR7.js → chunk-KKBPOU75.js} +1 -1
  95. package/chunks/{chunk-TGGEZINK.js → chunk-KKRGVSHC.js} +7 -7
  96. package/chunks/{chunk-RK2EE3T7.js → chunk-KPMB4JEZ.js} +4 -4
  97. package/chunks/{chunk-MKVZE4ZJ.js → chunk-KTJFU7RT.js} +3 -2
  98. package/chunks/{chunk-MGSSJT27.js → chunk-L4N6TIP7.js} +5 -3
  99. package/chunks/{chunk-U4AF3QLU.js → chunk-L4OW63GW.js} +8 -8
  100. package/chunks/{chunk-C4CBJQKY.js → chunk-LDUGDB5H.js} +1 -1
  101. package/chunks/{chunk-W5DXUTXD.js → chunk-LDY4J4G6.js} +8 -8
  102. package/chunks/{chunk-GK2H5GRC.js → chunk-LMEIS6WW.js} +16 -6
  103. package/chunks/{chunk-6O5DVH27.js → chunk-M6HMMKVG.js} +1 -1
  104. package/chunks/{chunk-TOGZTG4X.js → chunk-MIA37QO3.js} +2 -2
  105. package/chunks/{chunk-536SWZTA.js → chunk-MV7VUCIG.js} +4 -4
  106. package/chunks/{chunk-T5U6IM4C.js → chunk-MVUQRLOH.js} +3 -3
  107. package/chunks/{chunk-GLWP3FDB.js → chunk-MZSJ43WV.js} +31 -2
  108. package/chunks/{chunk-UGTWD35F.js → chunk-NLREQJFK.js} +1 -1
  109. package/chunks/{chunk-RFUHDCNF.js → chunk-O7VQ3F22.js} +1 -1
  110. package/chunks/{chunk-3RXUYQJI.js → chunk-OIVKILPI.js} +49 -0
  111. package/chunks/{chunk-LBWNSLJK.js → chunk-ONSZH6VM.js} +2 -2
  112. package/chunks/{chunk-4WTAQEHV.js → chunk-OQTXYMKW.js} +3 -3
  113. package/chunks/{chunk-DYA25Y7U.js → chunk-OWMAZHIX.js} +1 -1
  114. package/chunks/{chunk-LAAFLUQV.js → chunk-P74TZRXD.js} +2 -2
  115. package/chunks/{chunk-BOGOR4HB.js → chunk-P7HUJDBZ.js} +7 -7
  116. package/chunks/chunk-PJRW65JO.js +107 -0
  117. package/chunks/{chunk-D7D7RXIJ.js → chunk-PYQADEFD.js} +6 -1
  118. package/chunks/{chunk-WO2B5E5B.js → chunk-Q3JQ7OSU.js} +1 -1
  119. package/chunks/{chunk-3LZKY4V4.js → chunk-QKJT5K4Q.js} +5 -5
  120. package/chunks/{chunk-OXX3FG2N.js → chunk-R2KZWK5Z.js} +3 -3
  121. package/chunks/{chunk-QZKYZCN3.js → chunk-REHWPCG2.js} +3 -3
  122. package/chunks/{chunk-2POQWYM6.js → chunk-RFA6VDCR.js} +3 -3
  123. package/chunks/{chunk-DIT4V3XH.js → chunk-RGTB44BO.js} +1 -1
  124. package/chunks/{chunk-SQC6K5HI.js → chunk-RPWVIXDB.js} +19 -2
  125. package/chunks/{chunk-ODPXHGLL.js → chunk-RZMGG3HP.js} +2 -2
  126. package/chunks/{chunk-2AGOQ7QO.js → chunk-S6HYI3MF.js} +118 -6
  127. package/chunks/chunk-SAH4BD2J.js +92 -0
  128. package/chunks/{chunk-JE44IPH6.js → chunk-SDUDZNF4.js} +2 -2
  129. package/chunks/{chunk-YAVY33G4.js → chunk-SEZ556DZ.js} +1 -1
  130. package/chunks/chunk-SOORFWKY.js +155 -0
  131. package/chunks/{chunk-KHUA3NQV.js → chunk-TAOSTUHI.js} +2 -2
  132. package/chunks/{chunk-VSALQLT7.js → chunk-TSYIQDG7.js} +1 -1
  133. package/chunks/{chunk-ULPQQSDN.js → chunk-TX3KSSDN.js} +3 -3
  134. package/chunks/{chunk-KVUBYJDM.js → chunk-TZEZYNYD.js} +1 -1
  135. package/chunks/{chunk-24ER7UV4.js → chunk-UFALT4LK.js} +1 -1
  136. package/chunks/{chunk-GESMMPAK.js → chunk-UKAYEQDU.js} +91 -63
  137. package/chunks/{chunk-XC2VAFVZ.js → chunk-UVX4Y6IN.js} +1 -1
  138. package/chunks/chunk-VDS2WYM5.js +244 -0
  139. package/chunks/{chunk-DVBEGGLG.js → chunk-VLFX3L3X.js} +10 -9
  140. package/chunks/{chunk-WNU7TZTO.js → chunk-VT3VNFVW.js} +3 -3
  141. package/chunks/{chunk-6WBWIPBF.js → chunk-WAUGQKUU.js} +4 -64
  142. package/chunks/{chunk-URN76TKR.js → chunk-WCG5O7IP.js} +2 -2
  143. package/chunks/{chunk-PX5DNLSA.js → chunk-XCG76UE6.js} +18 -10
  144. package/chunks/{chunk-TSERKWCX.js → chunk-XCWO3SMQ.js} +3 -3
  145. package/chunks/{chunk-5MJGUQU5.js → chunk-XIDHBXUI.js} +3 -3
  146. package/chunks/{chunk-3LGZEYOF.js → chunk-YHEEE624.js} +2 -2
  147. package/chunks/{chunk-SKNE3KQC.js → chunk-Z5ZAWED3.js} +19 -10
  148. package/chunks/{chunk-YMBOEAF4.js → chunk-Z6W3XDLN.js} +1 -1
  149. package/chunks/{chunk-EXCEQD22.js → chunk-ZKUJ4AO7.js} +4 -4
  150. package/chunks/{chunk-RHTTKJTP.js → chunk-ZQGHESAS.js} +1 -1
  151. package/chunks/{chunk-WUC6ZFXO.js → chunk-ZWBUH5UP.js} +1 -1
  152. package/chunks/{computer-use-5HXJ2P4X.js → computer-use-QLJ27OCZ.js} +39 -38
  153. package/chunks/{config-utils-VXD4SPVR.js → config-utils-KIEXWA4F.js} +4 -4
  154. package/chunks/{contextCommand-7BEHRX2H.js → contextCommand-JDTOJRBO.js} +41 -40
  155. package/chunks/{core-runtime-U4VJ5TIV.js → core-runtime-MZIAVYQC.js} +43 -42
  156. package/chunks/{create-sub-session-6EWLAZD5.js → create-sub-session-QIDZUOPU.js} +2 -2
  157. package/chunks/{create-sub-session-QZNQY332.js → create-sub-session-YBBCNSHE.js} +39 -38
  158. package/chunks/{cron-create-CCRIULJE.js → cron-create-VONA5JYY.js} +4 -4
  159. package/chunks/{cron-delete-FCFW6BGP.js → cron-delete-5JXSP2MI.js} +4 -4
  160. package/chunks/{cron-list-QDBVCHRF.js → cron-list-KE4F2CIR.js} +4 -4
  161. package/chunks/{daemon-YI5RY62O.js → daemon-SCTQMM7Z.js} +50 -2
  162. package/chunks/{daemon-status-provider-UJUGTDTL.js → daemon-status-provider-BZ7RD4ZJ.js} +47 -46
  163. package/chunks/{daemon-trust-policy-ZHDD5VYQ.js → daemon-trust-policy-2E4C3M7S.js} +45 -44
  164. package/chunks/{daemon-trust-policy-monitor-5SHYBDGA.js → daemon-trust-policy-monitor-UYLFH6RW.js} +45 -44
  165. package/chunks/{deferred-core-runtime-QWAEBTR5.js → deferred-core-runtime-6XZYMJZB.js} +39 -38
  166. package/chunks/{display-image-GUJA352B.js → display-image-NQRSIBXM.js} +4 -4
  167. package/chunks/{dist-SFQ34F4M.js → dist-26RK5XZO.js} +1 -1
  168. package/chunks/{dist-DPPHJAVL.js → dist-BATY7GI4.js} +187 -6
  169. package/chunks/{dist-A7H2KKUC.js → dist-HIACTZEK.js} +332 -113
  170. package/chunks/{dist-3BMEUGTG.js → dist-IRL7WA5Z.js} +1 -1
  171. package/chunks/{dist-HVBMEYWK.js → dist-KVISB2O2.js} +1 -1
  172. package/chunks/{dist-KS4O2NKE.js → dist-MBF3I5MX.js} +14 -8
  173. package/chunks/{dist-7JGAAQSC.js → dist-RCH3I7SS.js} +2 -2
  174. package/chunks/{dist-C5U4LJKW.js → dist-TUSWNE2I.js} +5 -4
  175. package/chunks/{earlyInputCapture-5BMSGKOI.js → earlyInputCapture-LATQCGDC.js} +40 -39
  176. package/chunks/{edit-IVQQVYYK.js → edit-72DP57CD.js} +39 -38
  177. package/chunks/{enter-worktree-P3DF2N6O.js → enter-worktree-B4FY2ZPP.js} +39 -38
  178. package/chunks/{enterPlanMode-KKTDVLAD.js → enterPlanMode-TQBWGCPL.js} +39 -38
  179. package/chunks/{environment-W5TRDM3G.js → environment-MOGZGZDS.js} +42 -41
  180. package/chunks/{errors-GJJB36IG.js → errors-PGON5GH7.js} +41 -40
  181. package/chunks/{exit-worktree-LV5RLOCU.js → exit-worktree-EYUD4YP2.js} +39 -38
  182. package/chunks/{exitPlanMode-TUGOB2LL.js → exitPlanMode-4Q7BSQXR.js} +39 -38
  183. package/chunks/{fast-path-2FU23PAQ.js → fast-path-WI7D5MER.js} +23 -3
  184. package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-YBRL24DB.js} +2 -2
  185. package/chunks/{gemini-KDULDQPP.js → gemini-ZXURGM6Y.js} +87 -82
  186. package/chunks/{geminiContentGenerator-LOCFHNVA.js → geminiContentGenerator-EOODO75Y.js} +6 -6
  187. package/chunks/{glob-Z4NQFKWS.js → glob-QNRIUOS6.js} +39 -38
  188. package/chunks/{goal-tools-3AZKX5WQ.js → goal-tools-QSYW65HV.js} +3 -3
  189. package/chunks/{grep-Z67Z7EN6.js → grep-56MTW67B.js} +39 -38
  190. package/chunks/{handleAutoUpdate-DFUZE6I6.js → handleAutoUpdate-XGFIPVT4.js} +43 -42
  191. package/chunks/{i18n-R4FMZ7N2.js → i18n-RZB35L4B.js} +40 -39
  192. package/chunks/{image-gen-4CQJPQP5.js → image-gen-OE2EEKN3.js} +9 -9
  193. package/chunks/{initializer-DK672ZVE.js → initializer-YPVMTMKD.js} +46 -45
  194. package/chunks/{installationInfo-PO4Z3ES7.js → installationInfo-ZTMTMYNW.js} +40 -39
  195. package/chunks/{keychain-token-storage-7BT4TQ2A.js → keychain-token-storage-TVAMTNP7.js} +2 -2
  196. package/chunks/{list-QXQF6C53.js → list-NIW3WID5.js} +48 -47
  197. package/chunks/{list-agents-GC4BRET7.js → list-agents-Z4WABFDZ.js} +2 -2
  198. package/chunks/{loadedSettingsAdapter-4D7GUGW6.js → loadedSettingsAdapter-VSLILTOZ.js} +45 -44
  199. package/chunks/{loggingContentGenerator-2P3MNACM.js → loggingContentGenerator-KFZYVAGV.js} +17 -17
  200. package/chunks/{loop-wakeup-SQQSBMEY.js → loop-wakeup-UZ5RL5Y2.js} +5 -5
  201. package/chunks/{ls-63CC3NNX.js → ls-TVHDGIES.js} +4 -4
  202. package/chunks/{lsp-P6NVJVNT.js → lsp-CVN6OQPI.js} +2 -2
  203. package/chunks/{managed-npm-update-LWVJQTWO.js → managed-npm-update-WHTA2K5V.js} +40 -39
  204. package/chunks/{mcp-GHETAR6V.js → mcp-7KGK3CS3.js} +45 -44
  205. package/chunks/{monitor-4T7W4M6Q.js → monitor-FDWEJQWP.js} +39 -38
  206. package/chunks/nonInteractiveCli-2MVJ6TCS.js +155 -0
  207. package/chunks/{notebook-edit-OC2V7U5D.js → notebook-edit-ZUVK2XWE.js} +47 -38
  208. package/chunks/{openaiContentGenerator-RAJUFWQY.js → openaiContentGenerator-TNLWOPH5.js} +28 -21
  209. package/chunks/{pidfile-HVPYVRLS.js → pidfile-BB6SKPH2.js} +40 -39
  210. package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
  211. package/chunks/{processUtils-VIQ4JHVX.js → processUtils-WKHJOPDH.js} +2 -2
  212. package/chunks/{qwenContentGenerator-2QLCUFNZ.js → qwenContentGenerator-FZS2DYF7.js} +48 -46
  213. package/chunks/{qwenOAuth2-J2X3EN43.js → qwenOAuth2-UYMYRXBB.js} +9 -9
  214. package/chunks/{read-file-ZNAN2B26.js → read-file-FMTE6LPA.js} +10 -10
  215. package/chunks/{read-mcp-resource-RTSSEER5.js → read-mcp-resource-PZ4ZF6YL.js} +2 -2
  216. package/chunks/{record-artifact-E6AWQU2Z.js → record-artifact-P4HFMS7X.js} +3 -3
  217. package/chunks/{resumeHistoryUtils-RCY7AL5Y.js → resumeHistoryUtils-Z34RCZFF.js} +45 -43
  218. package/chunks/{ripGrep-C3KMLZM5.js → ripGrep-DUIYUZGM.js} +39 -38
  219. package/chunks/{run-qwen-serve-3JN75CIQ.js → run-qwen-serve-KOHHR3F4.js} +145 -62
  220. package/chunks/{runtime-VUA4WQYD.js → runtime-K4NTZSAU.js} +50 -49
  221. package/chunks/{scheduler-Z4IBXCOY.js → scheduler-6G6AMURS.js} +39 -38
  222. package/chunks/{sdk-exporters-http-IL2346MJ.js → sdk-exporters-http-KHAB5JSD.js} +2 -2
  223. package/chunks/{sdk-impl-SYKGVWOZ.js → sdk-impl-KD7FSTC3.js} +2 -2
  224. package/chunks/{send-message-TL6FIMMN.js → send-message-CAMSLG2L.js} +6 -5
  225. package/chunks/{serve-67T3P7XI.js → serve-NMG2TM5K.js} +46 -45
  226. package/chunks/{server-46ZO2CLV.js → server-FS7KDELS.js} +679 -360
  227. package/chunks/{session-B4IFAFC4.js → session-XZADUVKJ.js} +82 -81
  228. package/chunks/{settings-AI2BTBOZ.js → settings-G75R6FOA.js} +44 -43
  229. package/chunks/{shell-BKII3B6E.js → shell-3D3PMQHE.js} +39 -38
  230. package/chunks/{skill-6CFOWVGA.js → skill-TSEYMVQ2.js} +14 -14
  231. package/chunks/{skill-settings-6BFQWMW4.js → skill-settings-HJC2CPBJ.js} +44 -43
  232. package/chunks/{spawnChannel-FJXW35U7.js → spawnChannel-YWCN74G5.js} +41 -40
  233. package/chunks/{standalone-update-WVINHRNS.js → standalone-update-HLYOLX6V.js} +41 -40
  234. package/chunks/{startInteractiveUI-YE57CJ57.js → startInteractiveUI-ROUIQ5KU.js} +486 -187
  235. package/chunks/{syntheticOutput-BN7E626U.js → syntheticOutput-PEBJQYJV.js} +3 -3
  236. package/chunks/{task-create-Q727MXHJ.js → task-create-5NWCQSJF.js} +10 -9
  237. package/chunks/{task-list-G6KPQ5JT.js → task-list-53265TRZ.js} +5 -5
  238. package/chunks/{task-stop-TNXRNAL2.js → task-stop-FPCOIRYX.js} +2 -2
  239. package/chunks/{task-update-YB7PXO4R.js → task-update-5HN577LS.js} +10 -9
  240. package/chunks/{team-create-GNC7NFY6.js → team-create-OTP5SSB2.js} +39 -38
  241. package/chunks/{team-delete-GDO7H2T4.js → team-delete-MMQB4OSC.js} +5 -5
  242. package/chunks/{team-plan-approval-ECALJLIO.js → team-plan-approval-TQX5TMXU.js} +39 -38
  243. package/chunks/{terminal-image-renderer-II74TFVW.js → terminal-image-renderer-KF3GKNWW.js} +45 -39
  244. package/chunks/{theme-manager-2MGEDD22.js → theme-manager-XVWAAGAM.js} +40 -39
  245. package/chunks/{todoWrite-MHWHO5UO.js → todoWrite-JGV6VLOX.js} +4 -4
  246. package/chunks/{tool-search-S6LRRACA.js → tool-search-7N4D4O56.js} +14 -13
  247. package/chunks/{total-session-admission-7WVAWQPU.js → total-session-admission-ZQ4VKIRW.js} +43 -42
  248. package/chunks/{trustedFolders-NFS4KHO4.js → trustedFolders-4XYFPWVV.js} +40 -39
  249. package/chunks/{update-relaunch-Q5HLZ6UW.js → update-relaunch-L4GSBLUU.js} +5 -5
  250. package/chunks/{updateCheck-UOVZSTP7.js → updateCheck-PCUTVRFE.js} +42 -41
  251. package/chunks/{useAutoAcceptIndicator-PC6MOJCO.js → useAutoAcceptIndicator-WMXY7MND.js} +47 -46
  252. package/chunks/{validateNonInterActiveAuth-YMQP3ZM7.js → validateNonInterActiveAuth-5S3U2D56.js} +78 -77
  253. package/chunks/{version-T4AQFZJH.js → version-P57IQU2T.js} +1 -1
  254. package/chunks/{web-fetch-JQCJHEEX.js → web-fetch-5ZLLLCDD.js} +13 -13
  255. package/chunks/{web-search-QGZ2KY4G.js → web-search-NELKANTW.js} +10 -10
  256. package/chunks/web-shell-static-O73YPVVC.js +33 -0
  257. package/chunks/{workflow-YIT27YWZ.js → workflow-RXKBF3LO.js} +42 -40
  258. package/chunks/{workspace-providers-status-FIDZQ2PL.js → workspace-providers-status-HAEMNAWC.js} +48 -47
  259. package/chunks/{workspace-registration-store-RCSPE4DU.js → workspace-registration-store-U3U3YM6V.js} +1 -1
  260. package/chunks/{workspace-registry-5PEUCY6E.js → workspace-registry-ZFP33GVB.js} +43 -42
  261. package/chunks/{workspace-service-LANDVPL7.js → workspace-service-QMISJBMA.js} +50 -49
  262. package/chunks/{workspace-skills-status-2IQVJNIN.js → workspace-skills-status-K7EOUGXL.js} +46 -45
  263. package/chunks/{workspace-trust-reconciler-CZPZZCZC.js → workspace-trust-reconciler-BFPKULDZ.js} +50 -49
  264. package/chunks/{write-file-G5VNGCOG.js → write-file-2F76RRFE.js} +39 -38
  265. package/chunks/{zoom-image-6RBLD7X6.js → zoom-image-DPR22XWY.js} +10 -10
  266. package/cli.js +12 -12
  267. package/package.json +3 -3
  268. package/web-shell/assets/{arc-B-Vtkp1W.js → arc-CunFPPcQ.js} +1 -1
  269. package/web-shell/assets/{architectureDiagram-3BPJPVTR-qmTXIj64.js → architectureDiagram-3BPJPVTR-D3SqCgeM.js} +1 -1
  270. package/web-shell/assets/{blockDiagram-GPEHLZMM-ZlnXEtdP.js → blockDiagram-GPEHLZMM-CPRx90S_.js} +1 -1
  271. package/web-shell/assets/{c4Diagram-AAUBKEIU-Wyoirf6Z.js → c4Diagram-AAUBKEIU-CahP9Ue4.js} +1 -1
  272. package/web-shell/assets/channel-zbv7GWAw.js +1 -0
  273. package/web-shell/assets/{chunk-2J33WTMH-WQwbq9d8.js → chunk-2J33WTMH-DckIWZ12.js} +1 -1
  274. package/web-shell/assets/{chunk-4BX2VUAB-DQKnAXC4.js → chunk-4BX2VUAB-D2Kfctyn.js} +1 -1
  275. package/web-shell/assets/{chunk-55IACEB6-DIdgXNcO.js → chunk-55IACEB6-DkI11FTX.js} +1 -1
  276. package/web-shell/assets/{chunk-727SXJPM-CUwGOLEd.js → chunk-727SXJPM-rR-TSCIi.js} +1 -1
  277. package/web-shell/assets/{chunk-AQP2D5EJ-CCBGZFZ4.js → chunk-AQP2D5EJ-DFGKcGRO.js} +1 -1
  278. package/web-shell/assets/{chunk-FMBD7UC4-DMGXProk.js → chunk-FMBD7UC4-CjWqcTPE.js} +1 -1
  279. package/web-shell/assets/{chunk-ND2GUHAM-yejcFqsh.js → chunk-ND2GUHAM-RXe-87UV.js} +1 -1
  280. package/web-shell/assets/{chunk-QZHKN3VN-DxCyqTf7.js → chunk-QZHKN3VN-Dz0c_Yrn.js} +1 -1
  281. package/web-shell/assets/classDiagram-4FO5ZUOK-DSjLkJJZ.js +1 -0
  282. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DSjLkJJZ.js +1 -0
  283. package/web-shell/assets/{cose-bilkent-S5V4N54A-DOrF3cg_.js → cose-bilkent-S5V4N54A-ZHF0-jvV.js} +1 -1
  284. package/web-shell/assets/{dagre-BM42HDAG-Be6CdYQ_.js → dagre-BM42HDAG-7Umz_ygJ.js} +1 -1
  285. package/web-shell/assets/{diagram-2AECGRRQ-B_Rjsft2.js → diagram-2AECGRRQ-DomN8nxq.js} +1 -1
  286. package/web-shell/assets/{diagram-5GNKFQAL-BvQbKSm1.js → diagram-5GNKFQAL-eebvj2OL.js} +1 -1
  287. package/web-shell/assets/{diagram-KO2AKTUF-BsdmMdpS.js → diagram-KO2AKTUF-IR1mmn9d.js} +1 -1
  288. package/web-shell/assets/{diagram-LMA3HP47-CrQlBaNr.js → diagram-LMA3HP47-CKysx5KF.js} +1 -1
  289. package/web-shell/assets/{diagram-OG6HWLK6-aB1MD_DL.js → diagram-OG6HWLK6-cBy5puHn.js} +1 -1
  290. package/web-shell/assets/{erDiagram-TEJ5UH35-F-eUUn9n.js → erDiagram-TEJ5UH35-B5RJagPG.js} +1 -1
  291. package/web-shell/assets/{flowDiagram-I6XJVG4X-DY_d8lUK.js → flowDiagram-I6XJVG4X-CfHgDmPg.js} +1 -1
  292. package/web-shell/assets/{ganttDiagram-6RSMTGT7-Dqu7KBPg.js → ganttDiagram-6RSMTGT7-DUfFF5nb.js} +1 -1
  293. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-2IkU_VEj.js → gitGraphDiagram-PVQCEYII-M9dt57k5.js} +1 -1
  294. package/web-shell/assets/{index-QQlUCJGg.css → index-B8e-CkuC.css} +2 -2
  295. package/web-shell/assets/{index-BuSbqggh.js → index-CKjO4myk.js} +1 -1
  296. package/web-shell/assets/index-Dc-fTO0V.js +1768 -0
  297. package/web-shell/assets/{infoDiagram-5YYISTIA-C4orwzPw.js → infoDiagram-5YYISTIA-CTKMmIro.js} +1 -1
  298. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-fXUEfef_.js → ishikawaDiagram-YF4QCWOH-DJIJDP4s.js} +1 -1
  299. package/web-shell/assets/{journeyDiagram-JHISSGLW-Bs0I1_J5.js → journeyDiagram-JHISSGLW-DgRnvn6S.js} +1 -1
  300. package/web-shell/assets/{kanban-definition-UN3LZRKU-BPRj1dw_.js → kanban-definition-UN3LZRKU-VUwO8yrg.js} +1 -1
  301. package/web-shell/assets/{linear-DFS6ZDpW.js → linear-BCvgV5I_.js} +1 -1
  302. package/web-shell/assets/{mermaid.core-CZxjWMaO.js → mermaid.core-mv_kVV6q.js} +5 -5
  303. package/web-shell/assets/{mindmap-definition-RKZ34NQL-Dsr3PmNs.js → mindmap-definition-RKZ34NQL-sfnjMlOd.js} +1 -1
  304. package/web-shell/assets/{pieDiagram-4H26LBE5-D5Ngpz5Y.js → pieDiagram-4H26LBE5-BlhICse4.js} +1 -1
  305. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-WJK9I25z.js → quadrantDiagram-W4KKPZXB-BgTQzwen.js} +1 -1
  306. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CmrYcwOH.js → requirementDiagram-4Y6WPE33-CZ-FTrrN.js} +1 -1
  307. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-7SjCc4Mv.js → sankeyDiagram-5OEKKPKP-G5Wp_jn3.js} +1 -1
  308. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Dl9E0IRM.js → sequenceDiagram-3UESZ5HK-C8MKZ3i1.js} +1 -1
  309. package/web-shell/assets/{stateDiagram-AJRCARHV-CRRio7yV.js → stateDiagram-AJRCARHV-Bo0ZDm7y.js} +1 -1
  310. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-31TSCPcH.js +1 -0
  311. package/web-shell/assets/{timeline-definition-PNZ67QCA-DVyXjjfq.js → timeline-definition-PNZ67QCA-M3L9E01f.js} +1 -1
  312. package/web-shell/assets/{vennDiagram-CIIHVFJN-Nb2Lckzq.js → vennDiagram-CIIHVFJN-DD4eHCrm.js} +1 -1
  313. package/web-shell/assets/{wardley-L42UT6IY-DuL_otIP.js → wardley-L42UT6IY-DNEL_3g4.js} +1 -1
  314. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DVI9Q4Aa.js → wardleyDiagram-YWT4CUSO-q484OoqI.js} +1 -1
  315. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BNjAm7KD.js → xychartDiagram-2RQKCTM6-4mcNt1Yg.js} +1 -1
  316. package/web-shell/index.html +2 -2
  317. package/chunks/chunk-EMYZIABH.js +0 -81
  318. package/chunks/nonInteractiveCli-P4UKCJFM.js +0 -154
  319. package/web-shell/assets/channel-DXaHnfjS.js +0 -1
  320. package/web-shell/assets/classDiagram-4FO5ZUOK-BigU82A0.js +0 -1
  321. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BigU82A0.js +0 -1
  322. package/web-shell/assets/index-DrfC2e9s.js +0 -1768
  323. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-1atT7XaU.js +0 -1
@@ -3,45 +3,57 @@
3
3
  import {
4
4
  DashScopeOpenAICompatibleProvider,
5
5
  DefaultOpenAICompatibleProvider
6
- } from "./chunk-HU5TUALO.js";
7
- import {
8
- RequestTokenizer
9
- } from "./chunk-H36SETQS.js";
10
- import {
11
- DEFAULT_STREAM_IDLE_TIMEOUT_MS,
12
- MAX_STREAM_IDLE_TIMEOUT_MS,
13
- QWEN_STREAM_IDLE_TIMEOUT_MS_ENV
14
- } from "./chunk-GLNBDYUX.js";
15
- import {
16
- createChildAbortController
17
- } from "./chunk-DJ2GSRLV.js";
6
+ } from "./chunk-IIJEYBNH.js";
18
7
  import {
19
8
  OpenAIContentConverter,
20
9
  TaggedThinkingParser,
21
10
  openaiRequestCaptureContext
22
- } from "./chunk-4LKVQFHM.js";
11
+ } from "./chunk-DREZZAZM.js";
12
+ import {
13
+ applyOfficialOpenAIPromptCaching,
14
+ isOfficialOpenAIEndpoint
15
+ } from "./chunk-SAH4BD2J.js";
16
+ import {
17
+ getCurrentAgentId
18
+ } from "./chunk-CPG6P4GG.js";
23
19
  import {
24
20
  InvalidStreamError
25
21
  } from "./chunk-2J3OJGTL.js";
22
+ import {
23
+ isInForkExecution
24
+ } from "./chunk-IA7TGCN2.js";
26
25
  import {
27
26
  getRateLimitErrorDetails
28
- } from "./chunk-6O5DVH27.js";
27
+ } from "./chunk-M6HMMKVG.js";
28
+ import {
29
+ RequestTokenizer
30
+ } from "./chunk-B2GJNDTV.js";
29
31
  import {
30
32
  safeJsonParse
31
- } from "./chunk-WK4TJUEA.js";
33
+ } from "./chunk-CKASRHZI.js";
34
+ import {
35
+ DEFAULT_STREAM_IDLE_TIMEOUT_MS,
36
+ DEFAULT_STREAM_MAX_LIFETIME_MS,
37
+ MAX_STREAM_GUARD_TIMEOUT_MS,
38
+ QWEN_STREAM_IDLE_TIMEOUT_MS_ENV,
39
+ QWEN_STREAM_MAX_LIFETIME_MS_ENV
40
+ } from "./chunk-AXMWHKXA.js";
32
41
  import {
33
42
  getToolCallPreparations,
34
43
  runtimeDiagnostics
35
44
  } from "./chunk-GLCZKT5V.js";
45
+ import {
46
+ createChildAbortController
47
+ } from "./chunk-DJ2GSRLV.js";
36
48
  import {
37
49
  reportOpenAiChunk,
38
50
  reportOpenAiRequest,
39
51
  reportOpenAiResponse
40
- } from "./chunk-URN76TKR.js";
52
+ } from "./chunk-WCG5O7IP.js";
41
53
  import {
42
54
  ProtocolTagSanitizedEvent,
43
55
  logProtocolTagSanitized
44
- } from "./chunk-PX5DNLSA.js";
56
+ } from "./chunk-XCG76UE6.js";
45
57
  import {
46
58
  isQwenFamilyWireModel,
47
59
  isTieredEffortWireModel
@@ -51,14 +63,14 @@ import {
51
63
  } from "./chunk-ZBVS26BY.js";
52
64
  import {
53
65
  redactProxyError
54
- } from "./chunk-BFHXDAR7.js";
66
+ } from "./chunk-KKBPOU75.js";
55
67
  import {
56
68
  createDebugLogger,
57
69
  getErrorMessage,
58
70
  getErrorStatus,
59
71
  getErrorType,
60
72
  isAbortError
61
- } from "./chunk-3RXUYQJI.js";
73
+ } from "./chunk-OIVKILPI.js";
62
74
  import {
63
75
  GenerateContentResponse
64
76
  } from "./chunk-22C7BQ6D.js";
@@ -940,6 +952,21 @@ var StreamInactivityTimeoutError = class extends Error {
940
952
  }
941
953
  code = "ETIMEDOUT";
942
954
  };
955
+ var StreamLifetimeExceededError = class extends Error {
956
+ constructor(maxLifetimeMs, chunksReceived, streamLifetimeMs) {
957
+ super(
958
+ `Stream exceeded its ${maxLifetimeMs}ms upstream-wait cap after ${chunksReceived} chunks without completing (wall clock: ${streamLifetimeMs}ms). Set ${QWEN_STREAM_MAX_LIFETIME_MS_ENV} to increase this cap (or 0 to disable it).`
959
+ );
960
+ this.maxLifetimeMs = maxLifetimeMs;
961
+ this.chunksReceived = chunksReceived;
962
+ this.streamLifetimeMs = streamLifetimeMs;
963
+ this.name = "StreamLifetimeExceededError";
964
+ }
965
+ static {
966
+ __name(this, "StreamLifetimeExceededError");
967
+ }
968
+ code = "ETIMEDOUT";
969
+ };
943
970
  var NON_SSE_BODY_PREFIX_LIMIT = 512;
944
971
  function isSSECompatibleContentType(contentType) {
945
972
  if (!contentType) return true;
@@ -985,57 +1012,108 @@ function clampProviderOutputBudgetKeys(samplingParams, requestMaxTokens) {
985
1012
  return samplingParams;
986
1013
  }
987
1014
  __name(clampProviderOutputBudgetKeys, "clampProviderOutputBudgetKeys");
988
- function resolveStreamIdleTimeoutMs(config) {
989
- const fromConfig = config.streamIdleTimeoutMs;
1015
+ function resolveStreamGuardMs(fromConfig, configLabel, envName, defaultMs) {
990
1016
  if (typeof fromConfig === "number") {
991
- if (Number.isInteger(fromConfig) && fromConfig <= MAX_STREAM_IDLE_TIMEOUT_MS) {
1017
+ if (Number.isInteger(fromConfig) && fromConfig <= MAX_STREAM_GUARD_TIMEOUT_MS) {
992
1018
  return fromConfig;
993
1019
  }
994
1020
  console.warn(
995
- `[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.`
1021
+ `[qwen-code] Ignoring out-of-range ${configLabel}=${fromConfig} (expected an integer in (-\u221E, ${MAX_STREAM_GUARD_TIMEOUT_MS}]); falling back to ${envName}/default.`
996
1022
  );
997
1023
  }
998
- const raw = process.env[QWEN_STREAM_IDLE_TIMEOUT_MS_ENV];
1024
+ const raw = process.env[envName];
999
1025
  const trimmed = raw?.trim();
1000
1026
  if (trimmed) {
1001
1027
  if (/^\d+$/.test(trimmed)) {
1002
1028
  const parsed = Number(trimmed);
1003
- if (parsed <= MAX_STREAM_IDLE_TIMEOUT_MS) {
1029
+ if (parsed <= MAX_STREAM_GUARD_TIMEOUT_MS) {
1004
1030
  return parsed;
1005
1031
  }
1006
1032
  }
1007
1033
  console.warn(
1008
- `[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.`
1034
+ `[qwen-code] Ignoring invalid ${envName}="${raw}" (expected an integer of milliseconds in [0, ${MAX_STREAM_GUARD_TIMEOUT_MS}]); using default ${defaultMs}ms.`
1009
1035
  );
1010
1036
  }
1011
- return DEFAULT_STREAM_IDLE_TIMEOUT_MS;
1037
+ return defaultMs;
1038
+ }
1039
+ __name(resolveStreamGuardMs, "resolveStreamGuardMs");
1040
+ function resolveStreamIdleTimeoutMs(config) {
1041
+ return resolveStreamGuardMs(
1042
+ config.streamIdleTimeoutMs,
1043
+ "streamIdleTimeoutMs",
1044
+ QWEN_STREAM_IDLE_TIMEOUT_MS_ENV,
1045
+ DEFAULT_STREAM_IDLE_TIMEOUT_MS
1046
+ );
1012
1047
  }
1013
1048
  __name(resolveStreamIdleTimeoutMs, "resolveStreamIdleTimeoutMs");
1014
- async function* withStreamInactivityTimeout(source, idleMs, abortRequest, parentSignal) {
1049
+ function resolveStreamMaxLifetimeMs(config) {
1050
+ return resolveStreamGuardMs(
1051
+ config.streamMaxLifetimeMs,
1052
+ "streamMaxLifetimeMs",
1053
+ QWEN_STREAM_MAX_LIFETIME_MS_ENV,
1054
+ DEFAULT_STREAM_MAX_LIFETIME_MS
1055
+ );
1056
+ }
1057
+ __name(resolveStreamMaxLifetimeMs, "resolveStreamMaxLifetimeMs");
1058
+ async function* withStreamGuards(source, idleMs, maxLifetimeMs, abortRequest, parentSignal) {
1059
+ if (idleMs <= 0 && maxLifetimeMs <= 0) {
1060
+ yield* source;
1061
+ return;
1062
+ }
1015
1063
  const it = source[Symbol.asyncIterator]();
1016
- const streamStartedAt = Date.now();
1064
+ const streamStartedAt = performance.now();
1065
+ let upstreamMs = 0;
1017
1066
  let chunksReceived = 0;
1018
1067
  try {
1019
1068
  while (true) {
1069
+ const remainingMs = maxLifetimeMs > 0 ? maxLifetimeMs - upstreamMs : Number.POSITIVE_INFINITY;
1070
+ if (remainingMs <= 0) {
1071
+ if (parentSignal?.aborted) {
1072
+ const abortErr = new Error("Aborted");
1073
+ abortErr.name = "AbortError";
1074
+ throw abortErr;
1075
+ }
1076
+ abortRequest();
1077
+ throw new StreamLifetimeExceededError(
1078
+ maxLifetimeMs,
1079
+ chunksReceived,
1080
+ performance.now() - streamStartedAt
1081
+ );
1082
+ }
1020
1083
  const nextPromise = it.next();
1084
+ const awaitedAt = performance.now();
1021
1085
  let timer;
1022
1086
  const timeout = new Promise((_resolve, reject) => {
1023
- timer = setTimeout(() => {
1024
- if (parentSignal?.aborted) {
1025
- const abortErr = new Error("Aborted");
1026
- abortErr.name = "AbortError";
1027
- reject(abortErr);
1028
- } else {
1029
- abortRequest();
1030
- reject(
1031
- new StreamInactivityTimeoutError(
1032
- idleMs,
1033
- chunksReceived,
1034
- Date.now() - streamStartedAt
1035
- )
1036
- );
1037
- }
1038
- }, idleMs);
1087
+ const idleIn = idleMs > 0 ? idleMs : Number.POSITIVE_INFINITY;
1088
+ const wait = Math.min(idleIn, remainingMs);
1089
+ timer = setTimeout(
1090
+ () => {
1091
+ if (parentSignal?.aborted) {
1092
+ const abortErr = new Error("Aborted");
1093
+ abortErr.name = "AbortError";
1094
+ reject(abortErr);
1095
+ } else if (remainingMs <= idleIn) {
1096
+ abortRequest();
1097
+ reject(
1098
+ new StreamLifetimeExceededError(
1099
+ maxLifetimeMs,
1100
+ chunksReceived,
1101
+ performance.now() - streamStartedAt
1102
+ )
1103
+ );
1104
+ } else {
1105
+ abortRequest();
1106
+ reject(
1107
+ new StreamInactivityTimeoutError(
1108
+ idleMs,
1109
+ chunksReceived,
1110
+ performance.now() - streamStartedAt
1111
+ )
1112
+ );
1113
+ }
1114
+ },
1115
+ Math.max(wait, 0)
1116
+ );
1039
1117
  timer.unref?.();
1040
1118
  });
1041
1119
  let result;
@@ -1049,6 +1127,7 @@ async function* withStreamInactivityTimeout(source, idleMs, abortRequest, parent
1049
1127
  if (timer !== void 0) clearTimeout(timer);
1050
1128
  }
1051
1129
  if (result.done) return;
1130
+ upstreamMs += performance.now() - awaitedAt;
1052
1131
  chunksReceived += 1;
1053
1132
  yield result.value;
1054
1133
  }
@@ -1060,7 +1139,7 @@ async function* withStreamInactivityTimeout(source, idleMs, abortRequest, parent
1060
1139
  }
1061
1140
  }
1062
1141
  }
1063
- __name(withStreamInactivityTimeout, "withStreamInactivityTimeout");
1142
+ __name(withStreamGuards, "withStreamGuards");
1064
1143
  var ContentGenerationPipeline = class {
1065
1144
  constructor(config) {
1066
1145
  this.config = config;
@@ -1069,6 +1148,9 @@ var ContentGenerationPipeline = class {
1069
1148
  this.streamIdleTimeoutMs = resolveStreamIdleTimeoutMs(
1070
1149
  this.contentGeneratorConfig
1071
1150
  );
1151
+ this.streamMaxLifetimeMs = resolveStreamMaxLifetimeMs(
1152
+ this.contentGeneratorConfig
1153
+ );
1072
1154
  }
1073
1155
  static {
1074
1156
  __name(this, "ContentGenerationPipeline");
@@ -1079,6 +1161,7 @@ var ContentGenerationPipeline = class {
1079
1161
  // Resolved once (config field > env > default) so the env read + any
1080
1162
  // invalid-value warning happen per pipeline, not per streaming request.
1081
1163
  streamIdleTimeoutMs;
1164
+ streamMaxLifetimeMs;
1082
1165
  async execute(request, userPromptId) {
1083
1166
  return this.executeWithErrorHandling(
1084
1167
  request,
@@ -1156,9 +1239,11 @@ var ContentGenerationPipeline = class {
1156
1239
  throw e;
1157
1240
  }
1158
1241
  const idleMs = this.streamIdleTimeoutMs;
1159
- const guarded = idleMs > 0 ? withStreamInactivityTimeout(
1242
+ const maxLifetimeMs = this.streamMaxLifetimeMs;
1243
+ const guarded = idleMs > 0 || maxLifetimeMs > 0 ? withStreamGuards(
1160
1244
  stream,
1161
1245
  idleMs,
1246
+ maxLifetimeMs,
1162
1247
  () => perRequestAc.abort(),
1163
1248
  parentSignal
1164
1249
  ) : stream;
@@ -1305,6 +1390,22 @@ var ContentGenerationPipeline = class {
1305
1390
  if (error instanceof StreamContentError) {
1306
1391
  throw redactProxyError(error);
1307
1392
  }
1393
+ if (error instanceof StreamInactivityTimeoutError || error instanceof StreamLifetimeExceededError) {
1394
+ const isLifetime = error instanceof StreamLifetimeExceededError;
1395
+ debugLogger3.warn(
1396
+ isLifetime ? "OpenAI stream lifetime cap exceeded" : "OpenAI stream inactivity timeout",
1397
+ {
1398
+ chunksReceived: error.chunksReceived,
1399
+ // Wall clock, labelled apart from the cap so the two numbers in
1400
+ // the log reconcile the same way the error message does.
1401
+ wallClockMs: error.streamLifetimeMs,
1402
+ ...isLifetime ? {
1403
+ maxLifetimeMs: error.maxLifetimeMs
1404
+ } : { idleMs: error.idleMs }
1405
+ }
1406
+ );
1407
+ throw redactProxyError(error);
1408
+ }
1308
1409
  if (context.pendingThinkingTagCandidate?.closingTagName && request.config?.abortSignal?.aborted !== true) {
1309
1410
  context.pendingThinkingTagCandidate = void 0;
1310
1411
  context.pendingUntrustedResponseParts = void 0;
@@ -1313,14 +1414,6 @@ var ContentGenerationPipeline = class {
1313
1414
  "PROTOCOL_TAG_LEAK"
1314
1415
  );
1315
1416
  }
1316
- if (error instanceof StreamInactivityTimeoutError) {
1317
- debugLogger3.warn("OpenAI stream inactivity timeout", {
1318
- idleMs: error.idleMs,
1319
- chunksReceived: error.chunksReceived,
1320
- streamLifetimeMs: error.streamLifetimeMs
1321
- });
1322
- throw redactProxyError(error);
1323
- }
1324
1417
  await this.handleError(error, context, request);
1325
1418
  }
1326
1419
  }
@@ -1396,10 +1489,18 @@ var ContentGenerationPipeline = class {
1396
1489
  baseRequest["tool_choice"] = "none";
1397
1490
  }
1398
1491
  }
1399
- const providerRequest = this.config.provider.buildRequest(
1492
+ let providerRequest = this.config.provider.buildRequest(
1400
1493
  baseRequest,
1401
1494
  userPromptId
1402
1495
  );
1496
+ if (this.contentGeneratorConfig.enableCacheControl !== false && isOfficialOpenAIEndpoint(this.contentGeneratorConfig)) {
1497
+ providerRequest = applyOfficialOpenAIPromptCaching(
1498
+ providerRequest,
1499
+ this.config.cliConfig.getSessionId?.(),
1500
+ request.promptCacheSharing === true,
1501
+ isInForkExecution() ? void 0 : getCurrentAgentId() ?? void 0
1502
+ );
1503
+ }
1403
1504
  const model = (context.model ?? "").toLowerCase();
1404
1505
  const isDashScope = DashScopeOpenAICompatibleProvider.isDashScopeProvider(
1405
1506
  this.contentGeneratorConfig
@@ -15,7 +15,7 @@ import {
15
15
  HOME_ENV_BOOTSTRAP_KEYS,
16
16
  PROJECT_ENV_HARDCODED_EXCLUSIONS,
17
17
  publishPendingCompileCache
18
- } from "./chunk-6PEXNQTX.js";
18
+ } from "./chunk-ALFTV7GA.js";
19
19
  import {
20
20
  require_strip_json_comments
21
21
  } from "./chunk-ALGGS7UH.js";
@@ -87,7 +87,7 @@ function readHomeEnvIntoFastPath(file) {
87
87
  if (!fs.existsSync(file)) return;
88
88
  try {
89
89
  const parsed = dotenv.parse(fs.readFileSync(file, "utf8"));
90
- for (const key of PROJECT_ENV_HARDCODED_EXCLUSIONS) {
90
+ for (const key of HOME_ENV_BOOTSTRAP_KEYS) {
91
91
  if (parsed[key] && !Object.hasOwn(process.env, key)) {
92
92
  process.env[key] = parsed[key];
93
93
  }
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  createDebugLogger,
5
5
  isNodeError
6
- } from "./chunk-3RXUYQJI.js";
6
+ } from "./chunk-OIVKILPI.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-5O2XNYP6.js";
@@ -3,9 +3,10 @@
3
3
  import {
4
4
  QWEN_DIR,
5
5
  Storage,
6
+ realpathNearestExisting,
6
7
  resolvePath,
7
8
  sanitizeCwd
8
- } from "./chunk-3RXUYQJI.js";
9
+ } from "./chunk-OIVKILPI.js";
9
10
  import {
10
11
  init_esbuild_shims
11
12
  } from "./chunk-5O2XNYP6.js";
@@ -186,54 +187,6 @@ function isManagedMemoryPath(filePath, projectRoot, baseDir = projectRoot) {
186
187
  });
187
188
  }
188
189
  __name(isManagedMemoryPath, "isManagedMemoryPath");
189
- function resolveLeafSymlink(inputPath) {
190
- const maxHops = 40;
191
- let current = path.resolve(inputPath);
192
- for (let i = 0; i < maxHops; i++) {
193
- let stat;
194
- try {
195
- stat = fs.lstatSync(current);
196
- } catch {
197
- return current;
198
- }
199
- if (!stat.isSymbolicLink()) {
200
- return current;
201
- }
202
- const target = fs.readlinkSync(current);
203
- if (path.isAbsolute(target)) {
204
- current = target;
205
- } else {
206
- let parent;
207
- try {
208
- parent = fs.realpathSync(path.dirname(current));
209
- } catch {
210
- parent = path.dirname(current);
211
- }
212
- current = path.resolve(parent, target);
213
- }
214
- }
215
- return current;
216
- }
217
- __name(resolveLeafSymlink, "resolveLeafSymlink");
218
- function realpathNearestExisting(inputPath) {
219
- const resolved = resolveLeafSymlink(inputPath);
220
- const missingSegments = [];
221
- let current = resolved;
222
- while (!fs.existsSync(current)) {
223
- const parent = path.dirname(current);
224
- if (parent === current) {
225
- return resolved;
226
- }
227
- missingSegments.unshift(path.basename(current));
228
- current = parent;
229
- }
230
- try {
231
- return path.join(fs.realpathSync(current), ...missingSegments);
232
- } catch {
233
- return resolved;
234
- }
235
- }
236
- __name(realpathNearestExisting, "realpathNearestExisting");
237
190
  function isAnyAutoMemPath(absolutePath, projectRoot) {
238
191
  return isAutoMemPath(absolutePath, projectRoot) || isUserAutoMemPath(absolutePath);
239
192
  }