@qwen-code/qwen-code 0.20.2-jobbench-no-todo-write.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +5 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +23 -5
- package/bundled/qc-helper/docs/integration-github-action.md +9 -9
- package/bundled/review/SKILL.md +7 -3
- package/chunks/MaxSizedBox-5DPPWPGT.js +85 -0
- package/chunks/{StandaloneSessionPicker-WBRBHD2M.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -58
- package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
- package/chunks/{acpAgent-BBQZ33CA.js → acpAgent-6J2U72PQ.js} +706 -182
- package/chunks/agent-6ODUANDO.js +81 -0
- package/chunks/agent-headless-7BYQTMHW.js +75 -0
- package/chunks/{anthropicContentGenerator-HGWAHO24.js → anthropicContentGenerator-75BKLTSP.js} +117 -43
- package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-Y5T7GG7F.js} +3 -3
- package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-2H6747FR.js} +3 -3
- package/chunks/bridge-ZUB64FAE.js +90 -0
- package/chunks/{build-SSCNEHZZ.js → build-RV63TIRH.js} +2 -3
- package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
- package/chunks/{channel-worker-group-LFBT7K64.js → channel-worker-group-2ZD7TVAT.js} +7 -6
- package/chunks/{channel-worker-manager-3RUPERG2.js → channel-worker-manager-4OA4BCGB.js} +189 -29
- package/chunks/{channel-worker-supervisor-A3KVATD3.js → channel-worker-supervisor-V7KCFJTS.js} +6 -5
- package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
- package/chunks/chunk-2JZBVYTU.js +452 -0
- package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
- package/chunks/{chunk-B2HSPMD4.js → chunk-2NH6DYI4.js} +12 -12
- package/chunks/chunk-2SCDWPXI.js +246 -0
- package/chunks/{chunk-JK26TQON.js → chunk-2X55UKQE.js} +3 -3
- package/chunks/{chunk-7VUQQBR7.js → chunk-3QMGYBFN.js} +2 -65
- package/chunks/{chunk-UMCULC5M.js → chunk-3RN6GBKS.js} +1 -1
- package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
- package/chunks/chunk-46UV252V.js +128 -0
- package/chunks/{chunk-GPMVHZP4.js → chunk-4WIZGAH3.js} +7 -7
- package/chunks/{chunk-CI3GWKGJ.js → chunk-55DJUCI2.js} +87 -29
- package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
- package/chunks/{chunk-D7WXIW7H.js → chunk-5NBDS5S6.js} +145 -5
- package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
- package/chunks/chunk-6FGBXPWM.js +293 -0
- package/chunks/{chunk-NEEB7UEN.js → chunk-6GMVPFB2.js} +153 -72
- package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
- package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
- package/chunks/{chunk-77OZOGPT.js → chunk-7JURR4JT.js} +1 -1
- package/chunks/{chunk-4MWNZNJ4.js → chunk-7MVVZO4N.js} +4 -4
- package/chunks/{chunk-6ZBPS62S.js → chunk-7ZCNENPP.js} +1 -1
- package/chunks/{chunk-6X4GWOPW.js → chunk-A5L3JMUA.js} +1 -1
- package/chunks/{chunk-B3I77W5J.js → chunk-ACY3A37B.js} +3 -3
- package/chunks/chunk-AMDSOFFV.js +10860 -0
- package/chunks/{chunk-RV4C2ZFG.js → chunk-BIQWWWJN.js} +1 -1
- package/chunks/{chunk-ZHERRXZJ.js → chunk-BJX6ZSUK.js} +4 -4
- package/chunks/chunk-BK2UNYWD.js +29 -0
- package/chunks/{chunk-7TLUW4ZE.js → chunk-BKHWX6I2.js} +3 -3
- package/chunks/chunk-BPJSQIJX.js +100 -0
- package/chunks/{chunk-M7WBGLYP.js → chunk-BULDBTYC.js} +2 -0
- package/chunks/{chunk-H4A4A2SY.js → chunk-CIKQ7KKO.js} +4625 -8645
- package/chunks/{chunk-QZJY47IE.js → chunk-D3UEZIQH.js} +7 -5
- package/chunks/chunk-DHHOYAPR.js +1462 -0
- package/chunks/{chunk-LESHKUWF.js → chunk-DLWL3Z7A.js} +5 -3
- package/chunks/{chunk-XHATNRQA.js → chunk-DP3IHZGG.js} +0 -2
- package/chunks/chunk-E5TUC6CA.js +479 -0
- package/chunks/{chunk-6NRFYMKG.js → chunk-EBJQ6AXW.js} +11 -10
- package/chunks/{chunk-HABKX6LY.js → chunk-EPDRMGT4.js} +164 -17
- package/chunks/{chunk-P2BQZ7H7.js → chunk-ETSW4KLJ.js} +2 -2
- package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
- package/chunks/{chunk-64EG42HV.js → chunk-FQK6JAFG.js} +72 -23
- package/chunks/{chunk-L6U47G5P.js → chunk-FSITMZJH.js} +8 -8
- package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
- package/chunks/{chunk-CXIOPXRR.js → chunk-GSN55ZRI.js} +5 -5
- package/chunks/{chunk-LVA5OHQO.js → chunk-H4SBPHSA.js} +3 -3
- package/chunks/chunk-H5FFA6TH.js +902 -0
- package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
- package/chunks/{chunk-NXE6SQIV.js → chunk-IJTOWOD7.js} +14 -3
- package/chunks/chunk-IKCX4CCL.js +469 -0
- package/chunks/{chunk-7SSWNGEJ.js → chunk-IKYJHJNF.js} +3 -3
- package/chunks/{chunk-64XKYOXK.js → chunk-IO3IX5Q4.js} +1 -1
- package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
- package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
- package/chunks/{chunk-SVIMKSEI.js → chunk-J24WCGIN.js} +4 -4
- package/chunks/{chunk-4LVZNIDO.js → chunk-J56UI34H.js} +4 -13
- package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
- package/chunks/{chunk-7PIL2BYF.js → chunk-JVPM2ULZ.js} +6 -6
- package/chunks/{chunk-KBB5O3JO.js → chunk-JXJFVC6E.js} +37 -18
- package/chunks/chunk-JZA3JUDJ.js +82 -0
- package/chunks/{chunk-45PO6ZIS.js → chunk-K36B6G2O.js} +5 -5
- package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
- package/chunks/{chunk-K7EUPLIP.js → chunk-KIM5GUMA.js} +654 -117
- package/chunks/{chunk-42W5BDEY.js → chunk-KMQ33DO4.js} +7 -5
- package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
- package/chunks/{chunk-WHGVTP7Q.js → chunk-L26JL52R.js} +3 -3
- package/chunks/{chunk-7Z6JQEL6.js → chunk-L5UHQJTJ.js} +1 -1
- package/chunks/{chunk-26CBI4DC.js → chunk-LB6DUZ26.js} +259 -67
- package/chunks/chunk-LEH5C7FV.js +232 -0
- package/chunks/{chunk-UTGFTJ2H.js → chunk-LH2BYDQ5.js} +6 -4
- package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
- package/chunks/{chunk-V7WNRZL7.js → chunk-LKEJ26GS.js} +11 -11
- package/chunks/{chunk-6VPLV3L3.js → chunk-LQIW3YFY.js} +227 -41
- package/chunks/chunk-LS77BEZP.js +405 -0
- package/chunks/{chunk-5WDRI7US.js → chunk-M4FMGVY4.js} +3 -3
- package/chunks/{chunk-57FIIFJN.js → chunk-M5JM7OSF.js} +1 -1
- package/chunks/{chunk-7362QS5B.js → chunk-MB4MZHMJ.js} +80 -37
- package/chunks/{chunk-4K56OJFJ.js → chunk-MUP3T3AD.js} +1 -1
- package/chunks/{chunk-CJQ3FZ2G.js → chunk-MVSUYZDT.js} +4 -4
- package/chunks/{chunk-6FZYKBKV.js → chunk-MZAXJAUM.js} +1 -1
- package/chunks/{chunk-32L4D2O2.js → chunk-NH6KE4JX.js} +3 -3
- package/chunks/chunk-NIBLUX3Y.js +934 -0
- package/chunks/{chunk-OQB4EXO4.js → chunk-NL7LTRLR.js} +1 -1
- package/chunks/{chunk-6S5HSCOI.js → chunk-OFDOK3VM.js} +5 -5
- package/chunks/{chunk-LIZRAKPB.js → chunk-OHNBB4XR.js} +1 -1
- package/chunks/{chunk-MDZTPSXO.js → chunk-OKY7HXPG.js} +2 -2
- package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
- package/chunks/{chunk-4SCOLXTD.js → chunk-PC6JANNU.js} +5 -5
- package/chunks/{chunk-IWALV67J.js → chunk-PHOF65IG.js} +4300 -1284
- package/chunks/{chunk-OQ5SYCPE.js → chunk-PJIZUQVC.js} +2 -2
- package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
- package/chunks/{chunk-YM3SZTH4.js → chunk-PR75REBZ.js} +18 -1
- package/chunks/{chunk-5XORMWA2.js → chunk-PSOO6YXD.js} +18 -15
- package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
- package/chunks/{chunk-GSX6P2JW.js → chunk-PWVFN2LF.js} +1 -1
- package/chunks/{chunk-AHX6AKPD.js → chunk-Q4M4MDQ4.js} +2 -2
- package/chunks/{chunk-3EHJ44GG.js → chunk-QAF7NMK7.js} +1 -1
- package/chunks/{chunk-WSYKDFYR.js → chunk-R5AFZNQW.js} +5 -5
- package/chunks/{chunk-63DJBU32.js → chunk-RF3EXIHJ.js} +39 -18
- package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
- package/chunks/{chunk-SXPSOMQ4.js → chunk-RIBKPMRP.js} +220 -141
- package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
- package/chunks/{chunk-ZUTM4LHM.js → chunk-RZIX2G32.js} +1 -1
- package/chunks/{chunk-ZKBNRL6O.js → chunk-SQCQ4KO2.js} +336 -404
- package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
- package/chunks/{chunk-RHYFF54J.js → chunk-TEHGS6UP.js} +50 -21
- package/chunks/{chunk-ACQJPDDS.js → chunk-TGILQ3YH.js} +8 -8
- package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
- package/chunks/{chunk-ACZIBDYD.js → chunk-TPRQ7RZH.js} +587 -176
- package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
- package/chunks/{chunk-7MWABCXU.js → chunk-U7M2DMGW.js} +3 -3
- package/chunks/{chunk-KQQ757OQ.js → chunk-UDX5OBWR.js} +41 -9
- package/chunks/{chunk-SRPZG4ER.js → chunk-USTWD7QV.js} +6 -4
- package/chunks/{chunk-NPQDJGKU.js → chunk-UUUTRMI2.js} +1 -1
- package/chunks/chunk-UW5EOVUN.js +249 -0
- package/chunks/{chunk-6IL7KRLE.js → chunk-VAK25FTU.js} +1 -1
- package/chunks/{chunk-TDDFEPBX.js → chunk-VIA5XA4U.js} +5 -2
- package/chunks/{chunk-3BJDQVE6.js → chunk-VRYUBFMC.js} +1 -1
- package/chunks/{chunk-PLQODS7F.js → chunk-VULLI6WQ.js} +172 -6
- package/chunks/{chunk-GN45XAAU.js → chunk-WCXCRJYB.js} +1 -1
- package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
- package/chunks/{chunk-O32RMIMO.js → chunk-Y34KJKDC.js} +1 -1
- package/chunks/{chunk-7ZD5EKXE.js → chunk-YBL3QUDD.js} +2 -2
- package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
- package/chunks/{chunk-3G3UUMRS.js → chunk-YPE6A4GC.js} +2 -2
- package/chunks/{chunk-3F2JUWCH.js → chunk-YX324OPW.js} +1 -1
- package/chunks/{chunk-CGIDQG6J.js → chunk-Z2BC6UJ5.js} +3 -3
- package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
- package/chunks/{chunk-ZPWJZHJ2.js → chunk-ZFDTEDCF.js} +6 -6
- package/chunks/chunk-ZJHVAS7M.js +289 -0
- package/chunks/{chunk-XAGLQITN.js → chunk-ZNAUOR2I.js} +15 -12
- package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
- package/chunks/{computer-use-RZ3UUWYW.js → computer-use-SOQ4E3VX.js} +43 -34
- package/chunks/{config-utils-SQUBZEQM.js → config-utils-7V7GGIW6.js} +3 -3
- package/chunks/contextCommand-JLHYA34Z.js +80 -0
- package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-IWW2IZ2T.js} +3 -3
- package/chunks/{create-sub-session-EQG73FT6.js → create-sub-session-QRJLW5BV.js} +43 -34
- package/chunks/{cron-create-KTWJM7QT.js → cron-create-YIID5XAW.js} +6 -6
- package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-ZVHYCEP2.js} +5 -5
- package/chunks/{cron-list-PXDPGEDQ.js → cron-list-XEGS463Q.js} +5 -5
- package/chunks/{daemon-RAPSDJH7.js → daemon-YO6433NF.js} +350 -53
- package/chunks/daemon-status-provider-2233Q37D.js +89 -0
- package/chunks/{de-4IBXM7CN.js → de-HGRCYDEJ.js} +1 -0
- package/chunks/{dist-UIFWIFRO.js → dist-46NQKLTW.js} +2 -2
- package/chunks/{dist-XRYV6TJP.js → dist-AIKFMUKK.js} +50 -4
- package/chunks/{dist-XBJVSWS2.js → dist-BBLXMS3N.js} +14 -2
- package/chunks/{dist-OMW6WDEO.js → dist-F6IBUDR4.js} +40 -9
- package/chunks/{dist-PJLG2XYX.js → dist-WEAHOXDM.js} +1 -1
- package/chunks/{dist-OAV7LJGJ.js → dist-YFNEUWSE.js} +26 -2
- package/chunks/earlyInputCapture-A7NDU3PF.js +82 -0
- package/chunks/{edit-XRSKQPHQ.js → edit-OBDSQURM.js} +43 -34
- package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
- package/chunks/{enter-worktree-WAHCWE6I.js → enter-worktree-U6MRPQ2P.js} +43 -34
- package/chunks/{enterPlanMode-QIOYLDCF.js → enterPlanMode-BC5QUZZ2.js} +43 -34
- package/chunks/{environment-T3FXCDJI.js → environment-W5UFC2CH.js} +46 -37
- package/chunks/errors-M7CLORXH.js +88 -0
- package/chunks/{exit-worktree-RHVTLX6T.js → exit-worktree-DGNYMECB.js} +43 -34
- package/chunks/{exitPlanMode-UATOE2GQ.js → exitPlanMode-GXTBWQAR.js} +43 -34
- package/chunks/{fast-path-J3RHOYSZ.js → fast-path-JJZFJANL.js} +6 -6
- package/chunks/{fast-path-settings-XB3CPUJT.js → fast-path-settings-WQJU2LAT.js} +2 -2
- package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
- package/chunks/{gemini-P72OGOH6.js → gemini-QS36EBZV.js} +133 -102
- package/chunks/{geminiContentGenerator-F6EG5FXF.js → geminiContentGenerator-AG4KB6CV.js} +14 -8
- package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-V7W3GODC.js} +1 -1
- package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-TDO75DQP.js} +1 -1
- package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-TF43WQT2.js} +1 -1
- package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-ZGUO3TXT.js} +1 -1
- package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-ECFYZZFQ.js} +1 -1
- package/chunks/{glob-WHASQZRX.js → glob-V7R3PSK3.js} +43 -34
- package/chunks/{grep-LS7AADJ3.js → grep-QYPSK7OP.js} +43 -34
- package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
- package/chunks/{i18n-IMVASWIF.js → i18n-VUJJZIMU.js} +44 -35
- package/chunks/image-gen-Z3VPGKRC.js +240 -0
- package/chunks/initializer-UWAK5U5O.js +86 -0
- package/chunks/installationInfo-6O2YAA52.js +80 -0
- package/chunks/{ja-KY4ROZTE.js → ja-B7DF7DFG.js} +1 -0
- package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-MDTG3WRM.js} +3 -3
- package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
- package/chunks/list-GB4ESM3T.js +89 -0
- package/chunks/list-agents-5KJJHR6I.js +80 -0
- package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +83 -0
- package/chunks/loggingContentGenerator-HS3S5H3Q.js +1077 -0
- package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-FXKNNYSY.js} +7 -7
- package/chunks/{ls-J2ZI5XYK.js → ls-NTK6VOQJ.js} +5 -5
- package/chunks/{lsp-UMS3NUB5.js → lsp-2JI24STP.js} +3 -3
- package/chunks/{managed-npm-update-L6UY7OM7.js → managed-npm-update-JYEMMXA3.js} +94 -37
- package/chunks/mcp-6DBDJPFU.js +83 -0
- package/chunks/{monitor-DXYFB5QD.js → monitor-R3ODH5U6.js} +45 -35
- package/chunks/node-UUDY34IG.js +305 -0
- package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
- package/chunks/{notebook-edit-KGD7YJEA.js → notebook-edit-BNOK452R.js} +43 -34
- package/chunks/{openaiContentGenerator-C74A2XAU.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
- package/chunks/pidfile-TFRZZZIO.js +86 -0
- package/chunks/{processUtils-GUT5B4R6.js → processUtils-RT7UNCC2.js} +2 -2
- package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
- package/chunks/{qwenContentGenerator-PT46FQPA.js → qwenContentGenerator-HHCRK4SX.js} +56 -41
- package/chunks/{qwenOAuth2-S7DZHUUU.js → qwenOAuth2-OWLB5AKH.js} +14 -27
- package/chunks/read-file-APMO3PSX.js +31 -0
- package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-4DKQWGHD.js} +3 -3
- package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-RQKFYO5B.js} +3 -3
- package/chunks/resumeHistoryUtils-6KRYEAWZ.js +91 -0
- package/chunks/ripGrep-BEJDEDXW.js +73 -0
- package/chunks/{ru-7SPDGMGD.js → ru-FZCNZHDC.js} +1 -0
- package/chunks/{run-qwen-serve-QO4PT5NV.js → run-qwen-serve-FU6HEM4J.js} +276 -62
- package/chunks/{runtime-EOTXBUM6.js → runtime-XXRRTNP6.js} +55 -44
- package/chunks/{scheduler-MAIQ2PHR.js → scheduler-G2ZS2Z7E.js} +43 -34
- package/chunks/{sdk-exporters-grpc-ETLH47EP.js → sdk-exporters-grpc-AK3LGHNO.js} +3 -3
- package/chunks/{sdk-exporters-http-T3POX73F.js → sdk-exporters-http-FYBSUCPD.js} +6 -6
- package/chunks/{sdk-impl-NSLPDH6I.js → sdk-impl-GMVPB7NB.js} +6 -6
- package/chunks/{send-message-PYIJ2PZL.js → send-message-Q6OOR6BR.js} +46 -9
- package/chunks/serve-7BSTXJ4T.js +89 -0
- package/chunks/{server-CBCC3XQC.js → server-4UMH7OIZ.js} +2348 -396
- package/chunks/{session-RQUEFQDL.js → session-K3O3Q2SV.js} +107 -88
- package/chunks/{settings-QHXCJDSR.js → settings-CR2EWTBA.js} +53 -44
- package/chunks/shell-HH3PF3A2.js +83 -0
- package/chunks/{skill-WHSGTGKP.js → skill-I3SDA4MB.js} +17 -15
- package/chunks/spawnChannel-RWNDBXGA.js +82 -0
- package/chunks/{src-F3HKX47D.js → src-GE4TTTML.js} +290 -171
- package/chunks/{standalone-update-BKLONSVI.js → standalone-update-Q6WFRZZQ.js} +45 -36
- package/chunks/{startInteractiveUI-TNJ37X5W.js → startInteractiveUI-SLZGHRPH.js} +736 -298
- package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-I3757IWH.js} +4 -4
- package/chunks/{task-create-7474AJJD.js → task-create-N7WQSGYA.js} +10 -10
- package/chunks/{task-list-633HGOIB.js → task-list-FOPULZEP.js} +7 -7
- package/chunks/{task-stop-MNUGHPIA.js → task-stop-H6RHXFVQ.js} +4 -4
- package/chunks/{task-update-66GQB5LI.js → task-update-M57TFZJT.js} +10 -10
- package/chunks/{team-create-LUHJ7ZCC.js → team-create-YJALH5D2.js} +44 -35
- package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
- package/chunks/{team-plan-approval-X3DYRL6L.js → team-plan-approval-34QFYKGN.js} +43 -34
- package/chunks/theme-manager-SWRILQHI.js +77 -0
- package/chunks/todoWrite-VQ7FKOHL.js +358 -0
- package/chunks/{tool-search-BAWOETUY.js → tool-search-NF7GB6LE.js} +16 -16
- package/chunks/total-session-admission-DLHHHLD3.js +84 -0
- package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
- package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
- package/chunks/{trustedFolders-4UEOIKOF.js → trustedFolders-KHXHY6PY.js} +44 -35
- package/chunks/{update-relaunch-WDWABT5P.js → update-relaunch-WBUZJC5O.js} +5 -5
- package/chunks/updateCheck-RKL6M5XN.js +92 -0
- package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
- package/chunks/{validateNonInterActiveAuth-OKUE3JLF.js → validateNonInterActiveAuth-3R223G3R.js} +91 -81
- package/chunks/{version-GMUULLWB.js → version-HS7YSFHV.js} +1 -1
- package/chunks/{web-fetch-JBWTMPFN.js → web-fetch-NKCSG7ZE.js} +18 -16
- package/chunks/{web-search-27COJHJT.js → web-search-S62WAP4S.js} +13 -27
- package/chunks/{workflow-5L37J7YF.js → workflow-QAGU5RU4.js} +44 -35
- package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
- package/chunks/{workspace-registration-store-TYPYXIP6.js → workspace-registration-store-24JMHDGF.js} +2 -2
- package/chunks/workspace-registry-UT4RBNBM.js +88 -0
- package/chunks/workspace-service-JFWRUS4V.js +98 -0
- package/chunks/workspace-skills-status-ZBBKJOI2.js +85 -0
- package/chunks/write-file-VHIXW5M7.js +73 -0
- package/chunks/{zh-WY5DWYZD.js → zh-LUIGBD55.js} +15 -0
- package/chunks/{zh-TW-BM47YBFH.js → zh-TW-F5KG2IYD.js} +15 -0
- package/cli-entry.js +10 -1
- package/cli.js +13 -13
- package/locales/ca.js +2 -0
- package/locales/de.js +1 -0
- package/locales/en.js +25 -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 +23 -0
- package/locales/zh.js +23 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-BWFm0SI0.js → arc-DcbWnB9T.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CZ_yL-DQ.js → architectureDiagram-3BPJPVTR-kMMF5sud.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B9F9mJvG.js → blockDiagram-GPEHLZMM-Htl9vTJS.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BUdwJW5f.js → c4Diagram-AAUBKEIU-BnZnm0mQ.js} +1 -1
- package/web-shell/assets/channel-Cq7YKtfC.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-w4cF-qlF.js → chunk-2J33WTMH-DziB7kDG.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BXwURxHJ.js → chunk-4BX2VUAB-CmkD8daw.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Gem3LalC.js → chunk-55IACEB6-CHAd9A_U.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-A3ddVojI.js → chunk-727SXJPM-Dqaam3fE.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CjHZ5L_R.js → chunk-AQP2D5EJ-D_-saBYM.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CKgdgcpv.js → chunk-FMBD7UC4-B9r_veWD.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-Cn2Dykjb.js → chunk-ND2GUHAM-B3EaCSpL.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN--0SyraC5.js → chunk-QZHKN3VN-CYq8x9mn.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CphhAity.js → cose-bilkent-S5V4N54A-D0ng4uiB.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DU--jiKp.js → dagre-BM42HDAG-DCZollQv.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BzvuZw1Y.js → diagram-2AECGRRQ-Dfk2pWS0.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-D84-49Y0.js → diagram-5GNKFQAL-kX38ltWR.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DQTq-3_3.js → diagram-KO2AKTUF-CJz2vsXh.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-8FTrshzN.js → diagram-LMA3HP47-BvMLZm_7.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BCjpDBCm.js → diagram-OG6HWLK6-l7kfStkO.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BtRObkmg.js → erDiagram-TEJ5UH35-BSVa8GGT.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DTrW6oxy.js → flowDiagram-I6XJVG4X-CoawKIXH.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgPNSW6j.js → ganttDiagram-6RSMTGT7-DFUDH0zF.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BTclNgGV.js → gitGraphDiagram-PVQCEYII-Y2pvpT4e.js} +1 -1
- package/web-shell/assets/{index-CxA7AqY6.js → index-D0GX0zZf.js} +1 -1
- package/web-shell/assets/index-D9haPt0X.css +5 -0
- package/web-shell/assets/index-ckX9Pq5k.js +1230 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DCE4AJt2.js → infoDiagram-5YYISTIA-CU8_zLiX.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C8iE6q4Y.js → ishikawaDiagram-YF4QCWOH-AVQiV0DU.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-C_dxdyEc.js → journeyDiagram-JHISSGLW-DQ0VSKa3.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Dw3n1u3w.js → kanban-definition-UN3LZRKU-BqnWqsE_.js} +1 -1
- package/web-shell/assets/{linear-C2BF2zJ9.js → linear-BkoihsaA.js} +1 -1
- package/web-shell/assets/{mermaid.core-CGTQU3MA.js → mermaid.core-5RJs-31j.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BVFZm9ZC.js → mindmap-definition-RKZ34NQL-D33Bxnpd.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Cc-TNN3n.js → pieDiagram-4H26LBE5-BuEAw3BH.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CgW3Rzsi.js → quadrantDiagram-W4KKPZXB-Kox_usEq.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BAaj0Y3B.js → requirementDiagram-4Y6WPE33-CNjeUif0.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-XJWmekxS.js → sankeyDiagram-5OEKKPKP-BCd2OL_U.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CtRc_0wf.js → sequenceDiagram-3UESZ5HK-CF2ZTsz0.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-WCnvMGy5.js → stateDiagram-AJRCARHV-qenSzHtm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-C9cRx49L.js → timeline-definition-PNZ67QCA-B5DyWdgs.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BvXOCEt-.js → vennDiagram-CIIHVFJN-DqP4I_o_.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-ByafGtzu.js → wardley-L42UT6IY-CJe2e4mg.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CozAnw8x.js → wardleyDiagram-YWT4CUSO-BMDSw-Rr.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-Camu9Qvq.js → xychartDiagram-2RQKCTM6-BTVZYkxD.js} +1 -1
- package/web-shell/index.html +17 -13
- package/chunks/MaxSizedBox-HNWBEL5H.js +0 -77
- package/chunks/agent-KTMY6SF3.js +0 -72
- package/chunks/agent-headless-HJ56ZZOW.js +0 -66
- package/chunks/bridge-AMC5AD7W.js +0 -80
- package/chunks/chunk-CBOQ3HY7.js +0 -2019
- package/chunks/chunk-UHGNAWHK.js +0 -6928
- package/chunks/contextCommand-PW4GINQU.js +0 -71
- package/chunks/daemon-status-provider-3IWTBWQ3.js +0 -79
- package/chunks/earlyInputCapture-TYNI3B6E.js +0 -73
- package/chunks/errors-QAWTJTAW.js +0 -79
- package/chunks/handleAutoUpdate-V5A3JHOG.js +0 -72
- package/chunks/initializer-JJLF5JCJ.js +0 -77
- package/chunks/installationInfo-LAWMHQAG.js +0 -71
- package/chunks/list-L2ECB6UM.js +0 -80
- package/chunks/loadedSettingsAdapter-RLMZ4Z3E.js +0 -74
- package/chunks/mcp-E4O7Z6FO.js +0 -74
- package/chunks/nonInteractiveCli-GU2UKULE.js +0 -131
- package/chunks/pidfile-IWQWZNZV.js +0 -77
- package/chunks/read-file-ZOCXW4AD.js +0 -31
- package/chunks/resumeHistoryUtils-TJWRDE2L.js +0 -83
- package/chunks/ripGrep-OFKAW2VE.js +0 -64
- package/chunks/serve-UB4CF67Q.js +0 -80
- package/chunks/shell-RPK7EAOC.js +0 -74
- package/chunks/spawnChannel-IUP3ZNMT.js +0 -73
- package/chunks/theme-manager-ALL7F4CJ.js +0 -68
- package/chunks/total-session-admission-PLONPNXI.js +0 -74
- package/chunks/updateCheck-PVROE4GR.js +0 -87
- package/chunks/useAutoAcceptIndicator-6BNLNN5S.js +0 -85
- package/chunks/workspace-providers-status-2U3IF4TX.js +0 -77
- package/chunks/workspace-registry-DLQDDDIF.js +0 -78
- package/chunks/workspace-service-7K3LF4QX.js +0 -89
- package/chunks/workspace-skills-status-4DOZ3DBS.js +0 -76
- package/chunks/write-file-PTPXDKZ3.js +0 -64
- package/web-shell/assets/channel-DiLlxxIf.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CkylTdM4.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CkylTdM4.js +0 -1
- package/web-shell/assets/index-CGtQqOIa.css +0 -5
- package/web-shell/assets/index-TtM0hVjU.js +0 -1207
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D1gzH2Ue.js +0 -1
|
@@ -1,15 +1,80 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
useAutoAcceptIndicator
|
|
5
|
+
} from "./chunk-2X55UKQE.js";
|
|
6
|
+
import {
|
|
7
|
+
classifyApiError
|
|
8
|
+
} from "./chunk-V7RNNPGC.js";
|
|
3
9
|
import {
|
|
4
10
|
buildPermissionSuggestions
|
|
5
11
|
} from "./chunk-43T5WDQ7.js";
|
|
6
12
|
import {
|
|
7
13
|
TUI_CHAT_RECORDING_FAILURE_MESSAGE,
|
|
8
14
|
reportChatRecordingFailureToAdapter
|
|
9
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-YPE6A4GC.js";
|
|
16
|
+
import {
|
|
17
|
+
MAX_SUGGESTIONS_TO_SHOW,
|
|
18
|
+
SESSION_MENTION_PREFIX,
|
|
19
|
+
buildMcpResourceRef,
|
|
20
|
+
buildMcpServerRef,
|
|
21
|
+
buildSessionRef,
|
|
22
|
+
getExtensionSuggestions,
|
|
23
|
+
handleAtCommand,
|
|
24
|
+
matchMcpServerPrefix,
|
|
25
|
+
resolveAtCommandQuery,
|
|
26
|
+
sanitizeDisplayText
|
|
27
|
+
} from "./chunk-VULLI6WQ.js";
|
|
28
|
+
import {
|
|
29
|
+
StreamJsonOutputAdapter
|
|
30
|
+
} from "./chunk-BKHWX6I2.js";
|
|
31
|
+
import {
|
|
32
|
+
BuiltinCommandLoader,
|
|
33
|
+
BundledSkillLoader,
|
|
34
|
+
CommandService,
|
|
35
|
+
DISPLAY_HOOK_EVENTS,
|
|
36
|
+
FileCommandLoader,
|
|
37
|
+
MAX_STACKED_SKILLS,
|
|
38
|
+
McpPromptLoader,
|
|
39
|
+
SavedWorkflowLoader,
|
|
40
|
+
SkillCommandLoader,
|
|
41
|
+
addConfigToMatcherGroup,
|
|
42
|
+
appendUserPromptExpansionAdditionalContext,
|
|
43
|
+
copyToClipboard,
|
|
44
|
+
createEmptyHookEventInfo,
|
|
45
|
+
findMidInputSlashCommand,
|
|
46
|
+
findSlashCommandTokens,
|
|
47
|
+
formatApprovalModeDescription,
|
|
48
|
+
formatApprovalModeName,
|
|
49
|
+
formatUserPromptExpansionBlockedMessage,
|
|
50
|
+
getAllConfigs,
|
|
51
|
+
getBestSlashCommandMatch,
|
|
52
|
+
getTranslatedSourceDisplayMap,
|
|
53
|
+
hasBlockingBackgroundWork,
|
|
54
|
+
hasSlashCommandPathSeparator,
|
|
55
|
+
isAtCommand,
|
|
56
|
+
isBtwCommand,
|
|
57
|
+
isMidInputCompletableCommand,
|
|
58
|
+
isSlashCommand,
|
|
59
|
+
normalizePartList,
|
|
60
|
+
parseSlashCommand,
|
|
61
|
+
parseStackedSlashCommands,
|
|
62
|
+
refreshExtensionContentRuntime,
|
|
63
|
+
resetBackgroundStateForSessionSwitch,
|
|
64
|
+
serializeUserPromptExpansionPrompt,
|
|
65
|
+
supportsMatchers
|
|
66
|
+
} from "./chunk-LB6DUZ26.js";
|
|
67
|
+
import "./chunk-R5AFZNQW.js";
|
|
10
68
|
import {
|
|
11
69
|
startPostRenderPrefetches
|
|
12
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-2NH6DYI4.js";
|
|
71
|
+
import {
|
|
72
|
+
EXTENSION_RELOAD_FAILED_REASON,
|
|
73
|
+
ExtensionRefreshState,
|
|
74
|
+
appEvents,
|
|
75
|
+
cleanupReviewWorktreeLeases,
|
|
76
|
+
loadHierarchicalGeminiMemory
|
|
77
|
+
} from "./chunk-TPRQ7RZH.js";
|
|
13
78
|
import {
|
|
14
79
|
AboutBox,
|
|
15
80
|
BaseSelectionList,
|
|
@@ -62,12 +127,9 @@ import {
|
|
|
62
127
|
loadLowlight,
|
|
63
128
|
logicalPosToOffset,
|
|
64
129
|
measureElementPosition,
|
|
65
|
-
osc8Hyperlink,
|
|
66
130
|
removeLastGrapheme,
|
|
67
131
|
renderSoftwareCursor,
|
|
68
|
-
sanitizeForOsc,
|
|
69
132
|
splitFencedMarkdown,
|
|
70
|
-
supportsHyperlinks,
|
|
71
133
|
truncateText,
|
|
72
134
|
useArenaCommand,
|
|
73
135
|
useConfig,
|
|
@@ -85,91 +147,21 @@ import {
|
|
|
85
147
|
useTextBuffer,
|
|
86
148
|
useUIActions,
|
|
87
149
|
useUIState
|
|
88
|
-
} from "./chunk-
|
|
89
|
-
import {
|
|
90
|
-
stopAndGetCapturedInput
|
|
91
|
-
} from "./chunk-E4IMU4Y5.js";
|
|
92
|
-
import {
|
|
93
|
-
useAutoAcceptIndicator
|
|
94
|
-
} from "./chunk-JK26TQON.js";
|
|
150
|
+
} from "./chunk-SQCQ4KO2.js";
|
|
95
151
|
import {
|
|
96
152
|
KeypressProvider,
|
|
97
153
|
useFocus,
|
|
98
154
|
useKeypress,
|
|
99
155
|
useKeypressContext
|
|
100
|
-
} from "./chunk-
|
|
101
|
-
import {
|
|
102
|
-
classifyApiError
|
|
103
|
-
} from "./chunk-V7RNNPGC.js";
|
|
104
|
-
import {
|
|
105
|
-
MAX_SUGGESTIONS_TO_SHOW,
|
|
106
|
-
buildMcpResourceRef,
|
|
107
|
-
buildMcpServerRef,
|
|
108
|
-
getExtensionSuggestions,
|
|
109
|
-
handleAtCommand,
|
|
110
|
-
matchMcpServerPrefix,
|
|
111
|
-
resolveAtCommandQuery,
|
|
112
|
-
sanitizeDisplayText
|
|
113
|
-
} from "./chunk-PLQODS7F.js";
|
|
156
|
+
} from "./chunk-LQIW3YFY.js";
|
|
114
157
|
import {
|
|
115
158
|
getCommandDisplayName,
|
|
116
159
|
getCommandSourceBadge
|
|
117
|
-
} from "./chunk-
|
|
118
|
-
import {
|
|
119
|
-
StreamJsonOutputAdapter
|
|
120
|
-
} from "./chunk-7TLUW4ZE.js";
|
|
121
|
-
import {
|
|
122
|
-
BuiltinCommandLoader,
|
|
123
|
-
BundledSkillLoader,
|
|
124
|
-
CommandService,
|
|
125
|
-
DISPLAY_HOOK_EVENTS,
|
|
126
|
-
FileCommandLoader,
|
|
127
|
-
MAX_STACKED_SKILLS,
|
|
128
|
-
McpPromptLoader,
|
|
129
|
-
SavedWorkflowLoader,
|
|
130
|
-
SkillCommandLoader,
|
|
131
|
-
addConfigToMatcherGroup,
|
|
132
|
-
appendUserPromptExpansionAdditionalContext,
|
|
133
|
-
copyToClipboard,
|
|
134
|
-
createEmptyHookEventInfo,
|
|
135
|
-
findMidInputSlashCommand,
|
|
136
|
-
findSlashCommandTokens,
|
|
137
|
-
formatApprovalModeDescription,
|
|
138
|
-
formatApprovalModeName,
|
|
139
|
-
formatUserPromptExpansionBlockedMessage,
|
|
140
|
-
getAllConfigs,
|
|
141
|
-
getBestSlashCommandMatch,
|
|
142
|
-
getTranslatedSourceDisplayMap,
|
|
143
|
-
hasBlockingBackgroundWork,
|
|
144
|
-
hasSlashCommandPathSeparator,
|
|
145
|
-
isAtCommand,
|
|
146
|
-
isBtwCommand,
|
|
147
|
-
isMidInputCompletableCommand,
|
|
148
|
-
isSlashCommand,
|
|
149
|
-
normalizePartList,
|
|
150
|
-
parseSlashCommand,
|
|
151
|
-
parseStackedSlashCommands,
|
|
152
|
-
refreshExtensionContentRuntime,
|
|
153
|
-
resetBackgroundStateForSessionSwitch,
|
|
154
|
-
serializeUserPromptExpansionPrompt,
|
|
155
|
-
supportsMatchers
|
|
156
|
-
} from "./chunk-26CBI4DC.js";
|
|
157
|
-
import {
|
|
158
|
-
EXTENSION_RELOAD_FAILED_REASON,
|
|
159
|
-
ExtensionRefreshState,
|
|
160
|
-
appEvents,
|
|
161
|
-
cleanupReviewWorktreeLeases,
|
|
162
|
-
loadHierarchicalGeminiMemory
|
|
163
|
-
} from "./chunk-ACZIBDYD.js";
|
|
160
|
+
} from "./chunk-RZIX2G32.js";
|
|
164
161
|
import {
|
|
165
162
|
computeSessionStats,
|
|
166
163
|
levelLabel
|
|
167
|
-
} from "./chunk-
|
|
168
|
-
import {
|
|
169
|
-
disableKittyProtocol,
|
|
170
|
-
isKittyProtocolEnabled,
|
|
171
|
-
isKittyProtocolSupported
|
|
172
|
-
} from "./chunk-5DTTYNB7.js";
|
|
164
|
+
} from "./chunk-U7M2DMGW.js";
|
|
173
165
|
import {
|
|
174
166
|
BEL,
|
|
175
167
|
OSC_PREFIX,
|
|
@@ -181,20 +173,18 @@ import {
|
|
|
181
173
|
oscITerm2Notify,
|
|
182
174
|
oscKittyNotify,
|
|
183
175
|
saveClipboardImage,
|
|
184
|
-
wrapForMultiplexer,
|
|
185
176
|
writeOsc52
|
|
186
|
-
} from "./chunk-
|
|
187
|
-
import "./chunk-WSYKDFYR.js";
|
|
177
|
+
} from "./chunk-J56UI34H.js";
|
|
188
178
|
import "./chunk-4WGODMVR.js";
|
|
189
|
-
import "./chunk-KW7NOTN6.js";
|
|
190
179
|
import {
|
|
191
180
|
MaxSizedBox,
|
|
192
181
|
OverflowProvider,
|
|
193
182
|
useOverflowState
|
|
194
|
-
} from "./chunk-
|
|
183
|
+
} from "./chunk-FQK6JAFG.js";
|
|
195
184
|
import {
|
|
196
185
|
GeminiRespondingSpinner,
|
|
197
186
|
GeminiSpinner,
|
|
187
|
+
ICON,
|
|
198
188
|
SCREEN_READER_USER_PREFIX,
|
|
199
189
|
SHELL_COMMAND_NAME,
|
|
200
190
|
StreamingContext,
|
|
@@ -204,10 +194,10 @@ import {
|
|
|
204
194
|
expandCollapsedHistory,
|
|
205
195
|
isCollapsibleTool,
|
|
206
196
|
useStreamingContext
|
|
207
|
-
} from "./chunk-
|
|
197
|
+
} from "./chunk-JXJFVC6E.js";
|
|
208
198
|
import {
|
|
209
199
|
theme
|
|
210
|
-
} from "./chunk-
|
|
200
|
+
} from "./chunk-VAK25FTU.js";
|
|
211
201
|
import {
|
|
212
202
|
require_jsx_runtime
|
|
213
203
|
} from "./chunk-SV5PQVQE.js";
|
|
@@ -224,36 +214,51 @@ import {
|
|
|
224
214
|
use_is_screen_reader_enabled_default,
|
|
225
215
|
use_stdin_default,
|
|
226
216
|
use_stdout_default
|
|
227
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-6GMVPFB2.js";
|
|
228
218
|
import {
|
|
229
|
-
|
|
230
|
-
} from "./chunk-
|
|
231
|
-
import
|
|
232
|
-
|
|
219
|
+
stopAndGetCapturedInput
|
|
220
|
+
} from "./chunk-63P4EL5V.js";
|
|
221
|
+
import {
|
|
222
|
+
disableKittyProtocol,
|
|
223
|
+
isKittyProtocolEnabled,
|
|
224
|
+
isKittyProtocolSupported,
|
|
225
|
+
pushKittyProtocolFlags
|
|
226
|
+
} from "./chunk-PQNHRFJC.js";
|
|
233
227
|
import {
|
|
234
228
|
relaunchApp
|
|
235
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-Y34KJKDC.js";
|
|
236
230
|
import {
|
|
237
231
|
setUpdateHandler
|
|
238
|
-
} from "./chunk-
|
|
239
|
-
import "./chunk-
|
|
240
|
-
import "./chunk-
|
|
241
|
-
import "./chunk-45PO6ZIS.js";
|
|
232
|
+
} from "./chunk-ZFDTEDCF.js";
|
|
233
|
+
import "./chunk-M4FMGVY4.js";
|
|
234
|
+
import "./chunk-K36B6G2O.js";
|
|
242
235
|
import {
|
|
243
236
|
AUTO_THEME_NAME,
|
|
244
237
|
DEFAULT_THEME,
|
|
245
238
|
themeManager
|
|
246
|
-
} from "./chunk-
|
|
239
|
+
} from "./chunk-L5UHQJTJ.js";
|
|
240
|
+
import "./chunk-KW7NOTN6.js";
|
|
241
|
+
import {
|
|
242
|
+
require_react
|
|
243
|
+
} from "./chunk-5QWWOFGG.js";
|
|
244
|
+
import "./chunk-GSN55ZRI.js";
|
|
245
|
+
import "./chunk-6H67XLET.js";
|
|
246
|
+
import "./chunk-7MVVZO4N.js";
|
|
247
|
+
import {
|
|
248
|
+
getErrorMessage as getErrorMessage2
|
|
249
|
+
} from "./chunk-IKYJHJNF.js";
|
|
250
|
+
import "./chunk-2SCDWPXI.js";
|
|
251
|
+
import "./chunk-YAF2MQZ6.js";
|
|
247
252
|
import {
|
|
248
253
|
openQwenAsrRealtimeStream,
|
|
249
254
|
openVoiceStream,
|
|
250
255
|
openVoiceStreamWithRetry
|
|
251
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-BJX6ZSUK.js";
|
|
252
257
|
import {
|
|
253
258
|
recordGoalStatusItem,
|
|
254
259
|
restoreGoalFromHistory
|
|
255
|
-
} from "./chunk-
|
|
256
|
-
import "./chunk-
|
|
260
|
+
} from "./chunk-EBJQ6AXW.js";
|
|
261
|
+
import "./chunk-RHLZR4E5.js";
|
|
257
262
|
import {
|
|
258
263
|
cpLen,
|
|
259
264
|
cpSlice,
|
|
@@ -265,71 +270,69 @@ import {
|
|
|
265
270
|
sanitizeTerminalText,
|
|
266
271
|
stripUnsafeCharacters,
|
|
267
272
|
toCodePoints
|
|
268
|
-
} from "./chunk-
|
|
269
|
-
import "./chunk-
|
|
273
|
+
} from "./chunk-IPUUTYMV.js";
|
|
274
|
+
import "./chunk-WCXCRJYB.js";
|
|
270
275
|
import {
|
|
271
276
|
stringWidth
|
|
272
|
-
} from "./chunk-
|
|
277
|
+
} from "./chunk-2MIN6GRR.js";
|
|
273
278
|
import "./chunk-QHTIBUWB.js";
|
|
274
279
|
import {
|
|
275
280
|
isHistoryItemVisibleAfterRestore
|
|
276
281
|
} from "./chunk-QTERJVPZ.js";
|
|
277
282
|
import "./chunk-3Z43GZUQ.js";
|
|
278
|
-
import "./chunk-RXFQM6FQ.js";
|
|
279
|
-
import "./chunk-CXIOPXRR.js";
|
|
280
|
-
import "./chunk-6H67XLET.js";
|
|
281
|
-
import "./chunk-4MWNZNJ4.js";
|
|
282
|
-
import {
|
|
283
|
-
getErrorMessage as getErrorMessage2
|
|
284
|
-
} from "./chunk-7SSWNGEJ.js";
|
|
285
|
-
import {
|
|
286
|
-
getExtendedSystemInfo
|
|
287
|
-
} from "./chunk-CJQ3FZ2G.js";
|
|
288
|
-
import {
|
|
289
|
-
formatDuration,
|
|
290
|
-
formatMemoryUsage,
|
|
291
|
-
formatRelativeTime,
|
|
292
|
-
formatTokenCount
|
|
293
|
-
} from "./chunk-E5Z2AVNV.js";
|
|
294
|
-
import {
|
|
295
|
-
isInlineModelOverrideAllowed
|
|
296
|
-
} from "./chunk-42W5BDEY.js";
|
|
297
283
|
import {
|
|
298
284
|
assertVoiceBaseUrlNetworkAllowed,
|
|
299
285
|
isKeytermEcho,
|
|
300
286
|
isStreamingVoiceModel,
|
|
301
287
|
resolveVoiceStreamConfig,
|
|
302
288
|
transcribeVoiceAudio
|
|
303
|
-
} from "./chunk-
|
|
289
|
+
} from "./chunk-H4SBPHSA.js";
|
|
304
290
|
import {
|
|
305
291
|
formatUnsupportedVoiceModelMessage,
|
|
306
292
|
isSelectableVoiceModel
|
|
307
|
-
} from "./chunk-
|
|
308
|
-
import "./chunk-
|
|
309
|
-
import "./chunk-
|
|
293
|
+
} from "./chunk-YBL3QUDD.js";
|
|
294
|
+
import "./chunk-ZD6UTE4A.js";
|
|
295
|
+
import "./chunk-RXFQM6FQ.js";
|
|
296
|
+
import "./chunk-PSOO6YXD.js";
|
|
310
297
|
import {
|
|
311
298
|
requestConsentInteractive,
|
|
312
299
|
requestConsentOrFail
|
|
313
|
-
} from "./chunk-
|
|
300
|
+
} from "./chunk-PC6JANNU.js";
|
|
314
301
|
import "./chunk-57OAHC2Y.js";
|
|
315
|
-
import "./chunk-GPMVHZP4.js";
|
|
316
|
-
import "./chunk-6ZBPS62S.js";
|
|
317
|
-
import "./chunk-V6WHFGST.js";
|
|
318
302
|
import {
|
|
319
303
|
createLoadedSettingsAdapter
|
|
320
|
-
} from "./chunk-
|
|
321
|
-
import
|
|
304
|
+
} from "./chunk-IO3IX5Q4.js";
|
|
305
|
+
import {
|
|
306
|
+
getExtendedSystemInfo
|
|
307
|
+
} from "./chunk-MVSUYZDT.js";
|
|
308
|
+
import {
|
|
309
|
+
formatDuration,
|
|
310
|
+
formatMemoryUsage,
|
|
311
|
+
formatRelativeTime,
|
|
312
|
+
formatTokenCount
|
|
313
|
+
} from "./chunk-E5Z2AVNV.js";
|
|
314
|
+
import "./chunk-GLWP3FDB.js";
|
|
322
315
|
import "./chunk-COH43MRJ.js";
|
|
323
|
-
import
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
import "./chunk-
|
|
327
|
-
import "./chunk-
|
|
328
|
-
import "./chunk-
|
|
329
|
-
import "./chunk-
|
|
316
|
+
import {
|
|
317
|
+
isInlineModelOverrideAllowed
|
|
318
|
+
} from "./chunk-KMQ33DO4.js";
|
|
319
|
+
import "./chunk-X5XDDSSH.js";
|
|
320
|
+
import "./chunk-4WIZGAH3.js";
|
|
321
|
+
import "./chunk-7ZCNENPP.js";
|
|
322
|
+
import "./chunk-V6WHFGST.js";
|
|
330
323
|
import {
|
|
331
324
|
loadMcpApprovals
|
|
332
|
-
} from "./chunk-
|
|
325
|
+
} from "./chunk-JVPM2ULZ.js";
|
|
326
|
+
import "./chunk-DP3IHZGG.js";
|
|
327
|
+
import "./chunk-ZNAUOR2I.js";
|
|
328
|
+
import "./chunk-2RFKHEXL.js";
|
|
329
|
+
import "./chunk-LK7CHLVP.js";
|
|
330
|
+
import "./chunk-JLU636DO.js";
|
|
331
|
+
import "./chunk-BK2UNYWD.js";
|
|
332
|
+
import "./chunk-M5GB774H.js";
|
|
333
|
+
import "./chunk-RWTEFFPU.js";
|
|
334
|
+
import "./chunk-UDXSXLER.js";
|
|
335
|
+
import "./chunk-BIQWWWJN.js";
|
|
333
336
|
import {
|
|
334
337
|
CORRUPTED_SUFFIX,
|
|
335
338
|
SettingScope,
|
|
@@ -352,31 +355,27 @@ import {
|
|
|
352
355
|
settingExistsInScope,
|
|
353
356
|
validateSettingValue,
|
|
354
357
|
writeOutputLanguageAndRegisterPath
|
|
355
|
-
} from "./chunk-
|
|
358
|
+
} from "./chunk-TEHGS6UP.js";
|
|
356
359
|
import "./chunk-RKUWKYED.js";
|
|
360
|
+
import "./chunk-GOXKNSDZ.js";
|
|
361
|
+
import "./chunk-IDS7MSUP.js";
|
|
357
362
|
import {
|
|
358
363
|
getCurrentLanguage,
|
|
359
364
|
localizeToolDisplayName,
|
|
360
365
|
t,
|
|
361
366
|
ta
|
|
362
|
-
} from "./chunk-
|
|
363
|
-
import "./chunk-
|
|
364
|
-
import "./chunk-
|
|
365
|
-
import "./chunk-XAGLQITN.js";
|
|
366
|
-
import "./chunk-GOXKNSDZ.js";
|
|
367
|
-
import "./chunk-QRUIS3DN.js";
|
|
368
|
-
import "./chunk-2RFKHEXL.js";
|
|
369
|
-
import "./chunk-IDS7MSUP.js";
|
|
370
|
-
import "./chunk-XFSFZCM5.js";
|
|
367
|
+
} from "./chunk-LKEJ26GS.js";
|
|
368
|
+
import "./chunk-LH2BYDQ5.js";
|
|
369
|
+
import "./chunk-6PEXNQTX.js";
|
|
371
370
|
import "./chunk-URK542T4.js";
|
|
372
371
|
import {
|
|
373
372
|
getCliVersion
|
|
374
|
-
} from "./chunk-
|
|
373
|
+
} from "./chunk-YX324OPW.js";
|
|
375
374
|
import "./chunk-VJNBRRZG.js";
|
|
376
375
|
import {
|
|
377
376
|
isWorkspaceTrusted,
|
|
378
377
|
loadTrustedFolders
|
|
379
|
-
} from "./chunk-
|
|
378
|
+
} from "./chunk-Z2BC6UJ5.js";
|
|
380
379
|
import {
|
|
381
380
|
require_strip_json_comments
|
|
382
381
|
} from "./chunk-ALGGS7UH.js";
|
|
@@ -385,6 +384,7 @@ import {
|
|
|
385
384
|
clearScreen,
|
|
386
385
|
writeStderrLine
|
|
387
386
|
} from "./chunk-OWAK7LMW.js";
|
|
387
|
+
import "./chunk-XFSFZCM5.js";
|
|
388
388
|
import {
|
|
389
389
|
ALIBABA_PROVIDERS,
|
|
390
390
|
AsyncFzf,
|
|
@@ -491,46 +491,52 @@ import {
|
|
|
491
491
|
validateWorkflowName,
|
|
492
492
|
watchRepoBranch,
|
|
493
493
|
writeRuntimeStatus
|
|
494
|
-
} from "./chunk-
|
|
495
|
-
import "./chunk-T4TZQJ7W.js";
|
|
496
|
-
import "./chunk-H6XPXXMH.js";
|
|
494
|
+
} from "./chunk-PHOF65IG.js";
|
|
497
495
|
import "./chunk-5M6IDOMF.js";
|
|
498
|
-
import "./chunk-
|
|
499
|
-
import "./chunk-
|
|
500
|
-
import "./chunk-
|
|
501
|
-
import "./chunk-
|
|
502
|
-
import "./chunk-
|
|
503
|
-
import "./chunk-XU457J4V.js";
|
|
496
|
+
import "./chunk-TWPJO254.js";
|
|
497
|
+
import "./chunk-H6XPXXMH.js";
|
|
498
|
+
import "./chunk-K4XWPEWB.js";
|
|
499
|
+
import "./chunk-TOFQCPDC.js";
|
|
500
|
+
import "./chunk-IRH27ZC2.js";
|
|
504
501
|
import "./chunk-VDDGDZMA.js";
|
|
505
|
-
import "./chunk-
|
|
506
|
-
import "./chunk-
|
|
502
|
+
import "./chunk-FNQ6T3CV.js";
|
|
503
|
+
import "./chunk-ZOIFNCKL.js";
|
|
504
|
+
import "./chunk-PWTZEM3C.js";
|
|
505
|
+
import "./chunk-KRXPRVGL.js";
|
|
507
506
|
import "./chunk-6PVPNMXU.js";
|
|
508
507
|
import {
|
|
509
508
|
resolveModelId
|
|
510
|
-
} from "./chunk-
|
|
509
|
+
} from "./chunk-MZAXJAUM.js";
|
|
510
|
+
import "./chunk-SZRN75WQ.js";
|
|
511
|
+
import "./chunk-HTO4JFDZ.js";
|
|
511
512
|
import "./chunk-CPBF7KYF.js";
|
|
512
|
-
import {
|
|
513
|
-
HOOKS_CONFIG_FIELDS
|
|
514
|
-
} from "./chunk-7VUQQBR7.js";
|
|
515
|
-
import "./chunk-LIZRAKPB.js";
|
|
516
513
|
import {
|
|
517
514
|
APPROVAL_MODES,
|
|
518
515
|
getStartupContextLength,
|
|
519
516
|
isSystemReminderContent,
|
|
520
517
|
runOutsideAgentContext
|
|
521
|
-
} from "./chunk-
|
|
518
|
+
} from "./chunk-L26JL52R.js";
|
|
522
519
|
import "./chunk-6AM5D4ME.js";
|
|
520
|
+
import "./chunk-JZA3JUDJ.js";
|
|
521
|
+
import {
|
|
522
|
+
HOOKS_CONFIG_FIELDS
|
|
523
|
+
} from "./chunk-3QMGYBFN.js";
|
|
523
524
|
import "./chunk-JCW2R7WC.js";
|
|
524
525
|
import {
|
|
525
526
|
isPathWithinRoot
|
|
526
|
-
} from "./chunk-
|
|
527
|
-
import "./chunk-
|
|
527
|
+
} from "./chunk-M5JM7OSF.js";
|
|
528
|
+
import "./chunk-OHNBB4XR.js";
|
|
529
|
+
import "./chunk-E5TUC6CA.js";
|
|
528
530
|
import {
|
|
529
|
-
|
|
530
|
-
|
|
531
|
+
osc8Hyperlink,
|
|
532
|
+
qwenOAuth2Events,
|
|
533
|
+
sanitizeForOsc,
|
|
534
|
+
supportsHyperlinks,
|
|
535
|
+
wrapForMultiplexer
|
|
536
|
+
} from "./chunk-EPDRMGT4.js";
|
|
531
537
|
import "./chunk-JESCGQM3.js";
|
|
532
|
-
import "./chunk-
|
|
533
|
-
import "./chunk-
|
|
538
|
+
import "./chunk-NH6KE4JX.js";
|
|
539
|
+
import "./chunk-USTWD7QV.js";
|
|
534
540
|
import {
|
|
535
541
|
REASONING_EFFORT_TIERS
|
|
536
542
|
} from "./chunk-XVNQMZ2I.js";
|
|
@@ -540,12 +546,17 @@ import {
|
|
|
540
546
|
} from "./chunk-FODK6UMO.js";
|
|
541
547
|
import "./chunk-GLNBDYUX.js";
|
|
542
548
|
import "./chunk-DJ2GSRLV.js";
|
|
549
|
+
import "./chunk-ZJHVAS7M.js";
|
|
550
|
+
import "./chunk-NIBLUX3Y.js";
|
|
551
|
+
import "./chunk-BPJSQIJX.js";
|
|
552
|
+
import "./chunk-P3QQPMQA.js";
|
|
553
|
+
import "./chunk-6FGBXPWM.js";
|
|
554
|
+
import "./chunk-LS77BEZP.js";
|
|
543
555
|
import {
|
|
544
556
|
ApiCancelEvent,
|
|
545
557
|
AuthEvent,
|
|
546
558
|
ConversationFinishedEvent,
|
|
547
559
|
DiscoveredMCPTool,
|
|
548
|
-
MAINLINE_CODER_MODEL,
|
|
549
560
|
ModelSlashCommandEvent,
|
|
550
561
|
PromptSuggestionEvent,
|
|
551
562
|
SpeculationEvent,
|
|
@@ -581,7 +592,7 @@ import {
|
|
|
581
592
|
runVisionBridge,
|
|
582
593
|
shouldRunVisionBridge,
|
|
583
594
|
splitImageParts
|
|
584
|
-
} from "./chunk-
|
|
595
|
+
} from "./chunk-CIKQ7KKO.js";
|
|
585
596
|
import "./chunk-VGC4I5JJ.js";
|
|
586
597
|
import {
|
|
587
598
|
AUTO_MEMORY_INDEX_FILENAME,
|
|
@@ -589,30 +600,30 @@ import {
|
|
|
589
600
|
getAutoMemoryRoot,
|
|
590
601
|
getUserAutoMemoryRoot,
|
|
591
602
|
isAnyAutoMemPath
|
|
592
|
-
} from "./chunk-
|
|
603
|
+
} from "./chunk-MUP3T3AD.js";
|
|
593
604
|
import {
|
|
594
|
-
|
|
595
|
-
} from "./chunk-
|
|
605
|
+
MAINLINE_CODER_MODEL
|
|
606
|
+
} from "./chunk-IKCX4CCL.js";
|
|
607
|
+
import "./chunk-46UV252V.js";
|
|
596
608
|
import "./chunk-A4UCTEB5.js";
|
|
597
609
|
import "./chunk-XWRJCPHC.js";
|
|
598
|
-
import "./chunk-QNLNLENL.js";
|
|
599
610
|
import {
|
|
600
|
-
|
|
601
|
-
} from "./chunk-
|
|
611
|
+
DEFAULT_TOKEN_LIMIT
|
|
612
|
+
} from "./chunk-UW5EOVUN.js";
|
|
613
|
+
import "./chunk-2JZBVYTU.js";
|
|
614
|
+
import "./chunk-5I2IWRSH.js";
|
|
602
615
|
import {
|
|
603
|
-
|
|
604
|
-
} from "./chunk-
|
|
605
|
-
import "./chunk-
|
|
606
|
-
import "./chunk-FCMNKVXT.js";
|
|
607
|
-
import "./chunk-7362QS5B.js";
|
|
616
|
+
atomicWriteFileSync
|
|
617
|
+
} from "./chunk-A5L3JMUA.js";
|
|
618
|
+
import "./chunk-MB4MZHMJ.js";
|
|
608
619
|
import "./chunk-HTR4WV6U.js";
|
|
609
|
-
import "./chunk-
|
|
620
|
+
import "./chunk-BULDBTYC.js";
|
|
610
621
|
import "./chunk-U7ZFW55U.js";
|
|
611
|
-
import "./chunk-
|
|
622
|
+
import "./chunk-UUUTRMI2.js";
|
|
612
623
|
import {
|
|
613
624
|
ToolNames,
|
|
614
625
|
isShellProgressData
|
|
615
|
-
} from "./chunk-
|
|
626
|
+
} from "./chunk-PR75REBZ.js";
|
|
616
627
|
import {
|
|
617
628
|
Storage,
|
|
618
629
|
UnauthorizedError,
|
|
@@ -624,21 +635,27 @@ import {
|
|
|
624
635
|
isNodeError,
|
|
625
636
|
shortenPath,
|
|
626
637
|
tildeifyPath
|
|
627
|
-
} from "./chunk-
|
|
628
|
-
import "./chunk-
|
|
638
|
+
} from "./chunk-NL7LTRLR.js";
|
|
639
|
+
import "./chunk-QAF7NMK7.js";
|
|
640
|
+
import {
|
|
641
|
+
registerCleanup,
|
|
642
|
+
runExitCleanup
|
|
643
|
+
} from "./chunk-PWVFN2LF.js";
|
|
629
644
|
import {
|
|
630
645
|
finalizeStartupProfile,
|
|
631
646
|
profileCheckpoint
|
|
632
647
|
} from "./chunk-QSWDGAIC.js";
|
|
633
648
|
import "./chunk-Q7YDKOGY.js";
|
|
634
|
-
import {
|
|
635
|
-
registerCleanup,
|
|
636
|
-
runExitCleanup
|
|
637
|
-
} from "./chunk-GSX6P2JW.js";
|
|
638
649
|
import "./chunk-75DOP5OR.js";
|
|
639
650
|
import "./chunk-DMTGGOSA.js";
|
|
640
651
|
import "./chunk-YQ3U5MUC.js";
|
|
641
|
-
import
|
|
652
|
+
import {
|
|
653
|
+
FinishReason
|
|
654
|
+
} from "./chunk-22C7BQ6D.js";
|
|
655
|
+
import "./chunk-TYAMGABM.js";
|
|
656
|
+
import "./chunk-FCMNKVXT.js";
|
|
657
|
+
import "./chunk-AMDSOFFV.js";
|
|
658
|
+
import "./chunk-TARRHLLG.js";
|
|
642
659
|
import {
|
|
643
660
|
init_esbuild_shims
|
|
644
661
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2281,10 +2298,15 @@ function isSyntheticHistoryItem(item) {
|
|
|
2281
2298
|
case "stop_hook_loop":
|
|
2282
2299
|
case "stop_hook_system_message":
|
|
2283
2300
|
return true;
|
|
2301
|
+
// Steer messages (mid-turn user injections) are typed 'user' but
|
|
2302
|
+
// carry sentToModel === false; treat them as synthetic so the
|
|
2303
|
+
// cancel handler can still do a full rewind when only a steer
|
|
2304
|
+
// follows the real prompt.
|
|
2305
|
+
case "user":
|
|
2306
|
+
return item.sentToModel === false;
|
|
2284
2307
|
// Meaningful: user input, model text, tool runs, slash-command
|
|
2285
2308
|
// results the user explicitly asked for. Auto-restore must bail
|
|
2286
2309
|
// when any of these appear after the candidate user prompt.
|
|
2287
|
-
case "user":
|
|
2288
2310
|
case "user_shell":
|
|
2289
2311
|
case "gemini":
|
|
2290
2312
|
case "gemini_content":
|
|
@@ -2328,11 +2350,18 @@ function itemsAfterAreOnlySynthetic(history, fromIndex) {
|
|
|
2328
2350
|
__name(itemsAfterAreOnlySynthetic, "itemsAfterAreOnlySynthetic");
|
|
2329
2351
|
function findLastUserItemIndex(history) {
|
|
2330
2352
|
for (let i = history.length - 1; i >= 0; i--) {
|
|
2331
|
-
|
|
2353
|
+
const item = history[i];
|
|
2354
|
+
if (item.type === "user" && item.sentToModel !== false) return i;
|
|
2332
2355
|
}
|
|
2333
2356
|
return -1;
|
|
2334
2357
|
}
|
|
2335
2358
|
__name(findLastUserItemIndex, "findLastUserItemIndex");
|
|
2359
|
+
function realUserPromptTexts(history) {
|
|
2360
|
+
return history.filter(
|
|
2361
|
+
(item) => item.type === "user" && item.sentToModel !== false && typeof item.text === "string" && item.text.trim() !== ""
|
|
2362
|
+
).map((item) => item.text);
|
|
2363
|
+
}
|
|
2364
|
+
__name(realUserPromptTexts, "realUserPromptTexts");
|
|
2336
2365
|
function buildThoughtHeadIdMap(items) {
|
|
2337
2366
|
const map = /* @__PURE__ */ new Map();
|
|
2338
2367
|
for (let i = 0; i < items.length; i++) {
|
|
@@ -2988,9 +3017,9 @@ function VirtualizedList(props, ref) {
|
|
|
2988
3017
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { width: 1, flexDirection: "column", flexShrink: 0, children: Array.from({ length: trackLen }, (_, i) => {
|
|
2989
3018
|
const inThumb = i >= thumbTop && i < thumbTop + thumbLen;
|
|
2990
3019
|
if (!scrollbarThumbActive) {
|
|
2991
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { children: " " }, i);
|
|
3020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { selectable: false, children: " " }, i);
|
|
2992
3021
|
}
|
|
2993
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { dimColor: !inThumb, children: inThumb ? "\u2588" : "\u2502" }, i);
|
|
3022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { dimColor: !inThumb, selectable: false, children: inThumb ? "\u2588" : "\u2502" }, i);
|
|
2994
3023
|
}) });
|
|
2995
3024
|
}, [
|
|
2996
3025
|
showScrollbar,
|
|
@@ -3288,24 +3317,79 @@ function getSelectedText(frame, selection) {
|
|
|
3288
3317
|
return "";
|
|
3289
3318
|
}
|
|
3290
3319
|
const { sx, sy, ex, ey } = selection;
|
|
3291
|
-
|
|
3320
|
+
let text = "";
|
|
3292
3321
|
for (let y = sy; y <= ey; y++) {
|
|
3293
3322
|
const row = frame.cells[y];
|
|
3294
3323
|
if (!row) {
|
|
3295
|
-
|
|
3324
|
+
if (y < ey) {
|
|
3325
|
+
text += "\n";
|
|
3326
|
+
}
|
|
3296
3327
|
continue;
|
|
3297
3328
|
}
|
|
3298
3329
|
const startX = y === sy ? sx : 0;
|
|
3299
3330
|
const endX = y === ey ? ex : row.length - 1;
|
|
3300
|
-
let text = "";
|
|
3301
3331
|
for (let x = Math.max(0, startX); x <= endX && x < row.length; x++) {
|
|
3302
|
-
|
|
3332
|
+
if (row[x].selectable) {
|
|
3333
|
+
text += row[x].value;
|
|
3334
|
+
}
|
|
3335
|
+
}
|
|
3336
|
+
if (y < ey) {
|
|
3337
|
+
text += boundaryJoiner(frame, selection, y);
|
|
3303
3338
|
}
|
|
3304
|
-
lines.push(text.replace(/\s+$/u, ""));
|
|
3305
3339
|
}
|
|
3306
|
-
return
|
|
3340
|
+
return text;
|
|
3307
3341
|
}
|
|
3308
3342
|
__name(getSelectedText, "getSelectedText");
|
|
3343
|
+
function selectedFlows(frame, selection, y) {
|
|
3344
|
+
const row = frame.cells[y] ?? [];
|
|
3345
|
+
const startX = y === selection.sy ? selection.sx : 0;
|
|
3346
|
+
const endX = y === selection.ey ? selection.ex : row.length - 1;
|
|
3347
|
+
const flows = /* @__PURE__ */ new Set();
|
|
3348
|
+
for (let x = Math.max(0, startX); x <= endX && x < row.length; x++) {
|
|
3349
|
+
const cell = row[x];
|
|
3350
|
+
if (cell.selectable && cell.flowId !== null) {
|
|
3351
|
+
flows.add(cell.flowId);
|
|
3352
|
+
}
|
|
3353
|
+
}
|
|
3354
|
+
if (flows.size > 0) {
|
|
3355
|
+
return flows;
|
|
3356
|
+
}
|
|
3357
|
+
for (const boundaryY of [y - 1, y]) {
|
|
3358
|
+
const boundaryRow = frame.boundaries[boundaryY] ?? [];
|
|
3359
|
+
for (let x = Math.max(0, startX); x <= endX && x < boundaryRow.length; x++) {
|
|
3360
|
+
const claim = boundaryRow[x];
|
|
3361
|
+
if (claim?.selectable) {
|
|
3362
|
+
flows.add(claim.flowId);
|
|
3363
|
+
}
|
|
3364
|
+
}
|
|
3365
|
+
}
|
|
3366
|
+
return flows;
|
|
3367
|
+
}
|
|
3368
|
+
__name(selectedFlows, "selectedFlows");
|
|
3369
|
+
function boundaryJoiner(frame, selection, y) {
|
|
3370
|
+
const currentFlows = selectedFlows(frame, selection, y);
|
|
3371
|
+
const nextFlows = selectedFlows(frame, selection, y + 1);
|
|
3372
|
+
const [currentFlow] = currentFlows;
|
|
3373
|
+
const [nextFlow] = nextFlows;
|
|
3374
|
+
if (currentFlows.size !== 1 || nextFlows.size !== 1 || currentFlow !== nextFlow) {
|
|
3375
|
+
return "\n";
|
|
3376
|
+
}
|
|
3377
|
+
const flowId = currentFlow;
|
|
3378
|
+
const claims = (frame.boundaries[y] ?? []).filter(
|
|
3379
|
+
(claim) => claim !== null && claim.selectable && claim.flowId === flowId
|
|
3380
|
+
);
|
|
3381
|
+
if (claims.length === 0) {
|
|
3382
|
+
return "\n";
|
|
3383
|
+
}
|
|
3384
|
+
const first = claims[0];
|
|
3385
|
+
if (claims.some(
|
|
3386
|
+
(claim) => claim.kind !== first.kind || claim.joiner !== first.joiner
|
|
3387
|
+
)) {
|
|
3388
|
+
return "\n";
|
|
3389
|
+
}
|
|
3390
|
+
return first.kind === "soft" ? first.joiner : "\n";
|
|
3391
|
+
}
|
|
3392
|
+
__name(boundaryJoiner, "boundaryJoiner");
|
|
3309
3393
|
|
|
3310
3394
|
// packages/cli/src/ui/selection/selection-span.ts
|
|
3311
3395
|
init_esbuild_shims();
|
|
@@ -3646,7 +3730,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3646
3730
|
addSourceBlockCounts(runningOffsets, item.text);
|
|
3647
3731
|
return { item, sourceCopyIndexOffsets: offsets };
|
|
3648
3732
|
}
|
|
3649
|
-
if (item.type === "user") {
|
|
3733
|
+
if (item.type === "user" && item.sentToModel !== false) {
|
|
3650
3734
|
runningOffsets = createEmptySourceCopyOffsets();
|
|
3651
3735
|
}
|
|
3652
3736
|
return { item, sourceCopyIndexOffsets: void 0 };
|
|
@@ -3670,7 +3754,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3670
3754
|
addSourceBlockCounts(runningOffsets, item.text);
|
|
3671
3755
|
return { item, sourceCopyIndexOffsets: offsets };
|
|
3672
3756
|
}
|
|
3673
|
-
if (item.type === "user") {
|
|
3757
|
+
if (item.type === "user" && item.sentToModel !== false) {
|
|
3674
3758
|
runningOffsets = createEmptySourceCopyOffsets();
|
|
3675
3759
|
}
|
|
3676
3760
|
return { item, sourceCopyIndexOffsets: void 0 };
|
|
@@ -5290,7 +5374,7 @@ var SessionTab = /* @__PURE__ */ __name(() => {
|
|
|
5290
5374
|
Object.keys(metrics.models).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
|
|
5291
5375
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text, { bold: true, color: theme.text.primary, children: t("Models") }),
|
|
5292
5376
|
Object.entries(metrics.models).map(([name, m], i) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Box_default, { children: [
|
|
5293
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text, { color: SERIES_COLORS[i % SERIES_COLORS.length], children: "
|
|
5377
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text, { color: SERIES_COLORS[i % SERIES_COLORS.length], children: ICON.CIRCLE_FILLED + " " }),
|
|
5294
5378
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Text, { color: theme.text.primary, children: [
|
|
5295
5379
|
name,
|
|
5296
5380
|
" "
|
|
@@ -7161,7 +7245,7 @@ function SettingsDialog({
|
|
|
7161
7245
|
Text,
|
|
7162
7246
|
{
|
|
7163
7247
|
color: isActive ? theme.status.success : theme.text.secondary,
|
|
7164
|
-
children: isActive ?
|
|
7248
|
+
children: isActive ? ICON.CIRCLE_FILLED : ""
|
|
7165
7249
|
}
|
|
7166
7250
|
) }),
|
|
7167
7251
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Box_default, { flexGrow: 1, flexShrink: 1, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
@@ -9067,7 +9151,7 @@ function ModelIdsStep({
|
|
|
9067
9151
|
const isSelected = selectedRecommendationKeys.includes(item.key);
|
|
9068
9152
|
const textColor = isFocused ? theme.status.success : isSelected ? theme.text.accent : theme.text.primary;
|
|
9069
9153
|
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Box_default, { alignItems: "flex-start", children: [
|
|
9070
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Box_default, { minWidth: 4, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Text, { color: textColor, children: isSelected ?
|
|
9154
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Box_default, { minWidth: 4, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Text, { color: textColor, children: isSelected ? ICON.RADIO_FILLED : ICON.CIRCLE_EMPTY }) }),
|
|
9071
9155
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Text, { color: textColor, children: item.label }) })
|
|
9072
9156
|
] }, item.key);
|
|
9073
9157
|
}) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Text, { color: theme.text.secondary, children: t("No recommended models match.") }) }),
|
|
@@ -9109,7 +9193,7 @@ function AdvancedConfigStep({
|
|
|
9109
9193
|
modalityPdf,
|
|
9110
9194
|
contextWindowSize
|
|
9111
9195
|
} = flow.state;
|
|
9112
|
-
const checkmark = /* @__PURE__ */ __name((v) => v ?
|
|
9196
|
+
const checkmark = /* @__PURE__ */ __name((v) => v ? ICON.RADIO_FILLED : ICON.CIRCLE_EMPTY, "checkmark");
|
|
9113
9197
|
const cursor = /* @__PURE__ */ __name((index) => focusedConfigIndex === index ? "\u203A" : " ", "cursor");
|
|
9114
9198
|
const ctxIdx = modalityEnabled ? 6 : 2;
|
|
9115
9199
|
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Box_default, { marginTop: 1, flexDirection: "column", children: [
|
|
@@ -10857,6 +10941,7 @@ function ModelDialog({
|
|
|
10857
10941
|
isFastModelMode,
|
|
10858
10942
|
isVoiceModelMode,
|
|
10859
10943
|
isVisionModelMode,
|
|
10944
|
+
isImageModelMode,
|
|
10860
10945
|
persistScope,
|
|
10861
10946
|
availableTerminalHeight
|
|
10862
10947
|
}) {
|
|
@@ -10868,10 +10953,14 @@ function ModelDialog({
|
|
|
10868
10953
|
const authType = config?.getAuthType();
|
|
10869
10954
|
const availableModelEntries = (0, import_react34.useMemo)(() => {
|
|
10870
10955
|
const allModels = config ? config.getAllConfiguredModels() : [];
|
|
10871
|
-
const runtimeModels = allModels.filter((m) => m.isRuntimeModel);
|
|
10872
|
-
const registryModels = allModels.filter(
|
|
10873
|
-
|
|
10874
|
-
|
|
10956
|
+
const runtimeModels = isImageModelMode ? [] : allModels.filter((m) => m.isRuntimeModel);
|
|
10957
|
+
const registryModels = allModels.filter((m) => {
|
|
10958
|
+
const imageModelSelector = encodeVisionModelSelector(
|
|
10959
|
+
buildModelSelectionKey(m.authType, m.id, m.baseUrl)
|
|
10960
|
+
);
|
|
10961
|
+
const isSelectableImageModel = isImageModelMode ? m.imageOnly === true && config?.resolveImageGenerationModel(imageModelSelector) !== void 0 : m.imageOnly !== true;
|
|
10962
|
+
return !m.isRuntimeModel && (m.authType !== "qwen-oauth" /* QWEN_OAUTH */ || authType === "qwen-oauth" /* QWEN_OAUTH */) && isSelectableImageModel && (isFastModelMode || !m.fastOnly) && (isVoiceModelMode || !m.voiceOnly);
|
|
10963
|
+
});
|
|
10875
10964
|
const modelsByAuthTypeMap = /* @__PURE__ */ new Map();
|
|
10876
10965
|
for (const model of registryModels) {
|
|
10877
10966
|
const authType2 = model.authType;
|
|
@@ -10906,7 +10995,7 @@ function ModelDialog({
|
|
|
10906
10995
|
}
|
|
10907
10996
|
}
|
|
10908
10997
|
return result;
|
|
10909
|
-
}, [authType, config, isFastModelMode, isVoiceModelMode]);
|
|
10998
|
+
}, [authType, config, isFastModelMode, isImageModelMode, isVoiceModelMode]);
|
|
10910
10999
|
const MODEL_OPTIONS = (0, import_react34.useMemo)(
|
|
10911
11000
|
() => availableModelEntries.map(
|
|
10912
11001
|
({ authType: t2, model, isRuntime, snapshotId }) => {
|
|
@@ -10972,7 +11061,9 @@ function ModelDialog({
|
|
|
10972
11061
|
const fastModelSetting = settings?.merged?.fastModel;
|
|
10973
11062
|
const voiceModelSetting = settings?.merged?.voiceModel;
|
|
10974
11063
|
const visionModelSetting = settings?.merged?.visionModel;
|
|
11064
|
+
const imageModelSetting = settings?.merged?.imageModel;
|
|
10975
11065
|
const parsedVisionModelValue = parseVisionModelSetting(visionModelSetting);
|
|
11066
|
+
const parsedImageModelValue = parseVisionModelSetting(imageModelSetting);
|
|
10976
11067
|
const parsedFastModelSetting = (0, import_react34.useMemo)(() => {
|
|
10977
11068
|
if (!isFastModelMode) return void 0;
|
|
10978
11069
|
try {
|
|
@@ -10989,8 +11080,16 @@ function ModelDialog({
|
|
|
10989
11080
|
return void 0;
|
|
10990
11081
|
}
|
|
10991
11082
|
}, [parsedVisionModelValue?.selector, isVisionModelMode]);
|
|
10992
|
-
const
|
|
10993
|
-
|
|
11083
|
+
const parsedImageModelSetting = (0, import_react34.useMemo)(() => {
|
|
11084
|
+
if (!isImageModelMode) return void 0;
|
|
11085
|
+
try {
|
|
11086
|
+
return resolveModelId(parsedImageModelValue?.selector);
|
|
11087
|
+
} catch {
|
|
11088
|
+
return void 0;
|
|
11089
|
+
}
|
|
11090
|
+
}, [parsedImageModelValue?.selector, isImageModelMode]);
|
|
11091
|
+
const preferredModelId = isFastModelMode && parsedFastModelSetting ? parsedFastModelSetting.modelId : isVisionModelMode && parsedVisionModelSetting ? parsedVisionModelSetting.modelId : isImageModelMode && parsedImageModelSetting ? parsedImageModelSetting.modelId : config?.getModel() || MAINLINE_CODER_MODEL;
|
|
11092
|
+
const activeRuntimeSnapshot = isFastModelMode || isVoiceModelMode || isVisionModelMode || isImageModelMode ? void 0 : config?.getActiveRuntimeModelSnapshot?.();
|
|
10994
11093
|
const currentBaseUrl = config?.getModelsConfig().getGenerationConfig()?.baseUrl;
|
|
10995
11094
|
const preferredFastModelEntry = isFastModelMode && parsedFastModelSetting ? parsedFastModelSetting.authType ? availableModelEntries.find(
|
|
10996
11095
|
({ authType: t2, model }) => t2 === parsedFastModelSetting.authType && model.id === parsedFastModelSetting.modelId
|
|
@@ -11006,6 +11105,11 @@ function ModelDialog({
|
|
|
11006
11105
|
) : availableModelEntries.find(
|
|
11007
11106
|
({ model }) => model.id === parsedVisionModelSetting.modelId && matchesVisionModelBaseUrl(model)
|
|
11008
11107
|
) : void 0;
|
|
11108
|
+
const preferredImageModelEntry = isImageModelMode && parsedImageModelSetting ? parsedImageModelSetting.authType ? availableModelEntries.find(
|
|
11109
|
+
({ authType: t2, model }) => t2 === parsedImageModelSetting.authType && model.id === parsedImageModelSetting.modelId && (!parsedImageModelValue?.baseUrl || model.baseUrl === parsedImageModelValue.baseUrl)
|
|
11110
|
+
) : availableModelEntries.find(
|
|
11111
|
+
({ model }) => model.id === parsedImageModelSetting.modelId && (!parsedImageModelValue?.baseUrl || model.baseUrl === parsedImageModelValue.baseUrl)
|
|
11112
|
+
) : void 0;
|
|
11009
11113
|
const preferredKey = activeRuntimeSnapshot ? activeRuntimeSnapshot.id : preferredVoiceModelEntry ? buildModelSelectionKey(
|
|
11010
11114
|
preferredVoiceModelEntry.authType,
|
|
11011
11115
|
preferredVoiceModelEntry.model.id,
|
|
@@ -11014,14 +11118,22 @@ function ModelDialog({
|
|
|
11014
11118
|
preferredVisionModelEntry.authType,
|
|
11015
11119
|
preferredVisionModelEntry.model.id,
|
|
11016
11120
|
preferredVisionModelEntry.model.baseUrl
|
|
11121
|
+
) : preferredImageModelEntry ? buildModelSelectionKey(
|
|
11122
|
+
preferredImageModelEntry.authType,
|
|
11123
|
+
preferredImageModelEntry.model.id,
|
|
11124
|
+
preferredImageModelEntry.model.baseUrl
|
|
11017
11125
|
) : preferredFastModelEntry ? buildModelSelectionKey(
|
|
11018
11126
|
preferredFastModelEntry.authType,
|
|
11019
11127
|
preferredFastModelEntry.model.id,
|
|
11020
11128
|
preferredFastModelEntry.model.baseUrl
|
|
11021
|
-
) : authType ? buildModelSelectionKey(
|
|
11129
|
+
) : authType ? buildModelSelectionKey(
|
|
11130
|
+
authType,
|
|
11131
|
+
preferredModelId,
|
|
11132
|
+
currentBaseUrl
|
|
11133
|
+
) : "";
|
|
11022
11134
|
useKeypress(
|
|
11023
11135
|
(key) => {
|
|
11024
|
-
if (key.name === "escape" || key.name === "left" && (isFastModelMode || isVoiceModelMode || isVisionModelMode)) {
|
|
11136
|
+
if (key.name === "escape" || key.name === "left" && (isFastModelMode || isVoiceModelMode || isVisionModelMode || isImageModelMode)) {
|
|
11025
11137
|
onClose();
|
|
11026
11138
|
}
|
|
11027
11139
|
},
|
|
@@ -11134,6 +11246,36 @@ ${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge ma
|
|
|
11134
11246
|
onClose();
|
|
11135
11247
|
return;
|
|
11136
11248
|
}
|
|
11249
|
+
if (isImageModelMode) {
|
|
11250
|
+
if (!selectedEntry || !config) {
|
|
11251
|
+
setErrorMessage(t("Selected image model is unavailable."));
|
|
11252
|
+
return;
|
|
11253
|
+
}
|
|
11254
|
+
const imageModel = encodeVisionModelSelector(selected);
|
|
11255
|
+
const imageModelDisplay = parseVisionModelSetting(imageModel)?.selector ?? imageModel;
|
|
11256
|
+
if (!config.resolveImageGenerationModel(imageModel)) {
|
|
11257
|
+
setErrorMessage(
|
|
11258
|
+
t(
|
|
11259
|
+
"'{{model}}' must declare a valid HTTPS baseUrl and credential environment variable.",
|
|
11260
|
+
{ model: imageModelDisplay }
|
|
11261
|
+
)
|
|
11262
|
+
);
|
|
11263
|
+
return;
|
|
11264
|
+
}
|
|
11265
|
+
const scope = resolvePersistScope(settings, persistScope);
|
|
11266
|
+
settings.setValue(scope, "imageModel", imageModel);
|
|
11267
|
+
await config.setImageModel(imageModel);
|
|
11268
|
+
const scopeSuffix = persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "";
|
|
11269
|
+
uiState?.historyManager.addItem(
|
|
11270
|
+
{
|
|
11271
|
+
type: "success",
|
|
11272
|
+
text: `${t("Image Model")}: ${imageModelDisplay}${scopeSuffix}`
|
|
11273
|
+
},
|
|
11274
|
+
Date.now()
|
|
11275
|
+
);
|
|
11276
|
+
onClose();
|
|
11277
|
+
return;
|
|
11278
|
+
}
|
|
11137
11279
|
const isQwenOAuthSelection = selected.startsWith(`${"qwen-oauth" /* QWEN_OAUTH */}::`) || selected.startsWith("$runtime|") && selected.split("|")[1] === "qwen-oauth" /* QWEN_OAUTH */;
|
|
11138
11280
|
const isRuntimeOAuthSelection = selected.startsWith(
|
|
11139
11281
|
`$runtime|${"qwen-oauth" /* QWEN_OAUTH */}|`
|
|
@@ -11221,6 +11363,7 @@ ${baseErrorMessage}`);
|
|
|
11221
11363
|
isFastModelMode,
|
|
11222
11364
|
isVoiceModelMode,
|
|
11223
11365
|
isVisionModelMode,
|
|
11366
|
+
isImageModelMode,
|
|
11224
11367
|
availableModelEntries,
|
|
11225
11368
|
persistScope
|
|
11226
11369
|
]
|
|
@@ -11235,7 +11378,7 @@ ${baseErrorMessage}`);
|
|
|
11235
11378
|
padding: 1,
|
|
11236
11379
|
width: "100%",
|
|
11237
11380
|
children: [
|
|
11238
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Text, { bold: true, children: (isVoiceModelMode ? t("Select Voice Model") : isVisionModelMode ? t("Select Vision Model") : isFastModelMode ? t("Select Fast Model") : t("Select Model")) + (persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "") }),
|
|
11381
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Text, { bold: true, children: (isVoiceModelMode ? t("Select Voice Model") : isVisionModelMode ? t("Select Vision Model") : isImageModelMode ? t("Select Image Model") : isFastModelMode ? t("Select Fast Model") : t("Select Model")) + (persistScope === "workspace" ? t(" (this project)") : persistScope === "user" ? t(" (global)") : "") }),
|
|
11239
11382
|
!hasModels ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Box_default, { marginTop: 1, flexDirection: "column", children: [
|
|
11240
11383
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Text, { color: theme.status.warning, children: t(
|
|
11241
11384
|
"No models available for the current authentication type ({{authType}}).",
|
|
@@ -11331,7 +11474,9 @@ function ArenaStartDialog({
|
|
|
11331
11474
|
const [selectedKeys, setSelectedKeys] = (0, import_react35.useState)([]);
|
|
11332
11475
|
const modelItems = (0, import_react35.useMemo)(() => {
|
|
11333
11476
|
const allModels = config.getAllConfiguredModels();
|
|
11334
|
-
const selectableModels = allModels.filter(
|
|
11477
|
+
const selectableModels = allModels.filter(
|
|
11478
|
+
(model) => !model.isRuntimeModel && !model.imageOnly
|
|
11479
|
+
);
|
|
11335
11480
|
return selectableModels.map((model) => {
|
|
11336
11481
|
const token = `${model.authType}:${model.id}`;
|
|
11337
11482
|
const isQwenOauth = model.authType === "qwen-oauth" /* QWEN_OAUTH */;
|
|
@@ -13925,7 +14070,7 @@ var AgentSelectionStep = /* @__PURE__ */ __name(({
|
|
|
13925
14070
|
const renderAgentItem = /* @__PURE__ */ __name((agent, index, isSelected) => {
|
|
13926
14071
|
const textColor = isSelected ? theme.text.accent : theme.text.primary;
|
|
13927
14072
|
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Box_default, { alignItems: "center", children: [
|
|
13928
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Box_default, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Text, { color: isSelected ? theme.text.accent : theme.text.primary, children: isSelected ?
|
|
14073
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Box_default, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Text, { color: isSelected ? theme.text.accent : theme.text.primary, children: isSelected ? ICON.CIRCLE_FILLED : " " }) }),
|
|
13929
14074
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Text, { color: textColor, wrap: "truncate", children: [
|
|
13930
14075
|
agent.name,
|
|
13931
14076
|
agent.isBuiltin && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Text, { color: isSelected ? theme.text.accent : theme.text.secondary, children: [
|
|
@@ -18000,7 +18145,7 @@ var InstalledTab = /* @__PURE__ */ __name(({
|
|
|
18000
18145
|
const item = row.item;
|
|
18001
18146
|
const globalIndex = indexByKey.get(item.key) ?? -1;
|
|
18002
18147
|
const isSelected = globalIndex === selectedIndex;
|
|
18003
|
-
const marker = isSelected ?
|
|
18148
|
+
const marker = isSelected ? ICON.CIRCLE_FILLED : " ";
|
|
18004
18149
|
const isChild = item.kind === "mcp" && !!item.parentExtension;
|
|
18005
18150
|
const kindBadge = item.kind === "mcp" ? t("MCP") : t("Extension v{{version}}", {
|
|
18006
18151
|
// Persisted marketplace metadata: `version` is stored verbatim
|
|
@@ -18039,7 +18184,10 @@ var InstalledTab = /* @__PURE__ */ __name(({
|
|
|
18039
18184
|
isChild ? " \u2514 " : "",
|
|
18040
18185
|
item.name
|
|
18041
18186
|
] }),
|
|
18042
|
-
item.isFavorite ? /* @__PURE__ */ (0, import_jsx_runtime77.
|
|
18187
|
+
item.isFavorite ? /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(Text, { color: theme.status.warning, children: [
|
|
18188
|
+
" ",
|
|
18189
|
+
ICON.STAR
|
|
18190
|
+
] }) : null
|
|
18043
18191
|
] }),
|
|
18044
18192
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(Text, { color: isSelected ? theme.text.accent : theme.text.secondary, children: [
|
|
18045
18193
|
kindBadge,
|
|
@@ -18462,7 +18610,7 @@ var SourcesTab = /* @__PURE__ */ __name(({
|
|
|
18462
18610
|
count: String(installedHere.length)
|
|
18463
18611
|
}) }),
|
|
18464
18612
|
installedHere.slice(0, INSTALLED_PREVIEW_LIMIT).map((p) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Box_default, { children: [
|
|
18465
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Box_default, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.status.success, children:
|
|
18613
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Box_default, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.status.success, children: ICON.CIRCLE_FILLED }) }),
|
|
18466
18614
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.text.primary, children: stripUnsafeCharacters(p.name) })
|
|
18467
18615
|
] }, p.name)),
|
|
18468
18616
|
installedHere.length > INSTALLED_PREVIEW_LIMIT ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.text.secondary, children: t("... and {{count}} more", {
|
|
@@ -18513,7 +18661,7 @@ var SourcesTab = /* @__PURE__ */ __name(({
|
|
|
18513
18661
|
const isSelected = index === selectedIndex;
|
|
18514
18662
|
const labelColor = isSelected ? theme.text.accent : isAction ? theme.text.link : theme.text.primary;
|
|
18515
18663
|
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Box_default, { children: [
|
|
18516
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Box_default, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: isSelected ? theme.text.accent : theme.text.primary, children: isSelected ?
|
|
18664
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Box_default, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: isSelected ? theme.text.accent : theme.text.primary, children: isSelected ? ICON.CIRCLE_FILLED : " " }) }),
|
|
18517
18665
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: labelColor, children: label }) }),
|
|
18518
18666
|
rightText ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.text.secondary, children: rightText }) : null
|
|
18519
18667
|
] }, `row-${index}`);
|
|
@@ -18888,7 +19036,8 @@ var ServerListStep = /* @__PURE__ */ __name(({
|
|
|
18888
19036
|
servers.some(
|
|
18889
19037
|
(s) => s.status === "disconnected" && !s.isDisabled && !s.approvalState
|
|
18890
19038
|
) && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(Text, { color: theme.status.warning, children: [
|
|
18891
|
-
|
|
19039
|
+
ICON.REFERENCE,
|
|
19040
|
+
" ",
|
|
18892
19041
|
t("Run qwen --debug to see error logs")
|
|
18893
19042
|
] }) })
|
|
18894
19043
|
] });
|
|
@@ -22501,7 +22650,7 @@ __name(treeRowPrefix, "treeRowPrefix");
|
|
|
22501
22650
|
function statusGlyph(status) {
|
|
22502
22651
|
switch (status) {
|
|
22503
22652
|
case "running":
|
|
22504
|
-
return
|
|
22653
|
+
return ICON.CIRCLE_EMPTY;
|
|
22505
22654
|
case "paused":
|
|
22506
22655
|
return "\u23F8";
|
|
22507
22656
|
case "completed":
|
|
@@ -22510,7 +22659,7 @@ function statusGlyph(status) {
|
|
|
22510
22659
|
case "cancelled":
|
|
22511
22660
|
return "\u2716";
|
|
22512
22661
|
default:
|
|
22513
|
-
return
|
|
22662
|
+
return ICON.CIRCLE_EMPTY;
|
|
22514
22663
|
}
|
|
22515
22664
|
}
|
|
22516
22665
|
__name(statusGlyph, "statusGlyph");
|
|
@@ -24133,6 +24282,7 @@ var DialogManager = /* @__PURE__ */ __name(({
|
|
|
24133
24282
|
isFastModelMode: uiState.isFastModelMode,
|
|
24134
24283
|
isVoiceModelMode: uiState.isVoiceModelMode,
|
|
24135
24284
|
isVisionModelMode: uiState.isVisionModelMode,
|
|
24285
|
+
isImageModelMode: uiState.isImageModelMode,
|
|
24136
24286
|
persistScope: uiState.modelDialogPersistScope,
|
|
24137
24287
|
availableTerminalHeight: listDialogHeight
|
|
24138
24288
|
}
|
|
@@ -24664,6 +24814,23 @@ var PrepareLabel = import_react80.default.memo(_PrepareLabel);
|
|
|
24664
24814
|
|
|
24665
24815
|
// packages/cli/src/ui/components/SuggestionsDisplay.tsx
|
|
24666
24816
|
var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1);
|
|
24817
|
+
function categoryLabel(cat) {
|
|
24818
|
+
switch (cat) {
|
|
24819
|
+
case "all":
|
|
24820
|
+
return t("All");
|
|
24821
|
+
case "file":
|
|
24822
|
+
return t("Files");
|
|
24823
|
+
case "session":
|
|
24824
|
+
return t("Sessions");
|
|
24825
|
+
case "mcp":
|
|
24826
|
+
return t("MCP");
|
|
24827
|
+
case "extension":
|
|
24828
|
+
return t("Extensions");
|
|
24829
|
+
default:
|
|
24830
|
+
return cat;
|
|
24831
|
+
}
|
|
24832
|
+
}
|
|
24833
|
+
__name(categoryLabel, "categoryLabel");
|
|
24667
24834
|
var MIN_DESCRIPTION_WIDTH = 12;
|
|
24668
24835
|
var ACTIVE_MARKER_WIDTH = 2;
|
|
24669
24836
|
function normalizeDescription(description) {
|
|
@@ -24681,27 +24848,31 @@ function SuggestionsDisplay({
|
|
|
24681
24848
|
expandedIndex,
|
|
24682
24849
|
onHoverIndex,
|
|
24683
24850
|
onSelectIndex,
|
|
24684
|
-
mouseEnabled
|
|
24851
|
+
mouseEnabled,
|
|
24852
|
+
activeCategory = "all",
|
|
24853
|
+
availableCategories
|
|
24685
24854
|
}) {
|
|
24686
24855
|
const containerRef = (0, import_react81.useRef)(null);
|
|
24687
24856
|
const itemRefs = (0, import_react81.useRef)([]);
|
|
24688
24857
|
if (isLoading) {
|
|
24689
24858
|
return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Box_default, { width, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { color: "gray", children: t("Loading suggestions...") }) });
|
|
24690
24859
|
}
|
|
24691
|
-
|
|
24860
|
+
const filteredSuggestions = activeCategory === "all" ? suggestions : suggestions.filter((s) => (s.category ?? "file") === activeCategory);
|
|
24861
|
+
const showTabBar = (availableCategories?.length ?? 0) > 2;
|
|
24862
|
+
if (filteredSuggestions.length === 0) {
|
|
24692
24863
|
return null;
|
|
24693
24864
|
}
|
|
24694
24865
|
const startIndex = scrollOffset;
|
|
24695
24866
|
const endIndex = Math.min(
|
|
24696
24867
|
scrollOffset + MAX_SUGGESTIONS_TO_SHOW,
|
|
24697
|
-
|
|
24868
|
+
filteredSuggestions.length
|
|
24698
24869
|
);
|
|
24699
|
-
const visibleSuggestions =
|
|
24870
|
+
const visibleSuggestions = filteredSuggestions.slice(startIndex, endIndex);
|
|
24700
24871
|
const getFullLabel = /* @__PURE__ */ __name((s) => [s.label, s.argumentHint, s.sourceBadge].filter(Boolean).join(" "), "getFullLabel");
|
|
24701
24872
|
const maxLabelLength = Math.max(
|
|
24702
|
-
...
|
|
24873
|
+
...filteredSuggestions.map((s) => getFullLabel(s).length)
|
|
24703
24874
|
);
|
|
24704
|
-
const describedLabelLengths =
|
|
24875
|
+
const describedLabelLengths = filteredSuggestions.filter((s) => s.description).map((s) => getFullLabel(s).length);
|
|
24705
24876
|
const contentWidth = Math.max(width - ACTIVE_MARKER_WIDTH, 1);
|
|
24706
24877
|
const labelColumnWidth = mode === "slash" ? Math.min(maxLabelLength, Math.floor(contentWidth * 0.5)) : describedLabelLengths.length > 0 ? Math.min(
|
|
24707
24878
|
Math.max(...describedLabelLengths),
|
|
@@ -24718,6 +24889,20 @@ function SuggestionsDisplay({
|
|
|
24718
24889
|
onSelectIndex
|
|
24719
24890
|
}
|
|
24720
24891
|
),
|
|
24892
|
+
showTabBar && availableCategories && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Box_default, { flexDirection: "row", marginBottom: 1, children: [
|
|
24893
|
+
availableCategories.map((cat, i) => {
|
|
24894
|
+
const active = cat === activeCategory;
|
|
24895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Box_default, { marginLeft: i === 0 ? 0 : 1, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
24896
|
+
Text,
|
|
24897
|
+
{
|
|
24898
|
+
color: active ? theme.background.primary : theme.text.secondary,
|
|
24899
|
+
backgroundColor: active ? theme.text.accent : void 0,
|
|
24900
|
+
children: ` ${categoryLabel(cat)} `
|
|
24901
|
+
}
|
|
24902
|
+
) }, cat);
|
|
24903
|
+
}),
|
|
24904
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Box_default, { marginLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { color: theme.text.secondary, children: t("(Ctrl+\u2190/\u2192 to switch)") }) })
|
|
24905
|
+
] }),
|
|
24721
24906
|
scrollOffset > 0 && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { color: theme.text.primary, children: "\u25B2" }),
|
|
24722
24907
|
visibleSuggestions.map((suggestion, index) => {
|
|
24723
24908
|
const originalIndex = startIndex + index;
|
|
@@ -24783,12 +24968,12 @@ function SuggestionsDisplay({
|
|
|
24783
24968
|
`${suggestion.value}-${originalIndex}`
|
|
24784
24969
|
);
|
|
24785
24970
|
}),
|
|
24786
|
-
endIndex <
|
|
24787
|
-
|
|
24971
|
+
endIndex < filteredSuggestions.length && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { color: "gray", children: "\u25BC" }),
|
|
24972
|
+
filteredSuggestions.length > MAX_SUGGESTIONS_TO_SHOW && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Text, { color: "gray", children: [
|
|
24788
24973
|
"(",
|
|
24789
24974
|
activeIndex + 1,
|
|
24790
24975
|
"/",
|
|
24791
|
-
|
|
24976
|
+
filteredSuggestions.length,
|
|
24792
24977
|
")"
|
|
24793
24978
|
] })
|
|
24794
24979
|
] });
|
|
@@ -25014,8 +25199,15 @@ var import_react85 = __toESM(require_react(), 1);
|
|
|
25014
25199
|
// packages/cli/src/ui/hooks/useCompletion.ts
|
|
25015
25200
|
init_esbuild_shims();
|
|
25016
25201
|
var import_react84 = __toESM(require_react(), 1);
|
|
25202
|
+
var CATEGORY_ORDER = [
|
|
25203
|
+
"file",
|
|
25204
|
+
"session",
|
|
25205
|
+
"mcp",
|
|
25206
|
+
"extension"
|
|
25207
|
+
];
|
|
25017
25208
|
function useCompletion(options = {}) {
|
|
25018
|
-
const [
|
|
25209
|
+
const [rawSuggestions, setSuggestions] = (0, import_react84.useState)([]);
|
|
25210
|
+
const [activeCategory, setActiveCategory] = (0, import_react84.useState)("all");
|
|
25019
25211
|
const [activeSuggestionIndex, setActiveSuggestionIndex] = (0, import_react84.useState)(-1);
|
|
25020
25212
|
const [visibleStartIndex, setVisibleStartIndex] = (0, import_react84.useState)(0);
|
|
25021
25213
|
const [showSuggestions, setShowSuggestions] = (0, import_react84.useState)(false);
|
|
@@ -25023,8 +25215,48 @@ function useCompletion(options = {}) {
|
|
|
25023
25215
|
const [isPerfectMatch, setIsPerfectMatch] = (0, import_react84.useState)(false);
|
|
25024
25216
|
const [dismissed, setDismissed] = (0, import_react84.useState)(false);
|
|
25025
25217
|
const skipNextClearRef = (0, import_react84.useRef)(false);
|
|
25218
|
+
const availableCategories = (0, import_react84.useMemo)(() => {
|
|
25219
|
+
const present = new Set(rawSuggestions.map((s) => s.category ?? "file"));
|
|
25220
|
+
const ordered = CATEGORY_ORDER.filter((c) => present.has(c));
|
|
25221
|
+
return ordered.length > 1 ? ["all", ...ordered] : ["all"];
|
|
25222
|
+
}, [rawSuggestions]);
|
|
25223
|
+
const suggestions = (0, import_react84.useMemo)(
|
|
25224
|
+
() => activeCategory === "all" ? rawSuggestions : rawSuggestions.filter(
|
|
25225
|
+
(s) => (s.category ?? "file") === activeCategory
|
|
25226
|
+
),
|
|
25227
|
+
[rawSuggestions, activeCategory]
|
|
25228
|
+
);
|
|
25229
|
+
(0, import_react84.useEffect)(() => {
|
|
25230
|
+
if (!availableCategories.includes(activeCategory)) {
|
|
25231
|
+
setActiveCategory("all");
|
|
25232
|
+
setActiveSuggestionIndex(0);
|
|
25233
|
+
setVisibleStartIndex(0);
|
|
25234
|
+
}
|
|
25235
|
+
}, [availableCategories, activeCategory]);
|
|
25236
|
+
(0, import_react84.useEffect)(() => {
|
|
25237
|
+
setActiveSuggestionIndex(
|
|
25238
|
+
(prev) => prev >= suggestions.length && suggestions.length > 0 ? suggestions.length - 1 : prev
|
|
25239
|
+
);
|
|
25240
|
+
setVisibleStartIndex(
|
|
25241
|
+
(prev) => prev >= suggestions.length ? Math.max(0, suggestions.length - MAX_SUGGESTIONS_TO_SHOW) : prev
|
|
25242
|
+
);
|
|
25243
|
+
}, [suggestions.length]);
|
|
25244
|
+
const switchCategory = (0, import_react84.useCallback)(
|
|
25245
|
+
(direction) => {
|
|
25246
|
+
setActiveCategory((cur) => {
|
|
25247
|
+
const idx = availableCategories.indexOf(cur);
|
|
25248
|
+
if (idx === -1) return "all";
|
|
25249
|
+
const next = (idx + direction + availableCategories.length) % availableCategories.length;
|
|
25250
|
+
return availableCategories[next];
|
|
25251
|
+
});
|
|
25252
|
+
setActiveSuggestionIndex(0);
|
|
25253
|
+
setVisibleStartIndex(0);
|
|
25254
|
+
},
|
|
25255
|
+
[availableCategories]
|
|
25256
|
+
);
|
|
25026
25257
|
const resetCompletionState = (0, import_react84.useCallback)(() => {
|
|
25027
25258
|
setSuggestions([]);
|
|
25259
|
+
setActiveCategory("all");
|
|
25028
25260
|
setActiveSuggestionIndex(-1);
|
|
25029
25261
|
setVisibleStartIndex(0);
|
|
25030
25262
|
setShowSuggestions(false);
|
|
@@ -25098,7 +25330,10 @@ function useCompletion(options = {}) {
|
|
|
25098
25330
|
resetCompletionState,
|
|
25099
25331
|
dismissCompletion,
|
|
25100
25332
|
navigateUp,
|
|
25101
|
-
navigateDown
|
|
25333
|
+
navigateDown,
|
|
25334
|
+
activeCategory,
|
|
25335
|
+
availableCategories,
|
|
25336
|
+
switchCategory
|
|
25102
25337
|
};
|
|
25103
25338
|
}
|
|
25104
25339
|
__name(useCompletion, "useCompletion");
|
|
@@ -25220,6 +25455,52 @@ var import_react88 = __toESM(require_react(), 1);
|
|
|
25220
25455
|
// packages/cli/src/ui/hooks/useAtCompletion.ts
|
|
25221
25456
|
init_esbuild_shims();
|
|
25222
25457
|
var import_react86 = __toESM(require_react(), 1);
|
|
25458
|
+
|
|
25459
|
+
// packages/cli/src/ui/hooks/session-completion.ts
|
|
25460
|
+
init_esbuild_shims();
|
|
25461
|
+
var MAX_SESSION_SUGGESTIONS = 20;
|
|
25462
|
+
var SESSION_LIST_CACHE_TTL_MS = 3e3;
|
|
25463
|
+
var listingCache = /* @__PURE__ */ new Map();
|
|
25464
|
+
async function listSessionsCached(cwd3, nowMs) {
|
|
25465
|
+
const cached = listingCache.get(cwd3);
|
|
25466
|
+
if (cached && cached.expiresAt > nowMs) {
|
|
25467
|
+
return cached.items;
|
|
25468
|
+
}
|
|
25469
|
+
try {
|
|
25470
|
+
const res = await new SessionService(cwd3).listSessions({
|
|
25471
|
+
size: MAX_SESSION_SUGGESTIONS
|
|
25472
|
+
});
|
|
25473
|
+
listingCache.set(cwd3, {
|
|
25474
|
+
items: res.items,
|
|
25475
|
+
expiresAt: nowMs + SESSION_LIST_CACHE_TTL_MS
|
|
25476
|
+
});
|
|
25477
|
+
return res.items;
|
|
25478
|
+
} catch {
|
|
25479
|
+
return [];
|
|
25480
|
+
}
|
|
25481
|
+
}
|
|
25482
|
+
__name(listSessionsCached, "listSessionsCached");
|
|
25483
|
+
async function getSessionSuggestions(cwd3, pattern, nowMs = Date.now()) {
|
|
25484
|
+
const items = await listSessionsCached(cwd3, nowMs);
|
|
25485
|
+
const stripped = pattern.startsWith(SESSION_MENTION_PREFIX) ? pattern.slice(SESSION_MENTION_PREFIX.length) : pattern.toLowerCase() === "session" ? "" : pattern;
|
|
25486
|
+
const needle = stripped.trim().toLowerCase();
|
|
25487
|
+
return items.map((s) => {
|
|
25488
|
+
const label = s.customTitle?.trim() || s.prompt || s.sessionId;
|
|
25489
|
+
const description = s.customTitle ? s.prompt : void 0;
|
|
25490
|
+
return {
|
|
25491
|
+
label,
|
|
25492
|
+
value: buildSessionRef(s.sessionId),
|
|
25493
|
+
description,
|
|
25494
|
+
sourceBadge: t("Session"),
|
|
25495
|
+
category: "session"
|
|
25496
|
+
};
|
|
25497
|
+
}).filter(
|
|
25498
|
+
(sug) => needle.length === 0 ? true : `${sug.label} ${sug.description ?? ""}`.toLowerCase().includes(needle)
|
|
25499
|
+
);
|
|
25500
|
+
}
|
|
25501
|
+
__name(getSessionSuggestions, "getSessionSuggestions");
|
|
25502
|
+
|
|
25503
|
+
// packages/cli/src/ui/hooks/useAtCompletion.ts
|
|
25223
25504
|
function rankResourceMatch(uri, friendly, query) {
|
|
25224
25505
|
if (uri.startsWith(query)) return 0;
|
|
25225
25506
|
if (friendly.startsWith(query)) return 1;
|
|
@@ -25464,13 +25745,21 @@ function useAtCompletion(props) {
|
|
|
25464
25745
|
...mcpServerMentionSuggestions,
|
|
25465
25746
|
...serverSuggestions,
|
|
25466
25747
|
...globalResourceSuggestions
|
|
25467
|
-
];
|
|
25748
|
+
].map((s) => ({ ...s, category: s.category ?? "mcp" }));
|
|
25749
|
+
const sessionPromise = getSessionSuggestions(cwd3, state.pattern);
|
|
25468
25750
|
if (!fileSearch.current) {
|
|
25469
|
-
|
|
25751
|
+
const sessionSuggestions = await sessionPromise.catch(
|
|
25752
|
+
() => []
|
|
25753
|
+
);
|
|
25754
|
+
if (cancelled) {
|
|
25755
|
+
return;
|
|
25756
|
+
}
|
|
25757
|
+
const scoped = [...mcpSuggestions, ...sessionSuggestions];
|
|
25758
|
+
if (scoped.length > 0) {
|
|
25470
25759
|
if (slowSearchTimer.current) {
|
|
25471
25760
|
clearTimeout(slowSearchTimer.current);
|
|
25472
25761
|
}
|
|
25473
|
-
dispatch({ type: "SEARCH_SUCCESS", payload:
|
|
25762
|
+
dispatch({ type: "SEARCH_SUCCESS", payload: scoped });
|
|
25474
25763
|
}
|
|
25475
25764
|
return;
|
|
25476
25765
|
}
|
|
@@ -25496,16 +25785,34 @@ function useAtCompletion(props) {
|
|
|
25496
25785
|
const fileSuggestions = results.map((p) => ({
|
|
25497
25786
|
label: p,
|
|
25498
25787
|
value: escapePath(p),
|
|
25499
|
-
isDirectory: p.endsWith("/")
|
|
25788
|
+
isDirectory: p.endsWith("/"),
|
|
25789
|
+
category: "file"
|
|
25500
25790
|
}));
|
|
25791
|
+
const sessionSuggestions = await sessionPromise.catch(
|
|
25792
|
+
() => []
|
|
25793
|
+
);
|
|
25794
|
+
if (controller.signal.aborted || cancelled) {
|
|
25795
|
+
return;
|
|
25796
|
+
}
|
|
25501
25797
|
dispatch({
|
|
25502
25798
|
type: "SEARCH_SUCCESS",
|
|
25503
|
-
payload: [
|
|
25799
|
+
payload: [
|
|
25800
|
+
...mcpSuggestions,
|
|
25801
|
+
...fileSuggestions,
|
|
25802
|
+
...sessionSuggestions
|
|
25803
|
+
]
|
|
25504
25804
|
});
|
|
25505
25805
|
} catch (error) {
|
|
25506
25806
|
if (!(error instanceof Error && error.name === "AbortError")) {
|
|
25507
|
-
|
|
25508
|
-
|
|
25807
|
+
const sessionSuggestions = await sessionPromise.catch(
|
|
25808
|
+
() => []
|
|
25809
|
+
);
|
|
25810
|
+
if (cancelled) {
|
|
25811
|
+
return;
|
|
25812
|
+
}
|
|
25813
|
+
const scoped = [...mcpSuggestions, ...sessionSuggestions];
|
|
25814
|
+
if (scoped.length > 0) {
|
|
25815
|
+
dispatch({ type: "SEARCH_SUCCESS", payload: scoped });
|
|
25509
25816
|
} else {
|
|
25510
25817
|
dispatch({ type: "ERROR" });
|
|
25511
25818
|
}
|
|
@@ -26164,7 +26471,10 @@ function useCommandCompletion(buffer, cwd3, slashCommands, commandContext, rever
|
|
|
26164
26471
|
resetCompletionState,
|
|
26165
26472
|
dismissCompletion,
|
|
26166
26473
|
navigateUp,
|
|
26167
|
-
navigateDown
|
|
26474
|
+
navigateDown,
|
|
26475
|
+
activeCategory,
|
|
26476
|
+
availableCategories,
|
|
26477
|
+
switchCategory
|
|
26168
26478
|
} = useCompletion({ query });
|
|
26169
26479
|
useAtCompletion({
|
|
26170
26480
|
enabled: completionMode === "AT" /* AT */,
|
|
@@ -26315,7 +26625,10 @@ function useCommandCompletion(buffer, cwd3, slashCommands, commandContext, rever
|
|
|
26315
26625
|
navigateDown,
|
|
26316
26626
|
handleAutocomplete,
|
|
26317
26627
|
completionMode,
|
|
26318
|
-
midInputGhostText
|
|
26628
|
+
midInputGhostText,
|
|
26629
|
+
activeCategory,
|
|
26630
|
+
availableCategories,
|
|
26631
|
+
switchCategory
|
|
26319
26632
|
};
|
|
26320
26633
|
}
|
|
26321
26634
|
__name(useCommandCompletion, "useCommandCompletion");
|
|
@@ -27147,7 +27460,7 @@ var FeedbackDialog = /* @__PURE__ */ __name(() => {
|
|
|
27147
27460
|
);
|
|
27148
27461
|
return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Box_default, { flexDirection: "column", marginY: 1, children: [
|
|
27149
27462
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Box_default, { children: [
|
|
27150
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { color: "cyan", children: "
|
|
27463
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { color: "cyan", children: ICON.CIRCLE_FILLED + " " }),
|
|
27151
27464
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { bold: true, children: t("How is Qwen doing this session? (optional)") })
|
|
27152
27465
|
] }),
|
|
27153
27466
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Box_default, { marginTop: 1, children: [
|
|
@@ -29510,6 +29823,18 @@ ${currentText}`);
|
|
|
29510
29823
|
return true;
|
|
29511
29824
|
}
|
|
29512
29825
|
if (showCompletionSuggestions) {
|
|
29826
|
+
if ((completion.availableCategories?.length ?? 0) > 2) {
|
|
29827
|
+
if (keyMatchers["completionTabRight" /* COMPLETION_TAB_RIGHT */](key)) {
|
|
29828
|
+
completion.switchCategory(1);
|
|
29829
|
+
setExpandedSuggestionIndex(-1);
|
|
29830
|
+
return true;
|
|
29831
|
+
}
|
|
29832
|
+
if (keyMatchers["completionTabLeft" /* COMPLETION_TAB_LEFT */](key)) {
|
|
29833
|
+
completion.switchCategory(-1);
|
|
29834
|
+
setExpandedSuggestionIndex(-1);
|
|
29835
|
+
return true;
|
|
29836
|
+
}
|
|
29837
|
+
}
|
|
29513
29838
|
if (completion.suggestions.length > 1) {
|
|
29514
29839
|
const isCompletionUpKey = keyMatchers["completionUp" /* COMPLETION_UP */](key);
|
|
29515
29840
|
const isCompletionDownKey = keyMatchers["completionDown" /* COMPLETION_DOWN */](key);
|
|
@@ -30050,6 +30375,8 @@ ${currentText}`);
|
|
|
30050
30375
|
mode: buffer.text.startsWith("/") && !reverseSearchActive && !commandSearchActive ? "slash" : "reverse",
|
|
30051
30376
|
expandedIndex: expandedSuggestionIndex,
|
|
30052
30377
|
mouseEnabled: mouseInteractionsEnabled,
|
|
30378
|
+
activeCategory: suggestionsFromExport || commandSearchActive || reverseSearchActive ? void 0 : completion.activeCategory,
|
|
30379
|
+
availableCategories: suggestionsFromExport || commandSearchActive || reverseSearchActive ? void 0 : completion.availableCategories,
|
|
30053
30380
|
onHoverIndex: suggestionsFromExport ? void 0 : handleSuggestionHover,
|
|
30054
30381
|
onSelectIndex: suggestionsFromExport ? void 0 : handleSuggestionSelect
|
|
30055
30382
|
}
|
|
@@ -30847,7 +31174,8 @@ var CronPill = /* @__PURE__ */ __name(({ count }) => {
|
|
|
30847
31174
|
if (count <= 0) return null;
|
|
30848
31175
|
const noun = count === 1 ? "scheduled task" : "scheduled tasks";
|
|
30849
31176
|
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Text, { color: theme.text.accent, children: [
|
|
30850
|
-
|
|
31177
|
+
ICON.BULLSEYE,
|
|
31178
|
+
" ",
|
|
30851
31179
|
count,
|
|
30852
31180
|
" ",
|
|
30853
31181
|
noun
|
|
@@ -30856,11 +31184,24 @@ var CronPill = /* @__PURE__ */ __name(({ count }) => {
|
|
|
30856
31184
|
|
|
30857
31185
|
// packages/cli/src/ui/components/Footer.tsx
|
|
30858
31186
|
var import_jsx_runtime116 = __toESM(require_jsx_runtime(), 1);
|
|
31187
|
+
var PasteProgressBar = /* @__PURE__ */ __name(({
|
|
31188
|
+
progress
|
|
31189
|
+
}) => {
|
|
31190
|
+
const { receivedBytes } = progress;
|
|
31191
|
+
const kb = receivedBytes / 1024;
|
|
31192
|
+
const label = kb >= 1 ? `${kb.toFixed(0)} KB` : `${receivedBytes} B`;
|
|
31193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Text, { dimColor: true, children: [
|
|
31194
|
+
t("Pasting\u2026"),
|
|
31195
|
+
" ",
|
|
31196
|
+
label
|
|
31197
|
+
] });
|
|
31198
|
+
}, "PasteProgressBar");
|
|
30859
31199
|
var Footer = /* @__PURE__ */ __name(() => {
|
|
30860
31200
|
const uiState = useUIState();
|
|
30861
31201
|
const config = useConfig();
|
|
30862
31202
|
const settings = useSettings();
|
|
30863
31203
|
const { vimEnabled, vimMode } = useVimModeState();
|
|
31204
|
+
const { pasteProgress } = useKeypressContext();
|
|
30864
31205
|
const {
|
|
30865
31206
|
lines: statusLineLines,
|
|
30866
31207
|
useThemeColors,
|
|
@@ -30879,7 +31220,7 @@ var Footer = /* @__PURE__ */ __name(() => {
|
|
|
30879
31220
|
const debugMode = config.getDebugMode();
|
|
30880
31221
|
const contextWindowSize = config.getContentGeneratorConfig()?.contextWindowSize;
|
|
30881
31222
|
const suppressHint = statusLineLines.length > 0;
|
|
30882
|
-
const leftBottomContent = uiState.ctrlCPressedOnce ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, children: t("Press Ctrl+C again to exit.") }) : uiState.ctrlDPressedOnce ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, children: t("Press Ctrl+D again to exit.") }) : uiState.showEscapePrompt ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: t("Press Esc again to clear.") }) : uiState.rewindEscPending ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: t("Press Esc again to rewind conversation.") }) : vimEnabled && vimMode === "INSERT" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: "-- INSERT --" }) : vimEnabled && vimMode === "NORMAL" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: "-- NORMAL --" }) : uiState.shellModeActive ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ShellModeIndicator, {}) : configInitMessage ? /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Text, { color: theme.text.secondary, children: [
|
|
31223
|
+
const leftBottomContent = uiState.ctrlCPressedOnce ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, children: t("Press Ctrl+C again to exit.") }) : uiState.ctrlDPressedOnce ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, children: t("Press Ctrl+D again to exit.") }) : uiState.showEscapePrompt ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: t("Press Esc again to clear.") }) : pasteProgress.active ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(PasteProgressBar, { progress: pasteProgress }) : uiState.rewindEscPending ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: t("Press Esc again to rewind conversation.") }) : vimEnabled && vimMode === "INSERT" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: "-- INSERT --" }) : vimEnabled && vimMode === "NORMAL" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, children: "-- NORMAL --" }) : uiState.shellModeActive ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ShellModeIndicator, {}) : configInitMessage ? /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Text, { color: theme.text.secondary, children: [
|
|
30883
31224
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(GeminiSpinner, {}),
|
|
30884
31225
|
" ",
|
|
30885
31226
|
configInitMessage
|
|
@@ -31374,9 +31715,9 @@ __name(getStickyTodoMaxVisibleItemsForMode, "getStickyTodoMaxVisibleItemsForMode
|
|
|
31374
31715
|
// packages/cli/src/ui/components/StickyTodoList.tsx
|
|
31375
31716
|
var import_jsx_runtime121 = __toESM(require_jsx_runtime(), 1);
|
|
31376
31717
|
var STATUS_ICONS = {
|
|
31377
|
-
pending:
|
|
31378
|
-
in_progress:
|
|
31379
|
-
completed:
|
|
31718
|
+
pending: ICON.CIRCLE_EMPTY,
|
|
31719
|
+
in_progress: ICON.CIRCLE_LEFT_HALF,
|
|
31720
|
+
completed: ICON.CIRCLE_FILLED
|
|
31380
31721
|
};
|
|
31381
31722
|
function clampVisibleTodoCount(value) {
|
|
31382
31723
|
if (!Number.isFinite(value)) {
|
|
@@ -33075,16 +33416,21 @@ var useModelCommand = /* @__PURE__ */ __name(() => {
|
|
|
33075
33416
|
const [isFastModelMode, setIsFastModelMode] = (0, import_react123.useState)(false);
|
|
33076
33417
|
const [isVoiceModelMode, setIsVoiceModelMode] = (0, import_react123.useState)(false);
|
|
33077
33418
|
const [isVisionModelMode, setIsVisionModelMode] = (0, import_react123.useState)(false);
|
|
33419
|
+
const [isImageModelMode, setIsImageModelMode] = (0, import_react123.useState)(false);
|
|
33078
33420
|
const [modelDialogPersistScope, setModelDialogPersistScope] = (0, import_react123.useState)(void 0);
|
|
33079
33421
|
const openModelDialog = (0, import_react123.useCallback)(
|
|
33080
33422
|
(options) => {
|
|
33081
33423
|
const voiceModelMode = options?.voiceModelMode ?? false;
|
|
33082
33424
|
const visionModelMode = options?.visionModelMode ?? false;
|
|
33425
|
+
const imageModelMode = options?.imageModelMode ?? false;
|
|
33083
33426
|
setIsFastModelMode(
|
|
33084
|
-
voiceModelMode || visionModelMode ? false : options?.fastModelMode ?? false
|
|
33427
|
+
voiceModelMode || visionModelMode || imageModelMode ? false : options?.fastModelMode ?? false
|
|
33428
|
+
);
|
|
33429
|
+
setIsVoiceModelMode(
|
|
33430
|
+
visionModelMode || imageModelMode ? false : voiceModelMode
|
|
33085
33431
|
);
|
|
33086
|
-
|
|
33087
|
-
|
|
33432
|
+
setIsVisionModelMode(imageModelMode ? false : visionModelMode);
|
|
33433
|
+
setIsImageModelMode(imageModelMode);
|
|
33088
33434
|
setModelDialogPersistScope(options?.persistScope);
|
|
33089
33435
|
setIsModelDialogOpen(true);
|
|
33090
33436
|
},
|
|
@@ -33095,6 +33441,7 @@ var useModelCommand = /* @__PURE__ */ __name(() => {
|
|
|
33095
33441
|
setIsFastModelMode(false);
|
|
33096
33442
|
setIsVoiceModelMode(false);
|
|
33097
33443
|
setIsVisionModelMode(false);
|
|
33444
|
+
setIsImageModelMode(false);
|
|
33098
33445
|
setModelDialogPersistScope(void 0);
|
|
33099
33446
|
}, []);
|
|
33100
33447
|
return {
|
|
@@ -33102,6 +33449,7 @@ var useModelCommand = /* @__PURE__ */ __name(() => {
|
|
|
33102
33449
|
isFastModelMode,
|
|
33103
33450
|
isVoiceModelMode,
|
|
33104
33451
|
isVisionModelMode,
|
|
33452
|
+
isImageModelMode,
|
|
33105
33453
|
modelDialogPersistScope,
|
|
33106
33454
|
openModelDialog,
|
|
33107
33455
|
closeModelDialog
|
|
@@ -33202,6 +33550,7 @@ var useEffortCommand = /* @__PURE__ */ __name((loadedSettings, config, addItem)
|
|
|
33202
33550
|
init_esbuild_shims();
|
|
33203
33551
|
var import_react126 = __toESM(require_react(), 1);
|
|
33204
33552
|
import { randomUUID } from "node:crypto";
|
|
33553
|
+
var BACKGROUND_WORK_BRANCH_BLOCKED_MESSAGE = "Stop the current session's running background tasks before branching the conversation.";
|
|
33205
33554
|
function deriveFirstPrompt(messages) {
|
|
33206
33555
|
for (const record of messages) {
|
|
33207
33556
|
if (record.type !== "user") continue;
|
|
@@ -33223,6 +33572,16 @@ function useBranchCommand(options) {
|
|
|
33223
33572
|
const handleBranch = (0, import_react126.useCallback)(
|
|
33224
33573
|
async (name) => {
|
|
33225
33574
|
if (!config) return;
|
|
33575
|
+
if (hasBlockingBackgroundWork(config)) {
|
|
33576
|
+
historyManager.addItem(
|
|
33577
|
+
{
|
|
33578
|
+
type: "error",
|
|
33579
|
+
text: t(BACKGROUND_WORK_BRANCH_BLOCKED_MESSAGE)
|
|
33580
|
+
},
|
|
33581
|
+
Date.now()
|
|
33582
|
+
);
|
|
33583
|
+
return;
|
|
33584
|
+
}
|
|
33226
33585
|
const oldSessionId = config.getSessionId();
|
|
33227
33586
|
const newSessionId = randomUUID();
|
|
33228
33587
|
const sessionService = config.getSessionService();
|
|
@@ -33276,6 +33635,7 @@ function useBranchCommand(options) {
|
|
|
33276
33635
|
historyManager.clearItems();
|
|
33277
33636
|
historyManager.loadHistory(uiHistoryItems);
|
|
33278
33637
|
uiSwapped = true;
|
|
33638
|
+
resetBackgroundStateForSessionSwitch(config);
|
|
33279
33639
|
try {
|
|
33280
33640
|
restoreGoalFromHistory(
|
|
33281
33641
|
uiHistoryItems,
|
|
@@ -33394,6 +33754,7 @@ function useResumeCommand(options) {
|
|
|
33394
33754
|
const oldSessionId = config.getSessionId();
|
|
33395
33755
|
let coreSwapped = false;
|
|
33396
33756
|
let uiSwapped = false;
|
|
33757
|
+
let recoveredBackgroundAgentsNotice = null;
|
|
33397
33758
|
try {
|
|
33398
33759
|
const cwd3 = config.getTargetDir();
|
|
33399
33760
|
const sessionService = new SessionService(cwd3);
|
|
@@ -33434,22 +33795,30 @@ function useResumeCommand(options) {
|
|
|
33434
33795
|
await config.getGeminiClient()?.initialize?.();
|
|
33435
33796
|
const recovered = await config.loadPausedBackgroundAgents(sessionId);
|
|
33436
33797
|
if (recovered.length > 0) {
|
|
33437
|
-
|
|
33438
|
-
type: "info" /* INFO */,
|
|
33439
|
-
text: config.getBackgroundAgentResumeService().buildRecoveredBackgroundAgentsNotice(recovered.length)
|
|
33440
|
-
};
|
|
33441
|
-
addItem(recoveredMessage, Date.now());
|
|
33798
|
+
recoveredBackgroundAgentsNotice = config.getBackgroundAgentResumeService().buildRecoveredBackgroundAgentsNotice(recovered.length);
|
|
33442
33799
|
}
|
|
33443
33800
|
startNewSession(sessionId);
|
|
33444
33801
|
setSessionName?.(customTitle ?? null);
|
|
33445
33802
|
clearItems();
|
|
33446
33803
|
loadHistory(uiHistoryItems);
|
|
33804
|
+
if (recoveredBackgroundAgentsNotice) {
|
|
33805
|
+
addItem(
|
|
33806
|
+
{
|
|
33807
|
+
type: "info" /* INFO */,
|
|
33808
|
+
text: recoveredBackgroundAgentsNotice
|
|
33809
|
+
},
|
|
33810
|
+
Date.now()
|
|
33811
|
+
);
|
|
33812
|
+
}
|
|
33447
33813
|
uiSwapped = true;
|
|
33448
33814
|
remount?.();
|
|
33449
33815
|
} catch (error) {
|
|
33450
33816
|
if (coreSwapped && !uiSwapped) {
|
|
33451
33817
|
try {
|
|
33818
|
+
resetBackgroundStateForSessionSwitch(config);
|
|
33452
33819
|
config.startNewSession(oldSessionId, void 0);
|
|
33820
|
+
await config.loadPausedBackgroundAgents(oldSessionId).catch(() => {
|
|
33821
|
+
});
|
|
33453
33822
|
} catch (rollbackErr) {
|
|
33454
33823
|
config.getDebugLogger().warn(
|
|
33455
33824
|
`Rollback after failed /resume init failed: ${rollbackErr}`
|
|
@@ -34509,6 +34878,12 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
34509
34878
|
persistScope: result.persistScope
|
|
34510
34879
|
});
|
|
34511
34880
|
return { type: "handled" };
|
|
34881
|
+
case "image-model":
|
|
34882
|
+
actions.openModelDialog({
|
|
34883
|
+
imageModelMode: true,
|
|
34884
|
+
persistScope: result.persistScope
|
|
34885
|
+
});
|
|
34886
|
+
return { type: "handled" };
|
|
34512
34887
|
case "trust":
|
|
34513
34888
|
actions.openTrustDialog();
|
|
34514
34889
|
return { type: "handled" };
|
|
@@ -35931,9 +36306,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
35931
36306
|
}, [isResponding, toolCalls]);
|
|
35932
36307
|
(0, import_react136.useEffect)(() => {
|
|
35933
36308
|
if (config.getApprovalMode() === "yolo" /* YOLO */ && streamingState === "idle" /* Idle */) {
|
|
35934
|
-
const lastUserMessageIndex = history
|
|
35935
|
-
(item) => item.type === "user" /* USER */
|
|
35936
|
-
);
|
|
36309
|
+
const lastUserMessageIndex = findLastUserItemIndex(history);
|
|
35937
36310
|
const turnCount = lastUserMessageIndex === -1 ? 0 : history.length - lastUserMessageIndex;
|
|
35938
36311
|
if (turnCount > 0) {
|
|
35939
36312
|
logConversationFinishedEvent(
|
|
@@ -37235,7 +37608,12 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37235
37608
|
for (const sideEffect of sideEffects) sideEffect();
|
|
37236
37609
|
config.getChatRecordingService?.()?.recordMidTurnUserMessage(parts, message);
|
|
37237
37610
|
addItem(
|
|
37238
|
-
{
|
|
37611
|
+
{
|
|
37612
|
+
type: "user" /* USER */,
|
|
37613
|
+
text: message,
|
|
37614
|
+
// Intentionally false: preserves isRealUserTurn/rewind semantics (steer is not a standalone user turn).
|
|
37615
|
+
sentToModel: false
|
|
37616
|
+
},
|
|
37239
37617
|
Date.now()
|
|
37240
37618
|
);
|
|
37241
37619
|
}
|
|
@@ -37893,6 +38271,15 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37893
38271
|
if (modelSwitchedFromQuotaError) {
|
|
37894
38272
|
return;
|
|
37895
38273
|
}
|
|
38274
|
+
const backgroundTaskRegistry = config.getBackgroundTaskRegistry();
|
|
38275
|
+
const backgroundLaunchExhaustedCapacity = backgroundTaskRegistry.getMaxConcurrentBackgroundAgents() === 1 && !backgroundTaskRegistry.canStartBackgroundAgent() && geminiTools.some((toolCall) => {
|
|
38276
|
+
const display = toolCall.response.resultDisplay;
|
|
38277
|
+
return toolCall.request.name === ToolNames.AGENT && typeof display === "object" && display !== null && "type" in display && "status" in display && display.type === "task_execution" && display.status === "background";
|
|
38278
|
+
});
|
|
38279
|
+
if (backgroundLaunchExhaustedCapacity) {
|
|
38280
|
+
geminiClient?.addHistory({ role: "user", parts: responsesToSend });
|
|
38281
|
+
return;
|
|
38282
|
+
}
|
|
37896
38283
|
const drained = turnCancelledRef.current || abortControllerRef.current?.signal.aborted ? [] : midTurnDrainRef?.current?.() ?? [];
|
|
37897
38284
|
let drainedSteer;
|
|
37898
38285
|
if (drained.length > 0) {
|
|
@@ -38135,7 +38522,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38135
38522
|
notificationQueueRef.current.push({
|
|
38136
38523
|
displayText,
|
|
38137
38524
|
modelText,
|
|
38138
|
-
sendMessageType: "notification" /* Notification
|
|
38525
|
+
sendMessageType: "notification" /* Notification */,
|
|
38526
|
+
monitor: { id: meta.monitorId, status: meta.status }
|
|
38139
38527
|
});
|
|
38140
38528
|
setNotificationTrigger((n) => n + 1);
|
|
38141
38529
|
});
|
|
@@ -38147,6 +38535,16 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38147
38535
|
if (streamingState === "idle" /* Idle */ && !isSubmittingQueryRef.current && notificationQueueRef.current.length > 0) {
|
|
38148
38536
|
runOutsideAgentContext(() => {
|
|
38149
38537
|
const queue = notificationQueueRef.current;
|
|
38538
|
+
const monitorRegistry = config.getMonitorRegistry();
|
|
38539
|
+
for (let i = queue.length - 1; i >= 0; i--) {
|
|
38540
|
+
const monitor = queue[i].monitor;
|
|
38541
|
+
if (monitor?.status === "running" && monitorRegistry.get(monitor.id)?.status === "cancelled") {
|
|
38542
|
+
queue.splice(i, 1);
|
|
38543
|
+
}
|
|
38544
|
+
}
|
|
38545
|
+
if (queue.length === 0) {
|
|
38546
|
+
return;
|
|
38547
|
+
}
|
|
38150
38548
|
const targetType = queue[0].sendMessageType;
|
|
38151
38549
|
if (targetType === "cron" /* Cron */) {
|
|
38152
38550
|
const item = queue.shift();
|
|
@@ -38180,7 +38578,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38180
38578
|
});
|
|
38181
38579
|
});
|
|
38182
38580
|
}
|
|
38183
|
-
}, [streamingState, submitQuery, notificationTrigger, addItem]);
|
|
38581
|
+
}, [streamingState, submitQuery, notificationTrigger, addItem, config]);
|
|
38184
38582
|
const teammateQueueRef = (0, import_react136.useRef)([]);
|
|
38185
38583
|
const [teammateTrigger, setTeammateTrigger] = (0, import_react136.useState)(0);
|
|
38186
38584
|
(0, import_react136.useEffect)(() => {
|
|
@@ -38215,17 +38613,19 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38215
38613
|
}, [config]);
|
|
38216
38614
|
(0, import_react136.useEffect)(() => {
|
|
38217
38615
|
if (streamingState === "idle" /* Idle */ && !isSubmittingQueryRef.current && teammateQueueRef.current.length > 0) {
|
|
38218
|
-
|
|
38219
|
-
|
|
38220
|
-
|
|
38221
|
-
|
|
38222
|
-
|
|
38223
|
-
|
|
38224
|
-
|
|
38225
|
-
|
|
38226
|
-
|
|
38227
|
-
|
|
38228
|
-
|
|
38616
|
+
runOutsideAgentContext(() => {
|
|
38617
|
+
const batch = teammateQueueRef.current.splice(0);
|
|
38618
|
+
for (const entry of batch) {
|
|
38619
|
+
addItem(
|
|
38620
|
+
{ type: "notification", text: entry.display },
|
|
38621
|
+
Date.now()
|
|
38622
|
+
);
|
|
38623
|
+
}
|
|
38624
|
+
const modelText = batch.map((e) => e.modelText).join("\n\n");
|
|
38625
|
+
const display = batch.map((e) => e.display).join("; ");
|
|
38626
|
+
submitQuery(modelText, "teammate" /* Teammate */, void 0, {
|
|
38627
|
+
notificationDisplayText: display
|
|
38628
|
+
});
|
|
38229
38629
|
});
|
|
38230
38630
|
}
|
|
38231
38631
|
}, [streamingState, submitQuery, teammateTrigger, addItem]);
|
|
@@ -39893,14 +40293,15 @@ function shouldFireRecap(history) {
|
|
|
39893
40293
|
let lastRecapIndex = -1;
|
|
39894
40294
|
for (let i = 0; i < history.length; i++) {
|
|
39895
40295
|
const item = history[i];
|
|
39896
|
-
if (item.type === "user") userMessageCount++;
|
|
40296
|
+
if (item.type === "user" && item.sentToModel !== false) userMessageCount++;
|
|
39897
40297
|
if (item.type === "away_recap") lastRecapIndex = i;
|
|
39898
40298
|
}
|
|
39899
40299
|
if (userMessageCount < MIN_USER_MESSAGES_TO_FIRE) return false;
|
|
39900
40300
|
if (lastRecapIndex === -1) return true;
|
|
39901
40301
|
let userSinceLast = 0;
|
|
39902
40302
|
for (let i = lastRecapIndex + 1; i < history.length; i++) {
|
|
39903
|
-
|
|
40303
|
+
const item = history[i];
|
|
40304
|
+
if (item.type === "user" && item.sentToModel !== false) userSinceLast++;
|
|
39904
40305
|
}
|
|
39905
40306
|
return userSinceLast >= MIN_USER_MESSAGES_SINCE_LAST_RECAP;
|
|
39906
40307
|
}
|
|
@@ -40919,16 +41320,23 @@ var AlternateScreen = /* @__PURE__ */ __name(({
|
|
|
40919
41320
|
init_esbuild_shims();
|
|
40920
41321
|
var import_react150 = __toESM(require_react(), 1);
|
|
40921
41322
|
var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1);
|
|
41323
|
+
function normalizeError(error) {
|
|
41324
|
+
if (error instanceof Error) {
|
|
41325
|
+
return error;
|
|
41326
|
+
}
|
|
41327
|
+
return new Error(String(error));
|
|
41328
|
+
}
|
|
41329
|
+
__name(normalizeError, "normalizeError");
|
|
40922
41330
|
var ErrorBoundary = class extends import_react150.Component {
|
|
40923
41331
|
static {
|
|
40924
41332
|
__name(this, "ErrorBoundary");
|
|
40925
41333
|
}
|
|
40926
41334
|
state = { error: null };
|
|
40927
41335
|
static getDerivedStateFromError(error) {
|
|
40928
|
-
return { error };
|
|
41336
|
+
return { error: normalizeError(error) };
|
|
40929
41337
|
}
|
|
40930
41338
|
componentDidCatch(error, info) {
|
|
40931
|
-
this.props.onError?.(error, info);
|
|
41339
|
+
this.props.onError?.(normalizeError(error), info);
|
|
40932
41340
|
}
|
|
40933
41341
|
reset = /* @__PURE__ */ __name(() => {
|
|
40934
41342
|
this.setState({ error: null });
|
|
@@ -42112,9 +42520,9 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
42112
42520
|
(0, import_react165.useEffect)(() => {
|
|
42113
42521
|
const fetchUserMessages = /* @__PURE__ */ __name(async () => {
|
|
42114
42522
|
const pastMessagesRaw = await logger?.getPreviousUserMessages() || [];
|
|
42115
|
-
const currentSessionUserMessages =
|
|
42116
|
-
|
|
42117
|
-
).
|
|
42523
|
+
const currentSessionUserMessages = realUserPromptTexts(
|
|
42524
|
+
historyManager.history
|
|
42525
|
+
).reverse();
|
|
42118
42526
|
const combinedMessages = [
|
|
42119
42527
|
...currentSessionUserMessages,
|
|
42120
42528
|
...pastMessagesRaw
|
|
@@ -42243,6 +42651,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
42243
42651
|
isFastModelMode,
|
|
42244
42652
|
isVoiceModelMode,
|
|
42245
42653
|
isVisionModelMode,
|
|
42654
|
+
isImageModelMode,
|
|
42246
42655
|
modelDialogPersistScope,
|
|
42247
42656
|
openModelDialog,
|
|
42248
42657
|
closeModelDialog
|
|
@@ -42881,6 +43290,20 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
42881
43290
|
}
|
|
42882
43291
|
}
|
|
42883
43292
|
const userPromptText = submittedValue;
|
|
43293
|
+
if (["/quit", "/exit", "exit", "quit", ":q", ":q!", ":wq", ":wq!"].includes(
|
|
43294
|
+
userPromptText.trim()
|
|
43295
|
+
)) {
|
|
43296
|
+
void handleSlashCommand("/quit");
|
|
43297
|
+
return;
|
|
43298
|
+
}
|
|
43299
|
+
const recoveredAgentsNotice = !isSlashCommand(userPromptText) && !isBtwCommand(userPromptText) ? config.consumePendingRecoveredAgentsNotice() : null;
|
|
43300
|
+
if (recoveredAgentsNotice) {
|
|
43301
|
+
submittedValue = `<system-reminder>
|
|
43302
|
+
${recoveredAgentsNotice}
|
|
43303
|
+
</system-reminder>
|
|
43304
|
+
|
|
43305
|
+
` + submittedValue;
|
|
43306
|
+
}
|
|
42884
43307
|
const worktreeNotice = pendingWorktreeNoticeRef.current;
|
|
42885
43308
|
if (worktreeNotice && !isSlashCommand(submittedValue)) {
|
|
42886
43309
|
pendingWorktreeNoticeRef.current = null;
|
|
@@ -42911,12 +43334,6 @@ ${buildWorkflowSteeringNotice()}
|
|
|
42911
43334
|
void submitQuery(submittedValue);
|
|
42912
43335
|
return;
|
|
42913
43336
|
}
|
|
42914
|
-
if (["/quit", "/exit", "exit", "quit", ":q", ":q!", ":wq", ":wq!"].includes(
|
|
42915
|
-
submittedValue.trim()
|
|
42916
|
-
)) {
|
|
42917
|
-
void handleSlashCommand("/quit");
|
|
42918
|
-
return;
|
|
42919
|
-
}
|
|
42920
43337
|
const spec = speculationRef.current;
|
|
42921
43338
|
if (spec.status !== "idle" && spec.suggestion === submittedValue && spec.status === "completed") {
|
|
42922
43339
|
acceptSpeculation(spec, geminiClient).then((result) => {
|
|
@@ -44147,6 +44564,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
44147
44564
|
isFastModelMode,
|
|
44148
44565
|
isVoiceModelMode,
|
|
44149
44566
|
isVisionModelMode,
|
|
44567
|
+
isImageModelMode,
|
|
44150
44568
|
modelDialogPersistScope,
|
|
44151
44569
|
isTrustDialogOpen,
|
|
44152
44570
|
activeArenaDialog,
|
|
@@ -44290,6 +44708,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
44290
44708
|
isFastModelMode,
|
|
44291
44709
|
isVoiceModelMode,
|
|
44292
44710
|
isVisionModelMode,
|
|
44711
|
+
isImageModelMode,
|
|
44293
44712
|
modelDialogPersistScope,
|
|
44294
44713
|
isTrustDialogOpen,
|
|
44295
44714
|
activeArenaDialog,
|
|
@@ -44923,14 +45342,33 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
44923
45342
|
if (useVP) {
|
|
44924
45343
|
process.stdout.setMaxListeners(0);
|
|
44925
45344
|
}
|
|
45345
|
+
const appTree = /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
|
|
45346
|
+
ErrorBoundary,
|
|
45347
|
+
{
|
|
45348
|
+
onError: (error, info) => {
|
|
45349
|
+
debugLogger41.error(
|
|
45350
|
+
`[FATAL_RENDER_ERROR] ${error.message}
|
|
45351
|
+
${info.componentStack ?? ""}
|
|
45352
|
+
${error.stack ?? ""}`
|
|
45353
|
+
);
|
|
45354
|
+
setTimeout(() => {
|
|
45355
|
+
void runExitCleanup().then(() => process.exit(1));
|
|
45356
|
+
}, 5e3);
|
|
45357
|
+
},
|
|
45358
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(AppWrapper, {})
|
|
45359
|
+
}
|
|
45360
|
+
);
|
|
44926
45361
|
const instance = render_default(
|
|
44927
|
-
process.env["DEBUG"] ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_react167.default.StrictMode, { children:
|
|
45362
|
+
process.env["DEBUG"] ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_react167.default.StrictMode, { children: appTree }) : appTree,
|
|
44928
45363
|
{
|
|
44929
45364
|
exitOnCtrlC: false,
|
|
44930
45365
|
isScreenReaderEnabled: config.getScreenReader(),
|
|
44931
45366
|
alternateScreen: useVP
|
|
44932
45367
|
}
|
|
44933
45368
|
);
|
|
45369
|
+
if (useVP) {
|
|
45370
|
+
pushKittyProtocolFlags();
|
|
45371
|
+
}
|
|
44934
45372
|
profileCheckpoint("first_paint");
|
|
44935
45373
|
startPostRenderPrefetches(config, settings, {
|
|
44936
45374
|
connectIde: options.postRenderConnectIde ?? false,
|