@qwen-code/qwen-code 0.20.2-headless-image-routing.1 → 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-PLQQB22E.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -59
- package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
- package/chunks/{acpAgent-AIVK2EM5.js → acpAgent-6J2U72PQ.js} +705 -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-GHIZ4MSZ.js → build-RV63TIRH.js} +2 -3
- package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
- package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-2ZD7TVAT.js} +8 -7
- package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-4OA4BCGB.js} +190 -30
- package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-V7KCFJTS.js} +7 -6
- 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-4DWTDZGS.js → chunk-2NH6DYI4.js} +12 -12
- package/chunks/chunk-2SCDWPXI.js +246 -0
- package/chunks/{chunk-QE4KFTBS.js → chunk-2X55UKQE.js} +3 -3
- package/chunks/{chunk-QBUDF33N.js → chunk-3QMGYBFN.js} +1 -1
- package/chunks/{chunk-3OAKYHRG.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-GHRSKGHF.js → chunk-4WIZGAH3.js} +7 -7
- package/chunks/{chunk-CAS7CB3T.js → chunk-55DJUCI2.js} +87 -29
- package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
- package/chunks/{chunk-H24SOJIQ.js → chunk-5NBDS5S6.js} +147 -7
- package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
- package/chunks/chunk-6FGBXPWM.js +293 -0
- package/chunks/{chunk-FFFM6NJV.js → chunk-6GMVPFB2.js} +155 -73
- package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
- package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
- package/chunks/{chunk-FZPTCQY7.js → chunk-7JURR4JT.js} +1 -1
- package/chunks/{chunk-Q6NAKZTA.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-YO2XRXY6.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-FRPDJNK3.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-ZDP2Y2AL.js → chunk-CIKQ7KKO.js} +4625 -8645
- package/chunks/{chunk-PEJWA3QQ.js → chunk-D3UEZIQH.js} +4 -2
- 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-JC26SJ5Y.js → chunk-EBJQ6AXW.js} +13 -12
- package/chunks/{chunk-RCWKCN2Z.js → chunk-EPDRMGT4.js} +164 -17
- package/chunks/{chunk-FUFCALSJ.js → chunk-ETSW4KLJ.js} +2 -2
- package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
- package/chunks/{chunk-SP5WRGVG.js → chunk-FQK6JAFG.js} +72 -23
- package/chunks/{chunk-NWZY2SPY.js → chunk-FSITMZJH.js} +8 -8
- package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
- package/chunks/{chunk-KPBVP6SL.js → chunk-GSN55ZRI.js} +5 -5
- package/chunks/{chunk-MLYGPZGU.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-5G3ZVADU.js → chunk-IJTOWOD7.js} +17 -6
- package/chunks/chunk-IKCX4CCL.js +469 -0
- package/chunks/{chunk-LPEONXNV.js → chunk-IKYJHJNF.js} +3 -3
- package/chunks/{chunk-DTZY2SH2.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-46DK772E.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-RKWX4CMO.js → chunk-JVPM2ULZ.js} +6 -6
- package/chunks/{chunk-ENPCQK44.js → chunk-JXJFVC6E.js} +37 -18
- package/chunks/{chunk-NABLFI57.js → chunk-JZA3JUDJ.js} +1 -1
- package/chunks/{chunk-CGLQAVZE.js → chunk-K36B6G2O.js} +5 -5
- package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
- package/chunks/{chunk-QOZOIPSF.js → chunk-KIM5GUMA.js} +650 -113
- package/chunks/{chunk-JZSM2IZ3.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-O2XSCRCS.js → chunk-LB6DUZ26.js} +259 -67
- package/chunks/chunk-LEH5C7FV.js +232 -0
- package/chunks/{chunk-RWV32G2M.js → chunk-LH2BYDQ5.js} +6 -4
- package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
- package/chunks/{chunk-VRRF3GW5.js → chunk-LKEJ26GS.js} +11 -11
- package/chunks/{chunk-SQFXI7VK.js → chunk-LQIW3YFY.js} +227 -41
- package/chunks/chunk-LS77BEZP.js +405 -0
- package/chunks/{chunk-BSHD62QJ.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-3HFNGB2O.js → chunk-MVSUYZDT.js} +4 -4
- package/chunks/{chunk-T5IO6FZ4.js → chunk-MZAXJAUM.js} +1 -1
- package/chunks/{chunk-QKNXKTZX.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-CS2FSS7W.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-7THPNISK.js → chunk-PC6JANNU.js} +5 -5
- package/chunks/{chunk-OTQ6PSZC.js → chunk-PHOF65IG.js} +3498 -1030
- 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-RECUEJ7B.js → chunk-PSOO6YXD.js} +18 -15
- package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
- package/chunks/{chunk-5NJTNQUW.js → chunk-PWVFN2LF.js} +1 -1
- package/chunks/{chunk-7AUH6A4T.js → chunk-Q4M4MDQ4.js} +2 -2
- package/chunks/{chunk-EZPB6S2I.js → chunk-QAF7NMK7.js} +1 -1
- package/chunks/{chunk-5GI55PF5.js → chunk-R5AFZNQW.js} +5 -5
- package/chunks/{chunk-T5B5NQZX.js → chunk-RF3EXIHJ.js} +47 -60
- package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
- package/chunks/{chunk-TJDW42MV.js → chunk-RIBKPMRP.js} +220 -141
- package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
- package/chunks/{chunk-L5QZGCRH.js → chunk-RZIX2G32.js} +1 -1
- package/chunks/{chunk-LLKWRXSS.js → chunk-SQCQ4KO2.js} +350 -418
- package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
- package/chunks/{chunk-XCXYRDHB.js → chunk-TEHGS6UP.js} +47 -18
- package/chunks/{chunk-PQIVAWXN.js → chunk-TGILQ3YH.js} +8 -8
- package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
- package/chunks/{chunk-L3KUB6XM.js → chunk-TPRQ7RZH.js} +586 -242
- package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
- package/chunks/{chunk-HIP6TVWA.js → chunk-U7M2DMGW.js} +3 -3
- package/chunks/{chunk-ACW3VNUE.js → chunk-UDX5OBWR.js} +41 -9
- package/chunks/{chunk-LW2FUYBN.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-O4BHWVUD.js → chunk-VIA5XA4U.js} +5 -2
- package/chunks/{chunk-EBXZ2YGV.js → chunk-VRYUBFMC.js} +1 -1
- package/chunks/{chunk-TWVE5ZS5.js → chunk-VULLI6WQ.js} +172 -6
- package/chunks/{chunk-LNDD3IML.js → chunk-WCXCRJYB.js} +1 -1
- package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
- package/chunks/{chunk-Q35QUZDQ.js → chunk-Y34KJKDC.js} +1 -1
- package/chunks/{chunk-7NR2AIK6.js → chunk-YBL3QUDD.js} +2 -2
- package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
- package/chunks/{chunk-MBOJHHPI.js → chunk-YPE6A4GC.js} +2 -2
- package/chunks/{chunk-3EK5ZOUQ.js → chunk-YX324OPW.js} +1 -1
- package/chunks/{chunk-4PTLZ3NX.js → chunk-Z2BC6UJ5.js} +3 -3
- package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
- package/chunks/{chunk-LX3COOXF.js → chunk-ZFDTEDCF.js} +6 -6
- package/chunks/chunk-ZJHVAS7M.js +289 -0
- package/chunks/{chunk-4OWXOUYF.js → chunk-ZNAUOR2I.js} +15 -12
- package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
- package/chunks/{computer-use-2VIV73WK.js → computer-use-SOQ4E3VX.js} +43 -35
- package/chunks/{config-utils-FYTBZLCJ.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-XDHHC2P4.js → create-sub-session-QRJLW5BV.js} +43 -35
- 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-CS6SFEXC.js → edit-OBDSQURM.js} +43 -35
- package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
- package/chunks/{enter-worktree-LMAL75DY.js → enter-worktree-U6MRPQ2P.js} +43 -35
- package/chunks/{enterPlanMode-WVJB4DSS.js → enterPlanMode-BC5QUZZ2.js} +43 -35
- package/chunks/{environment-6YHC4JAJ.js → environment-W5UFC2CH.js} +46 -38
- package/chunks/errors-M7CLORXH.js +88 -0
- package/chunks/{exit-worktree-KPFD742L.js → exit-worktree-DGNYMECB.js} +43 -35
- package/chunks/{exitPlanMode-UEJS6CDY.js → exitPlanMode-GXTBWQAR.js} +43 -35
- package/chunks/{fast-path-G2N4NRCA.js → fast-path-JJZFJANL.js} +6 -6
- package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-WQJU2LAT.js} +2 -2
- package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
- package/chunks/{gemini-2MDVIOVT.js → gemini-QS36EBZV.js} +132 -102
- package/chunks/{geminiContentGenerator-ZXTDBMFR.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-562XFLIZ.js → glob-V7R3PSK3.js} +43 -35
- package/chunks/{grep-MGEFBDQK.js → grep-QYPSK7OP.js} +43 -35
- package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
- package/chunks/{i18n-R6HJENXA.js → i18n-VUJJZIMU.js} +44 -36
- 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-4KNYSOYC.js → managed-npm-update-JYEMMXA3.js} +94 -38
- package/chunks/mcp-6DBDJPFU.js +83 -0
- package/chunks/{monitor-DMHKE4SW.js → monitor-R3ODH5U6.js} +45 -36
- package/chunks/node-UUDY34IG.js +305 -0
- package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
- package/chunks/{notebook-edit-35SJGEOR.js → notebook-edit-BNOK452R.js} +43 -35
- package/chunks/{openaiContentGenerator-5LPAFXPF.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
- package/chunks/pidfile-TFRZZZIO.js +86 -0
- package/chunks/{processUtils-GM2I55KF.js → processUtils-RT7UNCC2.js} +2 -2
- package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
- package/chunks/{qwenContentGenerator-HKOYNP7H.js → qwenContentGenerator-HHCRK4SX.js} +56 -42
- package/chunks/{qwenOAuth2-NUUYC3V5.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-5VH3F4NW.js → run-qwen-serve-FU6HEM4J.js} +271 -57
- package/chunks/{runtime-OH77YH7W.js → runtime-XXRRTNP6.js} +55 -45
- package/chunks/{scheduler-WJQSLCSV.js → scheduler-G2ZS2Z7E.js} +43 -35
- 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-E4N4AI6Z.js → server-4UMH7OIZ.js} +2362 -411
- package/chunks/{session-5YUWIOQE.js → session-K3O3Q2SV.js} +105 -87
- package/chunks/{settings-YY7ZSFO7.js → settings-CR2EWTBA.js} +53 -45
- package/chunks/shell-HH3PF3A2.js +83 -0
- package/chunks/{skill-PAIDX3EU.js → skill-I3SDA4MB.js} +17 -16
- package/chunks/spawnChannel-RWNDBXGA.js +82 -0
- package/chunks/{src-IZXLJI5M.js → src-GE4TTTML.js} +302 -184
- package/chunks/{standalone-update-X675JVBL.js → standalone-update-Q6WFRZZQ.js} +45 -37
- package/chunks/{startInteractiveUI-ND2IVBU3.js → startInteractiveUI-SLZGHRPH.js} +747 -310
- 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-2DEYNMMN.js → team-create-YJALH5D2.js} +46 -38
- package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
- package/chunks/{team-plan-approval-65AVAOCT.js → team-plan-approval-34QFYKGN.js} +43 -35
- package/chunks/theme-manager-SWRILQHI.js +77 -0
- package/chunks/{todoWrite-KRAUN54W.js → todoWrite-VQ7FKOHL.js} +5 -5
- package/chunks/{tool-search-ZQP3SMTV.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-LURI52LP.js → trustedFolders-KHXHY6PY.js} +44 -36
- package/chunks/{update-relaunch-BPWFIDLM.js → update-relaunch-WBUZJC5O.js} +5 -5
- package/chunks/updateCheck-RKL6M5XN.js +92 -0
- package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
- package/chunks/{validateNonInterActiveAuth-HWD6Y22I.js → validateNonInterActiveAuth-3R223G3R.js} +89 -80
- package/chunks/{version-OD4JAFG7.js → version-HS7YSFHV.js} +1 -1
- package/chunks/{web-fetch-RFBKNU24.js → web-fetch-NKCSG7ZE.js} +18 -16
- package/chunks/{web-search-AKTVS5YZ.js → web-search-S62WAP4S.js} +13 -27
- package/chunks/{workflow-VZVCOSZN.js → workflow-QAGU5RU4.js} +44 -36
- package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
- package/chunks/{workspace-registration-store-Q5SFJSX4.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-3XQIBACV.js +0 -78
- package/chunks/agent-QXD5NSKA.js +0 -73
- package/chunks/agent-headless-4VXR2TBK.js +0 -67
- package/chunks/bridge-GIBRSPE6.js +0 -81
- package/chunks/chunk-CBOQ3HY7.js +0 -2019
- package/chunks/chunk-MA6GYKK7.js +0 -6928
- package/chunks/contextCommand-XQU7KLIH.js +0 -72
- package/chunks/daemon-status-provider-KQVNB4VA.js +0 -80
- package/chunks/earlyInputCapture-WP5SA3KH.js +0 -74
- package/chunks/errors-JEYPXX4S.js +0 -80
- package/chunks/handleAutoUpdate-2VJPAW43.js +0 -73
- package/chunks/initializer-UOX67ZFQ.js +0 -78
- package/chunks/installationInfo-NQNY34X3.js +0 -72
- package/chunks/list-2Z7KS7ZF.js +0 -81
- package/chunks/loadedSettingsAdapter-LIYY3LE4.js +0 -75
- package/chunks/mcp-AJ4QW3JA.js +0 -75
- package/chunks/nonInteractiveCli-PUSO5QF6.js +0 -134
- package/chunks/pidfile-EH2JW2PB.js +0 -78
- package/chunks/read-file-JZ5VXILQ.js +0 -31
- package/chunks/resumeHistoryUtils-Z3HG4WKM.js +0 -84
- package/chunks/ripGrep-JNLJCT2B.js +0 -65
- package/chunks/serve-NN5FXWR6.js +0 -81
- package/chunks/shell-FXT3NVC6.js +0 -75
- package/chunks/spawnChannel-XAWLXNOD.js +0 -74
- package/chunks/theme-manager-2WZHPK2M.js +0 -69
- package/chunks/total-session-admission-HULB2TEQ.js +0 -75
- package/chunks/updateCheck-D4ESCHBJ.js +0 -88
- package/chunks/useAutoAcceptIndicator-CBNLOF2P.js +0 -86
- package/chunks/workspace-providers-status-TJTVHORI.js +0 -78
- package/chunks/workspace-registry-H6VM5WXK.js +0 -79
- package/chunks/workspace-service-ZNKD3I2J.js +0 -90
- package/chunks/workspace-skills-status-OOBIXADG.js +0 -77
- package/chunks/write-file-CAKK5IAO.js +0 -65
- 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,18 +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";
|
|
10
28
|
import {
|
|
11
29
|
StreamJsonOutputAdapter
|
|
12
|
-
} from "./chunk-
|
|
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";
|
|
13
68
|
import {
|
|
14
69
|
startPostRenderPrefetches
|
|
15
|
-
} 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";
|
|
16
78
|
import {
|
|
17
79
|
AboutBox,
|
|
18
80
|
BaseSelectionList,
|
|
@@ -65,12 +127,9 @@ import {
|
|
|
65
127
|
loadLowlight,
|
|
66
128
|
logicalPosToOffset,
|
|
67
129
|
measureElementPosition,
|
|
68
|
-
osc8Hyperlink,
|
|
69
130
|
removeLastGrapheme,
|
|
70
131
|
renderSoftwareCursor,
|
|
71
|
-
sanitizeForOsc,
|
|
72
132
|
splitFencedMarkdown,
|
|
73
|
-
supportsHyperlinks,
|
|
74
133
|
truncateText,
|
|
75
134
|
useArenaCommand,
|
|
76
135
|
useConfig,
|
|
@@ -88,101 +147,21 @@ import {
|
|
|
88
147
|
useTextBuffer,
|
|
89
148
|
useUIActions,
|
|
90
149
|
useUIState
|
|
91
|
-
} from "./chunk-
|
|
92
|
-
import {
|
|
93
|
-
GeminiRespondingSpinner,
|
|
94
|
-
GeminiSpinner,
|
|
95
|
-
SCREEN_READER_USER_PREFIX,
|
|
96
|
-
SHELL_COMMAND_NAME,
|
|
97
|
-
StreamingContext,
|
|
98
|
-
applyCollapsePolicyAndSummary,
|
|
99
|
-
buildResumedHistoryItems,
|
|
100
|
-
build_default,
|
|
101
|
-
expandCollapsedHistory,
|
|
102
|
-
isCollapsibleTool,
|
|
103
|
-
useStreamingContext
|
|
104
|
-
} from "./chunk-ENPCQK44.js";
|
|
105
|
-
import {
|
|
106
|
-
stopAndGetCapturedInput
|
|
107
|
-
} from "./chunk-E4IMU4Y5.js";
|
|
108
|
-
import {
|
|
109
|
-
useAutoAcceptIndicator
|
|
110
|
-
} from "./chunk-QE4KFTBS.js";
|
|
150
|
+
} from "./chunk-SQCQ4KO2.js";
|
|
111
151
|
import {
|
|
112
152
|
KeypressProvider,
|
|
113
153
|
useFocus,
|
|
114
154
|
useKeypress,
|
|
115
155
|
useKeypressContext
|
|
116
|
-
} from "./chunk-
|
|
117
|
-
import {
|
|
118
|
-
classifyApiError
|
|
119
|
-
} from "./chunk-V7RNNPGC.js";
|
|
120
|
-
import {
|
|
121
|
-
MAX_SUGGESTIONS_TO_SHOW,
|
|
122
|
-
buildMcpResourceRef,
|
|
123
|
-
buildMcpServerRef,
|
|
124
|
-
getExtensionSuggestions,
|
|
125
|
-
handleAtCommand,
|
|
126
|
-
matchMcpServerPrefix,
|
|
127
|
-
resolveAtCommandQuery,
|
|
128
|
-
sanitizeDisplayText
|
|
129
|
-
} from "./chunk-TWVE5ZS5.js";
|
|
130
|
-
import {
|
|
131
|
-
BuiltinCommandLoader,
|
|
132
|
-
BundledSkillLoader,
|
|
133
|
-
CommandService,
|
|
134
|
-
DISPLAY_HOOK_EVENTS,
|
|
135
|
-
FileCommandLoader,
|
|
136
|
-
MAX_STACKED_SKILLS,
|
|
137
|
-
McpPromptLoader,
|
|
138
|
-
SavedWorkflowLoader,
|
|
139
|
-
SkillCommandLoader,
|
|
140
|
-
addConfigToMatcherGroup,
|
|
141
|
-
appendUserPromptExpansionAdditionalContext,
|
|
142
|
-
copyToClipboard,
|
|
143
|
-
createEmptyHookEventInfo,
|
|
144
|
-
findMidInputSlashCommand,
|
|
145
|
-
findSlashCommandTokens,
|
|
146
|
-
formatApprovalModeDescription,
|
|
147
|
-
formatApprovalModeName,
|
|
148
|
-
formatUserPromptExpansionBlockedMessage,
|
|
149
|
-
getAllConfigs,
|
|
150
|
-
getBestSlashCommandMatch,
|
|
151
|
-
getTranslatedSourceDisplayMap,
|
|
152
|
-
hasBlockingBackgroundWork,
|
|
153
|
-
hasSlashCommandPathSeparator,
|
|
154
|
-
isAtCommand,
|
|
155
|
-
isBtwCommand,
|
|
156
|
-
isMidInputCompletableCommand,
|
|
157
|
-
isSlashCommand,
|
|
158
|
-
normalizePartList,
|
|
159
|
-
parseSlashCommand,
|
|
160
|
-
parseStackedSlashCommands,
|
|
161
|
-
refreshExtensionContentRuntime,
|
|
162
|
-
resetBackgroundStateForSessionSwitch,
|
|
163
|
-
serializeUserPromptExpansionPrompt,
|
|
164
|
-
supportsMatchers
|
|
165
|
-
} from "./chunk-O2XSCRCS.js";
|
|
166
|
-
import {
|
|
167
|
-
EXTENSION_RELOAD_FAILED_REASON,
|
|
168
|
-
ExtensionRefreshState,
|
|
169
|
-
appEvents,
|
|
170
|
-
cleanupReviewWorktreeLeases,
|
|
171
|
-
loadHierarchicalGeminiMemory
|
|
172
|
-
} from "./chunk-L3KUB6XM.js";
|
|
156
|
+
} from "./chunk-LQIW3YFY.js";
|
|
173
157
|
import {
|
|
174
158
|
getCommandDisplayName,
|
|
175
159
|
getCommandSourceBadge
|
|
176
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-RZIX2G32.js";
|
|
177
161
|
import {
|
|
178
162
|
computeSessionStats,
|
|
179
163
|
levelLabel
|
|
180
|
-
} from "./chunk-
|
|
181
|
-
import {
|
|
182
|
-
disableKittyProtocol,
|
|
183
|
-
isKittyProtocolEnabled,
|
|
184
|
-
isKittyProtocolSupported
|
|
185
|
-
} from "./chunk-5DTTYNB7.js";
|
|
164
|
+
} from "./chunk-U7M2DMGW.js";
|
|
186
165
|
import {
|
|
187
166
|
BEL,
|
|
188
167
|
OSC_PREFIX,
|
|
@@ -194,21 +173,31 @@ import {
|
|
|
194
173
|
oscITerm2Notify,
|
|
195
174
|
oscKittyNotify,
|
|
196
175
|
saveClipboardImage,
|
|
197
|
-
wrapForMultiplexer,
|
|
198
176
|
writeOsc52
|
|
199
|
-
} from "./chunk-
|
|
200
|
-
import "./chunk-5GI55PF5.js";
|
|
177
|
+
} from "./chunk-J56UI34H.js";
|
|
201
178
|
import "./chunk-4WGODMVR.js";
|
|
202
|
-
import "./chunk-CGLQAVZE.js";
|
|
203
|
-
import "./chunk-KW7NOTN6.js";
|
|
204
179
|
import {
|
|
205
180
|
MaxSizedBox,
|
|
206
181
|
OverflowProvider,
|
|
207
182
|
useOverflowState
|
|
208
|
-
} from "./chunk-
|
|
183
|
+
} from "./chunk-FQK6JAFG.js";
|
|
184
|
+
import {
|
|
185
|
+
GeminiRespondingSpinner,
|
|
186
|
+
GeminiSpinner,
|
|
187
|
+
ICON,
|
|
188
|
+
SCREEN_READER_USER_PREFIX,
|
|
189
|
+
SHELL_COMMAND_NAME,
|
|
190
|
+
StreamingContext,
|
|
191
|
+
applyCollapsePolicyAndSummary,
|
|
192
|
+
buildResumedHistoryItems,
|
|
193
|
+
build_default,
|
|
194
|
+
expandCollapsedHistory,
|
|
195
|
+
isCollapsibleTool,
|
|
196
|
+
useStreamingContext
|
|
197
|
+
} from "./chunk-JXJFVC6E.js";
|
|
209
198
|
import {
|
|
210
199
|
theme
|
|
211
|
-
} from "./chunk-
|
|
200
|
+
} from "./chunk-VAK25FTU.js";
|
|
212
201
|
import {
|
|
213
202
|
require_jsx_runtime
|
|
214
203
|
} from "./chunk-SV5PQVQE.js";
|
|
@@ -225,37 +214,51 @@ import {
|
|
|
225
214
|
use_is_screen_reader_enabled_default,
|
|
226
215
|
use_stdin_default,
|
|
227
216
|
use_stdout_default
|
|
228
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-6GMVPFB2.js";
|
|
229
218
|
import {
|
|
230
|
-
|
|
231
|
-
} from "./chunk-
|
|
232
|
-
import
|
|
233
|
-
|
|
234
|
-
|
|
219
|
+
stopAndGetCapturedInput
|
|
220
|
+
} from "./chunk-63P4EL5V.js";
|
|
221
|
+
import {
|
|
222
|
+
disableKittyProtocol,
|
|
223
|
+
isKittyProtocolEnabled,
|
|
224
|
+
isKittyProtocolSupported,
|
|
225
|
+
pushKittyProtocolFlags
|
|
226
|
+
} from "./chunk-PQNHRFJC.js";
|
|
235
227
|
import {
|
|
236
228
|
relaunchApp
|
|
237
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-Y34KJKDC.js";
|
|
238
230
|
import {
|
|
239
231
|
setUpdateHandler
|
|
240
|
-
} from "./chunk-
|
|
241
|
-
import "./chunk-
|
|
242
|
-
import "./chunk-
|
|
232
|
+
} from "./chunk-ZFDTEDCF.js";
|
|
233
|
+
import "./chunk-M4FMGVY4.js";
|
|
234
|
+
import "./chunk-K36B6G2O.js";
|
|
243
235
|
import {
|
|
244
236
|
AUTO_THEME_NAME,
|
|
245
237
|
DEFAULT_THEME,
|
|
246
238
|
themeManager
|
|
247
|
-
} 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";
|
|
248
252
|
import {
|
|
249
253
|
openQwenAsrRealtimeStream,
|
|
250
254
|
openVoiceStream,
|
|
251
255
|
openVoiceStreamWithRetry
|
|
252
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-BJX6ZSUK.js";
|
|
253
257
|
import {
|
|
254
258
|
recordGoalStatusItem,
|
|
255
259
|
restoreGoalFromHistory
|
|
256
|
-
} from "./chunk-
|
|
257
|
-
import "./chunk-
|
|
258
|
-
import "./chunk-LNDD3IML.js";
|
|
260
|
+
} from "./chunk-EBJQ6AXW.js";
|
|
261
|
+
import "./chunk-RHLZR4E5.js";
|
|
259
262
|
import {
|
|
260
263
|
cpLen,
|
|
261
264
|
cpSlice,
|
|
@@ -267,70 +270,69 @@ import {
|
|
|
267
270
|
sanitizeTerminalText,
|
|
268
271
|
stripUnsafeCharacters,
|
|
269
272
|
toCodePoints
|
|
270
|
-
} from "./chunk-
|
|
273
|
+
} from "./chunk-IPUUTYMV.js";
|
|
274
|
+
import "./chunk-WCXCRJYB.js";
|
|
271
275
|
import {
|
|
272
276
|
stringWidth
|
|
273
|
-
} from "./chunk-
|
|
277
|
+
} from "./chunk-2MIN6GRR.js";
|
|
274
278
|
import "./chunk-QHTIBUWB.js";
|
|
275
279
|
import {
|
|
276
280
|
isHistoryItemVisibleAfterRestore
|
|
277
281
|
} from "./chunk-QTERJVPZ.js";
|
|
278
282
|
import "./chunk-3Z43GZUQ.js";
|
|
279
|
-
import "./chunk-RXFQM6FQ.js";
|
|
280
|
-
import "./chunk-KPBVP6SL.js";
|
|
281
|
-
import "./chunk-6H67XLET.js";
|
|
282
|
-
import {
|
|
283
|
-
getErrorMessage as getErrorMessage2
|
|
284
|
-
} from "./chunk-LPEONXNV.js";
|
|
285
|
-
import {
|
|
286
|
-
getExtendedSystemInfo
|
|
287
|
-
} from "./chunk-3HFNGB2O.js";
|
|
288
|
-
import {
|
|
289
|
-
formatDuration,
|
|
290
|
-
formatMemoryUsage,
|
|
291
|
-
formatRelativeTime,
|
|
292
|
-
formatTokenCount
|
|
293
|
-
} from "./chunk-E5Z2AVNV.js";
|
|
294
|
-
import {
|
|
295
|
-
isInlineModelOverrideAllowed
|
|
296
|
-
} from "./chunk-JZSM2IZ3.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-
|
|
310
|
-
import "./chunk-
|
|
311
|
-
import "./chunk-RECUEJ7B.js";
|
|
293
|
+
} from "./chunk-YBL3QUDD.js";
|
|
294
|
+
import "./chunk-ZD6UTE4A.js";
|
|
295
|
+
import "./chunk-RXFQM6FQ.js";
|
|
296
|
+
import "./chunk-PSOO6YXD.js";
|
|
312
297
|
import {
|
|
313
298
|
requestConsentInteractive,
|
|
314
299
|
requestConsentOrFail
|
|
315
|
-
} from "./chunk-
|
|
300
|
+
} from "./chunk-PC6JANNU.js";
|
|
316
301
|
import "./chunk-57OAHC2Y.js";
|
|
317
|
-
import "./chunk-GHRSKGHF.js";
|
|
318
|
-
import "./chunk-6ZBPS62S.js";
|
|
319
|
-
import "./chunk-V6WHFGST.js";
|
|
320
302
|
import {
|
|
321
303
|
createLoadedSettingsAdapter
|
|
322
|
-
} from "./chunk-
|
|
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";
|
|
315
|
+
import "./chunk-COH43MRJ.js";
|
|
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";
|
|
323
|
+
import {
|
|
324
|
+
loadMcpApprovals
|
|
325
|
+
} from "./chunk-JVPM2ULZ.js";
|
|
326
|
+
import "./chunk-DP3IHZGG.js";
|
|
327
|
+
import "./chunk-ZNAUOR2I.js";
|
|
323
328
|
import "./chunk-2RFKHEXL.js";
|
|
324
|
-
import "./chunk-
|
|
325
|
-
import "./chunk-
|
|
329
|
+
import "./chunk-LK7CHLVP.js";
|
|
330
|
+
import "./chunk-JLU636DO.js";
|
|
331
|
+
import "./chunk-BK2UNYWD.js";
|
|
326
332
|
import "./chunk-M5GB774H.js";
|
|
327
|
-
import "./chunk-
|
|
328
|
-
import "./chunk-2LI23QA6.js";
|
|
329
|
-
import "./chunk-RVLZCXEE.js";
|
|
333
|
+
import "./chunk-RWTEFFPU.js";
|
|
330
334
|
import "./chunk-UDXSXLER.js";
|
|
331
|
-
import
|
|
332
|
-
loadMcpApprovals
|
|
333
|
-
} from "./chunk-RKWX4CMO.js";
|
|
335
|
+
import "./chunk-BIQWWWJN.js";
|
|
334
336
|
import {
|
|
335
337
|
CORRUPTED_SUFFIX,
|
|
336
338
|
SettingScope,
|
|
@@ -353,30 +355,27 @@ import {
|
|
|
353
355
|
settingExistsInScope,
|
|
354
356
|
validateSettingValue,
|
|
355
357
|
writeOutputLanguageAndRegisterPath
|
|
356
|
-
} from "./chunk-
|
|
358
|
+
} from "./chunk-TEHGS6UP.js";
|
|
357
359
|
import "./chunk-RKUWKYED.js";
|
|
360
|
+
import "./chunk-GOXKNSDZ.js";
|
|
361
|
+
import "./chunk-IDS7MSUP.js";
|
|
358
362
|
import {
|
|
359
363
|
getCurrentLanguage,
|
|
360
364
|
localizeToolDisplayName,
|
|
361
365
|
t,
|
|
362
366
|
ta
|
|
363
|
-
} from "./chunk-
|
|
364
|
-
import "./chunk-
|
|
365
|
-
import "./chunk-
|
|
366
|
-
import "./chunk-4OWXOUYF.js";
|
|
367
|
-
import "./chunk-GOXKNSDZ.js";
|
|
368
|
-
import "./chunk-IDS7MSUP.js";
|
|
369
|
-
import "./chunk-QRUIS3DN.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,47 +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-
|
|
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";
|
|
501
|
+
import "./chunk-VDDGDZMA.js";
|
|
502
|
+
import "./chunk-FNQ6T3CV.js";
|
|
503
|
+
import "./chunk-ZOIFNCKL.js";
|
|
504
|
+
import "./chunk-PWTZEM3C.js";
|
|
505
|
+
import "./chunk-KRXPRVGL.js";
|
|
506
|
+
import "./chunk-6PVPNMXU.js";
|
|
502
507
|
import {
|
|
503
508
|
resolveModelId
|
|
504
|
-
} from "./chunk-
|
|
505
|
-
import "./chunk-Q2YKNMLS.js";
|
|
506
|
-
import "./chunk-XU457J4V.js";
|
|
507
|
-
import "./chunk-VDDGDZMA.js";
|
|
508
|
-
import "./chunk-KHOVYUHX.js";
|
|
509
|
+
} from "./chunk-MZAXJAUM.js";
|
|
509
510
|
import "./chunk-SZRN75WQ.js";
|
|
510
|
-
import "./chunk-
|
|
511
|
+
import "./chunk-HTO4JFDZ.js";
|
|
511
512
|
import "./chunk-CPBF7KYF.js";
|
|
512
|
-
import "./chunk-NABLFI57.js";
|
|
513
|
-
import {
|
|
514
|
-
HOOKS_CONFIG_FIELDS
|
|
515
|
-
} from "./chunk-QBUDF33N.js";
|
|
516
|
-
import "./chunk-LIZRAKPB.js";
|
|
517
513
|
import {
|
|
518
514
|
APPROVAL_MODES,
|
|
519
515
|
getStartupContextLength,
|
|
520
516
|
isSystemReminderContent,
|
|
521
517
|
runOutsideAgentContext
|
|
522
|
-
} from "./chunk-
|
|
518
|
+
} from "./chunk-L26JL52R.js";
|
|
523
519
|
import "./chunk-6AM5D4ME.js";
|
|
520
|
+
import "./chunk-JZA3JUDJ.js";
|
|
521
|
+
import {
|
|
522
|
+
HOOKS_CONFIG_FIELDS
|
|
523
|
+
} from "./chunk-3QMGYBFN.js";
|
|
524
524
|
import "./chunk-JCW2R7WC.js";
|
|
525
525
|
import {
|
|
526
526
|
isPathWithinRoot
|
|
527
|
-
} from "./chunk-
|
|
528
|
-
import "./chunk-
|
|
527
|
+
} from "./chunk-M5JM7OSF.js";
|
|
528
|
+
import "./chunk-OHNBB4XR.js";
|
|
529
|
+
import "./chunk-E5TUC6CA.js";
|
|
529
530
|
import {
|
|
530
|
-
|
|
531
|
-
|
|
531
|
+
osc8Hyperlink,
|
|
532
|
+
qwenOAuth2Events,
|
|
533
|
+
sanitizeForOsc,
|
|
534
|
+
supportsHyperlinks,
|
|
535
|
+
wrapForMultiplexer
|
|
536
|
+
} from "./chunk-EPDRMGT4.js";
|
|
532
537
|
import "./chunk-JESCGQM3.js";
|
|
533
|
-
import "./chunk-
|
|
534
|
-
import "./chunk-
|
|
538
|
+
import "./chunk-NH6KE4JX.js";
|
|
539
|
+
import "./chunk-USTWD7QV.js";
|
|
535
540
|
import {
|
|
536
541
|
REASONING_EFFORT_TIERS
|
|
537
542
|
} from "./chunk-XVNQMZ2I.js";
|
|
@@ -541,12 +546,17 @@ import {
|
|
|
541
546
|
} from "./chunk-FODK6UMO.js";
|
|
542
547
|
import "./chunk-GLNBDYUX.js";
|
|
543
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";
|
|
544
555
|
import {
|
|
545
556
|
ApiCancelEvent,
|
|
546
557
|
AuthEvent,
|
|
547
558
|
ConversationFinishedEvent,
|
|
548
559
|
DiscoveredMCPTool,
|
|
549
|
-
MAINLINE_CODER_MODEL,
|
|
550
560
|
ModelSlashCommandEvent,
|
|
551
561
|
PromptSuggestionEvent,
|
|
552
562
|
SpeculationEvent,
|
|
@@ -582,7 +592,7 @@ import {
|
|
|
582
592
|
runVisionBridge,
|
|
583
593
|
shouldRunVisionBridge,
|
|
584
594
|
splitImageParts
|
|
585
|
-
} from "./chunk-
|
|
595
|
+
} from "./chunk-CIKQ7KKO.js";
|
|
586
596
|
import "./chunk-VGC4I5JJ.js";
|
|
587
597
|
import {
|
|
588
598
|
AUTO_MEMORY_INDEX_FILENAME,
|
|
@@ -590,30 +600,30 @@ import {
|
|
|
590
600
|
getAutoMemoryRoot,
|
|
591
601
|
getUserAutoMemoryRoot,
|
|
592
602
|
isAnyAutoMemPath
|
|
593
|
-
} from "./chunk-
|
|
603
|
+
} from "./chunk-MUP3T3AD.js";
|
|
594
604
|
import {
|
|
595
|
-
|
|
596
|
-
} from "./chunk-
|
|
605
|
+
MAINLINE_CODER_MODEL
|
|
606
|
+
} from "./chunk-IKCX4CCL.js";
|
|
607
|
+
import "./chunk-46UV252V.js";
|
|
597
608
|
import "./chunk-A4UCTEB5.js";
|
|
598
609
|
import "./chunk-XWRJCPHC.js";
|
|
599
|
-
import "./chunk-QNLNLENL.js";
|
|
600
610
|
import {
|
|
601
|
-
|
|
602
|
-
} from "./chunk-
|
|
611
|
+
DEFAULT_TOKEN_LIMIT
|
|
612
|
+
} from "./chunk-UW5EOVUN.js";
|
|
613
|
+
import "./chunk-2JZBVYTU.js";
|
|
614
|
+
import "./chunk-5I2IWRSH.js";
|
|
603
615
|
import {
|
|
604
|
-
|
|
605
|
-
} from "./chunk-
|
|
606
|
-
import "./chunk-
|
|
607
|
-
import "./chunk-FCMNKVXT.js";
|
|
608
|
-
import "./chunk-7362QS5B.js";
|
|
616
|
+
atomicWriteFileSync
|
|
617
|
+
} from "./chunk-A5L3JMUA.js";
|
|
618
|
+
import "./chunk-MB4MZHMJ.js";
|
|
609
619
|
import "./chunk-HTR4WV6U.js";
|
|
610
|
-
import "./chunk-
|
|
620
|
+
import "./chunk-BULDBTYC.js";
|
|
611
621
|
import "./chunk-U7ZFW55U.js";
|
|
612
|
-
import "./chunk-
|
|
622
|
+
import "./chunk-UUUTRMI2.js";
|
|
613
623
|
import {
|
|
614
624
|
ToolNames,
|
|
615
625
|
isShellProgressData
|
|
616
|
-
} from "./chunk-
|
|
626
|
+
} from "./chunk-PR75REBZ.js";
|
|
617
627
|
import {
|
|
618
628
|
Storage,
|
|
619
629
|
UnauthorizedError,
|
|
@@ -625,21 +635,27 @@ import {
|
|
|
625
635
|
isNodeError,
|
|
626
636
|
shortenPath,
|
|
627
637
|
tildeifyPath
|
|
628
|
-
} from "./chunk-
|
|
629
|
-
import "./chunk-
|
|
638
|
+
} from "./chunk-NL7LTRLR.js";
|
|
639
|
+
import "./chunk-QAF7NMK7.js";
|
|
640
|
+
import {
|
|
641
|
+
registerCleanup,
|
|
642
|
+
runExitCleanup
|
|
643
|
+
} from "./chunk-PWVFN2LF.js";
|
|
630
644
|
import {
|
|
631
645
|
finalizeStartupProfile,
|
|
632
646
|
profileCheckpoint
|
|
633
647
|
} from "./chunk-QSWDGAIC.js";
|
|
634
648
|
import "./chunk-Q7YDKOGY.js";
|
|
635
|
-
import {
|
|
636
|
-
registerCleanup,
|
|
637
|
-
runExitCleanup
|
|
638
|
-
} from "./chunk-5NJTNQUW.js";
|
|
639
649
|
import "./chunk-75DOP5OR.js";
|
|
640
650
|
import "./chunk-DMTGGOSA.js";
|
|
641
651
|
import "./chunk-YQ3U5MUC.js";
|
|
642
|
-
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";
|
|
643
659
|
import {
|
|
644
660
|
init_esbuild_shims
|
|
645
661
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2282,10 +2298,15 @@ function isSyntheticHistoryItem(item) {
|
|
|
2282
2298
|
case "stop_hook_loop":
|
|
2283
2299
|
case "stop_hook_system_message":
|
|
2284
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;
|
|
2285
2307
|
// Meaningful: user input, model text, tool runs, slash-command
|
|
2286
2308
|
// results the user explicitly asked for. Auto-restore must bail
|
|
2287
2309
|
// when any of these appear after the candidate user prompt.
|
|
2288
|
-
case "user":
|
|
2289
2310
|
case "user_shell":
|
|
2290
2311
|
case "gemini":
|
|
2291
2312
|
case "gemini_content":
|
|
@@ -2329,11 +2350,18 @@ function itemsAfterAreOnlySynthetic(history, fromIndex) {
|
|
|
2329
2350
|
__name(itemsAfterAreOnlySynthetic, "itemsAfterAreOnlySynthetic");
|
|
2330
2351
|
function findLastUserItemIndex(history) {
|
|
2331
2352
|
for (let i = history.length - 1; i >= 0; i--) {
|
|
2332
|
-
|
|
2353
|
+
const item = history[i];
|
|
2354
|
+
if (item.type === "user" && item.sentToModel !== false) return i;
|
|
2333
2355
|
}
|
|
2334
2356
|
return -1;
|
|
2335
2357
|
}
|
|
2336
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");
|
|
2337
2365
|
function buildThoughtHeadIdMap(items) {
|
|
2338
2366
|
const map = /* @__PURE__ */ new Map();
|
|
2339
2367
|
for (let i = 0; i < items.length; i++) {
|
|
@@ -2989,9 +3017,9 @@ function VirtualizedList(props, ref) {
|
|
|
2989
3017
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { width: 1, flexDirection: "column", flexShrink: 0, children: Array.from({ length: trackLen }, (_, i) => {
|
|
2990
3018
|
const inThumb = i >= thumbTop && i < thumbTop + thumbLen;
|
|
2991
3019
|
if (!scrollbarThumbActive) {
|
|
2992
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { children: " " }, i);
|
|
3020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { selectable: false, children: " " }, i);
|
|
2993
3021
|
}
|
|
2994
|
-
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);
|
|
2995
3023
|
}) });
|
|
2996
3024
|
}, [
|
|
2997
3025
|
showScrollbar,
|
|
@@ -3289,24 +3317,79 @@ function getSelectedText(frame, selection) {
|
|
|
3289
3317
|
return "";
|
|
3290
3318
|
}
|
|
3291
3319
|
const { sx, sy, ex, ey } = selection;
|
|
3292
|
-
|
|
3320
|
+
let text = "";
|
|
3293
3321
|
for (let y = sy; y <= ey; y++) {
|
|
3294
3322
|
const row = frame.cells[y];
|
|
3295
3323
|
if (!row) {
|
|
3296
|
-
|
|
3324
|
+
if (y < ey) {
|
|
3325
|
+
text += "\n";
|
|
3326
|
+
}
|
|
3297
3327
|
continue;
|
|
3298
3328
|
}
|
|
3299
3329
|
const startX = y === sy ? sx : 0;
|
|
3300
3330
|
const endX = y === ey ? ex : row.length - 1;
|
|
3301
|
-
let text = "";
|
|
3302
3331
|
for (let x = Math.max(0, startX); x <= endX && x < row.length; x++) {
|
|
3303
|
-
|
|
3332
|
+
if (row[x].selectable) {
|
|
3333
|
+
text += row[x].value;
|
|
3334
|
+
}
|
|
3335
|
+
}
|
|
3336
|
+
if (y < ey) {
|
|
3337
|
+
text += boundaryJoiner(frame, selection, y);
|
|
3304
3338
|
}
|
|
3305
|
-
lines.push(text.replace(/\s+$/u, ""));
|
|
3306
3339
|
}
|
|
3307
|
-
return
|
|
3340
|
+
return text;
|
|
3308
3341
|
}
|
|
3309
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");
|
|
3310
3393
|
|
|
3311
3394
|
// packages/cli/src/ui/selection/selection-span.ts
|
|
3312
3395
|
init_esbuild_shims();
|
|
@@ -3647,7 +3730,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3647
3730
|
addSourceBlockCounts(runningOffsets, item.text);
|
|
3648
3731
|
return { item, sourceCopyIndexOffsets: offsets };
|
|
3649
3732
|
}
|
|
3650
|
-
if (item.type === "user") {
|
|
3733
|
+
if (item.type === "user" && item.sentToModel !== false) {
|
|
3651
3734
|
runningOffsets = createEmptySourceCopyOffsets();
|
|
3652
3735
|
}
|
|
3653
3736
|
return { item, sourceCopyIndexOffsets: void 0 };
|
|
@@ -3671,7 +3754,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
|
|
|
3671
3754
|
addSourceBlockCounts(runningOffsets, item.text);
|
|
3672
3755
|
return { item, sourceCopyIndexOffsets: offsets };
|
|
3673
3756
|
}
|
|
3674
|
-
if (item.type === "user") {
|
|
3757
|
+
if (item.type === "user" && item.sentToModel !== false) {
|
|
3675
3758
|
runningOffsets = createEmptySourceCopyOffsets();
|
|
3676
3759
|
}
|
|
3677
3760
|
return { item, sourceCopyIndexOffsets: void 0 };
|
|
@@ -5291,7 +5374,7 @@ var SessionTab = /* @__PURE__ */ __name(() => {
|
|
|
5291
5374
|
Object.keys(metrics.models).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
|
|
5292
5375
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text, { bold: true, color: theme.text.primary, children: t("Models") }),
|
|
5293
5376
|
Object.entries(metrics.models).map(([name, m], i) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Box_default, { children: [
|
|
5294
|
-
/* @__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 + " " }),
|
|
5295
5378
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Text, { color: theme.text.primary, children: [
|
|
5296
5379
|
name,
|
|
5297
5380
|
" "
|
|
@@ -7162,7 +7245,7 @@ function SettingsDialog({
|
|
|
7162
7245
|
Text,
|
|
7163
7246
|
{
|
|
7164
7247
|
color: isActive ? theme.status.success : theme.text.secondary,
|
|
7165
|
-
children: isActive ?
|
|
7248
|
+
children: isActive ? ICON.CIRCLE_FILLED : ""
|
|
7166
7249
|
}
|
|
7167
7250
|
) }),
|
|
7168
7251
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Box_default, { flexGrow: 1, flexShrink: 1, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
@@ -9068,7 +9151,7 @@ function ModelIdsStep({
|
|
|
9068
9151
|
const isSelected = selectedRecommendationKeys.includes(item.key);
|
|
9069
9152
|
const textColor = isFocused ? theme.status.success : isSelected ? theme.text.accent : theme.text.primary;
|
|
9070
9153
|
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Box_default, { alignItems: "flex-start", children: [
|
|
9071
|
-
/* @__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 }) }),
|
|
9072
9155
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Text, { color: textColor, children: item.label }) })
|
|
9073
9156
|
] }, item.key);
|
|
9074
9157
|
}) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Text, { color: theme.text.secondary, children: t("No recommended models match.") }) }),
|
|
@@ -9110,7 +9193,7 @@ function AdvancedConfigStep({
|
|
|
9110
9193
|
modalityPdf,
|
|
9111
9194
|
contextWindowSize
|
|
9112
9195
|
} = flow.state;
|
|
9113
|
-
const checkmark = /* @__PURE__ */ __name((v) => v ?
|
|
9196
|
+
const checkmark = /* @__PURE__ */ __name((v) => v ? ICON.RADIO_FILLED : ICON.CIRCLE_EMPTY, "checkmark");
|
|
9114
9197
|
const cursor = /* @__PURE__ */ __name((index) => focusedConfigIndex === index ? "\u203A" : " ", "cursor");
|
|
9115
9198
|
const ctxIdx = modalityEnabled ? 6 : 2;
|
|
9116
9199
|
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Box_default, { marginTop: 1, flexDirection: "column", children: [
|
|
@@ -10858,6 +10941,7 @@ function ModelDialog({
|
|
|
10858
10941
|
isFastModelMode,
|
|
10859
10942
|
isVoiceModelMode,
|
|
10860
10943
|
isVisionModelMode,
|
|
10944
|
+
isImageModelMode,
|
|
10861
10945
|
persistScope,
|
|
10862
10946
|
availableTerminalHeight
|
|
10863
10947
|
}) {
|
|
@@ -10869,10 +10953,14 @@ function ModelDialog({
|
|
|
10869
10953
|
const authType = config?.getAuthType();
|
|
10870
10954
|
const availableModelEntries = (0, import_react34.useMemo)(() => {
|
|
10871
10955
|
const allModels = config ? config.getAllConfiguredModels() : [];
|
|
10872
|
-
const runtimeModels = allModels.filter((m) => m.isRuntimeModel);
|
|
10873
|
-
const registryModels = allModels.filter(
|
|
10874
|
-
|
|
10875
|
-
|
|
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
|
+
});
|
|
10876
10964
|
const modelsByAuthTypeMap = /* @__PURE__ */ new Map();
|
|
10877
10965
|
for (const model of registryModels) {
|
|
10878
10966
|
const authType2 = model.authType;
|
|
@@ -10907,7 +10995,7 @@ function ModelDialog({
|
|
|
10907
10995
|
}
|
|
10908
10996
|
}
|
|
10909
10997
|
return result;
|
|
10910
|
-
}, [authType, config, isFastModelMode, isVoiceModelMode]);
|
|
10998
|
+
}, [authType, config, isFastModelMode, isImageModelMode, isVoiceModelMode]);
|
|
10911
10999
|
const MODEL_OPTIONS = (0, import_react34.useMemo)(
|
|
10912
11000
|
() => availableModelEntries.map(
|
|
10913
11001
|
({ authType: t2, model, isRuntime, snapshotId }) => {
|
|
@@ -10973,7 +11061,9 @@ function ModelDialog({
|
|
|
10973
11061
|
const fastModelSetting = settings?.merged?.fastModel;
|
|
10974
11062
|
const voiceModelSetting = settings?.merged?.voiceModel;
|
|
10975
11063
|
const visionModelSetting = settings?.merged?.visionModel;
|
|
11064
|
+
const imageModelSetting = settings?.merged?.imageModel;
|
|
10976
11065
|
const parsedVisionModelValue = parseVisionModelSetting(visionModelSetting);
|
|
11066
|
+
const parsedImageModelValue = parseVisionModelSetting(imageModelSetting);
|
|
10977
11067
|
const parsedFastModelSetting = (0, import_react34.useMemo)(() => {
|
|
10978
11068
|
if (!isFastModelMode) return void 0;
|
|
10979
11069
|
try {
|
|
@@ -10990,8 +11080,16 @@ function ModelDialog({
|
|
|
10990
11080
|
return void 0;
|
|
10991
11081
|
}
|
|
10992
11082
|
}, [parsedVisionModelValue?.selector, isVisionModelMode]);
|
|
10993
|
-
const
|
|
10994
|
-
|
|
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?.();
|
|
10995
11093
|
const currentBaseUrl = config?.getModelsConfig().getGenerationConfig()?.baseUrl;
|
|
10996
11094
|
const preferredFastModelEntry = isFastModelMode && parsedFastModelSetting ? parsedFastModelSetting.authType ? availableModelEntries.find(
|
|
10997
11095
|
({ authType: t2, model }) => t2 === parsedFastModelSetting.authType && model.id === parsedFastModelSetting.modelId
|
|
@@ -11007,6 +11105,11 @@ function ModelDialog({
|
|
|
11007
11105
|
) : availableModelEntries.find(
|
|
11008
11106
|
({ model }) => model.id === parsedVisionModelSetting.modelId && matchesVisionModelBaseUrl(model)
|
|
11009
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;
|
|
11010
11113
|
const preferredKey = activeRuntimeSnapshot ? activeRuntimeSnapshot.id : preferredVoiceModelEntry ? buildModelSelectionKey(
|
|
11011
11114
|
preferredVoiceModelEntry.authType,
|
|
11012
11115
|
preferredVoiceModelEntry.model.id,
|
|
@@ -11015,14 +11118,22 @@ function ModelDialog({
|
|
|
11015
11118
|
preferredVisionModelEntry.authType,
|
|
11016
11119
|
preferredVisionModelEntry.model.id,
|
|
11017
11120
|
preferredVisionModelEntry.model.baseUrl
|
|
11121
|
+
) : preferredImageModelEntry ? buildModelSelectionKey(
|
|
11122
|
+
preferredImageModelEntry.authType,
|
|
11123
|
+
preferredImageModelEntry.model.id,
|
|
11124
|
+
preferredImageModelEntry.model.baseUrl
|
|
11018
11125
|
) : preferredFastModelEntry ? buildModelSelectionKey(
|
|
11019
11126
|
preferredFastModelEntry.authType,
|
|
11020
11127
|
preferredFastModelEntry.model.id,
|
|
11021
11128
|
preferredFastModelEntry.model.baseUrl
|
|
11022
|
-
) : authType ? buildModelSelectionKey(
|
|
11129
|
+
) : authType ? buildModelSelectionKey(
|
|
11130
|
+
authType,
|
|
11131
|
+
preferredModelId,
|
|
11132
|
+
currentBaseUrl
|
|
11133
|
+
) : "";
|
|
11023
11134
|
useKeypress(
|
|
11024
11135
|
(key) => {
|
|
11025
|
-
if (key.name === "escape" || key.name === "left" && (isFastModelMode || isVoiceModelMode || isVisionModelMode)) {
|
|
11136
|
+
if (key.name === "escape" || key.name === "left" && (isFastModelMode || isVoiceModelMode || isVisionModelMode || isImageModelMode)) {
|
|
11026
11137
|
onClose();
|
|
11027
11138
|
}
|
|
11028
11139
|
},
|
|
@@ -11135,6 +11246,36 @@ ${t("\u26A0 '{{model}}' is not a known image-capable model; the vision bridge ma
|
|
|
11135
11246
|
onClose();
|
|
11136
11247
|
return;
|
|
11137
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
|
+
}
|
|
11138
11279
|
const isQwenOAuthSelection = selected.startsWith(`${"qwen-oauth" /* QWEN_OAUTH */}::`) || selected.startsWith("$runtime|") && selected.split("|")[1] === "qwen-oauth" /* QWEN_OAUTH */;
|
|
11139
11280
|
const isRuntimeOAuthSelection = selected.startsWith(
|
|
11140
11281
|
`$runtime|${"qwen-oauth" /* QWEN_OAUTH */}|`
|
|
@@ -11222,6 +11363,7 @@ ${baseErrorMessage}`);
|
|
|
11222
11363
|
isFastModelMode,
|
|
11223
11364
|
isVoiceModelMode,
|
|
11224
11365
|
isVisionModelMode,
|
|
11366
|
+
isImageModelMode,
|
|
11225
11367
|
availableModelEntries,
|
|
11226
11368
|
persistScope
|
|
11227
11369
|
]
|
|
@@ -11236,7 +11378,7 @@ ${baseErrorMessage}`);
|
|
|
11236
11378
|
padding: 1,
|
|
11237
11379
|
width: "100%",
|
|
11238
11380
|
children: [
|
|
11239
|
-
/* @__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)") : "") }),
|
|
11240
11382
|
!hasModels ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Box_default, { marginTop: 1, flexDirection: "column", children: [
|
|
11241
11383
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Text, { color: theme.status.warning, children: t(
|
|
11242
11384
|
"No models available for the current authentication type ({{authType}}).",
|
|
@@ -11332,7 +11474,9 @@ function ArenaStartDialog({
|
|
|
11332
11474
|
const [selectedKeys, setSelectedKeys] = (0, import_react35.useState)([]);
|
|
11333
11475
|
const modelItems = (0, import_react35.useMemo)(() => {
|
|
11334
11476
|
const allModels = config.getAllConfiguredModels();
|
|
11335
|
-
const selectableModels = allModels.filter(
|
|
11477
|
+
const selectableModels = allModels.filter(
|
|
11478
|
+
(model) => !model.isRuntimeModel && !model.imageOnly
|
|
11479
|
+
);
|
|
11336
11480
|
return selectableModels.map((model) => {
|
|
11337
11481
|
const token = `${model.authType}:${model.id}`;
|
|
11338
11482
|
const isQwenOauth = model.authType === "qwen-oauth" /* QWEN_OAUTH */;
|
|
@@ -13926,7 +14070,7 @@ var AgentSelectionStep = /* @__PURE__ */ __name(({
|
|
|
13926
14070
|
const renderAgentItem = /* @__PURE__ */ __name((agent, index, isSelected) => {
|
|
13927
14071
|
const textColor = isSelected ? theme.text.accent : theme.text.primary;
|
|
13928
14072
|
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Box_default, { alignItems: "center", children: [
|
|
13929
|
-
/* @__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 : " " }) }),
|
|
13930
14074
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Text, { color: textColor, wrap: "truncate", children: [
|
|
13931
14075
|
agent.name,
|
|
13932
14076
|
agent.isBuiltin && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Text, { color: isSelected ? theme.text.accent : theme.text.secondary, children: [
|
|
@@ -18001,7 +18145,7 @@ var InstalledTab = /* @__PURE__ */ __name(({
|
|
|
18001
18145
|
const item = row.item;
|
|
18002
18146
|
const globalIndex = indexByKey.get(item.key) ?? -1;
|
|
18003
18147
|
const isSelected = globalIndex === selectedIndex;
|
|
18004
|
-
const marker = isSelected ?
|
|
18148
|
+
const marker = isSelected ? ICON.CIRCLE_FILLED : " ";
|
|
18005
18149
|
const isChild = item.kind === "mcp" && !!item.parentExtension;
|
|
18006
18150
|
const kindBadge = item.kind === "mcp" ? t("MCP") : t("Extension v{{version}}", {
|
|
18007
18151
|
// Persisted marketplace metadata: `version` is stored verbatim
|
|
@@ -18040,7 +18184,10 @@ var InstalledTab = /* @__PURE__ */ __name(({
|
|
|
18040
18184
|
isChild ? " \u2514 " : "",
|
|
18041
18185
|
item.name
|
|
18042
18186
|
] }),
|
|
18043
|
-
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
|
|
18044
18191
|
] }),
|
|
18045
18192
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(Text, { color: isSelected ? theme.text.accent : theme.text.secondary, children: [
|
|
18046
18193
|
kindBadge,
|
|
@@ -18463,7 +18610,7 @@ var SourcesTab = /* @__PURE__ */ __name(({
|
|
|
18463
18610
|
count: String(installedHere.length)
|
|
18464
18611
|
}) }),
|
|
18465
18612
|
installedHere.slice(0, INSTALLED_PREVIEW_LIMIT).map((p) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Box_default, { children: [
|
|
18466
|
-
/* @__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 }) }),
|
|
18467
18614
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.text.primary, children: stripUnsafeCharacters(p.name) })
|
|
18468
18615
|
] }, p.name)),
|
|
18469
18616
|
installedHere.length > INSTALLED_PREVIEW_LIMIT ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.text.secondary, children: t("... and {{count}} more", {
|
|
@@ -18514,7 +18661,7 @@ var SourcesTab = /* @__PURE__ */ __name(({
|
|
|
18514
18661
|
const isSelected = index === selectedIndex;
|
|
18515
18662
|
const labelColor = isSelected ? theme.text.accent : isAction ? theme.text.link : theme.text.primary;
|
|
18516
18663
|
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(Box_default, { children: [
|
|
18517
|
-
/* @__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 : " " }) }),
|
|
18518
18665
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: labelColor, children: label }) }),
|
|
18519
18666
|
rightText ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Text, { color: theme.text.secondary, children: rightText }) : null
|
|
18520
18667
|
] }, `row-${index}`);
|
|
@@ -18889,7 +19036,8 @@ var ServerListStep = /* @__PURE__ */ __name(({
|
|
|
18889
19036
|
servers.some(
|
|
18890
19037
|
(s) => s.status === "disconnected" && !s.isDisabled && !s.approvalState
|
|
18891
19038
|
) && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(Text, { color: theme.status.warning, children: [
|
|
18892
|
-
|
|
19039
|
+
ICON.REFERENCE,
|
|
19040
|
+
" ",
|
|
18893
19041
|
t("Run qwen --debug to see error logs")
|
|
18894
19042
|
] }) })
|
|
18895
19043
|
] });
|
|
@@ -22502,7 +22650,7 @@ __name(treeRowPrefix, "treeRowPrefix");
|
|
|
22502
22650
|
function statusGlyph(status) {
|
|
22503
22651
|
switch (status) {
|
|
22504
22652
|
case "running":
|
|
22505
|
-
return
|
|
22653
|
+
return ICON.CIRCLE_EMPTY;
|
|
22506
22654
|
case "paused":
|
|
22507
22655
|
return "\u23F8";
|
|
22508
22656
|
case "completed":
|
|
@@ -22511,7 +22659,7 @@ function statusGlyph(status) {
|
|
|
22511
22659
|
case "cancelled":
|
|
22512
22660
|
return "\u2716";
|
|
22513
22661
|
default:
|
|
22514
|
-
return
|
|
22662
|
+
return ICON.CIRCLE_EMPTY;
|
|
22515
22663
|
}
|
|
22516
22664
|
}
|
|
22517
22665
|
__name(statusGlyph, "statusGlyph");
|
|
@@ -24134,6 +24282,7 @@ var DialogManager = /* @__PURE__ */ __name(({
|
|
|
24134
24282
|
isFastModelMode: uiState.isFastModelMode,
|
|
24135
24283
|
isVoiceModelMode: uiState.isVoiceModelMode,
|
|
24136
24284
|
isVisionModelMode: uiState.isVisionModelMode,
|
|
24285
|
+
isImageModelMode: uiState.isImageModelMode,
|
|
24137
24286
|
persistScope: uiState.modelDialogPersistScope,
|
|
24138
24287
|
availableTerminalHeight: listDialogHeight
|
|
24139
24288
|
}
|
|
@@ -24665,6 +24814,23 @@ var PrepareLabel = import_react80.default.memo(_PrepareLabel);
|
|
|
24665
24814
|
|
|
24666
24815
|
// packages/cli/src/ui/components/SuggestionsDisplay.tsx
|
|
24667
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");
|
|
24668
24834
|
var MIN_DESCRIPTION_WIDTH = 12;
|
|
24669
24835
|
var ACTIVE_MARKER_WIDTH = 2;
|
|
24670
24836
|
function normalizeDescription(description) {
|
|
@@ -24682,27 +24848,31 @@ function SuggestionsDisplay({
|
|
|
24682
24848
|
expandedIndex,
|
|
24683
24849
|
onHoverIndex,
|
|
24684
24850
|
onSelectIndex,
|
|
24685
|
-
mouseEnabled
|
|
24851
|
+
mouseEnabled,
|
|
24852
|
+
activeCategory = "all",
|
|
24853
|
+
availableCategories
|
|
24686
24854
|
}) {
|
|
24687
24855
|
const containerRef = (0, import_react81.useRef)(null);
|
|
24688
24856
|
const itemRefs = (0, import_react81.useRef)([]);
|
|
24689
24857
|
if (isLoading) {
|
|
24690
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...") }) });
|
|
24691
24859
|
}
|
|
24692
|
-
|
|
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) {
|
|
24693
24863
|
return null;
|
|
24694
24864
|
}
|
|
24695
24865
|
const startIndex = scrollOffset;
|
|
24696
24866
|
const endIndex = Math.min(
|
|
24697
24867
|
scrollOffset + MAX_SUGGESTIONS_TO_SHOW,
|
|
24698
|
-
|
|
24868
|
+
filteredSuggestions.length
|
|
24699
24869
|
);
|
|
24700
|
-
const visibleSuggestions =
|
|
24870
|
+
const visibleSuggestions = filteredSuggestions.slice(startIndex, endIndex);
|
|
24701
24871
|
const getFullLabel = /* @__PURE__ */ __name((s) => [s.label, s.argumentHint, s.sourceBadge].filter(Boolean).join(" "), "getFullLabel");
|
|
24702
24872
|
const maxLabelLength = Math.max(
|
|
24703
|
-
...
|
|
24873
|
+
...filteredSuggestions.map((s) => getFullLabel(s).length)
|
|
24704
24874
|
);
|
|
24705
|
-
const describedLabelLengths =
|
|
24875
|
+
const describedLabelLengths = filteredSuggestions.filter((s) => s.description).map((s) => getFullLabel(s).length);
|
|
24706
24876
|
const contentWidth = Math.max(width - ACTIVE_MARKER_WIDTH, 1);
|
|
24707
24877
|
const labelColumnWidth = mode === "slash" ? Math.min(maxLabelLength, Math.floor(contentWidth * 0.5)) : describedLabelLengths.length > 0 ? Math.min(
|
|
24708
24878
|
Math.max(...describedLabelLengths),
|
|
@@ -24719,6 +24889,20 @@ function SuggestionsDisplay({
|
|
|
24719
24889
|
onSelectIndex
|
|
24720
24890
|
}
|
|
24721
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
|
+
] }),
|
|
24722
24906
|
scrollOffset > 0 && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { color: theme.text.primary, children: "\u25B2" }),
|
|
24723
24907
|
visibleSuggestions.map((suggestion, index) => {
|
|
24724
24908
|
const originalIndex = startIndex + index;
|
|
@@ -24784,12 +24968,12 @@ function SuggestionsDisplay({
|
|
|
24784
24968
|
`${suggestion.value}-${originalIndex}`
|
|
24785
24969
|
);
|
|
24786
24970
|
}),
|
|
24787
|
-
endIndex <
|
|
24788
|
-
|
|
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: [
|
|
24789
24973
|
"(",
|
|
24790
24974
|
activeIndex + 1,
|
|
24791
24975
|
"/",
|
|
24792
|
-
|
|
24976
|
+
filteredSuggestions.length,
|
|
24793
24977
|
")"
|
|
24794
24978
|
] })
|
|
24795
24979
|
] });
|
|
@@ -25015,8 +25199,15 @@ var import_react85 = __toESM(require_react(), 1);
|
|
|
25015
25199
|
// packages/cli/src/ui/hooks/useCompletion.ts
|
|
25016
25200
|
init_esbuild_shims();
|
|
25017
25201
|
var import_react84 = __toESM(require_react(), 1);
|
|
25202
|
+
var CATEGORY_ORDER = [
|
|
25203
|
+
"file",
|
|
25204
|
+
"session",
|
|
25205
|
+
"mcp",
|
|
25206
|
+
"extension"
|
|
25207
|
+
];
|
|
25018
25208
|
function useCompletion(options = {}) {
|
|
25019
|
-
const [
|
|
25209
|
+
const [rawSuggestions, setSuggestions] = (0, import_react84.useState)([]);
|
|
25210
|
+
const [activeCategory, setActiveCategory] = (0, import_react84.useState)("all");
|
|
25020
25211
|
const [activeSuggestionIndex, setActiveSuggestionIndex] = (0, import_react84.useState)(-1);
|
|
25021
25212
|
const [visibleStartIndex, setVisibleStartIndex] = (0, import_react84.useState)(0);
|
|
25022
25213
|
const [showSuggestions, setShowSuggestions] = (0, import_react84.useState)(false);
|
|
@@ -25024,8 +25215,48 @@ function useCompletion(options = {}) {
|
|
|
25024
25215
|
const [isPerfectMatch, setIsPerfectMatch] = (0, import_react84.useState)(false);
|
|
25025
25216
|
const [dismissed, setDismissed] = (0, import_react84.useState)(false);
|
|
25026
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
|
+
);
|
|
25027
25257
|
const resetCompletionState = (0, import_react84.useCallback)(() => {
|
|
25028
25258
|
setSuggestions([]);
|
|
25259
|
+
setActiveCategory("all");
|
|
25029
25260
|
setActiveSuggestionIndex(-1);
|
|
25030
25261
|
setVisibleStartIndex(0);
|
|
25031
25262
|
setShowSuggestions(false);
|
|
@@ -25099,7 +25330,10 @@ function useCompletion(options = {}) {
|
|
|
25099
25330
|
resetCompletionState,
|
|
25100
25331
|
dismissCompletion,
|
|
25101
25332
|
navigateUp,
|
|
25102
|
-
navigateDown
|
|
25333
|
+
navigateDown,
|
|
25334
|
+
activeCategory,
|
|
25335
|
+
availableCategories,
|
|
25336
|
+
switchCategory
|
|
25103
25337
|
};
|
|
25104
25338
|
}
|
|
25105
25339
|
__name(useCompletion, "useCompletion");
|
|
@@ -25221,6 +25455,52 @@ var import_react88 = __toESM(require_react(), 1);
|
|
|
25221
25455
|
// packages/cli/src/ui/hooks/useAtCompletion.ts
|
|
25222
25456
|
init_esbuild_shims();
|
|
25223
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
|
|
25224
25504
|
function rankResourceMatch(uri, friendly, query) {
|
|
25225
25505
|
if (uri.startsWith(query)) return 0;
|
|
25226
25506
|
if (friendly.startsWith(query)) return 1;
|
|
@@ -25465,13 +25745,21 @@ function useAtCompletion(props) {
|
|
|
25465
25745
|
...mcpServerMentionSuggestions,
|
|
25466
25746
|
...serverSuggestions,
|
|
25467
25747
|
...globalResourceSuggestions
|
|
25468
|
-
];
|
|
25748
|
+
].map((s) => ({ ...s, category: s.category ?? "mcp" }));
|
|
25749
|
+
const sessionPromise = getSessionSuggestions(cwd3, state.pattern);
|
|
25469
25750
|
if (!fileSearch.current) {
|
|
25470
|
-
|
|
25751
|
+
const sessionSuggestions = await sessionPromise.catch(
|
|
25752
|
+
() => []
|
|
25753
|
+
);
|
|
25754
|
+
if (cancelled) {
|
|
25755
|
+
return;
|
|
25756
|
+
}
|
|
25757
|
+
const scoped = [...mcpSuggestions, ...sessionSuggestions];
|
|
25758
|
+
if (scoped.length > 0) {
|
|
25471
25759
|
if (slowSearchTimer.current) {
|
|
25472
25760
|
clearTimeout(slowSearchTimer.current);
|
|
25473
25761
|
}
|
|
25474
|
-
dispatch({ type: "SEARCH_SUCCESS", payload:
|
|
25762
|
+
dispatch({ type: "SEARCH_SUCCESS", payload: scoped });
|
|
25475
25763
|
}
|
|
25476
25764
|
return;
|
|
25477
25765
|
}
|
|
@@ -25497,16 +25785,34 @@ function useAtCompletion(props) {
|
|
|
25497
25785
|
const fileSuggestions = results.map((p) => ({
|
|
25498
25786
|
label: p,
|
|
25499
25787
|
value: escapePath(p),
|
|
25500
|
-
isDirectory: p.endsWith("/")
|
|
25788
|
+
isDirectory: p.endsWith("/"),
|
|
25789
|
+
category: "file"
|
|
25501
25790
|
}));
|
|
25791
|
+
const sessionSuggestions = await sessionPromise.catch(
|
|
25792
|
+
() => []
|
|
25793
|
+
);
|
|
25794
|
+
if (controller.signal.aborted || cancelled) {
|
|
25795
|
+
return;
|
|
25796
|
+
}
|
|
25502
25797
|
dispatch({
|
|
25503
25798
|
type: "SEARCH_SUCCESS",
|
|
25504
|
-
payload: [
|
|
25799
|
+
payload: [
|
|
25800
|
+
...mcpSuggestions,
|
|
25801
|
+
...fileSuggestions,
|
|
25802
|
+
...sessionSuggestions
|
|
25803
|
+
]
|
|
25505
25804
|
});
|
|
25506
25805
|
} catch (error) {
|
|
25507
25806
|
if (!(error instanceof Error && error.name === "AbortError")) {
|
|
25508
|
-
|
|
25509
|
-
|
|
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 });
|
|
25510
25816
|
} else {
|
|
25511
25817
|
dispatch({ type: "ERROR" });
|
|
25512
25818
|
}
|
|
@@ -26165,7 +26471,10 @@ function useCommandCompletion(buffer, cwd3, slashCommands, commandContext, rever
|
|
|
26165
26471
|
resetCompletionState,
|
|
26166
26472
|
dismissCompletion,
|
|
26167
26473
|
navigateUp,
|
|
26168
|
-
navigateDown
|
|
26474
|
+
navigateDown,
|
|
26475
|
+
activeCategory,
|
|
26476
|
+
availableCategories,
|
|
26477
|
+
switchCategory
|
|
26169
26478
|
} = useCompletion({ query });
|
|
26170
26479
|
useAtCompletion({
|
|
26171
26480
|
enabled: completionMode === "AT" /* AT */,
|
|
@@ -26316,7 +26625,10 @@ function useCommandCompletion(buffer, cwd3, slashCommands, commandContext, rever
|
|
|
26316
26625
|
navigateDown,
|
|
26317
26626
|
handleAutocomplete,
|
|
26318
26627
|
completionMode,
|
|
26319
|
-
midInputGhostText
|
|
26628
|
+
midInputGhostText,
|
|
26629
|
+
activeCategory,
|
|
26630
|
+
availableCategories,
|
|
26631
|
+
switchCategory
|
|
26320
26632
|
};
|
|
26321
26633
|
}
|
|
26322
26634
|
__name(useCommandCompletion, "useCommandCompletion");
|
|
@@ -27148,7 +27460,7 @@ var FeedbackDialog = /* @__PURE__ */ __name(() => {
|
|
|
27148
27460
|
);
|
|
27149
27461
|
return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Box_default, { flexDirection: "column", marginY: 1, children: [
|
|
27150
27462
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Box_default, { children: [
|
|
27151
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { color: "cyan", children: "
|
|
27463
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { color: "cyan", children: ICON.CIRCLE_FILLED + " " }),
|
|
27152
27464
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { bold: true, children: t("How is Qwen doing this session? (optional)") })
|
|
27153
27465
|
] }),
|
|
27154
27466
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Box_default, { marginTop: 1, children: [
|
|
@@ -29511,6 +29823,18 @@ ${currentText}`);
|
|
|
29511
29823
|
return true;
|
|
29512
29824
|
}
|
|
29513
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
|
+
}
|
|
29514
29838
|
if (completion.suggestions.length > 1) {
|
|
29515
29839
|
const isCompletionUpKey = keyMatchers["completionUp" /* COMPLETION_UP */](key);
|
|
29516
29840
|
const isCompletionDownKey = keyMatchers["completionDown" /* COMPLETION_DOWN */](key);
|
|
@@ -30051,6 +30375,8 @@ ${currentText}`);
|
|
|
30051
30375
|
mode: buffer.text.startsWith("/") && !reverseSearchActive && !commandSearchActive ? "slash" : "reverse",
|
|
30052
30376
|
expandedIndex: expandedSuggestionIndex,
|
|
30053
30377
|
mouseEnabled: mouseInteractionsEnabled,
|
|
30378
|
+
activeCategory: suggestionsFromExport || commandSearchActive || reverseSearchActive ? void 0 : completion.activeCategory,
|
|
30379
|
+
availableCategories: suggestionsFromExport || commandSearchActive || reverseSearchActive ? void 0 : completion.availableCategories,
|
|
30054
30380
|
onHoverIndex: suggestionsFromExport ? void 0 : handleSuggestionHover,
|
|
30055
30381
|
onSelectIndex: suggestionsFromExport ? void 0 : handleSuggestionSelect
|
|
30056
30382
|
}
|
|
@@ -30848,7 +31174,8 @@ var CronPill = /* @__PURE__ */ __name(({ count }) => {
|
|
|
30848
31174
|
if (count <= 0) return null;
|
|
30849
31175
|
const noun = count === 1 ? "scheduled task" : "scheduled tasks";
|
|
30850
31176
|
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Text, { color: theme.text.accent, children: [
|
|
30851
|
-
|
|
31177
|
+
ICON.BULLSEYE,
|
|
31178
|
+
" ",
|
|
30852
31179
|
count,
|
|
30853
31180
|
" ",
|
|
30854
31181
|
noun
|
|
@@ -30857,11 +31184,24 @@ var CronPill = /* @__PURE__ */ __name(({ count }) => {
|
|
|
30857
31184
|
|
|
30858
31185
|
// packages/cli/src/ui/components/Footer.tsx
|
|
30859
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");
|
|
30860
31199
|
var Footer = /* @__PURE__ */ __name(() => {
|
|
30861
31200
|
const uiState = useUIState();
|
|
30862
31201
|
const config = useConfig();
|
|
30863
31202
|
const settings = useSettings();
|
|
30864
31203
|
const { vimEnabled, vimMode } = useVimModeState();
|
|
31204
|
+
const { pasteProgress } = useKeypressContext();
|
|
30865
31205
|
const {
|
|
30866
31206
|
lines: statusLineLines,
|
|
30867
31207
|
useThemeColors,
|
|
@@ -30880,7 +31220,7 @@ var Footer = /* @__PURE__ */ __name(() => {
|
|
|
30880
31220
|
const debugMode = config.getDebugMode();
|
|
30881
31221
|
const contextWindowSize = config.getContentGeneratorConfig()?.contextWindowSize;
|
|
30882
31222
|
const suppressHint = statusLineLines.length > 0;
|
|
30883
|
-
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: [
|
|
30884
31224
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(GeminiSpinner, {}),
|
|
30885
31225
|
" ",
|
|
30886
31226
|
configInitMessage
|
|
@@ -31375,9 +31715,9 @@ __name(getStickyTodoMaxVisibleItemsForMode, "getStickyTodoMaxVisibleItemsForMode
|
|
|
31375
31715
|
// packages/cli/src/ui/components/StickyTodoList.tsx
|
|
31376
31716
|
var import_jsx_runtime121 = __toESM(require_jsx_runtime(), 1);
|
|
31377
31717
|
var STATUS_ICONS = {
|
|
31378
|
-
pending:
|
|
31379
|
-
in_progress:
|
|
31380
|
-
completed:
|
|
31718
|
+
pending: ICON.CIRCLE_EMPTY,
|
|
31719
|
+
in_progress: ICON.CIRCLE_LEFT_HALF,
|
|
31720
|
+
completed: ICON.CIRCLE_FILLED
|
|
31381
31721
|
};
|
|
31382
31722
|
function clampVisibleTodoCount(value) {
|
|
31383
31723
|
if (!Number.isFinite(value)) {
|
|
@@ -33076,16 +33416,21 @@ var useModelCommand = /* @__PURE__ */ __name(() => {
|
|
|
33076
33416
|
const [isFastModelMode, setIsFastModelMode] = (0, import_react123.useState)(false);
|
|
33077
33417
|
const [isVoiceModelMode, setIsVoiceModelMode] = (0, import_react123.useState)(false);
|
|
33078
33418
|
const [isVisionModelMode, setIsVisionModelMode] = (0, import_react123.useState)(false);
|
|
33419
|
+
const [isImageModelMode, setIsImageModelMode] = (0, import_react123.useState)(false);
|
|
33079
33420
|
const [modelDialogPersistScope, setModelDialogPersistScope] = (0, import_react123.useState)(void 0);
|
|
33080
33421
|
const openModelDialog = (0, import_react123.useCallback)(
|
|
33081
33422
|
(options) => {
|
|
33082
33423
|
const voiceModelMode = options?.voiceModelMode ?? false;
|
|
33083
33424
|
const visionModelMode = options?.visionModelMode ?? false;
|
|
33425
|
+
const imageModelMode = options?.imageModelMode ?? false;
|
|
33084
33426
|
setIsFastModelMode(
|
|
33085
|
-
voiceModelMode || visionModelMode ? false : options?.fastModelMode ?? false
|
|
33427
|
+
voiceModelMode || visionModelMode || imageModelMode ? false : options?.fastModelMode ?? false
|
|
33428
|
+
);
|
|
33429
|
+
setIsVoiceModelMode(
|
|
33430
|
+
visionModelMode || imageModelMode ? false : voiceModelMode
|
|
33086
33431
|
);
|
|
33087
|
-
|
|
33088
|
-
|
|
33432
|
+
setIsVisionModelMode(imageModelMode ? false : visionModelMode);
|
|
33433
|
+
setIsImageModelMode(imageModelMode);
|
|
33089
33434
|
setModelDialogPersistScope(options?.persistScope);
|
|
33090
33435
|
setIsModelDialogOpen(true);
|
|
33091
33436
|
},
|
|
@@ -33096,6 +33441,7 @@ var useModelCommand = /* @__PURE__ */ __name(() => {
|
|
|
33096
33441
|
setIsFastModelMode(false);
|
|
33097
33442
|
setIsVoiceModelMode(false);
|
|
33098
33443
|
setIsVisionModelMode(false);
|
|
33444
|
+
setIsImageModelMode(false);
|
|
33099
33445
|
setModelDialogPersistScope(void 0);
|
|
33100
33446
|
}, []);
|
|
33101
33447
|
return {
|
|
@@ -33103,6 +33449,7 @@ var useModelCommand = /* @__PURE__ */ __name(() => {
|
|
|
33103
33449
|
isFastModelMode,
|
|
33104
33450
|
isVoiceModelMode,
|
|
33105
33451
|
isVisionModelMode,
|
|
33452
|
+
isImageModelMode,
|
|
33106
33453
|
modelDialogPersistScope,
|
|
33107
33454
|
openModelDialog,
|
|
33108
33455
|
closeModelDialog
|
|
@@ -33203,6 +33550,7 @@ var useEffortCommand = /* @__PURE__ */ __name((loadedSettings, config, addItem)
|
|
|
33203
33550
|
init_esbuild_shims();
|
|
33204
33551
|
var import_react126 = __toESM(require_react(), 1);
|
|
33205
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.";
|
|
33206
33554
|
function deriveFirstPrompt(messages) {
|
|
33207
33555
|
for (const record of messages) {
|
|
33208
33556
|
if (record.type !== "user") continue;
|
|
@@ -33224,6 +33572,16 @@ function useBranchCommand(options) {
|
|
|
33224
33572
|
const handleBranch = (0, import_react126.useCallback)(
|
|
33225
33573
|
async (name) => {
|
|
33226
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
|
+
}
|
|
33227
33585
|
const oldSessionId = config.getSessionId();
|
|
33228
33586
|
const newSessionId = randomUUID();
|
|
33229
33587
|
const sessionService = config.getSessionService();
|
|
@@ -33277,6 +33635,7 @@ function useBranchCommand(options) {
|
|
|
33277
33635
|
historyManager.clearItems();
|
|
33278
33636
|
historyManager.loadHistory(uiHistoryItems);
|
|
33279
33637
|
uiSwapped = true;
|
|
33638
|
+
resetBackgroundStateForSessionSwitch(config);
|
|
33280
33639
|
try {
|
|
33281
33640
|
restoreGoalFromHistory(
|
|
33282
33641
|
uiHistoryItems,
|
|
@@ -33395,6 +33754,7 @@ function useResumeCommand(options) {
|
|
|
33395
33754
|
const oldSessionId = config.getSessionId();
|
|
33396
33755
|
let coreSwapped = false;
|
|
33397
33756
|
let uiSwapped = false;
|
|
33757
|
+
let recoveredBackgroundAgentsNotice = null;
|
|
33398
33758
|
try {
|
|
33399
33759
|
const cwd3 = config.getTargetDir();
|
|
33400
33760
|
const sessionService = new SessionService(cwd3);
|
|
@@ -33435,22 +33795,30 @@ function useResumeCommand(options) {
|
|
|
33435
33795
|
await config.getGeminiClient()?.initialize?.();
|
|
33436
33796
|
const recovered = await config.loadPausedBackgroundAgents(sessionId);
|
|
33437
33797
|
if (recovered.length > 0) {
|
|
33438
|
-
|
|
33439
|
-
type: "info" /* INFO */,
|
|
33440
|
-
text: config.getBackgroundAgentResumeService().buildRecoveredBackgroundAgentsNotice(recovered.length)
|
|
33441
|
-
};
|
|
33442
|
-
addItem(recoveredMessage, Date.now());
|
|
33798
|
+
recoveredBackgroundAgentsNotice = config.getBackgroundAgentResumeService().buildRecoveredBackgroundAgentsNotice(recovered.length);
|
|
33443
33799
|
}
|
|
33444
33800
|
startNewSession(sessionId);
|
|
33445
33801
|
setSessionName?.(customTitle ?? null);
|
|
33446
33802
|
clearItems();
|
|
33447
33803
|
loadHistory(uiHistoryItems);
|
|
33804
|
+
if (recoveredBackgroundAgentsNotice) {
|
|
33805
|
+
addItem(
|
|
33806
|
+
{
|
|
33807
|
+
type: "info" /* INFO */,
|
|
33808
|
+
text: recoveredBackgroundAgentsNotice
|
|
33809
|
+
},
|
|
33810
|
+
Date.now()
|
|
33811
|
+
);
|
|
33812
|
+
}
|
|
33448
33813
|
uiSwapped = true;
|
|
33449
33814
|
remount?.();
|
|
33450
33815
|
} catch (error) {
|
|
33451
33816
|
if (coreSwapped && !uiSwapped) {
|
|
33452
33817
|
try {
|
|
33818
|
+
resetBackgroundStateForSessionSwitch(config);
|
|
33453
33819
|
config.startNewSession(oldSessionId, void 0);
|
|
33820
|
+
await config.loadPausedBackgroundAgents(oldSessionId).catch(() => {
|
|
33821
|
+
});
|
|
33454
33822
|
} catch (rollbackErr) {
|
|
33455
33823
|
config.getDebugLogger().warn(
|
|
33456
33824
|
`Rollback after failed /resume init failed: ${rollbackErr}`
|
|
@@ -34510,6 +34878,12 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
34510
34878
|
persistScope: result.persistScope
|
|
34511
34879
|
});
|
|
34512
34880
|
return { type: "handled" };
|
|
34881
|
+
case "image-model":
|
|
34882
|
+
actions.openModelDialog({
|
|
34883
|
+
imageModelMode: true,
|
|
34884
|
+
persistScope: result.persistScope
|
|
34885
|
+
});
|
|
34886
|
+
return { type: "handled" };
|
|
34513
34887
|
case "trust":
|
|
34514
34888
|
actions.openTrustDialog();
|
|
34515
34889
|
return { type: "handled" };
|
|
@@ -35932,9 +36306,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
35932
36306
|
}, [isResponding, toolCalls]);
|
|
35933
36307
|
(0, import_react136.useEffect)(() => {
|
|
35934
36308
|
if (config.getApprovalMode() === "yolo" /* YOLO */ && streamingState === "idle" /* Idle */) {
|
|
35935
|
-
const lastUserMessageIndex = history
|
|
35936
|
-
(item) => item.type === "user" /* USER */
|
|
35937
|
-
);
|
|
36309
|
+
const lastUserMessageIndex = findLastUserItemIndex(history);
|
|
35938
36310
|
const turnCount = lastUserMessageIndex === -1 ? 0 : history.length - lastUserMessageIndex;
|
|
35939
36311
|
if (turnCount > 0) {
|
|
35940
36312
|
logConversationFinishedEvent(
|
|
@@ -37236,7 +37608,12 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37236
37608
|
for (const sideEffect of sideEffects) sideEffect();
|
|
37237
37609
|
config.getChatRecordingService?.()?.recordMidTurnUserMessage(parts, message);
|
|
37238
37610
|
addItem(
|
|
37239
|
-
{
|
|
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
|
+
},
|
|
37240
37617
|
Date.now()
|
|
37241
37618
|
);
|
|
37242
37619
|
}
|
|
@@ -37894,6 +38271,15 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37894
38271
|
if (modelSwitchedFromQuotaError) {
|
|
37895
38272
|
return;
|
|
37896
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
|
+
}
|
|
37897
38283
|
const drained = turnCancelledRef.current || abortControllerRef.current?.signal.aborted ? [] : midTurnDrainRef?.current?.() ?? [];
|
|
37898
38284
|
let drainedSteer;
|
|
37899
38285
|
if (drained.length > 0) {
|
|
@@ -38136,7 +38522,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38136
38522
|
notificationQueueRef.current.push({
|
|
38137
38523
|
displayText,
|
|
38138
38524
|
modelText,
|
|
38139
|
-
sendMessageType: "notification" /* Notification
|
|
38525
|
+
sendMessageType: "notification" /* Notification */,
|
|
38526
|
+
monitor: { id: meta.monitorId, status: meta.status }
|
|
38140
38527
|
});
|
|
38141
38528
|
setNotificationTrigger((n) => n + 1);
|
|
38142
38529
|
});
|
|
@@ -38148,6 +38535,16 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38148
38535
|
if (streamingState === "idle" /* Idle */ && !isSubmittingQueryRef.current && notificationQueueRef.current.length > 0) {
|
|
38149
38536
|
runOutsideAgentContext(() => {
|
|
38150
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
|
+
}
|
|
38151
38548
|
const targetType = queue[0].sendMessageType;
|
|
38152
38549
|
if (targetType === "cron" /* Cron */) {
|
|
38153
38550
|
const item = queue.shift();
|
|
@@ -38181,7 +38578,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38181
38578
|
});
|
|
38182
38579
|
});
|
|
38183
38580
|
}
|
|
38184
|
-
}, [streamingState, submitQuery, notificationTrigger, addItem]);
|
|
38581
|
+
}, [streamingState, submitQuery, notificationTrigger, addItem, config]);
|
|
38185
38582
|
const teammateQueueRef = (0, import_react136.useRef)([]);
|
|
38186
38583
|
const [teammateTrigger, setTeammateTrigger] = (0, import_react136.useState)(0);
|
|
38187
38584
|
(0, import_react136.useEffect)(() => {
|
|
@@ -38216,17 +38613,19 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38216
38613
|
}, [config]);
|
|
38217
38614
|
(0, import_react136.useEffect)(() => {
|
|
38218
38615
|
if (streamingState === "idle" /* Idle */ && !isSubmittingQueryRef.current && teammateQueueRef.current.length > 0) {
|
|
38219
|
-
|
|
38220
|
-
|
|
38221
|
-
|
|
38222
|
-
|
|
38223
|
-
|
|
38224
|
-
|
|
38225
|
-
|
|
38226
|
-
|
|
38227
|
-
|
|
38228
|
-
|
|
38229
|
-
|
|
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
|
+
});
|
|
38230
38629
|
});
|
|
38231
38630
|
}
|
|
38232
38631
|
}, [streamingState, submitQuery, teammateTrigger, addItem]);
|
|
@@ -39894,14 +40293,15 @@ function shouldFireRecap(history) {
|
|
|
39894
40293
|
let lastRecapIndex = -1;
|
|
39895
40294
|
for (let i = 0; i < history.length; i++) {
|
|
39896
40295
|
const item = history[i];
|
|
39897
|
-
if (item.type === "user") userMessageCount++;
|
|
40296
|
+
if (item.type === "user" && item.sentToModel !== false) userMessageCount++;
|
|
39898
40297
|
if (item.type === "away_recap") lastRecapIndex = i;
|
|
39899
40298
|
}
|
|
39900
40299
|
if (userMessageCount < MIN_USER_MESSAGES_TO_FIRE) return false;
|
|
39901
40300
|
if (lastRecapIndex === -1) return true;
|
|
39902
40301
|
let userSinceLast = 0;
|
|
39903
40302
|
for (let i = lastRecapIndex + 1; i < history.length; i++) {
|
|
39904
|
-
|
|
40303
|
+
const item = history[i];
|
|
40304
|
+
if (item.type === "user" && item.sentToModel !== false) userSinceLast++;
|
|
39905
40305
|
}
|
|
39906
40306
|
return userSinceLast >= MIN_USER_MESSAGES_SINCE_LAST_RECAP;
|
|
39907
40307
|
}
|
|
@@ -40920,16 +41320,23 @@ var AlternateScreen = /* @__PURE__ */ __name(({
|
|
|
40920
41320
|
init_esbuild_shims();
|
|
40921
41321
|
var import_react150 = __toESM(require_react(), 1);
|
|
40922
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");
|
|
40923
41330
|
var ErrorBoundary = class extends import_react150.Component {
|
|
40924
41331
|
static {
|
|
40925
41332
|
__name(this, "ErrorBoundary");
|
|
40926
41333
|
}
|
|
40927
41334
|
state = { error: null };
|
|
40928
41335
|
static getDerivedStateFromError(error) {
|
|
40929
|
-
return { error };
|
|
41336
|
+
return { error: normalizeError(error) };
|
|
40930
41337
|
}
|
|
40931
41338
|
componentDidCatch(error, info) {
|
|
40932
|
-
this.props.onError?.(error, info);
|
|
41339
|
+
this.props.onError?.(normalizeError(error), info);
|
|
40933
41340
|
}
|
|
40934
41341
|
reset = /* @__PURE__ */ __name(() => {
|
|
40935
41342
|
this.setState({ error: null });
|
|
@@ -42113,9 +42520,9 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
42113
42520
|
(0, import_react165.useEffect)(() => {
|
|
42114
42521
|
const fetchUserMessages = /* @__PURE__ */ __name(async () => {
|
|
42115
42522
|
const pastMessagesRaw = await logger?.getPreviousUserMessages() || [];
|
|
42116
|
-
const currentSessionUserMessages =
|
|
42117
|
-
|
|
42118
|
-
).
|
|
42523
|
+
const currentSessionUserMessages = realUserPromptTexts(
|
|
42524
|
+
historyManager.history
|
|
42525
|
+
).reverse();
|
|
42119
42526
|
const combinedMessages = [
|
|
42120
42527
|
...currentSessionUserMessages,
|
|
42121
42528
|
...pastMessagesRaw
|
|
@@ -42244,6 +42651,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
42244
42651
|
isFastModelMode,
|
|
42245
42652
|
isVoiceModelMode,
|
|
42246
42653
|
isVisionModelMode,
|
|
42654
|
+
isImageModelMode,
|
|
42247
42655
|
modelDialogPersistScope,
|
|
42248
42656
|
openModelDialog,
|
|
42249
42657
|
closeModelDialog
|
|
@@ -42882,6 +43290,20 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
42882
43290
|
}
|
|
42883
43291
|
}
|
|
42884
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
|
+
}
|
|
42885
43307
|
const worktreeNotice = pendingWorktreeNoticeRef.current;
|
|
42886
43308
|
if (worktreeNotice && !isSlashCommand(submittedValue)) {
|
|
42887
43309
|
pendingWorktreeNoticeRef.current = null;
|
|
@@ -42912,12 +43334,6 @@ ${buildWorkflowSteeringNotice()}
|
|
|
42912
43334
|
void submitQuery(submittedValue);
|
|
42913
43335
|
return;
|
|
42914
43336
|
}
|
|
42915
|
-
if (["/quit", "/exit", "exit", "quit", ":q", ":q!", ":wq", ":wq!"].includes(
|
|
42916
|
-
submittedValue.trim()
|
|
42917
|
-
)) {
|
|
42918
|
-
void handleSlashCommand("/quit");
|
|
42919
|
-
return;
|
|
42920
|
-
}
|
|
42921
43337
|
const spec = speculationRef.current;
|
|
42922
43338
|
if (spec.status !== "idle" && spec.suggestion === submittedValue && spec.status === "completed") {
|
|
42923
43339
|
acceptSpeculation(spec, geminiClient).then((result) => {
|
|
@@ -44148,6 +44564,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
44148
44564
|
isFastModelMode,
|
|
44149
44565
|
isVoiceModelMode,
|
|
44150
44566
|
isVisionModelMode,
|
|
44567
|
+
isImageModelMode,
|
|
44151
44568
|
modelDialogPersistScope,
|
|
44152
44569
|
isTrustDialogOpen,
|
|
44153
44570
|
activeArenaDialog,
|
|
@@ -44291,6 +44708,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
44291
44708
|
isFastModelMode,
|
|
44292
44709
|
isVoiceModelMode,
|
|
44293
44710
|
isVisionModelMode,
|
|
44711
|
+
isImageModelMode,
|
|
44294
44712
|
modelDialogPersistScope,
|
|
44295
44713
|
isTrustDialogOpen,
|
|
44296
44714
|
activeArenaDialog,
|
|
@@ -44924,14 +45342,33 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
44924
45342
|
if (useVP) {
|
|
44925
45343
|
process.stdout.setMaxListeners(0);
|
|
44926
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
|
+
);
|
|
44927
45361
|
const instance = render_default(
|
|
44928
|
-
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,
|
|
44929
45363
|
{
|
|
44930
45364
|
exitOnCtrlC: false,
|
|
44931
45365
|
isScreenReaderEnabled: config.getScreenReader(),
|
|
44932
45366
|
alternateScreen: useVP
|
|
44933
45367
|
}
|
|
44934
45368
|
);
|
|
45369
|
+
if (useVP) {
|
|
45370
|
+
pushKittyProtocolFlags();
|
|
45371
|
+
}
|
|
44935
45372
|
profileCheckpoint("first_paint");
|
|
44936
45373
|
startPostRenderPrefetches(config, settings, {
|
|
44937
45374
|
connectIde: options.postRenderConnectIde ?? false,
|