@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260716.506ce0a1a

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 +14 -6
  2. package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +33 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +64 -20
  5. package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
  6. package/bundled/qc-helper/docs/features/code-review.md +88 -44
  7. package/bundled/qc-helper/docs/features/commands.md +6 -6
  8. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  9. package/bundled/qc-helper/docs/features/sandbox.md +2 -0
  10. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  11. package/bundled/qc-helper/docs/qwen-serve.md +49 -20
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  13. package/bundled/review/DESIGN.md +219 -33
  14. package/bundled/review/SKILL.md +429 -382
  15. package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-WOC3YDWA.js} +31 -32
  16. package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-H5HZCAFD.js} +49 -48
  17. package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-55YDJDNM.js} +922 -550
  18. package/chunks/{agent-HOLHB3RT.js → agent-H6VE5W3L.js} +26 -27
  19. package/chunks/{agent-headless-SXL6H56A.js → agent-headless-T4XJOCRU.js} +26 -27
  20. package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-HBRXJSP4.js} +78 -16
  21. package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
  22. package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
  23. package/chunks/{bridge-BCJQ7BBB.js → bridge-FTB6ZP3R.js} +31 -34
  24. package/chunks/{ca-UJ6HC4H2.js → ca-CODEN7TD.js} +9 -1
  25. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  26. package/chunks/channel-worker-manager-CUDPU4CN.js +418 -0
  27. package/chunks/channel-worker-supervisor-4XTO2ZD3.js +20 -0
  28. package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
  29. package/chunks/{chunk-VA4KQY6V.js → chunk-2JNR4VP2.js} +3 -3
  30. package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
  31. package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
  32. package/chunks/{chunk-CUMMSHH6.js → chunk-3DWIFU7L.js} +1 -1
  33. package/chunks/chunk-3MX7D6QN.js +516 -0
  34. package/chunks/{chunk-SJHDYNHF.js → chunk-4BJVSIS3.js} +3 -3
  35. package/chunks/{chunk-TO6QE22P.js → chunk-5CNYZ7TN.js} +26 -22
  36. package/chunks/{chunk-N3EMS75V.js → chunk-5DEJ4T6C.js} +1333 -1232
  37. package/chunks/chunk-5HBA2Z7V.js +28 -0
  38. package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
  39. package/chunks/{chunk-SCGXUJBT.js → chunk-6LI3L22E.js} +3 -3
  40. package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
  41. package/chunks/{chunk-YAUFFXDS.js → chunk-7GM2RWCR.js} +12 -11
  42. package/chunks/{chunk-OQ4DRIOA.js → chunk-7HWE2W74.js} +2 -2
  43. package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
  44. package/chunks/{chunk-MC23XKFE.js → chunk-A2HWMJVO.js} +37 -3
  45. package/chunks/{chunk-3G7CIHVV.js → chunk-ABNYOMDG.js} +4 -4
  46. package/chunks/{chunk-3AHXV67U.js → chunk-AGZLXLBY.js} +1 -1
  47. package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
  48. package/chunks/{chunk-Q4YQW46J.js → chunk-AMRZVQUY.js} +43 -40
  49. package/chunks/{chunk-W3JHSWRP.js → chunk-AN6C2U46.js} +4 -4
  50. package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
  51. package/chunks/{chunk-5SFOMFG4.js → chunk-AVEOWVOM.js} +36 -2
  52. package/chunks/{chunk-34MW4KTI.js → chunk-BA5JGE5F.js} +2 -2
  53. package/chunks/{chunk-5HOMWMCL.js → chunk-BSJAQUFD.js} +5492 -1336
  54. package/chunks/{chunk-L6P4KPHR.js → chunk-BWJKL5DB.js} +58 -38
  55. package/chunks/{chunk-PVZM22CK.js → chunk-C32JFRGV.js} +5 -5
  56. package/chunks/{chunk-AKIVHSJR.js → chunk-CZIHPO7L.js} +163 -782
  57. package/chunks/chunk-DL7RCO6V.js +493 -0
  58. package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
  59. package/chunks/{chunk-5VXNZWGF.js → chunk-ENUQSKEY.js} +1 -1
  60. package/chunks/{chunk-PDZ7MBDG.js → chunk-EWILX3BM.js} +27 -6
  61. package/chunks/{chunk-BMGVRZN4.js → chunk-EZWX232B.js} +1 -1
  62. package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
  63. package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
  64. package/chunks/chunk-FEOZBUMT.js +77 -0
  65. package/chunks/{chunk-5U27BZ72.js → chunk-FKEGVMPX.js} +269 -83
  66. package/chunks/chunk-FNX3LGAK.js +34 -0
  67. package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
  68. package/chunks/{chunk-PODM4SZ4.js → chunk-G3BIBPI7.js} +5 -5
  69. package/chunks/{chunk-A3XKDTSH.js → chunk-GA65O2TB.js} +4 -4
  70. package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
  71. package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-GXGIM7QP.js} +67 -35
  72. package/chunks/{chunk-6PESIEKJ.js → chunk-GXUWGPYX.js} +68 -6
  73. package/chunks/chunk-GYTKQYDB.js +23 -0
  74. package/chunks/{chunk-GZRTYZ2R.js → chunk-H3XMJV7T.js} +218 -1
  75. package/chunks/{chunk-WQUQVGTF.js → chunk-HGRXW4HQ.js} +467 -106
  76. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  77. package/chunks/{chunk-ECNYL4AA.js → chunk-HUEWOHKV.js} +1 -1
  78. package/chunks/chunk-IDS7MSUP.js +74 -0
  79. package/chunks/{chunk-KHUQZZJ6.js → chunk-IHDRJLLR.js} +382 -36
  80. package/chunks/{chunk-CLFKOZEK.js → chunk-J4SEAF4X.js} +114 -4
  81. package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
  82. package/chunks/{chunk-P67PFTUT.js → chunk-KEYEYCHZ.js} +4 -4
  83. package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
  84. package/chunks/{chunk-7PU4FYLG.js → chunk-KOXFAG6P.js} +4 -18
  85. package/chunks/{chunk-EGYZ275M.js → chunk-KWLVWNF5.js} +55 -7
  86. package/chunks/{chunk-XLA62MYB.js → chunk-KXECVZPD.js} +2 -2
  87. package/chunks/{chunk-IAVB3HM3.js → chunk-L4Y55KIS.js} +33 -1
  88. package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
  89. package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
  90. package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
  91. package/chunks/chunk-LXXMOYPL.js +22 -0
  92. package/chunks/{chunk-Q6I5QHMH.js → chunk-MFNKBXYH.js} +1 -1
  93. package/chunks/chunk-MR3PXB6E.js +48 -0
  94. package/chunks/{chunk-JZETEN3Z.js → chunk-N45S36AH.js} +3 -3
  95. package/chunks/{chunk-GWLSNBG4.js → chunk-NA3IG6XG.js} +748 -27
  96. package/chunks/{chunk-D5SKC4YG.js → chunk-O3M25JXE.js} +213 -29
  97. package/chunks/{chunk-EAXLGSFP.js → chunk-O6XGHDS5.js} +11 -11
  98. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  99. package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
  100. package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
  101. package/chunks/{chunk-CNEIYWSA.js → chunk-OVIV236K.js} +5 -5
  102. package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
  103. package/chunks/{chunk-E2IY465S.js → chunk-PWNOAWXB.js} +59 -12
  104. package/chunks/{chunk-B4G2WOFA.js → chunk-Q5MKHNIR.js} +28 -5
  105. package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
  106. package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
  107. package/chunks/{chunk-HKMAENAO.js → chunk-QDTGDM2T.js} +14 -9
  108. package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
  109. package/chunks/{chunk-W2UIXQDL.js → chunk-RTV5TUYB.js} +12 -4
  110. package/chunks/chunk-RW7DUKFO.js +91 -0
  111. package/chunks/{chunk-NVYTCB5Z.js → chunk-SA6QVLWI.js} +17325 -16259
  112. package/chunks/chunk-SJSI7PXU.js +59 -0
  113. package/chunks/{chunk-HVY356M2.js → chunk-SMGBWLNU.js} +3 -3
  114. package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
  115. package/chunks/{chunk-CC2ITGCF.js → chunk-STZQCNN3.js} +49 -6
  116. package/chunks/{chunk-HPDUL5MF.js → chunk-T2ZDAER2.js} +1 -1
  117. package/chunks/{chunk-XUOOWUZS.js → chunk-T3TQ3ACP.js} +1 -1
  118. package/chunks/{chunk-4C5BQ2D2.js → chunk-TIKDHS6V.js} +100 -17
  119. package/chunks/chunk-TV6K2FB4.js +224 -0
  120. package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
  121. package/chunks/{chunk-D2GFWEXB.js → chunk-UCUUH2JV.js} +6 -6
  122. package/chunks/{chunk-BAPGSC7U.js → chunk-UZP7K33Y.js} +23 -9
  123. package/chunks/{chunk-77XJ3SWN.js → chunk-VDAR6UO2.js} +8 -6
  124. package/chunks/{chunk-XYQSMABS.js → chunk-VKLVGA2D.js} +4 -4
  125. package/chunks/{chunk-JSG7ZSBC.js → chunk-VRR65QYW.js} +251 -3
  126. package/chunks/{chunk-U2NNEY4R.js → chunk-VT5AWJN4.js} +1 -1
  127. package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
  128. package/chunks/{chunk-X6TJ3YZV.js → chunk-WKEO3GLZ.js} +160 -60
  129. package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
  130. package/chunks/{chunk-VWPVHAMO.js → chunk-XIWQ5QST.js} +8 -1
  131. package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
  132. package/chunks/{chunk-3VAGG5T5.js → chunk-YYBZUIPL.js} +1015 -100
  133. package/chunks/{chunk-CCDMCZPP.js → chunk-YZ3SBNP7.js} +1 -1
  134. package/chunks/{chunk-ATAKVRIF.js → chunk-Z3XA2TNG.js} +7 -7
  135. package/chunks/{chunk-EMDMPBJ4.js → chunk-Z7SVC7PJ.js} +10 -3
  136. package/chunks/{chunk-AURZZYMD.js → chunk-ZIVSSTUG.js} +4 -4
  137. package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
  138. package/chunks/{chunk-34Z3U5RQ.js → chunk-ZQIYGQCG.js} +765 -168
  139. package/chunks/{computer-use-HM37RX6A.js → computer-use-NADT7ULB.js} +26 -27
  140. package/chunks/{config-utils-NV2SVGPB.js → config-utils-IQQT3GCI.js} +3 -2
  141. package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-U7NEJYJ7.js} +28 -29
  142. package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
  143. package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-SUN33INC.js} +26 -27
  144. package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
  145. package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
  146. package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
  147. package/chunks/{daemon-ARHTSTXP.js → daemon-SJXEKP3H.js} +773 -126
  148. package/chunks/daemon-status-provider-WIIYLGZJ.js +74 -0
  149. package/chunks/{de-EBJN3OVN.js → de-NOXPCSYN.js} +9 -1
  150. package/chunks/{dist-XKU3ABM5.js → dist-4WCQEZIN.js} +4 -51
  151. package/chunks/{dist-QYCAEZIT.js → dist-DOPL5LSQ.js} +5 -1
  152. package/chunks/{dist-WKPOYU7O.js → dist-GXJVCOS7.js} +1 -1
  153. package/chunks/{dist-R7LN5AZE.js → dist-PX2ERZ6I.js} +2 -2
  154. package/chunks/{dist-PNVLTKTL.js → dist-V2YVLYOW.js} +215 -33
  155. package/chunks/{dist-VHV4EVHG.js → dist-VYWUKURL.js} +1 -1
  156. package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-6FRM6UMU.js} +27 -28
  157. package/chunks/{edit-VNI4NJ73.js → edit-7GOIQTCZ.js} +27 -28
  158. package/chunks/{en-5A6LA7RK.js → en-JFVULHTB.js} +11 -1
  159. package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-476E6WIK.js} +26 -27
  160. package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-IRJM6W3C.js} +42 -28
  161. package/chunks/{environment-5HSSRMJ7.js → environment-ROMULS2X.js} +30 -30
  162. package/chunks/{errors-HMFCJJ7P.js → errors-OUIWPUDY.js} +28 -29
  163. package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-PPSFK753.js} +26 -27
  164. package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-YKQMD4D7.js} +26 -27
  165. package/chunks/{fast-path-FRDMDVHG.js → fast-path-CNK2HHKH.js} +3 -3
  166. package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
  167. package/chunks/{fr-YXRABLYZ.js → fr-HVFNU42H.js} +9 -1
  168. package/chunks/{gemini-QYSEGHAX.js → gemini-WQNFT6TR.js} +216 -90
  169. package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-4QJH2JDP.js} +4 -4
  170. package/chunks/{glob-BRCSGFOT.js → glob-36TVLBWW.js} +28 -28
  171. package/chunks/{grep-EE2DUOSY.js → grep-QTYLNO2M.js} +26 -27
  172. package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-36FQFODK.js} +30 -31
  173. package/chunks/{i18n-BASPENNQ.js → i18n-JUGYPVSP.js} +27 -28
  174. package/chunks/initializer-OBBJUS25.js +72 -0
  175. package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-MCKTPX64.js} +27 -28
  176. package/chunks/{ja-7VQOANVG.js → ja-PY5AF544.js} +10 -2
  177. package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
  178. package/chunks/list-VW5QY4VJ.js +75 -0
  179. package/chunks/loadedSettingsAdapter-IELOOXG6.js +69 -0
  180. package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-QXWZSCYM.js} +5 -5
  181. package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
  182. package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
  183. package/chunks/mcp-Q3EC37ZS.js +69 -0
  184. package/chunks/{monitor-X5Z3H4FY.js → monitor-DCZ27AFR.js} +26 -27
  185. package/chunks/nonInteractiveCli-KXD7PFO4.js +128 -0
  186. package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-YU4XF5LI.js} +27 -28
  187. package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KL5WER2D.js} +13 -13
  188. package/chunks/{pidfile-D4I4FTVA.js → pidfile-WBOD7EJV.js} +27 -28
  189. package/chunks/processUtils-AOV4R34M.js +29 -0
  190. package/chunks/{pt-2C6YCSHL.js → pt-A3PRQXMU.js} +9 -1
  191. package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-YIGBHYE3.js} +28 -29
  192. package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  193. package/chunks/{read-file-7SZSIZOL.js → read-file-WVL4Y76X.js} +9 -9
  194. package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
  195. package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
  196. package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-6GSWJERP.js} +26 -27
  197. package/chunks/{ru-6BBHVZZV.js → ru-IBCWUTOC.js} +9 -1
  198. package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-QYUQMEDT.js} +1233 -371
  199. package/chunks/{runtime-57WWRVHN.js → runtime-K2YZCNB3.js} +42 -38
  200. package/chunks/{scheduler-YBLGWSIL.js → scheduler-EQCSN7QV.js} +26 -27
  201. package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
  202. package/chunks/{serve-R63NK3CV.js → serve-DX5UGZD4.js} +36 -35
  203. package/chunks/{server-Z22GCAXP.js → server-T6HJH3DR.js} +5869 -1398
  204. package/chunks/{session-HKAAI7BN.js → session-SNU6ACY6.js} +299 -100
  205. package/chunks/{settings-3EYN66GK.js → settings-AKHZZNEL.js} +34 -33
  206. package/chunks/{shell-6YXINTWJ.js → shell-EY74IEZK.js} +28 -27
  207. package/chunks/{skill-OO57P4X6.js → skill-DPU62O3H.js} +11 -11
  208. package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-RQZRWJ2V.js} +28 -30
  209. package/chunks/{src-G5UPLZSZ.js → src-7FITDSVC.js} +164 -52
  210. package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-XO3RK6DO.js} +28 -29
  211. package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-DVWZRHYQ.js} +728 -382
  212. package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
  213. package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
  214. package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
  215. package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
  216. package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
  217. package/chunks/{team-create-PECAAPXK.js → team-create-FOSRT62K.js} +26 -27
  218. package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
  219. package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-6VUDV27J.js} +26 -27
  220. package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-6UT6IO5T.js} +27 -28
  221. package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
  222. package/chunks/{tool-search-THVIWAPB.js → tool-search-ASSFMMN5.js} +10 -10
  223. package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-YYWUO23H.js} +32 -35
  224. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  225. package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-4BWV2IBK.js} +29 -29
  226. package/chunks/types-ML3TRJQ5.js +16 -0
  227. package/chunks/update-relaunch-74DLGH73.js +87 -0
  228. package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-CRFCGFO5.js} +31 -30
  229. package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-BTTEPBGQ.js} +76 -73
  230. package/chunks/{version-3UEA6ZIR.js → version-Y5JE5Q63.js} +1 -1
  231. package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-CFCWTCAP.js} +5 -6
  232. package/chunks/{workflow-QCCCMYP3.js → workflow-6WC7VPQN.js} +27 -28
  233. package/chunks/workspace-providers-status-RVG2C5ZS.js +72 -0
  234. package/chunks/workspace-registration-store-SLEU3D3X.js +27 -0
  235. package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QMWGVOTF.js} +32 -35
  236. package/chunks/workspace-service-G572JSEU.js +84 -0
  237. package/chunks/workspace-skills-status-VSSMSMNK.js +71 -0
  238. package/chunks/{write-file-I3MUDRIE.js → write-file-5XVDRORP.js} +27 -28
  239. package/chunks/{zh-RQE7I22T.js → zh-PAUNIMHQ.js} +12 -2
  240. package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-GNEUIUFF.js} +12 -2
  241. package/cli-entry.js +92 -8
  242. package/cli.js +11 -11
  243. package/locales/ca.js +16 -0
  244. package/locales/de.js +16 -0
  245. package/locales/en.js +19 -0
  246. package/locales/fr.js +16 -0
  247. package/locales/ja.js +17 -1
  248. package/locales/pt.js +16 -0
  249. package/locales/ru.js +16 -0
  250. package/locales/zh-TW.js +20 -1
  251. package/locales/zh.js +20 -1
  252. package/package.json +3 -3
  253. package/web-shell/assets/{arc-C15hqnJe.js → arc-vx1tRwnX.js} +1 -1
  254. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-DBi6iUA1.js} +1 -1
  255. package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-Ga9JJ4Ak.js} +1 -1
  256. package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-D8Vi5FYw.js} +1 -1
  257. package/web-shell/assets/channel-B29zQDTL.js +1 -0
  258. package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-CSV6yQpU.js} +1 -1
  259. package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-toYlppdI.js} +1 -1
  260. package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-DbjzuyAr.js} +1 -1
  261. package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-IkkSjSkk.js} +1 -1
  262. package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-D5wUL6Zm.js} +1 -1
  263. package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-C3o2DXG0.js} +1 -1
  264. package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CutIi14T.js} +1 -1
  265. package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-DZ0NRHH-.js} +1 -1
  266. package/web-shell/assets/classDiagram-4FO5ZUOK-BNGI2SvC.js +1 -0
  267. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BNGI2SvC.js +1 -0
  268. package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-B3Dl88UJ.js} +1 -1
  269. package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-DfTxfF6-.js} +1 -1
  270. package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-CJyH98yO.js} +1 -1
  271. package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-EbOiJNmW.js} +1 -1
  272. package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-AYNqpqqA.js} +1 -1
  273. package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BY5VPa4H.js} +1 -1
  274. package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-BhMYAKlk.js} +1 -1
  275. package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-Bp8S_F9l.js} +1 -1
  276. package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-az3TE9PU.js} +1 -1
  277. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-CfkAEpCe.js} +3 -3
  278. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-D1QmjMCy.js} +1 -1
  279. package/web-shell/assets/index-C8sDwQUv.js +1130 -0
  280. package/web-shell/assets/index-CaBoc5bb.js +3 -0
  281. package/web-shell/assets/index-Dpg5Wymg.css +5 -0
  282. package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-D3ompLrG.js} +1 -1
  283. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-D3MRWp9I.js} +1 -1
  284. package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-DVkKCa44.js} +1 -1
  285. package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-BLif81wF.js} +1 -1
  286. package/web-shell/assets/{linear-C8wKCbIC.js → linear-BDU96EGS.js} +1 -1
  287. package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-B-CwC26B.js} +5 -5
  288. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CS1WOJ4G.js} +1 -1
  289. package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-BzgtNXVP.js} +1 -1
  290. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-BRfGC8MA.js} +1 -1
  291. package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-CPBZkC7g.js} +1 -1
  292. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-nqNvinIk.js} +1 -1
  293. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-CM_Wdjh3.js} +1 -1
  294. package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-L0y-48VE.js} +1 -1
  295. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BX1DdF8s.js +1 -0
  296. package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_n5rb3A.js} +1 -1
  297. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-C9NmLV5e.js} +1 -1
  298. package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-CrefK9gt.js} +1 -1
  299. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BUccf-bC.js} +1 -1
  300. package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-DM6ef92l.js} +1 -1
  301. package/web-shell/index.html +2 -2
  302. package/chunks/chunk-524RQP4Q.js +0 -305
  303. package/chunks/chunk-CARU2RR2.js +0 -24
  304. package/chunks/chunk-CU3L64TP.js +0 -93
  305. package/chunks/chunk-OCPBI7J5.js +0 -18
  306. package/chunks/chunk-TEGEBB2I.js +0 -122
  307. package/chunks/chunk-VTU57BWZ.js +0 -30
  308. package/chunks/daemon-status-provider-B2UTZUJ2.js +0 -76
  309. package/chunks/initializer-UTQ7FB7G.js +0 -71
  310. package/chunks/list-DEICDL65.js +0 -74
  311. package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
  312. package/chunks/mcp-L5JXEEIA.js +0 -68
  313. package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
  314. package/chunks/types-JNKGKUJT.js +0 -12
  315. package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
  316. package/chunks/workspace-service-RVLBMSMZ.js +0 -80
  317. package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
  318. package/web-shell/assets/channel-CLiQD50f.js +0 -1
  319. package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
  320. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
  321. package/web-shell/assets/index-D5IWFVk1.css +0 -5
  322. package/web-shell/assets/index-KFJRDhX7.js +0 -783
  323. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
