@qwen-code/qwen-code 0.21.11-preview.0 → 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/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-FVSXOMKP.js → MaxSizedBox-G7QPSZTF.js} +45 -44
- package/chunks/{StandaloneSessionPicker-Q27UAQ3X.js → StandaloneSessionPicker-3CTEPV7S.js} +65 -64
- package/chunks/{acp-startup-profiler-VNTFWYAC.js → acp-startup-profiler-JMJBZDVO.js} +2 -2
- package/chunks/{acpAgent-C6TV2BIU.js → acpAgent-43JURWOW.js} +1107 -285
- package/chunks/{agent-IPODFZTU.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-YX2R6VVM.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-I7XTOGIS.js → chunk-23GFHEM3.js} +4 -4
- package/chunks/{chunk-IIJEYBNH.js → chunk-25OFRBH2.js} +188 -58
- package/chunks/{chunk-E2XBEWAK.js → chunk-2AAFGCWP.js} +650 -129
- package/chunks/{chunk-J6SZID63.js → chunk-2AZMF6G5.js} +2 -2
- package/chunks/{chunk-VVSMEI6C.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-AJ6LQ5A6.js → chunk-3LHYTQ2R.js} +1 -1
- package/chunks/{chunk-LU7RJB2W.js → chunk-3SOTXJNO.js} +8 -8
- package/chunks/{chunk-SKSOLRPK.js → chunk-45HPDU3F.js} +3 -3
- package/chunks/{chunk-OWMAZHIX.js → chunk-47FQVRCO.js} +1 -1
- package/chunks/{chunk-K4QON4BH.js → chunk-4C4QSXE3.js} +23 -23
- package/chunks/{chunk-UMEB4DHF.js → chunk-4EX3DBFH.js} +4 -4
- package/chunks/{chunk-MFDYOYZZ.js → chunk-4MHDNGAV.js} +25 -2
- package/chunks/{chunk-SVY7G3WS.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-UHJ5S7DF.js → chunk-7QE3QFU3.js} +8 -8
- package/chunks/{chunk-WCG5O7IP.js → chunk-7SUQZ7QH.js} +2 -2
- package/chunks/{chunk-CQGGDOR5.js → chunk-AAOONL5N.js} +1 -1
- package/chunks/{chunk-B7SQOICP.js → chunk-AKLY5M2C.js} +4 -4
- package/chunks/{chunk-UVX4Y6IN.js → chunk-AQHNAA7E.js} +1 -1
- package/chunks/{chunk-DVQECPGW.js → chunk-BIXG46YI.js} +12 -12
- package/chunks/{chunk-4TRQPFDP.js → chunk-BJKREW56.js} +6 -8
- package/chunks/{chunk-7S4DYMFG.js → chunk-BNRNVMOT.js} +27 -18
- package/chunks/{chunk-PIA35YOG.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-MTE6R5HF.js → chunk-DEKY5Y7V.js} +3 -3
- package/chunks/{chunk-BCZ2TTSH.js → chunk-DM4C3OX5.js} +1 -1
- package/chunks/{chunk-HDHLWOG5.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-RKCPPZV6.js → chunk-EOBM4T2Z.js} +1 -1
- package/chunks/{chunk-7C7RTJPC.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-UXV3DYVT.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-BO2VRKY2.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-2Z6PYTOK.js → chunk-HMCSRTDY.js} +1 -1
- package/chunks/{chunk-L2AFWWJE.js → chunk-HUE2M6VI.js} +50 -5
- package/chunks/{chunk-F32C6V5B.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-UO2N5QWP.js → chunk-J4EVBAB3.js} +27 -4
- package/chunks/{chunk-ZZCWJWTF.js → chunk-JHMFKJEP.js} +1 -1
- package/chunks/{chunk-Y3NNBNGM.js → chunk-JKEO6OQY.js} +4 -4
- package/chunks/{chunk-6Q5ABMTU.js → chunk-JLYYGKRN.js} +23 -19
- package/chunks/{chunk-HOUK5CR2.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-KHLBIO6M.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-X7XXP7CN.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-VBU76UYP.js → chunk-MCHGE3EC.js} +302 -290
- package/chunks/{chunk-3WOZVMGJ.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-TG3IUQ6M.js → chunk-N3ZWGKXN.js} +4 -4
- package/chunks/{chunk-7MH4J33A.js → chunk-N7NBMAMW.js} +2 -2
- package/chunks/{chunk-EUNWC2VS.js → chunk-NC4O6UE6.js} +2 -2
- package/chunks/{chunk-4P66JPNV.js → chunk-NFSSQDB5.js} +5 -5
- package/chunks/{chunk-FTO3P6PZ.js → chunk-NM3E6GGL.js} +3 -3
- package/chunks/{chunk-FYTHSJDQ.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-X76PVMPQ.js → chunk-OC5SKSNX.js} +3 -3
- package/chunks/{chunk-6S4NCX23.js → chunk-OGQERNHD.js} +3 -3
- package/chunks/{chunk-DA4HRSBW.js → chunk-OPBATTFQ.js} +1 -1
- package/chunks/{chunk-5BRSWOSC.js → chunk-P7KCJGBR.js} +4 -4
- package/chunks/{chunk-TZ3FN4B2.js → chunk-PBYVS6QT.js} +3 -3
- package/chunks/{chunk-VNNWAZSI.js → chunk-QG2IEE2E.js} +3 -3
- package/chunks/{chunk-XGLVQQ6F.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-6WIKTX4C.js → chunk-RUKNJEJO.js} +1 -1
- package/chunks/{chunk-6CONQTS2.js → chunk-RUVZZKDH.js} +1 -1
- package/chunks/{chunk-QUI267ZP.js → chunk-SAQHDAUJ.js} +42 -8
- package/chunks/{chunk-DCGYLIYO.js → chunk-SUTP6CZA.js} +5 -5
- package/chunks/{chunk-HGBUHVFO.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-EV3LZGGK.js → chunk-TKAEODJR.js} +572 -42
- package/chunks/{chunk-NV3F44FL.js → chunk-TNQLAI6I.js} +2 -2
- package/chunks/{chunk-A6PSUNCY.js → chunk-TNS2M7VL.js} +5 -5
- package/chunks/{chunk-ZUIOLZ4V.js → chunk-TTB6GBJ6.js} +8323 -2227
- package/chunks/{chunk-YGT2AUJ7.js → chunk-U2JLICUY.js} +33 -16
- package/chunks/{chunk-PDUIXSYP.js → chunk-U7QUDFPD.js} +7 -7
- package/chunks/{chunk-PWYEWOZM.js → chunk-UEUE6LJX.js} +1 -1
- package/chunks/{chunk-O3VWAZLP.js → chunk-UIZGNLBP.js} +770 -932
- package/chunks/{chunk-V3KCCRKA.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-5C7FDVHB.js → chunk-W2ITCESM.js} +176 -477
- package/chunks/{chunk-7OFX3YZW.js → chunk-W2PNY24B.js} +1 -1
- package/chunks/{chunk-T3FNRMFJ.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-TCRQD7F6.js → chunk-XT6TGJFD.js} +1 -1
- package/chunks/{chunk-PYQADEFD.js → chunk-XTH2OMDS.js} +1 -1
- package/chunks/{chunk-PFWPBYL2.js → chunk-XUMBOJC2.js} +3 -3
- package/chunks/{chunk-P6RBCBBE.js → chunk-YIKMBYMT.js} +3 -3
- package/chunks/{chunk-WOJZWRAZ.js → chunk-YRLW2MSX.js} +1 -1
- package/chunks/{chunk-7WUUNAJP.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-5LGM2YO5.js → computer-use-7TIKEXBX.js} +42 -41
- package/chunks/{config-utils-ULCSRMWD.js → config-utils-6MVJ54TY.js} +6 -6
- package/chunks/{contextCommand-JT44ADUD.js → contextCommand-5QKI7MRY.js} +44 -43
- package/chunks/{core-runtime-XHEJM2VB.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-UQBDJF5G.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-LUMB46CL.js → daemon-trust-policy-monitor-OSGGKJXT.js} +49 -48
- package/chunks/{de-LIW4XVLN.js → de-UBEBKG6V.js} +2 -1
- package/chunks/{deferred-core-runtime-BFB6YRTZ.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-GPULMO2H.js → earlyInputCapture-ER4HGLJN.js} +43 -42
- package/chunks/{edit-XYMQNMWU.js → edit-B3MT7O53.js} +42 -41
- package/chunks/{en-SY5GTIGX.js → en-X6YV7GME.js} +2 -1
- package/chunks/{enter-worktree-TIASENJP.js → enter-worktree-WVIYVSDJ.js} +42 -41
- package/chunks/{enterPlanMode-K6LTIGWM.js → enterPlanMode-DDCIM6HA.js} +42 -41
- package/chunks/{environment-3XX7LUMG.js → environment-LITGMOUP.js} +45 -44
- package/chunks/{errors-VTFZ6M4W.js → errors-E5CIOR2I.js} +44 -43
- package/chunks/{exit-worktree-IBKPEHUJ.js → exit-worktree-NQ2A6URE.js} +42 -41
- package/chunks/exitPlanMode-YXSWN4D3.js +85 -0
- package/chunks/{fast-path-QOBSDLA6.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-OCRXJUWF.js → gemini-4YPO4ADY.js} +88 -87
- package/chunks/{geminiContentGenerator-VHSPCS6F.js → geminiContentGenerator-GMSVVXOU.js} +6 -6
- package/chunks/{glob-BVX4L3CM.js → glob-3Y3VHLM2.js} +42 -41
- package/chunks/{goal-tools-SWNB6GP4.js → goal-tools-JDK2SNMV.js} +4 -4
- package/chunks/{grep-CJSUX5NJ.js → grep-VUHUDZYG.js} +42 -41
- package/chunks/handleAutoUpdate-OBFFPWSJ.js +94 -0
- package/chunks/{i18n-BPEDXABF.js → i18n-4PJA5KKU.js} +43 -42
- package/chunks/{image-gen-DEEXNNA2.js → image-gen-4IFV4HES.js} +10 -10
- package/chunks/initializer-ZTY3VSWL.js +100 -0
- package/chunks/{installationInfo-JCUKPGDB.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-MOOIBKKR.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-7K2LDL7V.js → managed-npm-update-7GM2LPLL.js} +43 -42
- package/chunks/mcp-7KZW2T5P.js +97 -0
- package/chunks/{monitor-EXI73A5P.js → monitor-RQROQHLD.js} +42 -41
- package/chunks/nonInteractiveCli-U7JNJGS6.js +163 -0
- package/chunks/{notebook-edit-GKKQJQQU.js → notebook-edit-XQA6YCH2.js} +42 -41
- package/chunks/{openaiContentGenerator-NSPCP4FY.js → openaiContentGenerator-BZW2IB42.js} +29 -29
- package/chunks/{pidfile-IU4ETBRE.js → pidfile-NX5VZ3IK.js} +43 -42
- package/chunks/{processUtils-GZOVMFK4.js → processUtils-M635AD23.js} +2 -2
- package/chunks/{pt-U6AOCTMF.js → pt-VL3I5RNY.js} +2 -1
- package/chunks/{qwenContentGenerator-BBTNTOMB.js → qwenContentGenerator-KHJ73E2C.js} +48 -48
- package/chunks/{qwenOAuth2-D6L2W25Z.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-VUY4B6BO.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-7BDTKCFP.js → run-qwen-serve-L5TF57J4.js} +57 -50
- package/chunks/{runtime-VMWGIAX7.js → runtime-3RE3BPR4.js} +55 -54
- package/chunks/{scheduler-MUKPARY5.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-7G5R52HX.js → serve-5D4S7GIA.js} +49 -48
- package/chunks/{server-FTSWAHXF.js → server-ILZB6TTC.js} +391 -172
- package/chunks/{session-FLUDUMZJ.js → session-SXCZITZ4.js} +114 -94
- package/chunks/{settings-CJVTBEW7.js → settings-4RQB3OVF.js} +48 -47
- package/chunks/{shell-2DOQIYEE.js → shell-FCTR3OI2.js} +42 -41
- package/chunks/{skill-2GOEKN34.js → skill-IAKHPD5H.js} +19 -19
- package/chunks/{skill-settings-5FEOMZQS.js → skill-settings-SOR23NOP.js} +48 -47
- package/chunks/{spawnChannel-VJRIO75F.js → spawnChannel-I6VAWYQJ.js} +45 -43
- package/chunks/{standalone-update-OC5IKJGY.js → standalone-update-5NN3MTYH.js} +44 -43
- package/chunks/{startInteractiveUI-HFHFI2ZR.js → startInteractiveUI-OYGL3NZJ.js} +589 -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-ZWAXZR75.js → team-create-J4JP6AXN.js} +44 -43
- package/chunks/{team-delete-MMQB4OSC.js → team-delete-PZGGBQLM.js} +5 -5
- package/chunks/{team-plan-approval-LH23GCUV.js → team-plan-approval-7BEAIR2H.js} +42 -41
- package/chunks/{terminal-image-renderer-7L3GCHD5.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-BZOZHGKI.js → tool-search-XPOFDWOX.js} +19 -19
- package/chunks/{total-session-admission-KP4CJTSB.js → total-session-admission-SZJFAM25.js} +47 -46
- package/chunks/{trustedFolders-57QEHV67.js → trustedFolders-44NTYYV4.js} +43 -42
- package/chunks/{update-relaunch-53MODFE4.js → update-relaunch-K33Q3WEH.js} +5 -5
- package/chunks/{updateCheck-4QDI7CUZ.js → updateCheck-VBRNPLS4.js} +45 -44
- package/chunks/{useAutoAcceptIndicator-VVQUPTM5.js → useAutoAcceptIndicator-AUNRB5S7.js} +52 -51
- package/chunks/{validateNonInterActiveAuth-KKVD5E43.js → validateNonInterActiveAuth-WTO36MTA.js} +83 -82
- package/chunks/{version-IB5ASN63.js → version-JZA6HYPI.js} +1 -1
- package/chunks/{web-fetch-APSFQMIH.js → web-fetch-LLHPV2IR.js} +19 -19
- package/chunks/{web-search-EWEHMFIW.js → web-search-4HCHRZ3U.js} +11 -11
- package/chunks/{workflow-LA4ACRO4.js → workflow-YI74QTWW.js} +43 -42
- package/chunks/workspace-providers-status-CI3AO2BH.js +100 -0
- package/chunks/{workspace-registration-store-WSLHN7HA.js → workspace-registration-store-KPIKXDHA.js} +1 -1
- package/chunks/{workspace-registry-5HXRV7L4.js → workspace-registry-XE22QDE6.js} +47 -46
- package/chunks/{workspace-service-SSP4PLBC.js → workspace-service-WI2FD72A.js} +54 -53
- package/chunks/workspace-skills-status-FFZU6FXL.js +100 -0
- package/chunks/{workspace-trust-reconciler-PASUNEKQ.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-NAVVM4R2.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-BGiARkbG.js → arc-B13-S0Yo.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-3QBZDeqg.js → architectureDiagram-3BPJPVTR-CHvWNlVW.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CbJI0j0o.js → blockDiagram-GPEHLZMM-CXebOlXF.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-pita1IYy.js → c4Diagram-AAUBKEIU-BQpx4y3Q.js} +1 -1
- package/web-shell/assets/channel-BB_Hm8Rf.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-WzTFww1i.js → chunk-2J33WTMH-Cak1exSv.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-8TIRo9bL.js → chunk-4BX2VUAB-BIc8BV5_.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CuCr34qf.js → chunk-55IACEB6-DoeJ5BL1.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Bb_xWEAx.js → chunk-727SXJPM-BDR_wYSu.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C8T1b2Qw.js → chunk-AQP2D5EJ-BhRRGRq1.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-kjpyMkNM.js → chunk-FMBD7UC4-BJGAwVXr.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-Dm35jDmi.js → chunk-ND2GUHAM-vhE73bsD.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BPVKwuby.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-M-7J9Xyz.js → cose-bilkent-S5V4N54A-CVHKipHP.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-u6rmS689.js → dagre-BM42HDAG-C1DPa8SV.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-nAisfOUB.js → diagram-2AECGRRQ-BYP_QxkT.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CpobRd3l.js → diagram-5GNKFQAL-Cray7ruQ.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-B82W_wPq.js → diagram-KO2AKTUF-Ds4vJANi.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-ClTkmPW6.js → diagram-LMA3HP47-DxFrDykH.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-42fbxGPW.js → diagram-OG6HWLK6-BdIO-pF_.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-8_zQfzlQ.js → erDiagram-TEJ5UH35-5JA8KDYV.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DQDoN_oV.js → flowDiagram-I6XJVG4X-DL4drKro.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-Cqd646fB.js → ganttDiagram-6RSMTGT7-ijX2DD6_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-B6qWs_tS.js → gitGraphDiagram-PVQCEYII-_lPsFLFF.js} +1 -1
- package/web-shell/assets/index-BTwNYZkp.js +1785 -0
- package/web-shell/assets/{index-BCeQB_tk.js → index-C-YoqYbs.js} +1 -1
- package/web-shell/assets/{index-eYjX7fQg.css → index-dHAFxPHb.css} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-BVyDAHuu.js → infoDiagram-5YYISTIA-COFClLab.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BBHM904I.js → ishikawaDiagram-YF4QCWOH-Div9KOgO.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-B5Bv5Z_0.js → journeyDiagram-JHISSGLW-VAw5u0wc.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BwSTb0YF.js → kanban-definition-UN3LZRKU-CncCn8Nl.js} +1 -1
- package/web-shell/assets/{linear-CHtTm36c.js → linear-D6ad7e_k.js} +1 -1
- package/web-shell/assets/{mermaid.core-vBCuAUkf.js → mermaid.core-BV1IECGb.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-CNfKHJrA.js → mindmap-definition-RKZ34NQL-a3jeNgPr.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-DT6QMLhc.js → pieDiagram-4H26LBE5-DsVRY5BW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Rb2Dar4i.js → quadrantDiagram-W4KKPZXB-D6zgexJK.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CA9YzPUY.js → requirementDiagram-4Y6WPE33-VEpSwJjn.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CJ5SkhJw.js → sankeyDiagram-5OEKKPKP-CYEuOFne.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-T31AiuVM.js → sequenceDiagram-3UESZ5HK-CCg0lI-9.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-f7Xpd_Xh.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-dCwsTscr.js → timeline-definition-PNZ67QCA-gqTf9a0k.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-SQtBFYkQ.js → vennDiagram-CIIHVFJN-C4DXXkBh.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-Dfh4eW0B.js → wardley-L42UT6IY-CMK46EiX.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BWBKXBsC.js → wardleyDiagram-YWT4CUSO-DTk1Gzt9.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVqzcaxh.js → xychartDiagram-2RQKCTM6-BcJsM1dH.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/agent-headless-JOL3STCJ.js +0 -86
- package/chunks/channel-settings-store-CDUEUDYS.js +0 -101
- package/chunks/chunk-PDPFQ2FO.js +0 -156
- package/chunks/daemon-status-provider-67M3LFIJ.js +0 -102
- package/chunks/daemon-trust-policy-3XCIBLLT.js +0 -98
- package/chunks/exitPlanMode-2U23CG2U.js +0 -84
- package/chunks/handleAutoUpdate-2F3RWBIT.js +0 -93
- package/chunks/initializer-QRD7X25L.js +0 -99
- package/chunks/list-G6SHYRHQ.js +0 -102
- package/chunks/loadedSettingsAdapter-S4EPYP35.js +0 -96
- package/chunks/mcp-R2Z6IKPN.js +0 -96
- package/chunks/nonInteractiveCli-E6CEE6IG.js +0 -162
- package/chunks/read-file-S2BROE4F.js +0 -32
- package/chunks/ripGrep-V4EX6SLA.js +0 -84
- package/chunks/theme-manager-7WO6DXIT.js +0 -88
- package/chunks/workspace-providers-status-5C3HGWHF.js +0 -99
- package/chunks/workspace-skills-status-DX7CA34S.js +0 -99
- package/chunks/write-file-3N2WAE3F.js +0 -86
- package/web-shell/assets/channel-3vYOf77E.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Dr2aqxvr.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Dr2aqxvr.js +0 -1
- package/web-shell/assets/index-Dv9zBWC9.js +0 -1775
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-wucbNzkr.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;
|
|
@@ -31702,7 +31894,7 @@ var PasteProgressBar = /* @__PURE__ */ __name(({
|
|
|
31702
31894
|
label
|
|
31703
31895
|
] });
|
|
31704
31896
|
}, "PasteProgressBar");
|
|
31705
|
-
var Footer = /* @__PURE__ */ __name(() => {
|
|
31897
|
+
var Footer = /* @__PURE__ */ __name(({ containerRef }) => {
|
|
31706
31898
|
const uiState = useUIState();
|
|
31707
31899
|
const config = useConfig();
|
|
31708
31900
|
const settings = useSettings();
|
|
@@ -31794,6 +31986,7 @@ var Footer = /* @__PURE__ */ __name(() => {
|
|
|
31794
31986
|
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
31795
31987
|
Box_default,
|
|
31796
31988
|
{
|
|
31989
|
+
ref: containerRef,
|
|
31797
31990
|
flexDirection: isNarrow ? "column" : "row",
|
|
31798
31991
|
justifyContent: isNarrow ? "flex-start" : "space-between",
|
|
31799
31992
|
width: "100%",
|
|
@@ -31977,7 +32170,7 @@ var KeyboardShortcuts = /* @__PURE__ */ __name(() => {
|
|
|
31977
32170
|
|
|
31978
32171
|
// packages/cli/src/ui/components/Composer.tsx
|
|
31979
32172
|
var import_jsx_runtime119 = __toESM(require_jsx_runtime(), 1);
|
|
31980
|
-
var Composer = /* @__PURE__ */ __name(() => {
|
|
32173
|
+
var Composer = /* @__PURE__ */ __name(({ footerRef }) => {
|
|
31981
32174
|
const config = useConfig();
|
|
31982
32175
|
const isScreenReaderEnabled = use_is_screen_reader_enabled_default();
|
|
31983
32176
|
const uiState = useUIState();
|
|
@@ -32057,7 +32250,7 @@ var Composer = /* @__PURE__ */ __name(() => {
|
|
|
32057
32250
|
clipboardUnavailableShownRef
|
|
32058
32251
|
}
|
|
32059
32252
|
),
|
|
32060
|
-
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 }))
|
|
32061
32254
|
] });
|
|
32062
32255
|
}, "Composer");
|
|
32063
32256
|
|
|
@@ -33401,6 +33594,7 @@ var AgentRow = /* @__PURE__ */ __name(({ entry, now, selected = false, tree }) =
|
|
|
33401
33594
|
var import_jsx_runtime130 = __toESM(require_jsx_runtime(), 1);
|
|
33402
33595
|
var DefaultAppLayout = /* @__PURE__ */ __name(() => {
|
|
33403
33596
|
const uiState = useUIState();
|
|
33597
|
+
const footerRef = (0, import_react115.useRef)(null);
|
|
33404
33598
|
const { refreshStatic } = useUIActions();
|
|
33405
33599
|
const { activeView, agents } = useAgentViewState();
|
|
33406
33600
|
const { columns: terminalWidth } = useTerminalSize();
|
|
@@ -33433,7 +33627,7 @@ var DefaultAppLayout = /* @__PURE__ */ __name(() => {
|
|
|
33433
33627
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ExitWarning, {})
|
|
33434
33628
|
] })
|
|
33435
33629
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
|
|
33436
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(MainContent, {}),
|
|
33630
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(MainContent, { footerRef }),
|
|
33437
33631
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(Box_default, { flexDirection: "column", ref: uiState.mainControlsRef, children: [
|
|
33438
33632
|
!uiState.dialogsVisible && uiState.updateInfo && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(UpdateNotification, { message: uiState.updateInfo.message }),
|
|
33439
33633
|
uiState.dialogsVisible ? /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
@@ -33468,7 +33662,7 @@ var DefaultAppLayout = /* @__PURE__ */ __name(() => {
|
|
|
33468
33662
|
containerWidth: uiState.mainAreaWidth
|
|
33469
33663
|
}
|
|
33470
33664
|
) }),
|
|
33471
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Composer, {})
|
|
33665
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Composer, { footerRef })
|
|
33472
33666
|
] }),
|
|
33473
33667
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ExitWarning, {}),
|
|
33474
33668
|
!uiState.dialogsVisible && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
@@ -33845,7 +34039,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33845
34039
|
__name(installTerminalResizeReflow, "installTerminalResizeReflow");
|
|
33846
34040
|
|
|
33847
34041
|
// packages/cli/src/ui/AppContainer.tsx
|
|
33848
|
-
import
|
|
34042
|
+
import process18 from "node:process";
|
|
33849
34043
|
|
|
33850
34044
|
// packages/cli/src/ui/hooks/useMemoryMonitor.ts
|
|
33851
34045
|
init_esbuild_shims();
|
|
@@ -33956,25 +34150,28 @@ __name(useWakeRepaint, "useWakeRepaint");
|
|
|
33956
34150
|
init_esbuild_shims();
|
|
33957
34151
|
var import_react119 = __toESM(require_react(), 1);
|
|
33958
34152
|
import process13 from "node:process";
|
|
33959
|
-
var useThemeCommand = /* @__PURE__ */ __name((loadedSettings, setThemeError, addItem, initialThemeError) => {
|
|
34153
|
+
var useThemeCommand = /* @__PURE__ */ __name((loadedSettings, setThemeError, addItem, initialThemeError, config) => {
|
|
33960
34154
|
const [isThemeDialogOpen, setIsThemeDialogOpen] = (0, import_react119.useState)(!!initialThemeError);
|
|
33961
34155
|
const [themeBeforeDialogOpen, setThemeBeforeDialogOpen] = (0, import_react119.useState)(themeManager.getActiveTheme().name);
|
|
33962
34156
|
const openThemeDialog = (0, import_react119.useCallback)(() => {
|
|
33963
34157
|
if (process13.env["NO_COLOR"]) {
|
|
33964
|
-
|
|
33965
|
-
|
|
33966
|
-
|
|
33967
|
-
|
|
33968
|
-
|
|
33969
|
-
|
|
33970
|
-
|
|
33971
|
-
|
|
33972
|
-
|
|
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
|
+
});
|
|
33973
34170
|
return;
|
|
33974
34171
|
}
|
|
33975
34172
|
setThemeBeforeDialogOpen(themeManager.getActiveTheme().name);
|
|
33976
34173
|
setIsThemeDialogOpen(true);
|
|
33977
|
-
}, [addItem]);
|
|
34174
|
+
}, [addItem, config]);
|
|
33978
34175
|
const applyTheme = (0, import_react119.useCallback)(
|
|
33979
34176
|
(themeName) => {
|
|
33980
34177
|
if (!themeManager.setActiveTheme(themeName)) {
|
|
@@ -34161,7 +34358,7 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
|
|
|
34161
34358
|
// packages/cli/src/ui/hooks/useEditorSettings.ts
|
|
34162
34359
|
init_esbuild_shims();
|
|
34163
34360
|
var import_react121 = __toESM(require_react(), 1);
|
|
34164
|
-
var useEditorSettings = /* @__PURE__ */ __name((loadedSettings, setEditorError, addItem) => {
|
|
34361
|
+
var useEditorSettings = /* @__PURE__ */ __name((loadedSettings, setEditorError, addItem, config) => {
|
|
34165
34362
|
const [isEditorDialogOpen, setIsEditorDialogOpen] = (0, import_react121.useState)(false);
|
|
34166
34363
|
const openEditorDialog = (0, import_react121.useCallback)(() => {
|
|
34167
34364
|
setIsEditorDialogOpen(true);
|
|
@@ -34173,20 +34370,23 @@ var useEditorSettings = /* @__PURE__ */ __name((loadedSettings, setEditorError,
|
|
|
34173
34370
|
}
|
|
34174
34371
|
try {
|
|
34175
34372
|
loadedSettings.setValue(scope, "general.preferredEditor", editorType);
|
|
34176
|
-
|
|
34177
|
-
|
|
34178
|
-
|
|
34179
|
-
|
|
34180
|
-
|
|
34181
|
-
|
|
34182
|
-
|
|
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
|
+
});
|
|
34183
34383
|
setEditorError(null);
|
|
34184
34384
|
setIsEditorDialogOpen(false);
|
|
34185
34385
|
} catch (error) {
|
|
34186
34386
|
setEditorError(`Failed to set editor preference: ${error}`);
|
|
34187
34387
|
}
|
|
34188
34388
|
},
|
|
34189
|
-
[loadedSettings, setEditorError, addItem]
|
|
34389
|
+
[loadedSettings, setEditorError, addItem, config]
|
|
34190
34390
|
);
|
|
34191
34391
|
const exitEditorDialog = (0, import_react121.useCallback)(() => {
|
|
34192
34392
|
setIsEditorDialogOpen(false);
|
|
@@ -34346,36 +34546,23 @@ var useEffortCommand = /* @__PURE__ */ __name((loadedSettings, config, addItem)
|
|
|
34346
34546
|
if (!effort) {
|
|
34347
34547
|
return;
|
|
34348
34548
|
}
|
|
34349
|
-
|
|
34549
|
+
applyReasoningEffort(config, effort);
|
|
34350
34550
|
loadedSettings.setValue(
|
|
34351
34551
|
getPersistScopeForModelSelection(loadedSettings),
|
|
34352
34552
|
"model.reasoningEffort",
|
|
34353
34553
|
effort
|
|
34354
34554
|
);
|
|
34355
34555
|
if (addItem) {
|
|
34356
|
-
|
|
34357
|
-
|
|
34358
|
-
|
|
34359
|
-
|
|
34360
|
-
|
|
34361
|
-
|
|
34362
|
-
|
|
34363
|
-
|
|
34364
|
-
|
|
34365
|
-
|
|
34366
|
-
);
|
|
34367
|
-
} else {
|
|
34368
|
-
addItem(
|
|
34369
|
-
{
|
|
34370
|
-
type: "info" /* INFO */,
|
|
34371
|
-
text: t(
|
|
34372
|
-
"Reasoning effort: {{tier}} (requested; the effective tier depends on the active provider/model).",
|
|
34373
|
-
{ tier: effort }
|
|
34374
|
-
)
|
|
34375
|
-
},
|
|
34376
|
-
Date.now()
|
|
34377
|
-
);
|
|
34378
|
-
}
|
|
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
|
+
});
|
|
34379
34566
|
}
|
|
34380
34567
|
} finally {
|
|
34381
34568
|
setIsEffortDialogOpen(false);
|
|
@@ -34920,6 +35107,7 @@ __name(useDeleteCommand, "useDeleteCommand");
|
|
|
34920
35107
|
// packages/cli/src/ui/hooks/slashCommandProcessor.ts
|
|
34921
35108
|
init_esbuild_shims();
|
|
34922
35109
|
var import_react129 = __toESM(require_react(), 1);
|
|
35110
|
+
import process15 from "node:process";
|
|
34923
35111
|
var debugLogger34 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
|
|
34924
35112
|
function hasUserPromptExpansionHooks(config) {
|
|
34925
35113
|
return !!config && !config.getDisableAllHooks?.() && (config.hasHooksForEvent?.("UserPromptExpansion") ?? false);
|
|
@@ -34945,7 +35133,42 @@ var SLASH_COMMANDS_SKIP_RECORDING = /* @__PURE__ */ new Set([
|
|
|
34945
35133
|
"btw",
|
|
34946
35134
|
"history"
|
|
34947
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
|
+
]);
|
|
34948
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");
|
|
34949
35172
|
function getSkillCommandName(command) {
|
|
34950
35173
|
return command.skillDetail?.name ?? command.name;
|
|
34951
35174
|
}
|
|
@@ -35498,6 +35721,11 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35498
35721
|
if (trimmed.startsWith("/") && hasSlashCommandPathSeparator(trimmed)) {
|
|
35499
35722
|
return false;
|
|
35500
35723
|
}
|
|
35724
|
+
const {
|
|
35725
|
+
commandToExecute,
|
|
35726
|
+
args,
|
|
35727
|
+
canonicalPath: resolvedCommandPath
|
|
35728
|
+
} = parseSlashCommand(trimmed, commands);
|
|
35501
35729
|
const recordedItems = [];
|
|
35502
35730
|
const recordItem = /* @__PURE__ */ __name((item) => {
|
|
35503
35731
|
recordedItems.push(item);
|
|
@@ -35512,19 +35740,29 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35512
35740
|
const userMessageTimestamp = Date.now();
|
|
35513
35741
|
let invocationItemId = existingInvocationItemId;
|
|
35514
35742
|
let invocationSentToModel = false;
|
|
35515
|
-
|
|
35743
|
+
let hideInvocation = isBtwCommand(trimmed) || shouldHideSlashCommandInvocation(
|
|
35744
|
+
commandToExecute,
|
|
35745
|
+
resolvedCommandPath,
|
|
35746
|
+
args
|
|
35747
|
+
);
|
|
35748
|
+
if (!hideInvocation && invocationItemId === void 0) {
|
|
35516
35749
|
invocationItemId = addItemWithRecording(
|
|
35517
35750
|
{ type: "user" /* USER */, text: trimmed, sentToModel: false },
|
|
35518
35751
|
userMessageTimestamp
|
|
35519
35752
|
);
|
|
35520
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");
|
|
35521
35764
|
let hasError = false;
|
|
35522
35765
|
let delegatedToRecursiveInvocation = false;
|
|
35523
|
-
const {
|
|
35524
|
-
commandToExecute,
|
|
35525
|
-
args,
|
|
35526
|
-
canonicalPath: resolvedCommandPath
|
|
35527
|
-
} = parseSlashCommand(trimmed, commands);
|
|
35528
35766
|
const subcommand = resolvedCommandPath.length > 1 ? resolvedCommandPath.slice(1).join(" ") : void 0;
|
|
35529
35767
|
const isSkillCommand = commandToExecute?.kind === "skill" /* SKILL */;
|
|
35530
35768
|
let skillInvocationRecorded = false;
|
|
@@ -35670,24 +35908,22 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35670
35908
|
toolArgs: result.toolArgs
|
|
35671
35909
|
};
|
|
35672
35910
|
case "message":
|
|
35911
|
+
revealHiddenInvocation();
|
|
35673
35912
|
if (result.messageType === "info") {
|
|
35674
|
-
|
|
35675
|
-
type: "info" /* INFO */,
|
|
35676
|
-
|
|
35677
|
-
|
|
35678
|
-
});
|
|
35913
|
+
addItemWithRecording(
|
|
35914
|
+
{ type: "info" /* INFO */, text: result.content },
|
|
35915
|
+
Date.now()
|
|
35916
|
+
);
|
|
35679
35917
|
} else if (result.messageType === "warning") {
|
|
35680
|
-
|
|
35681
|
-
type: "warning" /* WARNING */,
|
|
35682
|
-
|
|
35683
|
-
|
|
35684
|
-
});
|
|
35918
|
+
addItemWithRecording(
|
|
35919
|
+
{ type: "warning" /* WARNING */, text: result.content },
|
|
35920
|
+
Date.now()
|
|
35921
|
+
);
|
|
35685
35922
|
} else {
|
|
35686
|
-
|
|
35687
|
-
type: "error" /* ERROR */,
|
|
35688
|
-
|
|
35689
|
-
|
|
35690
|
-
});
|
|
35923
|
+
addItemWithRecording(
|
|
35924
|
+
{ type: "error" /* ERROR */, text: result.content },
|
|
35925
|
+
Date.now()
|
|
35926
|
+
);
|
|
35691
35927
|
}
|
|
35692
35928
|
return { type: "handled" };
|
|
35693
35929
|
case "goal_control": {
|
|
@@ -35885,8 +36121,8 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35885
36121
|
output.getAdditionalContext()
|
|
35886
36122
|
);
|
|
35887
36123
|
}
|
|
36124
|
+
invocationSentToModel = true;
|
|
35888
36125
|
if (invocationItemId !== void 0) {
|
|
35889
|
-
invocationSentToModel = true;
|
|
35890
36126
|
debugLogger34.debug(
|
|
35891
36127
|
`Marked slash command invocation as model-sent: /${resolvedCommandPath.join(
|
|
35892
36128
|
" "
|
|
@@ -36025,7 +36261,8 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
|
|
|
36025
36261
|
chatRecorder?.recordSlashCommand({
|
|
36026
36262
|
phase: "invocation",
|
|
36027
36263
|
rawCommand: trimmed,
|
|
36028
|
-
sentToModel: invocationSentToModel
|
|
36264
|
+
sentToModel: invocationSentToModel,
|
|
36265
|
+
hiddenInvocation: hideInvocation
|
|
36029
36266
|
});
|
|
36030
36267
|
const outputItems = recordedItems.filter((item) => item.type !== "user").map(serializeHistoryItemForRecording);
|
|
36031
36268
|
chatRecorder?.recordSlashCommand({
|
|
@@ -36158,10 +36395,22 @@ function writeTerminalTitle(write, title) {
|
|
|
36158
36395
|
}
|
|
36159
36396
|
}
|
|
36160
36397
|
__name(writeTerminalTitle, "writeTerminalTitle");
|
|
36161
|
-
function formatSessionWindowTitle(sessionName, folderName) {
|
|
36162
|
-
|
|
36398
|
+
function formatSessionWindowTitle(sessionName, folderName, statusPrefix = "") {
|
|
36399
|
+
const base = sessionName ? sanitizeWindowTitle(sessionName) : computeWindowTitle(folderName);
|
|
36400
|
+
return sanitizeWindowTitle(statusPrefix + base);
|
|
36163
36401
|
}
|
|
36164
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");
|
|
36165
36414
|
|
|
36166
36415
|
// packages/cli/src/ui/hooks/useLogger.ts
|
|
36167
36416
|
init_esbuild_shims();
|
|
@@ -36803,7 +37052,7 @@ __name(mapToDisplay, "mapToDisplay");
|
|
|
36803
37052
|
// packages/cli/src/ui/hooks/useGeminiStream.ts
|
|
36804
37053
|
import { promises as fs17 } from "node:fs";
|
|
36805
37054
|
import path12 from "node:path";
|
|
36806
|
-
import
|
|
37055
|
+
import process16 from "node:process";
|
|
36807
37056
|
|
|
36808
37057
|
// packages/cli/src/ui/hooks/useMessageQueue.ts
|
|
36809
37058
|
init_esbuild_shims();
|
|
@@ -40266,7 +40515,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40266
40515
|
const summary = scheduler.getExitSummary();
|
|
40267
40516
|
scheduler.stop();
|
|
40268
40517
|
if (summary) {
|
|
40269
|
-
|
|
40518
|
+
process16.stderr.write(summary + "\n");
|
|
40270
40519
|
}
|
|
40271
40520
|
};
|
|
40272
40521
|
}, [config, getAutonomousLoopTickResolver, isConfigInitialized]);
|
|
@@ -42477,7 +42726,7 @@ __name(useTerminalProgress, "useTerminalProgress");
|
|
|
42477
42726
|
// packages/cli/src/ui/hooks/useFolderTrust.ts
|
|
42478
42727
|
init_esbuild_shims();
|
|
42479
42728
|
var import_react143 = __toESM(require_react(), 1);
|
|
42480
|
-
import * as
|
|
42729
|
+
import * as process17 from "node:process";
|
|
42481
42730
|
var useFolderTrust = /* @__PURE__ */ __name((settings, onTrustChange) => {
|
|
42482
42731
|
const [isTrusted, setIsTrusted] = (0, import_react143.useState)(void 0);
|
|
42483
42732
|
const [isFolderTrustDialogOpen, setIsFolderTrustDialogOpen] = (0, import_react143.useState)(false);
|
|
@@ -42492,7 +42741,7 @@ var useFolderTrust = /* @__PURE__ */ __name((settings, onTrustChange) => {
|
|
|
42492
42741
|
const handleFolderTrustSelect = (0, import_react143.useCallback)(
|
|
42493
42742
|
(choice) => {
|
|
42494
42743
|
const trustedFolders = loadTrustedFolders();
|
|
42495
|
-
const cwd3 =
|
|
42744
|
+
const cwd3 = process17.cwd();
|
|
42496
42745
|
let trustLevel;
|
|
42497
42746
|
const wasTrusted = isTrusted ?? true;
|
|
42498
42747
|
switch (choice) {
|
|
@@ -44106,7 +44355,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44106
44355
|
const { stdin, setRawMode } = use_stdin_default();
|
|
44107
44356
|
const { stdout } = use_stdout_default();
|
|
44108
44357
|
const writeRaw = (0, import_react162.useCallback)((data) => {
|
|
44109
|
-
|
|
44358
|
+
process18.stdout.write(data);
|
|
44110
44359
|
}, []);
|
|
44111
44360
|
const terminal = (0, import_react162.useMemo)(
|
|
44112
44361
|
() => buildTerminalNotification(writeRaw),
|
|
@@ -44457,7 +44706,8 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44457
44706
|
settings,
|
|
44458
44707
|
setThemeError,
|
|
44459
44708
|
historyManager.addItem,
|
|
44460
|
-
initializationResult.themeError
|
|
44709
|
+
initializationResult.themeError,
|
|
44710
|
+
config
|
|
44461
44711
|
);
|
|
44462
44712
|
const {
|
|
44463
44713
|
isApprovalModeDialogOpen,
|
|
@@ -44495,7 +44745,12 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44495
44745
|
openEditorDialog,
|
|
44496
44746
|
handleEditorSelect,
|
|
44497
44747
|
exitEditorDialog
|
|
44498
|
-
} = useEditorSettings(
|
|
44748
|
+
} = useEditorSettings(
|
|
44749
|
+
settings,
|
|
44750
|
+
setEditorError,
|
|
44751
|
+
historyManager.addItem,
|
|
44752
|
+
config
|
|
44753
|
+
);
|
|
44499
44754
|
const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
|
|
44500
44755
|
const [isStatusLineDialogOpen, setStatusLineDialogOpen] = (0, import_react162.useState)(false);
|
|
44501
44756
|
const openStatusLineDialog = (0, import_react162.useCallback)(
|
|
@@ -44730,7 +44985,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44730
44985
|
config.getGeminiClient()?.requestShutdown();
|
|
44731
44986
|
setTimeout(async () => {
|
|
44732
44987
|
await runExitCleanup();
|
|
44733
|
-
|
|
44988
|
+
process18.exit(0);
|
|
44734
44989
|
}, 100);
|
|
44735
44990
|
}, "quit"),
|
|
44736
44991
|
setDebugMessage,
|
|
@@ -44914,7 +45169,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44914
45169
|
);
|
|
44915
45170
|
try {
|
|
44916
45171
|
const { memoryContent, fileCount, conditionalRules, projectRoot } = await loadHierarchicalGeminiMemory(
|
|
44917
|
-
|
|
45172
|
+
process18.cwd(),
|
|
44918
45173
|
settings.merged.context?.loadFromIncludeDirectories ? config.getWorkspaceContext().getDirectories() : [],
|
|
44919
45174
|
config.getFileService(),
|
|
44920
45175
|
config.getExtensionContextFilePaths(),
|
|
@@ -46470,20 +46725,25 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
46470
46725
|
lastTitleRef.current = null;
|
|
46471
46726
|
const folderName2 = basename3(config.getTargetDir());
|
|
46472
46727
|
writeTerminalTitle(
|
|
46473
|
-
(value) =>
|
|
46728
|
+
(value) => process18.stdout.write(value),
|
|
46474
46729
|
formatSessionWindowTitle(null, folderName2)
|
|
46475
46730
|
);
|
|
46476
46731
|
}
|
|
46477
46732
|
return;
|
|
46478
46733
|
}
|
|
46479
46734
|
const folderName = basename3(config.getTargetDir());
|
|
46480
|
-
const title = formatSessionWindowTitle(
|
|
46735
|
+
const title = formatSessionWindowTitle(
|
|
46736
|
+
sessionName,
|
|
46737
|
+
folderName,
|
|
46738
|
+
titleStatusPrefix(streamingState)
|
|
46739
|
+
);
|
|
46481
46740
|
if (lastTitleRef.current !== title) {
|
|
46482
46741
|
lastTitleRef.current = title;
|
|
46483
|
-
writeTerminalTitle((value) =>
|
|
46742
|
+
writeTerminalTitle((value) => process18.stdout.write(value), title);
|
|
46484
46743
|
}
|
|
46485
46744
|
}, [
|
|
46486
46745
|
sessionName,
|
|
46746
|
+
streamingState,
|
|
46487
46747
|
settings.merged.ui?.hideWindowTitle,
|
|
46488
46748
|
settings.merged.ui?.showStatusInTitle,
|
|
46489
46749
|
config
|