@qwen-code/qwen-code 0.19.9-nightly.20260714.9dd8389eb → 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 (194) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +6 -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-67ODZ4SZ.js} +5 -6
  6. package/chunks/{StandaloneSessionPicker-D3R6YYX3.js → StandaloneSessionPicker-SIPBQT5Z.js} +17 -18
  7. package/chunks/{acpAgent-ENHBW72A.js → acpAgent-VPZJXLFX.js} +141 -80
  8. package/chunks/{agent-57LX4KMG.js → agent-Z7NWL6XL.js} +2 -3
  9. package/chunks/{agent-headless-AC6EVNAP.js → agent-headless-73HZ6ROQ.js} +2 -3
  10. package/chunks/{bridge-4OZH44MK.js → bridge-XFKW6S7Q.js} +5 -6
  11. package/chunks/{chunk-DPSWJWZI.js → chunk-2W3OOD4W.js} +1 -0
  12. package/chunks/{chunk-FDL4PB5H.js → chunk-3XJFUTNM.js} +8 -8
  13. package/chunks/{chunk-AAS2Q2TV.js → chunk-422XAKCK.js} +2 -2
  14. package/chunks/{chunk-7U7UIO5W.js → chunk-4FMG7EDJ.js} +19 -4
  15. package/chunks/{chunk-X7EBAABW.js → chunk-4YWLED2A.js} +1 -1
  16. package/chunks/{chunk-WN4D7YCI.js → chunk-5EBKKSBX.js} +1 -1
  17. package/chunks/{chunk-G6QTKQN4.js → chunk-5LROA5W4.js} +3 -3
  18. package/chunks/{chunk-SUWGUGAD.js → chunk-65N2J6V2.js} +2 -2
  19. package/chunks/{chunk-T2L6SGQY.js → chunk-6GETGQWP.js} +26 -6
  20. package/chunks/{chunk-T5C2OUCI.js → chunk-6GKMJPOC.js} +3 -3
  21. package/chunks/{chunk-K3PPUB46.js → chunk-6W6DI34P.js} +1 -1
  22. package/chunks/{chunk-WM5HY72H.js → chunk-7L4XBYVW.js} +2 -2
  23. package/chunks/{chunk-CLTWL6HD.js → chunk-7MJAZMXK.js} +5 -5
  24. package/chunks/{chunk-6HHAADP2.js → chunk-AAR5SGMD.js} +4 -4
  25. package/chunks/{chunk-P3S67A5R.js → chunk-B5I2IIWY.js} +3 -3
  26. package/chunks/{chunk-4DYYRLIE.js → chunk-CEW4HDPK.js} +639 -317
  27. package/chunks/{chunk-JR63TOV4.js → chunk-CJFNEBYB.js} +1 -1
  28. package/chunks/{chunk-PMRH4YYW.js → chunk-CUUXANEQ.js} +2 -1
  29. package/chunks/{chunk-Z56JO4JZ.js → chunk-DK33QJ3V.js} +6 -6
  30. package/chunks/{chunk-N7FCSERB.js → chunk-DPFBNG72.js} +1 -1
  31. package/chunks/{chunk-HZYUNZDQ.js → chunk-EQY6POVO.js} +1 -1
  32. package/chunks/{chunk-MBJ3D6SF.js → chunk-F7NXQH4Y.js} +1 -1
  33. package/chunks/{chunk-C4CXFRKY.js → chunk-FXMC7SL2.js} +25 -4
  34. package/chunks/{chunk-CSACSGAW.js → chunk-GGJII3FM.js} +2 -2
  35. package/chunks/{chunk-EU3U7USF.js → chunk-H3FQOPPS.js} +2 -2
  36. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  37. package/chunks/{chunk-MBP3K324.js → chunk-HHEFI4RP.js} +32 -11
  38. package/chunks/{chunk-B6ABUBYY.js → chunk-JSJFKYWT.js} +67 -5
  39. package/chunks/{chunk-QABSSDQH.js → chunk-K4PZ5F5T.js} +1 -1
  40. package/chunks/{chunk-SSFDPGFN.js → chunk-K7CRWKOE.js} +7879 -5472
  41. package/chunks/{chunk-J2TDDOSM.js → chunk-L37RC7MQ.js} +1 -1
  42. package/chunks/{chunk-V75IOTWF.js → chunk-L62SEJWY.js} +4 -4
  43. package/chunks/{chunk-HE54PGVI.js → chunk-LNUXFLLJ.js} +2 -2
  44. package/chunks/{chunk-PHYCWSDG.js → chunk-LQU7EVFA.js} +1 -1
  45. package/chunks/{chunk-AUGSSJX3.js → chunk-LTNI523B.js} +2 -2
  46. package/chunks/{chunk-4LJNI7MU.js → chunk-MO7O5722.js} +262 -7
  47. package/chunks/{chunk-S2QXYLUB.js → chunk-N6FXRR6P.js} +1 -1
  48. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  49. package/chunks/{chunk-XHW5VUIQ.js → chunk-OFEVHGVU.js} +157 -55
  50. package/chunks/{chunk-T7FSRWQ5.js → chunk-P6LART6G.js} +107 -6
  51. package/chunks/{chunk-GYGGUR4Q.js → chunk-Q5GLXH5Q.js} +3 -3
  52. package/chunks/{chunk-SE74CIZD.js → chunk-RDRVMDWV.js} +1 -1
  53. package/chunks/{chunk-DKXW66XA.js → chunk-SPUYQB4T.js} +1 -1
  54. package/chunks/{chunk-AGBFWLA5.js → chunk-TISZXPAX.js} +1 -1
  55. package/chunks/{chunk-ZLM3KXBT.js → chunk-TTUO4DNG.js} +14 -13
  56. package/chunks/{chunk-4QOPEEL2.js → chunk-UFOKA4PR.js} +1 -1
  57. package/chunks/{chunk-2MF6ICOL.js → chunk-V7EQTZYR.js} +36 -8
  58. package/chunks/{chunk-WWQ3QIJS.js → chunk-VBRRNQB7.js} +10 -10
  59. package/chunks/{chunk-OCC3UTWA.js → chunk-W34A5MJH.js} +1 -1
  60. package/chunks/{chunk-LAM6CGP5.js → chunk-WDW64OW3.js} +3 -3
  61. package/chunks/{chunk-DMTQY5GY.js → chunk-WDWJ4OQJ.js} +3 -3
  62. package/chunks/{chunk-B6KHOCU7.js → chunk-WIASPMLX.js} +8 -8
  63. package/chunks/{chunk-4FPUAYTT.js → chunk-WLXYAKV7.js} +4 -4
  64. package/chunks/{chunk-YWUK7OS7.js → chunk-WTSXKLG5.js} +1 -1
  65. package/chunks/{chunk-7BIZARI2.js → chunk-X362TMXZ.js} +4 -4
  66. package/chunks/{chunk-ASVORVFT.js → chunk-XLIRF7IK.js} +1 -1
  67. package/chunks/{chunk-DNKX35GS.js → chunk-XXJKGHZV.js} +4 -4
  68. package/chunks/{chunk-UI3W56WF.js → chunk-YU56QGXX.js} +1 -1
  69. package/chunks/{chunk-RJL5T4WJ.js → chunk-YX4LLZ3D.js} +47 -35
  70. package/chunks/{chunk-YH4J5XI3.js → chunk-YYPXHMWO.js} +4 -4
  71. package/chunks/{chunk-AAWKZ5R7.js → chunk-ZKMGAFYV.js} +1 -1
  72. package/chunks/{chunk-EUNRLYJG.js → chunk-ZQTZXVHP.js} +4 -4
  73. package/chunks/{computer-use-DIP5BWXP.js → computer-use-IYTX45WA.js} +2 -3
  74. package/chunks/{contextCommand-QU4GJWWD.js → contextCommand-272V77WU.js} +4 -5
  75. package/chunks/{create-sub-session-TCLIYVGR.js → create-sub-session-CBJMQLYP.js} +2 -3
  76. package/chunks/{daemon-CEZ27OH4.js → daemon-RNGFPMAB.js} +315 -36
  77. package/chunks/{daemon-status-provider-SIBFMLBQ.js → daemon-status-provider-L4STG5VO.js} +9 -10
  78. package/chunks/{earlyInputCapture-L66BEG2C.js → earlyInputCapture-EN4BRREQ.js} +2 -3
  79. package/chunks/{edit-Y5LAJSST.js → edit-OMAF2QDR.js} +2 -3
  80. package/chunks/{enter-worktree-X5LML7T4.js → enter-worktree-BBZX52HG.js} +2 -3
  81. package/chunks/{enterPlanMode-XWF32QOW.js → enterPlanMode-5NNFMBUY.js} +2 -3
  82. package/chunks/{environment-YVMA5F4I.js → environment-7TEWMJYN.js} +4 -5
  83. package/chunks/{errors-4Y5SUAOC.js → errors-I4VKVX3F.js} +4 -5
  84. package/chunks/{exit-worktree-SFHU7XYC.js → exit-worktree-FUWRJI33.js} +2 -3
  85. package/chunks/{exitPlanMode-FP3NAN6E.js → exitPlanMode-IHCJ5EEI.js} +2 -3
  86. package/chunks/{fast-path-ZJNFFCBM.js → fast-path-ZA57TOH4.js} +2 -2
  87. package/chunks/{gemini-5CAB22BI.js → gemini-UOAKVXBG.js} +91 -33
  88. package/chunks/{geminiContentGenerator-GE3HPIFB.js → geminiContentGenerator-G6UCE6MW.js} +1 -1
  89. package/chunks/{glob-YPACZAEL.js → glob-4GJQ2UFF.js} +2 -3
  90. package/chunks/{grep-IPR4XW37.js → grep-5QSYXF2E.js} +2 -3
  91. package/chunks/{handleAutoUpdate-P2KEP56V.js → handleAutoUpdate-ULHNWL6R.js} +6 -7
  92. package/chunks/{i18n-BRCT66AA.js → i18n-CYDUTF6F.js} +3 -4
  93. package/chunks/{initializer-34HXSK3A.js → initializer-NRFKUGIO.js} +7 -8
  94. package/chunks/{installationInfo-WOTDQMSC.js → installationInfo-WELKRHHE.js} +3 -4
  95. package/chunks/{list-XOGP7UPP.js → list-JVDXEG2E.js} +10 -11
  96. package/chunks/{loadedSettingsAdapter-L4YKGU6F.js → loadedSettingsAdapter-WAM4VUTG.js} +7 -8
  97. package/chunks/{mcp-HH7DIP7Y.js → mcp-YHOZN3ZM.js} +7 -8
  98. package/chunks/{monitor-25DEBT6U.js → monitor-R7XZPJHQ.js} +2 -3
  99. package/chunks/{nonInteractiveCli-CT3VSSLK.js → nonInteractiveCli-NSOB6D74.js} +34 -35
  100. package/chunks/{notebook-edit-TAVXSWQ6.js → notebook-edit-6RNKE2L2.js} +2 -3
  101. package/chunks/{openaiContentGenerator-6I7DKUAN.js → openaiContentGenerator-XNS5S64I.js} +2 -2
  102. package/chunks/{pidfile-SIQGCFLZ.js → pidfile-XE4RRR2P.js} +2 -3
  103. package/chunks/{qwenContentGenerator-5DDIXI2N.js → qwenContentGenerator-APDPJ3VN.js} +3 -4
  104. package/chunks/{read-file-WDOAYRFU.js → read-file-XSUWXSR7.js} +1 -1
  105. package/chunks/{ripGrep-MI7PHN3Q.js → ripGrep-APB3CDMU.js} +2 -3
  106. package/chunks/{run-qwen-serve-PNTYF3RE.js → run-qwen-serve-NWTGPERT.js} +224 -75
  107. package/chunks/{runtime-V3FBMUTG.js → runtime-EIO3NQKR.js} +8 -9
  108. package/chunks/{scheduler-4TAUIJBM.js → scheduler-JJDZBDRN.js} +2 -3
  109. package/chunks/{serve-WB2TR7XM.js → serve-WTIPB3EI.js} +7 -8
  110. package/chunks/{server-AF6LNFPK.js → server-NJPHQHLH.js} +2458 -755
  111. package/chunks/{session-BIGK4NRW.js → session-O4AO7FTS.js} +35 -36
  112. package/chunks/{settings-IXF5FIQO.js → settings-HQNDK7TG.js} +6 -7
  113. package/chunks/{shell-5VWJ2PPG.js → shell-UIXM6PWG.js} +2 -3
  114. package/chunks/{skill-SI667Y3B.js → skill-3XMB4ULV.js} +1 -1
  115. package/chunks/{spawnChannel-IKX6DD7J.js → spawnChannel-3R632QRM.js} +4 -5
  116. package/chunks/{src-55DZWDAK.js → src-USZKPUOC.js} +33 -4
  117. package/chunks/{standalone-update-MHLSFHE6.js → standalone-update-L5XW3D7K.js} +4 -5
  118. package/chunks/{startInteractiveUI-V2EDWLAX.js → startInteractiveUI-CPZOL2WB.js} +174 -122
  119. package/chunks/{team-create-IZAMLBJS.js → team-create-XXPRF3IQ.js} +2 -3
  120. package/chunks/{team-plan-approval-3R4RCKCP.js → team-plan-approval-EOTTKHDW.js} +2 -3
  121. package/chunks/{theme-manager-LCOXZ5DO.js → theme-manager-P6UITO2L.js} +2 -3
  122. package/chunks/{tool-search-NYNCD5LF.js → tool-search-DDNGK2LR.js} +1 -1
  123. package/chunks/{total-session-admission-PJWGOMQE.js → total-session-admission-PL5N7DNY.js} +5 -6
  124. package/chunks/{trustedFolders-DOJDHNYP.js → trustedFolders-C5LMF3UR.js} +3 -4
  125. package/chunks/types-ML3TRJQ5.js +16 -0
  126. package/chunks/{updateCheck-ZXL66KIG.js → updateCheck-QTVVISH7.js} +4 -5
  127. package/chunks/{validateNonInterActiveAuth-JSNJZCYY.js → validateNonInterActiveAuth-RY4RKBQG.js} +30 -31
  128. package/chunks/{version-3NLBENG5.js → version-U45RYOSD.js} +1 -1
  129. package/chunks/{workflow-BQYLF7XP.js → workflow-TCIAQYOA.js} +3 -4
  130. package/chunks/{workspace-providers-status-FA2DGEZW.js → workspace-providers-status-I3G2HYLY.js} +10 -11
  131. package/chunks/{workspace-registration-store-TARTAGMI.js → workspace-registration-store-IH5GLZ6Y.js} +1 -1
  132. package/chunks/{workspace-registry-AGE7WAXX.js → workspace-registry-QEKBELIX.js} +5 -6
  133. package/chunks/{workspace-service-ERC5VR2B.js → workspace-service-ORKHGLP3.js} +17 -14
  134. package/chunks/{workspace-skills-status-FKYWGNCN.js → workspace-skills-status-D7QCNDYY.js} +9 -10
  135. package/chunks/{write-file-S47KSK7Z.js → write-file-JGRQR5VM.js} +2 -3
  136. package/cli.js +11 -11
  137. package/package.json +3 -3
  138. package/web-shell/assets/{arc-Zj4EkBUY.js → arc-CUeDlxvE.js} +1 -1
  139. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DAk1Ua3Y.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
  140. package/web-shell/assets/{blockDiagram-GPEHLZMM-DBNqUthM.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
  141. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dq5QGJ53.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
  142. package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
  143. package/web-shell/assets/{chunk-2J33WTMH-DY0AeGru.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
  144. package/web-shell/assets/{chunk-4BX2VUAB-COX3OyIi.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
  145. package/web-shell/assets/{chunk-55IACEB6-Csoyddbh.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
  146. package/web-shell/assets/{chunk-727SXJPM-BJPONdxX.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
  147. package/web-shell/assets/{chunk-AQP2D5EJ-syLVH6fg.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
  148. package/web-shell/assets/{chunk-FMBD7UC4-Cfm59Nhw.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
  149. package/web-shell/assets/{chunk-ND2GUHAM-DZf6tAqS.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
  150. package/web-shell/assets/{chunk-QZHKN3VN-DKBp_v5q.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
  151. package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
  152. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
  153. package/web-shell/assets/{cose-bilkent-S5V4N54A-DUU3mMQ5.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
  154. package/web-shell/assets/{dagre-BM42HDAG-BUgNfbh-.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
  155. package/web-shell/assets/{diagram-2AECGRRQ-DT7MVfAg.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
  156. package/web-shell/assets/{diagram-5GNKFQAL-Cv4YG-ec.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
  157. package/web-shell/assets/{diagram-KO2AKTUF-BAe9LLkn.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
  158. package/web-shell/assets/{diagram-LMA3HP47-DW8wqTIP.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
  159. package/web-shell/assets/{diagram-OG6HWLK6-CmkuWbaK.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
  160. package/web-shell/assets/{erDiagram-TEJ5UH35-DwvdHjZ9.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
  161. package/web-shell/assets/{flowDiagram-I6XJVG4X-CSsXrhW_.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
  162. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BtuznCdi.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +1 -1
  163. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DGmAm06g.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
  164. package/web-shell/assets/index-Cnvv4VcI.css +5 -0
  165. package/web-shell/assets/index-D1Uyklxa.js +1088 -0
  166. package/web-shell/assets/{index-BEtz1cvN.js → index-DzHwQkQq.js} +1 -1
  167. package/web-shell/assets/{infoDiagram-5YYISTIA-OAiZ1q0K.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
  168. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DyK0KTIT.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
  169. package/web-shell/assets/{journeyDiagram-JHISSGLW-DzYJlwfO.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
  170. package/web-shell/assets/{kanban-definition-UN3LZRKU-CU_tcDwi.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
  171. package/web-shell/assets/{linear-DvZXjF17.js → linear-atZRE_L2.js} +1 -1
  172. package/web-shell/assets/{mermaid.core-_ZFEQlOl.js → mermaid.core-KKudX-JC.js} +5 -5
  173. package/web-shell/assets/{mindmap-definition-RKZ34NQL-Or4p64HB.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
  174. package/web-shell/assets/{pieDiagram-4H26LBE5-lXE-zZ6b.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
  175. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DUXb9mUV.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
  176. package/web-shell/assets/{requirementDiagram-4Y6WPE33-D_10uHfo.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
  177. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-E8c0fPqe.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
  178. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CJMtFttK.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
  179. package/web-shell/assets/{stateDiagram-AJRCARHV-DhbviRbB.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
  180. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
  181. package/web-shell/assets/{timeline-definition-PNZ67QCA-CM5yMkFK.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
  182. package/web-shell/assets/{vennDiagram-CIIHVFJN-BCi-zWNN.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
  183. package/web-shell/assets/{wardley-L42UT6IY-BJ_yJNjJ.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
  184. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-TjtLk-qN.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
  185. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1TjyoQ3.js → xychartDiagram-2RQKCTM6-crz0QhF_.js} +1 -1
  186. package/web-shell/index.html +2 -2
  187. package/chunks/chunk-CU3L64TP.js +0 -93
  188. package/chunks/types-JNKGKUJT.js +0 -12
  189. package/web-shell/assets/channel-DWfYijFS.js +0 -1
  190. package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +0 -1
  191. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +0 -1
  192. package/web-shell/assets/index-B9Xwf4OS.css +0 -5
  193. package/web-shell/assets/index-BUkM4ZXX.js +0 -1088
  194. 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-N6FXRR6P.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-C4CXFRKY.js";
10
+ } from "./chunk-FXMC7SL2.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-DPFBNG72.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-CUUXANEQ.js";
49
52
  import {
50
53
  getPersistScopeForModelSelection,
51
54
  loadSettings
52
- } from "./chunk-T2L6SGQY.js";
55
+ } from "./chunk-6GETGQWP.js";
53
56
  import {
54
57
  getWorkspaceTrustStatus
55
- } from "./chunk-X7EBAABW.js";
58
+ } from "./chunk-4YWLED2A.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-K7CRWKOE.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);
@@ -61936,7 +61936,7 @@ function getLanguageFromFilePath(filePath) {
61936
61936
  return extensionToLanguageMap[extension];
61937
61937
  }
61938
61938
  const filename = path3.basename(filePath).toLowerCase();
61939
- return extensionToLanguageMap[`.${filename}`];
61939
+ return extensionToLanguageMap[filename] ?? extensionToLanguageMap[`.${filename}`];
61940
61940
  }
61941
61941
  __name(getLanguageFromFilePath, "getLanguageFromFilePath");
61942
61942
 
@@ -64174,6 +64174,20 @@ function parseTaggedThinkingText(text) {
64174
64174
  }
64175
64175
  __name(parseTaggedThinkingText, "parseTaggedThinkingText");
64176
64176
 
64177
+ // packages/core/src/core/invalid-stream-error.ts
64178
+ init_esbuild_shims();
64179
+ var InvalidStreamError = class extends Error {
64180
+ static {
64181
+ __name(this, "InvalidStreamError");
64182
+ }
64183
+ type;
64184
+ constructor(message, type) {
64185
+ super(message);
64186
+ this.name = "InvalidStreamError";
64187
+ this.type = type;
64188
+ }
64189
+ };
64190
+
64177
64191
  // packages/core/src/core/openaiContentGenerator/converter.ts
64178
64192
  var debugLogger6 = createDebugLogger("CONVERTER");
64179
64193
  var SPLIT_TOOL_MEDIA_TEXT = "(attached media from previous tool call)";
@@ -64830,6 +64844,10 @@ function hasThoughtPart(parts) {
64830
64844
  return parts.some((part) => part.thought === true);
64831
64845
  }
64832
64846
  __name(hasThoughtPart, "hasThoughtPart");
64847
+ var THINKING_TAG_PATTERN = /<\/?think(?:ing)?\s*>/i;
64848
+ var CLOSING_THINKING_TAG_PATTERN = /\n[^\S\r\n]*<\/think(?:ing)?[^\S\r\n]*>/i;
64849
+ var LEADING_CLOSING_THINKING_TAG_PATTERN = /^[^\S\r\n]*<\/think(?:ing)?[^\S\r\n]*>/i;
64850
+ var LEADING_THINKING_TAG_PATTERN = /^\s*<\/?think(?:ing)?\s*>/i;
64833
64851
  function convertOpenAIResponseToGemini(openaiResponse, requestContext) {
64834
64852
  const choice = openaiResponse.choices?.[0];
64835
64853
  const response = new GenerateContentResponse();
@@ -64913,7 +64931,7 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
64913
64931
  );
64914
64932
  }
64915
64933
  if (choice) {
64916
- const parts = [];
64934
+ let parts = [];
64917
64935
  let contentParts = [];
64918
64936
  const reasoningText = choice.delta?.reasoning_content ?? choice.delta?.reasoning;
64919
64937
  if (typeof choice.delta?.content === "string") {
@@ -64958,6 +64976,12 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
64958
64976
  cumulativeMode: false
64959
64977
  }
64960
64978
  );
64979
+ if (normalizedReasoningText) {
64980
+ requestContext.hasStructuredReasoningContent = true;
64981
+ if (THINKING_TAG_PATTERN.test(normalizedReasoningText)) {
64982
+ requestContext.hasThinkingTagInReasoning = true;
64983
+ }
64984
+ }
64961
64985
  if (normalizedReasoningText && !requestContext.responseParsingOptions?.taggedThinkingTags) {
64962
64986
  parts.push(createOpenAIReasoningThoughtPart(normalizedReasoningText));
64963
64987
  } else if (normalizedReasoningText && !requestContext.hasTaggedThinkingThought) {
@@ -65015,10 +65039,45 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
65015
65039
  }
65016
65040
  }
65017
65041
  }
65042
+ const visibleText = parts.map(
65043
+ (part) => part.thought !== true && typeof part.text === "string" ? part.text : ""
65044
+ ).join("");
65045
+ const leakedThinkingTag = requestContext.hasStructuredReasoningContent === true && (requestContext.hasVisibleContent !== true && LEADING_THINKING_TAG_PATTERN.test(visibleText) || requestContext.hasThinkingTagInReasoning === true && (CLOSING_THINKING_TAG_PATTERN.test(visibleText) || requestContext.atVisibleLineStart === true && LEADING_CLOSING_THINKING_TAG_PATTERN.test(visibleText)));
65046
+ if (/\S/.test(visibleText)) {
65047
+ requestContext.hasVisibleContent = true;
65048
+ }
65049
+ if (visibleText && requestContext.hasThinkingTagInReasoning === true) {
65050
+ const lastLineBreak = visibleText.lastIndexOf("\n");
65051
+ const lineSuffix = visibleText.slice(lastLineBreak + 1);
65052
+ requestContext.atVisibleLineStart = (lastLineBreak >= 0 || requestContext.atVisibleLineStart === true) && /^[^\S\r\n]*$/.test(lineSuffix);
65053
+ }
65054
+ if (leakedThinkingTag) {
65055
+ requestContext.pendingUntrustedResponseParts = void 0;
65056
+ throw new InvalidStreamError(
65057
+ "Model response leaked thinking tags.",
65058
+ "PROTOCOL_TAG_LEAK"
65059
+ );
65060
+ }
65061
+ const toolCallWithoutName = toolCallParser.hasNamelessToolCall();
65062
+ const completedToolCalls = choice.finish_reason ? toolCallParser.getCompletedToolCalls() : [];
65063
+ if (choice.finish_reason && (toolCallWithoutName || choice.finish_reason === "tool_calls" && completedToolCalls.length === 0)) {
65064
+ requestContext.pendingUntrustedResponseParts = void 0;
65065
+ throw new InvalidStreamError(
65066
+ "Model response contained a malformed tool call.",
65067
+ "MALFORMED_TOOL_CALL"
65068
+ );
65069
+ }
65070
+ const shouldHoldParts = !choice.finish_reason && (toolCallWithoutName || requestContext.hasThinkingTagInReasoning === true);
65071
+ if (shouldHoldParts) {
65072
+ (requestContext.pendingUntrustedResponseParts ??= []).push(...parts);
65073
+ parts.length = 0;
65074
+ } else if (requestContext.pendingUntrustedResponseParts) {
65075
+ parts = requestContext.pendingUntrustedResponseParts.concat(parts);
65076
+ requestContext.pendingUntrustedResponseParts = void 0;
65077
+ }
65018
65078
  let toolCallsTruncated = false;
65019
65079
  if (choice.finish_reason) {
65020
65080
  toolCallsTruncated = toolCallParser.hasIncompleteToolCalls();
65021
- const completedToolCalls = toolCallParser.getCompletedToolCalls();
65022
65081
  for (const toolCall of completedToolCalls) {
65023
65082
  if (toolCall.name) {
65024
65083
  parts.push({
@@ -68362,6 +68421,44 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
68362
68421
  };
68363
68422
  var uiTelemetryService = new UiTelemetryService();
68364
68423
 
68424
+ // packages/core/src/telemetry/api-activity-tracker.ts
68425
+ init_esbuild_shims();
68426
+ var ApiActivityTracker = class {
68427
+ static {
68428
+ __name(this, "ApiActivityTracker");
68429
+ }
68430
+ #errors = 0;
68431
+ #retries = 0;
68432
+ /** Fold in one model API error (called from `logApiError`). */
68433
+ recordError() {
68434
+ this.#errors += 1;
68435
+ }
68436
+ /** Fold in one automatic retry (called from `logApiRetry`). */
68437
+ recordRetry() {
68438
+ this.#retries += 1;
68439
+ }
68440
+ /**
68441
+ * Return the counts accumulated since the last drain and reset them to zero.
68442
+ * The read+reset is synchronous (no `await` between), so a `recordError` /
68443
+ * `recordRetry` racing an in-progress drain can never be lost — it simply
68444
+ * lands in the next window.
68445
+ */
68446
+ drain() {
68447
+ const counts = {
68448
+ errors: this.#errors,
68449
+ retries: this.#retries
68450
+ };
68451
+ this.#errors = 0;
68452
+ this.#retries = 0;
68453
+ return counts;
68454
+ }
68455
+ /** Peek at the pending counts without draining (tests / diagnostics). */
68456
+ peek() {
68457
+ return { errors: this.#errors, retries: this.#retries };
68458
+ }
68459
+ };
68460
+ var apiActivityTracker = new ApiActivityTracker();
68461
+
68365
68462
  // packages/core/src/telemetry/daemon-tracing.ts
68366
68463
  init_esbuild_shims();
68367
68464
  init_esm();
@@ -70061,11 +70158,11 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
70061
70158
  let baseGenerator;
70062
70159
  try {
70063
70160
  if (authType === "openai" /* USE_OPENAI */) {
70064
- const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-6I7DKUAN.js");
70161
+ const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-XNS5S64I.js");
70065
70162
  baseGenerator = createOpenAIContentGenerator(generatorConfig, config);
70066
70163
  } else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
70067
70164
  const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-LEYOU7RU.js");
70068
- const { QwenContentGenerator } = await import("./qwenContentGenerator-5DDIXI2N.js");
70165
+ const { QwenContentGenerator } = await import("./qwenContentGenerator-APDPJ3VN.js");
70069
70166
  try {
70070
70167
  const qwenClient = await getQwenOauthClient(
70071
70168
  config,
@@ -70086,7 +70183,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
70086
70183
  const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-56U3YCP2.js");
70087
70184
  baseGenerator = createAnthropicContentGenerator(generatorConfig, config);
70088
70185
  } else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
70089
- const { createGeminiContentGenerator } = await import("./geminiContentGenerator-GE3HPIFB.js");
70186
+ const { createGeminiContentGenerator } = await import("./geminiContentGenerator-G6UCE6MW.js");
70090
70187
  baseGenerator = createGeminiContentGenerator(generatorConfig, config);
70091
70188
  } else {
70092
70189
  throw new Error(
@@ -71811,6 +71908,7 @@ function logApiError(config, event) {
71811
71908
  "event.timestamp": (/* @__PURE__ */ new Date()).toISOString()
71812
71909
  };
71813
71910
  uiTelemetryService.addEvent(uiEvent, config.getSessionId());
71911
+ apiActivityTracker.recordError();
71814
71912
  if (!isInternalPromptId(event.prompt_id)) {
71815
71913
  recordUiTelemetryEventToChat(config, uiEvent);
71816
71914
  }
@@ -72077,6 +72175,7 @@ function logContentRetryFailure(config, event) {
72077
72175
  }
72078
72176
  __name(logContentRetryFailure, "logContentRetryFailure");
72079
72177
  function logApiRetry(config, event) {
72178
+ apiActivityTracker.recordRetry();
72080
72179
  QwenLogger.getInstance(config)?.logApiRetryEvent(event);
72081
72180
  if (!isTelemetrySdkInitialized()) return;
72082
72181
  const attributes = {
@@ -72989,6 +73088,7 @@ export {
72989
73088
  refreshSessionContext,
72990
73089
  shutdownTelemetry,
72991
73090
  forceFlushMetrics,
73091
+ apiActivityTracker,
72992
73092
  _recoverObjectsFromLine,
72993
73093
  parseLineTolerant,
72994
73094
  readLines,
@@ -73124,6 +73224,7 @@ export {
73124
73224
  parseThought,
73125
73225
  getThoughtSummary,
73126
73226
  TaggedThinkingParser,
73227
+ InvalidStreamError,
73127
73228
  OpenAIContentConverter,
73128
73229
  openaiRequestCaptureContext,
73129
73230
  isApiError,
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getExtensionManager
5
- } from "./chunk-6HHAADP2.js";
5
+ } from "./chunk-AAR5SGMD.js";
6
6
  import {
7
7
  getPlugin,
8
8
  parseChannelConfig,
@@ -13,14 +13,14 @@ import {
13
13
  } from "./chunk-SXU3KKNI.js";
14
14
  import {
15
15
  loadSettings
16
- } from "./chunk-T2L6SGQY.js";
16
+ } from "./chunk-6GETGQWP.js";
17
17
  import {
18
18
  writeStderrLine,
19
19
  writeStdoutLine
20
20
  } from "./chunk-YUZI3WAC.js";
21
21
  import {
22
22
  hashDaemonWorkspace
23
- } from "./chunk-T7FSRWQ5.js";
23
+ } from "./chunk-P6LART6G.js";
24
24
  import {
25
25
  Storage
26
26
  } from "./chunk-7NFB7LBQ.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-YUZI3WAC.js";
6
6
  import {
7
7
  resolveBundleDir
8
- } from "./chunk-SSFDPGFN.js";
8
+ } from "./chunk-K7CRWKOE.js";
9
9
  import {
10
10
  Storage
11
11
  } from "./chunk-7NFB7LBQ.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-SE74CIZD.js";
5
+ } from "./chunk-RDRVMDWV.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -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-USZKPUOC.js");
64
64
  const storage = new Storage(process.cwd());
65
65
  const tempDir = storage.getProjectTempDir();
66
66
  const checkpointsDir = join(tempDir, "checkpoints");