@qwen-code/qwen-code 0.19.9 → 0.19.10

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 (310) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +7 -0
  2. package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -0
  3. package/bundled/qc-helper/docs/features/channels/overview.md +11 -3
  4. package/bundled/qc-helper/docs/features/code-review.md +88 -44
  5. package/bundled/qc-helper/docs/features/commands.md +6 -6
  6. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  7. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  8. package/bundled/qc-helper/docs/qwen-serve.md +46 -20
  9. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  10. package/bundled/review/DESIGN.md +219 -33
  11. package/bundled/review/SKILL.md +449 -153
  12. package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-67ODZ4SZ.js} +31 -31
  13. package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-SIPBQT5Z.js} +51 -49
  14. package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-VPZJXLFX.js} +528 -478
  15. package/chunks/{agent-HOLHB3RT.js → agent-Z7NWL6XL.js} +26 -26
  16. package/chunks/{agent-headless-SXL6H56A.js → agent-headless-73HZ6ROQ.js} +26 -26
  17. package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
  18. package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-BWZZJ42H.js} +2 -2
  19. package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-WU3S5A5T.js} +2 -2
  20. package/chunks/{bridge-BCJQ7BBB.js → bridge-XFKW6S7Q.js} +32 -32
  21. package/chunks/{ca-UJ6HC4H2.js → ca-C2JTT2N5.js} +4 -1
  22. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  23. package/chunks/channel-worker-manager-5RWKSGEU.js +418 -0
  24. package/chunks/channel-worker-supervisor-PCDAZN4D.js +20 -0
  25. package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
  26. package/chunks/{chunk-B5ORX3FG.js → chunk-2UUAIFQO.js} +1 -1
  27. package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
  28. package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
  29. package/chunks/chunk-3MX7D6QN.js +516 -0
  30. package/chunks/{chunk-E2IY465S.js → chunk-3XJFUTNM.js} +10 -10
  31. package/chunks/{chunk-JZETEN3Z.js → chunk-422XAKCK.js} +3 -3
  32. package/chunks/{chunk-N3EMS75V.js → chunk-4FMG7EDJ.js} +1268 -1233
  33. package/chunks/{chunk-HKMAENAO.js → chunk-4YWLED2A.js} +8 -6
  34. package/chunks/{chunk-SCGXUJBT.js → chunk-5EBKKSBX.js} +3 -3
  35. package/chunks/chunk-5HBA2Z7V.js +28 -0
  36. package/chunks/{chunk-XYQSMABS.js → chunk-5LROA5W4.js} +4 -4
  37. package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
  38. package/chunks/{chunk-VA4KQY6V.js → chunk-65N2J6V2.js} +3 -3
  39. package/chunks/{chunk-4C5BQ2D2.js → chunk-6GETGQWP.js} +71 -12
  40. package/chunks/{chunk-PVZM22CK.js → chunk-6GKMJPOC.js} +5 -5
  41. package/chunks/{chunk-W2UIXQDL.js → chunk-6OATMEYN.js} +1 -1
  42. package/chunks/{chunk-GZRTYZ2R.js → chunk-6W6DI34P.js} +154 -1
  43. package/chunks/{chunk-EMDMPBJ4.js → chunk-7L4XBYVW.js} +3 -3
  44. package/chunks/{chunk-EAXLGSFP.js → chunk-7MJAZMXK.js} +8 -8
  45. package/chunks/{chunk-K434OPES.js → chunk-7NAWTFVY.js} +3 -3
  46. package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
  47. package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
  48. package/chunks/{chunk-P67PFTUT.js → chunk-AAR5SGMD.js} +4 -4
  49. package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
  50. package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
  51. package/chunks/{chunk-D2GFWEXB.js → chunk-B5I2IIWY.js} +6 -6
  52. package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
  53. package/chunks/{chunk-CUMMSHH6.js → chunk-BBNVFRGD.js} +1 -1
  54. package/chunks/{chunk-5HOMWMCL.js → chunk-CEW4HDPK.js} +4166 -1338
  55. package/chunks/chunk-CJFNEBYB.js +91 -0
  56. package/chunks/{chunk-VWPVHAMO.js → chunk-CUUXANEQ.js} +5 -1
  57. package/chunks/{chunk-GWLSNBG4.js → chunk-DK33QJ3V.js} +30 -26
  58. package/chunks/{chunk-HPDUL5MF.js → chunk-DPFBNG72.js} +1 -1
  59. package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
  60. package/chunks/{chunk-MC23XKFE.js → chunk-E67NFMF4.js} +3 -3
  61. package/chunks/{chunk-OQ4DRIOA.js → chunk-EQY6POVO.js} +2 -2
  62. package/chunks/{chunk-XUOOWUZS.js → chunk-F7NXQH4Y.js} +1 -1
  63. package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
  64. package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
  65. package/chunks/{chunk-PDZ7MBDG.js → chunk-FXMC7SL2.js} +27 -6
  66. package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
  67. package/chunks/{chunk-34MW4KTI.js → chunk-GGJII3FM.js} +2 -2
  68. package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
  69. package/chunks/chunk-GYTKQYDB.js +23 -0
  70. package/chunks/{chunk-HVY356M2.js → chunk-H3FQOPPS.js} +3 -3
  71. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  72. package/chunks/{chunk-WQUQVGTF.js → chunk-HHEFI4RP.js} +183 -96
  73. package/chunks/chunk-IDS7MSUP.js +74 -0
  74. package/chunks/{chunk-6PESIEKJ.js → chunk-JSJFKYWT.js} +68 -6
  75. package/chunks/{chunk-CNEIYWSA.js → chunk-K4PZ5F5T.js} +5 -5
  76. package/chunks/{chunk-NVYTCB5Z.js → chunk-K7CRWKOE.js} +14534 -13980
  77. package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
  78. package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
  79. package/chunks/chunk-L37RC7MQ.js +493 -0
  80. package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
  81. package/chunks/{chunk-3G7CIHVV.js → chunk-L62SEJWY.js} +4 -4
  82. package/chunks/{chunk-EGYZ275M.js → chunk-LNUXFLLJ.js} +4 -4
  83. package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
  84. package/chunks/{chunk-VTU57BWZ.js → chunk-LQU7EVFA.js} +1 -1
  85. package/chunks/{chunk-B4G2WOFA.js → chunk-LTNI523B.js} +2 -2
  86. package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
  87. package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
  88. package/chunks/chunk-MR3PXB6E.js +48 -0
  89. package/chunks/{chunk-5VXNZWGF.js → chunk-N6FXRR6P.js} +1 -1
  90. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  91. package/chunks/{chunk-TO6QE22P.js → chunk-OATTJGPJ.js} +26 -22
  92. package/chunks/{chunk-X6TJ3YZV.js → chunk-OFEVHGVU.js} +159 -57
  93. package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
  94. package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
  95. package/chunks/{chunk-3VAGG5T5.js → chunk-P6LART6G.js} +116 -15
  96. package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
  97. package/chunks/{chunk-BAPGSC7U.js → chunk-Q5GLXH5Q.js} +23 -9
  98. package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
  99. package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
  100. package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
  101. package/chunks/{chunk-YAUFFXDS.js → chunk-RDRVMDWV.js} +12 -11
  102. package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
  103. package/chunks/{chunk-U2NNEY4R.js → chunk-SPUYQB4T.js} +1 -1
  104. package/chunks/{chunk-34Z3U5RQ.js → chunk-SXU3KKNI.js} +514 -114
  105. package/chunks/{chunk-ECNYL4AA.js → chunk-TISZXPAX.js} +1 -1
  106. package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
  107. package/chunks/{chunk-AKIVHSJR.js → chunk-TTUO4DNG.js} +111 -93
  108. package/chunks/chunk-TV6K2FB4.js +224 -0
  109. package/chunks/{chunk-4GORAUCN.js → chunk-TXY2C3D2.js} +1 -1
  110. package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
  111. package/chunks/{chunk-CLFKOZEK.js → chunk-UFOKA4PR.js} +1 -1
  112. package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-URU5UEK6.js} +67 -35
  113. package/chunks/{chunk-D5SKC4YG.js → chunk-V7EQTZYR.js} +41 -13
  114. package/chunks/{chunk-L6P4KPHR.js → chunk-VBRRNQB7.js} +59 -39
  115. package/chunks/{chunk-BMGVRZN4.js → chunk-W34A5MJH.js} +1 -1
  116. package/chunks/{chunk-PODM4SZ4.js → chunk-WDW64OW3.js} +5 -5
  117. package/chunks/{chunk-W3JHSWRP.js → chunk-WDWJ4OQJ.js} +4 -4
  118. package/chunks/{chunk-Q4YQW46J.js → chunk-WIASPMLX.js} +31 -17
  119. package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
  120. package/chunks/{chunk-A3XKDTSH.js → chunk-WLXYAKV7.js} +4 -4
  121. package/chunks/{chunk-Q6I5QHMH.js → chunk-WTSXKLG5.js} +1 -1
  122. package/chunks/{chunk-J3JA76CF.js → chunk-WX6SD4IQ.js} +1 -1
  123. package/chunks/{chunk-77XJ3SWN.js → chunk-X362TMXZ.js} +5 -5
  124. package/chunks/{chunk-CCDMCZPP.js → chunk-XLIRF7IK.js} +1 -1
  125. package/chunks/{chunk-AURZZYMD.js → chunk-XXJKGHZV.js} +4 -4
  126. package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
  127. package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
  128. package/chunks/{chunk-3AHXV67U.js → chunk-YU56QGXX.js} +1 -1
  129. package/chunks/{chunk-5U27BZ72.js → chunk-YX4LLZ3D.js} +187 -75
  130. package/chunks/{chunk-ATAKVRIF.js → chunk-YYPXHMWO.js} +7 -7
  131. package/chunks/{chunk-XLA62MYB.js → chunk-ZKMGAFYV.js} +2 -2
  132. package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
  133. package/chunks/{chunk-7PU4FYLG.js → chunk-ZQTZXVHP.js} +4 -4
  134. package/chunks/chunk-ZRKBI3DP.js +34 -0
  135. package/chunks/{computer-use-HM37RX6A.js → computer-use-IYTX45WA.js} +26 -26
  136. package/chunks/{config-utils-NV2SVGPB.js → config-utils-CFT33LTP.js} +3 -2
  137. package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-272V77WU.js} +28 -28
  138. package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-CBJMQLYP.js} +26 -26
  139. package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-WNX2OQVX.js} +2 -2
  140. package/chunks/{cron-create-AMBKGZX6.js → cron-create-36TIFKRT.js} +4 -4
  141. package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-OQD3WULU.js} +4 -4
  142. package/chunks/{cron-list-WVP2JXER.js → cron-list-4533T2FH.js} +4 -4
  143. package/chunks/{daemon-ARHTSTXP.js → daemon-RNGFPMAB.js} +575 -58
  144. package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-L4STG5VO.js} +36 -36
  145. package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
  146. package/chunks/{dist-VHV4EVHG.js → dist-3V3ZV6ML.js} +1 -1
  147. package/chunks/{dist-XKU3ABM5.js → dist-ERCPDVA6.js} +1 -1
  148. package/chunks/{dist-PNVLTKTL.js → dist-HNN7DR2L.js} +158 -4
  149. package/chunks/{dist-WKPOYU7O.js → dist-JZE7F6YR.js} +1 -1
  150. package/chunks/{dist-QYCAEZIT.js → dist-MOEC47TR.js} +5 -1
  151. package/chunks/{dist-R7LN5AZE.js → dist-PHEPJLXD.js} +2 -2
  152. package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-EN4BRREQ.js} +27 -27
  153. package/chunks/{edit-VNI4NJ73.js → edit-OMAF2QDR.js} +27 -27
  154. package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
  155. package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-BBZX52HG.js} +26 -26
  156. package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-5NNFMBUY.js} +42 -27
  157. package/chunks/{environment-5HSSRMJ7.js → environment-7TEWMJYN.js} +30 -29
  158. package/chunks/{errors-HMFCJJ7P.js → errors-I4VKVX3F.js} +28 -28
  159. package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-FUWRJI33.js} +26 -26
  160. package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-IHCJ5EEI.js} +26 -26
  161. package/chunks/{fast-path-FRDMDVHG.js → fast-path-ZA57TOH4.js} +3 -3
  162. package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
  163. package/chunks/{fr-YXRABLYZ.js → fr-5F3E7WKD.js} +4 -1
  164. package/chunks/{gemini-QYSEGHAX.js → gemini-UOAKVXBG.js} +139 -76
  165. package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-G6UCE6MW.js} +4 -4
  166. package/chunks/{glob-BRCSGFOT.js → glob-4GJQ2UFF.js} +28 -27
  167. package/chunks/{grep-EE2DUOSY.js → grep-5QSYXF2E.js} +26 -26
  168. package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-ULHNWL6R.js} +30 -30
  169. package/chunks/{i18n-BASPENNQ.js → i18n-CYDUTF6F.js} +27 -27
  170. package/chunks/initializer-NRFKUGIO.js +73 -0
  171. package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-WELKRHHE.js} +27 -27
  172. package/chunks/{ja-7VQOANVG.js → ja-66J6B53L.js} +5 -2
  173. package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
  174. package/chunks/list-JVDXEG2E.js +76 -0
  175. package/chunks/loadedSettingsAdapter-WAM4VUTG.js +70 -0
  176. package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-MVUKDVCP.js} +5 -5
  177. package/chunks/{ls-ZB2BDP6T.js → ls-RXNIAQDE.js} +4 -4
  178. package/chunks/{lsp-V5DN4YUJ.js → lsp-HB5LM5IL.js} +2 -2
  179. package/chunks/mcp-YHOZN3ZM.js +70 -0
  180. package/chunks/{monitor-X5Z3H4FY.js → monitor-R7XZPJHQ.js} +26 -26
  181. package/chunks/nonInteractiveCli-NSOB6D74.js +129 -0
  182. package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-6RNKE2L2.js} +27 -27
  183. package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-XNS5S64I.js} +12 -12
  184. package/chunks/{pidfile-D4I4FTVA.js → pidfile-XE4RRR2P.js} +27 -27
  185. package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
  186. package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-APDPJ3VN.js} +28 -28
  187. package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  188. package/chunks/{read-file-7SZSIZOL.js → read-file-XSUWXSR7.js} +8 -8
  189. package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-6LRTZKXI.js} +2 -2
  190. package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-PMDTY4OS.js} +2 -2
  191. package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-APB3CDMU.js} +26 -26
  192. package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
  193. package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-NWTGPERT.js} +1232 -371
  194. package/chunks/{runtime-57WWRVHN.js → runtime-EIO3NQKR.js} +42 -37
  195. package/chunks/{scheduler-YBLGWSIL.js → scheduler-JJDZBDRN.js} +26 -26
  196. package/chunks/{send-message-F36YD6KQ.js → send-message-SR4WSXP2.js} +3 -3
  197. package/chunks/{serve-R63NK3CV.js → serve-WTIPB3EI.js} +36 -34
  198. package/chunks/{server-Z22GCAXP.js → server-NJPHQHLH.js} +5238 -1328
  199. package/chunks/{session-HKAAI7BN.js → session-O4AO7FTS.js} +298 -98
  200. package/chunks/{settings-3EYN66GK.js → settings-HQNDK7TG.js} +34 -32
  201. package/chunks/{shell-6YXINTWJ.js → shell-UIXM6PWG.js} +26 -26
  202. package/chunks/{skill-OO57P4X6.js → skill-3XMB4ULV.js} +10 -10
  203. package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-3R632QRM.js} +28 -28
  204. package/chunks/{src-G5UPLZSZ.js → src-USZKPUOC.js} +85 -27
  205. package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-L5XW3D7K.js} +28 -28
  206. package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-CPZOL2WB.js} +730 -397
  207. package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-YKFNUQZD.js} +3 -3
  208. package/chunks/{task-create-FRGOEIKY.js → task-create-NUFOHU53.js} +8 -7
  209. package/chunks/{task-list-OW766BXZ.js → task-list-Z2IKQY3S.js} +6 -5
  210. package/chunks/{task-stop-SIR5SNBN.js → task-stop-KQFIVQTJ.js} +2 -2
  211. package/chunks/{task-update-YRA532MT.js → task-update-HKADXSTD.js} +8 -7
  212. package/chunks/{team-create-PECAAPXK.js → team-create-XXPRF3IQ.js} +26 -26
  213. package/chunks/{team-delete-6OSECUZC.js → team-delete-SDNTGZLG.js} +6 -5
  214. package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-EOTTKHDW.js} +26 -26
  215. package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-P6UITO2L.js} +27 -27
  216. package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-YNXB27GB.js} +4 -4
  217. package/chunks/{tool-search-THVIWAPB.js → tool-search-DDNGK2LR.js} +9 -9
  218. package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-PL5N7DNY.js} +33 -33
  219. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  220. package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-C5LMF3UR.js} +29 -28
  221. package/chunks/types-ML3TRJQ5.js +16 -0
  222. package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-QTVVISH7.js} +29 -29
  223. package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-RY4RKBQG.js} +75 -71
  224. package/chunks/{version-3UEA6ZIR.js → version-U45RYOSD.js} +1 -1
  225. package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-ZSPR3PRR.js} +5 -5
  226. package/chunks/{workflow-QCCCMYP3.js → workflow-TCIAQYOA.js} +27 -27
  227. package/chunks/workspace-providers-status-I3G2HYLY.js +73 -0
  228. package/chunks/workspace-registration-store-IH5GLZ6Y.js +27 -0
  229. package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QEKBELIX.js} +33 -33
  230. package/chunks/workspace-service-ORKHGLP3.js +86 -0
  231. package/chunks/workspace-skills-status-D7QCNDYY.js +72 -0
  232. package/chunks/{write-file-I3MUDRIE.js → write-file-JGRQR5VM.js} +27 -27
  233. package/chunks/{zh-RQE7I22T.js → zh-FSAH32JB.js} +6 -2
  234. package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-D2YIE2LO.js} +6 -2
  235. package/cli.js +11 -11
  236. package/locales/ca.js +6 -0
  237. package/locales/de.js +6 -0
  238. package/locales/en.js +8 -0
  239. package/locales/fr.js +6 -0
  240. package/locales/ja.js +7 -1
  241. package/locales/pt.js +6 -0
  242. package/locales/ru.js +6 -0
  243. package/locales/zh-TW.js +9 -1
  244. package/locales/zh.js +9 -1
  245. package/package.json +3 -3
  246. package/web-shell/assets/{arc-C15hqnJe.js → arc-CUeDlxvE.js} +1 -1
  247. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
  248. package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
  249. package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
  250. package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
  251. package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
  252. package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
  253. package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
  254. package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
  255. package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
  256. package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
  257. package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
  258. package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
  259. package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
  260. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
  261. package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
  262. package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
  263. package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
  264. package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
  265. package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
  266. package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
  267. package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
  268. package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
  269. package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
  270. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +3 -3
  271. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
  272. package/web-shell/assets/index-Cnvv4VcI.css +5 -0
  273. package/web-shell/assets/index-D1Uyklxa.js +1088 -0
  274. package/web-shell/assets/index-DzHwQkQq.js +3 -0
  275. package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
  276. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
  277. package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
  278. package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
  279. package/web-shell/assets/{linear-C8wKCbIC.js → linear-atZRE_L2.js} +1 -1
  280. package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-KKudX-JC.js} +5 -5
  281. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
  282. package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
  283. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
  284. package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
  285. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
  286. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
  287. package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
  288. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
  289. package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
  290. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
  291. package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
  292. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
  293. package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-crz0QhF_.js} +1 -1
  294. package/web-shell/index.html +2 -2
  295. package/chunks/chunk-CU3L64TP.js +0 -93
  296. package/chunks/initializer-UTQ7FB7G.js +0 -71
  297. package/chunks/list-DEICDL65.js +0 -74
  298. package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
  299. package/chunks/mcp-L5JXEEIA.js +0 -68
  300. package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
  301. package/chunks/types-JNKGKUJT.js +0 -12
  302. package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
  303. package/chunks/workspace-service-RVLBMSMZ.js +0 -80
  304. package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
  305. package/web-shell/assets/channel-CLiQD50f.js +0 -1
  306. package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
  307. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
  308. package/web-shell/assets/index-D5IWFVk1.css +0 -5
  309. package/web-shell/assets/index-KFJRDhX7.js +0 -783
  310. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
