@qwen-code/qwen-code 0.19.2 → 0.19.3-nightly.20260701.a974594d7

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 (291) hide show
  1. package/bundled/extension-creator/SKILL.md +357 -0
  2. package/bundled/loop/SKILL.md +34 -10
  3. package/bundled/loop/SKILL.test.ts +52 -0
  4. package/bundled/loop/autonomous-loop.test.ts +59 -0
  5. package/bundled/loop/autonomous-loop.ts +102 -0
  6. package/bundled/loop/loop-task-file.test.ts +1064 -0
  7. package/bundled/loop/loop-task-file.ts +404 -0
  8. package/bundled/loop/loop-tick-resolver.test.ts +864 -0
  9. package/bundled/loop/loop-tick-resolver.ts +416 -0
  10. package/bundled/qc-helper/SKILL.md +26 -19
  11. package/bundled/qc-helper/docs/configuration/auth.md +11 -11
  12. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
  13. package/bundled/qc-helper/docs/configuration/settings.md +77 -75
  14. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  15. package/bundled/qc-helper/docs/features/commands.md +108 -77
  16. package/bundled/qc-helper/docs/features/hooks.md +6 -1
  17. package/bundled/qc-helper/docs/features/memory.md +53 -1
  18. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  19. package/bundled/qc-helper/docs/ide-integration/ide-integration.md +4 -4
  20. package/bundled/qc-helper/docs/qwen-serve.md +24 -2
  21. package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
  22. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
  23. package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-UZHJ73JB.js} +29 -27
  24. package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-GGUIZWCE.js} +42 -37
  25. package/chunks/{acpAgent-4MCETHF2.js → acpAgent-QYZFICEZ.js} +1292 -332
  26. package/chunks/{agent-K3ENVYSB.js → agent-2EN7YNSW.js} +24 -23
  27. package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-SLTEZ5LV.js} +24 -23
  28. package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-CA3JTAMO.js} +33 -12
  29. package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-RM7WINJO.js} +3 -3
  30. package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-J3P6QAJ7.js} +2 -2
  31. package/chunks/{bridge-4LV2HBH2.js → bridge-HZVAUTMX.js} +29 -28
  32. package/chunks/{ca-7WC7ELX6.js → ca-RYOETBUW.js} +10 -9
  33. package/chunks/{chunk-JXQ23SNT.js → chunk-2JKEQWDZ.js} +623 -78
  34. package/chunks/chunk-32MCHZQC.js +73 -0
  35. package/chunks/{chunk-PXFFKNCO.js → chunk-35FH347N.js} +5308 -2500
  36. package/chunks/{chunk-5JZLXFPD.js → chunk-3O2BJMFW.js} +11 -11
  37. package/chunks/{chunk-2JD55C6G.js → chunk-3TK7FSCP.js} +2 -2
  38. package/chunks/{chunk-USGMPVOY.js → chunk-4722VFFU.js} +19 -10
  39. package/chunks/chunk-6FIWYVN4.js +4932 -0
  40. package/chunks/{chunk-I2RFAW6Q.js → chunk-7SP275SH.js} +7 -5
  41. package/chunks/{chunk-5R4SBCX6.js → chunk-AIBPG5MB.js} +3 -3
  42. package/chunks/{chunk-C4K3FEQ2.js → chunk-AVQDCKNF.js} +124 -21
  43. package/chunks/{chunk-OTBK43JR.js → chunk-B236XPGF.js} +1 -1
  44. package/chunks/{chunk-WA5OJGFL.js → chunk-B5MPZI4K.js} +458 -125
  45. package/chunks/{chunk-5DWXLGOM.js → chunk-BJBWRCSK.js} +1 -1
  46. package/chunks/{chunk-4W4T77MO.js → chunk-BLAE2TCO.js} +109 -6
  47. package/chunks/chunk-BMFMJINR.js +45 -0
  48. package/chunks/{chunk-T2VDEFUU.js → chunk-BZHLWC6T.js} +2 -2
  49. package/chunks/{chunk-XU5P23GN.js → chunk-CA4ML3VH.js} +3 -3
  50. package/chunks/{chunk-WGAEWQTF.js → chunk-DBR7PF4B.js} +1 -2
  51. package/chunks/{chunk-S566HKUS.js → chunk-DHXWNSJA.js} +15 -1
  52. package/chunks/{chunk-LLFFKXZZ.js → chunk-DJ25MIU2.js} +167 -43
  53. package/chunks/{chunk-KBXLIVWQ.js → chunk-DX3TKXNT.js} +2 -2
  54. package/chunks/{chunk-OIC6S73E.js → chunk-E5I6YSNO.js} +1 -1
  55. package/chunks/{chunk-TXVGVZYR.js → chunk-ESVSWG6Z.js} +3 -3
  56. package/chunks/{chunk-EX4W6ZYG.js → chunk-EUURTJY7.js} +1 -1
  57. package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
  58. package/chunks/{chunk-F6XNTYNE.js → chunk-FQDMX5IL.js} +30 -307
  59. package/chunks/{chunk-3QFE4OTE.js → chunk-FR3II765.js} +4 -4
  60. package/chunks/{chunk-VYFMN7C6.js → chunk-FV4SQ54H.js} +382 -55
  61. package/chunks/{chunk-ZD3NW5KL.js → chunk-FZY7NH37.js} +63 -9
  62. package/chunks/{chunk-CI5O6SQL.js → chunk-G525INVW.js} +4 -4
  63. package/chunks/{chunk-CGOMICBE.js → chunk-GDIG7TMG.js} +34 -1
  64. package/chunks/{chunk-R2BXK7SX.js → chunk-GHOTR7HL.js} +6 -1
  65. package/chunks/{chunk-TZM5JIAX.js → chunk-GZKQ36JS.js} +10 -7
  66. package/chunks/{chunk-BS64PXY3.js → chunk-HIYUAXBG.js} +1 -1
  67. package/chunks/{chunk-TMBPDHXD.js → chunk-HTWHAN44.js} +1 -1
  68. package/chunks/{chunk-EL5IHQON.js → chunk-HUGAEYZR.js} +6 -27
  69. package/chunks/{chunk-2BIF2NVV.js → chunk-HWG4XLD7.js} +2 -2
  70. package/chunks/{chunk-I5T6PIBQ.js → chunk-I4MXURND.js} +1076 -954
  71. package/chunks/{chunk-JTYRZODB.js → chunk-IBEM64M4.js} +39 -11
  72. package/chunks/{chunk-XKBP7M7A.js → chunk-IKO44NAT.js} +149 -31
  73. package/chunks/{chunk-2BAQ3ACS.js → chunk-JERW36RG.js} +404 -4
  74. package/chunks/{chunk-TOEGRAVX.js → chunk-JV7A66DR.js} +28 -16
  75. package/chunks/{chunk-3RJ3ZPPR.js → chunk-KKQWC6WS.js} +7 -7
  76. package/chunks/{chunk-EXMX5YHG.js → chunk-KXVVXAAC.js} +1 -1
  77. package/chunks/{chunk-Z7XXFPGP.js → chunk-LDWTYE33.js} +1 -1
  78. package/chunks/{chunk-X6EDWN44.js → chunk-LWGLBVWA.js} +1 -1
  79. package/chunks/{chunk-NYOHZYHM.js → chunk-LXEW6BHF.js} +45 -3
  80. package/chunks/{chunk-BGUDAULQ.js → chunk-LXGWLOCM.js} +5 -5
  81. package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
  82. package/chunks/{chunk-BNXANYLH.js → chunk-MOUXUCXQ.js} +81 -1
  83. package/chunks/{chunk-FPACXT7T.js → chunk-MTJVHQDP.js} +534 -164
  84. package/chunks/{chunk-UAARJR2G.js → chunk-N4V4VBP6.js} +2 -2
  85. package/chunks/chunk-NIOPRZNN.js +27 -0
  86. package/chunks/{chunk-2TJ3YN6Q.js → chunk-NOYV2NXI.js} +517 -490
  87. package/chunks/{chunk-PRYMDRBV.js → chunk-NPQWQYU6.js} +1 -1
  88. package/chunks/{chunk-J6AW7O5D.js → chunk-NVTRORSK.js} +2 -2
  89. package/chunks/{chunk-PF523XJX.js → chunk-OE5J6UA7.js} +1 -1
  90. package/chunks/{chunk-RS4HRC75.js → chunk-OEY3YAL2.js} +99 -8
  91. package/chunks/{chunk-R36VMVEP.js → chunk-PLQTLKMR.js} +5 -5
  92. package/chunks/{chunk-UN3C6GOR.js → chunk-PPFWEV7G.js} +10 -108
  93. package/chunks/chunk-Q3JOGB4U.js +481 -0
  94. package/chunks/{chunk-HG6YKEBI.js → chunk-Q7TDHJ2G.js} +192 -30
  95. package/chunks/{chunk-EW6C27XX.js → chunk-QHHNFG22.js} +9 -3
  96. package/chunks/chunk-QYUE6W3T.js +123 -0
  97. package/chunks/{chunk-GZCJS5WH.js → chunk-SJBIFVD2.js} +2 -2
  98. package/chunks/{chunk-3UALQ56H.js → chunk-T42ACHFI.js} +1 -1
  99. package/chunks/chunk-T44AF4I6.js +690 -0
  100. package/chunks/{chunk-DBZUXSSV.js → chunk-TMILTLP3.js} +6 -6
  101. package/chunks/{chunk-EEEZIVFJ.js → chunk-TOAUDIS7.js} +1 -1
  102. package/chunks/chunk-UAKXW3DN.js +30 -0
  103. package/chunks/{chunk-VQRYPFCV.js → chunk-V5YJAUHW.js} +10 -460
  104. package/chunks/{chunk-D5E5TMYH.js → chunk-VHRREANT.js} +16 -2
  105. package/chunks/{chunk-5RVSM6NW.js → chunk-VN4CKYUW.js} +1 -1
  106. package/chunks/chunk-VXGPYF7U.js +37 -0
  107. package/chunks/{chunk-UAARVVBI.js → chunk-WGY3GIPP.js} +1 -1
  108. package/chunks/{chunk-GYZQA2FO.js → chunk-WJAY4WXR.js} +1 -1
  109. package/chunks/chunk-XKSCTXPK.js +167 -0
  110. package/chunks/chunk-YCEHOJZJ.js +840 -0
  111. package/chunks/{chunk-BG4BIP7F.js → chunk-YCRTJYSQ.js} +4 -2
  112. package/chunks/{chunk-CGEGHF2C.js → chunk-YPCPZSZB.js} +1 -1
  113. package/chunks/chunk-YTFBURQD.js +313 -0
  114. package/chunks/{chunk-HGNSRCRB.js → chunk-YXK4GPYO.js} +1 -1
  115. package/chunks/{chunk-OQHQHJRK.js → chunk-Z34RYLRO.js} +151 -4775
  116. package/chunks/chunk-ZGSV5ORL.js +11273 -0
  117. package/chunks/{computer-use-6BBRNT6S.js → computer-use-FCNWHVPW.js} +103 -49
  118. package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-FVFMZZEU.js} +26 -25
  119. package/chunks/{cron-create-4KQE6YLH.js → cron-create-IY5NMIHQ.js} +4 -4
  120. package/chunks/{cron-delete-THME66UP.js → cron-delete-OLNEQWKO.js} +6 -6
  121. package/chunks/{cron-list-7A54SJ5N.js → cron-list-YAUAUV24.js} +5 -5
  122. package/chunks/{daemon-status-provider-CSL3BUOY.js → daemon-status-provider-42JEXENZ.js} +32 -32
  123. package/chunks/{de-ACHALDED.js → de-HB5NJXGB.js} +10 -9
  124. package/chunks/{dist-BD27IA3L.js → dist-4FCNM6KJ.js} +2 -2
  125. package/chunks/{dist-OD2FY543.js → dist-K4XZILIO.js} +1 -1
  126. package/chunks/{dist-BOOH5JWN.js → dist-SU6L7ZNJ.js} +114 -9
  127. package/chunks/{dist-QHJRBCMP.js → dist-UKPWQJCL.js} +44 -2
  128. package/chunks/{dist-QFFZWACU.js → dist-VD7HXTML.js} +20 -9
  129. package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-FFFEC6P4.js} +25 -24
  130. package/chunks/{edit-7J6WXARF.js → edit-32ILSGZY.js} +72 -30
  131. package/chunks/{en-NCUBOJOY.js → en-U3LWGSFX.js} +19 -9
  132. package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-XWZKIN6A.js} +24 -23
  133. package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-LPFFY7BJ.js} +24 -23
  134. package/chunks/{errors-6G2JYR54.js → errors-UXBPYPI2.js} +26 -25
  135. package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-IBS4UIU7.js} +24 -23
  136. package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-JA72YHII.js} +24 -23
  137. package/chunks/{fast-path-35JJFS3C.js → fast-path-7UU67Y2W.js} +30 -13
  138. package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-UQLRFDQP.js} +3 -2
  139. package/chunks/{fr-GVKZ27MF.js → fr-XY3NQFCM.js} +10 -9
  140. package/chunks/{gemini-NDTG7WAX.js → gemini-GMVKJNMX.js} +211 -105
  141. package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-7NIFF2L4.js} +4 -4
  142. package/chunks/{glob-SJ2JBZK4.js → glob-4NJCW5HI.js} +24 -23
  143. package/chunks/{grep-BRMWFEWR.js → grep-PAIMLQEL.js} +24 -23
  144. package/chunks/{initializer-P5AXF7PV.js → initializer-R6KU4VYM.js} +31 -28
  145. package/chunks/{ja-FKZ2WZ4D.js → ja-J7YAG7SA.js} +10 -9
  146. package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-GPAKRDKQ.js} +2 -2
  147. package/chunks/{list-6COK34BP.js → list-H7LXAO64.js} +32 -29
  148. package/chunks/{loadedSettingsAdapter-XIUTN245.js → loadedSettingsAdapter-H27JMTLU.js} +30 -27
  149. package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-Y3OIRQFM.js} +7 -7
  150. package/chunks/{ls-BYQY7RVV.js → ls-TVJEYS7O.js} +4 -4
  151. package/chunks/{lsp-X54RO4IV.js → lsp-JZSDVR3F.js} +2 -2
  152. package/chunks/{monitor-DH7KFSJV.js → monitor-JSIHDPXP.js} +24 -23
  153. package/chunks/nonInteractiveCli-Y4CHOETG.js +100 -0
  154. package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-SHRNL2UM.js} +52 -23
  155. package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-ORZZ7VFO.js} +13 -12
  156. package/chunks/{pt-SY5NCFGR.js → pt-6RTAA6SS.js} +10 -9
  157. package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-H643PL2G.js} +26 -25
  158. package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-OI2B7PES.js} +5 -4
  159. package/chunks/{read-file-767G23OY.js → read-file-5PRNPTTY.js} +8 -8
  160. package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-QTXGKTEV.js} +2 -2
  161. package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-JIKZMABJ.js} +24 -23
  162. package/chunks/{ru-FWNXJG4F.js → ru-AUBGJ2C4.js} +10 -9
  163. package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-PQV7QOHZ.js} +284 -52
  164. package/chunks/{scheduler-UNTFDQLG.js → scheduler-OS3R5MGU.js} +24 -23
  165. package/chunks/{send-message-2DAFXEYP.js → send-message-DKGHWSTF.js} +2 -2
  166. package/chunks/{serve-KZ56QB5S.js → serve-LVYZDKCZ.js} +31 -29
  167. package/chunks/{server-BV5TZUMU.js → server-P4YIH35I.js} +11458 -8447
  168. package/chunks/{session-OIBXFSGD.js → session-DE4TZBKH.js} +195 -58
  169. package/chunks/{settings-WJTCBIRA.js → settings-DFTYMJYF.js} +30 -27
  170. package/chunks/{shell-WC52IBHW.js → shell-3GNQLNV7.js} +24 -23
  171. package/chunks/{skill-U7F7JR4M.js → skill-NCNG4KKZ.js} +38 -11
  172. package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-DHRIMDVL.js} +26 -25
  173. package/chunks/{src-4F6FBZFI.js → src-PNZYGM3R.js} +104 -28
  174. package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-P6GZBFQW.js} +2817 -2500
  175. package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-X7L5HWLN.js} +3 -3
  176. package/chunks/{task-create-OUYCA553.js → task-create-AWEUI4GI.js} +6 -6
  177. package/chunks/{task-list-WAX7I2IA.js → task-list-KZ3VJLDU.js} +5 -5
  178. package/chunks/{task-stop-CAIL6FNH.js → task-stop-GUNOZKJ5.js} +2 -2
  179. package/chunks/{task-update-AHEO5OUT.js → task-update-Y56GP6DU.js} +6 -6
  180. package/chunks/{team-create-3WC7CIIW.js → team-create-6JMW3KQK.js} +24 -23
  181. package/chunks/{team-delete-HGHFG23B.js → team-delete-6AFRGDJY.js} +5 -5
  182. package/chunks/{theme-manager-DICFCT3P.js → theme-manager-FEHQO22G.js} +25 -24
  183. package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-JRS6NOEU.js} +4 -4
  184. package/chunks/{tool-search-L5K7HLER.js → tool-search-IXAEKS7J.js} +101 -16
  185. package/chunks/trustedFolders-SJRXNHZE.js +76 -0
  186. package/chunks/types-QX5C3CHJ.js +12 -0
  187. package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-HCH7OBDH.js} +56 -51
  188. package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-RELNL37A.js} +29 -15
  189. package/chunks/{workflow-OB3AND7I.js → workflow-M2COBI7R.js} +38 -32
  190. package/chunks/{workspace-providers-status-ZIR5EPOO.js → workspace-providers-status-GOCWYDMK.js} +32 -29
  191. package/chunks/workspace-service-34C7SUBU.js +75 -0
  192. package/chunks/{write-file-SEXBNDZM.js → write-file-E52WRXZL.js} +67 -31
  193. package/chunks/{zh-RBEGQVQT.js → zh-F5T4WWZO.js} +19 -9
  194. package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-LKLBTZHE.js} +19 -9
  195. package/cli-entry.js +20 -9
  196. package/cli.js +6 -6
  197. package/locales/ca.js +15 -13
  198. package/locales/de.js +15 -13
  199. package/locales/en.js +31 -13
  200. package/locales/fr.js +16 -14
  201. package/locales/ja.js +15 -14
  202. package/locales/pt.js +15 -13
  203. package/locales/ru.js +15 -13
  204. package/locales/zh-TW.js +28 -12
  205. package/locales/zh.js +28 -12
  206. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
  207. package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
  208. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
  209. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
  210. package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
  211. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
  212. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
  213. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
  214. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
  215. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
  216. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
  217. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
  218. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  219. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
  220. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
  221. package/node_modules/@qwen-code/audio-capture/package.json +30 -0
  222. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  223. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  224. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  225. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  226. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  227. package/package.json +18 -6
  228. package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
  229. package/postinstall.js +50 -0
  230. package/web-shell/assets/{arc-D_ae_Y9k.js → arc-C2DILvUl.js} +1 -1
  231. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-b8gZ2cNw.js} +1 -1
  232. package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-BuRpghMj.js} +1 -1
  233. package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-2ItdhFmE.js} +1 -1
  234. package/web-shell/assets/channel-eRvn2UA3.js +1 -0
  235. package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-B1QXa0q3.js} +1 -1
  236. package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-DXfhKlNq.js} +1 -1
  237. package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-ClSNjxLo.js} +1 -1
  238. package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-Dsh2wisB.js} +1 -1
  239. package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-C1TkY5AR.js} +1 -1
  240. package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-CGtN9XR6.js} +1 -1
  241. package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-BHiPi1SS.js} +1 -1
  242. package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-CzG3I5o1.js} +1 -1
  243. package/web-shell/assets/classDiagram-4FO5ZUOK-YZNwy1rx.js +1 -0
  244. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-YZNwy1rx.js +1 -0
  245. package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-EgrIoH_K.js} +1 -1
  246. package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-BUnpdX8S.js} +1 -1
  247. package/web-shell/assets/default-aEtf0G7-.svg +1 -0
  248. package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-BlLUCVYu.js} +1 -1
  249. package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-FG-enmjQ.js} +1 -1
  250. package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-BlzmTONk.js} +1 -1
  251. package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-CoBQ8mIx.js} +1 -1
  252. package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-DvxV6sX8.js} +1 -1
  253. package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-Jq1tpAoj.js} +1 -1
  254. package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-CbtYOry5.js} +1 -1
  255. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-ZEn2VEKR.js} +1 -1
  256. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-BZh-LkhJ.js} +1 -1
  257. package/web-shell/assets/index-5FhE0ORO.css +5 -0
  258. package/web-shell/assets/index-CDTGmqVm.js +720 -0
  259. package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-B9HuZygK.js} +1 -1
  260. package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
  261. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D76cNpYG.js} +1 -1
  262. package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-6bGo7P1t.js} +1 -1
  263. package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-DuYyRBvB.js} +1 -1
  264. package/web-shell/assets/{linear-DGGM2kcP.js → linear-CpdSW1BC.js} +1 -1
  265. package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-s5xbZMMj.js} +5 -5
  266. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-go01fZ2y.js} +1 -1
  267. package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-BfuZiEHO.js} +1 -1
  268. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-DsoINqV6.js} +1 -1
  269. package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
  270. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-B7FU4LiU.js} +1 -1
  271. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-BEDjFnGB.js} +1 -1
  272. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-gzmmL5tK.js} +1 -1
  273. package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-BtHD4IN_.js} +1 -1
  274. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DFy6gLDd.js +1 -0
  275. package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-T_8gmMCf.js} +1 -1
  276. package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-DdjuqnjO.js} +1 -1
  277. package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-Cgtrvb37.js} +1 -1
  278. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-BW3f3-yW.js} +1 -1
  279. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-BUS9IKkc.js} +1 -1
  280. package/web-shell/index.html +2 -2
  281. package/chunks/chunk-B6HQGTYR.js +0 -410
  282. package/chunks/chunk-RKIZXJMB.js +0 -13
  283. package/chunks/headlessSafetyWarnings-LJ6FJX77.js +0 -57
  284. package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
  285. package/chunks/workspace-service-OM5D4OI2.js +0 -60
  286. package/web-shell/assets/channel-DYPNiTww.js +0 -1
  287. package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
  288. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
  289. package/web-shell/assets/index-CpOXWDPh.js +0 -714
  290. package/web-shell/assets/index-oVK7qhre.css +0 -5
  291. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
