@qwen-code/qwen-code 0.19.2-preview.0 → 0.19.3

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 (282) hide show
  1. package/bundled/extension-creator/SKILL.md +357 -0
  2. package/bundled/loop/SKILL.md +12 -7
  3. package/bundled/loop/SKILL.test.ts +32 -0
  4. package/bundled/qc-helper/SKILL.md +14 -14
  5. package/bundled/qc-helper/docs/configuration/auth.md +11 -11
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
  7. package/bundled/qc-helper/docs/configuration/settings.md +60 -60
  8. package/bundled/qc-helper/docs/features/commands.md +108 -77
  9. package/bundled/qc-helper/docs/features/memory.md +52 -0
  10. package/bundled/qc-helper/docs/qwen-serve.md +24 -2
  11. package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
  12. package/chunks/{MaxSizedBox-ZGJWTRFD.js → MaxSizedBox-QNF3EIGU.js} +29 -30
  13. package/chunks/{StandaloneSessionPicker-BUCTAFOX.js → StandaloneSessionPicker-Z52JTYST.js} +42 -40
  14. package/chunks/{acpAgent-JO2ITCNM.js → acpAgent-7RZUOWOM.js} +406 -118
  15. package/chunks/{agent-MY66OFO7.js → agent-4FG7WTHJ.js} +24 -26
  16. package/chunks/{agent-headless-SRMNGWN5.js → agent-headless-RQ5BTX3G.js} +24 -26
  17. package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-PFITVL7Y.js} +31 -13
  18. package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-D2X7G3C3.js} +2 -2
  19. package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-UGETICJQ.js} +2 -2
  20. package/chunks/{bridge-GZCNYBHI.js → bridge-JL2PMCIW.js} +29 -32
  21. package/chunks/{ca-7WC7ELX6.js → ca-IUFWESZL.js} +1 -0
  22. package/chunks/{chunk-3UALQ56H.js → chunk-3227DZO4.js} +1 -1
  23. package/chunks/{chunk-2TLWKT22.js → chunk-3TV3HUWZ.js} +16 -7
  24. package/chunks/{chunk-WQ523TWK.js → chunk-4LUZAKMK.js} +45 -3
  25. package/chunks/{chunk-KDRNHNFO.js → chunk-4QK3O43S.js} +6 -27
  26. package/chunks/chunk-5GOVVXEV.js +73 -0
  27. package/chunks/{chunk-C4YPMKVC.js → chunk-6V4NZFUS.js} +5 -5
  28. package/chunks/{chunk-QCE46JPS.js → chunk-ADCIHOQZ.js} +138 -28
  29. package/chunks/chunk-BC3C4F3Q.js +40 -0
  30. package/chunks/{chunk-CGEGHF2C.js → chunk-BKXBARJZ.js} +1 -1
  31. package/chunks/chunk-BMFMJINR.js +45 -0
  32. package/chunks/chunk-BTLJ2MF5.js +690 -0
  33. package/chunks/{chunk-OIC6S73E.js → chunk-BUUQ5HPX.js} +1 -1
  34. package/chunks/{chunk-2BIF2NVV.js → chunk-BVSVIN45.js} +2 -2
  35. package/chunks/{chunk-JXQ23SNT.js → chunk-BW4KCQFD.js} +54 -2
  36. package/chunks/{chunk-TOEGRAVX.js → chunk-BX5YO7UW.js} +17 -5
  37. package/chunks/{chunk-3GOWF4JW.js → chunk-BXSHL2SF.js} +1 -1
  38. package/chunks/{chunk-UN3C6GOR.js → chunk-CF6BB3LT.js} +0 -107
  39. package/chunks/{chunk-Z7XXFPGP.js → chunk-CKQA6AWF.js} +1 -1
  40. package/chunks/{chunk-S3QKD3KC.js → chunk-CNLEDYE3.js} +7 -5
  41. package/chunks/{chunk-PRYMDRBV.js → chunk-DDMOU62Q.js} +1 -1
  42. package/chunks/chunk-EDMZZFDU.js +11213 -0
  43. package/chunks/{chunk-IRJWHZWU.js → chunk-EJYJYJZ2.js} +70 -3
  44. package/chunks/{chunk-Z3GEHYNS.js → chunk-F3ZYSEY6.js} +151 -4775
  45. package/chunks/chunk-FKAVULLM.js +4909 -0
  46. package/chunks/{chunk-QEFO4ZHF.js → chunk-FNJ7BDPH.js} +6 -6
  47. package/chunks/{chunk-ZMYGPJZ2.js → chunk-FXKVLFFY.js} +1 -1
  48. package/chunks/{chunk-NISEO774.js → chunk-GGBIN5K7.js} +1 -1
  49. package/chunks/{chunk-MLZC2B46.js → chunk-GT2FGICD.js} +1 -1
  50. package/chunks/{chunk-6RSJXDOE.js → chunk-HPZTOP4I.js} +75 -23
  51. package/chunks/{chunk-OTBK43JR.js → chunk-HYCC3XM3.js} +1 -1
  52. package/chunks/{chunk-MAJFZ73U.js → chunk-HZT4UCFB.js} +4 -4
  53. package/chunks/{chunk-VGU3SDPN.js → chunk-I2LYBGNI.js} +1 -1
  54. package/chunks/{chunk-TMBPDHXD.js → chunk-I4H7PRWQ.js} +1 -1
  55. package/chunks/{chunk-LUNAHBBC.js → chunk-J33ZR6OJ.js} +404 -4
  56. package/chunks/{chunk-MB7CQE2R.js → chunk-J7FA27RO.js} +109 -6
  57. package/chunks/{chunk-S566HKUS.js → chunk-JE5FVRPC.js} +38 -7
  58. package/chunks/{chunk-HKGTXQ2Q.js → chunk-JJXWTVSK.js} +1 -1
  59. package/chunks/{chunk-EEEZIVFJ.js → chunk-JOLIREYR.js} +1 -1
  60. package/chunks/{chunk-CGONIGON.js → chunk-JVHEVCAU.js} +5 -5
  61. package/chunks/chunk-K5XU6E4T.js +167 -0
  62. package/chunks/{chunk-EW6C27XX.js → chunk-KMGMKW5Q.js} +1 -1
  63. package/chunks/{chunk-B734I4XN.js → chunk-L7OKCI7T.js} +4 -2
  64. package/chunks/{chunk-3PPKH5TY.js → chunk-M2U5NM24.js} +188 -11366
  65. package/chunks/{chunk-PCTRA6JV.js → chunk-MNF6S5PR.js} +4 -4
  66. package/chunks/{chunk-FPACXT7T.js → chunk-N4EJFBN5.js} +421 -163
  67. package/chunks/chunk-NDOC6M5S.js +481 -0
  68. package/chunks/{chunk-HGNSRCRB.js → chunk-NL4C3H6C.js} +1 -1
  69. package/chunks/{chunk-GZCJS5WH.js → chunk-O2VBQ3Y2.js} +2 -2
  70. package/chunks/{chunk-Q47HB5BI.js → chunk-O75BHFQW.js} +10 -460
  71. package/chunks/{chunk-EPHYP7YA.js → chunk-ODLIHNOY.js} +1 -2
  72. package/chunks/{chunk-R44WETZC.js → chunk-PDE7CSDS.js} +2 -2
  73. package/chunks/{chunk-C7WPMYY6.js → chunk-PR32FRT6.js} +3 -3
  74. package/chunks/{chunk-7ACQGQWS.js → chunk-QE6KJYLT.js} +56 -29
  75. package/chunks/{chunk-3RJ3ZPPR.js → chunk-QI7GOGJR.js} +7 -7
  76. package/chunks/{chunk-XU5P23GN.js → chunk-QLDPRILK.js} +3 -3
  77. package/chunks/{chunk-S77J57YJ.js → chunk-QNKBEJO2.js} +359 -76
  78. package/chunks/{chunk-3MEMSFD3.js → chunk-QWFNTRH4.js} +1 -1
  79. package/chunks/chunk-QYUE6W3T.js +123 -0
  80. package/chunks/{chunk-WEOJMFUO.js → chunk-R5OP2ATH.js} +11 -11
  81. package/chunks/{chunk-BNXANYLH.js → chunk-RD6YJJJ6.js} +81 -1
  82. package/chunks/{chunk-3VWNMDXT.js → chunk-RRFZXMYP.js} +380 -400
  83. package/chunks/{chunk-ZN5T4BHI.js → chunk-RYLJU2DY.js} +1 -1
  84. package/chunks/{chunk-ZD3NW5KL.js → chunk-S7AKE7HL.js} +3 -3
  85. package/chunks/{chunk-BG4BIP7F.js → chunk-SBBN4BWR.js} +4 -2
  86. package/chunks/{chunk-T2VDEFUU.js → chunk-SKQZZVAV.js} +2 -2
  87. package/chunks/{chunk-EDEHJ6DO.js → chunk-SLNKLLEO.js} +14 -9
  88. package/chunks/chunk-SMXULRAN.js +37 -0
  89. package/chunks/{chunk-BUY35XTH.js → chunk-SMYQZVZ3.js} +1 -1
  90. package/chunks/{chunk-YTHAFW7O.js → chunk-STUWFKGD.js} +1001 -887
  91. package/chunks/{chunk-SFUYT3EQ.js → chunk-T4T2FNV4.js} +2 -2
  92. package/chunks/{chunk-F6XNTYNE.js → chunk-U3KSMM7G.js} +8 -4
  93. package/chunks/chunk-UFLGERMB.js +813 -0
  94. package/chunks/{chunk-BGUDAULQ.js → chunk-UO5GVXQE.js} +5 -5
  95. package/chunks/{chunk-C4K3FEQ2.js → chunk-UX4SGCGN.js} +32 -3
  96. package/chunks/{chunk-TWMKA4OQ.js → chunk-UYT3MWEB.js} +85 -8
  97. package/chunks/{chunk-5J3QYE2J.js → chunk-VBZ452JT.js} +113 -24
  98. package/chunks/{chunk-KBXLIVWQ.js → chunk-VVLOGDB6.js} +2 -2
  99. package/chunks/{chunk-TXVGVZYR.js → chunk-XJYUPHRC.js} +3 -3
  100. package/chunks/{chunk-2JD55C6G.js → chunk-Y6YMRS3U.js} +2 -2
  101. package/chunks/{chunk-ACZI6UDO.js → chunk-YAINVQ3Q.js} +2961 -1349
  102. package/chunks/{chunk-X6EDWN44.js → chunk-ZP6UKOPB.js} +1 -1
  103. package/chunks/{computer-use-6OUCN274.js → computer-use-JGB36FDW.js} +103 -52
  104. package/chunks/{contextCommand-M5IKMWCY.js → contextCommand-WYU6OQ2F.js} +26 -28
  105. package/chunks/{cron-create-4KQE6YLH.js → cron-create-SKEY55RG.js} +4 -4
  106. package/chunks/{cron-delete-THME66UP.js → cron-delete-I3NAT32Z.js} +6 -6
  107. package/chunks/{cron-list-7A54SJ5N.js → cron-list-6XRRL6TH.js} +5 -5
  108. package/chunks/daemon-status-provider-HH2EC5FI.js +65 -0
  109. package/chunks/{de-ACHALDED.js → de-EOW5PVHF.js} +1 -0
  110. package/chunks/{dist-BOOH5JWN.js → dist-663NZ6MI.js} +1 -1
  111. package/chunks/{dist-QHJRBCMP.js → dist-J37VXPLD.js} +46 -5
  112. package/chunks/{dist-OD2FY543.js → dist-LB6OGPVM.js} +1 -1
  113. package/chunks/{dist-BD27IA3L.js → dist-NHEYYB2B.js} +2 -2
  114. package/chunks/{dist-QFFZWACU.js → dist-PQPZ5Q4N.js} +1 -1
  115. package/chunks/{earlyInputCapture-HX4EHHVF.js → earlyInputCapture-44RISVVJ.js} +25 -27
  116. package/chunks/{edit-AHPBJWZO.js → edit-NN6GM5DT.js} +68 -30
  117. package/chunks/{en-NCUBOJOY.js → en-HPWEJBTR.js} +8 -0
  118. package/chunks/{enter-worktree-PB45KTMD.js → enter-worktree-PB3O2C7D.js} +24 -26
  119. package/chunks/{enterPlanMode-WBJ23SFX.js → enterPlanMode-YQFNNSUA.js} +24 -26
  120. package/chunks/{errors-OBDZ5XIW.js → errors-LS7XU5DZ.js} +26 -28
  121. package/chunks/{exit-worktree-VZK27UQY.js → exit-worktree-E2FTNSBK.js} +24 -26
  122. package/chunks/{exitPlanMode-SVJCUCD2.js → exitPlanMode-GLYK2BUB.js} +24 -26
  123. package/chunks/{fast-path-LCCPZVEW.js → fast-path-WQ6M7LI7.js} +4 -4
  124. package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-OAGU3X5H.js} +3 -2
  125. package/chunks/{fr-GVKZ27MF.js → fr-BN5NKSAC.js} +1 -0
  126. package/chunks/{gemini-NVIOUXR6.js → gemini-2YFLVA2M.js} +204 -103
  127. package/chunks/{geminiContentGenerator-35K5AQ5O.js → geminiContentGenerator-XV6SV6CD.js} +4 -4
  128. package/chunks/{glob-JU4Y7GPG.js → glob-2H6CDDMK.js} +24 -26
  129. package/chunks/{grep-J4B63YPZ.js → grep-VXIUXM3C.js} +24 -26
  130. package/chunks/{headlessSafetyWarnings-23EM5RH2.js → headlessSafetyWarnings-TBE35GJ4.js} +24 -26
  131. package/chunks/initializer-2Y7SLOKV.js +61 -0
  132. package/chunks/{ja-FKZ2WZ4D.js → ja-7DEUB2TS.js} +1 -0
  133. package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-YLMDLKXT.js} +2 -2
  134. package/chunks/list-ZAFHZ7OS.js +65 -0
  135. package/chunks/loadedSettingsAdapter-6KJXD6M3.js +60 -0
  136. package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-CITGGQHA.js} +7 -7
  137. package/chunks/{ls-BYQY7RVV.js → ls-R5WP4BGZ.js} +4 -4
  138. package/chunks/{lsp-X54RO4IV.js → lsp-GSICJMMW.js} +2 -2
  139. package/chunks/{monitor-WU7WVFM2.js → monitor-HKLRS2HQ.js} +24 -26
  140. package/chunks/nonInteractiveCli-5W4GIZQM.js +96 -0
  141. package/chunks/{notebook-edit-UGVPLPX4.js → notebook-edit-Y6SKSGTT.js} +52 -26
  142. package/chunks/{openaiContentGenerator-TI3M5VNP.js → openaiContentGenerator-J7G2FYJT.js} +13 -14
  143. package/chunks/{pt-SY5NCFGR.js → pt-TNZRNLQB.js} +1 -0
  144. package/chunks/{qwenContentGenerator-7WDBLJ77.js → qwenContentGenerator-5XIEM5GV.js} +26 -28
  145. package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-AG3PFFLZ.js} +4 -4
  146. package/chunks/{read-file-Y4NNE7M7.js → read-file-J7D552ZJ.js} +9 -10
  147. package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-DQQW7H7T.js} +2 -2
  148. package/chunks/{ripGrep-I5KP7EQ7.js → ripGrep-IEIFIWP4.js} +24 -26
  149. package/chunks/{ru-FWNXJG4F.js → ru-NIAUBKCN.js} +1 -0
  150. package/chunks/{run-qwen-serve-VRHHXLVN.js → run-qwen-serve-SGEEVMXD.js} +149 -41
  151. package/chunks/{scheduler-MPIZJSXK.js → scheduler-7CQI3S4Q.js} +24 -26
  152. package/chunks/{send-message-2DAFXEYP.js → send-message-EE4TWKVU.js} +2 -2
  153. package/chunks/{serve-O2HA5D2Y.js → serve-V6GVZR6U.js} +31 -31
  154. package/chunks/{server-ZU5GPYYG.js → server-4QMUWXPW.js} +6996 -5864
  155. package/chunks/{session-TBV6PADC.js → session-NRO7UFOY.js} +62 -57
  156. package/chunks/{settings-2IYAFT2Z.js → settings-SGWRDQSC.js} +30 -30
  157. package/chunks/{shell-EZRRV6ET.js → shell-62ANGIHL.js} +24 -26
  158. package/chunks/{skill-2UPCJCHZ.js → skill-VWAQAWW6.js} +39 -13
  159. package/chunks/{spawnChannel-2LTBWDWZ.js → spawnChannel-3VHW5EPY.js} +26 -28
  160. package/chunks/{src-UKQZLQ6R.js → src-KUV5J5Q2.js} +52 -28
  161. package/chunks/{startInteractiveUI-C3TJCUJP.js → startInteractiveUI-6EYJN3JV.js} +2588 -2371
  162. package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-T5YHQ6S2.js} +3 -3
  163. package/chunks/{task-create-OUYCA553.js → task-create-BLY7RHXX.js} +6 -6
  164. package/chunks/{task-list-WAX7I2IA.js → task-list-3QUYNVYR.js} +5 -5
  165. package/chunks/{task-stop-CAIL6FNH.js → task-stop-U4RATK2V.js} +2 -2
  166. package/chunks/{task-update-AHEO5OUT.js → task-update-U54O7KJX.js} +6 -6
  167. package/chunks/{team-create-3UXTW2MP.js → team-create-LPOGCPM7.js} +24 -26
  168. package/chunks/{team-delete-HGHFG23B.js → team-delete-LKBYPASD.js} +5 -5
  169. package/chunks/{theme-manager-3M5P6HST.js → theme-manager-LYLGAERF.js} +25 -27
  170. package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-OYXKTVYN.js} +4 -4
  171. package/chunks/{tool-search-BHVIDD3W.js → tool-search-YPUFJ3ZQ.js} +102 -18
  172. package/chunks/trustedFolders-5B24TMEA.js +73 -0
  173. package/chunks/types-QX5C3CHJ.js +12 -0
  174. package/chunks/{validateNonInterActiveAuth-HHD2CROM.js → validateNonInterActiveAuth-BTDTYOVT.js} +57 -54
  175. package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-EEB5LZYU.js} +28 -15
  176. package/chunks/{workflow-PPOHBLSJ.js → workflow-LAWIW5LI.js} +32 -33
  177. package/chunks/workspace-providers-status-PIAFVYHA.js +62 -0
  178. package/chunks/workspace-service-YAIOD4HG.js +71 -0
  179. package/chunks/{write-file-44GS2JVH.js → write-file-PCV226DJ.js} +63 -30
  180. package/chunks/{zh-RBEGQVQT.js → zh-5EUYXASN.js} +8 -0
  181. package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-TR3XYGE5.js} +8 -0
  182. package/cli-entry.js +20 -9
  183. package/cli.js +6 -6
  184. package/locales/ca.js +2 -0
  185. package/locales/de.js +2 -0
  186. package/locales/en.js +14 -0
  187. package/locales/fr.js +2 -0
  188. package/locales/ja.js +1 -0
  189. package/locales/pt.js +2 -0
  190. package/locales/ru.js +2 -0
  191. package/locales/zh-TW.js +12 -0
  192. package/locales/zh.js +12 -0
  193. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
  194. package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
  195. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
  196. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
  197. package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
  198. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
  199. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
  200. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
  201. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
  202. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
  203. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
  204. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
  205. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  206. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
  207. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
  208. package/node_modules/@qwen-code/audio-capture/package.json +30 -0
  209. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  210. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  211. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  212. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  213. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  214. package/package.json +6 -3
  215. package/web-shell/assets/{arc-D_ae_Y9k.js → arc-DA7r8Ueo.js} +1 -1
  216. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-ZDUxPtZ2.js} +1 -1
  217. package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-vrtOf1kJ.js} +1 -1
  218. package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-BHFjzIi4.js} +1 -1
  219. package/web-shell/assets/channel-iRo68q4Q.js +1 -0
  220. package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-mdeQVz59.js} +1 -1
  221. package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-BkKMlwBX.js} +1 -1
  222. package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-B7bnXNfu.js} +1 -1
  223. package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-DGz8Mm6i.js} +1 -1
  224. package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-BQAydUNk.js} +1 -1
  225. package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-GHr2LN_p.js} +1 -1
  226. package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-7R91lnUx.js} +1 -1
  227. package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-aTJD3lSQ.js} +1 -1
  228. package/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js +1 -0
  229. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js +1 -0
  230. package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-BTf8t1RL.js} +1 -1
  231. package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-_sgp3WuA.js} +1 -1
  232. package/web-shell/assets/default-aEtf0G7-.svg +1 -0
  233. package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-CROtRy1w.js} +1 -1
  234. package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-BqGRzwSc.js} +1 -1
  235. package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-CMrcEtA7.js} +1 -1
  236. package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-BRydGNW5.js} +1 -1
  237. package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-D0ilgNjV.js} +1 -1
  238. package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-2lnQeJUM.js} +1 -1
  239. package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-C_ZMdQiC.js} +1 -1
  240. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-Dw9V_Ny0.js} +1 -1
  241. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-HDXI-F1B.js} +1 -1
  242. package/web-shell/assets/index-CHmzAWys.css +5 -0
  243. package/web-shell/assets/index-w6GTOHh1.js +713 -0
  244. package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-CuB8Ebua.js} +1 -1
  245. package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
  246. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D_tyhVwh.js} +1 -1
  247. package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-CgCwJQNU.js} +1 -1
  248. package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-PZUtcbPx.js} +1 -1
  249. package/web-shell/assets/{linear-DGGM2kcP.js → linear-CZqRdJIU.js} +1 -1
  250. package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-CPW_4UEF.js} +5 -5
  251. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-D_Y75ID7.js} +1 -1
  252. package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-Q4dTyLeF.js} +1 -1
  253. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-ckw329Ft.js} +1 -1
  254. package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
  255. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-DbVDm4It.js} +1 -1
  256. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-CHuZ_ecH.js} +1 -1
  257. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-DU2YSpq-.js} +1 -1
  258. package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-CA9PEBUo.js} +1 -1
  259. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js +1 -0
  260. package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-Bhlo4WVc.js} +1 -1
  261. package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-6xtPLsyl.js} +1 -1
  262. package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-3eozmXPf.js} +1 -1
  263. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-BOn6hKss.js} +1 -1
  264. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-BsP4-I_y.js} +1 -1
  265. package/web-shell/index.html +2 -2
  266. package/chunks/chunk-5P5XGNYH.js +0 -93
  267. package/chunks/chunk-CL7QBVGW.js +0 -410
  268. package/chunks/chunk-SEZC2725.js +0 -36
  269. package/chunks/chunk-SYCJMSIJ.js +0 -82
  270. package/chunks/daemon-status-provider-TME7FJJD.js +0 -68
  271. package/chunks/initializer-GVY6XSFS.js +0 -61
  272. package/chunks/list-ZSIVGCZJ.js +0 -65
  273. package/chunks/loadedSettingsAdapter-KCX2EYFY.js +0 -60
  274. package/chunks/nonInteractiveCli-HNXJ6X6Z.js +0 -91
  275. package/chunks/workspace-providers-status-NAQJK6DP.js +0 -62
  276. package/chunks/workspace-service-YREVMAQD.js +0 -60
  277. package/web-shell/assets/channel-DYPNiTww.js +0 -1
  278. package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
  279. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
  280. package/web-shell/assets/index-CpOXWDPh.js +0 -714
  281. package/web-shell/assets/index-oVK7qhre.css +0 -5
  282. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
