@qwen-code/qwen-code 0.23.5-dev.codemode-responses.20260915.f024b37689 → 0.23.5-preview.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/computer-use/SKILL.md +24 -3
- package/bundled/qc-helper/docs/configuration/model-providers.md +43 -0
- package/bundled/qc-helper/docs/configuration/settings.md +10 -9
- package/bundled/qc-helper/docs/extension/agent-plugins.md +1 -0
- package/bundled/qc-helper/docs/extension/introduction.md +49 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +39 -4
- package/bundled/qc-helper/docs/features/channels/overview.md +12 -0
- package/bundled/qc-helper/docs/features/commands.md +57 -52
- package/bundled/qc-helper/docs/features/computer-use.md +1 -1
- package/bundled/qc-helper/docs/features/goals.md +8 -0
- package/bundled/qc-helper/docs/features/hooks.md +16 -0
- package/bundled/qc-helper/docs/qwen-serve.md +3 -1
- package/bundled/workflow-authoring/SKILL.md +48 -22
- package/chunks/{MaxSizedBox-BFMIFJWT.js → MaxSizedBox-FCF6M53W.js} +40 -43
- package/chunks/{StandaloneSessionPicker-4ZH7MOVG.js → StandaloneSessionPicker-V635V72I.js} +60 -63
- package/chunks/{acp-startup-profiler-RUQNTNU5.js → acp-startup-profiler-MOOU37VM.js} +2 -2
- package/chunks/{acp-subagent-executor-AHMVA4P3.js → acp-subagent-executor-TND6W2O5.js} +46 -47
- package/chunks/{acpAgent-UMAJ3XR3.js → acpAgent-3DPWZTNC.js} +954 -322
- package/chunks/{agent-CXB2CCQN.js → agent-KIHGINKN.js} +27 -30
- package/chunks/{agent-headless-7D5ZC736.js → agent-headless-EJ4QOUSM.js} +27 -30
- package/chunks/{anthropicContentGenerator-H5YPXIDE.js → anthropicContentGenerator-4FGOM5LK.js} +46 -64
- package/chunks/{artifact-tool-MFGORTWZ.js → artifact-tool-MUTNH4NI.js} +1 -1
- package/chunks/{askUserQuestion-WS4GUT7C.js → askUserQuestion-AKIRLVB5.js} +1 -1
- package/chunks/bareMode-QWKZPLPX.js +14 -0
- package/chunks/{bridge-A2WKX6IK.js → bridge-MUX5YJZT.js} +46 -49
- package/chunks/{ca-GZ4FDJU2.js → ca-WC3A5B3Q.js} +12 -1
- package/chunks/{channel-management-service-AFVIT4VH.js → channel-management-service-RRILWSXX.js} +4 -4
- package/chunks/{channel-settings-store-AXJIN7HG.js → channel-settings-store-7CBIRZER.js} +51 -54
- package/chunks/{channel-worker-group-JR6JOELM.js → channel-worker-group-3DUJFZJR.js} +8 -8
- package/chunks/{channel-worker-manager-AVKJEZFL.js → channel-worker-manager-E5UW2VLA.js} +8 -8
- package/chunks/{channel-worker-supervisor-OOYY7BAQ.js → channel-worker-supervisor-VN33GSEC.js} +5 -5
- package/chunks/{chunk-2YMRRI2C.js → chunk-2C5TR6HN.js} +82 -9
- package/chunks/{chunk-YDFOHRS5.js → chunk-2GP6BQ2J.js} +1 -1
- package/chunks/{chunk-RN6BU77T.js → chunk-347O2YZJ.js} +158 -290
- package/chunks/{chunk-LTINUI3O.js → chunk-36NRLIR6.js} +10 -8
- package/chunks/{chunk-AXZMWAJV.js → chunk-36SDZ2Q4.js} +8 -0
- package/chunks/{chunk-QR4Q425T.js → chunk-3BZI5GDP.js} +1 -1
- package/chunks/{chunk-C3YMBSLR.js → chunk-3HTUE6ZR.js} +3 -3
- package/chunks/{chunk-QS5Q5F42.js → chunk-3LLEB5CU.js} +2 -2
- package/chunks/{chunk-FPPG5Y3W.js → chunk-3UGMLA4V.js} +10 -8
- package/chunks/{chunk-66N6C4EH.js → chunk-3WILPKTJ.js} +2 -2
- package/chunks/{chunk-SROLVJFY.js → chunk-3WWPEFMX.js} +1 -1
- package/chunks/{chunk-ZKIAGIGH.js → chunk-3XBUCOWS.js} +1 -1
- package/chunks/{chunk-6RQFMGN2.js → chunk-43Y26NPF.js} +3 -3
- package/chunks/{chunk-INGBUYL6.js → chunk-4FLUQWJ4.js} +1 -1
- package/chunks/{chunk-S77FFY67.js → chunk-4JFLRHNE.js} +1 -1
- package/chunks/{chunk-MJHLKWGJ.js → chunk-4QPVZA5J.js} +70 -23
- package/chunks/{chunk-XX5HQLCZ.js → chunk-6OTF7TTE.js} +32 -1
- package/chunks/{chunk-4Y2I3CI3.js → chunk-6USYH3EU.js} +99 -6
- package/chunks/{chunk-Q3TFRP5G.js → chunk-7D4CV7JH.js} +102 -9
- package/chunks/{chunk-EWJTAP3Y.js → chunk-7O5PYQ3M.js} +20 -1
- package/chunks/chunk-ADN5KESB.js +28 -0
- package/chunks/chunk-AKRSSKUT.js +229 -0
- package/chunks/{chunk-54YUXX7X.js → chunk-AQP3H22J.js} +1 -1
- package/chunks/{chunk-EQWKIA72.js → chunk-AUX2FL5T.js} +24 -7
- package/chunks/{chunk-YGFJ6BRT.js → chunk-AZCTY64Z.js} +1 -1
- package/chunks/{chunk-QLX4D55R.js → chunk-B5TJK7B3.js} +1 -1
- package/chunks/{chunk-HXMDDII6.js → chunk-B6RMK4ED.js} +4 -4
- package/chunks/{chunk-UCKM6KCJ.js → chunk-BHG3H6OZ.js} +1 -1
- package/chunks/{chunk-JLF2AQAL.js → chunk-BHVF3R6B.js} +7 -5
- package/chunks/{chunk-HFJSQ4GL.js → chunk-BTICBRPL.js} +1 -1
- package/chunks/{chunk-KZCK5JUN.js → chunk-C3T6HPNM.js} +1 -1
- package/chunks/{chunk-FCLMJS6N.js → chunk-CDDP4ONL.js} +164 -27
- package/chunks/{chunk-Y3ZXDBUL.js → chunk-CQPM66MG.js} +4 -4
- package/chunks/{chunk-WKVZES7O.js → chunk-CXONOVBN.js} +1 -1
- package/chunks/{chunk-TYBRGFYL.js → chunk-CXY6BICQ.js} +501 -479
- package/chunks/{chunk-W23HOFDK.js → chunk-D3KVGQUV.js} +1 -1
- package/chunks/{chunk-LMJSPC55.js → chunk-D7JMO2GP.js} +3 -7
- package/chunks/{chunk-CXXAZ2LZ.js → chunk-DC4ZNGH4.js} +1 -1
- package/chunks/{chunk-FMLBBXHB.js → chunk-DRAX5YAI.js} +2 -2
- package/chunks/{chunk-DOTF2PF2.js → chunk-DRD6VBNH.js} +1 -1
- package/chunks/chunk-DX6JTDMR.js +105 -0
- package/chunks/{chunk-MNRK6MIH.js → chunk-E2VSBAFA.js} +53 -11
- package/chunks/{chunk-QJKR2P2K.js → chunk-EIBECN2J.js} +3 -3
- package/chunks/{chunk-LWWRJRCD.js → chunk-ESBYWATJ.js} +1 -1
- package/chunks/{chunk-3544ZEGZ.js → chunk-FASYATAZ.js} +5 -7
- package/chunks/{chunk-6YUS5JCV.js → chunk-FBY32737.js} +4 -4
- package/chunks/{chunk-LBWIJ5T7.js → chunk-FCPJXKDG.js} +10 -7
- package/chunks/{chunk-FX6GJIPZ.js → chunk-FEDFZBGR.js} +3 -3
- package/chunks/{chunk-DQ4LBRZN.js → chunk-FIJODK52.js} +3 -3
- package/chunks/{chunk-HVSRWLOW.js → chunk-FX6PZBOV.js} +3 -3
- package/chunks/{chunk-L6DIANLD.js → chunk-G45B3INR.js} +1 -1
- package/chunks/{chunk-EYLUKEYW.js → chunk-GI7SLDOI.js} +2 -2
- package/chunks/chunk-GJKP6XOB.js +1092 -0
- package/chunks/{chunk-I6YJZGHS.js → chunk-GSAOVDTH.js} +9 -9
- package/chunks/{chunk-XK4UQSIR.js → chunk-H6L4NEAT.js} +1 -1
- package/chunks/{chunk-GMCEFKNR.js → chunk-HNFKYKHH.js} +103 -22
- package/chunks/{chunk-6XDB3FR4.js → chunk-HX4WXX3H.js} +301 -138
- package/chunks/{chunk-HG46TTAG.js → chunk-HXUI5D4H.js} +1 -1
- package/chunks/{chunk-QI4WBHPF.js → chunk-HYHSMTRA.js} +4 -4
- package/chunks/{chunk-ZUKC5J6Q.js → chunk-IKBEIDOH.js} +14 -14
- package/chunks/{chunk-LCAJ63TF.js → chunk-INN5ORKX.js} +1 -1
- package/chunks/{chunk-GNV2SFO7.js → chunk-IVFTLUZD.js} +26 -1
- package/chunks/{chunk-GNKSR3FU.js → chunk-IXO2OCIP.js} +2 -2
- package/chunks/{chunk-SNT634Q6.js → chunk-K4XMAIRX.js} +30 -33
- package/chunks/{chunk-WBP64MZR.js → chunk-KAYC5FBN.js} +5269 -2785
- package/chunks/chunk-KEM7MWS7.js +3541 -0
- package/chunks/{chunk-ADQUK6WA.js → chunk-KVC7HZWK.js} +1 -1
- package/chunks/{chunk-UQXURNLM.js → chunk-KVQ3QL4K.js} +3 -3
- package/chunks/{chunk-7U5G6JXI.js → chunk-KWYTSSTJ.js} +105 -6
- package/chunks/{chunk-Q4G2YPI4.js → chunk-L2A5VBDL.js} +3019 -2352
- package/chunks/{chunk-WD6YQI5M.js → chunk-L3SNMEDW.js} +1 -1
- package/chunks/{chunk-BYUAT5OC.js → chunk-L7TJUPNR.js} +19 -3
- package/chunks/{chunk-ABNX6E6K.js → chunk-LFKXIOGC.js} +1 -1
- package/chunks/{chunk-GFAK6DYU.js → chunk-LO2UWNO5.js} +2 -2
- package/chunks/{chunk-67ZDP7UX.js → chunk-M22WLKLI.js} +5 -5
- package/chunks/{chunk-54B2LTKP.js → chunk-M23GFJ5B.js} +24 -5
- package/chunks/{chunk-VGY2RGXL.js → chunk-M4U2LTD2.js} +1 -1
- package/chunks/{chunk-ZNI3YJHS.js → chunk-MFDKHGTD.js} +1 -1
- package/chunks/{chunk-R7OO56VZ.js → chunk-MMRGG6R4.js} +1 -1
- package/chunks/{chunk-E6IR653O.js → chunk-MO4XID7S.js} +1 -1
- package/chunks/{chunk-NJ4ZNDVP.js → chunk-NKTMUPHJ.js} +3 -6
- package/chunks/{chunk-4DTFTPTU.js → chunk-NQ272MQG.js} +1 -1
- package/chunks/{chunk-DWKFTUGI.js → chunk-OALXNGUA.js} +6 -6
- package/chunks/{chunk-FBDHP23D.js → chunk-OSG23MR3.js} +1 -1
- package/chunks/{chunk-NJ2OFVUX.js → chunk-P42KMMU6.js} +860 -1
- package/chunks/{chunk-5KJ54DY3.js → chunk-PF7GAP6K.js} +60 -58
- package/chunks/{chunk-MQRLLBMQ.js → chunk-PPJSG2PU.js} +2 -2
- package/chunks/{chunk-EPVEPTI3.js → chunk-PZRXWQUA.js} +753 -18
- package/chunks/{chunk-VI5UVPOB.js → chunk-Q54O3EIA.js} +30 -28
- package/chunks/{chunk-QTUQV33C.js → chunk-QGEISOJ2.js} +4 -4
- package/chunks/{chunk-XKRYQOHS.js → chunk-QHSOINX6.js} +2 -2
- package/chunks/{chunk-Z6Q7I37O.js → chunk-QIPLWW6Q.js} +1 -1
- package/chunks/chunk-QMENOK5T.js +1246 -0
- package/chunks/chunk-QT6Z2IBF.js +347 -0
- package/chunks/{chunk-TBSCTWKF.js → chunk-RN6A53UJ.js} +25 -0
- package/chunks/{chunk-E7ZTAOJZ.js → chunk-RRI764F7.js} +21 -19
- package/chunks/{chunk-YI2YCNSP.js → chunk-SENYKRII.js} +1 -1
- package/chunks/chunk-SFHX5G2S.js +2796 -0
- package/chunks/chunk-SK3RZOPS.js +34 -0
- package/chunks/{chunk-SKYOAH4Z.js → chunk-SOLRBF7L.js} +13 -9
- package/chunks/{chunk-5WLF44DS.js → chunk-SSWTA7CH.js} +12 -12
- package/chunks/{chunk-IAS753HG.js → chunk-SYMXYRM5.js} +11 -2
- package/chunks/{chunk-FGROOEKM.js → chunk-TDKUXSJO.js} +34 -6
- package/chunks/{chunk-ZJ7JQUGY.js → chunk-TKF4JINY.js} +1 -1
- package/chunks/{chunk-ZOQ6HC7U.js → chunk-TPY6HW55.js} +4 -4
- package/chunks/{chunk-EDB556X7.js → chunk-TRZ22SG5.js} +1 -1
- package/chunks/{chunk-FHSOZSBO.js → chunk-TXTCM3TC.js} +4 -4
- package/chunks/{chunk-5ODRE7E5.js → chunk-U4AASWUQ.js} +28 -12
- package/chunks/{chunk-PPE7VUMD.js → chunk-UQGRJTDK.js} +2 -2
- package/chunks/{chunk-JO67LVXW.js → chunk-UZSB57EV.js} +6 -8
- package/chunks/{chunk-UY4OCBX4.js → chunk-V4JJAVHQ.js} +2 -2
- package/chunks/chunk-VEXUA6DX.js +1026 -0
- package/chunks/{chunk-ME4JBHSB.js → chunk-VQDWCQOE.js} +2 -0
- package/chunks/{chunk-ZC75SULX.js → chunk-VU3XMZ5I.js} +23 -4
- package/chunks/{chunk-A2UYI473.js → chunk-WL36KHUQ.js} +6 -6
- package/chunks/{chunk-IWOJ2FHG.js → chunk-WNQIJTOP.js} +8 -8
- package/chunks/{chunk-IANIY25T.js → chunk-WSJI6ODG.js} +99 -30
- package/chunks/{chunk-3CKAOJ4L.js → chunk-WZWTY7SG.js} +6 -6
- package/chunks/{chunk-EKMJR7M3.js → chunk-X7AYIXC7.js} +1 -1
- package/chunks/{chunk-IBRQG2MP.js → chunk-XAJZFGD2.js} +11 -11
- package/chunks/{chunk-VRQZESKP.js → chunk-XICCGDWF.js} +2 -2
- package/chunks/{chunk-L5R4D5T4.js → chunk-Y2KJC55Y.js} +12 -7
- package/chunks/{chunk-2S2WIGCM.js → chunk-Y4NNIGYO.js} +1 -1
- package/chunks/{chunk-J7LBAKDH.js → chunk-YL3UJML3.js} +7 -7
- package/chunks/{chunk-GSS4SZNG.js → chunk-YP2K3WOS.js} +40 -56
- package/chunks/{chunk-ZZUXUBEB.js → chunk-YQQ2U7AS.js} +8 -5
- package/chunks/{chunk-FAWTMDX7.js → chunk-YXHY6BKS.js} +15 -0
- package/chunks/{chunk-FIP5QS2U.js → chunk-YZXSDPOQ.js} +140 -39
- package/chunks/{chunk-WATHOB6X.js → chunk-ZFHKUQZ4.js} +3 -3
- package/chunks/{chunk-R5OA3ONY.js → chunk-ZMYKNKET.js} +6 -6
- package/chunks/{codex-subagent-executor-LANZAZPH.js → codex-subagent-executor-AEAIQZDC.js} +48 -49
- package/chunks/{config-utils-CRK2LQPA.js → config-utils-KX2YS725.js} +43 -46
- package/chunks/{contextCommand-GY5X3LIY.js → contextCommand-RV6Y5LNJ.js} +41 -44
- package/chunks/{core-runtime-IJIV2LHP.js → core-runtime-ZI4RTOJQ.js} +45 -48
- package/chunks/{create-sub-session-MNIVRHGB.js → create-sub-session-BBWFQARJ.js} +46 -48
- package/chunks/{daemon-NJB4PWZ7.js → daemon-INCM4VBX.js} +3 -1
- package/chunks/{daemon-git-worktree-guard-W6Z2BGDH.js → daemon-git-worktree-guard-KECEMV6A.js} +39 -42
- package/chunks/{daemon-status-provider-TJF3APU3.js → daemon-status-provider-NULJNAEV.js} +53 -56
- package/chunks/{daemon-trust-policy-6INCISDU.js → daemon-trust-policy-S4KWGPV3.js} +47 -50
- package/chunks/{daemon-trust-policy-monitor-JRTAQG54.js → daemon-trust-policy-monitor-546N5ZVL.js} +47 -50
- package/chunks/{de-VGY3VNBU.js → de-6AVKPTXQ.js} +11 -0
- package/chunks/{deferred-core-runtime-2JRTPTNM.js → deferred-core-runtime-T23ZT443.js} +39 -42
- package/chunks/{dist-NIOJXMGY.js → dist-4P3ZJYGI.js} +1 -1
- package/chunks/{dist-VDLSBCLM.js → dist-7MGRENQ5.js} +1 -1
- package/chunks/{dist-SE4J6Z4O.js → dist-BNW423XT.js} +326 -77
- package/chunks/{dist-TFGETXFN.js → dist-CESMUYGN.js} +4 -4
- package/chunks/{dist-MPUZZOG5.js → dist-DBBOFWSC.js} +1 -1
- package/chunks/{dist-T6DDPDLQ.js → dist-G5UMXIGF.js} +1 -1
- package/chunks/{dist-PA7WPFVE.js → dist-UXVNLQHG.js} +3 -3
- package/chunks/{dist-GUB7QRYA.js → dist-VA4LREAQ.js} +2 -2
- package/chunks/{dist-2QYIVNS6.js → dist-XDRTR4QP.js} +1 -1
- package/chunks/{edit-JDIXXCYB.js → edit-CMSQB7NP.js} +27 -30
- package/chunks/{en-E5ZO5TZW.js → en-56QLKXS2.js} +23 -1
- package/chunks/{enter-worktree-CAARFWBI.js → enter-worktree-DA6A4XC5.js} +3 -3
- package/chunks/{enterPlanMode-YTNTBZBN.js → enterPlanMode-UDPMNESD.js} +27 -30
- package/chunks/{environment-UAI5L52V.js → environment-TSQJUTPV.js} +42 -45
- package/chunks/{errors-J4UCDCW5.js → errors-RIVYJS6T.js} +41 -44
- package/chunks/{exit-worktree-JXGGUOBP.js → exit-worktree-4H6Z2VQI.js} +3 -3
- package/chunks/{exitPlanMode-YMWJ2EO7.js → exitPlanMode-BYBBFN2T.js} +27 -30
- package/chunks/{fast-path-MBAN7TK3.js → fast-path-F2CYDDZ4.js} +4 -4
- package/chunks/{fast-path-settings-XDYX7X5Z.js → fast-path-settings-N2VGRGDJ.js} +2 -2
- package/chunks/{fr-UAZJJH5N.js → fr-EBUDHJL3.js} +11 -0
- package/chunks/{glob-YEM24E3Z.js → glob-Z2JMJKKN.js} +27 -30
- package/chunks/{goal-tools-LJIVH5T6.js → goal-tools-HXVVLGCV.js} +27 -30
- package/chunks/{handleAutoUpdate-DYCSYDYL.js → handleAutoUpdate-FZP45KOR.js} +43 -46
- package/chunks/{i18n-PTAV7SN3.js → i18n-OTB62AKW.js} +40 -43
- package/chunks/{image-gen-5G2TQ3DY.js → image-gen-HIAZCB5T.js} +6 -7
- package/chunks/{initializer-MPXTKQA4.js → initializer-4JXZEC4B.js} +47 -50
- package/chunks/{installationInfo-U5EFA3OL.js → installationInfo-2IJV5QKC.js} +39 -42
- package/chunks/{ja-2RITCMAJ.js → ja-NCDT4CGV.js} +11 -0
- package/chunks/{list-YOE25QUI.js → list-KQSQ4A5G.js} +50 -53
- package/chunks/{llm-ZZ2WNQMC.js → llm-LSUBOJAR.js} +154 -974
- package/chunks/{llm-content-generator-CG2HRJZC.js → llm-content-generator-MLIONRXE.js} +17 -12
- package/chunks/{loadedSettingsAdapter-NPGWGURF.js → loadedSettingsAdapter-TZTTNRHI.js} +47 -50
- package/chunks/{loggingContentGenerator-TUL6SJVL.js → loggingContentGenerator-TUPEXFMM.js} +31 -34
- package/chunks/{loop-wakeup-VG6CGBQA.js → loop-wakeup-ZBVRI6VH.js} +1 -1
- package/chunks/{managed-npm-update-YUDSCJP3.js → managed-npm-update-WEA5XMFZ.js} +40 -43
- package/chunks/{mcp-EX3GDQVO.js → mcp-TFDTUPIA.js} +47 -50
- package/chunks/{model-configuration-6DEKTXJI.js → model-configuration-ZCAKKIOF.js} +48 -51
- package/chunks/{modelConfigUtils-4NA2MHEE.js → modelConfigUtils-J3ZPW7ZK.js} +41 -44
- package/chunks/{monitor-PPUGNAWR.js → monitor-CI7YE7MT.js} +29 -32
- package/chunks/{nonInteractiveCli-6TW2XYP5.js → nonInteractiveCli-GPT3TVOK.js} +96 -98
- package/chunks/{notebook-edit-4MUXHZHT.js → notebook-edit-3WCVRNGL.js} +27 -30
- package/chunks/{openaiContentGenerator-5J73W5XZ.js → openaiContentGenerator-OGILGUZE.js} +12 -17
- package/chunks/{openaiResponsesContentGenerator-AWRYZLJU.js → openaiResponsesContentGenerator-NXOXUPFM.js} +45 -13
- package/chunks/{pidfile-M7WELKBB.js → pidfile-GBTBIGHF.js} +39 -42
- package/chunks/{process-registry-X6ZCASEN.js → process-registry-7LAPI3ZB.js} +1 -1
- package/chunks/{processUtils-SPRINFNY.js → processUtils-O4II3RYH.js} +2 -2
- package/chunks/{prompt-terminal-ledger-25BRD7FX.js → prompt-terminal-ledger-ILIXZI3E.js} +40 -43
- package/chunks/{pt-5ZF7ZQUV.js → pt-FYYFWYUC.js} +11 -0
- package/chunks/{qwenContentGenerator-H5AAKXPC.js → qwenContentGenerator-I4LRYADV.js} +33 -36
- package/chunks/{qwenOAuth2-WIEUEFEY.js → qwenOAuth2-3J66TOT5.js} +6 -7
- package/chunks/{read-file-ILGEFPB3.js → read-file-G4XKW2CS.js} +5 -9
- package/chunks/{record-artifact-PXMNP7GZ.js → record-artifact-L3CFJOMA.js} +2 -2
- package/chunks/{report-findings-W6GR7SYZ.js → report-findings-LY5HQY4K.js} +3 -3
- package/chunks/{resumeHistoryUtils-RB52QOCH.js → resumeHistoryUtils-YPJU4XFE.js} +44 -47
- package/chunks/{ripGrep-O6QAFHQK.js → ripGrep-AAKMALLM.js} +7 -11
- package/chunks/{ru-7BNZFQKG.js → ru-RHEB3RNS.js} +11 -0
- package/chunks/{run-qwen-serve-5NO3TKUL.js → run-qwen-serve-ZVEKGS7Y.js} +177 -98
- package/chunks/{runtime-G2YUYMSZ.js → runtime-SJCRYNPA.js} +52 -55
- package/chunks/safe-mode-KLGUG54M.js +11 -0
- package/chunks/sandbox-UIXL423Z.js +146 -0
- package/chunks/sandboxConfig-CY343YNJ.js +114 -0
- package/chunks/{scheduled-tasks-HDHV3URA.js → scheduled-tasks-5UGBEVNZ.js} +50 -53
- package/chunks/{scheduler-6MDJX2ZK.js → scheduler-GCZYLZ2P.js} +41 -44
- package/chunks/{sdk-exporters-http-3R2TRQHE.js → sdk-exporters-http-DR4G663K.js} +1 -1
- package/chunks/{sdk-impl-4WF3VZ2F.js → sdk-impl-SJR26MQF.js} +3 -3
- package/chunks/{send-message-UMJKN27Q.js → send-message-DN76MXDX.js} +6 -6
- package/chunks/{serve-Z2EJQYKB.js → serve-2XXQLVK2.js} +48 -51
- package/chunks/{server-JTNBK3LH.js → server-UHMKPCAZ.js} +408 -211
- package/chunks/{session-5YK2BXH4.js → session-ZLUK7E4P.js} +108 -108
- package/chunks/{session-attachments-root-QO3VFJS6.js → session-attachments-root-DHQM5IEZ.js} +39 -42
- package/chunks/{session-pr-refresh-OTK3HCJZ.js → session-pr-refresh-3OMTQWCZ.js} +48 -51
- package/chunks/{settings-2VKLACYV.js → settings-P4DHIIUP.js} +50 -53
- package/chunks/{shell-64NAVGMS.js → shell-IMFUVQQ5.js} +27 -30
- package/chunks/{skill-R3ALMLLM.js → skill-NB5RJGZW.js} +7 -11
- package/chunks/{skill-settings-HZ34TUMP.js → skill-settings-IXG5CTQO.js} +47 -50
- package/chunks/{spawnChannel-XGFWHEIK.js → spawnChannel-Q3YALTCJ.js} +44 -45
- package/chunks/{standalone-update-R32Y3XRR.js → standalone-update-H5OJ7MM7.js} +41 -44
- package/chunks/{start-opentui-ui-YGJOUE2H.js → start-opentui-ui-JKAIWGF7.js} +733 -386
- package/chunks/{startInteractiveUI-5ZEVKSFF.js → startInteractiveUI-YRPOT6GH.js} +370 -337
- package/chunks/task-create-75HVPEAH.js +1 -1
- package/chunks/{team-create-GCVUXJLE.js → team-create-2XTBYRJF.js} +31 -34
- package/chunks/{team-plan-approval-NOL62FJD.js → team-plan-approval-CFNWW7ZQ.js} +27 -30
- package/chunks/{terminal-image-renderer-WG5TLPGC.js → terminal-image-renderer-UDPJPGPQ.js} +39 -42
- package/chunks/{theme-manager-HDS4YFPW.js → theme-manager-SK57EKMO.js} +39 -42
- package/chunks/{tool-search-HMT5GYUR.js → tool-search-ZHTJU2MV.js} +5 -9
- package/chunks/{total-session-admission-Y5RCHEXO.js → total-session-admission-UUZBDQCG.js} +47 -50
- package/chunks/{tree-sitter-LSORDVZ3.js → tree-sitter-4D7QS7F6.js} +1 -1
- package/chunks/{tree-sitter-bash-UARELQ6C.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
- package/chunks/{trustedFolders-3Y2WCXMR.js → trustedFolders-4LDBLNTS.js} +40 -43
- package/chunks/{update-relaunch-MTJ32SLF.js → update-relaunch-LI7GRP36.js} +5 -5
- package/chunks/{updateCheck-YFX3VY6O.js → updateCheck-PKSSORPO.js} +43 -46
- package/chunks/{useAutoAcceptIndicator-FCHNQPMD.js → useAutoAcceptIndicator-I32UEQPI.js} +50 -53
- package/chunks/{validateNonInterActiveAuth-HUFQKCGG.js → validateNonInterActiveAuth-YFPCYYNL.js} +93 -95
- package/chunks/{version-S5TGWCA3.js → version-4MTL4JVU.js} +1 -1
- package/chunks/{web-fetch-23M7BYHB.js → web-fetch-O6RG6ISB.js} +9 -13
- package/chunks/{web-search-F5PNIQUA.js → web-search-JHAXVEMD.js} +9 -14
- package/chunks/{web-shell-static-T7UGLVE4.js → web-shell-static-FFWCUUZS.js} +8 -4
- package/chunks/{workflow-BLJLID2C.js → workflow-O7L6VDYU.js} +396 -113
- package/chunks/{workspace-providers-status-UH7KLZDT.js → workspace-providers-status-WRX6CJM4.js} +53 -56
- package/chunks/{workspace-registration-store-3SA3V7BA.js → workspace-registration-store-7G4E7YPY.js} +1 -1
- package/chunks/{workspace-registry-C6C6EKQ5.js → workspace-registry-SXIMGT4D.js} +47 -50
- package/chunks/{workspace-runtime-coordinator-RAI6XDJB.js → workspace-runtime-coordinator-7DOEHXYT.js} +47 -50
- package/chunks/{workspace-service-H7UTJYJU.js → workspace-service-HDXOZMYC.js} +53 -56
- package/chunks/{workspace-skills-status-FPVC7XXK.js → workspace-skills-status-VN4L37CA.js} +50 -53
- package/chunks/{workspace-trust-reconciler-JS7A6UIF.js → workspace-trust-reconciler-XEBW5FUL.js} +57 -60
- package/chunks/{write-file-GQGG7NBQ.js → write-file-LKX4ETIO.js} +29 -32
- package/chunks/{zh-V2EYTYJP.js → zh-F76MZTL3.js} +23 -1
- package/chunks/{zh-TW-7PRVUGLW.js → zh-TW-S3YTQ4DS.js} +23 -1
- package/chunks/{zoom-image-EC43KL4H.js → zoom-image-RDPRTP4B.js} +5 -9
- package/cli.js +19 -15
- package/export-transcript-document.css +1 -1
- package/export-transcript-document.js +151 -150
- package/locales/ca.js +19 -2
- package/locales/de.js +18 -0
- package/locales/en.js +33 -2
- package/locales/fr.js +18 -0
- package/locales/ja.js +18 -0
- package/locales/pt.js +18 -0
- package/locales/ru.js +18 -0
- package/locales/zh-TW.js +33 -2
- package/locales/zh.js +33 -2
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-BtpzKw3A.js → abnfDiagram-VCTEODGH-RxykUDmi.js} +1 -1
- package/web-shell/assets/{arc-CQiVKZJP.js → arc-CZpgGCJC.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-ekIPBb2d.js → architectureDiagram-5GKGNRK7-BHSMzNDT.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-BrRWkWri.js → blockDiagram-NRAW4CY4-Bn4mF9SZ.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-qYS8CYZ3.js → c4Diagram-UCG6FXSJ-CBM-Bj6t.js} +1 -1
- package/web-shell/assets/channel-DFYs_LlK.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-ZasyyEZm.js → chunk-2Q5K7J3B-D5Fin58O.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-C_IzCGeA.js → chunk-5VM5RSS4-CY05weF7.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-C25NZOyD.js → chunk-F27PBJKO-3neZnj5Y.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-XPOHNSGX.js → chunk-G27WJ6UU-Cd7EU4BE.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-BQBh0Xni.js → chunk-JWPE2WC7-DwK1mqFw.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-CoShjpX7.js → chunk-LCL6LL3I-Sl7vY22C.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-BwRmCDSz.js → chunk-POPQ4Y6H-BXNzpbVg.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-DSzE5-Mw.js → chunk-SVP7TREG-DjjButcp.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-BQSQv30h.js → chunk-XXDRQBXY-DNOiCjOJ.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DnGrKXoM.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DnGrKXoM.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-XVUVTHVo.js → cose-bilkent-JH36ORCC-BUnker7a.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-CrsKx4lQ.js → cynefin-OW5HDTMX-DcUgdWE5.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BPeZEuHw.js → cynefinDiagram-5FMLGOSQ-CvDKsZsL.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-D31cQ2Qs.js → dagre-3AP2YEHR-jpCmUbr1.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-zyiG097Q.js → diagram-S7CK7UJ4-DBe_bKE5.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-Br3vtfsy.js → diagram-UQ7AKVKN-oXvPpDgs.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-Bxkhjx4u.js → diagram-VSXAHHWV-BD7-_SGh.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-BQH8QiDk.js → diagram-VX7I27RA-DOJL0wub.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-B_aQ1cw0.js → diagram-Z3DM3KII-DRIiodDD.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-B9N7BRQE.js → ebnfDiagram-PWID7BFC-Db31Ulmb.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-Cx6Hb1Re.js → erDiagram-SSCWMZ5O-CVHhwI2_.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-DTuLP7GU.js → flowDiagram-A5DVABFB-DWOFy1FK.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DYS3d-sL.js → ganttDiagram-EL5Y4UJY-C0sxQtPd.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Cp0EGx04.js → gitGraphDiagram-WWUBYQGX-CNituBYC.js} +1 -1
- package/web-shell/assets/index-B15NlwB8.js +2213 -0
- package/web-shell/assets/index-BSrS0tQ6.css +36 -0
- package/web-shell/assets/{index-45-LkPDB.js → index-gm9tLk7h.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-9--kukiT.js → infoDiagram-RXCK75RN-CxhJYtIR.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CGBdsDLD.js → ishikawaDiagram-5VMMS53U-By2mchUy.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DeXhcscd.js → journeyDiagram-EYS64GPL-CVH-OweI.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-CFdvsU3b.js → kanban-definition-3QL26DDD-Cc9dQXLy.js} +1 -1
- package/web-shell/assets/knowledge-Dg9788h4.svg +1 -0
- package/web-shell/assets/{layout-DAnwQ3KB.js → layout-C_60ysHw.js} +1 -1
- package/web-shell/assets/{linear-CTo7v7Nh.js → linear-BvAVfqwu.js} +1 -1
- package/web-shell/assets/{mermaid.core-jggSxF1i.js → mermaid.core-C3CoBKAc.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DzIepvlJ.js → mindmap-definition-FBJOCRG2-Cuu8Q8LM.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BFGS9GJv.js → pegDiagram-XKGWAZYB-DmAeyDO2.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-B2UUcNIT.js → pieDiagram-E7YTZNPT-B7vbB_xv.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-BgM6htrX.js → quadrantDiagram-AXDQQJYC-BqOBkRR7.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-Dk9cS7N-.js → railroadDiagram-O6MQD6OU-sI06lZIu.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C9oRg7xi.js → requirementDiagram-EFPCY7ZU-Bg13d10S.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-B-_c7GzI.js → sankeyDiagram-P5KCCOFB-WFOzZHrR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-R0M-347u.js → sequenceDiagram-WJ2MYXX4-CCdRbA4E.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-Df0f8UAW.js → sizeCapture-X5ZJPWSS-BH5F3bGg.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-CsUEfAA-.js → stateDiagram-HBIQ2CUA-NwS2X3QB.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-1aU2JZXO.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-9OGHVSrx.js → swimlanes-XN3QIQJK-Bm38pM28.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Dp-u6kQG.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-DAfGqS2B.js → timeline-definition-24CTP7MA-Do-agLSo.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-CKATpwHi.js → vennDiagram-4TSXK5OY-aggLfZzl.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CQHdhTrm.js → wardleyDiagram-VM6X3IG4-D5JR3mXX.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-5k9NLqlY.js → xychartDiagram-S5SC5T6Z-DhtLDuXs.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-4OQSG35W.js +0 -1416
- package/chunks/chunk-7MIBD3LG.js +0 -137
- package/chunks/chunk-ARDHE6MM.js +0 -235
- package/chunks/chunk-C75BXMPM.js +0 -169
- package/chunks/chunk-ERU3SDXT.js +0 -27
- package/chunks/chunk-FPGTNKCP.js +0 -251
- package/chunks/chunk-JIJ65YKA.js +0 -2812
- package/chunks/chunk-JL6APGBX.js +0 -43
- package/chunks/chunk-SGXJQP5Q.js +0 -4172
- package/chunks/chunk-TPEV2QHG.js +0 -514
- package/chunks/chunk-YVWS4SLL.js +0 -137
- package/web-shell/assets/channel-DSQQnOZj.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-V94ta08R.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-V94ta08R.js +0 -1
- package/web-shell/assets/index-H8um-iEl.js +0 -2207
- package/web-shell/assets/index-n6N-2a3v.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-CnSuTPJ2.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Bb7TcWQw.js +0 -8
- package/chunks/{chunk-QZW6WRB7.js → chunk-5NUKK2DT.js} +2 -2
- package/chunks/{chunk-JS73NNWF.js → chunk-FUSEMYFX.js} +0 -0
- package/chunks/{chunk-SVWWF5TZ.js → chunk-WVURIAEE.js} +3 -3
- package/chunks/{task-update-RI7QNVDP.js → task-update-3LSYQDRW.js} +4 -4
|
@@ -8,7 +8,9 @@ import {
|
|
|
8
8
|
addShellCommandToLlmHistory,
|
|
9
9
|
computeWindowTitle,
|
|
10
10
|
editorSettingsManager,
|
|
11
|
+
extensionComponentsSummary,
|
|
11
12
|
fmtTokens,
|
|
13
|
+
formatSourceLabel,
|
|
12
14
|
getScopeItems,
|
|
13
15
|
getScopeMessageForSetting,
|
|
14
16
|
getSeriesColors,
|
|
@@ -28,46 +30,15 @@ import {
|
|
|
28
30
|
useProviderSetupFlow,
|
|
29
31
|
useTimer,
|
|
30
32
|
writeTerminalTitle
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
33
|
+
} from "./chunk-WSJI6ODG.js";
|
|
34
|
+
import "./chunk-2GP6BQ2J.js";
|
|
35
|
+
import "./chunk-HYHSMTRA.js";
|
|
34
36
|
import {
|
|
35
37
|
startPostRenderPrefetches
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import {
|
|
38
|
-
STATUS_LINE_PRESET_ITEMS,
|
|
39
|
-
SessionStatsProvider,
|
|
40
|
-
TOOL_DISPLAY_BY_NAME,
|
|
41
|
-
TOOL_SUCCESS_RATE_HIGH,
|
|
42
|
-
TOOL_SUCCESS_RATE_MEDIUM,
|
|
43
|
-
flattenModelsBySource,
|
|
44
|
-
formatDuration as formatDuration2,
|
|
45
|
-
formatTokenCount as formatTokenCount2,
|
|
46
|
-
getArenaStatusLabel,
|
|
47
|
-
getStatusColor,
|
|
48
|
-
keyMatchers,
|
|
49
|
-
useSessionStats
|
|
50
|
-
} from "./chunk-DWKFTUGI.js";
|
|
51
|
-
import {
|
|
52
|
-
ICON,
|
|
53
|
-
SPINNER_FRAMES,
|
|
54
|
-
SPINNER_INTERVAL_MS,
|
|
55
|
-
TOOL_STATUS,
|
|
56
|
-
applyCollapsePolicyAndSummary,
|
|
57
|
-
buildResumedHistoryItems,
|
|
58
|
-
coalesceFindingsHistoryItems,
|
|
59
|
-
isFindingsListDisplay,
|
|
60
|
-
shouldDisplayGoalStateCause,
|
|
61
|
-
waitForGoalRuntime,
|
|
62
|
-
wrapAnsi
|
|
63
|
-
} from "./chunk-LTINUI3O.js";
|
|
64
|
-
import {
|
|
65
|
-
stopAndGetCapturedInput
|
|
66
|
-
} from "./chunk-EWNKP4V4.js";
|
|
38
|
+
} from "./chunk-IKBEIDOH.js";
|
|
67
39
|
import {
|
|
68
40
|
emitAutoModeEntryNotices
|
|
69
|
-
} from "./chunk-
|
|
70
|
-
import "./chunk-67ZDP7UX.js";
|
|
41
|
+
} from "./chunk-V4JJAVHQ.js";
|
|
71
42
|
import {
|
|
72
43
|
fireSessionDeleteHook
|
|
73
44
|
} from "./chunk-L34XSHIZ.js";
|
|
@@ -76,12 +47,13 @@ import {
|
|
|
76
47
|
handleAtCommand,
|
|
77
48
|
normalizeDescription,
|
|
78
49
|
sanitizeDisplayText
|
|
79
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-WNQIJTOP.js";
|
|
80
51
|
import {
|
|
81
52
|
BuiltinCommandLoader,
|
|
82
53
|
BundledSkillLoader,
|
|
83
54
|
CONTEXT_FILES_ANNOUNCEMENT_PREFIX,
|
|
84
55
|
CommandService,
|
|
56
|
+
DISPLAY_HOOK_EVENTS,
|
|
85
57
|
FileCommandLoader,
|
|
86
58
|
MAX_STACKED_SKILLS,
|
|
87
59
|
McpPromptLoader,
|
|
@@ -95,6 +67,7 @@ import {
|
|
|
95
67
|
findMidInputSlashCommand,
|
|
96
68
|
formatApprovalModeName,
|
|
97
69
|
formatUserPromptExpansionBlockedMessage,
|
|
70
|
+
getHookShortDescription,
|
|
98
71
|
hasBlockingBackgroundWork,
|
|
99
72
|
hasSlashCommandPathSeparator,
|
|
100
73
|
isAtCommand,
|
|
@@ -105,17 +78,36 @@ import {
|
|
|
105
78
|
isStackedSkillCompletableCommand,
|
|
106
79
|
isValidStackedSkillPrefix,
|
|
107
80
|
loadSessionOutputStyles,
|
|
81
|
+
normalizeMatcher,
|
|
108
82
|
parseSlashCommand,
|
|
109
83
|
parseStackedSlashCommands,
|
|
110
84
|
recordAutoSkillCommandUsage,
|
|
111
85
|
refreshExtensionContentRuntime,
|
|
112
86
|
resetBackgroundStateForSessionSwitch,
|
|
113
|
-
serializeUserPromptExpansionPrompt
|
|
114
|
-
|
|
87
|
+
serializeUserPromptExpansionPrompt,
|
|
88
|
+
supportsMatchers
|
|
89
|
+
} from "./chunk-HX4WXX3H.js";
|
|
115
90
|
import {
|
|
116
91
|
EXTENSION_RELOAD_FAILED_REASON,
|
|
117
92
|
ExtensionRefreshState
|
|
118
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-CXY6BICQ.js";
|
|
94
|
+
import "./chunk-NYX53SV4.js";
|
|
95
|
+
import "./chunk-TPY6HW55.js";
|
|
96
|
+
import {
|
|
97
|
+
STATUS_LINE_PRESET_ITEMS,
|
|
98
|
+
SessionStatsProvider,
|
|
99
|
+
TOOL_DISPLAY_BY_NAME,
|
|
100
|
+
TOOL_SUCCESS_RATE_HIGH,
|
|
101
|
+
TOOL_SUCCESS_RATE_MEDIUM,
|
|
102
|
+
flattenModelsBySource,
|
|
103
|
+
formatDuration as formatDuration2,
|
|
104
|
+
formatTokenCount as formatTokenCount2,
|
|
105
|
+
getArenaStatusLabel,
|
|
106
|
+
getStatusColor,
|
|
107
|
+
keyMatchers,
|
|
108
|
+
useSessionStats
|
|
109
|
+
} from "./chunk-OALXNGUA.js";
|
|
110
|
+
import "./chunk-M22WLKLI.js";
|
|
119
111
|
import {
|
|
120
112
|
calculateCost,
|
|
121
113
|
computeSessionStats,
|
|
@@ -128,31 +120,37 @@ import {
|
|
|
128
120
|
getSystemInfoFields,
|
|
129
121
|
levelLabel,
|
|
130
122
|
redactProxy
|
|
131
|
-
} from "./chunk-
|
|
132
|
-
import {
|
|
133
|
-
contextUsageLabel,
|
|
134
|
-
formatDuration,
|
|
135
|
-
formatPercentageUsed,
|
|
136
|
-
formatTokenCount
|
|
137
|
-
} from "./chunk-YGFJ6BRT.js";
|
|
138
|
-
import "./chunk-NYX53SV4.js";
|
|
123
|
+
} from "./chunk-Y2KJC55Y.js";
|
|
139
124
|
import {
|
|
140
125
|
CTRL_EXIT_PROMPT_DURATION_MS,
|
|
141
126
|
cleanupOldClipboardImages,
|
|
142
127
|
clipboardHasImage,
|
|
143
128
|
saveClipboardImage
|
|
144
|
-
} from "./chunk-
|
|
145
|
-
import "./chunk-ZOQ6HC7U.js";
|
|
129
|
+
} from "./chunk-OSG23MR3.js";
|
|
146
130
|
import "./chunk-4WGODMVR.js";
|
|
147
|
-
import
|
|
131
|
+
import {
|
|
132
|
+
ICON,
|
|
133
|
+
SPINNER_FRAMES,
|
|
134
|
+
SPINNER_INTERVAL_MS,
|
|
135
|
+
TOOL_STATUS,
|
|
136
|
+
applyCollapsePolicyAndSummary,
|
|
137
|
+
buildResumedHistoryItems,
|
|
138
|
+
coalesceFindingsHistoryItems,
|
|
139
|
+
isFindingsListDisplay,
|
|
140
|
+
shouldDisplayGoalStateCause,
|
|
141
|
+
waitForGoalRuntime,
|
|
142
|
+
wrapAnsi
|
|
143
|
+
} from "./chunk-36NRLIR6.js";
|
|
144
|
+
import {
|
|
145
|
+
contextUsageLabel,
|
|
146
|
+
formatDuration,
|
|
147
|
+
formatPercentageUsed,
|
|
148
|
+
formatTokenCount
|
|
149
|
+
} from "./chunk-AZCTY64Z.js";
|
|
148
150
|
import "./chunk-4LIPOIXS.js";
|
|
149
151
|
import {
|
|
150
152
|
require_jsx_runtime
|
|
151
153
|
} from "./chunk-SV5PQVQE.js";
|
|
152
|
-
import {
|
|
153
|
-
AUTO_THEME_NAME,
|
|
154
|
-
themeManager
|
|
155
|
-
} from "./chunk-2XRE4KE4.js";
|
|
156
154
|
import {
|
|
157
155
|
require_constants,
|
|
158
156
|
require_react_reconciler
|
|
@@ -160,25 +158,33 @@ import {
|
|
|
160
158
|
import {
|
|
161
159
|
require_react
|
|
162
160
|
} from "./chunk-5QWWOFGG.js";
|
|
163
|
-
import
|
|
161
|
+
import {
|
|
162
|
+
stopAndGetCapturedInput
|
|
163
|
+
} from "./chunk-EWNKP4V4.js";
|
|
164
164
|
import "./chunk-C4HBZQNH.js";
|
|
165
165
|
import {
|
|
166
166
|
setUpdateHandler
|
|
167
|
-
} from "./chunk-
|
|
167
|
+
} from "./chunk-GI7SLDOI.js";
|
|
168
168
|
import "./chunk-EKTCKZV5.js";
|
|
169
|
-
import
|
|
169
|
+
import {
|
|
170
|
+
AUTO_THEME_NAME,
|
|
171
|
+
themeManager
|
|
172
|
+
} from "./chunk-2XRE4KE4.js";
|
|
173
|
+
import "./chunk-KW7NOTN6.js";
|
|
174
|
+
import "./chunk-FBY32737.js";
|
|
175
|
+
import {
|
|
176
|
+
getErrorMessage as getErrorMessage2
|
|
177
|
+
} from "./chunk-B6RMK4ED.js";
|
|
178
|
+
import "./chunk-QT6Z2IBF.js";
|
|
179
|
+
import "./chunk-UQGRJTDK.js";
|
|
170
180
|
import "./chunk-YAF2MQZ6.js";
|
|
181
|
+
import "./chunk-B5TJK7B3.js";
|
|
171
182
|
import "./chunk-24FVUD5P.js";
|
|
172
|
-
import "./chunk-
|
|
183
|
+
import "./chunk-ZMYKNKET.js";
|
|
173
184
|
import "./chunk-6H67XLET.js";
|
|
174
|
-
import "./chunk-
|
|
175
|
-
import {
|
|
176
|
-
getErrorMessage as getErrorMessage2
|
|
177
|
-
} from "./chunk-HXMDDII6.js";
|
|
178
|
-
import "./chunk-GMCEFKNR.js";
|
|
185
|
+
import "./chunk-HNFKYKHH.js";
|
|
179
186
|
import "./chunk-M3JGHRMQ.js";
|
|
180
187
|
import "./chunk-VFFQAOPR.js";
|
|
181
|
-
import "./chunk-2S2WIGCM.js";
|
|
182
188
|
import {
|
|
183
189
|
cpLen,
|
|
184
190
|
escapeAnsiCtrlCodes,
|
|
@@ -190,63 +196,64 @@ import {
|
|
|
190
196
|
toCodePoints,
|
|
191
197
|
truncateToWidth
|
|
192
198
|
} from "./chunk-47ECGEJC.js";
|
|
199
|
+
import "./chunk-Y4NNIGYO.js";
|
|
193
200
|
import "./chunk-2MIN6GRR.js";
|
|
194
201
|
import "./chunk-QHTIBUWB.js";
|
|
195
202
|
import "./chunk-TXASDT2M.js";
|
|
196
203
|
import "./chunk-PB7JBAHF.js";
|
|
197
204
|
import "./chunk-DMEUXLSS.js";
|
|
198
205
|
import "./chunk-4VQBQLIZ.js";
|
|
206
|
+
import "./chunk-7D4CV7JH.js";
|
|
199
207
|
import {
|
|
200
208
|
isValidSessionId
|
|
201
209
|
} from "./chunk-ZEZKIS2K.js";
|
|
202
210
|
import {
|
|
203
211
|
formatUnsupportedVoiceModelMessage,
|
|
204
212
|
isSelectableVoiceModel
|
|
205
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-KVC7HZWK.js";
|
|
206
214
|
import "./chunk-Y53DG2HA.js";
|
|
215
|
+
import {
|
|
216
|
+
getExtendedSystemInfo
|
|
217
|
+
} from "./chunk-FX6PZBOV.js";
|
|
218
|
+
import "./chunk-3LLEB5CU.js";
|
|
207
219
|
import {
|
|
208
220
|
getReasoningEffortsForConfig
|
|
209
|
-
} from "./chunk-
|
|
210
|
-
import "./chunk-
|
|
211
|
-
import "./chunk-
|
|
221
|
+
} from "./chunk-4QPVZA5J.js";
|
|
222
|
+
import "./chunk-UZSB57EV.js";
|
|
223
|
+
import "./chunk-4FLUQWJ4.js";
|
|
224
|
+
import "./chunk-D7JMO2GP.js";
|
|
225
|
+
import "./chunk-WZWTY7SG.js";
|
|
226
|
+
import "./chunk-E2VSBAFA.js";
|
|
227
|
+
import "./chunk-57OAHC2Y.js";
|
|
228
|
+
import "./chunk-SYMXYRM5.js";
|
|
229
|
+
import "./chunk-U4AASWUQ.js";
|
|
230
|
+
import "./chunk-LFKXIOGC.js";
|
|
212
231
|
import {
|
|
213
232
|
createLoadedSettingsAdapter
|
|
214
|
-
} from "./chunk-
|
|
215
|
-
import
|
|
216
|
-
getExtendedSystemInfo
|
|
217
|
-
} from "./chunk-HVSRWLOW.js";
|
|
218
|
-
import "./chunk-QS5Q5F42.js";
|
|
219
|
-
import "./chunk-7U5G6JXI.js";
|
|
233
|
+
} from "./chunk-FIJODK52.js";
|
|
234
|
+
import "./chunk-KWYTSSTJ.js";
|
|
220
235
|
import "./chunk-WCCLLK7X.js";
|
|
221
236
|
import "./chunk-LYD3T3H7.js";
|
|
222
|
-
import "./chunk-JO67LVXW.js";
|
|
223
|
-
import "./chunk-INGBUYL6.js";
|
|
224
|
-
import "./chunk-3CKAOJ4L.js";
|
|
225
|
-
import "./chunk-MNRK6MIH.js";
|
|
226
|
-
import "./chunk-57OAHC2Y.js";
|
|
227
|
-
import "./chunk-IAS753HG.js";
|
|
228
|
-
import "./chunk-5ODRE7E5.js";
|
|
229
|
-
import "./chunk-ABNX6E6K.js";
|
|
230
237
|
import "./chunk-V6WHFGST.js";
|
|
231
|
-
import "./chunk-
|
|
238
|
+
import "./chunk-RN6A53UJ.js";
|
|
232
239
|
import "./chunk-6PLDPT2C.js";
|
|
233
240
|
import "./chunk-FYJ7W2PI.js";
|
|
234
241
|
import "./chunk-STUJ7IMZ.js";
|
|
242
|
+
import "./chunk-L3SNMEDW.js";
|
|
235
243
|
import "./chunk-GYTKQYDB.js";
|
|
236
|
-
import "./chunk-WD6YQI5M.js";
|
|
237
244
|
import "./chunk-GDWE23OR.js";
|
|
238
|
-
import "./chunk-RKFGE7JH.js";
|
|
239
245
|
import "./chunk-CJ3DHN5I.js";
|
|
246
|
+
import "./chunk-RKFGE7JH.js";
|
|
240
247
|
import "./chunk-UDG5EZJI.js";
|
|
241
|
-
import "./chunk-3VUENPWF.js";
|
|
242
248
|
import "./chunk-M5GB774H.js";
|
|
249
|
+
import "./chunk-3VUENPWF.js";
|
|
243
250
|
import "./chunk-NFXXBWSE.js";
|
|
244
|
-
import "./chunk-
|
|
245
|
-
import "./chunk-
|
|
251
|
+
import "./chunk-ESBYWATJ.js";
|
|
252
|
+
import "./chunk-PZRXWQUA.js";
|
|
246
253
|
import "./chunk-IJOS26LH.js";
|
|
247
254
|
import {
|
|
248
255
|
loadMcpApprovals
|
|
249
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-WL36KHUQ.js";
|
|
250
257
|
import {
|
|
251
258
|
getDefaultValue,
|
|
252
259
|
getDialogSettingKeys,
|
|
@@ -263,31 +270,23 @@ import {
|
|
|
263
270
|
saveModifiedSettings,
|
|
264
271
|
setPendingSettingValueAny,
|
|
265
272
|
validateSettingValue
|
|
266
|
-
} from "./chunk-
|
|
273
|
+
} from "./chunk-RRI764F7.js";
|
|
274
|
+
import "./chunk-RKUWKYED.js";
|
|
267
275
|
import {
|
|
268
276
|
TOGGLE_TYPES,
|
|
269
277
|
isNumericSettingType
|
|
270
|
-
} from "./chunk-
|
|
271
|
-
import "./chunk-
|
|
278
|
+
} from "./chunk-AUX2FL5T.js";
|
|
279
|
+
import "./chunk-BW4333PP.js";
|
|
280
|
+
import "./chunk-IDS7MSUP.js";
|
|
272
281
|
import {
|
|
273
282
|
t
|
|
274
|
-
} from "./chunk-
|
|
283
|
+
} from "./chunk-GSAOVDTH.js";
|
|
275
284
|
import "./chunk-5EJZE3FP.js";
|
|
276
|
-
import "./chunk-
|
|
285
|
+
import "./chunk-NKTMUPHJ.js";
|
|
286
|
+
import "./chunk-6OTF7TTE.js";
|
|
277
287
|
import "./chunk-2AUM35J5.js";
|
|
278
288
|
import "./chunk-SFL6U7U7.js";
|
|
279
|
-
import "./chunk-
|
|
280
|
-
import "./chunk-IDS7MSUP.js";
|
|
281
|
-
import "./chunk-XX5HQLCZ.js";
|
|
282
|
-
import "./chunk-XFSFZCM5.js";
|
|
283
|
-
import "./chunk-2EAZ43JQ.js";
|
|
284
|
-
import "./chunk-NF5J2WFA.js";
|
|
285
|
-
import {
|
|
286
|
-
formatVersionLabel,
|
|
287
|
-
getCliVersion
|
|
288
|
-
} from "./chunk-54YUXX7X.js";
|
|
289
|
-
import "./chunk-W3N5XAZ6.js";
|
|
290
|
-
import "./chunk-4DTFTPTU.js";
|
|
289
|
+
import "./chunk-NQ272MQG.js";
|
|
291
290
|
import "./chunk-NPQ5ZKRP.js";
|
|
292
291
|
import "./chunk-MR3PXB6E.js";
|
|
293
292
|
import {
|
|
@@ -295,35 +294,32 @@ import {
|
|
|
295
294
|
Fzf,
|
|
296
295
|
buildSessionRecoveryPlan,
|
|
297
296
|
generatePromptSuggestion
|
|
298
|
-
} from "./chunk-
|
|
297
|
+
} from "./chunk-347O2YZJ.js";
|
|
299
298
|
import "./chunk-GELRJXE2.js";
|
|
300
299
|
import "./chunk-32CM56LO.js";
|
|
300
|
+
import "./chunk-XFSFZCM5.js";
|
|
301
|
+
import "./chunk-2EAZ43JQ.js";
|
|
302
|
+
import "./chunk-NF5J2WFA.js";
|
|
303
|
+
import {
|
|
304
|
+
formatVersionLabel,
|
|
305
|
+
getCliVersion
|
|
306
|
+
} from "./chunk-AQP3H22J.js";
|
|
307
|
+
import "./chunk-W3N5XAZ6.js";
|
|
301
308
|
import "./chunk-6WXVEDT2.js";
|
|
302
309
|
import "./chunk-LJZSMWOH.js";
|
|
303
|
-
import
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
findProviderById,
|
|
312
|
-
getDefaultModelIds,
|
|
313
|
-
resolveMetadataKey
|
|
314
|
-
} from "./chunk-JIJ65YKA.js";
|
|
315
|
-
import "./chunk-FHSOZSBO.js";
|
|
316
|
-
import "./chunk-EKMJR7M3.js";
|
|
317
|
-
import "./chunk-EDB556X7.js";
|
|
318
|
-
import "./chunk-QR4Q425T.js";
|
|
319
|
-
import "./chunk-GNKSR3FU.js";
|
|
310
|
+
import "./chunk-VEXUA6DX.js";
|
|
311
|
+
import "./chunk-TXTCM3TC.js";
|
|
312
|
+
import "./chunk-X7AYIXC7.js";
|
|
313
|
+
import "./chunk-TRZ22SG5.js";
|
|
314
|
+
import "./chunk-3BZI5GDP.js";
|
|
315
|
+
import "./chunk-ZPJWUGCS.js";
|
|
316
|
+
import "./chunk-YM6KUQ2S.js";
|
|
317
|
+
import "./chunk-IXO2OCIP.js";
|
|
320
318
|
import "./chunk-DJXSOEFB.js";
|
|
319
|
+
import "./chunk-SFHX5G2S.js";
|
|
321
320
|
import "./chunk-5VQR2DD7.js";
|
|
322
321
|
import "./chunk-BUQN5LTI.js";
|
|
323
|
-
import "./chunk-
|
|
324
|
-
import "./chunk-YM6KUQ2S.js";
|
|
325
|
-
import "./chunk-SGXJQP5Q.js";
|
|
326
|
-
import "./chunk-GFAK6DYU.js";
|
|
322
|
+
import "./chunk-LO2UWNO5.js";
|
|
327
323
|
import {
|
|
328
324
|
CoreToolScheduler,
|
|
329
325
|
DISPLAY_MODE,
|
|
@@ -334,6 +330,7 @@ import {
|
|
|
334
330
|
SessionService,
|
|
335
331
|
ShellExecutionService,
|
|
336
332
|
allowEditorTypeInSandbox,
|
|
333
|
+
buildHooksListing,
|
|
337
334
|
buildHumanReadableRuleLabel,
|
|
338
335
|
checkForExtensionUpdate,
|
|
339
336
|
checkHasEditorType,
|
|
@@ -341,10 +338,10 @@ import {
|
|
|
341
338
|
computeUniqueBranchTitle,
|
|
342
339
|
didWriteProjectContextFile,
|
|
343
340
|
getExtensionDisplayName,
|
|
344
|
-
goalCheckpointHealthLine,
|
|
345
341
|
initParser,
|
|
346
342
|
isEditorAvailable,
|
|
347
343
|
isGatedMcpScope,
|
|
344
|
+
isLegacyMillisecondHookTimeout,
|
|
348
345
|
isSettledStatus,
|
|
349
346
|
isSignalTermination,
|
|
350
347
|
isSuccessStatus,
|
|
@@ -354,33 +351,39 @@ import {
|
|
|
354
351
|
parseRule,
|
|
355
352
|
parseVisionModelSetting,
|
|
356
353
|
refreshMemoryInstruction
|
|
357
|
-
} from "./chunk-
|
|
354
|
+
} from "./chunk-KAYC5FBN.js";
|
|
358
355
|
import "./chunk-GOFAQQZA.js";
|
|
356
|
+
import "./chunk-65I7S4Z3.js";
|
|
359
357
|
import "./chunk-HEOH7JZY.js";
|
|
360
358
|
import "./chunk-TWPJO254.js";
|
|
361
359
|
import "./chunk-CQ35AJ4Z.js";
|
|
362
|
-
import "./chunk-
|
|
360
|
+
import "./chunk-IVFTLUZD.js";
|
|
363
361
|
import "./chunk-7CLLH5TI.js";
|
|
364
362
|
import "./chunk-WK6DEH3Q.js";
|
|
365
363
|
import "./chunk-6PVPNMXU.js";
|
|
366
364
|
import {
|
|
367
|
-
isImageGenerationCapable,
|
|
368
365
|
resolveModelId
|
|
369
|
-
} from "./chunk-
|
|
370
|
-
import "./chunk-
|
|
371
|
-
import "./chunk-GNV2SFO7.js";
|
|
366
|
+
} from "./chunk-DX6JTDMR.js";
|
|
367
|
+
import "./chunk-VQDWCQOE.js";
|
|
372
368
|
import "./chunk-5EZRLTLQ.js";
|
|
373
369
|
import "./chunk-QHWCP53L.js";
|
|
374
370
|
import "./chunk-3LMDSCLU.js";
|
|
371
|
+
import "./chunk-QJNDUTOL.js";
|
|
375
372
|
import "./chunk-O6GEWCJA.js";
|
|
376
373
|
import {
|
|
377
374
|
writeRuntimeStatus
|
|
378
|
-
} from "./chunk-
|
|
379
|
-
import
|
|
380
|
-
|
|
381
|
-
|
|
375
|
+
} from "./chunk-CXONOVBN.js";
|
|
376
|
+
import {
|
|
377
|
+
registerSession
|
|
378
|
+
} from "./chunk-OWUAZXXN.js";
|
|
379
|
+
import "./chunk-CH2YDT6X.js";
|
|
380
|
+
import {
|
|
381
|
+
goalCheckpointHealthLine
|
|
382
|
+
} from "./chunk-P42KMMU6.js";
|
|
383
|
+
import "./chunk-BTICBRPL.js";
|
|
382
384
|
import "./chunk-V545KI73.js";
|
|
383
|
-
import "./chunk-
|
|
385
|
+
import "./chunk-ADN5KESB.js";
|
|
386
|
+
import "./chunk-PPJSG2PU.js";
|
|
384
387
|
import "./chunk-ELRMZTPF.js";
|
|
385
388
|
import "./chunk-U6H3XTFA.js";
|
|
386
389
|
import {
|
|
@@ -390,23 +393,20 @@ import {
|
|
|
390
393
|
formatMemoryUsage
|
|
391
394
|
} from "./chunk-CHEIIBT3.js";
|
|
392
395
|
import "./chunk-AEWCOE64.js";
|
|
393
|
-
import {
|
|
394
|
-
registerSession
|
|
395
|
-
} from "./chunk-OWUAZXXN.js";
|
|
396
|
-
import "./chunk-CH2YDT6X.js";
|
|
397
396
|
import {
|
|
398
397
|
APPROVAL_MODES
|
|
399
398
|
} from "./chunk-JX6XHPTX.js";
|
|
400
399
|
import "./chunk-ZSTCM3MX.js";
|
|
400
|
+
import "./chunk-SK3RZOPS.js";
|
|
401
401
|
import "./chunk-MLXTMF7H.js";
|
|
402
|
-
import "./chunk-
|
|
402
|
+
import "./chunk-36SDZ2Q4.js";
|
|
403
403
|
import {
|
|
404
404
|
NO_EXEC_CONFIG
|
|
405
405
|
} from "./chunk-NXUZFW3G.js";
|
|
406
406
|
import {
|
|
407
407
|
clampInlineMediaPart
|
|
408
408
|
} from "./chunk-WFNEY5G7.js";
|
|
409
|
-
import "./chunk-
|
|
409
|
+
import "./chunk-YP2K3WOS.js";
|
|
410
410
|
import "./chunk-BW2SMO6L.js";
|
|
411
411
|
import "./chunk-S6LOFUVP.js";
|
|
412
412
|
import "./chunk-VVI7MK3V.js";
|
|
@@ -417,20 +417,31 @@ import {
|
|
|
417
417
|
} from "./chunk-IZ2U57NY.js";
|
|
418
418
|
import "./chunk-Z72PLR74.js";
|
|
419
419
|
import "./chunk-NUQ4GK5I.js";
|
|
420
|
-
import "./chunk-
|
|
420
|
+
import "./chunk-DC4ZNGH4.js";
|
|
421
421
|
import "./chunk-NAVJD2PQ.js";
|
|
422
|
-
import "./chunk-
|
|
423
|
-
import "./chunk-
|
|
422
|
+
import "./chunk-3WILPKTJ.js";
|
|
423
|
+
import "./chunk-DRAX5YAI.js";
|
|
424
424
|
import "./chunk-VNOVK4I7.js";
|
|
425
425
|
import "./chunk-S7UQ3V2H.js";
|
|
426
|
-
import "./chunk-JL6APGBX.js";
|
|
427
426
|
import "./chunk-DJ2GSRLV.js";
|
|
428
|
-
import "./chunk-
|
|
429
|
-
import "./chunk-
|
|
430
|
-
import "./chunk-C75BXMPM.js";
|
|
427
|
+
import "./chunk-3XBUCOWS.js";
|
|
428
|
+
import "./chunk-M4U2LTD2.js";
|
|
431
429
|
import "./chunk-KFFCDLKV.js";
|
|
432
430
|
import "./chunk-KP2FHIFR.js";
|
|
433
|
-
import
|
|
431
|
+
import {
|
|
432
|
+
ALIBABA_PROVIDERS,
|
|
433
|
+
THIRD_PARTY_PROVIDERS,
|
|
434
|
+
applyProviderInstallPlan,
|
|
435
|
+
buildInstallPlan,
|
|
436
|
+
customProvider,
|
|
437
|
+
findExistingProviderModels,
|
|
438
|
+
findProviderByCredentials,
|
|
439
|
+
findProviderById,
|
|
440
|
+
getDefaultModelIds,
|
|
441
|
+
isImageGenerationCapable,
|
|
442
|
+
resolveMetadataKey
|
|
443
|
+
} from "./chunk-KEM7MWS7.js";
|
|
444
|
+
import "./chunk-G45B3INR.js";
|
|
434
445
|
import {
|
|
435
446
|
AuthEvent,
|
|
436
447
|
ModelSlashCommandEvent,
|
|
@@ -454,34 +465,30 @@ import {
|
|
|
454
465
|
shouldRunVisionBridge,
|
|
455
466
|
splitImageParts,
|
|
456
467
|
uiTelemetryService
|
|
457
|
-
} from "./chunk-
|
|
468
|
+
} from "./chunk-CDDP4ONL.js";
|
|
458
469
|
import "./chunk-5ETULJLP.js";
|
|
459
|
-
import "./chunk-7MIBD3LG.js";
|
|
460
470
|
import "./chunk-VGC4I5JJ.js";
|
|
461
471
|
import {
|
|
462
472
|
getAllGeminiMdFilenames,
|
|
463
473
|
getUnsupportedImageFormatWarning,
|
|
464
474
|
isSupportedImageMimeType
|
|
465
|
-
} from "./chunk-
|
|
475
|
+
} from "./chunk-5NUKK2DT.js";
|
|
466
476
|
import "./chunk-EDIDYZBT.js";
|
|
467
477
|
import "./chunk-HD7O6WLV.js";
|
|
468
478
|
import "./chunk-CFMZLE3L.js";
|
|
469
479
|
import "./chunk-WZAD4ZNJ.js";
|
|
480
|
+
import "./chunk-TIGXX4PA.js";
|
|
481
|
+
import "./chunk-XFFRI3WM.js";
|
|
470
482
|
import {
|
|
471
483
|
REASONING_EFFORT_TIERS,
|
|
472
484
|
applyReasoningEffort
|
|
473
|
-
} from "./chunk-
|
|
474
|
-
import "./chunk-
|
|
475
|
-
import "./chunk-TIGXX4PA.js";
|
|
476
|
-
import "./chunk-TPEV2QHG.js";
|
|
477
|
-
import "./chunk-XFFRI3WM.js";
|
|
478
|
-
import "./chunk-ERU3SDXT.js";
|
|
479
|
-
import "./chunk-EWJTAP3Y.js";
|
|
485
|
+
} from "./chunk-GJKP6XOB.js";
|
|
486
|
+
import "./chunk-7O5PYQ3M.js";
|
|
480
487
|
import "./chunk-HHJLM3WQ.js";
|
|
481
488
|
import {
|
|
482
489
|
isBinary,
|
|
483
490
|
redactUrlCredentials
|
|
484
|
-
} from "./chunk-
|
|
491
|
+
} from "./chunk-6USYH3EU.js";
|
|
485
492
|
import "./chunk-74TONY4F.js";
|
|
486
493
|
import "./chunk-SYROIHU7.js";
|
|
487
494
|
import {
|
|
@@ -498,16 +505,16 @@ import {
|
|
|
498
505
|
tildeifyPath
|
|
499
506
|
} from "./chunk-ZAFYHRVY.js";
|
|
500
507
|
import "./chunk-TBWQLLFO.js";
|
|
501
|
-
import "./chunk-
|
|
508
|
+
import "./chunk-QIPLWW6Q.js";
|
|
502
509
|
import "./chunk-BSIOCNDK.js";
|
|
510
|
+
import {
|
|
511
|
+
registerCleanup,
|
|
512
|
+
runExitCleanup
|
|
513
|
+
} from "./chunk-H6L4NEAT.js";
|
|
503
514
|
import {
|
|
504
515
|
profileCheckpoint
|
|
505
516
|
} from "./chunk-QILD6R27.js";
|
|
506
517
|
import "./chunk-JVEGA3MM.js";
|
|
507
|
-
import {
|
|
508
|
-
registerCleanup,
|
|
509
|
-
runExitCleanup
|
|
510
|
-
} from "./chunk-XK4UQSIR.js";
|
|
511
518
|
import {
|
|
512
519
|
writeStderrLine,
|
|
513
520
|
writeStdoutLine
|
|
@@ -555,7 +562,7 @@ var require_jsx_dev_runtime = __commonJS({
|
|
|
555
562
|
|
|
556
563
|
// packages/cli/src/ui/opentui/start-opentui-ui.tsx
|
|
557
564
|
init_esbuild_shims();
|
|
558
|
-
var
|
|
565
|
+
var import_react61 = __toESM(require_react(), 1);
|
|
559
566
|
import { stat as stat2 } from "node:fs/promises";
|
|
560
567
|
import { basename as basename3 } from "node:path";
|
|
561
568
|
|
|
@@ -41075,7 +41082,7 @@ __name(useUpdateNoticeFlush, "useUpdateNoticeFlush");
|
|
|
41075
41082
|
|
|
41076
41083
|
// packages/cli/src/ui/opentui/opentui-app-shell.tsx
|
|
41077
41084
|
init_esbuild_shims();
|
|
41078
|
-
var
|
|
41085
|
+
var import_react56 = __toESM(require_react(), 1);
|
|
41079
41086
|
|
|
41080
41087
|
// packages/cli/src/ui/opentui/live-session.ts
|
|
41081
41088
|
init_esbuild_shims();
|
|
@@ -45487,7 +45494,7 @@ var OpenTuiErrorBoundary = class extends import_react18.Component {
|
|
|
45487
45494
|
|
|
45488
45495
|
// packages/cli/src/ui/opentui/opentui-dialog-mount.tsx
|
|
45489
45496
|
init_esbuild_shims();
|
|
45490
|
-
var
|
|
45497
|
+
var import_react46 = __toESM(require_react(), 1);
|
|
45491
45498
|
|
|
45492
45499
|
// packages/cli/src/ui/opentui/help-overlay.tsx
|
|
45493
45500
|
init_esbuild_shims();
|
|
@@ -47088,25 +47095,6 @@ function buildExtensionRows(config) {
|
|
|
47088
47095
|
}));
|
|
47089
47096
|
}
|
|
47090
47097
|
__name(buildExtensionRows, "buildExtensionRows");
|
|
47091
|
-
function extensionComponentsSummary(extension) {
|
|
47092
|
-
const parts = [];
|
|
47093
|
-
const mcpCount = extension.mcpServers ? Object.keys(extension.mcpServers).length : 0;
|
|
47094
|
-
if (mcpCount) parts.push(t("{{count}} MCP", { count: String(mcpCount) }));
|
|
47095
|
-
if (extension.skills?.length)
|
|
47096
|
-
parts.push(
|
|
47097
|
-
t("{{count}} Skills", { count: String(extension.skills.length) })
|
|
47098
|
-
);
|
|
47099
|
-
if (extension.commands?.length)
|
|
47100
|
-
parts.push(
|
|
47101
|
-
t("{{count}} Commands", { count: String(extension.commands.length) })
|
|
47102
|
-
);
|
|
47103
|
-
if (extension.agents?.length)
|
|
47104
|
-
parts.push(
|
|
47105
|
-
t("{{count}} Agents", { count: String(extension.agents.length) })
|
|
47106
|
-
);
|
|
47107
|
-
return parts.length ? parts.join(" \xB7 ") : t("None");
|
|
47108
|
-
}
|
|
47109
|
-
__name(extensionComponentsSummary, "extensionComponentsSummary");
|
|
47110
47098
|
var extensionUnavailable = /* @__PURE__ */ __name(() => ({
|
|
47111
47099
|
message: t("Extensions are not available in this environment."),
|
|
47112
47100
|
changed: false,
|
|
@@ -51010,15 +50998,6 @@ function readHooksEnabled(config, settings) {
|
|
|
51010
50998
|
return config?.getDisableAllHooks ? !config.getDisableAllHooks() : !(settings.merged.disableAllHooks ?? false);
|
|
51011
50999
|
}
|
|
51012
51000
|
__name(readHooksEnabled, "readHooksEnabled");
|
|
51013
|
-
function OpenTuiHooksDialog({ config, settings, onClose }) {
|
|
51014
|
-
useEsc(onClose);
|
|
51015
|
-
const enabled = readHooksEnabled(config, settings);
|
|
51016
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Shell, { title: "Hooks", onClose, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", marginTop: 1, children: [
|
|
51017
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Row2, { label: "Hooks enabled:", value: enabled ? "yes" : "no" }),
|
|
51018
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: "Lifecycle hooks run around tool/session events." })
|
|
51019
|
-
] }) });
|
|
51020
|
-
}
|
|
51021
|
-
__name(OpenTuiHooksDialog, "OpenTuiHooksDialog");
|
|
51022
51001
|
function OpenTuiRewindDialog({ onClose }) {
|
|
51023
51002
|
useEsc(onClose);
|
|
51024
51003
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Shell, { title: "Rewind", onClose, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { flexDirection: "column", marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: "Checkpoints let you rewind the conversation to an earlier turn." }) }) });
|
|
@@ -52814,17 +52793,379 @@ function OpenTuiOutputStyleDialog(props) {
|
|
|
52814
52793
|
}
|
|
52815
52794
|
__name(OpenTuiOutputStyleDialog, "OpenTuiOutputStyleDialog");
|
|
52816
52795
|
|
|
52796
|
+
// packages/cli/src/ui/opentui/dialogs-hooks.tsx
|
|
52797
|
+
init_esbuild_shims();
|
|
52798
|
+
var import_react44 = __toESM(require_react(), 1);
|
|
52799
|
+
var MAX_ROWS = 12;
|
|
52800
|
+
var DETAIL_LABEL_WIDTH = 18;
|
|
52801
|
+
function summarizeHookEvents(rows) {
|
|
52802
|
+
return DISPLAY_HOOK_EVENTS.map((event) => ({
|
|
52803
|
+
event,
|
|
52804
|
+
count: rows.filter((row) => row.eventName === event).length,
|
|
52805
|
+
description: getHookShortDescription(event)
|
|
52806
|
+
}));
|
|
52807
|
+
}
|
|
52808
|
+
__name(summarizeHookEvents, "summarizeHookEvents");
|
|
52809
|
+
function summarizeHookMatchers(rows, event) {
|
|
52810
|
+
const counts = /* @__PURE__ */ new Map();
|
|
52811
|
+
for (const row of rows) {
|
|
52812
|
+
if (row.eventName !== event) continue;
|
|
52813
|
+
const matcher = normalizeMatcher(row.matcher);
|
|
52814
|
+
counts.set(matcher, (counts.get(matcher) ?? 0) + 1);
|
|
52815
|
+
}
|
|
52816
|
+
return [...counts].map(([matcher, count]) => ({ matcher, count }));
|
|
52817
|
+
}
|
|
52818
|
+
__name(summarizeHookMatchers, "summarizeHookMatchers");
|
|
52819
|
+
function selectHookRows(rows, event, matcher) {
|
|
52820
|
+
return rows.filter(
|
|
52821
|
+
(row) => row.eventName === event && (matcher === void 0 || normalizeMatcher(row.matcher) === matcher)
|
|
52822
|
+
);
|
|
52823
|
+
}
|
|
52824
|
+
__name(selectHookRows, "selectHookRows");
|
|
52825
|
+
function openHookEvent(event) {
|
|
52826
|
+
return supportsMatchers(event) ? { step: "matchers", event } : { step: "handlers", event };
|
|
52827
|
+
}
|
|
52828
|
+
__name(openHookEvent, "openHookEvent");
|
|
52829
|
+
function previousHooksDialogView(view) {
|
|
52830
|
+
switch (view.step) {
|
|
52831
|
+
case "events":
|
|
52832
|
+
return void 0;
|
|
52833
|
+
case "matchers":
|
|
52834
|
+
return { step: "events" };
|
|
52835
|
+
case "handlers":
|
|
52836
|
+
return view.matcher === void 0 ? { step: "events" } : { step: "matchers", event: view.event };
|
|
52837
|
+
case "detail":
|
|
52838
|
+
return { step: "handlers", event: view.event, matcher: view.matcher };
|
|
52839
|
+
default: {
|
|
52840
|
+
const exhaustive = view;
|
|
52841
|
+
void exhaustive;
|
|
52842
|
+
return void 0;
|
|
52843
|
+
}
|
|
52844
|
+
}
|
|
52845
|
+
}
|
|
52846
|
+
__name(previousHooksDialogView, "previousHooksDialogView");
|
|
52847
|
+
function hooksBannerText(listing) {
|
|
52848
|
+
if (listing.safeMode) {
|
|
52849
|
+
return t("Safe mode is on, so no hooks run in this session.");
|
|
52850
|
+
}
|
|
52851
|
+
if (listing.bareMode) {
|
|
52852
|
+
return t("Bare mode is on, so no hooks run in this session.");
|
|
52853
|
+
}
|
|
52854
|
+
if (listing.allDisabled) {
|
|
52855
|
+
return t("All hooks are disabled by the disableAllHooks setting.");
|
|
52856
|
+
}
|
|
52857
|
+
return void 0;
|
|
52858
|
+
}
|
|
52859
|
+
__name(hooksBannerText, "hooksBannerText");
|
|
52860
|
+
function formatHookTimeout(row) {
|
|
52861
|
+
const timeout = row.timeout;
|
|
52862
|
+
if (typeof timeout !== "number") return String(timeout);
|
|
52863
|
+
if (row.hookType === "function" /* Function */) return `${timeout} ms`;
|
|
52864
|
+
if (row.hookType === "command" /* Command */ && isLegacyMillisecondHookTimeout(timeout)) {
|
|
52865
|
+
return `${timeout} ms`;
|
|
52866
|
+
}
|
|
52867
|
+
return `${timeout} s`;
|
|
52868
|
+
}
|
|
52869
|
+
__name(formatHookTimeout, "formatHookTimeout");
|
|
52870
|
+
function literalLabel(hookType) {
|
|
52871
|
+
switch (hookType) {
|
|
52872
|
+
case "http" /* Http */:
|
|
52873
|
+
return t("URL:");
|
|
52874
|
+
case "prompt" /* Prompt */:
|
|
52875
|
+
return t("Prompt:");
|
|
52876
|
+
default:
|
|
52877
|
+
return t("Command:");
|
|
52878
|
+
}
|
|
52879
|
+
}
|
|
52880
|
+
__name(literalLabel, "literalLabel");
|
|
52881
|
+
function hookDetailFields(row) {
|
|
52882
|
+
const fields = [[t("Event:"), row.eventName]];
|
|
52883
|
+
if (supportsMatchers(row.eventName)) {
|
|
52884
|
+
fields.push([t("Matcher:"), normalizeMatcher(row.matcher)]);
|
|
52885
|
+
}
|
|
52886
|
+
fields.push([t("Type:"), row.hookType]);
|
|
52887
|
+
fields.push([t("Source:"), formatSourceLabel(row.source)]);
|
|
52888
|
+
fields.push([t("Status:"), row.enabled ? t("enabled") : t("disabled")]);
|
|
52889
|
+
if (row.name) fields.push([t("Name:"), row.name]);
|
|
52890
|
+
if (row.description) fields.push([t("Desc:"), row.description]);
|
|
52891
|
+
if (row.commandText !== void 0) {
|
|
52892
|
+
fields.push([literalLabel(row.hookType), row.commandText]);
|
|
52893
|
+
}
|
|
52894
|
+
if (row.timeout !== void 0) {
|
|
52895
|
+
fields.push([t("Timeout:"), formatHookTimeout(row)]);
|
|
52896
|
+
}
|
|
52897
|
+
if (row.statusMessage) {
|
|
52898
|
+
fields.push([t("Status message:"), row.statusMessage]);
|
|
52899
|
+
}
|
|
52900
|
+
if (row.condition) fields.push([t("Condition:"), row.condition]);
|
|
52901
|
+
const options = [
|
|
52902
|
+
row.runsInBackground ? t("runs in background") : void 0,
|
|
52903
|
+
row.runsOnce ? t("runs once") : void 0,
|
|
52904
|
+
row.sequential ? t("sequential") : void 0
|
|
52905
|
+
].filter((option) => option !== void 0);
|
|
52906
|
+
if (options.length > 0) fields.push([t("Options:"), options.join(", ")]);
|
|
52907
|
+
if (row.skillRoot) fields.push([t("Skill:"), row.skillRoot]);
|
|
52908
|
+
return fields;
|
|
52909
|
+
}
|
|
52910
|
+
__name(hookDetailFields, "hookDetailFields");
|
|
52911
|
+
function hookCountLabel(count) {
|
|
52912
|
+
return count === 1 ? t("{{count}} hook", { count: String(count) }) : t("{{count}} hooks", { count: String(count) });
|
|
52913
|
+
}
|
|
52914
|
+
__name(hookCountLabel, "hookCountLabel");
|
|
52915
|
+
function emptyListing(settings) {
|
|
52916
|
+
return {
|
|
52917
|
+
rows: [],
|
|
52918
|
+
allDisabled: !readHooksEnabled(void 0, settings),
|
|
52919
|
+
safeMode: false,
|
|
52920
|
+
bareMode: false
|
|
52921
|
+
};
|
|
52922
|
+
}
|
|
52923
|
+
__name(emptyListing, "emptyListing");
|
|
52924
|
+
function OpenTuiHooksDialog({
|
|
52925
|
+
config,
|
|
52926
|
+
settings,
|
|
52927
|
+
onClose,
|
|
52928
|
+
notice
|
|
52929
|
+
}) {
|
|
52930
|
+
const listing = (0, import_react44.useMemo)(
|
|
52931
|
+
() => config ? buildHooksListing(config) : emptyListing(settings),
|
|
52932
|
+
[config, settings]
|
|
52933
|
+
);
|
|
52934
|
+
const [view, setView] = (0, import_react44.useState)({ step: "events" });
|
|
52935
|
+
const events = (0, import_react44.useMemo)(
|
|
52936
|
+
() => summarizeHookEvents(listing.rows),
|
|
52937
|
+
[listing.rows]
|
|
52938
|
+
);
|
|
52939
|
+
const eventItems = (0, import_react44.useMemo)(
|
|
52940
|
+
() => events.map((summary) => ({ key: summary.event, value: summary.event })),
|
|
52941
|
+
[events]
|
|
52942
|
+
);
|
|
52943
|
+
const matcherEvent = view.step === "matchers" ? view.event : void 0;
|
|
52944
|
+
const matchers = (0, import_react44.useMemo)(
|
|
52945
|
+
() => matcherEvent === void 0 ? [] : summarizeHookMatchers(listing.rows, matcherEvent),
|
|
52946
|
+
[listing.rows, matcherEvent]
|
|
52947
|
+
);
|
|
52948
|
+
const matcherItems = (0, import_react44.useMemo)(
|
|
52949
|
+
() => matchers.map((group) => ({ key: group.matcher, value: group.matcher })),
|
|
52950
|
+
[matchers]
|
|
52951
|
+
);
|
|
52952
|
+
const handlerEvent = view.step === "handlers" || view.step === "detail" ? view.event : void 0;
|
|
52953
|
+
const handlerMatcher = view.step === "handlers" || view.step === "detail" ? view.matcher : void 0;
|
|
52954
|
+
const handlerRows = (0, import_react44.useMemo)(
|
|
52955
|
+
() => handlerEvent === void 0 ? [] : selectHookRows(listing.rows, handlerEvent, handlerMatcher),
|
|
52956
|
+
[listing.rows, handlerEvent, handlerMatcher]
|
|
52957
|
+
);
|
|
52958
|
+
const handlerItems = (0, import_react44.useMemo)(
|
|
52959
|
+
() => handlerRows.map((_2, index) => ({ key: String(index), value: index })),
|
|
52960
|
+
[handlerRows]
|
|
52961
|
+
);
|
|
52962
|
+
const eventSelect = useDialogSelect({
|
|
52963
|
+
items: eventItems,
|
|
52964
|
+
focused: view.step === "events",
|
|
52965
|
+
maxItemsToShow: MAX_ROWS,
|
|
52966
|
+
onSelect: /* @__PURE__ */ __name((event) => setView(openHookEvent(event)), "onSelect")
|
|
52967
|
+
});
|
|
52968
|
+
const matcherSelect = useDialogSelect({
|
|
52969
|
+
items: matcherItems,
|
|
52970
|
+
focused: view.step === "matchers",
|
|
52971
|
+
resyncKey: `matchers:${matcherEvent ?? ""}`,
|
|
52972
|
+
maxItemsToShow: MAX_ROWS,
|
|
52973
|
+
onSelect: /* @__PURE__ */ __name((matcher) => {
|
|
52974
|
+
if (matcherEvent !== void 0) {
|
|
52975
|
+
setView({ step: "handlers", event: matcherEvent, matcher });
|
|
52976
|
+
}
|
|
52977
|
+
}, "onSelect")
|
|
52978
|
+
});
|
|
52979
|
+
const handlerSelect = useDialogSelect({
|
|
52980
|
+
items: handlerItems,
|
|
52981
|
+
focused: view.step === "handlers",
|
|
52982
|
+
resyncKey: `handlers:${handlerEvent ?? ""}:${handlerMatcher ?? ""}`,
|
|
52983
|
+
maxItemsToShow: MAX_ROWS,
|
|
52984
|
+
onSelect: /* @__PURE__ */ __name((index) => {
|
|
52985
|
+
if (handlerEvent !== void 0) {
|
|
52986
|
+
setView({
|
|
52987
|
+
step: "detail",
|
|
52988
|
+
event: handlerEvent,
|
|
52989
|
+
matcher: handlerMatcher,
|
|
52990
|
+
index
|
|
52991
|
+
});
|
|
52992
|
+
}
|
|
52993
|
+
}, "onSelect")
|
|
52994
|
+
});
|
|
52995
|
+
useKeyboard((key) => {
|
|
52996
|
+
if (toOriginalKey(key).name !== "escape") return;
|
|
52997
|
+
const previous = previousHooksDialogView(view);
|
|
52998
|
+
if (previous) {
|
|
52999
|
+
setView(previous);
|
|
53000
|
+
} else {
|
|
53001
|
+
onClose();
|
|
53002
|
+
}
|
|
53003
|
+
});
|
|
53004
|
+
const total = listing.rows.length;
|
|
53005
|
+
const countText = total === 1 ? t("{{count}} hook configured", { count: String(total) }) : t("{{count}} hooks configured", { count: String(total) });
|
|
53006
|
+
const banner = hooksBannerText(listing);
|
|
53007
|
+
const wheel = /* @__PURE__ */ __name((select, length) => (direction) => select.highlightIndex(
|
|
53008
|
+
Math.max(
|
|
53009
|
+
0,
|
|
53010
|
+
Math.min(
|
|
53011
|
+
length - 1,
|
|
53012
|
+
select.activeIndex + (direction === "down" ? 1 : -1)
|
|
53013
|
+
)
|
|
53014
|
+
)
|
|
53015
|
+
), "wheel");
|
|
53016
|
+
const renderEvents = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
|
|
53017
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: t(
|
|
53018
|
+
"This menu is read-only. To add or modify hooks, edit settings.json directly or ask Qwen Code."
|
|
53019
|
+
) }),
|
|
53020
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, flexDirection: "column", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53021
|
+
DialogSelect,
|
|
53022
|
+
{
|
|
53023
|
+
items: eventItems,
|
|
53024
|
+
activeIndex: eventSelect.activeIndex,
|
|
53025
|
+
scrollOffset: eventSelect.scrollOffset,
|
|
53026
|
+
maxItemsToShow: MAX_ROWS,
|
|
53027
|
+
showScrollArrows: true,
|
|
53028
|
+
focused: view.step === "events",
|
|
53029
|
+
onHover: eventSelect.highlightIndex,
|
|
53030
|
+
onWheel: wheel(eventSelect, eventItems.length),
|
|
53031
|
+
onSelectIndex: eventSelect.selectIndex,
|
|
53032
|
+
renderLabel: (item, context) => {
|
|
53033
|
+
const summary = events.find((entry) => entry.event === item.value);
|
|
53034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
|
|
53035
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: context.titleColor, children: item.value }),
|
|
53036
|
+
summary && summary.count > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.green, children: ` (${summary.count})` }) : null,
|
|
53037
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: ` ${summary?.description ?? ""}` })
|
|
53038
|
+
] });
|
|
53039
|
+
}
|
|
53040
|
+
}
|
|
53041
|
+
) })
|
|
53042
|
+
] }), "renderEvents");
|
|
53043
|
+
const renderEmpty = /* @__PURE__ */ __name((message) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
|
|
53044
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: message }),
|
|
53045
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: t("To add hooks, edit settings.json directly or ask Qwen.") })
|
|
53046
|
+
] }), "renderEmpty");
|
|
53047
|
+
const renderMatchers = /* @__PURE__ */ __name((event) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
|
|
53048
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.text, children: `${event} - ${t("Matchers")}` }),
|
|
53049
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, flexDirection: "column", children: matcherItems.length === 0 ? renderEmpty(t("No hooks configured for this event.")) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53050
|
+
DialogSelect,
|
|
53051
|
+
{
|
|
53052
|
+
items: matcherItems,
|
|
53053
|
+
activeIndex: matcherSelect.activeIndex,
|
|
53054
|
+
scrollOffset: matcherSelect.scrollOffset,
|
|
53055
|
+
maxItemsToShow: MAX_ROWS,
|
|
53056
|
+
focused: view.step === "matchers",
|
|
53057
|
+
onHover: matcherSelect.highlightIndex,
|
|
53058
|
+
onWheel: wheel(matcherSelect, matcherItems.length),
|
|
53059
|
+
onSelectIndex: matcherSelect.selectIndex,
|
|
53060
|
+
renderLabel: (item, context) => {
|
|
53061
|
+
const group = matchers.find(
|
|
53062
|
+
(entry) => entry.matcher === item.value
|
|
53063
|
+
);
|
|
53064
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
|
|
53065
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: context.titleColor, children: item.value }),
|
|
53066
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: ` \xB7 ${hookCountLabel(group?.count ?? 0)}` })
|
|
53067
|
+
] });
|
|
53068
|
+
}
|
|
53069
|
+
}
|
|
53070
|
+
) })
|
|
53071
|
+
] }), "renderMatchers");
|
|
53072
|
+
const renderHandlers = /* @__PURE__ */ __name((event, matcher) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
|
|
53073
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.text, children: matcher === void 0 ? event : `${event} - ${t("Matcher:")} ${matcher}` }),
|
|
53074
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: getHookShortDescription(event) }),
|
|
53075
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, flexDirection: "column", children: handlerItems.length === 0 ? renderEmpty(
|
|
53076
|
+
matcher === void 0 ? t("No hooks configured for this event.") : t("No hooks configured for this matcher.")
|
|
53077
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53078
|
+
DialogSelect,
|
|
53079
|
+
{
|
|
53080
|
+
items: handlerItems,
|
|
53081
|
+
activeIndex: handlerSelect.activeIndex,
|
|
53082
|
+
scrollOffset: handlerSelect.scrollOffset,
|
|
53083
|
+
maxItemsToShow: MAX_ROWS,
|
|
53084
|
+
focused: view.step === "handlers",
|
|
53085
|
+
onHover: handlerSelect.highlightIndex,
|
|
53086
|
+
onWheel: wheel(handlerSelect, handlerItems.length),
|
|
53087
|
+
onSelectIndex: handlerSelect.selectIndex,
|
|
53088
|
+
renderLabel: (item, context) => {
|
|
53089
|
+
const row = handlerRows[item.value];
|
|
53090
|
+
if (!row) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: context.titleColor, children: "" });
|
|
53091
|
+
const type = row.runsInBackground ? `${row.hookType} async` : row.hookType;
|
|
53092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
|
|
53093
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: context.titleColor, children: `[${type}] ${row.displayText}` }),
|
|
53094
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53095
|
+
"text",
|
|
53096
|
+
{
|
|
53097
|
+
fg: C2.dim,
|
|
53098
|
+
children: ` \xB7 ${formatSourceLabel(row.source)}`
|
|
53099
|
+
}
|
|
53100
|
+
),
|
|
53101
|
+
row.enabled ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.yellow, children: ` ${t("disabled")}` })
|
|
53102
|
+
] });
|
|
53103
|
+
}
|
|
53104
|
+
}
|
|
53105
|
+
) })
|
|
53106
|
+
] }), "renderHandlers");
|
|
53107
|
+
const renderDetail = /* @__PURE__ */ __name((row) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
|
|
53108
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.text, attributes: 1, children: t("Hook details") }),
|
|
53109
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, flexDirection: "column", children: hookDetailFields(row).map(([label, value]) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
|
|
53110
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { width: DETAIL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: label }) }),
|
|
53111
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.text, children: value }) })
|
|
53112
|
+
] }, label)) }),
|
|
53113
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: t(
|
|
53114
|
+
"To modify or remove this hook, edit settings.json directly or ask Qwen to help."
|
|
53115
|
+
) }) })
|
|
53116
|
+
] }), "renderDetail");
|
|
53117
|
+
let body;
|
|
53118
|
+
let footer;
|
|
53119
|
+
switch (view.step) {
|
|
53120
|
+
case "events":
|
|
53121
|
+
body = renderEvents();
|
|
53122
|
+
footer = t("Enter to select \xB7 Esc to cancel");
|
|
53123
|
+
break;
|
|
53124
|
+
case "matchers":
|
|
53125
|
+
body = renderMatchers(view.event);
|
|
53126
|
+
footer = t("Enter to select \xB7 Esc to go back");
|
|
53127
|
+
break;
|
|
53128
|
+
case "handlers":
|
|
53129
|
+
body = renderHandlers(view.event, view.matcher);
|
|
53130
|
+
footer = t("Enter to select \xB7 Esc to go back");
|
|
53131
|
+
break;
|
|
53132
|
+
case "detail": {
|
|
53133
|
+
const row = handlerRows[view.index];
|
|
53134
|
+
body = row ? renderDetail(row) : renderHandlers(view.event, view.matcher);
|
|
53135
|
+
footer = t("Esc to go back");
|
|
53136
|
+
break;
|
|
53137
|
+
}
|
|
53138
|
+
default: {
|
|
53139
|
+
const exhaustive = view;
|
|
53140
|
+
void exhaustive;
|
|
53141
|
+
body = null;
|
|
53142
|
+
footer = "";
|
|
53143
|
+
}
|
|
53144
|
+
}
|
|
53145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogFrame, { children: [
|
|
53146
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
|
|
53147
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.accent, attributes: 1, children: t("Hooks") }),
|
|
53148
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: ` \xB7 ${countText}` })
|
|
53149
|
+
] }),
|
|
53150
|
+
notice ? notice.split("\n").map((line, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: line }, `notice-${index}`)) : null,
|
|
53151
|
+
banner ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.yellow, children: banner }) }) : null,
|
|
53152
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { marginTop: 1, flexDirection: "column", children: body }),
|
|
53153
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FooterHint, { text: footer })
|
|
53154
|
+
] });
|
|
53155
|
+
}
|
|
53156
|
+
__name(OpenTuiHooksDialog, "OpenTuiHooksDialog");
|
|
53157
|
+
|
|
52817
53158
|
// packages/cli/src/ui/opentui/opentui-dialog-mount.tsx
|
|
52818
53159
|
function OpenTuiDialogMount(props) {
|
|
52819
53160
|
const { request, host, config, settings, commands, onClose, notify } = props;
|
|
52820
53161
|
const isHelp = request.dialog === "help";
|
|
52821
53162
|
const dimensions = useTerminalDimensions();
|
|
52822
|
-
const [permissions, setPermissions] = (0,
|
|
53163
|
+
const [permissions, setPermissions] = (0, import_react46.useState)(
|
|
52823
53164
|
() => request.dialog === "permissions" ? buildPermissionsData(config) : null
|
|
52824
53165
|
);
|
|
52825
53166
|
const reloadPermissions = /* @__PURE__ */ __name(() => setPermissions(buildPermissionsData(config)), "reloadPermissions");
|
|
52826
|
-
const [mcpServers, setMcpServers] = (0,
|
|
52827
|
-
(0,
|
|
53167
|
+
const [mcpServers, setMcpServers] = (0, import_react46.useState)([]);
|
|
53168
|
+
(0, import_react46.useEffect)(() => {
|
|
52828
53169
|
if (request.dialog !== "mcp") return;
|
|
52829
53170
|
let alive = true;
|
|
52830
53171
|
const initial = buildMcpServers(config);
|
|
@@ -52848,14 +53189,14 @@ function OpenTuiDialogMount(props) {
|
|
|
52848
53189
|
}
|
|
52849
53190
|
);
|
|
52850
53191
|
}, "runMcpAction");
|
|
52851
|
-
const [extRows, setExtRows] = (0,
|
|
53192
|
+
const [extRows, setExtRows] = (0, import_react46.useState)(
|
|
52852
53193
|
() => request.dialog === "extensions_manage" ? buildExtensionRows(config) : []
|
|
52853
53194
|
);
|
|
52854
|
-
const [extBusy, setExtBusy] = (0,
|
|
52855
|
-
const [extStatus, setExtStatus] = (0,
|
|
53195
|
+
const [extBusy, setExtBusy] = (0, import_react46.useState)(false);
|
|
53196
|
+
const [extStatus, setExtStatus] = (0, import_react46.useState)(
|
|
52856
53197
|
null
|
|
52857
53198
|
);
|
|
52858
|
-
const [extDiscoverFilter, setExtDiscoverFilter] = (0,
|
|
53199
|
+
const [extDiscoverFilter, setExtDiscoverFilter] = (0, import_react46.useState)(
|
|
52859
53200
|
null
|
|
52860
53201
|
);
|
|
52861
53202
|
const reloadExtensions = /* @__PURE__ */ __name(() => setExtRows(buildExtensionRows(config)), "reloadExtensions");
|
|
@@ -52908,16 +53249,16 @@ function OpenTuiDialogMount(props) {
|
|
|
52908
53249
|
}
|
|
52909
53250
|
}
|
|
52910
53251
|
}, "runExtensionAction");
|
|
52911
|
-
const [modelError, setModelError] = (0,
|
|
52912
|
-
const modelSelectionCommittedRef = (0,
|
|
52913
|
-
const modelCloseLatchRef = (0,
|
|
52914
|
-
const modelSelectionInFlightRef = (0,
|
|
52915
|
-
const [helpTab, setHelpTab] = (0,
|
|
52916
|
-
const [helpScroll, setHelpScroll] = (0,
|
|
53252
|
+
const [modelError, setModelError] = (0, import_react46.useState)(null);
|
|
53253
|
+
const modelSelectionCommittedRef = (0, import_react46.useRef)(false);
|
|
53254
|
+
const modelCloseLatchRef = (0, import_react46.useRef)(false);
|
|
53255
|
+
const modelSelectionInFlightRef = (0, import_react46.useRef)(false);
|
|
53256
|
+
const [helpTab, setHelpTab] = (0, import_react46.useState)("general");
|
|
53257
|
+
const [helpScroll, setHelpScroll] = (0, import_react46.useState)(0);
|
|
52917
53258
|
const dialogWidth = dialogAreaWidth(dimensions.width);
|
|
52918
53259
|
const helpBodyRows = computeHelpBodyRows(dimensions.height);
|
|
52919
53260
|
const helpWindowRows = helpCommandWindowRows(helpBodyRows);
|
|
52920
|
-
const helpMaxScroll = (0,
|
|
53261
|
+
const helpMaxScroll = (0, import_react46.useMemo)(() => {
|
|
52921
53262
|
if (helpTab === "general") return 0;
|
|
52922
53263
|
const lines = helpTab === "custom-commands" ? buildHelpCustomCommandLines(commands, dialogWidth) : buildHelpCommandsLines(commands, dialogWidth);
|
|
52923
53264
|
return helpScrollMax(lines, helpWindowRows);
|
|
@@ -53150,6 +53491,12 @@ function OpenTuiDialogMount(props) {
|
|
|
53150
53491
|
{
|
|
53151
53492
|
config,
|
|
53152
53493
|
settings,
|
|
53494
|
+
notice: config?.getHookSystem() ? [
|
|
53495
|
+
t("Reopen this menu to reload hook definitions."),
|
|
53496
|
+
t(
|
|
53497
|
+
"Hook controls and HTTP security settings require a restart."
|
|
53498
|
+
)
|
|
53499
|
+
].join("\n") : void 0,
|
|
53153
53500
|
onClose
|
|
53154
53501
|
}
|
|
53155
53502
|
);
|
|
@@ -53273,7 +53620,7 @@ __name(OpenTuiDialogMount, "OpenTuiDialogMount");
|
|
|
53273
53620
|
|
|
53274
53621
|
// packages/cli/src/ui/opentui/input-prompt.tsx
|
|
53275
53622
|
init_esbuild_shims();
|
|
53276
|
-
var
|
|
53623
|
+
var import_react48 = __toESM(require_react(), 1);
|
|
53277
53624
|
import path6 from "node:path";
|
|
53278
53625
|
|
|
53279
53626
|
// packages/cli/src/ui/opentui/input-history.ts
|
|
@@ -53422,8 +53769,8 @@ function OpenTuiInputPrompt(props) {
|
|
|
53422
53769
|
} = props;
|
|
53423
53770
|
const { width } = useTerminalDimensions();
|
|
53424
53771
|
const renderer = useRenderer();
|
|
53425
|
-
const editorRef = (0,
|
|
53426
|
-
(0,
|
|
53772
|
+
const editorRef = (0, import_react48.useRef)(null);
|
|
53773
|
+
(0, import_react48.useEffect)(() => {
|
|
53427
53774
|
if (!props.composerHandle) return;
|
|
53428
53775
|
props.composerHandle.current = {
|
|
53429
53776
|
getText: /* @__PURE__ */ __name(() => editorRef.current?.plainText ?? "", "getText"),
|
|
@@ -53435,36 +53782,36 @@ function OpenTuiInputPrompt(props) {
|
|
|
53435
53782
|
if (props.composerHandle) props.composerHandle.current = null;
|
|
53436
53783
|
};
|
|
53437
53784
|
}, [props.composerHandle]);
|
|
53438
|
-
const userMessagesRef = (0,
|
|
53785
|
+
const userMessagesRef = (0, import_react48.useRef)(userMessages);
|
|
53439
53786
|
userMessagesRef.current = userMessages;
|
|
53440
|
-
const recentSlashCommandsRef = (0,
|
|
53787
|
+
const recentSlashCommandsRef = (0, import_react48.useRef)(recentSlashCommands);
|
|
53441
53788
|
recentSlashCommandsRef.current = recentSlashCommands;
|
|
53442
|
-
const historyRef = (0,
|
|
53789
|
+
const historyRef = (0, import_react48.useRef)(null);
|
|
53443
53790
|
if (!historyRef.current) {
|
|
53444
53791
|
historyRef.current = new InputHistory(() => userMessagesRef.current);
|
|
53445
53792
|
}
|
|
53446
|
-
const escapeRef = (0,
|
|
53793
|
+
const escapeRef = (0, import_react48.useRef)(null);
|
|
53447
53794
|
if (!escapeRef.current) {
|
|
53448
53795
|
escapeRef.current = new EscapeClearModel();
|
|
53449
53796
|
}
|
|
53450
|
-
const [textVersion, setTextVersion] = (0,
|
|
53451
|
-
const [suggestions, setSuggestions] = (0,
|
|
53452
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
53453
|
-
const [loadingSuggestions, setLoadingSuggestions] = (0,
|
|
53454
|
-
const [escapeArmed, setEscapeArmed] = (0,
|
|
53455
|
-
const [attachments, setAttachments] = (0,
|
|
53456
|
-
const completionModeRef = (0,
|
|
53457
|
-
const historyRestoredTextRef = (0,
|
|
53458
|
-
const dismissedUntilChangeRef = (0,
|
|
53459
|
-
const fileSearchRef = (0,
|
|
53460
|
-
const fileSearchReadyRef = (0,
|
|
53461
|
-
const atSearchSeqRef = (0,
|
|
53462
|
-
const commandsRef = (0,
|
|
53463
|
-
const slashRangeRef = (0,
|
|
53464
|
-
const slashSearchSeqRef = (0,
|
|
53465
|
-
const suggestionNavigatedRef = (0,
|
|
53466
|
-
const pendingPastesRef = (0,
|
|
53467
|
-
const activePlaceholderIdsRef = (0,
|
|
53797
|
+
const [textVersion, setTextVersion] = (0, import_react48.useState)(0);
|
|
53798
|
+
const [suggestions, setSuggestions] = (0, import_react48.useState)([]);
|
|
53799
|
+
const [activeIndex, setActiveIndex] = (0, import_react48.useState)(0);
|
|
53800
|
+
const [loadingSuggestions, setLoadingSuggestions] = (0, import_react48.useState)(false);
|
|
53801
|
+
const [escapeArmed, setEscapeArmed] = (0, import_react48.useState)(false);
|
|
53802
|
+
const [attachments, setAttachments] = (0, import_react48.useState)([]);
|
|
53803
|
+
const completionModeRef = (0, import_react48.useRef)("IDLE" /* IDLE */);
|
|
53804
|
+
const historyRestoredTextRef = (0, import_react48.useRef)(null);
|
|
53805
|
+
const dismissedUntilChangeRef = (0, import_react48.useRef)(null);
|
|
53806
|
+
const fileSearchRef = (0, import_react48.useRef)(null);
|
|
53807
|
+
const fileSearchReadyRef = (0, import_react48.useRef)(null);
|
|
53808
|
+
const atSearchSeqRef = (0, import_react48.useRef)(0);
|
|
53809
|
+
const commandsRef = (0, import_react48.useRef)([]);
|
|
53810
|
+
const slashRangeRef = (0, import_react48.useRef)(null);
|
|
53811
|
+
const slashSearchSeqRef = (0, import_react48.useRef)(0);
|
|
53812
|
+
const suggestionNavigatedRef = (0, import_react48.useRef)(false);
|
|
53813
|
+
const pendingPastesRef = (0, import_react48.useRef)(/* @__PURE__ */ new Map());
|
|
53814
|
+
const activePlaceholderIdsRef = (0, import_react48.useRef)(/* @__PURE__ */ new Map());
|
|
53468
53815
|
const {
|
|
53469
53816
|
state: followupState,
|
|
53470
53817
|
accept: acceptFollowup,
|
|
@@ -53481,13 +53828,13 @@ function OpenTuiInputPrompt(props) {
|
|
|
53481
53828
|
setTextVersion((v3) => v3 + 1);
|
|
53482
53829
|
}, "onAccept")
|
|
53483
53830
|
});
|
|
53484
|
-
(0,
|
|
53831
|
+
(0, import_react48.useEffect)(() => {
|
|
53485
53832
|
setFollowupSuggestion(promptSuggestion ?? null);
|
|
53486
53833
|
}, [setFollowupSuggestion, promptSuggestion]);
|
|
53487
53834
|
const availableSuggestion = followupState.isVisible || promptSuggestion ? followupState.suggestion ?? promptSuggestion ?? null : null;
|
|
53488
53835
|
const chrome = shellModeActive ? { prefix: "!", color: C2.accent } : promptChrome(approvalMode);
|
|
53489
53836
|
const borderColor = chrome.color ?? C2.accent;
|
|
53490
|
-
(0,
|
|
53837
|
+
(0, import_react48.useEffect)(() => {
|
|
53491
53838
|
let cancelled = false;
|
|
53492
53839
|
loadInteractiveCommands(config ?? null).then((commands) => {
|
|
53493
53840
|
if (!cancelled) commandsRef.current = commands;
|
|
@@ -53498,7 +53845,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53498
53845
|
};
|
|
53499
53846
|
}, [config]);
|
|
53500
53847
|
const projectRoot = config?.getTargetDir() ?? process.cwd();
|
|
53501
|
-
const ensureFileSearch = (0,
|
|
53848
|
+
const ensureFileSearch = (0, import_react48.useCallback)(() => {
|
|
53502
53849
|
if (fileSearchReadyRef.current) return fileSearchReadyRef.current;
|
|
53503
53850
|
const searcher = FileSearchFactory.create({
|
|
53504
53851
|
projectRoot,
|
|
@@ -53518,7 +53865,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53518
53865
|
});
|
|
53519
53866
|
return fileSearchReadyRef.current;
|
|
53520
53867
|
}, [config, projectRoot]);
|
|
53521
|
-
(0,
|
|
53868
|
+
(0, import_react48.useEffect)(
|
|
53522
53869
|
() => () => {
|
|
53523
53870
|
void fileSearchRef.current?.dispose?.();
|
|
53524
53871
|
fileSearchRef.current = null;
|
|
@@ -53526,7 +53873,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53526
53873
|
},
|
|
53527
53874
|
[]
|
|
53528
53875
|
);
|
|
53529
|
-
const currentCompletionTarget = (0,
|
|
53876
|
+
const currentCompletionTarget = (0, import_react48.useCallback)(() => {
|
|
53530
53877
|
const el = editorRef.current;
|
|
53531
53878
|
if (!el) return null;
|
|
53532
53879
|
const text = el.plainText;
|
|
@@ -53541,7 +53888,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53541
53888
|
commandsRef.current
|
|
53542
53889
|
);
|
|
53543
53890
|
}, []);
|
|
53544
|
-
const refreshCompletion = (0,
|
|
53891
|
+
const refreshCompletion = (0, import_react48.useCallback)(() => {
|
|
53545
53892
|
const el = editorRef.current;
|
|
53546
53893
|
if (!el) return;
|
|
53547
53894
|
const text = el.plainText;
|
|
@@ -53616,7 +53963,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53616
53963
|
}
|
|
53617
53964
|
});
|
|
53618
53965
|
}, [ensureFileSearch, config, currentCompletionTarget]);
|
|
53619
|
-
(0,
|
|
53966
|
+
(0, import_react48.useEffect)(() => {
|
|
53620
53967
|
const el = editorRef.current;
|
|
53621
53968
|
if (!el || textVersion === 0) return;
|
|
53622
53969
|
if (historyRestoredTextRef.current !== null && el.plainText !== historyRestoredTextRef.current) {
|
|
@@ -53624,10 +53971,10 @@ function OpenTuiInputPrompt(props) {
|
|
|
53624
53971
|
}
|
|
53625
53972
|
refreshCompletion();
|
|
53626
53973
|
}, [textVersion, refreshCompletion]);
|
|
53627
|
-
(0,
|
|
53974
|
+
(0, import_react48.useEffect)(() => {
|
|
53628
53975
|
refreshCompletion();
|
|
53629
53976
|
}, [recentSlashCommands, refreshCompletion]);
|
|
53630
|
-
const applyTextToEditor = (0,
|
|
53977
|
+
const applyTextToEditor = (0, import_react48.useCallback)((line, cursorCol) => {
|
|
53631
53978
|
const el = editorRef.current;
|
|
53632
53979
|
if (!el) return;
|
|
53633
53980
|
const cursor = el.logicalCursor;
|
|
@@ -53641,7 +53988,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53641
53988
|
}
|
|
53642
53989
|
setTextVersion((v3) => v3 + 1);
|
|
53643
53990
|
}, []);
|
|
53644
|
-
const acceptSuggestion = (0,
|
|
53991
|
+
const acceptSuggestion = (0, import_react48.useCallback)(
|
|
53645
53992
|
(index, viaEnter) => {
|
|
53646
53993
|
const el = editorRef.current;
|
|
53647
53994
|
const suggestion = suggestions[index];
|
|
@@ -53698,7 +54045,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53698
54045
|
onPromptSuggestionDismiss
|
|
53699
54046
|
]
|
|
53700
54047
|
);
|
|
53701
|
-
const handleClipboardImage = (0,
|
|
54048
|
+
const handleClipboardImage = (0, import_react48.useCallback)(async () => {
|
|
53702
54049
|
try {
|
|
53703
54050
|
if (!await clipboardHasImage()) return;
|
|
53704
54051
|
const imagePath = await saveClipboardImage(Storage.getGlobalTempDir());
|
|
@@ -53716,7 +54063,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53716
54063
|
} catch {
|
|
53717
54064
|
}
|
|
53718
54065
|
}, []);
|
|
53719
|
-
(0,
|
|
54066
|
+
(0, import_react48.useLayoutEffect)(() => {
|
|
53720
54067
|
const onRawInput = /* @__PURE__ */ __name((sequence) => {
|
|
53721
54068
|
if (!focus) return false;
|
|
53722
54069
|
if (isDeleteWordBackwardSequence(sequence)) {
|
|
@@ -53767,7 +54114,7 @@ function OpenTuiInputPrompt(props) {
|
|
|
53767
54114
|
renderer.addInputHandler(onRawInput);
|
|
53768
54115
|
return () => renderer.removeInputHandler(onRawInput);
|
|
53769
54116
|
}, [renderer, focus]);
|
|
53770
|
-
(0,
|
|
54117
|
+
(0, import_react48.useLayoutEffect)(() => {
|
|
53771
54118
|
const onPaste = /* @__PURE__ */ __name((event) => {
|
|
53772
54119
|
if (!focus) return;
|
|
53773
54120
|
const el = editorRef.current;
|
|
@@ -54047,11 +54394,11 @@ ${current}` : popped);
|
|
|
54047
54394
|
return;
|
|
54048
54395
|
}
|
|
54049
54396
|
});
|
|
54050
|
-
(0,
|
|
54397
|
+
(0, import_react48.useEffect)(() => {
|
|
54051
54398
|
const el = editorRef.current;
|
|
54052
54399
|
if (el) el.textColor = C2.text;
|
|
54053
54400
|
}, []);
|
|
54054
|
-
(0,
|
|
54401
|
+
(0, import_react48.useEffect)(() => {
|
|
54055
54402
|
const el = editorRef.current;
|
|
54056
54403
|
if (el) {
|
|
54057
54404
|
el.keyBindings = [
|
|
@@ -54070,7 +54417,7 @@ ${current}` : popped);
|
|
|
54070
54417
|
activeIndex
|
|
54071
54418
|
);
|
|
54072
54419
|
const showDropdown = loadingSuggestions || suggestions.length > 0 && visible.length > 0;
|
|
54073
|
-
(0,
|
|
54420
|
+
(0, import_react48.useEffect)(() => {
|
|
54074
54421
|
onSuggestionsVisibilityChange?.(showDropdown);
|
|
54075
54422
|
}, [showDropdown, onSuggestionsVisibilityChange]);
|
|
54076
54423
|
const fullLabelWidth = /* @__PURE__ */ __name((s) => [s.label ?? s.value, s.argumentHint, s.sourceBadge].filter(Boolean).join(" ").length, "fullLabelWidth");
|
|
@@ -54195,7 +54542,7 @@ __name(OpenTuiInputPrompt, "OpenTuiInputPrompt");
|
|
|
54195
54542
|
|
|
54196
54543
|
// packages/cli/src/ui/opentui/opentui-header.tsx
|
|
54197
54544
|
init_esbuild_shims();
|
|
54198
|
-
var
|
|
54545
|
+
var import_react50 = __toESM(require_react(), 1);
|
|
54199
54546
|
var LOGO_GRADIENT = ["#4796E4", "#847ACE", "#C3677F"];
|
|
54200
54547
|
function lerpHex(a, b3, t3) {
|
|
54201
54548
|
const pa = [1, 3, 5].map((i) => parseInt(a.slice(i, i + 2), 16));
|
|
@@ -54319,7 +54666,7 @@ __name(buildBanner, "buildBanner");
|
|
|
54319
54666
|
function OpenTuiBanner({ config, settings }) {
|
|
54320
54667
|
const { width } = useTerminalDimensions();
|
|
54321
54668
|
const showBanner = !config.getScreenReader() && !settings.merged.ui?.hideBanner;
|
|
54322
|
-
const banner = (0,
|
|
54669
|
+
const banner = (0, import_react50.useMemo)(
|
|
54323
54670
|
() => showBanner ? buildBanner(config, settings, width) : null,
|
|
54324
54671
|
[showBanner, config, settings, width]
|
|
54325
54672
|
);
|
|
@@ -54329,11 +54676,11 @@ __name(OpenTuiBanner, "OpenTuiBanner");
|
|
|
54329
54676
|
|
|
54330
54677
|
// packages/cli/src/ui/opentui/opentui-footer.tsx
|
|
54331
54678
|
init_esbuild_shims();
|
|
54332
|
-
var
|
|
54679
|
+
var import_react52 = __toESM(require_react(), 1);
|
|
54333
54680
|
import nodePath2 from "node:path";
|
|
54334
54681
|
function Spinner() {
|
|
54335
|
-
const [frame, setFrame] = (0,
|
|
54336
|
-
(0,
|
|
54682
|
+
const [frame, setFrame] = (0, import_react52.useState)(0);
|
|
54683
|
+
(0, import_react52.useEffect)(() => {
|
|
54337
54684
|
const spin = setInterval(() => setFrame((f2) => f2 + 1), SPINNER_INTERVAL_MS);
|
|
54338
54685
|
return () => clearInterval(spin);
|
|
54339
54686
|
}, []);
|
|
@@ -54348,7 +54695,7 @@ function OpenTuiLoadingIndicator({
|
|
|
54348
54695
|
const { width } = useTerminalDimensions();
|
|
54349
54696
|
const phrase = usePhraseCycler(streaming, false);
|
|
54350
54697
|
const elapsedTime = useTimer(streaming, 0);
|
|
54351
|
-
const fallbackRef = (0,
|
|
54698
|
+
const fallbackRef = (0, import_react52.useRef)(0);
|
|
54352
54699
|
const animatedChars = useAnimationFrame(
|
|
54353
54700
|
streamingCharsRef ?? fallbackRef,
|
|
54354
54701
|
streamingCharsRef && streaming ? 100 : null
|
|
@@ -54434,7 +54781,7 @@ __name(OpenTuiFooter, "OpenTuiFooter");
|
|
|
54434
54781
|
|
|
54435
54782
|
// packages/cli/src/ui/opentui/dialogs-confirm.tsx
|
|
54436
54783
|
init_esbuild_shims();
|
|
54437
|
-
var
|
|
54784
|
+
var import_react54 = __toESM(require_react(), 1);
|
|
54438
54785
|
|
|
54439
54786
|
// packages/cli/src/ui/opentui/diff-render.ts
|
|
54440
54787
|
init_esbuild_shims();
|
|
@@ -54650,7 +54997,7 @@ function buildConfirmationPrompt(details, isTrustedFolder) {
|
|
|
54650
54997
|
}
|
|
54651
54998
|
__name(buildConfirmationPrompt, "buildConfirmationPrompt");
|
|
54652
54999
|
function DiffBody({ fileDiff }) {
|
|
54653
|
-
const lines = (0,
|
|
55000
|
+
const lines = (0, import_react54.useMemo)(() => renderDiffBody(fileDiff), [fileDiff]);
|
|
54654
55001
|
const window = tailWindow(lines, MAX_BODY_ROWS);
|
|
54655
55002
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
|
|
54656
55003
|
window.hiddenCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -54665,14 +55012,14 @@ function DiffBody({ fileDiff }) {
|
|
|
54665
55012
|
}
|
|
54666
55013
|
__name(DiffBody, "DiffBody");
|
|
54667
55014
|
function TextBody({ text }) {
|
|
54668
|
-
const [expanded, setExpanded] = (0,
|
|
55015
|
+
const [expanded, setExpanded] = (0, import_react54.useState)(false);
|
|
54669
55016
|
const { width, height } = useTerminalDimensions();
|
|
54670
|
-
const rows = (0,
|
|
54671
|
-
const window = (0,
|
|
55017
|
+
const rows = (0, import_react54.useMemo)(() => sanitizeTerminalText(text).split("\n"), [text]);
|
|
55018
|
+
const window = (0, import_react54.useMemo)(
|
|
54672
55019
|
() => headWindowPhysical(rows, width, MAX_BODY_ROWS),
|
|
54673
55020
|
[rows, width]
|
|
54674
55021
|
);
|
|
54675
|
-
const expandedWindow = (0,
|
|
55022
|
+
const expandedWindow = (0, import_react54.useMemo)(
|
|
54676
55023
|
() => tailWindowPhysical(
|
|
54677
55024
|
rows,
|
|
54678
55025
|
width,
|
|
@@ -54752,7 +55099,7 @@ function ConfirmationBody({
|
|
|
54752
55099
|
}
|
|
54753
55100
|
__name(ConfirmationBody, "ConfirmationBody");
|
|
54754
55101
|
function OutcomeSelect(props) {
|
|
54755
|
-
const items = (0,
|
|
55102
|
+
const items = (0, import_react54.useMemo)(
|
|
54756
55103
|
() => props.options.map((option, index) => ({
|
|
54757
55104
|
key: `${option.value}-${index}`,
|
|
54758
55105
|
value: option.value,
|
|
@@ -54783,8 +55130,8 @@ __name(OutcomeSelect, "OutcomeSelect");
|
|
|
54783
55130
|
function OpenTuiToolConfirmation(props) {
|
|
54784
55131
|
const { call, config, onSettled } = props;
|
|
54785
55132
|
const details = call.confirmationDetails;
|
|
54786
|
-
const settledRef = (0,
|
|
54787
|
-
const settle = (0,
|
|
55133
|
+
const settledRef = (0, import_react54.useRef)(false);
|
|
55134
|
+
const settle = (0, import_react54.useCallback)(
|
|
54788
55135
|
(outcome, payload) => {
|
|
54789
55136
|
if (settledRef.current) return;
|
|
54790
55137
|
settledRef.current = true;
|
|
@@ -54839,12 +55186,12 @@ function OpenTuiToolConfirmation(props) {
|
|
|
54839
55186
|
__name(OpenTuiToolConfirmation, "OpenTuiToolConfirmation");
|
|
54840
55187
|
function AskUserQuestionFlow(props) {
|
|
54841
55188
|
const { details, onAnswered } = props;
|
|
54842
|
-
const [index, setIndex] = (0,
|
|
54843
|
-
const [answers, setAnswers] = (0,
|
|
54844
|
-
const [selected, setSelected] = (0,
|
|
55189
|
+
const [index, setIndex] = (0, import_react54.useState)(0);
|
|
55190
|
+
const [answers, setAnswers] = (0, import_react54.useState)({});
|
|
55191
|
+
const [selected, setSelected] = (0, import_react54.useState)(/* @__PURE__ */ new Set());
|
|
54845
55192
|
const question = details.questions[index];
|
|
54846
55193
|
const isMulti = question?.multiSelect === true;
|
|
54847
|
-
const commitQuestion = (0,
|
|
55194
|
+
const commitQuestion = (0, import_react54.useCallback)(
|
|
54848
55195
|
(value) => {
|
|
54849
55196
|
if (value === void 0) return;
|
|
54850
55197
|
const nextAnswers = { ...answers, [index]: value };
|
|
@@ -54862,7 +55209,7 @@ function AskUserQuestionFlow(props) {
|
|
|
54862
55209
|
},
|
|
54863
55210
|
[answers, index, details.questions.length, onAnswered]
|
|
54864
55211
|
);
|
|
54865
|
-
const items = (0,
|
|
55212
|
+
const items = (0, import_react54.useMemo)(
|
|
54866
55213
|
() => (question?.options ?? []).map((option, i) => ({
|
|
54867
55214
|
key: `${option.label}-${i}`,
|
|
54868
55215
|
value: option.label
|
|
@@ -54897,7 +55244,7 @@ function AskUserQuestionFlow(props) {
|
|
|
54897
55244
|
commitQuestion([...selected].join(", "));
|
|
54898
55245
|
}
|
|
54899
55246
|
});
|
|
54900
|
-
(0,
|
|
55247
|
+
(0, import_react54.useEffect)(() => {
|
|
54901
55248
|
if (details.questions.length === 0 || !question?.options?.length) {
|
|
54902
55249
|
onAnswered(null);
|
|
54903
55250
|
}
|
|
@@ -54940,7 +55287,7 @@ function AskUserQuestionFlow(props) {
|
|
|
54940
55287
|
__name(AskUserQuestionFlow, "AskUserQuestionFlow");
|
|
54941
55288
|
function OpenTuiShellConfirmation(props) {
|
|
54942
55289
|
const { commands, onResolve } = props;
|
|
54943
|
-
const options = (0,
|
|
55290
|
+
const options = (0, import_react54.useMemo)(
|
|
54944
55291
|
() => [
|
|
54945
55292
|
{
|
|
54946
55293
|
label: t("Yes, allow once"),
|
|
@@ -54987,7 +55334,7 @@ function OpenTuiShellConfirmation(props) {
|
|
|
54987
55334
|
__name(OpenTuiShellConfirmation, "OpenTuiShellConfirmation");
|
|
54988
55335
|
function OpenTuiActionConfirmation(props) {
|
|
54989
55336
|
const { prompt, onResolve } = props;
|
|
54990
|
-
const options = (0,
|
|
55337
|
+
const options = (0, import_react54.useMemo)(
|
|
54991
55338
|
() => [
|
|
54992
55339
|
{ key: "yes", value: true },
|
|
54993
55340
|
{ key: "no", value: false }
|
|
@@ -55125,31 +55472,31 @@ function OpenTuiApp(props) {
|
|
|
55125
55472
|
onPromptSuggestionDismiss,
|
|
55126
55473
|
onPromptSuggestionAbort
|
|
55127
55474
|
} = props;
|
|
55128
|
-
const [dialog, setDialog] = (0,
|
|
55475
|
+
const [dialog, setDialog] = (0, import_react56.useState)(
|
|
55129
55476
|
props.initialDialog ?? null
|
|
55130
55477
|
);
|
|
55131
|
-
const [noticeText, setNoticeText] = (0,
|
|
55132
|
-
const [commandList, setCommandList] = (0,
|
|
55478
|
+
const [noticeText, setNoticeText] = (0, import_react56.useState)(null);
|
|
55479
|
+
const [commandList, setCommandList] = (0, import_react56.useState)(
|
|
55133
55480
|
commands ?? []
|
|
55134
55481
|
);
|
|
55135
|
-
const notify = (0,
|
|
55136
|
-
const [shellModeActive, setShellModeActive] = (0,
|
|
55137
|
-
const shellControllersRef = (0,
|
|
55482
|
+
const notify = (0, import_react56.useCallback)((text) => setNoticeText(text), []);
|
|
55483
|
+
const [shellModeActive, setShellModeActive] = (0, import_react56.useState)(false);
|
|
55484
|
+
const shellControllersRef = (0, import_react56.useRef)(/* @__PURE__ */ new Set());
|
|
55138
55485
|
const { width: terminalWidth, height: terminalHeight } = useTerminalDimensions();
|
|
55139
|
-
const toggleShellMode = (0,
|
|
55486
|
+
const toggleShellMode = (0, import_react56.useCallback)(
|
|
55140
55487
|
() => setShellModeActive((active) => !active),
|
|
55141
55488
|
[]
|
|
55142
55489
|
);
|
|
55143
|
-
const [showSuggestions, setShowSuggestions] = (0,
|
|
55144
|
-
const onSuggestionsVisibilityChange = (0,
|
|
55490
|
+
const [showSuggestions, setShowSuggestions] = (0, import_react56.useState)(false);
|
|
55491
|
+
const onSuggestionsVisibilityChange = (0, import_react56.useCallback)(
|
|
55145
55492
|
(visible) => setShowSuggestions(visible),
|
|
55146
55493
|
[]
|
|
55147
55494
|
);
|
|
55148
|
-
const [currentApprovalMode, setCurrentApprovalMode] = (0,
|
|
55149
|
-
(0,
|
|
55495
|
+
const [currentApprovalMode, setCurrentApprovalMode] = (0, import_react56.useState)(approvalMode);
|
|
55496
|
+
(0, import_react56.useEffect)(() => {
|
|
55150
55497
|
setCurrentApprovalMode(approvalMode);
|
|
55151
55498
|
}, [approvalMode]);
|
|
55152
|
-
const addInfoItem = (0,
|
|
55499
|
+
const addInfoItem = (0, import_react56.useCallback)(
|
|
55153
55500
|
(item) => {
|
|
55154
55501
|
if (item.type === "info" /* INFO */) {
|
|
55155
55502
|
onTranscriptEvent?.({ type: "info", text: item.text });
|
|
@@ -55157,7 +55504,7 @@ function OpenTuiApp(props) {
|
|
|
55157
55504
|
},
|
|
55158
55505
|
[onTranscriptEvent]
|
|
55159
55506
|
);
|
|
55160
|
-
const adoptApprovalMode = (0,
|
|
55507
|
+
const adoptApprovalMode = (0, import_react56.useCallback)(
|
|
55161
55508
|
(next) => {
|
|
55162
55509
|
setCurrentApprovalMode(next);
|
|
55163
55510
|
if (next === "auto" /* AUTO */ && currentApprovalMode !== "auto" /* AUTO */) {
|
|
@@ -55178,7 +55525,7 @@ function OpenTuiApp(props) {
|
|
|
55178
55525
|
onToolCallSettled
|
|
55179
55526
|
]
|
|
55180
55527
|
);
|
|
55181
|
-
const cycleApprovalMode = (0,
|
|
55528
|
+
const cycleApprovalMode = (0, import_react56.useCallback)(() => {
|
|
55182
55529
|
const next = nextApprovalMode(config.getApprovalMode());
|
|
55183
55530
|
try {
|
|
55184
55531
|
config.setApprovalMode(next);
|
|
@@ -55194,12 +55541,12 @@ function OpenTuiApp(props) {
|
|
|
55194
55541
|
key.preventDefault();
|
|
55195
55542
|
cycleApprovalMode();
|
|
55196
55543
|
});
|
|
55197
|
-
(0,
|
|
55544
|
+
(0, import_react56.useEffect)(() => {
|
|
55198
55545
|
if (approvalMode === "auto" /* AUTO */) {
|
|
55199
55546
|
emitAutoModeEntryNotices({ config, settings, addItem: addInfoItem });
|
|
55200
55547
|
}
|
|
55201
55548
|
}, []);
|
|
55202
|
-
const runShellCommand = (0,
|
|
55549
|
+
const runShellCommand = (0, import_react56.useCallback)(
|
|
55203
55550
|
(command) => {
|
|
55204
55551
|
const emit = props.onTranscriptEvent;
|
|
55205
55552
|
if (!emit) return;
|
|
@@ -55230,7 +55577,7 @@ function OpenTuiApp(props) {
|
|
|
55230
55577
|
},
|
|
55231
55578
|
[config, props.onTranscriptEvent, terminalWidth, terminalHeight]
|
|
55232
55579
|
);
|
|
55233
|
-
(0,
|
|
55580
|
+
(0, import_react56.useEffect)(
|
|
55234
55581
|
() => () => {
|
|
55235
55582
|
for (const controller of shellControllersRef.current) {
|
|
55236
55583
|
controller.abort();
|
|
@@ -55238,7 +55585,7 @@ function OpenTuiApp(props) {
|
|
|
55238
55585
|
},
|
|
55239
55586
|
[]
|
|
55240
55587
|
);
|
|
55241
|
-
const handleSelectSetting = (0,
|
|
55588
|
+
const handleSelectSetting = (0, import_react56.useCallback)((name) => {
|
|
55242
55589
|
if (name === "ui.theme") setDialog({ dialog: "theme" });
|
|
55243
55590
|
else if (name === "general.preferredEditor")
|
|
55244
55591
|
setDialog({ dialog: "editor" });
|
|
@@ -55247,15 +55594,15 @@ function OpenTuiApp(props) {
|
|
|
55247
55594
|
setDialog({ dialog: "model", mode: "vision" });
|
|
55248
55595
|
else setDialog(null);
|
|
55249
55596
|
}, []);
|
|
55250
|
-
const fillComposer = (0,
|
|
55597
|
+
const fillComposer = (0, import_react56.useCallback)(
|
|
55251
55598
|
(text) => {
|
|
55252
55599
|
injectCapturedInput(() => props.composerHandle?.current ?? null, text);
|
|
55253
55600
|
},
|
|
55254
55601
|
[props.composerHandle]
|
|
55255
55602
|
);
|
|
55256
|
-
const [modals, setModals] = (0,
|
|
55257
|
-
const modalSeq = (0,
|
|
55258
|
-
const confirmations = (0,
|
|
55603
|
+
const [modals, setModals] = (0, import_react56.useState)([]);
|
|
55604
|
+
const modalSeq = (0, import_react56.useRef)(0);
|
|
55605
|
+
const confirmations = (0, import_react56.useMemo)(
|
|
55259
55606
|
() => ({
|
|
55260
55607
|
presentShell: /* @__PURE__ */ __name((commandsToRun) => new Promise((resolve4) => {
|
|
55261
55608
|
modalSeq.current += 1;
|
|
@@ -55280,14 +55627,14 @@ function OpenTuiApp(props) {
|
|
|
55280
55627
|
[]
|
|
55281
55628
|
);
|
|
55282
55629
|
const activeModal = modals[0] ?? null;
|
|
55283
|
-
const closeShellModal = (0,
|
|
55630
|
+
const closeShellModal = (0, import_react56.useCallback)(
|
|
55284
55631
|
(modal, resolution) => {
|
|
55285
55632
|
setModals((prev) => prev.filter((m3) => m3.id !== modal.id));
|
|
55286
55633
|
modal.resolve(resolution);
|
|
55287
55634
|
},
|
|
55288
55635
|
[]
|
|
55289
55636
|
);
|
|
55290
|
-
const closeActionModal = (0,
|
|
55637
|
+
const closeActionModal = (0, import_react56.useCallback)(
|
|
55291
55638
|
(modal, confirmed) => {
|
|
55292
55639
|
setModals((prev) => prev.filter((m3) => m3.id !== modal.id));
|
|
55293
55640
|
modal.resolve(confirmed);
|
|
@@ -55296,8 +55643,8 @@ function OpenTuiApp(props) {
|
|
|
55296
55643
|
);
|
|
55297
55644
|
const activeToolCall = waitingToolCalls?.[0] ?? null;
|
|
55298
55645
|
const mcpApproval = useMcpApproval(config);
|
|
55299
|
-
const contextFilesAnnouncedRef = (0,
|
|
55300
|
-
const transcript = (0,
|
|
55646
|
+
const contextFilesAnnouncedRef = (0, import_react56.useRef)(false);
|
|
55647
|
+
const transcript = (0, import_react56.useMemo)(() => {
|
|
55301
55648
|
const reset = /* @__PURE__ */ __name((events) => {
|
|
55302
55649
|
contextFilesAnnouncedRef.current = false;
|
|
55303
55650
|
onTranscriptReset?.(events);
|
|
@@ -55310,7 +55657,7 @@ function OpenTuiApp(props) {
|
|
|
55310
55657
|
append: /* @__PURE__ */ __name((event) => onTranscriptEvent?.(event), "append")
|
|
55311
55658
|
};
|
|
55312
55659
|
}, [onTranscriptReset, onTranscriptEvent]);
|
|
55313
|
-
const host = (0,
|
|
55660
|
+
const host = (0, import_react56.useMemo)(
|
|
55314
55661
|
() => new OpenTuiAppHost({
|
|
55315
55662
|
config,
|
|
55316
55663
|
settings,
|
|
@@ -55339,27 +55686,27 @@ function OpenTuiApp(props) {
|
|
|
55339
55686
|
getSessionStats
|
|
55340
55687
|
]
|
|
55341
55688
|
);
|
|
55342
|
-
(0,
|
|
55343
|
-
(0,
|
|
55344
|
-
(0,
|
|
55689
|
+
(0, import_react56.useSyncExternalStore)(
|
|
55690
|
+
(0, import_react56.useCallback)((cb) => host.subscribe(cb), [host]),
|
|
55691
|
+
(0, import_react56.useCallback)(() => host.getVersion(), [host])
|
|
55345
55692
|
);
|
|
55346
|
-
(0,
|
|
55693
|
+
(0, import_react56.useEffect)(() => {
|
|
55347
55694
|
host.setStreaming(!!streaming);
|
|
55348
55695
|
}, [host, streaming]);
|
|
55349
|
-
const gateway = (0,
|
|
55350
|
-
const reloadRef = (0,
|
|
55351
|
-
const deferredCommandsRef = (0,
|
|
55352
|
-
const [deferredRevision, setDeferredRevision] = (0,
|
|
55353
|
-
const drainingRef = (0,
|
|
55354
|
-
const streamingRef = (0,
|
|
55355
|
-
(0,
|
|
55696
|
+
const gateway = (0, import_react56.useMemo)(() => new OpenTuiSlashGateway(), []);
|
|
55697
|
+
const reloadRef = (0, import_react56.useRef)(null);
|
|
55698
|
+
const deferredCommandsRef = (0, import_react56.useRef)([]);
|
|
55699
|
+
const [deferredRevision, setDeferredRevision] = (0, import_react56.useState)(0);
|
|
55700
|
+
const drainingRef = (0, import_react56.useRef)(false);
|
|
55701
|
+
const streamingRef = (0, import_react56.useRef)(streaming);
|
|
55702
|
+
(0, import_react56.useEffect)(() => {
|
|
55356
55703
|
streamingRef.current = streaming;
|
|
55357
55704
|
}, [streaming]);
|
|
55358
|
-
const dialogRef = (0,
|
|
55359
|
-
(0,
|
|
55705
|
+
const dialogRef = (0, import_react56.useRef)(dialog);
|
|
55706
|
+
(0, import_react56.useEffect)(() => {
|
|
55360
55707
|
dialogRef.current = dialog;
|
|
55361
55708
|
}, [dialog]);
|
|
55362
|
-
(0,
|
|
55709
|
+
(0, import_react56.useEffect)(() => {
|
|
55363
55710
|
const dispatcher = new OpenTuiSlashDispatcher(
|
|
55364
55711
|
host,
|
|
55365
55712
|
{ config, settings, logger, extensionRefreshState },
|
|
@@ -55394,7 +55741,7 @@ function OpenTuiApp(props) {
|
|
|
55394
55741
|
commands,
|
|
55395
55742
|
extensionRefreshState
|
|
55396
55743
|
]);
|
|
55397
|
-
const applyOutcome = (0,
|
|
55744
|
+
const applyOutcome = (0, import_react56.useCallback)(
|
|
55398
55745
|
(outcome) => {
|
|
55399
55746
|
switch (outcome.kind) {
|
|
55400
55747
|
case "handled":
|
|
@@ -55432,7 +55779,7 @@ function OpenTuiApp(props) {
|
|
|
55432
55779
|
},
|
|
55433
55780
|
[onSubmitPrompt, onQuit, onInterrupt, onPopQueue, notify]
|
|
55434
55781
|
);
|
|
55435
|
-
const onSubmit = (0,
|
|
55782
|
+
const onSubmit = (0, import_react56.useCallback)(
|
|
55436
55783
|
async (text, imagePaths) => {
|
|
55437
55784
|
setNoticeText(null);
|
|
55438
55785
|
const submission = normalizeQuitSubmission(text);
|
|
@@ -55506,7 +55853,7 @@ function OpenTuiApp(props) {
|
|
|
55506
55853
|
addInfoItem
|
|
55507
55854
|
]
|
|
55508
55855
|
);
|
|
55509
|
-
(0,
|
|
55856
|
+
(0, import_react56.useEffect)(() => {
|
|
55510
55857
|
if (isExitInProgress()) return;
|
|
55511
55858
|
if (streaming || dialog || shellControllersRef.current.size > 0 || deferredCommandsRef.current.length === 0) {
|
|
55512
55859
|
return;
|
|
@@ -55573,7 +55920,7 @@ function OpenTuiApp(props) {
|
|
|
55573
55920
|
onSubmitPrompt,
|
|
55574
55921
|
runShellCommand
|
|
55575
55922
|
]);
|
|
55576
|
-
const userMessages = (0,
|
|
55923
|
+
const userMessages = (0, import_react56.useMemo)(
|
|
55577
55924
|
() => host.getHistory().filter((item) => item.type === "user").map((item) => item.text ?? ""),
|
|
55578
55925
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55579
55926
|
[host, host.getVersion()]
|
|
@@ -55713,7 +56060,7 @@ __name(OpenTuiApp, "OpenTuiApp");
|
|
|
55713
56060
|
|
|
55714
56061
|
// packages/cli/src/ui/opentui/followup-generation.ts
|
|
55715
56062
|
init_esbuild_shims();
|
|
55716
|
-
var
|
|
56063
|
+
var import_react58 = __toESM(require_react(), 1);
|
|
55717
56064
|
function useFollowupSuggestionGeneration({
|
|
55718
56065
|
config,
|
|
55719
56066
|
settings,
|
|
@@ -55721,12 +56068,12 @@ function useFollowupSuggestionGeneration({
|
|
|
55721
56068
|
items,
|
|
55722
56069
|
waitingCalls
|
|
55723
56070
|
}) {
|
|
55724
|
-
const [promptSuggestion, setPromptSuggestion] = (0,
|
|
55725
|
-
const abortRef = (0,
|
|
55726
|
-
const streamingRef = (0,
|
|
56071
|
+
const [promptSuggestion, setPromptSuggestion] = (0, import_react58.useState)(null);
|
|
56072
|
+
const abortRef = (0, import_react58.useRef)(null);
|
|
56073
|
+
const streamingRef = (0, import_react58.useRef)(streaming);
|
|
55727
56074
|
const followupEnabled = settings.merged.ui?.enableFollowupSuggestions !== false;
|
|
55728
56075
|
const cacheSharingEnabled = settings.merged.ui?.enableCacheSharing !== false;
|
|
55729
|
-
(0,
|
|
56076
|
+
(0, import_react58.useEffect)(() => {
|
|
55730
56077
|
const wasStreaming = streamingRef.current;
|
|
55731
56078
|
if (!followupEnabled || wasStreaming !== streaming) {
|
|
55732
56079
|
abortRef.current?.abort();
|
|
@@ -55763,7 +56110,7 @@ function useFollowupSuggestionGeneration({
|
|
|
55763
56110
|
items,
|
|
55764
56111
|
waitingCalls
|
|
55765
56112
|
]);
|
|
55766
|
-
(0,
|
|
56113
|
+
(0, import_react58.useEffect)(
|
|
55767
56114
|
() => () => {
|
|
55768
56115
|
abortRef.current?.abort();
|
|
55769
56116
|
},
|
|
@@ -55915,7 +56262,7 @@ var OpenTuiRuntime = class _OpenTuiRuntime {
|
|
|
55915
56262
|
|
|
55916
56263
|
// packages/cli/src/ui/opentui/transcript-view.tsx
|
|
55917
56264
|
init_esbuild_shims();
|
|
55918
|
-
var
|
|
56265
|
+
var import_react59 = __toESM(require_react(), 1);
|
|
55919
56266
|
|
|
55920
56267
|
// packages/cli/src/ui/opentui/live-session-model.ts
|
|
55921
56268
|
init_esbuild_shims();
|
|
@@ -57148,7 +57495,7 @@ function ThinkingRow({
|
|
|
57148
57495
|
item,
|
|
57149
57496
|
allExpanded
|
|
57150
57497
|
}) {
|
|
57151
|
-
const [clickedOpen, setClickedOpen] = (0,
|
|
57498
|
+
const [clickedOpen, setClickedOpen] = (0, import_react59.useState)(false);
|
|
57152
57499
|
const expanded = allExpanded || clickedOpen;
|
|
57153
57500
|
const meta = thinkingMeta(item.done, expanded, false, item.durationMs);
|
|
57154
57501
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
@@ -57300,8 +57647,8 @@ function RetryRows({
|
|
|
57300
57647
|
delayMs,
|
|
57301
57648
|
startedAt
|
|
57302
57649
|
}) {
|
|
57303
|
-
const [now, setNow] = (0,
|
|
57304
|
-
(0,
|
|
57650
|
+
const [now, setNow] = (0, import_react59.useState)(() => Date.now());
|
|
57651
|
+
(0, import_react59.useEffect)(() => {
|
|
57305
57652
|
const timer = setInterval(() => setNow(Date.now()), 1e3);
|
|
57306
57653
|
return () => clearInterval(timer);
|
|
57307
57654
|
}, []);
|
|
@@ -57546,7 +57893,7 @@ __name(ArenaSessionRow, "ArenaSessionRow");
|
|
|
57546
57893
|
|
|
57547
57894
|
// packages/cli/src/ui/opentui/live-turn.ts
|
|
57548
57895
|
init_esbuild_shims();
|
|
57549
|
-
var
|
|
57896
|
+
var import_react60 = __toESM(require_react(), 1);
|
|
57550
57897
|
import { readFileSync } from "node:fs";
|
|
57551
57898
|
var IMAGE_MIME_BY_EXTENSION = {
|
|
57552
57899
|
bmp: "image/bmp",
|
|
@@ -57586,51 +57933,51 @@ function foldBatch(events) {
|
|
|
57586
57933
|
__name(foldBatch, "foldBatch");
|
|
57587
57934
|
function useOpenTuiLiveTurn(options) {
|
|
57588
57935
|
const { config } = options;
|
|
57589
|
-
const [items, setItems] = (0,
|
|
57590
|
-
const [streaming, setStreaming] = (0,
|
|
57591
|
-
const [waitingCalls, setWaitingCalls] = (0,
|
|
57936
|
+
const [items, setItems] = (0, import_react60.useState)([]);
|
|
57937
|
+
const [streaming, setStreaming] = (0, import_react60.useState)(false);
|
|
57938
|
+
const [waitingCalls, setWaitingCalls] = (0, import_react60.useState)(
|
|
57592
57939
|
[]
|
|
57593
57940
|
);
|
|
57594
|
-
const queueRef = (0,
|
|
57595
|
-
const [queueLength, setQueueLength] = (0,
|
|
57596
|
-
const abortRef = (0,
|
|
57597
|
-
const streamingRef = (0,
|
|
57598
|
-
const streamingCharsRef = (0,
|
|
57599
|
-
const receivingRef = (0,
|
|
57600
|
-
const [isReceivingContent, setIsReceivingContent] = (0,
|
|
57601
|
-
const turnSeqRef = (0,
|
|
57602
|
-
const waitingCallsRef = (0,
|
|
57941
|
+
const queueRef = (0, import_react60.useRef)([]);
|
|
57942
|
+
const [queueLength, setQueueLength] = (0, import_react60.useState)(0);
|
|
57943
|
+
const abortRef = (0, import_react60.useRef)(null);
|
|
57944
|
+
const streamingRef = (0, import_react60.useRef)(false);
|
|
57945
|
+
const streamingCharsRef = (0, import_react60.useRef)(0);
|
|
57946
|
+
const receivingRef = (0, import_react60.useRef)(false);
|
|
57947
|
+
const [isReceivingContent, setIsReceivingContent] = (0, import_react60.useState)(false);
|
|
57948
|
+
const turnSeqRef = (0, import_react60.useRef)(0);
|
|
57949
|
+
const waitingCallsRef = (0, import_react60.useRef)([]);
|
|
57603
57950
|
waitingCallsRef.current = waitingCalls;
|
|
57604
|
-
const setBusy = (0,
|
|
57951
|
+
const setBusy = (0, import_react60.useCallback)((busy) => {
|
|
57605
57952
|
if (streamingRef.current === busy) return;
|
|
57606
57953
|
streamingRef.current = busy;
|
|
57607
57954
|
setStreaming(busy);
|
|
57608
57955
|
}, []);
|
|
57609
|
-
const setReceiving = (0,
|
|
57956
|
+
const setReceiving = (0, import_react60.useCallback)((receiving) => {
|
|
57610
57957
|
if (receivingRef.current === receiving) return;
|
|
57611
57958
|
receivingRef.current = receiving;
|
|
57612
57959
|
setIsReceivingContent(receiving);
|
|
57613
57960
|
}, []);
|
|
57614
|
-
const apply = (0,
|
|
57961
|
+
const apply = (0, import_react60.useCallback)((ev) => {
|
|
57615
57962
|
setItems((prev) => foldLiveEvent(prev, ev));
|
|
57616
57963
|
}, []);
|
|
57617
|
-
const pushQueue = (0,
|
|
57964
|
+
const pushQueue = (0, import_react60.useCallback)((text) => {
|
|
57618
57965
|
queueRef.current.push(text);
|
|
57619
57966
|
setQueueLength(queueRef.current.length);
|
|
57620
57967
|
}, []);
|
|
57621
|
-
const drainQueue = (0,
|
|
57968
|
+
const drainQueue = (0, import_react60.useCallback)(() => {
|
|
57622
57969
|
const drained = queueRef.current;
|
|
57623
57970
|
queueRef.current = [];
|
|
57624
57971
|
setQueueLength(0);
|
|
57625
57972
|
return drained;
|
|
57626
57973
|
}, []);
|
|
57627
|
-
const restoreQueue = (0,
|
|
57974
|
+
const restoreQueue = (0, import_react60.useCallback)((texts) => {
|
|
57628
57975
|
const restored = texts.map((text) => text.trim()).filter(Boolean);
|
|
57629
57976
|
if (restored.length === 0) return;
|
|
57630
57977
|
queueRef.current = [...restored, ...queueRef.current];
|
|
57631
57978
|
setQueueLength(queueRef.current.length);
|
|
57632
57979
|
}, []);
|
|
57633
|
-
const runTurn = (0,
|
|
57980
|
+
const runTurn = (0, import_react60.useCallback)(
|
|
57634
57981
|
async (prompt, promptId, turnOptions) => {
|
|
57635
57982
|
const seq = ++turnSeqRef.current;
|
|
57636
57983
|
const abort = new AbortController();
|
|
@@ -57706,7 +58053,7 @@ function useOpenTuiLiveTurn(options) {
|
|
|
57706
58053
|
},
|
|
57707
58054
|
[config, apply, drainQueue, restoreQueue, setBusy, setReceiving]
|
|
57708
58055
|
);
|
|
57709
|
-
const submit = (0,
|
|
58056
|
+
const submit = (0, import_react60.useCallback)(
|
|
57710
58057
|
(content, imagePaths, options2) => {
|
|
57711
58058
|
const text = typeof content === "string" ? content : collectText(normalizeParts(content));
|
|
57712
58059
|
if (streamingRef.current) {
|
|
@@ -57730,10 +58077,10 @@ function useOpenTuiLiveTurn(options) {
|
|
|
57730
58077
|
},
|
|
57731
58078
|
[config, apply, pushQueue, runTurn]
|
|
57732
58079
|
);
|
|
57733
|
-
const interrupt = (0,
|
|
58080
|
+
const interrupt = (0, import_react60.useCallback)(() => {
|
|
57734
58081
|
abortRef.current?.abort();
|
|
57735
58082
|
}, []);
|
|
57736
|
-
const resetTranscript = (0,
|
|
58083
|
+
const resetTranscript = (0, import_react60.useCallback)(
|
|
57737
58084
|
(events) => {
|
|
57738
58085
|
turnSeqRef.current += 1;
|
|
57739
58086
|
const abort = abortRef.current;
|
|
@@ -57752,14 +58099,14 @@ function useOpenTuiLiveTurn(options) {
|
|
|
57752
58099
|
},
|
|
57753
58100
|
[setBusy]
|
|
57754
58101
|
);
|
|
57755
|
-
const settleWaitingCall = (0,
|
|
58102
|
+
const settleWaitingCall = (0, import_react60.useCallback)((callId) => {
|
|
57756
58103
|
setWaitingCalls((prev) => prev.filter((c2) => c2.callId !== callId));
|
|
57757
58104
|
}, []);
|
|
57758
|
-
const popQueue = (0,
|
|
58105
|
+
const popQueue = (0, import_react60.useCallback)(() => {
|
|
57759
58106
|
if (queueRef.current.length === 0) return null;
|
|
57760
58107
|
return drainQueue().join("\n\n");
|
|
57761
58108
|
}, [drainQueue]);
|
|
57762
|
-
(0,
|
|
58109
|
+
(0, import_react60.useEffect)(() => () => abortRef.current?.abort(), []);
|
|
57763
58110
|
return {
|
|
57764
58111
|
items,
|
|
57765
58112
|
streaming,
|
|
@@ -57851,29 +58198,29 @@ function OpenTuiEntryApp({
|
|
|
57851
58198
|
items: live.items,
|
|
57852
58199
|
waitingCalls: live.waitingCalls
|
|
57853
58200
|
});
|
|
57854
|
-
const statsRef = (0,
|
|
57855
|
-
(0,
|
|
58201
|
+
const statsRef = (0, import_react61.useRef)(stats);
|
|
58202
|
+
(0, import_react61.useEffect)(() => {
|
|
57856
58203
|
statsRef.current = stats;
|
|
57857
58204
|
}, [stats]);
|
|
57858
|
-
const getSessionStats = (0,
|
|
57859
|
-
const composerHandle = (0,
|
|
57860
|
-
(0,
|
|
58205
|
+
const getSessionStats = (0, import_react61.useCallback)(() => statsRef.current, []);
|
|
58206
|
+
const composerHandle = (0, import_react61.useRef)(null);
|
|
58207
|
+
(0, import_react61.useEffect)(
|
|
57861
58208
|
() => armCapturedInputInjection(() => composerHandle.current, capturedText),
|
|
57862
58209
|
[capturedText]
|
|
57863
58210
|
);
|
|
57864
|
-
(0,
|
|
58211
|
+
(0, import_react61.useEffect)(() => {
|
|
57865
58212
|
const resumeEvents = resumeEventsFromConfig(config);
|
|
57866
58213
|
if (resumeEvents) resetTranscript(resumeEvents);
|
|
57867
58214
|
for (const warning of startupWarnings) {
|
|
57868
58215
|
applyEvent({ type: "warning", text: warning });
|
|
57869
58216
|
}
|
|
57870
58217
|
}, []);
|
|
57871
|
-
const [updateNotice, setUpdateNotice] = (0,
|
|
57872
|
-
const isIdleRef = (0,
|
|
57873
|
-
(0,
|
|
58218
|
+
const [updateNotice, setUpdateNotice] = (0, import_react61.useState)(null);
|
|
58219
|
+
const isIdleRef = (0, import_react61.useRef)(true);
|
|
58220
|
+
(0, import_react61.useEffect)(() => {
|
|
57874
58221
|
isIdleRef.current = !live.streaming;
|
|
57875
58222
|
}, [live.streaming]);
|
|
57876
|
-
const addUpdateItem = (0,
|
|
58223
|
+
const addUpdateItem = (0, import_react61.useCallback)(
|
|
57877
58224
|
(item) => {
|
|
57878
58225
|
if (item.type === "info" /* INFO */) {
|
|
57879
58226
|
applyEvent({ type: "info", text: item.text });
|
|
@@ -57885,25 +58232,25 @@ function OpenTuiEntryApp({
|
|
|
57885
58232
|
},
|
|
57886
58233
|
[applyEvent]
|
|
57887
58234
|
);
|
|
57888
|
-
const setUpdateInfo = (0,
|
|
58235
|
+
const setUpdateInfo = (0, import_react61.useCallback)((info) => {
|
|
57889
58236
|
setUpdateNotice(info?.message ?? null);
|
|
57890
58237
|
}, []);
|
|
57891
58238
|
useUpdateNoticeFlush(addUpdateItem, setUpdateInfo, isIdleRef, live.streaming);
|
|
57892
|
-
const [exitHint, setExitHint] = (0,
|
|
57893
|
-
const exitGuard = (0,
|
|
58239
|
+
const [exitHint, setExitHint] = (0, import_react61.useState)(null);
|
|
58240
|
+
const exitGuard = (0, import_react61.useMemo)(
|
|
57894
58241
|
() => createExitGuard({ onWindowExpired: /* @__PURE__ */ __name(() => setExitHint(null), "onWindowExpired") }),
|
|
57895
58242
|
[]
|
|
57896
58243
|
);
|
|
57897
|
-
(0,
|
|
57898
|
-
const streamingRef = (0,
|
|
57899
|
-
(0,
|
|
58244
|
+
(0, import_react61.useEffect)(() => () => exitGuard.dispose(), [exitGuard]);
|
|
58245
|
+
const streamingRef = (0, import_react61.useRef)(live.streaming);
|
|
58246
|
+
(0, import_react61.useEffect)(() => {
|
|
57900
58247
|
streamingRef.current = live.streaming;
|
|
57901
58248
|
}, [live.streaming]);
|
|
57902
|
-
const waitingCallsRef = (0,
|
|
57903
|
-
(0,
|
|
58249
|
+
const waitingCallsRef = (0, import_react61.useRef)(live.waitingCalls);
|
|
58250
|
+
(0, import_react61.useEffect)(() => {
|
|
57904
58251
|
waitingCallsRef.current = live.waitingCalls;
|
|
57905
58252
|
}, [live.waitingCalls]);
|
|
57906
|
-
const [thoughtsExpanded, setThoughtsExpanded] = (0,
|
|
58253
|
+
const [thoughtsExpanded, setThoughtsExpanded] = (0, import_react61.useState)(false);
|
|
57907
58254
|
useKeyboard((key) => {
|
|
57908
58255
|
if (!matchesCommand("toggleThinkingExpanded" /* TOGGLE_THINKING_EXPANDED */, key)) return;
|
|
57909
58256
|
key.preventDefault();
|
|
@@ -57929,7 +58276,7 @@ function OpenTuiEntryApp({
|
|
|
57929
58276
|
setExitHint(exitGuardHint(guardKey));
|
|
57930
58277
|
}
|
|
57931
58278
|
});
|
|
57932
|
-
const renderMain = (0,
|
|
58279
|
+
const renderMain = (0, import_react61.useCallback)(
|
|
57933
58280
|
() => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { flexDirection: "column", flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
57934
58281
|
OpenTuiTranscriptView,
|
|
57935
58282
|
{
|
|
@@ -57941,7 +58288,7 @@ function OpenTuiEntryApp({
|
|
|
57941
58288
|
) }),
|
|
57942
58289
|
[live.items, width, height, thoughtsExpanded]
|
|
57943
58290
|
);
|
|
57944
|
-
const handleRenderError = (0,
|
|
58291
|
+
const handleRenderError = (0, import_react61.useCallback)(
|
|
57945
58292
|
(error) => {
|
|
57946
58293
|
debugLogger4.error(
|
|
57947
58294
|
`[FATAL_RENDER_ERROR] ${error.message}
|
|
@@ -57953,15 +58300,15 @@ ${error.stack ?? ""}`
|
|
|
57953
58300
|
},
|
|
57954
58301
|
[config]
|
|
57955
58302
|
);
|
|
57956
|
-
const handleStartNewSession = (0,
|
|
58303
|
+
const handleStartNewSession = (0, import_react61.useCallback)(
|
|
57957
58304
|
(sessionId) => startNewSession(sessionId),
|
|
57958
58305
|
[startNewSession]
|
|
57959
58306
|
);
|
|
57960
|
-
const handleSubmitPrompt = (0,
|
|
58307
|
+
const handleSubmitPrompt = (0, import_react61.useCallback)(
|
|
57961
58308
|
(content, imagePaths, options) => submit(content, imagePaths, options),
|
|
57962
58309
|
[submit]
|
|
57963
58310
|
);
|
|
57964
|
-
const handleQuit = (0,
|
|
58311
|
+
const handleQuit = (0, import_react61.useCallback)(() => {
|
|
57965
58312
|
void exitSession(config, 0);
|
|
57966
58313
|
}, [config]);
|
|
57967
58314
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -58038,7 +58385,7 @@ async function startOpenTuiUI(config, settings, startupWarnings, workspaceRoot =
|
|
|
58038
58385
|
// children must sit in the props object: the provider declares it as a
|
|
58039
58386
|
// required prop, which createElement's rest-children overloads can't fill.
|
|
58040
58387
|
// eslint-disable-next-line react/no-children-prop
|
|
58041
|
-
(0,
|
|
58388
|
+
(0, import_react61.createElement)(SessionStatsProvider, {
|
|
58042
58389
|
sessionId: config.getSessionId(),
|
|
58043
58390
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
58044
58391
|
OpenTuiEntryApp,
|