@qwen-code/qwen-code 0.19.2 → 0.19.3-nightly.20260630.e00fe6a27

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 (286) hide show
  1. package/bundled/extension-creator/SKILL.md +357 -0
  2. package/bundled/loop/SKILL.md +21 -7
  3. package/bundled/loop/SKILL.test.ts +41 -0
  4. package/bundled/loop/loop-task-file.test.ts +1064 -0
  5. package/bundled/loop/loop-task-file.ts +404 -0
  6. package/bundled/loop/loop-tick-resolver.test.ts +665 -0
  7. package/bundled/loop/loop-tick-resolver.ts +347 -0
  8. package/bundled/qc-helper/SKILL.md +26 -19
  9. package/bundled/qc-helper/docs/configuration/auth.md +11 -11
  10. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
  11. package/bundled/qc-helper/docs/configuration/settings.md +76 -75
  12. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  13. package/bundled/qc-helper/docs/features/commands.md +108 -77
  14. package/bundled/qc-helper/docs/features/hooks.md +6 -1
  15. package/bundled/qc-helper/docs/features/memory.md +52 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +24 -2
  17. package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
  18. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
  19. package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-T5X5MN5Q.js} +29 -27
  20. package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-P3E3WTOQ.js} +42 -37
  21. package/chunks/{acpAgent-4MCETHF2.js → acpAgent-QEP6DXFW.js} +864 -175
  22. package/chunks/{agent-K3ENVYSB.js → agent-UDANDUF7.js} +24 -23
  23. package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-KYVSZHSO.js} +24 -23
  24. package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-KWSJAQ7B.js} +33 -12
  25. package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-D2X7G3C3.js} +2 -2
  26. package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-UGETICJQ.js} +2 -2
  27. package/chunks/{bridge-4LV2HBH2.js → bridge-X42LXPTA.js} +31 -30
  28. package/chunks/{ca-7WC7ELX6.js → ca-IUFWESZL.js} +1 -0
  29. package/chunks/{chunk-JXQ23SNT.js → chunk-2JKEQWDZ.js} +623 -78
  30. package/chunks/{chunk-2TJ3YN6Q.js → chunk-2RJA6J57.js} +416 -401
  31. package/chunks/{chunk-3UALQ56H.js → chunk-3227DZO4.js} +1 -1
  32. package/chunks/{chunk-BGUDAULQ.js → chunk-3CPCDXFR.js} +5 -5
  33. package/chunks/{chunk-5RVSM6NW.js → chunk-3HUHAQF3.js} +1 -1
  34. package/chunks/{chunk-D5E5TMYH.js → chunk-3M4W4U5G.js} +16 -2
  35. package/chunks/{chunk-DBZUXSSV.js → chunk-4X7NIEQJ.js} +3 -3
  36. package/chunks/chunk-5GOVVXEV.js +73 -0
  37. package/chunks/{chunk-2BAQ3ACS.js → chunk-5SM4VT6V.js} +405 -5
  38. package/chunks/{chunk-NYOHZYHM.js → chunk-5XQ4A26L.js} +45 -3
  39. package/chunks/{chunk-CI5O6SQL.js → chunk-6FKEVYCD.js} +4 -4
  40. package/chunks/{chunk-ZD3NW5KL.js → chunk-7LM4XHPE.js} +63 -9
  41. package/chunks/chunk-7UNP2XM7.js +840 -0
  42. package/chunks/{chunk-OQHQHJRK.js → chunk-ARYCHZ4B.js} +151 -4775
  43. package/chunks/chunk-BC3C4F3Q.js +40 -0
  44. package/chunks/{chunk-CGEGHF2C.js → chunk-BKXBARJZ.js} +1 -1
  45. package/chunks/chunk-BMFMJINR.js +45 -0
  46. package/chunks/chunk-BOJWHRMX.js +11273 -0
  47. package/chunks/{chunk-CGOMICBE.js → chunk-BSZEQNUA.js} +34 -1
  48. package/chunks/{chunk-OIC6S73E.js → chunk-BUUQ5HPX.js} +1 -1
  49. package/chunks/{chunk-2BIF2NVV.js → chunk-BVSVIN45.js} +2 -2
  50. package/chunks/{chunk-TOEGRAVX.js → chunk-BX5YO7UW.js} +17 -5
  51. package/chunks/{chunk-4W4T77MO.js → chunk-BXVWV4GI.js} +109 -6
  52. package/chunks/{chunk-VQRYPFCV.js → chunk-CYHVPQYT.js} +10 -460
  53. package/chunks/{chunk-PRYMDRBV.js → chunk-DDMOU62Q.js} +1 -1
  54. package/chunks/{chunk-S566HKUS.js → chunk-DHXWNSJA.js} +15 -1
  55. package/chunks/{chunk-F6XNTYNE.js → chunk-E6XQPQXW.js} +30 -307
  56. package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
  57. package/chunks/{chunk-EL5IHQON.js → chunk-EWYQFWYF.js} +6 -27
  58. package/chunks/{chunk-HG6YKEBI.js → chunk-F2DOT6UZ.js} +161 -30
  59. package/chunks/{chunk-JTYRZODB.js → chunk-FOOIZCWL.js} +16 -7
  60. package/chunks/{chunk-EX4W6ZYG.js → chunk-G5G4TFZ7.js} +1 -1
  61. package/chunks/{chunk-EW6C27XX.js → chunk-GEHVIWAT.js} +9 -3
  62. package/chunks/chunk-HEVBZSXG.js +4923 -0
  63. package/chunks/chunk-HFQ2XSE7.js +690 -0
  64. package/chunks/{chunk-PF523XJX.js → chunk-HPGTGMP3.js} +1 -1
  65. package/chunks/{chunk-OTBK43JR.js → chunk-HYCC3XM3.js} +1 -1
  66. package/chunks/{chunk-TMBPDHXD.js → chunk-I4H7PRWQ.js} +1 -1
  67. package/chunks/{chunk-EEEZIVFJ.js → chunk-JOLIREYR.js} +1 -1
  68. package/chunks/{chunk-TZM5JIAX.js → chunk-JYPQTRA3.js} +10 -7
  69. package/chunks/chunk-K5XU6E4T.js +167 -0
  70. package/chunks/{chunk-BS64PXY3.js → chunk-KFVU7ODN.js} +1 -1
  71. package/chunks/{chunk-3RJ3ZPPR.js → chunk-KKQWC6WS.js} +7 -7
  72. package/chunks/{chunk-3QFE4OTE.js → chunk-LBW7NW7X.js} +4 -4
  73. package/chunks/{chunk-Z7XXFPGP.js → chunk-LDWTYE33.js} +1 -1
  74. package/chunks/{chunk-EXMX5YHG.js → chunk-LP5E4YIH.js} +1 -1
  75. package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
  76. package/chunks/{chunk-I5T6PIBQ.js → chunk-MBV2CTRL.js} +1010 -925
  77. package/chunks/{chunk-5JZLXFPD.js → chunk-MTHMXSNT.js} +11 -11
  78. package/chunks/{chunk-FPACXT7T.js → chunk-MTJVHQDP.js} +534 -164
  79. package/chunks/chunk-NDOC6M5S.js +481 -0
  80. package/chunks/{chunk-HGNSRCRB.js → chunk-NL4C3H6C.js} +1 -1
  81. package/chunks/{chunk-GZCJS5WH.js → chunk-O2VBQ3Y2.js} +2 -2
  82. package/chunks/{chunk-UN3C6GOR.js → chunk-PPFWEV7G.js} +10 -108
  83. package/chunks/{chunk-RS4HRC75.js → chunk-QI2CFVRF.js} +85 -8
  84. package/chunks/{chunk-XU5P23GN.js → chunk-QLDPRILK.js} +3 -3
  85. package/chunks/chunk-QYUE6W3T.js +123 -0
  86. package/chunks/{chunk-USGMPVOY.js → chunk-R3LHDWF2.js} +21 -12
  87. package/chunks/{chunk-BNXANYLH.js → chunk-RD6YJJJ6.js} +81 -1
  88. package/chunks/{chunk-PXFFKNCO.js → chunk-RIP623NO.js} +4877 -2469
  89. package/chunks/{chunk-XKBP7M7A.js → chunk-RYBSUGOR.js} +142 -30
  90. package/chunks/{chunk-BG4BIP7F.js → chunk-SBBN4BWR.js} +4 -2
  91. package/chunks/{chunk-T2VDEFUU.js → chunk-SKQZZVAV.js} +2 -2
  92. package/chunks/{chunk-5R4SBCX6.js → chunk-SL5MOGQH.js} +3 -3
  93. package/chunks/chunk-SMXULRAN.js +37 -0
  94. package/chunks/{chunk-WA5OJGFL.js → chunk-SS6WJMQK.js} +363 -76
  95. package/chunks/{chunk-UAARVVBI.js → chunk-TNWFHGN6.js} +1 -1
  96. package/chunks/{chunk-I2RFAW6Q.js → chunk-TT6Q3EN4.js} +7 -5
  97. package/chunks/chunk-UAKXW3DN.js +30 -0
  98. package/chunks/{chunk-C4K3FEQ2.js → chunk-UX4SGCGN.js} +32 -3
  99. package/chunks/{chunk-J6AW7O5D.js → chunk-WHDQZHRU.js} +2 -2
  100. package/chunks/{chunk-WGAEWQTF.js → chunk-WN6K47NR.js} +1 -2
  101. package/chunks/{chunk-UAARJR2G.js → chunk-WQT5SOI6.js} +2 -2
  102. package/chunks/{chunk-VYFMN7C6.js → chunk-WUMVIRTN.js} +225 -37
  103. package/chunks/{chunk-R36VMVEP.js → chunk-XJMKOTVV.js} +5 -5
  104. package/chunks/{chunk-TXVGVZYR.js → chunk-XJYUPHRC.js} +3 -3
  105. package/chunks/{chunk-2JD55C6G.js → chunk-Y6YMRS3U.js} +2 -2
  106. package/chunks/{chunk-LLFFKXZZ.js → chunk-YALKC62D.js} +56 -29
  107. package/chunks/{chunk-GYZQA2FO.js → chunk-YLZJCUH6.js} +1 -1
  108. package/chunks/chunk-YTFBURQD.js +313 -0
  109. package/chunks/{chunk-KBXLIVWQ.js → chunk-ZFPRYHWR.js} +2 -2
  110. package/chunks/{chunk-X6EDWN44.js → chunk-ZP6UKOPB.js} +1 -1
  111. package/chunks/{computer-use-6BBRNT6S.js → computer-use-LF2S6LUZ.js} +103 -49
  112. package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-VPX5UG55.js} +26 -25
  113. package/chunks/{cron-create-4KQE6YLH.js → cron-create-SKEY55RG.js} +4 -4
  114. package/chunks/{cron-delete-THME66UP.js → cron-delete-I3NAT32Z.js} +6 -6
  115. package/chunks/{cron-list-7A54SJ5N.js → cron-list-6XRRL6TH.js} +5 -5
  116. package/chunks/{daemon-status-provider-CSL3BUOY.js → daemon-status-provider-5JAWZS4V.js} +34 -34
  117. package/chunks/{de-ACHALDED.js → de-EOW5PVHF.js} +1 -0
  118. package/chunks/{dist-BD27IA3L.js → dist-4FCNM6KJ.js} +2 -2
  119. package/chunks/{dist-OD2FY543.js → dist-O3H4PABL.js} +2 -2
  120. package/chunks/{dist-BOOH5JWN.js → dist-SCAAUWPS.js} +18 -4
  121. package/chunks/{dist-QHJRBCMP.js → dist-UKPWQJCL.js} +44 -2
  122. package/chunks/{dist-QFFZWACU.js → dist-VD7HXTML.js} +20 -9
  123. package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-7FRQMU4P.js} +25 -24
  124. package/chunks/{edit-7J6WXARF.js → edit-REKJDIRL.js} +68 -27
  125. package/chunks/{en-NCUBOJOY.js → en-HPWEJBTR.js} +8 -0
  126. package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-GBKUDCD3.js} +24 -23
  127. package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-WB3Y4FGT.js} +24 -23
  128. package/chunks/{errors-6G2JYR54.js → errors-2XJDYO3M.js} +26 -25
  129. package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-KKC7O2ZV.js} +24 -23
  130. package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-7HMS3TF7.js} +24 -23
  131. package/chunks/{fast-path-35JJFS3C.js → fast-path-XVNIYWGG.js} +4 -4
  132. package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-UQLRFDQP.js} +3 -2
  133. package/chunks/{fr-GVKZ27MF.js → fr-BN5NKSAC.js} +1 -0
  134. package/chunks/{gemini-NDTG7WAX.js → gemini-U5TPU3IQ.js} +210 -104
  135. package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-ZVWRHXOO.js} +4 -4
  136. package/chunks/{glob-SJ2JBZK4.js → glob-FEJWIH2W.js} +24 -23
  137. package/chunks/{grep-BRMWFEWR.js → grep-KMP25IIA.js} +24 -23
  138. package/chunks/{headlessSafetyWarnings-LJ6FJX77.js → headlessSafetyWarnings-5DEDET4M.js} +24 -23
  139. package/chunks/{initializer-P5AXF7PV.js → initializer-FJTACLOH.js} +31 -28
  140. package/chunks/{ja-FKZ2WZ4D.js → ja-7DEUB2TS.js} +1 -0
  141. package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-YLMDLKXT.js} +2 -2
  142. package/chunks/{list-6COK34BP.js → list-SCQXYJUW.js} +32 -29
  143. package/chunks/{loadedSettingsAdapter-XIUTN245.js → loadedSettingsAdapter-P6KPNAG7.js} +30 -27
  144. package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-FYEQEJUA.js} +7 -7
  145. package/chunks/{ls-BYQY7RVV.js → ls-R5WP4BGZ.js} +4 -4
  146. package/chunks/{lsp-X54RO4IV.js → lsp-GSICJMMW.js} +2 -2
  147. package/chunks/{monitor-DH7KFSJV.js → monitor-JU3HHHVY.js} +24 -23
  148. package/chunks/nonInteractiveCli-IZEKUHU3.js +100 -0
  149. package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-YHY3Z2QQ.js} +52 -23
  150. package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-4WUVA3Q2.js} +13 -12
  151. package/chunks/{pt-SY5NCFGR.js → pt-TNZRNLQB.js} +1 -0
  152. package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-MVYYR44B.js} +26 -25
  153. package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-6HNGHALT.js} +5 -4
  154. package/chunks/{read-file-767G23OY.js → read-file-NABEO2X4.js} +8 -8
  155. package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-DQQW7H7T.js} +2 -2
  156. package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-YXLK6UTX.js} +24 -23
  157. package/chunks/{ru-FWNXJG4F.js → ru-NIAUBKCN.js} +1 -0
  158. package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-4B5QBMLQ.js} +144 -41
  159. package/chunks/{scheduler-UNTFDQLG.js → scheduler-XAKIYBDL.js} +24 -23
  160. package/chunks/{send-message-2DAFXEYP.js → send-message-EE4TWKVU.js} +2 -2
  161. package/chunks/{serve-KZ56QB5S.js → serve-4RXVLUKD.js} +30 -28
  162. package/chunks/{server-BV5TZUMU.js → server-7PA5QGIA.js} +11037 -8747
  163. package/chunks/{session-OIBXFSGD.js → session-WNVWRYAH.js} +194 -57
  164. package/chunks/{settings-WJTCBIRA.js → settings-YJH32TFF.js} +30 -27
  165. package/chunks/{shell-WC52IBHW.js → shell-YFLABOS5.js} +24 -23
  166. package/chunks/{skill-U7F7JR4M.js → skill-N3J7FUAY.js} +38 -11
  167. package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-D6WVMFZJ.js} +26 -25
  168. package/chunks/{src-4F6FBZFI.js → src-IU5GDBEH.js} +88 -28
  169. package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-QIPQTRT4.js} +2784 -2474
  170. package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-T5YHQ6S2.js} +3 -3
  171. package/chunks/{task-create-OUYCA553.js → task-create-BLY7RHXX.js} +6 -6
  172. package/chunks/{task-list-WAX7I2IA.js → task-list-3QUYNVYR.js} +5 -5
  173. package/chunks/{task-stop-CAIL6FNH.js → task-stop-U4RATK2V.js} +2 -2
  174. package/chunks/{task-update-AHEO5OUT.js → task-update-U54O7KJX.js} +6 -6
  175. package/chunks/{team-create-3WC7CIIW.js → team-create-TP4CLLM3.js} +24 -23
  176. package/chunks/{team-delete-HGHFG23B.js → team-delete-LKBYPASD.js} +5 -5
  177. package/chunks/{theme-manager-DICFCT3P.js → theme-manager-N2TBIBZT.js} +25 -24
  178. package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-OYXKTVYN.js} +4 -4
  179. package/chunks/{tool-search-L5K7HLER.js → tool-search-GBBSICYB.js} +101 -16
  180. package/chunks/trustedFolders-F7TBU5CD.js +76 -0
  181. package/chunks/types-QX5C3CHJ.js +12 -0
  182. package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-EQDQPSMI.js} +55 -50
  183. package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-PCVCML2X.js} +29 -15
  184. package/chunks/{workflow-OB3AND7I.js → workflow-ANJ4FYBK.js} +32 -30
  185. package/chunks/{workspace-providers-status-ZIR5EPOO.js → workspace-providers-status-462QQKQM.js} +32 -29
  186. package/chunks/workspace-service-VTG4G6CW.js +75 -0
  187. package/chunks/{write-file-SEXBNDZM.js → write-file-3P3WMQQW.js} +63 -27
  188. package/chunks/{zh-RBEGQVQT.js → zh-5EUYXASN.js} +8 -0
  189. package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-TR3XYGE5.js} +8 -0
  190. package/cli-entry.js +20 -9
  191. package/cli.js +6 -6
  192. package/locales/ca.js +2 -0
  193. package/locales/de.js +2 -0
  194. package/locales/en.js +14 -0
  195. package/locales/fr.js +2 -0
  196. package/locales/ja.js +1 -0
  197. package/locales/pt.js +2 -0
  198. package/locales/ru.js +2 -0
  199. package/locales/zh-TW.js +12 -0
  200. package/locales/zh.js +12 -0
  201. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
  202. package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
  203. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
  204. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
  205. package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
  206. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
  207. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
  208. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
  209. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
  210. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
  211. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
  212. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
  213. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  214. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
  215. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
  216. package/node_modules/@qwen-code/audio-capture/package.json +30 -0
  217. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  218. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  219. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  220. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  221. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  222. package/package.json +18 -6
  223. package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
  224. package/postinstall.js +50 -0
  225. package/web-shell/assets/{arc-D_ae_Y9k.js → arc-DIemsO_F.js} +1 -1
  226. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-CTlUvIQv.js} +1 -1
  227. package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-DG0jmIZK.js} +1 -1
  228. package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-WljDBi55.js} +1 -1
  229. package/web-shell/assets/channel-CbzRbdpA.js +1 -0
  230. package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-8nc6onr2.js} +1 -1
  231. package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-EopXix8Z.js} +1 -1
  232. package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-BE4Jz3N3.js} +1 -1
  233. package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-C_eErgDN.js} +1 -1
  234. package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-DFtVW-Is.js} +1 -1
  235. package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-CJPyxIg9.js} +1 -1
  236. package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-Bk-xgj6M.js} +1 -1
  237. package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-p3Y4yaFB.js} +1 -1
  238. package/web-shell/assets/classDiagram-4FO5ZUOK-BFdyQ52h.js +1 -0
  239. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BFdyQ52h.js +1 -0
  240. package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-BCMO6Js3.js} +1 -1
  241. package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-DUMrwASf.js} +1 -1
  242. package/web-shell/assets/default-aEtf0G7-.svg +1 -0
  243. package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-C5d7qJbL.js} +1 -1
  244. package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-CjLzMhbT.js} +1 -1
  245. package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-RCoNWeAm.js} +1 -1
  246. package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-KThXjaNV.js} +1 -1
  247. package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-DKsC2BWz.js} +1 -1
  248. package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-DJ2ukmq0.js} +1 -1
  249. package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-zzqaARRX.js} +1 -1
  250. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-kFUg-gqT.js} +1 -1
  251. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-C6JnMVzD.js} +1 -1
  252. package/web-shell/assets/index-B3XUm7dw.js +713 -0
  253. package/web-shell/assets/index-CHmzAWys.css +5 -0
  254. package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-XqPVhp89.js} +1 -1
  255. package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
  256. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D2k8sGpf.js} +1 -1
  257. package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-CQEST1GE.js} +1 -1
  258. package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-DZ7kqVBC.js} +1 -1
  259. package/web-shell/assets/{linear-DGGM2kcP.js → linear-B6C_6q_E.js} +1 -1
  260. package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-CsyNP1qt.js} +5 -5
  261. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-B1VDIzJq.js} +1 -1
  262. package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-DN0E7Jwu.js} +1 -1
  263. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-UKTQdHKm.js} +1 -1
  264. package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
  265. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-BRGceQvN.js} +1 -1
  266. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-2DDyu41v.js} +1 -1
  267. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-CT5iE8ZU.js} +1 -1
  268. package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-CqMQ_s4G.js} +1 -1
  269. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CamhV5pM.js +1 -0
  270. package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-Di37QSZU.js} +1 -1
  271. package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-DCXvpz5S.js} +1 -1
  272. package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-CpUCk6OX.js} +1 -1
  273. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-D01pVEBg.js} +1 -1
  274. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-DOu5JDoz.js} +1 -1
  275. package/web-shell/index.html +2 -2
  276. package/chunks/chunk-B6HQGTYR.js +0 -410
  277. package/chunks/chunk-R2BXK7SX.js +0 -13
  278. package/chunks/chunk-RKIZXJMB.js +0 -13
  279. package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
  280. package/chunks/workspace-service-OM5D4OI2.js +0 -60
  281. package/web-shell/assets/channel-DYPNiTww.js +0 -1
  282. package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
  283. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
  284. package/web-shell/assets/index-CpOXWDPh.js +0 -714
  285. package/web-shell/assets/index-oVK7qhre.css +0 -5
  286. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
