@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
@@ -0,0 +1,481 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ require_undici
5
+ } from "./chunk-M2U5NM24.js";
6
+ import {
7
+ writeStderrLine
8
+ } from "./chunk-Y6Z2O3WR.js";
9
+ import {
10
+ createDebugLogger
11
+ } from "./chunk-UX4SGCGN.js";
12
+ import {
13
+ init_esbuild_shims
14
+ } from "./chunk-A4BMJM77.js";
15
+ import {
16
+ __name,
17
+ __toESM
18
+ } from "./chunk-J2S4EL5Y.js";
19
+
20
+ // packages/cli/src/services/setup-github.ts
21
+ init_esbuild_shims();
22
+ var import_undici2 = __toESM(require_undici(), 1);
23
+ import { promises as fsp } from "node:fs";
24
+ import * as path from "node:path";
25
+
26
+ // packages/cli/src/utils/gitUtils.ts
27
+ init_esbuild_shims();
28
+ var import_undici = __toESM(require_undici(), 1);
29
+ import * as childProcess from "node:child_process";
30
+ var debugLogger = createDebugLogger("GIT");
31
+ async function runGit(args, opts = {}) {
32
+ return await new Promise((resolve2, reject) => {
33
+ childProcess.execFile(
34
+ "git",
35
+ args,
36
+ {
37
+ encoding: "utf-8",
38
+ ...opts.cwd ? { cwd: opts.cwd } : {}
39
+ },
40
+ (err, stdout) => {
41
+ if (err) {
42
+ reject(err);
43
+ return;
44
+ }
45
+ resolve2(String(stdout ?? "").trim());
46
+ }
47
+ );
48
+ });
49
+ }
50
+ __name(runGit, "runGit");
51
+ var isGitHubRepositoryAsync = /* @__PURE__ */ __name(async (opts = {}) => {
52
+ try {
53
+ const remotes = await runGit(["remote", "-v"], opts);
54
+ return remotes.split("\n").some((line) => {
55
+ const remoteUrl = line.trim().split(/\s+/)[1];
56
+ return remoteUrl ? isGitHubRemoteUrl(remoteUrl) : false;
57
+ });
58
+ } catch (_error) {
59
+ debugLogger.debug(`Failed to get git remote:`, _error);
60
+ return false;
61
+ }
62
+ }, "isGitHubRepositoryAsync");
63
+ function isGitHubRemoteUrl(remoteUrl) {
64
+ if (remoteUrl.startsWith("git@github.com:")) {
65
+ return true;
66
+ }
67
+ if (remoteUrl.startsWith("git@")) {
68
+ return false;
69
+ }
70
+ try {
71
+ return new URL(remoteUrl).hostname === "github.com";
72
+ } catch {
73
+ return false;
74
+ }
75
+ }
76
+ __name(isGitHubRemoteUrl, "isGitHubRemoteUrl");
77
+ var getGitRepoRootAsync = /* @__PURE__ */ __name(async (opts = {}) => {
78
+ const gitRepoRoot = await runGit(["rev-parse", "--show-toplevel"], opts);
79
+ if (!gitRepoRoot) {
80
+ throw new Error(`Git repo returned empty value`);
81
+ }
82
+ return gitRepoRoot;
83
+ }, "getGitRepoRootAsync");
84
+ var getLatestGitHubRelease = /* @__PURE__ */ __name(async (proxy) => {
85
+ try {
86
+ const controller = new AbortController();
87
+ const endpoint = `https://api.github.com/repos/QwenLM/qwen-code-action/releases/latest`;
88
+ const response = await fetch(endpoint, {
89
+ method: "GET",
90
+ headers: {
91
+ Accept: "application/vnd.github+json",
92
+ "Content-Type": "application/json",
93
+ "X-GitHub-Api-Version": "2022-11-28"
94
+ },
95
+ dispatcher: proxy ? new import_undici.ProxyAgent(proxy) : void 0,
96
+ signal: AbortSignal.any([AbortSignal.timeout(3e4), controller.signal])
97
+ });
98
+ if (!response.ok) {
99
+ throw new Error(
100
+ `Invalid response code: ${response.status} - ${response.statusText}`
101
+ );
102
+ }
103
+ const releaseTag = (await response.json()).tag_name;
104
+ if (!releaseTag) {
105
+ throw new Error(`Response did not include tag_name field`);
106
+ }
107
+ return releaseTag;
108
+ } catch (_error) {
109
+ debugLogger.debug(
110
+ `Failed to determine latest qwen-code-action release:`,
111
+ _error
112
+ );
113
+ throw new Error(
114
+ `Unable to determine the latest qwen-code-action release on GitHub.`
115
+ );
116
+ }
117
+ }, "getLatestGitHubRelease");
118
+ async function getGitHubRepoInfoAsync(opts = {}) {
119
+ return parseGitHubRepoInfo(
120
+ await runGit(["remote", "get-url", "origin"], opts)
121
+ );
122
+ }
123
+ __name(getGitHubRepoInfoAsync, "getGitHubRepoInfoAsync");
124
+ function parseGitHubRepoInfo(remoteUrl) {
125
+ let urlToParse = remoteUrl;
126
+ if (remoteUrl.startsWith("git@github.com:")) {
127
+ urlToParse = remoteUrl.replace("git@github.com:", "");
128
+ } else if (remoteUrl.startsWith("git@")) {
129
+ throw new Error(
130
+ `Owner & repo could not be extracted from remote URL: ${remoteUrl}`
131
+ );
132
+ }
133
+ let parsedUrl;
134
+ try {
135
+ parsedUrl = new URL(urlToParse, "https://github.com");
136
+ } catch {
137
+ throw new Error(
138
+ `Owner & repo could not be extracted from remote URL: ${remoteUrl}`
139
+ );
140
+ }
141
+ if (parsedUrl.hostname !== "github.com") {
142
+ throw new Error(
143
+ `Owner & repo could not be extracted from remote URL: ${remoteUrl}`
144
+ );
145
+ }
146
+ const parts = parsedUrl.pathname.split("/").filter((part) => part !== "");
147
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
148
+ throw new Error(
149
+ `Owner & repo could not be extracted from remote URL: ${remoteUrl}`
150
+ );
151
+ }
152
+ return { owner: parts[0], repo: parts[1].replace(/\.git$/, "") };
153
+ }
154
+ __name(parseGitHubRepoInfo, "parseGitHubRepoInfo");
155
+
156
+ // packages/cli/src/services/setup-github.ts
157
+ var debugLogger2 = createDebugLogger("SETUP_GITHUB");
158
+ var GITHUB_WORKFLOW_PATHS = [
159
+ "qwen-dispatch/qwen-dispatch.yml",
160
+ "qwen-assistant/qwen-invoke.yml",
161
+ "issue-triage/qwen-triage.yml",
162
+ "issue-triage/qwen-scheduled-triage.yml",
163
+ "pr-review/qwen-review.yml"
164
+ ];
165
+ var GITIGNORE_ENTRIES = [".qwen/", "gha-creds-*.json"];
166
+ var MAX_WORKFLOW_DOWNLOAD_BYTES = 5 * 1024 * 1024;
167
+ var SetupGithubError = class extends Error {
168
+ static {
169
+ __name(this, "SetupGithubError");
170
+ }
171
+ code;
172
+ status;
173
+ partial;
174
+ partialResult;
175
+ constructor(code, message, status, partialResult) {
176
+ super(message);
177
+ this.name = "SetupGithubError";
178
+ this.code = code;
179
+ this.status = status;
180
+ this.partial = partialResult !== void 0;
181
+ this.partialResult = partialResult;
182
+ }
183
+ };
184
+ var nodeFileOps = {
185
+ assertCanWrite() {
186
+ },
187
+ async ensureWorkflowDirectory(gitRepoRoot) {
188
+ await fsp.mkdir(path.join(gitRepoRoot, ".github", "workflows"), {
189
+ recursive: true
190
+ });
191
+ },
192
+ async writeTextFile(gitRepoRoot, relativePath, content) {
193
+ const target = path.join(gitRepoRoot, relativePath);
194
+ await fsp.writeFile(target, content, { mode: 420 });
195
+ return { sizeBytes: Buffer.byteLength(content, "utf8") };
196
+ },
197
+ async readTextFile(gitRepoRoot, relativePath) {
198
+ try {
199
+ return await fsp.readFile(path.join(gitRepoRoot, relativePath), "utf8");
200
+ } catch (error) {
201
+ if (error.code === "ENOENT") {
202
+ return void 0;
203
+ }
204
+ throw error;
205
+ }
206
+ }
207
+ };
208
+ async function setupGithub(options = {}) {
209
+ const cwd = options.cwd ?? process.cwd();
210
+ const fileOps = options.fileOps ?? nodeFileOps;
211
+ if (!await isGitHubRepositoryAsync({ cwd })) {
212
+ throw new SetupGithubError(
213
+ "github_repository_not_found",
214
+ "Unable to determine the GitHub repository. /setup-github must be run from a git repository.",
215
+ 400
216
+ );
217
+ }
218
+ let gitRepoRoot;
219
+ try {
220
+ gitRepoRoot = await getGitRepoRootAsync({ cwd });
221
+ } catch (error) {
222
+ debugLogger2.debug("Failed to get git repo root:", error);
223
+ throw new SetupGithubError(
224
+ "github_repository_not_found",
225
+ "Unable to determine the GitHub repository. /setup-github must be run from a git repository.",
226
+ 400
227
+ );
228
+ }
229
+ if (options.workspaceRoot) {
230
+ const [gitRootReal, workspaceReal] = await Promise.all([
231
+ realpathOrResolve(gitRepoRoot),
232
+ realpathOrResolve(options.workspaceRoot)
233
+ ]);
234
+ if (gitRootReal !== workspaceReal) {
235
+ throw new SetupGithubError(
236
+ "github_git_root_mismatch",
237
+ "The Git repository root must match the daemon workspace root.",
238
+ 400
239
+ );
240
+ }
241
+ }
242
+ fileOps.assertCanWrite?.();
243
+ let releaseTag;
244
+ try {
245
+ releaseTag = await getLatestGitHubRelease(options.proxy);
246
+ } catch (error) {
247
+ writeStderrLine(
248
+ `qwen setup-github: failed to determine latest qwen-code-action release: ${error instanceof Error ? error.message : String(error)}`
249
+ );
250
+ debugLogger2.debug(
251
+ "Failed to determine latest qwen-code-action release:",
252
+ error
253
+ );
254
+ throw new SetupGithubError(
255
+ "github_release_lookup_failed",
256
+ "Unable to determine the latest qwen-code-action release on GitHub.",
257
+ 502
258
+ );
259
+ }
260
+ const readmeUrl = `https://github.com/QwenLM/qwen-code-action/blob/${releaseTag}/README.md#quick-start`;
261
+ const secretsUrl = await resolveSecretsUrl(cwd);
262
+ const downloads = await downloadWorkflows({
263
+ releaseTag,
264
+ proxy: options.proxy,
265
+ abortSignal: options.abortSignal,
266
+ fetchImpl: options.fetchImpl ?? fetch
267
+ });
268
+ const result = {
269
+ kind: "github_setup",
270
+ workspaceCwd: options.workspaceRoot ?? gitRepoRoot,
271
+ gitRepoRoot,
272
+ releaseTag,
273
+ readmeUrl,
274
+ ...secretsUrl ? { secretsUrl } : {},
275
+ workflows: [],
276
+ gitignore: { path: ".gitignore", status: "skipped" },
277
+ warnings: []
278
+ };
279
+ result.gitignore = await updateGitignore(gitRepoRoot, fileOps);
280
+ if (result.gitignore.status === "failed") {
281
+ result.warnings.push("Failed to update .gitignore.");
282
+ }
283
+ try {
284
+ await fileOps.ensureWorkflowDirectory(gitRepoRoot);
285
+ for (const workflow of downloads) {
286
+ const relativePath = path.posix.join(
287
+ ".github",
288
+ "workflows",
289
+ path.posix.basename(workflow.sourcePath)
290
+ );
291
+ try {
292
+ const write = await fileOps.writeTextFile(
293
+ gitRepoRoot,
294
+ relativePath,
295
+ workflow.content
296
+ );
297
+ result.workflows.push({
298
+ sourcePath: workflow.sourcePath,
299
+ path: relativePath,
300
+ status: "written",
301
+ sizeBytes: write.sizeBytes
302
+ });
303
+ } catch (error) {
304
+ result.partial = true;
305
+ result.workflows.push({
306
+ sourcePath: workflow.sourcePath,
307
+ path: relativePath,
308
+ status: "failed",
309
+ error: error instanceof Error ? error.message : String(error)
310
+ });
311
+ throw new SetupGithubError(
312
+ "github_workflow_write_failed",
313
+ `Unable to write ${relativePath}.`,
314
+ 500,
315
+ result
316
+ );
317
+ }
318
+ }
319
+ } catch (error) {
320
+ if (error instanceof SetupGithubError) throw error;
321
+ throw new SetupGithubError(
322
+ "github_workflow_write_failed",
323
+ "Unable to create .github/workflows.",
324
+ 500,
325
+ result
326
+ );
327
+ }
328
+ return result;
329
+ }
330
+ __name(setupGithub, "setupGithub");
331
+ async function updateGitignore(gitRepoRoot, fileOps = nodeFileOps) {
332
+ try {
333
+ const existingContent = await fileOps.readTextFile(
334
+ gitRepoRoot,
335
+ ".gitignore"
336
+ );
337
+ if (existingContent === void 0) {
338
+ const content = GITIGNORE_ENTRIES.join("\n") + "\n";
339
+ await fileOps.writeTextFile(gitRepoRoot, ".gitignore", content);
340
+ return {
341
+ path: ".gitignore",
342
+ status: "created",
343
+ added: [...GITIGNORE_ENTRIES]
344
+ };
345
+ }
346
+ const missingEntries = GITIGNORE_ENTRIES.filter(
347
+ (entry) => !existingContent.split(/\r?\n/).some((line) => line.split("#")[0].trim() === entry)
348
+ );
349
+ if (missingEntries.length === 0) {
350
+ return { path: ".gitignore", status: "unchanged" };
351
+ }
352
+ const nextContent = existingContent + "\n" + missingEntries.join("\n") + "\n";
353
+ await fileOps.writeTextFile(gitRepoRoot, ".gitignore", nextContent);
354
+ return {
355
+ path: ".gitignore",
356
+ status: "updated",
357
+ added: missingEntries
358
+ };
359
+ } catch (error) {
360
+ debugLogger2.debug("Failed to update .gitignore:", error);
361
+ return {
362
+ path: ".gitignore",
363
+ status: "failed",
364
+ error: error instanceof Error ? error.message : String(error)
365
+ };
366
+ }
367
+ }
368
+ __name(updateGitignore, "updateGitignore");
369
+ async function downloadWorkflows(options) {
370
+ const internalAbort = new AbortController();
371
+ try {
372
+ const dispatcher = options.proxy ? new import_undici2.ProxyAgent(options.proxy) : void 0;
373
+ return await Promise.all(
374
+ GITHUB_WORKFLOW_PATHS.map(async (workflow) => {
375
+ const endpoint = `https://raw.githubusercontent.com/QwenLM/qwen-code-action/refs/tags/${options.releaseTag}/examples/workflows/${workflow}`;
376
+ const response = await options.fetchImpl(endpoint, {
377
+ method: "GET",
378
+ dispatcher,
379
+ signal: AbortSignal.any([
380
+ AbortSignal.timeout(3e4),
381
+ internalAbort.signal,
382
+ ...options.abortSignal ? [options.abortSignal] : []
383
+ ])
384
+ });
385
+ if (!response.ok) {
386
+ throw new Error(
387
+ `Invalid response code downloading ${endpoint}: ${response.status} - ${response.statusText}`
388
+ );
389
+ }
390
+ return {
391
+ sourcePath: workflow,
392
+ content: await readResponseTextWithLimit(response, workflow)
393
+ };
394
+ })
395
+ );
396
+ } catch (error) {
397
+ internalAbort.abort();
398
+ const message = error instanceof Error ? error.message : String(error);
399
+ debugLogger2.debug("Failed to download qwen-code-action workflows:", error);
400
+ throw new SetupGithubError(
401
+ "github_workflow_download_failed",
402
+ `Unable to download qwen-code-action workflows from GitHub. ${message}`,
403
+ 502
404
+ );
405
+ }
406
+ }
407
+ __name(downloadWorkflows, "downloadWorkflows");
408
+ async function readResponseTextWithLimit(response, sourcePath) {
409
+ const contentLength = response.headers.get("content-length");
410
+ if (contentLength !== null) {
411
+ const parsedLength = Number(contentLength);
412
+ if (Number.isFinite(parsedLength) && parsedLength > MAX_WORKFLOW_DOWNLOAD_BYTES) {
413
+ throw new Error(
414
+ `${sourcePath} exceeds download limit of ${MAX_WORKFLOW_DOWNLOAD_BYTES} bytes`
415
+ );
416
+ }
417
+ }
418
+ if (!response.body) return "";
419
+ const reader = response.body.getReader();
420
+ const chunks = [];
421
+ let totalBytes = 0;
422
+ try {
423
+ while (true) {
424
+ const { done, value } = await reader.read();
425
+ if (done) break;
426
+ if (!value) continue;
427
+ totalBytes += value.byteLength;
428
+ if (totalBytes > MAX_WORKFLOW_DOWNLOAD_BYTES) {
429
+ await reader.cancel().catch(() => {
430
+ });
431
+ throw new Error(
432
+ `${sourcePath} exceeds download limit of ${MAX_WORKFLOW_DOWNLOAD_BYTES} bytes`
433
+ );
434
+ }
435
+ chunks.push(value);
436
+ }
437
+ } finally {
438
+ reader.releaseLock();
439
+ }
440
+ const body = new Uint8Array(totalBytes);
441
+ let offset = 0;
442
+ for (const chunk of chunks) {
443
+ body.set(chunk, offset);
444
+ offset += chunk.byteLength;
445
+ }
446
+ return new TextDecoder().decode(body);
447
+ }
448
+ __name(readResponseTextWithLimit, "readResponseTextWithLimit");
449
+ async function resolveSecretsUrl(cwd) {
450
+ try {
451
+ const repoInfo = await getGitHubRepoInfoAsync({ cwd });
452
+ return `https://github.com/${repoInfo.owner}/${repoInfo.repo}/settings/secrets/actions`;
453
+ } catch {
454
+ return void 0;
455
+ }
456
+ }
457
+ __name(resolveSecretsUrl, "resolveSecretsUrl");
458
+ async function realpathOrResolve(input) {
459
+ try {
460
+ return await fsp.realpath(input);
461
+ } catch {
462
+ return path.resolve(input);
463
+ }
464
+ }
465
+ __name(realpathOrResolve, "realpathOrResolve");
466
+
467
+ export {
468
+ GITHUB_WORKFLOW_PATHS,
469
+ SetupGithubError,
470
+ setupGithub
471
+ };
472
+ /**
473
+ * @license
474
+ * Copyright 2025 Google LLC
475
+ * SPDX-License-Identifier: Apache-2.0
476
+ */
477
+ /**
478
+ * @license
479
+ * Copyright 2025 Qwen Team
480
+ * SPDX-License-Identifier: Apache-2.0
481
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-C4K3FEQ2.js";
5
+ } from "./chunk-UX4SGCGN.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -5,11 +5,11 @@ import {
5
5
  } from "./chunk-OMX7CUOE.js";
6
6
  import {
7
7
  atomicWriteJSON
8
- } from "./chunk-3UALQ56H.js";
8
+ } from "./chunk-3227DZO4.js";
9
9
  import {
10
10
  Storage,
11
11
  getProjectHash
12
- } from "./chunk-C4K3FEQ2.js";
12
+ } from "./chunk-UX4SGCGN.js";
13
13
  import {
14
14
  init_esbuild_shims
15
15
  } from "./chunk-A4BMJM77.js";
@@ -4,83 +4,9 @@ import {
4
4
  init_esbuild_shims
5
5
  } from "./chunk-A4BMJM77.js";
6
6
  import {
7
- __commonJS,
8
7
  __name
9
8
  } from "./chunk-J2S4EL5Y.js";
10
9
 
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
10
  // packages/cli/src/config/migration/versions/v1-to-v2-shared.ts
85
11
  init_esbuild_shims();
86
12
  var V1_TO_V2_MIGRATION_MAP = {
@@ -246,7 +172,16 @@ var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
246
172
  "QWEN_CODE_MCP_APPROVALS_PATH",
247
173
  "QWEN_CODE_TRUSTED_FOLDERS_PATH",
248
174
  ENV_CORRUPTED_PATH,
249
- ENV_WAS_RECOVERED
175
+ ENV_WAS_RECOVERED,
176
+ // QWEN_TLS_INSECURE (and NODE_TLS_REJECT_UNAUTHORIZED, which it mirrors)
177
+ // disable TLS certificate verification for all outbound API connections. A
178
+ // project `.env` must never enable either — that would let an untrusted repo
179
+ // silently turn off MITM protection. Opt-in stays with the user via the
180
+ // `--insecure` flag, the shell environment, or a home `.env`. The initial
181
+ // `.env` load only consults this list, so both keys must be here (not just
182
+ // RELOAD_EXCLUDED_KEYS, which only applies on reload).
183
+ "QWEN_TLS_INSECURE",
184
+ "NODE_TLS_REJECT_UNAUTHORIZED"
250
185
  ];
251
186
  var HOME_ENV_BOOTSTRAP_KEYS = [
252
187
  "QWEN_HOME",
@@ -308,35 +243,6 @@ function getSystemDefaultsPath() {
308
243
  }
309
244
  __name(getSystemDefaultsPath, "getSystemDefaultsPath");
310
245
 
311
- // packages/cli/src/config/path-comparison.ts
312
- init_esbuild_shims();
313
- import * as fs from "node:fs";
314
- import * as path2 from "node:path";
315
- function isWithinRoot(childPath, parentPath) {
316
- const relativePath = path2.relative(parentPath, childPath);
317
- return relativePath === "" || !relativePath.startsWith(`..${path2.sep}`) && relativePath !== ".." && !path2.isAbsolute(relativePath);
318
- }
319
- __name(isWithinRoot, "isWithinRoot");
320
- function getPathComparisonVariants(rawPath) {
321
- const variants = /* @__PURE__ */ new Set([path2.normalize(path2.resolve(rawPath))]);
322
- try {
323
- variants.add(path2.normalize(fs.realpathSync(rawPath)));
324
- } catch {
325
- }
326
- return variants;
327
- }
328
- __name(getPathComparisonVariants, "getPathComparisonVariants");
329
- function arePathsEquivalent(left, right) {
330
- const rightVariants = getPathComparisonVariants(right);
331
- for (const leftVariant of getPathComparisonVariants(left)) {
332
- if (rightVariants.has(leftVariant)) {
333
- return true;
334
- }
335
- }
336
- return false;
337
- }
338
- __name(arePathsEquivalent, "arePathsEquivalent");
339
-
340
246
  // packages/cli/src/utils/envVarResolver.ts
341
247
  init_esbuild_shims();
342
248
  function resolveEnvVarsInString(value, customEnv) {
@@ -398,7 +304,6 @@ function resolveEnvVarsInObjectInternal(obj, visited, customEnv) {
398
304
  __name(resolveEnvVarsInObjectInternal, "resolveEnvVarsInObjectInternal");
399
305
 
400
306
  export {
401
- require_strip_json_comments,
402
307
  V1_TO_V2_MIGRATION_MAP,
403
308
  V2_CONTAINER_KEYS,
404
309
  V1_TO_V2_PRESERVE_DISABLE_MAP,
@@ -414,9 +319,6 @@ export {
414
319
  getGlobalQwenDirLite,
415
320
  getSystemSettingsPath,
416
321
  getSystemDefaultsPath,
417
- isWithinRoot,
418
- getPathComparisonVariants,
419
- arePathsEquivalent,
420
322
  resolveEnvVarsInObject
421
323
  };
422
324
  /**