@qwen-code/qwen-code 0.19.3 → 0.19.4

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 (305) hide show
  1. package/bundled/loop/SKILL.md +22 -3
  2. package/bundled/loop/SKILL.test.ts +20 -0
  3. package/bundled/loop/autonomous-loop.test.ts +59 -0
  4. package/bundled/loop/autonomous-loop.ts +102 -0
  5. package/bundled/loop/loop-task-file.test.ts +1064 -0
  6. package/bundled/loop/loop-task-file.ts +404 -0
  7. package/bundled/loop/loop-tick-resolver.test.ts +906 -0
  8. package/bundled/loop/loop-tick-resolver.ts +416 -0
  9. package/bundled/qc-helper/SKILL.md +12 -5
  10. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  11. package/bundled/qc-helper/docs/configuration/settings.md +40 -26
  12. package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
  13. package/bundled/qc-helper/docs/features/auto-mode.md +40 -0
  14. package/bundled/qc-helper/docs/features/channels/overview.md +81 -18
  15. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  16. package/bundled/qc-helper/docs/features/code-review.md +17 -61
  17. package/bundled/qc-helper/docs/features/commands.md +6 -6
  18. package/bundled/qc-helper/docs/features/hooks.md +6 -1
  19. package/bundled/qc-helper/docs/features/mcp.md +3 -1
  20. package/bundled/qc-helper/docs/features/memory.md +1 -1
  21. package/bundled/qc-helper/docs/features/scheduled-tasks.md +10 -0
  22. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  23. package/bundled/qc-helper/docs/ide-integration/ide-integration.md +4 -4
  24. package/bundled/qc-helper/docs/qwen-serve.md +19 -0
  25. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
  26. package/bundled/review/DESIGN.md +21 -26
  27. package/bundled/review/SKILL.md +45 -129
  28. package/chunks/MaxSizedBox-ERTNFI22.js +68 -0
  29. package/chunks/{StandaloneSessionPicker-Z52JTYST.js → StandaloneSessionPicker-Y5NGRLRY.js} +48 -42
  30. package/chunks/{acpAgent-7RZUOWOM.js → acpAgent-UMN6OYTR.js} +1319 -361
  31. package/chunks/{agent-4FG7WTHJ.js → agent-56DZU4ZU.js} +30 -25
  32. package/chunks/agent-headless-SR7N2IJG.js +61 -0
  33. package/chunks/{anthropicContentGenerator-PFITVL7Y.js → anthropicContentGenerator-5OZFO6WQ.js} +11 -8
  34. package/chunks/{artifact-tool-D2X7G3C3.js → artifact-tool-JVZMHA4B.js} +3 -3
  35. package/chunks/{askUserQuestion-UGETICJQ.js → askUserQuestion-CMJZ2F3D.js} +2 -2
  36. package/chunks/bridge-AUHNFOUS.js +72 -0
  37. package/chunks/{ca-IUFWESZL.js → ca-RYOETBUW.js} +9 -9
  38. package/chunks/channel-worker-supervisor-A74FV522.js +308 -0
  39. package/chunks/{chunk-T4T2FNV4.js → chunk-2X2JUE47.js} +2 -2
  40. package/chunks/{chunk-BX5YO7UW.js → chunk-4VZH35PN.js} +540 -370
  41. package/chunks/{chunk-M2U5NM24.js → chunk-54YZOP7P.js} +309 -72
  42. package/chunks/chunk-5P5XGNYH.js +93 -0
  43. package/chunks/{chunk-QWFNTRH4.js → chunk-6AQR7732.js} +1 -1
  44. package/chunks/{chunk-HZT4UCFB.js → chunk-6CIIP6OE.js} +4 -4
  45. package/chunks/{chunk-ADCIHOQZ.js → chunk-6TLY5W3B.js} +16 -8
  46. package/chunks/{chunk-BXSHL2SF.js → chunk-73H73ASU.js} +1 -1
  47. package/chunks/{chunk-3TV3HUWZ.js → chunk-75X2VLSH.js} +60 -30
  48. package/chunks/{chunk-6V4NZFUS.js → chunk-7KPI4LAI.js} +5 -5
  49. package/chunks/{chunk-PDE7CSDS.js → chunk-7VPC7D7O.js} +2 -2
  50. package/chunks/chunk-AHNXYU4O.js +24 -0
  51. package/chunks/{chunk-UX4SGCGN.js → chunk-AVQDCKNF.js} +96 -22
  52. package/chunks/{chunk-HYCC3XM3.js → chunk-B236XPGF.js} +1 -1
  53. package/chunks/{chunk-N4EJFBN5.js → chunk-B7KGXIPZ.js} +419 -262
  54. package/chunks/{chunk-YAINVQ3Q.js → chunk-BFG6OZN7.js} +17392 -16335
  55. package/chunks/{chunk-5DWXLGOM.js → chunk-BJBWRCSK.js} +1 -1
  56. package/chunks/{chunk-BTLJ2MF5.js → chunk-BNJLLAQ7.js} +3 -3
  57. package/chunks/{chunk-UYT3MWEB.js → chunk-BQNJBEUA.js} +16 -2
  58. package/chunks/{chunk-SKQZZVAV.js → chunk-BZHLWC6T.js} +2 -2
  59. package/chunks/{chunk-HPZTOP4I.js → chunk-C2IHHGBZ.js} +131 -21
  60. package/chunks/chunk-CG7SVARK.js +367 -0
  61. package/chunks/{chunk-CNLEDYE3.js → chunk-CS5XYDBO.js} +5 -5
  62. package/chunks/{chunk-O75BHFQW.js → chunk-CUGEBAKG.js} +2 -2
  63. package/chunks/{chunk-U3KSMM7G.js → chunk-D5KISTLW.js} +339 -383
  64. package/chunks/{chunk-STUWFKGD.js → chunk-DQ74W65K.js} +431 -535
  65. package/chunks/{chunk-VVLOGDB6.js → chunk-DX3TKXNT.js} +2 -2
  66. package/chunks/chunk-E5A7LHNN.js +51 -0
  67. package/chunks/{chunk-3PJXIDKI.js → chunk-E6US47KI.js} +3 -27
  68. package/chunks/chunk-EDAGQADF.js +21 -0
  69. package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
  70. package/chunks/{chunk-4QK3O43S.js → chunk-FNLXLI4I.js} +4 -4
  71. package/chunks/{chunk-I2LYBGNI.js → chunk-FYKX6XOT.js} +1 -1
  72. package/chunks/{chunk-QLDPRILK.js → chunk-G7OQ3RFJ.js} +3 -3
  73. package/chunks/{chunk-R2BXK7SX.js → chunk-GHOTR7HL.js} +6 -1
  74. package/chunks/{chunk-L7OKCI7T.js → chunk-GICCHL2Q.js} +15 -1
  75. package/chunks/{chunk-KMGMKW5Q.js → chunk-GLPV75ES.js} +9 -3
  76. package/chunks/{chunk-LD2XBG6Z.js → chunk-GO6LNQXT.js} +1 -39
  77. package/chunks/chunk-HI55Z6PR.js +3523 -0
  78. package/chunks/{chunk-QNKBEJO2.js → chunk-HJDF3ZVU.js} +2776 -1289
  79. package/chunks/{chunk-JJXWTVSK.js → chunk-HRZB5CSC.js} +34 -1
  80. package/chunks/{chunk-I4H7PRWQ.js → chunk-HTWHAN44.js} +1 -1
  81. package/chunks/{chunk-EJYJYJZ2.js → chunk-IRJWHZWU.js} +3 -70
  82. package/chunks/{chunk-CKQA6AWF.js → chunk-J3F7X3LW.js} +1 -1
  83. package/chunks/{chunk-QI7GOGJR.js → chunk-KKQWC6WS.js} +1 -1
  84. package/chunks/{chunk-VBZ452JT.js → chunk-KVPFPC4J.js} +494 -114
  85. package/chunks/{chunk-NDOC6M5S.js → chunk-L7QPM2YD.js} +2 -2
  86. package/chunks/{chunk-SLNKLLEO.js → chunk-L7VH7HQA.js} +12 -8
  87. package/chunks/{chunk-BVSVIN45.js → chunk-LKWAVAB5.js} +3 -3
  88. package/chunks/{chunk-ZP6UKOPB.js → chunk-LWGLBVWA.js} +1 -1
  89. package/chunks/{chunk-SBBN4BWR.js → chunk-MEQWZGK5.js} +1 -1
  90. package/chunks/{chunk-FKAVULLM.js → chunk-MKHC4BYZ.js} +58 -10
  91. package/chunks/{chunk-UFLGERMB.js → chunk-MNDTD5E5.js} +178 -124
  92. package/chunks/{chunk-RD6YJJJ6.js → chunk-MOUXUCXQ.js} +1 -1
  93. package/chunks/{chunk-EDMZZFDU.js → chunk-MVZXZWGT.js} +905 -795
  94. package/chunks/chunk-MX2YXRER.js +44 -0
  95. package/chunks/{chunk-JVHEVCAU.js → chunk-ND25GXEU.js} +23 -6
  96. package/chunks/chunk-NIOPRZNN.js +27 -0
  97. package/chunks/{chunk-DDMOU62Q.js → chunk-NPQWQYU6.js} +1 -1
  98. package/chunks/{chunk-PR32FRT6.js → chunk-OAFUMTWW.js} +3 -3
  99. package/chunks/chunk-OJCECIJA.js +238 -0
  100. package/chunks/{chunk-GGBIN5K7.js → chunk-PIYV6COW.js} +1 -1
  101. package/chunks/{chunk-CF6BB3LT.js → chunk-PPFWEV7G.js} +10 -1
  102. package/chunks/{chunk-4LUZAKMK.js → chunk-Q7VHIRDD.js} +1 -1
  103. package/chunks/{chunk-ODLIHNOY.js → chunk-QAFQLTXG.js} +1 -1
  104. package/chunks/{chunk-Y6YMRS3U.js → chunk-QMIND2AS.js} +3 -3
  105. package/chunks/{chunk-XJYUPHRC.js → chunk-QOMAHFYI.js} +3 -3
  106. package/chunks/{chunk-J37FGIOA.js → chunk-QXPI7FEC.js} +38 -4
  107. package/chunks/chunk-RM3PGSGL.js +66 -0
  108. package/chunks/chunk-RNBYOUGV.js +42 -0
  109. package/chunks/chunk-S5EQPDTM.js +91 -0
  110. package/chunks/chunk-SEZC2725.js +36 -0
  111. package/chunks/{chunk-FNJ7BDPH.js → chunk-SFN4TEHY.js} +10 -7
  112. package/chunks/{chunk-O2VBQ3Y2.js → chunk-SJBIFVD2.js} +2 -2
  113. package/chunks/chunk-SYCJMSIJ.js +82 -0
  114. package/chunks/{chunk-JE5FVRPC.js → chunk-T22H4V4R.js} +48 -23
  115. package/chunks/{chunk-3227DZO4.js → chunk-T42ACHFI.js} +1 -1
  116. package/chunks/{chunk-UO5GVXQE.js → chunk-TENOUWY2.js} +3 -3
  117. package/chunks/{chunk-JOLIREYR.js → chunk-TOAUDIS7.js} +1 -1
  118. package/chunks/{chunk-J7FA27RO.js → chunk-TTFNVEO5.js} +3 -3
  119. package/chunks/{chunk-S7AKE7HL.js → chunk-UANCYOOQ.js} +63 -9
  120. package/chunks/{chunk-BUUQ5HPX.js → chunk-UQFP2FEF.js} +1 -1
  121. package/chunks/{chunk-R5OP2ATH.js → chunk-UQYOMM6J.js} +11 -11
  122. package/chunks/{chunk-J33ZR6OJ.js → chunk-UT5JU5DJ.js} +16 -16
  123. package/chunks/{chunk-QE6KJYLT.js → chunk-VKGG724L.js} +122 -25
  124. package/chunks/{chunk-SMXULRAN.js → chunk-VXGPYF7U.js} +1 -1
  125. package/chunks/{chunk-MNF6S5PR.js → chunk-W2ZOAX7F.js} +4 -4
  126. package/chunks/{chunk-GT2FGICD.js → chunk-W6X4FGWX.js} +1 -1
  127. package/chunks/{chunk-SMYQZVZ3.js → chunk-XCUFHOAD.js} +1 -1
  128. package/chunks/{chunk-K5XU6E4T.js → chunk-XKSCTXPK.js} +2 -2
  129. package/chunks/{chunk-FXKVLFFY.js → chunk-YBDZ63KI.js} +3 -3
  130. package/chunks/{chunk-BKXBARJZ.js → chunk-YPCPZSZB.js} +1 -1
  131. package/chunks/chunk-YTFBURQD.js +313 -0
  132. package/chunks/{chunk-NL4C3H6C.js → chunk-YXK4GPYO.js} +1 -1
  133. package/chunks/{chunk-F3ZYSEY6.js → chunk-ZJP5T7IA.js} +3 -3
  134. package/chunks/{chunk-RYLJU2DY.js → chunk-ZN5T4BHI.js} +1 -1
  135. package/chunks/{chunk-RRFZXMYP.js → chunk-ZXCVPMIK.js} +553 -138
  136. package/chunks/{computer-use-JGB36FDW.js → computer-use-VWN5HH6A.js} +33 -28
  137. package/chunks/contextCommand-DFFG5KDJ.js +66 -0
  138. package/chunks/{cron-create-SKEY55RG.js → cron-create-CSSWJ67I.js} +4 -4
  139. package/chunks/{cron-delete-I3NAT32Z.js → cron-delete-E56CFQ7A.js} +4 -4
  140. package/chunks/{cron-list-6XRRL6TH.js → cron-list-BKSINY6Y.js} +4 -4
  141. package/chunks/daemon-5T6IHWJV.js +8430 -0
  142. package/chunks/daemon-status-provider-V5UY7O7J.js +70 -0
  143. package/chunks/{de-EOW5PVHF.js → de-HB5NJXGB.js} +9 -9
  144. package/chunks/{dist-NHEYYB2B.js → dist-2HDL5SHQ.js} +2 -2
  145. package/chunks/{dist-663NZ6MI.js → dist-B7SSDVWT.js} +116 -11
  146. package/chunks/{dist-PQPZ5Q4N.js → dist-BL3SL665.js} +20 -9
  147. package/chunks/{dist-J37VXPLD.js → dist-TAVAGZU6.js} +40 -15
  148. package/chunks/{dist-LB6OGPVM.js → dist-XBOVZ3R5.js} +26 -5
  149. package/chunks/{earlyInputCapture-44RISVVJ.js → earlyInputCapture-VVYU4FDO.js} +31 -26
  150. package/chunks/{edit-NN6GM5DT.js → edit-F35PTMBA.js} +35 -29
  151. package/chunks/{en-HPWEJBTR.js → en-FZREZFPO.js} +30 -10
  152. package/chunks/{enter-worktree-PB3O2C7D.js → enter-worktree-3DIW7EGJ.js} +30 -25
  153. package/chunks/{enterPlanMode-YQFNNSUA.js → enterPlanMode-QNXT77KP.js} +40 -25
  154. package/chunks/{errors-LS7XU5DZ.js → errors-M53YG76R.js} +32 -27
  155. package/chunks/{exit-worktree-E2FTNSBK.js → exit-worktree-BSDWNWHZ.js} +30 -25
  156. package/chunks/{exitPlanMode-GLYK2BUB.js → exitPlanMode-EL7AY327.js} +54 -33
  157. package/chunks/{fast-path-WQ6M7LI7.js → fast-path-DUCSMUFW.js} +30 -13
  158. package/chunks/{fast-path-settings-OAGU3X5H.js → fast-path-settings-UQLRFDQP.js} +2 -2
  159. package/chunks/{fr-BN5NKSAC.js → fr-XY3NQFCM.js} +9 -9
  160. package/chunks/{gemini-2YFLVA2M.js → gemini-F3IERB37.js} +80 -67
  161. package/chunks/{geminiContentGenerator-XV6SV6CD.js → geminiContentGenerator-6OULAKFQ.js} +4 -4
  162. package/chunks/{glob-2H6CDDMK.js → glob-ZMLFTD4T.js} +30 -25
  163. package/chunks/{grep-VXIUXM3C.js → grep-H5X66EI7.js} +30 -25
  164. package/chunks/initializer-LEOT2OLH.js +66 -0
  165. package/chunks/{ja-7DEUB2TS.js → ja-J7YAG7SA.js} +9 -9
  166. package/chunks/{keychain-token-storage-YLMDLKXT.js → keychain-token-storage-GPAKRDKQ.js} +2 -2
  167. package/chunks/list-M3DKXML6.js +70 -0
  168. package/chunks/loadedSettingsAdapter-OKMQFGGG.js +65 -0
  169. package/chunks/{loop-wakeup-CITGGQHA.js → loop-wakeup-FPBAVVPR.js} +5 -5
  170. package/chunks/{ls-R5WP4BGZ.js → ls-UGWQXPTY.js} +4 -4
  171. package/chunks/{lsp-GSICJMMW.js → lsp-24WV7NXB.js} +2 -2
  172. package/chunks/{monitor-HKLRS2HQ.js → monitor-ARL5P45R.js} +32 -26
  173. package/chunks/nonInteractiveCli-NUVLF3YR.js +108 -0
  174. package/chunks/{notebook-edit-Y6SKSGTT.js → notebook-edit-ANTZ2DDY.js} +31 -26
  175. package/chunks/{openaiContentGenerator-J7G2FYJT.js → openaiContentGenerator-TFGMKGHN.js} +15 -13
  176. package/chunks/pidfile-AWTL4C63.js +72 -0
  177. package/chunks/{pt-TNZRNLQB.js → pt-6RTAA6SS.js} +9 -9
  178. package/chunks/{qwenContentGenerator-5XIEM5GV.js → qwenContentGenerator-6QWAYTWS.js} +32 -27
  179. package/chunks/{qwenOAuth2-AG3PFFLZ.js → qwenOAuth2-LWLA6MQG.js} +5 -4
  180. package/chunks/{read-file-J7D552ZJ.js → read-file-EJY73XQ3.js} +11 -10
  181. package/chunks/{read-mcp-resource-DQQW7H7T.js → read-mcp-resource-NCBTPP7X.js} +2 -2
  182. package/chunks/ripGrep-HC4SA6CQ.js +59 -0
  183. package/chunks/{ru-NIAUBKCN.js → ru-AUBGJ2C4.js} +9 -9
  184. package/chunks/{run-qwen-serve-SGEEVMXD.js → run-qwen-serve-AGLZ642J.js} +454 -94
  185. package/chunks/{scheduler-7CQI3S4Q.js → scheduler-TURO7NGY.js} +30 -25
  186. package/chunks/{send-message-EE4TWKVU.js → send-message-3S2NYS3O.js} +6 -4
  187. package/chunks/serve-5DAMOIDW.js +70 -0
  188. package/chunks/{server-4QMUWXPW.js → server-4AGEK2HC.js} +4098 -1173
  189. package/chunks/{session-NRO7UFOY.js → session-7ZOQUC4Y.js} +204 -64
  190. package/chunks/{settings-SGWRDQSC.js → settings-DR4V6L5Y.js} +34 -29
  191. package/chunks/{shell-62ANGIHL.js → shell-H5WFKUXH.js} +30 -25
  192. package/chunks/{skill-VWAQAWW6.js → skill-ANHU5ZCR.js} +13 -12
  193. package/chunks/spawnChannel-VN5LJV7Z.js +68 -0
  194. package/chunks/{src-KUV5J5Q2.js → src-OVZLTVVM.js} +114 -30
  195. package/chunks/{startInteractiveUI-6EYJN3JV.js → startInteractiveUI-OA22V32P.js} +15970 -15430
  196. package/chunks/{syntheticOutput-T5YHQ6S2.js → syntheticOutput-SV7GBHZ5.js} +3 -3
  197. package/chunks/{task-create-BLY7RHXX.js → task-create-W2H2UJCH.js} +8 -7
  198. package/chunks/{task-list-3QUYNVYR.js → task-list-THBOPV4G.js} +7 -6
  199. package/chunks/{task-stop-U4RATK2V.js → task-stop-33FVCNCJ.js} +2 -2
  200. package/chunks/{task-update-U54O7KJX.js → task-update-LVFQLXEI.js} +8 -7
  201. package/chunks/{team-create-LPOGCPM7.js → team-create-OYL5CAQO.js} +30 -25
  202. package/chunks/{team-delete-LKBYPASD.js → team-delete-NTUQ25UY.js} +7 -6
  203. package/chunks/theme-manager-XCMPF2SI.js +63 -0
  204. package/chunks/{todoWrite-OYXKTVYN.js → todoWrite-SEPO2RI3.js} +4 -4
  205. package/chunks/{tool-search-YPUFJ3ZQ.js → tool-search-YXW55X6Z.js} +36 -11
  206. package/chunks/{trustedFolders-5B24TMEA.js → trustedFolders-TEPGM5YL.js} +31 -26
  207. package/chunks/{validateNonInterActiveAuth-BTDTYOVT.js → validateNonInterActiveAuth-OQIS7WUE.js} +65 -55
  208. package/chunks/{web-fetch-EEB5LZYU.js → web-fetch-OE7LHURA.js} +5 -4
  209. package/chunks/{workflow-LAWIW5LI.js → workflow-RTUWORAP.js} +67 -39
  210. package/chunks/workspace-providers-status-DM2XANVB.js +67 -0
  211. package/chunks/workspace-service-VKBI2KZD.js +77 -0
  212. package/chunks/{write-file-PCV226DJ.js → write-file-WGALQ53L.js} +35 -30
  213. package/chunks/{zh-TW-TR3XYGE5.js → zh-TW-6GIKXEAN.js} +30 -10
  214. package/chunks/{zh-5EUYXASN.js → zh-V3B4TFWL.js} +30 -10
  215. package/cli.js +6 -6
  216. package/locales/ca.js +13 -13
  217. package/locales/de.js +13 -13
  218. package/locales/en.js +49 -15
  219. package/locales/fr.js +13 -14
  220. package/locales/ja.js +13 -14
  221. package/locales/pt.js +13 -13
  222. package/locales/ru.js +13 -13
  223. package/locales/zh-TW.js +47 -14
  224. package/locales/zh.js +47 -14
  225. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  226. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  227. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  228. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  229. package/package.json +15 -6
  230. package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
  231. package/postinstall.js +50 -0
  232. package/web-shell/assets/{arc-DA7r8Ueo.js → arc-Det5Ccum.js} +1 -1
  233. package/web-shell/assets/{architectureDiagram-3BPJPVTR-ZDUxPtZ2.js → architectureDiagram-3BPJPVTR-DqNWVFpl.js} +1 -1
  234. package/web-shell/assets/{blockDiagram-GPEHLZMM-vrtOf1kJ.js → blockDiagram-GPEHLZMM-CYl7tYBi.js} +1 -1
  235. package/web-shell/assets/{c4Diagram-AAUBKEIU-BHFjzIi4.js → c4Diagram-AAUBKEIU-DaAEi0NQ.js} +1 -1
  236. package/web-shell/assets/channel-Bm0bFauD.js +1 -0
  237. package/web-shell/assets/{chunk-2J33WTMH-mdeQVz59.js → chunk-2J33WTMH-Df2CDEE2.js} +1 -1
  238. package/web-shell/assets/{chunk-4BX2VUAB-BkKMlwBX.js → chunk-4BX2VUAB-DNBFcyL2.js} +1 -1
  239. package/web-shell/assets/{chunk-55IACEB6-B7bnXNfu.js → chunk-55IACEB6-BKjF-0HI.js} +1 -1
  240. package/web-shell/assets/{chunk-727SXJPM-DGz8Mm6i.js → chunk-727SXJPM-DYwAwfIM.js} +1 -1
  241. package/web-shell/assets/{chunk-AQP2D5EJ-BQAydUNk.js → chunk-AQP2D5EJ-C6FswLqy.js} +1 -1
  242. package/web-shell/assets/{chunk-FMBD7UC4-GHr2LN_p.js → chunk-FMBD7UC4-DRWAcZSY.js} +1 -1
  243. package/web-shell/assets/{chunk-ND2GUHAM-7R91lnUx.js → chunk-ND2GUHAM-AoL16mNR.js} +1 -1
  244. package/web-shell/assets/{chunk-QZHKN3VN-aTJD3lSQ.js → chunk-QZHKN3VN-a8PtLMck.js} +1 -1
  245. package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +1 -0
  246. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +1 -0
  247. package/web-shell/assets/{cose-bilkent-S5V4N54A-BTf8t1RL.js → cose-bilkent-S5V4N54A-C4Aeu5qf.js} +1 -1
  248. package/web-shell/assets/{dagre-BM42HDAG-_sgp3WuA.js → dagre-BM42HDAG-BOulamjo.js} +1 -1
  249. package/web-shell/assets/{diagram-2AECGRRQ-CROtRy1w.js → diagram-2AECGRRQ-D1wt2ykO.js} +1 -1
  250. package/web-shell/assets/{diagram-5GNKFQAL-BqGRzwSc.js → diagram-5GNKFQAL-BRseus-O.js} +1 -1
  251. package/web-shell/assets/{diagram-KO2AKTUF-CMrcEtA7.js → diagram-KO2AKTUF-XSMkNzpZ.js} +1 -1
  252. package/web-shell/assets/{diagram-LMA3HP47-BRydGNW5.js → diagram-LMA3HP47-21KNLqoi.js} +1 -1
  253. package/web-shell/assets/{diagram-OG6HWLK6-D0ilgNjV.js → diagram-OG6HWLK6-DnUI8F5G.js} +1 -1
  254. package/web-shell/assets/{erDiagram-TEJ5UH35-2lnQeJUM.js → erDiagram-TEJ5UH35-BVSOMuM2.js} +1 -1
  255. package/web-shell/assets/{flowDiagram-I6XJVG4X-C_ZMdQiC.js → flowDiagram-I6XJVG4X-fYtDPJsW.js} +1 -1
  256. package/web-shell/assets/{ganttDiagram-6RSMTGT7-Dw9V_Ny0.js → ganttDiagram-6RSMTGT7-CmRXosW_.js} +1 -1
  257. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-HDXI-F1B.js → gitGraphDiagram-PVQCEYII-DPrmySxO.js} +1 -1
  258. package/web-shell/assets/index-BpKnmyFV.js +717 -0
  259. package/web-shell/assets/index-fLrtxpOG.css +5 -0
  260. package/web-shell/assets/{infoDiagram-5YYISTIA-CuB8Ebua.js → infoDiagram-5YYISTIA-x3VbEuCV.js} +1 -1
  261. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D_tyhVwh.js → ishikawaDiagram-YF4QCWOH-SmitHRMC.js} +1 -1
  262. package/web-shell/assets/{journeyDiagram-JHISSGLW-CgCwJQNU.js → journeyDiagram-JHISSGLW-BxvA551S.js} +1 -1
  263. package/web-shell/assets/{kanban-definition-UN3LZRKU-PZUtcbPx.js → kanban-definition-UN3LZRKU-DNHC16jY.js} +1 -1
  264. package/web-shell/assets/{linear-CZqRdJIU.js → linear-CQ6irBL9.js} +1 -1
  265. package/web-shell/assets/{mermaid.core-CPW_4UEF.js → mermaid.core-DtB6NO1e.js} +72 -72
  266. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D_Y75ID7.js → mindmap-definition-RKZ34NQL-QKMAgV2v.js} +1 -1
  267. package/web-shell/assets/{pieDiagram-4H26LBE5-Q4dTyLeF.js → pieDiagram-4H26LBE5-bvb6dGn6.js} +1 -1
  268. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-ckw329Ft.js → quadrantDiagram-W4KKPZXB-DLgdlG4D.js} +1 -1
  269. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DbVDm4It.js → requirementDiagram-4Y6WPE33-2M9YH4GF.js} +1 -1
  270. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CHuZ_ecH.js → sankeyDiagram-5OEKKPKP-DzwfclTH.js} +1 -1
  271. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DU2YSpq-.js → sequenceDiagram-3UESZ5HK-BvPmTuy2.js} +1 -1
  272. package/web-shell/assets/{stateDiagram-AJRCARHV-CA9PEBUo.js → stateDiagram-AJRCARHV-BjwUmrJF.js} +1 -1
  273. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +1 -0
  274. package/web-shell/assets/{timeline-definition-PNZ67QCA-Bhlo4WVc.js → timeline-definition-PNZ67QCA-CXzS6qqz.js} +1 -1
  275. package/web-shell/assets/{vennDiagram-CIIHVFJN-6xtPLsyl.js → vennDiagram-CIIHVFJN-yRSolF5B.js} +1 -1
  276. package/web-shell/assets/{wardley-L42UT6IY-3eozmXPf.js → wardley-L42UT6IY-ClLJjHPG.js} +1 -1
  277. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BOn6hKss.js → wardleyDiagram-YWT4CUSO-VIa6t2p2.js} +1 -1
  278. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BsP4-I_y.js → xychartDiagram-2RQKCTM6-CtmrkezW.js} +1 -1
  279. package/web-shell/index.html +18 -2
  280. package/chunks/MaxSizedBox-QNF3EIGU.js +0 -63
  281. package/chunks/agent-headless-RQ5BTX3G.js +0 -56
  282. package/chunks/bridge-JL2PMCIW.js +0 -66
  283. package/chunks/chunk-5GOVVXEV.js +0 -73
  284. package/chunks/chunk-BC3C4F3Q.js +0 -40
  285. package/chunks/chunk-BW4KCQFD.js +0 -1103
  286. package/chunks/chunk-RKIZXJMB.js +0 -13
  287. package/chunks/contextCommand-WYU6OQ2F.js +0 -61
  288. package/chunks/daemon-status-provider-HH2EC5FI.js +0 -65
  289. package/chunks/headlessSafetyWarnings-TBE35GJ4.js +0 -55
  290. package/chunks/initializer-2Y7SLOKV.js +0 -61
  291. package/chunks/list-ZAFHZ7OS.js +0 -65
  292. package/chunks/loadedSettingsAdapter-6KJXD6M3.js +0 -60
  293. package/chunks/nonInteractiveCli-5W4GIZQM.js +0 -96
  294. package/chunks/ripGrep-IEIFIWP4.js +0 -54
  295. package/chunks/serve-V6GVZR6U.js +0 -65
  296. package/chunks/spawnChannel-3VHW5EPY.js +0 -63
  297. package/chunks/theme-manager-LYLGAERF.js +0 -58
  298. package/chunks/workspace-providers-status-PIAFVYHA.js +0 -62
  299. package/chunks/workspace-service-YAIOD4HG.js +0 -71
  300. package/web-shell/assets/channel-iRo68q4Q.js +0 -1
  301. package/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js +0 -1
  302. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js +0 -1
  303. package/web-shell/assets/index-CHmzAWys.css +0 -5
  304. package/web-shell/assets/index-w6GTOHh1.js +0 -713
  305. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js +0 -1