@@ -23,31 +23,31 @@ import {
23
23
  } from "./chunk-OMX7CUOE.js";
24
24
  import {
25
25
  isAnyAutoMemPath
26
- } from "./chunk-BNXANYLH.js";
26
+ } from "./chunk-RD6YJJJ6.js";
27
27
  import {
28
28
  InstallationManager
29
- } from "./chunk-T2VDEFUU.js";
29
+ } from "./chunk-SKQZZVAV.js";
30
30
  import {
31
31
  STRUCTURED_OUTPUT_REDACTED_ARGS
32
- } from "./chunk-OIC6S73E.js";
32
+ } from "./chunk-BUUQ5HPX.js";
33
33
  import {
34
34
  BaseDeclarativeTool,
35
35
  BaseToolInvocation,
36
36
  ToolDisplayNames,
37
37
  ToolNames
38
- } from "./chunk-TOEGRAVX.js";
38
+ } from "./chunk-BX5YO7UW.js";
39
39
  import {
40
40
  atomicWriteFile,
41
41
  atomicWriteFileSync
42
- } from "./chunk-3UALQ56H.js";
42
+ } from "./chunk-3227DZO4.js";
43
43
  import {
44
44
  convertSchema,
45
45
  runtimeDiagnostics,
46
46
  safeJsonParse
47
- } from "./chunk-CGEGHF2C.js";
47
+ } from "./chunk-BKXBARJZ.js";
48
48
  import {
49
49
  require_lib
50
- } from "./chunk-IRJWHZWU.js";
50
+ } from "./chunk-EJYJYJZ2.js";
51
51
  import {
52
52
  FinishReason,
53
53
  GenerateContentResponse
@@ -70,7 +70,7 @@ import {
70
70
  setShellTracePropagation,
71
71
  shortenPath,
72
72
  unescapePath
73
- } from "./chunk-C4K3FEQ2.js";
73
+ } from "./chunk-UX4SGCGN.js";
74
74
  import {
75
75
  require_dist
76
76
  } from "./chunk-ZERZSAZL.js";