@@ -2,28 +2,33 @@
2
2
  "use strict";
3
3
  import {
4
4
  CHANNEL_DAEMON_WORKER_SENTINEL,
5
- CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
6
5
  CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
7
- ChannelWebhookEnqueueError,
8
6
  QWEN_DAEMON_TOKEN_ENV,
9
7
  QWEN_DAEMON_URL_ENV,
10
8
  QWEN_DAEMON_WORKSPACE_ENV,
11
- QWEN_SERVER_TOKEN_ENV,
12
- createChannelWebhookTaskMessage,
13
- isChannelWebhookEnqueueErrorCode,
14
- isChannelWebhookTaskResultMessage
15
- } from "./chunk-X4NKFGFJ.js";
9
+ QWEN_SERVER_TOKEN_ENV
10
+ } from "./chunk-GYTKQYDB.js";
16
11
  import {
17
12
  channelSelectionNames
18
13
  } from "./chunk-TJTKSVIV.js";
19
14
  import {
20
15
  redactLogCredentials
21
16
  } from "./chunk-M5GB774H.js";
17
+ import {
18
+ CHANNEL_WORKER_KILL_GRACE_MS,
19
+ CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
20
+ CHANNEL_WORKER_STOP_GRACE_MS
21
+ } from "./chunk-5HBA2Z7V.js";
22
+ import {
23
+ CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
24
+ ChannelWebhookEnqueueError,
25
+ createChannelWebhookTaskMessage,
26
+ isChannelWebhookEnqueueErrorCode,
27
+ isChannelWebhookTaskResultMessage
28
+ } from "./chunk-OJAMDVF5.js";
22
29
  import {
23
30
  sanitizeLogText
24
- } from "./chunk-34Z3U5RQ.js";
25
- import "./chunk-UDXSXLER.js";
26
- import "./chunk-H6XPXXMH.js";
31
+ } from "./chunk-SXU3KKNI.js";
27
32
  import {
28
33
  init_esbuild_shims
29
34
  } from "./chunk-5O2XNYP6.js";