@@ -1,14 +1,17 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
+ InvalidStreamError,
4
5
  OpenAIContentConverter,
6
+ ProtocolTagSanitizedEvent,
5
7
  TaggedThinkingParser,
6
8
  getRateLimitErrorDetails,
9
+ logProtocolTagSanitized,
7
10
  openaiRequestCaptureContext
8
- } from "./chunk-3VAGG5T5.js";
11
+ } from "./chunk-YYBZUIPL.js";
9
12
  import {
10
13
  RequestTokenizer
11
- } from "./chunk-SJHDYNHF.js";
14
+ } from "./chunk-4BJVSIS3.js";
12
15
  import {
13
16
  DASHSCOPE_PROXY_BASE_URL,
14
17
  DEFAULT_DASHSCOPE_BASE_URL,
@@ -16,17 +19,18 @@ import {
16
19
  DEFAULT_STREAM_IDLE_TIMEOUT_MS,
17
20
  MAX_STREAM_IDLE_TIMEOUT_MS,
18
21
  QWEN_STREAM_IDLE_TIMEOUT_MS_ENV,
22
+ resolveRequestTimeout
23
+ } from "./chunk-FEOZBUMT.js";
24
+ import {
19
25
  defaultOutputCeiling,
26
+ getToolCallPreparations,
20
27
  hasExplicitOutputLimit,
21
28
  parsePositiveIntegerEnvValue,
22
29
  reconcileMaxTokens,
23
- resolveRequestTimeout,
24
- tokenLimit
25
- } from "./chunk-524RQP4Q.js";
26
- import {
27
30
  runtimeDiagnostics,
28
- safeJsonParse
29
- } from "./chunk-JSG7ZSBC.js";
31
+ safeJsonParse,
32
+ tokenLimit
33
+ } from "./chunk-VRR65QYW.js";
30
34
  import {
31
35
  GenerateContentResponse
32
36
  } from "./chunk-4LD5APFL.js";
