@qwen-code/qwen-code 0.20.0-nightly.20260722.b98306b7e → 0.20.0

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 (341) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/auto-mode.md +16 -19
  3. package/bundled/qc-helper/docs/features/commands.md +0 -54
  4. package/bundled/qc-helper/docs/features/sub-agents.md +7 -16
  5. package/bundled/qc-helper/docs/integration-github-action.md +10 -10
  6. package/bundled/qc-helper/docs/qwen-serve.md +1 -2
  7. package/bundled/review/DESIGN.md +2 -2
  8. package/bundled/review/SKILL.md +4 -4
  9. package/chunks/{MaxSizedBox-YO432SD4.js → MaxSizedBox-B5YGZSYE.js} +34 -41
  10. package/chunks/{StandaloneSessionPicker-525JBPXC.js → StandaloneSessionPicker-CEGO2AZX.js} +50 -57
  11. package/chunks/{acpAgent-FORCZCBG.js → acpAgent-YUR43TLG.js} +496 -1487
  12. package/chunks/{agent-OZCWHX2J.js → agent-H4JIDL7S.js} +30 -37
  13. package/chunks/agent-headless-TTBEREQV.js +61 -0
  14. package/chunks/{anthropicContentGenerator-NMSS7IMV.js → anthropicContentGenerator-HVKLXOOU.js} +12 -13
  15. package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-WBCAMD3O.js} +3 -3
  16. package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-6DZC4UV5.js} +3 -3
  17. package/chunks/{bridge-HUUBAUDS.js → bridge-VL7ITBU5.js} +35 -42
  18. package/chunks/{build-GHIZ4MSZ.js → build-SSCNEHZZ.js} +1 -1
  19. package/chunks/{ca-N6VVUFVB.js → ca-2SL2BXTK.js} +201 -611
  20. package/chunks/{channel-worker-group-LFBT7K64.js → channel-worker-group-53CMOPFT.js} +5 -5
  21. package/chunks/{channel-worker-manager-3RUPERG2.js → channel-worker-manager-UTXILKC2.js} +5 -5
  22. package/chunks/{channel-worker-supervisor-A3KVATD3.js → channel-worker-supervisor-ZGO2W2MD.js} +4 -4
  23. package/chunks/{chunk-2LI23QA6.js → chunk-2HOVDT7W.js} +1 -1
  24. package/chunks/{chunk-QSZOJHCQ.js → chunk-2LL7TXB4.js} +2 -2
  25. package/chunks/{chunk-EGMNITTR.js → chunk-333CXMNJ.js} +5 -5
  26. package/chunks/{chunk-DGKZ6QL3.js → chunk-33XUAINQ.js} +21 -61
  27. package/chunks/{chunk-DKT6SIJC.js → chunk-4EP2PYYL.js} +5 -5
  28. package/chunks/{chunk-QW3QUYG5.js → chunk-4ILMYHEI.js} +3 -3
  29. package/chunks/{chunk-B5KE3KNO.js → chunk-4N3KMAIL.js} +32 -128
  30. package/chunks/{chunk-6ZBPS62S.js → chunk-4ODB7WIB.js} +1 -1
  31. package/chunks/{chunk-5XPUJM4N.js → chunk-4XNLIGVA.js} +298 -576
  32. package/chunks/{chunk-67SZUDUH.js → chunk-542SK7KV.js} +1608 -243
  33. package/chunks/{chunk-RZZNAWTE.js → chunk-5JBR5XIK.js} +2 -2
  34. package/chunks/{chunk-E4IMU4Y5.js → chunk-5SCI6E3E.js} +1 -1
  35. package/chunks/{chunk-ZKY7USAE.js → chunk-6AFUCL3D.js} +1 -1
  36. package/chunks/{chunk-5I5BM454.js → chunk-6EFTQYW7.js} +1 -1
  37. package/chunks/{chunk-BXCXDT2T.js → chunk-7PZ2ATFZ.js} +29 -54
  38. package/chunks/{chunk-FJZPCXZM.js → chunk-7RMOXZTC.js} +4 -4
  39. package/chunks/{chunk-XPWXDCW5.js → chunk-7SXZC7ID.js} +6 -7
  40. package/chunks/{chunk-O2WEV2LS.js → chunk-A5LYNIW7.js} +8 -8
  41. package/chunks/{chunk-SEHBVG2S.js → chunk-AJSJ5TTU.js} +1 -1
  42. package/chunks/{chunk-422RQSNN.js → chunk-AKX4WPPP.js} +86 -307
  43. package/chunks/{chunk-QVQCCBMW.js → chunk-ANPINBOF.js} +5 -5
  44. package/chunks/{chunk-JJEFX6U5.js → chunk-AQIEINAY.js} +1766 -28
  45. package/chunks/{chunk-7Z6JQEL6.js → chunk-AYCDXHZB.js} +1 -1
  46. package/chunks/{chunk-BKZEHVPV.js → chunk-B3KGZCQN.js} +169 -177
  47. package/chunks/{chunk-6X4GWOPW.js → chunk-BDBMYST4.js} +1 -1
  48. package/chunks/{chunk-25WFJZL5.js → chunk-BMWMT5Y2.js} +373 -3
  49. package/chunks/{chunk-EDANOBFR.js → chunk-BRRF37CO.js} +6 -6
  50. package/chunks/{chunk-QLJUC7TG.js → chunk-BVLROR2T.js} +1 -1
  51. package/chunks/{chunk-OQB4EXO4.js → chunk-C27BYUX6.js} +11 -14
  52. package/chunks/{chunk-GDBCCE2J.js → chunk-CB2HFGRV.js} +6 -31
  53. package/chunks/chunk-CPCVCKKF.js +358 -0
  54. package/chunks/{chunk-K6YXJ3J5.js → chunk-CV63PP6U.js} +1 -1
  55. package/chunks/{chunk-BWGIRN4Z.js → chunk-CZF3E5GF.js} +1 -1
  56. package/chunks/{chunk-6NAAGP57.js → chunk-D22SX43D.js} +1 -1
  57. package/chunks/{chunk-X6N25LXS.js → chunk-D2VIDMVM.js} +2 -2
  58. package/chunks/{chunk-E7O22QBU.js → chunk-DBE4QFZS.js} +23 -27
  59. package/chunks/{chunk-4ZAHUGSC.js → chunk-DP5GXXNZ.js} +1 -5
  60. package/chunks/{chunk-Q2YKNMLS.js → chunk-EAUYY7SS.js} +3 -3
  61. package/chunks/{chunk-KHOVYUHX.js → chunk-EIAK6Q2B.js} +2 -2
  62. package/chunks/{chunk-NPQDJGKU.js → chunk-EZVDJFZ7.js} +1 -1
  63. package/chunks/{chunk-FODK6UMO.js → chunk-FEOZBUMT.js} +27 -0
  64. package/chunks/{chunk-6NHK6HS7.js → chunk-FLSVD6BS.js} +3 -3
  65. package/chunks/{chunk-LLJNFFFT.js → chunk-FQD7GFSV.js} +3 -3
  66. package/chunks/{chunk-T2L47JJK.js → chunk-FSL5W5TI.js} +3 -3
  67. package/chunks/{chunk-JCW2R7WC.js → chunk-G45X5TRN.js} +72 -1
  68. package/chunks/{chunk-ZHERRXZJ.js → chunk-GKY2OJ7R.js} +1 -1
  69. package/chunks/{chunk-6IL7KRLE.js → chunk-GMGDLUC7.js} +1 -1
  70. package/chunks/{chunk-N2HDLRGT.js → chunk-HZPN55E5.js} +1 -1
  71. package/chunks/{chunk-NTC7J4X7.js → chunk-I2PYAYFM.js} +3 -3
  72. package/chunks/{chunk-RVWSD6GI.js → chunk-IR46U7RB.js} +3 -3
  73. package/chunks/{chunk-W6E7KTQL.js → chunk-IVPSS6EL.js} +4 -4
  74. package/chunks/{chunk-4K56OJFJ.js → chunk-JD3MKVKL.js} +1 -1
  75. package/chunks/{chunk-SP5WRGVG.js → chunk-JNWZQ27S.js} +3 -3
  76. package/chunks/{chunk-VAUDHMX6.js → chunk-KDC6GNQR.js} +4 -4
  77. package/chunks/{chunk-5TSCAYXT.js → chunk-KG3XV6FH.js} +2 -29
  78. package/chunks/{chunk-HCQ2Q3KF.js → chunk-KOR3XKCA.js} +4 -10
  79. package/chunks/{chunk-52Y2T4L3.js → chunk-KQNM4EO7.js} +5 -137
  80. package/chunks/{chunk-4K7VDKAD.js → chunk-KTUQMDEP.js} +1 -1
  81. package/chunks/{chunk-Z2FTZM4Z.js → chunk-KX6UK4VJ.js} +19929 -22391
  82. package/chunks/{chunk-JYS55H6Z.js → chunk-MAQQGNQ5.js} +7 -66
  83. package/chunks/{chunk-7FNV372W.js → chunk-MJ6S23WZ.js} +4 -4
  84. package/chunks/{chunk-D7WXIW7H.js → chunk-NBMIC7DR.js} +4 -4
  85. package/chunks/{chunk-HGGEN2SC.js → chunk-NDMQLV4Y.js} +4 -4
  86. package/chunks/{chunk-FFFM6NJV.js → chunk-NEEB7UEN.js} +2 -1
  87. package/chunks/{chunk-WKGGZF7Z.js → chunk-NGFEPAE6.js} +6 -8
  88. package/chunks/{chunk-RVLZCXEE.js → chunk-NIJEXGV6.js} +10 -79
  89. package/chunks/{chunk-LMY4HCMA.js → chunk-O3OCNYY5.js} +2 -2
  90. package/chunks/{chunk-RIEABAJC.js → chunk-O3Z73NBP.js} +7 -7
  91. package/chunks/{chunk-VBZBVAQ3.js → chunk-OEO2ERWK.js} +33 -54
  92. package/chunks/{chunk-KQQ757OQ.js → chunk-OLMETXLX.js} +2 -2
  93. package/chunks/{chunk-LIZRAKPB.js → chunk-OOCI5VVU.js} +1 -1
  94. package/chunks/{chunk-GPSKDNEE.js → chunk-OONJNQ42.js} +3 -3
  95. package/chunks/{chunk-YM3SZTH4.js → chunk-OP4MOGXF.js} +1 -8
  96. package/chunks/{chunk-FCPNARPD.js → chunk-OWCALFEG.js} +1 -1
  97. package/chunks/{chunk-MPZ34JE7.js → chunk-OYZWQNWG.js} +2 -2
  98. package/chunks/{chunk-QBUDF33N.js → chunk-PBATSWUQ.js} +1 -1
  99. package/chunks/{chunk-6MNDXSG6.js → chunk-PBWEWI4N.js} +69 -76
  100. package/chunks/{chunk-OCCDRJIS.js → chunk-PF4CHQOJ.js} +6 -6
  101. package/chunks/{chunk-BH32VITB.js → chunk-PGEPSDJI.js} +8 -13
  102. package/chunks/{chunk-4LVZNIDO.js → chunk-QKYTTBYW.js} +1 -1
  103. package/chunks/{chunk-VYPFXUCB.js → chunk-R3VWUU2E.js} +1 -1
  104. package/chunks/{chunk-RV4C2ZFG.js → chunk-RFIAR4YL.js} +1 -1
  105. package/chunks/{chunk-P4B4SXDS.js → chunk-S2PD3EZD.js} +1 -1
  106. package/chunks/{chunk-H6T65C7O.js → chunk-S2W2LVDU.js} +3 -3
  107. package/chunks/{chunk-VJ4P64ID.js → chunk-S2XVRHDN.js} +1 -1
  108. package/chunks/chunk-SEKHYHMS.js +45 -0
  109. package/chunks/{chunk-JNEA3NW7.js → chunk-SJMV7ZBK.js} +8 -8
  110. package/chunks/{chunk-THJNPLI4.js → chunk-TB6UDU4T.js} +16 -16
  111. package/chunks/{chunk-R3D7SK6L.js → chunk-TIH2ZTOC.js} +2 -2
  112. package/chunks/{chunk-3FML67YK.js → chunk-TKLLK6XQ.js} +11 -11
  113. package/chunks/{chunk-SMVDDPEJ.js → chunk-TMQ6XQCX.js} +53 -170
  114. package/chunks/{chunk-QNLNLENL.js → chunk-UEY4AYUL.js} +2 -2
  115. package/chunks/{chunk-BLTELXOK.js → chunk-VDWBQ5AW.js} +1 -1
  116. package/chunks/{chunk-WGBLCAVW.js → chunk-VEXFOTEO.js} +3 -3
  117. package/chunks/{chunk-4RAFVWW2.js → chunk-VZQUV7VK.js} +1 -1
  118. package/chunks/chunk-W7FJ3N32.js +49 -0
  119. package/chunks/{chunk-UGYMA4EI.js → chunk-W7H223ZZ.js} +1 -1
  120. package/chunks/{chunk-UH3WSE5L.js → chunk-X6YQWCIJ.js} +1 -13
  121. package/chunks/{chunk-H4AR2JQF.js → chunk-XVVH63JG.js} +3 -3
  122. package/chunks/{chunk-QKTHJXCS.js → chunk-Y2ENGUD6.js} +1 -1
  123. package/chunks/{chunk-QD6BRERJ.js → chunk-YWEW33JY.js} +7 -7
  124. package/chunks/{chunk-57FIIFJN.js → chunk-ZEOZL37W.js} +1 -1
  125. package/chunks/chunk-ZFKNWQGQ.js +74639 -0
  126. package/chunks/{computer-use-XPLRRVJM.js → computer-use-NIWQNUZF.js} +35 -42
  127. package/chunks/{config-utils-WYUQ7II4.js → config-utils-AHQ6YZ66.js} +3 -3
  128. package/chunks/contextCommand-L2COEUHS.js +66 -0
  129. package/chunks/{create-sub-session-5YJR5PAM.js → create-sub-session-MGNX52P3.js} +30 -37
  130. package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-P26FE5GG.js} +3 -3
  131. package/chunks/{cron-create-KTWJM7QT.js → cron-create-JWFHBDRQ.js} +5 -5
  132. package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-GDX4E26G.js} +5 -5
  133. package/chunks/{cron-list-PXDPGEDQ.js → cron-list-USMAIWPT.js} +5 -5
  134. package/chunks/{daemon-KLPTQIE4.js → daemon-RG2MAI6T.js} +81 -138
  135. package/chunks/daemon-status-provider-NL4IAG7B.js +74 -0
  136. package/chunks/{de-4IBXM7CN.js → de-I7ZIYXZC.js} +1 -5
  137. package/chunks/{dist-HMU6CYS4.js → dist-2BHAYBKP.js} +2 -2
  138. package/chunks/{dist-PJLG2XYX.js → dist-2MIU4UUH.js} +1 -1
  139. package/chunks/{dist-UIFWIFRO.js → dist-53PZYC5B.js} +2 -2
  140. package/chunks/{dist-OAV7LJGJ.js → dist-AU7NQQRP.js} +1 -1
  141. package/chunks/{dist-OMW6WDEO.js → dist-FUTEXY6A.js} +1 -1
  142. package/chunks/{dist-XRYV6TJP.js → dist-WGTQO7F2.js} +25 -65
  143. package/chunks/{earlyInputCapture-XMECIN6Y.js → earlyInputCapture-L6I2A22T.js} +31 -38
  144. package/chunks/{edit-MMPLBVZU.js → edit-3QV3JZJL.js} +37 -42
  145. package/chunks/{en-USMCCJAJ.js → en-XE34GKAA.js} +1 -5
  146. package/chunks/{enter-worktree-BD7MCCG7.js → enter-worktree-4GMMF7EG.js} +35 -42
  147. package/chunks/{enterPlanMode-BQNJC23R.js → enterPlanMode-L5UWBAUC.js} +36 -48
  148. package/chunks/{environment-F3KL5Z5S.js → environment-3OV7UQOT.js} +32 -39
  149. package/chunks/{errors-VJ544HIS.js → errors-LEOF5QG4.js} +32 -39
  150. package/chunks/{exit-worktree-RDIQXZMI.js → exit-worktree-DDP57JLV.js} +35 -42
  151. package/chunks/{exitPlanMode-UNCZQPTX.js → exitPlanMode-CJBLGPIP.js} +35 -42
  152. package/chunks/{fast-path-H7N32H7D.js → fast-path-M6RP2ING.js} +3 -4
  153. package/chunks/{fast-path-settings-XB3CPUJT.js → fast-path-settings-DAOVFADC.js} +2 -2
  154. package/chunks/{fr-WVHEBDDB.js → fr-X7KDVZIY.js} +1 -5
  155. package/chunks/{gemini-G4VKT5DQ.js → gemini-H4PHBJTL.js} +89 -97
  156. package/chunks/{geminiContentGenerator-MDAL2B4C.js → geminiContentGenerator-VURJYPWP.js} +5 -5
  157. package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-EXV7SWPA.js} +1 -1
  158. package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-IUOMFXU3.js} +1 -1
  159. package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-K7XJYFHL.js} +1 -1
  160. package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-EA5FDRJ6.js} +1 -1
  161. package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-KBA6RAI5.js} +1 -1
  162. package/chunks/{glob-JBT6FGZL.js → glob-2KUSRAVQ.js} +35 -42
  163. package/chunks/{grep-5NUIQ63X.js → grep-B5RXVESV.js} +35 -42
  164. package/chunks/handleAutoUpdate-QQVIWXKT.js +67 -0
  165. package/chunks/{i18n-IPHO7BGL.js → i18n-N6OBDORT.js} +31 -38
  166. package/chunks/initializer-6WCFNDLL.js +72 -0
  167. package/chunks/installationInfo-6J3WPXNS.js +64 -0
  168. package/chunks/{ja-KY4ROZTE.js → ja-2ICT3KXF.js} +1 -5
  169. package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-DWRJMNH3.js} +3 -3
  170. package/chunks/list-HOWQSWP6.js +75 -0
  171. package/chunks/loadedSettingsAdapter-AO4YBRXZ.js +69 -0
  172. package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-5GLTUBHA.js} +6 -6
  173. package/chunks/{ls-J2ZI5XYK.js → ls-FHBY3Y7I.js} +5 -5
  174. package/chunks/{lsp-UMS3NUB5.js → lsp-B6VMEW6Y.js} +3 -3
  175. package/chunks/mcp-QH7QNXOH.js +69 -0
  176. package/chunks/{monitor-SIX5LMEK.js → monitor-GLJZDNPS.js} +35 -42
  177. package/chunks/nonInteractiveCli-TI7EMPXD.js +126 -0
  178. package/chunks/{notebook-edit-CWVOTW3I.js → notebook-edit-AVCIWS4F.js} +38 -43
  179. package/chunks/{openaiContentGenerator-FELHHJAN.js → openaiContentGenerator-B7W24G3D.js} +17 -22
  180. package/chunks/{pidfile-2ZQGHGPJ.js → pidfile-UEHAT6DH.js} +31 -38
  181. package/chunks/{processUtils-M3RKQCI4.js → processUtils-XZPY2PBB.js} +2 -2
  182. package/chunks/{pt-OK455PLH.js → pt-JJ4XPIBP.js} +1 -5
  183. package/chunks/{qwenContentGenerator-RBFIZMBC.js → qwenContentGenerator-6GUTWJIC.js} +35 -44
  184. package/chunks/{qwenOAuth2-S2BUDQM3.js → qwenOAuth2-GASEEWGU.js} +15 -18
  185. package/chunks/{read-file-WQCCV6HY.js → read-file-SQJONF6A.js} +11 -13
  186. package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-AKCL7I43.js} +3 -3
  187. package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-PEUB7727.js} +3 -3
  188. package/chunks/{resumeHistoryUtils-NDYMU2WO.js → resumeHistoryUtils-PFQ2A23X.js} +36 -43
  189. package/chunks/ripGrep-QCK22GDU.js +59 -0
  190. package/chunks/{ru-7SPDGMGD.js → ru-STR4KTW7.js} +1 -5
  191. package/chunks/{run-qwen-serve-FY5MMHPN.js → run-qwen-serve-OZGR3FQA.js} +82 -104
  192. package/chunks/{runtime-LONMMWKO.js → runtime-SNVAP6EH.js} +40 -49
  193. package/chunks/{scheduler-KYNL2MHI.js → scheduler-Z7QLMUWA.js} +30 -37
  194. package/chunks/{send-message-PYIJ2PZL.js → send-message-3RHE7HSM.js} +4 -6
  195. package/chunks/{serve-VNORFL4H.js → serve-BT7KS6SC.js} +36 -43
  196. package/chunks/{server-X2KCJKA3.js → server-SO64U3X5.js} +284 -988
  197. package/chunks/{session-CSYW4ELX.js → session-2KL2WQAH.js} +173 -92
  198. package/chunks/{settings-QZJ4XWS3.js → settings-KITVOUSV.js} +39 -46
  199. package/chunks/{shell-ELMKOZKP.js → shell-BITUVH2R.js} +30 -37
  200. package/chunks/{skill-IBUGJX5S.js → skill-SOQHY455.js} +20 -24
  201. package/chunks/{spawnChannel-SWCGOB2N.js → spawnChannel-2BU3AULL.js} +32 -39
  202. package/chunks/{src-FOUKVFPZ.js → src-43LM7JLB.js} +209 -279
  203. package/chunks/{standalone-update-5U5IRIN5.js → standalone-update-YG5JUYCM.js} +32 -39
  204. package/chunks/{startInteractiveUI-B3KIQ363.js → startInteractiveUI-3RGTGEX5.js} +895 -1092
  205. package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-FG5PQKIR.js} +4 -4
  206. package/chunks/{task-create-7474AJJD.js → task-create-HX32YXO7.js} +8 -10
  207. package/chunks/{task-list-633HGOIB.js → task-list-QWSY4ZIU.js} +6 -6
  208. package/chunks/{task-stop-MNUGHPIA.js → task-stop-GWC6UWAL.js} +3 -3
  209. package/chunks/{task-update-66GQB5LI.js → task-update-NCTAB73Q.js} +8 -10
  210. package/chunks/{team-create-AT3OPBS4.js → team-create-FXN3PEBP.js} +35 -42
  211. package/chunks/{team-delete-BB3CG3QF.js → team-delete-KK37HTOG.js} +6 -6
  212. package/chunks/{team-plan-approval-6AYAQ3KG.js → team-plan-approval-GEIZ356Q.js} +35 -42
  213. package/chunks/theme-manager-IAETOI25.js +63 -0
  214. package/chunks/{todoWrite-KRAUN54W.js → todoWrite-ERCAMLFS.js} +5 -5
  215. package/chunks/{tool-search-2ZFYIVVW.js → tool-search-XKK7DNOK.js} +17 -21
  216. package/chunks/total-session-admission-BJLDHKJN.js +69 -0
  217. package/chunks/{trustedFolders-VHGVDSZU.js → trustedFolders-5XCVNEUU.js} +31 -38
  218. package/chunks/{update-relaunch-RM5E3W4P.js → update-relaunch-FMVZK6XF.js} +17 -17
  219. package/chunks/updateCheck-YZZB7YBU.js +70 -0
  220. package/chunks/{useAutoAcceptIndicator-AAPKHC46.js → useAutoAcceptIndicator-ZSQX4I2H.js} +40 -47
  221. package/chunks/{validateNonInterActiveAuth-7WGVSFOZ.js → validateNonInterActiveAuth-PRVEB6GG.js} +72 -79
  222. package/chunks/{version-M7BDNXTT.js → version-AZMG6KWL.js} +1 -1
  223. package/chunks/{web-fetch-UZSKXY3L.js → web-fetch-EPGJ5OQQ.js} +41 -100
  224. package/chunks/{workflow-OCSRM2L2.js → workflow-UTNVPW22.js} +39 -47
  225. package/chunks/workspace-providers-status-EADV364W.js +72 -0
  226. package/chunks/{workspace-registration-store-QDOLWEMY.js → workspace-registration-store-F3ZX3YHT.js} +2 -8
  227. package/chunks/workspace-registry-W6VMFYZU.js +73 -0
  228. package/chunks/workspace-service-F3KIN2UN.js +84 -0
  229. package/chunks/workspace-skills-status-YVICUR5Y.js +71 -0
  230. package/chunks/write-file-CVGF2OKV.js +596 -0
  231. package/chunks/{zh-WY5DWYZD.js → zh-6ANG2HTL.js} +1 -5
  232. package/chunks/{zh-TW-BM47YBFH.js → zh-TW-4RR3YHNN.js} +1 -5
  233. package/cli-entry.js +12 -164
  234. package/cli.js +11 -18
  235. package/locales/ca.js +203 -772
  236. package/locales/de.js +2 -8
  237. package/locales/en.js +2 -8
  238. package/locales/fr.js +2 -8
  239. package/locales/ja.js +2 -8
  240. package/locales/pt.js +2 -8
  241. package/locales/ru.js +2 -8
  242. package/locales/zh-TW.js +2 -8
  243. package/locales/zh.js +2 -8
  244. package/package.json +3 -3
  245. package/web-shell/assets/{arc-ByltRugA.js → arc-Buk1besA.js} +1 -1
  246. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CCRTto5d.js → architectureDiagram-3BPJPVTR-B1aUKYDC.js} +1 -1
  247. package/web-shell/assets/{blockDiagram-GPEHLZMM-Jfy36u1L.js → blockDiagram-GPEHLZMM-CRTdg3Zx.js} +1 -1
  248. package/web-shell/assets/{c4Diagram-AAUBKEIU-4d5FfEZ0.js → c4Diagram-AAUBKEIU-DFdRMp5g.js} +1 -1
  249. package/web-shell/assets/channel-04R0vLbG.js +1 -0
  250. package/web-shell/assets/{chunk-2J33WTMH-BPwxCEro.js → chunk-2J33WTMH-4rYQdkEI.js} +1 -1
  251. package/web-shell/assets/{chunk-4BX2VUAB-jY7ZmJWY.js → chunk-4BX2VUAB-Coi-pQJy.js} +1 -1
  252. package/web-shell/assets/{chunk-55IACEB6-C98HgCsS.js → chunk-55IACEB6-BtBjz02t.js} +1 -1
  253. package/web-shell/assets/{chunk-727SXJPM-cDu-ge-q.js → chunk-727SXJPM-CGYOWorl.js} +1 -1
  254. package/web-shell/assets/{chunk-AQP2D5EJ-BKdJwxXK.js → chunk-AQP2D5EJ-CH5AKhqx.js} +1 -1
  255. package/web-shell/assets/{chunk-FMBD7UC4-DnuxqwMu.js → chunk-FMBD7UC4-Cd50-w85.js} +1 -1
  256. package/web-shell/assets/{chunk-ND2GUHAM-C4fZNPv0.js → chunk-ND2GUHAM-C2wF3KCK.js} +1 -1
  257. package/web-shell/assets/{chunk-QZHKN3VN-Cf4XWOmz.js → chunk-QZHKN3VN-pCeRTaWi.js} +1 -1
  258. package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +1 -0
  259. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +1 -0
  260. package/web-shell/assets/{cose-bilkent-S5V4N54A-C82mFiqj.js → cose-bilkent-S5V4N54A-B-_fAB6D.js} +1 -1
  261. package/web-shell/assets/{dagre-BM42HDAG-Df8KACER.js → dagre-BM42HDAG-ChSPNHpL.js} +1 -1
  262. package/web-shell/assets/{diagram-2AECGRRQ-EzNs7s_2.js → diagram-2AECGRRQ-BX7cFOF3.js} +1 -1
  263. package/web-shell/assets/{diagram-5GNKFQAL-BRLNvreg.js → diagram-5GNKFQAL-BQUTW92n.js} +1 -1
  264. package/web-shell/assets/{diagram-KO2AKTUF-2HLYHRjC.js → diagram-KO2AKTUF-BkYPh3e4.js} +1 -1
  265. package/web-shell/assets/{diagram-LMA3HP47-DeH0NzSp.js → diagram-LMA3HP47-Cl6jsNyx.js} +1 -1
  266. package/web-shell/assets/{diagram-OG6HWLK6-k5Gn47-G.js → diagram-OG6HWLK6-DRWoHz8n.js} +1 -1
  267. package/web-shell/assets/{erDiagram-TEJ5UH35-gPHFo79f.js → erDiagram-TEJ5UH35-CGvFcZco.js} +1 -1
  268. package/web-shell/assets/{flowDiagram-I6XJVG4X-DYBOiTRW.js → flowDiagram-I6XJVG4X-vms6oVdv.js} +1 -1
  269. package/web-shell/assets/{ganttDiagram-6RSMTGT7-cxjAuic9.js → ganttDiagram-6RSMTGT7-ukT_sfmi.js} +1 -1
  270. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-3nPqpmCP.js → gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js} +1 -1
  271. package/web-shell/assets/index-DgkKrjw3.js +1187 -0
  272. package/web-shell/assets/index-Rv6mOAN9.css +5 -0
  273. package/web-shell/assets/{index-Cl8d-1bK.js → index-wFXp7W68.js} +1 -1
  274. package/web-shell/assets/{infoDiagram-5YYISTIA-Dph21pR5.js → infoDiagram-5YYISTIA-DHJdSi7x.js} +1 -1
  275. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Cjg1hSaG.js → ishikawaDiagram-YF4QCWOH-DOvd2Wph.js} +1 -1
  276. package/web-shell/assets/{journeyDiagram-JHISSGLW-CR-IzvnU.js → journeyDiagram-JHISSGLW-CH_urMCT.js} +1 -1
  277. package/web-shell/assets/{kanban-definition-UN3LZRKU-BYmuybuC.js → kanban-definition-UN3LZRKU-FKiBdgbH.js} +1 -1
  278. package/web-shell/assets/{linear-CngEEoy8.js → linear-0ZVQFVKf.js} +1 -1
  279. package/web-shell/assets/{mermaid.core-G6fbZRPf.js → mermaid.core-DJ05ZZIK.js} +5 -5
  280. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtnqnUwJ.js → mindmap-definition-RKZ34NQL-BPuUhkUm.js} +1 -1
  281. package/web-shell/assets/{pieDiagram-4H26LBE5-XTq6UHIA.js → pieDiagram-4H26LBE5-yLFKcXyG.js} +1 -1
  282. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D1J5PrsS.js → quadrantDiagram-W4KKPZXB-irWqc1pE.js} +1 -1
  283. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CLcBUy3t.js → requirementDiagram-4Y6WPE33-B_4uMoIV.js} +1 -1
  284. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-iwKV02_6.js → sankeyDiagram-5OEKKPKP-ciA4GPwk.js} +1 -1
  285. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-7NFYQcEX.js → sequenceDiagram-3UESZ5HK-CRdZvy0U.js} +1 -1
  286. package/web-shell/assets/{stateDiagram-AJRCARHV-Bvm4Wih6.js → stateDiagram-AJRCARHV-DaYIkCCn.js} +1 -1
  287. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +1 -0
  288. package/web-shell/assets/{timeline-definition-PNZ67QCA-B4FZFE9O.js → timeline-definition-PNZ67QCA-oBUKv6iH.js} +1 -1
  289. package/web-shell/assets/{vennDiagram-CIIHVFJN-CvMBpmtL.js → vennDiagram-CIIHVFJN-CGW9Sdmb.js} +1 -1
  290. package/web-shell/assets/{wardley-L42UT6IY-E3ag2327.js → wardley-L42UT6IY-CvwKJOCm.js} +1 -1
  291. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BEXWlgxC.js → wardleyDiagram-YWT4CUSO-Ipc260sN.js} +1 -1
  292. package/web-shell/assets/{xychartDiagram-2RQKCTM6-CICK05gI.js → xychartDiagram-2RQKCTM6-D6-CM7pK.js} +1 -1
  293. package/web-shell/index.html +2 -2
  294. package/chunks/agent-headless-QTKDKVED.js +0 -68
  295. package/chunks/chunk-2RFKHEXL.js +0 -74
  296. package/chunks/chunk-43T5WDQ7.js +0 -127
  297. package/chunks/chunk-6PVPNMXU.js +0 -29
  298. package/chunks/chunk-7362QS5B.js +0 -2256
  299. package/chunks/chunk-D7ZI5C7O.js +0 -20600
  300. package/chunks/chunk-GLNBDYUX.js +0 -38
  301. package/chunks/chunk-GMLTZG4O.js +0 -391
  302. package/chunks/chunk-HTR4WV6U.js +0 -327
  303. package/chunks/chunk-KWK7UE6L.js +0 -6194
  304. package/chunks/chunk-M7WBGLYP.js +0 -151
  305. package/chunks/chunk-MMT6IQCT.js +0 -121
  306. package/chunks/chunk-NABLFI57.js +0 -82
  307. package/chunks/chunk-OQ5SYCPE.js +0 -10017
  308. package/chunks/chunk-PI6ECBP3.js +0 -1780
  309. package/chunks/chunk-U7ZFW55U.js +0 -2098
  310. package/chunks/chunk-WHGVTP7Q.js +0 -1049
  311. package/chunks/chunk-XHATNRQA.js +0 -1500
  312. package/chunks/contextCommand-2W675HYY.js +0 -73
  313. package/chunks/daemon-status-provider-QZCVTG6N.js +0 -81
  314. package/chunks/handleAutoUpdate-EF3LY7MI.js +0 -74
  315. package/chunks/initializer-HCOCXGBI.js +0 -79
  316. package/chunks/installationInfo-UEBNCLFW.js +0 -73
  317. package/chunks/list-4SKXTNSD.js +0 -82
  318. package/chunks/loadedSettingsAdapter-EQWK5CG6.js +0 -76
  319. package/chunks/managed-npm-update-ZUZU4UFM.js +0 -333
  320. package/chunks/mcp-4Z3EC4SI.js +0 -76
  321. package/chunks/nonInteractiveCli-FTUKIU5R.js +0 -133
  322. package/chunks/ripGrep-K2E3F5ED.js +0 -66
  323. package/chunks/sdk-exporters-grpc-ETLH47EP.js +0 -23214
  324. package/chunks/sdk-exporters-http-T3POX73F.js +0 -563
  325. package/chunks/sdk-impl-NSLPDH6I.js +0 -9193
  326. package/chunks/theme-manager-733OBN7I.js +0 -70
  327. package/chunks/total-session-admission-TZ4NVA6B.js +0 -76
  328. package/chunks/updateCheck-DGY3LFKB.js +0 -89
  329. package/chunks/web-search-EG64C5VB.js +0 -731
  330. package/chunks/workspace-providers-status-HZLYOFRA.js +0 -79
  331. package/chunks/workspace-registry-EVSTTG3G.js +0 -80
  332. package/chunks/workspace-service-DNQMT6FN.js +0 -91
  333. package/chunks/workspace-skills-status-ICGPGD6F.js +0 -78
  334. package/chunks/write-file-K6R5F3IZ.js +0 -66
  335. package/web-shell/assets/channel-4N2UIFcG.js +0 -1
  336. package/web-shell/assets/classDiagram-4FO5ZUOK-Q4dYOtsh.js +0 -1
  337. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Q4dYOtsh.js +0 -1
  338. package/web-shell/assets/index-B7jzUZ_s.css +0 -5
  339. package/web-shell/assets/index-gE8OWwj_.js +0 -1197
  340. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-xXU_zO2Z.js +0 -1
  341. package/chunks/{chunk-QZJY47IE.js → chunk-PEJWA3QQ.js} +5 -5
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  createDebugLogger,
5
5
  isNodeError
