@qwen-code/qwen-code 0.21.13 → 0.21.14-nightly.20260822.7a4566cb3b
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 +15 -7
- package/bundled/qc-helper/docs/extension/introduction.md +2 -0
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
- package/bundled/qc-helper/docs/features/code-review.md +25 -3
- package/bundled/qc-helper/docs/features/commands.md +120 -8
- package/bundled/qc-helper/docs/features/markdown-rendering.md +6 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +3 -3
- package/bundled/qc-helper/docs/features/terminal-images.md +50 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +21 -4
- package/bundled/review/SKILL.md +113 -62
- package/chunks/MaxSizedBox-NCWYES5B.js +98 -0
- package/chunks/{StandaloneSessionPicker-KEGXNUG6.js → StandaloneSessionPicker-A4V4F64Y.js} +80 -79
- package/chunks/{acp-startup-profiler-NMDXYGDN.js → acp-startup-profiler-DDVSJKJK.js} +2 -2
- package/chunks/{acpAgent-XPES32S7.js → acpAgent-YYRH7HTQ.js} +1094 -278
- package/chunks/{agent-DPTOZFEM.js → agent-NEM254CJ.js} +52 -51
- package/chunks/agent-headless-AVFYIRPV.js +88 -0
- package/chunks/{anthropicContentGenerator-G7BVXTKN.js → anthropicContentGenerator-IWFTSBSV.js} +25 -25
- package/chunks/{artifact-tool-GEXTOPVO.js → artifact-tool-SBXMTVCB.js} +3 -3
- package/chunks/{askUserQuestion-B33XRSB7.js → askUserQuestion-KEQJRFD6.js} +3 -3
- package/chunks/{bridge-YNQBAA4Z.js → bridge-2CGOUO25.js} +59 -57
- package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
- package/chunks/{channel-management-service-GWY2GAIC.js → channel-management-service-FUJ2EFTF.js} +1 -1
- package/chunks/channel-settings-store-AZKNHHDC.js +103 -0
- package/chunks/{channel-worker-group-7LXCMZ77.js → channel-worker-group-CTE54QL6.js} +8 -7
- package/chunks/{channel-worker-manager-RYEME4ZZ.js → channel-worker-manager-4EHTD3T4.js} +8 -7
- package/chunks/{channel-worker-supervisor-OEVWBHGT.js → channel-worker-supervisor-F6I6WSWW.js} +6 -5
- package/chunks/{chunk-KD5BOPLP.js → chunk-2G4QF4VI.js} +125 -31
- package/chunks/{chunk-BHILXOC3.js → chunk-2MTIAN5Z.js} +3 -3
- package/chunks/{chunk-A4QRWUDE.js → chunk-2NWPB6T4.js} +6 -6
- package/chunks/{chunk-KV27IEHM.js → chunk-2TRNCJK4.js} +1 -1
- package/chunks/{chunk-EL5SXY3T.js → chunk-32CHFLGV.js} +198 -23
- package/chunks/{chunk-5CVO7YES.js → chunk-36OF5PRW.js} +1 -1
- package/chunks/{chunk-X26JYGTD.js → chunk-37BZSWEV.js} +1 -1
- package/chunks/{chunk-WFSTRPRO.js → chunk-3CLIDIVQ.js} +3 -3
- package/chunks/{chunk-A267JX7H.js → chunk-3HWN4E7N.js} +18 -18
- package/chunks/{chunk-ZYYTZUI2.js → chunk-3LYGXZ2H.js} +3 -3
- package/chunks/chunk-3SIGAHUX.js +3969 -0
- package/chunks/{chunk-BVJS5BSP.js → chunk-3XD4PT3B.js} +1 -1
- package/chunks/{chunk-6QFDQMQX.js → chunk-3ZFJUBTP.js} +1 -1
- package/chunks/{chunk-HUTNYWBG.js → chunk-45UD2TU4.js} +19 -11
- package/chunks/{chunk-4W5U2TUT.js → chunk-4F5WV4RF.js} +4 -4
- package/chunks/{chunk-I3G5JWBV.js → chunk-4GP3MNQ2.js} +2695 -1524
- package/chunks/{chunk-V26NVGAU.js → chunk-4MIDDJLJ.js} +8 -3
- package/chunks/{chunk-TS6625XH.js → chunk-5MK45KZ3.js} +9 -5
- package/chunks/{chunk-V57QC6WW.js → chunk-5OTMZVPL.js} +11 -9
- package/chunks/{chunk-MC4TLKEI.js → chunk-5PHLBWBL.js} +3 -3
- package/chunks/chunk-64LXOKG4.js +367 -0
- package/chunks/{chunk-6HY6IF3Z.js → chunk-6NFAEG54.js} +22 -2
- package/chunks/{chunk-TIGA2IVL.js → chunk-6NJIPX6W.js} +10 -298
- package/chunks/{chunk-MRMJCLIY.js → chunk-6RB2S4QP.js} +3 -3
- package/chunks/chunk-6S2OXVJT.js +369 -0
- package/chunks/{chunk-O4D7SPJN.js → chunk-6U46RZ25.js} +3 -3
- package/chunks/{chunk-JOOFMXGF.js → chunk-6UDHEIUT.js} +6 -6
- package/chunks/{chunk-VOQXFAY5.js → chunk-74TONY4F.js} +286 -0
- package/chunks/{chunk-LJQAUZMR.js → chunk-7CPJMZVJ.js} +1627 -180
- package/chunks/{chunk-T3CHYWJZ.js → chunk-7E7UCJHS.js} +100 -4
- package/chunks/{chunk-YZHRN3CF.js → chunk-7IV52LTO.js} +2 -2
- package/chunks/{chunk-4PKCUT7F.js → chunk-7JDGSJQH.js} +7 -7
- package/chunks/{chunk-GO7STP6N.js → chunk-7VITNOH6.js} +4 -4
- package/chunks/{chunk-CU6GJD55.js → chunk-7WLFSDLG.js} +1 -1
- package/chunks/{chunk-4WKAA4KS.js → chunk-A4N4FTMH.js} +1 -11
- package/chunks/{chunk-BUQDLC2G.js → chunk-A5F2YNO6.js} +3 -3
- package/chunks/{chunk-OY5RNSV4.js → chunk-AGCLK4G7.js} +3 -3
- package/chunks/{chunk-IA2K2HJE.js → chunk-AP3B7LKD.js} +2 -2
- package/chunks/{chunk-Y3YCSWG5.js → chunk-AZF6SME3.js} +2 -2
- package/chunks/{chunk-QFJ5JHQR.js → chunk-C72BXMJ5.js} +1 -1
- package/chunks/chunk-CETB5XY4.js +3654 -0
- package/chunks/{chunk-AA2BEKV3.js → chunk-CTAP6PO3.js} +3 -3
- package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
- package/chunks/{chunk-QF2NHSPB.js → chunk-D534POS2.js} +274 -225
- package/chunks/{chunk-UKMR3CKV.js → chunk-D7QQ6RUB.js} +24 -9
- package/chunks/{chunk-DXIBNLBZ.js → chunk-DB2OKNTU.js} +2 -2
- package/chunks/{chunk-DGZEMW5R.js → chunk-DJEHYM4H.js} +3 -3
- package/chunks/{chunk-O565M6A4.js → chunk-DRVS6K7A.js} +260 -16
- package/chunks/{chunk-U3VNBPUO.js → chunk-DV4375RD.js} +5 -5
- package/chunks/{chunk-OXCMMLED.js → chunk-E63A23D7.js} +3 -3
- package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
- package/chunks/{chunk-6ORZ2EDC.js → chunk-EW2IQ3ID.js} +3 -3
- package/chunks/{chunk-DGK6P3BQ.js → chunk-EXVK5R7X.js} +13 -13
- package/chunks/{chunk-NWNEANAT.js → chunk-FOGQO4FG.js} +953 -660
- package/chunks/{chunk-3U3VAL47.js → chunk-FV6PXZRO.js} +1 -1
- package/chunks/{chunk-76J3IJ3M.js → chunk-FX5TGHDE.js} +8 -8
- package/chunks/{chunk-QIH2HAEN.js → chunk-GXG4PYQB.js} +1 -1
- package/chunks/{chunk-FDGGZIYW.js → chunk-HDKCKCYO.js} +3 -3
- package/chunks/{chunk-RIAABG2K.js → chunk-HERHU33B.js} +2 -2
- package/chunks/{chunk-ZYBBISBY.js → chunk-HETN3NE2.js} +18 -15
- package/chunks/{chunk-XIT3GURH.js → chunk-HGBACZGD.js} +3 -3
- package/chunks/{chunk-UZPM4XHR.js → chunk-HGH7DXNI.js} +29 -8
- package/chunks/{chunk-CHHABXPE.js → chunk-HIK2OF33.js} +1 -1
- package/chunks/{chunk-FC4KQFCS.js → chunk-HMJ2P3SV.js} +1 -1
- package/chunks/chunk-HRVMTN37.js +26 -0
- package/chunks/{chunk-PQ36L4F5.js → chunk-HZZGYJIP.js} +1 -1
- package/chunks/{chunk-PT4I7NBA.js → chunk-I432KXWD.js} +1 -1
- package/chunks/{chunk-3EZLLVDF.js → chunk-IBJ5S45N.js} +3 -3
- package/chunks/{chunk-A4MFR4C5.js → chunk-IO257NUD.js} +3 -5
- package/chunks/{chunk-MIPFDQAF.js → chunk-ISJMN3ML.js} +1 -1
- package/chunks/chunk-IWOWEENB.js +9169 -0
- package/chunks/{chunk-XHRY7BXD.js → chunk-J6SIP2IT.js} +4 -4
- package/chunks/{chunk-OD2WU5QY.js → chunk-J7JQXYVL.js} +1 -1
- package/chunks/{chunk-NEFOOD54.js → chunk-J7VPB2HF.js} +4 -4
- package/chunks/{chunk-P7MPQI75.js → chunk-JGUBDRBC.js} +2 -2
- package/chunks/{chunk-SXCOEJO4.js → chunk-JOLJTKIG.js} +1 -1
- package/chunks/{chunk-NTTBXH7U.js → chunk-JS73NNWF.js} +8 -0
- package/chunks/{chunk-QRCNA3SR.js → chunk-JXLPQTMW.js} +50 -70
- package/chunks/{chunk-NNHNLJ2X.js → chunk-K2MSGB3W.js} +317 -72
- package/chunks/{chunk-KBXKR5R2.js → chunk-K52PZNU4.js} +1 -1
- package/chunks/{chunk-OOQUVWIG.js → chunk-K5OIW3I7.js} +4 -4
- package/chunks/{chunk-SOORFWKY.js → chunk-KSPRQSB4.js} +1 -1
- package/chunks/{chunk-WSH6GRKG.js → chunk-KVGR4MCF.js} +3 -3
- package/chunks/{chunk-6YKYPVDV.js → chunk-LC5M7YVE.js} +4 -4
- package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
- package/chunks/{chunk-OMLJNPBE.js → chunk-LDGWX737.js} +84 -4
- package/chunks/{chunk-FAAUPSY2.js → chunk-LI4YHTQK.js} +1 -1
- package/chunks/{chunk-CXAOG665.js → chunk-LIKIJAUH.js} +2 -2
- package/chunks/chunk-LJZSMWOH.js +18 -0
- package/chunks/{chunk-BKPPWD33.js → chunk-M2IL2RTA.js} +22 -2
- package/chunks/{chunk-N5YPT6PH.js → chunk-MHOY756Q.js} +25 -13
- package/chunks/{chunk-YP5KH5Y7.js → chunk-ND7NOI4P.js} +1 -1
- package/chunks/{chunk-AW4TRXOC.js → chunk-NP2LV67M.js} +1 -1
- package/chunks/{chunk-GGDBMYGZ.js → chunk-NQB52P65.js} +5 -5
- package/chunks/{chunk-E3DYKPYZ.js → chunk-NUGZAFR2.js} +3 -3
- package/chunks/{chunk-GMIEIY3Y.js → chunk-O5BDEWBC.js} +3 -3
- package/chunks/{chunk-GDXET5XU.js → chunk-O5Z7EB6Y.js} +3 -3
- package/chunks/{chunk-5EYKMUUY.js → chunk-OTXXOZKW.js} +1 -1
- package/chunks/{chunk-M732YJPW.js → chunk-PALTIYXB.js} +6 -6
- package/chunks/{chunk-7UXUJ5T3.js → chunk-PLECQWDB.js} +1 -1
- package/chunks/{chunk-MLPXSYXR.js → chunk-PMIKPGDF.js} +66 -32
- package/chunks/{chunk-IWPYVAO2.js → chunk-PSQJ24ZZ.js} +3 -3
- package/chunks/{chunk-CPHEPGAO.js → chunk-PZRUV52H.js} +2 -2
- package/chunks/{chunk-PP4FUZNV.js → chunk-Q7RPLE33.js} +2 -2
- package/chunks/{chunk-S5DWMTHO.js → chunk-QQUVPMMZ.js} +2 -0
- package/chunks/{chunk-JUEPY766.js → chunk-RNGTMHKN.js} +3 -3
- package/chunks/{chunk-TUGSVUJB.js → chunk-ROV6B34L.js} +6 -6
- package/chunks/{chunk-RVOJ2FBP.js → chunk-RPJOOK6N.js} +1576 -10633
- package/chunks/{chunk-AXN7UPYQ.js → chunk-RQJJZQOH.js} +2 -2
- package/chunks/{chunk-AFSG32D5.js → chunk-RRRCWDFO.js} +1 -1
- package/chunks/{chunk-2M55OBEB.js → chunk-S3G6YFQC.js} +1 -1
- package/chunks/{chunk-4S5337WV.js → chunk-SVU5KGR7.js} +6527 -3314
- package/chunks/chunk-TBVSALA3.js +1109 -0
- package/chunks/{chunk-QUGAUQGJ.js → chunk-TBWQLLFO.js} +2 -0
- package/chunks/{chunk-AS5IN4GK.js → chunk-THK3QUU6.js} +5 -5
- package/chunks/{chunk-JNDY2MDR.js → chunk-TLDZKNZP.js} +1 -1
- package/chunks/{chunk-ZZO74WKW.js → chunk-TNAIZBPQ.js} +115 -28
- package/chunks/{chunk-3Z43GZUQ.js → chunk-TXASDT2M.js} +1 -1
- package/chunks/{chunk-CZBYX5MY.js → chunk-U53XZHAE.js} +1 -1
- package/chunks/{chunk-HIBNSEJE.js → chunk-UDG5EZJI.js} +0 -2
- package/chunks/{chunk-QNQAPSN2.js → chunk-URN2JIAQ.js} +4 -1
- package/chunks/{chunk-EZ5RP345.js → chunk-UYQTX2P6.js} +44 -13
- package/chunks/{chunk-BZ263IKX.js → chunk-UZPYR3EV.js} +1 -1
- package/chunks/{chunk-YZOSNW4R.js → chunk-VFACN2CE.js} +1 -1
- package/chunks/{chunk-RWDNJBWN.js → chunk-VLRBJ24J.js} +2 -2
- package/chunks/{chunk-NHDR76JX.js → chunk-VMJL7RH6.js} +4 -4
- package/chunks/{chunk-E23IPNGS.js → chunk-VOTDAZR7.js} +35 -6
- package/chunks/{chunk-XLLKYULU.js → chunk-VSNPOSDN.js} +2 -2
- package/chunks/{chunk-25EYDK42.js → chunk-VUMLT7E5.js} +2 -2
- package/chunks/{chunk-H4A72DE5.js → chunk-W4CRPSC5.js} +1 -1
- package/chunks/{chunk-NM5V5OVW.js → chunk-WJJYJVQE.js} +3 -3
- package/chunks/{chunk-ROIYNTHJ.js → chunk-WRT324N6.js} +3 -3
- package/chunks/chunk-WZAD4ZNJ.js +59 -0
- package/chunks/{chunk-SG7ZP5PG.js → chunk-WZDM44SB.js} +4 -4
- package/chunks/{chunk-JE7KQ2UP.js → chunk-XIQ5HQ2F.js} +469 -77
- package/chunks/{chunk-QV5YN5YD.js → chunk-XJOHLP2A.js} +5 -5
- package/chunks/{chunk-XUJNK7Y6.js → chunk-XL5K4SVK.js} +1 -1
- package/chunks/{chunk-CKSJECTU.js → chunk-XZJKSETB.js} +9 -5
- package/chunks/{chunk-YEYY7TEP.js → chunk-Y2FEAXLP.js} +7 -7
- package/chunks/{chunk-2B2BF7P7.js → chunk-YDJRMQU4.js} +3 -3
- package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
- package/chunks/{chunk-OVZPVYZB.js → chunk-YMVFIYHV.js} +96 -18
- package/chunks/{chunk-WGHHA7ZH.js → chunk-Z3JMO2CH.js} +1 -1
- package/chunks/{chunk-MA2HEDVP.js → chunk-ZRYQMWEP.js} +3 -3
- package/chunks/{chunk-IGGGG5CX.js → chunk-ZTAT23TL.js} +15948 -10201
- package/chunks/{computer-use-77C5FHMW.js → computer-use-H2T7IFYX.js} +55 -54
- package/chunks/{config-utils-IVHRSXWI.js → config-utils-3DY73VIJ.js} +2 -2
- package/chunks/contextCommand-5AAZFFFV.js +94 -0
- package/chunks/{core-runtime-7VMIKUTG.js → core-runtime-JWFNKO2S.js} +57 -55
- package/chunks/{create-sub-session-2L5MQRN4.js → create-sub-session-33HIYIJE.js} +58 -56
- package/chunks/{create-sub-session-KRQULJE6.js → create-sub-session-XBCVGNFU.js} +6 -4
- package/chunks/{cron-create-H7UEPDSN.js → cron-create-IKA56DAF.js} +5 -5
- package/chunks/{cron-delete-6SZK7YFM.js → cron-delete-K5Q62EGH.js} +5 -5
- package/chunks/{cron-list-H25JIHEZ.js → cron-list-QBFGAMP7.js} +5 -5
- package/chunks/{daemon-2KTG7ZBN.js → daemon-NNCQ3HWT.js} +806 -147
- package/chunks/{daemon-git-worktree-guard-DXYIMWFT.js → daemon-git-worktree-guard-6233JAPJ.js} +54 -53
- package/chunks/daemon-status-provider-3EI2KALQ.js +104 -0
- package/chunks/daemon-trust-policy-QWWU7CON.js +100 -0
- package/chunks/{daemon-trust-policy-monitor-RYYGCQ3J.js → daemon-trust-policy-monitor-FH7GBAKN.js} +60 -59
- package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
- package/chunks/{deferred-core-runtime-3SGXFXEQ.js → deferred-core-runtime-EDUZQRME.js} +52 -51
- package/chunks/{discovery-ORA5J7YP.js → discovery-X2NV535U.js} +1 -1
- package/chunks/{display-image-ON3EYFRD.js → display-image-OEJMJV3S.js} +5 -5
- package/chunks/{dist-YEPL4RAW.js → dist-5EV2G6MC.js} +2 -3
- package/chunks/{dist-MAQXAQ2Y.js → dist-EQ3Q5XHX.js} +45337 -32756
- package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
- package/chunks/{dist-JWMKPWT5.js → dist-EUOUPUFO.js} +3 -4
- package/chunks/{dist-IYYN3RUT.js → dist-UOFRXJT6.js} +2798 -1250
- package/chunks/{earlyInputCapture-KJMLFVQV.js → earlyInputCapture-VSP42LUR.js} +53 -52
- package/chunks/{edit-I4LQFAEC.js → edit-ZTLO5ASX.js} +60 -58
- package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
- package/chunks/{enter-worktree-YNPOJSRH.js → enter-worktree-TMTPDS2S.js} +55 -54
- package/chunks/{enterPlanMode-XCPK62ER.js → enterPlanMode-UBAXFMYI.js} +55 -54
- package/chunks/{environment-S7CTIHMX.js → environment-C2CZN7CB.js} +55 -54
- package/chunks/{errors-7HB2AIDS.js → errors-ZUNFQINF.js} +54 -53
- package/chunks/{exit-worktree-AIIY7SR6.js → exit-worktree-572NWEPJ.js} +55 -54
- package/chunks/exitPlanMode-QTIXFGZT.js +86 -0
- package/chunks/{fast-path-NDJV3ZFJ.js → fast-path-CEEVHQL3.js} +3 -3
- package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
- package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
- package/chunks/{gemini-RSUFP5OE.js → gemini-I2YR6GMS.js} +114 -112
- package/chunks/{geminiContentGenerator-SQ5XBPZ7.js → geminiContentGenerator-GQWNDZQF.js} +7 -7
- package/chunks/getMachineId-bsd-FBOAYNSY.js +48 -0
- package/chunks/{getMachineId-bsd-FG7IUY6U.js → getMachineId-bsd-YH7RURBZ.js} +4 -4
- package/chunks/{getMachineId-darwin-GLCJI2RA.js → getMachineId-darwin-H6USQYNI.js} +4 -4
- package/chunks/getMachineId-darwin-RNJLJUXY.js +47 -0
- package/chunks/{getMachineId-linux-O6OPPAKO.js → getMachineId-linux-HF2N63ET.js} +3 -3
- package/chunks/getMachineId-linux-UEVRAIAB.js +41 -0
- package/chunks/getMachineId-unsupported-FWXYJ7HW.js +31 -0
- package/chunks/{getMachineId-unsupported-S6CKYVGC.js → getMachineId-unsupported-NYA5DXRB.js} +3 -3
- package/chunks/getMachineId-win-LRVGMHLW.js +50 -0
- package/chunks/{getMachineId-win-X5SRNEH7.js → getMachineId-win-SMEGY2DW.js} +4 -4
- package/chunks/{glob-J4RUJAHX.js → glob-XFBL2RVT.js} +58 -57
- package/chunks/{goal-tools-VHTNVOKK.js → goal-tools-TLJCE7YZ.js} +6 -6
- package/chunks/{grep-VJWPLFOT.js → grep-U675LEXE.js} +55 -54
- package/chunks/handleAutoUpdate-R6RUCIA2.js +97 -0
- package/chunks/{i18n-RM5YOICI.js → i18n-SJCZDZ4C.js} +53 -52
- package/chunks/{image-gen-EXECB5XM.js → image-gen-6VY7CA7C.js} +14 -14
- package/chunks/initializer-CRDZXJOG.js +101 -0
- package/chunks/installationInfo-EW3NEJDZ.js +95 -0
- package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
- package/chunks/{keychain-token-storage-3XFJ5ZB2.js → keychain-token-storage-MTFTAESK.js} +3 -3
- package/chunks/list-TZEMTXDH.js +104 -0
- package/chunks/{list-agents-OSVDFI6S.js → list-agents-43XUEXJV.js} +6 -6
- package/chunks/loadedSettingsAdapter-47DG424L.js +98 -0
- package/chunks/{loggingContentGenerator-WF4ZOJEZ.js → loggingContentGenerator-77C6O5VW.js} +31 -29
- package/chunks/{loop-wakeup-WQS6JYAG.js → loop-wakeup-E54KDUXC.js} +6 -6
- package/chunks/{ls-D3HUFHDP.js → ls-CGL2UC3H.js} +7 -7
- package/chunks/{lsp-3QDDJTCS.js → lsp-5IKUO5DX.js} +3 -3
- package/chunks/{managed-npm-update-E7IW6N7V.js → managed-npm-update-AJ5GZRUA.js} +53 -52
- package/chunks/mcp-AQK656Y4.js +98 -0
- package/chunks/{monitor-EE2UYMGE.js → monitor-UDZXKYT3.js} +55 -54
- package/chunks/nonInteractiveCli-6NC3NLZM.js +166 -0
- package/chunks/{notebook-edit-NTDY4QDU.js → notebook-edit-G6WZI2YT.js} +59 -57
- package/chunks/{openaiContentGenerator-YNFVJMRJ.js → openaiContentGenerator-IHVHP3VB.js} +32 -32
- package/chunks/{pidfile-4XSFLYBZ.js → pidfile-EBKS2HBK.js} +53 -52
- package/chunks/{processUtils-WDA2MJFD.js → processUtils-B7M35ZLR.js} +2 -2
- package/chunks/prompt-terminal-ledger-5JYOPOII.js +93 -0
- package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
- package/chunks/{qwenContentGenerator-434M7QKY.js → qwenContentGenerator-WCJPPTED.js} +59 -58
- package/chunks/{qwenOAuth2-GMYZOO6A.js → qwenOAuth2-S2CLBSEZ.js} +10 -10
- package/chunks/read-file-WFM53FTW.js +33 -0
- package/chunks/{read-mcp-resource-XD54ZQMC.js → read-mcp-resource-XYES2B42.js} +3 -3
- package/chunks/{record-artifact-SEYFJEJF.js → record-artifact-W3IBTGL7.js} +10 -6
- package/chunks/{resumeHistoryUtils-EVG3WYK2.js → resumeHistoryUtils-CK4ZC6YO.js} +59 -58
- package/chunks/ripGrep-B3PBLEQ3.js +86 -0
- package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
- package/chunks/{run-qwen-serve-3QSGRXAN.js → run-qwen-serve-DC5RXI6N.js} +537 -185
- package/chunks/{runtime-5MLLZ7DC.js → runtime-UVEETF54.js} +63 -62
- package/chunks/{scheduler-RPBJ63CH.js → scheduler-MWT3UMVN.js} +54 -53
- package/chunks/{sdk-exporters-grpc-54L4LS5L.js → sdk-exporters-grpc-6J5CKOMO.js} +194 -75
- package/chunks/{sdk-exporters-http-XUVP63H6.js → sdk-exporters-http-Q3YZ4752.js} +40 -45
- package/chunks/{sdk-impl-YXUEN2Z2.js → sdk-impl-BOMCAN2Z.js} +7211 -5454
- package/chunks/{send-message-VZENRWRH.js → send-message-J4VT46OI.js} +8 -8
- package/chunks/{serve-HS3XLPXU.js → serve-AKM75GTE.js} +60 -61
- package/chunks/{server-TC4A7AAZ.js → server-KU7XIDVT.js} +2221 -399
- package/chunks/{session-UBOFXVMN.js → session-DKVYIRWN.js} +108 -105
- package/chunks/{settings-D5644OM5.js → settings-NS3PXZDP.js} +63 -62
- package/chunks/{shell-3PZULQQV.js → shell-UXCNM2OK.js} +52 -51
- package/chunks/{skill-PEVVXQ3L.js → skill-KV7YCCTM.js} +30 -28
- package/chunks/{skill-settings-J65JKKES.js → skill-settings-EXW7ESWJ.js} +59 -58
- package/chunks/{spawnChannel-IYGXRHSQ.js → spawnChannel-FCP44P4V.js} +55 -54
- package/chunks/{standalone-update-IFM53PE7.js → standalone-update-RGW3B2DX.js} +55 -54
- package/chunks/{startInteractiveUI-3AVH7L6H.js → startInteractiveUI-UZMF2BIJ.js} +615 -392
- package/chunks/{syntheticOutput-7GWFIDXT.js → syntheticOutput-JAXMIMZP.js} +4 -4
- package/chunks/{task-create-FCBDX7UH.js → task-create-I2H322E4.js} +12 -12
- package/chunks/{task-list-YIYIUFUA.js → task-list-3OLIWFTQ.js} +21 -7
- package/chunks/{task-stop-X37KYTKB.js → task-stop-JAUY6MSY.js} +3 -3
- package/chunks/{task-update-MYPFVOVM.js → task-update-B3XO4CPI.js} +87 -16
- package/chunks/{team-create-ZAIA7KAV.js → team-create-77XY3KAE.js} +56 -56
- package/chunks/{team-delete-6UMU4XLS.js → team-delete-Q7GE7RRI.js} +6 -6
- package/chunks/{team-plan-approval-UNIUS7OD.js → team-plan-approval-TAQANDQG.js} +55 -54
- package/chunks/{terminal-image-renderer-G343P2RV.js → terminal-image-renderer-V4LIF5NS.js} +54 -53
- package/chunks/theme-manager-KKBAJ574.js +90 -0
- package/chunks/{todoWrite-U2R4NVF4.js → todoWrite-FJJTY2TI.js} +7 -7
- package/chunks/{tool-search-5R2OE4C7.js → tool-search-GZJYRK4I.js} +25 -24
- package/chunks/{total-session-admission-4KBHMQQ2.js → total-session-admission-NIBNWXHE.js} +59 -57
- package/chunks/{trustedFolders-LK6T4XC7.js → trustedFolders-7GEI2NYC.js} +53 -52
- package/chunks/{undici-PYHBDDPN.js → undici-S7WJSKGJ.js} +962 -391
- package/chunks/{update-relaunch-UBKROIC6.js → update-relaunch-OA3OEBMD.js} +5 -5
- package/chunks/{updateCheck-W4Y2GFSD.js → updateCheck-QVHQEVIY.js} +56 -55
- package/chunks/{useAutoAcceptIndicator-C7BEICBF.js → useAutoAcceptIndicator-WZ27J7NY.js} +64 -63
- package/chunks/{validateNonInterActiveAuth-LTEI2TB6.js → validateNonInterActiveAuth-OXJA2JWG.js} +99 -96
- package/chunks/{version-G5A5DGVS.js → version-KJO64WD7.js} +1 -1
- package/chunks/{web-fetch-RTEQTR5Z.js → web-fetch-CC5INI2R.js} +25 -23
- package/chunks/{web-search-5OXHEZPV.js → web-search-MOAUAN6N.js} +18 -18
- package/chunks/{web-shell-static-O73YPVVC.js → web-shell-static-3NUTRHAH.js} +4 -5
- package/chunks/{workflow-ISQJHPG2.js → workflow-BN2ZEJMK.js} +366 -105
- package/chunks/workspace-providers-status-R5QTZFK3.js +101 -0
- package/chunks/{workspace-registration-store-CYNY6IP6.js → workspace-registration-store-WMSLM36M.js} +1 -1
- package/chunks/{workspace-registry-34GTUUHB.js → workspace-registry-J3RUCXH6.js} +59 -57
- package/chunks/{workspace-service-XCDQLE2Y.js → workspace-service-JJZFPKM4.js} +66 -65
- package/chunks/workspace-skills-status-DRIOZRIA.js +101 -0
- package/chunks/{workspace-trust-reconciler-AYGXC7A3.js → workspace-trust-reconciler-YAYSN6CX.js} +69 -67
- package/chunks/write-file-7HXHFFOY.js +88 -0
- package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
- package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
- package/chunks/{zoom-image-4BFYJ3HG.js → zoom-image-EFMQMU4G.js} +24 -22
- package/cli.js +15 -15
- package/locales/ca.js +13 -0
- package/locales/de.js +12 -0
- package/locales/en.js +11 -0
- package/locales/fr.js +13 -0
- package/locales/ja.js +13 -0
- package/locales/pt.js +12 -0
- package/locales/ru.js +12 -0
- package/locales/zh-TW.js +11 -0
- package/locales/zh.js +11 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-CgOpDKvm.js → arc-BCP1f-bN.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-0Ag_m34F.js → architectureDiagram-3BPJPVTR-D-6ajMay.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-IwTwFau0.js → blockDiagram-GPEHLZMM-CcLlnVnf.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DLa5GUv8.js → c4Diagram-AAUBKEIU-C_Sp9UwQ.js} +1 -1
- package/web-shell/assets/channel-BcImYzbA.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DcYP-WFG.js → chunk-2J33WTMH-CG0ngvo9.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-C8MVPMiQ.js → chunk-4BX2VUAB-D43LsVdk.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BUi4Yfv3.js → chunk-55IACEB6-BqNIn5rz.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Cy3Su2YY.js → chunk-727SXJPM-BSHmO08Y.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Dp8Teqv6.js → chunk-AQP2D5EJ-CMUbr5tQ.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BDTDM-4j.js → chunk-FMBD7UC4-Cm6JflnZ.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-7HfDt0r2.js → chunk-ND2GUHAM-CBR39YQZ.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BIBU0uCF.js → chunk-QZHKN3VN-CWnqaLb-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-OWx0rDRW.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-OWx0rDRW.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DRLdcg9p.js → cose-bilkent-S5V4N54A-DJlTdnfD.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DCCgDwqW.js → dagre-BM42HDAG-1AFN1uVc.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CsBTBmk3.js → diagram-2AECGRRQ-gC0GGNSW.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-C9qjH8Lt.js → diagram-5GNKFQAL-CPmRPT1s.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Brjs_lj2.js → diagram-KO2AKTUF-atigp6Hr.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DtiWCl_F.js → diagram-LMA3HP47-BJnJFSRQ.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DmfKLkBT.js → diagram-OG6HWLK6-CyvJ4fG2.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Bve_4deH.js → erDiagram-TEJ5UH35-CZac_jT6.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-C2_kXCcV.js → flowDiagram-I6XJVG4X-pd-LQxWB.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BSBIjiTF.js → ganttDiagram-6RSMTGT7-CvB1at7l.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CyebwI55.js → gitGraphDiagram-PVQCEYII-B5Y6nkil.js} +1 -1
- package/web-shell/assets/index-Bg3DAn8Z.js +1788 -0
- package/web-shell/assets/{index-d0yfnV1M.js → index-Bj3ZSUHL.js} +1 -1
- package/web-shell/assets/index-mp32EO88.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CSDGnWxU.js → infoDiagram-5YYISTIA-BdyWvU4P.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK4jU13p.js → ishikawaDiagram-YF4QCWOH-CaHbUdvN.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-D_W6j-oF.js → journeyDiagram-JHISSGLW-DR9F3FpG.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-C7xf-SdC.js → kanban-definition-UN3LZRKU-BoEUbkw2.js} +1 -1
- package/web-shell/assets/{linear-DQmzxpxd.js → linear-DUbfzV4T.js} +1 -1
- package/web-shell/assets/{mermaid.core-9P7AGOLG.js → mermaid.core-CLLkPcpD.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DgcgMyPk.js → mindmap-definition-RKZ34NQL-FuKI3Stt.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-3wWGb9eG.js → pieDiagram-4H26LBE5-CVAHL7l5.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BeCXnQw9.js → quadrantDiagram-W4KKPZXB-BkGi5fRj.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bi1UOHDz.js → requirementDiagram-4Y6WPE33-B5ghV8-K.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-lrLUjjbb.js → sankeyDiagram-5OEKKPKP-CKFbVhkQ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BFuqKz6Q.js → sequenceDiagram-3UESZ5HK-C5P9ujPd.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-8DemQLhu.js → stateDiagram-AJRCARHV-CsDn-Rez.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DpGKD1ez.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-uzEuVQXg.js → timeline-definition-PNZ67QCA-B6oLBkTr.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BQTeZ_-o.js → vennDiagram-CIIHVFJN-DvtBkYwp.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B6yM5Im7.js → wardley-L42UT6IY-D2UwTX16.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-ChM8bmgn.js → wardleyDiagram-YWT4CUSO-FnnfCxYI.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-oNG6HyB1.js → xychartDiagram-2RQKCTM6-C1SaMQ7d.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/MaxSizedBox-UQALOVVT.js +0 -97
- package/chunks/agent-headless-GJCQMURW.js +0 -87
- package/chunks/channel-settings-store-WNWYFHG7.js +0 -102
- package/chunks/chunk-AZQ3DT76.js +0 -10017
- package/chunks/chunk-CR3C7WXL.js +0 -113
- package/chunks/chunk-K5IDV3PC.js +0 -519
- package/chunks/chunk-MPHPFVKK.js +0 -48
- package/chunks/chunk-RLKC46YT.js +0 -3582
- package/chunks/chunk-UPDOZBWO.js +0 -358
- package/chunks/contextCommand-PJ77GBWL.js +0 -93
- package/chunks/daemon-status-provider-ZDOYJCU6.js +0 -102
- package/chunks/daemon-trust-policy-E67OYUK2.js +0 -99
- package/chunks/exitPlanMode-R4JY7V2O.js +0 -85
- package/chunks/handleAutoUpdate-POCX2MNB.js +0 -94
- package/chunks/initializer-Z2AFGBNR.js +0 -100
- package/chunks/installationInfo-4I5FXNMH.js +0 -92
- package/chunks/list-ZMBFIGZA.js +0 -103
- package/chunks/loadedSettingsAdapter-T6TV4YJ7.js +0 -97
- package/chunks/mcp-6UNYX4HG.js +0 -97
- package/chunks/nonInteractiveCli-WAY237O4.js +0 -163
- package/chunks/read-file-TAFBKMNI.js +0 -32
- package/chunks/ripGrep-WOEK2PXS.js +0 -85
- package/chunks/theme-manager-Z3RIT7DB.js +0 -89
- package/chunks/undici-3FJYTMOF.js +0 -25914
- package/chunks/workspace-providers-status-2ZPZPUPZ.js +0 -100
- package/chunks/workspace-skills-status-RS4O7AIJ.js +0 -100
- package/chunks/write-file-EWXKVVXF.js +0 -87
- package/web-shell/assets/channel-BrGVBa2L.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +0 -1
- package/web-shell/assets/index-CIDsgxTe.js +0 -1792
- package/web-shell/assets/index-DiQnWi_E.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +0 -1
- package/chunks/{dist-BROOP2EG.js → dist-LZO24N3E.js} +1 -1
|
@@ -1,86 +1,18 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import {
|
|
4
|
-
classifyApiError,
|
|
5
|
-
fireSessionDeleteHook
|
|
6
|
-
} from "./chunk-P5Y23G2L.js";
|
|
7
3
|
import {
|
|
8
4
|
buildPermissionSuggestions
|
|
9
5
|
} from "./chunk-43T5WDQ7.js";
|
|
10
6
|
import {
|
|
11
7
|
TUI_CHAT_RECORDING_FAILURE_MESSAGE,
|
|
12
8
|
reportChatRecordingFailureToAdapter
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import {
|
|
15
|
-
MAX_SUGGESTIONS_TO_SHOW,
|
|
16
|
-
SESSION_MENTION_PREFIX,
|
|
17
|
-
buildMcpResourceRef,
|
|
18
|
-
buildMcpServerRef,
|
|
19
|
-
buildSessionRef,
|
|
20
|
-
getExtensionSuggestions,
|
|
21
|
-
handleAtCommand,
|
|
22
|
-
matchMcpServerPrefix,
|
|
23
|
-
resolveAtCommandQuery,
|
|
24
|
-
sanitizeDisplayText
|
|
25
|
-
} from "./chunk-76J3IJ3M.js";
|
|
9
|
+
} from "./chunk-HERHU33B.js";
|
|
26
10
|
import {
|
|
27
11
|
StreamJsonOutputAdapter
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import {
|
|
30
|
-
BuiltinCommandLoader,
|
|
31
|
-
BundledSkillLoader,
|
|
32
|
-
CommandService,
|
|
33
|
-
DISPLAY_HOOK_EVENTS,
|
|
34
|
-
FileCommandLoader,
|
|
35
|
-
MAX_STACKED_SKILLS,
|
|
36
|
-
McpPromptLoader,
|
|
37
|
-
SavedWorkflowLoader,
|
|
38
|
-
SkillCommandLoader,
|
|
39
|
-
addConfigToMatcherGroup,
|
|
40
|
-
appendUserPromptExpansionAdditionalContext,
|
|
41
|
-
buildBackgroundWorkBlockedMessage,
|
|
42
|
-
copyToClipboard,
|
|
43
|
-
createEmptyHookEventInfo,
|
|
44
|
-
dayKey,
|
|
45
|
-
findMidInputSlashCommand,
|
|
46
|
-
findSlashCommandTokens,
|
|
47
|
-
formatApprovalModeDescription,
|
|
48
|
-
formatApprovalModeName,
|
|
49
|
-
formatEffortChangeMessage,
|
|
50
|
-
formatUserPromptExpansionBlockedMessage,
|
|
51
|
-
getAllConfigs,
|
|
52
|
-
getBestSlashCommandMatch,
|
|
53
|
-
getTranslatedSourceDisplayMap,
|
|
54
|
-
hasBlockingBackgroundWork,
|
|
55
|
-
hasSlashCommandPathSeparator,
|
|
56
|
-
isAtCommand,
|
|
57
|
-
isBtwCommand,
|
|
58
|
-
isMidInputCompletableCommand,
|
|
59
|
-
isPickerOnlyModelInvocation,
|
|
60
|
-
isSlashCommand,
|
|
61
|
-
isStackedSkillCompletableCommand,
|
|
62
|
-
isValidStackedSkillPrefix,
|
|
63
|
-
normalizePartList,
|
|
64
|
-
parseDayKey,
|
|
65
|
-
parseSlashCommand,
|
|
66
|
-
parseStackedSlashCommands,
|
|
67
|
-
recordAutoSkillCommandUsage,
|
|
68
|
-
refreshExtensionContentRuntime,
|
|
69
|
-
resetBackgroundStateForSessionSwitch,
|
|
70
|
-
serializeUserPromptExpansionPrompt,
|
|
71
|
-
supportsMatchers
|
|
72
|
-
} from "./chunk-NNHNLJ2X.js";
|
|
73
|
-
import "./chunk-N5YPT6PH.js";
|
|
12
|
+
} from "./chunk-HGH7DXNI.js";
|
|
74
13
|
import {
|
|
75
14
|
startPostRenderPrefetches
|
|
76
|
-
} from "./chunk-
|
|
77
|
-
import {
|
|
78
|
-
EXTENSION_RELOAD_FAILED_REASON,
|
|
79
|
-
ExtensionRefreshState,
|
|
80
|
-
appEvents,
|
|
81
|
-
cleanupReviewWorktreeLeases,
|
|
82
|
-
loadHierarchicalGeminiMemory
|
|
83
|
-
} from "./chunk-IGGGG5CX.js";
|
|
15
|
+
} from "./chunk-EXVK5R7X.js";
|
|
84
16
|
import {
|
|
85
17
|
AboutBox,
|
|
86
18
|
BaseSelectionList,
|
|
@@ -158,21 +90,7 @@ import {
|
|
|
158
90
|
useUIActions,
|
|
159
91
|
useUIState,
|
|
160
92
|
useVirtualViewport
|
|
161
|
-
} from "./chunk-
|
|
162
|
-
import {
|
|
163
|
-
getCommandDisplayName,
|
|
164
|
-
getCommandSourceBadge
|
|
165
|
-
} from "./chunk-AFSG32D5.js";
|
|
166
|
-
import {
|
|
167
|
-
computeSessionStats,
|
|
168
|
-
levelLabel
|
|
169
|
-
} from "./chunk-O4D7SPJN.js";
|
|
170
|
-
import "./chunk-4WGODMVR.js";
|
|
171
|
-
import {
|
|
172
|
-
MaxSizedBox,
|
|
173
|
-
OverflowProvider,
|
|
174
|
-
useOverflowState
|
|
175
|
-
} from "./chunk-BHILXOC3.js";
|
|
93
|
+
} from "./chunk-D534POS2.js";
|
|
176
94
|
import {
|
|
177
95
|
GeminiRespondingSpinner,
|
|
178
96
|
GeminiSpinner,
|
|
@@ -189,33 +107,109 @@ import {
|
|
|
189
107
|
useStreamingContext,
|
|
190
108
|
waitForGoalRuntime,
|
|
191
109
|
wrapAnsi
|
|
192
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-HETN3NE2.js";
|
|
111
|
+
import {
|
|
112
|
+
stopAndGetCapturedInput
|
|
113
|
+
} from "./chunk-VFACN2CE.js";
|
|
114
|
+
import {
|
|
115
|
+
useAutoAcceptIndicator
|
|
116
|
+
} from "./chunk-6RB2S4QP.js";
|
|
117
|
+
import {
|
|
118
|
+
KeypressProvider,
|
|
119
|
+
useFocus,
|
|
120
|
+
useKeypress,
|
|
121
|
+
useKeypressContext
|
|
122
|
+
} from "./chunk-PALTIYXB.js";
|
|
123
|
+
import {
|
|
124
|
+
classifyApiError,
|
|
125
|
+
fireSessionDeleteHook
|
|
126
|
+
} from "./chunk-P5Y23G2L.js";
|
|
127
|
+
import {
|
|
128
|
+
MAX_SUGGESTIONS_TO_SHOW,
|
|
129
|
+
SESSION_MENTION_PREFIX,
|
|
130
|
+
buildMcpResourceRef,
|
|
131
|
+
buildMcpServerRef,
|
|
132
|
+
buildSessionRef,
|
|
133
|
+
getExtensionSuggestions,
|
|
134
|
+
handleAtCommand,
|
|
135
|
+
matchMcpServerPrefix,
|
|
136
|
+
resolveAtCommandQuery,
|
|
137
|
+
sanitizeDisplayText
|
|
138
|
+
} from "./chunk-FX5TGHDE.js";
|
|
139
|
+
import {
|
|
140
|
+
BuiltinCommandLoader,
|
|
141
|
+
BundledSkillLoader,
|
|
142
|
+
CONTEXT_FILES_ANNOUNCEMENT_PREFIX,
|
|
143
|
+
CommandService,
|
|
144
|
+
DISPLAY_HOOK_EVENTS,
|
|
145
|
+
FileCommandLoader,
|
|
146
|
+
MAX_STACKED_SKILLS,
|
|
147
|
+
McpPromptLoader,
|
|
148
|
+
SLASH_COMMANDS_SKIP_RECORDING,
|
|
149
|
+
SavedWorkflowLoader,
|
|
150
|
+
SkillCommandLoader,
|
|
151
|
+
addConfigToMatcherGroup,
|
|
152
|
+
appendUserPromptExpansionAdditionalContext,
|
|
153
|
+
buildBackgroundWorkBlockedMessage,
|
|
154
|
+
consumesContextAnnouncementLatch,
|
|
155
|
+
copyToClipboard,
|
|
156
|
+
createEmptyHookEventInfo,
|
|
157
|
+
dayKey,
|
|
158
|
+
findMidInputSlashCommand,
|
|
159
|
+
findSlashCommandTokens,
|
|
160
|
+
formatApprovalModeDescription,
|
|
161
|
+
formatApprovalModeName,
|
|
162
|
+
formatEffortChangeMessage,
|
|
163
|
+
formatUserPromptExpansionBlockedMessage,
|
|
164
|
+
getAllConfigs,
|
|
165
|
+
getBestSlashCommandMatch,
|
|
166
|
+
getTranslatedSourceDisplayMap,
|
|
167
|
+
hasBlockingBackgroundWork,
|
|
168
|
+
hasSlashCommandPathSeparator,
|
|
169
|
+
isAtCommand,
|
|
170
|
+
isBtwCommand,
|
|
171
|
+
isContextFilesAnnouncement,
|
|
172
|
+
isMidInputCompletableCommand,
|
|
173
|
+
isPickerOnlyModelInvocation,
|
|
174
|
+
isSlashCommand,
|
|
175
|
+
isStackedSkillCompletableCommand,
|
|
176
|
+
isValidStackedSkillPrefix,
|
|
177
|
+
normalizePartList,
|
|
178
|
+
parseDayKey,
|
|
179
|
+
parseSlashCommand,
|
|
180
|
+
parseStackedSlashCommands,
|
|
181
|
+
recordAutoSkillCommandUsage,
|
|
182
|
+
refreshExtensionContentRuntime,
|
|
183
|
+
resetBackgroundStateForSessionSwitch,
|
|
184
|
+
serializeUserPromptExpansionPrompt,
|
|
185
|
+
supportsMatchers
|
|
186
|
+
} from "./chunk-K2MSGB3W.js";
|
|
187
|
+
import {
|
|
188
|
+
EXTENSION_RELOAD_FAILED_REASON,
|
|
189
|
+
ExtensionRefreshState,
|
|
190
|
+
appEvents,
|
|
191
|
+
cleanupReviewWorktreeLeases,
|
|
192
|
+
loadHierarchicalGeminiMemory
|
|
193
|
+
} from "./chunk-ZTAT23TL.js";
|
|
194
|
+
import {
|
|
195
|
+
getCommandDisplayName,
|
|
196
|
+
getCommandSourceBadge
|
|
197
|
+
} from "./chunk-RRRCWDFO.js";
|
|
198
|
+
import {
|
|
199
|
+
computeSessionStats,
|
|
200
|
+
levelLabel
|
|
201
|
+
} from "./chunk-6U46RZ25.js";
|
|
193
202
|
import {
|
|
194
203
|
formatDuration,
|
|
195
204
|
formatRelativeTime,
|
|
196
205
|
formatTokenCount
|
|
197
206
|
} from "./chunk-3SH53ANB.js";
|
|
198
|
-
import {
|
|
199
|
-
theme
|
|
200
|
-
} from "./chunk-6QFDQMQX.js";
|
|
201
|
-
import {
|
|
202
|
-
stopAndGetCapturedInput
|
|
203
|
-
} from "./chunk-YZOSNW4R.js";
|
|
204
207
|
import {
|
|
205
208
|
disableKittyProtocol,
|
|
206
209
|
isKittyProtocolEnabled,
|
|
207
210
|
isKittyProtocolSupported,
|
|
208
211
|
pushKittyProtocolFlags
|
|
209
212
|
} from "./chunk-NYX53SV4.js";
|
|
210
|
-
import {
|
|
211
|
-
useAutoAcceptIndicator
|
|
212
|
-
} from "./chunk-MRMJCLIY.js";
|
|
213
|
-
import {
|
|
214
|
-
KeypressProvider,
|
|
215
|
-
useFocus,
|
|
216
|
-
useKeypress,
|
|
217
|
-
useKeypressContext
|
|
218
|
-
} from "./chunk-M732YJPW.js";
|
|
219
213
|
import {
|
|
220
214
|
BEL,
|
|
221
215
|
OSC_PREFIX,
|
|
@@ -228,7 +222,19 @@ import {
|
|
|
228
222
|
oscKittyNotify,
|
|
229
223
|
saveClipboardImage,
|
|
230
224
|
writeOsc52
|
|
231
|
-
} from "./chunk-
|
|
225
|
+
} from "./chunk-DB2OKNTU.js";
|
|
226
|
+
import "./chunk-MHOY756Q.js";
|
|
227
|
+
import "./chunk-4WGODMVR.js";
|
|
228
|
+
import "./chunk-THK3QUU6.js";
|
|
229
|
+
import "./chunk-KW7NOTN6.js";
|
|
230
|
+
import {
|
|
231
|
+
MaxSizedBox,
|
|
232
|
+
OverflowProvider,
|
|
233
|
+
useOverflowState
|
|
234
|
+
} from "./chunk-2MTIAN5Z.js";
|
|
235
|
+
import {
|
|
236
|
+
theme
|
|
237
|
+
} from "./chunk-3ZFJUBTP.js";
|
|
232
238
|
import {
|
|
233
239
|
require_jsx_runtime
|
|
234
240
|
} from "./chunk-SV5PQVQE.js";
|
|
@@ -246,47 +252,46 @@ import {
|
|
|
246
252
|
use_stdin_default,
|
|
247
253
|
use_stdout_default
|
|
248
254
|
} from "./chunk-2IIJTXYF.js";
|
|
255
|
+
import {
|
|
256
|
+
require_react
|
|
257
|
+
} from "./chunk-5QWWOFGG.js";
|
|
258
|
+
import "./chunk-DV4375RD.js";
|
|
259
|
+
import "./chunk-AP3B7LKD.js";
|
|
260
|
+
import {
|
|
261
|
+
MAX_INLINE_IMAGES_PER_ITEM,
|
|
262
|
+
collectInlineImages,
|
|
263
|
+
getInlineImageData
|
|
264
|
+
} from "./chunk-JOLJTKIG.js";
|
|
249
265
|
import {
|
|
250
266
|
relaunchApp
|
|
251
|
-
} from "./chunk-
|
|
267
|
+
} from "./chunk-HZZGYJIP.js";
|
|
252
268
|
import {
|
|
253
269
|
setUpdateHandler
|
|
254
|
-
} from "./chunk-
|
|
270
|
+
} from "./chunk-D7QQ6RUB.js";
|
|
255
271
|
import {
|
|
256
272
|
isHistoryItemVisibleAfterRestore
|
|
257
273
|
} from "./chunk-EKTCKZV5.js";
|
|
258
|
-
import "./chunk-
|
|
274
|
+
import "./chunk-J7VPB2HF.js";
|
|
275
|
+
import "./chunk-YAF2MQZ6.js";
|
|
259
276
|
import {
|
|
260
277
|
AUTO_THEME_NAME,
|
|
261
278
|
DEFAULT_THEME,
|
|
262
279
|
themeManager
|
|
263
|
-
} from "./chunk-
|
|
264
|
-
import "./chunk-
|
|
265
|
-
import
|
|
266
|
-
|
|
267
|
-
} from "./chunk-5QWWOFGG.js";
|
|
268
|
-
import "./chunk-GO7STP6N.js";
|
|
280
|
+
} from "./chunk-S3G6YFQC.js";
|
|
281
|
+
import "./chunk-JXLPQTMW.js";
|
|
282
|
+
import "./chunk-6H67XLET.js";
|
|
283
|
+
import "./chunk-7VITNOH6.js";
|
|
269
284
|
import {
|
|
270
285
|
getErrorMessage as getErrorMessage2
|
|
271
|
-
} from "./chunk-
|
|
272
|
-
import "./chunk-U3VNBPUO.js";
|
|
273
|
-
import "./chunk-NEFOOD54.js";
|
|
274
|
-
import "./chunk-YAF2MQZ6.js";
|
|
275
|
-
import "./chunk-IA2K2HJE.js";
|
|
276
|
-
import {
|
|
277
|
-
MAX_INLINE_IMAGES_PER_ITEM,
|
|
278
|
-
collectInlineImages,
|
|
279
|
-
getInlineImageData
|
|
280
|
-
} from "./chunk-SXCOEJO4.js";
|
|
281
|
-
import "./chunk-QRCNA3SR.js";
|
|
282
|
-
import "./chunk-6H67XLET.js";
|
|
286
|
+
} from "./chunk-RNGTMHKN.js";
|
|
283
287
|
import {
|
|
284
288
|
openQwenAsrRealtimeStream,
|
|
285
289
|
openVoiceStream,
|
|
286
290
|
openVoiceStreamWithRetry
|
|
287
|
-
} from "./chunk-
|
|
288
|
-
import "./chunk-
|
|
289
|
-
import "./chunk-
|
|
291
|
+
} from "./chunk-RQJJZQOH.js";
|
|
292
|
+
import "./chunk-3SIGAHUX.js";
|
|
293
|
+
import "./chunk-UZPYR3EV.js";
|
|
294
|
+
import "./chunk-FV6PXZRO.js";
|
|
290
295
|
import {
|
|
291
296
|
cpLen,
|
|
292
297
|
cpSlice,
|
|
@@ -298,13 +303,12 @@ import {
|
|
|
298
303
|
sanitizeTerminalText,
|
|
299
304
|
stripUnsafeCharacters,
|
|
300
305
|
toCodePoints
|
|
301
|
-
} from "./chunk-
|
|
302
|
-
import "./chunk-3U3VAL47.js";
|
|
306
|
+
} from "./chunk-E7REAOTN.js";
|
|
303
307
|
import {
|
|
304
308
|
stringWidth
|
|
305
309
|
} from "./chunk-2MIN6GRR.js";
|
|
306
310
|
import "./chunk-QHTIBUWB.js";
|
|
307
|
-
import "./chunk-
|
|
311
|
+
import "./chunk-TXASDT2M.js";
|
|
308
312
|
import {
|
|
309
313
|
isValidSessionId
|
|
310
314
|
} from "./chunk-TQOF5KBL.js";
|
|
@@ -315,55 +319,54 @@ import {
|
|
|
315
319
|
isStreamingVoiceModel,
|
|
316
320
|
resolveVoiceStreamConfig,
|
|
317
321
|
transcribeVoiceAudio
|
|
318
|
-
} from "./chunk-
|
|
322
|
+
} from "./chunk-EW2IQ3ID.js";
|
|
319
323
|
import {
|
|
320
324
|
formatUnsupportedVoiceModelMessage,
|
|
321
325
|
isSelectableVoiceModel
|
|
322
|
-
} from "./chunk-
|
|
323
|
-
import "./chunk-
|
|
326
|
+
} from "./chunk-GXG4PYQB.js";
|
|
327
|
+
import "./chunk-Z3JMO2CH.js";
|
|
328
|
+
import {
|
|
329
|
+
computeWorkspaceSkillListUpdates,
|
|
330
|
+
resolveSkillSettings,
|
|
331
|
+
skillSettingStrings
|
|
332
|
+
} from "./chunk-Z4X5MTRT.js";
|
|
333
|
+
import {
|
|
334
|
+
createLoadedSettingsAdapter
|
|
335
|
+
} from "./chunk-3XD4PT3B.js";
|
|
324
336
|
import {
|
|
325
337
|
getExtendedSystemInfo
|
|
326
|
-
} from "./chunk-
|
|
338
|
+
} from "./chunk-J6SIP2IT.js";
|
|
327
339
|
import "./chunk-7U5G6JXI.js";
|
|
328
340
|
import "./chunk-WCCLLK7X.js";
|
|
329
341
|
import {
|
|
330
342
|
isInlineModelOverrideAllowed
|
|
331
|
-
} from "./chunk-
|
|
332
|
-
import
|
|
333
|
-
computeWorkspaceSkillListUpdates,
|
|
334
|
-
resolveSkillSettings,
|
|
335
|
-
skillSettingStrings
|
|
336
|
-
} from "./chunk-Z4X5MTRT.js";
|
|
337
|
-
import "./chunk-TUGSVUJB.js";
|
|
343
|
+
} from "./chunk-3LYGXZ2H.js";
|
|
344
|
+
import "./chunk-ROV6B34L.js";
|
|
338
345
|
import {
|
|
339
346
|
requestConsentInteractive,
|
|
340
347
|
requestConsentOrFail
|
|
341
|
-
} from "./chunk-
|
|
348
|
+
} from "./chunk-XJOHLP2A.js";
|
|
342
349
|
import "./chunk-57OAHC2Y.js";
|
|
343
|
-
import "./chunk-
|
|
350
|
+
import "./chunk-J7JQXYVL.js";
|
|
344
351
|
import "./chunk-45NQKMYB.js";
|
|
345
|
-
import "./chunk-
|
|
352
|
+
import "./chunk-2NWPB6T4.js";
|
|
346
353
|
import "./chunk-V6WHFGST.js";
|
|
347
|
-
import
|
|
348
|
-
createLoadedSettingsAdapter
|
|
349
|
-
} from "./chunk-BVJS5BSP.js";
|
|
350
|
-
import "./chunk-ZLCT4C5A.js";
|
|
351
|
-
import "./chunk-2AUM35J5.js";
|
|
352
|
-
import "./chunk-BKPPWD33.js";
|
|
354
|
+
import "./chunk-QQUVPMMZ.js";
|
|
353
355
|
import "./chunk-6PLDPT2C.js";
|
|
354
356
|
import "./chunk-FYJ7W2PI.js";
|
|
355
|
-
import "./chunk-
|
|
357
|
+
import "./chunk-ND7NOI4P.js";
|
|
356
358
|
import "./chunk-A6NRNRKE.js";
|
|
357
359
|
import "./chunk-ALMR3E6Q.js";
|
|
358
|
-
import "./chunk-
|
|
359
|
-
import "./chunk-M5GB774H.js";
|
|
360
|
+
import "./chunk-UDG5EZJI.js";
|
|
360
361
|
import "./chunk-3VUENPWF.js";
|
|
362
|
+
import "./chunk-M5GB774H.js";
|
|
363
|
+
import "./chunk-W4CRPSC5.js";
|
|
364
|
+
import "./chunk-ZLCT4C5A.js";
|
|
361
365
|
import "./chunk-AW27A43Y.js";
|
|
362
366
|
import "./chunk-IW6RQPQB.js";
|
|
363
|
-
import "./chunk-H4A72DE5.js";
|
|
364
367
|
import {
|
|
365
368
|
loadMcpApprovals
|
|
366
|
-
} from "./chunk-
|
|
369
|
+
} from "./chunk-6UDHEIUT.js";
|
|
367
370
|
import {
|
|
368
371
|
CORRUPTED_SUFFIX,
|
|
369
372
|
SettingScope,
|
|
@@ -385,36 +388,39 @@ import {
|
|
|
385
388
|
settingExistsInScope,
|
|
386
389
|
validateSettingValue,
|
|
387
390
|
writeOutputLanguageAndRegisterPath
|
|
388
|
-
} from "./chunk-
|
|
389
|
-
import "./chunk-RKUWKYED.js";
|
|
391
|
+
} from "./chunk-3HWN4E7N.js";
|
|
390
392
|
import {
|
|
391
393
|
TOGGLE_TYPES
|
|
392
|
-
} from "./chunk-
|
|
393
|
-
import "./chunk-
|
|
394
|
-
import "./chunk-IDS7MSUP.js";
|
|
394
|
+
} from "./chunk-VOTDAZR7.js";
|
|
395
|
+
import "./chunk-RKUWKYED.js";
|
|
395
396
|
import {
|
|
396
397
|
getCurrentLanguage,
|
|
397
398
|
localizeToolDisplayName,
|
|
398
399
|
t,
|
|
399
400
|
ta
|
|
400
|
-
} from "./chunk-
|
|
401
|
+
} from "./chunk-45UD2TU4.js";
|
|
401
402
|
import "./chunk-5EJZE3FP.js";
|
|
402
|
-
import "./chunk-
|
|
403
|
-
import "./chunk-
|
|
403
|
+
import "./chunk-5PHLBWBL.js";
|
|
404
|
+
import "./chunk-2AUM35J5.js";
|
|
405
|
+
import "./chunk-M2IL2RTA.js";
|
|
406
|
+
import "./chunk-GOXKNSDZ.js";
|
|
407
|
+
import "./chunk-IDS7MSUP.js";
|
|
408
|
+
import "./chunk-CXJHQVEK.js";
|
|
409
|
+
import "./chunk-XFSFZCM5.js";
|
|
404
410
|
import "./chunk-NF5J2WFA.js";
|
|
405
411
|
import {
|
|
406
412
|
getCliVersion
|
|
407
|
-
} from "./chunk-
|
|
413
|
+
} from "./chunk-7WLFSDLG.js";
|
|
408
414
|
import "./chunk-WZMH7II3.js";
|
|
409
415
|
import {
|
|
410
416
|
isWorkspaceTrusted,
|
|
411
417
|
loadTrustedFolders
|
|
412
|
-
} from "./chunk-
|
|
418
|
+
} from "./chunk-PSQJ24ZZ.js";
|
|
413
419
|
import {
|
|
414
420
|
require_strip_json_comments
|
|
415
421
|
} from "./chunk-NPQ5ZKRP.js";
|
|
416
422
|
import "./chunk-MR3PXB6E.js";
|
|
417
|
-
import "./chunk-
|
|
423
|
+
import "./chunk-LJZSMWOH.js";
|
|
418
424
|
import {
|
|
419
425
|
ALIBABA_PROVIDERS,
|
|
420
426
|
AsyncFzf,
|
|
@@ -474,6 +480,7 @@ import {
|
|
|
474
480
|
generatePromptSuggestion,
|
|
475
481
|
generateSessionRecap,
|
|
476
482
|
generateToolUseSummary,
|
|
483
|
+
getCachedToolCallFingerprint,
|
|
477
484
|
getDefaultBaseUrlForProtocol,
|
|
478
485
|
getDefaultModelIds,
|
|
479
486
|
getExtensionDisplayName,
|
|
@@ -485,9 +492,11 @@ import {
|
|
|
485
492
|
glob,
|
|
486
493
|
ideContextStore,
|
|
487
494
|
isActiveWorkflowStatus,
|
|
495
|
+
isClearedMediaPlaceholder,
|
|
488
496
|
isEditorAvailable,
|
|
489
497
|
isExtensionCommittedWithWarningsError,
|
|
490
498
|
isGatedMcpScope,
|
|
499
|
+
isReplayOfHandledToolCall,
|
|
491
500
|
isSessionRuntimeActive,
|
|
492
501
|
isSettledStatus,
|
|
493
502
|
isSignalTermination,
|
|
@@ -505,8 +514,10 @@ import {
|
|
|
505
514
|
parseVisionModelSetting,
|
|
506
515
|
readWorktreeSession,
|
|
507
516
|
readWorktreeSessionMarker,
|
|
517
|
+
recordHandledToolCall,
|
|
508
518
|
refreshMemoryAfterManagedWrite,
|
|
509
519
|
refreshMemoryInstruction,
|
|
520
|
+
registerSession,
|
|
510
521
|
resolveBaseUrl,
|
|
511
522
|
resolveBranchName,
|
|
512
523
|
resolveMetadataKey,
|
|
@@ -520,88 +531,76 @@ import {
|
|
|
520
531
|
validateWorkflowName,
|
|
521
532
|
watchRepoBranch,
|
|
522
533
|
writeRuntimeStatus
|
|
523
|
-
} from "./chunk-
|
|
534
|
+
} from "./chunk-SVU5KGR7.js";
|
|
524
535
|
import "./chunk-GOFAQQZA.js";
|
|
525
|
-
import "./chunk-5M6IDOMF.js";
|
|
526
536
|
import {
|
|
527
537
|
stripAnsi
|
|
528
538
|
} from "./chunk-TWPJO254.js";
|
|
529
539
|
import "./chunk-CQ35AJ4Z.js";
|
|
530
|
-
import "./chunk-
|
|
531
|
-
import "./chunk-
|
|
532
|
-
import "./chunk-
|
|
533
|
-
import "./chunk-
|
|
540
|
+
import "./chunk-5M6IDOMF.js";
|
|
541
|
+
import "./chunk-KVGR4MCF.js";
|
|
542
|
+
import "./chunk-XZJKSETB.js";
|
|
543
|
+
import "./chunk-YMVFIYHV.js";
|
|
534
544
|
import "./chunk-6PVPNMXU.js";
|
|
535
545
|
import {
|
|
536
546
|
resolveModelId
|
|
537
|
-
} from "./chunk-
|
|
547
|
+
} from "./chunk-OTXXOZKW.js";
|
|
548
|
+
import "./chunk-DJEHYM4H.js";
|
|
538
549
|
import "./chunk-IRH27ZC2.js";
|
|
539
550
|
import "./chunk-QHWCP53L.js";
|
|
540
|
-
import "./chunk-
|
|
541
|
-
import "./chunk-
|
|
551
|
+
import "./chunk-AZF6SME3.js";
|
|
552
|
+
import "./chunk-TBVSALA3.js";
|
|
542
553
|
import {
|
|
543
554
|
promptIdContext
|
|
544
555
|
} from "./chunk-O6GEWCJA.js";
|
|
545
556
|
import "./chunk-T26EAKDL.js";
|
|
546
|
-
import "./chunk-ZPJWUGCS.js";
|
|
547
557
|
import "./chunk-CPBF7KYF.js";
|
|
548
|
-
import
|
|
549
|
-
APPROVAL_MODES
|
|
550
|
-
} from "./chunk-RWDNJBWN.js";
|
|
551
|
-
import "./chunk-25EYDK42.js";
|
|
558
|
+
import "./chunk-VUMLT7E5.js";
|
|
552
559
|
import {
|
|
553
560
|
HOOKS_CONFIG_FIELDS
|
|
554
|
-
} from "./chunk-
|
|
555
|
-
import "./chunk-
|
|
556
|
-
import "./chunk-
|
|
557
|
-
import "./chunk-E3DYKPYZ.js";
|
|
561
|
+
} from "./chunk-ISJMN3ML.js";
|
|
562
|
+
import "./chunk-2TRNCJK4.js";
|
|
563
|
+
import "./chunk-NUGZAFR2.js";
|
|
558
564
|
import {
|
|
559
565
|
elapsedActiveTime,
|
|
560
566
|
goalRequiresExactPermit
|
|
561
|
-
} from "./chunk-
|
|
562
|
-
import "./chunk-OXCMMLED.js";
|
|
563
|
-
import "./chunk-TIGA2IVL.js";
|
|
564
|
-
import "./chunk-SAH4BD2J.js";
|
|
565
|
-
import "./chunk-XLLKYULU.js";
|
|
566
|
-
import {
|
|
567
|
-
runOutsideAgentContext
|
|
568
|
-
} from "./chunk-PT4I7NBA.js";
|
|
569
|
-
import "./chunk-S6LOFUVP.js";
|
|
570
|
-
import "./chunk-2J3OJGTL.js";
|
|
567
|
+
} from "./chunk-LDGWX737.js";
|
|
571
568
|
import {
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
import "./chunk-
|
|
576
|
-
import "./chunk-AQ37AY7B.js";
|
|
577
|
-
import {
|
|
578
|
-
isPathWithinRoot
|
|
579
|
-
} from "./chunk-KBXKR5R2.js";
|
|
569
|
+
APPROVAL_MODES
|
|
570
|
+
} from "./chunk-VLRBJ24J.js";
|
|
571
|
+
import "./chunk-ZPJWUGCS.js";
|
|
572
|
+
import "./chunk-MLXTMF7H.js";
|
|
580
573
|
import {
|
|
581
574
|
osc8Hyperlink,
|
|
582
575
|
qwenOAuth2Events,
|
|
583
576
|
sanitizeForOsc,
|
|
584
577
|
supportsHyperlinks,
|
|
585
578
|
wrapForMultiplexer
|
|
586
|
-
} from "./chunk-
|
|
579
|
+
} from "./chunk-O5BDEWBC.js";
|
|
587
580
|
import "./chunk-NAVJD2PQ.js";
|
|
588
|
-
import "./chunk-
|
|
589
|
-
import "./chunk-
|
|
590
|
-
import "./chunk-P3QQPMQA.js";
|
|
591
|
-
import "./chunk-YZHRN3CF.js";
|
|
592
|
-
import "./chunk-FAAUPSY2.js";
|
|
581
|
+
import "./chunk-WRT324N6.js";
|
|
582
|
+
import "./chunk-YDJRMQU4.js";
|
|
593
583
|
import {
|
|
594
584
|
REASONING_EFFORT_TIERS,
|
|
595
585
|
applyReasoningEffort
|
|
596
586
|
} from "./chunk-KM73TBQ4.js";
|
|
587
|
+
import "./chunk-E63A23D7.js";
|
|
588
|
+
import "./chunk-6NJIPX6W.js";
|
|
589
|
+
import "./chunk-P3QQPMQA.js";
|
|
590
|
+
import "./chunk-6S2OXVJT.js";
|
|
591
|
+
import "./chunk-SAH4BD2J.js";
|
|
592
|
+
import "./chunk-VSNPOSDN.js";
|
|
597
593
|
import {
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
594
|
+
runOutsideAgentContext
|
|
595
|
+
} from "./chunk-I432KXWD.js";
|
|
596
|
+
import "./chunk-S6LOFUVP.js";
|
|
597
|
+
import "./chunk-7IV52LTO.js";
|
|
601
598
|
import "./chunk-AXMWHKXA.js";
|
|
602
|
-
import "./chunk-GLCZKT5V.js";
|
|
603
599
|
import "./chunk-DJ2GSRLV.js";
|
|
604
|
-
import "./chunk-
|
|
600
|
+
import "./chunk-2J3OJGTL.js";
|
|
601
|
+
import "./chunk-LI4YHTQK.js";
|
|
602
|
+
import "./chunk-GLCZKT5V.js";
|
|
603
|
+
import "./chunk-C72BXMJ5.js";
|
|
605
604
|
import {
|
|
606
605
|
ApiCancelEvent,
|
|
607
606
|
AuthEvent,
|
|
@@ -617,7 +616,6 @@ import {
|
|
|
617
616
|
addMCPStatusChangeListener,
|
|
618
617
|
formatFullTurnVisionNotice,
|
|
619
618
|
formatVisionBridgeNotice,
|
|
620
|
-
getAllGeminiMdFilenames,
|
|
621
619
|
getAllMCPServerStatuses,
|
|
622
620
|
getFullTurnVisionModelSelector,
|
|
623
621
|
getMCPServerStatus,
|
|
@@ -641,45 +639,61 @@ import {
|
|
|
641
639
|
runVisionBridge,
|
|
642
640
|
shouldRunVisionBridge,
|
|
643
641
|
splitImageParts
|
|
644
|
-
} from "./chunk-
|
|
642
|
+
} from "./chunk-RPJOOK6N.js";
|
|
645
643
|
import "./chunk-YRLW2MSX.js";
|
|
646
644
|
import "./chunk-VGC4I5JJ.js";
|
|
645
|
+
import {
|
|
646
|
+
getAllGeminiMdFilenames
|
|
647
|
+
} from "./chunk-IWOWEENB.js";
|
|
647
648
|
import {
|
|
648
649
|
AUTO_MEMORY_INDEX_FILENAME,
|
|
649
650
|
getAutoMemoryProjectStateDir,
|
|
650
651
|
getAutoMemoryRoot,
|
|
651
652
|
getUserAutoMemoryRoot,
|
|
652
653
|
isAnyAutoMemPath
|
|
653
|
-
} from "./chunk-
|
|
654
|
+
} from "./chunk-HIK2OF33.js";
|
|
654
655
|
import {
|
|
655
656
|
runSideQuery
|
|
656
|
-
} from "./chunk-
|
|
657
|
-
import "./chunk-
|
|
658
|
-
import {
|
|
659
|
-
ToolNames,
|
|
660
|
-
isShellProgressData
|
|
661
|
-
} from "./chunk-6HY6IF3Z.js";
|
|
662
|
-
import "./chunk-4PKCUT7F.js";
|
|
657
|
+
} from "./chunk-ZRYQMWEP.js";
|
|
658
|
+
import "./chunk-7JDGSJQH.js";
|
|
663
659
|
import {
|
|
664
660
|
MAINLINE_CODER_MODEL
|
|
665
661
|
} from "./chunk-F6WFNA7U.js";
|
|
666
|
-
import "./chunk-
|
|
662
|
+
import "./chunk-WZAD4ZNJ.js";
|
|
667
663
|
import {
|
|
668
664
|
DEFAULT_TOKEN_LIMIT
|
|
669
665
|
} from "./chunk-FPGTNKCP.js";
|
|
670
|
-
import
|
|
671
|
-
|
|
666
|
+
import {
|
|
667
|
+
getUnsupportedImageFormatWarning,
|
|
668
|
+
isSupportedImageMimeType
|
|
669
|
+
} from "./chunk-YHC2EYYG.js";
|
|
670
|
+
import "./chunk-PZRUV52H.js";
|
|
671
|
+
import "./chunk-JGUBDRBC.js";
|
|
672
672
|
import {
|
|
673
673
|
atomicWriteFileSync
|
|
674
|
-
} from "./chunk-
|
|
674
|
+
} from "./chunk-HDKCKCYO.js";
|
|
675
|
+
import "./chunk-HHJLM3WQ.js";
|
|
675
676
|
import {
|
|
676
677
|
endInteractionSpan,
|
|
677
678
|
getActiveInteractionSpan,
|
|
678
679
|
isBinary,
|
|
679
680
|
redactUrlCredentials
|
|
680
|
-
} from "./chunk-
|
|
681
|
-
import "./chunk-
|
|
682
|
-
import "./chunk-
|
|
681
|
+
} from "./chunk-32CHFLGV.js";
|
|
682
|
+
import "./chunk-74TONY4F.js";
|
|
683
|
+
import "./chunk-XL5K4SVK.js";
|
|
684
|
+
import {
|
|
685
|
+
getStartupContextLength,
|
|
686
|
+
isSystemReminderContent
|
|
687
|
+
} from "./chunk-WZDM44SB.js";
|
|
688
|
+
import "./chunk-K623ENWT.js";
|
|
689
|
+
import "./chunk-AQ37AY7B.js";
|
|
690
|
+
import {
|
|
691
|
+
isPathWithinRoot
|
|
692
|
+
} from "./chunk-K52PZNU4.js";
|
|
693
|
+
import {
|
|
694
|
+
ToolNames,
|
|
695
|
+
isShellProgressData
|
|
696
|
+
} from "./chunk-6NFAEG54.js";
|
|
683
697
|
import {
|
|
684
698
|
Storage,
|
|
685
699
|
UnauthorizedError,
|
|
@@ -691,18 +705,17 @@ import {
|
|
|
691
705
|
isNodeError,
|
|
692
706
|
shortenPath,
|
|
693
707
|
tildeifyPath
|
|
694
|
-
} from "./chunk-
|
|
695
|
-
import "./chunk-
|
|
696
|
-
import "./chunk-AW4TRXOC.js";
|
|
697
|
-
import {
|
|
698
|
-
registerCleanup,
|
|
699
|
-
runExitCleanup
|
|
700
|
-
} from "./chunk-X26JYGTD.js";
|
|
708
|
+
} from "./chunk-A5F2YNO6.js";
|
|
709
|
+
import "./chunk-NP2LV67M.js";
|
|
701
710
|
import {
|
|
702
711
|
finalizeStartupProfile,
|
|
703
712
|
profileCheckpoint
|
|
704
713
|
} from "./chunk-QILD6R27.js";
|
|
705
714
|
import "./chunk-JVEGA3MM.js";
|
|
715
|
+
import {
|
|
716
|
+
registerCleanup,
|
|
717
|
+
runExitCleanup
|
|
718
|
+
} from "./chunk-37BZSWEV.js";
|
|
706
719
|
import {
|
|
707
720
|
clearScreen,
|
|
708
721
|
writeStderrLine,
|
|
@@ -718,7 +731,7 @@ import {
|
|
|
718
731
|
import "./chunk-TYAMGABM.js";
|
|
719
732
|
import "./chunk-FCMNKVXT.js";
|
|
720
733
|
import "./chunk-AMDSOFFV.js";
|
|
721
|
-
import "./chunk-
|
|
734
|
+
import "./chunk-TBWQLLFO.js";
|
|
722
735
|
import {
|
|
723
736
|
init_esbuild_shims
|
|
724
737
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2376,6 +2389,7 @@ function isSyntheticHistoryItem(item) {
|
|
|
2376
2389
|
case "gemini_content":
|
|
2377
2390
|
case "tool_group":
|
|
2378
2391
|
case "btw":
|
|
2392
|
+
case "advisor":
|
|
2379
2393
|
case "memory_saved":
|
|
2380
2394
|
case "about":
|
|
2381
2395
|
case "help":
|
|
@@ -4011,14 +4025,38 @@ var MainContent = /* @__PURE__ */ __name(({ footerRef }) => {
|
|
|
4011
4025
|
return () => clearImmediate(handle);
|
|
4012
4026
|
}, [useVirtualScroll, replayCount, visibleHistory.length]);
|
|
4013
4027
|
const visibleHistoryItemsWithSourceCopyOffsets = historyItemsWithSourceCopyOffsets.length - replayCount <= PROGRESSIVE_REPLAY_CHUNK_SIZE ? historyItemsWithSourceCopyOffsets : historyItemsWithSourceCopyOffsets.slice(0, replayCount);
|
|
4014
|
-
const allVirtualItems = (0, import_react14.useMemo)(
|
|
4015
|
-
|
|
4028
|
+
const allVirtualItems = (0, import_react14.useMemo)(() => {
|
|
4029
|
+
const combined = [
|
|
4016
4030
|
VP_BANNER_ITEM,
|
|
4017
4031
|
...visibleHistory,
|
|
4018
4032
|
...pendingHistoryItems.map((item, i) => ({ ...item, id: -(i + 1) }))
|
|
4019
|
-
]
|
|
4020
|
-
|
|
4021
|
-
|
|
4033
|
+
];
|
|
4034
|
+
const livePendingBatchIds = /* @__PURE__ */ new Set();
|
|
4035
|
+
for (const item of pendingHistoryItems) {
|
|
4036
|
+
if (item.type === "tool_group" && item.batchId !== void 0) {
|
|
4037
|
+
livePendingBatchIds.add(item.batchId);
|
|
4038
|
+
}
|
|
4039
|
+
}
|
|
4040
|
+
if (livePendingBatchIds.size === 0) return combined;
|
|
4041
|
+
const dropped = /* @__PURE__ */ new Set();
|
|
4042
|
+
const committedByBatchId = /* @__PURE__ */ new Map();
|
|
4043
|
+
const keptPendingByBatchId = /* @__PURE__ */ new Map();
|
|
4044
|
+
for (const item of combined) {
|
|
4045
|
+
if (item.type !== "tool_group" || item.batchId === void 0 || !livePendingBatchIds.has(item.batchId)) {
|
|
4046
|
+
continue;
|
|
4047
|
+
}
|
|
4048
|
+
if (item.id > 0) {
|
|
4049
|
+
committedByBatchId.set(item.batchId, item);
|
|
4050
|
+
} else {
|
|
4051
|
+
const kept = keptPendingByBatchId.get(item.batchId);
|
|
4052
|
+
if (kept) dropped.add(kept);
|
|
4053
|
+
keptPendingByBatchId.set(item.batchId, item);
|
|
4054
|
+
}
|
|
4055
|
+
}
|
|
4056
|
+
for (const item of committedByBatchId.values()) dropped.add(item);
|
|
4057
|
+
if (dropped.size === 0) return combined;
|
|
4058
|
+
return combined.filter((item) => !dropped.has(item));
|
|
4059
|
+
}, [visibleHistory, pendingHistoryItems]);
|
|
4022
4060
|
const sourceCopyOffsetsByHistoryItem = (0, import_react14.useMemo)(() => {
|
|
4023
4061
|
const map = /* @__PURE__ */ new Map();
|
|
4024
4062
|
for (const {
|
|
@@ -21242,12 +21280,14 @@ function isUserTextContent(content) {
|
|
|
21242
21280
|
);
|
|
21243
21281
|
if (hasFunctionResponse) return false;
|
|
21244
21282
|
if (isSystemReminderContent(content)) return false;
|
|
21245
|
-
return content.parts.some(
|
|
21283
|
+
return content.parts.some(
|
|
21284
|
+
(part) => "text" in part && !!part.text && !isClearedMediaPlaceholder(part.text)
|
|
21285
|
+
);
|
|
21246
21286
|
}
|
|
21247
21287
|
__name(isUserTextContent, "isUserTextContent");
|
|
21248
21288
|
function findLastSuccessfulCompressionIndex(history) {
|
|
21249
21289
|
return history.findLastIndex(
|
|
21250
|
-
(item) => item.type === "compression" && item.compression.compressionStatus === 1 /* COMPRESSED */
|
|
21290
|
+
(item) => item.type === "compression" && item.compression.compressionStatus === 1 /* COMPRESSED */ && item.compression.compressionKind !== "fast"
|
|
21251
21291
|
);
|
|
21252
21292
|
}
|
|
21253
21293
|
__name(findLastSuccessfulCompressionIndex, "findLastSuccessfulCompressionIndex");
|
|
@@ -21269,6 +21309,9 @@ function computeApiTruncationIndex(uiHistory, targetUserItemId, apiHistory) {
|
|
|
21269
21309
|
includeCompressed: true
|
|
21270
21310
|
});
|
|
21271
21311
|
if (uiUserTurnCount === 0) {
|
|
21312
|
+
if (compressionIndex === -1 && startIndex > getStartupContextLength(apiHistory)) {
|
|
21313
|
+
return -1;
|
|
21314
|
+
}
|
|
21272
21315
|
return startIndex;
|
|
21273
21316
|
}
|
|
21274
21317
|
let realUserPromptCount = 0;
|
|
@@ -26594,6 +26637,10 @@ __name(toCommandSuggestion, "toCommandSuggestion");
|
|
|
26594
26637
|
function useCommandSuggestions(parserResult, commandContext, getFzfForCommands, getPrefixSuggestions, recentCommands) {
|
|
26595
26638
|
const [suggestions, setSuggestions] = (0, import_react87.useState)([]);
|
|
26596
26639
|
const [isLoading, setIsLoading] = (0, import_react87.useState)(false);
|
|
26640
|
+
const commandContextRef = (0, import_react87.useRef)(commandContext);
|
|
26641
|
+
(0, import_react87.useLayoutEffect)(() => {
|
|
26642
|
+
commandContextRef.current = commandContext;
|
|
26643
|
+
}, [commandContext]);
|
|
26597
26644
|
(0, import_react87.useEffect)(() => {
|
|
26598
26645
|
const abortController = new AbortController();
|
|
26599
26646
|
const { signal } = abortController;
|
|
@@ -26621,7 +26668,7 @@ function useCommandSuggestions(parserResult, commandContext, getFzfForCommands,
|
|
|
26621
26668
|
const argString = rawParts.slice(depth).join(" ");
|
|
26622
26669
|
const results = await leafCommand.completion(
|
|
26623
26670
|
{
|
|
26624
|
-
...
|
|
26671
|
+
...commandContextRef.current,
|
|
26625
26672
|
invocation: {
|
|
26626
26673
|
raw: `/${rawParts.join(" ")}`,
|
|
26627
26674
|
name: leafCommand.name,
|
|
@@ -26740,13 +26787,7 @@ function useCommandSuggestions(parserResult, commandContext, getFzfForCommands,
|
|
|
26740
26787
|
}
|
|
26741
26788
|
setSuggestions([]);
|
|
26742
26789
|
return () => abortController.abort();
|
|
26743
|
-
}, [
|
|
26744
|
-
parserResult,
|
|
26745
|
-
commandContext,
|
|
26746
|
-
getFzfForCommands,
|
|
26747
|
-
getPrefixSuggestions,
|
|
26748
|
-
recentCommands
|
|
26749
|
-
]);
|
|
26790
|
+
}, [parserResult, getFzfForCommands, getPrefixSuggestions, recentCommands]);
|
|
26750
26791
|
return { suggestions, isLoading };
|
|
26751
26792
|
}
|
|
26752
26793
|
__name(useCommandSuggestions, "useCommandSuggestions");
|
|
@@ -27867,6 +27908,7 @@ function AgentViewProvider({
|
|
|
27867
27908
|
const switchToAgent = (0, import_react94.useCallback)(
|
|
27868
27909
|
(agentId) => {
|
|
27869
27910
|
if (agents.has(agentId)) {
|
|
27911
|
+
setAgentShellFocused(false);
|
|
27870
27912
|
setActiveView(agentId);
|
|
27871
27913
|
}
|
|
27872
27914
|
},
|
|
@@ -27876,14 +27918,24 @@ function AgentViewProvider({
|
|
|
27876
27918
|
const ids = ["main", ...agents.keys()];
|
|
27877
27919
|
const currentIndex = ids.indexOf(activeView);
|
|
27878
27920
|
const nextIndex = (currentIndex + 1) % ids.length;
|
|
27921
|
+
setAgentShellFocused(false);
|
|
27879
27922
|
setActiveView(ids[nextIndex]);
|
|
27880
27923
|
}, [agents, activeView]);
|
|
27881
27924
|
const switchToPrevious = (0, import_react94.useCallback)(() => {
|
|
27882
27925
|
const ids = ["main", ...agents.keys()];
|
|
27883
27926
|
const currentIndex = ids.indexOf(activeView);
|
|
27884
27927
|
const prevIndex = (currentIndex - 1 + ids.length) % ids.length;
|
|
27928
|
+
setAgentShellFocused(false);
|
|
27885
27929
|
setActiveView(ids[prevIndex]);
|
|
27886
27930
|
}, [agents, activeView]);
|
|
27931
|
+
const initialViewRef = (0, import_react94.useRef)(true);
|
|
27932
|
+
(0, import_react94.useEffect)(() => {
|
|
27933
|
+
if (initialViewRef.current) {
|
|
27934
|
+
initialViewRef.current = false;
|
|
27935
|
+
return;
|
|
27936
|
+
}
|
|
27937
|
+
setAgentShellFocused(false);
|
|
27938
|
+
}, [activeView]);
|
|
27887
27939
|
const registerAgent = (0, import_react94.useCallback)(
|
|
27888
27940
|
(agentId, interactiveAgent, modelId, color, modelName) => {
|
|
27889
27941
|
setAgents((prev) => {
|
|
@@ -33015,22 +33067,54 @@ var AgentChatMissing = /* @__PURE__ */ __name(({ label }) => /* @__PURE__ */ (0,
|
|
|
33015
33067
|
|
|
33016
33068
|
// packages/cli/src/ui/components/agent-view/AgentChatView.tsx
|
|
33017
33069
|
var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1);
|
|
33070
|
+
var debugLogger31 = createDebugLogger("AGENT_TAB_RENDER");
|
|
33018
33071
|
var AgentChatView = /* @__PURE__ */ __name(({ agentId }) => {
|
|
33019
33072
|
const { agents } = useAgentViewState();
|
|
33073
|
+
const { setAgentShellFocused } = useAgentViewActions();
|
|
33020
33074
|
const agent = agents.get(agentId);
|
|
33021
33075
|
const interactiveAgent = agent?.interactiveAgent;
|
|
33022
33076
|
const core = interactiveAgent?.getCore();
|
|
33023
33077
|
if (!agent || !interactiveAgent || !core) {
|
|
33024
33078
|
return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(AgentChatMissing, { label: `Agent "${agentId}" not found.` });
|
|
33025
33079
|
}
|
|
33026
|
-
return
|
|
33027
|
-
|
|
33028
|
-
|
|
33029
|
-
|
|
33030
|
-
|
|
33031
|
-
|
|
33032
|
-
|
|
33033
|
-
|
|
33080
|
+
return (
|
|
33081
|
+
// Non-fatal per-tab containment (#9290): the app-level boundary is
|
|
33082
|
+
// FATAL — a render error that reaches it logs [FATAL_RENDER_ERROR]
|
|
33083
|
+
// and exits the whole session. An errored or incomplete teammate
|
|
33084
|
+
// whose transcript throws during render must degrade THIS tab only,
|
|
33085
|
+
// keeping the session and the other tabs alive. Keyed by agentId so
|
|
33086
|
+
// switching tabs starts from fresh boundary state: one crashed tab
|
|
33087
|
+
// must not strand every later tab in its fallback.
|
|
33088
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
33089
|
+
ErrorBoundary,
|
|
33090
|
+
{
|
|
33091
|
+
fallback: (error) => /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Box_default, { flexDirection: "column", paddingX: 1, children: [
|
|
33092
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.status.error, bold: true, children: "Something went wrong while rendering this agent tab." }),
|
|
33093
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, children: sanitizeTerminalText(error.message) }),
|
|
33094
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "The session is still running; other tabs are unaffected." }),
|
|
33095
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "Switch to another tab and back to retry rendering this tab." }),
|
|
33096
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "Set QWEN_DEBUG_LOG_FILE=1 and reproduce for a full log." })
|
|
33097
|
+
] }),
|
|
33098
|
+
onError: (error, info) => {
|
|
33099
|
+
setAgentShellFocused(false);
|
|
33100
|
+
debugLogger31.error(
|
|
33101
|
+
`[AGENT_TAB_RENDER_ERROR] agentId=${agentId} ${error.message}
|
|
33102
|
+
${info.componentStack ?? ""}
|
|
33103
|
+
${error.stack ?? ""}`
|
|
33104
|
+
);
|
|
33105
|
+
},
|
|
33106
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
33107
|
+
AgentChatContent,
|
|
33108
|
+
{
|
|
33109
|
+
core,
|
|
33110
|
+
interactiveAgent,
|
|
33111
|
+
instanceKey: agentId,
|
|
33112
|
+
modelName: agent.modelName
|
|
33113
|
+
}
|
|
33114
|
+
)
|
|
33115
|
+
},
|
|
33116
|
+
agentId
|
|
33117
|
+
)
|
|
33034
33118
|
);
|
|
33035
33119
|
}, "AgentChatView");
|
|
33036
33120
|
|
|
@@ -33857,7 +33941,7 @@ function installTerminalRedrawOptimizer(stdout) {
|
|
|
33857
33941
|
__name(installTerminalRedrawOptimizer, "installTerminalRedrawOptimizer");
|
|
33858
33942
|
|
|
33859
33943
|
// packages/cli/src/ui/utils/terminal-resize-reflow.ts
|
|
33860
|
-
var
|
|
33944
|
+
var debugLogger32 = createDebugLogger("RESIZE_REFLOW");
|
|
33861
33945
|
var CLEAR_VIEWPORT = base_exports.clearViewport;
|
|
33862
33946
|
var ESC2 = "\x1B[";
|
|
33863
33947
|
var CLEAR_TERMINAL = base_exports.clearTerminal;
|
|
@@ -33935,7 +34019,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33935
34019
|
let barePrintableCount = 0;
|
|
33936
34020
|
let handoffUntil = 0;
|
|
33937
34021
|
let clearUntil = 0;
|
|
33938
|
-
|
|
34022
|
+
debugLogger32.debug("installed", { width: lastWidth, isVP });
|
|
33939
34023
|
const modelFrame = /* @__PURE__ */ __name((content, bypassMin = false) => {
|
|
33940
34024
|
if (!bypassMin && content.split("\n").length < MIN_FRAME_LINES) return;
|
|
33941
34025
|
model.content = content;
|
|
@@ -33944,7 +34028,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33944
34028
|
}, "modelFrame");
|
|
33945
34029
|
const onResize = /* @__PURE__ */ __name(() => {
|
|
33946
34030
|
const width = stdout.columns ?? lastWidth;
|
|
33947
|
-
|
|
34031
|
+
debugLogger32.debug("resize-event", {
|
|
33948
34032
|
width,
|
|
33949
34033
|
lastWidth,
|
|
33950
34034
|
modeled: model.content.length > 0
|
|
@@ -33955,7 +34039,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33955
34039
|
} else {
|
|
33956
34040
|
pendingAmplify = reflowModel(model, width);
|
|
33957
34041
|
}
|
|
33958
|
-
|
|
34042
|
+
debugLogger32.debug("shrink", {
|
|
33959
34043
|
from: lastWidth,
|
|
33960
34044
|
to: width,
|
|
33961
34045
|
pendingAmplify,
|
|
@@ -33983,9 +34067,9 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33983
34067
|
barePrintableCount = 0;
|
|
33984
34068
|
handoffUntil = Date.now() + HANDOFF_WINDOW_MS;
|
|
33985
34069
|
}
|
|
33986
|
-
|
|
34070
|
+
debugLogger32.debug("match", { printable });
|
|
33987
34071
|
if (isVP && Date.now() < clearUntil) {
|
|
33988
|
-
|
|
34072
|
+
debugLogger32.debug("clear-viewport");
|
|
33989
34073
|
chunk = chunk.slice(0, match.index) + CLEAR_VIEWPORT + chunk.slice(match.index + match[0].length);
|
|
33990
34074
|
} else if (pendingAmplify > 0) {
|
|
33991
34075
|
const count = countOccurrences(match[0], ERASE_LINE);
|
|
@@ -33997,7 +34081,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
|
|
|
33997
34081
|
CURSOR_DOWN_PATTERN,
|
|
33998
34082
|
(_m, n) => `${ESC2}${Number(n) + delta}B`
|
|
33999
34083
|
);
|
|
34000
|
-
|
|
34084
|
+
debugLogger32.debug("amplify", { original: count, target });
|
|
34001
34085
|
chunk = prefix + base_exports.eraseLines(target) + chunk.slice(match.index + match[0].length);
|
|
34002
34086
|
}
|
|
34003
34087
|
}
|
|
@@ -34050,7 +34134,7 @@ var import_react117 = __toESM(require_react(), 1);
|
|
|
34050
34134
|
import process12 from "node:process";
|
|
34051
34135
|
import os4 from "node:os";
|
|
34052
34136
|
import v8 from "v8";
|
|
34053
|
-
var
|
|
34137
|
+
var debugLogger33 = createDebugLogger("MEMORY_MONITOR");
|
|
34054
34138
|
var MEMORY_WARNING_THRESHOLD = Math.min(
|
|
34055
34139
|
7 * 1024 * 1024 * 1024,
|
|
34056
34140
|
Math.floor(os4.totalmem() * 0.85)
|
|
@@ -34072,23 +34156,23 @@ var useMemoryMonitor = /* @__PURE__ */ __name(({
|
|
|
34072
34156
|
const rss = memUsage.rss / 1024 / 1024;
|
|
34073
34157
|
const external = memUsage.external / 1024 / 1024;
|
|
34074
34158
|
const arrayBuffers = memUsage.arrayBuffers / 1024 / 1024;
|
|
34075
|
-
if (
|
|
34076
|
-
|
|
34159
|
+
if (debugLogger33.isEnabled()) {
|
|
34160
|
+
debugLogger33.debug(
|
|
34077
34161
|
`[MEMORY_USAGE] heapUsed=${heapUsed.toFixed(1)}MB, heapTotal=${heapTotal.toFixed(1)}MB, rss=${rss.toFixed(1)}MB, external=${external.toFixed(1)}MB, arrayBuffers=${arrayBuffers.toFixed(1)}MB, heapUtilization=${(heapUsed / heapTotal * 100).toFixed(1)}%`
|
|
34078
34162
|
);
|
|
34079
34163
|
}
|
|
34080
34164
|
const now = Date.now();
|
|
34081
34165
|
if (compactOldItems && memUsage.heapUsed > MEMORY_UI_COMPACT_THRESHOLD() && now - lastCompactRef.current > UI_COMPACT_COOLDOWN_MS) {
|
|
34082
34166
|
lastCompactRef.current = now;
|
|
34083
|
-
if (
|
|
34084
|
-
|
|
34167
|
+
if (debugLogger33.isEnabled()) {
|
|
34168
|
+
debugLogger33.debug(
|
|
34085
34169
|
`[UI_COMPACT] heapUsed=${heapUsed.toFixed(1)}MB exceeds ${(MEMORY_UI_COMPACT_THRESHOLD() / 1024 / 1024).toFixed(0)}MB threshold, compacting UI history`
|
|
34086
34170
|
);
|
|
34087
34171
|
}
|
|
34088
34172
|
try {
|
|
34089
34173
|
compactOldItems();
|
|
34090
34174
|
} catch (err) {
|
|
34091
|
-
|
|
34175
|
+
debugLogger33.error(
|
|
34092
34176
|
`[UI_COMPACT] compactOldItems failed: ${err instanceof Error ? err.message : String(err)}`
|
|
34093
34177
|
);
|
|
34094
34178
|
}
|
|
@@ -34097,7 +34181,7 @@ var useMemoryMonitor = /* @__PURE__ */ __name(({
|
|
|
34097
34181
|
const warningIntervalId = setInterval(() => {
|
|
34098
34182
|
const usage = process12.memoryUsage();
|
|
34099
34183
|
if (usage.rss > MEMORY_WARNING_THRESHOLD) {
|
|
34100
|
-
|
|
34184
|
+
debugLogger33.warn(
|
|
34101
34185
|
`[MEMORY_WARNING] High memory usage detected: ${(usage.rss / (1024 * 1024 * 1024)).toFixed(2)} GB`
|
|
34102
34186
|
);
|
|
34103
34187
|
addItem(
|
|
@@ -34250,7 +34334,7 @@ var FEEDBACK_SHOW_PROBABILITY = 0.25;
|
|
|
34250
34334
|
var MIN_TOOL_CALLS = 10;
|
|
34251
34335
|
var MIN_USER_MESSAGES = 5;
|
|
34252
34336
|
var FEEDBACK_COOLDOWN_HOURS = 24;
|
|
34253
|
-
var
|
|
34337
|
+
var debugLogger34 = createDebugLogger("FEEDBACK_DIALOG");
|
|
34254
34338
|
var lastMessageIsAIResponse = /* @__PURE__ */ __name((history) => history.length > 0 && history[history.length - 1].type === "gemini" /* GEMINI */, "lastMessageIsAIResponse");
|
|
34255
34339
|
var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
|
|
34256
34340
|
try {
|
|
@@ -34262,7 +34346,7 @@ var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
|
|
|
34262
34346
|
}
|
|
34263
34347
|
} catch (error) {
|
|
34264
34348
|
if (isNodeError(error) && error.code !== "ENOENT") {
|
|
34265
|
-
|
|
34349
|
+
debugLogger34.warn(
|
|
34266
34350
|
"Failed to read feedbackLastShownTimestamp from settings file:",
|
|
34267
34351
|
error
|
|
34268
34352
|
);
|
|
@@ -34770,12 +34854,14 @@ function useResumeCommand(options) {
|
|
|
34770
34854
|
config,
|
|
34771
34855
|
settings,
|
|
34772
34856
|
historyManager,
|
|
34857
|
+
loadHistory: loadHistoryOverride,
|
|
34773
34858
|
startNewSession,
|
|
34774
34859
|
clearPendingState,
|
|
34775
34860
|
setSessionName,
|
|
34776
34861
|
remount
|
|
34777
34862
|
} = options;
|
|
34778
|
-
const { addItem, clearItems
|
|
34863
|
+
const { addItem, clearItems } = historyManager;
|
|
34864
|
+
const loadHistory = loadHistoryOverride ?? historyManager.loadHistory;
|
|
34779
34865
|
const handleResume = (0, import_react127.useCallback)(
|
|
34780
34866
|
async (sessionId) => {
|
|
34781
34867
|
if (!config) {
|
|
@@ -35111,7 +35197,7 @@ __name(useDeleteCommand, "useDeleteCommand");
|
|
|
35111
35197
|
init_esbuild_shims();
|
|
35112
35198
|
var import_react129 = __toESM(require_react(), 1);
|
|
35113
35199
|
import process15 from "node:process";
|
|
35114
|
-
var
|
|
35200
|
+
var debugLogger35 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
|
|
35115
35201
|
function hasUserPromptExpansionHooks(config) {
|
|
35116
35202
|
return !!config && !config.getDisableAllHooks?.() && (config.hasHooksForEvent?.("UserPromptExpansion") ?? false);
|
|
35117
35203
|
}
|
|
@@ -35124,18 +35210,6 @@ function serializeHistoryItemForRecording(item) {
|
|
|
35124
35210
|
return clone;
|
|
35125
35211
|
}
|
|
35126
35212
|
__name(serializeHistoryItemForRecording, "serializeHistoryItemForRecording");
|
|
35127
|
-
var SLASH_COMMANDS_SKIP_RECORDING = /* @__PURE__ */ new Set([
|
|
35128
|
-
"quit",
|
|
35129
|
-
"exit",
|
|
35130
|
-
"clear",
|
|
35131
|
-
"reset",
|
|
35132
|
-
"new",
|
|
35133
|
-
"resume",
|
|
35134
|
-
"delete",
|
|
35135
|
-
"branch",
|
|
35136
|
-
"btw",
|
|
35137
|
-
"history"
|
|
35138
|
-
]);
|
|
35139
35213
|
var SLASH_COMMAND_ROOTS_HIDE_INVOCATION = /* @__PURE__ */ new Set([
|
|
35140
35214
|
"auth",
|
|
35141
35215
|
"diff",
|
|
@@ -35694,7 +35768,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
35694
35768
|
}
|
|
35695
35769
|
setCommands(commandService.getCommandsForMode("interactive"));
|
|
35696
35770
|
} catch (error) {
|
|
35697
|
-
|
|
35771
|
+
debugLogger35.error("Failed to load slash commands:", error);
|
|
35698
35772
|
} finally {
|
|
35699
35773
|
if (!controller.signal.aborted) {
|
|
35700
35774
|
resolveCommandReloads(reloadTrigger);
|
|
@@ -36126,7 +36200,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
|
|
|
36126
36200
|
}
|
|
36127
36201
|
invocationSentToModel = true;
|
|
36128
36202
|
if (invocationItemId !== void 0) {
|
|
36129
|
-
|
|
36203
|
+
debugLogger35.debug(
|
|
36130
36204
|
`Marked slash command invocation as model-sent: /${resolvedCommandPath.join(
|
|
36131
36205
|
" "
|
|
36132
36206
|
)}`
|
|
@@ -36258,7 +36332,8 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
|
|
|
36258
36332
|
if (config?.getChatRecordingService) {
|
|
36259
36333
|
const chatRecorder = config.getChatRecordingService();
|
|
36260
36334
|
const primaryCommand = resolvedCommandPath[0] || trimmed.replace(/^[/?]/, "").split(/\s+/u)[0] || trimmed;
|
|
36261
|
-
const
|
|
36335
|
+
const isBuiltInAdvisor = primaryCommand === "advisor" && commandToExecute?.kind === "built-in" /* BUILT_IN */;
|
|
36336
|
+
const shouldRecord = !delegatedToRecursiveInvocation && !isBuiltInAdvisor && !SLASH_COMMANDS_SKIP_RECORDING.has(primaryCommand);
|
|
36262
36337
|
try {
|
|
36263
36338
|
if (shouldRecord) {
|
|
36264
36339
|
chatRecorder?.recordSlashCommand({
|
|
@@ -36275,7 +36350,7 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
|
|
|
36275
36350
|
});
|
|
36276
36351
|
}
|
|
36277
36352
|
} catch (recordError) {
|
|
36278
|
-
|
|
36353
|
+
debugLogger35.error(
|
|
36279
36354
|
"[slashCommand] Failed to record slash command:",
|
|
36280
36355
|
recordError
|
|
36281
36356
|
);
|
|
@@ -36452,7 +36527,7 @@ import os5 from "node:os";
|
|
|
36452
36527
|
import fs16 from "node:fs";
|
|
36453
36528
|
var OUTPUT_UPDATE_INTERVAL_MS = 1e3;
|
|
36454
36529
|
var MAX_OUTPUT_LENGTH = 1e4;
|
|
36455
|
-
var
|
|
36530
|
+
var debugLogger36 = createDebugLogger("SHELL_COMMAND_PROCESSOR");
|
|
36456
36531
|
function copyString(value) {
|
|
36457
36532
|
return value.split("").join("");
|
|
36458
36533
|
}
|
|
@@ -36603,7 +36678,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
|
|
|
36603
36678
|
config.getShouldUseNodePtyShell(),
|
|
36604
36679
|
shellExecutionConfig
|
|
36605
36680
|
);
|
|
36606
|
-
|
|
36681
|
+
debugLogger36.debug(terminalHeight, terminalWidth);
|
|
36607
36682
|
executionPid = pid;
|
|
36608
36683
|
if (pid) {
|
|
36609
36684
|
setActiveShellPtyId(pid);
|
|
@@ -36757,7 +36832,7 @@ var useStateAndRef = /* @__PURE__ */ __name((initialValue) => {
|
|
|
36757
36832
|
init_esbuild_shims();
|
|
36758
36833
|
var import_react134 = __toESM(require_react(), 1);
|
|
36759
36834
|
import * as path11 from "node:path";
|
|
36760
|
-
var
|
|
36835
|
+
var debugLogger37 = createDebugLogger("REACT_TOOL_SCHEDULER");
|
|
36761
36836
|
function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorClose, onToolResultFullTurnModel) {
|
|
36762
36837
|
const [toolCallsForDisplay, setToolCallsForDisplay] = (0, import_react134.useState)([]);
|
|
36763
36838
|
const outputUpdateHandler = (0, import_react134.useCallback)(
|
|
@@ -36836,7 +36911,7 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
|
|
|
36836
36911
|
if (!modelOverride?.endsWith("\0")) {
|
|
36837
36912
|
void scheduler.schedule(request, signal).catch((error) => {
|
|
36838
36913
|
if (signal.aborted) return;
|
|
36839
|
-
|
|
36914
|
+
debugLogger37.error(
|
|
36840
36915
|
`Tool scheduling failed: ${error instanceof Error ? error.message : String(error)}`
|
|
36841
36916
|
);
|
|
36842
36917
|
});
|
|
@@ -36849,7 +36924,7 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
|
|
|
36849
36924
|
});
|
|
36850
36925
|
await scheduler.schedule(request, signal, runtimeView);
|
|
36851
36926
|
} catch (error) {
|
|
36852
|
-
|
|
36927
|
+
debugLogger37.error(
|
|
36853
36928
|
`Full-turn tool scheduling failed: ${error instanceof Error ? error.message : String(error)}`
|
|
36854
36929
|
);
|
|
36855
36930
|
const message = "Full-turn tool scheduling failed. The tool was not executed.";
|
|
@@ -36917,7 +36992,7 @@ function mapCoreStatusToDisplayStatus(coreStatus) {
|
|
|
36917
36992
|
return "Pending" /* Pending */;
|
|
36918
36993
|
default: {
|
|
36919
36994
|
const exhaustiveCheck = coreStatus;
|
|
36920
|
-
|
|
36995
|
+
debugLogger37.warn(`Unknown core status encountered: ${exhaustiveCheck}`);
|
|
36921
36996
|
return "Error" /* Error */;
|
|
36922
36997
|
}
|
|
36923
36998
|
}
|
|
@@ -37265,11 +37340,11 @@ function useMessageQueue() {
|
|
|
37265
37340
|
__name(useMessageQueue, "useMessageQueue");
|
|
37266
37341
|
|
|
37267
37342
|
// packages/cli/src/ui/hooks/useGeminiStream.ts
|
|
37268
|
-
var
|
|
37343
|
+
var debugLogger38 = createDebugLogger("GEMINI_STREAM");
|
|
37269
37344
|
function applyModelOverride(modelOverrideRef, inlineActiveRef, value, isInline) {
|
|
37270
37345
|
modelOverrideRef.current = value;
|
|
37271
37346
|
inlineActiveRef.current = isInline;
|
|
37272
|
-
|
|
37347
|
+
debugLogger38.debug(
|
|
37273
37348
|
`model override ${value === void 0 ? "cleared" : `set to ${value}`} (inline=${isInline})`
|
|
37274
37349
|
);
|
|
37275
37350
|
}
|
|
@@ -37478,20 +37553,20 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37478
37553
|
expectedRevision: binding.permit.revision
|
|
37479
37554
|
});
|
|
37480
37555
|
} catch (error) {
|
|
37481
|
-
|
|
37556
|
+
debugLogger38.warn("Failed to pause invalid Goal tool batch", error);
|
|
37482
37557
|
}
|
|
37483
37558
|
}
|
|
37484
37559
|
try {
|
|
37485
37560
|
await config.getChatRecordingService()?.flush();
|
|
37486
37561
|
} catch (error) {
|
|
37487
|
-
|
|
37562
|
+
debugLogger38.warn("Failed to flush invalid Goal tool batch", error);
|
|
37488
37563
|
}
|
|
37489
37564
|
const currentPermit = runtime.permitForTurn(binding.turnKey);
|
|
37490
37565
|
if (currentPermit && sameGoalPermit(currentPermit, binding.permit)) {
|
|
37491
37566
|
await runtime.finishTurn(binding.permit);
|
|
37492
37567
|
}
|
|
37493
37568
|
} catch (error) {
|
|
37494
|
-
|
|
37569
|
+
debugLogger38.warn("Failed to close invalid Goal tool batch", error);
|
|
37495
37570
|
} finally {
|
|
37496
37571
|
releaseGoalTurn(binding);
|
|
37497
37572
|
}
|
|
@@ -37505,7 +37580,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37505
37580
|
const runtime = await config.getGoalRuntimeReady();
|
|
37506
37581
|
await runtime.releaseTurn(turnKey);
|
|
37507
37582
|
} catch (error) {
|
|
37508
|
-
|
|
37583
|
+
debugLogger38.warn(
|
|
37509
37584
|
`Failed to release undelivered Goal turn ${turnKey}`,
|
|
37510
37585
|
error
|
|
37511
37586
|
);
|
|
@@ -37653,7 +37728,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37653
37728
|
const current = modelOverrideRef.current;
|
|
37654
37729
|
return !inlineModelOverrideActiveRef.current && (!current?.endsWith("\0") || current === model);
|
|
37655
37730
|
}, []);
|
|
37656
|
-
const
|
|
37731
|
+
const handledToolCallFingerprintsRef = (0, import_react136.useRef)(/* @__PURE__ */ new Map());
|
|
37657
37732
|
const duplicateProviderToolCallResponseIdsRef = (0, import_react136.useRef)(
|
|
37658
37733
|
/* @__PURE__ */ new Set()
|
|
37659
37734
|
);
|
|
@@ -37679,22 +37754,48 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37679
37754
|
stats: sessionStates
|
|
37680
37755
|
} = useSessionStats();
|
|
37681
37756
|
const storage = config.storage;
|
|
37757
|
+
const toolBatchIdByCallIdRef = (0, import_react136.useRef)(/* @__PURE__ */ new Map());
|
|
37758
|
+
const toolBatchCounterRef = (0, import_react136.useRef)(0);
|
|
37759
|
+
const toolBatchNonceRef = (0, import_react136.useRef)(Math.random().toString(36).slice(2));
|
|
37760
|
+
const registerToolBatch = (0, import_react136.useCallback)(
|
|
37761
|
+
(requests) => {
|
|
37762
|
+
const batchNumber = ++toolBatchCounterRef.current;
|
|
37763
|
+
const batchId = `tool-batch-${toolBatchNonceRef.current}-${batchNumber}`;
|
|
37764
|
+
for (const request of Array.isArray(requests) ? requests : [requests]) {
|
|
37765
|
+
toolBatchIdByCallIdRef.current.set(request.callId, batchId);
|
|
37766
|
+
}
|
|
37767
|
+
},
|
|
37768
|
+
[]
|
|
37769
|
+
);
|
|
37770
|
+
const getToolBatchId = (0, import_react136.useCallback)(
|
|
37771
|
+
(callId) => toolBatchIdByCallIdRef.current.get(callId),
|
|
37772
|
+
[]
|
|
37773
|
+
);
|
|
37682
37774
|
const [toolCalls, scheduleToolCalls, markToolsAsSubmitted] = useReactToolScheduler(
|
|
37683
37775
|
async (completedToolCallsFromScheduler) => {
|
|
37684
37776
|
if (completedToolCallsFromScheduler.length > 0) {
|
|
37685
37777
|
const releaseToolCompletionActivity = isSubmittingQueryRef.current ? retainSubmissionActivity(submissionLeaseGenerationRef.current) : void 0;
|
|
37778
|
+
const batchId = getToolBatchId(
|
|
37779
|
+
completedToolCallsFromScheduler[0].request.callId
|
|
37780
|
+
);
|
|
37686
37781
|
try {
|
|
37687
37782
|
const projectRoot = config.getProjectRoot();
|
|
37688
37783
|
const toolGroupDisplay = mapToDisplay(
|
|
37689
37784
|
completedToolCallsFromScheduler,
|
|
37690
37785
|
projectRoot
|
|
37691
37786
|
);
|
|
37787
|
+
toolGroupDisplay.batchId = batchId;
|
|
37692
37788
|
addItem(toolGroupDisplay, Date.now());
|
|
37693
37789
|
await handleCompletedTools(
|
|
37694
37790
|
completedToolCallsFromScheduler
|
|
37695
37791
|
);
|
|
37696
37792
|
} finally {
|
|
37697
37793
|
releaseToolCompletionActivity?.();
|
|
37794
|
+
for (const tc of completedToolCallsFromScheduler) {
|
|
37795
|
+
if (toolBatchIdByCallIdRef.current.get(tc.request.callId) === batchId) {
|
|
37796
|
+
toolBatchIdByCallIdRef.current.delete(tc.request.callId);
|
|
37797
|
+
}
|
|
37798
|
+
}
|
|
37698
37799
|
}
|
|
37699
37800
|
}
|
|
37700
37801
|
},
|
|
@@ -37703,10 +37804,15 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37703
37804
|
onEditorClose,
|
|
37704
37805
|
canUseToolResultFullTurnModel
|
|
37705
37806
|
);
|
|
37706
|
-
const pendingToolCallGroupDisplay = (0, import_react136.useMemo)(
|
|
37707
|
-
(
|
|
37708
|
-
|
|
37709
|
-
|
|
37807
|
+
const pendingToolCallGroupDisplay = (0, import_react136.useMemo)(() => {
|
|
37808
|
+
if (!toolCalls.length) return void 0;
|
|
37809
|
+
const group = mapToDisplay(
|
|
37810
|
+
toolCalls,
|
|
37811
|
+
config.getProjectRoot()
|
|
37812
|
+
);
|
|
37813
|
+
group.batchId = getToolBatchId(toolCalls[0].request.callId);
|
|
37814
|
+
return group;
|
|
37815
|
+
}, [toolCalls, config, getToolBatchId]);
|
|
37710
37816
|
const activeToolPtyId = (0, import_react136.useMemo)(() => {
|
|
37711
37817
|
const executingShellTool = toolCalls?.find(
|
|
37712
37818
|
(tc) => tc.status === "executing" && tc.request.name === "run_shell_command"
|
|
@@ -37944,7 +38050,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37944
38050
|
if (signal.aborted) {
|
|
37945
38051
|
return { parts: null, shouldProceed: false };
|
|
37946
38052
|
}
|
|
37947
|
-
|
|
38053
|
+
debugLogger38.debug("vision bridge: gate matched, running conversion");
|
|
37948
38054
|
const fullTurnModel = config.getDefaultVisionBridgeModel();
|
|
37949
38055
|
if (fullTurnModel?.agentCapable) {
|
|
37950
38056
|
const fullTurnParts = (Array.isArray(parts) ? parts : [parts]).map(
|
|
@@ -37969,7 +38075,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
37969
38075
|
return { parts: fullTurnParts, shouldProceed: true };
|
|
37970
38076
|
}
|
|
37971
38077
|
const bridgeResult = await runVisionBridge({ config, parts, signal });
|
|
37972
|
-
|
|
38078
|
+
debugLogger38.debug(
|
|
37973
38079
|
`vision bridge: status=${bridgeResult.status} applied=${bridgeResult.applied} model=${bridgeResult.modelId ?? "(none)"}`
|
|
37974
38080
|
);
|
|
37975
38081
|
if (bridgeResult.status !== "skipped" || bridgeResult.egressOccurred) {
|
|
@@ -38033,6 +38139,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38033
38139
|
isClientInitiated: true,
|
|
38034
38140
|
prompt_id
|
|
38035
38141
|
};
|
|
38142
|
+
registerToolBatch(toolCallRequest);
|
|
38036
38143
|
scheduleToolCalls([toolCallRequest], abortSignal);
|
|
38037
38144
|
return {
|
|
38038
38145
|
queryToSend: null,
|
|
@@ -38058,7 +38165,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38058
38165
|
true
|
|
38059
38166
|
);
|
|
38060
38167
|
} else {
|
|
38061
|
-
|
|
38168
|
+
debugLogger38.warn(
|
|
38062
38169
|
`ignoring model override '${slashCommandResult.modelOverride}': not a model on the active provider`
|
|
38063
38170
|
);
|
|
38064
38171
|
}
|
|
@@ -38152,6 +38259,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38152
38259
|
handleSlashCommand,
|
|
38153
38260
|
logger,
|
|
38154
38261
|
shellModeActive,
|
|
38262
|
+
registerToolBatch,
|
|
38155
38263
|
scheduleToolCalls,
|
|
38156
38264
|
applyVisionBridgeIfNeeded
|
|
38157
38265
|
]
|
|
@@ -38295,8 +38403,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38295
38403
|
setThought((prev) => {
|
|
38296
38404
|
const incomingDescription = incoming.description ? clampLoadingThoughtDescription(incoming.description) : incoming.description;
|
|
38297
38405
|
if (!prev) {
|
|
38298
|
-
if (
|
|
38299
|
-
|
|
38406
|
+
if (debugLogger38.isEnabled()) {
|
|
38407
|
+
debugLogger38.debug(
|
|
38300
38408
|
`[THOUGHT_MERGE] New thought: subjectLength=${incoming.subject?.length ?? 0}, description length=${incomingDescription?.length ?? 0}`
|
|
38301
38409
|
);
|
|
38302
38410
|
}
|
|
@@ -38309,8 +38417,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38309
38417
|
const description = clampLoadingThoughtDescription(
|
|
38310
38418
|
`${prev.description ?? ""}${incomingDescription ?? ""}`
|
|
38311
38419
|
);
|
|
38312
|
-
if (
|
|
38313
|
-
|
|
38420
|
+
if (debugLogger38.isEnabled()) {
|
|
38421
|
+
debugLogger38.debug(
|
|
38314
38422
|
`[THOUGHT_MERGE] Accumulating thought: prev length=${prev.description?.length ?? 0}, incoming length=${incomingDescription?.length ?? 0}, total length=${description.length}`
|
|
38315
38423
|
);
|
|
38316
38424
|
}
|
|
@@ -38471,7 +38579,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
38471
38579
|
eventValue.error.message,
|
|
38472
38580
|
formattedErrorText
|
|
38473
38581
|
).catch((err) => {
|
|
38474
|
-
|
|
38582
|
+
debugLogger38.warn(`StopFailure hook failed: ${err}`);
|
|
38475
38583
|
});
|
|
38476
38584
|
},
|
|
38477
38585
|
[
|
|
@@ -39065,19 +39173,34 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39065
39173
|
const executableToolCallRequests = [];
|
|
39066
39174
|
const duplicateResponses = [];
|
|
39067
39175
|
let duplicatePromptId;
|
|
39068
|
-
const
|
|
39069
|
-
|
|
39070
|
-
|
|
39071
|
-
|
|
39072
|
-
|
|
39176
|
+
const handledToolCallFingerprints = new Map(
|
|
39177
|
+
geminiClient ? geminiClient.getHistoryToolCallFingerprints() : []
|
|
39178
|
+
);
|
|
39179
|
+
for (const [
|
|
39180
|
+
providerCallId,
|
|
39181
|
+
fingerprint
|
|
39182
|
+
] of handledToolCallFingerprintsRef.current) {
|
|
39183
|
+
if (!handledToolCallFingerprints.has(providerCallId)) {
|
|
39184
|
+
handledToolCallFingerprints.set(providerCallId, fingerprint);
|
|
39185
|
+
}
|
|
39186
|
+
}
|
|
39187
|
+
const isReplayOfHandledRequest = /* @__PURE__ */ __name((request) => request.providerCallId ? isReplayOfHandledToolCall(
|
|
39188
|
+
handledToolCallFingerprints,
|
|
39189
|
+
request.providerCallId,
|
|
39190
|
+
getCachedToolCallFingerprint(
|
|
39191
|
+
request,
|
|
39192
|
+
request.name,
|
|
39193
|
+
request.args
|
|
39194
|
+
)
|
|
39195
|
+
) : false, "isReplayOfHandledRequest");
|
|
39073
39196
|
const repeatedDuplicateRequest = findRepeatedDuplicateProviderToolCall(
|
|
39074
39197
|
toolCallRequests,
|
|
39075
39198
|
(request) => request.providerCallId,
|
|
39076
|
-
|
|
39199
|
+
isReplayOfHandledRequest,
|
|
39077
39200
|
duplicateProviderToolCallResponseIdsRef.current
|
|
39078
39201
|
);
|
|
39079
39202
|
if (repeatedDuplicateRequest?.providerCallId) {
|
|
39080
|
-
|
|
39203
|
+
debugLogger38.debug(
|
|
39081
39204
|
`[processGeminiStreamEvents] Dropping batch after repeated duplicate provider tool-call id: ${repeatedDuplicateRequest.providerCallId} (tool: ${repeatedDuplicateRequest.name})`
|
|
39082
39205
|
);
|
|
39083
39206
|
loopDetectedRef.current = true;
|
|
@@ -39092,13 +39215,13 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39092
39215
|
executableToolCallRequests.push(request);
|
|
39093
39216
|
continue;
|
|
39094
39217
|
}
|
|
39095
|
-
if (
|
|
39218
|
+
if (isReplayOfHandledRequest(request)) {
|
|
39096
39219
|
markDuplicateProviderToolCallResponseSent(
|
|
39097
39220
|
providerCallId,
|
|
39098
39221
|
duplicateProviderToolCallResponseIdsRef.current
|
|
39099
39222
|
);
|
|
39100
39223
|
const response = createDuplicateProviderToolCallResponse(request);
|
|
39101
|
-
|
|
39224
|
+
debugLogger38.debug(
|
|
39102
39225
|
`[processGeminiStreamEvents] Suppressing duplicate provider tool-call id: ${providerCallId} (tool: ${request.name})`
|
|
39103
39226
|
);
|
|
39104
39227
|
dualOutput?.emitToolResult(request, response);
|
|
@@ -39106,7 +39229,21 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39106
39229
|
duplicatePromptId ??= request.prompt_id;
|
|
39107
39230
|
continue;
|
|
39108
39231
|
}
|
|
39109
|
-
|
|
39232
|
+
const requestFingerprint = getCachedToolCallFingerprint(
|
|
39233
|
+
request,
|
|
39234
|
+
request.name,
|
|
39235
|
+
request.args
|
|
39236
|
+
);
|
|
39237
|
+
recordHandledToolCall(
|
|
39238
|
+
handledToolCallFingerprints,
|
|
39239
|
+
providerCallId,
|
|
39240
|
+
requestFingerprint
|
|
39241
|
+
);
|
|
39242
|
+
recordHandledToolCall(
|
|
39243
|
+
handledToolCallFingerprintsRef.current,
|
|
39244
|
+
providerCallId,
|
|
39245
|
+
requestFingerprint
|
|
39246
|
+
);
|
|
39110
39247
|
executableToolCallRequests.push(request);
|
|
39111
39248
|
}
|
|
39112
39249
|
if (duplicateResponses.length > 0) {
|
|
@@ -39144,6 +39281,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39144
39281
|
}
|
|
39145
39282
|
}
|
|
39146
39283
|
scheduledToolContinuation = true;
|
|
39284
|
+
registerToolBatch(executableToolCallRequests);
|
|
39147
39285
|
scheduleToolCalls(
|
|
39148
39286
|
executableToolCallRequests,
|
|
39149
39287
|
signal,
|
|
@@ -39161,6 +39299,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39161
39299
|
handleThoughtEvent,
|
|
39162
39300
|
handleUserCancelledEvent,
|
|
39163
39301
|
handleErrorEvent,
|
|
39302
|
+
registerToolBatch,
|
|
39164
39303
|
scheduleToolCalls,
|
|
39165
39304
|
geminiClient,
|
|
39166
39305
|
handleChatCompressionEvent,
|
|
@@ -39436,7 +39575,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39436
39575
|
lastTurnUserItemRef.current = null;
|
|
39437
39576
|
canUndoLastLoggedUserMessageRef.current = false;
|
|
39438
39577
|
turnSawContentEventRef.current = false;
|
|
39439
|
-
|
|
39578
|
+
handledToolCallFingerprintsRef.current.clear();
|
|
39440
39579
|
duplicateProviderToolCallResponseIdsRef.current.clear();
|
|
39441
39580
|
pendingDuplicateToolResponsesRef.current = [];
|
|
39442
39581
|
immediateDuplicateToolResponsesRef.current = null;
|
|
@@ -39738,8 +39877,17 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39738
39877
|
callId: request.callId,
|
|
39739
39878
|
toolName: request.name,
|
|
39740
39879
|
responseParts: response.responseParts,
|
|
39741
|
-
persistedOutputFiles: response.persistedOutputFiles
|
|
39880
|
+
persistedOutputFiles: response.persistedOutputFiles,
|
|
39881
|
+
artifacts: response.artifacts
|
|
39742
39882
|
})
|
|
39883
|
+
),
|
|
39884
|
+
new Map(
|
|
39885
|
+
immediateDuplicateToolResponses.responses.flatMap(
|
|
39886
|
+
({ request }) => {
|
|
39887
|
+
const promptId = request.prompt_id ?? immediateDuplicateToolResponses.promptId;
|
|
39888
|
+
return promptId ? [[request.callId, promptId]] : [];
|
|
39889
|
+
}
|
|
39890
|
+
)
|
|
39743
39891
|
)
|
|
39744
39892
|
);
|
|
39745
39893
|
const responseParts = finalized.flatMap(
|
|
@@ -39754,6 +39902,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39754
39902
|
callId: request.callId,
|
|
39755
39903
|
status: response.error ? "error" : "success",
|
|
39756
39904
|
resultDisplay: response.resultDisplay,
|
|
39905
|
+
persistedOutputFiles: finalized[index].persistedOutputFiles,
|
|
39906
|
+
artifacts: finalized[index].artifacts,
|
|
39757
39907
|
error: response.error,
|
|
39758
39908
|
errorType: response.errorType,
|
|
39759
39909
|
executionStatus: response.executionStatus
|
|
@@ -39795,7 +39945,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39795
39945
|
if (onComplete) {
|
|
39796
39946
|
submitPromptOnCompleteRef.current = null;
|
|
39797
39947
|
void onComplete().catch((err) => {
|
|
39798
|
-
|
|
39948
|
+
debugLogger38.error("onComplete callback failed:", err);
|
|
39799
39949
|
});
|
|
39800
39950
|
}
|
|
39801
39951
|
if (geminiClient) {
|
|
@@ -39982,7 +40132,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
39982
40132
|
"proceed_once" /* ProceedOnce */
|
|
39983
40133
|
);
|
|
39984
40134
|
} catch (error) {
|
|
39985
|
-
|
|
40135
|
+
debugLogger38.error(
|
|
39986
40136
|
`Failed to auto-approve tool call ${call.request.callId}:`,
|
|
39987
40137
|
error
|
|
39988
40138
|
);
|
|
@@ -40011,7 +40161,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40011
40161
|
);
|
|
40012
40162
|
const dedupedCallIds = dedupedTools.map((tc) => tc.request.callId);
|
|
40013
40163
|
if (dedupedCallIds.length > 0) {
|
|
40014
|
-
|
|
40164
|
+
debugLogger38.warn(
|
|
40015
40165
|
`[REPAIR] Dropping ${dedupedCallIds.length} late tool result(s) whose callId already has a functionResponse in history: ${dedupedCallIds.join(", ")}`
|
|
40016
40166
|
);
|
|
40017
40167
|
for (const tc of dedupedTools) {
|
|
@@ -40289,11 +40439,11 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40289
40439
|
memoryWriteCandidates,
|
|
40290
40440
|
config.getProjectRoot()
|
|
40291
40441
|
);
|
|
40292
|
-
|
|
40442
|
+
debugLogger38.debug(
|
|
40293
40443
|
`Checked marked context-file memory tool batch; matched=${matchedContextFileWrite}`
|
|
40294
40444
|
);
|
|
40295
40445
|
if (matchedContextFileWrite) {
|
|
40296
|
-
|
|
40446
|
+
debugLogger38.debug(
|
|
40297
40447
|
"Refreshing memory after context-file memory write"
|
|
40298
40448
|
);
|
|
40299
40449
|
await refreshMemoryInstruction(config, {
|
|
@@ -40304,7 +40454,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40304
40454
|
if (newSuccessfulMemorySaves.length > 0) {
|
|
40305
40455
|
if (!didRefreshManagedMemory) {
|
|
40306
40456
|
void performMemoryRefresh().catch((err) => {
|
|
40307
|
-
|
|
40457
|
+
debugLogger38.warn(`save_memory refresh failed: ${err}`);
|
|
40308
40458
|
});
|
|
40309
40459
|
}
|
|
40310
40460
|
newSuccessfulMemorySaves.forEach(
|
|
@@ -40413,8 +40563,14 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40413
40563
|
callId: request.callId,
|
|
40414
40564
|
toolName: request.name,
|
|
40415
40565
|
responseParts: response.responseParts,
|
|
40416
|
-
persistedOutputFiles: response.persistedOutputFiles
|
|
40417
|
-
|
|
40566
|
+
persistedOutputFiles: response.persistedOutputFiles,
|
|
40567
|
+
artifacts: response.artifacts
|
|
40568
|
+
})),
|
|
40569
|
+
new Map(
|
|
40570
|
+
orderedResponses.flatMap(
|
|
40571
|
+
({ request }) => request.prompt_id ? [[request.callId, request.prompt_id]] : []
|
|
40572
|
+
)
|
|
40573
|
+
)
|
|
40418
40574
|
);
|
|
40419
40575
|
const responsesToSend = finalizedResponses.flatMap(
|
|
40420
40576
|
(entry) => entry.responseParts
|
|
@@ -40427,6 +40583,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40427
40583
|
callId: request.callId,
|
|
40428
40584
|
status,
|
|
40429
40585
|
resultDisplay: response.resultDisplay,
|
|
40586
|
+
persistedOutputFiles: finalizedResponses[index].persistedOutputFiles,
|
|
40587
|
+
artifacts: finalizedResponses[index].artifacts,
|
|
40430
40588
|
error: response.error,
|
|
40431
40589
|
errorType: response.errorType,
|
|
40432
40590
|
executionStatus: response.executionStatus
|
|
@@ -40480,7 +40638,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40480
40638
|
for (const toolCall of geminiTools) {
|
|
40481
40639
|
if ("modelOverride" in toolCall.response) {
|
|
40482
40640
|
if (inlineModelOverrideActiveRef.current || modelOverrideRef.current?.endsWith("\0")) {
|
|
40483
|
-
|
|
40641
|
+
debugLogger38.debug(
|
|
40484
40642
|
`skill-tool model override (${String(
|
|
40485
40643
|
toolCall.response.modelOverride
|
|
40486
40644
|
)}) blocked: ${inlineModelOverrideActiveRef.current ? "inline override active" : "full-turn override active"}`
|
|
@@ -40853,7 +41011,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
40853
41011
|
try {
|
|
40854
41012
|
await scheduler.enableDurable(cronSessionIdRef.current);
|
|
40855
41013
|
} catch (err) {
|
|
40856
|
-
|
|
41014
|
+
debugLogger38.warn(
|
|
40857
41015
|
`Durable cron init failed \u2014 persistent tasks will not fire in this session: ${err}`
|
|
40858
41016
|
);
|
|
40859
41017
|
}
|
|
@@ -41004,7 +41162,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
41004
41162
|
setNotificationTrigger((n) => n + 1);
|
|
41005
41163
|
}, "onGoalClaimDeferred")
|
|
41006
41164
|
}).catch((error) => {
|
|
41007
|
-
|
|
41165
|
+
debugLogger38.warn("Failed to admit cron notification", error);
|
|
41008
41166
|
});
|
|
41009
41167
|
return;
|
|
41010
41168
|
}
|
|
@@ -41037,7 +41195,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
41037
41195
|
setNotificationTrigger((n) => n + 1);
|
|
41038
41196
|
}, "onGoalClaimDeferred")
|
|
41039
41197
|
}).catch((error) => {
|
|
41040
|
-
|
|
41198
|
+
debugLogger38.warn("Failed to admit background notification", error);
|
|
41041
41199
|
});
|
|
41042
41200
|
});
|
|
41043
41201
|
}
|
|
@@ -41110,7 +41268,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
|
|
|
41110
41268
|
setTeammateTrigger((n) => n + 1);
|
|
41111
41269
|
}, "onGoalClaimDeferred")
|
|
41112
41270
|
}).catch((error) => {
|
|
41113
|
-
|
|
41271
|
+
debugLogger38.warn("Failed to admit teammate notification", error);
|
|
41114
41272
|
});
|
|
41115
41273
|
});
|
|
41116
41274
|
}
|
|
@@ -41149,7 +41307,7 @@ var DIGIT_MULTIPLIER = 10;
|
|
|
41149
41307
|
var DEFAULT_COUNT = 1;
|
|
41150
41308
|
var MAX_COUNT = 9999;
|
|
41151
41309
|
var DIGIT_1_TO_9 = /^[1-9]$/;
|
|
41152
|
-
var
|
|
41310
|
+
var debugLogger39 = createDebugLogger("VIM_MODE");
|
|
41153
41311
|
var CMD_TYPES = {
|
|
41154
41312
|
DELETE_WORD_FORWARD: "dw",
|
|
41155
41313
|
DELETE_WORD_BACKWARD: "db",
|
|
@@ -41292,7 +41450,7 @@ function readClipboard() {
|
|
|
41292
41450
|
}
|
|
41293
41451
|
return "";
|
|
41294
41452
|
} catch (e) {
|
|
41295
|
-
|
|
41453
|
+
debugLogger39.warn("readClipboard failed:", e);
|
|
41296
41454
|
return "";
|
|
41297
41455
|
}
|
|
41298
41456
|
}
|
|
@@ -41338,7 +41496,7 @@ function writeClipboard(text) {
|
|
|
41338
41496
|
const [bin, ...args] = linuxWriteCmd;
|
|
41339
41497
|
const child = execFile7(bin, args, { timeout: 500 }, (err) => {
|
|
41340
41498
|
if (err && !writeOsc52(text)) {
|
|
41341
|
-
|
|
41499
|
+
debugLogger39.warn(
|
|
41342
41500
|
"writeClipboard: cached tool and OSC 52 both failed"
|
|
41343
41501
|
);
|
|
41344
41502
|
}
|
|
@@ -41347,11 +41505,11 @@ function writeClipboard(text) {
|
|
|
41347
41505
|
child.unref();
|
|
41348
41506
|
} else {
|
|
41349
41507
|
if (!writeOsc52(text)) {
|
|
41350
|
-
|
|
41508
|
+
debugLogger39.warn("OSC 52 clipboard write failed - no TTY available");
|
|
41351
41509
|
}
|
|
41352
41510
|
}
|
|
41353
41511
|
} catch (e) {
|
|
41354
|
-
|
|
41512
|
+
debugLogger39.warn("writeClipboard failed:", e);
|
|
41355
41513
|
}
|
|
41356
41514
|
}
|
|
41357
41515
|
__name(writeClipboard, "writeClipboard");
|
|
@@ -42066,7 +42224,7 @@ function useVim(buffer, onSubmit) {
|
|
|
42066
42224
|
try {
|
|
42067
42225
|
normalizedKey = normalizeKey(key);
|
|
42068
42226
|
} catch (error) {
|
|
42069
|
-
|
|
42227
|
+
debugLogger39.warn("Malformed key input in vim mode:", key, error);
|
|
42070
42228
|
return false;
|
|
42071
42229
|
}
|
|
42072
42230
|
const s = stateRef.current;
|
|
@@ -43399,7 +43557,7 @@ __name(useCommandMigration, "useCommandMigration");
|
|
|
43399
43557
|
|
|
43400
43558
|
// packages/cli/src/services/notificationService.ts
|
|
43401
43559
|
init_esbuild_shims();
|
|
43402
|
-
var
|
|
43560
|
+
var debugLogger40 = createDebugLogger("NOTIFICATION_SERVICE");
|
|
43403
43561
|
var DEFAULT_TITLE = "Qwen Code";
|
|
43404
43562
|
function sendNotification(opts, terminal, enabled) {
|
|
43405
43563
|
if (!enabled) {
|
|
@@ -43427,7 +43585,7 @@ function sendNotification(opts, terminal, enabled) {
|
|
|
43427
43585
|
return "terminal_bell";
|
|
43428
43586
|
}
|
|
43429
43587
|
} catch (error) {
|
|
43430
|
-
|
|
43588
|
+
debugLogger40.warn("Failed to send notification:", error);
|
|
43431
43589
|
return "error";
|
|
43432
43590
|
}
|
|
43433
43591
|
}
|
|
@@ -44379,7 +44537,7 @@ var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1);
|
|
|
44379
44537
|
var MCP_BATCH_FLUSH_MS = 16;
|
|
44380
44538
|
var STARTUP_PROFILE_FINALIZE_CAP_MS = 35e3;
|
|
44381
44539
|
var CTRL_EXIT_PROMPT_DURATION_MS = 1e3;
|
|
44382
|
-
var
|
|
44540
|
+
var debugLogger41 = createDebugLogger("APP_CONTAINER");
|
|
44383
44541
|
function isRenderModeToggleKey(key) {
|
|
44384
44542
|
return keyMatchers["toggleRenderMode" /* TOGGLE_RENDER_MODE */](key) || key.name === "m" && key.meta && !key.ctrl && !key.paste;
|
|
44385
44543
|
}
|
|
@@ -44531,7 +44689,7 @@ function useQueuedSubmissionDrain({
|
|
|
44531
44689
|
}
|
|
44532
44690
|
);
|
|
44533
44691
|
void Promise.resolve(request).catch((error) => {
|
|
44534
|
-
|
|
44692
|
+
debugLogger41.warn("Queued submission failed during admission", error);
|
|
44535
44693
|
}).finally(() => {
|
|
44536
44694
|
queueDrainingRef.current = false;
|
|
44537
44695
|
if (!admissionFailed) {
|
|
@@ -44754,6 +44912,20 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44754
44912
|
const [showWorktreeExitDialog, setShowWorktreeExitDialog] = (0, import_react162.useState)(false);
|
|
44755
44913
|
const [workflowKeywordActive, setWorkflowKeywordActive] = (0, import_react162.useState)(false);
|
|
44756
44914
|
const pendingWorktreeNoticeRef = (0, import_react162.useRef)(null);
|
|
44915
|
+
const contextFilesAnnouncedRef = (0, import_react162.useRef)(false);
|
|
44916
|
+
(0, import_react162.useEffect)(() => {
|
|
44917
|
+
contextFilesAnnouncedRef.current = false;
|
|
44918
|
+
}, [sessionStats.sessionId]);
|
|
44919
|
+
const { loadHistory: rawLoadHistory } = historyManager;
|
|
44920
|
+
const loadHistoryWithLatchReconciliation = (0, import_react162.useCallback)(
|
|
44921
|
+
(newHistory) => {
|
|
44922
|
+
rawLoadHistory(newHistory);
|
|
44923
|
+
contextFilesAnnouncedRef.current = newHistory.some(
|
|
44924
|
+
isContextFilesAnnouncement
|
|
44925
|
+
);
|
|
44926
|
+
},
|
|
44927
|
+
[rawLoadHistory]
|
|
44928
|
+
);
|
|
44757
44929
|
const activeWorktree = (0, import_react162.useMemo)(
|
|
44758
44930
|
() => worktreeSession ? {
|
|
44759
44931
|
slug: worktreeSession.slug,
|
|
@@ -44773,7 +44945,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44773
44945
|
const staticExtraHeight = 3;
|
|
44774
44946
|
(0, import_react162.useEffect)(() => {
|
|
44775
44947
|
void loadLowlight().catch((err) => {
|
|
44776
|
-
|
|
44948
|
+
debugLogger41.warn(
|
|
44777
44949
|
`Failed to load lowlight chunk; code blocks will render as plain text: ${err instanceof Error ? err.message : String(err)}`
|
|
44778
44950
|
);
|
|
44779
44951
|
});
|
|
@@ -44807,7 +44979,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44807
44979
|
collapseOnResume,
|
|
44808
44980
|
collapsePreviewCount
|
|
44809
44981
|
);
|
|
44810
|
-
|
|
44982
|
+
loadHistoryWithLatchReconciliation(historyItems);
|
|
44811
44983
|
const userTurnCount = resumedSessionData.conversation.messages.filter(
|
|
44812
44984
|
(m) => m.type === "user" && m.subtype !== "mid_turn_user_message" && m.subtype !== "realtime_message"
|
|
44813
44985
|
).length;
|
|
@@ -44855,9 +45027,9 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44855
45027
|
registerCleanup(async () => {
|
|
44856
45028
|
try {
|
|
44857
45029
|
await config.getHookSystem()?.fireSessionEndEvent("prompt_input_exit" /* PromptInputExit */);
|
|
44858
|
-
|
|
45030
|
+
debugLogger41.debug("SessionEnd event completed successfully!!!");
|
|
44859
45031
|
} catch (err) {
|
|
44860
|
-
|
|
45032
|
+
debugLogger41.error(`SessionEnd hook failed: ${err}`);
|
|
44861
45033
|
}
|
|
44862
45034
|
});
|
|
44863
45035
|
registerCleanup(async () => {
|
|
@@ -44883,7 +45055,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44883
45055
|
flushTimer = null;
|
|
44884
45056
|
}
|
|
44885
45057
|
return geminiClient2.setTools().catch((err) => {
|
|
44886
|
-
|
|
45058
|
+
debugLogger41.error(
|
|
44887
45059
|
`setTools() batch-flush failed: ${err instanceof Error ? err.message : String(err)}`
|
|
44888
45060
|
);
|
|
44889
45061
|
});
|
|
@@ -44901,7 +45073,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
44901
45073
|
failureSurfaced = true;
|
|
44902
45074
|
const failedNames = typeof config.getFailedMcpServerNames === "function" ? config.getFailedMcpServerNames() : [];
|
|
44903
45075
|
if (failedNames.length > 0) {
|
|
44904
|
-
|
|
45076
|
+
debugLogger41.warn(
|
|
44905
45077
|
`MCP server(s) failed to start: ${failedNames.join(", ")}. Continuing with built-in tools and any servers that did connect.`
|
|
44906
45078
|
);
|
|
44907
45079
|
}
|
|
@@ -45209,6 +45381,10 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45209
45381
|
config,
|
|
45210
45382
|
settings,
|
|
45211
45383
|
historyManager,
|
|
45384
|
+
// Route the interactive /resume through the latch-reconciling wrapper
|
|
45385
|
+
// so same-id resume (no sessionId change → no effect re-arm) still
|
|
45386
|
+
// re-arms the latch when the rebuilt history has no announcement.
|
|
45387
|
+
loadHistory: loadHistoryWithLatchReconciliation,
|
|
45212
45388
|
startNewSession,
|
|
45213
45389
|
clearPendingState: clearPendingStateFromRef,
|
|
45214
45390
|
setSessionName,
|
|
@@ -45359,7 +45535,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45359
45535
|
try {
|
|
45360
45536
|
cancelOngoingRequestRef.current();
|
|
45361
45537
|
} catch (error) {
|
|
45362
|
-
|
|
45538
|
+
debugLogger41.debug("Failed to cancel request while quitting:", error);
|
|
45363
45539
|
}
|
|
45364
45540
|
setQuittingMessages(messages);
|
|
45365
45541
|
config.getGeminiClient()?.requestShutdown();
|
|
@@ -45437,7 +45613,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45437
45613
|
historyManager.history,
|
|
45438
45614
|
historyManager.addItem,
|
|
45439
45615
|
historyManager.clearItems,
|
|
45440
|
-
|
|
45616
|
+
loadHistoryWithLatchReconciliation,
|
|
45441
45617
|
refreshStatic,
|
|
45442
45618
|
toggleVimEnabled,
|
|
45443
45619
|
isProcessing,
|
|
@@ -45527,6 +45703,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45527
45703
|
if (config.isSafeMode()) {
|
|
45528
45704
|
config.setUserMemory("");
|
|
45529
45705
|
config.setGeminiMdFileCount(0);
|
|
45706
|
+
config.setContextFilePaths([]);
|
|
45530
45707
|
config.setConditionalRulesRegistry(
|
|
45531
45708
|
new ConditionalRulesRegistry([], config.getWorkingDir())
|
|
45532
45709
|
);
|
|
@@ -45548,8 +45725,14 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45548
45725
|
Date.now()
|
|
45549
45726
|
);
|
|
45550
45727
|
try {
|
|
45551
|
-
const {
|
|
45552
|
-
|
|
45728
|
+
const {
|
|
45729
|
+
memoryContent,
|
|
45730
|
+
fileCount,
|
|
45731
|
+
contextFilePaths,
|
|
45732
|
+
conditionalRules,
|
|
45733
|
+
projectRoot
|
|
45734
|
+
} = await loadHierarchicalGeminiMemory(
|
|
45735
|
+
config.getWorkingDir(),
|
|
45553
45736
|
settings.merged.context?.loadFromIncludeDirectories ? config.getWorkspaceContext().getDirectories() : [],
|
|
45554
45737
|
config.getFileService(),
|
|
45555
45738
|
config.getExtensionContextFilePaths(),
|
|
@@ -45566,6 +45749,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45566
45749
|
);
|
|
45567
45750
|
config.setUserMemory(memoryContent);
|
|
45568
45751
|
config.setGeminiMdFileCount(fileCount);
|
|
45752
|
+
config.setContextFilePaths(contextFilePaths);
|
|
45569
45753
|
config.setConditionalRulesRegistry(
|
|
45570
45754
|
new ConditionalRulesRegistry(conditionalRules, projectRoot)
|
|
45571
45755
|
);
|
|
@@ -45577,7 +45761,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45577
45761
|
},
|
|
45578
45762
|
Date.now()
|
|
45579
45763
|
);
|
|
45580
|
-
|
|
45764
|
+
debugLogger41.debug(
|
|
45581
45765
|
`[DEBUG] Refreshed memory content in config: ${memoryContent.substring(
|
|
45582
45766
|
0,
|
|
45583
45767
|
200
|
|
@@ -45592,7 +45776,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45592
45776
|
},
|
|
45593
45777
|
Date.now()
|
|
45594
45778
|
);
|
|
45595
|
-
|
|
45779
|
+
debugLogger41.error("Error refreshing memory:", error);
|
|
45596
45780
|
}
|
|
45597
45781
|
}, [config, historyManager, settings.merged]);
|
|
45598
45782
|
const cancelHandlerRef = (0, import_react162.useRef)(() => {
|
|
@@ -45762,7 +45946,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45762
45946
|
);
|
|
45763
45947
|
});
|
|
45764
45948
|
goalReservationSettlementRef.current = settlement.catch((error) => {
|
|
45765
|
-
|
|
45949
|
+
debugLogger41.warn(
|
|
45766
45950
|
`Failed to release queued Goal turns: ${getErrorMessage(error)}`
|
|
45767
45951
|
);
|
|
45768
45952
|
});
|
|
@@ -45913,6 +46097,23 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
45913
46097
|
void handleSlashCommand("/quit");
|
|
45914
46098
|
return;
|
|
45915
46099
|
}
|
|
46100
|
+
const trimmedPrompt = userPromptText.trim();
|
|
46101
|
+
if (!contextFilesAnnouncedRef.current && consumesContextAnnouncementLatch(trimmedPrompt, {
|
|
46102
|
+
shellModeActive,
|
|
46103
|
+
slashCommands
|
|
46104
|
+
})) {
|
|
46105
|
+
const contextFilePaths = config.getContextFilePaths();
|
|
46106
|
+
if (contextFilePaths.length > 0) {
|
|
46107
|
+
contextFilesAnnouncedRef.current = true;
|
|
46108
|
+
historyManager.addItem(
|
|
46109
|
+
{
|
|
46110
|
+
type: "info" /* INFO */,
|
|
46111
|
+
text: `${CONTEXT_FILES_ANNOUNCEMENT_PREFIX} ${contextFilePaths.join(", ")}`
|
|
46112
|
+
},
|
|
46113
|
+
Date.now()
|
|
46114
|
+
);
|
|
46115
|
+
}
|
|
46116
|
+
}
|
|
45916
46117
|
const recoveredAgentsNotice = !isSlashCommand(userPromptText) && !isBtwCommand(userPromptText) ? config.consumePendingRecoveredAgentsNotice() : null;
|
|
45917
46118
|
if (recoveredAgentsNotice) {
|
|
45918
46119
|
submittedValue = `<system-reminder>
|
|
@@ -45960,7 +46161,7 @@ ${buildWorkflowSteeringNotice()}
|
|
|
45960
46161
|
}, "onAdmissionFailed")
|
|
45961
46162
|
})
|
|
45962
46163
|
).catch((error) => {
|
|
45963
|
-
|
|
46164
|
+
debugLogger41.warn("Failed to admit /btw submission", error);
|
|
45964
46165
|
});
|
|
45965
46166
|
return;
|
|
45966
46167
|
}
|
|
@@ -46054,7 +46255,7 @@ ${buildWorkflowSteeringNotice()}
|
|
|
46054
46255
|
submittedPrompt === void 0 ? void 0 : { submittedPrompt }
|
|
46055
46256
|
)
|
|
46056
46257
|
).catch((error) => {
|
|
46057
|
-
|
|
46258
|
+
debugLogger41.warn("Failed to admit slash command", error);
|
|
46058
46259
|
});
|
|
46059
46260
|
return;
|
|
46060
46261
|
}
|
|
@@ -46073,6 +46274,7 @@ ${buildWorkflowSteeringNotice()}
|
|
|
46073
46274
|
historyManager,
|
|
46074
46275
|
settings.merged.ui?.disableWorkflowKeywordTrigger,
|
|
46075
46276
|
setBufferText,
|
|
46277
|
+
shellModeActive,
|
|
46076
46278
|
vimEnabled
|
|
46077
46279
|
]
|
|
46078
46280
|
);
|
|
@@ -46131,18 +46333,18 @@ ${currentText}` : popped.modelText
|
|
|
46131
46333
|
geminiClient?.stripOrphanedUserEntriesFromHistory?.();
|
|
46132
46334
|
}
|
|
46133
46335
|
if (!draftWasEmpty) {
|
|
46134
|
-
|
|
46336
|
+
debugLogger41.debug("auto-restore bail: buffer was non-empty");
|
|
46135
46337
|
return;
|
|
46136
46338
|
}
|
|
46137
46339
|
if (popped !== null) {
|
|
46138
|
-
|
|
46340
|
+
debugLogger41.debug(
|
|
46139
46341
|
"auto-restore bail: queue had items (drained to buffer)"
|
|
46140
46342
|
);
|
|
46141
46343
|
return;
|
|
46142
46344
|
}
|
|
46143
46345
|
const cancelledTurnUserItem = info?.lastTurnUserItem;
|
|
46144
46346
|
if (cancelledTurnUserItem == null) {
|
|
46145
|
-
|
|
46347
|
+
debugLogger41.debug(
|
|
46146
46348
|
"auto-restore bail: cancelled turn did not add a user history item"
|
|
46147
46349
|
);
|
|
46148
46350
|
return;
|
|
@@ -46156,20 +46358,20 @@ ${currentText}` : popped.modelText
|
|
|
46156
46358
|
buffer.setText(cancelledTurnUserItem.text);
|
|
46157
46359
|
}, "restoreCancelledPrompt");
|
|
46158
46360
|
if (pendingHistoryItems2.some((item) => item.type === "tool_group")) {
|
|
46159
|
-
|
|
46361
|
+
debugLogger41.debug(
|
|
46160
46362
|
"auto-restore bail: tool execution is pending or committed"
|
|
46161
46363
|
);
|
|
46162
46364
|
return;
|
|
46163
46365
|
}
|
|
46164
46366
|
if (info?.turnProducedMeaningfulContent) {
|
|
46165
|
-
|
|
46367
|
+
debugLogger41.debug(
|
|
46166
46368
|
"auto-restore: preserving streamed output and restoring prompt text"
|
|
46167
46369
|
);
|
|
46168
46370
|
restoreCancelledPrompt();
|
|
46169
46371
|
return;
|
|
46170
46372
|
}
|
|
46171
46373
|
if (pendingHistoryItems2.some((item) => !isSyntheticHistoryItem(item))) {
|
|
46172
|
-
|
|
46374
|
+
debugLogger41.debug(
|
|
46173
46375
|
"auto-restore bail: pending stream item has meaningful content"
|
|
46174
46376
|
);
|
|
46175
46377
|
return;
|
|
@@ -46177,11 +46379,11 @@ ${currentText}` : popped.modelText
|
|
|
46177
46379
|
const history = historyRef.current;
|
|
46178
46380
|
const lastUserIdx = findLastUserItemIndex(history);
|
|
46179
46381
|
if (lastUserIdx === -1) {
|
|
46180
|
-
|
|
46382
|
+
debugLogger41.debug("auto-restore bail: no user item in history");
|
|
46181
46383
|
return;
|
|
46182
46384
|
}
|
|
46183
46385
|
if (!itemsAfterAreOnlySynthetic(history, lastUserIdx)) {
|
|
46184
|
-
|
|
46386
|
+
debugLogger41.debug(
|
|
46185
46387
|
"auto-restore: preserving committed output and restoring prompt text"
|
|
46186
46388
|
);
|
|
46187
46389
|
restoreCancelledPrompt();
|
|
@@ -46189,18 +46391,18 @@ ${currentText}` : popped.modelText
|
|
|
46189
46391
|
}
|
|
46190
46392
|
const lastUserItem = history[lastUserIdx];
|
|
46191
46393
|
if (lastUserItem.type !== "user") {
|
|
46192
|
-
|
|
46394
|
+
debugLogger41.debug(
|
|
46193
46395
|
"auto-restore bail: lastUserItem type narrowing failed (unexpected)"
|
|
46194
46396
|
);
|
|
46195
46397
|
return;
|
|
46196
46398
|
}
|
|
46197
46399
|
if (lastUserItem.id !== cancelledTurnUserItem.id || lastUserItem.text !== cancelledTurnUserItem.text) {
|
|
46198
|
-
|
|
46400
|
+
debugLogger41.debug(
|
|
46199
46401
|
"auto-restore bail: lastUserItem identity does not match cancelled-turn user item"
|
|
46200
46402
|
);
|
|
46201
46403
|
return;
|
|
46202
46404
|
}
|
|
46203
|
-
|
|
46405
|
+
debugLogger41.debug(
|
|
46204
46406
|
"auto-restore: rewinding cancelled turn and restoring prompt"
|
|
46205
46407
|
);
|
|
46206
46408
|
historyManager.truncateToItem(lastUserItem.id);
|
|
@@ -46209,7 +46411,7 @@ ${currentText}` : popped.modelText
|
|
|
46209
46411
|
geminiClient?.stripOrphanedUserEntriesFromHistory?.();
|
|
46210
46412
|
if (info?.canUndoLastLoggedUserMessage) {
|
|
46211
46413
|
void logger?.removeLastUserMessage().catch((err) => {
|
|
46212
|
-
|
|
46414
|
+
debugLogger41.debug("Failed to undo cancelled prompt from log:", err);
|
|
46213
46415
|
});
|
|
46214
46416
|
}
|
|
46215
46417
|
},
|
|
@@ -46228,6 +46430,7 @@ ${currentText}` : popped.modelText
|
|
|
46228
46430
|
);
|
|
46229
46431
|
const handleClearScreen = (0, import_react162.useCallback)(() => {
|
|
46230
46432
|
clearPendingStateRef.current();
|
|
46433
|
+
contextFilesAnnouncedRef.current = false;
|
|
46231
46434
|
historyManager.clearItems();
|
|
46232
46435
|
clearScreen();
|
|
46233
46436
|
remountStaticHistory();
|
|
@@ -46300,7 +46503,13 @@ ${currentText}` : popped.modelText
|
|
|
46300
46503
|
suggestionAbortRef.current = ac;
|
|
46301
46504
|
const conversationHistory = geminiClient.getHistoryTail(40, true);
|
|
46302
46505
|
generatePromptSuggestion(config, conversationHistory, ac.signal, {
|
|
46303
|
-
|
|
46506
|
+
// On by default: the schema declares `default: true`, but
|
|
46507
|
+
// `mergeSettings` doesn't apply schema defaults, so an unset value is
|
|
46508
|
+
// `undefined` and a `=== true` gate left the cache-aware fork as dead
|
|
46509
|
+
// code unless the flag was explicitly set (#9230). Same treatment as
|
|
46510
|
+
// `enableFollowupSuggestions` above — only an explicit `false` opts
|
|
46511
|
+
// out.
|
|
46512
|
+
enableCacheSharing: settings.merged.ui?.enableCacheSharing !== false
|
|
46304
46513
|
}).then((result) => {
|
|
46305
46514
|
if (ac.signal.aborted) return;
|
|
46306
46515
|
if (result.suggestion) {
|
|
@@ -46646,7 +46855,7 @@ ${currentText}` : popped.modelText
|
|
|
46646
46855
|
originalHistory.filter((h) => h.id < userItem.id)
|
|
46647
46856
|
);
|
|
46648
46857
|
clearPendingStateRef.current();
|
|
46649
|
-
|
|
46858
|
+
loadHistoryWithLatchReconciliation(truncatedUi);
|
|
46650
46859
|
refreshStatic();
|
|
46651
46860
|
if (userItem.type === "user" && userItem.text) {
|
|
46652
46861
|
restoredSubmissionRef.current = null;
|
|
@@ -46705,7 +46914,13 @@ ${currentText}` : popped.modelText
|
|
|
46705
46914
|
setIsRewindSelectorOpen(false);
|
|
46706
46915
|
}
|
|
46707
46916
|
},
|
|
46708
|
-
[
|
|
46917
|
+
[
|
|
46918
|
+
config,
|
|
46919
|
+
historyManager,
|
|
46920
|
+
loadHistoryWithLatchReconciliation,
|
|
46921
|
+
refreshStatic,
|
|
46922
|
+
buffer
|
|
46923
|
+
]
|
|
46709
46924
|
);
|
|
46710
46925
|
const handleDoubleEscRewind = useDoublePress(
|
|
46711
46926
|
openRewindSelector,
|
|
@@ -46925,7 +47140,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
46925
47140
|
const handleGlobalKeypress = (0, import_react162.useCallback)(
|
|
46926
47141
|
(key) => {
|
|
46927
47142
|
if (settings.merged.general?.debugKeystrokeLogging) {
|
|
46928
|
-
|
|
47143
|
+
debugLogger41.debug("[DEBUG] Keystroke:", JSON.stringify(key));
|
|
46929
47144
|
}
|
|
46930
47145
|
if (keyMatchers["toggleThinkingExpanded" /* TOGGLE_THINKING_EXPANDED */](key)) {
|
|
46931
47146
|
setThoughtExpanded((prev) => !prev);
|
|
@@ -47043,7 +47258,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
47043
47258
|
);
|
|
47044
47259
|
if (promotableShells.length === 1) {
|
|
47045
47260
|
const executingShell = promotableShells[0];
|
|
47046
|
-
|
|
47261
|
+
debugLogger41.debug(
|
|
47047
47262
|
`Ctrl+B promote: matched executing shell tool call ${executingShell.request.callId}`
|
|
47048
47263
|
);
|
|
47049
47264
|
executingShell.promoteAbortController.abort({
|
|
@@ -47051,7 +47266,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
|
|
|
47051
47266
|
});
|
|
47052
47267
|
return;
|
|
47053
47268
|
}
|
|
47054
|
-
|
|
47269
|
+
debugLogger41.debug(
|
|
47055
47270
|
`Ctrl+B promote: expected exactly one executing shell tool call; falling through (streamingState=${streamingState}, pendingToolCalls=${pendingToolCallsRef.current.length}, promotableShells=${promotableShells.length})`
|
|
47056
47271
|
);
|
|
47057
47272
|
}
|
|
@@ -47742,7 +47957,7 @@ __name(installSynchronizedOutput, "installSynchronizedOutput");
|
|
|
47742
47957
|
|
|
47743
47958
|
// packages/cli/src/ui/startInteractiveUI.tsx
|
|
47744
47959
|
var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1);
|
|
47745
|
-
var
|
|
47960
|
+
var debugLogger42 = createDebugLogger("STARTUP");
|
|
47746
47961
|
var PRESSURE_CHECK_INTERVAL_MS = 3e4;
|
|
47747
47962
|
async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), initializationResult, options = {}) {
|
|
47748
47963
|
const version = await getCliVersion();
|
|
@@ -47780,7 +47995,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
47780
47995
|
);
|
|
47781
47996
|
}
|
|
47782
47997
|
} catch (err) {
|
|
47783
|
-
|
|
47998
|
+
debugLogger42.error("Failed to initialize dual output bridge:", err);
|
|
47784
47999
|
writeStderrLine(
|
|
47785
48000
|
`Warning: dual output disabled \u2014 ${err instanceof Error ? err.message : String(err)}`
|
|
47786
48001
|
);
|
|
@@ -47791,7 +48006,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
47791
48006
|
try {
|
|
47792
48007
|
remoteInputWatcher = new RemoteInputWatcher(inputFile);
|
|
47793
48008
|
} catch (err) {
|
|
47794
|
-
|
|
48009
|
+
debugLogger42.error("Failed to initialize remote input watcher:", err);
|
|
47795
48010
|
writeStderrLine(
|
|
47796
48011
|
`Warning: remote input disabled \u2014 ${err instanceof Error ? err.message : String(err)}`
|
|
47797
48012
|
);
|
|
@@ -47842,7 +48057,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
|
|
|
47842
48057
|
{
|
|
47843
48058
|
recordForExitEcho: true,
|
|
47844
48059
|
onError: (error, info) => {
|
|
47845
|
-
|
|
48060
|
+
debugLogger42.error(
|
|
47846
48061
|
`[FATAL_RENDER_ERROR] ${error.message}
|
|
47847
48062
|
${info.componentStack ?? ""}
|
|
47848
48063
|
${error.stack ?? ""}`
|
|
@@ -47920,6 +48135,14 @@ qwen --resume ${sessionId}`
|
|
|
47920
48135
|
} catch {
|
|
47921
48136
|
}
|
|
47922
48137
|
});
|
|
48138
|
+
config.trackSessionRegistration(
|
|
48139
|
+
registerSession({
|
|
48140
|
+
sessionId: config.getSessionId(),
|
|
48141
|
+
cwd: config.getTargetDir(),
|
|
48142
|
+
qwenVersion: version
|
|
48143
|
+
})
|
|
48144
|
+
);
|
|
48145
|
+
registerCleanup(() => config.unregisterSessionRegistry());
|
|
47923
48146
|
}
|
|
47924
48147
|
__name(startInteractiveUI, "startInteractiveUI");
|
|
47925
48148
|
function setWindowTitle(settings, folderName) {
|