@@ -35,9 +40,7 @@ import {
35
40
  init_esbuild_shims();
36
41
  import { fork } from "node:child_process";
37
42
  import { randomUUID } from "node:crypto";
38
- var DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS = 3e4;
39
43
  var DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS = 45e3;
40
- var CHANNEL_WORKER_STOP_GRACE_MS = 1e4;
41
44
  var MAX_WORKER_LOG_LINE_LENGTH = 4096;
42
45
  var MAX_WORKER_LOG_BUFFER_LENGTH = 64 * 1024;
43
46
  var MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH = MAX_WORKER_LOG_BUFFER_LENGTH;
@@ -47,6 +50,15 @@ var ANSI_CSI_SEQUENCE_RE = new RegExp(
47
50
  );
48
51
  var WORKER_LOG_INVISIBLE_RE = new RegExp("[\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
49
52
  var WORKER_LOG_CONTROL_RE = /[\x00-\x08\x0a-\x1f\x7f]/g;
53
+ var ChannelWorkerStopError = class extends Error {
54
+ static {
55
+ __name(this, "ChannelWorkerStopError");
56
+ }
57
+ constructor(message = "Channel worker did not exit after SIGKILL.") {
58
+ super(message);
59
+ this.name = "ChannelWorkerStopError";
60
+ }
61
+ };
50
62
  var DEFAULT_RESTART_POLICY = {
51
63
  maxRestarts: 3,
52
64
  windowMs: 5 * 6e4,
@@ -118,15 +130,17 @@ __name(notifyLog, "notifyLog");
118
130
  function waitForExit(child, timeoutMs) {
119
131
  return new Promise((resolve) => {
120
132
  let settled = false;
133
+ const onExit = /* @__PURE__ */ __name(() => done(true), "onExit");
121
134
  const done = /* @__PURE__ */ __name((exited) => {
122
135
  if (settled) return;
123
136
  settled = true;
124
- if (timer) clearTimeout(timer);
137
+ clearTimeout(timer);
138
+ child.removeListener("exit", onExit);
125
139
  resolve(exited);
126
140
  }, "done");
127
141
  const timer = setTimeout(() => done(false), timeoutMs);
128
142
  timer.unref();
129
- child.once("exit", () => done(true));
143
+ child.once("exit", onExit);
130
144
  });
131
145
  }
132
146
  __name(waitForExit, "waitForExit");
@@ -135,7 +149,7 @@ function hasObservedExit(snapshot) {
135
149
  }
136
150
  __name(hasObservedExit, "hasObservedExit");
137
151
  function createWorkerEnv(opts) {
138
- const env = { ...process.env };
152
+ const env = { ...opts.baseEnv ?? process.env };
139
153
  env["QWEN_CODE_NO_RELAUNCH"] = "true";
140
154
  env[CHANNEL_DAEMON_WORKER_SENTINEL] = randomUUID();
141
155
  env[QWEN_DAEMON_URL_ENV] = opts.daemonUrl;
@@ -428,7 +442,8 @@ function createChannelWorkerSupervisor(opts) {
428
442
  const env = createWorkerEnv({
429
443
  daemonUrl: opts.daemonUrl,
430
444
  workspace: opts.workspace,
431
- ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {}
445
+ ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {},
446
+ ...opts.workerBaseEnv ? { baseEnv: opts.workerBaseEnv } : {}
432
447
  });
433
448
  const redaction = workerLogRedactionOptions(opts.daemonToken, env);
434
449
  const requestedChannels = requestedChannelNames(opts.selection);
@@ -507,18 +522,27 @@ function createChannelWorkerSupervisor(opts) {
507
522
  cleanupLaunch();
508
523
  if (terminatingBeforeReady) return;
509
524
  terminatingBeforeReady = true;
510
- const exited = waitForExit(startedChild, 2e3);
525
+ const exited = waitForExit(startedChild, CHANNEL_WORKER_KILL_GRACE_MS);
511
526
  startedChild.kill("SIGTERM");
512
527
  void exited.then(async (didExit) => {
513
528
  if (!didExit && child === startedChild && !exitObserved) {
514
- const killed = waitForExit(startedChild, 2e3);
529
+ const killed = waitForExit(
530
+ startedChild,
531
+ CHANNEL_WORKER_KILL_GRACE_MS
532
+ );
515
533
  startedChild.kill("SIGKILL");
516
534
  if (!await killed && child === startedChild && !exitObserved) {
517
- child = void 0;
518
- if (kind === "restart" && !stopping) {
519
- scheduleRestart();
520
- notifyExit(opts.onExit, snapshotCopy());
521
- }
535
+ stopping = true;
536
+ notifyLog(opts.onLog, {
537
+ stream: "stderr",
538
+ line: "Channel worker did not exit after SIGKILL; automatic restart is disabled."
539
+ });
540
+ snapshot = {
541
+ ...snapshot,
542
+ state: "failed",
543
+ error: snapshot.error ?? "Channel worker did not exit after SIGKILL."
544
+ };
545
+ notifyExit(opts.onExit, snapshotCopy());
522
546
  }
523
547
  }
524
548
  });
@@ -628,7 +652,7 @@ function createChannelWorkerSupervisor(opts) {
628
652
  }
629
653
  __name(settleError, "settleError");
630
654
  startupTimer = setTimeout(() => {
631
- const timeoutMs = opts.startupTimeoutMs ?? DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
655
+ const timeoutMs = opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
632
656
  const error = `Channel worker did not become ready within ${timeoutMs}ms.`;
633
657
  snapshot = {
634
658
  ...snapshot,
@@ -639,7 +663,7 @@ function createChannelWorkerSupervisor(opts) {
639
663
  if (child === startedChild) {
640
664
  terminateBeforeReady();
641
665
  }
642
- }, opts.startupTimeoutMs ?? DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
666
+ }, opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
643
667
  startupTimer.unref();
644
668
  startedChild.on("message", handleMessage);
645
669
  startedChild.once("exit", settleExit);
@@ -648,7 +672,15 @@ function createChannelWorkerSupervisor(opts) {
648
672
  }, "launch");
649
673
  const supervisor = {
650
674
  async start() {
651
- if (disposed || child) return;
675
+ if (disposed) return;
676
+ if (child) {
677
+ if (stopping) {
678
+ throw new ChannelWorkerStopError(
679
+ "Channel worker stop is not yet confirmed."
680
+ );
681
+ }
682
+ return;
683
+ }
652
684
  stopping = false;
653
685
  clearRestartTimer();
654
686
  restartAttemptTimes = [];
@@ -666,22 +698,20 @@ function createChannelWorkerSupervisor(opts) {
666
698
  snapshot = { ...snapshot, state: "stopped" };
667
699
  return;
668
700
  }
669
- const exited = waitForExit(child, CHANNEL_WORKER_STOP_GRACE_MS);
701
+ const stoppingChild = child;
702
+ const exited = waitForExit(stoppingChild, CHANNEL_WORKER_STOP_GRACE_MS);
670
703
  stopping = true;
671
- child.kill("SIGTERM");
672
- if (!await exited) {
673
- const killed = waitForExit(child, 2e3);
674
- child.kill("SIGKILL");
704
+ stoppingChild.kill("SIGTERM");
705
+ if (!await exited && child === stoppingChild) {
706
+ const killed = waitForExit(stoppingChild, CHANNEL_WORKER_KILL_GRACE_MS);
707
+ stoppingChild.kill("SIGKILL");
675
708
  if (!await killed) {
676
- child = void 0;
677
- stopping = false;
678
709
  snapshot = {
679
710
  ...snapshot,
680
711
  state: "failed",
681
- signal: "SIGKILL",
682
712
  error: "Channel worker did not exit after SIGKILL."
683
713
  };
684
- return;
714
+ throw new ChannelWorkerStopError();
685
715
  }
686
716
  }
687
717
  child = void 0;
@@ -784,6 +814,8 @@ function createChannelWorkerSupervisor(opts) {
784
814
  return supervisor;
785
815
  }
786
816
  __name(createChannelWorkerSupervisor, "createChannelWorkerSupervisor");
817
+
787
818
  export {
819
+ ChannelWorkerStopError,
788
820
  createChannelWorkerSupervisor
789
821
  };
@@ -1,14 +1,15 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
+ InvalidStreamError,
4
5
  OpenAIContentConverter,
5
6
  TaggedThinkingParser,
6
7
  getRateLimitErrorDetails,
7
8
  openaiRequestCaptureContext
8
- } from "./chunk-3VAGG5T5.js";
9
+ } from "./chunk-P6LART6G.js";
9
10
  import {
10
11
  RequestTokenizer
11
- } from "./chunk-SJHDYNHF.js";
12
+ } from "./chunk-GDQQRV43.js";
12
13
  import {
13
14
  DASHSCOPE_PROXY_BASE_URL,
14
15
  DEFAULT_DASHSCOPE_BASE_URL,
@@ -22,11 +23,11 @@ import {
22
23
  reconcileMaxTokens,
23
24
  resolveRequestTimeout,
24
25
  tokenLimit
25
- } from "./chunk-524RQP4Q.js";
26
+ } from "./chunk-B7NUUEXC.js";
26
27
  import {
27
28
  runtimeDiagnostics,
28
29
  safeJsonParse
29
- } from "./chunk-JSG7ZSBC.js";
30
+ } from "./chunk-TQBODCFD.js";
30
31
  import {
31
32
  GenerateContentResponse
32
33
  } from "./chunk-4LD5APFL.js";
@@ -36,13 +37,13 @@ import {
36
37
  import {
37
38
  buildRuntimeFetchOptions,
38
39
  redactProxyError
39
- } from "./chunk-4ZVWQHEQ.js";
40
+ } from "./chunk-LQIDP6K5.js";
40
41
  import {
41
42
  createDebugLogger,
42
43
  getErrorStatus,
43
44
  getErrorType,
44
45
  isAbortError
45
- } from "./chunk-J4TSQ5EQ.js";
46
+ } from "./chunk-7NFB7LBQ.js";
46
47
  import {
47
48
  init_esbuild_shims
48
49
  } from "./chunk-5O2XNYP6.js";
@@ -7788,6 +7789,7 @@ var StreamingToolCallParser = class {
7788
7789
  escapes = /* @__PURE__ */ new Map();
7789
7790
  /** Metadata for each tool call index */
7790
7791
  toolCallMeta = /* @__PURE__ */ new Map();
7792
+ namelessToolCallIndices = /* @__PURE__ */ new Set();
7791
7793
  /** Map from tool call ID to actual index used for storage */
7792
7794
  idToIndexMap = /* @__PURE__ */ new Map();
7793
7795
  /** Counter for generating new indices when collisions occur */
@@ -7809,8 +7811,16 @@ var StreamingToolCallParser = class {
7809
7811
  * @returns ToolCallParseResult with completion status, parsed value, and repair info
7810
7812
  */
7811
7813
  addChunk(index, chunk, id, name) {
7814
+ if (!id && !name && !chunk.trim()) {
7815
+ const depth2 = this.depths.get(index) ?? 0;
7816
+ const inString2 = this.inStrings.get(index) ?? false;
7817
+ if (!this.buffers.has(index) || depth2 === 0 && !inString2) {
7818
+ return { complete: false };
7819
+ }
7820
+ }
7812
7821
  let actualIndex = index;
7813
7822
  const isKnownId = Boolean(id && this.idToIndexMap.has(id));
7823
+ const isNameOnlyDelta = Boolean(name && chunk.length === 0);
7814
7824
  if (id) {
7815
7825
  if (this.idToIndexMap.has(id)) {
7816
7826
  actualIndex = this.idToIndexMap.get(id);
@@ -7835,7 +7845,7 @@ var StreamingToolCallParser = class {
7835
7845
  }
7836
7846
  this.idToIndexMap.set(id, actualIndex);
7837
7847
  }
7838
- } else {
7848
+ } else if (!isNameOnlyDelta) {
7839
7849
  if (this.buffers.has(index)) {
7840
7850
  const existingBuffer = this.buffers.get(index);
7841
7851
  const existingDepth = this.depths.get(index);
@@ -7860,6 +7870,17 @@ var StreamingToolCallParser = class {
7860
7870
  }
7861
7871
  const currentBuffer = this.buffers.get(actualIndex);
7862
7872
  const currentDepth = this.depths.get(actualIndex);
7873
+ const meta = this.toolCallMeta.get(actualIndex);
7874
+ if (chunk.length === 0 && (id || name)) {
7875
+ if (id) meta.id = id;
7876
+ if (name && !meta.name) meta.name = name;
7877
+ if (!meta.name && meta.id) {
7878
+ this.namelessToolCallIndices.add(actualIndex);
7879
+ } else {
7880
+ this.namelessToolCallIndices.delete(actualIndex);
7881
+ }
7882
+ return { complete: false };
7883
+ }
7863
7884
  if (isKnownId && currentDepth === 0) {
7864
7885
  if (currentBuffer.trim()) {
7865
7886
  try {
@@ -7870,20 +7891,19 @@ var StreamingToolCallParser = class {
7870
7891
  return { complete: false };
7871
7892
  } catch {
7872
7893
  }
7873
- } else if (this.toolCallMeta.get(actualIndex)?.name && name && !chunk.trim()) {
7874
- debugLogger3.debug(
7875
- `Ignoring replayed opener for no-argument toolCall id=${id}`
7876
- );
7877
- return { complete: false };
7878
7894
  }
7879
7895
  }
7880
- const meta = this.toolCallMeta.get(actualIndex);
7881
7896
  if (id) meta.id = id;
7882
7897
  if (name) meta.name = name;
7883
7898
  const currentInString = this.inStrings.get(actualIndex);
7884
7899
  const currentEscape = this.escapes.get(actualIndex);
7885
7900
  const newBuffer = currentBuffer + chunk;
7886
7901
  this.buffers.set(actualIndex, newBuffer);
7902
+ if (!meta.name && (meta.id || /\S/.test(newBuffer))) {
7903
+ this.namelessToolCallIndices.add(actualIndex);
7904
+ } else {
7905
+ this.namelessToolCallIndices.delete(actualIndex);
7906
+ }
7887
7907
  let depth = currentDepth;
7888
7908
  let inString = currentInString;
7889
7909
  let escape2 = currentEscape;
@@ -7933,6 +7953,9 @@ var StreamingToolCallParser = class {
7933
7953
  getToolCallMeta(index) {
7934
7954
  return this.toolCallMeta.get(index) || {};
7935
7955
  }
7956
+ hasNamelessToolCall() {
7957
+ return this.namelessToolCallIndices.size > 0;
7958
+ }
7936
7959
  /**
7937
7960
  * Gets all completed tool calls that are ready to be emitted
7938
7961
  *
@@ -8064,6 +8087,7 @@ var StreamingToolCallParser = class {
8064
8087
  this.inStrings.set(index, false);
8065
8088
  this.escapes.set(index, false);
8066
8089
  this.toolCallMeta.set(index, {});
8090
+ this.namelessToolCallIndices.delete(index);
8067
8091
  }
8068
8092
  /**
8069
8093
  * Resets the entire parser state for processing a new stream
@@ -8078,6 +8102,7 @@ var StreamingToolCallParser = class {
8078
8102
  this.inStrings.clear();
8079
8103
  this.escapes.clear();
8080
8104
  this.toolCallMeta.clear();
8105
+ this.namelessToolCallIndices.clear();
8081
8106
  this.idToIndexMap.clear();
8082
8107
  this.nextAvailableIndex = 0;
8083
8108
  }
@@ -8450,6 +8475,9 @@ var ContentGenerationPipeline = class {
8450
8475
  yield pendingFinishResponse;
8451
8476
  }
8452
8477
  } catch (error) {
8478
+ if (error instanceof InvalidStreamError) {
8479
+ throw error;
8480
+ }
8453
8481
  if (error instanceof StreamContentError) {
8454
8482
  throw redactProxyError(error);
8455
8483
  }
@@ -1,14 +1,18 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- handleAtCommand
5
- } from "./chunk-77XJ3SWN.js";
4
+ settleChatRecording,
5
+ subscribeToHeadlessChatRecordingFailures
6
+ } from "./chunk-CJFNEBYB.js";
6
7
  import {
7
8
  JsonOutputAdapter
8
- } from "./chunk-XUOOWUZS.js";
9
+ } from "./chunk-F7NXQH4Y.js";
9
10
  import {
10
11
  StreamJsonOutputAdapter
11
- } from "./chunk-B4G2WOFA.js";
12
+ } from "./chunk-LTNI523B.js";
13
+ import {
14
+ handleAtCommand
15
+ } from "./chunk-X362TMXZ.js";
12
16
  import {
13
17
  buildInitialSystemReminders,
14
18
  buildSystemMessage,
@@ -20,10 +24,10 @@ import {
20
24
  insertAfterFunctionResponses,
21
25
  isSlashCommand,
22
26
  normalizePartList
23
- } from "./chunk-5U27BZ72.js";
27
+ } from "./chunk-YX4LLZ3D.js";
24
28
  import {
25
29
  RunBudgetEnforcer
26
- } from "./chunk-5HOMWMCL.js";
30
+ } from "./chunk-CEW4HDPK.js";
27
31
  import {
28
32
  AlreadyReportedError,
29
33
  handleBudgetExceededError,
@@ -31,17 +35,15 @@ import {
31
35
  handleError,
32
36
  handleMaxTurnsExceededError,
33
37
  handleToolError
34
- } from "./chunk-VA4KQY6V.js";
38
+ } from "./chunk-65N2J6V2.js";
35
39
  import {
36
40
  isInlineModelOverrideAllowed
37
- } from "./chunk-34MW4KTI.js";
41
+ } from "./chunk-GGJII3FM.js";
38
42
  import {
39
- ORPHAN_TOOL_USE_REPAIR_REASON,
40
- buildSyntheticToolResponseParts,
43
+ buildSessionRecoveryPlanFromApiHistory,
41
44
  createDuplicateProviderToolCallResponse,
42
45
  detectAutonomousSentinel,
43
46
  detectLoopSentinel,
44
- detectTurnInterruption,
45
47
  executeToolCall,
46
48
  findRepeatedDuplicateProviderToolCall,
47
49
  isSystemReminderContent,
@@ -49,19 +51,19 @@ import {
49
51
  parseAndFormatApiError,
50
52
  promptIdContext,
51
53
  restoreWorktreeContext
52
- } from "./chunk-NVYTCB5Z.js";
54
+ } from "./chunk-K7CRWKOE.js";
53
55
  import {
54
56
  isTelemetrySdkInitialized,
55
57
  shutdownTelemetry,
56
58
  uiTelemetryService
57
- } from "./chunk-3VAGG5T5.js";
59
+ } from "./chunk-P6LART6G.js";
58
60
  import {
59
61
  ToolNames
60
- } from "./chunk-B5ORX3FG.js";
62
+ } from "./chunk-2UUAIFQO.js";
61
63
  import {
62
64
  FatalInputError,
63
65
  createDebugLogger
64
- } from "./chunk-J4TSQ5EQ.js";
66
+ } from "./chunk-7NFB7LBQ.js";
65
67
  import {
66
68
  init_esbuild_shims
67
69
  } from "./chunk-5O2XNYP6.js";
@@ -140,6 +142,7 @@ async function emitNonInteractiveFinalMessage(params) {
140
142
  const usage = computeUsageFromMetrics(metrics);
141
143
  const outputFormat = config.getOutputFormat();
142
144
  const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
145
+ await params.beforeEmit();
143
146
  adapter.emitResult({
144
147
  isError,
145
148
  durationMs: Date.now() - params.startTimeMs,
@@ -166,7 +169,17 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
166
169
  } else {
167
170
  adapter = new JsonOutputAdapter(config);
168
171
  }
169
- const emitResult = /* @__PURE__ */ __name((result) => {
172
+ const ownsAdapter = options.adapter === void 0;
173
+ const unsubscribeRecordingFailure = ownsAdapter ? subscribeToHeadlessChatRecordingFailures(config, adapter) : void 0;
174
+ let chatRecordingSettlement;
175
+ const settleBeforeTerminalOutput = /* @__PURE__ */ __name(() => {
176
+ chatRecordingSettlement ??= settleChatRecording(config, {
177
+ finalize: ownsAdapter
178
+ }).then(() => void 0);
179
+ return chatRecordingSettlement;
180
+ }, "settleBeforeTerminalOutput");
181
+ const emitResult = /* @__PURE__ */ __name(async (result) => {
182
+ await settleBeforeTerminalOutput();
170
183
  adapter.emitResult(result);
171
184
  options.onResultEmitted?.();
172
185
  }, "emitResult");
@@ -186,6 +199,7 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
186
199
  );
187
200
  budgetEnforcer.start();
188
201
  const routeAbort = /* @__PURE__ */ __name(async () => {
202
+ await settleBeforeTerminalOutput();
189
203
  const exceeded = budgetEnforcer.getExceeded();
190
204
  if (exceeded) {
191
205
  await handleBudgetExceededError(config, exceeded);
@@ -306,32 +320,30 @@ ${reason}
306
320
  );
307
321
  let inlineModelOverride;
308
322
  if (options.continueInterrupted) {
309
- const detection = detectTurnInterruption(
310
- geminiClient.getChat().getHistory()
311
- );
312
- debugLogger.info("[runNonInteractive] continueInterrupted detection", {
313
- kind: detection.kind,
314
- partsCount: detection.kind === "interrupted_prompt" ? detection.parts.length : 0,
315
- danglingCallCount: detection.kind === "interrupted_turn" ? detection.danglingCalls.length : 0
323
+ const recoveryPlan = buildSessionRecoveryPlanFromApiHistory({
324
+ sessionId,
325
+ apiHistory: geminiClient.getChat().getHistory()
326
+ });
327
+ debugLogger.info("[runNonInteractive] continueInterrupted recovery", {
328
+ kind: recoveryPlan.kind,
329
+ repairs: recoveryPlan.repairs,
330
+ hasContinuation: recoveryPlan.continuation !== void 0
316
331
  });
317
- if (detection.kind === "none") {
332
+ if (!recoveryPlan.continuation) {
318
333
  await emitNonInteractiveFinalMessage({
319
334
  message: "No interrupted turn to continue.",
320
335
  isError: false,
321
336
  adapter,
322
337
  config,
323
- startTimeMs: startTime
338
+ startTimeMs: startTime,
339
+ beforeEmit: settleBeforeTerminalOutput
324
340
  });
325
341
  return 0;
326
342
  }
327
- if (detection.kind === "interrupted_prompt") {
328
- initialPartList = detection.parts;
343
+ initialPartList = recoveryPlan.continuation.parts;
344
+ if (recoveryPlan.continuation.mode === "retry_user_parts") {
329
345
  continueSendType = "retry" /* Retry */;
330
346
  } else {
331
- initialPartList = buildSyntheticToolResponseParts(
332
- detection.danglingCalls,
333
- ORPHAN_TOOL_USE_REPAIR_REASON
334
- );
335
347
  continueSendType = "toolResult" /* ToolResult */;
336
348
  }
337
349
  const reminderParts = buildInitialSystemReminders(config);
@@ -381,7 +393,8 @@ ${reason}
381
393
  isError: slashCommandResult.messageType === "error",
382
394
  adapter,
383
395
  config,
384
- startTimeMs: startTime
396
+ startTimeMs: startTime,
397
+ beforeEmit: settleBeforeTerminalOutput
385
398
  });
386
399
  return slashCommandResult.messageType === "error" ? 1 : 0;
387
400
  }
@@ -395,7 +408,8 @@ ${reason}
395
408
  isError: true,
396
409
  adapter,
397
410
  config,
398
- startTimeMs: startTime
411
+ startTimeMs: startTime,
412
+ beforeEmit: settleBeforeTerminalOutput
399
413
  });
400
414
  return 1;
401
415
  }
@@ -553,7 +567,7 @@ ${text}
553
567
  const metrics = uiTelemetryService.getMetrics();
554
568
  const usage = computeUsageFromMetrics(metrics);
555
569
  const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
556
- emitResult({
570
+ await emitResult({
557
571
  isError: false,
558
572
  durationMs: Date.now() - startTime,
559
573
  apiDurationMs: totalApiDurationMs,
@@ -564,17 +578,18 @@ ${text}
564
578
  });
565
579
  return 0;
566
580
  }, "emitStructuredSuccess");
567
- const emitLoopDetectedResult = /* @__PURE__ */ __name(() => {
581
+ const emitLoopDetectedResult = /* @__PURE__ */ __name(async () => {
568
582
  registry.abortAll();
569
583
  flushQueuedNotificationsToSdk(localQueue);
570
584
  finalizeOneShotMonitors();
571
585
  if (outputFormat === "text" /* TEXT */) {
586
+ await settleBeforeTerminalOutput();
572
587
  return 1;
573
588
  }
574
589
  const metrics = uiTelemetryService.getMetrics();
575
590
  const usage = computeUsageFromMetrics(metrics);
576
591
  const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
577
- adapter.emitResult({
592
+ await emitResult({
578
593
  isError: true,
579
594
  durationMs: Date.now() - startTime,
580
595
  apiDurationMs: totalApiDurationMs,
@@ -773,6 +788,7 @@ ${text}
773
788
  hasUnsentToolResponse = false;
774
789
  turnCount++;
775
790
  if (config.getMaxSessionTurns() >= 0 && turnCount > config.getMaxSessionTurns()) {
791
+ await settleBeforeTerminalOutput();
776
792
  await handleMaxTurnsExceededError(config);
777
793
  }
778
794
  let sendType;
@@ -894,6 +910,7 @@ ${text}
894
910
  }
895
911
  }
896
912
  if (abortController.signal.aborted) {
913
+ await settleBeforeTerminalOutput();
897
914
  await handleCancellationError(config);
898
915
  }
899
916
  if (teamManager) {
@@ -923,6 +940,7 @@ ${text}
923
940
  };
924
941
  turnCount++;
925
942
  if (config.getMaxSessionTurns() >= 0 && turnCount > config.getMaxSessionTurns()) {
943
+ await settleBeforeTerminalOutput();
926
944
  await handleMaxTurnsExceededError(config);
927
945
  }
928
946
  let itemMessages = [
@@ -1117,7 +1135,7 @@ ${text}
1117
1135
  const previewSnippet = plainTextPreview.trim();
1118
1136
  const previewSuffix = previewSnippet ? ` Output preview (${plainTextPreview.length}${plainTextPreview.length >= PLAIN_TEXT_PREVIEW_LIMIT ? "+" : ""} chars): ${JSON.stringify(previewSnippet)}.` : "";
1119
1137
  const errorMessage = `Model produced plain text instead of calling the structured_output tool as required by --json-schema after ${turnCount} turn(s).` + previewSuffix;
1120
- emitResult({
1138
+ await emitResult({
1121
1139
  isError: true,
1122
1140
  durationMs: Date.now() - startTime,
1123
1141
  apiDurationMs: totalApiDurationMs,
@@ -1128,7 +1146,7 @@ ${text}
1128
1146
  });
1129
1147
  return 1;
1130
1148
  }
1131
- emitResult({
1149
+ await emitResult({
1132
1150
  isError: false,
1133
1151
  durationMs: Date.now() - startTime,
1134
1152
  apiDurationMs: totalApiDurationMs,
@@ -1153,9 +1171,10 @@ ${text}
1153
1171
  const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
1154
1172
  const isAlreadyReportedError = error instanceof AlreadyReportedError;
1155
1173
  const skipAdapterEmit = outputFormat === "text" /* TEXT */ && isAlreadyReportedError;
1174
+ await settleBeforeTerminalOutput();
1156
1175
  if (!skipAdapterEmit) {
1157
1176
  try {
1158
- emitResult({
1177
+ await emitResult({
1159
1178
  isError: true,
1160
1179
  durationMs: Date.now() - startTime,
1161
1180
  apiDurationMs: totalApiDurationMs,
@@ -1194,6 +1213,7 @@ ${text}
1194
1213
  if (options.captureMonitorRegistrations !== false) {
1195
1214
  monReg.setRegisterCallback(void 0);
1196
1215
  }
1216
+ unsubscribeRecordingFailure?.();
1197
1217
  process.stdout.removeListener("error", stdoutErrorHandler);
1198
1218
  process.removeListener("SIGINT", shutdownHandler);
1199
1219
  process.removeListener("SIGTERM", shutdownHandler);
@@ -6,7 +6,7 @@ import {
6
6
  getNestedProperty,
7
7
  getPersistScopeForModelSelection,
8
8
  restoreSettingsFromBackup
9
- } from "./chunk-4C5BQ2D2.js";
9
+ } from "./chunk-6GETGQWP.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -9,19 +9,19 @@ import {
9
9
  import {
10
10
  DEFAULT_COMPACTED_REPLAY_MAX_BYTES
11
11
  } from "./chunk-COH43MRJ.js";
12
- import {
13
- loadSettings
14
- } from "./chunk-4C5BQ2D2.js";
15
12
  import {
16
13
  normalizeServeChannelSelection
17
14
  } from "./chunk-TJTKSVIV.js";
15
+ import {
16
+ loadSettings
17
+ } from "./chunk-6GETGQWP.js";
18
18
  import {
19
19
  writeStderrLine
20
20
  } from "./chunk-YUZI3WAC.js";
21
21
  import {
22
22
  MCP_BUDGET_WARN_FRACTION,
23
23
  parsePositiveIntegerEnv
24
- } from "./chunk-NVYTCB5Z.js";
24
+ } from "./chunk-K7CRWKOE.js";
25
25
  import {
26
26
  openBrowserSecurely,
27
27
  shouldLaunchBrowser
@@ -297,7 +297,7 @@ var serveCommand = {
297
297
  process.exit(1);
298
298
  }
299
299
  }
300
- const { runQwenServe } = await import("./run-qwen-serve-DMWV5N6L.js");
300
+ const { runQwenServe } = await import("./run-qwen-serve-NWTGPERT.js");
301
301
  try {
302
302
  const handle = await runQwenServe({
303
303
  port: argv.port,