@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.
- package/dist/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
- package/dist/bundled/qc-helper/docs/features/channels/overview.md +23 -12
- package/dist/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
- package/dist/bundled/qc-helper/docs/features/channels/wecom.md +111 -0
- package/dist/bundled/qc-helper/docs/features/hooks.md +36 -34
- package/dist/bundled/qc-helper/docs/features/memory.md +1 -1
- package/dist/bundled/qc-helper/docs/qwen-serve.md +17 -10
- package/dist/bundled/review/SKILL.md +6 -2
- package/dist/chunks/{MaxSizedBox-OWTCJQNO.js → MaxSizedBox-W6SAJMJC.js} +13 -11
- package/dist/chunks/{StandaloneSessionPicker-6NGEQFBH.js → StandaloneSessionPicker-YBKZZKIA.js} +28 -23
- package/dist/chunks/{acpAgent-XPRWSNOW.js → acpAgent-SQJQBOTS.js} +110 -80
- package/dist/chunks/{agent-TB6S4VXU.js → agent-QU7Q2RZN.js} +8 -8
- package/dist/chunks/{agent-headless-R3XYK5TT.js → agent-headless-PBHLWHND.js} +8 -8
- package/dist/chunks/{anthropicContentGenerator-FZQAEMYK.js → anthropicContentGenerator-52G6ZA3D.js} +31 -4
- package/dist/chunks/{artifact-tool-H2TNPNP5.js → artifact-tool-D233YJFH.js} +25 -6
- package/dist/chunks/{bridge-HVRG6SMU.js → bridge-LJLLDUMW.js} +17 -14
- package/dist/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
- package/dist/chunks/{channel-worker-supervisor-B7MSMB5K.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
- package/dist/chunks/{chunk-YRM6BC6H.js → chunk-27AYMAL6.js} +506 -63
- package/dist/chunks/{chunk-536GZ6UF.js → chunk-2MDC5WDB.js} +17 -111
- package/dist/chunks/{chunk-H3D6XAOL.js → chunk-2PRSBVPI.js} +3 -3
- package/dist/chunks/chunk-332PWN27.js +19 -0
- package/dist/chunks/{chunk-FVMWEHWU.js → chunk-3B26UVCX.js} +114 -12
- package/dist/chunks/{chunk-ZM5BPDXV.js → chunk-3F22JT4E.js} +1 -1
- package/dist/chunks/{chunk-W6RH6KHR.js → chunk-3GPVYALM.js} +4 -2
- package/dist/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
- package/dist/chunks/{chunk-PA7QS4X5.js → chunk-43W4YSO6.js} +1 -12
- package/dist/chunks/{chunk-5EB2HK3X.js → chunk-4IK56VLC.js} +1 -1
- package/dist/chunks/{chunk-UE5TCZE6.js → chunk-5FAUIGXH.js} +5 -13
- package/dist/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
- package/dist/chunks/{chunk-PDITONOB.js → chunk-5MRUKUOG.js} +5347 -4132
- package/dist/chunks/{chunk-4UC3U66K.js → chunk-6EUMFVPJ.js} +5 -5
- package/dist/chunks/{chunk-YOGGIAGF.js → chunk-6JL5OVLX.js} +1 -1
- package/dist/chunks/{chunk-QG4ZO2EB.js → chunk-74E6VVF6.js} +11 -11
- package/dist/chunks/chunk-A2X3KLC3.js +3807 -0
- package/dist/chunks/{chunk-BA4HLTG2.js → chunk-B6B2MUUF.js} +5 -5
- package/dist/chunks/{chunk-XKYOIERV.js → chunk-BN5VYAOZ.js} +681 -1239
- package/dist/chunks/{chunk-IO76BGJ3.js → chunk-BYUA6YYS.js} +15 -9
- package/dist/chunks/{chunk-NCFY7PWS.js → chunk-CCGOFQV3.js} +51 -2
- package/dist/chunks/{chunk-66KNL43D.js → chunk-CD6USWHZ.js} +1 -1
- package/dist/chunks/{chunk-ZWSTIPSW.js → chunk-CEITMQ62.js} +2 -2
- package/dist/chunks/{chunk-7AQTBTVY.js → chunk-EJP6Z7NU.js} +4 -3
- package/dist/chunks/{chunk-RTW5ZXHO.js → chunk-EZTNYRHH.js} +6 -5
- package/dist/chunks/{chunk-MJQFA66Z.js → chunk-FAATDXYS.js} +308 -81
- package/dist/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
- package/dist/chunks/{chunk-HTC4R67V.js → chunk-FES4YXJ3.js} +9 -9
- package/dist/chunks/{chunk-NBKE6QRZ.js → chunk-FHTUTVIQ.js} +10 -5
- package/dist/chunks/chunk-FII3C4E7.js +168 -0
- package/dist/chunks/{chunk-2NL7ED5Q.js → chunk-FV7425LN.js} +22 -1
- package/dist/chunks/{chunk-J6OET6C3.js → chunk-GAI76CFX.js} +4 -4
- package/dist/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
- package/dist/chunks/chunk-GLE2YUPU.js +34 -0
- package/dist/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
- package/dist/chunks/{chunk-SM624MOZ.js → chunk-GWUN54UD.js} +1 -1
- package/dist/chunks/chunk-H3TELH3H.js +942 -0
- package/dist/chunks/{chunk-XZULYFIX.js → chunk-HD4DZI2L.js} +2 -2
- package/dist/chunks/{chunk-KLLLWQM2.js → chunk-HPQIVXSP.js} +1 -1
- package/dist/chunks/{chunk-WSVZFWN4.js → chunk-IBY3Q3HG.js} +693 -104
- package/dist/chunks/{chunk-JSEOX4CM.js → chunk-JGR6W4IX.js} +14 -8
- package/dist/chunks/chunk-K652V4NH.js +283 -0
- package/dist/chunks/{chunk-OCBJKHF2.js → chunk-KH2CZZDD.js} +2 -2
- package/dist/chunks/chunk-LGFAYIKX.js +115 -0
- package/dist/chunks/{chunk-QG5KDB6X.js → chunk-LZDW5TDV.js} +5 -5
- package/dist/chunks/{chunk-ENKWIF75.js → chunk-MA4AZNP7.js} +10 -10
- package/dist/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
- package/dist/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
- package/dist/chunks/{chunk-ML2ZWH2K.js → chunk-PCWYMX57.js} +14 -153
- package/dist/chunks/{chunk-NHFBLJOI.js → chunk-Q3PQ5VGJ.js} +1 -1
- package/dist/chunks/{chunk-LGXBB2R2.js → chunk-QK3I36QG.js} +1 -1
- package/dist/chunks/chunk-RA7TR75G.js +8223 -0
- package/dist/chunks/{chunk-KSPVDFE4.js → chunk-SAIILPQ3.js} +0 -3
- package/dist/chunks/{chunk-DHKDK57Q.js → chunk-SNZPA74J.js} +146 -54
- package/dist/chunks/{chunk-PWR5MVM3.js → chunk-SSP3UT5C.js} +4 -4
- package/dist/chunks/{chunk-4LETJLG2.js → chunk-SUCRVT5L.js} +1 -1
- package/dist/chunks/{chunk-5YLZHETW.js → chunk-TRR5KGDN.js} +1 -1
- package/dist/chunks/chunk-UIDXQNMV.js +13 -0
- package/dist/chunks/{chunk-PIORL4OD.js → chunk-UKV3D7WB.js} +0 -44
- package/dist/chunks/chunk-UYNUIGUR.js +167 -0
- package/dist/chunks/chunk-V2TYBEWU.js +28 -0
- package/dist/chunks/chunk-V35MD7KN.js +13 -0
- package/dist/chunks/{chunk-N4HTVZDZ.js → chunk-VR3KCBHH.js} +1 -1
- package/dist/chunks/{chunk-APYUOROB.js → chunk-W4CTWW7M.js} +423 -61
- package/dist/chunks/{chunk-ABANKQYY.js → chunk-WJAW2O5H.js} +92 -465
- package/dist/chunks/{chunk-6RSBRKF5.js → chunk-WN4YJJGH.js} +2 -2
- package/dist/chunks/chunk-XNXVCNAT.js +88 -0
- package/dist/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
- package/dist/chunks/chunk-XQPMKWSV.js +487 -0
- package/dist/chunks/{chunk-4FQL7KUS.js → chunk-XWDHZP7P.js} +8 -8
- package/dist/chunks/{chunk-REPRY4F7.js → chunk-YCKKP4QA.js} +10 -10
- package/dist/chunks/{chunk-YNWQ3PUQ.js → chunk-YJWMOGGZ.js} +3 -3
- package/dist/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
- package/dist/chunks/{chunk-45YCXM2H.js → chunk-YZDBUH6S.js} +45 -9
- package/dist/chunks/chunk-Z3I3QJK3.js +47 -0
- package/dist/chunks/{chunk-G23FFNLT.js → chunk-ZDGPPCTW.js} +20 -8
- package/dist/chunks/chunk-ZL5HN75Q.js +61 -0
- package/dist/chunks/{chunk-IQX5S2RS.js → chunk-ZL7JCYWM.js} +66 -7
- package/dist/chunks/{computer-use-A72BECH4.js → computer-use-4B45EG2F.js} +8 -8
- package/dist/chunks/{contextCommand-RREXA4B7.js → contextCommand-GIVRWNTS.js} +12 -11
- package/dist/chunks/{cron-create-DDYU4DIR.js → cron-create-JSXEIPVS.js} +1 -1
- package/dist/chunks/{cron-delete-DFKOUZWN.js → cron-delete-OIFVEPGU.js} +1 -1
- package/dist/chunks/{cron-list-ME5QGAR5.js → cron-list-D4ZX4IOE.js} +1 -1
- package/dist/chunks/{daemon-XWG2EGFX.js → daemon-WPAENEBW.js} +71 -3
- package/dist/chunks/{daemon-status-provider-Y6AFXTET.js → daemon-status-provider-WBOAMCHE.js} +20 -17
- package/dist/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
- package/dist/chunks/{dist-LPVU3L2M.js → dist-BEXOZXLQ.js} +6 -3792
- package/dist/chunks/{dist-7GU63KI5.js → dist-E6UANPIM.js} +1 -1
- package/dist/chunks/{dist-VHBP2PIG.js → dist-H2AEJCZ5.js} +2 -2
- package/dist/chunks/{dist-3UDX5T4T.js → dist-O2IRTRPP.js} +1 -1
- package/dist/chunks/dist-SCFLLYMK.js +3217 -0
- package/dist/chunks/{dist-H4HHZYCI.js → dist-Z34QPAQW.js} +2 -2
- package/dist/chunks/{earlyInputCapture-OAHBOGOO.js → earlyInputCapture-JWMCAJZR.js} +8 -8
- package/dist/chunks/{edit-SFYW3FOV.js → edit-O5FUVHBE.js} +9 -9
- package/dist/chunks/{en-AXARKOWO.js → en-N4EPZAQI.js} +31 -2
- package/dist/chunks/{enter-worktree-LUPPQ2NH.js → enter-worktree-LOJFRC3D.js} +8 -8
- package/dist/chunks/{enterPlanMode-44GEN5U6.js → enterPlanMode-VS3FAUPX.js} +8 -8
- package/dist/chunks/environment-WKW5TLSH.js +90 -0
- package/dist/chunks/{errors-H3Q3W3DL.js → errors-LEZXHJMR.js} +10 -10
- package/dist/chunks/{exit-worktree-34CVVWT4.js → exit-worktree-RN2NXRMP.js} +8 -8
- package/dist/chunks/{exitPlanMode-5G5BHNUP.js → exitPlanMode-EPC424I4.js} +8 -8
- package/dist/chunks/{fast-path-7PKGFBRM.js → fast-path-UUPAFOSQ.js} +12 -3
- package/dist/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
- package/dist/chunks/{fr-MBMNQSQ6.js → fr-5WWMY53B.js} +30 -1
- package/dist/chunks/{gemini-2II6JH4H.js → gemini-QCKK4XNU.js} +438 -265
- package/dist/chunks/{geminiContentGenerator-SWEJVOC4.js → geminiContentGenerator-DX4SRXJA.js} +1 -1
- package/dist/chunks/{glob-5DFC7DXW.js → glob-4URMJWRX.js} +8 -8
- package/dist/chunks/{grep-QYVXGRRJ.js → grep-AEQB5KED.js} +8 -8
- package/dist/chunks/handleAutoUpdate-Y4YNG34Y.js +65 -0
- package/dist/chunks/{initializer-XX3UGUHE.js → initializer-NDEBMSOG.js} +17 -13
- package/dist/chunks/{ja-HFV5QCHR.js → ja-CUHZOLEJ.js} +30 -1
- package/dist/chunks/{list-AX5FWBVC.js → list-VSCBNOWT.js} +17 -15
- package/dist/chunks/{loadedSettingsAdapter-ISOM6GJ7.js → loadedSettingsAdapter-FDO752BA.js} +15 -13
- package/dist/chunks/{loop-wakeup-ZW5P6VPY.js → loop-wakeup-OHWEMFP5.js} +2 -2
- package/dist/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
- package/dist/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
- package/dist/chunks/{mcp-74F6725E.js → mcp-MLPWTHUV.js} +15 -13
- package/dist/chunks/{monitor-W4WRSC2C.js → monitor-WCVHIJUJ.js} +16 -11
- package/dist/chunks/{nonInteractiveCli-4QMV6C4J.js → nonInteractiveCli-32HZK274.js} +52 -44
- package/dist/chunks/{notebook-edit-XBZEIP42.js → notebook-edit-NPOMPKS4.js} +9 -9
- package/dist/chunks/{openaiContentGenerator-RTUJDESE.js → openaiContentGenerator-6AIBSRQK.js} +6 -6
- package/dist/chunks/{pidfile-YWSGNTPK.js → pidfile-7Y3QEDSZ.js} +8 -8
- package/dist/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
- package/dist/chunks/{qwenContentGenerator-4ZFYAZLY.js → qwenContentGenerator-OUYOAYT4.js} +10 -10
- package/dist/chunks/{read-file-D7DKDIAC.js → read-file-EESFA24L.js} +3 -3
- package/dist/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
- package/dist/chunks/{ripGrep-KG7JYNER.js → ripGrep-DLYV7ZZG.js} +8 -8
- package/dist/chunks/{ru-PER5I4OI.js → ru-MKM2HFDS.js} +26 -1
- package/dist/chunks/{run-qwen-serve-XGJSNF6S.js → run-qwen-serve-WUEHQROF.js} +602 -143
- package/dist/chunks/{scheduler-MOLWOE4G.js → scheduler-SK4Y66V4.js} +8 -8
- package/dist/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
- package/dist/chunks/{serve-4ZNVPYND.js → serve-UCDGVZFI.js} +17 -14
- package/dist/chunks/{server-ACWDFHIF.js → server-FVGFFVZ4.js} +1394 -328
- package/dist/chunks/{session-VYO2GRO2.js → session-RIGKDMGR.js} +53 -45
- package/dist/chunks/{settings-4J2O3K22.js → settings-LVFFGXGE.js} +24 -20
- package/dist/chunks/{shell-RKERJYXR.js → shell-PAWNAFYN.js} +8 -8
- package/dist/chunks/{skill-JYACZJ5V.js → skill-5YIN3Z6Y.js} +15 -5
- package/dist/chunks/{spawnChannel-BA3U3RGX.js → spawnChannel-KIMZHWNR.js} +10 -10
- package/dist/chunks/{src-3P337V4P.js → src-BIWCD3VX.js} +21 -9
- package/dist/chunks/{startInteractiveUI-SUSZ6FWB.js → startInteractiveUI-AFXLGUFI.js} +33759 -41620
- package/dist/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
- package/dist/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
- package/dist/chunks/{team-create-YVWGRZEA.js → team-create-26WOMISV.js} +8 -8
- package/dist/chunks/{team-plan-approval-VRF54TTI.js → team-plan-approval-B5XB6UQC.js} +8 -8
- package/dist/chunks/{theme-manager-JW2KOACL.js → theme-manager-4TJ5TEFD.js} +8 -8
- package/dist/chunks/{tool-search-KUSMAZBN.js → tool-search-FFU63E6M.js} +6 -23
- package/dist/chunks/total-session-admission-JOD7SMPJ.js +72 -0
- package/dist/chunks/{trustedFolders-ERGSUCDK.js → trustedFolders-IJ2QHXSC.js} +9 -9
- package/dist/chunks/updateCheck-5Z25DCBP.js +65 -0
- package/dist/chunks/{validateNonInterActiveAuth-DDI62H5X.js → validateNonInterActiveAuth-G5EY47DE.js} +49 -41
- package/dist/chunks/{version-VB3AHVUF.js → version-LGO3GOKQ.js} +2 -1
- package/dist/chunks/{workflow-WINKRCI4.js → workflow-ZTK3WT3D.js} +9 -9
- package/dist/chunks/{workspace-providers-status-ZVZPXKSO.js → workspace-providers-status-YMPTRKW2.js} +18 -15
- package/dist/chunks/workspace-registry-NBUL6LBH.js +74 -0
- package/dist/chunks/{workspace-service-GAS2LV2P.js → workspace-service-V6G2RCD4.js} +21 -19
- package/dist/chunks/{workspace-skills-status-4WGKYJVA.js → workspace-skills-status-ZCW44BCH.js} +16 -14
- package/dist/chunks/{write-file-UTLKVZNN.js → write-file-4FUTAEW6.js} +9 -9
- package/dist/chunks/{zh-RS3HZHFH.js → zh-J4F6QWQV.js} +31 -2
- package/dist/chunks/{zh-TW-L5GRQ4S4.js → zh-TW-XVDWOLSW.js} +31 -2
- package/dist/cli.js +11 -11
- package/dist/locales/ca.js +30 -0
- package/dist/locales/de.js +30 -0
- package/dist/locales/en.js +38 -2
- package/dist/locales/fr.js +36 -0
- package/dist/locales/ja.js +36 -0
- package/dist/locales/pt.js +30 -0
- package/dist/locales/ru.js +30 -0
- package/dist/locales/zh-TW.js +38 -2
- package/dist/locales/zh.js +38 -2
- package/dist/package.json +3 -3
- package/dist/web-shell/assets/{arc-C6tzvtOa.js → arc-BWyoJpY2.js} +1 -1
- package/dist/web-shell/assets/{architectureDiagram-3BPJPVTR-DSYQFGn9.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
- package/dist/web-shell/assets/{blockDiagram-GPEHLZMM-CHjBdXAD.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
- package/dist/web-shell/assets/{c4Diagram-AAUBKEIU-BQzK6Yyb.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
- package/dist/web-shell/assets/channel-wmPUGHtg.js +1 -0
- package/dist/web-shell/assets/{chunk-2J33WTMH-hpP2p3Ij.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
- package/dist/web-shell/assets/{chunk-4BX2VUAB-B5KtK1JJ.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
- package/dist/web-shell/assets/{chunk-55IACEB6-BDv6Mfr2.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
- package/dist/web-shell/assets/{chunk-727SXJPM-BevPWfrX.js → chunk-727SXJPM-B2X34knw.js} +1 -1
- package/dist/web-shell/assets/{chunk-AQP2D5EJ-ChDrz2ad.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
- package/dist/web-shell/assets/{chunk-FMBD7UC4-ClMdVSDs.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
- package/dist/web-shell/assets/{chunk-ND2GUHAM-BceV8kZS.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
- package/dist/web-shell/assets/{chunk-QZHKN3VN-DtyK2wwc.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
- package/dist/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
- package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
- package/dist/web-shell/assets/{cose-bilkent-S5V4N54A-BGMsqwmE.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
- package/dist/web-shell/assets/{dagre-BM42HDAG-C-71clpF.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
- package/dist/web-shell/assets/{diagram-2AECGRRQ-WIzzlkec.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
- package/dist/web-shell/assets/{diagram-5GNKFQAL-CtnhZUP1.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
- package/dist/web-shell/assets/{diagram-KO2AKTUF-CS_IUezp.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
- package/dist/web-shell/assets/{diagram-LMA3HP47-BQnGRwN9.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
- package/dist/web-shell/assets/{diagram-OG6HWLK6-By2VIocq.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
- package/dist/web-shell/assets/{erDiagram-TEJ5UH35-Dy8WeNkr.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
- package/dist/web-shell/assets/{flowDiagram-I6XJVG4X-Diu_4y0w.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
- package/dist/web-shell/assets/{ganttDiagram-6RSMTGT7-CH8euujP.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
- package/dist/web-shell/assets/{gitGraphDiagram-PVQCEYII-DHiObZq1.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
- package/dist/web-shell/assets/index-CNwoO1Cn.js +783 -0
- package/dist/web-shell/assets/index-CWQ0z6kZ.css +5 -0
- package/dist/web-shell/assets/{infoDiagram-5YYISTIA-CvC9A6fh.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
- package/dist/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK46kC4E.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
- package/dist/web-shell/assets/{journeyDiagram-JHISSGLW-B2TIiKq4.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
- package/dist/web-shell/assets/{kanban-definition-UN3LZRKU-Bh0WAulO.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
- package/dist/web-shell/assets/{linear-Bxe9SHMk.js → linear-GWWguGfD.js} +1 -1
- package/dist/web-shell/assets/{mermaid.core-B1Pv6D5B.js → mermaid.core-JqtkxvCl.js} +5 -5
- package/dist/web-shell/assets/{mindmap-definition-RKZ34NQL-Bz0joLH8.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
- package/dist/web-shell/assets/{pieDiagram-4H26LBE5-CnN4x-VS.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
- package/dist/web-shell/assets/{quadrantDiagram-W4KKPZXB-BYWD4xO4.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
- package/dist/web-shell/assets/{requirementDiagram-4Y6WPE33-B4MEhI9h.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
- package/dist/web-shell/assets/{sankeyDiagram-5OEKKPKP-Dk_FgKLp.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
- package/dist/web-shell/assets/{sequenceDiagram-3UESZ5HK-B4ksiBZQ.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
- package/dist/web-shell/assets/{stateDiagram-AJRCARHV-CYf0xSPl.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
- package/dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
- package/dist/web-shell/assets/{timeline-definition-PNZ67QCA-0CXeWHNY.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
- package/dist/web-shell/assets/{vennDiagram-CIIHVFJN-DHoYY9v2.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
- package/dist/web-shell/assets/{wardley-L42UT6IY-D_65qshr.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
- package/dist/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cv90x1sd.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
- package/dist/web-shell/assets/{xychartDiagram-2RQKCTM6-5FQCYJyh.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
- package/dist/web-shell/index.html +2 -2
- package/package.json +3 -2
- package/dist/web-shell/assets/channel-V-ZaJrA6.js +0 -1
- package/dist/web-shell/assets/classDiagram-4FO5ZUOK-s-H0snGT.js +0 -1
- package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-s-H0snGT.js +0 -1
- package/dist/web-shell/assets/index-DW75jq0K.css +0 -5
- package/dist/web-shell/assets/index-tiCo0xbZ.js +0 -779
- 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-
|
|
16
|
+
} from "./chunk-W4CTWW7M.js";
|
|
13
17
|
import {
|
|
14
18
|
RELAUNCH_EXIT_CODE
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
50
|
-
} from "./chunk-ABANKQYY.js";
|
|
54
|
+
loadSettings
|
|
55
|
+
} from "./chunk-WJAW2O5H.js";
|
|
51
56
|
import {
|
|
52
57
|
initializeI18n,
|
|
53
58
|
resolveLanguageSetting
|
|
54
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
65
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
130
|
-
import "./chunk-
|
|
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
|
|
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/
|
|
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("
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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((
|
|
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
|
-
|
|
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((
|
|
1441
|
+
return new Promise((resolve3, reject) => {
|
|
1169
1442
|
child.on("error", reject);
|
|
1170
1443
|
child.on("close", (code) => {
|
|
1171
1444
|
process.stdin.resume();
|
|
1172
|
-
|
|
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
|
|
1186
|
-
import
|
|
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
|
|
1479
|
+
import path5 from "node:path";
|
|
1207
1480
|
function isContainerPathWithinWorkdir(containerWorkdir, containerPath) {
|
|
1208
1481
|
const normalize = /* @__PURE__ */ __name((value) => {
|
|
1209
|
-
const normalized =
|
|
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 (!
|
|
1254
|
-
|
|
1526
|
+
if (!fs4.existsSync(dir)) {
|
|
1527
|
+
fs4.mkdirSync(dir, { recursive: true });
|
|
1255
1528
|
}
|
|
1256
|
-
return
|
|
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
|
|
1545
|
+
return path6.join(SETTINGS_DIRECTORY_NAME, `sandbox-macos-${profile}.sb`);
|
|
1273
1546
|
}
|
|
1274
|
-
return
|
|
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 =
|
|
1610
|
+
const projectSandboxBashrc = path6.join(
|
|
1338
1611
|
SETTINGS_DIRECTORY_NAME,
|
|
1339
1612
|
"sandbox.bashrc"
|
|
1340
1613
|
);
|
|
1341
|
-
if (
|
|
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 (!
|
|
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
|
-
|
|
1377
|
-
|
|
1649
|
+
fs4.mkdirSync(qwenDir, { recursive: true });
|
|
1650
|
+
fs4.mkdirSync(runtimeDir, { recursive: true });
|
|
1378
1651
|
const args2 = [
|
|
1379
1652
|
"-D",
|
|
1380
|
-
`TARGET_DIR=${
|
|
1653
|
+
`TARGET_DIR=${fs4.realpathSync(process.cwd())}`,
|
|
1381
1654
|
"-D",
|
|
1382
|
-
`TMP_DIR=${
|
|
1655
|
+
`TMP_DIR=${fs4.realpathSync(os2.tmpdir())}`,
|
|
1383
1656
|
"-D",
|
|
1384
|
-
`HOME_DIR=${
|
|
1657
|
+
`HOME_DIR=${fs4.realpathSync(os2.homedir())}`,
|
|
1385
1658
|
"-D",
|
|
1386
|
-
`CACHE_DIR=${
|
|
1659
|
+
`CACHE_DIR=${fs4.realpathSync(execSync(`getconf DARWIN_USER_CACHE_DIR`).toString().trim())}`,
|
|
1387
1660
|
"-D",
|
|
1388
|
-
`QWEN_DIR=${
|
|
1661
|
+
`QWEN_DIR=${fs4.realpathSync(qwenDir)}`,
|
|
1389
1662
|
"-D",
|
|
1390
|
-
`RUNTIME_DIR=${
|
|
1663
|
+
`RUNTIME_DIR=${fs4.realpathSync(runtimeDir)}`
|
|
1391
1664
|
];
|
|
1392
1665
|
const MAX_INCLUDE_DIRS = 5;
|
|
1393
|
-
const targetDir =
|
|
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 =
|
|
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((
|
|
1745
|
+
return new Promise((resolve3, reject) => {
|
|
1473
1746
|
sandboxProcess2?.on("error", reject);
|
|
1474
1747
|
sandboxProcess2?.on("close", (code) => {
|
|
1475
1748
|
process.stdin.resume();
|
|
1476
|
-
|
|
1749
|
+
resolve3(code ?? 1);
|
|
1477
1750
|
});
|
|
1478
1751
|
});
|
|
1479
1752
|
}
|
|
1480
1753
|
writeStderrLine(`hopping into sandbox (command: ${config.command}) ...`);
|
|
1481
|
-
const gcPath =
|
|
1482
|
-
const projectSandboxDockerfile =
|
|
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 =
|
|
1759
|
+
const isCustomProjectSandbox = fs4.existsSync(projectSandboxDockerfile);
|
|
1487
1760
|
const image = config.image;
|
|
1488
|
-
const workdir =
|
|
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 =
|
|
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 ${
|
|
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 =
|
|
1582
|
-
if (
|
|
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 (
|
|
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 (!
|
|
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 (!
|
|
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 =
|
|
2027
|
+
const sandboxVenvPath = path6.resolve(
|
|
1755
2028
|
SETTINGS_DIRECTORY_NAME,
|
|
1756
2029
|
"sandbox.venv"
|
|
1757
2030
|
);
|
|
1758
|
-
if (!
|
|
1759
|
-
|
|
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 =
|
|
1789
|
-
|
|
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((
|
|
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
|
-
|
|
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((
|
|
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
|
-
|
|
2164
|
+
resolve3(false);
|
|
1892
2165
|
});
|
|
1893
2166
|
checkProcess.on("close", () => {
|
|
1894
|
-
|
|
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((
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
1995
|
-
const warningsContent = await
|
|
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
|
|
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
|
|
2015
|
-
import
|
|
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
|
|
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 (
|
|
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-
|
|
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-
|
|
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
|
|
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 ?
|
|
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 && !
|
|
2470
|
-
argv.jsonSchema = "@" +
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
2642
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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
|
|
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
|
-
*/
|