6
- } from "./chunk-OQB4EXO4.js";
6
+ } from "./chunk-C27BYUX6.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-5O2XNYP6.js";
@@ -7,12 +7,16 @@ import {
7
7
  isQwenQuotaExceededError,
8
8
  isRateLimitError,
9
9
  retryContext
10
- } from "./chunk-D7ZI5C7O.js";
10
+ } from "./chunk-ZFKNWQGQ.js";
11
+ import {
12
+ isTlsVerificationDisabled
13
+ } from "./chunk-6EFTQYW7.js";
11
14
  import {
12
15
  createDebugLogger,
16
+ getErrorMessage,
13
17
  getErrorStatus,
14
18
  isAbortError
15
- } from "./chunk-OQB4EXO4.js";
19
+ } from "./chunk-C27BYUX6.js";
16
20
  import {
17
21
  init_esbuild_shims
18
22
  } from "./chunk-5O2XNYP6.js";
@@ -493,13 +497,379 @@ function logRetryAtStatusLevel(message, retryDiagnostics, error, errorStatus) {
493
497
  }
494
498
  __name(logRetryAtStatusLevel, "logRetryAtStatusLevel");
495
499
 
500
+ // packages/core/src/utils/fetch.ts
501
+ init_esbuild_shims();
502
+ import { URL } from "node:url";
503
+ var PRIVATE_IP_RANGES = [
504
+ /^10\./,
505
+ /^127\./,
506
+ /^172\.(1[6-9]|2[0-9]|3[0-1])\./,
507
+ /^192\.168\./,
508
+ // IPv4 link-local (incl. cloud metadata endpoints) and CGNAT 100.64.0.0/10.
509
+ /^169\.254\./,
510
+ /^100\.(6[4-9]|[7-9][0-9]|1[01][0-9]|12[0-7])\./,
511
+ /^0\.0\.0\.0$/,
512
+ /^::1$/,
513
+ /^::$/,
514
+ // ULA fc00::/7 covers fc00: through fdff: (fd00: is the common prefix in
515
+ // practice); link-local fe80::/10 covers fe80: through febf:.
516
+ /^f[cd][0-9a-f]{2}:/i,
517
+ /^fe[89ab][0-9a-f]:/i
518
+ ];
519
+ var TLS_ERROR_CODES = /* @__PURE__ */ new Set([
520
+ "UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
521
+ "UNABLE_TO_VERIFY_LEAF_SIGNATURE",
522
+ "SELF_SIGNED_CERT_IN_CHAIN",
523
+ "DEPTH_ZERO_SELF_SIGNED_CERT",
524
+ "CERT_HAS_EXPIRED",
525
+ "ERR_TLS_CERT_ALTNAME_INVALID"
526
+ ]);
527
+ var FETCH_TROUBLESHOOTING_ERROR_CODES = /* @__PURE__ */ new Set([
528
+ ...TLS_ERROR_CODES,
529
+ "ECONNRESET",
530
+ "ETIMEDOUT",
531
+ "ECONNREFUSED",
532
+ "ENOTFOUND",
533
+ "EAI_AGAIN",
534
+ "EHOSTUNREACH",
535
+ "ENETUNREACH"
536
+ ]);
537
+ var FetchError = class extends Error {
538
+ constructor(message, code) {
539
+ super(message);
540
+ this.code = code;
541
+ this.name = "FetchError";
542
+ }
543
+ static {
544
+ __name(this, "FetchError");
545
+ }
546
+ };
547
+ var CONNECTION_LEVEL_ERROR_CODES = /* @__PURE__ */ new Set([
548
+ ...TLS_ERROR_CODES,
549
+ "ECONNREFUSED",
550
+ "EPROTO",
551
+ "ERR_SSL_WRONG_VERSION_NUMBER",
552
+ // Servers that don't speak TLS on 443 often reset during the handshake
553
+ // rather than refusing the connection. Safe to include: the http fallback
554
+ // only ever fires for URLs the caller requested as http.
555
+ "ECONNRESET",
556
+ "UND_ERR_SOCKET",
557
+ // Filtered port 443 (silent drop): undici's own bounded connect timeout.
558
+ // Deliberately NOT the full-budget ETIMEDOUT — that can fire mid-body on
559
+ // a healthy https server, and a fallback there would double a worst-case
560
+ // 60s wait for an ambiguous gain.
561
+ "UND_ERR_CONNECT_TIMEOUT"
562
+ ]);
563
+ function isConnectionLevelError(error) {
564
+ return error instanceof FetchError && error.code !== void 0 && CONNECTION_LEVEL_ERROR_CODES.has(error.code);
565
+ }
566
+ __name(isConnectionLevelError, "isConnectionLevelError");
567
+ function mappedIpv4(hostname) {
568
+ const match = /^::ffff:(.+)$/i.exec(hostname);
569
+ if (!match) return void 0;
570
+ const tail = match[1];
571
+ if (tail.includes(".")) return tail;
572
+ const groups = tail.split(":");
573
+ if (groups.length !== 2) return void 0;
574
+ const hi = Number.parseInt(groups[0], 16);
575
+ const lo = Number.parseInt(groups[1], 16);
576
+ if (Number.isNaN(hi) || Number.isNaN(lo)) return void 0;
577
+ return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
578
+ }
579
+ __name(mappedIpv4, "mappedIpv4");
580
+ function isPrivateIp(url) {
581
+ try {
582
+ const hostname = new URL(url).hostname.replace(/^\[|\]$/g, "");
583
+ const target = mappedIpv4(hostname) ?? hostname;
584
+ return PRIVATE_IP_RANGES.some((range) => range.test(target));
585
+ } catch (_e) {
586
+ return false;
587
+ }
588
+ }
589
+ __name(isPrivateIp, "isPrivateIp");
590
+ var INTERNAL_HOST_SUFFIXES = [".local", ".internal", ".lan", ".home.arpa"];
591
+ function isPrivateHost(url) {
592
+ try {
593
+ const hostname = new URL(url).hostname.toLowerCase();
594
+ return hostname === "localhost" || hostname.endsWith(".localhost") || hostname === "host.docker.internal" || // Single-label hostnames (intranet, ci, printserver) are never public.
595
+ // IPv6 literals are bracketed and dot-free but CAN be public — they
596
+ // are classified by isPrivateIp below, not by this heuristic.
597
+ !hostname.includes(".") && !hostname.startsWith("[") || INTERNAL_HOST_SUFFIXES.some((suffix) => hostname.endsWith(suffix)) || isPrivateIp(url);
598
+ } catch {
599
+ return false;
600
+ }
601
+ }
602
+ __name(isPrivateHost, "isPrivateHost");
603
+ var REDIRECT_STATUSES = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
604
+ function isPermittedRedirect(originalUrl, redirectUrl) {
605
+ try {
606
+ const original = new URL(originalUrl);
607
+ const redirect = new URL(redirectUrl);
608
+ if (redirect.protocol !== original.protocol) return false;
609
+ if (redirect.port !== original.port) return false;
610
+ if (redirect.username || redirect.password) return false;
611
+ const stripWww = /* @__PURE__ */ __name((hostname) => hostname.replace(/^www\./, ""), "stripWww");
612
+ return stripWww(original.hostname) === stripWww(redirect.hostname);
613
+ } catch {
614
+ return false;
615
+ }
616
+ }
617
+ __name(isPermittedRedirect, "isPermittedRedirect");
618
+ var RETRYABLE_STATUSES = /* @__PURE__ */ new Set([403, 429]);
619
+ var RETRYABLE_ERROR_CODES = /* @__PURE__ */ new Set([
620
+ "ECONNRESET",
621
+ "EAI_AGAIN",
622
+ "UND_ERR_SOCKET"
623
+ ]);
624
+ var RETRY_DELAY_MS = 500;
625
+ async function fetchWithPolicy(url, options) {
626
+ const timeoutSignal = AbortSignal.timeout(options.timeoutMs);
627
+ const signal = options.signal ? AbortSignal.any([options.signal, timeoutSignal]) : timeoutSignal;
628
+ const abortError = /* @__PURE__ */ __name(() => {
629
+ if (options.signal?.aborted) {
630
+ return options.signal.reason instanceof Error ? options.signal.reason : new FetchError("Request aborted", "ABORT_ERR");
631
+ }
632
+ if (timeoutSignal.aborted) {
633
+ return new FetchError(
634
+ `Request timed out after ${options.timeoutMs}ms`,
635
+ "ETIMEDOUT"
636
+ );
637
+ }
638
+ return void 0;
639
+ }, "abortError");
640
+ let first;
641
+ try {
642
+ first = await fetchPolicyAttempt(url, options, signal, timeoutSignal);
643
+ } catch (error) {
644
+ if (error instanceof FetchError && error.code !== void 0 && RETRYABLE_ERROR_CODES.has(error.code) && !signal.aborted) {
645
+ try {
646
+ await delay(RETRY_DELAY_MS, signal);
647
+ } catch {
648
+ throw abortError() ?? error;
649
+ }
650
+ return fetchPolicyAttempt(url, options, signal, timeoutSignal);
651
+ }
652
+ throw error;
653
+ }
654
+ if (first.kind === "response" && RETRYABLE_STATUSES.has(first.status) && !signal.aborted) {
655
+ try {
656
+ await delay(RETRY_DELAY_MS, signal);
657
+ return await fetchPolicyAttempt(url, options, signal, timeoutSignal);
658
+ } catch {
659
+ const aborted = abortError();
660
+ if (aborted) throw aborted;
661
+ return first;
662
+ }
663
+ }
664
+ return first;
665
+ }
666
+ __name(fetchWithPolicy, "fetchWithPolicy");
667
+ async function fetchPolicyAttempt(url, options, signal, timeoutSignal) {
668
+ const wrapAbort = /* @__PURE__ */ __name((error) => {
669
+ if (options.signal?.aborted) {
670
+ throw options.signal.reason instanceof Error ? options.signal.reason : new FetchError("Request aborted", "ABORT_ERR");
671
+ }
672
+ if (timeoutSignal.aborted) {
673
+ throw new FetchError(
674
+ `Request timed out after ${options.timeoutMs}ms`,
675
+ "ETIMEDOUT"
676
+ );
677
+ }
678
+ if (error instanceof FetchError) throw error;
679
+ const code = getErrorCode(error) ?? (error instanceof Error ? getErrorCode(error.cause) : void 0);
680
+ throw new FetchError(getErrorMessage(error), code);
681
+ }, "wrapAbort");
682
+ let currentUrl = url;
683
+ for (let hop = 0; hop <= options.maxRedirects; hop++) {
684
+ let response;
685
+ try {
686
+ response = await fetch(currentUrl, {
687
+ signal,
688
+ headers: options.headers,
689
+ redirect: "manual"
690
+ });
691
+ } catch (error) {
692
+ return wrapAbort(error);
693
+ }
694
+ if (REDIRECT_STATUSES.has(response.status)) {
695
+ const location = response.headers.get("location");
696
+ await response.body?.cancel().catch(() => {
697
+ });
698
+ if (!location) {
699
+ throw new FetchError("Redirect response missing Location header");
700
+ }
701
+ let redirectUrl;
702
+ try {
703
+ redirectUrl = new URL(location, currentUrl).toString();
704
+ } catch {
705
+ throw new FetchError(
706
+ `Redirect response has a malformed Location header: ${location}`
707
+ );
708
+ }
709
+ if (!isPermittedRedirect(currentUrl, redirectUrl)) {
710
+ return {
711
+ kind: "cross-host-redirect",
712
+ originalUrl: currentUrl,
713
+ redirectUrl,
714
+ status: response.status
715
+ };
716
+ }
717
+ currentUrl = redirectUrl;
718
+ continue;
719
+ }
720
+ if (response.status < 200 || response.status >= 300) {
721
+ await response.body?.cancel().catch(() => {
722
+ });
723
+ return {
724
+ kind: "response",
725
+ status: response.status,
726
+ statusText: response.statusText,
727
+ contentType: response.headers.get("content-type") ?? "",
728
+ contentDisposition: response.headers.get("content-disposition") ?? "",
729
+ body: Buffer.alloc(0),
730
+ finalUrl: currentUrl
731
+ };
732
+ }
733
+ const contentLength = Number(response.headers.get("content-length"));
734
+ if (Number.isFinite(contentLength) && contentLength > options.maxBytes) {
735
+ await response.body?.cancel().catch(() => {
736
+ });
737
+ throw new FetchError(
738
+ `Response too large: ${contentLength} bytes exceeds the ${options.maxBytes}-byte limit`,
739
+ "EMSGSIZE"
740
+ );
741
+ }
742
+ const chunks = [];
743
+ let total = 0;
744
+ if (response.body) {
745
+ const reader = response.body.getReader();
746
+ try {
747
+ for (; ; ) {
748
+ const { done, value } = await reader.read();
749
+ if (done) break;
750
+ total += value.byteLength;
751
+ if (total > options.maxBytes) {
752
+ throw new FetchError(
753
+ `Response too large: exceeded the ${options.maxBytes}-byte limit while streaming`,
754
+ "EMSGSIZE"
755
+ );
756
+ }
757
+ chunks.push(value);
758
+ }
759
+ } catch (error) {
760
+ await reader.cancel().catch(() => {
761
+ });
762
+ if (error instanceof FetchError) throw error;
763
+ return wrapAbort(error);
764
+ } finally {
765
+ reader.releaseLock();
766
+ }
767
+ }
768
+ return {
769
+ kind: "response",
770
+ status: response.status,
771
+ statusText: response.statusText,
772
+ contentType: response.headers.get("content-type") ?? "",
773
+ contentDisposition: response.headers.get("content-disposition") ?? "",
774
+ body: Buffer.concat(chunks, total),
775
+ finalUrl: currentUrl
776
+ };
777
+ }
778
+ throw new FetchError(
779
+ `Too many redirects (exceeded ${options.maxRedirects})`,
780
+ "EMAXREDIRECTS"
781
+ );
782
+ }
783
+ __name(fetchPolicyAttempt, "fetchPolicyAttempt");
784
+ function getErrorCode(error) {
785
+ if (!error || typeof error !== "object") {
786
+ return void 0;
787
+ }
788
+ if ("code" in error && typeof error["code"] === "string") {
789
+ return error["code"];
790
+ }
791
+ return void 0;
792
+ }
793
+ __name(getErrorCode, "getErrorCode");
794
+ function formatUnknownErrorMessage(error) {
795
+ if (typeof error === "string") {
796
+ return error;
797
+ }
798
+ if (typeof error === "number" || typeof error === "boolean" || typeof error === "bigint") {
799
+ return String(error);
800
+ }
801
+ if (error instanceof Error) {
802
+ return error.message;
803
+ }
804
+ if (!error || typeof error !== "object") {
805
+ return void 0;
806
+ }
807
+ const message = error["message"];
808
+ if (typeof message === "string") {
809
+ return message;
810
+ }
811
+ return void 0;
812
+ }
813
+ __name(formatUnknownErrorMessage, "formatUnknownErrorMessage");
814
+ function formatErrorCause(error) {
815
+ if (!(error instanceof Error)) {
816
+ return void 0;
817
+ }
818
+ const cause = error.cause;
819
+ if (!cause) {
820
+ return void 0;
821
+ }
822
+ const causeCode = getErrorCode(cause);
823
+ const causeMessage = formatUnknownErrorMessage(cause);
824
+ if (!causeCode && !causeMessage) {
825
+ return void 0;
826
+ }
827
+ if (causeCode && causeMessage && !causeMessage.includes(causeCode)) {
828
+ return `${causeCode}: ${causeMessage}`;
829
+ }
830
+ return causeMessage ?? causeCode;
831
+ }
832
+ __name(formatErrorCause, "formatErrorCause");
833
+ function formatFetchErrorForUser(error, options = {}) {
834
+ const errorMessage = getErrorMessage(error);
835
+ const code = error instanceof Error ? getErrorCode(error.cause) ?? getErrorCode(error) : getErrorCode(error);
836
+ const cause = formatErrorCause(error);
837
+ const fullErrorMessage = [
838
+ errorMessage,
839
+ cause ? `(cause: ${cause})` : void 0
840
+ ].filter(Boolean).join(" ");
841
+ const shouldShowFetchHints = errorMessage.toLowerCase().includes("fetch failed") || code != null && FETCH_TROUBLESHOOTING_ERROR_CODES.has(code);
842
+ const shouldShowTlsHint = code != null && TLS_ERROR_CODES.has(code);
843
+ if (!shouldShowFetchHints) {
844
+ return fullErrorMessage;
845
+ }
846
+ const hintLines = [
847
+ "",
848
+ "Troubleshooting:",
849
+ ...options.url ? [`- Confirm you can reach ${options.url} from this machine.`] : [],
850
+ "- If you are behind a proxy, pass `--proxy <url>` (or set `proxy` in settings).",
851
+ ...shouldShowTlsHint ? isTlsVerificationDisabled() ? [
852
+ "- TLS verification is already disabled (`--insecure` / `QWEN_TLS_INSECURE`), so this is likely a network or protocol issue rather than a certificate trust problem."
853
+ ] : [
854
+ "- If your network uses a corporate TLS inspection CA, set `NODE_EXTRA_CA_CERTS` to your CA bundle.",
855
+ "- For a trusted self-signed endpoint, pass `--insecure` (or set `QWEN_TLS_INSECURE=1`) to skip certificate verification."
856
+ ] : []
857
+ ];
858
+ return `${fullErrorMessage}${hintLines.join("\n")}`;
859
+ }
860
+ __name(formatFetchErrorForUser, "formatFetchErrorForUser");
861
+
496
862
  export {
497
863
  classifyRetryError,
498
864
  isFallbackEligible,
499
865
  isTransientCapacityError,
500
866
  isUnattendedMode,
501
867
  delay,
502
- retryWithBackoff
868
+ retryWithBackoff,
869
+ isConnectionLevelError,
870
+ isPrivateHost,
871
+ fetchWithPolicy,
872
+ formatFetchErrorForUser
503
873
  };
