@qwen-code/qwen-code 0.19.9-nightly.20260714.9dd8389eb → 0.19.9-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +7 -0
  2. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  3. package/bundled/qc-helper/docs/qwen-serve.md +7 -2
  4. package/bundled/review/SKILL.md +23 -11
  5. package/chunks/{MaxSizedBox-QAYHOC4F.js → MaxSizedBox-BEVSAWZ6.js} +10 -11
  6. package/chunks/{StandaloneSessionPicker-D3R6YYX3.js → StandaloneSessionPicker-2DA2MDDE.js} +22 -23
  7. package/chunks/{acpAgent-ENHBW72A.js → acpAgent-G3WJU3PS.js} +189 -93
  8. package/chunks/{agent-57LX4KMG.js → agent-DD3WSHXE.js} +7 -8
  9. package/chunks/{agent-headless-AC6EVNAP.js → agent-headless-MHI7U2CU.js} +7 -8
  10. package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-MIZLXBLF.js} +1 -1
  11. package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-XMJVPNWM.js} +1 -1
  12. package/chunks/{bridge-4OZH44MK.js → bridge-HKEWPNB5.js} +10 -11
  13. package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-YSFB4HUU.js} +2 -2
  14. package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-QCKIOYZD.js} +2 -2
  15. package/chunks/{chunk-DKXW66XA.js → chunk-2FMQQXMM.js} +1 -1
  16. package/chunks/{chunk-UI3W56WF.js → chunk-2J4ZWME4.js} +1 -1
  17. package/chunks/{chunk-QABSSDQH.js → chunk-2TQXXQMI.js} +1 -1
  18. package/chunks/{chunk-DNKX35GS.js → chunk-2UW5RFRP.js} +4 -4
  19. package/chunks/{chunk-DPSWJWZI.js → chunk-2W3OOD4W.js} +1 -0
  20. package/chunks/{chunk-MBJ3D6SF.js → chunk-43RXPU5Q.js} +1 -1
  21. package/chunks/{chunk-AAS2Q2TV.js → chunk-4QZ3XHWE.js} +2 -2
  22. package/chunks/{chunk-ZRKBI3DP.js → chunk-4QZADKJS.js} +1 -1
  23. package/chunks/{chunk-G6QTKQN4.js → chunk-54UZQ57N.js} +3 -3
  24. package/chunks/{chunk-YH4J5XI3.js → chunk-5VHASII5.js} +4 -4
  25. package/chunks/{chunk-AAWKZ5R7.js → chunk-6JPDCEDB.js} +1 -1
  26. package/chunks/{chunk-7NAWTFVY.js → chunk-6WPJRYLZ.js} +2 -2
  27. package/chunks/{chunk-JR63TOV4.js → chunk-7DKX4A5Z.js} +1 -1
  28. package/chunks/{chunk-T2L6SGQY.js → chunk-7IDCQ35Q.js} +37 -6
  29. package/chunks/{chunk-6OATMEYN.js → chunk-7STBROEV.js} +1 -1
  30. package/chunks/{chunk-7BIZARI2.js → chunk-A3U2TQUL.js} +4 -4
  31. package/chunks/{chunk-WN4D7YCI.js → chunk-A7W4GQRW.js} +1 -1
  32. package/chunks/{chunk-SE74CIZD.js → chunk-AAUZBE5Y.js} +1 -1
  33. package/chunks/{chunk-CLTWL6HD.js → chunk-ADLYZJYZ.js} +6 -6
  34. package/chunks/{chunk-SXU3KKNI.js → chunk-AU4R7ACM.js} +4 -0
  35. package/chunks/{chunk-URU5UEK6.js → chunk-B7MFJBKE.js} +1 -1
  36. package/chunks/{chunk-E67NFMF4.js → chunk-BLPMRN4B.js} +1 -1
  37. package/chunks/{chunk-7U7UIO5W.js → chunk-BXT6PQ73.js} +20 -5
  38. package/chunks/{chunk-ASVORVFT.js → chunk-CEGKYZDB.js} +1 -1
  39. package/chunks/{chunk-Z56JO4JZ.js → chunk-DMVA55W5.js} +7 -7
  40. package/chunks/{chunk-T5C2OUCI.js → chunk-DQCCLVQK.js} +3 -3
  41. package/chunks/{chunk-HE54PGVI.js → chunk-EAHMOXLL.js} +2 -2
  42. package/chunks/{chunk-C4CXFRKY.js → chunk-EJ3KGYWL.js} +25 -4
  43. package/chunks/{chunk-CSACSGAW.js → chunk-ERTHKDKN.js} +2 -2
  44. package/chunks/{chunk-OCC3UTWA.js → chunk-EX5OULP3.js} +1 -1
  45. package/chunks/{chunk-TXY2C3D2.js → chunk-F333XEAU.js} +1 -1
  46. package/chunks/{chunk-GYGGUR4Q.js → chunk-FEOBU3FA.js} +5 -5
  47. package/chunks/{chunk-PMRH4YYW.js → chunk-FI2WSOWX.js} +2 -1
  48. package/chunks/{chunk-N7FCSERB.js → chunk-GN5HJJBO.js} +1 -1
  49. package/chunks/{chunk-EU3U7USF.js → chunk-GTENQOEJ.js} +2 -2
  50. package/chunks/{chunk-MBP3K324.js → chunk-HCJTURZD.js} +32 -11
  51. package/chunks/{chunk-K3PPUB46.js → chunk-HGG2RRXD.js} +1 -1
  52. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  53. package/chunks/{chunk-X7EBAABW.js → chunk-HJCVNZLQ.js} +1 -1
  54. package/chunks/{chunk-SSFDPGFN.js → chunk-HJUDVNCO.js} +7959 -5497
  55. package/chunks/{chunk-6HHAADP2.js → chunk-HRUGYOJN.js} +4 -4
  56. package/chunks/{chunk-T7FSRWQ5.js → chunk-HWTL6MPR.js} +114 -9
  57. package/chunks/{chunk-HZYUNZDQ.js → chunk-JCD4FM7K.js} +1 -1
  58. package/chunks/{chunk-DMTQY5GY.js → chunk-JGO6RFI2.js} +3 -3
  59. package/chunks/{chunk-2UUAIFQO.js → chunk-JGUT3LWZ.js} +5 -0
  60. package/chunks/{chunk-S2QXYLUB.js → chunk-JW7OOJC6.js} +1 -1
  61. package/chunks/{chunk-4FPUAYTT.js → chunk-KF5MMGG4.js} +4 -4
  62. package/chunks/{chunk-XHW5VUIQ.js → chunk-LHEOLOXU.js} +157 -55
  63. package/chunks/{chunk-2MF6ICOL.js → chunk-LSEJG6AM.js} +36 -8
  64. package/chunks/{chunk-AGBFWLA5.js → chunk-MKK4XGLF.js} +1 -1
  65. package/chunks/{chunk-4LJNI7MU.js → chunk-MO7O5722.js} +262 -7
  66. package/chunks/{chunk-FDL4PB5H.js → chunk-MRYWYBQ4.js} +8 -8
  67. package/chunks/{chunk-ZLM3KXBT.js → chunk-NRAFASYX.js} +15 -14
  68. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  69. package/chunks/{chunk-B6KHOCU7.js → chunk-PMKW35AT.js} +14 -10
  70. package/chunks/{chunk-YWUK7OS7.js → chunk-QE2WJ7FS.js} +1 -1
  71. package/chunks/{chunk-B6ABUBYY.js → chunk-QUJOI7SR.js} +67 -5
  72. package/chunks/{chunk-WM5HY72H.js → chunk-R5D5JOAM.js} +2 -2
  73. package/chunks/{chunk-BBNVFRGD.js → chunk-R5XLNDE2.js} +1 -1
  74. package/chunks/{chunk-RJL5T4WJ.js → chunk-SMSFWUFY.js} +53 -40
  75. package/chunks/{chunk-WWQ3QIJS.js → chunk-UFDX27PL.js} +11 -11
  76. package/chunks/{chunk-LAM6CGP5.js → chunk-UGN6CTNZ.js} +3 -3
  77. package/chunks/{chunk-AUGSSJX3.js → chunk-UNLRKDMW.js} +3 -3
  78. package/chunks/{chunk-4QOPEEL2.js → chunk-VEETSXYX.js} +1 -1
  79. package/chunks/{chunk-P3S67A5R.js → chunk-VKS7EIOA.js} +4 -4
  80. package/chunks/{chunk-PHYCWSDG.js → chunk-VVDNGM6X.js} +1 -1
  81. package/chunks/{chunk-J2TDDOSM.js → chunk-WMC6HH7Y.js} +1 -1
  82. package/chunks/{chunk-WX6SD4IQ.js → chunk-WTNZ6DXB.js} +1 -1
  83. package/chunks/{chunk-EUNRLYJG.js → chunk-X6ODDESK.js} +4 -4
  84. package/chunks/{chunk-V75IOTWF.js → chunk-XDPYM5DE.js} +4 -4
  85. package/chunks/{chunk-4DYYRLIE.js → chunk-ZA74ZTQU.js} +644 -321
  86. package/chunks/{chunk-SUWGUGAD.js → chunk-ZGE3222J.js} +2 -2
  87. package/chunks/{chunk-OATTJGPJ.js → chunk-ZP4ZZJJG.js} +7 -7
  88. package/chunks/{computer-use-DIP5BWXP.js → computer-use-SHA6C3ES.js} +7 -8
  89. package/chunks/{config-utils-CFT33LTP.js → config-utils-XSHOMMK4.js} +3 -3
  90. package/chunks/{contextCommand-QU4GJWWD.js → contextCommand-HOAF5LUC.js} +9 -10
  91. package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-EAB2U5XW.js} +1 -1
  92. package/chunks/{create-sub-session-TCLIYVGR.js → create-sub-session-WJOWBFEP.js} +7 -8
  93. package/chunks/{cron-create-36TIFKRT.js → cron-create-GMVKSXZT.js} +1 -1
  94. package/chunks/{cron-delete-OQD3WULU.js → cron-delete-VDZKUAVK.js} +1 -1
  95. package/chunks/{cron-list-4533T2FH.js → cron-list-UG7C7RAR.js} +1 -1
  96. package/chunks/{daemon-CEZ27OH4.js → daemon-MI5HF26N.js} +343 -40
  97. package/chunks/{daemon-status-provider-SIBFMLBQ.js → daemon-status-provider-KFL3LRTP.js} +14 -15
  98. package/chunks/{dist-JZE7F6YR.js → dist-IEXZC5ZR.js} +1 -1
  99. package/chunks/{dist-ERCPDVA6.js → dist-PQK4GCKA.js} +1 -1
  100. package/chunks/{dist-3V3ZV6ML.js → dist-U75JK3PF.js} +1 -1
  101. package/chunks/{dist-PHEPJLXD.js → dist-VXO7QBON.js} +2 -2
  102. package/chunks/{dist-HNN7DR2L.js → dist-WH4TZSH3.js} +1 -1
  103. package/chunks/{dist-MOEC47TR.js → dist-X2ABIW5R.js} +1 -1
  104. package/chunks/{earlyInputCapture-L66BEG2C.js → earlyInputCapture-PKAQJMIP.js} +7 -8
  105. package/chunks/{edit-Y5LAJSST.js → edit-6TXLYHJ2.js} +7 -8
  106. package/chunks/{enter-worktree-X5LML7T4.js → enter-worktree-ZTILGPJX.js} +7 -8
  107. package/chunks/{enterPlanMode-XWF32QOW.js → enterPlanMode-62HRAMCH.js} +7 -8
  108. package/chunks/{environment-YVMA5F4I.js → environment-OYA3ZVEL.js} +9 -10
  109. package/chunks/{errors-4Y5SUAOC.js → errors-BFXOUUUR.js} +9 -10
  110. package/chunks/{exit-worktree-SFHU7XYC.js → exit-worktree-HHJ5M6MV.js} +7 -8
  111. package/chunks/{exitPlanMode-FP3NAN6E.js → exitPlanMode-M3SWHCL7.js} +7 -8
  112. package/chunks/{fast-path-ZJNFFCBM.js → fast-path-3VMPLM74.js} +2 -2
  113. package/chunks/{gemini-5CAB22BI.js → gemini-ZCGVYOJL.js} +100 -42
  114. package/chunks/{geminiContentGenerator-GE3HPIFB.js → geminiContentGenerator-XBYBAIDQ.js} +1 -1
  115. package/chunks/{glob-YPACZAEL.js → glob-UOEYQNHN.js} +7 -8
  116. package/chunks/{grep-IPR4XW37.js → grep-OQM3CH7W.js} +7 -8
  117. package/chunks/{handleAutoUpdate-P2KEP56V.js → handleAutoUpdate-ORBYVJHZ.js} +11 -12
  118. package/chunks/{i18n-BRCT66AA.js → i18n-NBP574CO.js} +8 -9
  119. package/chunks/{initializer-34HXSK3A.js → initializer-CWD7TCCD.js} +12 -13
  120. package/chunks/{installationInfo-WOTDQMSC.js → installationInfo-CHPDUPWC.js} +8 -9
  121. package/chunks/{list-XOGP7UPP.js → list-ZTTO362W.js} +15 -16
  122. package/chunks/{loadedSettingsAdapter-L4YKGU6F.js → loadedSettingsAdapter-V4ZTRKUO.js} +12 -13
  123. package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-C4EXLYVA.js} +2 -2
  124. package/chunks/{ls-RXNIAQDE.js → ls-2OUTG3IZ.js} +1 -1
  125. package/chunks/{lsp-HB5LM5IL.js → lsp-4VMNXZW6.js} +1 -1
  126. package/chunks/{mcp-HH7DIP7Y.js → mcp-UH5PSGIK.js} +12 -13
  127. package/chunks/{monitor-25DEBT6U.js → monitor-F4NYEU5J.js} +7 -8
  128. package/chunks/{nonInteractiveCli-CT3VSSLK.js → nonInteractiveCli-7IHPXVNH.js} +43 -44
  129. package/chunks/{notebook-edit-TAVXSWQ6.js → notebook-edit-HPDXNGQH.js} +7 -8
  130. package/chunks/{openaiContentGenerator-6I7DKUAN.js → openaiContentGenerator-OBDNNOE2.js} +4 -4
  131. package/chunks/{pidfile-SIQGCFLZ.js → pidfile-AUMGYIOK.js} +7 -8
  132. package/chunks/{qwenContentGenerator-5DDIXI2N.js → qwenContentGenerator-LH2U2YRG.js} +8 -9
  133. package/chunks/{read-file-WDOAYRFU.js → read-file-HUUFBLEO.js} +3 -3
  134. package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-JUFHCKSC.js} +1 -1
  135. package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-DWSMBXYY.js} +1 -1
  136. package/chunks/{ripGrep-MI7PHN3Q.js → ripGrep-C7X33LU6.js} +7 -8
  137. package/chunks/{run-qwen-serve-PNTYF3RE.js → run-qwen-serve-DGW5AFDJ.js} +229 -80
  138. package/chunks/{runtime-V3FBMUTG.js → runtime-NYUSLBEZ.js} +16 -17
  139. package/chunks/{scheduler-4TAUIJBM.js → scheduler-5VKDXULT.js} +7 -8
  140. package/chunks/{send-message-SR4WSXP2.js → send-message-JZ752NWD.js} +2 -2
  141. package/chunks/{serve-WB2TR7XM.js → serve-UTAHSFXH.js} +12 -13
  142. package/chunks/{server-AF6LNFPK.js → server-VUHSYSUV.js} +2751 -774
  143. package/chunks/{session-BIGK4NRW.js → session-QSGSSNFB.js} +44 -45
  144. package/chunks/{settings-IXF5FIQO.js → settings-X24RYEED.js} +11 -12
  145. package/chunks/{shell-5VWJ2PPG.js → shell-4MSI2R4O.js} +9 -8
  146. package/chunks/{skill-SI667Y3B.js → skill-JR3GTNVZ.js} +3 -3
  147. package/chunks/{spawnChannel-IKX6DD7J.js → spawnChannel-RFAAO44J.js} +9 -10
  148. package/chunks/{src-55DZWDAK.js → src-YDBNMIIM.js} +40 -9
  149. package/chunks/{standalone-update-MHLSFHE6.js → standalone-update-4CY4HKGC.js} +9 -10
  150. package/chunks/{startInteractiveUI-V2EDWLAX.js → startInteractiveUI-FOD7MMVB.js} +183 -131
  151. package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-LELY6HAI.js} +2 -2
  152. package/chunks/{task-create-NUFOHU53.js → task-create-QY3BIMNM.js} +3 -3
  153. package/chunks/{task-list-Z2IKQY3S.js → task-list-D2U47WBJ.js} +1 -1
  154. package/chunks/{task-stop-KQFIVQTJ.js → task-stop-N6E5IYLH.js} +1 -1
  155. package/chunks/{task-update-HKADXSTD.js → task-update-HJCQILLB.js} +3 -3
  156. package/chunks/{team-create-IZAMLBJS.js → team-create-ZLQSU2E3.js} +7 -8
  157. package/chunks/{team-delete-SDNTGZLG.js → team-delete-RCWYDRF4.js} +1 -1
  158. package/chunks/{team-plan-approval-3R4RCKCP.js → team-plan-approval-YUAYBYLS.js} +7 -8
  159. package/chunks/{theme-manager-LCOXZ5DO.js → theme-manager-SKNEBMOG.js} +7 -8
  160. package/chunks/{todoWrite-YNXB27GB.js → todoWrite-FKCGATPJ.js} +1 -1
  161. package/chunks/{tool-search-NYNCD5LF.js → tool-search-V5J3TGWY.js} +4 -4
  162. package/chunks/{total-session-admission-PJWGOMQE.js → total-session-admission-2WIH72I3.js} +10 -11
  163. package/chunks/{trustedFolders-DOJDHNYP.js → trustedFolders-JF265CRI.js} +8 -9
  164. package/chunks/types-ML3TRJQ5.js +16 -0
  165. package/chunks/{updateCheck-ZXL66KIG.js → updateCheck-AMXNPBP6.js} +9 -10
  166. package/chunks/{validateNonInterActiveAuth-JSNJZCYY.js → validateNonInterActiveAuth-6YHQO7PD.js} +39 -40
  167. package/chunks/{version-3NLBENG5.js → version-UEJJK7PE.js} +1 -1
  168. package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-QGODBB6S.js} +2 -2
  169. package/chunks/{workflow-BQYLF7XP.js → workflow-5YFA5V4M.js} +8 -9
  170. package/chunks/{workspace-providers-status-FA2DGEZW.js → workspace-providers-status-LMBLBNR7.js} +15 -16
  171. package/chunks/{workspace-registration-store-TARTAGMI.js → workspace-registration-store-VV2S4MSV.js} +1 -1
  172. package/chunks/{workspace-registry-AGE7WAXX.js → workspace-registry-BVMPYRLN.js} +10 -11
  173. package/chunks/{workspace-service-ERC5VR2B.js → workspace-service-PUYIZ3J4.js} +22 -19
  174. package/chunks/{workspace-skills-status-FKYWGNCN.js → workspace-skills-status-CJ7J2KPP.js} +14 -15
  175. package/chunks/{write-file-S47KSK7Z.js → write-file-OV77M6X7.js} +7 -8
  176. package/cli.js +11 -11
  177. package/package.json +3 -3
  178. package/web-shell/assets/{arc-Zj4EkBUY.js → arc-CObt_TK9.js} +1 -1
  179. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DAk1Ua3Y.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
  180. package/web-shell/assets/{blockDiagram-GPEHLZMM-DBNqUthM.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
  181. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dq5QGJ53.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
  182. package/web-shell/assets/channel-BBaLq8MV.js +1 -0
  183. package/web-shell/assets/{chunk-2J33WTMH-DY0AeGru.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
  184. package/web-shell/assets/{chunk-4BX2VUAB-COX3OyIi.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
  185. package/web-shell/assets/{chunk-55IACEB6-Csoyddbh.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
  186. package/web-shell/assets/{chunk-727SXJPM-BJPONdxX.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
  187. package/web-shell/assets/{chunk-AQP2D5EJ-syLVH6fg.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
  188. package/web-shell/assets/{chunk-FMBD7UC4-Cfm59Nhw.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
  189. package/web-shell/assets/{chunk-ND2GUHAM-DZf6tAqS.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
  190. package/web-shell/assets/{chunk-QZHKN3VN-DKBp_v5q.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
  191. package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
  192. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
  193. package/web-shell/assets/{cose-bilkent-S5V4N54A-DUU3mMQ5.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
  194. package/web-shell/assets/{dagre-BM42HDAG-BUgNfbh-.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
  195. package/web-shell/assets/{diagram-2AECGRRQ-DT7MVfAg.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
  196. package/web-shell/assets/{diagram-5GNKFQAL-Cv4YG-ec.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
  197. package/web-shell/assets/{diagram-KO2AKTUF-BAe9LLkn.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
  198. package/web-shell/assets/{diagram-LMA3HP47-DW8wqTIP.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
  199. package/web-shell/assets/{diagram-OG6HWLK6-CmkuWbaK.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
  200. package/web-shell/assets/{erDiagram-TEJ5UH35-DwvdHjZ9.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
  201. package/web-shell/assets/{flowDiagram-I6XJVG4X-CSsXrhW_.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
  202. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BtuznCdi.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +1 -1
  203. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DGmAm06g.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
  204. package/web-shell/assets/index-3uAT3ehO.css +5 -0
  205. package/web-shell/assets/{index-BEtz1cvN.js → index-CVHa2QH7.js} +1 -1
  206. package/web-shell/assets/index-D1KigWat.js +1128 -0
  207. package/web-shell/assets/{infoDiagram-5YYISTIA-OAiZ1q0K.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
  208. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DyK0KTIT.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
  209. package/web-shell/assets/{journeyDiagram-JHISSGLW-DzYJlwfO.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
  210. package/web-shell/assets/{kanban-definition-UN3LZRKU-CU_tcDwi.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
  211. package/web-shell/assets/{linear-DvZXjF17.js → linear-vpW4FrZs.js} +1 -1
  212. package/web-shell/assets/{mermaid.core-_ZFEQlOl.js → mermaid.core-DsHRUnDd.js} +5 -5
  213. package/web-shell/assets/{mindmap-definition-RKZ34NQL-Or4p64HB.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
  214. package/web-shell/assets/{pieDiagram-4H26LBE5-lXE-zZ6b.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
  215. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DUXb9mUV.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
  216. package/web-shell/assets/{requirementDiagram-4Y6WPE33-D_10uHfo.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
  217. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-E8c0fPqe.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
  218. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CJMtFttK.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
  219. package/web-shell/assets/{stateDiagram-AJRCARHV-DhbviRbB.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
  220. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
  221. package/web-shell/assets/{timeline-definition-PNZ67QCA-CM5yMkFK.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
  222. package/web-shell/assets/{vennDiagram-CIIHVFJN-BCi-zWNN.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
  223. package/web-shell/assets/{wardley-L42UT6IY-BJ_yJNjJ.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
  224. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-TjtLk-qN.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
  225. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1TjyoQ3.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
  226. package/web-shell/index.html +2 -2
  227. package/chunks/chunk-CU3L64TP.js +0 -93
  228. package/chunks/types-JNKGKUJT.js +0 -12
  229. package/web-shell/assets/channel-DWfYijFS.js +0 -1
  230. package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +0 -1
  231. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +0 -1
  232. package/web-shell/assets/index-B9Xwf4OS.css +0 -5
  233. package/web-shell/assets/index-BUkM4ZXX.js +0 -1088
  234. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CntljfwW.js +0 -1
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  buildPermissionSettings
5
- } from "./chunk-S2QXYLUB.js";
5
+ } from "./chunk-JW7OOJC6.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-C4CXFRKY.js";
10
+ } from "./chunk-EJ3KGYWL.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,11 +16,13 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-N7FCSERB.js";
19
+ } from "./chunk-GN5HJJBO.js";
20
20
  import {
21
21
  WorkspacePermissionRulesSessionRequiredError,
22
- WorkspaceSettingsPartialPersistError
23
- } from "./chunk-WL4L7EZH.js";
22
+ WorkspaceSettingsPartialPersistError,
23
+ WorkspaceSkillNotFoundError,
24
+ WorkspaceSkillNotToggleableError
25
+ } from "./chunk-OA4JVLSA.js";
24
26
  import {
25
27
  MCP_RESTART_SERVER_DEADLINE_MS
26
28
  } from "./chunk-OCPBI7J5.js";
@@ -34,6 +36,7 @@ import {
34
36
  WorkspaceInitSymlinkError
35
37
  } from "./chunk-KSO42X3Z.js";
36
38
  import {
39
+ BridgeChannelClosedError,
37
40
  SERVE_CONTROL_EXT_METHODS,
38
41
  SERVE_STATUS_EXT_METHODS,
39
42
  STATUS_SCHEMA_VERSION,
@@ -45,20 +48,20 @@ import {
45
48
  createIdleWorkspaceProvidersStatus,
46
49
  createIdleWorkspaceSkillsStatus,
47
50
  mapDomainErrorToErrorKind
48
- } from "./chunk-PMRH4YYW.js";
51
+ } from "./chunk-FI2WSOWX.js";
49
52
  import {
50
53
  getPersistScopeForModelSelection,
51
54
  loadSettings
52
- } from "./chunk-T2L6SGQY.js";
55
+ } from "./chunk-7IDCQ35Q.js";
53
56
  import {
54
57
  getWorkspaceTrustStatus
55
- } from "./chunk-X7EBAABW.js";
58
+ } from "./chunk-HJCVNZLQ.js";
56
59
  import {
57
60
  writeStderrLine
58
61
  } from "./chunk-YUZI3WAC.js";
59
62
  import {
60
63
  ModelsConfig
61
- } from "./chunk-SSFDPGFN.js";
64
+ } from "./chunk-HJUDVNCO.js";
62
65
  import {
63
66
  createDebugLogger
64
67
  } from "./chunk-7NFB7LBQ.js";
@@ -96,14 +99,11 @@ function voiceSettingsScopeToWire(scope) {
96
99
  }
97
100
  __name(voiceSettingsScopeToWire, "voiceSettingsScopeToWire");
98
101
  function buildWorkspaceVoiceSettingsWrites(settings, update, opts = {}) {
99
- const voiceSettingsScope = getVoiceSettingsScope(
100
- settings,
101
- opts.workspaceTrusted
102
- );
102
+ const voiceSettingsScope = opts.scopeOverride ?? getVoiceSettingsScope(settings, opts.workspaceTrusted);
103
103
  const writes = [];
104
104
  if (update.voiceModel !== void 0) {
105
105
  writes.push({
106
- scope: getPersistScopeForModelSelection(settings),
106
+ scope: opts.scopeOverride ?? getPersistScopeForModelSelection(settings),
107
107
  key: "voiceModel",
108
108
  value: update.voiceModel
109
109
  });
@@ -158,13 +158,13 @@ function listAvailableVoiceModels(settings) {
158
158
  );
159
159
  }
160
160
  __name(listAvailableVoiceModels, "listAvailableVoiceModels");
161
- function hasConfiguredBatchVoiceTranscriptionModel(settings) {
161
+ function hasConfiguredBatchVoiceTranscriptionModel(settings, opts = {}) {
162
162
  for (const model of listAvailableVoiceModels(settings)) {
163
163
  if (model.transport !== "qwen-asr-chat") {
164
164
  continue;
165
165
  }
166
166
  try {
167
- validateWorkspaceVoiceConfig(settings, model.id);
167
+ validateWorkspaceVoiceConfig(settings, model.id, opts);
168
168
  return true;
169
169
  } catch (err) {
170
170
  debugLogger.debug(
@@ -223,14 +223,24 @@ function validateWorkspaceVoiceModel(settings, voiceModel) {
223
223
  return { id: model.id, transport };
224
224
  }
225
225
  __name(validateWorkspaceVoiceModel, "validateWorkspaceVoiceModel");
226
- function validateWorkspaceVoiceConfig(settings, voiceModel) {
226
+ function validateWorkspaceVoiceConfig(settings, voiceModel, opts = {}) {
227
227
  const descriptor = validateWorkspaceVoiceModel(settings, voiceModel);
228
228
  try {
229
229
  const config = createVoiceModelSource(settings);
230
230
  if (descriptor.transport === "qwen-asr-chat") {
231
- resolveVoiceTranscriptionConfig({ config, settings, voiceModel });
231
+ resolveVoiceTranscriptionConfig({
232
+ config,
233
+ settings,
234
+ voiceModel,
235
+ env: opts.env
236
+ });
232
237
  } else {
233
- resolveVoiceStreamConfig({ config, settings, voiceModel });
238
+ resolveVoiceStreamConfig({
239
+ config,
240
+ settings,
241
+ voiceModel,
242
+ env: opts.env
243
+ });
234
244
  }
235
245
  } catch (err) {
236
246
  throw new WorkspaceVoiceError(
@@ -242,7 +252,7 @@ function validateWorkspaceVoiceConfig(settings, voiceModel) {
242
252
  return descriptor;
243
253
  }
244
254
  __name(validateWorkspaceVoiceConfig, "validateWorkspaceVoiceConfig");
245
- function validateWorkspaceVoiceState(settings, update) {
255
+ function validateWorkspaceVoiceState(settings, update, opts = {}) {
246
256
  if (update.enabled === void 0 && update.mode === void 0 && update.language === void 0 && update.voiceModel === void 0) {
247
257
  throw new WorkspaceVoiceError(
248
258
  400,
@@ -265,7 +275,7 @@ function validateWorkspaceVoiceState(settings, update) {
265
275
  "A valid voiceModel is required before enabling voice."
266
276
  );
267
277
  }
268
- validateWorkspaceVoiceConfig(settings, nextVoiceModel);
278
+ validateWorkspaceVoiceConfig(settings, nextVoiceModel, opts);
269
279
  }
270
280
  __name(validateWorkspaceVoiceState, "validateWorkspaceVoiceState");
271
281
  async function transcribeWorkspaceVoiceAudio(input) {
@@ -286,6 +296,7 @@ async function transcribeWorkspaceVoiceAudio(input) {
286
296
  config: createVoiceModelSource(input.settings),
287
297
  settings: input.settings,
288
298
  voiceModel: input.voiceModel,
299
+ env: input.env,
289
300
  abortSignal: input.abortSignal
290
301
  }
291
302
  );
@@ -360,8 +371,11 @@ function createDaemonWorkspaceService(deps) {
360
371
  workspaceSkillsStatusProvider,
361
372
  isChannelLive,
362
373
  persistDisabledTools,
374
+ persistDisabledSkills,
363
375
  persistSetting,
364
376
  persistSettings,
377
+ voiceEnv,
378
+ voiceSettingsScope,
365
379
  preheatAcpChild: preheatAcpChildOnBridge,
366
380
  queryWorkspaceStatus,
367
381
  invokeWorkspaceCommand,
@@ -370,6 +384,35 @@ function createDaemonWorkspaceService(deps) {
370
384
  } = deps;
371
385
  let lastWorkspaceSkillsStatus;
372
386
  let inFlightAcpPreheat;
387
+ const getWorkspaceSkillsStatus = /* @__PURE__ */ __name(async () => {
388
+ let status;
389
+ try {
390
+ status = await queryWorkspaceStatus(
391
+ SERVE_STATUS_EXT_METHODS.workspaceSkills,
392
+ () => createIdleWorkspaceSkillsStatus(boundWorkspace)
393
+ );
394
+ } catch (err) {
395
+ writeStderrLine(
396
+ `qwen serve: getWorkspaceSkillsStatus query failed: ${err instanceof Error ? err.message : String(err)}`
397
+ );
398
+ status = createIdleWorkspaceSkillsStatus(boundWorkspace);
399
+ }
400
+ if (status.initialized) {
401
+ lastWorkspaceSkillsStatus = status;
402
+ return status;
403
+ }
404
+ if (lastWorkspaceSkillsStatus) return lastWorkspaceSkillsStatus;
405
+ if (workspaceSkillsStatusProvider) {
406
+ try {
407
+ return await workspaceSkillsStatusProvider(boundWorkspace);
408
+ } catch (err) {
409
+ writeStderrLine(
410
+ `qwen serve: getWorkspaceSkillsStatus local provider failed: ${err instanceof Error ? err.message : String(err)}`
411
+ );
412
+ }
413
+ }
414
+ return status;
415
+ }, "getWorkspaceSkillsStatus");
373
416
  return {
374
417
  // -- Status queries (delegate to ACP child via queryWorkspaceStatus) --
375
418
  async getWorkspaceMcpStatus(_ctx) {
@@ -379,35 +422,7 @@ function createDaemonWorkspaceService(deps) {
379
422
  );
380
423
  },
381
424
  async getWorkspaceSkillsStatus(_ctx) {
382
- let status;
383
- try {
384
- status = await queryWorkspaceStatus(
385
- SERVE_STATUS_EXT_METHODS.workspaceSkills,
386
- () => createIdleWorkspaceSkillsStatus(boundWorkspace)
387
- );
388
- } catch (err) {
389
- writeStderrLine(
390
- `qwen serve: getWorkspaceSkillsStatus query failed: ${err instanceof Error ? err.message : String(err)}`
391
- );
392
- status = createIdleWorkspaceSkillsStatus(boundWorkspace);
393
- }
394
- if (status.initialized) {
395
- lastWorkspaceSkillsStatus = status;
396
- return status;
397
- }
398
- if (lastWorkspaceSkillsStatus) {
399
- return lastWorkspaceSkillsStatus;
400
- }
401
- if (workspaceSkillsStatusProvider) {
402
- try {
403
- return await workspaceSkillsStatusProvider(boundWorkspace);
404
- } catch (err) {
405
- writeStderrLine(
406
- `qwen serve: getWorkspaceSkillsStatus local provider failed: ${err instanceof Error ? err.message : String(err)}`
407
- );
408
- }
409
- }
410
- return status;
425
+ return getWorkspaceSkillsStatus();
411
426
  },
412
427
  async getWorkspaceProvidersStatus(_ctx) {
413
428
  if (workspaceProvidersStatusProvider) {
@@ -566,7 +581,10 @@ function createDaemonWorkspaceService(deps) {
566
581
  async getWorkspaceVoiceStatus(_ctx) {
567
582
  return buildWorkspaceVoiceStatus(
568
583
  boundWorkspace,
569
- loadSettings(boundWorkspace)
584
+ loadSettings(
585
+ boundWorkspace,
586
+ voiceEnv ? { skipLoadEnvironment: true } : true
587
+ )
570
588
  );
571
589
  },
572
590
  // -- Mutations --
@@ -619,11 +637,15 @@ function createDaemonWorkspaceService(deps) {
619
637
  "Workspace voice settings persistence is not available"
620
638
  );
621
639
  }
622
- const settings = loadSettings(boundWorkspace);
623
- validateWorkspaceVoiceState(settings, request);
640
+ const settings = loadSettings(
641
+ boundWorkspace,
642
+ voiceEnv ? { skipLoadEnvironment: true } : true
643
+ );
644
+ validateWorkspaceVoiceState(settings, request, { env: voiceEnv });
624
645
  const workspaceTrusted = getWorkspaceTrustStatus(settings.merged, boundWorkspace).effective.state === "trusted";
625
646
  const writes = buildWorkspaceVoiceSettingsWrites(settings, request, {
626
- workspaceTrusted
647
+ workspaceTrusted,
648
+ ...voiceSettingsScope ? { scopeOverride: voiceSettingsScope } : {}
627
649
  });
628
650
  const publishWrite = /* @__PURE__ */ __name((write) => {
629
651
  publishWorkspaceEvent({
@@ -664,6 +686,9 @@ function createDaemonWorkspaceService(deps) {
664
686
  writeStderrLine(
665
687
  `qwen serve: workspace voice partial persist error (workspace=${boundWorkspace}, committed=${committed.length}/${writes.length}, failedKey=${write.key}, failedScope=${voiceSettingsScopeToWire(write.scope)}): ${err instanceof Error ? err.message : String(err)}`
666
688
  );
689
+ for (const committedWrite of committed) {
690
+ publishWrite(committedWrite);
691
+ }
667
692
  throw new WorkspaceSettingsPartialPersistError(
668
693
  `Voice settings partial persist failed: committed=${committed.length}/${writes.length}`,
669
694
  committed,
@@ -678,7 +703,10 @@ function createDaemonWorkspaceService(deps) {
678
703
  }
679
704
  return buildWorkspaceVoiceStatus(
680
705
  boundWorkspace,
681
- loadSettings(boundWorkspace)
706
+ loadSettings(
707
+ boundWorkspace,
708
+ voiceEnv ? { skipLoadEnvironment: true } : true
709
+ )
682
710
  );
683
711
  },
684
712
  async setWorkspaceToolEnabled(ctx, toolName, enabled) {
@@ -690,6 +718,80 @@ function createDaemonWorkspaceService(deps) {
690
718
  });
691
719
  return { toolName, enabled };
692
720
  },
721
+ async setWorkspaceSkillEnabled(ctx, requestedSkillName, enabled) {
722
+ const normalizedName = requestedSkillName.trim().toLowerCase();
723
+ const status = await getWorkspaceSkillsStatus();
724
+ const skill = status.skills.find(
725
+ (candidate) => candidate.name.trim().toLowerCase() === normalizedName
726
+ );
727
+ if (!skill) throw new WorkspaceSkillNotFoundError(requestedSkillName);
728
+ if (skill.userInvocable === false) {
729
+ throw new WorkspaceSkillNotToggleableError(
730
+ skill.name,
731
+ "not_user_invocable"
732
+ );
733
+ }
734
+ const disabled = loadSettings(boundWorkspace).merged.skills?.disabled;
735
+ const disabledNames = new Set(
736
+ (Array.isArray(disabled) ? disabled : []).filter((name) => typeof name === "string").map((name) => name.trim().toLowerCase()).filter(Boolean)
737
+ );
738
+ if (skill.level === "extension" && skill.status === "disabled" && !disabledNames.has(normalizedName)) {
739
+ throw new WorkspaceSkillNotToggleableError(
740
+ skill.name,
741
+ "inactive_extension"
742
+ );
743
+ }
744
+ const persisted = await persistDisabledSkills(
745
+ boundWorkspace,
746
+ skill.name,
747
+ enabled
748
+ );
749
+ const channelLive = isChannelLive?.() ?? false;
750
+ let activation = channelLive ? "applied" : "deferred";
751
+ let sessionsRefreshed = 0;
752
+ let sessionsFailed = 0;
753
+ if (persisted.changed) {
754
+ lastWorkspaceSkillsStatus = void 0;
755
+ if (channelLive) {
756
+ try {
757
+ const refreshed = await invokeWorkspaceCommand(
758
+ SERVE_CONTROL_EXT_METHODS.workspaceSkillsRefresh,
759
+ { cwd: boundWorkspace }
760
+ );
761
+ sessionsRefreshed = refreshed.sessionsRefreshed;
762
+ sessionsFailed = refreshed.sessionsFailed;
763
+ if (sessionsFailed > 0) activation = "partial";
764
+ } catch (err) {
765
+ if (err instanceof SessionNotFoundError || err instanceof BridgeChannelClosedError) {
766
+ activation = "deferred";
767
+ } else {
768
+ activation = "partial";
769
+ sessionsFailed = 1;
770
+ writeStderrLine(
771
+ `qwen serve: workspace skill refresh failed: ${err instanceof Error ? err.message : String(err)}`
772
+ );
773
+ }
774
+ }
775
+ }
776
+ publishWorkspaceEvent({
777
+ type: "settings_changed",
778
+ data: {
779
+ key: "skills.disabled",
780
+ value: persisted.disabled.length > 0 ? persisted.disabled : void 0,
781
+ scope: "workspace"
782
+ },
783
+ originatorClientId: ctx.originatorClientId
784
+ });
785
+ }
786
+ return {
787
+ skillName: skill.name,
788
+ enabled,
789
+ changed: persisted.changed,
790
+ activation,
791
+ sessionsRefreshed,
792
+ sessionsFailed
793
+ };
794
+ },
693
795
  async initWorkspace(ctx, opts) {
694
796
  const filename = contextFilename;
695
797
  const target = path.resolve(boundWorkspace, filename);
@@ -1,11 +1,12 @@
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-T7FSRWQ5.js";
9
+ } from "./chunk-HWTL6MPR.js";
9
10
  import {
10
11
  RequestTokenizer
11
12
  } from "./chunk-GDQQRV43.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
  }
@@ -60,7 +60,7 @@ async function runExitCleanup(options = {}) {
60
60
  }
61
61
  __name(runExitCleanup, "runExitCleanup");
62
62
  async function cleanupCheckpoints() {
63
- const { Storage } = await import("./src-55DZWDAK.js");
63
+ const { Storage } = await import("./src-YDBNMIIM.js");
64
64
  const storage = new Storage(process.cwd());
65
65
  const tempDir = storage.getProjectTempDir();
66
66
  const checkpointsDir = join(tempDir, "checkpoints");