@qwen-code/qwen-code 0.20.2-headless-image-routing.1 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +5 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +23 -5
- package/bundled/qc-helper/docs/integration-github-action.md +9 -9
- package/bundled/review/SKILL.md +7 -3
- package/chunks/MaxSizedBox-5DPPWPGT.js +85 -0
- package/chunks/{StandaloneSessionPicker-PLQQB22E.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -59
- package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
- package/chunks/{acpAgent-AIVK2EM5.js → acpAgent-6J2U72PQ.js} +705 -182
- package/chunks/agent-6ODUANDO.js +81 -0
- package/chunks/agent-headless-7BYQTMHW.js +75 -0
- package/chunks/{anthropicContentGenerator-HGWAHO24.js → anthropicContentGenerator-75BKLTSP.js} +117 -43
- package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-Y5T7GG7F.js} +3 -3
- package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-2H6747FR.js} +3 -3
- package/chunks/bridge-ZUB64FAE.js +90 -0
- package/chunks/{build-GHIZ4MSZ.js → build-RV63TIRH.js} +2 -3
- package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
- package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-2ZD7TVAT.js} +8 -7
- package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-4OA4BCGB.js} +190 -30
- package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-V7KCFJTS.js} +7 -6
- package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
- package/chunks/chunk-2JZBVYTU.js +452 -0
- package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
- package/chunks/{chunk-4DWTDZGS.js → chunk-2NH6DYI4.js} +12 -12
- package/chunks/chunk-2SCDWPXI.js +246 -0
- package/chunks/{chunk-QE4KFTBS.js → chunk-2X55UKQE.js} +3 -3
- package/chunks/{chunk-QBUDF33N.js → chunk-3QMGYBFN.js} +1 -1
- package/chunks/{chunk-3OAKYHRG.js → chunk-3RN6GBKS.js} +1 -1
- package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
- package/chunks/chunk-46UV252V.js +128 -0
- package/chunks/{chunk-GHRSKGHF.js → chunk-4WIZGAH3.js} +7 -7
- package/chunks/{chunk-CAS7CB3T.js → chunk-55DJUCI2.js} +87 -29
- package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
- package/chunks/{chunk-H24SOJIQ.js → chunk-5NBDS5S6.js} +147 -7
- package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
- package/chunks/chunk-6FGBXPWM.js +293 -0
- package/chunks/{chunk-FFFM6NJV.js → chunk-6GMVPFB2.js} +155 -73
- package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
- package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
- package/chunks/{chunk-FZPTCQY7.js → chunk-7JURR4JT.js} +1 -1
- package/chunks/{chunk-Q6NAKZTA.js → chunk-7MVVZO4N.js} +4 -4
- package/chunks/{chunk-6ZBPS62S.js → chunk-7ZCNENPP.js} +1 -1
- package/chunks/{chunk-6X4GWOPW.js → chunk-A5L3JMUA.js} +1 -1
- package/chunks/{chunk-YO2XRXY6.js → chunk-ACY3A37B.js} +3 -3
- package/chunks/chunk-AMDSOFFV.js +10860 -0
- package/chunks/{chunk-RV4C2ZFG.js → chunk-BIQWWWJN.js} +1 -1
- package/chunks/{chunk-ZHERRXZJ.js → chunk-BJX6ZSUK.js} +4 -4
- package/chunks/chunk-BK2UNYWD.js +29 -0
- package/chunks/{chunk-FRPDJNK3.js → chunk-BKHWX6I2.js} +3 -3
- package/chunks/chunk-BPJSQIJX.js +100 -0
- package/chunks/{chunk-M7WBGLYP.js → chunk-BULDBTYC.js} +2 -0
- package/chunks/{chunk-ZDP2Y2AL.js → chunk-CIKQ7KKO.js} +4625 -8645
- package/chunks/{chunk-PEJWA3QQ.js → chunk-D3UEZIQH.js} +4 -2
- package/chunks/chunk-DHHOYAPR.js +1462 -0
- package/chunks/{chunk-LESHKUWF.js → chunk-DLWL3Z7A.js} +5 -3
- package/chunks/{chunk-XHATNRQA.js → chunk-DP3IHZGG.js} +0 -2
- package/chunks/chunk-E5TUC6CA.js +479 -0
- package/chunks/{chunk-JC26SJ5Y.js → chunk-EBJQ6AXW.js} +13 -12
- package/chunks/{chunk-RCWKCN2Z.js → chunk-EPDRMGT4.js} +164 -17
- package/chunks/{chunk-FUFCALSJ.js → chunk-ETSW4KLJ.js} +2 -2
- package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
- package/chunks/{chunk-SP5WRGVG.js → chunk-FQK6JAFG.js} +72 -23
- package/chunks/{chunk-NWZY2SPY.js → chunk-FSITMZJH.js} +8 -8
- package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
- package/chunks/{chunk-KPBVP6SL.js → chunk-GSN55ZRI.js} +5 -5
- package/chunks/{chunk-MLYGPZGU.js → chunk-H4SBPHSA.js} +3 -3
- package/chunks/chunk-H5FFA6TH.js +902 -0
- package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
- package/chunks/{chunk-5G3ZVADU.js → chunk-IJTOWOD7.js} +17 -6
- package/chunks/chunk-IKCX4CCL.js +469 -0
- package/chunks/{chunk-LPEONXNV.js → chunk-IKYJHJNF.js} +3 -3
- package/chunks/{chunk-DTZY2SH2.js → chunk-IO3IX5Q4.js} +1 -1
- package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
- package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
- package/chunks/{chunk-46DK772E.js → chunk-J24WCGIN.js} +4 -4
- package/chunks/{chunk-4LVZNIDO.js → chunk-J56UI34H.js} +4 -13
- package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
- package/chunks/{chunk-RKWX4CMO.js → chunk-JVPM2ULZ.js} +6 -6
- package/chunks/{chunk-ENPCQK44.js → chunk-JXJFVC6E.js} +37 -18
- package/chunks/{chunk-NABLFI57.js → chunk-JZA3JUDJ.js} +1 -1
- package/chunks/{chunk-CGLQAVZE.js → chunk-K36B6G2O.js} +5 -5
- package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
- package/chunks/{chunk-QOZOIPSF.js → chunk-KIM5GUMA.js} +650 -113
- package/chunks/{chunk-JZSM2IZ3.js → chunk-KMQ33DO4.js} +7 -5
- package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
- package/chunks/{chunk-WHGVTP7Q.js → chunk-L26JL52R.js} +3 -3
- package/chunks/{chunk-7Z6JQEL6.js → chunk-L5UHQJTJ.js} +1 -1
- package/chunks/{chunk-O2XSCRCS.js → chunk-LB6DUZ26.js} +259 -67
- package/chunks/chunk-LEH5C7FV.js +232 -0
- package/chunks/{chunk-RWV32G2M.js → chunk-LH2BYDQ5.js} +6 -4
- package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
- package/chunks/{chunk-VRRF3GW5.js → chunk-LKEJ26GS.js} +11 -11
- package/chunks/{chunk-SQFXI7VK.js → chunk-LQIW3YFY.js} +227 -41
- package/chunks/chunk-LS77BEZP.js +405 -0
- package/chunks/{chunk-BSHD62QJ.js → chunk-M4FMGVY4.js} +3 -3
- package/chunks/{chunk-57FIIFJN.js → chunk-M5JM7OSF.js} +1 -1
- package/chunks/{chunk-7362QS5B.js → chunk-MB4MZHMJ.js} +80 -37
- package/chunks/{chunk-4K56OJFJ.js → chunk-MUP3T3AD.js} +1 -1
- package/chunks/{chunk-3HFNGB2O.js → chunk-MVSUYZDT.js} +4 -4
- package/chunks/{chunk-T5IO6FZ4.js → chunk-MZAXJAUM.js} +1 -1
- package/chunks/{chunk-QKNXKTZX.js → chunk-NH6KE4JX.js} +3 -3
- package/chunks/chunk-NIBLUX3Y.js +934 -0
- package/chunks/{chunk-OQB4EXO4.js → chunk-NL7LTRLR.js} +1 -1
- package/chunks/{chunk-CS2FSS7W.js → chunk-OFDOK3VM.js} +5 -5
- package/chunks/{chunk-LIZRAKPB.js → chunk-OHNBB4XR.js} +1 -1
- package/chunks/{chunk-MDZTPSXO.js → chunk-OKY7HXPG.js} +2 -2
- package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
- package/chunks/{chunk-7THPNISK.js → chunk-PC6JANNU.js} +5 -5
- package/chunks/{chunk-OTQ6PSZC.js → chunk-PHOF65IG.js} +3498 -1030
- package/chunks/{chunk-OQ5SYCPE.js → chunk-PJIZUQVC.js} +2 -2
- package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
- package/chunks/{chunk-YM3SZTH4.js → chunk-PR75REBZ.js} +18 -1
- package/chunks/{chunk-RECUEJ7B.js → chunk-PSOO6YXD.js} +18 -15
- package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
- package/chunks/{chunk-5NJTNQUW.js → chunk-PWVFN2LF.js} +1 -1
- package/chunks/{chunk-7AUH6A4T.js → chunk-Q4M4MDQ4.js} +2 -2
- package/chunks/{chunk-EZPB6S2I.js → chunk-QAF7NMK7.js} +1 -1
- package/chunks/{chunk-5GI55PF5.js → chunk-R5AFZNQW.js} +5 -5
- package/chunks/{chunk-T5B5NQZX.js → chunk-RF3EXIHJ.js} +47 -60
- package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
- package/chunks/{chunk-TJDW42MV.js → chunk-RIBKPMRP.js} +220 -141
- package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
- package/chunks/{chunk-L5QZGCRH.js → chunk-RZIX2G32.js} +1 -1
- package/chunks/{chunk-LLKWRXSS.js → chunk-SQCQ4KO2.js} +350 -418
- package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
- package/chunks/{chunk-XCXYRDHB.js → chunk-TEHGS6UP.js} +47 -18
- package/chunks/{chunk-PQIVAWXN.js → chunk-TGILQ3YH.js} +8 -8
- package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
- package/chunks/{chunk-L3KUB6XM.js → chunk-TPRQ7RZH.js} +586 -242
- package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
- package/chunks/{chunk-HIP6TVWA.js → chunk-U7M2DMGW.js} +3 -3
- package/chunks/{chunk-ACW3VNUE.js → chunk-UDX5OBWR.js} +41 -9
- package/chunks/{chunk-LW2FUYBN.js → chunk-USTWD7QV.js} +6 -4
- package/chunks/{chunk-NPQDJGKU.js → chunk-UUUTRMI2.js} +1 -1
- package/chunks/chunk-UW5EOVUN.js +249 -0
- package/chunks/{chunk-6IL7KRLE.js → chunk-VAK25FTU.js} +1 -1
- package/chunks/{chunk-O4BHWVUD.js → chunk-VIA5XA4U.js} +5 -2
- package/chunks/{chunk-EBXZ2YGV.js → chunk-VRYUBFMC.js} +1 -1
- package/chunks/{chunk-TWVE5ZS5.js → chunk-VULLI6WQ.js} +172 -6
- package/chunks/{chunk-LNDD3IML.js → chunk-WCXCRJYB.js} +1 -1
- package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
- package/chunks/{chunk-Q35QUZDQ.js → chunk-Y34KJKDC.js} +1 -1
- package/chunks/{chunk-7NR2AIK6.js → chunk-YBL3QUDD.js} +2 -2
- package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
- package/chunks/{chunk-MBOJHHPI.js → chunk-YPE6A4GC.js} +2 -2
- package/chunks/{chunk-3EK5ZOUQ.js → chunk-YX324OPW.js} +1 -1
- package/chunks/{chunk-4PTLZ3NX.js → chunk-Z2BC6UJ5.js} +3 -3
- package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
- package/chunks/{chunk-LX3COOXF.js → chunk-ZFDTEDCF.js} +6 -6
- package/chunks/chunk-ZJHVAS7M.js +289 -0
- package/chunks/{chunk-4OWXOUYF.js → chunk-ZNAUOR2I.js} +15 -12
- package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
- package/chunks/{computer-use-2VIV73WK.js → computer-use-SOQ4E3VX.js} +43 -35
- package/chunks/{config-utils-FYTBZLCJ.js → config-utils-7V7GGIW6.js} +3 -3
- package/chunks/contextCommand-JLHYA34Z.js +80 -0
- package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-IWW2IZ2T.js} +3 -3
- package/chunks/{create-sub-session-XDHHC2P4.js → create-sub-session-QRJLW5BV.js} +43 -35
- package/chunks/{cron-create-KTWJM7QT.js → cron-create-YIID5XAW.js} +6 -6
- package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-ZVHYCEP2.js} +5 -5
- package/chunks/{cron-list-PXDPGEDQ.js → cron-list-XEGS463Q.js} +5 -5
- package/chunks/{daemon-RAPSDJH7.js → daemon-YO6433NF.js} +350 -53
- package/chunks/daemon-status-provider-2233Q37D.js +89 -0
- package/chunks/{de-4IBXM7CN.js → de-HGRCYDEJ.js} +1 -0
- package/chunks/{dist-UIFWIFRO.js → dist-46NQKLTW.js} +2 -2
- package/chunks/{dist-XRYV6TJP.js → dist-AIKFMUKK.js} +50 -4
- package/chunks/{dist-XBJVSWS2.js → dist-BBLXMS3N.js} +14 -2
- package/chunks/{dist-OMW6WDEO.js → dist-F6IBUDR4.js} +40 -9
- package/chunks/{dist-PJLG2XYX.js → dist-WEAHOXDM.js} +1 -1
- package/chunks/{dist-OAV7LJGJ.js → dist-YFNEUWSE.js} +26 -2
- package/chunks/earlyInputCapture-A7NDU3PF.js +82 -0
- package/chunks/{edit-CS6SFEXC.js → edit-OBDSQURM.js} +43 -35
- package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
- package/chunks/{enter-worktree-LMAL75DY.js → enter-worktree-U6MRPQ2P.js} +43 -35
- package/chunks/{enterPlanMode-WVJB4DSS.js → enterPlanMode-BC5QUZZ2.js} +43 -35
- package/chunks/{environment-6YHC4JAJ.js → environment-W5UFC2CH.js} +46 -38
- package/chunks/errors-M7CLORXH.js +88 -0
- package/chunks/{exit-worktree-KPFD742L.js → exit-worktree-DGNYMECB.js} +43 -35
- package/chunks/{exitPlanMode-UEJS6CDY.js → exitPlanMode-GXTBWQAR.js} +43 -35
- package/chunks/{fast-path-G2N4NRCA.js → fast-path-JJZFJANL.js} +6 -6
- package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-WQJU2LAT.js} +2 -2
- package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
- package/chunks/{gemini-2MDVIOVT.js → gemini-QS36EBZV.js} +132 -102
- package/chunks/{geminiContentGenerator-ZXTDBMFR.js → geminiContentGenerator-AG4KB6CV.js} +14 -8
- package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-V7W3GODC.js} +1 -1
- package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-TDO75DQP.js} +1 -1
- package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-TF43WQT2.js} +1 -1
- package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-ZGUO3TXT.js} +1 -1
- package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-ECFYZZFQ.js} +1 -1
- package/chunks/{glob-562XFLIZ.js → glob-V7R3PSK3.js} +43 -35
- package/chunks/{grep-MGEFBDQK.js → grep-QYPSK7OP.js} +43 -35
- package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
- package/chunks/{i18n-R6HJENXA.js → i18n-VUJJZIMU.js} +44 -36
- package/chunks/image-gen-Z3VPGKRC.js +240 -0
- package/chunks/initializer-UWAK5U5O.js +86 -0
- package/chunks/installationInfo-6O2YAA52.js +80 -0
- package/chunks/{ja-KY4ROZTE.js → ja-B7DF7DFG.js} +1 -0
- package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-MDTG3WRM.js} +3 -3
- package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
- package/chunks/list-GB4ESM3T.js +89 -0
- package/chunks/list-agents-5KJJHR6I.js +80 -0
- package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +83 -0
- package/chunks/loggingContentGenerator-HS3S5H3Q.js +1077 -0
- package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-FXKNNYSY.js} +7 -7
- package/chunks/{ls-J2ZI5XYK.js → ls-NTK6VOQJ.js} +5 -5
- package/chunks/{lsp-UMS3NUB5.js → lsp-2JI24STP.js} +3 -3
- package/chunks/{managed-npm-update-4KNYSOYC.js → managed-npm-update-JYEMMXA3.js} +94 -38
- package/chunks/mcp-6DBDJPFU.js +83 -0
- package/chunks/{monitor-DMHKE4SW.js → monitor-R3ODH5U6.js} +45 -36
- package/chunks/node-UUDY34IG.js +305 -0
- package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
- package/chunks/{notebook-edit-35SJGEOR.js → notebook-edit-BNOK452R.js} +43 -35
- package/chunks/{openaiContentGenerator-5LPAFXPF.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
- package/chunks/pidfile-TFRZZZIO.js +86 -0
- package/chunks/{processUtils-GM2I55KF.js → processUtils-RT7UNCC2.js} +2 -2
- package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
- package/chunks/{qwenContentGenerator-HKOYNP7H.js → qwenContentGenerator-HHCRK4SX.js} +56 -42
- package/chunks/{qwenOAuth2-NUUYC3V5.js → qwenOAuth2-OWLB5AKH.js} +14 -27
- package/chunks/read-file-APMO3PSX.js +31 -0
- package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-4DKQWGHD.js} +3 -3
- package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-RQKFYO5B.js} +3 -3
- package/chunks/resumeHistoryUtils-6KRYEAWZ.js +91 -0
- package/chunks/ripGrep-BEJDEDXW.js +73 -0
- package/chunks/{ru-7SPDGMGD.js → ru-FZCNZHDC.js} +1 -0
- package/chunks/{run-qwen-serve-5VH3F4NW.js → run-qwen-serve-FU6HEM4J.js} +271 -57
- package/chunks/{runtime-OH77YH7W.js → runtime-XXRRTNP6.js} +55 -45
- package/chunks/{scheduler-WJQSLCSV.js → scheduler-G2ZS2Z7E.js} +43 -35
- package/chunks/{sdk-exporters-grpc-ETLH47EP.js → sdk-exporters-grpc-AK3LGHNO.js} +3 -3
- package/chunks/{sdk-exporters-http-T3POX73F.js → sdk-exporters-http-FYBSUCPD.js} +6 -6
- package/chunks/{sdk-impl-NSLPDH6I.js → sdk-impl-GMVPB7NB.js} +6 -6
- package/chunks/{send-message-PYIJ2PZL.js → send-message-Q6OOR6BR.js} +46 -9
- package/chunks/serve-7BSTXJ4T.js +89 -0
- package/chunks/{server-E4N4AI6Z.js → server-4UMH7OIZ.js} +2362 -411
- package/chunks/{session-5YUWIOQE.js → session-K3O3Q2SV.js} +105 -87
- package/chunks/{settings-YY7ZSFO7.js → settings-CR2EWTBA.js} +53 -45
- package/chunks/shell-HH3PF3A2.js +83 -0
- package/chunks/{skill-PAIDX3EU.js → skill-I3SDA4MB.js} +17 -16
- package/chunks/spawnChannel-RWNDBXGA.js +82 -0
- package/chunks/{src-IZXLJI5M.js → src-GE4TTTML.js} +302 -184
- package/chunks/{standalone-update-X675JVBL.js → standalone-update-Q6WFRZZQ.js} +45 -37
- package/chunks/{startInteractiveUI-ND2IVBU3.js → startInteractiveUI-SLZGHRPH.js} +747 -310
- package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-I3757IWH.js} +4 -4
- package/chunks/{task-create-7474AJJD.js → task-create-N7WQSGYA.js} +10 -10
- package/chunks/{task-list-633HGOIB.js → task-list-FOPULZEP.js} +7 -7
- package/chunks/{task-stop-MNUGHPIA.js → task-stop-H6RHXFVQ.js} +4 -4
- package/chunks/{task-update-66GQB5LI.js → task-update-M57TFZJT.js} +10 -10
- package/chunks/{team-create-2DEYNMMN.js → team-create-YJALH5D2.js} +46 -38
- package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
- package/chunks/{team-plan-approval-65AVAOCT.js → team-plan-approval-34QFYKGN.js} +43 -35
- package/chunks/theme-manager-SWRILQHI.js +77 -0
- package/chunks/{todoWrite-KRAUN54W.js → todoWrite-VQ7FKOHL.js} +5 -5
- package/chunks/{tool-search-ZQP3SMTV.js → tool-search-NF7GB6LE.js} +16 -16
- package/chunks/total-session-admission-DLHHHLD3.js +84 -0
- package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
- package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
- package/chunks/{trustedFolders-LURI52LP.js → trustedFolders-KHXHY6PY.js} +44 -36
- package/chunks/{update-relaunch-BPWFIDLM.js → update-relaunch-WBUZJC5O.js} +5 -5
- package/chunks/updateCheck-RKL6M5XN.js +92 -0
- package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
- package/chunks/{validateNonInterActiveAuth-HWD6Y22I.js → validateNonInterActiveAuth-3R223G3R.js} +89 -80
- package/chunks/{version-OD4JAFG7.js → version-HS7YSFHV.js} +1 -1
- package/chunks/{web-fetch-RFBKNU24.js → web-fetch-NKCSG7ZE.js} +18 -16
- package/chunks/{web-search-AKTVS5YZ.js → web-search-S62WAP4S.js} +13 -27
- package/chunks/{workflow-VZVCOSZN.js → workflow-QAGU5RU4.js} +44 -36
- package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
- package/chunks/{workspace-registration-store-Q5SFJSX4.js → workspace-registration-store-24JMHDGF.js} +2 -2
- package/chunks/workspace-registry-UT4RBNBM.js +88 -0
- package/chunks/workspace-service-JFWRUS4V.js +98 -0
- package/chunks/workspace-skills-status-ZBBKJOI2.js +85 -0
- package/chunks/write-file-VHIXW5M7.js +73 -0
- package/chunks/{zh-WY5DWYZD.js → zh-LUIGBD55.js} +15 -0
- package/chunks/{zh-TW-BM47YBFH.js → zh-TW-F5KG2IYD.js} +15 -0
- package/cli-entry.js +10 -1
- package/cli.js +13 -13
- package/locales/ca.js +2 -0
- package/locales/de.js +1 -0
- package/locales/en.js +25 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +23 -0
- package/locales/zh.js +23 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-BWFm0SI0.js → arc-DcbWnB9T.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CZ_yL-DQ.js → architectureDiagram-3BPJPVTR-kMMF5sud.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B9F9mJvG.js → blockDiagram-GPEHLZMM-Htl9vTJS.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BUdwJW5f.js → c4Diagram-AAUBKEIU-BnZnm0mQ.js} +1 -1
- package/web-shell/assets/channel-Cq7YKtfC.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-w4cF-qlF.js → chunk-2J33WTMH-DziB7kDG.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BXwURxHJ.js → chunk-4BX2VUAB-CmkD8daw.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Gem3LalC.js → chunk-55IACEB6-CHAd9A_U.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-A3ddVojI.js → chunk-727SXJPM-Dqaam3fE.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CjHZ5L_R.js → chunk-AQP2D5EJ-D_-saBYM.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CKgdgcpv.js → chunk-FMBD7UC4-B9r_veWD.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-Cn2Dykjb.js → chunk-ND2GUHAM-B3EaCSpL.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN--0SyraC5.js → chunk-QZHKN3VN-CYq8x9mn.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CphhAity.js → cose-bilkent-S5V4N54A-D0ng4uiB.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DU--jiKp.js → dagre-BM42HDAG-DCZollQv.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BzvuZw1Y.js → diagram-2AECGRRQ-Dfk2pWS0.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-D84-49Y0.js → diagram-5GNKFQAL-kX38ltWR.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DQTq-3_3.js → diagram-KO2AKTUF-CJz2vsXh.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-8FTrshzN.js → diagram-LMA3HP47-BvMLZm_7.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BCjpDBCm.js → diagram-OG6HWLK6-l7kfStkO.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BtRObkmg.js → erDiagram-TEJ5UH35-BSVa8GGT.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DTrW6oxy.js → flowDiagram-I6XJVG4X-CoawKIXH.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgPNSW6j.js → ganttDiagram-6RSMTGT7-DFUDH0zF.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BTclNgGV.js → gitGraphDiagram-PVQCEYII-Y2pvpT4e.js} +1 -1
- package/web-shell/assets/{index-CxA7AqY6.js → index-D0GX0zZf.js} +1 -1
- package/web-shell/assets/index-D9haPt0X.css +5 -0
- package/web-shell/assets/index-ckX9Pq5k.js +1230 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DCE4AJt2.js → infoDiagram-5YYISTIA-CU8_zLiX.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C8iE6q4Y.js → ishikawaDiagram-YF4QCWOH-AVQiV0DU.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-C_dxdyEc.js → journeyDiagram-JHISSGLW-DQ0VSKa3.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Dw3n1u3w.js → kanban-definition-UN3LZRKU-BqnWqsE_.js} +1 -1
- package/web-shell/assets/{linear-C2BF2zJ9.js → linear-BkoihsaA.js} +1 -1
- package/web-shell/assets/{mermaid.core-CGTQU3MA.js → mermaid.core-5RJs-31j.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BVFZm9ZC.js → mindmap-definition-RKZ34NQL-D33Bxnpd.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Cc-TNN3n.js → pieDiagram-4H26LBE5-BuEAw3BH.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CgW3Rzsi.js → quadrantDiagram-W4KKPZXB-Kox_usEq.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BAaj0Y3B.js → requirementDiagram-4Y6WPE33-CNjeUif0.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-XJWmekxS.js → sankeyDiagram-5OEKKPKP-BCd2OL_U.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CtRc_0wf.js → sequenceDiagram-3UESZ5HK-CF2ZTsz0.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-WCnvMGy5.js → stateDiagram-AJRCARHV-qenSzHtm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-C9cRx49L.js → timeline-definition-PNZ67QCA-B5DyWdgs.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BvXOCEt-.js → vennDiagram-CIIHVFJN-DqP4I_o_.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-ByafGtzu.js → wardley-L42UT6IY-CJe2e4mg.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CozAnw8x.js → wardleyDiagram-YWT4CUSO-BMDSw-Rr.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-Camu9Qvq.js → xychartDiagram-2RQKCTM6-BTVZYkxD.js} +1 -1
- package/web-shell/index.html +17 -13
- package/chunks/MaxSizedBox-3XQIBACV.js +0 -78
- package/chunks/agent-QXD5NSKA.js +0 -73
- package/chunks/agent-headless-4VXR2TBK.js +0 -67
- package/chunks/bridge-GIBRSPE6.js +0 -81
- package/chunks/chunk-CBOQ3HY7.js +0 -2019
- package/chunks/chunk-MA6GYKK7.js +0 -6928
- package/chunks/contextCommand-XQU7KLIH.js +0 -72
- package/chunks/daemon-status-provider-KQVNB4VA.js +0 -80
- package/chunks/earlyInputCapture-WP5SA3KH.js +0 -74
- package/chunks/errors-JEYPXX4S.js +0 -80
- package/chunks/handleAutoUpdate-2VJPAW43.js +0 -73
- package/chunks/initializer-UOX67ZFQ.js +0 -78
- package/chunks/installationInfo-NQNY34X3.js +0 -72
- package/chunks/list-2Z7KS7ZF.js +0 -81
- package/chunks/loadedSettingsAdapter-LIYY3LE4.js +0 -75
- package/chunks/mcp-AJ4QW3JA.js +0 -75
- package/chunks/nonInteractiveCli-PUSO5QF6.js +0 -134
- package/chunks/pidfile-EH2JW2PB.js +0 -78
- package/chunks/read-file-JZ5VXILQ.js +0 -31
- package/chunks/resumeHistoryUtils-Z3HG4WKM.js +0 -84
- package/chunks/ripGrep-JNLJCT2B.js +0 -65
- package/chunks/serve-NN5FXWR6.js +0 -81
- package/chunks/shell-FXT3NVC6.js +0 -75
- package/chunks/spawnChannel-XAWLXNOD.js +0 -74
- package/chunks/theme-manager-2WZHPK2M.js +0 -69
- package/chunks/total-session-admission-HULB2TEQ.js +0 -75
- package/chunks/updateCheck-D4ESCHBJ.js +0 -88
- package/chunks/useAutoAcceptIndicator-CBNLOF2P.js +0 -86
- package/chunks/workspace-providers-status-TJTVHORI.js +0 -78
- package/chunks/workspace-registry-H6VM5WXK.js +0 -79
- package/chunks/workspace-service-ZNKD3I2J.js +0 -90
- package/chunks/workspace-skills-status-OOBIXADG.js +0 -77
- package/chunks/write-file-CAKK5IAO.js +0 -65
- package/web-shell/assets/channel-DiLlxxIf.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CkylTdM4.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CkylTdM4.js +0 -1
- package/web-shell/assets/index-CGtQqOIa.css +0 -5
- package/web-shell/assets/index-TtM0hVjU.js +0 -1207
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D1gzH2Ue.js +0 -1
|
@@ -1,33 +1,18 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import {
|
|
4
|
-
CompactToolGroupDisplay,
|
|
5
|
-
SCREEN_READER_MODEL_PREFIX,
|
|
6
|
-
SCREEN_READER_USER_PREFIX,
|
|
7
|
-
SHELL_COMMAND_NAME,
|
|
8
|
-
SHELL_NAME,
|
|
9
|
-
STATUS_INDICATOR_WIDTH,
|
|
10
|
-
ToolElapsedTime,
|
|
11
|
-
ToolStatusIndicator,
|
|
12
|
-
buildResumedHistoryItems,
|
|
13
|
-
build_default,
|
|
14
|
-
estimateCompactToolGroupHeight,
|
|
15
|
-
isCollapsibleTool,
|
|
16
|
-
wrapAnsi
|
|
17
|
-
} from "./chunk-ENPCQK44.js";
|
|
18
3
|
import {
|
|
19
4
|
disableMouseEvents,
|
|
20
5
|
enableMouseEvents,
|
|
21
6
|
useKeypress,
|
|
22
7
|
useKeypressContext
|
|
23
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-LQIW3YFY.js";
|
|
24
9
|
import {
|
|
25
10
|
formatSupportedModes,
|
|
26
11
|
getCommandDisplayName,
|
|
27
12
|
getCommandSourceBadge,
|
|
28
13
|
getCommandSourceGroup,
|
|
29
14
|
getCommandSubcommandNames
|
|
30
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-RZIX2G32.js";
|
|
31
16
|
import {
|
|
32
17
|
calculateAverageLatency,
|
|
33
18
|
calculateCacheHitRate,
|
|
@@ -37,17 +22,30 @@ import {
|
|
|
37
22
|
computeSessionStats,
|
|
38
23
|
getSystemInfoFields,
|
|
39
24
|
levelLabel
|
|
40
|
-
} from "./chunk-
|
|
41
|
-
import {
|
|
42
|
-
wrapForMultiplexer
|
|
43
|
-
} from "./chunk-4LVZNIDO.js";
|
|
25
|
+
} from "./chunk-U7M2DMGW.js";
|
|
44
26
|
import {
|
|
45
27
|
MINIMUM_MAX_HEIGHT,
|
|
46
28
|
MaxSizedBox
|
|
47
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-FQK6JAFG.js";
|
|
30
|
+
import {
|
|
31
|
+
CompactToolGroupDisplay,
|
|
32
|
+
ICON,
|
|
33
|
+
SCREEN_READER_MODEL_PREFIX,
|
|
34
|
+
SCREEN_READER_USER_PREFIX,
|
|
35
|
+
SHELL_COMMAND_NAME,
|
|
36
|
+
SHELL_NAME,
|
|
37
|
+
STATUS_INDICATOR_WIDTH,
|
|
38
|
+
ToolElapsedTime,
|
|
39
|
+
ToolStatusIndicator,
|
|
40
|
+
buildResumedHistoryItems,
|
|
41
|
+
build_default,
|
|
42
|
+
estimateCompactToolGroupHeight,
|
|
43
|
+
isCollapsibleTool,
|
|
44
|
+
wrapAnsi
|
|
45
|
+
} from "./chunk-JXJFVC6E.js";
|
|
48
46
|
import {
|
|
49
47
|
theme
|
|
50
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-VAK25FTU.js";
|
|
51
49
|
import {
|
|
52
50
|
require_jsx_runtime
|
|
53
51
|
} from "./chunk-SV5PQVQE.js";
|
|
@@ -59,17 +57,17 @@ import {
|
|
|
59
57
|
use_is_screen_reader_enabled_default,
|
|
60
58
|
use_stdin_default,
|
|
61
59
|
use_stdout_default
|
|
62
|
-
} from "./chunk-
|
|
63
|
-
import {
|
|
64
|
-
require_react
|
|
65
|
-
} from "./chunk-5QWWOFGG.js";
|
|
60
|
+
} from "./chunk-6GMVPFB2.js";
|
|
66
61
|
import {
|
|
67
62
|
relaunchApp
|
|
68
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-Y34KJKDC.js";
|
|
69
64
|
import {
|
|
70
65
|
resolveColor,
|
|
71
66
|
themeManager
|
|
72
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-L5UHQJTJ.js";
|
|
68
|
+
import {
|
|
69
|
+
require_react
|
|
70
|
+
} from "./chunk-5QWWOFGG.js";
|
|
73
71
|
import {
|
|
74
72
|
cpLen,
|
|
75
73
|
cpSlice,
|
|
@@ -83,37 +81,37 @@ import {
|
|
|
83
81
|
toCodePoints,
|
|
84
82
|
truncateToWidth,
|
|
85
83
|
wrapToVisualLines
|
|
86
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-IPUUTYMV.js";
|
|
87
85
|
import {
|
|
88
86
|
stringWidth
|
|
89
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-2MIN6GRR.js";
|
|
90
88
|
import {
|
|
91
89
|
isTerminalGoalStatusKind
|
|
92
90
|
} from "./chunk-QTERJVPZ.js";
|
|
93
|
-
import {
|
|
94
|
-
formatDuration,
|
|
95
|
-
formatMemoryUsage,
|
|
96
|
-
formatRelativeTime,
|
|
97
|
-
formatTokenCount
|
|
98
|
-
} from "./chunk-E5Z2AVNV.js";
|
|
99
91
|
import {
|
|
100
92
|
require_has_flag,
|
|
101
93
|
require_source
|
|
102
94
|
} from "./chunk-57OAHC2Y.js";
|
|
103
95
|
import {
|
|
104
96
|
createLoadedSettingsAdapter
|
|
105
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-IO3IX5Q4.js";
|
|
98
|
+
import {
|
|
99
|
+
formatDuration,
|
|
100
|
+
formatMemoryUsage,
|
|
101
|
+
formatRelativeTime,
|
|
102
|
+
formatTokenCount
|
|
103
|
+
} from "./chunk-E5Z2AVNV.js";
|
|
106
104
|
import {
|
|
107
105
|
getPersistScopeForModelSelection
|
|
108
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-TEHGS6UP.js";
|
|
109
107
|
import {
|
|
110
108
|
getCurrentLanguage,
|
|
111
109
|
localizeToolDisplayName,
|
|
112
110
|
t
|
|
113
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-LKEJ26GS.js";
|
|
114
112
|
import {
|
|
115
113
|
isWorkspaceTrusted
|
|
116
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-Z2BC6UJ5.js";
|
|
117
115
|
import {
|
|
118
116
|
ALL_PROVIDERS,
|
|
119
117
|
IdeClient,
|
|
@@ -135,27 +133,32 @@ import {
|
|
|
135
133
|
resolveBaseUrl,
|
|
136
134
|
resolveMetadataKey,
|
|
137
135
|
resolveOwnsModel
|
|
138
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-PHOF65IG.js";
|
|
139
137
|
import {
|
|
140
138
|
stripAnsi
|
|
141
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-TWPJO254.js";
|
|
140
|
+
import {
|
|
141
|
+
sanitizeForOsc,
|
|
142
|
+
supportsHyperlinks,
|
|
143
|
+
wrapForMultiplexer
|
|
144
|
+
} from "./chunk-EPDRMGT4.js";
|
|
142
145
|
import {
|
|
143
146
|
MAIN_SOURCE,
|
|
144
147
|
formatVisionBridgeNoticeDisplay,
|
|
145
148
|
getMCPServerStatus,
|
|
146
149
|
isVisionBridgeNoticeDisplay,
|
|
147
150
|
uiTelemetryService
|
|
148
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-CIKQ7KKO.js";
|
|
149
152
|
import {
|
|
150
153
|
ToolDisplayNames,
|
|
151
154
|
ToolNames,
|
|
152
155
|
ToolNamesMigration
|
|
153
|
-
} from "./chunk-
|
|
156
|
+
} from "./chunk-PR75REBZ.js";
|
|
154
157
|
import {
|
|
155
158
|
createDebugLogger,
|
|
156
159
|
escapePath,
|
|
157
160
|
unescapePath
|
|
158
|
-
} from "./chunk-
|
|
161
|
+
} from "./chunk-NL7LTRLR.js";
|
|
159
162
|
import {
|
|
160
163
|
init_esbuild_shims
|
|
161
164
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -366,7 +369,7 @@ var require_supports_hyperlinks = __commonJS({
|
|
|
366
369
|
init_esbuild_shims();
|
|
367
370
|
var supportsColor = require_supports_color();
|
|
368
371
|
var hasFlag = require_has_flag();
|
|
369
|
-
function
|
|
372
|
+
function parseVersion(versionString) {
|
|
370
373
|
if (/^\d{3,4}$/.test(versionString)) {
|
|
371
374
|
const m = /(\d{1,2})(\d{2})/.exec(versionString);
|
|
372
375
|
return {
|
|
@@ -382,7 +385,7 @@ var require_supports_hyperlinks = __commonJS({
|
|
|
382
385
|
patch: versions[2]
|
|
383
386
|
};
|
|
384
387
|
}
|
|
385
|
-
__name(
|
|
388
|
+
__name(parseVersion, "parseVersion");
|
|
386
389
|
function supportsHyperlink(stream) {
|
|
387
390
|
const { env } = process;
|
|
388
391
|
if ("FORCE_HYPERLINK" in env) {
|
|
@@ -413,7 +416,7 @@ var require_supports_hyperlinks = __commonJS({
|
|
|
413
416
|
return false;
|
|
414
417
|
}
|
|
415
418
|
if ("TERM_PROGRAM" in env) {
|
|
416
|
-
const version =
|
|
419
|
+
const version = parseVersion(env.TERM_PROGRAM_VERSION);
|
|
417
420
|
switch (env.TERM_PROGRAM) {
|
|
418
421
|
case "iTerm.app":
|
|
419
422
|
if (version.major === 3) {
|
|
@@ -430,7 +433,7 @@ var require_supports_hyperlinks = __commonJS({
|
|
|
430
433
|
if (env.VTE_VERSION === "0.50.0") {
|
|
431
434
|
return false;
|
|
432
435
|
}
|
|
433
|
-
const version =
|
|
436
|
+
const version = parseVersion(env.VTE_VERSION);
|
|
434
437
|
return version.major > 0 || version.minor >= 50;
|
|
435
438
|
}
|
|
436
439
|
return false;
|
|
@@ -2646,14 +2649,15 @@ __name(useTerminalSize, "useTerminalSize");
|
|
|
2646
2649
|
|
|
2647
2650
|
// packages/cli/src/ui/components/SessionPreview.tsx
|
|
2648
2651
|
init_esbuild_shims();
|
|
2649
|
-
var
|
|
2652
|
+
var import_react42 = __toESM(require_react(), 1);
|
|
2650
2653
|
|
|
2651
2654
|
// packages/cli/src/ui/components/HistoryItemDisplay.tsx
|
|
2652
2655
|
init_esbuild_shims();
|
|
2653
|
-
var
|
|
2656
|
+
var import_react41 = __toESM(require_react(), 1);
|
|
2654
2657
|
|
|
2655
2658
|
// packages/cli/src/ui/components/messages/ConversationMessages.tsx
|
|
2656
2659
|
init_esbuild_shims();
|
|
2660
|
+
var import_react13 = __toESM(require_react(), 1);
|
|
2657
2661
|
|
|
2658
2662
|
// packages/cli/src/ui/utils/MarkdownDisplay.tsx
|
|
2659
2663
|
init_esbuild_shims();
|
|
@@ -2827,7 +2831,7 @@ function colorizeCode(code, language, availableHeight, maxWidth, options = {}) {
|
|
|
2827
2831
|
lowlight
|
|
2828
2832
|
);
|
|
2829
2833
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { children: [
|
|
2830
|
-
showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: activeTheme.colors.Gray, children: `${String(
|
|
2834
|
+
showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: activeTheme.colors.Gray, selectable: false, children: `${String(
|
|
2831
2835
|
index + firstLineNumber + hiddenLinesCount
|
|
2832
2836
|
).padStart(padWidth, " ")} ` }),
|
|
2833
2837
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: activeTheme.defaultColor, wrap: "wrap", children: contentToRender })
|
|
@@ -2849,7 +2853,7 @@ function colorizeCode(code, language, availableHeight, maxWidth, options = {}) {
|
|
|
2849
2853
|
maxWidth,
|
|
2850
2854
|
overflowDirection: "top",
|
|
2851
2855
|
children: lines.map((line, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Box_default, { children: [
|
|
2852
|
-
showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: activeTheme.defaultColor, children: `${String(index + firstLineNumber).padStart(padWidth, " ")} ` }),
|
|
2856
|
+
showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: activeTheme.defaultColor, selectable: false, children: `${String(index + firstLineNumber).padStart(padWidth, " ")} ` }),
|
|
2853
2857
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { color: activeTheme.colors.Gray, children: line })
|
|
2854
2858
|
] }, index))
|
|
2855
2859
|
}
|
|
@@ -3250,20 +3254,6 @@ __name(renderInlineLatex, "renderInlineLatex");
|
|
|
3250
3254
|
|
|
3251
3255
|
// packages/cli/src/ui/utils/osc8.ts
|
|
3252
3256
|
init_esbuild_shims();
|
|
3253
|
-
function sanitizeForOsc(s) {
|
|
3254
|
-
return s.replace(
|
|
3255
|
-
// eslint-disable-next-line no-control-regex
|
|
3256
|
-
/[\x00-\x1f\x7f\x80-\x9f\u200e\u200f\u202a-\u202e\u2066-\u2069\u2028\u2029]/g,
|
|
3257
|
-
""
|
|
3258
|
-
);
|
|
3259
|
-
}
|
|
3260
|
-
__name(sanitizeForOsc, "sanitizeForOsc");
|
|
3261
|
-
function osc8Hyperlink(url, label = url) {
|
|
3262
|
-
const safeUrl = sanitizeForOsc(url);
|
|
3263
|
-
const safeLabel = sanitizeForOsc(label);
|
|
3264
|
-
return wrapForMultiplexer(`\x1B]8;;${safeUrl}\x07${safeLabel}\x1B]8;;\x07`);
|
|
3265
|
-
}
|
|
3266
|
-
__name(osc8Hyperlink, "osc8Hyperlink");
|
|
3267
3257
|
function osc8Open(url) {
|
|
3268
3258
|
return wrapForMultiplexer(`\x1B]8;;${sanitizeForOsc(url)}\x07`);
|
|
3269
3259
|
}
|
|
@@ -3287,93 +3277,6 @@ function isSafeOscScheme(url) {
|
|
|
3287
3277
|
return SAFE_OSC8_SCHEMES.has(match[1].toLowerCase());
|
|
3288
3278
|
}
|
|
3289
3279
|
__name(isSafeOscScheme, "isSafeOscScheme");
|
|
3290
|
-
function shouldForceHyperlinks(value) {
|
|
3291
|
-
if (value.length === 0) return true;
|
|
3292
|
-
const trimmed = value.trim();
|
|
3293
|
-
if (!/^[+-]?\d+$/.test(trimmed)) return false;
|
|
3294
|
-
return Number(trimmed) !== 0;
|
|
3295
|
-
}
|
|
3296
|
-
__name(shouldForceHyperlinks, "shouldForceHyperlinks");
|
|
3297
|
-
function parseVersion(versionString) {
|
|
3298
|
-
if (!versionString) return { major: 0, minor: 0, patch: 0 };
|
|
3299
|
-
if (/^\d{3,4}$/.test(versionString)) {
|
|
3300
|
-
const m = /(\d{1,2})(\d{2})/.exec(versionString);
|
|
3301
|
-
return { major: 0, minor: parseInt(m[1], 10), patch: parseInt(m[2], 10) };
|
|
3302
|
-
}
|
|
3303
|
-
const parts = versionString.split(".").map((n) => parseInt(n, 10) || 0);
|
|
3304
|
-
return { major: parts[0] ?? 0, minor: parts[1] ?? 0, patch: parts[2] ?? 0 };
|
|
3305
|
-
}
|
|
3306
|
-
__name(parseVersion, "parseVersion");
|
|
3307
|
-
function supportsHyperlinks(stream = process.stdout) {
|
|
3308
|
-
const env = process.env;
|
|
3309
|
-
if (env["QWEN_DISABLE_HYPERLINKS"] === "1") return false;
|
|
3310
|
-
if (env["NO_COLOR"] !== void 0 && env["NO_COLOR"] !== "") return false;
|
|
3311
|
-
if (env["FORCE_COLOR"] === "0" || env["FORCE_COLOR"] === "false") {
|
|
3312
|
-
return false;
|
|
3313
|
-
}
|
|
3314
|
-
if (!stream || !stream.isTTY) return false;
|
|
3315
|
-
const force = env["FORCE_HYPERLINK"];
|
|
3316
|
-
if (force !== void 0) {
|
|
3317
|
-
return shouldForceHyperlinks(force);
|
|
3318
|
-
}
|
|
3319
|
-
if (env["CI"]) return false;
|
|
3320
|
-
if (env["TEAMCITY_VERSION"]) return false;
|
|
3321
|
-
if (env["TMUX"] || env["STY"]) return false;
|
|
3322
|
-
if (env["WT_SESSION"]) return true;
|
|
3323
|
-
if (env["KITTY_WINDOW_ID"] || env["TERM"] === "xterm-kitty") return true;
|
|
3324
|
-
if (env["DOMTERM"]) return true;
|
|
3325
|
-
if (env["GHOSTTY_RESOURCES_DIR"] || env["TERM"] === "xterm-ghostty") {
|
|
3326
|
-
return true;
|
|
3327
|
-
}
|
|
3328
|
-
if (env["KONSOLE_VERSION"]) {
|
|
3329
|
-
const konsoleVersion = parseInt(env["KONSOLE_VERSION"], 10);
|
|
3330
|
-
if (Number.isFinite(konsoleVersion) && konsoleVersion >= 210400) {
|
|
3331
|
-
return true;
|
|
3332
|
-
}
|
|
3333
|
-
}
|
|
3334
|
-
if (env["TERM"] === "alacritty" || env["ALACRITTY_LOG"] !== void 0 || env["ALACRITTY_WINDOW_ID"] !== void 0 || env["ALACRITTY_SOCKET"] !== void 0) {
|
|
3335
|
-
return true;
|
|
3336
|
-
}
|
|
3337
|
-
if (env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm") return true;
|
|
3338
|
-
if (env["TERM_PROGRAM"]) {
|
|
3339
|
-
const version = parseVersion(env["TERM_PROGRAM_VERSION"]);
|
|
3340
|
-
switch (env["TERM_PROGRAM"]) {
|
|
3341
|
-
case "iTerm.app":
|
|
3342
|
-
if (version.major === 3) return version.minor >= 1;
|
|
3343
|
-
return version.major > 3;
|
|
3344
|
-
case "WezTerm":
|
|
3345
|
-
return version.major >= 20200620;
|
|
3346
|
-
case "vscode":
|
|
3347
|
-
return version.major > 1 || version.major === 1 && version.minor >= 72;
|
|
3348
|
-
case "ghostty":
|
|
3349
|
-
return true;
|
|
3350
|
-
case "mintty":
|
|
3351
|
-
if (!env["TERM_PROGRAM_VERSION"]) return false;
|
|
3352
|
-
return version.major > 3 || version.major === 3 && version.minor >= 3;
|
|
3353
|
-
// Warp (TERM_PROGRAM=WarpTerminal) does NOT yet support OSC 8 — its
|
|
3354
|
-
// rendering engine ignores the envelope and prints visible garbage,
|
|
3355
|
-
// so we deliberately fall through to the legacy `label (url)` path.
|
|
3356
|
-
// Re-enable when Warp ships OSC 8 support.
|
|
3357
|
-
//
|
|
3358
|
-
// Hyper exposes OSC 8 in recent versions but plugin chains have a
|
|
3359
|
-
// history of breaking escape passthrough — gate on FORCE_HYPERLINK
|
|
3360
|
-
// so users who know their setup works can opt in explicitly.
|
|
3361
|
-
default:
|
|
3362
|
-
break;
|
|
3363
|
-
}
|
|
3364
|
-
}
|
|
3365
|
-
if (env["VTE_VERSION"]) {
|
|
3366
|
-
const version = parseVersion(env["VTE_VERSION"]);
|
|
3367
|
-
if (version.major === 0 && version.minor === 50 && version.patch === 0) {
|
|
3368
|
-
return false;
|
|
3369
|
-
}
|
|
3370
|
-
if (version.major > 0 || version.minor >= 50) return true;
|
|
3371
|
-
return false;
|
|
3372
|
-
}
|
|
3373
|
-
if (process.platform === "win32") return false;
|
|
3374
|
-
return false;
|
|
3375
|
-
}
|
|
3376
|
-
__name(supportsHyperlinks, "supportsHyperlinks");
|
|
3377
3280
|
function trimTrailingUrlPunctuation(url) {
|
|
3378
3281
|
let openParen = 0;
|
|
3379
3282
|
let openBracket = 0;
|
|
@@ -7092,8 +6995,8 @@ var RenderListItemInternal = /* @__PURE__ */ __name(({
|
|
|
7092
6995
|
const isTaskItem = taskMatch !== null && renderVisualBlocks;
|
|
7093
6996
|
const isTaskChecked = taskMatch?.[1]?.toLowerCase() === "x";
|
|
7094
6997
|
const effectiveItemText = isTaskItem ? taskMatch[2] : itemText;
|
|
7095
|
-
const prefix = isTaskItem ? `${isTaskChecked ? "\u2713" :
|
|
7096
|
-
const prefixWidth = prefix
|
|
6998
|
+
const prefix = isTaskItem ? `${isTaskChecked ? "\u2713" : ICON.CIRCLE_EMPTY} ` : type === "ol" ? `${marker}. ` : `${marker} `;
|
|
6999
|
+
const prefixWidth = stringWidth(prefix);
|
|
7097
7000
|
const indentation = leadingWhitespace.length;
|
|
7098
7001
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
7099
7002
|
Box_default,
|
|
@@ -7155,11 +7058,23 @@ function getArenaStatusLabel(status) {
|
|
|
7155
7058
|
case "failed" /* FAILED */:
|
|
7156
7059
|
return { icon: "\u2717", text: "Failed", color: theme.status.error };
|
|
7157
7060
|
case "running" /* RUNNING */:
|
|
7158
|
-
return {
|
|
7061
|
+
return {
|
|
7062
|
+
icon: ICON.CIRCLE_EMPTY,
|
|
7063
|
+
text: "Running",
|
|
7064
|
+
color: theme.text.secondary
|
|
7065
|
+
};
|
|
7159
7066
|
case "initializing" /* INITIALIZING */:
|
|
7160
|
-
return {
|
|
7067
|
+
return {
|
|
7068
|
+
icon: ICON.CIRCLE_EMPTY,
|
|
7069
|
+
text: "Initializing",
|
|
7070
|
+
color: theme.text.secondary
|
|
7071
|
+
};
|
|
7161
7072
|
default:
|
|
7162
|
-
return {
|
|
7073
|
+
return {
|
|
7074
|
+
icon: ICON.CIRCLE_EMPTY,
|
|
7075
|
+
text: status,
|
|
7076
|
+
color: theme.text.secondary
|
|
7077
|
+
};
|
|
7163
7078
|
}
|
|
7164
7079
|
}
|
|
7165
7080
|
__name(getArenaStatusLabel, "getArenaStatusLabel");
|
|
@@ -7192,8 +7107,8 @@ __name(formatDuration2, "formatDuration");
|
|
|
7192
7107
|
|
|
7193
7108
|
// packages/cli/src/ui/components/messages/ConversationMessages.tsx
|
|
7194
7109
|
var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
7195
|
-
var THINKING_ICON =
|
|
7196
|
-
var THINKING_ICON_PENDING =
|
|
7110
|
+
var THINKING_ICON = `${ICON.THEREFORE} `;
|
|
7111
|
+
var THINKING_ICON_PENDING = `${ICON.BECAUSE} `;
|
|
7197
7112
|
var toggleKeyHint = process.platform === "darwin" ? "option+t" : "alt+t";
|
|
7198
7113
|
function getPrefixWidth(prefix) {
|
|
7199
7114
|
return stringWidth(prefix) + 1;
|
|
@@ -7217,7 +7132,7 @@ var PrefixedTextMessage = /* @__PURE__ */ __name(({
|
|
|
7217
7132
|
marginTop,
|
|
7218
7133
|
alignSelf,
|
|
7219
7134
|
children: [
|
|
7220
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { width: prefixWidth, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: prefixColor, "aria-label": ariaLabel, children: prefix }) }),
|
|
7135
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { width: prefixWidth, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: prefixColor, "aria-label": ariaLabel, children: prefix }) }),
|
|
7221
7136
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { wrap: "wrap", color: textColor, children: text }) })
|
|
7222
7137
|
]
|
|
7223
7138
|
}
|
|
@@ -7236,7 +7151,7 @@ var PrefixedMarkdownMessage = /* @__PURE__ */ __name(({
|
|
|
7236
7151
|
}) => {
|
|
7237
7152
|
const prefixWidth = getPrefixWidth(prefix);
|
|
7238
7153
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
7239
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { width: prefixWidth, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: prefixColor, "aria-label": ariaLabel, children: prefix }) }),
|
|
7154
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { width: prefixWidth, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: prefixColor, "aria-label": ariaLabel, children: prefix }) }),
|
|
7240
7155
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { flexGrow: 1, flexDirection: "column", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
7241
7156
|
MarkdownDisplay,
|
|
7242
7157
|
{
|
|
@@ -7310,7 +7225,7 @@ var AssistantMessage = /* @__PURE__ */ __name(({
|
|
|
7310
7225
|
PrefixedMarkdownMessage,
|
|
7311
7226
|
{
|
|
7312
7227
|
text,
|
|
7313
|
-
prefix:
|
|
7228
|
+
prefix: ICON.DIAMOND,
|
|
7314
7229
|
prefixColor: theme.text.accent,
|
|
7315
7230
|
ariaLabel: SCREEN_READER_MODEL_PREFIX,
|
|
7316
7231
|
isPending,
|
|
@@ -7332,7 +7247,7 @@ var AssistantMessageContent = /* @__PURE__ */ __name(({
|
|
|
7332
7247
|
isPending,
|
|
7333
7248
|
availableTerminalHeight,
|
|
7334
7249
|
contentWidth,
|
|
7335
|
-
basePrefix:
|
|
7250
|
+
basePrefix: ICON.DIAMOND,
|
|
7336
7251
|
sourceCopyIndexOffsets
|
|
7337
7252
|
}
|
|
7338
7253
|
), "AssistantMessageContent");
|
|
@@ -7348,21 +7263,25 @@ function tailVisualLines(text, width, maxLines) {
|
|
|
7348
7263
|
}
|
|
7349
7264
|
}
|
|
7350
7265
|
const lines = wrapToVisualLines(text.slice(sliceStart), width);
|
|
7351
|
-
return lines.slice(-maxLines)
|
|
7266
|
+
return lines.slice(-maxLines);
|
|
7352
7267
|
}
|
|
7353
7268
|
__name(tailVisualLines, "tailVisualLines");
|
|
7354
7269
|
var ThinkBody = /* @__PURE__ */ __name(({ text, isPending, expanded, availableTerminalHeight, contentWidth }) => {
|
|
7270
|
+
const maxSeenLinesRef = (0, import_react13.useRef)(0);
|
|
7271
|
+
const prevTextLenRef = (0, import_react13.useRef)(0);
|
|
7272
|
+
if (!isPending || text.length < prevTextLenRef.current) {
|
|
7273
|
+
maxSeenLinesRef.current = 0;
|
|
7274
|
+
}
|
|
7275
|
+
prevTextLenRef.current = text.length;
|
|
7355
7276
|
if (!isPending && !expanded) return null;
|
|
7356
7277
|
if (isPending && !expanded) {
|
|
7357
7278
|
const innerWidth = Math.max(contentWidth - 2, 20);
|
|
7358
|
-
const maxLines =
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
) : MAX_STREAMING_THINKING_VISUAL_LINES;
|
|
7365
|
-
const display = tailVisualLines(text, innerWidth, maxLines);
|
|
7279
|
+
const maxLines = MAX_STREAMING_THINKING_VISUAL_LINES;
|
|
7280
|
+
const lines = tailVisualLines(text, innerWidth, maxLines);
|
|
7281
|
+
const target = Math.max(lines.length, maxSeenLinesRef.current);
|
|
7282
|
+
maxSeenLinesRef.current = target;
|
|
7283
|
+
const padded = lines.length < target ? [...new Array(target - lines.length).fill(""), ...lines] : lines;
|
|
7284
|
+
const display = padded.join("\n");
|
|
7366
7285
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { paddingLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { dimColor: true, wrap: "truncate", children: display }) });
|
|
7367
7286
|
}
|
|
7368
7287
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { paddingLeft: 2, flexDirection: "column", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
@@ -7436,11 +7355,11 @@ var ThinkMessageContent = /* @__PURE__ */ __name(({
|
|
|
7436
7355
|
|
|
7437
7356
|
// packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
|
|
7438
7357
|
init_esbuild_shims();
|
|
7439
|
-
var
|
|
7358
|
+
var import_react27 = __toESM(require_react(), 1);
|
|
7440
7359
|
|
|
7441
7360
|
// packages/cli/src/ui/components/messages/ToolMessage.tsx
|
|
7442
7361
|
init_esbuild_shims();
|
|
7443
|
-
var
|
|
7362
|
+
var import_react25 = __toESM(require_react(), 1);
|
|
7444
7363
|
|
|
7445
7364
|
// packages/cli/src/ui/components/messages/DiffRenderer.tsx
|
|
7446
7365
|
init_esbuild_shims();
|
|
@@ -7648,6 +7567,7 @@ var renderDiffContent = /* @__PURE__ */ __name((parsedLines, filename, tabWidth
|
|
|
7648
7567
|
showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
7649
7568
|
Text,
|
|
7650
7569
|
{
|
|
7570
|
+
selectable: false,
|
|
7651
7571
|
color: theme.text.secondary,
|
|
7652
7572
|
backgroundColor: line.type === "add" ? theme.background.diff.added : line.type === "del" ? theme.background.diff.removed : void 0,
|
|
7653
7573
|
children: [
|
|
@@ -7814,9 +7734,9 @@ var Colors = {
|
|
|
7814
7734
|
// packages/cli/src/ui/components/TodoDisplay.tsx
|
|
7815
7735
|
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
7816
7736
|
var STATUS_ICONS = {
|
|
7817
|
-
pending:
|
|
7818
|
-
in_progress:
|
|
7819
|
-
completed:
|
|
7737
|
+
pending: ICON.CIRCLE_EMPTY,
|
|
7738
|
+
in_progress: ICON.CIRCLE_LEFT_HALF,
|
|
7739
|
+
completed: ICON.CIRCLE_FILLED
|
|
7820
7740
|
};
|
|
7821
7741
|
var TodoDisplay = /* @__PURE__ */ __name(({ todos }) => {
|
|
7822
7742
|
if (!todos || todos.length === 0) {
|
|
@@ -7837,7 +7757,7 @@ var TodoItemRow = /* @__PURE__ */ __name(({ todo }) => {
|
|
|
7837
7757
|
|
|
7838
7758
|
// packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
|
|
7839
7759
|
init_esbuild_shims();
|
|
7840
|
-
var
|
|
7760
|
+
var import_react23 = __toESM(require_react(), 1);
|
|
7841
7761
|
import { promises as fs3 } from "node:fs";
|
|
7842
7762
|
import * as os3 from "node:os";
|
|
7843
7763
|
import * as path2 from "node:path";
|
|
@@ -7847,11 +7767,11 @@ init_esbuild_shims();
|
|
|
7847
7767
|
|
|
7848
7768
|
// packages/cli/src/ui/components/shared/BaseSelectionList.tsx
|
|
7849
7769
|
init_esbuild_shims();
|
|
7850
|
-
var
|
|
7770
|
+
var import_react17 = __toESM(require_react(), 1);
|
|
7851
7771
|
|
|
7852
7772
|
// packages/cli/src/ui/hooks/useSelectionList.ts
|
|
7853
7773
|
init_esbuild_shims();
|
|
7854
|
-
var
|
|
7774
|
+
var import_react14 = __toESM(require_react(), 1);
|
|
7855
7775
|
|
|
7856
7776
|
// packages/cli/src/ui/keyMatchers.ts
|
|
7857
7777
|
init_esbuild_shims();
|
|
@@ -7877,6 +7797,8 @@ var Command = /* @__PURE__ */ ((Command2) => {
|
|
|
7877
7797
|
Command2["ACCEPT_SUGGESTION"] = "acceptSuggestion";
|
|
7878
7798
|
Command2["COMPLETION_UP"] = "completionUp";
|
|
7879
7799
|
Command2["COMPLETION_DOWN"] = "completionDown";
|
|
7800
|
+
Command2["COMPLETION_TAB_LEFT"] = "completionTabLeft";
|
|
7801
|
+
Command2["COMPLETION_TAB_RIGHT"] = "completionTabRight";
|
|
7880
7802
|
Command2["SUBMIT"] = "submit";
|
|
7881
7803
|
Command2["QUEUE_MESSAGE"] = "queueMessage";
|
|
7882
7804
|
Command2["NEWLINE"] = "newline";
|
|
@@ -7964,6 +7886,17 @@ var defaultKeyBindings = {
|
|
|
7964
7886
|
{ key: "down", shift: false },
|
|
7965
7887
|
{ key: "n", ctrl: true }
|
|
7966
7888
|
],
|
|
7889
|
+
// Completion category tab switching (for the tabbed @ completion UI).
|
|
7890
|
+
// Bound to Ctrl+arrows rather than plain arrows so the bare arrow keys keep
|
|
7891
|
+
// moving the caret in the editable input buffer (plain arrows only switch
|
|
7892
|
+
// tabs in modal dialogs, which have no text buffer). Alt/Option+arrows still
|
|
7893
|
+
// perform word movement.
|
|
7894
|
+
["completionTabLeft" /* COMPLETION_TAB_LEFT */]: [
|
|
7895
|
+
{ key: "left", shift: false, ctrl: true, command: false }
|
|
7896
|
+
],
|
|
7897
|
+
["completionTabRight" /* COMPLETION_TAB_RIGHT */]: [
|
|
7898
|
+
{ key: "right", shift: false, ctrl: true, command: false }
|
|
7899
|
+
],
|
|
7967
7900
|
// Text input
|
|
7968
7901
|
// Must also exclude shift to allow shift+enter for newline
|
|
7969
7902
|
["submit" /* SUBMIT */]: [
|
|
@@ -8203,19 +8136,19 @@ function useSelectionList({
|
|
|
8203
8136
|
showNumbers = false,
|
|
8204
8137
|
disableVimNav = false
|
|
8205
8138
|
}) {
|
|
8206
|
-
const [state, dispatch] = (0,
|
|
8139
|
+
const [state, dispatch] = (0, import_react14.useReducer)(selectionListReducer, {
|
|
8207
8140
|
activeIndex: computeInitialIndex(initialIndex, items),
|
|
8208
8141
|
initialIndex,
|
|
8209
8142
|
pendingHighlight: false,
|
|
8210
8143
|
pendingSelect: false,
|
|
8211
8144
|
items
|
|
8212
8145
|
});
|
|
8213
|
-
const numberInputRef = (0,
|
|
8214
|
-
const numberInputTimer = (0,
|
|
8215
|
-
(0,
|
|
8146
|
+
const numberInputRef = (0, import_react14.useRef)("");
|
|
8147
|
+
const numberInputTimer = (0, import_react14.useRef)(null);
|
|
8148
|
+
(0, import_react14.useEffect)(() => {
|
|
8216
8149
|
dispatch({ type: "INITIALIZE", payload: { initialIndex, items } });
|
|
8217
8150
|
}, [initialIndex, items]);
|
|
8218
|
-
(0,
|
|
8151
|
+
(0, import_react14.useEffect)(() => {
|
|
8219
8152
|
let needsClear = false;
|
|
8220
8153
|
if (state.pendingHighlight && items[state.activeIndex]) {
|
|
8221
8154
|
onHighlight?.(items[state.activeIndex].value);
|
|
@@ -8239,7 +8172,7 @@ function useSelectionList({
|
|
|
8239
8172
|
onHighlight,
|
|
8240
8173
|
onSelect
|
|
8241
8174
|
]);
|
|
8242
|
-
(0,
|
|
8175
|
+
(0, import_react14.useEffect)(
|
|
8243
8176
|
() => () => {
|
|
8244
8177
|
if (numberInputTimer.current) {
|
|
8245
8178
|
clearTimeout(numberInputTimer.current);
|
|
@@ -8335,11 +8268,11 @@ __name(useSelectionList, "useSelectionList");
|
|
|
8335
8268
|
|
|
8336
8269
|
// packages/cli/src/ui/components/shared/RowMouseController.tsx
|
|
8337
8270
|
init_esbuild_shims();
|
|
8338
|
-
var
|
|
8271
|
+
var import_react16 = __toESM(require_react(), 1);
|
|
8339
8272
|
|
|
8340
8273
|
// packages/cli/src/ui/hooks/useMouseEvents.ts
|
|
8341
8274
|
init_esbuild_shims();
|
|
8342
|
-
var
|
|
8275
|
+
var import_react15 = __toESM(require_react(), 1);
|
|
8343
8276
|
var mouseModeRefs = /* @__PURE__ */ new Map();
|
|
8344
8277
|
function effectiveTracking(entry) {
|
|
8345
8278
|
if (entry.any > 0) return "any";
|
|
@@ -8391,23 +8324,23 @@ function useMouseEvents(handler, { isActive, tracking = "button", bypassVpGate =
|
|
|
8391
8324
|
const { isRawModeSupported } = use_stdin_default();
|
|
8392
8325
|
const { stdout } = use_stdout_default();
|
|
8393
8326
|
const { subscribeMouse, unsubscribeMouse } = useKeypressContext();
|
|
8394
|
-
const settings = (0,
|
|
8327
|
+
const settings = (0, import_react15.useContext)(SettingsContext);
|
|
8395
8328
|
const isVpMode = settings?.merged.ui?.useTerminalBuffer ?? false;
|
|
8396
8329
|
const vpGateOpen = isVpMode || bypassVpGate;
|
|
8397
|
-
const handlerRef = (0,
|
|
8330
|
+
const handlerRef = (0, import_react15.useRef)(handler);
|
|
8398
8331
|
handlerRef.current = handler;
|
|
8399
8332
|
const enabled = isActive && isRawModeSupported && vpGateOpen && Boolean(stdout.isTTY);
|
|
8400
|
-
(0,
|
|
8333
|
+
(0, import_react15.useEffect)(() => {
|
|
8401
8334
|
if (!enabled) return;
|
|
8402
8335
|
acquireMouseMode(stdout, tracking);
|
|
8403
8336
|
return () => {
|
|
8404
8337
|
releaseMouseMode(stdout, tracking);
|
|
8405
8338
|
};
|
|
8406
8339
|
}, [enabled, stdout, tracking]);
|
|
8407
|
-
const mouseCallback = (0,
|
|
8340
|
+
const mouseCallback = (0, import_react15.useCallback)((event) => {
|
|
8408
8341
|
handlerRef.current(event);
|
|
8409
8342
|
}, []);
|
|
8410
|
-
(0,
|
|
8343
|
+
(0, import_react15.useEffect)(() => {
|
|
8411
8344
|
if (!enabled) return;
|
|
8412
8345
|
subscribeMouse(mouseCallback);
|
|
8413
8346
|
return () => unsubscribeMouse(mouseCallback);
|
|
@@ -8488,7 +8421,7 @@ function RowMouseController({
|
|
|
8488
8421
|
onSelectIndex
|
|
8489
8422
|
}) {
|
|
8490
8423
|
const { rows: terminalHeight } = useTerminalSize();
|
|
8491
|
-
const resolveIndex = (0,
|
|
8424
|
+
const resolveIndex = (0, import_react16.useCallback)(
|
|
8492
8425
|
(event) => {
|
|
8493
8426
|
const container = containerRef.current;
|
|
8494
8427
|
if (!container) return null;
|
|
@@ -8515,7 +8448,7 @@ function RowMouseController({
|
|
|
8515
8448
|
},
|
|
8516
8449
|
[containerRef, itemRefs, scrollOffset, terminalHeight]
|
|
8517
8450
|
);
|
|
8518
|
-
const handleMouse = (0,
|
|
8451
|
+
const handleMouse = (0, import_react16.useCallback)(
|
|
8519
8452
|
(event) => {
|
|
8520
8453
|
if (event.name !== "move" && event.name !== "left-press") return;
|
|
8521
8454
|
const index = resolveIndex(event);
|
|
@@ -8562,10 +8495,10 @@ function BaseSelectionList({
|
|
|
8562
8495
|
isFocused,
|
|
8563
8496
|
showNumbers
|
|
8564
8497
|
});
|
|
8565
|
-
const [scrollOffset, setScrollOffset] = (0,
|
|
8498
|
+
const [scrollOffset, setScrollOffset] = (0, import_react17.useState)(
|
|
8566
8499
|
() => getScrollOffsetForIndex(activeIndex, items.length, maxItemsToShow)
|
|
8567
8500
|
);
|
|
8568
|
-
(0,
|
|
8501
|
+
(0, import_react17.useEffect)(() => {
|
|
8569
8502
|
const newScrollOffset = getScrollOffsetForIndex(
|
|
8570
8503
|
activeIndex,
|
|
8571
8504
|
items.length,
|
|
@@ -8577,10 +8510,10 @@ function BaseSelectionList({
|
|
|
8577
8510
|
setScrollOffset(newScrollOffset);
|
|
8578
8511
|
}
|
|
8579
8512
|
}, [activeIndex, items.length, scrollOffset, maxItemsToShow]);
|
|
8580
|
-
const settings = (0,
|
|
8513
|
+
const settings = (0, import_react17.useContext)(SettingsContext);
|
|
8581
8514
|
const mouseEnabled = !!settings?.merged.ui?.useTerminalBuffer;
|
|
8582
|
-
const containerRef = (0,
|
|
8583
|
-
const itemRefs = (0,
|
|
8515
|
+
const containerRef = (0, import_react17.useRef)(null);
|
|
8516
|
+
const itemRefs = (0, import_react17.useRef)([]);
|
|
8584
8517
|
const visibleItems = items.slice(scrollOffset, scrollOffset + maxItemsToShow);
|
|
8585
8518
|
const numberColumnWidth = String(items.length).length;
|
|
8586
8519
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Box_default, { ref: containerRef, flexDirection: "column", gap: itemGap, children: [
|
|
@@ -8710,7 +8643,7 @@ __name(RadioButtonSelect, "RadioButtonSelect");
|
|
|
8710
8643
|
|
|
8711
8644
|
// packages/cli/src/ui/hooks/useLaunchEditor.ts
|
|
8712
8645
|
init_esbuild_shims();
|
|
8713
|
-
var
|
|
8646
|
+
var import_react18 = __toESM(require_react(), 1);
|
|
8714
8647
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
8715
8648
|
function getEditorCommand(preferredEditor) {
|
|
8716
8649
|
if (preferredEditor) {
|
|
@@ -8736,7 +8669,7 @@ __name(getEditorCommand, "getEditorCommand");
|
|
|
8736
8669
|
function useLaunchEditor() {
|
|
8737
8670
|
const settings = useSettings();
|
|
8738
8671
|
const { stdin, setRawMode } = use_stdin_default();
|
|
8739
|
-
const launchEditor = (0,
|
|
8672
|
+
const launchEditor = (0, import_react18.useCallback)(
|
|
8740
8673
|
async (filePath) => {
|
|
8741
8674
|
const preferredEditor = settings.merged.general?.preferredEditor;
|
|
8742
8675
|
const editor = getEditorCommand(preferredEditor);
|
|
@@ -8773,14 +8706,14 @@ __name(useLaunchEditor, "useLaunchEditor");
|
|
|
8773
8706
|
|
|
8774
8707
|
// packages/cli/src/ui/components/messages/AskUserQuestionDialog.tsx
|
|
8775
8708
|
init_esbuild_shims();
|
|
8776
|
-
var
|
|
8709
|
+
var import_react22 = __toESM(require_react(), 1);
|
|
8777
8710
|
|
|
8778
8711
|
// packages/cli/src/ui/components/shared/TextInput.tsx
|
|
8779
8712
|
init_esbuild_shims();
|
|
8780
8713
|
|
|
8781
8714
|
// packages/cli/src/ui/components/shared/text-buffer.ts
|
|
8782
8715
|
init_esbuild_shims();
|
|
8783
|
-
var
|
|
8716
|
+
var import_react19 = __toESM(require_react(), 1);
|
|
8784
8717
|
import { spawnSync as spawnSync3 } from "node:child_process";
|
|
8785
8718
|
import fs2 from "node:fs";
|
|
8786
8719
|
import os2 from "node:os";
|
|
@@ -10838,7 +10771,7 @@ function useTextBuffer({
|
|
|
10838
10771
|
shellModeActive = false,
|
|
10839
10772
|
preferredEditor
|
|
10840
10773
|
}) {
|
|
10841
|
-
const initialState = (0,
|
|
10774
|
+
const initialState = (0, import_react19.useMemo)(() => {
|
|
10842
10775
|
const lines2 = initialText.split("\n");
|
|
10843
10776
|
const [initialCursorRow, initialCursorCol] = calculateInitialCursorPosition(
|
|
10844
10777
|
lines2.length === 0 ? [""] : lines2,
|
|
@@ -10862,9 +10795,9 @@ function useTextBuffer({
|
|
|
10862
10795
|
visualLayout: visualLayout2
|
|
10863
10796
|
};
|
|
10864
10797
|
}, [initialText, initialCursorOffset, viewport.width, viewport.height]);
|
|
10865
|
-
const stateRef = (0,
|
|
10866
|
-
const [state, setState] = (0,
|
|
10867
|
-
const dispatch = (0,
|
|
10798
|
+
const stateRef = (0, import_react19.useRef)(initialState);
|
|
10799
|
+
const [state, setState] = (0, import_react19.useState)(initialState);
|
|
10800
|
+
const dispatch = (0, import_react19.useCallback)((action) => {
|
|
10868
10801
|
stateRef.current = textBufferReducer(stateRef.current, action);
|
|
10869
10802
|
setState(stateRef.current);
|
|
10870
10803
|
}, []);
|
|
@@ -10876,25 +10809,25 @@ function useTextBuffer({
|
|
|
10876
10809
|
selectionAnchor,
|
|
10877
10810
|
visualLayout
|
|
10878
10811
|
} = state;
|
|
10879
|
-
const text = (0,
|
|
10880
|
-
const visualCursor = (0,
|
|
10812
|
+
const text = (0, import_react19.useMemo)(() => lines.join("\n"), [lines]);
|
|
10813
|
+
const visualCursor = (0, import_react19.useMemo)(
|
|
10881
10814
|
() => calculateVisualCursorFromLayout(visualLayout, [cursorRow, cursorCol]),
|
|
10882
10815
|
[visualLayout, cursorRow, cursorCol]
|
|
10883
10816
|
);
|
|
10884
10817
|
const { visualLines, visualToLogicalMap } = visualLayout;
|
|
10885
|
-
const [visualScrollRow, setVisualScrollRow] = (0,
|
|
10886
|
-
(0,
|
|
10818
|
+
const [visualScrollRow, setVisualScrollRow] = (0, import_react19.useState)(0);
|
|
10819
|
+
(0, import_react19.useEffect)(() => {
|
|
10887
10820
|
if (onChange) {
|
|
10888
10821
|
onChange(text);
|
|
10889
10822
|
}
|
|
10890
10823
|
}, [text, onChange]);
|
|
10891
|
-
(0,
|
|
10824
|
+
(0, import_react19.useEffect)(() => {
|
|
10892
10825
|
dispatch({
|
|
10893
10826
|
type: "set_viewport",
|
|
10894
10827
|
payload: { width: viewport.width, height: viewport.height }
|
|
10895
10828
|
});
|
|
10896
10829
|
}, [dispatch, viewport.width, viewport.height]);
|
|
10897
|
-
(0,
|
|
10830
|
+
(0, import_react19.useEffect)(() => {
|
|
10898
10831
|
const { height } = viewport;
|
|
10899
10832
|
const totalVisualLines = visualLines.length;
|
|
10900
10833
|
const maxScrollStart = Math.max(0, totalVisualLines - height);
|
|
@@ -10909,7 +10842,7 @@ function useTextBuffer({
|
|
|
10909
10842
|
setVisualScrollRow(newVisualScrollRow);
|
|
10910
10843
|
}
|
|
10911
10844
|
}, [visualCursor, visualScrollRow, viewport, visualLines.length]);
|
|
10912
|
-
const insert = (0,
|
|
10845
|
+
const insert = (0, import_react19.useCallback)(
|
|
10913
10846
|
(ch, { paste = false } = {}) => {
|
|
10914
10847
|
if (paste && /[\n\r]/.test(ch) && !shellModeActive) {
|
|
10915
10848
|
const validPaths = tryExtractFilePaths(ch, isValidPath);
|
|
@@ -10948,202 +10881,202 @@ function useTextBuffer({
|
|
|
10948
10881
|
},
|
|
10949
10882
|
[dispatch, isValidPath, shellModeActive]
|
|
10950
10883
|
);
|
|
10951
|
-
const newline = (0,
|
|
10884
|
+
const newline = (0, import_react19.useCallback)(() => {
|
|
10952
10885
|
dispatch({ type: "insert", payload: "\n" });
|
|
10953
10886
|
}, [dispatch]);
|
|
10954
|
-
const backspace = (0,
|
|
10887
|
+
const backspace = (0, import_react19.useCallback)(() => {
|
|
10955
10888
|
dispatch({ type: "backspace" });
|
|
10956
10889
|
}, [dispatch]);
|
|
10957
|
-
const del = (0,
|
|
10890
|
+
const del = (0, import_react19.useCallback)(() => {
|
|
10958
10891
|
dispatch({ type: "delete" });
|
|
10959
10892
|
}, [dispatch]);
|
|
10960
|
-
const move = (0,
|
|
10893
|
+
const move = (0, import_react19.useCallback)(
|
|
10961
10894
|
(dir) => {
|
|
10962
10895
|
dispatch({ type: "move", payload: { dir } });
|
|
10963
10896
|
},
|
|
10964
10897
|
[dispatch]
|
|
10965
10898
|
);
|
|
10966
|
-
const undo = (0,
|
|
10899
|
+
const undo = (0, import_react19.useCallback)(() => {
|
|
10967
10900
|
dispatch({ type: "undo" });
|
|
10968
10901
|
}, [dispatch]);
|
|
10969
|
-
const redo = (0,
|
|
10902
|
+
const redo = (0, import_react19.useCallback)(() => {
|
|
10970
10903
|
dispatch({ type: "redo" });
|
|
10971
10904
|
}, [dispatch]);
|
|
10972
|
-
const setText = (0,
|
|
10905
|
+
const setText = (0, import_react19.useCallback)(
|
|
10973
10906
|
(newText) => {
|
|
10974
10907
|
dispatch({ type: "set_text", payload: newText });
|
|
10975
10908
|
},
|
|
10976
10909
|
[dispatch]
|
|
10977
10910
|
);
|
|
10978
|
-
const deleteWordLeft = (0,
|
|
10911
|
+
const deleteWordLeft = (0, import_react19.useCallback)(() => {
|
|
10979
10912
|
dispatch({ type: "delete_word_left" });
|
|
10980
10913
|
}, [dispatch]);
|
|
10981
|
-
const deleteWordRight = (0,
|
|
10914
|
+
const deleteWordRight = (0, import_react19.useCallback)(() => {
|
|
10982
10915
|
dispatch({ type: "delete_word_right" });
|
|
10983
10916
|
}, [dispatch]);
|
|
10984
|
-
const killLineRight = (0,
|
|
10917
|
+
const killLineRight = (0, import_react19.useCallback)(() => {
|
|
10985
10918
|
dispatch({ type: "kill_line_right" });
|
|
10986
10919
|
}, [dispatch]);
|
|
10987
|
-
const killLineLeft = (0,
|
|
10920
|
+
const killLineLeft = (0, import_react19.useCallback)(() => {
|
|
10988
10921
|
dispatch({ type: "kill_line_left" });
|
|
10989
10922
|
}, [dispatch]);
|
|
10990
|
-
const vimDeleteWordForward = (0,
|
|
10923
|
+
const vimDeleteWordForward = (0, import_react19.useCallback)(
|
|
10991
10924
|
(count) => {
|
|
10992
10925
|
dispatch({ type: "vim_delete_word_forward", payload: { count } });
|
|
10993
10926
|
},
|
|
10994
10927
|
[dispatch]
|
|
10995
10928
|
);
|
|
10996
|
-
const vimDeleteWordBackward = (0,
|
|
10929
|
+
const vimDeleteWordBackward = (0, import_react19.useCallback)(
|
|
10997
10930
|
(count) => {
|
|
10998
10931
|
dispatch({ type: "vim_delete_word_backward", payload: { count } });
|
|
10999
10932
|
},
|
|
11000
10933
|
[dispatch]
|
|
11001
10934
|
);
|
|
11002
|
-
const vimDeleteWordEnd = (0,
|
|
10935
|
+
const vimDeleteWordEnd = (0, import_react19.useCallback)(
|
|
11003
10936
|
(count) => {
|
|
11004
10937
|
dispatch({ type: "vim_delete_word_end", payload: { count } });
|
|
11005
10938
|
},
|
|
11006
10939
|
[dispatch]
|
|
11007
10940
|
);
|
|
11008
|
-
const vimChangeWordForward = (0,
|
|
10941
|
+
const vimChangeWordForward = (0, import_react19.useCallback)(
|
|
11009
10942
|
(count) => {
|
|
11010
10943
|
dispatch({ type: "vim_change_word_forward", payload: { count } });
|
|
11011
10944
|
},
|
|
11012
10945
|
[dispatch]
|
|
11013
10946
|
);
|
|
11014
|
-
const vimChangeWordBackward = (0,
|
|
10947
|
+
const vimChangeWordBackward = (0, import_react19.useCallback)(
|
|
11015
10948
|
(count) => {
|
|
11016
10949
|
dispatch({ type: "vim_change_word_backward", payload: { count } });
|
|
11017
10950
|
},
|
|
11018
10951
|
[dispatch]
|
|
11019
10952
|
);
|
|
11020
|
-
const vimChangeWordEnd = (0,
|
|
10953
|
+
const vimChangeWordEnd = (0, import_react19.useCallback)(
|
|
11021
10954
|
(count) => {
|
|
11022
10955
|
dispatch({ type: "vim_change_word_end", payload: { count } });
|
|
11023
10956
|
},
|
|
11024
10957
|
[dispatch]
|
|
11025
10958
|
);
|
|
11026
|
-
const vimDeleteLine = (0,
|
|
10959
|
+
const vimDeleteLine = (0, import_react19.useCallback)(
|
|
11027
10960
|
(count) => {
|
|
11028
10961
|
dispatch({ type: "vim_delete_line", payload: { count } });
|
|
11029
10962
|
},
|
|
11030
10963
|
[dispatch]
|
|
11031
10964
|
);
|
|
11032
|
-
const vimChangeLine = (0,
|
|
10965
|
+
const vimChangeLine = (0, import_react19.useCallback)(
|
|
11033
10966
|
(count) => {
|
|
11034
10967
|
dispatch({ type: "vim_change_line", payload: { count } });
|
|
11035
10968
|
},
|
|
11036
10969
|
[dispatch]
|
|
11037
10970
|
);
|
|
11038
|
-
const vimDeleteToEndOfLine = (0,
|
|
10971
|
+
const vimDeleteToEndOfLine = (0, import_react19.useCallback)(() => {
|
|
11039
10972
|
dispatch({ type: "vim_delete_to_end_of_line" });
|
|
11040
10973
|
}, [dispatch]);
|
|
11041
|
-
const vimChangeToEndOfLine = (0,
|
|
10974
|
+
const vimChangeToEndOfLine = (0, import_react19.useCallback)(() => {
|
|
11042
10975
|
dispatch({ type: "vim_change_to_end_of_line" });
|
|
11043
10976
|
}, [dispatch]);
|
|
11044
|
-
const vimChangeMovement = (0,
|
|
10977
|
+
const vimChangeMovement = (0, import_react19.useCallback)(
|
|
11045
10978
|
(movement, count) => {
|
|
11046
10979
|
dispatch({ type: "vim_change_movement", payload: { movement, count } });
|
|
11047
10980
|
},
|
|
11048
10981
|
[dispatch]
|
|
11049
10982
|
);
|
|
11050
|
-
const vimDeleteMovement = (0,
|
|
10983
|
+
const vimDeleteMovement = (0, import_react19.useCallback)(
|
|
11051
10984
|
(movement, count) => {
|
|
11052
10985
|
dispatch({ type: "vim_delete_movement", payload: { movement, count } });
|
|
11053
10986
|
},
|
|
11054
10987
|
[dispatch]
|
|
11055
10988
|
);
|
|
11056
|
-
const vimMoveLeft = (0,
|
|
10989
|
+
const vimMoveLeft = (0, import_react19.useCallback)(
|
|
11057
10990
|
(count) => {
|
|
11058
10991
|
dispatch({ type: "vim_move_left", payload: { count } });
|
|
11059
10992
|
},
|
|
11060
10993
|
[dispatch]
|
|
11061
10994
|
);
|
|
11062
|
-
const vimMoveRight = (0,
|
|
10995
|
+
const vimMoveRight = (0, import_react19.useCallback)(
|
|
11063
10996
|
(count) => {
|
|
11064
10997
|
dispatch({ type: "vim_move_right", payload: { count } });
|
|
11065
10998
|
},
|
|
11066
10999
|
[dispatch]
|
|
11067
11000
|
);
|
|
11068
|
-
const vimMoveUp = (0,
|
|
11001
|
+
const vimMoveUp = (0, import_react19.useCallback)(
|
|
11069
11002
|
(count) => {
|
|
11070
11003
|
dispatch({ type: "vim_move_up", payload: { count } });
|
|
11071
11004
|
},
|
|
11072
11005
|
[dispatch]
|
|
11073
11006
|
);
|
|
11074
|
-
const vimMoveDown = (0,
|
|
11007
|
+
const vimMoveDown = (0, import_react19.useCallback)(
|
|
11075
11008
|
(count) => {
|
|
11076
11009
|
dispatch({ type: "vim_move_down", payload: { count } });
|
|
11077
11010
|
},
|
|
11078
11011
|
[dispatch]
|
|
11079
11012
|
);
|
|
11080
|
-
const vimMoveWordForward = (0,
|
|
11013
|
+
const vimMoveWordForward = (0, import_react19.useCallback)(
|
|
11081
11014
|
(count) => {
|
|
11082
11015
|
dispatch({ type: "vim_move_word_forward", payload: { count } });
|
|
11083
11016
|
},
|
|
11084
11017
|
[dispatch]
|
|
11085
11018
|
);
|
|
11086
|
-
const vimMoveWordBackward = (0,
|
|
11019
|
+
const vimMoveWordBackward = (0, import_react19.useCallback)(
|
|
11087
11020
|
(count) => {
|
|
11088
11021
|
dispatch({ type: "vim_move_word_backward", payload: { count } });
|
|
11089
11022
|
},
|
|
11090
11023
|
[dispatch]
|
|
11091
11024
|
);
|
|
11092
|
-
const vimMoveWordEnd = (0,
|
|
11025
|
+
const vimMoveWordEnd = (0, import_react19.useCallback)(
|
|
11093
11026
|
(count) => {
|
|
11094
11027
|
dispatch({ type: "vim_move_word_end", payload: { count } });
|
|
11095
11028
|
},
|
|
11096
11029
|
[dispatch]
|
|
11097
11030
|
);
|
|
11098
|
-
const vimDeleteChar = (0,
|
|
11031
|
+
const vimDeleteChar = (0, import_react19.useCallback)(
|
|
11099
11032
|
(count) => {
|
|
11100
11033
|
dispatch({ type: "vim_delete_char", payload: { count } });
|
|
11101
11034
|
},
|
|
11102
11035
|
[dispatch]
|
|
11103
11036
|
);
|
|
11104
|
-
const vimInsertAtCursor = (0,
|
|
11037
|
+
const vimInsertAtCursor = (0, import_react19.useCallback)(() => {
|
|
11105
11038
|
dispatch({ type: "vim_insert_at_cursor" });
|
|
11106
11039
|
}, [dispatch]);
|
|
11107
|
-
const vimAppendAtCursor = (0,
|
|
11040
|
+
const vimAppendAtCursor = (0, import_react19.useCallback)(() => {
|
|
11108
11041
|
dispatch({ type: "vim_append_at_cursor" });
|
|
11109
11042
|
}, [dispatch]);
|
|
11110
|
-
const vimOpenLineBelow = (0,
|
|
11043
|
+
const vimOpenLineBelow = (0, import_react19.useCallback)(() => {
|
|
11111
11044
|
dispatch({ type: "vim_open_line_below" });
|
|
11112
11045
|
}, [dispatch]);
|
|
11113
|
-
const vimOpenLineAbove = (0,
|
|
11046
|
+
const vimOpenLineAbove = (0, import_react19.useCallback)(() => {
|
|
11114
11047
|
dispatch({ type: "vim_open_line_above" });
|
|
11115
11048
|
}, [dispatch]);
|
|
11116
|
-
const vimAppendAtLineEnd = (0,
|
|
11049
|
+
const vimAppendAtLineEnd = (0, import_react19.useCallback)(() => {
|
|
11117
11050
|
dispatch({ type: "vim_append_at_line_end" });
|
|
11118
11051
|
}, [dispatch]);
|
|
11119
|
-
const vimInsertAtLineStart = (0,
|
|
11052
|
+
const vimInsertAtLineStart = (0, import_react19.useCallback)(() => {
|
|
11120
11053
|
dispatch({ type: "vim_insert_at_line_start" });
|
|
11121
11054
|
}, [dispatch]);
|
|
11122
|
-
const vimMoveToLineStart = (0,
|
|
11055
|
+
const vimMoveToLineStart = (0, import_react19.useCallback)(() => {
|
|
11123
11056
|
dispatch({ type: "vim_move_to_line_start" });
|
|
11124
11057
|
}, [dispatch]);
|
|
11125
|
-
const vimMoveToLineEnd = (0,
|
|
11058
|
+
const vimMoveToLineEnd = (0, import_react19.useCallback)(() => {
|
|
11126
11059
|
dispatch({ type: "vim_move_to_line_end" });
|
|
11127
11060
|
}, [dispatch]);
|
|
11128
|
-
const vimMoveToFirstNonWhitespace = (0,
|
|
11061
|
+
const vimMoveToFirstNonWhitespace = (0, import_react19.useCallback)(() => {
|
|
11129
11062
|
dispatch({ type: "vim_move_to_first_nonwhitespace" });
|
|
11130
11063
|
}, [dispatch]);
|
|
11131
|
-
const vimMoveToFirstLine = (0,
|
|
11064
|
+
const vimMoveToFirstLine = (0, import_react19.useCallback)(() => {
|
|
11132
11065
|
dispatch({ type: "vim_move_to_first_line" });
|
|
11133
11066
|
}, [dispatch]);
|
|
11134
|
-
const vimMoveToLastLine = (0,
|
|
11067
|
+
const vimMoveToLastLine = (0, import_react19.useCallback)(() => {
|
|
11135
11068
|
dispatch({ type: "vim_move_to_last_line" });
|
|
11136
11069
|
}, [dispatch]);
|
|
11137
|
-
const vimMoveToLine = (0,
|
|
11070
|
+
const vimMoveToLine = (0, import_react19.useCallback)(
|
|
11138
11071
|
(lineNumber) => {
|
|
11139
11072
|
dispatch({ type: "vim_move_to_line", payload: { lineNumber } });
|
|
11140
11073
|
},
|
|
11141
11074
|
[dispatch]
|
|
11142
11075
|
);
|
|
11143
|
-
const vimEscapeInsertMode = (0,
|
|
11076
|
+
const vimEscapeInsertMode = (0, import_react19.useCallback)(() => {
|
|
11144
11077
|
dispatch({ type: "vim_escape_insert_mode" });
|
|
11145
11078
|
}, [dispatch]);
|
|
11146
|
-
const openInExternalEditor = (0,
|
|
11079
|
+
const openInExternalEditor = (0, import_react19.useCallback)(
|
|
11147
11080
|
async (opts = {}) => {
|
|
11148
11081
|
let tmpDir;
|
|
11149
11082
|
let filePath;
|
|
@@ -11261,7 +11194,7 @@ function useTextBuffer({
|
|
|
11261
11194
|
},
|
|
11262
11195
|
[dispatch, stdin, setRawMode, preferredEditor]
|
|
11263
11196
|
);
|
|
11264
|
-
const handleInput = (0,
|
|
11197
|
+
const handleInput = (0, import_react19.useCallback)(
|
|
11265
11198
|
(key) => {
|
|
11266
11199
|
const { sequence: input } = key;
|
|
11267
11200
|
if (key.paste) {
|
|
@@ -11312,11 +11245,11 @@ function useTextBuffer({
|
|
|
11312
11245
|
redo
|
|
11313
11246
|
]
|
|
11314
11247
|
);
|
|
11315
|
-
const renderedVisualLines = (0,
|
|
11248
|
+
const renderedVisualLines = (0, import_react19.useMemo)(
|
|
11316
11249
|
() => visualLines.slice(visualScrollRow, visualScrollRow + viewport.height),
|
|
11317
11250
|
[visualLines, visualScrollRow, viewport.height]
|
|
11318
11251
|
);
|
|
11319
|
-
const replaceRange = (0,
|
|
11252
|
+
const replaceRange = (0, import_react19.useCallback)(
|
|
11320
11253
|
(startRow, startCol, endRow, endCol, text2) => {
|
|
11321
11254
|
dispatch({
|
|
11322
11255
|
type: "replace_range",
|
|
@@ -11325,7 +11258,7 @@ function useTextBuffer({
|
|
|
11325
11258
|
},
|
|
11326
11259
|
[dispatch]
|
|
11327
11260
|
);
|
|
11328
|
-
const replaceRangeByOffset = (0,
|
|
11261
|
+
const replaceRangeByOffset = (0, import_react19.useCallback)(
|
|
11329
11262
|
(startOffset, endOffset, replacementText) => {
|
|
11330
11263
|
const currentText = stateRef.current.lines.join("\n");
|
|
11331
11264
|
const [startRow, startCol] = offsetToLogicalPos(currentText, startOffset);
|
|
@@ -11334,13 +11267,13 @@ function useTextBuffer({
|
|
|
11334
11267
|
},
|
|
11335
11268
|
[replaceRange]
|
|
11336
11269
|
);
|
|
11337
|
-
const moveToOffset = (0,
|
|
11270
|
+
const moveToOffset = (0, import_react19.useCallback)(
|
|
11338
11271
|
(offset) => {
|
|
11339
11272
|
dispatch({ type: "move_to_offset", payload: { offset } });
|
|
11340
11273
|
},
|
|
11341
11274
|
[dispatch]
|
|
11342
11275
|
);
|
|
11343
|
-
const returnValue = (0,
|
|
11276
|
+
const returnValue = (0, import_react19.useMemo)(
|
|
11344
11277
|
() => ({
|
|
11345
11278
|
get lines() {
|
|
11346
11279
|
return stateRef.current.lines;
|
|
@@ -11476,11 +11409,11 @@ __name(useTextBuffer, "useTextBuffer");
|
|
|
11476
11409
|
|
|
11477
11410
|
// packages/cli/src/ui/hooks/usePreferredEditor.ts
|
|
11478
11411
|
init_esbuild_shims();
|
|
11479
|
-
var
|
|
11412
|
+
var import_react20 = __toESM(require_react(), 1);
|
|
11480
11413
|
var debugLogger5 = createDebugLogger("PREFERRED_EDITOR");
|
|
11481
11414
|
function usePreferredEditor() {
|
|
11482
11415
|
const settings = useSettings();
|
|
11483
|
-
return (0,
|
|
11416
|
+
return (0, import_react20.useMemo)(() => {
|
|
11484
11417
|
const raw = settings.merged.general?.preferredEditor ?? "";
|
|
11485
11418
|
if (raw && !isValidEditorType(raw)) {
|
|
11486
11419
|
debugLogger5.warn(
|
|
@@ -11500,7 +11433,7 @@ function usePreferredEditor() {
|
|
|
11500
11433
|
__name(usePreferredEditor, "usePreferredEditor");
|
|
11501
11434
|
|
|
11502
11435
|
// packages/cli/src/ui/components/shared/TextInput.tsx
|
|
11503
|
-
var
|
|
11436
|
+
var import_react21 = __toESM(require_react(), 1);
|
|
11504
11437
|
|
|
11505
11438
|
// packages/cli/src/ui/utils/software-cursor.ts
|
|
11506
11439
|
init_esbuild_shims();
|
|
@@ -11598,12 +11531,12 @@ function TextInput({
|
|
|
11598
11531
|
ellipsizeOverflow = false
|
|
11599
11532
|
}) {
|
|
11600
11533
|
const allowMultiline = height > 1;
|
|
11601
|
-
const [cursorVisible, setCursorVisible] = (0,
|
|
11602
|
-
const onChangeRef = (0,
|
|
11603
|
-
(0,
|
|
11534
|
+
const [cursorVisible, setCursorVisible] = (0, import_react21.useState)(isActive);
|
|
11535
|
+
const onChangeRef = (0, import_react21.useRef)(onChange);
|
|
11536
|
+
(0, import_react21.useEffect)(() => {
|
|
11604
11537
|
onChangeRef.current = onChange;
|
|
11605
11538
|
}, [onChange]);
|
|
11606
|
-
const stableOnChange = (0,
|
|
11539
|
+
const stableOnChange = (0, import_react21.useCallback)((text) => {
|
|
11607
11540
|
onChangeRef.current?.(text);
|
|
11608
11541
|
}, []);
|
|
11609
11542
|
const preferredEditor = usePreferredEditor();
|
|
@@ -11618,7 +11551,7 @@ function TextInput({
|
|
|
11618
11551
|
onChange: stableOnChange,
|
|
11619
11552
|
preferredEditor
|
|
11620
11553
|
});
|
|
11621
|
-
(0,
|
|
11554
|
+
(0, import_react21.useEffect)(() => {
|
|
11622
11555
|
if (!isActive) {
|
|
11623
11556
|
setCursorVisible(false);
|
|
11624
11557
|
return;
|
|
@@ -11751,13 +11684,13 @@ var AskUserQuestionDialog = /* @__PURE__ */ __name(({
|
|
|
11751
11684
|
availableWidth,
|
|
11752
11685
|
onConfirm
|
|
11753
11686
|
}) => {
|
|
11754
|
-
const [currentQuestionIndex, setCurrentQuestionIndex] = (0,
|
|
11755
|
-
const [selectedOptions, setSelectedOptions] = (0,
|
|
11756
|
-
const [customInputValues, setCustomInputValues] = (0,
|
|
11757
|
-
const customInputValuesRef = (0,
|
|
11758
|
-
const [selectedIndex, setSelectedIndex] = (0,
|
|
11759
|
-
const [multiSelectedOptions, setMultiSelectedOptions] = (0,
|
|
11760
|
-
const [customInputChecked, setCustomInputChecked] = (0,
|
|
11687
|
+
const [currentQuestionIndex, setCurrentQuestionIndex] = (0, import_react22.useState)(0);
|
|
11688
|
+
const [selectedOptions, setSelectedOptions] = (0, import_react22.useState)({});
|
|
11689
|
+
const [customInputValues, setCustomInputValues] = (0, import_react22.useState)({});
|
|
11690
|
+
const customInputValuesRef = (0, import_react22.useRef)({});
|
|
11691
|
+
const [selectedIndex, setSelectedIndex] = (0, import_react22.useState)(0);
|
|
11692
|
+
const [multiSelectedOptions, setMultiSelectedOptions] = (0, import_react22.useState)({});
|
|
11693
|
+
const [customInputChecked, setCustomInputChecked] = (0, import_react22.useState)({});
|
|
11761
11694
|
const hasMultipleQuestions = confirmationDetails.questions.length > 1;
|
|
11762
11695
|
const totalTabs = hasMultipleQuestions ? confirmationDetails.questions.length + 1 : confirmationDetails.questions.length;
|
|
11763
11696
|
const isSubmitTab = hasMultipleQuestions && currentQuestionIndex === totalTabs - 1;
|
|
@@ -12151,9 +12084,9 @@ var ToolConfirmationMessage = /* @__PURE__ */ __name(({
|
|
|
12151
12084
|
const autoModeFallback = confirmationDetails.autoModeFallback;
|
|
12152
12085
|
const settings = useSettings();
|
|
12153
12086
|
const preferredEditor = settings.merged.general?.preferredEditor;
|
|
12154
|
-
const [ideClient, setIdeClient] = (0,
|
|
12155
|
-
const [isDiffingEnabled, setIsDiffingEnabled] = (0,
|
|
12156
|
-
(0,
|
|
12087
|
+
const [ideClient, setIdeClient] = (0, import_react23.useState)(null);
|
|
12088
|
+
const [isDiffingEnabled, setIsDiffingEnabled] = (0, import_react23.useState)(false);
|
|
12089
|
+
(0, import_react23.useEffect)(() => {
|
|
12157
12090
|
let isMounted = true;
|
|
12158
12091
|
if (config.getIdeMode()) {
|
|
12159
12092
|
const getIdeClient = /* @__PURE__ */ __name(async () => {
|
|
@@ -12183,7 +12116,7 @@ var ToolConfirmationMessage = /* @__PURE__ */ __name(({
|
|
|
12183
12116
|
}, "handleConfirm");
|
|
12184
12117
|
const isTrustedFolder = config.isTrustedFolder();
|
|
12185
12118
|
const launchEditor = useLaunchEditor();
|
|
12186
|
-
const [planViewError, setPlanViewError] = (0,
|
|
12119
|
+
const [planViewError, setPlanViewError] = (0, import_react23.useState)(null);
|
|
12187
12120
|
const openFullPlanInEditor = /* @__PURE__ */ __name(() => {
|
|
12188
12121
|
if (confirmationDetails.type !== "plan") return;
|
|
12189
12122
|
setPlanViewError(null);
|
|
@@ -12671,7 +12604,7 @@ var PlanSummaryDisplay = /* @__PURE__ */ __name(({
|
|
|
12671
12604
|
|
|
12672
12605
|
// packages/cli/src/ui/components/ShellInputPrompt.tsx
|
|
12673
12606
|
init_esbuild_shims();
|
|
12674
|
-
var
|
|
12607
|
+
var import_react24 = __toESM(require_react(), 1);
|
|
12675
12608
|
|
|
12676
12609
|
// packages/cli/src/ui/hooks/keyToAnsi.ts
|
|
12677
12610
|
init_esbuild_shims();
|
|
@@ -12734,7 +12667,7 @@ var ShellInputPrompt = /* @__PURE__ */ __name(({
|
|
|
12734
12667
|
activeShellPtyId,
|
|
12735
12668
|
focus = true
|
|
12736
12669
|
}) => {
|
|
12737
|
-
const handleShellInputSubmit = (0,
|
|
12670
|
+
const handleShellInputSubmit = (0, import_react24.useCallback)(
|
|
12738
12671
|
(input) => {
|
|
12739
12672
|
if (activeShellPtyId) {
|
|
12740
12673
|
ShellExecutionService.writeToPty(activeShellPtyId, input);
|
|
@@ -12742,7 +12675,7 @@ var ShellInputPrompt = /* @__PURE__ */ __name(({
|
|
|
12742
12675
|
},
|
|
12743
12676
|
[activeShellPtyId]
|
|
12744
12677
|
);
|
|
12745
|
-
const handleInput = (0,
|
|
12678
|
+
const handleInput = (0, import_react24.useCallback)(
|
|
12746
12679
|
(key) => {
|
|
12747
12680
|
if (!focus || !activeShellPtyId) {
|
|
12748
12681
|
return;
|
|
@@ -12801,42 +12734,43 @@ function sliceTextForMaxHeight(text, maxHeight, maxWidth) {
|
|
|
12801
12734
|
let visualLineCount = 0;
|
|
12802
12735
|
let currentLine = "";
|
|
12803
12736
|
let currentLineWidth = 0;
|
|
12804
|
-
const appendVisibleLine = /* @__PURE__ */ __name((line) => {
|
|
12737
|
+
const appendVisibleLine = /* @__PURE__ */ __name((line, breakAfter) => {
|
|
12805
12738
|
visualLineCount += 1;
|
|
12806
|
-
visibleLines.push(line);
|
|
12739
|
+
visibleLines.push({ text: line, breakAfter });
|
|
12807
12740
|
if (visibleLines.length > visibleContentHeight) {
|
|
12808
12741
|
visibleLines.shift();
|
|
12809
12742
|
}
|
|
12810
12743
|
}, "appendVisibleLine");
|
|
12811
|
-
const flushCurrentLine = /* @__PURE__ */ __name(() => {
|
|
12812
|
-
appendVisibleLine(currentLine);
|
|
12744
|
+
const flushCurrentLine = /* @__PURE__ */ __name((breakAfter) => {
|
|
12745
|
+
appendVisibleLine(currentLine, breakAfter);
|
|
12813
12746
|
currentLine = "";
|
|
12814
12747
|
currentLineWidth = 0;
|
|
12815
12748
|
}, "flushCurrentLine");
|
|
12816
12749
|
for (const char of toCodePoints(text)) {
|
|
12817
12750
|
if (char === "\n") {
|
|
12818
|
-
flushCurrentLine();
|
|
12751
|
+
flushCurrentLine({ kind: "hard", joiner: "\n" });
|
|
12819
12752
|
continue;
|
|
12820
12753
|
}
|
|
12821
12754
|
const charWidth = Math.max(getCachedStringWidth(char), 1);
|
|
12822
12755
|
if (currentLineWidth > 0 && currentLineWidth + charWidth > visualWidth) {
|
|
12823
|
-
flushCurrentLine();
|
|
12756
|
+
flushCurrentLine({ kind: "soft", joiner: "" });
|
|
12824
12757
|
}
|
|
12825
12758
|
currentLine += char;
|
|
12826
12759
|
currentLineWidth += charWidth;
|
|
12827
12760
|
}
|
|
12828
|
-
flushCurrentLine();
|
|
12761
|
+
flushCurrentLine(null);
|
|
12829
12762
|
if (visualLineCount <= targetMaxHeight) {
|
|
12830
12763
|
return { text, hiddenLinesCount: 0 };
|
|
12831
12764
|
}
|
|
12832
12765
|
const hiddenLinesCount = visualLineCount - visibleContentHeight;
|
|
12833
12766
|
return {
|
|
12834
|
-
text: visibleLines.join("\n"),
|
|
12835
|
-
hiddenLinesCount
|
|
12767
|
+
text: visibleLines.map((line) => line.text).join("\n"),
|
|
12768
|
+
hiddenLinesCount,
|
|
12769
|
+
sourceBoundaries: visibleLines.slice(0, -1).map((line) => line.breakAfter ?? { kind: "hard", joiner: "\n" })
|
|
12836
12770
|
};
|
|
12837
12771
|
}
|
|
12838
12772
|
__name(sliceTextForMaxHeight, "sliceTextForMaxHeight");
|
|
12839
|
-
var useResultDisplayRenderer = /* @__PURE__ */ __name((resultDisplay) =>
|
|
12773
|
+
var useResultDisplayRenderer = /* @__PURE__ */ __name((resultDisplay) => import_react25.default.useMemo(() => {
|
|
12840
12774
|
if (!resultDisplay) {
|
|
12841
12775
|
return { type: "none" };
|
|
12842
12776
|
}
|
|
@@ -12908,7 +12842,7 @@ var SubagentApprovalContext = /* @__PURE__ */ __name(({ data }) => {
|
|
|
12908
12842
|
const priorCalls = priorApprovalCalls(data);
|
|
12909
12843
|
if (priorCalls.length === 0) return null;
|
|
12910
12844
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box_default, { flexDirection: "column", children: priorCalls.map((call) => {
|
|
12911
|
-
const glyph = call.status === "failed" ? "\u2716" : call.status === "success" ? "\u2714" :
|
|
12845
|
+
const glyph = call.status === "failed" ? "\u2716" : call.status === "success" ? "\u2714" : ICON.CIRCLE_EMPTY;
|
|
12912
12846
|
const displayName = localizeToolDisplayName(
|
|
12913
12847
|
TOOL_DISPLAY_BY_NAME[call.name] ?? call.name
|
|
12914
12848
|
);
|
|
@@ -13032,6 +12966,7 @@ var StringResultRenderer = /* @__PURE__ */ __name(({ data, renderAsMarkdown, ava
|
|
|
13032
12966
|
maxHeight: availableHeight,
|
|
13033
12967
|
maxWidth: childWidth,
|
|
13034
12968
|
additionalHiddenLinesCount: sliced.hiddenLinesCount,
|
|
12969
|
+
sourceBoundaries: sliced.sourceBoundaries,
|
|
13035
12970
|
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Text, { wrap: "wrap", color: theme.text.primary, children: sliced.text }) })
|
|
13036
12971
|
}
|
|
13037
12972
|
);
|
|
@@ -13077,21 +13012,21 @@ var ToolMessage = /* @__PURE__ */ __name(({
|
|
|
13077
13012
|
}) => {
|
|
13078
13013
|
const settings = useSettings();
|
|
13079
13014
|
const isThisShellFocused = (name === SHELL_COMMAND_NAME || name === SHELL_NAME) && status === "Executing" /* Executing */ && ptyId === activeShellPtyId && embeddedShellFocused;
|
|
13080
|
-
const [lastUpdateTime, setLastUpdateTime] =
|
|
13081
|
-
const [userHasFocused, setUserHasFocused] =
|
|
13082
|
-
const [showFocusHint, setShowFocusHint] =
|
|
13083
|
-
|
|
13015
|
+
const [lastUpdateTime, setLastUpdateTime] = import_react25.default.useState(null);
|
|
13016
|
+
const [userHasFocused, setUserHasFocused] = import_react25.default.useState(false);
|
|
13017
|
+
const [showFocusHint, setShowFocusHint] = import_react25.default.useState(false);
|
|
13018
|
+
import_react25.default.useEffect(() => {
|
|
13084
13019
|
if (resultDisplay) {
|
|
13085
13020
|
setLastUpdateTime(/* @__PURE__ */ new Date());
|
|
13086
13021
|
}
|
|
13087
13022
|
}, [resultDisplay]);
|
|
13088
|
-
const shellTimeoutMs =
|
|
13023
|
+
const shellTimeoutMs = import_react25.default.useMemo(() => {
|
|
13089
13024
|
if (typeof resultDisplay === "object" && resultDisplay !== null && "ansiOutput" in resultDisplay) {
|
|
13090
13025
|
return resultDisplay.timeoutMs;
|
|
13091
13026
|
}
|
|
13092
13027
|
return void 0;
|
|
13093
13028
|
}, [resultDisplay]);
|
|
13094
|
-
|
|
13029
|
+
import_react25.default.useEffect(() => {
|
|
13095
13030
|
if (!lastUpdateTime) {
|
|
13096
13031
|
return;
|
|
13097
13032
|
}
|
|
@@ -13100,7 +13035,7 @@ var ToolMessage = /* @__PURE__ */ __name(({
|
|
|
13100
13035
|
}, 5e3);
|
|
13101
13036
|
return () => clearTimeout(timer);
|
|
13102
13037
|
}, [lastUpdateTime]);
|
|
13103
|
-
|
|
13038
|
+
import_react25.default.useEffect(() => {
|
|
13104
13039
|
if (isThisShellFocused) {
|
|
13105
13040
|
setUserHasFocused(true);
|
|
13106
13041
|
}
|
|
@@ -13123,7 +13058,7 @@ var ToolMessage = /* @__PURE__ */ __name(({
|
|
|
13123
13058
|
renderOutputAsMarkdown = false;
|
|
13124
13059
|
}
|
|
13125
13060
|
const usingDetailedDisplay = fullDetail && isCollapsibleTool(name) && typeof detailedDisplay === "string" && detailedDisplay.length > 0;
|
|
13126
|
-
const sanitizedDetailedDisplay =
|
|
13061
|
+
const sanitizedDetailedDisplay = import_react25.default.useMemo(
|
|
13127
13062
|
() => usingDetailedDisplay && typeof detailedDisplay === "string" ? sanitizeTerminalText(detailedDisplay) : detailedDisplay,
|
|
13128
13063
|
[detailedDisplay, usingDetailedDisplay]
|
|
13129
13064
|
);
|
|
@@ -13139,7 +13074,7 @@ var ToolMessage = /* @__PURE__ */ __name(({
|
|
|
13139
13074
|
effectiveResultDisplay
|
|
13140
13075
|
);
|
|
13141
13076
|
const shouldCollapseResult = !forceShowResult && status === "Success" /* Success */ && isCollapsibleTool(name) && (effectiveDisplayRenderer.type === "string" || effectiveDisplayRenderer.type === "ansi");
|
|
13142
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Box_default, {
|
|
13077
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Box_default, { paddingY: 0, flexDirection: "column", children: [
|
|
13143
13078
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Box_default, { minHeight: 1, children: [
|
|
13144
13079
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ToolStatusIndicator, { status, name }),
|
|
13145
13080
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -13242,7 +13177,7 @@ var ToolInfo = /* @__PURE__ */ __name(({
|
|
|
13242
13177
|
status,
|
|
13243
13178
|
emphasis
|
|
13244
13179
|
}) => {
|
|
13245
|
-
const nameColor =
|
|
13180
|
+
const nameColor = import_react25.default.useMemo(() => {
|
|
13246
13181
|
switch (emphasis) {
|
|
13247
13182
|
case "high":
|
|
13248
13183
|
return theme.text.primary;
|
|
@@ -13269,7 +13204,7 @@ var TrailingIndicator = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_
|
|
|
13269
13204
|
|
|
13270
13205
|
// packages/cli/src/ui/components/messages/InlineParallelAgentsDisplay.tsx
|
|
13271
13206
|
init_esbuild_shims();
|
|
13272
|
-
var
|
|
13207
|
+
var import_react26 = __toESM(require_react(), 1);
|
|
13273
13208
|
var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
|
|
13274
13209
|
function deriveAgentId(toolCall, resultDisplay) {
|
|
13275
13210
|
return `${resultDisplay.subagentName}-${toolCall.callId}`;
|
|
@@ -13293,7 +13228,7 @@ function statusGlyph(status) {
|
|
|
13293
13228
|
switch (status) {
|
|
13294
13229
|
case "running":
|
|
13295
13230
|
case "background":
|
|
13296
|
-
return { glyph:
|
|
13231
|
+
return { glyph: ICON.CIRCLE_EMPTY, color: theme.status.warning };
|
|
13297
13232
|
case "completed":
|
|
13298
13233
|
return { glyph: "\u2714", color: theme.status.success };
|
|
13299
13234
|
case "failed":
|
|
@@ -13330,8 +13265,8 @@ function truncateMiddle(input, max) {
|
|
|
13330
13265
|
}
|
|
13331
13266
|
__name(truncateMiddle, "truncateMiddle");
|
|
13332
13267
|
var InlineParallelAgentsDisplay = /* @__PURE__ */ __name(({ toolCalls, contentWidth, totalAgentCount, availableTerminalHeight }) => {
|
|
13333
|
-
const config = (0,
|
|
13334
|
-
const agentEntries = (0,
|
|
13268
|
+
const config = (0, import_react26.useContext)(ConfigContext);
|
|
13269
|
+
const agentEntries = (0, import_react26.useMemo)(() => {
|
|
13335
13270
|
const out = [];
|
|
13336
13271
|
for (const tc of toolCalls) {
|
|
13337
13272
|
if (isAgentResult(tc.resultDisplay)) {
|
|
@@ -13340,19 +13275,19 @@ var InlineParallelAgentsDisplay = /* @__PURE__ */ __name(({ toolCalls, contentWi
|
|
|
13340
13275
|
}
|
|
13341
13276
|
return out;
|
|
13342
13277
|
}, [toolCalls]);
|
|
13343
|
-
const [now, setNow] = (0,
|
|
13344
|
-
const hasLiveAgent = (0,
|
|
13278
|
+
const [now, setNow] = (0, import_react26.useState)(() => Date.now());
|
|
13279
|
+
const hasLiveAgent = (0, import_react26.useMemo)(
|
|
13345
13280
|
() => agentEntries.some(
|
|
13346
13281
|
(e) => e.result.status === "running" || e.result.status === "background"
|
|
13347
13282
|
),
|
|
13348
13283
|
[agentEntries]
|
|
13349
13284
|
);
|
|
13350
|
-
(0,
|
|
13285
|
+
(0, import_react26.useEffect)(() => {
|
|
13351
13286
|
if (!hasLiveAgent) return;
|
|
13352
13287
|
const id = setInterval(() => setNow(Date.now()), 1e3);
|
|
13353
13288
|
return () => clearInterval(id);
|
|
13354
13289
|
}, [hasLiveAgent]);
|
|
13355
|
-
const rows = (0,
|
|
13290
|
+
const rows = (0, import_react26.useMemo)(() => {
|
|
13356
13291
|
const registry = config?.getBackgroundTaskRegistry();
|
|
13357
13292
|
void now;
|
|
13358
13293
|
return agentEntries.map(({ toolCall, result }) => {
|
|
@@ -13472,27 +13407,27 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13472
13407
|
const isEmbeddedShellFocused = embeddedShellFocused && toolCalls.some(
|
|
13473
13408
|
(t2) => t2.ptyId === activeShellPtyId && t2.status === "Executing" /* Executing */
|
|
13474
13409
|
);
|
|
13475
|
-
const toolAwaitingApproval = (0,
|
|
13410
|
+
const toolAwaitingApproval = (0, import_react27.useMemo)(
|
|
13476
13411
|
() => toolCalls.find((tc) => tc.status === "Confirming" /* Confirming */),
|
|
13477
13412
|
[toolCalls]
|
|
13478
13413
|
);
|
|
13479
|
-
const isMemoryOnlyGroup = (0,
|
|
13414
|
+
const isMemoryOnlyGroup = (0, import_react27.useMemo)(
|
|
13480
13415
|
() => toolCalls.length > 0 && toolCalls.every((t2) => t2.isMemoryOp != null),
|
|
13481
13416
|
[toolCalls]
|
|
13482
13417
|
);
|
|
13483
|
-
const inlineToolCalls = (0,
|
|
13418
|
+
const inlineToolCalls = (0, import_react27.useMemo)(
|
|
13484
13419
|
() => isPending ? toolCalls.filter(
|
|
13485
13420
|
(tool) => !isPanelOwnedSubagentTool(tool) || isAgentWithPendingConfirmation(tool.resultDisplay)
|
|
13486
13421
|
) : toolCalls,
|
|
13487
13422
|
[isPending, toolCalls]
|
|
13488
13423
|
);
|
|
13489
|
-
const subagentsAwaitingApproval = (0,
|
|
13424
|
+
const subagentsAwaitingApproval = (0, import_react27.useMemo)(
|
|
13490
13425
|
() => toolCalls.filter(
|
|
13491
13426
|
(tc) => isAgentWithPendingConfirmation(tc.resultDisplay)
|
|
13492
13427
|
),
|
|
13493
13428
|
[toolCalls]
|
|
13494
13429
|
);
|
|
13495
|
-
const focusedSubagentRef = (0,
|
|
13430
|
+
const focusedSubagentRef = (0, import_react27.useRef)(null);
|
|
13496
13431
|
const stillPending = subagentsAwaitingApproval.some(
|
|
13497
13432
|
(tc) => tc.callId === focusedSubagentRef.current
|
|
13498
13433
|
);
|
|
@@ -13500,7 +13435,7 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13500
13435
|
focusedSubagentRef.current = subagentsAwaitingApproval[0]?.callId ?? null;
|
|
13501
13436
|
}
|
|
13502
13437
|
const focusedSubagentCallId = focusedSubagentRef.current;
|
|
13503
|
-
const runningSubagentCallId = (0,
|
|
13438
|
+
const runningSubagentCallId = (0, import_react27.useMemo)(
|
|
13504
13439
|
() => toolCalls.find((tc) => isRunningAgent(tc.resultDisplay))?.callId ?? null,
|
|
13505
13440
|
[toolCalls]
|
|
13506
13441
|
);
|
|
@@ -13529,14 +13464,14 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13529
13464
|
const writeCount = memoryWriteCount ?? 0;
|
|
13530
13465
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Box_default, { flexDirection: "column", width: contentWidth, children: [
|
|
13531
13466
|
readCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Box_default, { paddingLeft: 1, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Text, { dimColor: true, children: [
|
|
13532
|
-
"
|
|
13467
|
+
ICON.CIRCLE_FILLED + " ",
|
|
13533
13468
|
"Recalled ",
|
|
13534
13469
|
readCount,
|
|
13535
13470
|
" ",
|
|
13536
13471
|
readCount === 1 ? "memory" : "memories"
|
|
13537
13472
|
] }) }),
|
|
13538
13473
|
writeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Box_default, { paddingLeft: 1, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Text, { dimColor: true, children: [
|
|
13539
|
-
"
|
|
13474
|
+
ICON.CIRCLE_FILLED + " ",
|
|
13540
13475
|
"Wrote ",
|
|
13541
13476
|
writeCount,
|
|
13542
13477
|
" ",
|
|
@@ -13554,7 +13489,7 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13554
13489
|
);
|
|
13555
13490
|
const hasMemoryBadge = !isMemoryOnlyGroup && ((memoryWriteCount ?? 0) > 0 || (memoryReadCount ?? 0) > 0);
|
|
13556
13491
|
const memoryBadge = hasMemoryBadge ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Box_default, { paddingLeft: 1, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Text, { dimColor: true, children: [
|
|
13557
|
-
"
|
|
13492
|
+
ICON.CIRCLE_FILLED + " ",
|
|
13558
13493
|
[
|
|
13559
13494
|
(memoryReadCount ?? 0) > 0 && `Recalled ${memoryReadCount} ${memoryReadCount === 1 ? "memory" : "memories"}`,
|
|
13560
13495
|
(memoryWriteCount ?? 0) > 0 && `Wrote ${memoryWriteCount} ${memoryWriteCount === 1 ? "memory" : "memories"}`
|
|
@@ -13581,7 +13516,7 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13581
13516
|
/* marginBottom */
|
|
13582
13517
|
1 + collapsibleSummaryHeight + memoryBadgeHeight
|
|
13583
13518
|
);
|
|
13584
|
-
const
|
|
13519
|
+
const confirmationInnerWidth = contentWidth - 2;
|
|
13585
13520
|
let countToolCallsWithResults = 0;
|
|
13586
13521
|
for (const tool of nonCollapsibleTools) {
|
|
13587
13522
|
if (tool.resultDisplay !== void 0 && tool.resultDisplay !== "") {
|
|
@@ -13613,7 +13548,7 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13613
13548
|
{
|
|
13614
13549
|
...tool,
|
|
13615
13550
|
availableTerminalHeight: availableTerminalHeightPerToolMessage,
|
|
13616
|
-
contentWidth
|
|
13551
|
+
contentWidth,
|
|
13617
13552
|
emphasis: isConfirming ? "high" : toolAwaitingApproval ? "low" : "medium",
|
|
13618
13553
|
activeShellPtyId,
|
|
13619
13554
|
embeddedShellFocused,
|
|
@@ -13631,7 +13566,7 @@ var ToolGroupMessage = /* @__PURE__ */ __name(({
|
|
|
13631
13566
|
config,
|
|
13632
13567
|
isFocused,
|
|
13633
13568
|
availableTerminalHeight: availableTerminalHeightPerToolMessage,
|
|
13634
|
-
contentWidth:
|
|
13569
|
+
contentWidth: confirmationInnerWidth
|
|
13635
13570
|
}
|
|
13636
13571
|
)
|
|
13637
13572
|
] }, tool.callId);
|
|
@@ -13680,8 +13615,8 @@ function CompressionMessage({
|
|
|
13680
13615
|
}, "getCompressionText");
|
|
13681
13616
|
const text = getCompressionText();
|
|
13682
13617
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
13683
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box_default, {
|
|
13684
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
13618
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box_default, { width: 2, flexShrink: 0, children: isPending ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(build_default, { type: "dots" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color: theme.text.accent, children: ICON.DIAMOND }) }),
|
|
13619
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
13685
13620
|
Text,
|
|
13686
13621
|
{
|
|
13687
13622
|
color: compression.isPending ? theme.text.accent : theme.status.success,
|
|
@@ -13723,8 +13658,8 @@ var SummaryMessage = /* @__PURE__ */ __name(({ summary }) => {
|
|
|
13723
13658
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text, { color: Colors.AccentGreen, children: "\u2713" });
|
|
13724
13659
|
}, "getIcon");
|
|
13725
13660
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
13726
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Box_default, {
|
|
13727
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
13661
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Box_default, { width: 2, flexShrink: 0, children: getIcon() }),
|
|
13662
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
13728
13663
|
Text,
|
|
13729
13664
|
{
|
|
13730
13665
|
color: summary.isPending ? Colors.AccentPurple : Colors.AccentGreen,
|
|
@@ -13739,7 +13674,7 @@ init_esbuild_shims();
|
|
|
13739
13674
|
|
|
13740
13675
|
// node_modules/ink-link/dist/index.js
|
|
13741
13676
|
init_esbuild_shims();
|
|
13742
|
-
var
|
|
13677
|
+
var import_react28 = __toESM(require_react(), 1);
|
|
13743
13678
|
var import_prop_types = __toESM(require_prop_types(), 1);
|
|
13744
13679
|
|
|
13745
13680
|
// node_modules/ink-link/node_modules/terminal-link/index.js
|
|
@@ -13887,10 +13822,10 @@ terminalLink.stderr.isSupported = import_supports_hyperlinks.default.stderr;
|
|
|
13887
13822
|
// node_modules/ink-link/dist/index.js
|
|
13888
13823
|
var Link = /* @__PURE__ */ __name(({ children, url, fallback = true }) => (
|
|
13889
13824
|
// eslint-disable-line react/function-component-definition
|
|
13890
|
-
|
|
13825
|
+
import_react28.default.createElement(
|
|
13891
13826
|
Transform,
|
|
13892
13827
|
{ transform: /* @__PURE__ */ __name((children2) => terminalLink(children2, url, { fallback }), "transform") },
|
|
13893
|
-
|
|
13828
|
+
import_react28.default.createElement(Text, null, children)
|
|
13894
13829
|
)
|
|
13895
13830
|
), "Link");
|
|
13896
13831
|
Link.propTypes = {
|
|
@@ -13937,7 +13872,7 @@ var InfoMessage = /* @__PURE__ */ __name(({
|
|
|
13937
13872
|
StatusMessage,
|
|
13938
13873
|
{
|
|
13939
13874
|
text,
|
|
13940
|
-
prefix:
|
|
13875
|
+
prefix: ICON.CIRCLE_FILLED,
|
|
13941
13876
|
prefixColor: theme.text.primary,
|
|
13942
13877
|
textColor: theme.text.primary,
|
|
13943
13878
|
footer: linkUrl && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(dist_default, { url: linkUrl, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Text, { color: theme.text.link, underline: true, children: linkText ?? linkUrl }) })
|
|
@@ -13956,7 +13891,7 @@ var WarningMessage = /* @__PURE__ */ __name(({ text }) => /* @__PURE__ */ (0, im
|
|
|
13956
13891
|
StatusMessage,
|
|
13957
13892
|
{
|
|
13958
13893
|
text,
|
|
13959
|
-
prefix:
|
|
13894
|
+
prefix: ICON.TRIANGLE,
|
|
13960
13895
|
prefixColor: theme.status.warning,
|
|
13961
13896
|
textColor: theme.status.warning
|
|
13962
13897
|
}
|
|
@@ -13991,13 +13926,13 @@ var VisionNoticeMessage = /* @__PURE__ */ __name(({ text }) => /* @__PURE__ */ (
|
|
|
13991
13926
|
StatusMessage,
|
|
13992
13927
|
{
|
|
13993
13928
|
text,
|
|
13994
|
-
prefix:
|
|
13929
|
+
prefix: ICON.BULLSEYE,
|
|
13995
13930
|
prefixColor: theme.text.secondary,
|
|
13996
13931
|
textColor: theme.text.secondary
|
|
13997
13932
|
}
|
|
13998
13933
|
), "VisionNoticeMessage");
|
|
13999
13934
|
var AwayRecapMessage = /* @__PURE__ */ __name(({ text }) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
14000
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Text, { color: theme.text.secondary, children:
|
|
13935
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Text, { color: theme.text.secondary, children: ICON.REFERENCE }) }),
|
|
14001
13936
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Text, { wrap: "wrap", children: [
|
|
14002
13937
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Text, { color: theme.text.secondary, bold: true, children: [
|
|
14003
13938
|
"recap:",
|
|
@@ -14044,7 +13979,7 @@ init_esbuild_shims();
|
|
|
14044
13979
|
|
|
14045
13980
|
// node_modules/ink-gradient/dist/index.js
|
|
14046
13981
|
init_esbuild_shims();
|
|
14047
|
-
var
|
|
13982
|
+
var import_react29 = __toESM(require_react(), 1);
|
|
14048
13983
|
var import_prop_types2 = __toESM(require_prop_types(), 1);
|
|
14049
13984
|
var import_gradient_string = __toESM(require_gradient_string(), 1);
|
|
14050
13985
|
var Gradient = /* @__PURE__ */ __name((props) => {
|
|
@@ -14060,7 +13995,7 @@ var Gradient = /* @__PURE__ */ __name((props) => {
|
|
|
14060
13995
|
throw new Error("Either `name` or `colors` prop must be provided");
|
|
14061
13996
|
}
|
|
14062
13997
|
const applyGradient = /* @__PURE__ */ __name((text) => gradient.multiline(stripAnsi(text)), "applyGradient");
|
|
14063
|
-
return
|
|
13998
|
+
return import_react29.default.createElement(Transform, { transform: applyGradient }, props.children);
|
|
14064
13999
|
}, "Gradient");
|
|
14065
14000
|
Gradient.propTypes = {
|
|
14066
14001
|
children: import_prop_types2.default.oneOfType([
|
|
@@ -14860,7 +14795,7 @@ var SessionSummaryDisplay = /* @__PURE__ */ __name(({
|
|
|
14860
14795
|
|
|
14861
14796
|
// packages/cli/src/ui/components/Help.tsx
|
|
14862
14797
|
init_esbuild_shims();
|
|
14863
|
-
var
|
|
14798
|
+
var import_react30 = __toESM(require_react(), 1);
|
|
14864
14799
|
var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
|
|
14865
14800
|
var DEFAULT_WIDTH = 100;
|
|
14866
14801
|
var KEY_COL_WIDTH = 20;
|
|
@@ -14881,7 +14816,7 @@ var Help = /* @__PURE__ */ __name(({
|
|
|
14881
14816
|
}) => {
|
|
14882
14817
|
const safeWidth = Math.max(72, width);
|
|
14883
14818
|
const bodyWidth = safeWidth - 6;
|
|
14884
|
-
const handleTabChange = (0,
|
|
14819
|
+
const handleTabChange = (0, import_react30.useCallback)(
|
|
14885
14820
|
(direction) => {
|
|
14886
14821
|
const currentIndex = TAB_DEFS.findIndex((tab) => tab.tab === activeTab);
|
|
14887
14822
|
const nextIndex = (currentIndex + direction + TAB_DEFS.length) % TAB_DEFS.length;
|
|
@@ -15019,20 +14954,20 @@ var ShortcutRow = /* @__PURE__ */ __name(({ shortcutKey, desc, width }) => /* @_
|
|
|
15019
14954
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text, { color: theme.text.primary, wrap: "truncate", children: truncateText2(desc, width - KEY_COL_WIDTH - 1) })
|
|
15020
14955
|
] }), "ShortcutRow");
|
|
15021
14956
|
var CommandsHelp = /* @__PURE__ */ __name(({ commands, width, customOnly, isInteractive }) => {
|
|
15022
|
-
const groups = (0,
|
|
14957
|
+
const groups = (0, import_react30.useMemo)(
|
|
15023
14958
|
() => groupCommands(commands, customOnly),
|
|
15024
14959
|
[commands, customOnly]
|
|
15025
14960
|
);
|
|
15026
|
-
const lines = (0,
|
|
14961
|
+
const lines = (0, import_react30.useMemo)(
|
|
15027
14962
|
() => renderCommandLines(groups, width),
|
|
15028
14963
|
[groups, width]
|
|
15029
14964
|
);
|
|
15030
14965
|
const maxScroll = Math.max(0, lines.length - COMMAND_LIST_VISIBLE_LINES);
|
|
15031
|
-
const [scrollOffset, setScrollOffset] = (0,
|
|
15032
|
-
(0,
|
|
14966
|
+
const [scrollOffset, setScrollOffset] = (0, import_react30.useState)(0);
|
|
14967
|
+
(0, import_react30.useEffect)(() => {
|
|
15033
14968
|
setScrollOffset(0);
|
|
15034
14969
|
}, [customOnly, commands]);
|
|
15035
|
-
(0,
|
|
14970
|
+
(0, import_react30.useEffect)(() => {
|
|
15036
14971
|
setScrollOffset((offset) => Math.min(offset, maxScroll));
|
|
15037
14972
|
}, [maxScroll]);
|
|
15038
14973
|
useKeypress(
|
|
@@ -15220,26 +15155,26 @@ init_esbuild_shims();
|
|
|
15220
15155
|
|
|
15221
15156
|
// packages/cli/src/ui/contexts/UIStateContext.tsx
|
|
15222
15157
|
init_esbuild_shims();
|
|
15223
|
-
var
|
|
15158
|
+
var import_react37 = __toESM(require_react(), 1);
|
|
15224
15159
|
|
|
15225
15160
|
// packages/cli/src/ui/hooks/useHistoryManager.ts
|
|
15226
15161
|
init_esbuild_shims();
|
|
15227
|
-
var
|
|
15162
|
+
var import_react31 = __toESM(require_react(), 1);
|
|
15228
15163
|
import process2 from "node:process";
|
|
15229
15164
|
var debugLogger6 = createDebugLogger("HISTORY_MANAGER");
|
|
15230
15165
|
var UI_COMPACT_CLEARED_MESSAGE = "[Old tool result content cleared]";
|
|
15231
15166
|
var UI_COMPACT_KEEP_RECENT = 20;
|
|
15232
15167
|
function useHistory() {
|
|
15233
|
-
const [history, setHistory] = (0,
|
|
15234
|
-
const messageIdCounterRef = (0,
|
|
15235
|
-
const getNextMessageId = (0,
|
|
15168
|
+
const [history, setHistory] = (0, import_react31.useState)([]);
|
|
15169
|
+
const messageIdCounterRef = (0, import_react31.useRef)(0);
|
|
15170
|
+
const getNextMessageId = (0, import_react31.useCallback)((baseTimestamp) => {
|
|
15236
15171
|
messageIdCounterRef.current += 1;
|
|
15237
15172
|
return baseTimestamp + messageIdCounterRef.current;
|
|
15238
15173
|
}, []);
|
|
15239
|
-
const loadHistory = (0,
|
|
15174
|
+
const loadHistory = (0, import_react31.useCallback)((newHistory) => {
|
|
15240
15175
|
setHistory(newHistory);
|
|
15241
15176
|
}, []);
|
|
15242
|
-
const addItem = (0,
|
|
15177
|
+
const addItem = (0, import_react31.useCallback)(
|
|
15243
15178
|
(itemData, baseTimestamp) => {
|
|
15244
15179
|
const id = getNextMessageId(baseTimestamp);
|
|
15245
15180
|
const newItem = { ...itemData, id };
|
|
@@ -15263,7 +15198,7 @@ function useHistory() {
|
|
|
15263
15198
|
},
|
|
15264
15199
|
[getNextMessageId]
|
|
15265
15200
|
);
|
|
15266
|
-
const updateItem = (0,
|
|
15201
|
+
const updateItem = (0, import_react31.useCallback)(
|
|
15267
15202
|
(id, updates) => {
|
|
15268
15203
|
setHistory((prevHistory) => {
|
|
15269
15204
|
let updated = false;
|
|
@@ -15286,7 +15221,7 @@ function useHistory() {
|
|
|
15286
15221
|
},
|
|
15287
15222
|
[]
|
|
15288
15223
|
);
|
|
15289
|
-
const clearItems = (0,
|
|
15224
|
+
const clearItems = (0, import_react31.useCallback)(() => {
|
|
15290
15225
|
if (debugLogger6.isEnabled()) {
|
|
15291
15226
|
debugLogger6.debug(
|
|
15292
15227
|
`[CLEAR_HISTORY] Clearing history, memory before=${(process2.memoryUsage().heapUsed / 1024 / 1024).toFixed(1)}MB`
|
|
@@ -15295,13 +15230,13 @@ function useHistory() {
|
|
|
15295
15230
|
setHistory([]);
|
|
15296
15231
|
messageIdCounterRef.current = 0;
|
|
15297
15232
|
}, []);
|
|
15298
|
-
const truncateToItem = (0,
|
|
15233
|
+
const truncateToItem = (0, import_react31.useCallback)((itemId) => {
|
|
15299
15234
|
setHistory((prev) => {
|
|
15300
15235
|
const index = prev.findIndex((h) => h.id === itemId);
|
|
15301
15236
|
return index === -1 ? prev : prev.slice(0, index);
|
|
15302
15237
|
});
|
|
15303
15238
|
}, []);
|
|
15304
|
-
const compactOldItems = (0,
|
|
15239
|
+
const compactOldItems = (0, import_react31.useCallback)(() => {
|
|
15305
15240
|
setHistory((prev) => {
|
|
15306
15241
|
if (prev.length === 0) return prev;
|
|
15307
15242
|
let thoughtRemoved = 0;
|
|
@@ -15369,7 +15304,7 @@ function useHistory() {
|
|
|
15369
15304
|
return thoughtRemoved > 0 || toolGroupsCompacted > 0 ? next : prev;
|
|
15370
15305
|
});
|
|
15371
15306
|
}, []);
|
|
15372
|
-
return (0,
|
|
15307
|
+
return (0, import_react31.useMemo)(
|
|
15373
15308
|
() => ({
|
|
15374
15309
|
history,
|
|
15375
15310
|
addItem,
|
|
@@ -15394,7 +15329,7 @@ __name(useHistory, "useHistory");
|
|
|
15394
15329
|
|
|
15395
15330
|
// packages/cli/src/ui/contexts/UIActionsContext.tsx
|
|
15396
15331
|
init_esbuild_shims();
|
|
15397
|
-
var
|
|
15332
|
+
var import_react34 = __toESM(require_react(), 1);
|
|
15398
15333
|
|
|
15399
15334
|
// packages/cli/src/ui/IdeIntegrationNudge.tsx
|
|
15400
15335
|
init_esbuild_shims();
|
|
@@ -15536,7 +15471,7 @@ __name(CommandFormatMigrationNudge, "CommandFormatMigrationNudge");
|
|
|
15536
15471
|
|
|
15537
15472
|
// packages/cli/src/ui/components/FolderTrustDialog.tsx
|
|
15538
15473
|
init_esbuild_shims();
|
|
15539
|
-
var
|
|
15474
|
+
var import_react32 = __toESM(require_react(), 1);
|
|
15540
15475
|
import * as process3 from "node:process";
|
|
15541
15476
|
import * as path3 from "node:path";
|
|
15542
15477
|
var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
|
|
@@ -15544,7 +15479,7 @@ var FolderTrustDialog = /* @__PURE__ */ __name(({
|
|
|
15544
15479
|
onSelect,
|
|
15545
15480
|
isRestarting
|
|
15546
15481
|
}) => {
|
|
15547
|
-
(0,
|
|
15482
|
+
(0, import_react32.useEffect)(() => {
|
|
15548
15483
|
const doRelaunch = /* @__PURE__ */ __name(async () => {
|
|
15549
15484
|
if (isRestarting) {
|
|
15550
15485
|
setTimeout(async () => {
|
|
@@ -15672,16 +15607,16 @@ var MCPServerApprovalDialog = /* @__PURE__ */ __name(({ serverName, summary, sou
|
|
|
15672
15607
|
|
|
15673
15608
|
// packages/cli/src/ui/hooks/useArenaCommand.ts
|
|
15674
15609
|
init_esbuild_shims();
|
|
15675
|
-
var
|
|
15610
|
+
var import_react33 = __toESM(require_react(), 1);
|
|
15676
15611
|
function useArenaCommand() {
|
|
15677
|
-
const [activeArenaDialog, setActiveArenaDialog] = (0,
|
|
15678
|
-
const openArenaDialog = (0,
|
|
15612
|
+
const [activeArenaDialog, setActiveArenaDialog] = (0, import_react33.useState)(null);
|
|
15613
|
+
const openArenaDialog = (0, import_react33.useCallback)(
|
|
15679
15614
|
(type) => {
|
|
15680
15615
|
setActiveArenaDialog(type);
|
|
15681
15616
|
},
|
|
15682
15617
|
[]
|
|
15683
15618
|
);
|
|
15684
|
-
const closeArenaDialog = (0,
|
|
15619
|
+
const closeArenaDialog = (0, import_react33.useCallback)(() => {
|
|
15685
15620
|
setActiveArenaDialog(null);
|
|
15686
15621
|
}, []);
|
|
15687
15622
|
return {
|
|
@@ -15693,9 +15628,9 @@ function useArenaCommand() {
|
|
|
15693
15628
|
__name(useArenaCommand, "useArenaCommand");
|
|
15694
15629
|
|
|
15695
15630
|
// packages/cli/src/ui/contexts/UIActionsContext.tsx
|
|
15696
|
-
var UIActionsContext = (0,
|
|
15631
|
+
var UIActionsContext = (0, import_react34.createContext)(null);
|
|
15697
15632
|
var useUIActions = /* @__PURE__ */ __name(() => {
|
|
15698
|
-
const context = (0,
|
|
15633
|
+
const context = (0, import_react34.useContext)(UIActionsContext);
|
|
15699
15634
|
if (!context) {
|
|
15700
15635
|
throw new Error("useUIActions must be used within a UIActionsProvider");
|
|
15701
15636
|
}
|
|
@@ -15704,16 +15639,16 @@ var useUIActions = /* @__PURE__ */ __name(() => {
|
|
|
15704
15639
|
|
|
15705
15640
|
// packages/cli/src/ui/hooks/useIdeTrustListener.ts
|
|
15706
15641
|
init_esbuild_shims();
|
|
15707
|
-
var
|
|
15642
|
+
var import_react35 = __toESM(require_react(), 1);
|
|
15708
15643
|
function useIdeTrustListener() {
|
|
15709
15644
|
const settings = useSettings();
|
|
15710
|
-
const [connectionStatus, setConnectionStatus] = (0,
|
|
15645
|
+
const [connectionStatus, setConnectionStatus] = (0, import_react35.useState)(
|
|
15711
15646
|
"disconnected" /* Disconnected */
|
|
15712
15647
|
);
|
|
15713
|
-
const previousTrust = (0,
|
|
15714
|
-
const [restartReason, setRestartReason] = (0,
|
|
15715
|
-
const [needsRestart, setNeedsRestart] = (0,
|
|
15716
|
-
const subscribe2 = (0,
|
|
15648
|
+
const previousTrust = (0, import_react35.useRef)(void 0);
|
|
15649
|
+
const [restartReason, setRestartReason] = (0, import_react35.useState)("NONE");
|
|
15650
|
+
const [needsRestart, setNeedsRestart] = (0, import_react35.useState)(false);
|
|
15651
|
+
const subscribe2 = (0, import_react35.useCallback)((onStoreChange) => {
|
|
15717
15652
|
const handleStatusChange = /* @__PURE__ */ __name((state) => {
|
|
15718
15653
|
setConnectionStatus(state.status);
|
|
15719
15654
|
setRestartReason("CONNECTION_CHANGE");
|
|
@@ -15743,8 +15678,8 @@ function useIdeTrustListener() {
|
|
|
15743
15678
|
}
|
|
15744
15679
|
return ideContextStore.get()?.workspaceState?.isTrusted;
|
|
15745
15680
|
}, "getSnapshot");
|
|
15746
|
-
const isIdeTrusted = (0,
|
|
15747
|
-
(0,
|
|
15681
|
+
const isIdeTrusted = (0, import_react35.useSyncExternalStore)(subscribe2, getSnapshot);
|
|
15682
|
+
(0, import_react35.useEffect)(() => {
|
|
15748
15683
|
const currentTrust = isWorkspaceTrusted(settings.merged).isTrusted;
|
|
15749
15684
|
if (previousTrust.current !== void 0 && previousTrust.current !== currentTrust) {
|
|
15750
15685
|
setNeedsRestart(true);
|
|
@@ -15757,7 +15692,7 @@ __name(useIdeTrustListener, "useIdeTrustListener");
|
|
|
15757
15692
|
|
|
15758
15693
|
// packages/cli/src/ui/hooks/useProviderUpdates.ts
|
|
15759
15694
|
init_esbuild_shims();
|
|
15760
|
-
var
|
|
15695
|
+
var import_react36 = __toESM(require_react(), 1);
|
|
15761
15696
|
function getProviderMetadata(settings, metadataKey) {
|
|
15762
15697
|
const mergedSettings = settings.merged;
|
|
15763
15698
|
const ns = mergedSettings[PROVIDER_METADATA_NS];
|
|
@@ -15856,9 +15791,9 @@ function findAllPendingUpdates(settings, currentModel) {
|
|
|
15856
15791
|
}
|
|
15857
15792
|
__name(findAllPendingUpdates, "findAllPendingUpdates");
|
|
15858
15793
|
function useProviderUpdates(settings, config, addItem) {
|
|
15859
|
-
const [updateRequest, setUpdateRequest] = (0,
|
|
15860
|
-
const migrated = (0,
|
|
15861
|
-
const executeUpdate = (0,
|
|
15794
|
+
const [updateRequest, setUpdateRequest] = (0, import_react36.useState)();
|
|
15795
|
+
const migrated = (0, import_react36.useRef)(false);
|
|
15796
|
+
const executeUpdate = (0, import_react36.useCallback)(
|
|
15862
15797
|
async (providerCfg, baseUrl) => {
|
|
15863
15798
|
try {
|
|
15864
15799
|
const resolved = resolveBaseUrl(providerCfg, baseUrl);
|
|
@@ -15945,7 +15880,7 @@ function useProviderUpdates(settings, config, addItem) {
|
|
|
15945
15880
|
},
|
|
15946
15881
|
[settings, config, addItem]
|
|
15947
15882
|
);
|
|
15948
|
-
const checkForUpdates = (0,
|
|
15883
|
+
const checkForUpdates = (0, import_react36.useCallback)(() => {
|
|
15949
15884
|
if (!migrated.current) {
|
|
15950
15885
|
migrated.current = true;
|
|
15951
15886
|
migrateProviderMetadata(settings);
|
|
@@ -15978,10 +15913,10 @@ function useProviderUpdates(settings, config, addItem) {
|
|
|
15978
15913
|
}, "onConfirm")
|
|
15979
15914
|
});
|
|
15980
15915
|
}, [settings, config, executeUpdate]);
|
|
15981
|
-
(0,
|
|
15916
|
+
(0, import_react36.useEffect)(() => {
|
|
15982
15917
|
checkForUpdates();
|
|
15983
15918
|
}, [checkForUpdates]);
|
|
15984
|
-
const dismissProviderUpdate = (0,
|
|
15919
|
+
const dismissProviderUpdate = (0, import_react36.useCallback)(() => {
|
|
15985
15920
|
setUpdateRequest(void 0);
|
|
15986
15921
|
}, []);
|
|
15987
15922
|
return {
|
|
@@ -15992,9 +15927,9 @@ function useProviderUpdates(settings, config, addItem) {
|
|
|
15992
15927
|
__name(useProviderUpdates, "useProviderUpdates");
|
|
15993
15928
|
|
|
15994
15929
|
// packages/cli/src/ui/contexts/UIStateContext.tsx
|
|
15995
|
-
var UIStateContext = (0,
|
|
15930
|
+
var UIStateContext = (0, import_react37.createContext)(null);
|
|
15996
15931
|
var useUIState = /* @__PURE__ */ __name(() => {
|
|
15997
|
-
const context = (0,
|
|
15932
|
+
const context = (0, import_react37.useContext)(UIStateContext);
|
|
15998
15933
|
if (!context) {
|
|
15999
15934
|
throw new Error("useUIState must be used within a UIStateProvider");
|
|
16000
15935
|
}
|
|
@@ -17186,7 +17121,7 @@ var InsightProgressMessage = /* @__PURE__ */ __name(({
|
|
|
17186
17121
|
|
|
17187
17122
|
// packages/cli/src/ui/components/messages/BtwMessage.tsx
|
|
17188
17123
|
init_esbuild_shims();
|
|
17189
|
-
var
|
|
17124
|
+
var import_react38 = __toESM(require_react(), 1);
|
|
17190
17125
|
var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
|
|
17191
17126
|
var BTW_SELF_CHROME = 4;
|
|
17192
17127
|
function normalizeCodeFences(text) {
|
|
@@ -17234,7 +17169,7 @@ var BtwMessageInternal = /* @__PURE__ */ __name(({
|
|
|
17234
17169
|
}
|
|
17235
17170
|
);
|
|
17236
17171
|
}, "BtwMessageInternal");
|
|
17237
|
-
var BtwMessage =
|
|
17172
|
+
var BtwMessage = import_react38.default.memo(BtwMessageInternal);
|
|
17238
17173
|
|
|
17239
17174
|
// packages/cli/src/ui/components/messages/MemorySavedMessage.tsx
|
|
17240
17175
|
init_esbuild_shims();
|
|
@@ -17246,7 +17181,7 @@ var MemorySavedMessage = /* @__PURE__ */ __name(({
|
|
|
17246
17181
|
const n = item.writtenCount;
|
|
17247
17182
|
const label = n === 1 ? "memory" : "memories";
|
|
17248
17183
|
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
17249
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Box_default, {
|
|
17184
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { dimColor: true, children: ICON.CIRCLE_FILLED }) }),
|
|
17250
17185
|
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Text, { dimColor: true, children: [
|
|
17251
17186
|
verb,
|
|
17252
17187
|
" ",
|
|
@@ -17363,7 +17298,7 @@ __name(padRight, "padRight");
|
|
|
17363
17298
|
|
|
17364
17299
|
// packages/cli/src/ui/components/messages/GoalStatusMessage.tsx
|
|
17365
17300
|
init_esbuild_shims();
|
|
17366
|
-
var
|
|
17301
|
+
var import_react39 = __toESM(require_react(), 1);
|
|
17367
17302
|
var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
|
|
17368
17303
|
var pluralTurns = /* @__PURE__ */ __name((n) => n === 1 ? "turn" : "turns", "pluralTurns");
|
|
17369
17304
|
function assertNeverGoalStatusKind(kind) {
|
|
@@ -17380,7 +17315,7 @@ var GoalStatusMessageInternal = /* @__PURE__ */ __name(({
|
|
|
17380
17315
|
if (kind === "checking") {
|
|
17381
17316
|
const reason = lastReason?.trim();
|
|
17382
17317
|
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
17383
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Text, { color: theme.text.secondary, children:
|
|
17318
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Text, { color: theme.text.secondary, children: ICON.CIRCLE_EMPTY }) }),
|
|
17384
17319
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Box_default, { flexGrow: 1, flexDirection: "column", children: [
|
|
17385
17320
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Text, { color: theme.text.secondary, children: [
|
|
17386
17321
|
"Goal check",
|
|
@@ -17403,7 +17338,7 @@ var GoalStatusMessageInternal = /* @__PURE__ */ __name(({
|
|
|
17403
17338
|
switch (kind) {
|
|
17404
17339
|
case "set":
|
|
17405
17340
|
return {
|
|
17406
|
-
prefix:
|
|
17341
|
+
prefix: ICON.BULLSEYE,
|
|
17407
17342
|
prefixColor: theme.text.accent,
|
|
17408
17343
|
title: "Goal set"
|
|
17409
17344
|
};
|
|
@@ -17415,7 +17350,7 @@ var GoalStatusMessageInternal = /* @__PURE__ */ __name(({
|
|
|
17415
17350
|
};
|
|
17416
17351
|
case "cleared":
|
|
17417
17352
|
return {
|
|
17418
|
-
prefix:
|
|
17353
|
+
prefix: ICON.CIRCLE_EMPTY,
|
|
17419
17354
|
prefixColor: theme.text.secondary,
|
|
17420
17355
|
title: "Goal cleared"
|
|
17421
17356
|
};
|
|
@@ -17464,19 +17399,19 @@ var GoalStatusMessageInternal = /* @__PURE__ */ __name(({
|
|
|
17464
17399
|
] })
|
|
17465
17400
|
] });
|
|
17466
17401
|
}, "GoalStatusMessageInternal");
|
|
17467
|
-
var GoalStatusMessage =
|
|
17402
|
+
var GoalStatusMessage = import_react39.default.memo(GoalStatusMessageInternal);
|
|
17468
17403
|
|
|
17469
17404
|
// packages/cli/src/ui/contexts/ThoughtExpandedContext.tsx
|
|
17470
17405
|
init_esbuild_shims();
|
|
17471
|
-
var
|
|
17406
|
+
var import_react40 = __toESM(require_react(), 1);
|
|
17472
17407
|
var EMPTY_IDS = /* @__PURE__ */ new Set();
|
|
17473
|
-
var ThoughtExpandedContext = (0,
|
|
17408
|
+
var ThoughtExpandedContext = (0, import_react40.createContext)({
|
|
17474
17409
|
allExpanded: false,
|
|
17475
17410
|
expandedHeadIds: EMPTY_IDS,
|
|
17476
17411
|
toggle: /* @__PURE__ */ __name(() => {
|
|
17477
17412
|
}, "toggle")
|
|
17478
17413
|
});
|
|
17479
|
-
var useThoughtExpanded = /* @__PURE__ */ __name(() => (0,
|
|
17414
|
+
var useThoughtExpanded = /* @__PURE__ */ __name(() => (0, import_react40.useContext)(ThoughtExpandedContext), "useThoughtExpanded");
|
|
17480
17415
|
var ThoughtExpandedProvider = ThoughtExpandedContext.Provider;
|
|
17481
17416
|
|
|
17482
17417
|
// packages/cli/src/ui/components/HistoryItemDisplay.tsx
|
|
@@ -17490,14 +17425,14 @@ var ClickableThinkMessage = /* @__PURE__ */ __name(({
|
|
|
17490
17425
|
durationMs,
|
|
17491
17426
|
onToggle
|
|
17492
17427
|
}) => {
|
|
17493
|
-
const ref = (0,
|
|
17494
|
-
const pressRef = (0,
|
|
17428
|
+
const ref = (0, import_react41.useRef)(null);
|
|
17429
|
+
const pressRef = (0, import_react41.useRef)(null);
|
|
17495
17430
|
const { rows: terminalHeight } = useTerminalSize();
|
|
17496
17431
|
const settings = useSettings();
|
|
17497
17432
|
const clickable = !!settings.merged.ui?.useTerminalBuffer;
|
|
17498
17433
|
const isActive = !isPending;
|
|
17499
17434
|
useMouseEvents(
|
|
17500
|
-
(0,
|
|
17435
|
+
(0, import_react41.useCallback)(
|
|
17501
17436
|
(event) => {
|
|
17502
17437
|
if (!ref.current) return;
|
|
17503
17438
|
if (event.name === "move") {
|
|
@@ -17600,7 +17535,7 @@ var HistoryItemDisplayComponent = /* @__PURE__ */ __name(({
|
|
|
17600
17535
|
const resolvedThoughtExpanded = fullDetail || (thoughtExpanded ?? (allExpanded || expandedHeadIds.has(thoughtGroupHeadId)));
|
|
17601
17536
|
const settings = useSettings();
|
|
17602
17537
|
const showTimestamps = settings.merged.output?.showTimestamps === true;
|
|
17603
|
-
const itemForDisplay = (0,
|
|
17538
|
+
const itemForDisplay = (0, import_react41.useMemo)(() => escapeAnsiCtrlCodes(item), [item]);
|
|
17604
17539
|
const contentWidth = terminalWidth - 4;
|
|
17605
17540
|
const boxWidth = mainAreaWidth || contentWidth;
|
|
17606
17541
|
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
@@ -17712,10 +17647,10 @@ var HistoryItemDisplayComponent = /* @__PURE__ */ __name(({
|
|
|
17712
17647
|
fullDetail
|
|
17713
17648
|
}
|
|
17714
17649
|
),
|
|
17715
|
-
itemForDisplay.type === "tool_use_summary" && /* @__PURE__ */ (0, import_jsx_runtime47.
|
|
17716
|
-
|
|
17717
|
-
itemForDisplay.summary
|
|
17718
|
-
] })
|
|
17650
|
+
itemForDisplay.type === "tool_use_summary" && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
17651
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Text, { dimColor: true, children: ICON.CIRCLE_FILLED }) }),
|
|
17652
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Text, { dimColor: true, children: itemForDisplay.summary })
|
|
17653
|
+
] }),
|
|
17719
17654
|
itemForDisplay.type === "compression" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompressionMessage, { compression: itemForDisplay.compression }),
|
|
17720
17655
|
itemForDisplay.type === "summary" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SummaryMessage, { summary: itemForDisplay.summary }),
|
|
17721
17656
|
itemForDisplay.type === "extensions_list" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ExtensionsList, {}),
|
|
@@ -17804,7 +17739,7 @@ Original prompt: ${sanitizeSensitiveText(itemForDisplay.originalPrompt)}` }) }),
|
|
|
17804
17739
|
itemForDisplay.id
|
|
17805
17740
|
);
|
|
17806
17741
|
}, "HistoryItemDisplayComponent");
|
|
17807
|
-
var HistoryItemDisplay = (0,
|
|
17742
|
+
var HistoryItemDisplay = (0, import_react41.memo)(HistoryItemDisplayComponent);
|
|
17808
17743
|
HistoryItemDisplay.displayName = "HistoryItemDisplay";
|
|
17809
17744
|
|
|
17810
17745
|
// packages/cli/src/ui/components/SessionPreview.tsx
|
|
@@ -17821,9 +17756,9 @@ function SessionPreview(props) {
|
|
|
17821
17756
|
onResume
|
|
17822
17757
|
} = props;
|
|
17823
17758
|
const { columns } = useTerminalSize();
|
|
17824
|
-
const [data, setData] = (0,
|
|
17825
|
-
const [error, setError] = (0,
|
|
17826
|
-
(0,
|
|
17759
|
+
const [data, setData] = (0, import_react42.useState)(null);
|
|
17760
|
+
const [error, setError] = (0, import_react42.useState)(null);
|
|
17761
|
+
(0, import_react42.useEffect)(() => {
|
|
17827
17762
|
let cancelled = false;
|
|
17828
17763
|
setData(null);
|
|
17829
17764
|
setError(null);
|
|
@@ -17842,11 +17777,11 @@ function SessionPreview(props) {
|
|
|
17842
17777
|
cancelled = true;
|
|
17843
17778
|
};
|
|
17844
17779
|
}, [sessionService, sessionId]);
|
|
17845
|
-
const items = (0,
|
|
17780
|
+
const items = (0, import_react42.useMemo)(() => {
|
|
17846
17781
|
if (!data) return [];
|
|
17847
17782
|
return buildResumedHistoryItems(data, null);
|
|
17848
17783
|
}, [data]);
|
|
17849
|
-
const computedMessageCount = (0,
|
|
17784
|
+
const computedMessageCount = (0, import_react42.useMemo)(() => {
|
|
17850
17785
|
if (!data) return void 0;
|
|
17851
17786
|
const seen = /* @__PURE__ */ new Set();
|
|
17852
17787
|
for (const msg of data.conversation.messages) {
|
|
@@ -18164,9 +18099,6 @@ export {
|
|
|
18164
18099
|
loadLowlight,
|
|
18165
18100
|
colorizeCode,
|
|
18166
18101
|
fitPendingSlice,
|
|
18167
|
-
sanitizeForOsc,
|
|
18168
|
-
osc8Hyperlink,
|
|
18169
|
-
supportsHyperlinks,
|
|
18170
18102
|
TerminalOutputProvider,
|
|
18171
18103
|
useTerminalOutput,
|
|
18172
18104
|
RenderModeProvider,
|