@@ -2,15 +2,16 @@
2
2
  "use strict";
3
3
  import {
4
4
  resolveModelConfig,
5
+ resolveProviderProtocol,
5
6
  stripRuntimeSnapshotPrefix
6
- } from "./chunk-PXFFKNCO.js";
7
+ } from "./chunk-RIP623NO.js";
7
8
  import {
8
9
  external_exports
9
10
  } from "./chunk-K5PGHDBN.js";
10
11
  import {
11
12
  AuthType,
12
13
  MODEL_GENERATION_CONFIG_FIELDS
13
- } from "./chunk-WA5OJGFL.js";
14
+ } from "./chunk-SS6WJMQK.js";
14
15
  import {
15
16
  init_esbuild_shims
16
17
  } from "./chunk-A4BMJM77.js";
@@ -112,6 +113,68 @@ var AUTH_ENV_MODEL_VARS = {
112
113
  ["anthropic" /* USE_ANTHROPIC */]: ["ANTHROPIC_MODEL"],
113
114
  ["qwen-oauth" /* QWEN_OAUTH */]: []
114
115
  };
116
+ function collectProviderModelsForProtocol(modelProviders, providerProtocol, protocol) {
117
+ if (!modelProviders) {
118
+ return [];
119
+ }
120
+ const out = [];
121
+ for (const [providerId, models] of Object.entries(modelProviders)) {
122
+ if (!Array.isArray(models)) {
123
+ continue;
124
+ }
125
+ if (resolveProviderProtocol(providerId, providerProtocol) === protocol) {
126
+ out.push(...models);
127
+ }
128
+ }
129
+ return out;
130
+ }
131
+ __name(collectProviderModelsForProtocol, "collectProviderModelsForProtocol");
132
+ function findProviderIdForModel(modelProviders, providerProtocol, protocol, modelProvider) {
133
+ if (!modelProviders || !modelProvider) {
134
+ return void 0;
135
+ }
136
+ for (const [providerId, models] of Object.entries(modelProviders)) {
137
+ if (!Array.isArray(models)) {
138
+ continue;
139
+ }
140
+ if (resolveProviderProtocol(providerId, providerProtocol) !== protocol) {
141
+ continue;
142
+ }
143
+ if (models.includes(modelProvider)) {
144
+ return providerId;
145
+ }
146
+ }
147
+ return void 0;
148
+ }
149
+ __name(findProviderIdForModel, "findProviderIdForModel");
150
+ function buildSkippedProviderWarnings(modelProviders, providerProtocol) {
151
+ if (!modelProviders) {
152
+ return [];
153
+ }
154
+ const warnings = [];
155
+ const known = Object.values(AuthType).join(", ");
156
+ for (const [providerId, models] of Object.entries(modelProviders)) {
157
+ if (!Array.isArray(models) || models.length === 0) {
158
+ continue;
159
+ }
160
+ const protocol = resolveProviderProtocol(providerId, providerProtocol);
161
+ if (protocol === "qwen-oauth" /* QWEN_OAUTH */ && providerId !== "qwen-oauth" /* QWEN_OAUTH */) {
162
+ warnings.push(
163
+ `Warning: modelProviders provider "${providerId}" maps to "qwen-oauth" via providerProtocol, but qwen-oauth uses hard-coded models only; its ${models.length} model(s) are ignored.`
164
+ );
165
+ continue;
166
+ }
167
+ if (protocol !== void 0) {
168
+ continue;
169
+ }
170
+ const mapped = providerProtocol && Object.hasOwn(providerProtocol, providerId) ? providerProtocol[providerId] : void 0;
171
+ warnings.push(
172
+ mapped !== void 0 ? `Warning: providerProtocol["${providerId}"] = "${mapped}" is not a known protocol (expected one of: ${known}); its ${models.length} model(s) are ignored.` : `Warning: modelProviders provider "${providerId}" is not a built-in protocol (${known}) and has no providerProtocol mapping; its ${models.length} model(s) are ignored. Add providerProtocol["${providerId}"] (e.g. "openai") to enable them.`
173
+ );
174
+ }
175
+ return warnings;
176
+ }
177
+ __name(buildSkippedProviderWarnings, "buildSkippedProviderWarnings");
115
178
  function getIgnoredTopLevelGenerationConfigFields(settingsGenerationConfig, modelProvider) {
116
179
  if (!settingsGenerationConfig || !modelProvider) {
117
180
  return [];
@@ -122,7 +185,7 @@ function getIgnoredTopLevelGenerationConfigFields(settingsGenerationConfig, mode
122
185
  );
123
186
  }
124
187
  __name(getIgnoredTopLevelGenerationConfigFields, "getIgnoredTopLevelGenerationConfigFields");
125
- function buildIgnoredTopLevelGenerationConfigWarning(authType, modelProvider, ignoredFields) {
188
+ function buildIgnoredTopLevelGenerationConfigWarning(providerId, modelProvider, ignoredFields) {
126
189
  if (ignoredFields.length === 0) {
127
190
  return void 0;
128
191
  }
@@ -131,7 +194,7 @@ function buildIgnoredTopLevelGenerationConfigWarning(authType, modelProvider, ig
131
194
  const verb = isSingular ? "is" : "are";
132
195
  const fieldReference = isSingular ? "this field" : "these fields";
133
196
  const pronoun = isSingular ? "it" : "them";
134
- return `Warning: ${fieldList} ${verb} ignored for provider model "${modelProvider.id}" from modelProviders.${authType}. Move ${fieldReference} to modelProviders.${authType}[].generationConfig for that model if you want ${pronoun} to apply.`;
197
+ return `Warning: ${fieldList} ${verb} ignored for provider model "${modelProvider.id}" from modelProviders.${providerId}. Move ${fieldReference} to modelProviders.${providerId}[].generationConfig for that model if you want ${pronoun} to apply.`;
135
198
  }
136
199
  __name(buildIgnoredTopLevelGenerationConfigWarning, "buildIgnoredTopLevelGenerationConfigWarning");
137
200
  function getAuthTypeFromEnv() {
@@ -177,8 +240,12 @@ function resolveCliGenerationConfig(inputs) {
177
240
  let modelProvider;
178
241
  let disambiguationWarning;
179
242
  if (resolvedModel && authType && settings.modelProviders) {
180
- const providers = settings.modelProviders[authType];
181
- if (providers && Array.isArray(providers)) {
243
+ const providers = collectProviderModelsForProtocol(
244
+ settings.modelProviders,
245
+ settings.providerProtocol,
246
+ authType
247
+ );
248
+ if (providers.length > 0) {
182
249
  const persistedBaseUrl = settings.model?.baseUrl;
183
250
  if (resolvedFromSettings && persistedBaseUrl) {
184
251
  const exactMatch = providers.find(
@@ -225,7 +292,12 @@ function resolveCliGenerationConfig(inputs) {
225
292
  };
226
293
  const resolved = resolveModelConfig(configSources);
227
294
  const ignoredGenerationConfigWarning = authType && modelProvider ? buildIgnoredTopLevelGenerationConfigWarning(
228
- authType,
295
+ findProviderIdForModel(
296
+ settings.modelProviders,
297
+ settings.providerProtocol,
298
+ authType,
299
+ modelProvider
300
+ ) ?? authType,
229
301
  modelProvider,
230
302
  getIgnoredTopLevelGenerationConfigFields(
231
303
  settings.model?.generationConfig,
@@ -248,7 +320,11 @@ function resolveCliGenerationConfig(inputs) {
248
320
  warnings: [
249
321
  ...resolved.warnings,
250
322
  ...disambiguationWarning ? [disambiguationWarning] : [],
251
- ...ignoredGenerationConfigWarning ? [ignoredGenerationConfigWarning] : []
323
+ ...ignoredGenerationConfigWarning ? [ignoredGenerationConfigWarning] : [],
324
+ ...buildSkippedProviderWarnings(
325
+ settings.modelProviders,
326
+ settings.providerProtocol
327
+ )
252
328
  ]
253
329
  };
254
330
  }
@@ -259,6 +335,7 @@ export {
259
335
  sanitizeProviderBaseUrl,
260
336
  parseAcpBaseModelId,
261
337
  parseAcpModelOption,
338
+ collectProviderModelsForProtocol,
262
339
  getAuthTypeFromEnv,
263
340
  resolveCliGenerationConfig
264
341
  };
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  getTasksDir,
5
5
  require_proper_lockfile
6
- } from "./chunk-2BIF2NVV.js";
6
+ } from "./chunk-BVSVIN45.js";
7
7
  import {
8
8
  Mutex
9
9
  } from "./chunk-OMX7CUOE.js";
10
10
  import {
11
11
  atomicWriteJSON
12
- } from "./chunk-3UALQ56H.js";
12
+ } from "./chunk-3227DZO4.js";
13
13
  import {
14
14
  createDebugLogger,
15
15
  isNodeError
16
- } from "./chunk-C4K3FEQ2.js";
16
+ } from "./chunk-UX4SGCGN.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-A4BMJM77.js";
@@ -0,0 +1,123 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-A4BMJM77.js";
6
+ import {
7
+ __commonJS,
8
+ __name
9
+ } from "./chunk-J2S4EL5Y.js";
10
+
11
+ // node_modules/strip-json-comments/index.js
12
+ var require_strip_json_comments = __commonJS({
13
+ "node_modules/strip-json-comments/index.js"(exports, module) {
14
+ "use strict";
15
+ init_esbuild_shims();
16
+ var singleComment = Symbol("singleComment");
17
+ var multiComment = Symbol("multiComment");
18
+ var stripWithoutWhitespace = /* @__PURE__ */ __name(() => "", "stripWithoutWhitespace");
19
+ var stripWithWhitespace = /* @__PURE__ */ __name((string, start, end) => string.slice(start, end).replace(/\S/g, " "), "stripWithWhitespace");
20
+ var isEscaped = /* @__PURE__ */ __name((jsonString, quotePosition) => {
21
+ let index = quotePosition - 1;
22
+ let backslashCount = 0;
23
+ while (jsonString[index] === "\\") {
24
+ index -= 1;
25
+ backslashCount += 1;
26
+ }
27
+ return Boolean(backslashCount % 2);
28
+ }, "isEscaped");
29
+ module.exports = (jsonString, options = {}) => {
30
+ if (typeof jsonString !== "string") {
31
+ throw new TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof jsonString}\``);
32
+ }
33
+ const strip = options.whitespace === false ? stripWithoutWhitespace : stripWithWhitespace;
34
+ let insideString = false;
35
+ let insideComment = false;
36
+ let offset = 0;
37
+ let result = "";
38
+ for (let i = 0; i < jsonString.length; i++) {
39
+ const currentCharacter = jsonString[i];
40
+ const nextCharacter = jsonString[i + 1];
41
+ if (!insideComment && currentCharacter === '"') {
42
+ const escaped = isEscaped(jsonString, i);
43
+ if (!escaped) {
44
+ insideString = !insideString;
45
+ }
46
+ }
47
+ if (insideString) {
48
+ continue;
49
+ }
50
+ if (!insideComment && currentCharacter + nextCharacter === "//") {
51
+ result += jsonString.slice(offset, i);
52
+ offset = i;
53
+ insideComment = singleComment;
54
+ i++;
55
+ } else if (insideComment === singleComment && currentCharacter + nextCharacter === "\r\n") {
56
+ i++;
57
+ insideComment = false;
58
+ result += strip(jsonString, offset, i);
59
+ offset = i;
60
+ continue;
61
+ } else if (insideComment === singleComment && currentCharacter === "\n") {
62
+ insideComment = false;
63
+ result += strip(jsonString, offset, i);
64
+ offset = i;
65
+ } else if (!insideComment && currentCharacter + nextCharacter === "/*") {
66
+ result += jsonString.slice(offset, i);
67
+ offset = i;
68
+ insideComment = multiComment;
69
+ i++;
70
+ continue;
71
+ } else if (insideComment === multiComment && currentCharacter + nextCharacter === "*/") {
72
+ i++;
73
+ insideComment = false;
74
+ result += strip(jsonString, offset, i + 1);
75
+ offset = i + 1;
76
+ continue;
77
+ }
78
+ }
79
+ return result + (insideComment ? strip(jsonString.slice(offset)) : jsonString.slice(offset));
80
+ };
81
+ }
82
+ });
83
+
84
+ // packages/cli/src/config/path-comparison.ts
85
+ init_esbuild_shims();
86
+ import * as fs from "node:fs";
87
+ import * as path from "node:path";
88
+ function isWithinRoot(childPath, parentPath) {
89
+ const relativePath = path.relative(parentPath, childPath);
90
+ return relativePath === "" || !relativePath.startsWith(`..${path.sep}`) && relativePath !== ".." && !path.isAbsolute(relativePath);
91
+ }
92
+ __name(isWithinRoot, "isWithinRoot");
93
+ function getPathComparisonVariants(rawPath) {
94
+ const variants = /* @__PURE__ */ new Set([path.normalize(path.resolve(rawPath))]);
95
+ try {
96
+ variants.add(path.normalize(fs.realpathSync(rawPath)));
97
+ } catch {
98
+ }
99
+ return variants;
100
+ }
101
+ __name(getPathComparisonVariants, "getPathComparisonVariants");
102
+ function arePathsEquivalent(left, right) {
103
+ const rightVariants = getPathComparisonVariants(right);
104
+ for (const leftVariant of getPathComparisonVariants(left)) {
105
+ if (rightVariants.has(leftVariant)) {
106
+ return true;
107
+ }
108
+ }
109
+ return false;
110
+ }
111
+ __name(arePathsEquivalent, "arePathsEquivalent");
112
+
113
+ export {
114
+ require_strip_json_comments,
115
+ isWithinRoot,
116
+ getPathComparisonVariants,
117
+ arePathsEquivalent
118
+ };
119
+ /**
120
+ * @license
121
+ * Copyright 2025 Qwen Team
122
+ * SPDX-License-Identifier: Apache-2.0
123
+ */
@@ -6,19 +6,20 @@ import {
6
6
  parseAcpBaseModelId,
7
7
  resolveCliGenerationConfig,
8
8
  sanitizeProviderBaseUrl
9
- } from "./chunk-RS4HRC75.js";
10
- import {
11
- loadSettings
12
- } from "./chunk-OQHQHJRK.js";
9
+ } from "./chunk-QI2CFVRF.js";
13
10
  import {
14
11
  STATUS_SCHEMA_VERSION
15
- } from "./chunk-D5E5TMYH.js";
12
+ } from "./chunk-3M4W4U5G.js";
16
13
  import {
17
- ModelsConfig
18
- } from "./chunk-PXFFKNCO.js";
14
+ loadSettings
15
+ } from "./chunk-HEVBZSXG.js";
16
+ import {
17
+ ModelsConfig,
18
+ resolveProviderProtocol
19
+ } from "./chunk-RIP623NO.js";
19
20
  import {
20
21
  tokenLimit
21
- } from "./chunk-F6XNTYNE.js";
22
+ } from "./chunk-YTFBURQD.js";
22
23
  import {
23
24
  init_esbuild_shims
24
25
  } from "./chunk-A4BMJM77.js";
@@ -54,6 +55,7 @@ function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
54
55
  const modelsConfig = new ModelsConfig({
55
56
  initialAuthType: selectedAuthType,
56
57
  modelProvidersConfig: settings.modelProviders,
58
+ providerProtocolConfig: settings.providerProtocol,
57
59
  generationConfig: resolvedCliConfig.generationConfig,
58
60
  generationConfigSources: resolvedCliConfig.sources
59
61
  });
@@ -65,9 +67,10 @@ function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
65
67
  const fastModelId = typeof settings.fastModel === "string" && settings.fastModel.length > 0 ? settings.fastModel : void 0;
66
68
  const providers = /* @__PURE__ */ new Map();
67
69
  const explicitModelBaseUrls = buildExplicitModelBaseUrls(
68
- settings.modelProviders
70
+ settings.modelProviders,
71
+ settings.providerProtocol
69
72
  );
70
- for (const model of modelsConfig.getAllConfiguredModels()) {
73
+ for (const model of modelsConfig.getAllConfiguredModels().filter(isMainSelectableModel)) {
71
74
  if (model.isRuntimeModel) continue;
72
75
  const authType = String(model.authType);
73
76
  let provider = providers.get(authType);
@@ -146,6 +149,10 @@ function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
146
149
  }
147
150
  }
148
151
  __name(buildWorkspaceProvidersStatus, "buildWorkspaceProvidersStatus");
152
+ function isMainSelectableModel(model) {
153
+ return model.fastOnly !== true && model.voiceOnly !== true;
154
+ }
155
+ __name(isMainSelectableModel, "isMainSelectableModel");
149
156
  function matchesCurrentModel(currentModelId, baseModelId, acpModelId) {
150
157
  return currentModelId === baseModelId || currentModelId === acpModelId;
151
158
  }
@@ -155,10 +162,12 @@ function matchesCurrentBaseUrl(currentBaseUrl, modelBaseUrl, modelHasExplicitBas
155
162
  return currentBaseUrl === modelBaseUrl;
156
163
  }
157
164
  __name(matchesCurrentBaseUrl, "matchesCurrentBaseUrl");
158
- function buildExplicitModelBaseUrls(modelProviders) {
165
+ function buildExplicitModelBaseUrls(modelProviders, providerProtocol) {
159
166
  const baseUrls = /* @__PURE__ */ new Set();
160
167
  if (!modelProviders) return baseUrls;
161
- for (const [authType, providerConfig] of Object.entries(modelProviders)) {
168
+ for (const [providerId, providerConfig] of Object.entries(modelProviders)) {
169
+ const authType = resolveProviderProtocol(providerId, providerProtocol);
170
+ if (!authType) continue;
162
171
  const models = readProviderModels(providerConfig);
163
172
  for (const model of models) {
164
173
  if (typeof model.id === "string" && typeof model.baseUrl === "string" && model.baseUrl.length > 0) {
@@ -5,7 +5,7 @@ import {
5
5
  Storage,
6
6
  resolvePath,
7
7
  sanitizeCwd
8
- } from "./chunk-C4K3FEQ2.js";
8
+ } from "./chunk-UX4SGCGN.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-A4BMJM77.js";
@@ -23,6 +23,7 @@ var AUTO_MEMORY_METADATA_FILENAME = "meta.json";
23
23
  var AUTO_MEMORY_EXTRACT_CURSOR_FILENAME = "extract-cursor.json";
24
24
  var AUTO_MEMORY_CONSOLIDATION_LOCK_FILENAME = "consolidation.lock";
25
25
  var USER_AUTO_MEMORY_DIRNAME = "memories";
26
+ var TEAM_AUTO_MEMORY_DIRNAME = "team-memory";
26
27
  function findGitRoot(startPath) {
27
28
  let current = path.resolve(startPath);
28
29
  while (true) {
@@ -82,6 +83,7 @@ function getMemoryBaseDir() {
82
83
  }
83
84
  __name(getMemoryBaseDir, "getMemoryBaseDir");
84
85
  var _autoMemoryRootCache = /* @__PURE__ */ new Map();
86
+ var _teamAutoMemoryRootCache = /* @__PURE__ */ new Map();
85
87
  function getAutoMemoryRoot(projectRoot) {
86
88
  const useLocalMemory = process.env["QWEN_CODE_MEMORY_LOCAL"] === "1";
87
89
  const memoryBaseDir = useLocalMemory ? "" : getMemoryBaseDir();
@@ -106,6 +108,7 @@ function getAutoMemoryRoot(projectRoot) {
106
108
  __name(getAutoMemoryRoot, "getAutoMemoryRoot");
107
109
  function clearAutoMemoryRootCache() {
108
110
  _autoMemoryRootCache.clear();
111
+ _teamAutoMemoryRootCache.clear();
109
112
  }
110
113
  __name(clearAutoMemoryRootCache, "clearAutoMemoryRootCache");
111
114
  function getAutoMemoryProjectStateDir(projectRoot) {
@@ -178,6 +181,79 @@ function isUserAutoMemPath(absolutePath) {
178
181
  return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
179
182
  }
180
183
  __name(isUserAutoMemPath, "isUserAutoMemPath");
184
+ function getTeamAutoMemoryRoot(projectRoot) {
185
+ const cached = _teamAutoMemoryRootCache.get(projectRoot);
186
+ if (cached !== void 0) return cached;
187
+ const root = findGitRoot(projectRoot) ?? path.resolve(projectRoot);
188
+ const result = path.join(root, QWEN_DIR, TEAM_AUTO_MEMORY_DIRNAME);
189
+ _teamAutoMemoryRootCache.set(projectRoot, result);
190
+ return result;
191
+ }
192
+ __name(getTeamAutoMemoryRoot, "getTeamAutoMemoryRoot");
193
+ function getTeamAutoMemoryIndexPath(projectRoot) {
194
+ return path.join(
195
+ getTeamAutoMemoryRoot(projectRoot),
196
+ AUTO_MEMORY_INDEX_FILENAME
197
+ );
198
+ }
199
+ __name(getTeamAutoMemoryIndexPath, "getTeamAutoMemoryIndexPath");
200
+ function isTeamAutoMemPath(absolutePath, projectRoot) {
201
+ const normalizedPath = path.normalize(realpathNearestExisting(absolutePath));
202
+ const memRoot = path.normalize(
203
+ realpathNearestExisting(getTeamAutoMemoryRoot(projectRoot))
204
+ );
205
+ const rel = path.relative(memRoot, normalizedPath);
206
+ return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
207
+ }
208
+ __name(isTeamAutoMemPath, "isTeamAutoMemPath");
209
+ function resolveLeafSymlink(inputPath) {
210
+ const maxHops = 40;
211
+ let current = path.resolve(inputPath);
212
+ for (let i = 0; i < maxHops; i++) {
213
+ let stat;
214
+ try {
215
+ stat = fs.lstatSync(current);
216
+ } catch {
217
+ return current;
218
+ }
219
+ if (!stat.isSymbolicLink()) {
220
+ return current;
221
+ }
222
+ const target = fs.readlinkSync(current);
223
+ if (path.isAbsolute(target)) {
224
+ current = target;
225
+ } else {
226
+ let parent;
227
+ try {
228
+ parent = fs.realpathSync(path.dirname(current));
229
+ } catch {
230
+ parent = path.dirname(current);
231
+ }
232
+ current = path.resolve(parent, target);
233
+ }
234
+ }
235
+ return current;
236
+ }
237
+ __name(resolveLeafSymlink, "resolveLeafSymlink");
238
+ function realpathNearestExisting(inputPath) {
239
+ const resolved = resolveLeafSymlink(inputPath);
240
+ const missingSegments = [];
241
+ let current = resolved;
242
+ while (!fs.existsSync(current)) {
243
+ const parent = path.dirname(current);
244
+ if (parent === current) {
245
+ return resolved;
246
+ }
247
+ missingSegments.unshift(path.basename(current));
248
+ current = parent;
249
+ }
250
+ try {
251
+ return path.join(fs.realpathSync(current), ...missingSegments);
252
+ } catch {
253
+ return resolved;
254
+ }
255
+ }
256
+ __name(realpathNearestExisting, "realpathNearestExisting");
181
257
  function isAnyAutoMemPath(absolutePath, projectRoot) {
182
258
  return isAutoMemPath(absolutePath, projectRoot) || isUserAutoMemPath(absolutePath);
183
259
  }
@@ -190,6 +266,7 @@ export {
190
266
  AUTO_MEMORY_EXTRACT_CURSOR_FILENAME,
191
267
  AUTO_MEMORY_CONSOLIDATION_LOCK_FILENAME,
192
268
  USER_AUTO_MEMORY_DIRNAME,
269
+ TEAM_AUTO_MEMORY_DIRNAME,
193
270
  getMemoryBaseDir,
194
271
  getAutoMemoryRoot,
195
272
  clearAutoMemoryRootCache,
@@ -206,6 +283,9 @@ export {
206
283
  getUserAutoMemoryIndexPath,
207
284
  getUserAutoMemoryTopicPath,
208
285
  isUserAutoMemPath,
286
+ getTeamAutoMemoryRoot,
287
+ getTeamAutoMemoryIndexPath,
288
+ isTeamAutoMemPath,
209
289
  isAnyAutoMemPath
210
290
  };
211
291
  /**