@@ -0,0 +1,44 @@
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
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/cli/src/serve/channel-selection.ts
11
+ init_esbuild_shims();
12
+ function normalizeServeChannelSelection(rawChannels) {
13
+ if (rawChannels === void 0 || rawChannels.length === 0) {
14
+ return void 0;
15
+ }
16
+ const names = [];
17
+ const seen = /* @__PURE__ */ new Set();
18
+ for (const raw of rawChannels) {
19
+ const name = raw.trim();
20
+ if (!name) {
21
+ throw new Error("--channel requires a non-empty channel name.");
22
+ }
23
+ if (seen.has(name)) continue;
24
+ seen.add(name);
25
+ names.push(name);
26
+ }
27
+ if (seen.has("all")) {
28
+ if (names.length > 1) {
29
+ throw new Error("--channel all cannot be combined with channel names.");
30
+ }
31
+ return { mode: "all" };
32
+ }
33
+ return { mode: "names", names };
34
+ }
35
+ __name(normalizeServeChannelSelection, "normalizeServeChannelSelection");
36
+ function channelSelectionNames(selection) {
37
+ return selection.mode === "all" ? ["all"] : [...selection.names];
38
+ }
39
+ __name(channelSelectionNames, "channelSelectionNames");
40
+
41
+ export {
42
+ normalizeServeChannelSelection,
43
+ channelSelectionNames
44
+ };
@@ -1,21 +1,24 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ HEADLESS_YOLO_NO_SANDBOX_WARNING
5
+ } from "./chunk-BJBWRCSK.js";
3
6
  import {
4
7
  DEFAULT_RING_SIZE
5
8
  } from "./chunk-ALX6BUYW.js";