@@ -36,13 +40,13 @@ import {
36
40
  import {
37
41
  buildRuntimeFetchOptions,
38
42
  redactProxyError
39
- } from "./chunk-4ZVWQHEQ.js";
43
+ } from "./chunk-LQIDP6K5.js";
40
44
  import {
41
45
  createDebugLogger,
42
46
  getErrorStatus,
43
47
  getErrorType,
44
48
  isAbortError
45
- } from "./chunk-J4TSQ5EQ.js";
49
+ } from "./chunk-7NFB7LBQ.js";
46
50
  import {
47
51
  init_esbuild_shims
48
52
  } from "./chunk-5O2XNYP6.js";
@@ -7788,10 +7792,15 @@ var StreamingToolCallParser = class {
7788
7792
  escapes = /* @__PURE__ */ new Map();
7789
7793
  /** Metadata for each tool call index */
7790
7794
  toolCallMeta = /* @__PURE__ */ new Map();
7795
+ namelessToolCallIndices = /* @__PURE__ */ new Set();
7791
7796
  /** Map from tool call ID to actual index used for storage */
7792
7797
  idToIndexMap = /* @__PURE__ */ new Map();
7798
+ /** Remapped slots awaiting a stable ID from a later chunk. */
7799
+ pendingIndexRemaps = /* @__PURE__ */ new Map();
7793
7800
  /** Counter for generating new indices when collisions occur */
7794
7801
  nextAvailableIndex = 0;
7802
+ conflictingToolCallIdentity = false;
7803
+ invalidToolCallIndex = false;
7795
7804
  /**
7796
7805
  * Processes a new chunk of tool call data and attempts to parse complete JSON objects
7797
7806
  *
@@ -7809,19 +7818,43 @@ var StreamingToolCallParser = class {
7809
7818
  * @returns ToolCallParseResult with completion status, parsed value, and repair info
7810
7819
  */
7811
7820
  addChunk(index, chunk, id, name) {
7821
+ const validName = name?.trim() || void 0;
7822
+ if (!Number.isSafeInteger(index) || index < 0) {
7823
+ this.conflictingToolCallIdentity = true;
7824
+ this.invalidToolCallIndex = true;
7825
+ return {
7826
+ complete: false,
7827
+ error: new Error(`Invalid tool call index: ${index}`)
7828
+ };
7829
+ }
7830
+ if (!id && !validName && !chunk.trim()) {
7831
+ const depth2 = this.depths.get(index) ?? 0;
7832
+ const inString2 = this.inStrings.get(index) ?? false;
7833
+ if (!this.buffers.has(index) || depth2 === 0 && !inString2) {
7834
+ return { complete: false };
7835
+ }
7836
+ }
7812
7837
  let actualIndex = index;
7813
7838
  const isKnownId = Boolean(id && this.idToIndexMap.has(id));
7839
+ const existingName = this.toolCallMeta.get(index)?.name;
7840
+ const isNameOnlyDelta = Boolean(
7841
+ validName && chunk.length === 0 && (!existingName || existingName === validName)
7842
+ );
7814
7843
  if (id) {
7815
7844
  if (this.idToIndexMap.has(id)) {
7816
7845
  actualIndex = this.idToIndexMap.get(id);
7846
+ } else if (this.pendingIndexRemaps.has(index)) {
7847
+ actualIndex = this.pendingIndexRemaps.get(index);
7848
+ this.pendingIndexRemaps.delete(index);
7849
+ this.idToIndexMap.set(id, actualIndex);
7817
7850
  } else {
7818
7851
  if (this.buffers.has(index)) {
7819
7852
  const existingBuffer = this.buffers.get(index);
7820
7853
  const existingDepth = this.depths.get(index);
7821
7854
  const existingMeta = this.toolCallMeta.get(index);
7822
- if (existingMeta?.name && existingDepth === 0 && existingMeta?.id && existingMeta.id !== id) {
7823
- let existingComplete = true;
7824
- if (existingBuffer.trim()) {
7855
+ if (existingMeta?.id && existingMeta.id !== id) {
7856
+ let existingComplete = existingDepth === 0;
7857
+ if (existingComplete && existingBuffer.trim()) {
7825
7858
  try {
7826
7859
  JSON.parse(existingBuffer);
7827
7860
  } catch {
@@ -7829,14 +7862,31 @@ var StreamingToolCallParser = class {
7829
7862
  }
7830
7863
  }
7831
7864
  if (existingComplete) {
7832
- actualIndex = this.findNextAvailableIndex();
7865
+ actualIndex = 0;
7866
+ while (this.buffers.has(actualIndex)) actualIndex += 1;
7867
+ if (!existingMeta.name) {
7868
+ this.conflictingToolCallIdentity = true;
7869
+ }
7870
+ } else {
7871
+ this.conflictingToolCallIdentity = true;
7833
7872
  }
7834
7873
  }
7835
7874
  }
7836
7875
  this.idToIndexMap.set(id, actualIndex);
7837
7876
  }
7838
- } else {
7839
- if (this.buffers.has(index)) {
7877
+ } else if (!isNameOnlyDelta) {
7878
+ if (this.pendingIndexRemaps.has(index)) {
7879
+ actualIndex = this.pendingIndexRemaps.get(index);
7880
+ const existingBuffer = this.buffers.get(actualIndex);
7881
+ const existingDepth = this.depths.get(actualIndex);
7882
+ if (existingDepth === 0 && existingBuffer.trim()) {
7883
+ try {
7884
+ JSON.parse(existingBuffer);
7885
+ actualIndex = this.findMostRecentIncompleteIndex();
7886
+ } catch {
7887
+ }
7888
+ }
7889
+ } else if (this.buffers.has(index)) {
7840
7890
  const existingBuffer = this.buffers.get(index);
7841
7891
  const existingDepth = this.depths.get(index);
7842
7892
  if (existingDepth > 0 || !existingBuffer.trim()) {
@@ -7860,6 +7910,20 @@ var StreamingToolCallParser = class {
7860
7910
  }
7861
7911
  const currentBuffer = this.buffers.get(actualIndex);
7862
7912
  const currentDepth = this.depths.get(actualIndex);
7913
+ const meta = this.toolCallMeta.get(actualIndex);
7914
+ if (chunk.length === 0 && (id || validName)) {
7915
+ if (id) meta.id = id;
7916
+ if (validName && !meta.name) meta.name = validName;
7917
+ if (!meta.name && meta.id) {
7918
+ this.namelessToolCallIndices.add(actualIndex);
7919
+ } else {
7920
+ this.namelessToolCallIndices.delete(actualIndex);
7921
+ }
7922
+ if (!meta.id && actualIndex !== index) {
7923
+ this.pendingIndexRemaps.set(index, actualIndex);
7924
+ }
7925
+ return { actualIndex, complete: false };
7926
+ }
7863
7927
  if (isKnownId && currentDepth === 0) {
7864
7928
  if (currentBuffer.trim()) {
7865
7929
  try {
@@ -7867,23 +7931,32 @@ var StreamingToolCallParser = class {
7867
7931
  debugLogger3.debug(
7868
7932
  `Ignoring replay chunk for completed toolCall id=${id}`
7869
7933
  );
7870
- return { complete: false };
7934
+ return { actualIndex, complete: false };
7871
7935
  } catch {
7872
7936
  }
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
7937
  }
7879
7938
  }
7880
- const meta = this.toolCallMeta.get(actualIndex);
7939
+ const identityChanged = Boolean(id && meta.id && meta.id !== id);
7881
7940
  if (id) meta.id = id;
7882
- if (name) meta.name = name;
7941
+ if (validName) {
7942
+ if (!identityChanged && meta.name && meta.name !== validName) {
7943
+ this.conflictingToolCallIdentity = true;
7944
+ } else {
7945
+ meta.name = validName;
7946
+ }
7947
+ }
7948
+ if (!meta.id && actualIndex !== index) {
7949
+ this.pendingIndexRemaps.set(index, actualIndex);
7950
+ }
7883
7951
  const currentInString = this.inStrings.get(actualIndex);
7884
7952
  const currentEscape = this.escapes.get(actualIndex);
7885
7953
  const newBuffer = currentBuffer + chunk;
7886
7954
  this.buffers.set(actualIndex, newBuffer);
7955
+ if (!meta.name && (meta.id || /\S/.test(newBuffer))) {
7956
+ this.namelessToolCallIndices.add(actualIndex);
7957
+ } else {
7958
+ this.namelessToolCallIndices.delete(actualIndex);
7959
+ }
7887
7960
  let depth = currentDepth;
7888
7961
  let inString = currentInString;
7889
7962
  let escape2 = currentEscape;
@@ -7903,12 +7976,13 @@ var StreamingToolCallParser = class {
7903
7976
  if (depth === 0 && newBuffer.trim().length > 0) {
7904
7977
  try {
7905
7978
  const parsed = JSON.parse(newBuffer);
7906
- return { complete: true, value: parsed };
7979
+ return { actualIndex, complete: true, value: parsed };
7907
7980
  } catch (e) {
7908
7981
  if (inString) {
7909
7982
  try {
7910
7983
  const repaired = JSON.parse(newBuffer + '"');
7911
7984
  return {
7985
+ actualIndex,
7912
7986
  complete: true,
7913
7987
  value: repaired,
7914
7988
  repaired: true
@@ -7917,12 +7991,13 @@ var StreamingToolCallParser = class {
7917
7991
  }
7918
7992
  }
7919
7993
  return {
7994
+ actualIndex,
7920
7995
  complete: false,
7921
7996
  error: e instanceof Error ? e : new Error(String(e))
7922
7997
  };
7923
7998
  }
7924
7999
  }
7925
- return { complete: false };
8000
+ return { actualIndex, complete: false };
7926
8001
  }
7927
8002
  /**
7928
8003
  * Gets the current tool call metadata for a specific index
@@ -7933,6 +8008,29 @@ var StreamingToolCallParser = class {
7933
8008
  getToolCallMeta(index) {
7934
8009
  return this.toolCallMeta.get(index) || {};
7935
8010
  }
8011
+ hasNamelessToolCall() {
8012
+ return this.namelessToolCallIndices.size > 0;
8013
+ }
8014
+ hasConflictingToolCallIdentity() {
8015
+ return this.conflictingToolCallIdentity;
8016
+ }
8017
+ hasInvalidToolCallIndex() {
8018
+ return this.invalidToolCallIndex;
8019
+ }
8020
+ hasInvalidToolCallArguments() {
8021
+ for (const [index, buffer] of this.buffers.entries()) {
8022
+ if (!this.toolCallMeta.get(index)?.name || buffer.length === 0) continue;
8023
+ try {
8024
+ const args = JSON.parse(buffer);
8025
+ if (typeof args !== "object" || args === null || Array.isArray(args)) {
8026
+ return true;
8027
+ }
8028
+ } catch {
8029
+ return true;
8030
+ }
8031
+ }
8032
+ return false;
8033
+ }
7936
8034
  /**
7937
8035
  * Gets all completed tool calls that are ready to be emitted
7938
8036
  *
@@ -8064,6 +8162,12 @@ var StreamingToolCallParser = class {
8064
8162
  this.inStrings.set(index, false);
8065
8163
  this.escapes.set(index, false);
8066
8164
  this.toolCallMeta.set(index, {});
8165
+ this.namelessToolCallIndices.delete(index);
8166
+ for (const [providerIndex, actualIndex] of this.pendingIndexRemaps) {
8167
+ if (providerIndex === index || actualIndex === index) {
8168
+ this.pendingIndexRemaps.delete(providerIndex);
8169
+ }
8170
+ }
8067
8171
  }
8068
8172
  /**
8069
8173
  * Resets the entire parser state for processing a new stream
@@ -8078,8 +8182,12 @@ var StreamingToolCallParser = class {
8078
8182
  this.inStrings.clear();
8079
8183
  this.escapes.clear();
8080
8184
  this.toolCallMeta.clear();
8185
+ this.namelessToolCallIndices.clear();
8081
8186
  this.idToIndexMap.clear();
8187
+ this.pendingIndexRemaps.clear();
8082
8188
  this.nextAvailableIndex = 0;
8189
+ this.conflictingToolCallIdentity = false;
8190
+ this.invalidToolCallIndex = false;
8083
8191
  }
8084
8192
  /**
8085
8193
  * Gets the current accumulated buffer content for a specific index
@@ -8380,7 +8488,8 @@ var ContentGenerationPipeline = class {
8380
8488
  const innerStream = this.processStreamWithLogging(
8381
8489
  guarded,
8382
8490
  context,
8383
- request
8491
+ request,
8492
+ userPromptId
8384
8493
  );
8385
8494
  async function* drainThenCleanup() {
8386
8495
  try {
@@ -8403,10 +8512,29 @@ var ContentGenerationPipeline = class {
8403
8512
  * 4. Collect both formats for logging
8404
8513
  * 5. Handle success/error logging
8405
8514
  */
8406
- async *processStreamWithLogging(stream, context, request) {
8515
+ async *processStreamWithLogging(stream, context, request, userPromptId) {
8407
8516
  const collectedGeminiResponses = [];
8408
8517
  let pendingFinishResponse = null;
8409
8518
  let finishYielded = false;
8519
+ let pendingFinishProtocolTagSanitized;
8520
+ const logPendingProtocolTagSanitized = /* @__PURE__ */ __name((response, sanitization) => {
8521
+ if (!sanitization) return;
8522
+ const event = new ProtocolTagSanitizedEvent({
8523
+ model: context.model,
8524
+ promptId: userPromptId,
8525
+ responseId: response.responseId,
8526
+ tagName: sanitization.tagName,
8527
+ toolCallCount: sanitization.toolCallCount
8528
+ });
8529
+ debugLogger4.warn("Sanitized a model protocol tag", {
8530
+ model: event.model,
8531
+ promptId: event.prompt_id,
8532
+ responseId: event.response_id,
8533
+ tagName: event.tag_name,
8534
+ toolCallCount: event.tool_call_count
8535
+ });
8536
+ logProtocolTagSanitized(this.config.cliConfig, event);
8537
+ }, "logPendingProtocolTagSanitized");
8410
8538
  try {
8411
8539
  for await (const chunk of stream) {
8412
8540
  if (chunk.choices?.[0]?.finish_reason === "error_finish") {
@@ -8417,9 +8545,22 @@ var ContentGenerationPipeline = class {
8417
8545
  chunk,
8418
8546
  context
8419
8547
  );
8420
- if (response.candidates?.[0]?.content?.parts?.length === 0 && !response.candidates?.[0]?.finishReason && !response.usageMetadata) {
8548
+ const sanitization = context.protocolTagSanitized;
8549
+ if (sanitization) {
8550
+ context.protocolTagSanitized = void 0;
8551
+ }
8552
+ if (response.candidates?.[0]?.content?.parts?.length === 0 && !response.candidates?.[0]?.finishReason && !response.usageMetadata && // Preparation-only responses must reach ACP before arguments complete.
8553
+ getToolCallPreparations(response).length === 0) {
8421
8554
  continue;
8422
8555
  }
8556
+ if (pendingFinishProtocolTagSanitized && pendingFinishResponse && !response.candidates?.[0]?.finishReason && response.candidates?.some(
8557
+ (candidate) => (candidate.content?.parts?.length ?? 0) > 0
8558
+ )) {
8559
+ throw new InvalidStreamError(
8560
+ "Model response continued after a finish reason.",
8561
+ "PROTOCOL_TAG_LEAK"
8562
+ );
8563
+ }
8423
8564
  if (finishYielded) {
8424
8565
  if (response.usageMetadata) {
8425
8566
  const pending = pendingFinishResponse;
@@ -8430,6 +8571,9 @@ var ContentGenerationPipeline = class {
8430
8571
  collectedGeminiResponses.push(response);
8431
8572
  continue;
8432
8573
  }
8574
+ if (!pendingFinishResponse && response.candidates?.[0]?.finishReason && sanitization) {
8575
+ pendingFinishProtocolTagSanitized = sanitization;
8576
+ }
8433
8577
  const shouldYield = this.handleChunkMerging(
8434
8578
  response,
8435
8579
  collectedGeminiResponses,
@@ -8439,20 +8583,60 @@ var ContentGenerationPipeline = class {
8439
8583
  );
8440
8584
  if (shouldYield) {
8441
8585
  if (pendingFinishResponse) {
8586
+ logPendingProtocolTagSanitized(
8587
+ pendingFinishResponse,
8588
+ pendingFinishProtocolTagSanitized
8589
+ );
8442
8590
  yield pendingFinishResponse;
8443
8591
  finishYielded = true;
8444
8592
  } else {
8593
+ logPendingProtocolTagSanitized(response, sanitization);
8445
8594
  yield response;
8446
8595
  }
8447
8596
  }
8448
8597
  }
8598
+ if (context.pendingThinkingTagCandidate && !context.pendingThinkingTagCandidate.closingTagName && !/\S/.test(context.pendingThinkingTagCandidate.text)) {
8599
+ const pendingParts = context.pendingUntrustedResponseParts;
8600
+ context.pendingThinkingTagCandidate = void 0;
8601
+ context.pendingUntrustedResponseParts = void 0;
8602
+ if (pendingParts?.length) {
8603
+ const response = new GenerateContentResponse();
8604
+ response.candidates = [
8605
+ {
8606
+ content: { parts: pendingParts, role: "model" },
8607
+ index: 0
8608
+ }
8609
+ ];
8610
+ yield response;
8611
+ }
8612
+ } else if (context.pendingThinkingTagCandidate) {
8613
+ throw new InvalidStreamError(
8614
+ "Model response leaked thinking tags.",
8615
+ "PROTOCOL_TAG_LEAK"
8616
+ );
8617
+ }
8449
8618
  if (pendingFinishResponse && !finishYielded) {
8619
+ logPendingProtocolTagSanitized(
8620
+ pendingFinishResponse,
8621
+ pendingFinishProtocolTagSanitized
8622
+ );
8450
8623
  yield pendingFinishResponse;
8451
8624
  }
8452
8625
  } catch (error) {
8626
+ if (error instanceof InvalidStreamError) {
8627
+ throw error;
8628
+ }
8453
8629
  if (error instanceof StreamContentError) {
8454
8630
  throw redactProxyError(error);
8455
8631
  }
8632
+ if (context.pendingThinkingTagCandidate?.closingTagName && request.config?.abortSignal?.aborted !== true) {
8633
+ context.pendingThinkingTagCandidate = void 0;
8634
+ context.pendingUntrustedResponseParts = void 0;
8635
+ throw new InvalidStreamError(
8636
+ "Model response leaked thinking tags.",
8637
+ "PROTOCOL_TAG_LEAK"
8638
+ );
8639
+ }
8456
8640
  if (error instanceof StreamInactivityTimeoutError) {
8457
8641
  debugLogger4.warn("OpenAI stream inactivity timeout", {
8458
8642
  idleMs: error.idleMs,
@@ -6,29 +6,29 @@ import {
6
6
  parseAcpBaseModelId,
7
7
  resolveCliGenerationConfig,
8
8
  sanitizeProviderBaseUrl
9
- } from "./chunk-34MW4KTI.js";
9
+ } from "./chunk-BA5JGE5F.js";
10
10
  import {
11
11
  snapshotProcessEnv
12
- } from "./chunk-XLA62MYB.js";
12
+ } from "./chunk-KXECVZPD.js";
13
13
  import {
14
14
  STATUS_SCHEMA_VERSION
15
- } from "./chunk-VWPVHAMO.js";
15
+ } from "./chunk-XIWQ5QST.js";
16
16
  import {
17
17
  loadSettings
18
- } from "./chunk-4C5BQ2D2.js";
18
+ } from "./chunk-TIKDHS6V.js";
19
19
  import {
20
20
  ModelsConfig,
21
21
  resolveProviderProtocol
22
- } from "./chunk-NVYTCB5Z.js";
22
+ } from "./chunk-SA6QVLWI.js";
23
23
  import {
24
24
  APPROVAL_MODES
25
- } from "./chunk-4GORAUCN.js";
25
+ } from "./chunk-F333XEAU.js";
26
26
  import {
27
27
  tokenLimit
28
- } from "./chunk-524RQP4Q.js";
28
+ } from "./chunk-VRR65QYW.js";
29
29
  import {
30
30
  createDebugLogger
31
- } from "./chunk-J4TSQ5EQ.js";
31
+ } from "./chunk-7NFB7LBQ.js";
32
32
  import {
33
33
  init_esbuild_shims
34
34
  } from "./chunk-5O2XNYP6.js";
@@ -168,7 +168,7 @@ function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
168
168
  __name(buildWorkspaceProvidersStatus, "buildWorkspaceProvidersStatus");
169
169
  function resolveApprovalMode(settings) {
170
170
  const value = settings.tools?.approvalMode;
171
- if (typeof value !== "string") return "default" /* DEFAULT */;
171
+ if (typeof value !== "string") return "auto" /* AUTO */;
172
172
  const normalized = value.trim().toLowerCase().replaceAll("_", "-");
173
173
  const mode = normalized === "autoedit" ? "auto-edit" /* AUTO_EDIT */ : normalized;
174
174
  if (APPROVAL_MODES.includes(mode)) {
@@ -176,10 +176,10 @@ function resolveApprovalMode(settings) {
176
176
  }
177
177
  if (value.trim().length > 0) {
178
178
  debugLogger.warn(
179
- `[workspace-providers-status] unrecognized approvalMode "${value}", falling back to default`
179
+ `[workspace-providers-status] unrecognized approvalMode "${value}", falling back to auto`
180
180
  );
181
181
  }
182
- return "default" /* DEFAULT */;
182
+ return "auto" /* AUTO */;
183
183
  }
184
184
  __name(resolveApprovalMode, "resolveApprovalMode");
185
185
  function isMainSelectableModel(model) {
@@ -33,10 +33,36 @@ var WorkspacePermissionRulesSessionRequiredError = class extends Error {
33
33
  this.name = "WorkspacePermissionRulesSessionRequiredError";
34
34
  }
35
35
  };
36
+ var WorkspaceSkillNotFoundError = class extends Error {
37
+ constructor(skillName) {
38
+ super(`Skill not found: ${skillName}`);
39
+ this.skillName = skillName;
40
+ this.name = "WorkspaceSkillNotFoundError";
41
+ }
42
+ static {
43
+ __name(this, "WorkspaceSkillNotFoundError");
44
+ }
45
+ };
46
+ var WorkspaceSkillNotToggleableError = class extends Error {
47
+ constructor(skillName, reason, lockedScope) {
48
+ super(
49
+ lockedScope ? `Skill ${skillName} is locked by ${lockedScope} settings` : `Skill ${skillName} is not toggleable: ${reason}`
50
+ );
51
+ this.skillName = skillName;
52
+ this.reason = reason;
53
+ this.lockedScope = lockedScope;
54
+ this.name = "WorkspaceSkillNotToggleableError";
55
+ }
56
+ static {
57
+ __name(this, "WorkspaceSkillNotToggleableError");
58
+ }
59
+ };
36
60
 
37
61
  export {
38
62
  WorkspaceSettingsPartialPersistError,
39
- WorkspacePermissionRulesSessionRequiredError
63
+ WorkspacePermissionRulesSessionRequiredError,
64
+ WorkspaceSkillNotFoundError,
65
+ WorkspaceSkillNotToggleableError
40
66
  };
41
67
  /**
42
68
  * @license
@@ -7,15 +7,6 @@ import {
7
7
  __name
8
8
  } from "./chunk-J2S4EL5Y.js";
9
9
 
10
- // packages/cli/src/serve/channel-worker-env.ts
11
- init_esbuild_shims();
12
- var CHANNEL_DAEMON_WORKER_SENTINEL = "QWEN_CHANNEL_DAEMON_WORKER";
13
- var CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS = 15e3;
14
- var QWEN_DAEMON_TOKEN_ENV = "QWEN_DAEMON_TOKEN";
15
- var QWEN_DAEMON_URL_ENV = "QWEN_DAEMON_URL";
16
- var QWEN_DAEMON_WORKSPACE_ENV = "QWEN_DAEMON_WORKSPACE";
17
- var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
18
-
19
10
  // packages/cli/src/serve/channel-webhook-ipc.ts
20
11
  init_esbuild_shims();
21
12
  import { randomUUID } from "node:crypto";
@@ -65,12 +56,6 @@ function isChannelWebhookTaskResultMessage(value) {
65
56
  __name(isChannelWebhookTaskResultMessage, "isChannelWebhookTaskResultMessage");
66
57
 
67
58
  export {
68
- CHANNEL_DAEMON_WORKER_SENTINEL,
69
- CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
70
- QWEN_DAEMON_TOKEN_ENV,
71
- QWEN_DAEMON_URL_ENV,
72
- QWEN_DAEMON_WORKSPACE_ENV,
73
- QWEN_SERVER_TOKEN_ENV,
74
59
  ChannelWebhookEnqueueError,
75
60
  isChannelWebhookEnqueueErrorCode,
76
61
  isChannelWebhookEnqueueError,
@@ -2,20 +2,20 @@
2
2
  "use strict";
3
3
  import {
4
4
  formatFetchErrorForUser
5
- } from "./chunk-UOZWKTQG.js";
5
+ } from "./chunk-ZPAHLFZU.js";
6
6
  import {
7
7
  openBrowserSecurely
8
8
  } from "./chunk-JESCGQM3.js";
9
9
  import {
10
10
  atomicWriteFile
11
- } from "./chunk-ZLXQN2QS.js";
11
+ } from "./chunk-WIEO4CWB.js";
12
12
  import {
13
13
  combineAbortSignals
14
14
  } from "./chunk-DJ2GSRLV.js";
15
15
  import {
16
16
  Storage,
17
17
  createDebugLogger
18
- } from "./chunk-J4TSQ5EQ.js";
18
+ } from "./chunk-7NFB7LBQ.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-5O2XNYP6.js";
@@ -1,14 +1,14 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ is_in_ci_default
5
+ } from "./chunk-NHDKSOEY.js";
3
6
  import {
4
7
  require_react
5
8
  } from "./chunk-HTHUX2T5.js";
6
9
  import {
7
10
  themeManager
8
- } from "./chunk-MXL5UP4X.js";
9
- import {
10
- is_in_ci_default
11
- } from "./chunk-NHDKSOEY.js";
11
+ } from "./chunk-Q6TUALBE.js";
12
12
  import {
13
13
  eastAsianWidth,
14
14
  isFullWidth,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-QHTIBUWB.js";
17
17
  import {
18
18
  stripAnsi
19
- } from "./chunk-NVYTCB5Z.js";
19
+ } from "./chunk-SA6QVLWI.js";
20
20
  import {
21
21
  init_esbuild_shims
22
22
  } from "./chunk-5O2XNYP6.js";
@@ -1,26 +1,30 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- SETTINGS_DIRECTORY_NAME,
5
4
  V1_INDICATOR_KEYS,
5
+ resolveEnvVarsInObject
6
+ } from "./chunk-GOXKNSDZ.js";
7
+ import {
8
+ SETTINGS_DIRECTORY_NAME,
6
9
  getGlobalQwenDirLite,
7
10
  getSystemDefaultsPath,
8
- getSystemSettingsPath,
9
- resolveEnvVarsInObject
10
- } from "./chunk-3BTRNWWD.js";
11
+ getSystemSettingsPath
12
+ } from "./chunk-IDS7MSUP.js";
11
13
  import {
12
14
  DEFAULT_EXCLUDED_ENV_VARS,
13
15
  HOME_ENV_BOOTSTRAP_KEYS,
14
16
  PROJECT_ENV_HARDCODED_EXCLUSIONS
15
17
  } from "./chunk-QRUIS3DN.js";
16
18
  import {
17
- getPathComparisonVariants,
18
- isWithinRoot,
19
19
  require_strip_json_comments
20
- } from "./chunk-RDJSGHZE.js";
20
+ } from "./chunk-ALGGS7UH.js";
21
+ import {
22
+ getPathComparisonVariants,
23
+ isWithinRoot
24
+ } from "./chunk-MR3PXB6E.js";
21
25
  import {
22
26
  require_main
23
- } from "./chunk-ZJE7NSL3.js";
27
+ } from "./chunk-5M6IDOMF.js";
24
28
  import {
25
29
  init_esbuild_shims
26
30
  } from "./chunk-5O2XNYP6.js";