@qwen-code/qwen-code 0.21.10 → 0.21.11
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/bundled/coordinate/SKILL.md +52 -0
- package/bundled/qc-helper/docs/configuration/model-providers.md +10 -8
- package/bundled/qc-helper/docs/extension/_meta.ts +1 -0
- package/bundled/qc-helper/docs/extension/agent-plugins.md +50 -0
- package/bundled/qc-helper/docs/extension/extension-releasing.md +3 -3
- package/bundled/qc-helper/docs/extension/introduction.md +17 -3
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/arena.md +4 -3
- package/bundled/qc-helper/docs/features/commands.md +7 -6
- package/bundled/qc-helper/docs/features/dual-output.md +5 -0
- package/bundled/qc-helper/docs/features/headless.md +8 -0
- package/bundled/qc-helper/docs/features/multi-agent-coordination.md +30 -0
- package/bundled/qc-helper/docs/qwen-serve.md +7 -7
- package/bundled/review/SKILL.md +17 -7
- package/chunks/{MaxSizedBox-FKXYULMW.js → MaxSizedBox-G7QPSZTF.js} +45 -44
- package/chunks/{StandaloneSessionPicker-OQS3M7AY.js → StandaloneSessionPicker-3CTEPV7S.js} +65 -64
- package/chunks/{acp-startup-profiler-VNTFWYAC.js → acp-startup-profiler-JMJBZDVO.js} +2 -2
- package/chunks/{acpAgent-AGS6HLQQ.js → acpAgent-43JURWOW.js} +1107 -285
- package/chunks/{agent-4NCVO27U.js → agent-MIY4LJJJ.js} +42 -41
- package/chunks/agent-headless-LWVA6GR5.js +87 -0
- package/chunks/{anthropicContentGenerator-D3Y4RFT4.js → anthropicContentGenerator-7HEP7Q5D.js} +8 -8
- package/chunks/{artifact-tool-N652YE4L.js → artifact-tool-M7UAJ5NT.js} +2 -2
- package/chunks/{askUserQuestion-ONW74PKJ.js → askUserQuestion-7G3LI3IZ.js} +2 -2
- package/chunks/{bridge-FHINXZMN.js → bridge-PTTJEBNP.js} +47 -46
- package/chunks/{ca-ZLKAB4K3.js → ca-4CQ6MYNQ.js} +2 -1
- package/chunks/{channel-management-service-PHELKOW2.js → channel-management-service-PQ6SU56M.js} +6 -6
- package/chunks/channel-settings-store-IKK34GMH.js +102 -0
- package/chunks/{channel-worker-group-WQP4RCDO.js → channel-worker-group-WBRE33ZV.js} +8 -7
- package/chunks/{channel-worker-manager-MRDFAKIM.js → channel-worker-manager-V4LYVTPH.js} +8 -7
- package/chunks/{channel-worker-supervisor-IVSDIMI4.js → channel-worker-supervisor-YDAGW2RP.js} +6 -5
- package/chunks/{chunk-2PLNY5TN.js → chunk-23GFHEM3.js} +4 -4
- package/chunks/{chunk-IIJEYBNH.js → chunk-25OFRBH2.js} +188 -58
- package/chunks/{chunk-F24A2JBM.js → chunk-2AAFGCWP.js} +690 -151
- package/chunks/{chunk-J6SZID63.js → chunk-2AZMF6G5.js} +2 -2
- package/chunks/{chunk-6LP743KE.js → chunk-2R2HYSUQ.js} +21 -102
- package/chunks/{chunk-DZUO626D.js → chunk-2XZWO53E.js} +3 -3
- package/chunks/{chunk-VKJ4KTPJ.js → chunk-3GCU5O2E.js} +1 -1
- package/chunks/{chunk-AQAJJMRR.js → chunk-3LHYTQ2R.js} +1 -1
- package/chunks/{chunk-QJMOAMXT.js → chunk-3SOTXJNO.js} +8 -8
- package/chunks/{chunk-URKIBIFC.js → chunk-45HPDU3F.js} +3 -3
- package/chunks/{chunk-OWMAZHIX.js → chunk-47FQVRCO.js} +1 -1
- package/chunks/{chunk-Z4JX4NSH.js → chunk-4C4QSXE3.js} +23 -23
- package/chunks/{chunk-IRZ2ZH72.js → chunk-4EX3DBFH.js} +4 -4
- package/chunks/{chunk-MFDYOYZZ.js → chunk-4MHDNGAV.js} +25 -2
- package/chunks/{chunk-ABVRJU3D.js → chunk-4PFKN7CQ.js} +7 -7
- package/chunks/{chunk-HV76SFIA.js → chunk-5HBFERG5.js} +3 -3
- package/chunks/{chunk-WAUGQKUU.js → chunk-6LYDH7VT.js} +9 -5
- package/chunks/{chunk-S6HYI3MF.js → chunk-6S52N6PG.js} +2 -2
- package/chunks/{chunk-FVKHVJZQ.js → chunk-732MOPEM.js} +1 -1
- package/chunks/{chunk-OCSFNUU4.js → chunk-7QE3QFU3.js} +8 -8
- package/chunks/{chunk-WCG5O7IP.js → chunk-7SUQZ7QH.js} +2 -2
- package/chunks/{chunk-QG3FFJYU.js → chunk-AAOONL5N.js} +1 -1
- package/chunks/{chunk-VSFKIRRW.js → chunk-AKLY5M2C.js} +4 -4
- package/chunks/{chunk-UVX4Y6IN.js → chunk-AQHNAA7E.js} +1 -1
- package/chunks/{chunk-IBUGFUXC.js → chunk-BIXG46YI.js} +12 -12
- package/chunks/{chunk-4TRQPFDP.js → chunk-BJKREW56.js} +6 -8
- package/chunks/{chunk-D27I6YJT.js → chunk-BNRNVMOT.js} +27 -18
- package/chunks/{chunk-IWTMYQ32.js → chunk-BR6TUEKJ.js} +9 -8
- package/chunks/{chunk-Q3JQ7OSU.js → chunk-BTYS2JAY.js} +1 -1
- package/chunks/{chunk-H6XPXXMH.js → chunk-CQ35AJ4Z.js} +252 -254
- package/chunks/{chunk-COBO5EBO.js → chunk-CTQE2NB2.js} +1 -1
- package/chunks/{chunk-P3BJLFSZ.js → chunk-DEKY5Y7V.js} +3 -3
- package/chunks/{chunk-Y3OVRWRY.js → chunk-DM4C3OX5.js} +1 -1
- package/chunks/{chunk-YWPSGJFI.js → chunk-DSKLWQHC.js} +2 -2
- package/chunks/{chunk-KKBPOU75.js → chunk-EFIMD5VA.js} +1 -1
- package/chunks/{chunk-CTJLZLB5.js → chunk-EN2J77G7.js} +1 -1
- package/chunks/{chunk-67EWJE77.js → chunk-ENEEQMGM.js} +1 -1
- package/chunks/{chunk-AEL7KN2O.js → chunk-EOBM4T2Z.js} +1 -1
- package/chunks/{chunk-NDU63YLI.js → chunk-ESVSQKPY.js} +4 -4
- package/chunks/{chunk-CPG6P4GG.js → chunk-EYS3GGM3.js} +1 -1
- package/chunks/{chunk-4PYCZH2V.js → chunk-EYW54TBD.js} +3 -3
- package/chunks/{chunk-EBZ6BJTF.js → chunk-F4T5J34H.js} +1 -1
- package/chunks/{chunk-FOGU3LJX.js → chunk-F6AOBFUN.js} +1 -1
- package/chunks/{chunk-ZBVS26BY.js → chunk-FPGTNKCP.js} +7 -5
- package/chunks/{chunk-YF5MALI4.js → chunk-G64M7R2Y.js} +5 -5
- package/chunks/{chunk-EI3HZX6C.js → chunk-GJJQV4PY.js} +1 -1
- package/chunks/{chunk-CKASRHZI.js → chunk-GLWWPFTW.js} +1 -1
- package/chunks/{chunk-GM463R2B.js → chunk-GZGDJ4E6.js} +1 -1
- package/chunks/{chunk-W5UC37EE.js → chunk-HHGQGTJQ.js} +2 -0
- package/chunks/chunk-HHJLM3WQ.js +41 -0
- package/chunks/{chunk-ZRBMO3C7.js → chunk-HMCSRTDY.js} +1 -1
- package/chunks/{chunk-L2AFWWJE.js → chunk-HUE2M6VI.js} +50 -5
- package/chunks/{chunk-LLCWZQCU.js → chunk-HZV75ET2.js} +3 -3
- package/chunks/{chunk-6ZRFAKXK.js → chunk-IEP44U2R.js} +1 -1
- package/chunks/{chunk-AOHJKPKL.js → chunk-IQFYO5BF.js} +1 -1
- package/chunks/{chunk-UDXSXLER.js → chunk-IW6RQPQB.js} +14 -4
- package/chunks/{chunk-XCWO3SMQ.js → chunk-IX7CFQGA.js} +3 -3
- package/chunks/{chunk-O3EU6GMH.js → chunk-J4EVBAB3.js} +27 -4
- package/chunks/{chunk-ZZCWJWTF.js → chunk-JHMFKJEP.js} +1 -1
- package/chunks/{chunk-XVHYA33G.js → chunk-JKEO6OQY.js} +4 -4
- package/chunks/{chunk-6Q5ABMTU.js → chunk-JLYYGKRN.js} +23 -19
- package/chunks/{chunk-KID7K6H2.js → chunk-JOXXPM3X.js} +6 -6
- package/chunks/{chunk-E2FPSSKP.js → chunk-JPA7IDTE.js} +57 -13
- package/chunks/{chunk-OQTXYMKW.js → chunk-JS4Q5NG5.js} +3 -3
- package/chunks/{chunk-PBRVUF5B.js → chunk-K7JW6V5O.js} +1 -1
- package/chunks/{chunk-3P2LV43B.js → chunk-KCCODSAA.js} +3 -3
- package/chunks/{chunk-DREZZAZM.js → chunk-KCDQGIHS.js} +13 -5
- package/chunks/{chunk-UEOKWYGY.js → chunk-KFCTC5IJ.js} +11 -11
- package/chunks/{chunk-M6HMMKVG.js → chunk-KPVVWKF3.js} +1 -1
- package/chunks/{chunk-MVUQRLOH.js → chunk-KT4OWAAZ.js} +3 -3
- package/chunks/{chunk-W4RQUHY3.js → chunk-L2GTEEEU.js} +142 -23
- package/chunks/{chunk-Q3AL4JQ3.js → chunk-LA3FF7RO.js} +2 -2
- package/chunks/{chunk-DX3RGJMS.js → chunk-LT532KF4.js} +71 -12
- package/chunks/{chunk-JT7XS4YW.js → chunk-M2NMFAFR.js} +1 -1
- package/chunks/{chunk-YTFDX4PR.js → chunk-M6NDLY2T.js} +1 -1
- package/chunks/{chunk-MIKXJYZB.js → chunk-MCHGE3EC.js} +305 -291
- package/chunks/{chunk-Y4R47ZUH.js → chunk-MDQSCFAZ.js} +7 -7
- package/chunks/{chunk-EKPKKXY2.js → chunk-MLZCPGDX.js} +1 -1
- package/chunks/{chunk-OIVKILPI.js → chunk-MPBRV3UU.js} +3 -0
- package/chunks/{chunk-VFMASYQA.js → chunk-MS7GNABG.js} +3 -0
- package/chunks/{chunk-2FRY5CRX.js → chunk-MWZYNOCG.js} +3 -3
- package/chunks/{chunk-ONSZH6VM.js → chunk-MZQ4I4AP.js} +2 -2
- package/chunks/{chunk-UMD7WQTR.js → chunk-N3ZWGKXN.js} +10 -8
- package/chunks/{chunk-7MH4J33A.js → chunk-N7NBMAMW.js} +2 -2
- package/chunks/{chunk-EUNWC2VS.js → chunk-NC4O6UE6.js} +2 -2
- package/chunks/{chunk-A7XMDZRI.js → chunk-NFSSQDB5.js} +5 -5
- package/chunks/{chunk-DCZEPFB4.js → chunk-NM3E6GGL.js} +3 -3
- package/chunks/{chunk-26CXSA6V.js → chunk-NQPYPDOY.js} +2 -2
- package/chunks/{chunk-HUWENAHO.js → chunk-NWPO6I7V.js} +1 -1
- package/chunks/{chunk-SR7RZ4MS.js → chunk-O4BBDP2G.js} +2 -2
- package/chunks/{chunk-ECWR5LQR.js → chunk-OC5SKSNX.js} +3 -3
- package/chunks/{chunk-VWKER4ZH.js → chunk-OGQERNHD.js} +3 -3
- package/chunks/{chunk-DA4HRSBW.js → chunk-OPBATTFQ.js} +1 -1
- package/chunks/{chunk-OONWZLFK.js → chunk-P7KCJGBR.js} +4 -4
- package/chunks/{chunk-OJUQF2PL.js → chunk-PBYVS6QT.js} +3 -3
- package/chunks/{chunk-VNNWAZSI.js → chunk-QG2IEE2E.js} +3 -3
- package/chunks/{chunk-KZ22NXBY.js → chunk-QGZN4RYB.js} +4 -4
- package/chunks/{chunk-2UUMVNYT.js → chunk-QTI7SRXI.js} +3 -3
- package/chunks/{chunk-B2GJNDTV.js → chunk-QUESTNOP.js} +1 -1
- package/chunks/{chunk-AAE6SR4Q.js → chunk-RUKNJEJO.js} +1 -1
- package/chunks/{chunk-NV65ZUVM.js → chunk-RUVZZKDH.js} +1 -1
- package/chunks/{chunk-QUI267ZP.js → chunk-SAQHDAUJ.js} +42 -8
- package/chunks/{chunk-4MKXUHXY.js → chunk-SUTP6CZA.js} +5 -5
- package/chunks/{chunk-UBX6NL47.js → chunk-T4576UW4.js} +3 -3
- package/chunks/{chunk-TZEZYNYD.js → chunk-T4FTABSW.js} +1 -1
- package/chunks/{chunk-SEZ556DZ.js → chunk-T6W4KACQ.js} +1 -1
- package/chunks/chunk-TKAEODJR.js +1279 -0
- package/chunks/{chunk-NV3F44FL.js → chunk-TNQLAI6I.js} +2 -2
- package/chunks/{chunk-F6WDTQ3M.js → chunk-TNS2M7VL.js} +5 -5
- package/chunks/{chunk-7GTMV7UE.js → chunk-TTB6GBJ6.js} +8323 -2227
- package/chunks/{chunk-YGT2AUJ7.js → chunk-U2JLICUY.js} +33 -16
- package/chunks/{chunk-NEOXOWYH.js → chunk-U7QUDFPD.js} +7 -7
- package/chunks/{chunk-QGNOFE5E.js → chunk-UEUE6LJX.js} +1 -1
- package/chunks/{chunk-EI3NWELG.js → chunk-UIZGNLBP.js} +4427 -3806
- package/chunks/{chunk-ZJ4W6SUY.js → chunk-UM57UTTV.js} +3 -3
- package/chunks/{chunk-EQL65XGA.js → chunk-V3LXMASR.js} +47 -21
- package/chunks/{chunk-LHEC5V6G.js → chunk-VRWOMUZM.js} +2 -2
- package/chunks/{chunk-5MZCSWI4.js → chunk-W2ITCESM.js} +176 -477
- package/chunks/{chunk-KONVMRK7.js → chunk-W2PNY24B.js} +1 -1
- package/chunks/{chunk-4WL6SY4F.js → chunk-X5GLCWPX.js} +1 -1
- package/chunks/{chunk-BSI645OU.js → chunk-XBLYC4MI.js} +3 -3
- package/chunks/{chunk-GNPNYXJB.js → chunk-XLQS3VI6.js} +2 -2
- package/chunks/{chunk-TRRF5BSP.js → chunk-XT6TGJFD.js} +1 -1
- package/chunks/{chunk-PYQADEFD.js → chunk-XTH2OMDS.js} +1 -1
- package/chunks/{chunk-47PEPJO7.js → chunk-XUMBOJC2.js} +3 -3
- package/chunks/{chunk-GWVUR3QZ.js → chunk-YIKMBYMT.js} +3 -3
- package/chunks/{chunk-WOJZWRAZ.js → chunk-YRLW2MSX.js} +1 -1
- package/chunks/{chunk-NRLFZWCT.js → chunk-YVVIFFU4.js} +3 -3
- package/chunks/chunk-Z7B6SRPM.js +32 -0
- package/chunks/{chunk-IA7TGCN2.js → chunk-ZV4XVYL3.js} +4 -4
- package/chunks/{chunk-PJRW65JO.js → chunk-ZWPWQEF5.js} +1 -1
- package/chunks/{computer-use-WQFK33Z3.js → computer-use-7TIKEXBX.js} +42 -41
- package/chunks/{config-utils-ULCSRMWD.js → config-utils-6MVJ54TY.js} +6 -6
- package/chunks/{contextCommand-7EOZND7C.js → contextCommand-5QKI7MRY.js} +44 -43
- package/chunks/{core-runtime-FGMQRM6E.js → core-runtime-USS7ZF3H.js} +42 -41
- package/chunks/{create-sub-session-QIDZUOPU.js → create-sub-session-Y4WYDZGC.js} +2 -2
- package/chunks/{create-sub-session-QM2K5HLZ.js → create-sub-session-ZD2F3BH2.js} +42 -41
- package/chunks/{cron-create-VONA5JYY.js → cron-create-ZOVA3CC2.js} +4 -4
- package/chunks/{cron-delete-5JXSP2MI.js → cron-delete-7Z3H4LJY.js} +4 -4
- package/chunks/{cron-list-KE4F2CIR.js → cron-list-UHGX3IQG.js} +4 -4
- package/chunks/{daemon-GWD7BT6E.js → daemon-Y3NOHFKQ.js} +38 -7
- package/chunks/daemon-status-provider-PMP4J7BC.js +103 -0
- package/chunks/daemon-trust-policy-2252VKXI.js +99 -0
- package/chunks/{daemon-trust-policy-monitor-6UKEABN5.js → daemon-trust-policy-monitor-OSGGKJXT.js} +49 -48
- package/chunks/{de-LIW4XVLN.js → de-UBEBKG6V.js} +2 -1
- package/chunks/{deferred-core-runtime-67GJXHXS.js → deferred-core-runtime-3VD4V6YZ.js} +42 -41
- package/chunks/{display-image-NQRSIBXM.js → display-image-ZE3GZNIK.js} +4 -4
- package/chunks/{dist-Z3CS4OVP.js → dist-AVUYBK7L.js} +11 -5
- package/chunks/{dist-6BMOAE3Z.js → dist-BNWP6IZL.js} +4 -4
- package/chunks/{dist-3NTTUAHT.js → dist-EFJILGIS.js} +3 -3
- package/chunks/{dist-EZE3V3Q7.js → dist-MAIUUIWN.js} +3 -3
- package/chunks/{dist-B2CGTW6T.js → dist-NPS52B2V.js} +3 -3
- package/chunks/{dist-J47AXBZC.js → dist-PKSRQAR2.js} +3 -3
- package/chunks/{dist-OTUO3AS2.js → dist-Q2WJ2IZU.js} +13 -5
- package/chunks/{dist-EWW3J4HQ.js → dist-ZWDH5HLS.js} +3 -3
- package/chunks/{earlyInputCapture-IWMYR6OB.js → earlyInputCapture-ER4HGLJN.js} +43 -42
- package/chunks/{edit-ZFGROCAF.js → edit-B3MT7O53.js} +42 -41
- package/chunks/{en-SY5GTIGX.js → en-X6YV7GME.js} +2 -1
- package/chunks/{enter-worktree-TZZZCDM5.js → enter-worktree-WVIYVSDJ.js} +42 -41
- package/chunks/{enterPlanMode-U77BI3R6.js → enterPlanMode-DDCIM6HA.js} +42 -41
- package/chunks/{environment-HC37DS2I.js → environment-LITGMOUP.js} +45 -44
- package/chunks/{errors-6AG54JPD.js → errors-E5CIOR2I.js} +44 -43
- package/chunks/{exit-worktree-UYYWFPNK.js → exit-worktree-NQ2A6URE.js} +42 -41
- package/chunks/exitPlanMode-YXSWN4D3.js +85 -0
- package/chunks/{fast-path-F5FSZ3O7.js → fast-path-PH3DBS6X.js} +3 -3
- package/chunks/{fast-path-settings-RPAVBD7P.js → fast-path-settings-LNOFM2YP.js} +2 -2
- package/chunks/{fr-RQFO7U4P.js → fr-VENTC2BS.js} +2 -1
- package/chunks/{gemini-NKQHYM36.js → gemini-4YPO4ADY.js} +88 -87
- package/chunks/{geminiContentGenerator-HCWZOUX3.js → geminiContentGenerator-GMSVVXOU.js} +6 -6
- package/chunks/{glob-3PDXKBAO.js → glob-3Y3VHLM2.js} +42 -41
- package/chunks/{goal-tools-SWNB6GP4.js → goal-tools-JDK2SNMV.js} +4 -4
- package/chunks/{grep-5HZKZYVD.js → grep-VUHUDZYG.js} +42 -41
- package/chunks/handleAutoUpdate-OBFFPWSJ.js +94 -0
- package/chunks/{i18n-Q27KKNDL.js → i18n-4PJA5KKU.js} +43 -42
- package/chunks/{image-gen-2Z2RJ6W7.js → image-gen-4IFV4HES.js} +10 -10
- package/chunks/initializer-ZTY3VSWL.js +100 -0
- package/chunks/{installationInfo-XXB75T7O.js → installationInfo-6USRNCD2.js} +43 -42
- package/chunks/{ja-KOZKHJHZ.js → ja-QHT4EQTO.js} +2 -1
- package/chunks/{keychain-token-storage-TVAMTNP7.js → keychain-token-storage-JTWUYFU7.js} +2 -2
- package/chunks/list-U2ZDKYWN.js +103 -0
- package/chunks/{list-agents-Z4WABFDZ.js → list-agents-4GQ2XNEU.js} +2 -2
- package/chunks/loadedSettingsAdapter-WW4HIVLO.js +97 -0
- package/chunks/{loggingContentGenerator-6NTFBM7Q.js → loggingContentGenerator-XXG6YWUE.js} +46 -27
- package/chunks/{loop-wakeup-UZ5RL5Y2.js → loop-wakeup-HOQI3K5D.js} +5 -5
- package/chunks/{ls-TVHDGIES.js → ls-O4VBQRG7.js} +4 -4
- package/chunks/{lsp-CVN6OQPI.js → lsp-APQJ5ZEZ.js} +2 -2
- package/chunks/{managed-npm-update-SPHYQUWZ.js → managed-npm-update-7GM2LPLL.js} +43 -42
- package/chunks/mcp-7KZW2T5P.js +97 -0
- package/chunks/{monitor-ZBBPAA54.js → monitor-RQROQHLD.js} +42 -41
- package/chunks/nonInteractiveCli-U7JNJGS6.js +163 -0
- package/chunks/{notebook-edit-5W3FW7Z2.js → notebook-edit-XQA6YCH2.js} +42 -41
- package/chunks/{openaiContentGenerator-TQANPEVZ.js → openaiContentGenerator-BZW2IB42.js} +29 -29
- package/chunks/{pidfile-EQOBLH4E.js → pidfile-NX5VZ3IK.js} +43 -42
- package/chunks/{processUtils-7XQG7EHS.js → processUtils-M635AD23.js} +2 -2
- package/chunks/{pt-U6AOCTMF.js → pt-VL3I5RNY.js} +2 -1
- package/chunks/{qwenContentGenerator-BKCPHHXU.js → qwenContentGenerator-KHJ73E2C.js} +48 -48
- package/chunks/{qwenOAuth2-BJ6PQKE6.js → qwenOAuth2-QMK25XO7.js} +9 -9
- package/chunks/read-file-6LKIKKXD.js +32 -0
- package/chunks/{read-mcp-resource-PZ4ZF6YL.js → read-mcp-resource-TJSJRH4F.js} +2 -2
- package/chunks/{record-artifact-P4HFMS7X.js → record-artifact-FXF5LHPE.js} +3 -3
- package/chunks/{resumeHistoryUtils-6N6XGJJW.js → resumeHistoryUtils-RR2KEVH5.js} +49 -48
- package/chunks/ripGrep-CF2WRBYV.js +85 -0
- package/chunks/{ru-CMX4UMYP.js → ru-4RCKL4PY.js} +2 -1
- package/chunks/{run-qwen-serve-BCKBCAMX.js → run-qwen-serve-L5TF57J4.js} +61 -50
- package/chunks/{runtime-E2437YKL.js → runtime-3RE3BPR4.js} +55 -54
- package/chunks/{scheduler-K3D5Z655.js → scheduler-LXQZAMYT.js} +44 -43
- package/chunks/{sdk-exporters-http-XVTZQRCE.js → sdk-exporters-http-7SYSCGEO.js} +3 -3
- package/chunks/{sdk-impl-7W7AKCS4.js → sdk-impl-VZI6M6EH.js} +6 -6
- package/chunks/{send-message-CAMSLG2L.js → send-message-RBYLV5NY.js} +6 -6
- package/chunks/{serve-IH4XR5IL.js → serve-5D4S7GIA.js} +49 -48
- package/chunks/{server-UD6INW7J.js → server-ILZB6TTC.js} +403 -178
- package/chunks/{session-GR4ZEVW4.js → session-SXCZITZ4.js} +114 -94
- package/chunks/{settings-5O24D3OJ.js → settings-4RQB3OVF.js} +48 -47
- package/chunks/{shell-UTLWLG5G.js → shell-FCTR3OI2.js} +42 -41
- package/chunks/{skill-QQAZL4VO.js → skill-IAKHPD5H.js} +19 -19
- package/chunks/{skill-settings-P3YHJVBZ.js → skill-settings-SOR23NOP.js} +48 -47
- package/chunks/spawnChannel-I6VAWYQJ.js +98 -0
- package/chunks/{standalone-update-QP742MGP.js → standalone-update-5NN3MTYH.js} +44 -43
- package/chunks/{startInteractiveUI-YCS6AEPN.js → startInteractiveUI-OYGL3NZJ.js} +590 -329
- package/chunks/{syntheticOutput-PEBJQYJV.js → syntheticOutput-D3Z64LJC.js} +3 -3
- package/chunks/{task-create-5NWCQSJF.js → task-create-URFZ5EUX.js} +10 -10
- package/chunks/{task-list-53265TRZ.js → task-list-6JDFMPUW.js} +5 -5
- package/chunks/{task-stop-FPCOIRYX.js → task-stop-HHUGCD25.js} +2 -2
- package/chunks/{task-update-5HN577LS.js → task-update-LCJM3EYG.js} +10 -10
- package/chunks/{team-create-WFH7OCDQ.js → team-create-J4JP6AXN.js} +44 -43
- package/chunks/{team-delete-MMQB4OSC.js → team-delete-PZGGBQLM.js} +5 -5
- package/chunks/{team-plan-approval-EGTT53MV.js → team-plan-approval-7BEAIR2H.js} +42 -41
- package/chunks/{terminal-image-renderer-BWRESAQ7.js → terminal-image-renderer-SGGTG5LN.js} +44 -43
- package/chunks/theme-manager-67TSB7LH.js +89 -0
- package/chunks/{todoWrite-JGV6VLOX.js → todoWrite-WINAZSZI.js} +4 -4
- package/chunks/{tool-search-TI5PTIBF.js → tool-search-XPOFDWOX.js} +19 -19
- package/chunks/{total-session-admission-66UDSOHO.js → total-session-admission-SZJFAM25.js} +47 -46
- package/chunks/{trustedFolders-4KYHA4IG.js → trustedFolders-44NTYYV4.js} +43 -42
- package/chunks/{update-relaunch-WB6LGIF2.js → update-relaunch-K33Q3WEH.js} +5 -5
- package/chunks/{updateCheck-LOS5GYFC.js → updateCheck-VBRNPLS4.js} +45 -44
- package/chunks/{useAutoAcceptIndicator-MHAPY52L.js → useAutoAcceptIndicator-AUNRB5S7.js} +52 -51
- package/chunks/{validateNonInterActiveAuth-QV22HNQU.js → validateNonInterActiveAuth-WTO36MTA.js} +83 -82
- package/chunks/{version-DALWZHKQ.js → version-JZA6HYPI.js} +1 -1
- package/chunks/{web-fetch-JMJVMYFE.js → web-fetch-LLHPV2IR.js} +19 -19
- package/chunks/{web-search-DNDUIPU5.js → web-search-4HCHRZ3U.js} +11 -11
- package/chunks/{workflow-JGNN64PM.js → workflow-YI74QTWW.js} +43 -42
- package/chunks/workspace-providers-status-CI3AO2BH.js +100 -0
- package/chunks/{workspace-registration-store-LRJG7QA4.js → workspace-registration-store-KPIKXDHA.js} +1 -1
- package/chunks/{workspace-registry-KVXIFM36.js → workspace-registry-XE22QDE6.js} +47 -46
- package/chunks/{workspace-service-PO4AAKKT.js → workspace-service-WI2FD72A.js} +54 -53
- package/chunks/workspace-skills-status-FFZU6FXL.js +100 -0
- package/chunks/{workspace-trust-reconciler-DOZPCVHG.js → workspace-trust-reconciler-GJLNXR2U.js} +54 -53
- package/chunks/write-file-IEAC3XC3.js +87 -0
- package/chunks/{zh-AGL2FVBI.js → zh-LMSTK4WD.js} +2 -1
- package/chunks/{zh-TW-KI66MHQY.js → zh-TW-SQ4HTSCW.js} +2 -1
- package/chunks/{zoom-image-CNC77ZMA.js → zoom-image-GTVVT25J.js} +15 -15
- package/cli.js +13 -13
- package/locales/ca.js +1 -0
- package/locales/de.js +1 -0
- package/locales/en.js +1 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +1 -0
- package/locales/zh.js +1 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-CDk0d60K.js → arc-B13-S0Yo.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-h-W3I2lP.js → architectureDiagram-3BPJPVTR-CHvWNlVW.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-D1pvSmZg.js → blockDiagram-GPEHLZMM-CXebOlXF.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-ByAm5ZNf.js → c4Diagram-AAUBKEIU-BQpx4y3Q.js} +1 -1
- package/web-shell/assets/channel-BB_Hm8Rf.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-VrGPPOGV.js → chunk-2J33WTMH-Cak1exSv.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-B7hTowgG.js → chunk-4BX2VUAB-BIc8BV5_.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-j1Fq8DpE.js → chunk-55IACEB6-DoeJ5BL1.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-UjABYpF2.js → chunk-727SXJPM-BDR_wYSu.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-D4uBItrs.js → chunk-AQP2D5EJ-BhRRGRq1.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DeFbKlb8.js → chunk-FMBD7UC4-BJGAwVXr.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-rQJ8TIgT.js → chunk-ND2GUHAM-vhE73bsD.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DAGcRxvq.js → chunk-QZHKN3VN-BuTBZsdR.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B_hFK54Y.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B_hFK54Y.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-MaE7MJSt.js → cose-bilkent-S5V4N54A-CVHKipHP.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DzijYGSb.js → dagre-BM42HDAG-C1DPa8SV.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-WdbG7WnX.js → diagram-2AECGRRQ-BYP_QxkT.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-NYutsBnw.js → diagram-5GNKFQAL-Cray7ruQ.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Dqg0eBY0.js → diagram-KO2AKTUF-Ds4vJANi.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-C7vRP2Lb.js → diagram-LMA3HP47-DxFrDykH.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-B2sEPpPt.js → diagram-OG6HWLK6-BdIO-pF_.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-a4zIbzm8.js → erDiagram-TEJ5UH35-5JA8KDYV.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BK9y89ya.js → flowDiagram-I6XJVG4X-DL4drKro.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-wUQTSNvV.js → ganttDiagram-6RSMTGT7-ijX2DD6_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Dnzt4SAi.js → gitGraphDiagram-PVQCEYII-_lPsFLFF.js} +1 -1
- package/web-shell/assets/index-BTwNYZkp.js +1785 -0
- package/web-shell/assets/{index-BA3wUcKL.js → index-C-YoqYbs.js} +1 -1
- package/web-shell/assets/index-dHAFxPHb.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DcaoToij.js → infoDiagram-5YYISTIA-COFClLab.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DzduqhP2.js → ishikawaDiagram-YF4QCWOH-Div9KOgO.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BvviZR_O.js → journeyDiagram-JHISSGLW-VAw5u0wc.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Efm2JxY3.js → kanban-definition-UN3LZRKU-CncCn8Nl.js} +1 -1
- package/web-shell/assets/{linear-DtY3IbOs.js → linear-D6ad7e_k.js} +1 -1
- package/web-shell/assets/{mermaid.core-PzpFqoMe.js → mermaid.core-BV1IECGb.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BLlTkHS0.js → mindmap-definition-RKZ34NQL-a3jeNgPr.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-D-mKF-jE.js → pieDiagram-4H26LBE5-DsVRY5BW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DYCzslGm.js → quadrantDiagram-W4KKPZXB-D6zgexJK.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Dfpxlk7R.js → requirementDiagram-4Y6WPE33-VEpSwJjn.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-D5cRaaxh.js → sankeyDiagram-5OEKKPKP-CYEuOFne.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-s04DReiS.js → sequenceDiagram-3UESZ5HK-CCg0lI-9.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-01UNFgnb.js → stateDiagram-AJRCARHV-BHXPsL0B.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-eTG8D0QT.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DX8_wZBC.js → timeline-definition-PNZ67QCA-gqTf9a0k.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BK0FlBme.js → vennDiagram-CIIHVFJN-C4DXXkBh.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DkPc9UlD.js → wardley-L42UT6IY-CMK46EiX.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DNKkpDAo.js → wardleyDiagram-YWT4CUSO-DTk1Gzt9.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-CiPwg8QG.js → xychartDiagram-2RQKCTM6-BcJsM1dH.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/agent-headless-HYEHZFH6.js +0 -86
- package/chunks/channel-settings-store-OXYG5S5X.js +0 -101
- package/chunks/chunk-I5VM3SKY.js +0 -451
- package/chunks/chunk-PDPFQ2FO.js +0 -156
- package/chunks/daemon-status-provider-L3J6GKCT.js +0 -102
- package/chunks/daemon-trust-policy-4PHPY23S.js +0 -98
- package/chunks/exitPlanMode-RWJR2KGB.js +0 -84
- package/chunks/handleAutoUpdate-NHFSGYTF.js +0 -93
- package/chunks/initializer-Y5DJLT43.js +0 -99
- package/chunks/list-YHNQ32CS.js +0 -102
- package/chunks/loadedSettingsAdapter-GHUQK7H4.js +0 -96
- package/chunks/mcp-EA3KO6FS.js +0 -96
- package/chunks/nonInteractiveCli-NNOR56HU.js +0 -162
- package/chunks/read-file-KKTXGIZD.js +0 -32
- package/chunks/ripGrep-SJVAAYDV.js +0 -84
- package/chunks/spawnChannel-UAQMH6Y6.js +0 -94
- package/chunks/theme-manager-ZNDGAHJN.js +0 -88
- package/chunks/workspace-providers-status-K22B3Z6B.js +0 -99
- package/chunks/workspace-skills-status-DDYCBVSH.js +0 -99
- package/chunks/write-file-TT6MWIKC.js +0 -86
- package/web-shell/assets/channel-DPFUV4oi.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CLm0hVvw.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CLm0hVvw.js +0 -1
- package/web-shell/assets/index-BjC3yjjL.css +0 -5
- package/web-shell/assets/index-QzFq6w7o.js +0 -1775
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DXb5olqv.js +0 -1
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
TUI_CHAT_RECORDING_FAILURE_MESSAGE,
|
|
8
8
|
reportChatRecordingFailureToAdapter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NQPYPDOY.js";
|
|
10
10
|
import {
|
|
11
11
|
StreamJsonOutputAdapter
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-J4EVBAB3.js";
|
|
13
13
|
import {
|
|
14
14
|
startPostRenderPrefetches
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BIXG46YI.js";
|
|
16
16
|
import {
|
|
17
17
|
AboutBox,
|
|
18
18
|
BaseSelectionList,
|
|
@@ -90,7 +90,7 @@ import {
|
|
|
90
90
|
useUIActions,
|
|
91
91
|
useUIState,
|
|
92
92
|
useVirtualViewport
|
|
93
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-4C4QSXE3.js";
|
|
94
94
|
import {
|
|
95
95
|
GeminiRespondingSpinner,
|
|
96
96
|
GeminiSpinner,
|
|
@@ -107,19 +107,19 @@ import {
|
|
|
107
107
|
useStreamingContext,
|
|
108
108
|
waitForGoalRuntime,
|
|
109
109
|
wrapAnsi
|
|
110
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-BR6TUEKJ.js";
|
|
111
111
|
import {
|
|
112
112
|
stopAndGetCapturedInput
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-T4FTABSW.js";
|
|
114
114
|
import {
|
|
115
115
|
useAutoAcceptIndicator
|
|
116
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-OC5SKSNX.js";
|
|
117
117
|
import {
|
|
118
118
|
KeypressProvider,
|
|
119
119
|
useFocus,
|
|
120
120
|
useKeypress,
|
|
121
121
|
useKeypressContext
|
|
122
|
-
} from "./chunk-
|
|
122
|
+
} from "./chunk-QG2IEE2E.js";
|
|
123
123
|
import {
|
|
124
124
|
classifyApiError,
|
|
125
125
|
fireSessionDeleteHook
|
|
@@ -135,7 +135,7 @@ import {
|
|
|
135
135
|
matchMcpServerPrefix,
|
|
136
136
|
resolveAtCommandQuery,
|
|
137
137
|
sanitizeDisplayText
|
|
138
|
-
} from "./chunk-
|
|
138
|
+
} from "./chunk-ESVSQKPY.js";
|
|
139
139
|
import {
|
|
140
140
|
BuiltinCommandLoader,
|
|
141
141
|
BundledSkillLoader,
|
|
@@ -156,6 +156,7 @@ import {
|
|
|
156
156
|
findSlashCommandTokens,
|
|
157
157
|
formatApprovalModeDescription,
|
|
158
158
|
formatApprovalModeName,
|
|
159
|
+
formatEffortChangeMessage,
|
|
159
160
|
formatUserPromptExpansionBlockedMessage,
|
|
160
161
|
getAllConfigs,
|
|
161
162
|
getBestSlashCommandMatch,
|
|
@@ -165,6 +166,7 @@ import {
|
|
|
165
166
|
isAtCommand,
|
|
166
167
|
isBtwCommand,
|
|
167
168
|
isMidInputCompletableCommand,
|
|
169
|
+
isPickerOnlyModelInvocation,
|
|
168
170
|
isSlashCommand,
|
|
169
171
|
isStackedSkillCompletableCommand,
|
|
170
172
|
isValidStackedSkillPrefix,
|
|
@@ -177,22 +179,22 @@ import {
|
|
|
177
179
|
resetBackgroundStateForSessionSwitch,
|
|
178
180
|
serializeUserPromptExpansionPrompt,
|
|
179
181
|
supportsMatchers
|
|
180
|
-
} from "./chunk-
|
|
182
|
+
} from "./chunk-MCHGE3EC.js";
|
|
181
183
|
import {
|
|
182
184
|
EXTENSION_RELOAD_FAILED_REASON,
|
|
183
185
|
ExtensionRefreshState,
|
|
184
186
|
appEvents,
|
|
185
187
|
cleanupReviewWorktreeLeases,
|
|
186
188
|
loadHierarchicalGeminiMemory
|
|
187
|
-
} from "./chunk-
|
|
189
|
+
} from "./chunk-TTB6GBJ6.js";
|
|
188
190
|
import {
|
|
189
191
|
getCommandDisplayName,
|
|
190
192
|
getCommandSourceBadge
|
|
191
|
-
} from "./chunk-
|
|
193
|
+
} from "./chunk-AAOONL5N.js";
|
|
192
194
|
import {
|
|
193
195
|
computeSessionStats,
|
|
194
196
|
levelLabel
|
|
195
|
-
} from "./chunk-
|
|
197
|
+
} from "./chunk-DSKLWQHC.js";
|
|
196
198
|
import {
|
|
197
199
|
disableKittyProtocol,
|
|
198
200
|
isKittyProtocolEnabled,
|
|
@@ -211,19 +213,19 @@ import {
|
|
|
211
213
|
oscKittyNotify,
|
|
212
214
|
saveClipboardImage,
|
|
213
215
|
writeOsc52
|
|
214
|
-
} from "./chunk-
|
|
215
|
-
import "./chunk-
|
|
216
|
+
} from "./chunk-TNQLAI6I.js";
|
|
217
|
+
import "./chunk-TNS2M7VL.js";
|
|
216
218
|
import "./chunk-4WGODMVR.js";
|
|
217
|
-
import "./chunk-
|
|
219
|
+
import "./chunk-NFSSQDB5.js";
|
|
218
220
|
import "./chunk-KW7NOTN6.js";
|
|
219
221
|
import {
|
|
220
222
|
MaxSizedBox,
|
|
221
223
|
OverflowProvider,
|
|
222
224
|
useOverflowState
|
|
223
|
-
} from "./chunk-
|
|
225
|
+
} from "./chunk-MZQ4I4AP.js";
|
|
224
226
|
import {
|
|
225
227
|
theme
|
|
226
|
-
} from "./chunk-
|
|
228
|
+
} from "./chunk-MLZCPGDX.js";
|
|
227
229
|
import {
|
|
228
230
|
require_jsx_runtime
|
|
229
231
|
} from "./chunk-SV5PQVQE.js";
|
|
@@ -231,7 +233,7 @@ import {
|
|
|
231
233
|
AUTO_THEME_NAME,
|
|
232
234
|
DEFAULT_THEME,
|
|
233
235
|
themeManager
|
|
234
|
-
} from "./chunk-
|
|
236
|
+
} from "./chunk-EN2J77G7.js";
|
|
235
237
|
import {
|
|
236
238
|
Box_default,
|
|
237
239
|
Static,
|
|
@@ -249,35 +251,38 @@ import {
|
|
|
249
251
|
import {
|
|
250
252
|
require_react
|
|
251
253
|
} from "./chunk-5QWWOFGG.js";
|
|
252
|
-
import "./chunk-
|
|
253
|
-
import "./chunk-
|
|
254
|
-
import "./chunk-
|
|
254
|
+
import "./chunk-4EX3DBFH.js";
|
|
255
|
+
import "./chunk-PBYVS6QT.js";
|
|
256
|
+
import "./chunk-6S52N6PG.js";
|
|
255
257
|
import {
|
|
256
258
|
MAX_INLINE_IMAGES_PER_ITEM,
|
|
257
259
|
collectInlineImages,
|
|
258
260
|
getInlineImageData
|
|
259
|
-
} from "./chunk-
|
|
261
|
+
} from "./chunk-ZWPWQEF5.js";
|
|
260
262
|
import {
|
|
261
263
|
relaunchApp
|
|
262
|
-
} from "./chunk-
|
|
264
|
+
} from "./chunk-W2PNY24B.js";
|
|
263
265
|
import {
|
|
264
266
|
setUpdateHandler
|
|
265
|
-
} from "./chunk-
|
|
266
|
-
import
|
|
267
|
+
} from "./chunk-JKEO6OQY.js";
|
|
268
|
+
import {
|
|
269
|
+
isHistoryItemVisibleAfterRestore
|
|
270
|
+
} from "./chunk-EKTCKZV5.js";
|
|
271
|
+
import "./chunk-45HPDU3F.js";
|
|
267
272
|
import "./chunk-YAF2MQZ6.js";
|
|
268
|
-
import "./chunk-
|
|
273
|
+
import "./chunk-G64M7R2Y.js";
|
|
269
274
|
import "./chunk-6H67XLET.js";
|
|
270
275
|
import {
|
|
271
276
|
getErrorMessage as getErrorMessage2
|
|
272
|
-
} from "./chunk-
|
|
277
|
+
} from "./chunk-NM3E6GGL.js";
|
|
273
278
|
import {
|
|
274
279
|
openQwenAsrRealtimeStream,
|
|
275
280
|
openVoiceStream,
|
|
276
281
|
openVoiceStreamWithRetry
|
|
277
|
-
} from "./chunk-
|
|
278
|
-
import "./chunk-
|
|
279
|
-
import "./chunk-
|
|
280
|
-
import "./chunk-
|
|
282
|
+
} from "./chunk-BTYS2JAY.js";
|
|
283
|
+
import "./chunk-W2ITCESM.js";
|
|
284
|
+
import "./chunk-47FQVRCO.js";
|
|
285
|
+
import "./chunk-HMCSRTDY.js";
|
|
281
286
|
import {
|
|
282
287
|
cpLen,
|
|
283
288
|
cpSlice,
|
|
@@ -294,9 +299,6 @@ import {
|
|
|
294
299
|
stringWidth
|
|
295
300
|
} from "./chunk-2MIN6GRR.js";
|
|
296
301
|
import "./chunk-QHTIBUWB.js";
|
|
297
|
-
import {
|
|
298
|
-
isHistoryItemVisibleAfterRestore
|
|
299
|
-
} from "./chunk-EKTCKZV5.js";
|
|
300
302
|
import "./chunk-3Z43GZUQ.js";
|
|
301
303
|
import {
|
|
302
304
|
isValidSessionId
|
|
@@ -308,15 +310,15 @@ import {
|
|
|
308
310
|
isStreamingVoiceModel,
|
|
309
311
|
resolveVoiceStreamConfig,
|
|
310
312
|
transcribeVoiceAudio
|
|
311
|
-
} from "./chunk-
|
|
313
|
+
} from "./chunk-HZV75ET2.js";
|
|
312
314
|
import {
|
|
313
315
|
formatUnsupportedVoiceModelMessage,
|
|
314
316
|
isSelectableVoiceModel
|
|
315
|
-
} from "./chunk-
|
|
316
|
-
import "./chunk-
|
|
317
|
+
} from "./chunk-F4T5J34H.js";
|
|
318
|
+
import "./chunk-IQFYO5BF.js";
|
|
317
319
|
import {
|
|
318
320
|
getExtendedSystemInfo
|
|
319
|
-
} from "./chunk-
|
|
321
|
+
} from "./chunk-AKLY5M2C.js";
|
|
320
322
|
import {
|
|
321
323
|
formatDuration,
|
|
322
324
|
formatRelativeTime,
|
|
@@ -324,43 +326,43 @@ import {
|
|
|
324
326
|
} from "./chunk-3SH53ANB.js";
|
|
325
327
|
import {
|
|
326
328
|
isInlineModelOverrideAllowed
|
|
327
|
-
} from "./chunk-
|
|
329
|
+
} from "./chunk-23GFHEM3.js";
|
|
328
330
|
import {
|
|
329
331
|
computeWorkspaceSkillListUpdates,
|
|
330
332
|
resolveSkillSettings,
|
|
331
333
|
skillSettingStrings
|
|
332
334
|
} from "./chunk-Z4X5MTRT.js";
|
|
333
|
-
import "./chunk-
|
|
335
|
+
import "./chunk-U7QUDFPD.js";
|
|
334
336
|
import {
|
|
335
337
|
requestConsentInteractive,
|
|
336
338
|
requestConsentOrFail
|
|
337
|
-
} from "./chunk-
|
|
339
|
+
} from "./chunk-N3ZWGKXN.js";
|
|
338
340
|
import "./chunk-57OAHC2Y.js";
|
|
339
|
-
import "./chunk-
|
|
340
|
-
import "./chunk-
|
|
341
|
-
import "./chunk-
|
|
341
|
+
import "./chunk-VRWOMUZM.js";
|
|
342
|
+
import "./chunk-ENEEQMGM.js";
|
|
343
|
+
import "./chunk-JPA7IDTE.js";
|
|
342
344
|
import {
|
|
343
345
|
createLoadedSettingsAdapter
|
|
344
|
-
} from "./chunk-
|
|
346
|
+
} from "./chunk-X5GLCWPX.js";
|
|
345
347
|
import "./chunk-MZSJ43WV.js";
|
|
346
348
|
import "./chunk-XCGIMOLN.js";
|
|
347
|
-
import "./chunk-
|
|
349
|
+
import "./chunk-3GCU5O2E.js";
|
|
348
350
|
import "./chunk-V6WHFGST.js";
|
|
349
351
|
import "./chunk-DP3IHZGG.js";
|
|
350
352
|
import "./chunk-6PLDPT2C.js";
|
|
351
353
|
import "./chunk-FYJ7W2PI.js";
|
|
352
354
|
import "./chunk-YP5KH5Y7.js";
|
|
353
|
-
import "./chunk-
|
|
355
|
+
import "./chunk-K7JW6V5O.js";
|
|
354
356
|
import "./chunk-ALMR3E6Q.js";
|
|
355
357
|
import "./chunk-HIBNSEJE.js";
|
|
356
358
|
import "./chunk-M5GB774H.js";
|
|
357
359
|
import "./chunk-BKHCW2BI.js";
|
|
358
|
-
import "./chunk-
|
|
359
|
-
import "./chunk-
|
|
360
|
-
import "./chunk-
|
|
360
|
+
import "./chunk-AQHNAA7E.js";
|
|
361
|
+
import "./chunk-LT532KF4.js";
|
|
362
|
+
import "./chunk-IW6RQPQB.js";
|
|
361
363
|
import {
|
|
362
364
|
loadMcpApprovals
|
|
363
|
-
} from "./chunk-
|
|
365
|
+
} from "./chunk-JOXXPM3X.js";
|
|
364
366
|
import {
|
|
365
367
|
CORRUPTED_SUFFIX,
|
|
366
368
|
SettingScope,
|
|
@@ -382,10 +384,10 @@ import {
|
|
|
382
384
|
settingExistsInScope,
|
|
383
385
|
validateSettingValue,
|
|
384
386
|
writeOutputLanguageAndRegisterPath
|
|
385
|
-
} from "./chunk-
|
|
387
|
+
} from "./chunk-4PFKN7CQ.js";
|
|
386
388
|
import {
|
|
387
389
|
TOGGLE_TYPES
|
|
388
|
-
} from "./chunk-
|
|
390
|
+
} from "./chunk-T4576UW4.js";
|
|
389
391
|
import "./chunk-RKUWKYED.js";
|
|
390
392
|
import "./chunk-GOXKNSDZ.js";
|
|
391
393
|
import "./chunk-IDS7MSUP.js";
|
|
@@ -394,19 +396,19 @@ import {
|
|
|
394
396
|
localizeToolDisplayName,
|
|
395
397
|
t,
|
|
396
398
|
ta
|
|
397
|
-
} from "./chunk-
|
|
399
|
+
} from "./chunk-KFCTC5IJ.js";
|
|
398
400
|
import "./chunk-5EJZE3FP.js";
|
|
399
|
-
import "./chunk-
|
|
400
|
-
import "./chunk-
|
|
401
|
-
import "./chunk-
|
|
401
|
+
import "./chunk-UM57UTTV.js";
|
|
402
|
+
import "./chunk-MS7GNABG.js";
|
|
403
|
+
import "./chunk-LA3FF7RO.js";
|
|
402
404
|
import {
|
|
403
405
|
getCliVersion
|
|
404
|
-
} from "./chunk-
|
|
406
|
+
} from "./chunk-EOBM4T2Z.js";
|
|
405
407
|
import "./chunk-VJNBRRZG.js";
|
|
406
408
|
import {
|
|
407
409
|
isWorkspaceTrusted,
|
|
408
410
|
loadTrustedFolders
|
|
409
|
-
} from "./chunk-
|
|
411
|
+
} from "./chunk-YIKMBYMT.js";
|
|
410
412
|
import {
|
|
411
413
|
require_strip_json_comments
|
|
412
414
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -520,75 +522,76 @@ import {
|
|
|
520
522
|
validateWorkflowName,
|
|
521
523
|
watchRepoBranch,
|
|
522
524
|
writeRuntimeStatus
|
|
523
|
-
} from "./chunk-
|
|
525
|
+
} from "./chunk-UIZGNLBP.js";
|
|
524
526
|
import "./chunk-GOFAQQZA.js";
|
|
525
527
|
import "./chunk-5M6IDOMF.js";
|
|
526
528
|
import {
|
|
527
529
|
stripAnsi
|
|
528
530
|
} from "./chunk-TWPJO254.js";
|
|
529
|
-
import "./chunk-
|
|
530
|
-
import "./chunk-
|
|
531
|
-
import "./chunk-
|
|
532
|
-
import "./chunk-
|
|
533
|
-
import "./chunk-
|
|
531
|
+
import "./chunk-CQ35AJ4Z.js";
|
|
532
|
+
import "./chunk-QTI7SRXI.js";
|
|
533
|
+
import "./chunk-KT4OWAAZ.js";
|
|
534
|
+
import "./chunk-IX7CFQGA.js";
|
|
535
|
+
import "./chunk-N7NBMAMW.js";
|
|
534
536
|
import "./chunk-6PVPNMXU.js";
|
|
535
537
|
import {
|
|
536
538
|
resolveModelId
|
|
537
|
-
} from "./chunk-
|
|
539
|
+
} from "./chunk-XT6TGJFD.js";
|
|
538
540
|
import "./chunk-IRH27ZC2.js";
|
|
539
541
|
import "./chunk-QHWCP53L.js";
|
|
540
|
-
import "./chunk-
|
|
541
|
-
import "./chunk-
|
|
542
|
+
import "./chunk-XLQS3VI6.js";
|
|
543
|
+
import "./chunk-NWPO6I7V.js";
|
|
542
544
|
import {
|
|
543
545
|
promptIdContext
|
|
544
546
|
} from "./chunk-O6GEWCJA.js";
|
|
545
547
|
import "./chunk-T26EAKDL.js";
|
|
546
548
|
import "./chunk-ZPJWUGCS.js";
|
|
547
549
|
import "./chunk-CPBF7KYF.js";
|
|
548
|
-
import "./chunk-
|
|
550
|
+
import "./chunk-2AZMF6G5.js";
|
|
549
551
|
import "./chunk-KRXPRVGL.js";
|
|
550
552
|
import {
|
|
551
553
|
HOOKS_CONFIG_FIELDS
|
|
552
|
-
} from "./chunk-
|
|
553
|
-
import "./chunk-
|
|
554
|
-
import "./chunk-
|
|
554
|
+
} from "./chunk-GZGDJ4E6.js";
|
|
555
|
+
import "./chunk-T6W4KACQ.js";
|
|
556
|
+
import "./chunk-MWZYNOCG.js";
|
|
555
557
|
import {
|
|
556
558
|
elapsedActiveTime,
|
|
557
559
|
goalRequiresExactPermit
|
|
558
|
-
} from "./chunk-
|
|
560
|
+
} from "./chunk-SAQHDAUJ.js";
|
|
559
561
|
import {
|
|
560
562
|
APPROVAL_MODES
|
|
561
|
-
} from "./chunk-
|
|
562
|
-
import "./chunk-
|
|
563
|
-
import "./chunk-
|
|
563
|
+
} from "./chunk-6LYDH7VT.js";
|
|
564
|
+
import "./chunk-2XZWO53E.js";
|
|
565
|
+
import "./chunk-BJKREW56.js";
|
|
564
566
|
import "./chunk-SAH4BD2J.js";
|
|
567
|
+
import "./chunk-25OFRBH2.js";
|
|
565
568
|
import {
|
|
566
569
|
runOutsideAgentContext
|
|
567
|
-
} from "./chunk-
|
|
570
|
+
} from "./chunk-EYS3GGM3.js";
|
|
568
571
|
import "./chunk-S6LOFUVP.js";
|
|
569
572
|
import "./chunk-2J3OJGTL.js";
|
|
570
573
|
import {
|
|
571
574
|
getStartupContextLength,
|
|
572
575
|
isSystemReminderContent
|
|
573
|
-
} from "./chunk-
|
|
576
|
+
} from "./chunk-ZV4XVYL3.js";
|
|
574
577
|
import "./chunk-K623ENWT.js";
|
|
575
578
|
import "./chunk-AQ37AY7B.js";
|
|
576
579
|
import {
|
|
577
580
|
isPathWithinRoot
|
|
578
|
-
} from "./chunk-
|
|
581
|
+
} from "./chunk-V3LXMASR.js";
|
|
579
582
|
import {
|
|
580
583
|
osc8Hyperlink,
|
|
581
584
|
qwenOAuth2Events,
|
|
582
585
|
sanitizeForOsc,
|
|
583
586
|
supportsHyperlinks,
|
|
584
587
|
wrapForMultiplexer
|
|
585
|
-
} from "./chunk-
|
|
588
|
+
} from "./chunk-KCCODSAA.js";
|
|
586
589
|
import "./chunk-NAVJD2PQ.js";
|
|
587
|
-
import "./chunk-
|
|
588
|
-
import "./chunk-
|
|
590
|
+
import "./chunk-5HBFERG5.js";
|
|
591
|
+
import "./chunk-EYW54TBD.js";
|
|
589
592
|
import "./chunk-P3QQPMQA.js";
|
|
590
|
-
import "./chunk-
|
|
591
|
-
import "./chunk-
|
|
593
|
+
import "./chunk-O4BBDP2G.js";
|
|
594
|
+
import "./chunk-KPVVWKF3.js";
|
|
592
595
|
import {
|
|
593
596
|
REASONING_EFFORT_TIERS,
|
|
594
597
|
applyReasoningEffort
|
|
@@ -600,7 +603,7 @@ import {
|
|
|
600
603
|
import "./chunk-AXMWHKXA.js";
|
|
601
604
|
import "./chunk-GLCZKT5V.js";
|
|
602
605
|
import "./chunk-DJ2GSRLV.js";
|
|
603
|
-
import "./chunk-
|
|
606
|
+
import "./chunk-GJJQV4PY.js";
|
|
604
607
|
import {
|
|
605
608
|
ApiCancelEvent,
|
|
606
609
|
AuthEvent,
|
|
@@ -640,8 +643,8 @@ import {
|
|
|
640
643
|
runVisionBridge,
|
|
641
644
|
shouldRunVisionBridge,
|
|
642
645
|
splitImageParts
|
|
643
|
-
} from "./chunk-
|
|
644
|
-
import "./chunk-
|
|
646
|
+
} from "./chunk-U2JLICUY.js";
|
|
647
|
+
import "./chunk-YRLW2MSX.js";
|
|
645
648
|
import "./chunk-VGC4I5JJ.js";
|
|
646
649
|
import {
|
|
647
650
|
AUTO_MEMORY_INDEX_FILENAME,
|
|
@@ -649,31 +652,31 @@ import {
|
|
|
649
652
|
getAutoMemoryRoot,
|
|
650
653
|
getUserAutoMemoryRoot,
|
|
651
654
|
isAnyAutoMemPath
|
|
652
|
-
} from "./chunk-
|
|
655
|
+
} from "./chunk-732MOPEM.js";
|
|
653
656
|
import {
|
|
654
657
|
runSideQuery
|
|
655
|
-
} from "./chunk-
|
|
656
|
-
import "./chunk-
|
|
658
|
+
} from "./chunk-CTQE2NB2.js";
|
|
659
|
+
import "./chunk-IEP44U2R.js";
|
|
657
660
|
import {
|
|
658
661
|
ToolNames,
|
|
659
662
|
isShellProgressData
|
|
660
|
-
} from "./chunk-
|
|
661
|
-
import "./chunk-
|
|
663
|
+
} from "./chunk-XTH2OMDS.js";
|
|
664
|
+
import "./chunk-MDQSCFAZ.js";
|
|
662
665
|
import {
|
|
663
666
|
MAINLINE_CODER_MODEL
|
|
664
667
|
} from "./chunk-F6WFNA7U.js";
|
|
665
668
|
import "./chunk-46UV252V.js";
|
|
666
669
|
import {
|
|
667
670
|
DEFAULT_TOKEN_LIMIT
|
|
668
|
-
} from "./chunk-
|
|
669
|
-
import "./chunk-
|
|
670
|
-
import "./chunk-
|
|
671
|
+
} from "./chunk-FPGTNKCP.js";
|
|
672
|
+
import "./chunk-EFIMD5VA.js";
|
|
673
|
+
import "./chunk-NC4O6UE6.js";
|
|
671
674
|
import {
|
|
672
675
|
atomicWriteFileSync
|
|
673
|
-
} from "./chunk-
|
|
674
|
-
import "./chunk-
|
|
675
|
-
import "./chunk-
|
|
676
|
-
import "./chunk-
|
|
676
|
+
} from "./chunk-F6AOBFUN.js";
|
|
677
|
+
import "./chunk-HUE2M6VI.js";
|
|
678
|
+
import "./chunk-HHJLM3WQ.js";
|
|
679
|
+
import "./chunk-L2GTEEEU.js";
|
|
677
680
|
import {
|
|
678
681
|
Storage,
|
|
679
682
|
UnauthorizedError,
|
|
@@ -685,9 +688,9 @@ import {
|
|
|
685
688
|
isNodeError,
|
|
686
689
|
shortenPath,
|
|
687
690
|
tildeifyPath
|
|
688
|
-
} from "./chunk-
|
|
691
|
+
} from "./chunk-MPBRV3UU.js";
|
|
689
692
|
import "./chunk-VOQXFAY5.js";
|
|
690
|
-
import "./chunk-
|
|
693
|
+
import "./chunk-3LHYTQ2R.js";
|
|
691
694
|
import {
|
|
692
695
|
finalizeStartupProfile,
|
|
693
696
|
profileCheckpoint
|
|
@@ -696,7 +699,7 @@ import "./chunk-Q7YDKOGY.js";
|
|
|
696
699
|
import {
|
|
697
700
|
registerCleanup,
|
|
698
701
|
runExitCleanup
|
|
699
|
-
} from "./chunk-
|
|
702
|
+
} from "./chunk-RUKNJEJO.js";
|
|
700
703
|
import {
|
|
701
704
|
clearScreen,
|
|
702
705
|
writeStderrLine,
|
|
@@ -750,7 +753,7 @@ var SUPPORTED_EVENTS = [
|
|
|
750
753
|
"control_request",
|
|
751
754
|
"control_response"
|
|
752
755
|
];
|
|
753
|
-
var DUAL_OUTPUT_PROTOCOL_VERSION =
|
|
756
|
+
var DUAL_OUTPUT_PROTOCOL_VERSION = 2;
|
|
754
757
|
var MAX_BUFFERED_BYTES = 1024 * 1024;
|
|
755
758
|
var DualOutputBridge = class {
|
|
756
759
|
static {
|
|
@@ -3366,13 +3369,6 @@ var SelectionState = class {
|
|
|
3366
3369
|
this.focus = point;
|
|
3367
3370
|
}
|
|
3368
3371
|
}
|
|
3369
|
-
/** Select a resolved word/line span from a multi-click (not a drag). */
|
|
3370
|
-
selectSpan(span, mode) {
|
|
3371
|
-
this.anchor = { x: span.sx, y: span.sy };
|
|
3372
|
-
this.focus = { x: span.ex, y: span.ey };
|
|
3373
|
-
this.dragging = false;
|
|
3374
|
-
this.mode = mode;
|
|
3375
|
-
}
|
|
3376
3372
|
finish() {
|
|
3377
3373
|
this.dragging = false;
|
|
3378
3374
|
}
|
|
@@ -3389,6 +3385,13 @@ var SelectionState = class {
|
|
|
3389
3385
|
get isCollapsed() {
|
|
3390
3386
|
return !this.isEmpty && this.anchor.x === this.focus.x && this.anchor.y === this.focus.y;
|
|
3391
3387
|
}
|
|
3388
|
+
/**
|
|
3389
|
+
* A collapsed range is a real single-cell span in word/line mode, but only a
|
|
3390
|
+
* bare click in char mode.
|
|
3391
|
+
*/
|
|
3392
|
+
get isBareClick() {
|
|
3393
|
+
return this.isCollapsed && this.mode === "char";
|
|
3394
|
+
}
|
|
3392
3395
|
/** Anchor/focus ordered into reading order, or null when empty. */
|
|
3393
3396
|
normalized() {
|
|
3394
3397
|
if (!this.anchor || !this.focus) {
|
|
@@ -3420,11 +3423,21 @@ function getSelectedText(frame, selection) {
|
|
|
3420
3423
|
}
|
|
3421
3424
|
const startX = y === sy ? sx : 0;
|
|
3422
3425
|
const endX = y === ey ? ex : row.length - 1;
|
|
3426
|
+
let rowText = "";
|
|
3427
|
+
let skippedLayoutGap = false;
|
|
3423
3428
|
for (let x = Math.max(0, startX); x <= endX && x < row.length; x++) {
|
|
3424
|
-
|
|
3425
|
-
|
|
3429
|
+
const cell = row[x];
|
|
3430
|
+
if (cell.selectable) {
|
|
3431
|
+
if (skippedLayoutGap && rowText.length > 0 && cell.value !== "" && !/\s$/u.test(rowText) && !/^\s/u.test(cell.value)) {
|
|
3432
|
+
rowText += " ";
|
|
3433
|
+
}
|
|
3434
|
+
rowText += cell.value;
|
|
3435
|
+
skippedLayoutGap = false;
|
|
3436
|
+
} else if (rowText.length > 0) {
|
|
3437
|
+
skippedLayoutGap = true;
|
|
3426
3438
|
}
|
|
3427
3439
|
}
|
|
3440
|
+
text += rowText;
|
|
3428
3441
|
if (y < ey) {
|
|
3429
3442
|
text += boundaryJoiner(frame, selection, y);
|
|
3430
3443
|
}
|
|
@@ -3489,8 +3502,8 @@ function isWordCell(value) {
|
|
|
3489
3502
|
return value !== "" && value !== " " && !/^\s$/u.test(value);
|
|
3490
3503
|
}
|
|
3491
3504
|
__name(isWordCell, "isWordCell");
|
|
3492
|
-
function lastContentColumn(row) {
|
|
3493
|
-
for (let x =
|
|
3505
|
+
function lastContentColumn(row, start, end) {
|
|
3506
|
+
for (let x = end; x >= start; x--) {
|
|
3494
3507
|
if (row[x].value !== "" && row[x].value !== " ") {
|
|
3495
3508
|
return x;
|
|
3496
3509
|
}
|
|
@@ -3518,18 +3531,46 @@ function wordSpanAt(frame, x, y) {
|
|
|
3518
3531
|
return { sx, sy: y, ex, ey: y };
|
|
3519
3532
|
}
|
|
3520
3533
|
__name(wordSpanAt, "wordSpanAt");
|
|
3521
|
-
function
|
|
3534
|
+
function selectableLineSpan(row, x, y) {
|
|
3535
|
+
let start = x;
|
|
3536
|
+
while (start > 0 && row[start - 1].selectable) {
|
|
3537
|
+
start--;
|
|
3538
|
+
}
|
|
3539
|
+
let runEnd = x;
|
|
3540
|
+
while (runEnd < row.length - 1 && row[runEnd + 1].selectable) {
|
|
3541
|
+
runEnd++;
|
|
3542
|
+
}
|
|
3543
|
+
const contentEnd = lastContentColumn(row, start, runEnd);
|
|
3544
|
+
return { sx: start, sy: y, ex: contentEnd, ey: y };
|
|
3545
|
+
}
|
|
3546
|
+
__name(selectableLineSpan, "selectableLineSpan");
|
|
3547
|
+
function isSelectableContent(cell) {
|
|
3548
|
+
return cell.selectable && cell.value !== "" && cell.value !== " ";
|
|
3549
|
+
}
|
|
3550
|
+
__name(isSelectableContent, "isSelectableContent");
|
|
3551
|
+
function lineSpanAt(frame, x, y) {
|
|
3522
3552
|
const row = frame?.cells[y];
|
|
3523
|
-
if (!row) {
|
|
3553
|
+
if (!row || row.length === 0) {
|
|
3524
3554
|
return null;
|
|
3525
3555
|
}
|
|
3526
|
-
const
|
|
3527
|
-
|
|
3528
|
-
|
|
3556
|
+
const origin = Math.max(0, Math.min(x, row.length - 1));
|
|
3557
|
+
for (let distance = 0; distance < row.length; distance++) {
|
|
3558
|
+
const left = origin - distance;
|
|
3559
|
+
if (left >= 0 && isSelectableContent(row[left])) {
|
|
3560
|
+
return selectableLineSpan(row, left, y);
|
|
3561
|
+
}
|
|
3562
|
+
const right = origin + distance;
|
|
3563
|
+
if (distance > 0 && right < row.length && isSelectableContent(row[right])) {
|
|
3564
|
+
return selectableLineSpan(row, right, y);
|
|
3565
|
+
}
|
|
3529
3566
|
}
|
|
3530
|
-
return
|
|
3567
|
+
return null;
|
|
3531
3568
|
}
|
|
3532
3569
|
__name(lineSpanAt, "lineSpanAt");
|
|
3570
|
+
function spanAtForMode(frame, mode, point) {
|
|
3571
|
+
return mode === "word" ? wordSpanAt(frame, point.x, point.y) : lineSpanAt(frame, point.x, point.y);
|
|
3572
|
+
}
|
|
3573
|
+
__name(spanAtForMode, "spanAtForMode");
|
|
3533
3574
|
|
|
3534
3575
|
// packages/cli/src/ui/selection/selection-coords.ts
|
|
3535
3576
|
init_esbuild_shims();
|
|
@@ -3576,8 +3617,12 @@ function TextSelectionController(props) {
|
|
|
3576
3617
|
const baselineScrollTopRef = (0, import_react13.useRef)(0);
|
|
3577
3618
|
const baselineScrollHeightRef = (0, import_react13.useRef)(0);
|
|
3578
3619
|
const baselineFrameRef = (0, import_react13.useRef)(null);
|
|
3579
|
-
const
|
|
3620
|
+
const baselineRectRef = (0, import_react13.useRef)(null);
|
|
3621
|
+
const activeRectIndexRef = (0, import_react13.useRef)(null);
|
|
3622
|
+
const selectionGenerationRef = (0, import_react13.useRef)(0);
|
|
3623
|
+
const pendingInvalidationGenRef = (0, import_react13.useRef)(null);
|
|
3580
3624
|
const lastClickRef = (0, import_react13.useRef)(null);
|
|
3625
|
+
const anchorSpanRef = (0, import_react13.useRef)(null);
|
|
3581
3626
|
const bufferRef = (0, import_react13.useRef)(void 0);
|
|
3582
3627
|
const propsRef = (0, import_react13.useRef)(props);
|
|
3583
3628
|
propsRef.current = props;
|
|
@@ -3588,7 +3633,10 @@ function TextSelectionController(props) {
|
|
|
3588
3633
|
return bufferRef.current;
|
|
3589
3634
|
}, [stdout]);
|
|
3590
3635
|
const clearSelection = (0, import_react13.useCallback)(() => {
|
|
3636
|
+
selectionGenerationRef.current += 1;
|
|
3637
|
+
activeRectIndexRef.current = null;
|
|
3591
3638
|
const selection = selectionRef.current;
|
|
3639
|
+
anchorSpanRef.current = null;
|
|
3592
3640
|
if (selection.isEmpty) {
|
|
3593
3641
|
return;
|
|
3594
3642
|
}
|
|
@@ -3598,16 +3646,32 @@ function TextSelectionController(props) {
|
|
|
3598
3646
|
const applyHighlight = (0, import_react13.useCallback)(() => {
|
|
3599
3647
|
const selection = selectionRef.current;
|
|
3600
3648
|
const normalized = selection.normalized();
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
const recordBaseline = (0, import_react13.useCallback)(() => {
|
|
3605
|
-
const scrollState = propsRef.current.getScrollState();
|
|
3606
|
-
baselineScrollTopRef.current = scrollState.scrollTop;
|
|
3607
|
-
baselineScrollHeightRef.current = scrollState.scrollHeight;
|
|
3608
|
-
baselineFrameRef.current = getBuffer()?.frame ?? null;
|
|
3609
|
-
baselineViewportRectRef.current = propsRef.current.getViewportRect();
|
|
3649
|
+
getBuffer()?.setSelection(
|
|
3650
|
+
normalized && !selection.isBareClick ? normalized : null
|
|
3651
|
+
);
|
|
3610
3652
|
}, [getBuffer]);
|
|
3653
|
+
const getSelectableRects = (0, import_react13.useCallback)(() => {
|
|
3654
|
+
const viewportRect = propsRef.current.getViewportRect();
|
|
3655
|
+
if (!viewportRect) {
|
|
3656
|
+
return [];
|
|
3657
|
+
}
|
|
3658
|
+
const additionalRects = propsRef.current.getAdditionalSelectableRects?.() ?? [];
|
|
3659
|
+
return [viewportRect, ...additionalRects];
|
|
3660
|
+
}, []);
|
|
3661
|
+
const getActiveRect = (0, import_react13.useCallback)(() => {
|
|
3662
|
+
const index = activeRectIndexRef.current;
|
|
3663
|
+
return index === null ? null : getSelectableRects()[index] ?? null;
|
|
3664
|
+
}, [getSelectableRects]);
|
|
3665
|
+
const recordBaseline = (0, import_react13.useCallback)(
|
|
3666
|
+
(rect) => {
|
|
3667
|
+
const scrollState = propsRef.current.getScrollState();
|
|
3668
|
+
baselineScrollTopRef.current = scrollState.scrollTop;
|
|
3669
|
+
baselineScrollHeightRef.current = scrollState.scrollHeight;
|
|
3670
|
+
baselineFrameRef.current = getBuffer()?.frame ?? null;
|
|
3671
|
+
baselineRectRef.current = rect;
|
|
3672
|
+
},
|
|
3673
|
+
[getBuffer]
|
|
3674
|
+
);
|
|
3611
3675
|
const copySelection = (0, import_react13.useCallback)(() => {
|
|
3612
3676
|
const normalized = selectionRef.current.normalized();
|
|
3613
3677
|
const text = normalized ? getSelectedText(getBuffer()?.frame ?? null, normalized) : "";
|
|
@@ -3620,8 +3684,7 @@ function TextSelectionController(props) {
|
|
|
3620
3684
|
const mapEvent = (0, import_react13.useCallback)(
|
|
3621
3685
|
(event) => {
|
|
3622
3686
|
const buffer = getBuffer();
|
|
3623
|
-
|
|
3624
|
-
if (!buffer || !rect) {
|
|
3687
|
+
if (!buffer) {
|
|
3625
3688
|
return null;
|
|
3626
3689
|
}
|
|
3627
3690
|
const frameHeight = buffer.dimensions.height;
|
|
@@ -3634,28 +3697,63 @@ function TextSelectionController(props) {
|
|
|
3634
3697
|
);
|
|
3635
3698
|
const row = buffer.frame?.cells[point.y];
|
|
3636
3699
|
const snappedPoint = point.x > 0 && row?.[point.x]?.value === "" && row[point.x - 1]?.fullWidth ? { ...point, x: point.x - 1 } : point;
|
|
3637
|
-
return
|
|
3700
|
+
return snappedPoint;
|
|
3638
3701
|
},
|
|
3639
3702
|
[getBuffer, stdout]
|
|
3640
3703
|
);
|
|
3704
|
+
const extendSpanDrag = (0, import_react13.useCallback)(
|
|
3705
|
+
(point) => {
|
|
3706
|
+
const anchor = anchorSpanRef.current;
|
|
3707
|
+
if (!anchor) return;
|
|
3708
|
+
const { span, mode } = anchor;
|
|
3709
|
+
const selection = selectionRef.current;
|
|
3710
|
+
const frame = getBuffer()?.frame ?? null;
|
|
3711
|
+
const current = spanAtForMode(frame, mode, point) ?? {
|
|
3712
|
+
sx: point.x,
|
|
3713
|
+
sy: point.y,
|
|
3714
|
+
ex: point.x,
|
|
3715
|
+
ey: point.y
|
|
3716
|
+
};
|
|
3717
|
+
const cursorAfter = point.y > span.ey || point.y === span.ey && point.x >= span.ex;
|
|
3718
|
+
selection.anchor = cursorAfter ? { x: span.sx, y: span.sy } : { x: span.ex, y: span.ey };
|
|
3719
|
+
selection.focus = cursorAfter ? { x: current.ex, y: current.ey } : { x: current.sx, y: current.sy };
|
|
3720
|
+
},
|
|
3721
|
+
[getBuffer]
|
|
3722
|
+
);
|
|
3723
|
+
const extendActiveDrag = (0, import_react13.useCallback)(
|
|
3724
|
+
(point) => {
|
|
3725
|
+
if (anchorSpanRef.current) {
|
|
3726
|
+
extendSpanDrag(point);
|
|
3727
|
+
} else {
|
|
3728
|
+
selectionRef.current.extend(point);
|
|
3729
|
+
}
|
|
3730
|
+
},
|
|
3731
|
+
[extendSpanDrag]
|
|
3732
|
+
);
|
|
3641
3733
|
const handleMouse = (0, import_react13.useCallback)(
|
|
3642
3734
|
(event) => {
|
|
3643
3735
|
const selection = selectionRef.current;
|
|
3644
3736
|
if (event.name.startsWith("scroll-")) {
|
|
3645
|
-
|
|
3737
|
+
if (activeRectIndexRef.current === 0) {
|
|
3738
|
+
clearSelection();
|
|
3739
|
+
}
|
|
3646
3740
|
return;
|
|
3647
3741
|
}
|
|
3648
3742
|
if (event.name === "left-press") {
|
|
3743
|
+
selectionGenerationRef.current += 1;
|
|
3649
3744
|
if (propsRef.current.hitTestScrollbar({ col: event.col, row: event.row })) {
|
|
3650
3745
|
clearSelection();
|
|
3651
3746
|
return;
|
|
3652
3747
|
}
|
|
3653
|
-
const
|
|
3654
|
-
|
|
3748
|
+
const point = mapEvent(event);
|
|
3749
|
+
const rects = getSelectableRects();
|
|
3750
|
+
const rectIndex = point ? rects.findIndex((rect2) => pointInViewport(point, rect2)) : -1;
|
|
3751
|
+
if (!point || rectIndex < 0) {
|
|
3655
3752
|
clearSelection();
|
|
3656
3753
|
return;
|
|
3657
3754
|
}
|
|
3658
|
-
const
|
|
3755
|
+
const rect = rects[rectIndex];
|
|
3756
|
+
activeRectIndexRef.current = rectIndex;
|
|
3659
3757
|
const now = Date.now();
|
|
3660
3758
|
const prev = lastClickRef.current;
|
|
3661
3759
|
const near = prev != null && prev.y === point.y && Math.abs(prev.x - point.x) <= 1 && now - prev.time < MULTI_CLICK_MS;
|
|
@@ -3663,18 +3761,23 @@ function TextSelectionController(props) {
|
|
|
3663
3761
|
lastClickRef.current = { x: point.x, y: point.y, time: now, count };
|
|
3664
3762
|
if (count >= 2) {
|
|
3665
3763
|
const frame = getBuffer()?.frame ?? null;
|
|
3666
|
-
const
|
|
3764
|
+
const mode = count === 2 ? "word" : "line";
|
|
3765
|
+
const span = spanAtForMode(frame, mode, point);
|
|
3667
3766
|
if (span) {
|
|
3668
|
-
selection.
|
|
3669
|
-
|
|
3767
|
+
selection.start({ x: span.sx, y: span.sy }, mode);
|
|
3768
|
+
selection.extend({ x: span.ex, y: span.ey });
|
|
3769
|
+
anchorSpanRef.current = { span, mode };
|
|
3770
|
+
dragScrollTopRef.current = propsRef.current.getScrollState().scrollTop;
|
|
3771
|
+
recordBaseline(rect);
|
|
3670
3772
|
applyHighlight();
|
|
3671
3773
|
copySelection();
|
|
3672
3774
|
return;
|
|
3673
3775
|
}
|
|
3674
3776
|
}
|
|
3777
|
+
anchorSpanRef.current = null;
|
|
3675
3778
|
selection.start(point);
|
|
3676
3779
|
dragScrollTopRef.current = propsRef.current.getScrollState().scrollTop;
|
|
3677
|
-
recordBaseline();
|
|
3780
|
+
recordBaseline(rect);
|
|
3678
3781
|
applyHighlight();
|
|
3679
3782
|
return;
|
|
3680
3783
|
}
|
|
@@ -3682,16 +3785,20 @@ function TextSelectionController(props) {
|
|
|
3682
3785
|
if (!selection.dragging) {
|
|
3683
3786
|
return;
|
|
3684
3787
|
}
|
|
3685
|
-
|
|
3686
|
-
|
|
3788
|
+
if (!anchorSpanRef.current) {
|
|
3789
|
+
lastClickRef.current = null;
|
|
3790
|
+
}
|
|
3791
|
+
if (activeRectIndexRef.current === 0 && propsRef.current.getScrollState().scrollTop !== dragScrollTopRef.current) {
|
|
3687
3792
|
clearSelection();
|
|
3688
3793
|
return;
|
|
3689
3794
|
}
|
|
3690
|
-
const
|
|
3691
|
-
|
|
3795
|
+
const point = mapEvent(event);
|
|
3796
|
+
const rect = getActiveRect();
|
|
3797
|
+
if (!point || !rect) {
|
|
3798
|
+
clearSelection();
|
|
3692
3799
|
return;
|
|
3693
3800
|
}
|
|
3694
|
-
|
|
3801
|
+
extendActiveDrag(clampToViewport(point, rect));
|
|
3695
3802
|
applyHighlight();
|
|
3696
3803
|
return;
|
|
3697
3804
|
}
|
|
@@ -3699,12 +3806,18 @@ function TextSelectionController(props) {
|
|
|
3699
3806
|
if (!selection.dragging) {
|
|
3700
3807
|
return;
|
|
3701
3808
|
}
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3809
|
+
if (pendingInvalidationGenRef.current === selectionGenerationRef.current) {
|
|
3810
|
+
clearSelection();
|
|
3811
|
+
return;
|
|
3812
|
+
}
|
|
3813
|
+
const point = mapEvent(event);
|
|
3814
|
+
const rect = getActiveRect();
|
|
3815
|
+
if (point && rect) {
|
|
3816
|
+
extendActiveDrag(clampToViewport(point, rect));
|
|
3705
3817
|
}
|
|
3818
|
+
anchorSpanRef.current = null;
|
|
3706
3819
|
selection.finish();
|
|
3707
|
-
if (selection.
|
|
3820
|
+
if (selection.isEmpty || selection.isBareClick) {
|
|
3708
3821
|
clearSelection();
|
|
3709
3822
|
return;
|
|
3710
3823
|
}
|
|
@@ -3719,7 +3832,10 @@ function TextSelectionController(props) {
|
|
|
3719
3832
|
copySelection,
|
|
3720
3833
|
recordBaseline,
|
|
3721
3834
|
mapEvent,
|
|
3722
|
-
getBuffer
|
|
3835
|
+
getBuffer,
|
|
3836
|
+
getSelectableRects,
|
|
3837
|
+
getActiveRect,
|
|
3838
|
+
extendActiveDrag
|
|
3723
3839
|
]
|
|
3724
3840
|
);
|
|
3725
3841
|
useMouseEvents(handleMouse, {
|
|
@@ -3736,12 +3852,20 @@ function TextSelectionController(props) {
|
|
|
3736
3852
|
return;
|
|
3737
3853
|
}
|
|
3738
3854
|
const { scrollTop, scrollHeight } = propsRef.current.getScrollState();
|
|
3739
|
-
const
|
|
3740
|
-
|
|
3741
|
-
|
|
3855
|
+
const activeRect = getActiveRect();
|
|
3856
|
+
const isViewportSelection = activeRectIndexRef.current === 0;
|
|
3857
|
+
if (isViewportSelection && (scrollTop !== baselineScrollTopRef.current || scrollHeight !== baselineScrollHeightRef.current) || !sameViewportRect(baselineRectRef.current, activeRect) || !sameViewportContent(baselineFrameRef.current, frame, activeRect)) {
|
|
3858
|
+
const invalidatedGeneration = selectionGenerationRef.current;
|
|
3859
|
+
pendingInvalidationGenRef.current = invalidatedGeneration;
|
|
3860
|
+
queueMicrotask(() => {
|
|
3861
|
+
pendingInvalidationGenRef.current = null;
|
|
3862
|
+
if (selectionGenerationRef.current === invalidatedGeneration) {
|
|
3863
|
+
clearSelection();
|
|
3864
|
+
}
|
|
3865
|
+
});
|
|
3742
3866
|
}
|
|
3743
3867
|
});
|
|
3744
|
-
}, [getBuffer, clearSelection]);
|
|
3868
|
+
}, [getBuffer, getActiveRect, clearSelection]);
|
|
3745
3869
|
(0, import_react13.useEffect)(() => {
|
|
3746
3870
|
if (!props.isActive) {
|
|
3747
3871
|
clearSelection();
|
|
@@ -3789,7 +3913,7 @@ var VP_BANNER_ITEM = { type: "vp-banner", id: VP_BANNER_ID };
|
|
|
3789
3913
|
var virtualEstimatedItemHeight = /* @__PURE__ */ __name((index) => index === 0 ? 10 : 3, "virtualEstimatedItemHeight");
|
|
3790
3914
|
var virtualKeyExtractor = /* @__PURE__ */ __name((item) => item.type === "vp-banner" ? "vp-banner" : item.id >= 0 ? `h-${item.id}` : `p-${-item.id - 1}`, "virtualKeyExtractor");
|
|
3791
3915
|
var virtualIsStaticItem = /* @__PURE__ */ __name((item) => item.type === "vp-banner" || item.id > 0, "virtualIsStaticItem");
|
|
3792
|
-
var MainContent = /* @__PURE__ */ __name(() => {
|
|
3916
|
+
var MainContent = /* @__PURE__ */ __name(({ footerRef }) => {
|
|
3793
3917
|
const { version } = useAppContext();
|
|
3794
3918
|
const uiState = useUIState();
|
|
3795
3919
|
const { allExpanded: fullDetail } = useThoughtExpanded();
|
|
@@ -4019,6 +4143,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
4019
4143
|
{
|
|
4020
4144
|
isActive: !uiState.dialogsVisible,
|
|
4021
4145
|
getViewportRect: () => scrollRef.current?.getViewportRect() ?? null,
|
|
4146
|
+
getAdditionalSelectableRects: () => footerRef?.current ? [measureElementPosition(footerRef.current)] : [],
|
|
4022
4147
|
getScrollState: () => scrollRef.current?.getScrollState() ?? {
|
|
4023
4148
|
scrollTop: 0,
|
|
4024
4149
|
scrollHeight: 0,
|
|
@@ -8060,15 +8185,18 @@ function StatusLineDialog({
|
|
|
8060
8185
|
};
|
|
8061
8186
|
settings.setValue(effectiveScope, "ui.statusLine", savedConfig);
|
|
8062
8187
|
onSaved?.(savedConfig);
|
|
8063
|
-
|
|
8064
|
-
|
|
8065
|
-
|
|
8066
|
-
|
|
8067
|
-
|
|
8068
|
-
|
|
8069
|
-
|
|
8188
|
+
const feedbackItem = {
|
|
8189
|
+
type: "info" /* INFO */,
|
|
8190
|
+
text: `Status line preset saved to ${effectiveScope.toLowerCase()} settings.`
|
|
8191
|
+
};
|
|
8192
|
+
addItem(feedbackItem, Date.now());
|
|
8193
|
+
config.getChatRecordingService?.()?.recordSlashCommand({
|
|
8194
|
+
phase: "result",
|
|
8195
|
+
rawCommand: "/statusline",
|
|
8196
|
+
outputHistoryItems: [feedbackItem]
|
|
8197
|
+
});
|
|
8070
8198
|
onClose();
|
|
8071
|
-
}, [addItem, onClose, onSaved, presetConfig, settings]);
|
|
8199
|
+
}, [addItem, config, onClose, onSaved, presetConfig, settings]);
|
|
8072
8200
|
useKeypress(
|
|
8073
8201
|
(key) => {
|
|
8074
8202
|
if (key.name === "escape") {
|
|
@@ -8472,6 +8600,7 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
|
|
|
8472
8600
|
pendingAuthType,
|
|
8473
8601
|
isAuthenticating
|
|
8474
8602
|
);
|
|
8603
|
+
const openedViaCommandRef = (0, import_react27.useRef)(false);
|
|
8475
8604
|
const onAuthError = (0, import_react27.useCallback)(
|
|
8476
8605
|
(error) => {
|
|
8477
8606
|
setAuthError(error);
|
|
@@ -8523,16 +8652,22 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
|
|
|
8523
8652
|
refreshAuth: /* @__PURE__ */ __name((authType) => config.refreshAuth(authType), "refreshAuth")
|
|
8524
8653
|
});
|
|
8525
8654
|
completeAuthentication();
|
|
8526
|
-
|
|
8527
|
-
|
|
8528
|
-
|
|
8529
|
-
|
|
8530
|
-
|
|
8531
|
-
|
|
8532
|
-
|
|
8533
|
-
|
|
8534
|
-
|
|
8535
|
-
|
|
8655
|
+
const feedbackItem = {
|
|
8656
|
+
type: "info" /* INFO */,
|
|
8657
|
+
text: t(
|
|
8658
|
+
"Successfully configured {{provider}}. Use /model to switch models.",
|
|
8659
|
+
{ provider: providerConfig.label }
|
|
8660
|
+
)
|
|
8661
|
+
};
|
|
8662
|
+
addItem(feedbackItem, Date.now());
|
|
8663
|
+
if (openedViaCommandRef.current) {
|
|
8664
|
+
openedViaCommandRef.current = false;
|
|
8665
|
+
config.getChatRecordingService?.()?.recordSlashCommand({
|
|
8666
|
+
phase: "result",
|
|
8667
|
+
rawCommand: "/auth",
|
|
8668
|
+
outputHistoryItems: [feedbackItem]
|
|
8669
|
+
});
|
|
8670
|
+
}
|
|
8536
8671
|
logAuth(config, new AuthEvent(protocol, "manual", "success"));
|
|
8537
8672
|
} catch (error) {
|
|
8538
8673
|
handleAuthFailure(error, protocol);
|
|
@@ -8541,9 +8676,11 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
|
|
|
8541
8676
|
[settings, config, completeAuthentication, addItem, handleAuthFailure]
|
|
8542
8677
|
);
|
|
8543
8678
|
const openAuthDialog = (0, import_react27.useCallback)(() => {
|
|
8679
|
+
openedViaCommandRef.current = true;
|
|
8544
8680
|
setIsAuthDialogOpen(true);
|
|
8545
8681
|
}, []);
|
|
8546
8682
|
const closeAuthDialog = (0, import_react27.useCallback)(() => {
|
|
8683
|
+
openedViaCommandRef.current = false;
|
|
8547
8684
|
setIsAuthDialogOpen(false);
|
|
8548
8685
|
setAuthError(null);
|
|
8549
8686
|
}, []);
|
|
@@ -11087,6 +11224,7 @@ function hydrateApiKeyEnvFromSettings(settings, envKey) {
|
|
|
11087
11224
|
}
|
|
11088
11225
|
__name(hydrateApiKeyEnvFromSettings, "hydrateApiKeyEnvFromSettings");
|
|
11089
11226
|
function handleModelSwitchSuccess({
|
|
11227
|
+
config,
|
|
11090
11228
|
settings,
|
|
11091
11229
|
uiState,
|
|
11092
11230
|
after,
|
|
@@ -11108,16 +11246,19 @@ function handleModelSwitchSuccess({
|
|
|
11108
11246
|
const baseUrl = after?.baseUrl ?? t("(default)");
|
|
11109
11247
|
const maskedKey = maskApiKey2(after?.apiKey);
|
|
11110
11248
|
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
text: `authType: ${effectiveAuthType ?? `(${t("none")})`}
|
|
11249
|
+
const feedbackItem = {
|
|
11250
|
+
type: "info",
|
|
11251
|
+
text: `authType: ${effectiveAuthType ?? `(${t("none")})`}
|
|
11115
11252
|
Using ${isRuntime ? "runtime " : ""}model: ${effectiveModelId}${scopeSuffix}
|
|
11116
11253
|
Base URL: ${baseUrl}
|
|
11117
11254
|
API key: ${maskedKey}`
|
|
11118
|
-
|
|
11119
|
-
|
|
11120
|
-
)
|
|
11255
|
+
};
|
|
11256
|
+
uiState?.historyManager.addItem(feedbackItem, Date.now());
|
|
11257
|
+
config.getChatRecordingService?.()?.recordSlashCommand({
|
|
11258
|
+
phase: "result",
|
|
11259
|
+
rawCommand: "/model",
|
|
11260
|
+
outputHistoryItems: [feedbackItem]
|
|
11261
|
+
});
|
|
11121
11262
|
}
|
|
11122
11263
|
__name(handleModelSwitchSuccess, "handleModelSwitchSuccess");
|
|
11123
11264
|
function formatContextWindow(size) {
|
|
@@ -11299,7 +11440,8 @@ function ModelDialog({
|
|
|
11299
11440
|
}
|
|
11300
11441
|
}, [parsedImageModelValue?.selector, isImageModelMode]);
|
|
11301
11442
|
const preferredModelId = isFastModelMode && parsedFastModelSetting ? parsedFastModelSetting.modelId : isVisionModelMode && parsedVisionModelSetting ? parsedVisionModelSetting.modelId : isImageModelMode && parsedImageModelSetting ? parsedImageModelSetting.modelId : config?.getModel() || MAINLINE_CODER_MODEL;
|
|
11302
|
-
const
|
|
11443
|
+
const isAuxiliaryModelMode = isFastModelMode || isVoiceModelMode || isVisionModelMode || isCompactionModelMode || isImageModelMode;
|
|
11444
|
+
const activeRuntimeSnapshot = isAuxiliaryModelMode ? void 0 : config?.getActiveRuntimeModelSnapshot?.();
|
|
11303
11445
|
const currentBaseUrl = config?.getModelsConfig().getGenerationConfig()?.baseUrl;
|
|
11304
11446
|
const preferredFastModelEntry = isFastModelMode && parsedFastModelSetting ? parsedFastModelSetting.authType ? availableModelEntries.find(
|
|
11305
11447
|
({ authType: t2, model }) => t2 === parsedFastModelSetting.authType && model.id === parsedFastModelSetting.modelId
|
|
@@ -11360,10 +11502,50 @@ function ModelDialog({
|
|
|
11360
11502
|
preferredModelId,
|
|
11361
11503
|
currentBaseUrl
|
|
11362
11504
|
) : "";
|
|
11505
|
+
const closeLatchRef = (0, import_react34.useRef)(false);
|
|
11506
|
+
const selectionInFlightRef = (0, import_react34.useRef)(false);
|
|
11507
|
+
const selectionCommittedRef = (0, import_react34.useRef)(false);
|
|
11508
|
+
const reportAuxiliaryModelSelection = (0, import_react34.useCallback)(
|
|
11509
|
+
(feedbackItem) => {
|
|
11510
|
+
uiState?.historyManager.addItem(feedbackItem, Date.now());
|
|
11511
|
+
config?.getChatRecordingService?.()?.recordSlashCommand({
|
|
11512
|
+
phase: "result",
|
|
11513
|
+
rawCommand: "/model",
|
|
11514
|
+
outputHistoryItems: [feedbackItem]
|
|
11515
|
+
});
|
|
11516
|
+
},
|
|
11517
|
+
[config, uiState]
|
|
11518
|
+
);
|
|
11519
|
+
const closeWithoutSelection = (0, import_react34.useCallback)(() => {
|
|
11520
|
+
if (closeLatchRef.current || selectionInFlightRef.current) return;
|
|
11521
|
+
closeLatchRef.current = true;
|
|
11522
|
+
if (!isAuxiliaryModelMode && !selectionCommittedRef.current) {
|
|
11523
|
+
const feedbackItem = {
|
|
11524
|
+
type: "info",
|
|
11525
|
+
text: t("Kept model as {{model}}", {
|
|
11526
|
+
model: activeRuntimeSnapshot?.modelId ?? preferredModelId
|
|
11527
|
+
})
|
|
11528
|
+
};
|
|
11529
|
+
uiState?.historyManager.addItem(feedbackItem, Date.now());
|
|
11530
|
+
config?.getChatRecordingService?.()?.recordSlashCommand({
|
|
11531
|
+
phase: "result",
|
|
11532
|
+
rawCommand: "/model",
|
|
11533
|
+
outputHistoryItems: [feedbackItem]
|
|
11534
|
+
});
|
|
11535
|
+
}
|
|
11536
|
+
onClose();
|
|
11537
|
+
}, [
|
|
11538
|
+
activeRuntimeSnapshot,
|
|
11539
|
+
config,
|
|
11540
|
+
isAuxiliaryModelMode,
|
|
11541
|
+
onClose,
|
|
11542
|
+
preferredModelId,
|
|
11543
|
+
uiState
|
|
11544
|
+
]);
|
|
11363
11545
|
useKeypress(
|
|
11364
11546
|
(key) => {
|
|
11365
|
-
if (key.name === "escape" || key.name === "left" &&
|
|
11366
|
-
|
|
11547
|
+
if (key.name === "escape" || key.name === "left" && isAuxiliaryModelMode) {
|
|
11548
|
+
closeWithoutSelection();
|
|
11367
11549
|
}
|
|
11368
11550
|
},
|
|
11369
11551
|
{ isActive: true }
|
|
@@ -11388,6 +11570,7 @@ function ModelDialog({
|
|
|
11388
11570
|
}, [highlightedValue, preferredKey, availableModelEntries]);
|
|
11389
11571
|
const handleSelect = (0, import_react34.useCallback)(
|
|
11390
11572
|
async (selected) => {
|
|
11573
|
+
if (selectionInFlightRef.current || selectionCommittedRef.current) return;
|
|
11391
11574
|
setErrorMessage(null);
|
|
11392
11575
|
const selectedEntry = availableModelEntries.find(
|
|
11393
11576
|
({ authType: t2, model, isRuntime: isRuntime2, snapshotId }) => {
|
|
@@ -11420,13 +11603,10 @@ function ModelDialog({
|
|
|
11420
11603
|
const scope = resolvePersistScope(settings, persistScope);
|
|
11421
11604
|
settings.setValue(scope, "voiceModel", voiceModel);
|
|
11422
11605
|
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11423
|
-
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
},
|
|
11428
|
-
Date.now()
|
|
11429
|
-
);
|
|
11606
|
+
reportAuxiliaryModelSelection({
|
|
11607
|
+
type: "success",
|
|
11608
|
+
text: `${t("Voice Model")}: ${voiceModel}${scopeSuffix}`
|
|
11609
|
+
});
|
|
11430
11610
|
onClose();
|
|
11431
11611
|
return;
|
|
11432
11612
|
}
|
|
@@ -11437,13 +11617,10 @@ function ModelDialog({
|
|
|
11437
11617
|
settings.setValue(scope, "fastModel", fastModel);
|
|
11438
11618
|
config?.setFastModel(fastModel);
|
|
11439
11619
|
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11440
|
-
|
|
11441
|
-
|
|
11442
|
-
|
|
11443
|
-
|
|
11444
|
-
},
|
|
11445
|
-
Date.now()
|
|
11446
|
-
);
|
|
11620
|
+
reportAuxiliaryModelSelection({
|
|
11621
|
+
type: "success",
|
|
11622
|
+
text: `${t("Fast Model")}: ${fastModel}${scopeSuffix}`
|
|
11623
|
+
});
|
|
11447
11624
|
onClose();
|
|
11448
11625
|
return;
|
|
11449
11626
|
}
|
|
@@ -11465,13 +11642,10 @@ function ModelDialog({
|
|
|
11465
11642
|
const visionWarning = selectedEntry && !isImageCapable(selectedEntry.model) ? `
|
|
11466
11643
|
${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge may fail on images.", { model: visionModelDisplay })}` : "";
|
|
11467
11644
|
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11468
|
-
|
|
11469
|
-
|
|
11470
|
-
|
|
11471
|
-
|
|
11472
|
-
},
|
|
11473
|
-
Date.now()
|
|
11474
|
-
);
|
|
11645
|
+
reportAuxiliaryModelSelection({
|
|
11646
|
+
type: "success",
|
|
11647
|
+
text: `${t("Vision Model")}: ${visionModelDisplay}${scopeSuffix}${visionWarning}`
|
|
11648
|
+
});
|
|
11475
11649
|
onClose();
|
|
11476
11650
|
return;
|
|
11477
11651
|
}
|
|
@@ -11485,13 +11659,10 @@ ${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge ma
|
|
|
11485
11659
|
settings.setValue(scope, "compactionModel", compactionModelId);
|
|
11486
11660
|
config.setCompactionModel(compactionModelId);
|
|
11487
11661
|
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11488
|
-
|
|
11489
|
-
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
},
|
|
11493
|
-
Date.now()
|
|
11494
|
-
);
|
|
11662
|
+
reportAuxiliaryModelSelection({
|
|
11663
|
+
type: "success",
|
|
11664
|
+
text: `${t("Compaction Model")}: ${compactionModelId}${scopeSuffix}`
|
|
11665
|
+
});
|
|
11495
11666
|
onClose();
|
|
11496
11667
|
return;
|
|
11497
11668
|
}
|
|
@@ -11513,15 +11684,17 @@ ${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge ma
|
|
|
11513
11684
|
}
|
|
11514
11685
|
const scope = resolvePersistScope(settings, persistScope);
|
|
11515
11686
|
settings.setValue(scope, "imageModel", imageModel);
|
|
11516
|
-
|
|
11687
|
+
selectionInFlightRef.current = true;
|
|
11688
|
+
try {
|
|
11689
|
+
await config.setImageModel(imageModel);
|
|
11690
|
+
} finally {
|
|
11691
|
+
selectionInFlightRef.current = false;
|
|
11692
|
+
}
|
|
11517
11693
|
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11518
|
-
|
|
11519
|
-
|
|
11520
|
-
|
|
11521
|
-
|
|
11522
|
-
},
|
|
11523
|
-
Date.now()
|
|
11524
|
-
);
|
|
11694
|
+
reportAuxiliaryModelSelection({
|
|
11695
|
+
type: "success",
|
|
11696
|
+
text: `${t("Image Model")}: ${imageModelDisplay}${scopeSuffix}`
|
|
11697
|
+
});
|
|
11525
11698
|
onClose();
|
|
11526
11699
|
return;
|
|
11527
11700
|
}
|
|
@@ -11564,10 +11737,16 @@ ${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge ma
|
|
|
11564
11737
|
modelId = parsed.modelId;
|
|
11565
11738
|
selectedBaseUrl = parsed.baseUrl;
|
|
11566
11739
|
}
|
|
11567
|
-
|
|
11568
|
-
|
|
11569
|
-
|
|
11570
|
-
|
|
11740
|
+
selectionInFlightRef.current = true;
|
|
11741
|
+
try {
|
|
11742
|
+
await config.switchModel(selectedAuthType, modelId, {
|
|
11743
|
+
...selectedAuthType !== authType && selectedAuthType === "qwen-oauth" /* QWEN_OAUTH */ ? { requireCachedCredentials: true } : {},
|
|
11744
|
+
baseUrl: selectedBaseUrl
|
|
11745
|
+
});
|
|
11746
|
+
selectionCommittedRef.current = true;
|
|
11747
|
+
} finally {
|
|
11748
|
+
selectionInFlightRef.current = false;
|
|
11749
|
+
}
|
|
11571
11750
|
if (!isRuntime) {
|
|
11572
11751
|
const event = new ModelSlashCommandEvent(modelId);
|
|
11573
11752
|
logModelSlashCommand(config, event);
|
|
@@ -11584,22 +11763,34 @@ ${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge ma
|
|
|
11584
11763
|
${baseErrorMessage}`);
|
|
11585
11764
|
return;
|
|
11586
11765
|
}
|
|
11587
|
-
|
|
11588
|
-
|
|
11589
|
-
|
|
11590
|
-
|
|
11591
|
-
|
|
11592
|
-
|
|
11593
|
-
|
|
11594
|
-
|
|
11595
|
-
|
|
11596
|
-
|
|
11597
|
-
|
|
11598
|
-
|
|
11599
|
-
|
|
11600
|
-
|
|
11601
|
-
|
|
11602
|
-
|
|
11766
|
+
try {
|
|
11767
|
+
handleModelSwitchSuccess({
|
|
11768
|
+
config,
|
|
11769
|
+
settings,
|
|
11770
|
+
uiState,
|
|
11771
|
+
after,
|
|
11772
|
+
effectiveAuthType,
|
|
11773
|
+
effectiveModelId,
|
|
11774
|
+
// Persist the selected provider's baseUrl so the right provider is
|
|
11775
|
+
// restored next launch when several share the same id. Pair it with the
|
|
11776
|
+
// same resolved config that effectiveModelId comes from (`after`) so the
|
|
11777
|
+
// persisted (model.name, model.baseUrl) stays consistent even if
|
|
11778
|
+
// switchModel transforms the id; fall back to the picker entry's
|
|
11779
|
+
// baseUrl. Runtime models are keyed by snapshot id, so no disambiguator.
|
|
11780
|
+
effectiveBaseUrl: isRuntime ? void 0 : after?.baseUrl ?? selectedEntry?.model.baseUrl,
|
|
11781
|
+
isRuntime,
|
|
11782
|
+
persistScope
|
|
11783
|
+
});
|
|
11784
|
+
} catch (e) {
|
|
11785
|
+
const errorMessage2 = e instanceof Error ? e.message : String(e);
|
|
11786
|
+
setErrorMessage(
|
|
11787
|
+
`${t("Model switched, but the selection could not be saved.")}
|
|
11788
|
+
|
|
11789
|
+
${errorMessage2}`
|
|
11790
|
+
);
|
|
11791
|
+
return;
|
|
11792
|
+
}
|
|
11793
|
+
closeLatchRef.current = true;
|
|
11603
11794
|
onClose();
|
|
11604
11795
|
},
|
|
11605
11796
|
[
|
|
@@ -11615,7 +11806,8 @@ ${baseErrorMessage}`);
|
|
|
11615
11806
|
isCompactionModelMode,
|
|
11616
11807
|
isImageModelMode,
|
|
11617
11808
|
availableModelEntries,
|
|
11618
|
-
persistScope
|
|
11809
|
+
persistScope,
|
|
11810
|
+
reportAuxiliaryModelSelection
|
|
11619
11811
|
]
|
|
11620
11812
|
);
|
|
11621
11813
|
const hasModels = MODEL_OPTIONS.length > 0;
|
|
@@ -17537,6 +17729,7 @@ var PluginDetailView = /* @__PURE__ */ __name(({
|
|
|
17537
17729
|
isFavorite ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Text, { color: theme.status.warning, children: " \u2605" }) : null
|
|
17538
17730
|
] }),
|
|
17539
17731
|
ext.installMetadata && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(InfoRow, { label: t("Source:"), children: redactUrlCredentials(ext.installMetadata.source) }),
|
|
17732
|
+
ext.installMetadata?.originSource && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(InfoRow, { label: t("Origin:"), children: ext.installMetadata.originSource }),
|
|
17540
17733
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(InfoRow, { label: t("Components:"), children: componentSummary(ext) })
|
|
17541
17734
|
] }),
|
|
17542
17735
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(Box_default, { flexDirection: "column", children: [
|
|
@@ -31701,7 +31894,7 @@ var PasteProgressBar = /* @__PURE__ */ __name(({
|
|
|
31701
31894
|
label
|
|
31702
31895
|
] });
|
|
31703
31896
|
}, "PasteProgressBar");
|
|
31704
|
-
var Footer = /* @__PURE__ */ __name(() => {
|
|
31897
|
+
var Footer = /* @__PURE__ */ __name(({ containerRef }) => {
|
|
31705
31898
|
const uiState = useUIState();
|
|
31706
31899
|
const config = useConfig();
|
|
31707
31900
|
const settings = useSettings();
|
|
@@ -31793,6 +31986,7 @@ var Footer = /* @__PURE__ */ __name(() => {
|
|
|
31793
31986
|
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
31794
31987
|
Box_default,
|
|
31795
31988
|
{
|
|
31989
|
+
ref: containerRef,
|
|
31796
31990
|
flexDirection: isNarrow ? "column" : "row",
|
|
31797
31991
|
justifyContent: isNarrow ? "flex-start" : "space-between",
|
|
31798
31992
|
width: "100%",
|
|
@@ -31976,7 +32170,7 @@ var KeyboardShortcuts = /* @__PURE__ */ __name(() => {
|
|
|
31976
32170
|
|
|
31977
32171
|
// packages/cli/src/ui/components/Composer.tsx
|
|
31978
32172
|
var import_jsx_runtime119 = __toESM(require_jsx_runtime(), 1);
|
|
31979
|
-
var Composer = /* @__PURE__ */ __name(() => {
|
|
32173
|
+
var Composer = /* @__PURE__ */ __name(({ footerRef }) => {
|
|
31980
32174
|
const config = useConfig();
|
|
31981
32175
|
const isScreenReaderEnabled = use_is_screen_reader_enabled_default();
|
|
31982
32176
|
const uiState = useUIState();
|
|
@@ -32056,7 +32250,7 @@ var Composer = /* @__PURE__ */ __name(() => {
|
|
|
32056
32250
|
clipboardUnavailableShownRef
|
|
32057
32251
|
}
|
|
32058
32252
|
),
|
|
32059
|
-
uiState.isInputActive && !showSuggestions && (showShortcuts ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(KeyboardShortcuts, {}) : !isScreenReaderEnabled && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Footer, {}))
|
|
32253
|
+
uiState.isInputActive && !showSuggestions && (showShortcuts ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(KeyboardShortcuts, {}) : !isScreenReaderEnabled && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Footer, { containerRef: footerRef }))
|
|
32060
32254
|
] });
|
|
32061
32255
|
}, "Composer");
|
|
32062
32256
|
|
|
@@ -33400,6 +33594,7 @@ var AgentRow = /* @__PURE__ */ __name(({ entry, now, selected = false, tree }) =
|
|
|
33400
33594
|
var import_jsx_runtime130 = __toESM(require_jsx_runtime(), 1);
|
|
33401
33595
|
var DefaultAppLayout = /* @__PURE__ */ __name(() => {
|
|
33402
33596
|
const uiState = useUIState();
|
|
33597
|
+
const footerRef = (0, import_react115.useRef)(null);
|
|
33403
33598
|
const { refreshStatic } = useUIActions();
|
|
33404
33599
|
const { activeView, agents } = useAgentViewState();
|
|
33405
33600
|
const { columns: terminalWidth } = useTerminalSize();
|
|
@@ -33432,7 +33627,7 @@ var DefaultAppLayout = /* @__PURE__ */ __name(() => {
|
|
|
33432
33627
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ExitWarning, {})
|
|
33433
33628
|
] })
|
|
33434
33629
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
|
|
33435
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(MainContent, {}),
|
|
33630
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(MainContent, { footerRef }),
|
|
33436
33631
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(Box_default, { flexDirection: "column", ref: uiState.mainControlsRef, children: [
|
|
33437
33632
|
!uiState.dialogsVisible && uiState.updateInfo && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(UpdateNotification, { message: uiState.updateInfo.message }),
|
|
33438
33633
|
uiState.dialogsVisible ? /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
@@ -33467,7 +33662,7 @@ var DefaultAppLayout = /* @__PURE__ */ __name(() => {
|
|
|
33467
33662
|
containerWidth: uiState.mainAreaWidth
|
|
33468
33663
|
}
|
|
33469
33664
|
) }),
|
|
33470
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Composer, {})
|
|
33665
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Composer, { footerRef })
|
|
33471
33666
|
] }),
|
|
33472
33667
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ExitWarning, {}),
|
|
33473
33668
|
!uiState.dialogsVisible && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
@@ -33844,7 +34039,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33844
34039
|
__name(installTerminalResizeReflow, "installTerminalResizeReflow");
|
|
33845
34040
|
|
|
33846
34041
|
// packages/cli/src/ui/AppContainer.tsx
|
|
33847
|
-
import
|
|
34042
|
+
import process18 from "node:process";
|
|
33848
34043
|
|
|
33849
34044
|
// packages/cli/src/ui/hooks/useMemoryMonitor.ts
|
|
33850
34045
|
init_esbuild_shims();
|
|
@@ -33955,25 +34150,28 @@ __name(useWakeRepaint, "useWakeRepaint");
|
|
|
33955
34150
|
init_esbuild_shims();
|
|
33956
34151
|
var import_react119 = __toESM(require_react(), 1);
|
|
33957
34152
|
import process13 from "node:process";
|
|
33958
|
-
var useThemeCommand = /* @__PURE__ */ __name((loadedSettings, setThemeError, addItem, initialThemeError) => {
|
|
34153
|
+
var useThemeCommand = /* @__PURE__ */ __name((loadedSettings, setThemeError, addItem, initialThemeError, config) => {
|
|
33959
34154
|
const [isThemeDialogOpen, setIsThemeDialogOpen] = (0, import_react119.useState)(!!initialThemeError);
|
|
33960
34155
|
const [themeBeforeDialogOpen, setThemeBeforeDialogOpen] = (0, import_react119.useState)(themeManager.getActiveTheme().name);
|
|
33961
34156
|
const openThemeDialog = (0, import_react119.useCallback)(() => {
|
|
33962
34157
|
if (process13.env["NO_COLOR"]) {
|
|
33963
|
-
|
|
33964
|
-
|
|
33965
|
-
|
|
33966
|
-
|
|
33967
|
-
|
|
33968
|
-
|
|
33969
|
-
|
|
33970
|
-
|
|
33971
|
-
|
|
34158
|
+
const feedbackItem = {
|
|
34159
|
+
type: "info" /* INFO */,
|
|
34160
|
+
text: t(
|
|
34161
|
+
"Theme configuration unavailable due to NO_COLOR env variable."
|
|
34162
|
+
)
|
|
34163
|
+
};
|
|
34164
|
+
addItem(feedbackItem, Date.now());
|
|
34165
|
+
config?.getChatRecordingService?.()?.recordSlashCommand({
|
|
34166
|
+
phase: "result",
|
|
34167
|
+
rawCommand: "/theme",
|
|
34168
|
+
outputHistoryItems: [feedbackItem]
|
|
34169
|
+
});
|
|
33972
34170
|
return;
|
|
33973
34171
|
}
|
|
33974
34172
|
setThemeBeforeDialogOpen(themeManager.getActiveTheme().name);
|
|
33975
34173
|
setIsThemeDialogOpen(true);
|
|
33976
|
-
}, [addItem]);
|
|
34174
|
+
}, [addItem, config]);
|
|
33977
34175
|
const applyTheme = (0, import_react119.useCallback)(
|
|
33978
34176
|
(themeName) => {
|
|
33979
34177
|
if (!themeManager.setActiveTheme(themeName)) {
|
|
@@ -34160,7 +34358,7 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
|
|
|
34160
34358
|
// packages/cli/src/ui/hooks/useEditorSettings.ts
|
|
34161
34359
|
init_esbuild_shims();
|
|
34162
34360
|
var import_react121 = __toESM(require_react(), 1);
|
|
34163
|
-
var useEditorSettings = /* @__PURE__ */ __name((loadedSettings, setEditorError, addItem) => {
|
|
34361
|
+
var useEditorSettings = /* @__PURE__ */ __name((loadedSettings, setEditorError, addItem, config) => {
|
|
34164
34362
|
const [isEditorDialogOpen, setIsEditorDialogOpen] = (0, import_react121.useState)(false);
|
|
34165
34363
|
const openEditorDialog = (0, import_react121.useCallback)(() => {
|
|
34166
34364
|
setIsEditorDialogOpen(true);
|
|
@@ -34172,20 +34370,23 @@ var useEditorSettings = /* @__PURE__ */ __name((loadedSettings, setEditorError,
|
|
|
34172
34370
|
}
|
|
34173
34371
|
try {
|
|
34174
34372
|
loadedSettings.setValue(scope, "general.preferredEditor", editorType);
|
|
34175
|
-
|
|
34176
|
-
|
|
34177
|
-
|
|
34178
|
-
|
|
34179
|
-
|
|
34180
|
-
|
|
34181
|
-
|
|
34373
|
+
const feedbackItem = {
|
|
34374
|
+
type: "info" /* INFO */,
|
|
34375
|
+
text: `Editor preference ${editorType ? `set to "${editorType}"` : "cleared"} in ${scope} settings.`
|
|
34376
|
+
};
|
|
34377
|
+
addItem(feedbackItem, Date.now());
|
|
34378
|
+
config?.getChatRecordingService?.()?.recordSlashCommand({
|
|
34379
|
+
phase: "result",
|
|
34380
|
+
rawCommand: "/editor",
|
|
34381
|
+
outputHistoryItems: [feedbackItem]
|
|
34382
|
+
});
|
|
34182
34383
|
setEditorError(null);
|
|
34183
34384
|
setIsEditorDialogOpen(false);
|
|
34184
34385
|
} catch (error) {
|
|
34185
34386
|
setEditorError(`Failed to set editor preference: ${error}`);
|
|
34186
34387
|
}
|
|
34187
34388
|
},
|
|
34188
|
-
[loadedSettings, setEditorError, addItem]
|
|
34389
|
+
[loadedSettings, setEditorError, addItem, config]
|
|
34189
34390
|
);
|
|
34190
34391
|
const exitEditorDialog = (0, import_react121.useCallback)(() => {
|
|
34191
34392
|
setIsEditorDialogOpen(false);
|
|
@@ -34345,36 +34546,23 @@ var useEffortCommand = /* @__PURE__ */ __name((loadedSettings, config, addItem)
|
|
|
34345
34546
|
if (!effort) {
|
|
34346
34547
|
return;
|
|
34347
34548
|
}
|
|
34348
|
-
|
|
34549
|
+
applyReasoningEffort(config, effort);
|
|
34349
34550
|
loadedSettings.setValue(
|
|
34350
34551
|
getPersistScopeForModelSelection(loadedSettings),
|
|
34351
34552
|
"model.reasoningEffort",
|
|
34352
34553
|
effort
|
|
34353
34554
|
);
|
|
34354
34555
|
if (addItem) {
|
|
34355
|
-
|
|
34356
|
-
|
|
34357
|
-
|
|
34358
|
-
|
|
34359
|
-
|
|
34360
|
-
|
|
34361
|
-
|
|
34362
|
-
|
|
34363
|
-
|
|
34364
|
-
|
|
34365
|
-
);
|
|
34366
|
-
} else {
|
|
34367
|
-
addItem(
|
|
34368
|
-
{
|
|
34369
|
-
type: "info" /* INFO */,
|
|
34370
|
-
text: t(
|
|
34371
|
-
"Reasoning effort: {{tier}} (requested; the effective tier depends on the active provider/model).",
|
|
34372
|
-
{ tier: effort }
|
|
34373
|
-
)
|
|
34374
|
-
},
|
|
34375
|
-
Date.now()
|
|
34376
|
-
);
|
|
34377
|
-
}
|
|
34556
|
+
const feedbackItem = {
|
|
34557
|
+
type: "info" /* INFO */,
|
|
34558
|
+
text: formatEffortChangeMessage(config, effort)
|
|
34559
|
+
};
|
|
34560
|
+
addItem(feedbackItem, Date.now());
|
|
34561
|
+
config.getChatRecordingService?.()?.recordSlashCommand({
|
|
34562
|
+
phase: "result",
|
|
34563
|
+
rawCommand: "/effort",
|
|
34564
|
+
outputHistoryItems: [feedbackItem]
|
|
34565
|
+
});
|
|
34378
34566
|
}
|
|
34379
34567
|
} finally {
|
|
34380
34568
|
setIsEffortDialogOpen(false);
|
|
@@ -34919,6 +35107,7 @@ __name(useDeleteCommand, "useDeleteCommand");
|
|
|
34919
35107
|
// packages/cli/src/ui/hooks/slashCommandProcessor.ts
|
|
34920
35108
|
init_esbuild_shims();
|
|
34921
35109
|
var import_react129 = __toESM(require_react(), 1);
|
|
35110
|
+
import process15 from "node:process";
|
|
34922
35111
|
var debugLogger34 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
|
|
34923
35112
|
function hasUserPromptExpansionHooks(config) {
|
|
34924
35113
|
return !!config && !config.getDisableAllHooks?.() && (config.hasHooksForEvent?.("UserPromptExpansion") ?? false);
|
|
@@ -34944,7 +35133,42 @@ var SLASH_COMMANDS_SKIP_RECORDING = /* @__PURE__ */ new Set([
|
|
|
34944
35133
|
"btw",
|
|
34945
35134
|
"history"
|
|
34946
35135
|
]);
|
|
35136
|
+
var SLASH_COMMAND_ROOTS_HIDE_INVOCATION = /* @__PURE__ */ new Set([
|
|
35137
|
+
"auth",
|
|
35138
|
+
"diff",
|
|
35139
|
+
"editor",
|
|
35140
|
+
"help",
|
|
35141
|
+
"settings",
|
|
35142
|
+
"status",
|
|
35143
|
+
"stats",
|
|
35144
|
+
"theme"
|
|
35145
|
+
]);
|
|
35146
|
+
var BARE_SLASH_COMMANDS_HIDE_INVOCATION = /* @__PURE__ */ new Set([
|
|
35147
|
+
"effort",
|
|
35148
|
+
"model",
|
|
35149
|
+
"statusline"
|
|
35150
|
+
]);
|
|
34947
35151
|
var MAX_EXTENSION_CONTENT_REFRESH_PASSES = 5;
|
|
35152
|
+
function shouldHideSlashCommandInvocation(command, canonicalPath, args) {
|
|
35153
|
+
if (command?.kind !== "built-in" /* BUILT_IN */) {
|
|
35154
|
+
return false;
|
|
35155
|
+
}
|
|
35156
|
+
if (canonicalPath.length === 1 && SLASH_COMMAND_ROOTS_HIDE_INVOCATION.has(canonicalPath[0] ?? "")) {
|
|
35157
|
+
if (canonicalPath[0] === "theme" && process15.env["NO_COLOR"]) {
|
|
35158
|
+
return false;
|
|
35159
|
+
}
|
|
35160
|
+
return true;
|
|
35161
|
+
}
|
|
35162
|
+
const path15 = canonicalPath.join(" ");
|
|
35163
|
+
if (BARE_SLASH_COMMANDS_HIDE_INVOCATION.has(path15)) {
|
|
35164
|
+
if (path15 === "model") {
|
|
35165
|
+
return isPickerOnlyModelInvocation(args);
|
|
35166
|
+
}
|
|
35167
|
+
return args.trim() === "";
|
|
35168
|
+
}
|
|
35169
|
+
return false;
|
|
35170
|
+
}
|
|
35171
|
+
__name(shouldHideSlashCommandInvocation, "shouldHideSlashCommandInvocation");
|
|
34948
35172
|
function getSkillCommandName(command) {
|
|
34949
35173
|
return command.skillDetail?.name ?? command.name;
|
|
34950
35174
|
}
|
|
@@ -35497,6 +35721,11 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35497
35721
|
if (trimmed.startsWith("/") && hasSlashCommandPathSeparator(trimmed)) {
|
|
35498
35722
|
return false;
|
|
35499
35723
|
}
|
|
35724
|
+
const {
|
|
35725
|
+
commandToExecute,
|
|
35726
|
+
args,
|
|
35727
|
+
canonicalPath: resolvedCommandPath
|
|
35728
|
+
} = parseSlashCommand(trimmed, commands);
|
|
35500
35729
|
const recordedItems = [];
|
|
35501
35730
|
const recordItem = /* @__PURE__ */ __name((item) => {
|
|
35502
35731
|
recordedItems.push(item);
|
|
@@ -35511,19 +35740,29 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35511
35740
|
const userMessageTimestamp = Date.now();
|
|
35512
35741
|
let invocationItemId = existingInvocationItemId;
|
|
35513
35742
|
let invocationSentToModel = false;
|
|
35514
|
-
|
|
35743
|
+
let hideInvocation = isBtwCommand(trimmed) || shouldHideSlashCommandInvocation(
|
|
35744
|
+
commandToExecute,
|
|
35745
|
+
resolvedCommandPath,
|
|
35746
|
+
args
|
|
35747
|
+
);
|
|
35748
|
+
if (!hideInvocation && invocationItemId === void 0) {
|
|
35515
35749
|
invocationItemId = addItemWithRecording(
|
|
35516
35750
|
{ type: "user" /* USER */, text: trimmed, sentToModel: false },
|
|
35517
35751
|
userMessageTimestamp
|
|
35518
35752
|
);
|
|
35519
35753
|
}
|
|
35754
|
+
const revealHiddenInvocation = /* @__PURE__ */ __name(() => {
|
|
35755
|
+
if (resolvedCommandPath.join(" ") !== "model" || !hideInvocation || invocationItemId !== void 0) {
|
|
35756
|
+
return;
|
|
35757
|
+
}
|
|
35758
|
+
hideInvocation = false;
|
|
35759
|
+
invocationItemId = addItemWithRecording(
|
|
35760
|
+
{ type: "user" /* USER */, text: trimmed, sentToModel: false },
|
|
35761
|
+
userMessageTimestamp
|
|
35762
|
+
);
|
|
35763
|
+
}, "revealHiddenInvocation");
|
|
35520
35764
|
let hasError = false;
|
|
35521
35765
|
let delegatedToRecursiveInvocation = false;
|
|
35522
|
-
const {
|
|
35523
|
-
commandToExecute,
|
|
35524
|
-
args,
|
|
35525
|
-
canonicalPath: resolvedCommandPath
|
|
35526
|
-
} = parseSlashCommand(trimmed, commands);
|
|
35527
35766
|
const subcommand = resolvedCommandPath.length > 1 ? resolvedCommandPath.slice(1).join(" ") : void 0;
|
|
35528
35767
|
const isSkillCommand = commandToExecute?.kind === "skill" /* SKILL */;
|
|
35529
35768
|
let skillInvocationRecorded = false;
|
|
@@ -35669,24 +35908,22 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35669
35908
|
toolArgs: result.toolArgs
|
|
35670
35909
|
};
|
|
35671
35910
|
case "message":
|
|
35911
|
+
revealHiddenInvocation();
|
|
35672
35912
|
if (result.messageType === "info") {
|
|
35673
|
-
|
|
35674
|
-
type: "info" /* INFO */,
|
|
35675
|
-
|
|
35676
|
-
|
|
35677
|
-
});
|
|
35913
|
+
addItemWithRecording(
|
|
35914
|
+
{ type: "info" /* INFO */, text: result.content },
|
|
35915
|
+
Date.now()
|
|
35916
|
+
);
|
|
35678
35917
|
} else if (result.messageType === "warning") {
|
|
35679
|
-
|
|
35680
|
-
type: "warning" /* WARNING */,
|
|
35681
|
-
|
|
35682
|
-
|
|
35683
|
-
});
|
|
35918
|
+
addItemWithRecording(
|
|
35919
|
+
{ type: "warning" /* WARNING */, text: result.content },
|
|
35920
|
+
Date.now()
|
|
35921
|
+
);
|
|
35684
35922
|
} else {
|
|
35685
|
-
|
|
35686
|
-
type: "error" /* ERROR */,
|
|
35687
|
-
|
|
35688
|
-
|
|
35689
|
-
});
|
|
35923
|
+
addItemWithRecording(
|
|
35924
|
+
{ type: "error" /* ERROR */, text: result.content },
|
|
35925
|
+
Date.now()
|
|
35926
|
+
);
|
|
35690
35927
|
}
|
|
35691
35928
|
return { type: "handled" };
|
|
35692
35929
|
case "goal_control": {
|
|
@@ -35884,8 +36121,8 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35884
36121
|
output.getAdditionalContext()
|
|
35885
36122
|
);
|
|
35886
36123
|
}
|
|
36124
|
+
invocationSentToModel = true;
|
|
35887
36125
|
if (invocationItemId !== void 0) {
|
|
35888
|
-
invocationSentToModel = true;
|
|
35889
36126
|
debugLogger34.debug(
|
|
35890
36127
|
`Marked slash command invocation as model-sent: /${resolvedCommandPath.join(
|
|
35891
36128
|
" "
|
|
@@ -36024,7 +36261,8 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
|
|
|
36024
36261
|
chatRecorder?.recordSlashCommand({
|
|
36025
36262
|
phase: "invocation",
|
|
36026
36263
|
rawCommand: trimmed,
|
|
36027
|
-
sentToModel: invocationSentToModel
|
|
36264
|
+
sentToModel: invocationSentToModel,
|
|
36265
|
+
hiddenInvocation: hideInvocation
|
|
36028
36266
|
});
|
|
36029
36267
|
const outputItems = recordedItems.filter((item) => item.type !== "user").map(serializeHistoryItemForRecording);
|
|
36030
36268
|
chatRecorder?.recordSlashCommand({
|
|
@@ -36157,10 +36395,22 @@ function writeTerminalTitle(write, title) {
|
|
|
36157
36395
|
}
|
|
36158
36396
|
}
|
|
36159
36397
|
__name(writeTerminalTitle, "writeTerminalTitle");
|
|
36160
|
-
function formatSessionWindowTitle(sessionName, folderName) {
|
|
36161
|
-
|
|
36398
|
+
function formatSessionWindowTitle(sessionName, folderName, statusPrefix = "") {
|
|
36399
|
+
const base = sessionName ? sanitizeWindowTitle(sessionName) : computeWindowTitle(folderName);
|
|
36400
|
+
return sanitizeWindowTitle(statusPrefix + base);
|
|
36162
36401
|
}
|
|
36163
36402
|
__name(formatSessionWindowTitle, "formatSessionWindowTitle");
|
|
36403
|
+
function titleStatusPrefix(streamingState) {
|
|
36404
|
+
switch (streamingState) {
|
|
36405
|
+
case "responding" /* Responding */:
|
|
36406
|
+
return `${ICON.CIRCLE_LEFT_HALF} `;
|
|
36407
|
+
case "waiting_for_confirmation" /* WaitingForConfirmation */:
|
|
36408
|
+
return `${ICON.SPARKLE} `;
|
|
36409
|
+
default:
|
|
36410
|
+
return "";
|
|
36411
|
+
}
|
|
36412
|
+
}
|
|
36413
|
+
__name(titleStatusPrefix, "titleStatusPrefix");
|
|
36164
36414
|
|
|
36165
36415
|
// packages/cli/src/ui/hooks/useLogger.ts
|
|
36166
36416
|
init_esbuild_shims();
|
|
@@ -36802,7 +37052,7 @@ __name(mapToDisplay, "mapToDisplay");
|
|
|
36802
37052
|
// packages/cli/src/ui/hooks/useGeminiStream.ts
|
|
36803
37053
|
import { promises as fs17 } from "node:fs";
|
|
36804
37054
|
import path12 from "node:path";
|
|
36805
|
-
import
|
|
37055
|
+
import process16 from "node:process";
|
|
36806
37056
|
|
|
36807
37057
|
// packages/cli/src/ui/hooks/useMessageQueue.ts
|
|
36808
37058
|
init_esbuild_shims();
|
|
@@ -40265,7 +40515,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40265
40515
|
const summary = scheduler.getExitSummary();
|
|
40266
40516
|
scheduler.stop();
|
|
40267
40517
|
if (summary) {
|
|
40268
|
-
|
|
40518
|
+
process16.stderr.write(summary + "\n");
|
|
40269
40519
|
}
|
|
40270
40520
|
};
|
|
40271
40521
|
}, [config, getAutonomousLoopTickResolver, isConfigInitialized]);
|
|
@@ -42476,7 +42726,7 @@ __name(useTerminalProgress, "useTerminalProgress");
|
|
|
42476
42726
|
// packages/cli/src/ui/hooks/useFolderTrust.ts
|
|
42477
42727
|
init_esbuild_shims();
|
|
42478
42728
|
var import_react143 = __toESM(require_react(), 1);
|
|
42479
|
-
import * as
|
|
42729
|
+
import * as process17 from "node:process";
|
|
42480
42730
|
var useFolderTrust = /* @__PURE__ */ __name((settings, onTrustChange) => {
|
|
42481
42731
|
const [isTrusted, setIsTrusted] = (0, import_react143.useState)(void 0);
|
|
42482
42732
|
const [isFolderTrustDialogOpen, setIsFolderTrustDialogOpen] = (0, import_react143.useState)(false);
|
|
@@ -42491,7 +42741,7 @@ var useFolderTrust = /* @__PURE__ */ __name((settings, onTrustChange) => {
|
|
|
42491
42741
|
const handleFolderTrustSelect = (0, import_react143.useCallback)(
|
|
42492
42742
|
(choice) => {
|
|
42493
42743
|
const trustedFolders = loadTrustedFolders();
|
|
42494
|
-
const cwd3 =
|
|
42744
|
+
const cwd3 = process17.cwd();
|
|
42495
42745
|
let trustLevel;
|
|
42496
42746
|
const wasTrusted = isTrusted ?? true;
|
|
42497
42747
|
switch (choice) {
|
|
@@ -44105,7 +44355,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44105
44355
|
const { stdin, setRawMode } = use_stdin_default();
|
|
44106
44356
|
const { stdout } = use_stdout_default();
|
|
44107
44357
|
const writeRaw = (0, import_react162.useCallback)((data) => {
|
|
44108
|
-
|
|
44358
|
+
process18.stdout.write(data);
|
|
44109
44359
|
}, []);
|
|
44110
44360
|
const terminal = (0, import_react162.useMemo)(
|
|
44111
44361
|
() => buildTerminalNotification(writeRaw),
|
|
@@ -44456,7 +44706,8 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44456
44706
|
settings,
|
|
44457
44707
|
setThemeError,
|
|
44458
44708
|
historyManager.addItem,
|
|
44459
|
-
initializationResult.themeError
|
|
44709
|
+
initializationResult.themeError,
|
|
44710
|
+
config
|
|
44460
44711
|
);
|
|
44461
44712
|
const {
|
|
44462
44713
|
isApprovalModeDialogOpen,
|
|
@@ -44494,7 +44745,12 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44494
44745
|
openEditorDialog,
|
|
44495
44746
|
handleEditorSelect,
|
|
44496
44747
|
exitEditorDialog
|
|
44497
|
-
} = useEditorSettings(
|
|
44748
|
+
} = useEditorSettings(
|
|
44749
|
+
settings,
|
|
44750
|
+
setEditorError,
|
|
44751
|
+
historyManager.addItem,
|
|
44752
|
+
config
|
|
44753
|
+
);
|
|
44498
44754
|
const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
|
|
44499
44755
|
const [isStatusLineDialogOpen, setStatusLineDialogOpen] = (0, import_react162.useState)(false);
|
|
44500
44756
|
const openStatusLineDialog = (0, import_react162.useCallback)(
|
|
@@ -44729,7 +44985,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44729
44985
|
config.getGeminiClient()?.requestShutdown();
|
|
44730
44986
|
setTimeout(async () => {
|
|
44731
44987
|
await runExitCleanup();
|
|
44732
|
-
|
|
44988
|
+
process18.exit(0);
|
|
44733
44989
|
}, 100);
|
|
44734
44990
|
}, "quit"),
|
|
44735
44991
|
setDebugMessage,
|
|
@@ -44913,7 +45169,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44913
45169
|
);
|
|
44914
45170
|
try {
|
|
44915
45171
|
const { memoryContent, fileCount, conditionalRules, projectRoot } = await loadHierarchicalGeminiMemory(
|
|
44916
|
-
|
|
45172
|
+
process18.cwd(),
|
|
44917
45173
|
settings.merged.context?.loadFromIncludeDirectories ? config.getWorkspaceContext().getDirectories() : [],
|
|
44918
45174
|
config.getFileService(),
|
|
44919
45175
|
config.getExtensionContextFilePaths(),
|
|
@@ -46469,20 +46725,25 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
46469
46725
|
lastTitleRef.current = null;
|
|
46470
46726
|
const folderName2 = basename3(config.getTargetDir());
|
|
46471
46727
|
writeTerminalTitle(
|
|
46472
|
-
(value) =>
|
|
46728
|
+
(value) => process18.stdout.write(value),
|
|
46473
46729
|
formatSessionWindowTitle(null, folderName2)
|
|
46474
46730
|
);
|
|
46475
46731
|
}
|
|
46476
46732
|
return;
|
|
46477
46733
|
}
|
|
46478
46734
|
const folderName = basename3(config.getTargetDir());
|
|
46479
|
-
const title = formatSessionWindowTitle(
|
|
46735
|
+
const title = formatSessionWindowTitle(
|
|
46736
|
+
sessionName,
|
|
46737
|
+
folderName,
|
|
46738
|
+
titleStatusPrefix(streamingState)
|
|
46739
|
+
);
|
|
46480
46740
|
if (lastTitleRef.current !== title) {
|
|
46481
46741
|
lastTitleRef.current = title;
|
|
46482
|
-
writeTerminalTitle((value) =>
|
|
46742
|
+
writeTerminalTitle((value) => process18.stdout.write(value), title);
|
|
46483
46743
|
}
|
|
46484
46744
|
}, [
|
|
46485
46745
|
sessionName,
|
|
46746
|
+
streamingState,
|
|
46486
46747
|
settings.merged.ui?.hideWindowTitle,
|
|
46487
46748
|
settings.merged.ui?.showStatusInTitle,
|
|
46488
46749
|
config
|