@@ -59073,6 +59073,12 @@ var EVENT_SUBAGENT_EXECUTION = "qwen-code.subagent_execution";
59073
59073
  var EVENT_SKILL_LAUNCH = "qwen-code.skill_launch";
59074
59074
  var EVENT_AUTH = "qwen-code.auth";
59075
59075
  var EVENT_USER_FEEDBACK = "qwen-code.user_feedback";
59076
+ var DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH = 1024 * 1024;
59077
+ var SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT = 100 * 1024 * 1024;
59078
+ function isValidSensitiveSpanAttributeMaxLength(value) {
59079
+ return Number.isSafeInteger(value) && value >= 1 && value <= SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT;
59080
+ }
59081
+ __name(isValidSensitiveSpanAttributeMaxLength, "isValidSensitiveSpanAttributeMaxLength");
59076
59082
  var EVENT_PROMPT_SUGGESTION = "qwen-code.prompt_suggestion";
59077
59083
  var EVENT_SPECULATION = "qwen-code.speculation";
59078
59084
  var EVENT_WORKFLOW_KEYWORD = "qwen-code.workflow_keyword";
@@ -61149,12 +61155,18 @@ var ApiCancelEvent = class {
61149
61155
  model;
61150
61156
  prompt_id;
61151
61157
  auth_type;
61152
- constructor(model, prompt_id, auth_type) {
61158
+ // Pending self-paced /loop wakeups dropped by this abort, when any. Lets a
61159
+ // user abort that ends a loop be told apart from an ordinary cancellation.
61160
+ // Named for wakeups (not "loops") to avoid colliding with loop_type, the
61161
+ // unrelated repetition-detection vocabulary in this file.
61162
+ loop_wakeups_cancelled;
61163
+ constructor(model, prompt_id, auth_type, loop_wakeups_cancelled) {
61153
61164
  this["event.name"] = "api_cancel";
61154
61165
  this["event.timestamp"] = (/* @__PURE__ */ new Date()).toISOString();
61155
61166
  this.model = model;
61156
61167
  this.prompt_id = prompt_id;
61157
61168
  this.auth_type = auth_type;
61169
+ this.loop_wakeups_cancelled = loop_wakeups_cancelled;
61158
61170
  }
61159
61171
  };
61160
61172
  var ApiResponseEvent = class {
@@ -63103,6 +63115,12 @@ function mergeConsecutiveAssistantMessages(messages) {
63103
63115
  if (combinedToolCalls.length > 0) {
63104
63116
  lastMessage.tool_calls = combinedToolCalls;
63105
63117
  }
63118
+ const lastReasoning = lastMessage.reasoning_content;
63119
+ const currentReasoning = message.reasoning_content;
63120
+ const combinedReasoning = [lastReasoning, currentReasoning].filter(Boolean).join("");
63121
+ if (combinedReasoning) {
63122
+ lastMessage.reasoning_content = combinedReasoning;
63123
+ }
63106
63124
  continue;
63107
63125
  }
63108
63126
  }
@@ -63504,23 +63522,71 @@ import { AsyncLocalStorage as AsyncLocalStorage3 } from "node:async_hooks";
63504
63522
  // packages/core/src/telemetry/detailed-span-attributes.ts
63505
63523
  init_esbuild_shims();
63506
63524
  import { createHash as createHash2 } from "node:crypto";
63507
- var MAX_CONTENT_SIZE = 60 * 1024;
63508
63525
  var SYSTEM_PROMPT_PREVIEW_LENGTH = 500;
63526
+ var SHORT_TRUNCATION_SUFFIX = "...[TRUNCATED]";
63509
63527
  var seenHashes = /* @__PURE__ */ new Set();
63510
- function isEnabled(config) {
63528
+ function areSensitiveSpanAttributesEnabled(config) {
63511
63529
  return isTelemetrySdkInitialized() && config.getTelemetryIncludeSensitiveSpanAttributes();
63512
63530
  }
63513
- __name(isEnabled, "isEnabled");
63514
- function truncateContent(content, maxSize = MAX_CONTENT_SIZE) {
63515
- if (content.length <= maxSize) {
63531
+ __name(areSensitiveSpanAttributesEnabled, "areSensitiveSpanAttributesEnabled");
63532
+ function truncateContent(content, maxSize = DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH, originalLength = content.length) {
63533
+ if (!Number.isSafeInteger(maxSize) || maxSize < 1) {
63534
+ throw new TypeError(
63535
+ `maxSize must be a positive safe integer, got ${String(maxSize)}`
63536
+ );
63537
+ }
63538
+ if (!Number.isSafeInteger(originalLength) || originalLength < 0) {
63539
+ throw new TypeError(
63540
+ `originalLength must be a non-negative safe integer, got ${String(
63541
+ originalLength
63542
+ )}`
63543
+ );
63544
+ }
63545
+ if (originalLength < content.length) {
63546
+ throw new TypeError(
63547
+ `originalLength must be greater than or equal to content length, got ${originalLength} for content length ${content.length}`
63548
+ );
63549
+ }
63550
+ if (originalLength <= maxSize && content.length <= maxSize) {
63516
63551
  return { content, truncated: false };
63517
63552
  }
63553
+ if (originalLength > content.length && content.length <= maxSize) {
63554
+ return { content, truncated: true };
63555
+ }
63556
+ const suffix = `
63557
+
63558
+ [TRUNCATED - Content exceeds configured limit of ${maxSize} characters]`;
63559
+ if (suffix.length >= maxSize) {
63560
+ if (SHORT_TRUNCATION_SUFFIX.length >= maxSize) {
63561
+ return {
63562
+ content: SHORT_TRUNCATION_SUFFIX.slice(0, maxSize),
63563
+ truncated: true
63564
+ };
63565
+ }
63566
+ return {
63567
+ content: content.slice(0, maxSize - SHORT_TRUNCATION_SUFFIX.length) + SHORT_TRUNCATION_SUFFIX,
63568
+ truncated: true
63569
+ };
63570
+ }
63518
63571
  return {
63519
- content: content.slice(0, maxSize) + "\n\n[TRUNCATED - Content exceeds 60KB limit]",
63572
+ content: content.slice(0, maxSize - suffix.length) + suffix,
63520
63573
  truncated: true
63521
63574
  };
63522
63575
  }
63523
63576
  __name(truncateContent, "truncateContent");
63577
+ function getMaxContentSize(config) {
63578
+ return config.getTelemetrySensitiveSpanAttributeMaxLength();
63579
+ }
63580
+ __name(getMaxContentSize, "getMaxContentSize");
63581
+ function truncatePrefixedContent(prefix, content, maxSize) {
63582
+ const prefixedContent = `${prefix}${content}`;
63583
+ const result = truncateContent(prefixedContent, maxSize);
63584
+ return {
63585
+ ...result,
63586
+ originalLength: content.length
63587
+ };
63588
+ }
63589
+ __name(truncatePrefixedContent, "truncatePrefixedContent");
63524
63590
  function shortHash(content) {
63525
63591
  return createHash2("sha256").update(content).digest("hex").slice(0, 12);
63526
63592
  }
@@ -63531,20 +63597,24 @@ function stringifyContentUnion(value) {
63531
63597
  }
63532
63598
  __name(stringifyContentUnion, "stringifyContentUnion");
63533
63599
  function addUserPromptAttributes(config, span, promptText) {
63534
- if (!isEnabled(config) || !promptText) return;
63535
- const { content, truncated } = truncateContent(promptText);
63600
+ if (!areSensitiveSpanAttributesEnabled(config) || !promptText) return;
63601
+ const { content, truncated, originalLength } = truncatePrefixedContent(
63602
+ `[USER PROMPT]
63603
+ `,
63604
+ promptText,
63605
+ getMaxContentSize(config)
63606
+ );
63536
63607
  span.setAttributes({
63537
- new_context: `[USER PROMPT]
63538
- ${content}`,
63608
+ new_context: content,
63539
63609
  ...truncated && {
63540
63610
  new_context_truncated: true,
63541
- new_context_original_length: promptText.length
63611
+ new_context_original_length: originalLength
63542
63612
  }
63543
63613
  });
63544
63614
  }
63545
63615
  __name(addUserPromptAttributes, "addUserPromptAttributes");
63546
63616
  function addSystemPromptAttributes(config, span, systemInstruction) {
63547
- if (!isEnabled(config) || !systemInstruction) return;
63617
+ if (!areSensitiveSpanAttributesEnabled(config) || !systemInstruction) return;
63548
63618
  const text = stringifyContentUnion(systemInstruction);
63549
63619
  if (!text) return;
63550
63620
  const hash = `sp_${shortHash(text)}`;
@@ -63555,7 +63625,10 @@ function addSystemPromptAttributes(config, span, systemInstruction) {
63555
63625
  });
63556
63626
  if (!seenHashes.has(hash)) {
63557
63627
  seenHashes.add(hash);
63558
- const { content, truncated } = truncateContent(text);
63628
+ const { content, truncated } = truncateContent(
63629
+ text,
63630
+ getMaxContentSize(config)
63631
+ );
63559
63632
  span.setAttribute("system_prompt", content);
63560
63633
  if (truncated) {
63561
63634
  span.setAttribute("system_prompt_truncated", true);
@@ -63564,7 +63637,7 @@ function addSystemPromptAttributes(config, span, systemInstruction) {
63564
63637
  }
63565
63638
  __name(addSystemPromptAttributes, "addSystemPromptAttributes");
63566
63639
  function addToolSchemaAttributes(config, span, tools) {
63567
- if (!isEnabled(config) || !tools?.length) return;
63640
+ if (!areSensitiveSpanAttributesEnabled(config) || !tools?.length) return;
63568
63641
  const declarations = [];
63569
63642
  for (const tool of tools) {
63570
63643
  const inner = tool["functionDeclarations"];
@@ -63584,12 +63657,18 @@ function addToolSchemaAttributes(config, span, tools) {
63584
63657
  const hashKey = `tool_${hash}`;
63585
63658
  if (!seenHashes.has(hashKey)) {
63586
63659
  seenHashes.add(hashKey);
63587
- const { content, truncated } = truncateContent(declJson);
63660
+ const { content, truncated } = truncateContent(
63661
+ declJson,
63662
+ getMaxContentSize(config)
63663
+ );
63588
63664
  span.addEvent("tool_schema", {
63589
63665
  tool_name: name,
63590
63666
  tool_hash: hash,
63591
63667
  tool_definition: content,
63592
- ...truncated && { tool_definition_truncated: true }
63668
+ ...truncated && {
63669
+ tool_definition_truncated: true,
63670
+ tool_definition_original_length: declJson.length
63671
+ }
63593
63672
  });
63594
63673
  }
63595
63674
  }
@@ -63599,40 +63678,53 @@ function addToolSchemaAttributes(config, span, tools) {
63599
63678
  });
63600
63679
  }
63601
63680
  __name(addToolSchemaAttributes, "addToolSchemaAttributes");
63602
- function addModelOutputAttributes(config, span, responseText) {
63603
- if (!isEnabled(config) || !responseText) return;
63604
- const { content, truncated } = truncateContent(responseText);
63681
+ function addModelOutputAttributes(config, span, responseText, originalLength) {
63682
+ if (!areSensitiveSpanAttributesEnabled(config) || !responseText) return;
63683
+ const responseTextOriginalLength = originalLength ?? responseText.length;
63684
+ const { content, truncated } = truncateContent(
63685
+ responseText,
63686
+ getMaxContentSize(config),
63687
+ responseTextOriginalLength
63688
+ );
63605
63689
  span.setAttributes({
63606
63690
  "response.model_output": content,
63607
63691
  ...truncated && {
63608
63692
  "response.model_output_truncated": true,
63609
- "response.model_output_original_length": responseText.length
63693
+ "response.model_output_original_length": responseTextOriginalLength
63610
63694
  }
63611
63695
  });
63612
63696
  }
63613
63697
  __name(addModelOutputAttributes, "addModelOutputAttributes");
63614
63698
  function addToolInputAttributes(config, span, toolName, toolInput) {
63615
- if (!isEnabled(config)) return;
63616
- const { content, truncated } = truncateContent(toolInput);
63699
+ if (!areSensitiveSpanAttributesEnabled(config)) return;
63700
+ const { content, truncated, originalLength } = truncatePrefixedContent(
63701
+ `[TOOL INPUT: ${toolName}]
63702
+ `,
63703
+ toolInput,
63704
+ getMaxContentSize(config)
63705
+ );
63617
63706
  span.setAttributes({
63618
- tool_input: `[TOOL INPUT: ${toolName}]
63619
- ${content}`,
63707
+ tool_input: content,
63620
63708
  ...truncated && {
63621
63709
  tool_input_truncated: true,
63622
- tool_input_original_length: toolInput.length
63710
+ tool_input_original_length: originalLength
63623
63711
  }
63624
63712
  });
63625
63713
  }
63626
63714
  __name(addToolInputAttributes, "addToolInputAttributes");
63627
63715
  function addToolResultAttributes(config, span, toolName, toolResult) {
63628
- if (!isEnabled(config)) return;
63629
- const { content, truncated } = truncateContent(toolResult);
63716
+ if (!areSensitiveSpanAttributesEnabled(config)) return;
63717
+ const { content, truncated, originalLength } = truncatePrefixedContent(
63718
+ `[TOOL RESULT: ${toolName}]
63719
+ `,
63720
+ toolResult,
63721
+ getMaxContentSize(config)
63722
+ );
63630
63723
  span.setAttributes({
63631
- tool_result: `[TOOL RESULT: ${toolName}]
63632
- ${content}`,
63724
+ tool_result: content,
63633
63725
  ...truncated && {
63634
63726
  tool_result_truncated: true,
63635
- tool_result_original_length: toolResult.length
63727
+ tool_result_original_length: originalLength
63636
63728
  }
63637
63729
  });
63638
63730
  }
@@ -64017,6 +64109,34 @@ function endLLMRequestSpan(span, metadata) {
64017
64109
  }
64018
64110
  }
64019
64111
  spanCtx.span.setAttributes(endAttributes);
64112
+ try {
64113
+ if (metadata?.config && metadata.success) {
64114
+ const model = String(spanCtx.attributes["qwen-code.model"] ?? "");
64115
+ if (metadata.requestSetupMs !== void 0) {
64116
+ recordApiRequestBreakdown(metadata.config, metadata.requestSetupMs, {
64117
+ model,
64118
+ phase: "request_preparation" /* REQUEST_PREPARATION */
64119
+ });
64120
+ }
64121
+ if (metadata.ttftMs !== void 0) {
64122
+ recordApiRequestBreakdown(metadata.config, metadata.ttftMs, {
64123
+ model,
64124
+ phase: "network_latency" /* NETWORK_LATENCY */
64125
+ });
64126
+ }
64127
+ const breakdownSamplingMs = metadata.ttftMs !== void 0 ? Math.max(0, duration - metadata.ttftMs) : void 0;
64128
+ if (breakdownSamplingMs !== void 0 && breakdownSamplingMs > 0) {
64129
+ recordApiRequestBreakdown(metadata.config, breakdownSamplingMs, {
64130
+ model,
64131
+ phase: "response_processing" /* RESPONSE_PROCESSING */
64132
+ });
64133
+ }
64134
+ }
64135
+ } catch (error) {
64136
+ debugLogger8.warn(
64137
+ `Failed to record API request breakdown histogram: ${error instanceof Error ? error.message : String(error)}`
64138
+ );
64139
+ }
64020
64140
  if (metadata === void 0 || metadata.success) {
64021
64141
  spanCtx.span.setStatus({ code: SpanStatusCode.OK });
64022
64142
  } else {
@@ -65416,6 +65536,30 @@ function parseTelemetryTargetValue(value) {
65416
65536
  return void 0;
65417
65537
  }
65418
65538
  __name(parseTelemetryTargetValue, "parseTelemetryTargetValue");
65539
+ function parseSensitiveSpanAttributeMaxLengthEnvValue(envName, value) {
65540
+ if (value === void 0) return void 0;
65541
+ const trimmed = value.trim();
65542
+ const parsed = Number(trimmed);
65543
+ if (!/^\d+$/.test(trimmed) || !isValidSensitiveSpanAttributeMaxLength(parsed)) {
65544
+ throw new FatalConfigError(
65545
+ `Invalid ${envName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got '${value}'`
65546
+ );
65547
+ }
65548
+ return parsed;
65549
+ }
65550
+ __name(parseSensitiveSpanAttributeMaxLengthEnvValue, "parseSensitiveSpanAttributeMaxLengthEnvValue");
65551
+ function parseSensitiveSpanAttributeMaxLengthSetting(settingName, value) {
65552
+ if (value === void 0) return void 0;
65553
+ if (typeof value !== "number" || !isValidSensitiveSpanAttributeMaxLength(value)) {
65554
+ throw new FatalConfigError(
65555
+ `Invalid ${settingName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got ${String(
65556
+ value
65557
+ )}`
65558
+ );
65559
+ }
65560
+ return value;
65561
+ }
65562
+ __name(parseSensitiveSpanAttributeMaxLengthSetting, "parseSensitiveSpanAttributeMaxLengthSetting");
65419
65563
  async function resolveTelemetrySettings(options) {
65420
65564
  const argv = options.argv ?? {};
65421
65565
  const env = options.env ?? {};
@@ -65446,6 +65590,13 @@ async function resolveTelemetrySettings(options) {
65446
65590
  const includeSensitiveSpanAttributes = parseBooleanEnvFlag(
65447
65591
  env["QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES"]
65448
65592
  ) ?? settings.includeSensitiveSpanAttributes ?? false;
65593
+ const sensitiveSpanAttributeMaxLength = parseSensitiveSpanAttributeMaxLengthEnvValue(
65594
+ "QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH",
65595
+ env["QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH"]
65596
+ ) ?? parseSensitiveSpanAttributeMaxLengthSetting(
65597
+ "telemetry.sensitiveSpanAttributeMaxLength",
65598
+ settings.sensitiveSpanAttributeMaxLength
65599
+ ) ?? DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH;
65449
65600
  const outfile = argv.telemetryOutfile ?? env["QWEN_TELEMETRY_OUTFILE"] ?? settings.outfile;
65450
65601
  const otlpTracesEndpoint = env["QWEN_TELEMETRY_OTLP_TRACES_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] ?? settings.otlpTracesEndpoint;
65451
65602
  const otlpLogsEndpoint = env["QWEN_TELEMETRY_OTLP_LOGS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"] ?? settings.otlpLogsEndpoint;
@@ -65487,6 +65638,7 @@ async function resolveTelemetrySettings(options) {
65487
65638
  otlpMetricsEndpoint,
65488
65639
  logPrompts,
65489
65640
  includeSensitiveSpanAttributes,
65641
+ sensitiveSpanAttributeMaxLength,
65490
65642
  outfile,
65491
65643
  resourceAttributes,
65492
65644
  metrics: { includeSessionId: metricsIncludeSessionId },
@@ -65520,6 +65672,12 @@ var createInitialModelMetrics = /* @__PURE__ */ __name(() => ({
65520
65672
  ...createInitialModelMetricsCore(),
65521
65673
  bySource: /* @__PURE__ */ Object.create(null)
65522
65674
  }), "createInitialModelMetrics");
65675
+ var createInitialSkillMetrics = /* @__PURE__ */ __name(() => ({
65676
+ totalCalls: 0,
65677
+ totalSuccess: 0,
65678
+ totalFail: 0,
65679
+ byName: {}
65680
+ }), "createInitialSkillMetrics");
65523
65681
  var createInitialMetrics = /* @__PURE__ */ __name(() => ({
65524
65682
  models: {},
65525
65683
  tools: {
@@ -65538,7 +65696,8 @@ var createInitialMetrics = /* @__PURE__ */ __name(() => ({
65538
65696
  files: {
65539
65697
  totalLinesAdded: 0,
65540
65698
  totalLinesRemoved: 0
65541
- }
65699
+ },
65700
+ skills: createInitialSkillMetrics()
65542
65701
  }), "createInitialMetrics");
65543
65702
  var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
65544
65703
  static {
@@ -65570,6 +65729,23 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
65570
65729
  getMetricsForSession(sessionId) {
65571
65730
  return this.#sessionMetrics.get(sessionId) ?? createInitialMetrics();
65572
65731
  }
65732
+ recordSkillInvocation(skillName, success, sessionId) {
65733
+ this.#accumulateSkillInvocation(this.#metrics, skillName, success);
65734
+ if (sessionId && !this.#closedSessions.has(sessionId)) {
65735
+ if (!this.#sessionMetrics.has(sessionId)) {
65736
+ this.#sessionMetrics.set(sessionId, createInitialMetrics());
65737
+ }
65738
+ this.#accumulateSkillInvocation(
65739
+ this.#sessionMetrics.get(sessionId),
65740
+ skillName,
65741
+ success
65742
+ );
65743
+ }
65744
+ this.emit("update", {
65745
+ metrics: this.#metrics,
65746
+ lastPromptTokenCount: this.#lastPromptTokenCount
65747
+ });
65748
+ }
65573
65749
  getLastPromptTokenCount() {
65574
65750
  return this.#lastPromptTokenCount;
65575
65751
  }
@@ -65703,6 +65879,38 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
65703
65879
  }
65704
65880
  }
65705
65881
  }
65882
+ #accumulateSkillInvocation(metrics2, skillName, success) {
65883
+ const skills = metrics2.skills ?? createInitialSkillMetrics();
65884
+ metrics2.skills = skills;
65885
+ skills.totalCalls++;
65886
+ if (success) {
65887
+ skills.totalSuccess++;
65888
+ } else {
65889
+ skills.totalFail++;
65890
+ }
65891
+ if (!Object.prototype.hasOwnProperty.call(skills.byName, skillName)) {
65892
+ Object.defineProperty(skills.byName, skillName, {
65893
+ value: {
65894
+ count: 0,
65895
+ success: 0,
65896
+ fail: 0
65897
+ },
65898
+ enumerable: true,
65899
+ configurable: true,
65900
+ writable: true
65901
+ });
65902
+ }
65903
+ const skillStats = skills.byName[skillName];
65904
+ if (!skillStats) {
65905
+ return;
65906
+ }
65907
+ skillStats.count++;
65908
+ if (success) {
65909
+ skillStats.success++;
65910
+ } else {
65911
+ skillStats.fail++;
65912
+ }
65913
+ }
65706
65914
  #getOrCreateModelMetrics(metrics2, modelName) {
65707
65915
  if (!metrics2.models[modelName]) {
65708
65916
  metrics2.models[modelName] = createInitialModelMetrics();
@@ -66220,7 +66428,6 @@ __name(snapshotRetryMetadata, "snapshotRetryMetadata");
66220
66428
  var debugLogger10 = createDebugLogger("LOGGING_CONTENT_GENERATOR");
66221
66429
  var MAX_RESPONSE_TEXT_LENGTH = 4096;
66222
66430
  var RESPONSE_TEXT_TRUNCATION_SUFFIX = "...[truncated]";
66223
- var MAX_RESPONSE_TEXT_PREFIX_LENGTH = MAX_RESPONSE_TEXT_LENGTH - RESPONSE_TEXT_TRUNCATION_SUFFIX.length;
66224
66431
  var LoggingContentGenerator = class {
66225
66432
  constructor(wrapped, config, generatorConfig) {
66226
66433
  this.wrapped = wrapped;
@@ -66357,9 +66564,14 @@ var LoggingContentGenerator = class {
66357
66564
  () => this.wrapped.generateContent(req, userPromptId)
66358
66565
  );
66359
66566
  const durationMs = Date.now() - startTime;
66360
- const responseText = isInternal ? void 0 : this.extractResponseText(result);
66361
- if (!isInternal) {
66362
- addModelOutputAttributes(this.config, llmSpan, responseText);
66567
+ const shouldCollectSensitiveSpanAttributes = !isInternal && this.shouldCollectSensitiveSpanAttributes();
66568
+ const modelOutput = shouldCollectSensitiveSpanAttributes ? this.extractResponseTextForSensitiveSpan(
66569
+ result,
66570
+ this.config.getTelemetrySensitiveSpanAttributeMaxLength()
66571
+ ) : void 0;
66572
+ const responseText = isInternal ? void 0 : this.extractResponseText(result, MAX_RESPONSE_TEXT_LENGTH);
66573
+ if (shouldCollectSensitiveSpanAttributes) {
66574
+ this.safelyAddModelOutputAttributes(llmSpan, modelOutput);
66363
66575
  }
66364
66576
  this.safelyLogApiResponse(
66365
66577
  result.responseId ?? "",
@@ -66391,7 +66603,8 @@ var LoggingContentGenerator = class {
66391
66603
  finishReason: response.candidates?.[0]?.finishReason || void 0,
66392
66604
  thoughtsTokenCount: response.usageMetadata?.thoughtsTokenCount,
66393
66605
  subagentName: subagentNameContext.getStore() || void 0,
66394
- ...retrySnapshot
66606
+ ...retrySnapshot,
66607
+ config: this.config
66395
66608
  });
66396
66609
  return response;
66397
66610
  } catch (error) {
@@ -66404,7 +66617,8 @@ var LoggingContentGenerator = class {
66404
66617
  errorType: getErrorType(error),
66405
66618
  errorStatusCode: getErrorStatus(error),
66406
66619
  subagentName: subagentNameContext.getStore() || void 0,
66407
- ...retrySnapshot
66620
+ ...retrySnapshot,
66621
+ config: this.config
66408
66622
  });
66409
66623
  await context.with(spanContext, async () => {
66410
66624
  this.safelyLogApiError("", durationMs, error, req.model, userPromptId);
@@ -66477,7 +66691,8 @@ var LoggingContentGenerator = class {
66477
66691
  errorType: getErrorType(error),
66478
66692
  errorStatusCode: getErrorStatus(error),
66479
66693
  subagentName: subagentNameContext.getStore() || void 0,
66480
- ...retrySnapshot
66694
+ ...retrySnapshot,
66695
+ config: this.config
66481
66696
  });
66482
66697
  try {
66483
66698
  await this.safelyLogOpenAIInteraction(
@@ -66554,7 +66769,8 @@ var LoggingContentGenerator = class {
66554
66769
  error: "Stream span timed out (idle)",
66555
66770
  responseId: firstResponseId || void 0,
66556
66771
  subagentName: subagentName || void 0,
66557
- ...retrySnapshot
66772
+ ...retrySnapshot,
66773
+ config: this.config
66558
66774
  });
66559
66775
  spanEndedByTimeout = true;
66560
66776
  }, STREAM_IDLE_TIMEOUT_MS);
@@ -66591,7 +66807,15 @@ var LoggingContentGenerator = class {
66591
66807
  }
66592
66808
  const durationMs = Date.now() - startTime;
66593
66809
  const consolidatedResponse = shouldCollectResponses ? this.consolidateGeminiResponsesForLogging(responses) : void 0;
66594
- const streamResponseText = isInternal ? void 0 : this.extractResponseText(consolidatedResponse);
66810
+ const shouldCollectSensitiveSpanAttributes = !isInternal && span !== void 0 && this.shouldCollectSensitiveSpanAttributes();
66811
+ const streamModelOutput = shouldCollectSensitiveSpanAttributes ? this.extractResponseTextForSensitiveSpan(
66812
+ consolidatedResponse,
66813
+ this.config.getTelemetrySensitiveSpanAttributeMaxLength()
66814
+ ) : void 0;
66815
+ const streamResponseText = isInternal ? void 0 : this.extractResponseText(
66816
+ consolidatedResponse,
66817
+ MAX_RESPONSE_TEXT_LENGTH
66818
+ );
66595
66819
  if (!spanEndedByTimeout) {
66596
66820
  runInSpan(
66597
66821
  () => this.safelyLogApiResponse(
@@ -66603,8 +66827,8 @@ var LoggingContentGenerator = class {
66603
66827
  streamResponseText
66604
66828
  )
66605
66829
  );
66606
- if (!isInternal && span) {
66607
- addModelOutputAttributes(this.config, span, streamResponseText);
66830
+ if (shouldCollectSensitiveSpanAttributes && span) {
66831
+ this.safelyAddModelOutputAttributes(span, streamModelOutput);
66608
66832
  }
66609
66833
  await runInSpan(
66610
66834
  () => this.safelyLogOpenAIInteraction(
@@ -66659,7 +66883,8 @@ var LoggingContentGenerator = class {
66659
66883
  subagentName: subagentName || void 0,
66660
66884
  errorType: lastError ? getErrorType(lastError) : void 0,
66661
66885
  errorStatusCode: lastError ? getErrorStatus(lastError) : void 0,
66662
- ...retrySnapshot
66886
+ ...retrySnapshot,
66887
+ config: this.config
66663
66888
  });
66664
66889
  }
66665
66890
  }
@@ -66812,40 +67037,84 @@ var LoggingContentGenerator = class {
66812
67037
  ];
66813
67038
  return consolidated;
66814
67039
  }
66815
- extractResponseText(response) {
66816
- const parts = response?.candidates?.[0]?.content?.parts;
66817
- if (!parts?.length) {
66818
- return void 0;
66819
- }
67040
+ extractResponseText(response, maxLength) {
66820
67041
  let text = "";
66821
- let hasText = false;
66822
67042
  let truncated = false;
66823
- const appendText = /* @__PURE__ */ __name((partText) => {
66824
- hasText = true;
67043
+ const maxPrefixLength = Math.max(
67044
+ 0,
67045
+ maxLength - RESPONSE_TEXT_TRUNCATION_SUFFIX.length
67046
+ );
67047
+ const hasText = this.forEachVisibleResponseText(response, (partText) => {
66825
67048
  if (truncated) {
66826
67049
  return;
66827
67050
  }
66828
- const remaining = MAX_RESPONSE_TEXT_PREFIX_LENGTH - text.length;
67051
+ const remaining = maxPrefixLength - text.length;
66829
67052
  if (partText.length <= remaining) {
66830
67053
  text += partText;
66831
67054
  return;
66832
67055
  }
66833
67056
  text += partText.slice(0, Math.max(0, remaining));
66834
67057
  truncated = true;
66835
- }, "appendText");
67058
+ });
67059
+ if (!hasText) {
67060
+ return void 0;
67061
+ }
67062
+ return truncated ? `${text}${RESPONSE_TEXT_TRUNCATION_SUFFIX}` : text;
67063
+ }
67064
+ extractResponseTextForSensitiveSpan(response, maxLength) {
67065
+ let text = "";
67066
+ let originalLength = 0;
67067
+ const hasText = this.forEachVisibleResponseText(response, (partText) => {
67068
+ originalLength += partText.length;
67069
+ const remaining = maxLength - text.length;
67070
+ if (remaining > 0) {
67071
+ text += partText.slice(0, remaining);
67072
+ }
67073
+ });
67074
+ if (!hasText) {
67075
+ return void 0;
67076
+ }
67077
+ return { text, originalLength };
67078
+ }
67079
+ forEachVisibleResponseText(response, onText) {
67080
+ const parts = response?.candidates?.[0]?.content?.parts;
67081
+ if (!parts?.length) {
67082
+ return false;
67083
+ }
67084
+ let hasText = false;
66836
67085
  for (const part of parts) {
66837
- if (typeof part === "string") {
66838
- appendText(part);
67086
+ const text = this.getVisibleResponsePartText(part);
67087
+ if (text === void 0) {
66839
67088
  continue;
66840
67089
  }
66841
- if ("text" in part && typeof part.text === "string" && !("thought" in part && part.thought)) {
66842
- appendText(part.text);
66843
- }
67090
+ hasText = true;
67091
+ onText(text);
66844
67092
  }
66845
- if (!hasText) {
66846
- return void 0;
67093
+ return hasText;
67094
+ }
67095
+ getVisibleResponsePartText(part) {
67096
+ if (typeof part === "string") {
67097
+ return part;
66847
67098
  }
66848
- return truncated ? `${text}${RESPONSE_TEXT_TRUNCATION_SUFFIX}` : text;
67099
+ if ("text" in part && typeof part.text === "string" && !("thought" in part && part.thought)) {
67100
+ return part.text;
67101
+ }
67102
+ return void 0;
67103
+ }
67104
+ safelyAddModelOutputAttributes(span, modelOutput) {
67105
+ try {
67106
+ addModelOutputAttributes(
67107
+ this.config,
67108
+ span,
67109
+ modelOutput?.text,
67110
+ modelOutput?.originalLength
67111
+ );
67112
+ } catch (error) {
67113
+ debugLogger10.warn("Failed to add model output span attributes:", error);
67114
+ }
67115
+ }
67116
+ shouldCollectSensitiveSpanAttributes() {
67117
+ return areSensitiveSpanAttributesEnabled(this.config);
66849
67118
  }
66850
67119
  async countTokens(req) {
66851
67120
  return this.wrapped.countTokens(req);
@@ -67227,11 +67496,11 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
67227
67496
  let baseGenerator;
67228
67497
  try {
67229
67498
  if (authType === "openai" /* USE_OPENAI */) {
67230
- const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-TI3M5VNP.js");
67499
+ const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-J7G2FYJT.js");
67231
67500
  baseGenerator = createOpenAIContentGenerator(generatorConfig, config);
67232
67501
  } else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
67233
- const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-K4AASPCV.js");
67234
- const { QwenContentGenerator } = await import("./qwenContentGenerator-7WDBLJ77.js");
67502
+ const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-AG3PFFLZ.js");
67503
+ const { QwenContentGenerator } = await import("./qwenContentGenerator-5XIEM5GV.js");
67235
67504
  try {
67236
67505
  const qwenClient = await getQwenOauthClient(
67237
67506
  config,
@@ -67249,10 +67518,10 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
67249
67518
  throw new Error(error instanceof Error ? error.message : String(error));
67250
67519
  }
67251
67520
  } else if (authType === "anthropic" /* USE_ANTHROPIC */) {
67252
- const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-E3TQ5XJJ.js");
67521
+ const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-PFITVL7Y.js");
67253
67522
  baseGenerator = createAnthropicContentGenerator(generatorConfig, config);
67254
67523
  } else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
67255
- const { createGeminiContentGenerator } = await import("./geminiContentGenerator-35K5AQ5O.js");
67524
+ const { createGeminiContentGenerator } = await import("./geminiContentGenerator-XV6SV6CD.js");
67256
67525
  baseGenerator = createGeminiContentGenerator(generatorConfig, config);
67257
67526
  } else {
67258
67527
  throw new Error(
@@ -67701,7 +67970,8 @@ var QwenLogger = class _QwenLogger {
67701
67970
  properties: {
67702
67971
  model: event.model,
67703
67972
  prompt_id: event.prompt_id,
67704
- auth_type: event.auth_type
67973
+ auth_type: event.auth_type,
67974
+ loop_wakeups_cancelled: event.loop_wakeups_cancelled
67705
67975
  }
67706
67976
  });
67707
67977
  this.enqueueLogEvent(rumEvent);
@@ -69411,6 +69681,14 @@ function logSkillLaunch(config, event) {
69411
69681
  logger.emit(logRecord);
69412
69682
  }
69413
69683
  __name(logSkillLaunch, "logSkillLaunch");
69684
+ function recordSkillInvocation(config, event) {
69685
+ uiTelemetryService.recordSkillInvocation(
69686
+ event.skillName,
69687
+ event.success,
69688
+ config.getSessionId()
69689
+ );
69690
+ }
69691
+ __name(recordSkillInvocation, "recordSkillInvocation");
69414
69692
  function logUserFeedback(config, event) {
69415
69693
  const uiEvent = {
69416
69694
  ...event,
@@ -69989,6 +70267,9 @@ export {
69989
70267
  EVENT_TOOL_CALL,
69990
70268
  EVENT_API_ERROR,
69991
70269
  EVENT_API_RESPONSE,
70270
+ DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
70271
+ SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT,
70272
+ isValidSensitiveSpanAttributeMaxLength,
69992
70273
  MAIN_SOURCE,
69993
70274
  subagentNameContext,
69994
70275
  UiTelemetryService,
@@ -70081,6 +70362,7 @@ export {
70081
70362
  SemanticAttributes,
70082
70363
  sanitizeHookName,
70083
70364
  QwenLogger,
70365
+ areSensitiveSpanAttributesEnabled,
70084
70366
  truncateContent,
70085
70367
  addUserPromptAttributes,
70086
70368
  addSystemPromptAttributes,
@@ -70165,6 +70447,7 @@ export {
70165
70447
  logExtensionDisable,
70166
70448
  logAuth,
70167
70449
  logSkillLaunch,
70450
+ recordSkillInvocation,
70168
70451
  logUserFeedback,
70169
70452
  logArenaSessionStarted,
70170
70453
  logArenaAgentCompleted,