504
874
  /**
505
875
  * @license
@@ -1,21 +1,21 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ formatFetchErrorForUser
5
+ } from "./chunk-BMWMT5Y2.js";
3
6
  import {
4
7
  openBrowserSecurely
5
8
  } from "./chunk-JESCGQM3.js";
6
9
  import {
7
- formatFetchErrorForUser
8
- } from "./chunk-GMLTZG4O.js";
10
+ atomicWriteFile
11
+ } from "./chunk-BDBMYST4.js";
9
12
  import {
10
13
  combineAbortSignals
11
14
  } from "./chunk-DJ2GSRLV.js";
12
- import {
13
- atomicWriteFile
14
- } from "./chunk-6X4GWOPW.js";
15
15
  import {
16
16
  Storage,
17
17
  createDebugLogger
18
- } from "./chunk-OQB4EXO4.js";
18
+ } from "./chunk-C27BYUX6.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  expandHomeDir
5
- } from "./chunk-OQB4EXO4.js";
5
+ } from "./chunk-C27BYUX6.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -4,7 +4,7 @@ import {
4
4
  init_esm,
5
5
  isSpanContextValid,
6
6
  trace
7
- } from "./chunk-THJNPLI4.js";
7
+ } from "./chunk-TB6UDU4T.js";
8
8
  import {
9
9
  init_esbuild_shims
10
10
  } from "./chunk-5O2XNYP6.js";
@@ -574,16 +574,14 @@ var Storage = class _Storage {
574
574
  __name(this, "Storage");
575
575
  }
576
576
  targetDir;
577
- runtimeBaseDir;
578
577
  /**
579
578
  * Custom runtime output base directory set via settings.
580
579
  * When null, falls back to getGlobalQwenDir().
581
580
  */