6
9
  import {
7
10
  loadSettings
8
- } from "./chunk-FKAVULLM.js";
11
+ } from "./chunk-MKHC4BYZ.js";
9
12
  import {
10
- HEADLESS_YOLO_NO_SANDBOX_WARNING
11
- } from "./chunk-5DWXLGOM.js";
13
+ normalizeServeChannelSelection
14
+ } from "./chunk-MX2YXRER.js";
12
15
  import {
13
16
  writeStderrLine
14
17
  } from "./chunk-Y6Z2O3WR.js";
15
18
  import {
16
19
  MCP_BUDGET_WARN_FRACTION,
17
20
  parsePositiveIntegerEnv
18
- } from "./chunk-YAINVQ3Q.js";
21
+ } from "./chunk-BFG6OZN7.js";
19
22
  import {
20
23
  openBrowserSecurely,
21
24
  shouldLaunchBrowser
@@ -104,6 +107,10 @@ var serveCommand = {
104
107
  type: "boolean",
105
108
  default: false,
106
109
  description: "Forward the experimental LSP opt-in to spawned agent sessions."
110
+ }).option("channel", {
111
+ type: "string",
112
+ array: true,
113
+ description: "Experimental: start a daemon-managed channel worker for the named channel. Repeat to select multiple channels, or use --channel all."
107
114
  }).option("web", {
108
115
  type: "boolean",
109
116
  default: true,
@@ -183,6 +190,15 @@ var serveCommand = {
183
190
  "qwen serve: --token is visible in the process command line; prefer the QWEN_SERVER_TOKEN env var for any non-trivial deployment."
184
191
  );
185
192
  }
193
+ let channelSelection;
194
+ try {
195
+ channelSelection = normalizeServeChannelSelection(argv.channel);
196
+ } catch (err) {
197
+ writeStderrLine(
198
+ `qwen serve: ${err instanceof Error ? err.message : String(err)}`
199
+ );
200
+ process.exit(1);
201
+ }
186
202
  const mcpClientBudget = argv["mcp-client-budget"];
187
203
  const mcpBudgetMode = argv["mcp-budget-mode"];
188
204
  if (mcpClientBudget !== void 0) {
@@ -257,7 +273,7 @@ var serveCommand = {
257
273
  process.exit(1);
258
274
  }
259
275
  }
260
- const { runQwenServe } = await import("./run-qwen-serve-SGEEVMXD.js");
276
+ const { runQwenServe } = await import("./run-qwen-serve-AGLZ642J.js");
261
277
  try {
262
278
  const handle = await runQwenServe({
263
279
  port: argv.port,
@@ -289,7 +305,8 @@ var serveCommand = {
289
305
  ...rateLimitMutation !== void 0 ? { rateLimitMutation } : {},
290
306
  ...rateLimitRead !== void 0 ? { rateLimitRead } : {},
291
307
  ...rateLimitWindowMs !== void 0 ? { rateLimitWindowMs } : {},
292
- ...argv.experimentalLsp === true ? { experimentalLsp: true } : {}
308
+ ...argv.experimentalLsp === true ? { experimentalLsp: true } : {},
309
+ ...channelSelection !== void 0 ? { channelSelection } : {}
293
310
  });
294
311
  await maybeOpenWebShellBrowser(handle, argv.open);
295
312
  } catch (err) {
@@ -0,0 +1,27 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ expandHomeDir
5
+ } from "./chunk-AVQDCKNF.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-A4BMJM77.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/utils/resolvePath.ts
14
+ init_esbuild_shims();
15
+ function resolvePath(p) {
16
+ return expandHomeDir(p);
17
+ }
18
+ __name(resolvePath, "resolvePath");
19
+
20
+ export {
21
+ resolvePath
22
+ };
23
+ /**
24
+ * @license
25
+ * Copyright 2025 Google LLC
26
+ * SPDX-License-Identifier: Apache-2.0
27
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-UX4SGCGN.js";
5
+ } from "./chunk-AVQDCKNF.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -6,16 +6,16 @@ import {
6
6
  import {
7
7
  JsonFormatter,
8
8
  parseAndFormatApiError
9
- } from "./chunk-YAINVQ3Q.js";
9
+ } from "./chunk-BFG6OZN7.js";
10
10
  import {
11
11
  FatalBudgetExceededError,
12
12
  FatalCancellationError,
13
13
  FatalTurnLimitedError,
14
14
  createDebugLogger
15
- } from "./chunk-UX4SGCGN.js";
15
+ } from "./chunk-AVQDCKNF.js";
16
16
  import {
17
17
  runExitCleanup
18
- } from "./chunk-I2LYBGNI.js";
18
+ } from "./chunk-FYKX6XOT.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-A4BMJM77.js";
@@ -0,0 +1,238 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ Storage
5
+ } from "./chunk-AVQDCKNF.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-A4BMJM77.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/commands/channel/pidfile.ts
14
+ init_esbuild_shims();
15
+ import {
16
+ existsSync,
17
+ readFileSync,
18
+ writeFileSync,
19
+ mkdirSync,
20
+ unlinkSync,
21
+ openSync,
22
+ closeSync,
23
+ constants,
24
+ ftruncateSync,
25
+ writeSync
26
+ } from "node:fs";
27
+ import * as path from "node:path";
28
+ function pidFilePath() {
29
+ return path.join(Storage.getGlobalQwenDir(), "channels", "service.pid");
30
+ }
31
+ __name(pidFilePath, "pidFilePath");
32
+ function isValidPid(pid) {
33
+ return typeof pid === "number" && Number.isSafeInteger(pid) && pid > 0;
34
+ }
35
+ __name(isValidPid, "isValidPid");
36
+ function parseServiceInfo(value) {
37
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
38
+ return null;
39
+ }
40
+ const info = value;
41
+ const owner = info.owner ?? "channel";
42
+ if (owner !== "channel" && owner !== "serve") return null;
43
+ if (!isValidPid(info.pid) || typeof info.startedAt !== "string" || Number.isNaN(Date.parse(info.startedAt)) || !Array.isArray(info.channels) || !info.channels.every((channel) => typeof channel === "string")) {
44
+ return null;
45
+ }
46
+ if (info.servePid !== void 0 && !isValidPid(info.servePid)) return null;
47
+ if (info.workerPid !== void 0 && !isValidPid(info.workerPid)) return null;
48
+ return {
49
+ owner,
50
+ pid: info.pid,
51
+ startedAt: info.startedAt,
52
+ channels: info.channels,
53
+ ...info.servePid !== void 0 ? { servePid: info.servePid } : {},
54
+ ...info.workerPid !== void 0 ? { workerPid: info.workerPid } : {}
55
+ };
56
+ }
57
+ __name(parseServiceInfo, "parseServiceInfo");
58
+ function unlinkPidFile(filePath) {
59
+ try {
60
+ unlinkSync(filePath);
61
+ } catch {
62
+ }
63
+ }
64
+ __name(unlinkPidFile, "unlinkPidFile");
65
+ function isProcessAlive(pid) {
66
+ if (!isValidPid(pid)) {
67
+ return false;
68
+ }
69
+ try {
70
+ process.kill(pid, 0);
71
+ return true;
72
+ } catch {
73
+ return false;
74
+ }
75
+ }
76
+ __name(isProcessAlive, "isProcessAlive");
77
+ function readServiceInfo() {
78
+ const filePath = pidFilePath();
79
+ if (!existsSync(filePath)) return null;
80
+ let parsed;
81
+ try {
82
+ parsed = JSON.parse(readFileSync(filePath, "utf-8"));
83
+ } catch {
84
+ unlinkPidFile(filePath);
85
+ return null;
86
+ }
87
+ const info = parseServiceInfo(parsed);
88
+ if (!info) {
89
+ unlinkPidFile(filePath);
90
+ return null;
91
+ }
92
+ if (!isProcessAlive(info.pid)) {
93
+ unlinkPidFile(filePath);
94
+ return null;
95
+ }
96
+ return info;
97
+ }
98
+ __name(readServiceInfo, "readServiceInfo");
99
+ function writeInfo(info, flag = "w") {
100
+ const filePath = pidFilePath();
101
+ const dir = path.dirname(filePath);
102
+ if (!existsSync(dir)) {
103
+ mkdirSync(dir, { recursive: true });
104
+ }
105
+ writeFileSync(filePath, JSON.stringify(info, null, 2), {
106
+ encoding: "utf-8",
107
+ flag
108
+ });
109
+ }
110
+ __name(writeInfo, "writeInfo");
111
+ function fileExistsError(message) {
112
+ const err = new Error(message);
113
+ err.code = "EEXIST";
114
+ return err;
115
+ }
116
+ __name(fileExistsError, "fileExistsError");
117
+ function writeServiceInfo(channels) {
118
+ const info = {
119
+ owner: "channel",
120
+ pid: process.pid,
121
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
122
+ channels
123
+ };
124
+ writeInfo(info, "wx");
125
+ }
126
+ __name(writeServiceInfo, "writeServiceInfo");
127
+ function writeServeServiceInfo({
128
+ channels,
129
+ servePid = process.pid,
130
+ workerPid
131
+ }) {
132
+ const info = {
133
+ owner: "serve",
134
+ pid: servePid,
135
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
136
+ channels,
137
+ servePid,
138
+ ...workerPid !== void 0 ? { workerPid } : {}
139
+ };
140
+ const filePath = pidFilePath();
141
+ let fd;
142
+ try {
143
+ fd = openSync(filePath, constants.O_RDWR | constants.O_NOFOLLOW);
144
+ } catch (err) {
145
+ if (err.code === "ENOENT") {
146
+ writeInfo(info, "wx");
147
+ return;
148
+ }
149
+ throw err;
150
+ }
151
+ try {
152
+ let existing = null;
153
+ try {
154
+ existing = parseServiceInfo(JSON.parse(readFileSync(fd, "utf-8")));
155
+ } catch {
156
+ }
157
+ if (!existing || existing.owner !== "serve" || existing.pid !== servePid || existing.servePid !== servePid) {
158
+ throw fileExistsError(
159
+ "Channel service pidfile is owned by another process."
160
+ );
161
+ }
162
+ ftruncateSync(fd, 0);
163
+ writeSync(fd, JSON.stringify(info, null, 2), 0, "utf-8");
164
+ } finally {
165
+ closeSync(fd);
166
+ }
167
+ }
168
+ __name(writeServeServiceInfo, "writeServeServiceInfo");
169
+ function reserveServeServiceInfo({
170
+ channels,
171
+ servePid = process.pid
172
+ }) {
173
+ const info = {
174
+ owner: "serve",
175
+ pid: servePid,
176
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
177
+ channels,
178
+ servePid
179
+ };
180
+ writeInfo(info, "wx");
181
+ }
182
+ __name(reserveServeServiceInfo, "reserveServeServiceInfo");
183
+ function removeServiceInfo() {
184
+ const filePath = pidFilePath();
185
+ if (existsSync(filePath)) {
186
+ unlinkPidFile(filePath);
187
+ }
188
+ }
189
+ __name(removeServiceInfo, "removeServiceInfo");
190
+ function removeServeServiceInfo(servePid = process.pid) {
191
+ const filePath = pidFilePath();
192
+ if (!existsSync(filePath)) return false;
193
+ let parsed;
194
+ try {
195
+ parsed = JSON.parse(readFileSync(filePath, "utf-8"));
196
+ } catch {
197
+ return false;
198
+ }
199
+ const info = parseServiceInfo(parsed);
200
+ if (!info || info.owner !== "serve" || info.servePid !== servePid || info.pid !== servePid) {
201
+ return false;
202
+ }
203
+ unlinkPidFile(filePath);
204
+ return true;
205
+ }
206
+ __name(removeServeServiceInfo, "removeServeServiceInfo");
207
+ function signalService(pid, signal = "SIGTERM") {
208
+ if (!isValidPid(pid)) {
209
+ return false;
210
+ }
211
+ try {
212
+ process.kill(pid, signal);
213
+ return true;
214
+ } catch {
215
+ return false;
216
+ }
217
+ }
218
+ __name(signalService, "signalService");
219
+ async function waitForExit(pid, timeoutMs = 5e3, pollMs = 200) {
220
+ const start = Date.now();
221
+ while (Date.now() - start < timeoutMs) {
222
+ if (!isProcessAlive(pid)) return true;
223
+ await new Promise((r) => setTimeout(r, pollMs));
224
+ }
225
+ return !isProcessAlive(pid);
226
+ }
227
+ __name(waitForExit, "waitForExit");
228
+
229
+ export {
230
+ readServiceInfo,
231
+ writeServiceInfo,
232
+ writeServeServiceInfo,
233
+ reserveServeServiceInfo,
234
+ removeServiceInfo,
235
+ removeServeServiceInfo,
236
+ signalService,
237
+ waitForExit
238
+ };
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  BaseJsonOutputAdapter
5
- } from "./chunk-PDE7CSDS.js";
5
+ } from "./chunk-7VPC7D7O.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -172,7 +172,16 @@ var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
172
172
  "QWEN_CODE_MCP_APPROVALS_PATH",
173
173
  "QWEN_CODE_TRUSTED_FOLDERS_PATH",
174
174
  ENV_CORRUPTED_PATH,
175
- 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"
176
185
  ];
177
186
  var HOME_ENV_BOOTSTRAP_KEYS = [
178
187
  "QWEN_HOME",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-R5OP2ATH.js";
5
+ } from "./chunk-UQYOMM6J.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  parseRule
5
- } from "./chunk-YAINVQ3Q.js";
5
+ } from "./chunk-BFG6OZN7.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -2,16 +2,16 @@
2
2
  "use strict";
3
3
  import {
4
4
  createTask
5
- } from "./chunk-QLDPRILK.js";
5
+ } from "./chunk-G7OQ3RFJ.js";
6
6
  import {
7
7
  resolveActiveTeamName
8
- } from "./chunk-LD2XBG6Z.js";
8
+ } from "./chunk-GO6LNQXT.js";
9
9
  import {
10
10
  BaseDeclarativeTool,
11
11
  BaseToolInvocation,
12
12
  ToolDisplayNames,
13
13
  ToolNames
14
- } from "./chunk-BX5YO7UW.js";
14
+ } from "./chunk-4VZH35PN.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-A4BMJM77.js";
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  getInboxesDir,
5
5
  require_proper_lockfile
6
- } from "./chunk-BVSVIN45.js";
6
+ } from "./chunk-LKWAVAB5.js";
7
7
  import {
8
8
  Mutex
9
9
  } from "./chunk-OMX7CUOE.js";
10
10
  import {
11
11
  atomicWriteJSON
12
- } from "./chunk-3227DZO4.js";
12
+ } from "./chunk-T42ACHFI.js";
13
13
  import {
14
14
  createDebugLogger,
15
15
  isNodeError
16
- } from "./chunk-UX4SGCGN.js";
16
+ } from "./chunk-AVQDCKNF.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-A4BMJM77.js";
@@ -7,6 +7,7 @@ import {
7
7
  require_type
8
8
  } from "./chunk-7RYW5LQV.js";
9
9
  import {
10
+ require_function_bind,
10
11
  require_hasown
11
12
  } from "./chunk-UWCTAVOD.js";
12
13
  import {
@@ -658,6 +659,18 @@ var require_es_set_tostringtag = __commonJS({
658
659
  }
659
660
  });
660
661
 
662
+ // node_modules/form-data/node_modules/hasown/index.js
663
+ var require_hasown2 = __commonJS({
664
+ "node_modules/form-data/node_modules/hasown/index.js"(exports, module) {
665
+ "use strict";
666
+ init_esbuild_shims();
667
+ var call = Function.prototype.call;
668
+ var $hasOwn = Object.prototype.hasOwnProperty;
669
+ var bind = require_function_bind();
670
+ module.exports = bind.call(call, $hasOwn);
671
+ }
672
+ });
673
+
661
674
  // node_modules/form-data/lib/populate.js
662
675
  var require_populate = __commonJS({
663
676
  "node_modules/form-data/lib/populate.js"(exports, module) {
@@ -689,8 +702,12 @@ var require_form_data = __commonJS({
689
702
  var mime = require_mime_types();
690
703
  var asynckit = require_asynckit();
691
704
  var setToStringTag = require_es_set_tostringtag();
692
- var hasOwn = require_hasown();
705
+ var hasOwn = require_hasown2();
693
706
  var populate = require_populate();
707
+ function escapeHeaderParam(str) {
708
+ return String(str).replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/"/g, "%22");
709
+ }
710
+ __name(escapeHeaderParam, "escapeHeaderParam");
694
711
  function FormData(options) {
695
712
  if (!(this instanceof FormData)) {
696
713
  return new FormData(options);
@@ -781,7 +798,7 @@ var require_form_data = __commonJS({
781
798
  var contents = "";
782
799
  var headers = {
783
800
  // add custom disposition as third element or keep it two elements if not
784
- "Content-Disposition": ["form-data", 'name="' + field + '"'].concat(contentDisposition || []),
801
+ "Content-Disposition": ["form-data", 'name="' + escapeHeaderParam(field) + '"'].concat(contentDisposition || []),
785
802
  // if no content type. allow it to be empty array
786
803
  "Content-Type": [].concat(contentType || [])
787
804
  };
@@ -815,7 +832,7 @@ var require_form_data = __commonJS({
815
832
  filename = path.basename(value.client._httpMessage.path || "");
816
833
  }
817
834
  if (filename) {
818
- return 'filename="' + filename + '"';
835
+ return 'filename="' + escapeHeaderParam(filename) + '"';
819
836
  }
820
837
  };
821
838
  FormData.prototype._getContentType = function(value, options) {
@@ -1113,6 +1130,11 @@ var require_follow_redirects = __commonJS({
1113
1130
  } catch (error) {
1114
1131
  useNativeURL = error.code === "ERR_INVALID_URL";
1115
1132
  }
1133
+ var sensitiveHeaders = [
1134
+ "Authorization",
1135
+ "Proxy-Authorization",
1136
+ "Cookie"
1137
+ ];
1116
1138
  var preservedUrlFields = [
1117
1139
  "auth",
1118
1140
  "host",
@@ -1177,6 +1199,7 @@ var require_follow_redirects = __commonJS({
1177
1199
  self.emit("error", cause instanceof RedirectionError ? cause : new RedirectionError({ cause }));
1178
1200
  }
1179
1201
  };
1202
+ this._headerFilter = new RegExp("^(?:" + sensitiveHeaders.concat(options.sensitiveHeaders).map(escapeRegex).join("|") + ")$", "i");
1180
1203
  this._performRequest();
1181
1204
  }
1182
1205
  __name(RedirectableRequest, "RedirectableRequest");
@@ -1318,6 +1341,9 @@ var require_follow_redirects = __commonJS({
1318
1341
  if (!options.headers) {
1319
1342
  options.headers = {};
1320
1343
  }
1344
+ if (!isArray(options.sensitiveHeaders)) {
1345
+ options.sensitiveHeaders = [];
1346
+ }
1321
1347
  if (options.host) {
1322
1348
  if (!options.hostname) {
1323
1349
  options.hostname = options.host;
@@ -1423,7 +1449,7 @@ var require_follow_redirects = __commonJS({
1423
1449
  this._isRedirect = true;
1424
1450
  spreadUrlObject(redirectUrl, this._options);
1425
1451
  if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) {
1426
- removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);
1452
+ removeMatchingHeaders(this._headerFilter, this._options.headers);
1427
1453
  }
1428
1454
  if (isFunction(beforeRedirect)) {
1429
1455
  var responseDetails = {
@@ -1585,6 +1611,10 @@ var require_follow_redirects = __commonJS({
1585
1611
  return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
1586
1612
  }
1587
1613
  __name(isSubdomain, "isSubdomain");
1614
+ function isArray(value) {
1615
+ return value instanceof Array;
1616
+ }
1617
+ __name(isArray, "isArray");
1588
1618
  function isString(value) {
1589
1619
  return typeof value === "string" || value instanceof String;
1590
1620
  }
@@ -1601,6 +1631,10 @@ var require_follow_redirects = __commonJS({
1601
1631
  return URL && value instanceof URL;
1602
1632
  }
1603
1633
  __name(isURL, "isURL");
1634
+ function escapeRegex(regex) {
1635
+ return regex.replace(/[\]\\/()*+?.$]/g, "\\$&");
1636
+ }
1637
+ __name(escapeRegex, "escapeRegex");
1604
1638
  module.exports = wrap({ http, https });
1605
1639
  module.exports.wrap = wrap;
1606
1640
  }
@@ -0,0 +1,66 @@
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
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/cli/src/serve/workspace-remember-errors.ts
11
+ init_esbuild_shims();
12
+ function errorCodeFromRecord(record) {
13
+ if (typeof record["code"] === "string") return record["code"];
14
+ const data = record["data"];
15
+ if (data && typeof data === "object") {
16
+ const dataRecord = data;
17
+ if (typeof dataRecord["errorKind"] === "string") {
18
+ return dataRecord["errorKind"];
19
+ }
20
+ if (typeof dataRecord["code"] === "string") return dataRecord["code"];
21
+ }
22
+ return void 0;
23
+ }
24
+ __name(errorCodeFromRecord, "errorCodeFromRecord");
25
+ function extractRememberErrorCode(err) {
26
+ if (err && typeof err === "object") {
27
+ const record = err;
28
+ const direct = errorCodeFromRecord(record);
29
+ if (direct) return direct;
30
+ const cause = record["cause"];
31
+ if (cause && typeof cause === "object") {
32
+ const causedBy = errorCodeFromRecord(cause);
33
+ if (causedBy) return causedBy;
34
+ }
35
+ }
36
+ return "remember_failed";
37
+ }
38
+ __name(extractRememberErrorCode, "extractRememberErrorCode");
39
+
40
+ // packages/cli/src/serve/workspace-memory-remember-constants.ts
41
+ init_esbuild_shims();
42
+ var MAX_REMEMBER_CONTENT_BYTES = 64 * 1024;
43
+
44
+ // packages/cli/src/serve/validate-server-name.ts
45
+ init_esbuild_shims();
46
+ var VALID_SERVER_NAME = /^[A-Za-z0-9_-]+$/;
47
+ var RESERVED_SERVER_NAMES = /* @__PURE__ */ new Set([
48
+ "__proto__",
49
+ "constructor",
50
+ "prototype"
51
+ ]);
52
+ function isValidServerName(name) {
53
+ return typeof name === "string" && name.length > 0 && name.length <= 256 && VALID_SERVER_NAME.test(name) && !RESERVED_SERVER_NAMES.has(name);
54
+ }
55
+ __name(isValidServerName, "isValidServerName");
56
+
57
+ export {
58
+ extractRememberErrorCode,
59
+ MAX_REMEMBER_CONTENT_BYTES,
60
+ isValidServerName
61
+ };
62
+ /**
63
+ * @license
64
+ * Copyright 2026 Qwen Team
65
+ * SPDX-License-Identifier: Apache-2.0
66
+ */