package/locales/zh-TW.js CHANGED
@@ -473,17 +473,17 @@ export default {
473
473
  'Open in editor': '在編輯器中打開',
474
474
  'Edit tools': '編輯工具',
475
475
  'Edit color': '編輯顏色',
476
- ' Error:': ' 錯誤:',
476
+ ' Error:': ' 錯誤:',
477
477
  'Are you sure you want to delete agent "{{name}}"?':
478
478
  '您確定要刪除智能體 "{{name}}" 嗎?',
479
479
  'Project Level (.qwen/agents/)': '項目級 (.qwen/agents/)',
480
480
  'User Level (~/.qwen/agents/)': '用戶級 (~/.qwen/agents/)',
481
- ' Subagent Created Successfully!': ' 子智能體創建成功!',
481
+ ' Subagent Created Successfully!': ' 子智能體創建成功!',
482
482
  'Subagent "{{name}}" has been saved to {{level}} level.':
483
483
  '子智能體 "{{name}}" 已保存到 {{level}} 級別。',
484
484
  'Name: ': '名稱: ',
485
485
  'Location: ': '位置: ',
486
- ' Error saving subagent:': ' 保存子智能體時出錯:',
486
+ ' Error saving subagent:': ' 保存子智能體時出錯:',
487
487
  'Warnings:': '警告:',
488
488
  'Name "{{name}}" already exists at {{level}} level - will overwrite existing subagent':
489
489
  '名稱 "{{name}}" 在 {{level}} 級別已存在 - 將覆蓋現有子智能體',
@@ -652,6 +652,7 @@ export default {
652
652
  'toggle vim mode on/off': '切換 vim 模式開關',
653
653
  'Show model-specific usage statistics.': '顯示模型相關的使用統計資訊',
654
654
  'Show tool-specific usage statistics.': '顯示工具相關的使用統計資訊',
655
+ 'Show skill-specific usage statistics.': '顯示技能相關的使用統計資訊',
655
656
  'Show daily token usage statistics.': '顯示每日 token 使用統計資訊',
656
657
  'Show monthly token usage statistics.': '顯示每月 token 使用統計資訊',
657
658
  'Export token usage statistics to CSV or JSON.':
@@ -1229,12 +1230,24 @@ export default {
1229
1230
  '切換此會話的模型(--fast 可設置建議模型)',
1230
1231
  'Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, [model-id] to switch immediately).':
1231
1232
  '切換此會話的模型(--fast 可設置建議模型,--voice 可設置語音轉寫模型,[model-id] 可立即切換)',
1233
+ 'Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).':
1234
+ '切換此會話的模型(--fast 可設置建議模型,--voice 可設置語音轉寫模型,--vision 可設置視覺橋接模型,[model-id] 可立即切換,或用 [model-id] [prompt] 在另一個模型上執行一次性提示;內聯提示按原文發送,不展開 @file)',
1235
+ "Inline one-shot override isn't supported in this mode — run '/model {{model}}' first, then send your prompt.":
1236
+ "此模式不支援內聯一次性覆寫——請先執行 '/model {{model}}',再發送你的提示。",
1237
+ "Inline one-shot override can't switch providers. '{{model}}' belongs to a different provider — run '/model {{model}}' first, then send your prompt.":
1238
+ "內聯一次性覆寫無法切換 provider。'{{model}}' 屬於另一個 provider——請先執行 '/model {{model}}',再發送你的提示。",
1239
+ "⚠ '{{model}}' is not a known image-capable model; the vision bridge may fail on images.":
1240
+ "⚠ '{{model}}' 不是已知的圖像能力模型;視覺橋接處理圖片時可能會失敗。",
1232
1241
  'Set a lighter model for prompt suggestions and speculative execution':
1233
1242
  '設置用於輸入建議和推測執行的輕量模型',
1234
1243
  'Toggle voice dictation input': '切換語音聽寫輸入',
1235
1244
  'Set the model for voice transcription': '設定語音轉寫模型',
1245
+ 'Set the image-capable model used to transcribe images for a text-only main model':
1246
+ '設定用於為純文字主模型轉寫圖像的圖像能力模型',
1236
1247
  'Select Fast Model': '選擇快速模型',
1248
+ 'Select Vision Model': '選擇視覺模型',
1237
1249
  'Select Voice Model': '選擇語音模型',
1250
+ 'Vision Model': '視覺模型',
1238
1251
  'Voice Model': '語音模型',
1239
1252
  'Selected voice model is unavailable.': '所選語音模型不可用。',
1240
1253
  "Voice model '{{model}}' is configured more than once. Remove duplicate model ids before selecting it for voice transcription.":
@@ -1352,9 +1365,9 @@ export default {
1352
1365
  'Choose how to proceed with your session:': '選擇如何繼續您的會話:',
1353
1366
  'Start new chat session': '開始新的聊天會話',
1354
1367
  'Continue previous conversation': '繼續之前的對話',
1355
- '👋 Welcome back! (Last updated: {{timeAgo}})':
1356
- '👋 歡迎回來!(最後更新:{{timeAgo}})',
1357
- '🎯 Overall Goal:': '🎯 總體目標:',
1368
+ 'Welcome back! (Last updated: {{timeAgo}})':
1369
+ '歡迎回來!(最後更新:{{timeAgo}})',
1370
+ 'Overall Goal:': '總體目標:',
1358
1371
  'Connect a Provider': '連接服務商',
1359
1372
  'You must connect a provider to proceed. Press Ctrl+C again to exit.':
1360
1373
  '必須連接一個服務商才能繼續。再次按 Ctrl+C 退出',
@@ -1438,6 +1451,8 @@ export default {
1438
1451
  'not set': '未設置',
1439
1452
  'Current voice model: {{voiceModel}}\nUse "/model --voice <model-id>" to set voice model.':
1440
1453
  '當前語音模型:{{voiceModel}}\n使用 "/model --voice <model-id>" 設置語音模型。',
1454
+ 'Current vision model: {{visionModel}}\nUse "/model --vision <model-id>" to set the vision bridge model.':
1455
+ '當前視覺模型:{{visionModel}}\n使用 "/model --vision <model-id>" 設置視覺橋接模型。',
1441
1456
  "Voice model '{{modelName}}' is ambiguous. Configure a unique model id before using /model --voice.":
1442
1457
  "語音模型 '{{modelName}}' 不唯一。請先配置唯一的模型 ID,再使用 /model --voice。",
1443
1458
  none: '無',
@@ -1519,8 +1534,8 @@ export default {
1519
1534
  'Press Esc again to clear.': '再次按 Esc 清除',
1520
1535
  'Press ↑ to edit queued messages': '按 ↑ 編輯排隊消息',
1521
1536
  'No MCP servers configured.': '未配置 MCP servers',
1522
- ' MCP servers are starting up ({{count}} initializing)...':
1523
- ' MCP servers 正在啟動({{count}} 個正在初始化)...',
1537
+ ' MCP servers are starting up ({{count}} initializing)...':
1538
+ ' MCP servers 正在啟動({{count}} 個正在初始化)...',
1524
1539
  'Note: First startup may take longer. Tool availability will update automatically.':
1525
1540
  '注意:首次啟動可能需要更長時間。工具可用性將自動更新',
1526
1541
  'Configured MCP servers:': '已配置的 MCP servers:',
@@ -1543,7 +1558,7 @@ export default {
1543
1558
  'Prompts:': '提示:',
1544
1559
  'Resources:': '資源:',
1545
1560
  Blocked: '已阻止',
1546
- '💡 Tips:': '💡 提示:',
1561
+ ' Tips:': ' 提示:',
1547
1562
  Use: '使用',
1548
1563
  'to show server and tool descriptions': '顯示伺服器和工具描述',
1549
1564
  'to show tool parameter schemas': '顯示 tool parameter schemas',
@@ -1829,7 +1844,7 @@ export default {
1829
1844
  'Enter your Coding Plan API key: ': '請輸入您的 Coding Plan API Key:',
1830
1845
  'Select authentication method:': '選擇認證方式:',
1831
1846
  '\n=== Authentication Status ===\n': '\n=== 認證狀態 ===\n',
1832
- '⚠️ No authentication method configured.\n': '⚠️ 未配置認證方式。\n',
1847
+ ' No authentication method configured.\n': ' 未配置認證方式。\n',
1833
1848
  'Run one of the following commands to get started:\n':
1834
1849
  '運行以下命令之一開始配置:\n',
1835
1850
  ' qwen auth qwen-oauth - Authenticate with Qwen OAuth (discontinued)':
@@ -1851,8 +1866,8 @@ export default {
1851
1866
  ' Current Model: {{model}}': ' 當前模型:{{model}}',
1852
1867
  ' Config Version: {{version}}': ' 配置版本:{{version}}',
1853
1868
  ' Status: API key configured\n': ' 狀態:API Key 已配置\n',
1854
- '⚠️ Authentication Method: Alibaba Cloud Coding Plan (Incomplete)':
1855
- '⚠️ 認證方式:阿里雲百鍊 Coding Plan(不完整)',
1869
+ ' Authentication Method: Alibaba Cloud Coding Plan (Incomplete)':
1870
+ ' 認證方式:阿里雲百鍊 Coding Plan(不完整)',
1856
1871
  ' Issue: API key not found in environment or settings\n':
1857
1872
  ' 問題:在環境變量或設置中未找到 API Key\n',
1858
1873
  ' Run `qwen auth coding-plan` to re-configure.\n':
@@ -1965,6 +1980,7 @@ export default {
1965
1980
  'No tasks currently running': '目前沒有正在執行的任務',
1966
1981
  'No entry to show.': '沒有可顯示的項目。',
1967
1982
  'needs approval': '待審批',
1983
+ 'rejected — edit config to re-approve': '已拒絕 — 編輯設定以重新審批',
1968
1984
  'Background agent needs approval': '背景 agent 等待審批',
1969
1985
  'Approve or deny the request above': '請核准或拒絕上方的請求',
1970
1986
  Running: '執行中',
package/locales/zh.js CHANGED
@@ -498,7 +498,7 @@ export default {
498
498
  'Open in editor': '在编辑器中打开',
499
499
  'Edit tools': '编辑工具',
500
500
  'Edit color': '编辑颜色',
501
- ' Error:': ' 错误:',
501
+ ' Error:': ' 错误:',
502
502
  'Are you sure you want to delete agent "{{name}}"?':
503
503
  '您确定要删除智能体 "{{name}}" 吗?',
504
504
  // ============================================================================
@@ -506,12 +506,12 @@ export default {
506
506
  // ============================================================================
507
507
  'Project Level (.qwen/agents/)': '项目级 (.qwen/agents/)',
508
508
  'User Level (~/.qwen/agents/)': '用户级 (~/.qwen/agents/)',
509
- ' Subagent Created Successfully!': ' 子智能体创建成功!',
509
+ ' Subagent Created Successfully!': ' 子智能体创建成功!',
510
510
  'Subagent "{{name}}" has been saved to {{level}} level.':
511
511
  '子智能体 "{{name}}" 已保存到 {{level}} 级别。',
512
512
  'Name: ': '名称: ',
513
513
  'Location: ': '位置: ',
514
- ' Error saving subagent:': ' 保存子智能体时出错:',
514
+ ' Error saving subagent:': ' 保存子智能体时出错:',
515
515
  'Warnings:': '警告:',
516
516
  'Name "{{name}}" already exists at {{level}} level - will overwrite existing subagent':
517
517
  '名称 "{{name}}" 在 {{level}} 级别已存在 - 将覆盖现有子智能体',
@@ -696,6 +696,7 @@ export default {
696
696
  'Show usage statistics dashboard.': '显示使用统计面板。',
697
697
  'Show model-specific usage statistics.': '显示模型相关的使用统计信息',
698
698
  'Show tool-specific usage statistics.': '显示工具相关的使用统计信息',
699
+ 'Show skill-specific usage statistics.': '显示技能相关的使用统计信息',
699
700
  'Show daily token usage statistics.': '显示每日 token 使用统计信息',
700
701
  'Show monthly token usage statistics.': '显示每月 token 使用统计信息',
701
702
  'Export token usage statistics to CSV or JSON.':
@@ -1343,12 +1344,24 @@ export default {
1343
1344
  '切换此会话的模型(--fast 可设置建议模型)',
1344
1345
  'Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, [model-id] to switch immediately).':
1345
1346
  '切换此会话的模型(--fast 可设置建议模型,--voice 可设置语音转写模型,[model-id] 可立即切换)',
1347
+ 'Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).':
1348
+ '切换此会话的模型(--fast 可设置建议模型,--voice 可设置语音转写模型,--vision 可设置视觉桥接模型,[model-id] 可立即切换,或用 [model-id] [prompt] 在另一个模型上运行一次性提示;内联提示按原文发送,不展开 @file)',
1349
+ "Inline one-shot override isn't supported in this mode — run '/model {{model}}' first, then send your prompt.":
1350
+ "此模式不支持内联一次性覆盖——请先运行 '/model {{model}}',再发送你的提示。",
1351
+ "Inline one-shot override can't switch providers. '{{model}}' belongs to a different provider — run '/model {{model}}' first, then send your prompt.":
1352
+ "内联一次性覆盖无法切换 provider。'{{model}}' 属于另一个 provider——请先运行 '/model {{model}}',再发送你的提示。",
1353
+ "⚠ '{{model}}' is not a known image-capable model; the vision bridge may fail on images.":
1354
+ "⚠ '{{model}}' 不是已知的图像能力模型;视觉桥接处理图片时可能会失败。",
1346
1355
  'Set a lighter model for prompt suggestions and speculative execution':
1347
1356
  '设置用于输入建议和推测执行的轻量模型',
1348
1357
  'Toggle voice dictation input': '切换语音听写输入',
1349
1358
  'Set the model for voice transcription': '设置语音转写模型',
1359
+ 'Set the image-capable model used to transcribe images for a text-only main model':
1360
+ '设置用于为纯文本主模型转写图像的图像能力模型',
1350
1361
  'Select Fast Model': '选择快速模型',
1362
+ 'Select Vision Model': '选择视觉模型',
1351
1363
  'Select Voice Model': '选择语音模型',
1364
+ 'Vision Model': '视觉模型',
1352
1365
  'Voice Model': '语音模型',
1353
1366
  'Selected voice model is unavailable.': '所选语音模型不可用。',
1354
1367
  "Voice model '{{model}}' is configured more than once. Remove duplicate model ids before selecting it for voice transcription.":
@@ -1491,9 +1504,9 @@ export default {
1491
1504
  'Choose how to proceed with your session:': '选择如何继续您的会话:',
1492
1505
  'Start new chat session': '开始新的聊天会话',
1493
1506
  'Continue previous conversation': '继续之前的对话',
1494
- '👋 Welcome back! (Last updated: {{timeAgo}})':
1495
- '👋 欢迎回来!(最后更新:{{timeAgo}})',
1496
- '🎯 Overall Goal:': '🎯 总体目标:',
1507
+ 'Welcome back! (Last updated: {{timeAgo}})':
1508
+ '欢迎回来!(最后更新:{{timeAgo}})',
1509
+ 'Overall Goal:': '总体目标:',
1497
1510
  'Connect a Provider': '连接服务商',
1498
1511
  'You must connect a provider to proceed. Press Ctrl+C again to exit.':
1499
1512
  '必须连接一个服务商才能继续。再次按 Ctrl+C 退出',
@@ -1580,6 +1593,8 @@ export default {
1580
1593
  'not set': '未设置',
1581
1594
  'Current voice model: {{voiceModel}}\nUse "/model --voice <model-id>" to set voice model.':
1582
1595
  '当前语音模型:{{voiceModel}}\n使用 "/model --voice <model-id>" 设置语音模型。',
1596
+ 'Current vision model: {{visionModel}}\nUse "/model --vision <model-id>" to set the vision bridge model.':
1597
+ '当前视觉模型:{{visionModel}}\n使用 "/model --vision <model-id>" 设置视觉桥接模型。',
1583
1598
  "Voice model '{{modelName}}' is ambiguous. Configure a unique model id before using /model --voice.":
1584
1599
  "语音模型 '{{modelName}}' 不唯一。请先配置唯一的模型 ID,再使用 /model --voice。",
1585
1600
  none: '无',
@@ -1673,8 +1688,8 @@ export default {
1673
1688
  // MCP Status
1674
1689
  // ============================================================================
1675
1690
  'No MCP servers configured.': '未配置 MCP servers',
1676
- ' MCP servers are starting up ({{count}} initializing)...':
1677
- ' MCP servers 正在启动({{count}} 个正在初始化)...',
1691
+ ' MCP servers are starting up ({{count}} initializing)...':
1692
+ ' MCP servers 正在启动({{count}} 个正在初始化)...',
1678
1693
  'Note: First startup may take longer. Tool availability will update automatically.':
1679
1694
  '注意:首次启动可能需要更长时间。工具可用性将自动更新',
1680
1695
  'Configured MCP servers:': '已配置的 MCP servers:',
@@ -1697,7 +1712,7 @@ export default {
1697
1712
  'Prompts:': '提示:',
1698
1713
  'Resources:': '资源:',
1699
1714
  Blocked: '已阻止',
1700
- '💡 Tips:': '💡 提示:',
1715
+ ' Tips:': ' 提示:',
1701
1716
  Use: '使用',
1702
1717
  'to show server and tool descriptions': '显示服务器和工具描述',
1703
1718
  'to show tool parameter schemas': '显示 tool parameter schemas',
@@ -2036,7 +2051,7 @@ export default {
2036
2051
  'Enter your Coding Plan API key: ': '请输入您的 Coding Plan API Key:',
2037
2052
  'Select authentication method:': '选择认证方式:',
2038
2053
  '\n=== Authentication Status ===\n': '\n=== 认证状态 ===\n',
2039
- '⚠️ No authentication method configured.\n': '⚠️ 未配置认证方式。\n',
2054
+ ' No authentication method configured.\n': ' 未配置认证方式。\n',
2040
2055
  'Run one of the following commands to get started:\n':
2041
2056
  '运行以下命令之一开始配置:\n',
2042
2057
  ' qwen auth qwen-oauth - Authenticate with Qwen OAuth (discontinued)':
@@ -2057,8 +2072,8 @@ export default {
2057
2072
  ' Current Model: {{model}}': ' 当前模型:{{model}}',
2058
2073
  ' Config Version: {{version}}': ' 配置版本:{{version}}',
2059
2074
  ' Status: API key configured\n': ' 状态:API Key 已配置\n',
2060
- '⚠️ Authentication Method: Alibaba Cloud Coding Plan (Incomplete)':
2061
- '⚠️ 认证方式:阿里云百炼 Coding Plan(不完整)',
2075
+ ' Authentication Method: Alibaba Cloud Coding Plan (Incomplete)':
2076
+ ' 认证方式:阿里云百炼 Coding Plan(不完整)',
2062
2077
  ' Issue: API key not found in environment or settings\n':
2063
2078
  ' 问题:在环境变量或设置中未找到 API Key\n',
2064
2079
  ' Run `qwen auth coding-plan` to re-configure.\n':
@@ -2161,6 +2176,7 @@ export default {
2161
2176
  'No tasks currently running': '当前没有正在运行的任务',
2162
2177
  'No entry to show.': '没有可显示的条目。',
2163
2178
  'needs approval': '待审批',
2179
+ 'rejected — edit config to re-approve': '已拒绝 — 编辑配置以重新审批',
2164
2180
  'Background agent needs approval': '后台 agent 等待审批',
2165
2181
  'Approve or deny the request above': '请批准或拒绝上方的请求',
2166
2182
  Running: '运行中',
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export type MicrophoneAuthorizationStatus = 'granted' | 'denied' | 'prompt' | 'unknown';
7
+ export interface AudioCaptureOptions {
8
+ sampleRate: number;
9
+ channels: number;
10
+ /** Flag sustained silence so the caller can auto-stop (tap mode). */
11
+ silenceDetection?: boolean;
12
+ }
13
+ export interface NativeAudioCaptureBackend {
14
+ startRecording: (options: AudioCaptureOptions) => void;
15
+ stopRecording: () => Uint8Array;
16
+ isRecording: () => boolean;
17
+ /** True once sustained silence was detected. Absent on older addons. */
18
+ silenceDetected?: () => boolean;
19
+ /** Return & clear PCM captured since the last call (for streaming uploads). */
20
+ drainAudio?: () => Uint8Array;
21
+ /** Recent input level 0..1 (for waveform display). */
22
+ audioLevel?: () => number;
23
+ microphoneAuthorizationStatus: () => MicrophoneAuthorizationStatus;
24
+ }
25
+ interface NativeBinding {
26
+ startRecording: (options?: Partial<AudioCaptureOptions>) => void;
27
+ stopRecording: () => Uint8Array;
28
+ isRecording: () => boolean;
29
+ silenceDetected?: () => boolean;
30
+ drainAudio?: () => Uint8Array;
31
+ audioLevel?: () => number;
32
+ microphoneAuthorizationStatus?: () => MicrophoneAuthorizationStatus;
33
+ }
34
+ export declare function createNativeAudioCaptureBackend(binding?: NativeBinding): NativeAudioCaptureBackend;
35
+ export { getPlatformBackendName } from './platform.js';
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { createRequire } from 'node:module';
7
+ import { dirname } from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { getPlatformBackendName } from './platform.js';
10
+ const nativeRequire = createRequire(import.meta.url);
11
+ // dist/index.js → package root, which holds prebuilds/ and build/.
12
+ const packageRoot = dirname(dirname(fileURLToPath(import.meta.url)));
13
+ function loadBinding() {
14
+ try {
15
+ // Throws on unsupported platforms before touching the native layer.
16
+ getPlatformBackendName();
17
+ // node-gyp-build picks the matching prebuild from prebuilds/<platform>-<arch>,
18
+ // falling back to a local build/Release compile — no compiler needed when a
19
+ // prebuilt binary ships for the host.
20
+ const loadPrebuild = nativeRequire('node-gyp-build');
21
+ return loadPrebuild(packageRoot);
22
+ }
23
+ catch (error) {
24
+ throw new Error('Native audio capture addon could not be loaded. Reinstall ' +
25
+ '@qwen-code/audio-capture, or run "npm run build" in packages/audio-capture. ' +
26
+ `(${error instanceof Error ? error.message : String(error)})`);
27
+ }
28
+ }
29
+ export function createNativeAudioCaptureBackend(binding = loadBinding()) {
30
+ const silenceDetected = binding.silenceDetected;
31
+ const drainAudio = binding.drainAudio;
32
+ const audioLevel = binding.audioLevel;
33
+ return {
34
+ startRecording: (options) => {
35
+ binding.startRecording(options);
36
+ },
37
+ stopRecording: () => binding.stopRecording(),
38
+ isRecording: () => binding.isRecording(),
39
+ ...(drainAudio ? { drainAudio: () => drainAudio.call(binding) } : {}),
40
+ ...(audioLevel ? { audioLevel: () => audioLevel.call(binding) } : {}),
41
+ ...(silenceDetected
42
+ ? { silenceDetected: () => silenceDetected.call(binding) }
43
+ : {}),
44
+ microphoneAuthorizationStatus: () => binding.microphoneAuthorizationStatus?.() ?? 'unknown',
45
+ };
46
+ }
47
+ export { getPlatformBackendName } from './platform.js';
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAsCvD,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,mEAAmE;AACnE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAErE,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,oEAAoE;QACpE,sBAAsB,EAAE,CAAC;QACzB,+EAA+E;QAC/E,4EAA4E;QAC5E,sCAAsC;QACtC,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAEjC,CAAC;QACnB,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,4DAA4D;YAC1D,8EAA8E;YAC9E,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,UAAyB,WAAW,EAAE;IAEtC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,OAAO;QACL,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1B,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE;QAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;QACxC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,eAAe;YACjB,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1D,CAAC,CAAC,EAAE,CAAC;QACP,6BAA6B,EAAE,GAAG,EAAE,CAClC,OAAO,CAAC,6BAA6B,EAAE,EAAE,IAAI,SAAS;KACzD,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export type NativeAudioBackendName = 'coreaudio' | 'alsa-pulse' | 'wasapi';
7
+ export declare function getPlatformBackendName(platform?: NodeJS.Platform): NativeAudioBackendName;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export function getPlatformBackendName(platform = process.platform) {
7
+ switch (platform) {
8
+ case 'darwin':
9
+ return 'coreaudio';
10
+ case 'linux':
11
+ return 'alsa-pulse';
12
+ case 'win32':
13
+ return 'wasapi';
14
+ default:
15
+ throw new Error(`Native audio capture is not available for ${platform}.`);
16
+ }
17
+ }
18
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,sBAAsB,CACpC,WAA4B,OAAO,CAAC,QAAQ;IAE5C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB;YACE,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,GAAG,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Mathias Buus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,58 @@
1
+ # node-gyp-build
2
+
3
+ > Build tool and bindings loader for [`node-gyp`][node-gyp] that supports prebuilds.
4
+
5
+ ```
6
+ npm install node-gyp-build
7
+ ```
8
+
9
+ [![Test](https://github.com/prebuild/node-gyp-build/actions/workflows/test.yml/badge.svg)](https://github.com/prebuild/node-gyp-build/actions/workflows/test.yml)
10
+
11
+ Use together with [`prebuildify`][prebuildify] to easily support prebuilds for your native modules.
12
+
13
+ ## Usage
14
+
15
+ > **Note.** Prebuild names have changed in [`prebuildify@3`][prebuildify] and `node-gyp-build@4`. Please see the documentation below.
16
+
17
+ `node-gyp-build` works similar to [`node-gyp build`][node-gyp] except that it will check if a build or prebuild is present before rebuilding your project.
18
+
19
+ It's main intended use is as an npm install script and bindings loader for native modules that bundle prebuilds using [`prebuildify`][prebuildify].
20
+
21
+ First add `node-gyp-build` as an install script to your native project
22
+
23
+ ``` js
24
+ {
25
+ ...
26
+ "scripts": {
27
+ "install": "node-gyp-build"
28
+ }
29
+ }
30
+ ```
31
+
32
+ Then in your `index.js`, instead of using the [`bindings`](https://www.npmjs.com/package/bindings) module use `node-gyp-build` to load your binding.
33
+
34
+ ``` js
35
+ var binding = require('node-gyp-build')(__dirname)
36
+ ```
37
+
38
+ If you do these two things and bundle prebuilds with [`prebuildify`][prebuildify] your native module will work for most platforms
39
+ without having to compile on install time AND will work in both node and electron without the need to recompile between usage.
40
+
41
+ Users can override `node-gyp-build` and force compiling by doing `npm install --build-from-source`.
42
+
43
+ Prebuilds will be attempted loaded from `MODULE_PATH/prebuilds/...` and then next `EXEC_PATH/prebuilds/...` (the latter allowing use with `zeit/pkg`)
44
+
45
+ ## Supported prebuild names
46
+
47
+ If so desired you can bundle more specific flavors, for example `musl` builds to support Alpine, or targeting a numbered ARM architecture version.
48
+
49
+ These prebuilds can be bundled in addition to generic prebuilds; `node-gyp-build` will try to find the most specific flavor first. Prebuild filenames are composed of _tags_. The runtime tag takes precedence, as does an `abi` tag over `napi`. For more details on tags, please see [`prebuildify`][prebuildify].
50
+
51
+ Values for the `libc` and `armv` tags are auto-detected but can be overridden through the `LIBC` and `ARM_VERSION` environment variables, respectively.
52
+
53
+ ## License
54
+
55
+ MIT
56
+
57
+ [prebuildify]: https://github.com/prebuild/prebuildify
58
+ [node-gyp]: https://www.npmjs.com/package/node-gyp
@@ -0,0 +1,5 @@
1
+ ## Security contact information
2
+
3
+ To report a security vulnerability, please use the
4
+ [Tidelift security contact](https://tidelift.com/security).
5
+ Tidelift will coordinate the fix and disclosure.
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+
3
+ var proc = require('child_process')
4
+ var os = require('os')
5
+ var path = require('path')
6
+
7
+ if (!buildFromSource()) {
8
+ proc.exec('node-gyp-build-test', function (err, stdout, stderr) {
9
+ if (err) {
10
+ if (verbose()) console.error(stderr)
11
+ preinstall()
12
+ }
13
+ })
14
+ } else {
15
+ preinstall()
16
+ }
17
+
18
+ function build () {
19
+ var win32 = os.platform() === 'win32'
20
+ var shell = win32
21
+ var args = [win32 ? 'node-gyp.cmd' : 'node-gyp', 'rebuild']
22
+
23
+ try {
24
+ var pkg = require('node-gyp/package.json')
25
+ args = [
26
+ process.execPath,
27
+ path.join(require.resolve('node-gyp/package.json'), '..', typeof pkg.bin === 'string' ? pkg.bin : pkg.bin['node-gyp']),
28
+ 'rebuild'
29
+ ]
30
+ shell = false
31
+ } catch (_) {}
32
+
33
+ proc.spawn(args[0], args.slice(1), { stdio: 'inherit', shell, windowsHide: true }).on('exit', function (code) {
34
+ if (code || !process.argv[3]) process.exit(code)
35
+ exec(process.argv[3]).on('exit', function (code) {
36
+ process.exit(code)
37
+ })
38
+ })
39
+ }
40
+
41
+ function preinstall () {
42
+ if (!process.argv[2]) return build()
43
+ exec(process.argv[2]).on('exit', function (code) {
44
+ if (code) process.exit(code)
45
+ build()
46
+ })
47
+ }
48
+
49
+ function exec (cmd) {
50
+ if (process.platform !== 'win32') {
51
+ var shell = os.platform() === 'android' ? 'sh' : true
52
+ return proc.spawn(cmd, [], {
53
+ shell,
54
+ stdio: 'inherit'
55
+ })
56
+ }
57
+
58
+ return proc.spawn(cmd, [], {
59
+ windowsVerbatimArguments: true,
60
+ stdio: 'inherit',
61
+ shell: true,
62
+ windowsHide: true
63
+ })
64
+ }
65
+
66
+ function buildFromSource () {
67
+ return hasFlag('--build-from-source') || process.env.npm_config_build_from_source === 'true'
68
+ }
69
+
70
+ function verbose () {
71
+ return hasFlag('--verbose') || process.env.npm_config_loglevel === 'verbose'
72
+ }
73
+
74
+ // TODO (next major): remove in favor of env.npm_config_* which works since npm
75
+ // 0.1.8 while npm_config_argv will stop working in npm 7. See npm/rfcs#90
76
+ function hasFlag (flag) {
77
+ if (!process.env.npm_config_argv) return false
78
+
79
+ try {
80
+ return JSON.parse(process.env.npm_config_argv).original.indexOf(flag) !== -1
81
+ } catch (_) {
82
+ return false
83
+ }
84
+ }
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+
3
+ process.env.NODE_ENV = 'test'
4
+
5
+ var path = require('path')
6
+ var test = null
7
+
8
+ try {
9
+ var pkg = require(path.join(process.cwd(), 'package.json'))
10
+ if (pkg.name && process.env[pkg.name.toUpperCase().replace(/-/g, '_')]) {
11
+ process.exit(0)
12
+ }
13
+ test = pkg.prebuild.test
14
+ } catch (err) {
15
+ // do nothing
16
+ }
17
+
18
+ if (test) require(path.join(process.cwd(), test))
19
+ else require('./')()
@@ -0,0 +1,6 @@
1
+ const runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line
2
+ if (typeof runtimeRequire.addon === 'function') { // if the platform supports native resolving prefer that
3
+ module.exports = runtimeRequire.addon.bind(runtimeRequire)
4
+ } else { // else use the runtime version here
5
+ module.exports = require('./node-gyp-build.js')
6
+ }