582
581
  static runtimeBaseDir = null;
583
582
  static runtimeBaseDirContext = new AsyncLocalStorage();
584
- constructor(targetDir, runtimeBaseDir = _Storage.getRuntimeBaseDir()) {
583
+ constructor(targetDir) {
585
584
  this.targetDir = targetDir;
586
- this.runtimeBaseDir = path2.resolve(runtimeBaseDir);
587
585
  }
588
586
  /**
589
587
  * Expands tilde and resolves relative paths to absolute.
@@ -636,9 +634,6 @@ var Storage = class _Storage {
636
634
  const resolved = _Storage.resolveRuntimeBaseDir(dir, cwd);
637
635
  return _Storage.runtimeBaseDirContext.run(resolved, fn);
638
636
  }
639
- static hasRuntimeBaseDirContext() {
640
- return _Storage.runtimeBaseDirContext.getStore() !== void 0;
641
- }
642
637
  /**
643
638
  * Returns the base directory for all runtime output (temp files, debug logs,
644
639
  * session data, todos, insights, etc.).
@@ -775,17 +770,17 @@ var Storage = class _Storage {
775
770
  getQwenDir() {
776
771
  return path2.join(this.targetDir, QWEN_DIR);
777
772
  }
778
- getRuntimeBaseDir() {
779
- return this.runtimeBaseDir;
780
- }
781
773
  getProjectDir() {
782
774
  const projectId = sanitizeCwd(this.getProjectRoot());
783
- const projectsDir = path2.join(this.runtimeBaseDir, PROJECT_DIR_NAME);
775
+ const projectsDir = path2.join(
776
+ _Storage.getRuntimeBaseDir(),
777
+ PROJECT_DIR_NAME
778
+ );
784
779
  return path2.join(projectsDir, projectId);
785
780
  }
786
781
  getProjectTempDir() {
787
782
  const hash = getProjectHash(this.getProjectRoot());
788
- const tempDir = path2.join(this.runtimeBaseDir, TMP_DIR_NAME);
783
+ const tempDir = _Storage.getGlobalTempDir();
789
784
  const targetDir = path2.join(tempDir, hash);
790
785
  return targetDir;
791
786
  }
@@ -912,6 +907,10 @@ async function updateSymlink(linkPath, targetPath, options) {
912
907
  }
913
908
  __name(updateSymlink, "updateSymlink");
914
909
 
910
+ // packages/core/src/telemetry/trace-context.ts
911
+ init_esbuild_shims();
912
+ init_esm();
913
+
915
914
  // packages/core/src/telemetry/session-context.ts
916
915
  init_esbuild_shims();
917
916
  var sessionRootContext;
@@ -931,8 +930,6 @@ function getCurrentSessionId() {
931
930
  __name(getCurrentSessionId, "getCurrentSessionId");
932
931
 
933
932
  // packages/core/src/telemetry/trace-context.ts
934
- init_esbuild_shims();
935
- init_esm();
936
933
  function extractTraceContext(span) {
937
934
  const ctx = span?.spanContext();
938
935
  if (ctx && isSpanContextValid(ctx)) {
@@ -2,28 +2,28 @@
2
2
  "use strict";
3
3
  import {
4
4
  getExtensionManager
5
- } from "./chunk-7FNV372W.js";
5
+ } from "./chunk-MJ6S23WZ.js";
6
6
  import {
7
7
  getPlugin,
8
8
  parseChannelConfig,
9
9
  registerPlugin
10
- } from "./chunk-QD6BRERJ.js";
10
+ } from "./chunk-YWEW33JY.js";
11
11
  import {
12
12
  sanitizeLogText
13
- } from "./chunk-RVLZCXEE.js";
13
+ } from "./chunk-NIJEXGV6.js";
14
14
  import {
15
15
  loadSettings
16
- } from "./chunk-DGKZ6QL3.js";
16
+ } from "./chunk-33XUAINQ.js";
17
17
  import {
18
18
  writeStderrLine,
19
19
  writeStdoutLine
20
20
  } from "./chunk-OWAK7LMW.js";
21
21
  import {
22
22
  hashDaemonWorkspace
23
- } from "./chunk-D7ZI5C7O.js";
23
+ } from "./chunk-ZFKNWQGQ.js";
24
24
  import {
25
25
  Storage
26
- } from "./chunk-OQB4EXO4.js";
26
+ } from "./chunk-C27BYUX6.js";
27
27
  import {
28
28
  init_esbuild_shims
29
29
  } from "./chunk-5O2XNYP6.js";
@@ -158,30 +158,6 @@ function registerToolCallDispatch(bridge, router, channels) {
158
158
  });
159
159
  }
160
160
  __name(registerToolCallDispatch, "registerToolCallDispatch");
161
- function registerBackgroundResponseRelay(bridge, router, channels) {
162
- bridge.on("backgroundResponse", (sessionId, text) => {
163
- const target = router.getTarget(sessionId);
164
- if (!target) {
165
- writeStderrLine(
166
- `[Channel] No route for background response from session ${sanitizeLogText(sessionId, 128)}`
167
- );
168
- return;
169
- }
170
- const channel = channels.get(target.channelName);
171
- if (!channel) {
172
- writeStderrLine(
173
- `[Channel] No channel "${sanitizeLogText(target.channelName, 64)}" for background response from session ${sanitizeLogText(sessionId, 128)}`
174
- );
175
- return;
176
- }
177
- void channel.dispatchBackgroundResponse(sessionId, text).catch((err) => {
178
- writeStderrLine(
179
- `[Channel] Background response relay failed for session ${sanitizeLogText(sessionId, 128)}: ${err instanceof Error ? sanitizeLogText(err.message, 512) : sanitizeLogText(String(err), 512)}`
180
- );
181
- });
182
- });
183
- }
184
- __name(registerBackgroundResponseRelay, "registerBackgroundResponseRelay");
185
161
  function cancelPermissionRequest(bridge, requestId) {
186
162
  if (!bridge.respondToPermission) {
187
163
  return;
@@ -282,7 +258,6 @@ export {
282
258
  createChannel,
283
259
  selectFirstModel,
284
260
  registerToolCallDispatch,
285
- registerBackgroundResponseRelay,
286
261
  registerPermissionRelay,
287
262
  registerSessionCleanup,
288
263
  parseConfiguredChannels