@zubriq/code 0.19.8-1 → 0.19.9-1

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 (243) hide show
  1. package/dist/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  2. package/dist/bundled/qc-helper/docs/features/channels/overview.md +23 -12
  3. package/dist/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
  4. package/dist/bundled/qc-helper/docs/features/channels/wecom.md +111 -0
  5. package/dist/bundled/qc-helper/docs/features/hooks.md +36 -34
  6. package/dist/bundled/qc-helper/docs/features/memory.md +1 -1
  7. package/dist/bundled/qc-helper/docs/qwen-serve.md +17 -10
  8. package/dist/bundled/review/SKILL.md +6 -2
  9. package/dist/chunks/{MaxSizedBox-OWTCJQNO.js → MaxSizedBox-W6SAJMJC.js} +13 -11
  10. package/dist/chunks/{StandaloneSessionPicker-6NGEQFBH.js → StandaloneSessionPicker-YBKZZKIA.js} +28 -23
  11. package/dist/chunks/{acpAgent-XPRWSNOW.js → acpAgent-SQJQBOTS.js} +110 -80
  12. package/dist/chunks/{agent-TB6S4VXU.js → agent-QU7Q2RZN.js} +8 -8
  13. package/dist/chunks/{agent-headless-R3XYK5TT.js → agent-headless-PBHLWHND.js} +8 -8
  14. package/dist/chunks/{anthropicContentGenerator-FZQAEMYK.js → anthropicContentGenerator-52G6ZA3D.js} +31 -4
  15. package/dist/chunks/{artifact-tool-H2TNPNP5.js → artifact-tool-D233YJFH.js} +25 -6
  16. package/dist/chunks/{bridge-HVRG6SMU.js → bridge-LJLLDUMW.js} +17 -14
  17. package/dist/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
  18. package/dist/chunks/{channel-worker-supervisor-B7MSMB5K.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
  19. package/dist/chunks/{chunk-YRM6BC6H.js → chunk-27AYMAL6.js} +506 -63
  20. package/dist/chunks/{chunk-536GZ6UF.js → chunk-2MDC5WDB.js} +17 -111
  21. package/dist/chunks/{chunk-H3D6XAOL.js → chunk-2PRSBVPI.js} +3 -3
  22. package/dist/chunks/chunk-332PWN27.js +19 -0
  23. package/dist/chunks/{chunk-FVMWEHWU.js → chunk-3B26UVCX.js} +114 -12
  24. package/dist/chunks/{chunk-ZM5BPDXV.js → chunk-3F22JT4E.js} +1 -1
  25. package/dist/chunks/{chunk-W6RH6KHR.js → chunk-3GPVYALM.js} +4 -2
  26. package/dist/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
  27. package/dist/chunks/{chunk-PA7QS4X5.js → chunk-43W4YSO6.js} +1 -12
  28. package/dist/chunks/{chunk-5EB2HK3X.js → chunk-4IK56VLC.js} +1 -1
  29. package/dist/chunks/{chunk-UE5TCZE6.js → chunk-5FAUIGXH.js} +5 -13
  30. package/dist/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
  31. package/dist/chunks/{chunk-PDITONOB.js → chunk-5MRUKUOG.js} +5347 -4132
  32. package/dist/chunks/{chunk-4UC3U66K.js → chunk-6EUMFVPJ.js} +5 -5
  33. package/dist/chunks/{chunk-YOGGIAGF.js → chunk-6JL5OVLX.js} +1 -1
  34. package/dist/chunks/{chunk-QG4ZO2EB.js → chunk-74E6VVF6.js} +11 -11
  35. package/dist/chunks/chunk-A2X3KLC3.js +3807 -0
  36. package/dist/chunks/{chunk-BA4HLTG2.js → chunk-B6B2MUUF.js} +5 -5
  37. package/dist/chunks/{chunk-XKYOIERV.js → chunk-BN5VYAOZ.js} +681 -1239
  38. package/dist/chunks/{chunk-IO76BGJ3.js → chunk-BYUA6YYS.js} +15 -9
  39. package/dist/chunks/{chunk-NCFY7PWS.js → chunk-CCGOFQV3.js} +51 -2
  40. package/dist/chunks/{chunk-66KNL43D.js → chunk-CD6USWHZ.js} +1 -1
  41. package/dist/chunks/{chunk-ZWSTIPSW.js → chunk-CEITMQ62.js} +2 -2
  42. package/dist/chunks/{chunk-7AQTBTVY.js → chunk-EJP6Z7NU.js} +4 -3
  43. package/dist/chunks/{chunk-RTW5ZXHO.js → chunk-EZTNYRHH.js} +6 -5
  44. package/dist/chunks/{chunk-MJQFA66Z.js → chunk-FAATDXYS.js} +308 -81
  45. package/dist/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
  46. package/dist/chunks/{chunk-HTC4R67V.js → chunk-FES4YXJ3.js} +9 -9
  47. package/dist/chunks/{chunk-NBKE6QRZ.js → chunk-FHTUTVIQ.js} +10 -5
  48. package/dist/chunks/chunk-FII3C4E7.js +168 -0
  49. package/dist/chunks/{chunk-2NL7ED5Q.js → chunk-FV7425LN.js} +22 -1
  50. package/dist/chunks/{chunk-J6OET6C3.js → chunk-GAI76CFX.js} +4 -4
  51. package/dist/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
  52. package/dist/chunks/chunk-GLE2YUPU.js +34 -0
  53. package/dist/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
  54. package/dist/chunks/{chunk-SM624MOZ.js → chunk-GWUN54UD.js} +1 -1
  55. package/dist/chunks/chunk-H3TELH3H.js +942 -0
  56. package/dist/chunks/{chunk-XZULYFIX.js → chunk-HD4DZI2L.js} +2 -2
  57. package/dist/chunks/{chunk-KLLLWQM2.js → chunk-HPQIVXSP.js} +1 -1
  58. package/dist/chunks/{chunk-WSVZFWN4.js → chunk-IBY3Q3HG.js} +693 -104
  59. package/dist/chunks/{chunk-JSEOX4CM.js → chunk-JGR6W4IX.js} +14 -8
  60. package/dist/chunks/chunk-K652V4NH.js +283 -0
  61. package/dist/chunks/{chunk-OCBJKHF2.js → chunk-KH2CZZDD.js} +2 -2
  62. package/dist/chunks/chunk-LGFAYIKX.js +115 -0
  63. package/dist/chunks/{chunk-QG5KDB6X.js → chunk-LZDW5TDV.js} +5 -5
  64. package/dist/chunks/{chunk-ENKWIF75.js → chunk-MA4AZNP7.js} +10 -10
  65. package/dist/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
  66. package/dist/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
  67. package/dist/chunks/{chunk-ML2ZWH2K.js → chunk-PCWYMX57.js} +14 -153
  68. package/dist/chunks/{chunk-NHFBLJOI.js → chunk-Q3PQ5VGJ.js} +1 -1
  69. package/dist/chunks/{chunk-LGXBB2R2.js → chunk-QK3I36QG.js} +1 -1
  70. package/dist/chunks/chunk-RA7TR75G.js +8223 -0
  71. package/dist/chunks/{chunk-KSPVDFE4.js → chunk-SAIILPQ3.js} +0 -3
  72. package/dist/chunks/{chunk-DHKDK57Q.js → chunk-SNZPA74J.js} +146 -54
  73. package/dist/chunks/{chunk-PWR5MVM3.js → chunk-SSP3UT5C.js} +4 -4
  74. package/dist/chunks/{chunk-4LETJLG2.js → chunk-SUCRVT5L.js} +1 -1
  75. package/dist/chunks/{chunk-5YLZHETW.js → chunk-TRR5KGDN.js} +1 -1
  76. package/dist/chunks/chunk-UIDXQNMV.js +13 -0
  77. package/dist/chunks/{chunk-PIORL4OD.js → chunk-UKV3D7WB.js} +0 -44
  78. package/dist/chunks/chunk-UYNUIGUR.js +167 -0
  79. package/dist/chunks/chunk-V2TYBEWU.js +28 -0
  80. package/dist/chunks/chunk-V35MD7KN.js +13 -0
  81. package/dist/chunks/{chunk-N4HTVZDZ.js → chunk-VR3KCBHH.js} +1 -1
  82. package/dist/chunks/{chunk-APYUOROB.js → chunk-W4CTWW7M.js} +423 -61
  83. package/dist/chunks/{chunk-ABANKQYY.js → chunk-WJAW2O5H.js} +92 -465
  84. package/dist/chunks/{chunk-6RSBRKF5.js → chunk-WN4YJJGH.js} +2 -2
  85. package/dist/chunks/chunk-XNXVCNAT.js +88 -0
  86. package/dist/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
  87. package/dist/chunks/chunk-XQPMKWSV.js +487 -0
  88. package/dist/chunks/{chunk-4FQL7KUS.js → chunk-XWDHZP7P.js} +8 -8
  89. package/dist/chunks/{chunk-REPRY4F7.js → chunk-YCKKP4QA.js} +10 -10
  90. package/dist/chunks/{chunk-YNWQ3PUQ.js → chunk-YJWMOGGZ.js} +3 -3
  91. package/dist/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
  92. package/dist/chunks/{chunk-45YCXM2H.js → chunk-YZDBUH6S.js} +45 -9
  93. package/dist/chunks/chunk-Z3I3QJK3.js +47 -0
  94. package/dist/chunks/{chunk-G23FFNLT.js → chunk-ZDGPPCTW.js} +20 -8
  95. package/dist/chunks/chunk-ZL5HN75Q.js +61 -0
  96. package/dist/chunks/{chunk-IQX5S2RS.js → chunk-ZL7JCYWM.js} +66 -7
  97. package/dist/chunks/{computer-use-A72BECH4.js → computer-use-4B45EG2F.js} +8 -8
  98. package/dist/chunks/{contextCommand-RREXA4B7.js → contextCommand-GIVRWNTS.js} +12 -11
  99. package/dist/chunks/{cron-create-DDYU4DIR.js → cron-create-JSXEIPVS.js} +1 -1
  100. package/dist/chunks/{cron-delete-DFKOUZWN.js → cron-delete-OIFVEPGU.js} +1 -1
  101. package/dist/chunks/{cron-list-ME5QGAR5.js → cron-list-D4ZX4IOE.js} +1 -1
  102. package/dist/chunks/{daemon-XWG2EGFX.js → daemon-WPAENEBW.js} +71 -3
  103. package/dist/chunks/{daemon-status-provider-Y6AFXTET.js → daemon-status-provider-WBOAMCHE.js} +20 -17
  104. package/dist/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
  105. package/dist/chunks/{dist-LPVU3L2M.js → dist-BEXOZXLQ.js} +6 -3792
  106. package/dist/chunks/{dist-7GU63KI5.js → dist-E6UANPIM.js} +1 -1
  107. package/dist/chunks/{dist-VHBP2PIG.js → dist-H2AEJCZ5.js} +2 -2
  108. package/dist/chunks/{dist-3UDX5T4T.js → dist-O2IRTRPP.js} +1 -1
  109. package/dist/chunks/dist-SCFLLYMK.js +3217 -0
  110. package/dist/chunks/{dist-H4HHZYCI.js → dist-Z34QPAQW.js} +2 -2
  111. package/dist/chunks/{earlyInputCapture-OAHBOGOO.js → earlyInputCapture-JWMCAJZR.js} +8 -8
  112. package/dist/chunks/{edit-SFYW3FOV.js → edit-O5FUVHBE.js} +9 -9
  113. package/dist/chunks/{en-AXARKOWO.js → en-N4EPZAQI.js} +31 -2
  114. package/dist/chunks/{enter-worktree-LUPPQ2NH.js → enter-worktree-LOJFRC3D.js} +8 -8
  115. package/dist/chunks/{enterPlanMode-44GEN5U6.js → enterPlanMode-VS3FAUPX.js} +8 -8
  116. package/dist/chunks/environment-WKW5TLSH.js +90 -0
  117. package/dist/chunks/{errors-H3Q3W3DL.js → errors-LEZXHJMR.js} +10 -10
  118. package/dist/chunks/{exit-worktree-34CVVWT4.js → exit-worktree-RN2NXRMP.js} +8 -8
  119. package/dist/chunks/{exitPlanMode-5G5BHNUP.js → exitPlanMode-EPC424I4.js} +8 -8
  120. package/dist/chunks/{fast-path-7PKGFBRM.js → fast-path-UUPAFOSQ.js} +12 -3
  121. package/dist/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
  122. package/dist/chunks/{fr-MBMNQSQ6.js → fr-5WWMY53B.js} +30 -1
  123. package/dist/chunks/{gemini-2II6JH4H.js → gemini-QCKK4XNU.js} +438 -265
  124. package/dist/chunks/{geminiContentGenerator-SWEJVOC4.js → geminiContentGenerator-DX4SRXJA.js} +1 -1
  125. package/dist/chunks/{glob-5DFC7DXW.js → glob-4URMJWRX.js} +8 -8
  126. package/dist/chunks/{grep-QYVXGRRJ.js → grep-AEQB5KED.js} +8 -8
  127. package/dist/chunks/handleAutoUpdate-Y4YNG34Y.js +65 -0
  128. package/dist/chunks/{initializer-XX3UGUHE.js → initializer-NDEBMSOG.js} +17 -13
  129. package/dist/chunks/{ja-HFV5QCHR.js → ja-CUHZOLEJ.js} +30 -1
  130. package/dist/chunks/{list-AX5FWBVC.js → list-VSCBNOWT.js} +17 -15
  131. package/dist/chunks/{loadedSettingsAdapter-ISOM6GJ7.js → loadedSettingsAdapter-FDO752BA.js} +15 -13
  132. package/dist/chunks/{loop-wakeup-ZW5P6VPY.js → loop-wakeup-OHWEMFP5.js} +2 -2
  133. package/dist/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
  134. package/dist/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
  135. package/dist/chunks/{mcp-74F6725E.js → mcp-MLPWTHUV.js} +15 -13
  136. package/dist/chunks/{monitor-W4WRSC2C.js → monitor-WCVHIJUJ.js} +16 -11
  137. package/dist/chunks/{nonInteractiveCli-4QMV6C4J.js → nonInteractiveCli-32HZK274.js} +52 -44
  138. package/dist/chunks/{notebook-edit-XBZEIP42.js → notebook-edit-NPOMPKS4.js} +9 -9
  139. package/dist/chunks/{openaiContentGenerator-RTUJDESE.js → openaiContentGenerator-6AIBSRQK.js} +6 -6
  140. package/dist/chunks/{pidfile-YWSGNTPK.js → pidfile-7Y3QEDSZ.js} +8 -8
  141. package/dist/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
  142. package/dist/chunks/{qwenContentGenerator-4ZFYAZLY.js → qwenContentGenerator-OUYOAYT4.js} +10 -10
  143. package/dist/chunks/{read-file-D7DKDIAC.js → read-file-EESFA24L.js} +3 -3
  144. package/dist/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
  145. package/dist/chunks/{ripGrep-KG7JYNER.js → ripGrep-DLYV7ZZG.js} +8 -8
  146. package/dist/chunks/{ru-PER5I4OI.js → ru-MKM2HFDS.js} +26 -1
  147. package/dist/chunks/{run-qwen-serve-XGJSNF6S.js → run-qwen-serve-WUEHQROF.js} +602 -143
  148. package/dist/chunks/{scheduler-MOLWOE4G.js → scheduler-SK4Y66V4.js} +8 -8
  149. package/dist/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
  150. package/dist/chunks/{serve-4ZNVPYND.js → serve-UCDGVZFI.js} +17 -14
  151. package/dist/chunks/{server-ACWDFHIF.js → server-FVGFFVZ4.js} +1394 -328
  152. package/dist/chunks/{session-VYO2GRO2.js → session-RIGKDMGR.js} +53 -45
  153. package/dist/chunks/{settings-4J2O3K22.js → settings-LVFFGXGE.js} +24 -20
  154. package/dist/chunks/{shell-RKERJYXR.js → shell-PAWNAFYN.js} +8 -8
  155. package/dist/chunks/{skill-JYACZJ5V.js → skill-5YIN3Z6Y.js} +15 -5
  156. package/dist/chunks/{spawnChannel-BA3U3RGX.js → spawnChannel-KIMZHWNR.js} +10 -10
  157. package/dist/chunks/{src-3P337V4P.js → src-BIWCD3VX.js} +21 -9
  158. package/dist/chunks/{startInteractiveUI-SUSZ6FWB.js → startInteractiveUI-AFXLGUFI.js} +33759 -41620
  159. package/dist/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
  160. package/dist/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
  161. package/dist/chunks/{team-create-YVWGRZEA.js → team-create-26WOMISV.js} +8 -8
  162. package/dist/chunks/{team-plan-approval-VRF54TTI.js → team-plan-approval-B5XB6UQC.js} +8 -8
  163. package/dist/chunks/{theme-manager-JW2KOACL.js → theme-manager-4TJ5TEFD.js} +8 -8
  164. package/dist/chunks/{tool-search-KUSMAZBN.js → tool-search-FFU63E6M.js} +6 -23
  165. package/dist/chunks/total-session-admission-JOD7SMPJ.js +72 -0
  166. package/dist/chunks/{trustedFolders-ERGSUCDK.js → trustedFolders-IJ2QHXSC.js} +9 -9
  167. package/dist/chunks/updateCheck-5Z25DCBP.js +65 -0
  168. package/dist/chunks/{validateNonInterActiveAuth-DDI62H5X.js → validateNonInterActiveAuth-G5EY47DE.js} +49 -41
  169. package/dist/chunks/{version-VB3AHVUF.js → version-LGO3GOKQ.js} +2 -1
  170. package/dist/chunks/{workflow-WINKRCI4.js → workflow-ZTK3WT3D.js} +9 -9
  171. package/dist/chunks/{workspace-providers-status-ZVZPXKSO.js → workspace-providers-status-YMPTRKW2.js} +18 -15
  172. package/dist/chunks/workspace-registry-NBUL6LBH.js +74 -0
  173. package/dist/chunks/{workspace-service-GAS2LV2P.js → workspace-service-V6G2RCD4.js} +21 -19
  174. package/dist/chunks/{workspace-skills-status-4WGKYJVA.js → workspace-skills-status-ZCW44BCH.js} +16 -14
  175. package/dist/chunks/{write-file-UTLKVZNN.js → write-file-4FUTAEW6.js} +9 -9
  176. package/dist/chunks/{zh-RS3HZHFH.js → zh-J4F6QWQV.js} +31 -2
  177. package/dist/chunks/{zh-TW-L5GRQ4S4.js → zh-TW-XVDWOLSW.js} +31 -2
  178. package/dist/cli.js +11 -11
  179. package/dist/locales/ca.js +30 -0
  180. package/dist/locales/de.js +30 -0
  181. package/dist/locales/en.js +38 -2
  182. package/dist/locales/fr.js +36 -0
  183. package/dist/locales/ja.js +36 -0
  184. package/dist/locales/pt.js +30 -0
  185. package/dist/locales/ru.js +30 -0
  186. package/dist/locales/zh-TW.js +38 -2
  187. package/dist/locales/zh.js +38 -2
  188. package/dist/package.json +3 -3
  189. package/dist/web-shell/assets/{arc-C6tzvtOa.js → arc-BWyoJpY2.js} +1 -1
  190. package/dist/web-shell/assets/{architectureDiagram-3BPJPVTR-DSYQFGn9.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
  191. package/dist/web-shell/assets/{blockDiagram-GPEHLZMM-CHjBdXAD.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
  192. package/dist/web-shell/assets/{c4Diagram-AAUBKEIU-BQzK6Yyb.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
  193. package/dist/web-shell/assets/channel-wmPUGHtg.js +1 -0
  194. package/dist/web-shell/assets/{chunk-2J33WTMH-hpP2p3Ij.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
  195. package/dist/web-shell/assets/{chunk-4BX2VUAB-B5KtK1JJ.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
  196. package/dist/web-shell/assets/{chunk-55IACEB6-BDv6Mfr2.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
  197. package/dist/web-shell/assets/{chunk-727SXJPM-BevPWfrX.js → chunk-727SXJPM-B2X34knw.js} +1 -1
  198. package/dist/web-shell/assets/{chunk-AQP2D5EJ-ChDrz2ad.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
  199. package/dist/web-shell/assets/{chunk-FMBD7UC4-ClMdVSDs.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
  200. package/dist/web-shell/assets/{chunk-ND2GUHAM-BceV8kZS.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
  201. package/dist/web-shell/assets/{chunk-QZHKN3VN-DtyK2wwc.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
  202. package/dist/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
  203. package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
  204. package/dist/web-shell/assets/{cose-bilkent-S5V4N54A-BGMsqwmE.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
  205. package/dist/web-shell/assets/{dagre-BM42HDAG-C-71clpF.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
  206. package/dist/web-shell/assets/{diagram-2AECGRRQ-WIzzlkec.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
  207. package/dist/web-shell/assets/{diagram-5GNKFQAL-CtnhZUP1.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
  208. package/dist/web-shell/assets/{diagram-KO2AKTUF-CS_IUezp.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
  209. package/dist/web-shell/assets/{diagram-LMA3HP47-BQnGRwN9.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
  210. package/dist/web-shell/assets/{diagram-OG6HWLK6-By2VIocq.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
  211. package/dist/web-shell/assets/{erDiagram-TEJ5UH35-Dy8WeNkr.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
  212. package/dist/web-shell/assets/{flowDiagram-I6XJVG4X-Diu_4y0w.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
  213. package/dist/web-shell/assets/{ganttDiagram-6RSMTGT7-CH8euujP.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
  214. package/dist/web-shell/assets/{gitGraphDiagram-PVQCEYII-DHiObZq1.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
  215. package/dist/web-shell/assets/index-CNwoO1Cn.js +783 -0
  216. package/dist/web-shell/assets/index-CWQ0z6kZ.css +5 -0
  217. package/dist/web-shell/assets/{infoDiagram-5YYISTIA-CvC9A6fh.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
  218. package/dist/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK46kC4E.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
  219. package/dist/web-shell/assets/{journeyDiagram-JHISSGLW-B2TIiKq4.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
  220. package/dist/web-shell/assets/{kanban-definition-UN3LZRKU-Bh0WAulO.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
  221. package/dist/web-shell/assets/{linear-Bxe9SHMk.js → linear-GWWguGfD.js} +1 -1
  222. package/dist/web-shell/assets/{mermaid.core-B1Pv6D5B.js → mermaid.core-JqtkxvCl.js} +5 -5
  223. package/dist/web-shell/assets/{mindmap-definition-RKZ34NQL-Bz0joLH8.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
  224. package/dist/web-shell/assets/{pieDiagram-4H26LBE5-CnN4x-VS.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
  225. package/dist/web-shell/assets/{quadrantDiagram-W4KKPZXB-BYWD4xO4.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
  226. package/dist/web-shell/assets/{requirementDiagram-4Y6WPE33-B4MEhI9h.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
  227. package/dist/web-shell/assets/{sankeyDiagram-5OEKKPKP-Dk_FgKLp.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
  228. package/dist/web-shell/assets/{sequenceDiagram-3UESZ5HK-B4ksiBZQ.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
  229. package/dist/web-shell/assets/{stateDiagram-AJRCARHV-CYf0xSPl.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
  230. package/dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
  231. package/dist/web-shell/assets/{timeline-definition-PNZ67QCA-0CXeWHNY.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
  232. package/dist/web-shell/assets/{vennDiagram-CIIHVFJN-DHoYY9v2.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
  233. package/dist/web-shell/assets/{wardley-L42UT6IY-D_65qshr.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
  234. package/dist/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cv90x1sd.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
  235. package/dist/web-shell/assets/{xychartDiagram-2RQKCTM6-5FQCYJyh.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
  236. package/dist/web-shell/index.html +2 -2
  237. package/package.json +3 -2
  238. package/dist/web-shell/assets/channel-V-ZaJrA6.js +0 -1
  239. package/dist/web-shell/assets/classDiagram-4FO5ZUOK-s-H0snGT.js +0 -1
  240. package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-s-H0snGT.js +0 -1
  241. package/dist/web-shell/assets/index-DW75jq0K.css +0 -5
  242. package/dist/web-shell/assets/index-tiCo0xbZ.js +0 -779
  243. package/dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-CMtrFRUb.js +0 -1
@@ -1,6 +1,10 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
+ startEarlyStartupPrefetches
5
+ } from "./chunk-K652V4NH.js";
6
+ import {
7
+ ExtensionRefreshState,
4
8
  appEvents,
5
9
  buildDisabledSkillNamesProvider,
6
10
  isDebugMode,
@@ -9,60 +13,64 @@ import {
9
13
  loadSandboxConfig,
10
14
  parseArguments,
11
15
  validateAuthMethod
12
- } from "./chunk-APYUOROB.js";
16
+ } from "./chunk-W4CTWW7M.js";
13
17
  import {
14
18
  RELAUNCH_EXIT_CODE
15
- } from "./chunk-5YLZHETW.js";
16
- import "./chunk-QG5KDB6X.js";
17
- import "./chunk-3GONHQOA.js";
18
- import "./chunk-6RSBRKF5.js";
19
- import "./chunk-66KNL43D.js";
20
- import {
21
- require_undici
22
- } from "./chunk-54YZOP7P.js";
23
- import "./chunk-536GZ6UF.js";
24
- import "./chunk-4FQL7KUS.js";
25
- import "./chunk-E7KNELIZ.js";
19
+ } from "./chunk-TRR5KGDN.js";
20
+ import "./chunk-2MDC5WDB.js";
21
+ import "./chunk-LGFAYIKX.js";
22
+ import "./chunk-54YZOP7P.js";
26
23
  import "./chunk-AHNXYU4O.js";
27
24
  import "./chunk-RNBYOUGV.js";
28
- import "./chunk-G23FFNLT.js";
25
+ import "./chunk-ZDGPPCTW.js";
29
26
  import {
30
27
  getHeadlessYoloSafetyWarning
31
28
  } from "./chunk-BJBWRCSK.js";
29
+ import "./chunk-LZDW5TDV.js";
30
+ import "./chunk-3GONHQOA.js";
31
+ import "./chunk-WN4YJJGH.js";
32
+ import "./chunk-CD6USWHZ.js";
33
+ import "./chunk-XWDHZP7P.js";
34
+ import "./chunk-E7KNELIZ.js";
35
+ import "./chunk-3UP777ZS.js";
36
+ import "./chunk-GLE2YUPU.js";
37
+ import "./chunk-ER3BKOLB.js";
32
38
  import {
33
39
  assembleMcpServers,
34
40
  getPendingGatedMcpServers,
35
41
  getPromptableMcpServers
36
- } from "./chunk-J6OET6C3.js";
37
- import "./chunk-WSVZFWN4.js";
42
+ } from "./chunk-GAI76CFX.js";
38
43
  import "./chunk-S6RLAIUR.js";
39
44
  import "./chunk-MX2YXRER.js";
45
+ import "./chunk-IBY3Q3HG.js";
46
+ import "./chunk-VRDMOSQS.js";
40
47
  import "./chunk-MZ7BABX3.js";
41
48
  import {
42
- SETTINGS_DIRECTORY_NAME,
43
49
  createMinimalSettings,
44
50
  getFlattenedSchema,
45
51
  getSettingsWarnings,
46
52
  getUserSettingsDir,
47
53
  initializeLlmOutputLanguage,
48
- loadSettings,
49
- preResolveHomeEnvOverrides
50
- } from "./chunk-ABANKQYY.js";
54
+ loadSettings
55
+ } from "./chunk-WJAW2O5H.js";
51
56
  import {
52
57
  initializeI18n,
53
58
  resolveLanguageSetting
54
- } from "./chunk-ENKWIF75.js";
59
+ } from "./chunk-MA4AZNP7.js";
55
60
  import "./chunk-TLRYABYP.js";
61
+ import {
62
+ SETTINGS_DIRECTORY_NAME,
63
+ preResolveHomeEnvOverrides
64
+ } from "./chunk-XQPMKWSV.js";
65
+ import "./chunk-O2YT7VB4.js";
56
66
  import {
57
67
  ENV_CORRUPTED_PATH,
58
68
  ENV_WAS_RECOVERED
59
- } from "./chunk-4RQIB5UZ.js";
60
- import "./chunk-ER3BKOLB.js";
61
- import "./chunk-G7ZG7CA6.js";
62
- import "./chunk-VRDMOSQS.js";
69
+ } from "./chunk-Z3I3QJK3.js";
63
70
  import "./chunk-3RW4AZJV.js";
64
- import "./chunk-PA7QS4X5.js";
65
- import "./chunk-N4HTVZDZ.js";
71
+ import "./chunk-V2TYBEWU.js";
72
+ import "./chunk-43W4YSO6.js";
73
+ import "./chunk-VR3KCBHH.js";
66
74
  import {
67
75
  writeStderrLine
68
76
  } from "./chunk-Y6Z2O3WR.js";
@@ -72,7 +80,6 @@ import {
72
80
  QWEN_CODE_SIMPLE_ENV_VAR,
73
81
  SessionService,
74
82
  canUseRipgrep,
75
- getAllProviderBaseUrls,
76
83
  isBareMode,
77
84
  isSessionRuntimeActive,
78
85
  persistSessionUsage,
@@ -85,22 +92,22 @@ import {
85
92
  worktreeBranchForSlug,
86
93
  writeWorktreeSession,
87
94
  writeWorktreeSessionMarker
88
- } from "./chunk-PDITONOB.js";
95
+ } from "./chunk-5MRUKUOG.js";
89
96
  import "./chunk-5P5XGNYH.js";
90
97
  import "./chunk-SKAZWEV5.js";
91
98
  import "./chunk-K5PGHDBN.js";
92
- import "./chunk-FVMWEHWU.js";
99
+ import "./chunk-3B26UVCX.js";
93
100
  import "./chunk-W7EEOR7D.js";
94
101
  import "./chunk-42XGFRJS.js";
95
102
  import "./chunk-X2XNQQJI.js";
96
103
  import "./chunk-VZ7HY3YU.js";
97
104
  import "./chunk-2MPVVENX.js";
98
105
  import "./chunk-ZTQ26VBE.js";
99
- import "./chunk-2NL7ED5Q.js";
106
+ import "./chunk-FV7425LN.js";
100
107
  import "./chunk-MLZQVCF3.js";
101
108
  import "./chunk-LQ7TMOCE.js";
102
109
  import "./chunk-E5A7LHNN.js";
103
- import "./chunk-VEB3NYSO.js";
110
+ import "./chunk-5MBO76SL.js";
104
111
  import "./chunk-GO6LNQXT.js";
105
112
  import "./chunk-NQKLOAVJ.js";
106
113
  import "./chunk-WMPVYQ4P.js";
@@ -110,12 +117,12 @@ import {
110
117
  getMCPServerStatus,
111
118
  logUserPrompt,
112
119
  uiTelemetryService
113
- } from "./chunk-YRM6BC6H.js";
120
+ } from "./chunk-27AYMAL6.js";
114
121
  import "./chunk-E6US47KI.js";
115
122
  import "./chunk-UWCTAVOD.js";
116
123
  import "./chunk-OFEVLU4C.js";
117
124
  import "./chunk-OMX7CUOE.js";
118
- import "./chunk-4KJ2BPIT.js";
125
+ import "./chunk-OACJLMLD.js";
119
126
  import "./chunk-SUAKHHK7.js";
120
127
  import "./chunk-FEJ2FZ3U.js";
121
128
  import {
@@ -126,19 +133,15 @@ import "./chunk-AHNJGLFV.js";
126
133
  import "./chunk-22IFUCVR.js";
127
134
  import "./chunk-7LTB54MK.js";
128
135
  import "./chunk-SIUQ3YYX.js";
129
- import "./chunk-PIORL4OD.js";
130
- import "./chunk-NCFY7PWS.js";
136
+ import "./chunk-UKV3D7WB.js";
137
+ import "./chunk-CCGOFQV3.js";
131
138
  import "./chunk-IRJWHZWU.js";
132
139
  import "./chunk-SYCJMSIJ.js";
133
140
  import "./chunk-55ZMG67I.js";
134
141
  import "./chunk-H6BD2ELD.js";
135
142
  import "./chunk-5IFG2VC4.js";
136
143
  import "./chunk-64WXLC72.js";
137
- import {
138
- detectRuntime,
139
- getOrCreateSharedDispatcher,
140
- redactProxyCredentials
141
- } from "./chunk-H6EMK6QK.js";
144
+ import "./chunk-H6EMK6QK.js";
142
145
  import {
143
146
  FatalSandboxError,
144
147
  Storage,
@@ -147,11 +150,6 @@ import {
147
150
  isDebugLoggingDegraded,
148
151
  isSubpath
149
152
  } from "./chunk-22MNNNXE.js";
150
- import {
151
- cleanupCheckpoints,
152
- registerCleanup,
153
- runExitCleanup
154
- } from "./chunk-YOGGIAGF.js";
155
153
  import {
156
154
  finalizeStartupProfile,
157
155
  isStartupProfilerEnabled,
@@ -160,6 +158,11 @@ import {
160
158
  setInteractiveMode
161
159
  } from "./chunk-ITOGNELQ.js";
162
160
  import "./chunk-FXGLL2HL.js";
161
+ import {
162
+ cleanupCheckpoints,
163
+ registerCleanup,
164
+ runExitCleanup
165
+ } from "./chunk-6JL5OVLX.js";
163
166
  import "./chunk-ZERZSAZL.js";
164
167
  import "./chunk-QN5NZ3UQ.js";
165
168
  import "./chunk-BR4QREVK.js";
@@ -176,7 +179,7 @@ import {
176
179
  init_esbuild_shims();
177
180
  import dns from "node:dns";
178
181
  import os4 from "node:os";
179
- import path7 from "node:path";
182
+ import path8 from "node:path";
180
183
  import v8 from "node:v8";
181
184
 
182
185
  // packages/cli/src/config/settingsWatcher.ts
@@ -830,10 +833,280 @@ function sortJsonValue(value) {
830
833
  }
831
834
  __name(sortJsonValue, "sortJsonValue");
832
835
 
833
- // packages/cli/src/startup/worktreeStartup.ts
836
+ // packages/cli/src/config/extension-file-watcher.ts
834
837
  init_esbuild_shims();
838
+ import * as fs3 from "node:fs";
835
839
  import * as path3 from "node:path";
836
- var debugLogger4 = createDebugLogger("WORKTREE_STARTUP");
840
+ var debugLogger4 = createDebugLogger("EXTENSION_FILE_WATCHER");
841
+ var TOP_LEVEL_FILES = /* @__PURE__ */ new Set(["extension-enablement.json"]);
842
+ var EXTENSION_FILES = /* @__PURE__ */ new Set([
843
+ "qwen-extension.json",
844
+ ".qwen-extension-install.json"
845
+ ]);
846
+ var AUTO_REFRESH_DIRS = /* @__PURE__ */ new Set(["commands", "skills", "agents"]);
847
+ var STALE_DIRS = /* @__PURE__ */ new Set(["hooks"]);
848
+ var ExtensionFileWatcher = class {
849
+ constructor(config, extensionsDir = Storage.getUserExtensionsDir(), refreshState = new ExtensionRefreshState()) {
850
+ this.config = config;
851
+ this.extensionsDir = extensionsDir;
852
+ this.refreshState = refreshState;
853
+ }
854
+ static {
855
+ __name(this, "ExtensionFileWatcher");
856
+ }
857
+ watcher;
858
+ bootstrapWatcher;
859
+ mutationListenerDisposer;
860
+ mutationSuppressionEnds = /* @__PURE__ */ new Map();
861
+ staleFiles = /* @__PURE__ */ new Set();
862
+ watching = false;
863
+ watchGeneration = 0;
864
+ startWatching() {
865
+ this.stopWatching();
866
+ this.watching = true;
867
+ const generation = ++this.watchGeneration;
868
+ this.subscribeExtensionManagerMutations();
869
+ this.staleFiles = this.getStaleFiles();
870
+ const roots = this.getWatchRoots();
871
+ if (roots.length > 0) {
872
+ this.watcher = watch(roots, {
873
+ ignoreInitial: true,
874
+ followSymlinks: false,
875
+ awaitWriteFinish: {
876
+ stabilityThreshold: 200,
877
+ pollInterval: 50
878
+ },
879
+ ignored: /* @__PURE__ */ __name((filePath) => this.isIgnored(filePath), "ignored")
880
+ }).on("all", (event, changedPath) => {
881
+ if (generation !== this.watchGeneration) return;
882
+ const resolvedPath = path3.resolve(changedPath);
883
+ const action = this.getRefreshAction(
884
+ event,
885
+ resolvedPath
886
+ );
887
+ let marked = false;
888
+ if (action === "auto") {
889
+ marked = this.refreshState.markExtensionContentChanged(
890
+ "extension content files changed"
891
+ );
892
+ } else if (action === "stale") {
893
+ marked = this.refreshState.markExtensionsChanged(
894
+ "extension files changed"
895
+ );
896
+ }
897
+ debugLogger4.debug("Extension file event classified", {
898
+ event,
899
+ path: resolvedPath,
900
+ action,
901
+ marked
902
+ });
903
+ }).on("error", (error) => {
904
+ debugLogger4.warn("Extension file watcher error:", error);
905
+ });
906
+ }
907
+ if (!fs3.existsSync(this.extensionsDir)) {
908
+ this.watchExtensionsParent();
909
+ }
910
+ }
911
+ stopWatching() {
912
+ const watcher = this.watcher;
913
+ const bootstrapWatcher = this.bootstrapWatcher;
914
+ this.watcher = void 0;
915
+ this.bootstrapWatcher = void 0;
916
+ this.watching = false;
917
+ this.watchGeneration++;
918
+ this.mutationListenerDisposer?.();
919
+ this.mutationListenerDisposer = void 0;
920
+ this.endPendingMutationSuppressions();
921
+ watcher?.close().catch((error) => {
922
+ debugLogger4.warn("Extension file watcher close error:", error);
923
+ });
924
+ bootstrapWatcher?.close().catch((error) => {
925
+ debugLogger4.warn("Extension bootstrap watcher close error:", error);
926
+ });
927
+ }
928
+ restartWatching() {
929
+ this.startWatching();
930
+ }
931
+ getWatchRoots() {
932
+ const roots = /* @__PURE__ */ new Set();
933
+ if (fs3.existsSync(this.extensionsDir)) {
934
+ roots.add(this.extensionsDir);
935
+ }
936
+ for (const extension of this.config.getActiveExtensions()) {
937
+ if (extension.installMetadata?.type === "link") {
938
+ const rawSource = extension.installMetadata.source;
939
+ const source = rawSource ? path3.resolve(rawSource) : void 0;
940
+ if (source && fs3.existsSync(source)) {
941
+ roots.add(source);
942
+ }
943
+ }
944
+ }
945
+ return [...roots];
946
+ }
947
+ getStaleFiles() {
948
+ const files = /* @__PURE__ */ new Set();
949
+ for (const extension of this.config.getActiveExtensions()) {
950
+ for (const filePath of extension.contextFiles) {
951
+ files.add(path3.resolve(filePath));
952
+ }
953
+ const configured = extension.config.contextFileName;
954
+ const names = configured === void 0 ? ["QWEN.md"] : Array.isArray(configured) ? configured : [configured];
955
+ for (const name of names) {
956
+ files.add(path3.resolve(extension.path, name));
957
+ }
958
+ this.addManifestFileReference(
959
+ files,
960
+ extension.path,
961
+ extension.config.hooks
962
+ );
963
+ this.addManifestFileReference(
964
+ files,
965
+ extension.path,
966
+ extension.config.lspServers
967
+ );
968
+ }
969
+ return files;
970
+ }
971
+ addManifestFileReference(files, extensionPath, value) {
972
+ if (typeof value !== "string") return;
973
+ files.add(
974
+ path3.isAbsolute(value) ? path3.resolve(value) : path3.resolve(extensionPath, value)
975
+ );
976
+ }
977
+ watchExtensionsParent() {
978
+ this.closeBootstrapWatcher();
979
+ const parentDir = path3.dirname(this.extensionsDir);
980
+ const dirBasename = path3.basename(this.extensionsDir);
981
+ const generation = this.watchGeneration;
982
+ this.bootstrapWatcher = watch(parentDir, {
983
+ ignoreInitial: true,
984
+ followSymlinks: false,
985
+ depth: 0,
986
+ ignored: /* @__PURE__ */ __name((filePath) => filePath !== parentDir && path3.basename(filePath) !== dirBasename, "ignored")
987
+ }).on("all", (_event, changedPath) => {
988
+ if (generation !== this.watchGeneration) return;
989
+ if (path3.basename(changedPath) !== dirBasename) return;
990
+ if (!fs3.existsSync(this.extensionsDir)) return;
991
+ this.refreshState.markExtensionsChanged("extension directory created");
992
+ queueMicrotask(() => {
993
+ if (this.watching) {
994
+ this.restartWatching();
995
+ }
996
+ });
997
+ }).on("error", (error) => {
998
+ debugLogger4.warn("Extension bootstrap watcher error:", error);
999
+ });
1000
+ }
1001
+ getRefreshAction(event, changedPath) {
1002
+ if (this.staleFiles.has(changedPath)) {
1003
+ return "stale";
1004
+ }
1005
+ if (changedPath === path3.resolve(this.extensionsDir)) {
1006
+ if (event === "unlinkDir") {
1007
+ this.watchExtensionsParent();
1008
+ return "stale";
1009
+ }
1010
+ return false;
1011
+ }
1012
+ if (isSubpath(this.extensionsDir, changedPath)) {
1013
+ return this.getUserExtensionRefreshAction(event, changedPath);
1014
+ }
1015
+ return this.getLinkedExtensionRefreshAction(changedPath);
1016
+ }
1017
+ getUserExtensionRefreshAction(event, changedPath) {
1018
+ const relative2 = path3.relative(this.extensionsDir, changedPath);
1019
+ const parts = relative2.split(path3.sep).filter(Boolean);
1020
+ if (parts.length === 1) {
1021
+ if (TOP_LEVEL_FILES.has(parts[0])) return "stale";
1022
+ if (event === "addDir" || event === "unlinkDir") return "stale";
1023
+ return false;
1024
+ }
1025
+ if (!fs3.existsSync(
1026
+ path3.join(this.extensionsDir, parts[0], "qwen-extension.json")
1027
+ )) {
1028
+ return "stale";
1029
+ }
1030
+ const runtimePath = parts.slice(1);
1031
+ return this.getRuntimePathRefreshAction(runtimePath);
1032
+ }
1033
+ getLinkedExtensionRefreshAction(changedPath) {
1034
+ for (const extension of this.config.getActiveExtensions()) {
1035
+ if (extension.installMetadata?.type !== "link") continue;
1036
+ const rawSource = extension.installMetadata.source;
1037
+ const source = rawSource ? path3.resolve(rawSource) : void 0;
1038
+ if (!source || !isSubpath(source, changedPath)) continue;
1039
+ const relative2 = path3.relative(source, changedPath);
1040
+ const parts = relative2.split(path3.sep).filter(Boolean);
1041
+ return parts.length === 0 ? "stale" : this.getRuntimePathRefreshAction(parts);
1042
+ }
1043
+ return false;
1044
+ }
1045
+ getRuntimePathRefreshAction(parts) {
1046
+ if (EXTENSION_FILES.has(parts[0]) || STALE_DIRS.has(parts[0])) {
1047
+ return "stale";
1048
+ }
1049
+ if (AUTO_REFRESH_DIRS.has(parts[0])) {
1050
+ return "auto";
1051
+ }
1052
+ return false;
1053
+ }
1054
+ isIgnored(filePath) {
1055
+ const normalized = filePath.replace(/\\/g, "/");
1056
+ const searchablePath = `/${normalized}/`;
1057
+ if (searchablePath.includes("/node_modules/") || searchablePath.includes("/.git/")) {
1058
+ return true;
1059
+ }
1060
+ const basename4 = normalized.split("/").pop() ?? "";
1061
+ return basename4 === ".DS_Store" || basename4.endsWith("~") || basename4.endsWith(".swp") || basename4.endsWith(".tmp");
1062
+ }
1063
+ subscribeExtensionManagerMutations() {
1064
+ const manager = this.config.getExtensionManager();
1065
+ this.mutationListenerDisposer = manager.addMutationListener(
1066
+ (event) => {
1067
+ if (event.phase === "start") {
1068
+ this.mutationSuppressionEnds.set(
1069
+ event.id,
1070
+ this.refreshState.beginSuppression(
1071
+ () => this.restartAfterMutation()
1072
+ )
1073
+ );
1074
+ return;
1075
+ }
1076
+ const endSuppression = this.mutationSuppressionEnds.get(event.id);
1077
+ if (!endSuppression) {
1078
+ return;
1079
+ }
1080
+ this.mutationSuppressionEnds.delete(event.id);
1081
+ endSuppression();
1082
+ }
1083
+ );
1084
+ }
1085
+ endPendingMutationSuppressions() {
1086
+ const endSuppressions = [...this.mutationSuppressionEnds.values()];
1087
+ this.mutationSuppressionEnds.clear();
1088
+ for (const endSuppression of endSuppressions) {
1089
+ endSuppression();
1090
+ }
1091
+ }
1092
+ restartAfterMutation() {
1093
+ if (this.watching) {
1094
+ this.restartWatching();
1095
+ }
1096
+ }
1097
+ closeBootstrapWatcher() {
1098
+ const bootstrapWatcher = this.bootstrapWatcher;
1099
+ this.bootstrapWatcher = void 0;
1100
+ bootstrapWatcher?.close().catch((error) => {
1101
+ debugLogger4.warn("Extension bootstrap watcher close error:", error);
1102
+ });
1103
+ }
1104
+ };
1105
+
1106
+ // packages/cli/src/startup/worktreeStartup.ts
1107
+ init_esbuild_shims();
1108
+ import * as path4 from "node:path";
1109
+ var debugLogger5 = createDebugLogger("WORKTREE_STARTUP");
837
1110
  var DETACHED_HEAD = "HEAD";
838
1111
  async function setupStartupWorktree(rawInput, options) {
839
1112
  if (rawInput === void 0) return null;
@@ -860,7 +1133,7 @@ async function setupStartupWorktree(rawInput, options) {
860
1133
  error: `--worktree: ${launchCwd} is not a git repository. Run \`git init\` first or relaunch from inside one.`
861
1134
  };
862
1135
  }
863
- const repoRoot = path3.resolve(rawRepoRoot);
1136
+ const repoRoot = path4.resolve(rawRepoRoot);
864
1137
  const service = repoRoot === launchCwd ? probe : new GitWorktreeService(repoRoot);
865
1138
  const prNumber = GitWorktreeService.parsePRReference(trimmed);
866
1139
  const isPullRequest = prNumber !== null;
@@ -896,7 +1169,7 @@ async function setupStartupWorktree(rawInput, options) {
896
1169
  error: `--worktree: ${expectedWorktreePath} is already a git worktree, but its branch is ${registered.branch} (expected ${expectedBranch}). Refusing to re-attach. Resolve the conflict manually (e.g. \`git worktree remove ${expectedWorktreePath}\`).`
897
1170
  };
898
1171
  }
899
- const worktreePath2 = path3.resolve(expectedWorktreePath);
1172
+ const worktreePath2 = path4.resolve(expectedWorktreePath);
900
1173
  try {
901
1174
  process.chdir(worktreePath2);
902
1175
  } catch (error) {
@@ -905,7 +1178,7 @@ async function setupStartupWorktree(rawInput, options) {
905
1178
  error: `--worktree: failed to chdir into ${worktreePath2} (${error instanceof Error ? error.message : String(error)}).`
906
1179
  };
907
1180
  }
908
- debugLogger4.debug(
1181
+ debugLogger5.debug(
909
1182
  `setupStartupWorktree: re-attached to existing worktree at ${worktreePath2} (branch=${registered.branch})`
910
1183
  );
911
1184
  return {
@@ -946,7 +1219,7 @@ async function setupStartupWorktree(rawInput, options) {
946
1219
  error: `--worktree: ${result.error ?? "failed to create worktree."}`
947
1220
  };
948
1221
  }
949
- const worktreePath = path3.resolve(result.worktree.path);
1222
+ const worktreePath = path4.resolve(result.worktree.path);
950
1223
  try {
951
1224
  process.chdir(worktreePath);
952
1225
  } catch (error) {
@@ -983,7 +1256,7 @@ async function persistStartupWorktreeSidecar(config, context) {
983
1256
  try {
984
1257
  previous = await readWorktreeSession(sidecarPath);
985
1258
  } catch (error) {
986
- debugLogger4.warn(
1259
+ debugLogger5.warn(
987
1260
  `persistStartupWorktreeSidecar: failed to read existing sidecar at ${sidecarPath} \u2014 treating as "no previous worktree" and proceeding: ${error}`
988
1261
  );
989
1262
  previous = null;
@@ -1002,7 +1275,7 @@ async function persistStartupWorktreeSidecar(config, context) {
1002
1275
  context.repoRoot,
1003
1276
  context.worktreePath
1004
1277
  ]).catch((error) => {
1005
- debugLogger4.warn(
1278
+ debugLogger5.warn(
1006
1279
  `persistStartupWorktreeSidecar: failed to check owner runtime ${owner}: ${error}`
1007
1280
  );
1008
1281
  return true;
@@ -1056,7 +1329,7 @@ function takeUtf8Prefix(value, maxBytes) {
1056
1329
  __name(takeUtf8Prefix, "takeUtf8Prefix");
1057
1330
  async function readStdin() {
1058
1331
  const MAX_STDIN_SIZE = 8 * 1024 * 1024;
1059
- return new Promise((resolve2, reject) => {
1332
+ return new Promise((resolve3, reject) => {
1060
1333
  let data = "";
1061
1334
  let totalSize = 0;
1062
1335
  let settled = false;
@@ -1093,7 +1366,7 @@ async function readStdin() {
1093
1366
  if (settled) return;
1094
1367
  settled = true;
1095
1368
  cleanup();
1096
- resolve2(data);
1369
+ resolve3(data);
1097
1370
  }, "finish");
1098
1371
  const onEnd = /* @__PURE__ */ __name(() => {
1099
1372
  finish();
@@ -1165,11 +1438,11 @@ async function relaunchAppInChildProcess(additionalNodeArgs, additionalScriptArg
1165
1438
  child.kill();
1166
1439
  throw err;
1167
1440
  }
1168
- return new Promise((resolve2, reject) => {
1441
+ return new Promise((resolve3, reject) => {
1169
1442
  child.on("error", reject);
1170
1443
  child.on("close", (code) => {
1171
1444
  process.stdin.resume();
1172
- resolve2(code ?? 1);
1445
+ resolve3(code ?? 1);
1173
1446
  });
1174
1447
  });
1175
1448
  }, "runner");
@@ -1182,8 +1455,8 @@ init_esbuild_shims();
1182
1455
  var import_shell_quote = __toESM(require_shell_quote(), 1);
1183
1456
  import { exec, execSync, spawn as spawn2 } from "node:child_process";
1184
1457
  import os2 from "node:os";
1185
- import path5 from "node:path";
1186
- import fs3 from "node:fs";
1458
+ import path6 from "node:path";
1459
+ import fs4 from "node:fs";
1187
1460
  import { promisify } from "node:util";
1188
1461
  import { randomBytes } from "node:crypto";
1189
1462
 
@@ -1203,10 +1476,10 @@ __name(parseSandboxImageName, "parseSandboxImageName");
1203
1476
 
1204
1477
  // packages/cli/src/utils/sandbox-path.ts
1205
1478
  init_esbuild_shims();
1206
- import path4 from "node:path";
1479
+ import path5 from "node:path";
1207
1480
  function isContainerPathWithinWorkdir(containerWorkdir, containerPath) {
1208
1481
  const normalize = /* @__PURE__ */ __name((value) => {
1209
- const normalized = path4.posix.normalize(value.replace(/\\/g, "/")).replace(/\/+$/, "").toLowerCase();
1482
+ const normalized = path5.posix.normalize(value.replace(/\\/g, "/")).replace(/\/+$/, "").toLowerCase();
1210
1483
  return normalized || "/";
1211
1484
  }, "normalize");
1212
1485
  const normalizedWorkdir = normalize(containerWorkdir);
@@ -1250,10 +1523,10 @@ function getContainerPath(hostPath) {
1250
1523
  }
1251
1524
  __name(getContainerPath, "getContainerPath");
1252
1525
  function ensureDirectoryAndGetRealPath(dir) {
1253
- if (!fs3.existsSync(dir)) {
1254
- fs3.mkdirSync(dir, { recursive: true });
1526
+ if (!fs4.existsSync(dir)) {
1527
+ fs4.mkdirSync(dir, { recursive: true });
1255
1528
  }
1256
- return fs3.realpathSync(dir);
1529
+ return fs4.realpathSync(dir);
1257
1530
  }
1258
1531
  __name(ensureDirectoryAndGetRealPath, "ensureDirectoryAndGetRealPath");
1259
1532
  var LOCAL_DEV_SANDBOX_IMAGE_NAME = "qwen-code-sandbox";
@@ -1269,9 +1542,9 @@ var BUILTIN_SEATBELT_PROFILES = [
1269
1542
  ];
1270
1543
  function resolveSeatbeltProfileFile(profile, importMetaUrl = import.meta.url) {
1271
1544
  if (!BUILTIN_SEATBELT_PROFILES.includes(profile)) {
1272
- return path5.join(SETTINGS_DIRECTORY_NAME, `sandbox-macos-${profile}.sb`);
1545
+ return path6.join(SETTINGS_DIRECTORY_NAME, `sandbox-macos-${profile}.sb`);
1273
1546
  }
1274
- return path5.join(
1547
+ return path6.join(
1275
1548
  resolveBundleDir(importMetaUrl),
1276
1549
  `sandbox-macos-${profile}.sb`
1277
1550
  );
@@ -1334,11 +1607,11 @@ function entrypoint(workdir, cliArgs) {
1334
1607
  if (pythonPathSuffix) {
1335
1608
  shellCmds.push(`export PYTHONPATH="$PYTHONPATH${pythonPathSuffix}";`);
1336
1609
  }
1337
- const projectSandboxBashrc = path5.join(
1610
+ const projectSandboxBashrc = path6.join(
1338
1611
  SETTINGS_DIRECTORY_NAME,
1339
1612
  "sandbox.bashrc"
1340
1613
  );
1341
- if (fs3.existsSync(projectSandboxBashrc)) {
1614
+ if (fs4.existsSync(projectSandboxBashrc)) {
1342
1615
  shellCmds.push(`source ${getContainerPath(projectSandboxBashrc)};`);
1343
1616
  }
1344
1617
  ports().forEach(
@@ -1361,7 +1634,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1361
1634
  }
1362
1635
  const profile = process.env["SEATBELT_PROFILE"] ??= "permissive-open";
1363
1636
  const profileFile = resolveSeatbeltProfileFile(profile);
1364
- if (!fs3.existsSync(profileFile)) {
1637
+ if (!fs4.existsSync(profileFile)) {
1365
1638
  throw new FatalSandboxError(
1366
1639
  `Missing macos seatbelt profile file '${profileFile}'`
1367
1640
  );
@@ -1373,30 +1646,30 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1373
1646
  ].join(" ");
1374
1647
  const qwenDir = Storage.getGlobalQwenDir();
1375
1648
  const runtimeDir = Storage.getRuntimeBaseDir();
1376
- fs3.mkdirSync(qwenDir, { recursive: true });
1377
- fs3.mkdirSync(runtimeDir, { recursive: true });
1649
+ fs4.mkdirSync(qwenDir, { recursive: true });
1650
+ fs4.mkdirSync(runtimeDir, { recursive: true });
1378
1651
  const args2 = [
1379
1652
  "-D",
1380
- `TARGET_DIR=${fs3.realpathSync(process.cwd())}`,
1653
+ `TARGET_DIR=${fs4.realpathSync(process.cwd())}`,
1381
1654
  "-D",
1382
- `TMP_DIR=${fs3.realpathSync(os2.tmpdir())}`,
1655
+ `TMP_DIR=${fs4.realpathSync(os2.tmpdir())}`,
1383
1656
  "-D",
1384
- `HOME_DIR=${fs3.realpathSync(os2.homedir())}`,
1657
+ `HOME_DIR=${fs4.realpathSync(os2.homedir())}`,
1385
1658
  "-D",
1386
- `CACHE_DIR=${fs3.realpathSync(execSync(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`,
1659
+ `CACHE_DIR=${fs4.realpathSync(execSync(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`,
1387
1660
  "-D",
1388
- `QWEN_DIR=${fs3.realpathSync(qwenDir)}`,
1661
+ `QWEN_DIR=${fs4.realpathSync(qwenDir)}`,
1389
1662
  "-D",
1390
- `RUNTIME_DIR=${fs3.realpathSync(runtimeDir)}`
1663
+ `RUNTIME_DIR=${fs4.realpathSync(runtimeDir)}`
1391
1664
  ];
1392
1665
  const MAX_INCLUDE_DIRS = 5;
1393
- const targetDir = fs3.realpathSync(cliConfig?.getTargetDir() || "");
1666
+ const targetDir = fs4.realpathSync(cliConfig?.getTargetDir() || "");
1394
1667
  const includedDirs = [];
1395
1668
  if (cliConfig) {
1396
1669
  const workspaceContext = cliConfig.getWorkspaceContext();
1397
1670
  const directories = workspaceContext.getDirectories();
1398
1671
  for (const dir of directories) {
1399
- const realDir = fs3.realpathSync(dir);
1672
+ const realDir = fs4.realpathSync(dir);
1400
1673
  if (realDir !== targetDir) {
1401
1674
  includedDirs.push(realDir);
1402
1675
  }
@@ -1469,23 +1742,23 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1469
1742
  sandboxProcess2 = spawn2(config.command, args2, {
1470
1743
  stdio: "inherit"
1471
1744
  });
1472
- return new Promise((resolve2, reject) => {
1745
+ return new Promise((resolve3, reject) => {
1473
1746
  sandboxProcess2?.on("error", reject);
1474
1747
  sandboxProcess2?.on("close", (code) => {
1475
1748
  process.stdin.resume();
1476
- resolve2(code ?? 1);
1749
+ resolve3(code ?? 1);
1477
1750
  });
1478
1751
  });
1479
1752
  }
1480
1753
  writeStderrLine(`hopping into sandbox (command: ${config.command}) ...`);
1481
- const gcPath = fs3.realpathSync(process.argv[1]);
1482
- const projectSandboxDockerfile = path5.join(
1754
+ const gcPath = fs4.realpathSync(process.argv[1]);
1755
+ const projectSandboxDockerfile = path6.join(
1483
1756
  SETTINGS_DIRECTORY_NAME,
1484
1757
  "sandbox.Dockerfile"
1485
1758
  );
1486
- const isCustomProjectSandbox = fs3.existsSync(projectSandboxDockerfile);
1759
+ const isCustomProjectSandbox = fs4.existsSync(projectSandboxDockerfile);
1487
1760
  const image = config.image;
1488
- const workdir = path5.resolve(process.cwd());
1761
+ const workdir = path6.resolve(process.cwd());
1489
1762
  const containerWorkdir = getContainerPath(workdir);
1490
1763
  if (process.env["BUILD_SANDBOX"]) {
1491
1764
  if (!gcPath.includes("qwen-code/packages/")) {
@@ -1496,13 +1769,13 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1496
1769
  writeStderrLine("building sandbox ...");
1497
1770
  const gcRoot = gcPath.split("/packages/")[0];
1498
1771
  let buildArgs = "";
1499
- const projectSandboxDockerfile2 = path5.join(
1772
+ const projectSandboxDockerfile2 = path6.join(
1500
1773
  SETTINGS_DIRECTORY_NAME,
1501
1774
  "sandbox.Dockerfile"
1502
1775
  );
1503
1776
  if (isCustomProjectSandbox) {
1504
1777
  writeStderrLine(`using ${projectSandboxDockerfile2} for sandbox`);
1505
- buildArgs += `-f ${path5.resolve(projectSandboxDockerfile2)} -i ${image}`;
1778
+ buildArgs += `-f ${path6.resolve(projectSandboxDockerfile2)} -i ${image}`;
1506
1779
  }
1507
1780
  execSync(
1508
1781
  `cd ${gcRoot} && node scripts/build_sandbox.js -s ${buildArgs}`,
@@ -1578,8 +1851,8 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1578
1851
  args.push("--env", `QWEN_RUNTIME_DIR=${runtimeBaseDirContainerPath}`);
1579
1852
  }
1580
1853
  args.push("--volume", `${os2.tmpdir()}:${getContainerPath(os2.tmpdir())}`);
1581
- const gcloudConfigDir = path5.join(os2.homedir(), ".config", "gcloud");
1582
- if (fs3.existsSync(gcloudConfigDir)) {
1854
+ const gcloudConfigDir = path6.join(os2.homedir(), ".config", "gcloud");
1855
+ if (fs4.existsSync(gcloudConfigDir)) {
1583
1856
  args.push(
1584
1857
  "--volume",
1585
1858
  `${gcloudConfigDir}:${getContainerPath(gcloudConfigDir)}:ro`
@@ -1587,7 +1860,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1587
1860
  }
1588
1861
  if (process.env["GOOGLE_APPLICATION_CREDENTIALS"]) {
1589
1862
  const adcFile = process.env["GOOGLE_APPLICATION_CREDENTIALS"];
1590
- if (fs3.existsSync(adcFile)) {
1863
+ if (fs4.existsSync(adcFile)) {
1591
1864
  args.push("--volume", `${adcFile}:${getContainerPath(adcFile)}:ro`);
1592
1865
  args.push(
1593
1866
  "--env",
@@ -1600,12 +1873,12 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1600
1873
  if (mount.trim()) {
1601
1874
  const { from, to, opts } = parseSandboxMountSpec(mount);
1602
1875
  mount = `${from}:${to}:${opts}`;
1603
- if (!path5.isAbsolute(from)) {
1876
+ if (!path6.isAbsolute(from)) {
1604
1877
  throw new FatalSandboxError(
1605
1878
  `Path '${from}' listed in SANDBOX_MOUNTS must be absolute`
1606
1879
  );
1607
1880
  }
1608
- if (!fs3.existsSync(from)) {
1881
+ if (!fs4.existsSync(from)) {
1609
1882
  throw new FatalSandboxError(
1610
1883
  `Missing mount path '${from}' listed in SANDBOX_MOUNTS`
1611
1884
  );
@@ -1751,12 +2024,12 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1751
2024
  getContainerPath(workdir),
1752
2025
  getContainerPath(virtualEnv)
1753
2026
  )) {
1754
- const sandboxVenvPath = path5.resolve(
2027
+ const sandboxVenvPath = path6.resolve(
1755
2028
  SETTINGS_DIRECTORY_NAME,
1756
2029
  "sandbox.venv"
1757
2030
  );
1758
- if (!fs3.existsSync(sandboxVenvPath)) {
1759
- fs3.mkdirSync(sandboxVenvPath, { recursive: true });
2031
+ if (!fs4.existsSync(sandboxVenvPath)) {
2032
+ fs4.mkdirSync(sandboxVenvPath, { recursive: true });
1760
2033
  }
1761
2034
  args.push("--volume", `${sandboxVenvPath}:${getContainerPath(virtualEnv)}`);
1762
2035
  args.push("--env", `VIRTUAL_ENV=${getContainerPath(virtualEnv)}`);
@@ -1785,8 +2058,8 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1785
2058
  }
1786
2059
  args.push("--env", `SANDBOX=${containerName}`);
1787
2060
  if (config.command === "podman") {
1788
- const emptyAuthFilePath = path5.join(os2.tmpdir(), "empty_auth.json");
1789
- fs3.writeFileSync(emptyAuthFilePath, "{}", "utf-8");
2061
+ const emptyAuthFilePath = path6.join(os2.tmpdir(), "empty_auth.json");
2062
+ fs4.writeFileSync(emptyAuthFilePath, "{}", "utf-8");
1790
2063
  args.push("--authfile", emptyAuthFilePath);
1791
2064
  }
1792
2065
  let userFlag = "";
@@ -1857,7 +2130,7 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1857
2130
  sandboxProcess = spawn2(config.command, args, {
1858
2131
  stdio: "inherit"
1859
2132
  });
1860
- return new Promise((resolve2, reject) => {
2133
+ return new Promise((resolve3, reject) => {
1861
2134
  sandboxProcess.on("error", (err) => {
1862
2135
  writeStderrLine(`Sandbox process error: ${err}`);
1863
2136
  reject(err);
@@ -1869,13 +2142,13 @@ async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
1869
2142
  `Sandbox process exited with code: ${code}, signal: ${signal}`
1870
2143
  );
1871
2144
  }
1872
- resolve2(code ?? 1);
2145
+ resolve3(code ?? 1);
1873
2146
  });
1874
2147
  });
1875
2148
  }
1876
2149
  __name(start_sandbox, "start_sandbox");
1877
2150
  async function imageExists(sandbox, image) {
1878
- return new Promise((resolve2) => {
2151
+ return new Promise((resolve3) => {
1879
2152
  const args = ["images", "-q", image];
1880
2153
  const checkProcess = spawn2(sandbox, args);
1881
2154
  let stdoutData = "";
@@ -1888,17 +2161,17 @@ async function imageExists(sandbox, image) {
1888
2161
  writeStderrLine(
1889
2162
  `Failed to start '${sandbox}' command for image check: ${err.message}`
1890
2163
  );
1891
- resolve2(false);
2164
+ resolve3(false);
1892
2165
  });
1893
2166
  checkProcess.on("close", () => {
1894
- resolve2(stdoutData.trim() !== "");
2167
+ resolve3(stdoutData.trim() !== "");
1895
2168
  });
1896
2169
  });
1897
2170
  }
1898
2171
  __name(imageExists, "imageExists");
1899
2172
  async function pullImage(sandbox, image) {
1900
2173
  writeStderrLine(`Attempting to pull image ${image} using ${sandbox}...`);
1901
- return new Promise((resolve2) => {
2174
+ return new Promise((resolve3) => {
1902
2175
  const args = ["pull", image];
1903
2176
  const pullProcess = spawn2(sandbox, args, { stdio: "pipe" });
1904
2177
  let stderrData = "";
@@ -1914,13 +2187,13 @@ async function pullImage(sandbox, image) {
1914
2187
  `Failed to start '${sandbox} pull ${image}' command: ${err.message}`
1915
2188
  );
1916
2189
  cleanup();
1917
- resolve2(false);
2190
+ resolve3(false);
1918
2191
  }, "onError");
1919
2192
  const onClose = /* @__PURE__ */ __name((code) => {
1920
2193
  if (code === 0) {
1921
2194
  writeStderrLine(`Successfully pulled image ${image}.`);
1922
2195
  cleanup();
1923
- resolve2(true);
2196
+ resolve3(true);
1924
2197
  } else {
1925
2198
  writeStderrLine(
1926
2199
  `Failed to pull image ${image}. '${sandbox} pull ${image}' exited with code ${code}.`
@@ -1928,7 +2201,7 @@ async function pullImage(sandbox, image) {
1928
2201
  if (stderrData.trim()) {
1929
2202
  }
1930
2203
  cleanup();
1931
- resolve2(false);
2204
+ resolve3(false);
1932
2205
  }
1933
2206
  }, "onClose");
1934
2207
  const cleanup = /* @__PURE__ */ __name(() => {
@@ -1985,17 +2258,17 @@ __name(ensureSandboxImageIsPresent, "ensureSandboxImageIsPresent");
1985
2258
 
1986
2259
  // packages/cli/src/utils/startupWarnings.ts
1987
2260
  init_esbuild_shims();
1988
- import fs4 from "node:fs/promises";
2261
+ import fs5 from "node:fs/promises";
1989
2262
  import os3 from "node:os";
1990
2263
  import { join as pathJoin } from "node:path";
1991
2264
  var warningsFilePath = pathJoin(os3.tmpdir(), "qwen-code-warnings.txt");
1992
2265
  async function getStartupWarnings() {
1993
2266
  try {
1994
- await fs4.access(warningsFilePath);
1995
- const warningsContent = await fs4.readFile(warningsFilePath, "utf-8");
2267
+ await fs5.access(warningsFilePath);
2268
+ const warningsContent = await fs5.readFile(warningsFilePath, "utf-8");
1996
2269
  const warnings = warningsContent.split("\n").filter((line) => line.trim() !== "");
1997
2270
  try {
1998
- await fs4.unlink(warningsFilePath);
2271
+ await fs5.unlink(warningsFilePath);
1999
2272
  } catch {
2000
2273
  warnings.push("Warning: Could not delete temporary warnings file.");
2001
2274
  }
@@ -2011,15 +2284,15 @@ __name(getStartupWarnings, "getStartupWarnings");
2011
2284
 
2012
2285
  // packages/cli/src/utils/userStartupWarnings.ts
2013
2286
  init_esbuild_shims();
2014
- import fs5 from "node:fs/promises";
2015
- import path6 from "node:path";
2287
+ import fs6 from "node:fs/promises";
2288
+ import path7 from "node:path";
2016
2289
  var rootDirectoryCheck = {
2017
2290
  id: "root-directory",
2018
2291
  check: /* @__PURE__ */ __name(async (options) => {
2019
2292
  try {
2020
- const workspaceRealPath = await fs5.realpath(options.workspaceRoot);
2293
+ const workspaceRealPath = await fs6.realpath(options.workspaceRoot);
2021
2294
  const errorMessage = "Warning: You are running Qwen Code in the root directory. Your entire folder structure will be used for context. It is strongly recommended to run in a project-specific directory.";
2022
- if (path6.dirname(workspaceRealPath) === workspaceRealPath) {
2295
+ if (path7.dirname(workspaceRealPath) === workspaceRealPath) {
2023
2296
  return errorMessage;
2024
2297
  }
2025
2298
  return null;
@@ -2091,114 +2364,6 @@ function initializeWarningHandler() {
2091
2364
  }
2092
2365
  __name(initializeWarningHandler, "initializeWarningHandler");
2093
2366
 
2094
- // packages/cli/src/utils/apiPreconnect.ts
2095
- init_esbuild_shims();
2096
- var import_undici = __toESM(require_undici(), 1);
2097
- var debugLogger5 = createDebugLogger("PRECONNECT");
2098
- var preconnectFired = false;
2099
- var DEFAULT_BASE_URLS = {
2100
- openai: "https://api.openai.com",
2101
- "qwen-oauth": "https://coding.dashscope.aliyuncs.com",
2102
- anthropic: "https://api.anthropic.com",
2103
- dashscope: "https://dashscope.aliyuncs.com"
2104
- };
2105
- var ALL_DEFAULT_URLS = [
2106
- ...Object.values(DEFAULT_BASE_URLS),
2107
- ...getAllProviderBaseUrls()
2108
- ];
2109
- function shouldSkipPreconnect() {
2110
- if (process.env["NODE_EXTRA_CA_CERTS"]) {
2111
- debugLogger5.debug("Skipping preconnect: custom CA certificate configured");
2112
- return true;
2113
- }
2114
- return false;
2115
- }
2116
- __name(shouldSkipPreconnect, "shouldSkipPreconnect");
2117
- function isInSandboxMode() {
2118
- return process.env["SANDBOX"] !== void 0;
2119
- }
2120
- __name(isInSandboxMode, "isInSandboxMode");
2121
- function isDefaultBaseUrl(baseUrl) {
2122
- const normalizedInput = baseUrl.toLowerCase().replace(/^https?:\/\//, "").replace(/\/+$/, "");
2123
- return ALL_DEFAULT_URLS.some((defaultUrl) => {
2124
- const normalizedDefault = defaultUrl.toLowerCase().replace(/^https?:\/\//, "").replace(/\/+$/, "");
2125
- return normalizedInput === normalizedDefault || normalizedInput.startsWith(normalizedDefault + "/");
2126
- });
2127
- }
2128
- __name(isDefaultBaseUrl, "isDefaultBaseUrl");
2129
- function getPreconnectTargetUrl(authType, resolvedBaseUrl) {
2130
- if (resolvedBaseUrl && /^https?:\/\//i.test(resolvedBaseUrl)) {
2131
- if (isDefaultBaseUrl(resolvedBaseUrl)) {
2132
- return resolvedBaseUrl;
2133
- }
2134
- debugLogger5.debug(
2135
- "Skipping preconnect: resolved baseUrl is not a default URL"
2136
- );
2137
- return void 0;
2138
- }
2139
- if (authType && DEFAULT_BASE_URLS[authType]) {
2140
- return DEFAULT_BASE_URLS[authType];
2141
- }
2142
- return void 0;
2143
- }
2144
- __name(getPreconnectTargetUrl, "getPreconnectTargetUrl");
2145
- function preconnectApi(authType, options = {}) {
2146
- if (preconnectFired) {
2147
- return;
2148
- }
2149
- if (process.env["QWEN_CODE_DISABLE_PRECONNECT"] === "1") {
2150
- debugLogger5.debug("Preconnect disabled by environment variable");
2151
- preconnectFired = true;
2152
- return;
2153
- }
2154
- if (isInSandboxMode()) {
2155
- debugLogger5.debug("Skipping preconnect: sandbox mode detected");
2156
- preconnectFired = true;
2157
- return;
2158
- }
2159
- if (shouldSkipPreconnect()) {
2160
- preconnectFired = true;
2161
- return;
2162
- }
2163
- if (detectRuntime() !== "node") {
2164
- debugLogger5.debug("Skipping preconnect: unsupported runtime");
2165
- preconnectFired = true;
2166
- return;
2167
- }
2168
- if (!options.proxy) {
2169
- debugLogger5.debug("Skipping preconnect dispatcher: no proxy configured");
2170
- return;
2171
- }
2172
- const proxy = options.proxy;
2173
- const targetUrl = getPreconnectTargetUrl(authType, options.resolvedBaseUrl);
2174
- if (!targetUrl) {
2175
- debugLogger5.debug("No target URL for preconnect");
2176
- return;
2177
- }
2178
- preconnectFired = true;
2179
- debugLogger5.debug(`Preconnecting to: ${targetUrl}`);
2180
- try {
2181
- const dispatcher = getOrCreateSharedDispatcher(proxy);
2182
- (0, import_undici.fetch)(targetUrl, {
2183
- method: "HEAD",
2184
- signal: AbortSignal.timeout(5e3),
2185
- headers: {
2186
- "User-Agent": "QwenCode-Preconnect/1.0"
2187
- },
2188
- dispatcher
2189
- }).then(() => {
2190
- debugLogger5.debug("Preconnect completed");
2191
- }).catch((error) => {
2192
- const redactedError = redactProxyCredentials(String(error));
2193
- debugLogger5.debug(`Preconnect failed (ignored): ${redactedError}`);
2194
- });
2195
- } catch (error) {
2196
- const redactedError = redactProxyCredentials(String(error));
2197
- debugLogger5.debug(`Preconnect failed (ignored): ${redactedError}`);
2198
- }
2199
- }
2200
- __name(preconnectApi, "preconnectApi");
2201
-
2202
2367
  // packages/cli/src/gemini.tsx
2203
2368
  var debugLogger6 = createDebugLogger("STARTUP");
2204
2369
  function clearCorruptionEnvVars() {
@@ -2334,7 +2499,7 @@ async function main() {
2334
2499
  await initializeI18n(
2335
2500
  resolveLanguageSetting(settings.merged.general?.language)
2336
2501
  );
2337
- const { handleList: handleListExtensions } = await import("./list-AX5FWBVC.js");
2502
+ const { handleList: handleListExtensions } = await import("./list-VSCBNOWT.js");
2338
2503
  await handleListExtensions();
2339
2504
  process.exit(0);
2340
2505
  }
@@ -2348,7 +2513,7 @@ async function main() {
2348
2513
  dns.setDefaultResultOrder(
2349
2514
  validateDnsResolutionOrder(settings.merged.advanced?.dnsResolutionOrder)
2350
2515
  );
2351
- const { themeManager, AUTO_THEME_NAME } = await import("./theme-manager-JW2KOACL.js");
2516
+ const { themeManager, AUTO_THEME_NAME } = await import("./theme-manager-4TJ5TEFD.js");
2352
2517
  themeManager.loadCustomThemes(settings.merged.ui?.customThemes);
2353
2518
  const configuredTheme = settings.merged.ui?.theme;
2354
2519
  if (configuredTheme && configuredTheme !== AUTO_THEME_NAME) {
@@ -2450,7 +2615,7 @@ ${finalArgs[promptIndex + 1]}`;
2450
2615
  const resolveIfPath = /* @__PURE__ */ __name((v) => {
2451
2616
  if (typeof v !== "string" || v.length === 0) return v;
2452
2617
  if (looksLikeInlineJson(v)) return v;
2453
- return path7.resolve(launchCwdForPaths, v);
2618
+ return path8.resolve(launchCwdForPaths, v);
2454
2619
  }, "resolveIfPath");
2455
2620
  argv.mcpConfig = resolveIfPath(argv.mcpConfig);
2456
2621
  argv.openaiLoggingDir = resolveIfPath(argv.openaiLoggingDir);
@@ -2459,15 +2624,15 @@ ${finalArgs[promptIndex + 1]}`;
2459
2624
  argv.telemetryOutfile = resolveIfPath(argv.telemetryOutfile);
2460
2625
  if (Array.isArray(argv.includeDirectories)) {
2461
2626
  argv.includeDirectories = argv.includeDirectories.map(
2462
- (d) => typeof d === "string" && d.length > 0 ? path7.resolve(launchCwdForPaths, d) : d
2627
+ (d) => typeof d === "string" && d.length > 0 ? path8.resolve(launchCwdForPaths, d) : d
2463
2628
  );
2464
2629
  }
2465
2630
  if (typeof argv.jsonSchema === "string") {
2466
2631
  const trimmedSchema = argv.jsonSchema.trim();
2467
2632
  if (trimmedSchema.startsWith("@")) {
2468
2633
  const rel = trimmedSchema.slice(1);
2469
- if (rel.length > 0 && !path7.isAbsolute(rel)) {
2470
- argv.jsonSchema = "@" + path7.resolve(launchCwdForPaths, rel);
2634
+ if (rel.length > 0 && !path8.isAbsolute(rel)) {
2635
+ argv.jsonSchema = "@" + path8.resolve(launchCwdForPaths, rel);
2471
2636
  }
2472
2637
  }
2473
2638
  }
@@ -2498,7 +2663,7 @@ ${finalArgs[promptIndex + 1]}`;
2498
2663
  );
2499
2664
  let resolvedSessionId;
2500
2665
  if (argv.resume === "") {
2501
- const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-6NGEQFBH.js");
2666
+ const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-YBKZZKIA.js");
2502
2667
  resolvedSessionId = await showResumeSessionPicker();
2503
2668
  } else if (!isValidSessionId(argv.resume)) {
2504
2669
  const sessionService = new SessionService(process.cwd());
@@ -2509,7 +2674,7 @@ ${finalArgs[promptIndex + 1]}`;
2509
2674
  writeStderrLine(
2510
2675
  `Multiple sessions found with title "${argv.resume}". Please select one:`
2511
2676
  );
2512
- const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-6NGEQFBH.js");
2677
+ const { showResumeSessionPicker } = await import("./StandaloneSessionPicker-YBKZZKIA.js");
2513
2678
  resolvedSessionId = await showResumeSessionPicker(
2514
2679
  process.cwd(),
2515
2680
  matches
@@ -2559,6 +2724,23 @@ ${finalArgs[promptIndex + 1]}`;
2559
2724
  registerCleanup(disposeMcpHotReload);
2560
2725
  }
2561
2726
  registerLspHotReload(config, registerCleanup);
2727
+ const extensionRefreshState = new ExtensionRefreshState();
2728
+ const extensionFileWatcher = isBareMode(argv.bare) || config.isSafeMode() ? void 0 : new ExtensionFileWatcher(config, void 0, extensionRefreshState);
2729
+ extensionFileWatcher?.startWatching();
2730
+ if (extensionFileWatcher) {
2731
+ const restartExtensionWatcher = /* @__PURE__ */ __name(() => extensionFileWatcher.restartWatching(), "restartExtensionWatcher");
2732
+ extensionRefreshState.on(
2733
+ "extensions-reloaded" /* ExtensionsReloaded */,
2734
+ restartExtensionWatcher
2735
+ );
2736
+ registerCleanup(() => {
2737
+ extensionRefreshState.off(
2738
+ "extensions-reloaded" /* ExtensionsReloaded */,
2739
+ restartExtensionWatcher
2740
+ );
2741
+ extensionFileWatcher.stopWatching();
2742
+ });
2743
+ }
2562
2744
  if (startupWorktreeContext) {
2563
2745
  config.setPendingStartupWorktreeNotice(
2564
2746
  buildStartupWorktreeNotice(startupWorktreeContext)
@@ -2603,17 +2785,7 @@ ${finalArgs[promptIndex + 1]}`;
2603
2785
  }
2604
2786
  });
2605
2787
  registerCleanup(() => config.shutdown());
2606
- try {
2607
- const modelsConfig = config.getModelsConfig();
2608
- const authType = modelsConfig.getCurrentAuthType();
2609
- const resolvedBaseUrl = modelsConfig.getGenerationConfig().baseUrl;
2610
- const proxy = config.getProxy();
2611
- preconnectApi(authType, { resolvedBaseUrl, proxy });
2612
- } catch (error) {
2613
- debugLogger6.debug(
2614
- `Preconnect skipped due to error getting authType: ${error}`
2615
- );
2616
- }
2788
+ startEarlyStartupPrefetches(config);
2617
2789
  const wasRaw = process.stdin.isRaw;
2618
2790
  let kittyProtocolDetectionComplete;
2619
2791
  let themeAutoDetectionComplete;
@@ -2621,7 +2793,7 @@ ${finalArgs[promptIndex + 1]}`;
2621
2793
  registerCleanup(installInteractiveSignalHandlers(wasRaw));
2622
2794
  }
2623
2795
  if (config.isInteractive() && !wasRaw && process.stdin.isTTY) {
2624
- const { startEarlyInputCapture, stopAndGetCapturedInput } = await import("./earlyInputCapture-OAHBOGOO.js");
2796
+ const { startEarlyInputCapture, stopAndGetCapturedInput } = await import("./earlyInputCapture-JWMCAJZR.js");
2625
2797
  const { detectAndEnableKittyProtocol } = await import("./kittyProtocolDetector-OJRCJLIU.js");
2626
2798
  process.stdin.setRawMode(true);
2627
2799
  startEarlyInputCapture();
@@ -2634,25 +2806,24 @@ ${finalArgs[promptIndex + 1]}`;
2634
2806
  }
2635
2807
  }
2636
2808
  if (config.isInteractive()) {
2637
- const { setMaxSizedBoxDebugging } = await import("./MaxSizedBox-OWTCJQNO.js");
2809
+ const { setMaxSizedBoxDebugging } = await import("./MaxSizedBox-W6SAJMJC.js");
2638
2810
  setMaxSizedBoxDebugging(isDebugMode3);
2639
2811
  }
2640
2812
  const inputFormat = process.stdin.isTTY ? "text" /* TEXT */ : typeof config.getInputFormat === "function" ? config.getInputFormat() : "text" /* TEXT */;
2641
- const { initializeApp } = await import("./initializer-XX3UGUHE.js");
2642
- const initializationResult = await initializeApp(config, settings);
2813
+ const { initializeApp } = await import("./initializer-NDEBMSOG.js");
2814
+ let input = config.getQuestion();
2815
+ const hasRemoteInput = Boolean(config.getInputFile?.());
2816
+ const deferIdeConnection = config.isInteractive() && !config.getExperimentalZedIntegration() && !input && !hasRemoteInput;
2817
+ const initializationResult = await initializeApp(config, settings, {
2818
+ deferIdeConnection
2819
+ });
2643
2820
  profileCheckpoint("after_initialize_app");
2644
2821
  if (config.getExperimentalZedIntegration()) {
2645
- const { runAcpAgent } = await import("./acpAgent-XPRWSNOW.js");
2822
+ const { runAcpAgent } = await import("./acpAgent-SQJQBOTS.js");
2646
2823
  await runAcpAgent(config, settings, argv);
2647
2824
  await runExitCleanup();
2648
2825
  process.exit(0);
2649
2826
  }
2650
- if (config.isInteractive()) {
2651
- void import("./scheduler-MOLWOE4G.js").then((m) => m.startBackgroundHousekeeping(config, settings)).catch((err) => {
2652
- debugLogger6.warn("failed to start background housekeeping:", err);
2653
- });
2654
- }
2655
- let input = config.getQuestion();
2656
2827
  const startupWarnings = [
2657
2828
  .../* @__PURE__ */ new Set([
2658
2829
  ...config.isSafeMode() ? [
@@ -2687,13 +2858,17 @@ ${finalArgs[promptIndex + 1]}`;
2687
2858
  setInteractiveMode(true);
2688
2859
  await kittyProtocolDetectionComplete;
2689
2860
  await themeAutoDetectionComplete;
2690
- const { startInteractiveUI } = await import("./startInteractiveUI-SUSZ6FWB.js");
2861
+ const { startInteractiveUI } = await import("./startInteractiveUI-AFXLGUFI.js");
2691
2862
  await startInteractiveUI(
2692
2863
  config,
2693
2864
  settings,
2694
2865
  startupWarnings,
2695
2866
  process.cwd(),
2696
- initializationResult
2867
+ initializationResult,
2868
+ {
2869
+ postRenderConnectIde: deferIdeConnection,
2870
+ extensionRefreshState
2871
+ }
2697
2872
  );
2698
2873
  clearCorruptionEnvVars();
2699
2874
  return;
@@ -2740,7 +2915,7 @@ ${finalArgs[promptIndex + 1]}`;
2740
2915
  ${input}`;
2741
2916
  }
2742
2917
  }
2743
- const { validateNonInteractiveAuth } = await import("./validateNonInterActiveAuth-DDI62H5X.js");
2918
+ const { validateNonInteractiveAuth } = await import("./validateNonInterActiveAuth-G5EY47DE.js");
2744
2919
  const nonInteractiveConfig = await validateNonInteractiveAuth(
2745
2920
  settings.merged.security?.auth?.useExternal,
2746
2921
  config,
@@ -2749,7 +2924,7 @@ ${input}`;
2749
2924
  const prompt_id = createNonInteractivePromptId(config.getSessionId());
2750
2925
  if (inputFormat === "stream-json" /* STREAM_JSON */) {
2751
2926
  const trimmedInput = (input ?? "").trim();
2752
- const { runNonInteractiveStreamJson } = await import("./session-VYO2GRO2.js");
2927
+ const { runNonInteractiveStreamJson } = await import("./session-RIGKDMGR.js");
2753
2928
  await runNonInteractiveStreamJson(
2754
2929
  nonInteractiveConfig,
2755
2930
  trimmedInput.length > 0 ? trimmedInput : "",
@@ -2773,7 +2948,7 @@ ${input}`;
2773
2948
  prompt_length: input.length
2774
2949
  });
2775
2950
  debugLogger6.debug(`Session ID: ${config.getSessionId()}`);
2776
- const { runNonInteractive } = await import("./nonInteractiveCli-4QMV6C4J.js");
2951
+ const { runNonInteractive } = await import("./nonInteractiveCli-32HZK274.js");
2777
2952
  const exitCode = await runNonInteractive(
2778
2953
  nonInteractiveConfig,
2779
2954
  settings,
@@ -2790,7 +2965,10 @@ function createNonInteractivePromptId(sessionId) {
2790
2965
  }
2791
2966
  __name(createNonInteractivePromptId, "createNonInteractivePromptId");
2792
2967
  function registerLspHotReload(config, registerCleanup2) {
2793
- if (config.isLspEnabled?.() !== true || !config.getLspClient?.()?.reinitialize) {
2968
+ const lspClient = config.getLspClient?.();
2969
+ const runtimeConfig = config;
2970
+ const reinitializeLsp = runtimeConfig.reinitializeLsp;
2971
+ if (config.isLspEnabled?.() !== true || !lspClient?.reinitialize || !reinitializeLsp) {
2794
2972
  return;
2795
2973
  }
2796
2974
  const lspConfigWatcher = new LspConfigWatcher(config.getProjectRoot());
@@ -2808,7 +2986,7 @@ function registerLspHotReload(config, registerCleanup2) {
2808
2986
  );
2809
2987
  let errorReported = false;
2810
2988
  try {
2811
- const result = await config.reinitializeLsp();
2989
+ const result = await reinitializeLsp();
2812
2990
  if (result) {
2813
2991
  const failedServers = getRuntimeReloadFailedNames(result.reconcile);
2814
2992
  debugLogger6.info(
@@ -2885,8 +3063,3 @@ export {
2885
3063
  * Copyright 2025 Google LLC
2886
3064
  * SPDX-License-Identifier: Apache-2.0
2887
3065
  */
2888
- /**
2889
- * @license
2890
- * Copyright 2026 Qwen Team
2891
- * SPDX-License-Identifier: Apache-2.0
2892
- */