openclaw-cortex 1.1.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/LICENSE +21 -0
- package/README.md +67 -0
- package/bin/cortex-ui.mjs +307 -0
- package/package.json +35 -0
- package/static/_app/env.js +1 -0
- package/static/_app/immutable/assets/0.CTZ7R4vC.css +1 -0
- package/static/_app/immutable/assets/2.D5MMRphb.css +1 -0
- package/static/_app/immutable/assets/4.Cst5sby_.css +1 -0
- package/static/_app/immutable/assets/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Script-Regular.D5yQViql.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Size1-Regular.C195tn64.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
- package/static/_app/immutable/assets/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
- package/static/_app/immutable/assets/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
- package/static/_app/immutable/assets/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
- package/static/_app/immutable/chunks/-Dz179kp.js +1 -0
- package/static/_app/immutable/chunks/0A2p0G4C.js +1 -0
- package/static/_app/immutable/chunks/2EtD6e53.js +1 -0
- package/static/_app/immutable/chunks/2UxHyX5q.js +1 -0
- package/static/_app/immutable/chunks/3e1v2bzS.js +1 -0
- package/static/_app/immutable/chunks/4A_iFExJ.js +1 -0
- package/static/_app/immutable/chunks/5J0xJHOV.js +321 -0
- package/static/_app/immutable/chunks/5i3qLPDT.js +1 -0
- package/static/_app/immutable/chunks/83L43bj1.js +1 -0
- package/static/_app/immutable/chunks/85-TOEBH.js +1 -0
- package/static/_app/immutable/chunks/B-drBnSa.js +1 -0
- package/static/_app/immutable/chunks/B0m2ddpp.js +1 -0
- package/static/_app/immutable/chunks/B1dDrJ26.js +1 -0
- package/static/_app/immutable/chunks/B1yitclQ.js +1 -0
- package/static/_app/immutable/chunks/B2A7gHtL.js +2 -0
- package/static/_app/immutable/chunks/B3DkuU-J.js +1 -0
- package/static/_app/immutable/chunks/B5Fyld5U.js +1 -0
- package/static/_app/immutable/chunks/B6aJPvgy.js +1 -0
- package/static/_app/immutable/chunks/B7c-h3xW.js +1 -0
- package/static/_app/immutable/chunks/B7mTdjB0.js +1 -0
- package/static/_app/immutable/chunks/B7xXCP9k.js +65 -0
- package/static/_app/immutable/chunks/B93PlW-d.js +1 -0
- package/static/_app/immutable/chunks/BBf5iR-q.js +1 -0
- package/static/_app/immutable/chunks/BEDo0Tqx.js +1 -0
- package/static/_app/immutable/chunks/BERRCDM3.js +1 -0
- package/static/_app/immutable/chunks/BETggiCN.js +1 -0
- package/static/_app/immutable/chunks/BEwlwnbL.js +1 -0
- package/static/_app/immutable/chunks/BFfxhgS-.js +1 -0
- package/static/_app/immutable/chunks/BGHnOYBU.js +1 -0
- package/static/_app/immutable/chunks/BGJmEYvX.js +1 -0
- package/static/_app/immutable/chunks/BH7IYjvW.js +1 -0
- package/static/_app/immutable/chunks/BHpy7Gm-.js +7 -0
- package/static/_app/immutable/chunks/BIGW1oBm.js +1 -0
- package/static/_app/immutable/chunks/BJ7Hojwm.js +165 -0
- package/static/_app/immutable/chunks/BJDFO7_C.js +1 -0
- package/static/_app/immutable/chunks/BL5jzBAz.js +1 -0
- package/static/_app/immutable/chunks/BLmx8bSh.js +1 -0
- package/static/_app/immutable/chunks/BLtJtn59.js +1 -0
- package/static/_app/immutable/chunks/BM1_JUlF.js +1 -0
- package/static/_app/immutable/chunks/BMWR74SV.js +1 -0
- package/static/_app/immutable/chunks/BPQ3VLAy.js +1 -0
- package/static/_app/immutable/chunks/BQ8w6xss.js +1 -0
- package/static/_app/immutable/chunks/BR5kRUq4.js +1 -0
- package/static/_app/immutable/chunks/BRHolxvo.js +1 -0
- package/static/_app/immutable/chunks/BRZ36xJF.js +1 -0
- package/static/_app/immutable/chunks/BTJTHyun.js +1 -0
- package/static/_app/immutable/chunks/BTifaqeh.js +1 -0
- package/static/_app/immutable/chunks/BUw7H-hv.js +1 -0
- package/static/_app/immutable/chunks/BV7otONQ.js +1 -0
- package/static/_app/immutable/chunks/BVNfpfKI.js +1 -0
- package/static/_app/immutable/chunks/BVQ-GDCI.js +1 -0
- package/static/_app/immutable/chunks/BWvSN4gD.js +1 -0
- package/static/_app/immutable/chunks/BXkSAIEj.js +1 -0
- package/static/_app/immutable/chunks/BYXRTvT-.js +1 -0
- package/static/_app/immutable/chunks/BYunw83y.js +1 -0
- package/static/_app/immutable/chunks/BZvkOJ9d.js +1 -0
- package/static/_app/immutable/chunks/B_m7g4N7.js +1 -0
- package/static/_app/immutable/chunks/Ba13S78F.js +1 -0
- package/static/_app/immutable/chunks/BaaWV1KV.js +1 -0
- package/static/_app/immutable/chunks/BbxtiRj7.js +1 -0
- package/static/_app/immutable/chunks/BcOcwvcX.js +1 -0
- package/static/_app/immutable/chunks/BcVCzyr7.js +1 -0
- package/static/_app/immutable/chunks/BdImnpbu.js +1 -0
- package/static/_app/immutable/chunks/BdnUsdx6.js +1 -0
- package/static/_app/immutable/chunks/Be_uRYmX.js +1 -0
- package/static/_app/immutable/chunks/BfHTSMKl.js +1 -0
- package/static/_app/immutable/chunks/BfJx3WfE.js +1 -0
- package/static/_app/immutable/chunks/BfQbQz2e.js +1 -0
- package/static/_app/immutable/chunks/BfjtVDDH.js +1 -0
- package/static/_app/immutable/chunks/BgCckEu3.js +43 -0
- package/static/_app/immutable/chunks/BgDCqdQA.js +1 -0
- package/static/_app/immutable/chunks/BgIZa_E2.js +1 -0
- package/static/_app/immutable/chunks/BhOHFoWU.js +1 -0
- package/static/_app/immutable/chunks/BhRPY-oY.js +1 -0
- package/static/_app/immutable/chunks/BkioyH1T.js +1 -0
- package/static/_app/immutable/chunks/Bkuqu6BP.js +1 -0
- package/static/_app/immutable/chunks/BmXAJ9_W.js +1 -0
- package/static/_app/immutable/chunks/Bmn6On1c.js +1 -0
- package/static/_app/immutable/chunks/Bp6g37R7.js +1 -0
- package/static/_app/immutable/chunks/BpQpoErY.js +30 -0
- package/static/_app/immutable/chunks/BqTXFGrv.js +1 -0
- package/static/_app/immutable/chunks/BqYA7rlc.js +1 -0
- package/static/_app/immutable/chunks/Br6cN0cg.js +1 -0
- package/static/_app/immutable/chunks/BrzmwbiE.js +1 -0
- package/static/_app/immutable/chunks/BsS91CYL.js +1 -0
- package/static/_app/immutable/chunks/BspZqrRM.js +1 -0
- package/static/_app/immutable/chunks/BtCnVYZw.js +1 -0
- package/static/_app/immutable/chunks/BtEQkMu_.js +1 -0
- package/static/_app/immutable/chunks/BtOb2qkB.js +1 -0
- package/static/_app/immutable/chunks/BthQWCQV.js +1 -0
- package/static/_app/immutable/chunks/BtjpZpjN.js +1 -0
- package/static/_app/immutable/chunks/BtqSS_iP.js +1 -0
- package/static/_app/immutable/chunks/BtvRca6l.js +1 -0
- package/static/_app/immutable/chunks/Buea-lGh.js +1 -0
- package/static/_app/immutable/chunks/Bv_4Rxtq.js +1 -0
- package/static/_app/immutable/chunks/BvzEVeQv.js +1 -0
- package/static/_app/immutable/chunks/Bw305WKR.js +1 -0
- package/static/_app/immutable/chunks/BxgE0vQu.js +1 -0
- package/static/_app/immutable/chunks/ByZADglo.js +7 -0
- package/static/_app/immutable/chunks/BzJJZx-M.js +1 -0
- package/static/_app/immutable/chunks/BzadFaiy.js +162 -0
- package/static/_app/immutable/chunks/C-HG3fhB.js +1 -0
- package/static/_app/immutable/chunks/C-SQnVFl.js +1 -0
- package/static/_app/immutable/chunks/C-sUppwS.js +1 -0
- package/static/_app/immutable/chunks/C0HS_06l.js +1 -0
- package/static/_app/immutable/chunks/C0hk2d4L.js +1 -0
- package/static/_app/immutable/chunks/C151Ov-r.js +1 -0
- package/static/_app/immutable/chunks/C28nlFVT.js +1 -0
- package/static/_app/immutable/chunks/C2t-YnRu.js +1 -0
- package/static/_app/immutable/chunks/C39BiMTA.js +1 -0
- package/static/_app/immutable/chunks/C3B-1QV4.js +1 -0
- package/static/_app/immutable/chunks/C3Wv6jpd.js +1 -0
- package/static/_app/immutable/chunks/C3mMm8J8.js +1 -0
- package/static/_app/immutable/chunks/C47S-Tmv.js +1 -0
- package/static/_app/immutable/chunks/C4EeE6gA.js +1 -0
- package/static/_app/immutable/chunks/C4IJs8-o.js +1 -0
- package/static/_app/immutable/chunks/C4gqWexZ.js +1 -0
- package/static/_app/immutable/chunks/C5YyOfLZ.js +1 -0
- package/static/_app/immutable/chunks/C7zT0LnQ.js +1 -0
- package/static/_app/immutable/chunks/C8M2exoo.js +1 -0
- package/static/_app/immutable/chunks/C8SIHLmM.js +1 -0
- package/static/_app/immutable/chunks/C8lEn-DE.js +1 -0
- package/static/_app/immutable/chunks/C98Dy4si.js +1 -0
- package/static/_app/immutable/chunks/C9E63BpL.js +1 -0
- package/static/_app/immutable/chunks/C9XAeP06.js +1 -0
- package/static/_app/immutable/chunks/C9dUb6Cb.js +1 -0
- package/static/_app/immutable/chunks/C9oPPf7i.js +1 -0
- package/static/_app/immutable/chunks/C9tS-k6U.js +1 -0
- package/static/_app/immutable/chunks/CDVJQ6XC.js +1 -0
- package/static/_app/immutable/chunks/CDx5xZoG.js +1 -0
- package/static/_app/immutable/chunks/CEL-wOlO.js +1 -0
- package/static/_app/immutable/chunks/CEu0bR-o.js +1 -0
- package/static/_app/immutable/chunks/CF10PKvl.js +1 -0
- package/static/_app/immutable/chunks/CFHQjOhq.js +1 -0
- package/static/_app/immutable/chunks/CG6Dc4jp.js +1 -0
- package/static/_app/immutable/chunks/CG8Ifv2g.js +1 -0
- package/static/_app/immutable/chunks/CH1njM8p.js +1 -0
- package/static/_app/immutable/chunks/CHBK5X1w.js +68 -0
- package/static/_app/immutable/chunks/CHLpvVh8.js +1 -0
- package/static/_app/immutable/chunks/CHM0blh-.js +1 -0
- package/static/_app/immutable/chunks/CI2Yzjad.js +64 -0
- package/static/_app/immutable/chunks/CIyB7iq8.js +1 -0
- package/static/_app/immutable/chunks/CIznanO1.js +1 -0
- package/static/_app/immutable/chunks/CJc9bBzg.js +1 -0
- package/static/_app/immutable/chunks/CKIfxQSi.js +1 -0
- package/static/_app/immutable/chunks/CLxacb5B.js +1 -0
- package/static/_app/immutable/chunks/CM4QnuZs.js +4 -0
- package/static/_app/immutable/chunks/CMTm3GFP.js +1 -0
- package/static/_app/immutable/chunks/CMjwMIkn.js +1 -0
- package/static/_app/immutable/chunks/CO1LY3CK.js +1 -0
- package/static/_app/immutable/chunks/COcwbKMJ.js +1 -0
- package/static/_app/immutable/chunks/COkxafJQ.js +1 -0
- package/static/_app/immutable/chunks/COt5Ahok.js +1 -0
- package/static/_app/immutable/chunks/CPTuQiBa.js +10 -0
- package/static/_app/immutable/chunks/CQ8jqdy-.js +1 -0
- package/static/_app/immutable/chunks/CS3Unz2-.js +1 -0
- package/static/_app/immutable/chunks/CSXwinHm.js +1 -0
- package/static/_app/immutable/chunks/CSt7grsY.js +267 -0
- package/static/_app/immutable/chunks/CTLgUaOw.js +15 -0
- package/static/_app/immutable/chunks/CTRr51gU.js +1 -0
- package/static/_app/immutable/chunks/CVF7vp9Z.js +1 -0
- package/static/_app/immutable/chunks/CVO1_9PV.js +1 -0
- package/static/_app/immutable/chunks/CVdnzihN.js +1 -0
- package/static/_app/immutable/chunks/CW8IKDeL.js +1 -0
- package/static/_app/immutable/chunks/CXQ1lKJR.js +1 -0
- package/static/_app/immutable/chunks/CXtECtnM.js +1 -0
- package/static/_app/immutable/chunks/CXuqG_J2.js +24 -0
- package/static/_app/immutable/chunks/CZhp0h8q.js +1 -0
- package/static/_app/immutable/chunks/CaGTHgeg.js +1 -0
- package/static/_app/immutable/chunks/CaL1vZnA.js +1 -0
- package/static/_app/immutable/chunks/CafNBF8u.js +1 -0
- package/static/_app/immutable/chunks/CbFg5uaA.js +1 -0
- package/static/_app/immutable/chunks/CbWomDEd.js +145 -0
- package/static/_app/immutable/chunks/CbfX1IO0.js +1 -0
- package/static/_app/immutable/chunks/CckKNcSY.js +1 -0
- package/static/_app/immutable/chunks/CeAyd5Ju.js +1 -0
- package/static/_app/immutable/chunks/Cehz00B_.js +36 -0
- package/static/_app/immutable/chunks/CenWIFCC.js +1 -0
- package/static/_app/immutable/chunks/CfMaDYuo.js +1 -0
- package/static/_app/immutable/chunks/CfQXZHmo.js +1 -0
- package/static/_app/immutable/chunks/Cg-RD9OK.js +1 -0
- package/static/_app/immutable/chunks/Ch6_qw5b.js +1 -0
- package/static/_app/immutable/chunks/ChMvpjG-.js +1 -0
- package/static/_app/immutable/chunks/ChOWTdG8.js +1 -0
- package/static/_app/immutable/chunks/Ci3HlJdq.js +1 -0
- package/static/_app/immutable/chunks/Cj5Yp3dK.js +1 -0
- package/static/_app/immutable/chunks/CjW8XjqM.js +1 -0
- package/static/_app/immutable/chunks/CjoLj4QM.js +1 -0
- package/static/_app/immutable/chunks/CkAYskLX.js +1 -0
- package/static/_app/immutable/chunks/CkByrt1z.js +1 -0
- package/static/_app/immutable/chunks/CkXjmgJE.js +1 -0
- package/static/_app/immutable/chunks/CklMAg4u.js +1 -0
- package/static/_app/immutable/chunks/CktI4lAE.js +1 -0
- package/static/_app/immutable/chunks/Cl8IGKIC.js +1 -0
- package/static/_app/immutable/chunks/CmIQRyeF.js +1 -0
- package/static/_app/immutable/chunks/CmKTTxBW.js +1 -0
- package/static/_app/immutable/chunks/Cmh6b_Ma.js +1 -0
- package/static/_app/immutable/chunks/CnnebwVN.js +1 -0
- package/static/_app/immutable/chunks/CnnmHF94.js +1 -0
- package/static/_app/immutable/chunks/CnsnAmq5.js +1 -0
- package/static/_app/immutable/chunks/Co6uUVPk.js +1 -0
- package/static/_app/immutable/chunks/CoDkCxhg.js +1 -0
- package/static/_app/immutable/chunks/CoP9XEcB.js +1 -0
- package/static/_app/immutable/chunks/Cp-IABpG.js +1 -0
- package/static/_app/immutable/chunks/Cq5zzVJU.js +1 -0
- package/static/_app/immutable/chunks/CquLrc37.js +1 -0
- package/static/_app/immutable/chunks/CsfeWuGM.js +1 -0
- package/static/_app/immutable/chunks/Csfq5Kiy.js +1 -0
- package/static/_app/immutable/chunks/CuPHTKiy.js +1 -0
- package/static/_app/immutable/chunks/Cuk6v7N8.js +1 -0
- package/static/_app/immutable/chunks/CvQeaAIM.js +1 -0
- package/static/_app/immutable/chunks/Cvjx9yec.js +1 -0
- package/static/_app/immutable/chunks/CwdUHN22.js +10 -0
- package/static/_app/immutable/chunks/CwoSXNpI.js +1 -0
- package/static/_app/immutable/chunks/CxGSJlkm.js +1 -0
- package/static/_app/immutable/chunks/CxLEBnE3.js +1 -0
- package/static/_app/immutable/chunks/CxbxFI8M.js +1 -0
- package/static/_app/immutable/chunks/CyktbL80.js +1 -0
- package/static/_app/immutable/chunks/CylS5w8V.js +1 -0
- package/static/_app/immutable/chunks/CzTSHFRz.js +1 -0
- package/static/_app/immutable/chunks/D-2ljcwZ.js +1 -0
- package/static/_app/immutable/chunks/D0YGMca9.js +1 -0
- package/static/_app/immutable/chunks/D0h_xhSm.js +1 -0
- package/static/_app/immutable/chunks/D0r3Knsf.js +1 -0
- package/static/_app/immutable/chunks/D17OF-Vu.js +1 -0
- package/static/_app/immutable/chunks/D1j8_8rp.js +1 -0
- package/static/_app/immutable/chunks/D2qRk260.js +1 -0
- package/static/_app/immutable/chunks/D3lLCCz7.js +1 -0
- package/static/_app/immutable/chunks/D4_iv3hh.js +1 -0
- package/static/_app/immutable/chunks/D4h5O-jR.js +1 -0
- package/static/_app/immutable/chunks/D5-asLiD.js +1 -0
- package/static/_app/immutable/chunks/D53aC0YG.js +1 -0
- package/static/_app/immutable/chunks/D5KoaKCx.js +1 -0
- package/static/_app/immutable/chunks/D5qUzPtI.js +24 -0
- package/static/_app/immutable/chunks/D6tSezzf.js +2 -0
- package/static/_app/immutable/chunks/D7o27uSR.js +1 -0
- package/static/_app/immutable/chunks/D7oLnXFd.js +1 -0
- package/static/_app/immutable/chunks/D82EKSYY.js +1 -0
- package/static/_app/immutable/chunks/D87Tk5Gz.js +1 -0
- package/static/_app/immutable/chunks/D8_7TLub.js +1 -0
- package/static/_app/immutable/chunks/D93ZcfNL.js +1 -0
- package/static/_app/immutable/chunks/D97Zzqfu.js +1 -0
- package/static/_app/immutable/chunks/DAi9KRSo.js +1 -0
- package/static/_app/immutable/chunks/DBpX0yWo.js +1 -0
- package/static/_app/immutable/chunks/DDfwx6bG.js +1 -0
- package/static/_app/immutable/chunks/DFQXde-d.js +1 -0
- package/static/_app/immutable/chunks/DFWUc33u.js +1 -0
- package/static/_app/immutable/chunks/DFXneXwc.js +1 -0
- package/static/_app/immutable/chunks/DGztddWO.js +1 -0
- package/static/_app/immutable/chunks/DH5Ifo-i.js +1 -0
- package/static/_app/immutable/chunks/DHCkPAjA.js +1 -0
- package/static/_app/immutable/chunks/DHJKELXO.js +1 -0
- package/static/_app/immutable/chunks/DHLdr2oY.js +61 -0
- package/static/_app/immutable/chunks/DHQR4-dF.js +1 -0
- package/static/_app/immutable/chunks/DHfvhpat.js +220 -0
- package/static/_app/immutable/chunks/DID_Ax9Y.js +1 -0
- package/static/_app/immutable/chunks/DM8c43g1.js +1 -0
- package/static/_app/immutable/chunks/DMzUqQB5.js +1 -0
- package/static/_app/immutable/chunks/DNstp7By.js +1 -0
- package/static/_app/immutable/chunks/DPfMkruS.js +1 -0
- package/static/_app/immutable/chunks/DPrxUVm_.js +1 -0
- package/static/_app/immutable/chunks/DQyhUUbL.js +1 -0
- package/static/_app/immutable/chunks/DR4elm4u.js +1 -0
- package/static/_app/immutable/chunks/DRg8JJMk.js +1 -0
- package/static/_app/immutable/chunks/DRw_LuNl.js +1 -0
- package/static/_app/immutable/chunks/DU1UobuO.js +1 -0
- package/static/_app/immutable/chunks/DUszq2jm.js +1 -0
- package/static/_app/immutable/chunks/DV7GczEv.js +1 -0
- package/static/_app/immutable/chunks/DVFEvuxE.js +1 -0
- package/static/_app/immutable/chunks/DVMEJ2y_.js +1 -0
- package/static/_app/immutable/chunks/DVP7Iy08.js +1 -0
- package/static/_app/immutable/chunks/DVxCFoDh.js +1 -0
- package/static/_app/immutable/chunks/DWedfzmr.js +1 -0
- package/static/_app/immutable/chunks/DWrx1Km3.js +1 -0
- package/static/_app/immutable/chunks/DX6XiGOO.js +1 -0
- package/static/_app/immutable/chunks/DXbdFlpD.js +1 -0
- package/static/_app/immutable/chunks/DXmwc3jG.js +1 -0
- package/static/_app/immutable/chunks/DXvB9xmW.js +1 -0
- package/static/_app/immutable/chunks/DYoxhk2S.js +1 -0
- package/static/_app/immutable/chunks/DZf3V79B.js +1 -0
- package/static/_app/immutable/chunks/DZxFcAj9.js +1 -0
- package/static/_app/immutable/chunks/D_Q5rh1f.js +1 -0
- package/static/_app/immutable/chunks/Da5cRb03.js +1 -0
- package/static/_app/immutable/chunks/DaZJ10kq.js +1 -0
- package/static/_app/immutable/chunks/DcOAMOlN.js +13 -0
- package/static/_app/immutable/chunks/DcaNXYhu.js +1 -0
- package/static/_app/immutable/chunks/DctEUaEs.js +122 -0
- package/static/_app/immutable/chunks/Dd19v3D-.js +1 -0
- package/static/_app/immutable/chunks/DdkO51Og.js +1 -0
- package/static/_app/immutable/chunks/Ddpm2sMN.js +2 -0
- package/static/_app/immutable/chunks/Ddv68eIx.js +1 -0
- package/static/_app/immutable/chunks/Des-eS-w.js +1 -0
- package/static/_app/immutable/chunks/Df6bDoY_.js +1 -0
- package/static/_app/immutable/chunks/Dg5xB15N.js +1 -0
- package/static/_app/immutable/chunks/DhXJpUyf.js +261 -0
- package/static/_app/immutable/chunks/DjeNoAoh.js +1 -0
- package/static/_app/immutable/chunks/DkFqJrB1.js +1 -0
- package/static/_app/immutable/chunks/DkwncUOv.js +1 -0
- package/static/_app/immutable/chunks/DmOB1nMW.js +60 -0
- package/static/_app/immutable/chunks/DnULxvSX.js +1 -0
- package/static/_app/immutable/chunks/Dntbqd40.js +1 -0
- package/static/_app/immutable/chunks/DpBBTLWw.js +1 -0
- package/static/_app/immutable/chunks/Dpen1YoG.js +1 -0
- package/static/_app/immutable/chunks/DqQDbK_p.js +1 -0
- package/static/_app/immutable/chunks/DqwNpetd.js +1 -0
- package/static/_app/immutable/chunks/Dr0tKAg9.js +1 -0
- package/static/_app/immutable/chunks/DsOJ9woJ.js +1 -0
- package/static/_app/immutable/chunks/Dspwwk_N.js +1 -0
- package/static/_app/immutable/chunks/DsqENSWP.js +1 -0
- package/static/_app/immutable/chunks/Dv7Oe6Be.js +1 -0
- package/static/_app/immutable/chunks/DvCA51Ri.js +1 -0
- package/static/_app/immutable/chunks/Dx-B1_4e.js +1 -0
- package/static/_app/immutable/chunks/DxNHbxmM.js +1 -0
- package/static/_app/immutable/chunks/DxSwrfjg.js +1 -0
- package/static/_app/immutable/chunks/DyxjwDmM.js +1 -0
- package/static/_app/immutable/chunks/E3gJ1_iC.js +1 -0
- package/static/_app/immutable/chunks/FixhtMGQ.js +1 -0
- package/static/_app/immutable/chunks/Gi6I4Gst.js +1 -0
- package/static/_app/immutable/chunks/GsRaNv29.js +1 -0
- package/static/_app/immutable/chunks/IF9eRakj.js +1 -0
- package/static/_app/immutable/chunks/IeuSbFQv.js +1 -0
- package/static/_app/immutable/chunks/JSbxStMO.js +1 -0
- package/static/_app/immutable/chunks/KBP0Pl-D.js +1 -0
- package/static/_app/immutable/chunks/L9t79GZl.js +1 -0
- package/static/_app/immutable/chunks/Lsu8CQWQ.js +1 -0
- package/static/_app/immutable/chunks/MzD3tlZU.js +1 -0
- package/static/_app/immutable/chunks/P80f7IUj.js +1 -0
- package/static/_app/immutable/chunks/Pmp26Uib.js +1 -0
- package/static/_app/immutable/chunks/QIJgUcNo.js +1 -0
- package/static/_app/immutable/chunks/U2OjavRo.js +160 -0
- package/static/_app/immutable/chunks/VCDPK7BO.js +1 -0
- package/static/_app/immutable/chunks/VOosw3JB.js +1 -0
- package/static/_app/immutable/chunks/YqXBG_HV.js +1 -0
- package/static/_app/immutable/chunks/Yzrsuije.js +1 -0
- package/static/_app/immutable/chunks/Z4qYLg5o.js +249 -0
- package/static/_app/immutable/chunks/_ykCGR6B.js +1 -0
- package/static/_app/immutable/chunks/bCR0ucgS.js +1 -0
- package/static/_app/immutable/chunks/bN70gL4F.js +1 -0
- package/static/_app/immutable/chunks/bWB8K6-D.js +5 -0
- package/static/_app/immutable/chunks/brMvHLvt.js +1 -0
- package/static/_app/immutable/chunks/d_IM0gte.js +139 -0
- package/static/_app/immutable/chunks/dwOrl1Do.js +1 -0
- package/static/_app/immutable/chunks/fKv21gyL.js +1 -0
- package/static/_app/immutable/chunks/fbvUeNLU.js +1 -0
- package/static/_app/immutable/chunks/fuZLfV_i.js +1 -0
- package/static/_app/immutable/chunks/g9-lgVsj.js +1 -0
- package/static/_app/immutable/chunks/gcz8RCvz.js +1 -0
- package/static/_app/immutable/chunks/ghzVJG2J.js +3 -0
- package/static/_app/immutable/chunks/hJgmCMqR.js +1 -0
- package/static/_app/immutable/chunks/hegEt444.js +1 -0
- package/static/_app/immutable/chunks/huq_gnMY.js +1 -0
- package/static/_app/immutable/chunks/k_qm7-4y.js +1 -0
- package/static/_app/immutable/chunks/lXgVvXCa.js +1 -0
- package/static/_app/immutable/chunks/m17aaUwq.js +1 -0
- package/static/_app/immutable/chunks/mWjccvbQ.js +1 -0
- package/static/_app/immutable/chunks/mjskCLCv.js +1 -0
- package/static/_app/immutable/chunks/n2N0HUVH.js +1 -0
- package/static/_app/immutable/chunks/nnazh41B.js +1 -0
- package/static/_app/immutable/chunks/oC1Mvi0U.js +89 -0
- package/static/_app/immutable/chunks/pwnRazgM.js +1 -0
- package/static/_app/immutable/chunks/qR_TM3YX.js +1 -0
- package/static/_app/immutable/chunks/qdsjHGoJ.js +1 -0
- package/static/_app/immutable/chunks/rBDgyNy3.js +1 -0
- package/static/_app/immutable/chunks/rGO070M0.js +1 -0
- package/static/_app/immutable/chunks/sDksUvMU.js +1 -0
- package/static/_app/immutable/chunks/tddw2aQM.js +112 -0
- package/static/_app/immutable/chunks/u5AG7uiY.js +1 -0
- package/static/_app/immutable/chunks/uYugtg8r.js +1 -0
- package/static/_app/immutable/chunks/vGWfd6FD.js +1 -0
- package/static/_app/immutable/chunks/wDzz0qaB.js +1 -0
- package/static/_app/immutable/entry/app.dIuL6Sx2.js +2 -0
- package/static/_app/immutable/entry/start.CPRrpmQQ.js +1 -0
- package/static/_app/immutable/nodes/0.C05hyQv4.js +31 -0
- package/static/_app/immutable/nodes/1.DNR70oez.js +1 -0
- package/static/_app/immutable/nodes/10.B2cLmMC7.js +10 -0
- package/static/_app/immutable/nodes/11.DJhRDO9i.js +10 -0
- package/static/_app/immutable/nodes/12.EQZXcF2X.js +15 -0
- package/static/_app/immutable/nodes/13.Cmr6DJCN.js +10 -0
- package/static/_app/immutable/nodes/14.C_0-G1-G.js +30 -0
- package/static/_app/immutable/nodes/15.CQpP4DKr.js +27 -0
- package/static/_app/immutable/nodes/16.X30_YaDj.js +6 -0
- package/static/_app/immutable/nodes/17.CFfybSgG.js +14 -0
- package/static/_app/immutable/nodes/2.BAngx7Bz.js +1 -0
- package/static/_app/immutable/nodes/3.DXKIOrMy.js +13 -0
- package/static/_app/immutable/nodes/4.DbkQP2wh.js +20 -0
- package/static/_app/immutable/nodes/5.ITF8-ndt.js +16 -0
- package/static/_app/immutable/nodes/6.c4AJxCzT.js +22 -0
- package/static/_app/immutable/nodes/7.BIY7aMPw.js +49 -0
- package/static/_app/immutable/nodes/8.z-z4LZ_8.js +17 -0
- package/static/_app/immutable/nodes/9.CSPrnU3x.js +4 -0
- package/static/_app/version.json +1 -0
- package/static/config.json +10 -0
- package/static/index.html +48 -0
- package/static/logo.png +0 -0
- package/static/manifest.json +23 -0
- package/static/sw.js +80 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import{d as ue,b as c,f as m,s as Q,a as j,e as Ce,g as ye,t as xe}from"../chunks/B2A7gHtL.js";import{p as ce,c as de,r as t,h as a,f as r,g as e,t as K,a6 as je,s as R,a as Le,u as re,d as n,j as ie,n as be,i as Te,bd as ze,b as Ee}from"../chunks/qR_TM3YX.js";import{s as Ae,g as Oe}from"../chunks/ghzVJG2J.js";import{i as G}from"../chunks/DpBBTLWw.js";import{e as le,s as oe,b as fe,g as we,r as ge,i as ve,l as Se,a as Me}from"../chunks/D6tSezzf.js";import{g as He}from"../chunks/CIznanO1.js";import{g as ke}from"../chunks/Be_uRYmX.js";import{g as Be,a as Ue}from"../chunks/CktI4lAE.js";import{i as De}from"../chunks/KBP0Pl-D.js";import{b as he}from"../chunks/nnazh41B.js";import{b as Ve}from"../chunks/BYXRTvT-.js";import{p as me,s as Ke,a as Pe}from"../chunks/CkAYskLX.js";import{s as Re,g as _e}from"../chunks/C8SIHLmM.js";const Ie=!1,qe=!1,Gt=Object.freeze(Object.defineProperty({__proto__:null,prerender:Ie,ssr:qe},Symbol.toStringTag,{value:"Module"}));var Ne=m('<p class="text-xs text-text-secondary mt-1"> </p>'),We=m('<div role="alert"><div class="flex items-start gap-3"><div class="flex-shrink-0 w-5 h-5 mt-0.5"><svg class="w-full h-full" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path></svg></div> <div class="flex-1 min-w-0"><p class="text-sm font-medium text-text-primary"> </p> <!></div> <button class="flex-shrink-0 ml-auto p-1 rounded hover:bg-bg-hover text-text-muted hover:text-text-primary transition-colors" aria-label="Close notification"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button></div></div>'),Ge=m('<div class="fixed bottom-4 right-4 z-50 space-y-2 max-w-sm" aria-live="polite" aria-relevant="additions removals"></div>');function $e(I,T){ce(T,!1);const b=ke(),$={success:{color:"bg-accent-green border-accent-green",glow:"glow-green",icon:"M5 13l4 4L19 7"},error:{color:"bg-accent-red border-accent-red",glow:"glow-red",icon:"M6 18L18 6M6 6l12 12"},warning:{color:"bg-accent-amber border-accent-amber",glow:"glow-amber",icon:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"},info:{color:"bg-accent-cyan border-accent-cyan",glow:"glow-cyan",icon:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}};De();var g=Ge();le(g,5,()=>b.list,u=>u.id,(u,s)=>{const f=je(()=>$[e(s).type]);var x=We(),S=a(x),w=a(S),C=a(w),P=a(C);t(C),t(w);var A=r(w,2),L=a(A),ee=a(L,!0);t(L);var Y=r(L,2);{var h=i=>{var l=Ne(),y=a(l,!0);t(l),K(()=>Q(y,e(s).message)),c(i,l)};G(Y,i=>{e(s).message&&i(h)})}t(A);var q=r(A,2);t(S),t(x),K(()=>{oe(x,1,`gradient-border glass p-4 rounded-lg shadow-lg ${e(f).color??""} ${e(f).glow??""} animate-in slide-in-from-right-full duration-300`,"svelte-cqwvc2"),fe(P,"d",e(f).icon),Q(ee,e(s).title)}),j("click",q,()=>b.remove(e(s).id)),c(u,x)}),t(g),c(I,g),de()}ue(["click"]);var Ye=m(`<div><label for="gateway-token" class="block text-sm font-medium text-text-secondary mb-2">Access Token <span class="text-text-muted font-normal">(optional)</span></label> <input id="gateway-token" type="password" placeholder="Leave empty to use device pairing" class="w-full px-3 py-2 rounded-lg glass border border-border-default bg-bg-secondary
|
|
2
|
+
text-text-primary placeholder-text-muted
|
|
3
|
+
focus:outline-none focus:border-accent-cyan focus:glow-cyan
|
|
4
|
+
transition-all duration-200"/> <p class="text-xs text-text-muted mt-1">If provided, connects immediately. If empty, your gateway owner will need to approve this device.</p></div>`),Fe=m('<button type="button" class="text-xs text-text-muted hover:text-accent-cyan transition-colors flex items-center gap-1"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> I have an access token</button>'),Xe=m('<div class="p-3 rounded-lg border border-accent-amber/30 bg-accent-amber/10" role="status"><div class="flex items-start gap-2"><svg class="w-5 h-5 text-accent-amber flex-shrink-0 animate-pulse mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <div><p class="text-sm font-medium text-accent-amber">Device Pairing Required</p> <p class="text-xs text-text-muted mt-1">Your gateway owner needs to approve this device. Ask them to run:</p> <code class="block text-xs font-mono text-accent-cyan bg-bg-primary/50 px-2 py-1 rounded mt-1">openclaw devices approve</code></div></div></div>'),Je=m('<div class="p-3 rounded-lg border border-accent-red/30 bg-accent-red/10 glow-red" role="alert" aria-live="assertive"><div class="flex items-center gap-2"><svg class="w-4 h-4 text-accent-red flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"></path></svg> <p class="text-sm text-accent-red"> </p></div></div>'),Qe=m('<div class="flex items-center justify-center gap-2"><svg class="w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg> Connecting...</div>'),Ze=m(`<div class="fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/60 backdrop-blur-sm" role="dialog" aria-modal="true" aria-labelledby="auth-dialog-title"><div class="w-full max-w-md gradient-border glass p-6 rounded-lg glow-cyan animate-in zoom-in-95 duration-300 svelte-htsx5a"><div class="flex items-center gap-3 mb-6"><div class="w-12 h-12 rounded-lg gradient-bg flex items-center justify-center glow-purple"><svg class="w-6 h-6 text-accent-purple" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg></div> <div><h2 id="auth-dialog-title" class="text-lg font-semibold gradient-text">Connect to OpenClaw</h2> <p class="text-sm text-text-muted">Enter your gateway credentials to get started</p></div></div> <form class="space-y-4"><div><label for="gateway-url" class="block text-sm font-medium text-text-secondary mb-2">Gateway URL</label> <input id="gateway-url" type="url" placeholder="wss://your-openclaw-gateway.com" class="w-full px-3 py-2 rounded-lg glass border border-border-default bg-bg-secondary
|
|
5
|
+
text-text-primary placeholder-text-muted
|
|
6
|
+
focus:outline-none focus:border-accent-cyan focus:glow-cyan
|
|
7
|
+
transition-all duration-200" required=""/></div> <!> <!> <!> <div class="flex gap-3 pt-2"><button type="button" class="flex-1 px-4 py-2 rounded-lg border border-border-default text-text-secondary
|
|
8
|
+
hover:bg-bg-hover hover:text-text-primary transition-colors">Cancel</button> <button type="submit" class="flex-1 px-4 py-2 rounded-lg gradient-bg gradient-border glow-cyan
|
|
9
|
+
text-text-primary font-medium hover:brightness-110
|
|
10
|
+
disabled:opacity-50 disabled:cursor-not-allowed
|
|
11
|
+
transition-all duration-200"><!></button></div></form> <div class="mt-4 pt-4 border-t border-border-default"><p class="text-xs text-text-muted text-center"><!> <br/> Need help? Check the <a href="https://docs.openclaw.ai" target="_blank" class="text-accent-cyan hover:underline">OpenClaw documentation</a>.</p></div></div></div>`);function et(I,T){ce(T,!0);const b=we(),$=ke();let g=me(T,"show",15,!1);const u=b.getConfiguredWsUrl();let s=R(Le(u||"")),f=R(""),x=R(!1),S=R(""),w=R(!1),C=R(!1);re(()=>{if(typeof window<"u"&&b.initialized){const{url:i,token:l}=b.loadSettings();(!i||!l)&&(!e(s)&&u&&n(s,u,!0),g(!0))}});async function P(){if(!e(s).trim()){n(S,"Gateway URL is required");return}!e(f).trim()&&e(w),n(S,""),n(x,!0),n(C,!1);try{const i=e(f).trim()||"__device_auth__";b.connect(e(s).trim(),i),await new Promise((l,y)=>{const k=setTimeout(()=>{y(new Error("Connection timeout — check your gateway URL"))},15e3),O=b.onStateChange(D=>{D.status==="connected"?(clearTimeout(k),O(),l()):D.status==="error"&&(clearTimeout(k),O(),D.error?.includes("pairing")?(n(C,!0),y(new Error("Device pairing required — approve this device on your gateway"))):y(new Error(D.error||"Connection failed")))})}),g(!1),n(C,!1),$.success("Connected","Successfully connected to OpenClaw Gateway")}catch(i){n(S,i instanceof Error?i.message:"Connection failed",!0),e(C)||$.error("Connection Failed",e(S))}finally{n(x,!1)}}function A(){g(!1),n(S,"")}let L=R(void 0);re(()=>{if(g()&&e(L)){const i=e(L).querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex="-1"])');i.length&&i[0].focus()}});function ee(i){if(i.key==="Enter")P();else if(i.key==="Escape")A();else if(i.key==="Tab"&&e(L)){const l=e(L).querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex="-1"])');if(l.length===0)return;const y=l[0],k=l[l.length-1];i.shiftKey&&document.activeElement===y?(i.preventDefault(),k.focus()):!i.shiftKey&&document.activeElement===k&&(i.preventDefault(),y.focus())}}var Y=Ce(),h=ie(Y);{var q=i=>{var l=Ze(),y=a(l),k=r(a(y),2),O=a(k),D=r(a(O),2);ge(D),t(O);var p=r(O,2);{var _=v=>{var E=Ye(),Z=r(a(E),2);ge(Z),be(2),t(E),K(()=>Z.disabled=e(x)),he(Z,()=>e(f),ae=>n(f,ae)),c(v,E)},M=v=>{var E=Fe();j("click",E,()=>n(w,!0)),c(v,E)};G(p,v=>{e(w)?v(_):v(M,!1)})}var o=r(p,2);{var d=v=>{var E=Xe();c(v,E)};G(o,v=>{e(C)&&v(d)})}var H=r(o,2);{var B=v=>{var E=Je(),Z=a(E),ae=r(a(Z),2),pe=a(ae,!0);t(ae),t(Z),t(E),K(()=>Q(pe,e(S))),c(v,E)};G(H,v=>{e(S)&&!e(C)&&v(B)})}var X=r(H,2),J=a(X),te=r(J,2),N=a(te);{var V=v=>{var E=Qe();c(v,E)},F=v=>{var E=xe("Connect");c(v,E)};G(N,v=>{e(x)?v(V):v(F,!1)})}t(te),t(X),t(k);var W=r(k,2),z=a(W),U=a(z);{var se=v=>{var E=xe("Credentials are saved locally and remembered for future sessions.");c(v,E)},ne=v=>{var E=xe("Your device will be paired with the gateway. The gateway owner will approve your access.");c(v,E)};G(U,v=>{e(w)?v(se):v(ne,!1)})}be(5),t(z),t(W),t(y),Ve(y,v=>n(L,v),()=>e(L)),t(l),K(v=>{D.disabled=e(x),J.disabled=e(x),te.disabled=v},[()=>e(x)||!e(s).trim()]),j("click",l,A),j("keydown",l,ee),j("click",y,v=>v.stopPropagation()),ye("submit",k,v=>{v.preventDefault(),P()}),he(D,()=>e(s),v=>n(s,v)),j("click",J,A),c(i,l)};G(h,i=>{g()&&i(q)})}c(I,Y),de()}ue(["click","keydown"]);const tt=()=>{const I=Re;return{page:{subscribe:I.page.subscribe},navigating:{subscribe:I.navigating.subscribe},updated:I.updated}},at={subscribe(I){return tt().page.subscribe(I)}};var rt=m('<img src="/logo.png" alt="Cortex" class="w-8 h-8 rounded-lg"/> <span class="text-base font-bold gradient-text tracking-wider">CORTEX</span> <button class="ml-auto p-1 rounded hover:bg-bg-hover text-text-muted hover:text-text-primary transition-colors" aria-label="Collapse navigation"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7"></path></svg></button>',1),st=m('<button class="mx-auto p-1 rounded hover:bg-bg-hover text-text-muted hover:text-accent-cyan transition-colors" aria-label="Expand navigation"><img src="/logo.png" alt="Cortex" class="w-7 h-7 rounded-lg"/></button>'),ot=m('<div class="px-3 pt-3 pb-1"><span class="text-[10px] font-semibold uppercase tracking-widest text-text-muted/60"> </span></div>'),nt=m('<div class="max-md:hidden pt-2 pb-1"><div class="mx-auto w-6 h-px bg-border-default"></div></div> <div class="hidden max-md:block px-3 pt-3 pb-1"><span class="text-[10px] font-semibold uppercase tracking-widest text-text-muted/60"> </span></div>',1),it=m("<span> </span>"),lt=m('<span class="hidden max-md:inline"> </span>'),ct=m('<a><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path></svg> <!></a>'),dt=m("<!> <!>",1),vt=m('<div class="flex items-center gap-2 px-2 py-1.5 text-xs"><span aria-hidden="true"></span> <span class="text-text-muted truncate"> </span></div>'),ut=m('<div class="max-md:hidden flex justify-center py-1"><span aria-hidden="true"></span> <span class="sr-only"> </span></div> <div class="hidden max-md:flex items-center gap-2 px-2 py-1.5 text-xs"><span aria-hidden="true"></span> <span class="text-text-muted truncate"> </span></div>',1),pt=m('<nav aria-label="Main navigation"><div class="flex items-center gap-2 p-3 border-b border-border-default"><div class="hidden max-md:flex items-center gap-2 w-full"><img src="/logo.png" alt="Cortex" class="w-8 h-8 rounded-lg"/> <span class="text-base font-bold gradient-text tracking-wider">CORTEX</span> <button class="ml-auto p-1.5 rounded-lg hover:bg-bg-hover text-text-muted hover:text-text-primary transition-colors" aria-label="Close navigation"><svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button></div> <div class="max-md:hidden flex items-center gap-2 w-full"><!></div></div> <div class="flex-1 overflow-y-auto py-2"></div> <div class="p-2 border-t border-border-default"><div class="flex justify-center mb-1"><button class="w-6 h-6 flex items-center justify-center rounded-full text-[11px] font-mono font-semibold text-text-muted hover:text-accent-cyan hover:bg-bg-hover transition-colors" title="Keyboard shortcuts (Ctrl+/)" aria-label="Show keyboard shortcuts">?</button></div></div> <div class="p-2 border-t border-border-default" aria-live="polite" role="status"><!></div></nav>');function ft(I,T){ce(T,!0);const b=()=>Pe(at,"$page",$),[$,g]=Ke(),u=we(),s=[{label:"Chat",items:[{label:"Chat",href:"/",icon:"M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"}]},{label:"Control",items:[{label:"Overview",href:"/overview",icon:"M4 6h16M4 10h16M4 14h16M4 18h16"},{label:"Channels",href:"/channels",icon:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101"},{label:"Instances",href:"/instances",icon:"M5.636 18.364a9 9 0 010-12.728m12.728 0a9 9 0 010 12.728M12 12h.01"},{label:"Sessions",href:"/sessions",icon:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{label:"Usage",href:"/usage",icon:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},{label:"Cron Jobs",href:"/cron",icon:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},{label:"Approvals",href:"/approvals",icon:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"}]},{label:"Agent",items:[{label:"Agents",href:"/agents",icon:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"},{label:"Skills",href:"/skills",icon:"M13 10V3L4 14h7v7l9-11h-7z"},{label:"Nodes",href:"/nodes",icon:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"},{label:"Memory",href:"/memory",icon:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"}]},{label:"Settings",items:[{label:"Connection",href:"/settings",icon:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101"},{label:"Gateway Config",href:"/config",icon:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"},{label:"Debug",href:"/debug",icon:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"},{label:"Logs",href:"/logs",icon:"M4 6h16M4 12h16m-7 6h7"}]}];let f=me(T,"collapsed",15,!1),x=me(T,"mobileOpen",15,!1);function S(o,d){return o==="/"?d==="/":d.startsWith(o)}function w(){x()&&(x(!1),T.onnavigate?.())}var C=pt();let P;var A=a(C),L=a(A),ee=r(a(L),4);t(L);var Y=r(L,2),h=a(Y);{var q=o=>{var d=rt(),H=r(ie(d),4);j("click",H,()=>f(!0)),c(o,d)},i=o=>{var d=st();j("click",d,()=>f(!1)),c(o,d)};G(h,o=>{f()?o(i,!1):o(q)})}t(Y),t(A);var l=r(A,2);le(l,21,()=>s,ve,(o,d)=>{var H=dt(),B=ie(H);{var X=N=>{var V=ot(),F=a(V),W=a(F,!0);t(F),t(V),K(()=>Q(W,e(d).label)),c(N,V)},J=N=>{var V=nt(),F=r(ie(V),2),W=a(F),z=a(W,!0);t(W),t(F),K(()=>Q(z,e(d).label)),c(N,V)};G(B,N=>{f()?N(J,!1):N(X)})}var te=r(B,2);le(te,17,()=>e(d).items,ve,(N,V)=>{const F=Te(()=>S(e(V).href,b().url.pathname));var W=ct();let z;var U=a(W),se=a(U);t(U);var ne=r(U,2);{var v=Z=>{var ae=it(),pe=a(ae,!0);t(ae),K(()=>Q(pe,e(V).label)),c(Z,ae)},E=Z=>{var ae=lt(),pe=a(ae,!0);t(ae),K(()=>Q(pe,e(V).label)),c(Z,ae)};G(ne,Z=>{f()?Z(E,!1):Z(v)})}t(W),K(()=>{fe(W,"href",e(V).href),fe(W,"aria-current",e(F)?"page":void 0),z=oe(W,1,`flex items-center gap-2.5 mx-2 my-0.5 px-2.5 py-2 rounded-lg text-sm transition-all duration-200
|
|
12
|
+
max-md:py-2.5 max-md:text-base
|
|
13
|
+
${e(F)?"gradient-bg glow-cyan text-accent-cyan font-medium":"text-text-secondary hover:text-text-primary hover:bg-bg-hover"}`,null,z,{"md:justify-center":f()}),fe(W,"title",f()?e(V).label:void 0),oe(U,0,`w-4 h-4 max-md:w-5 max-md:h-5 flex-shrink-0 ${e(F)?"text-accent-cyan":""}`),fe(se,"d",e(V).icon)}),j("click",W,w),c(N,W)}),c(o,H)}),t(l);var y=r(l,2),k=a(y),O=a(k);t(k),t(y);var D=r(y,2),p=a(D);{var _=o=>{var d=vt(),H=a(d),B=r(H,2),X=a(B,!0);t(B),t(d),K(()=>{oe(H,1,`w-2 h-2 rounded-full flex-shrink-0
|
|
14
|
+
${u.state.status==="connected"?"bg-accent-green glow-green":u.state.status==="connecting"||u.state.status==="authenticating"?"bg-amber-500 animate-pulse":"bg-red-500"}`),Q(X,u.state.status==="connected"?`v${u.state.serverVersion??"?"}`:u.state.status)}),c(o,d)},M=o=>{var d=ut(),H=ie(d),B=a(H),X=r(B,2),J=a(X,!0);t(X),t(H);var te=r(H,2),N=a(te),V=r(N,2),F=a(V,!0);t(V),t(te),K(()=>{oe(B,1,`w-2.5 h-2.5 rounded-full
|
|
15
|
+
${u.state.status==="connected"?"bg-accent-green glow-green":u.state.status==="connecting"||u.state.status==="authenticating"?"bg-amber-500 animate-pulse":"bg-red-500"}`),Q(J,u.state.status),oe(N,1,`w-2 h-2 rounded-full flex-shrink-0
|
|
16
|
+
${u.state.status==="connected"?"bg-accent-green glow-green":u.state.status==="connecting"||u.state.status==="authenticating"?"bg-amber-500 animate-pulse":"bg-red-500"}`),Q(F,u.state.status==="connected"?`v${u.state.serverVersion??"?"}`:u.state.status)}),c(o,d)};G(p,o=>{f()?o(M,!1):o(_)})}t(D),t(C),K(()=>P=oe(C,1,`h-full flex flex-col border-r border-border-default bg-bg-secondary/80 transition-all duration-300
|
|
17
|
+
max-md:fixed max-md:inset-y-0 max-md:left-0 max-md:z-50 max-md:w-64 max-md:shadow-2xl
|
|
18
|
+
max-md:transition-transform max-md:duration-300 max-md:ease-in-out`,null,P,{"w-56":!f(),"w-14":f(),"max-md:translate-x-0":x(),"max-md:-translate-x-full":!x()})),j("click",ee,()=>x(!1)),j("click",O,()=>T.onshortcuthelp?.()),c(I,C),de(),g()}ue(["click"]);function mt(I,T){ce(T,!0);let b=me(T,"showHelp",15,!1);const $=["/","/overview","/channels","/instances","/sessions","/usage","/cron","/approvals","/agents"];function g(){const s=document.activeElement;if(!s)return!1;const f=s.tagName.toLowerCase();return!!(f==="input"||f==="textarea"||f==="select"||s.isContentEditable)}function u(s){const f=s.metaKey||s.ctrlKey;if(s.key==="Escape"){if(b()){b(!1),s.preventDefault();return}document.activeElement&&document.activeElement!==document.body&&document.activeElement.blur?.();return}if(!g()){if(f&&s.key.toLowerCase()==="k"){s.preventDefault(),_e("/").then(()=>{requestAnimationFrame(()=>{document.querySelector("textarea[data-chat-input], input[data-chat-input], textarea, .chat-input textarea")?.focus()})});return}if(f&&s.key==="/"){s.preventDefault(),b(!b());return}if(f&&s.key===","){s.preventDefault(),_e("/settings");return}if(f&&s.key>="1"&&s.key<="9"){const x=parseInt(s.key)-1;x<$.length&&(s.preventDefault(),_e($[x]));return}}}ye("keydown",ze,u),de()}var xt=m('<kbd class="inline-flex items-center justify-center min-w-[1.75rem] h-7 px-1.5 rounded-md border border-border-default bg-bg-primary/80 text-[11px] font-mono font-medium text-accent-cyan shadow-[0_1px_0_1px_rgba(30,41,59,0.5)]"> </kbd>'),bt=m('<div class="flex items-center justify-between py-1"><span class="text-sm text-text-secondary"> </span> <div class="flex items-center gap-1"></div></div>'),gt=m('<div class="flex items-center gap-1.5 text-xs"><kbd class="inline-flex items-center justify-center w-5 h-5 rounded border border-border-default bg-bg-primary/80 text-[10px] font-mono text-accent-cyan"></kbd> <span class="text-text-muted truncate"> </span></div>'),ht=m('<div class="fixed inset-0 z-[999] flex items-center justify-center bg-black/60 backdrop-blur-sm"><div class="relative w-full max-w-md mx-4 rounded-xl border border-accent-cyan/30 bg-bg-surface/95 backdrop-blur-md shadow-[0_0_30px_rgba(124,77,255,0.15)] overflow-hidden"><div class="flex items-center justify-between px-5 py-4 border-b border-border-default"><h2 class="text-base font-semibold text-text-primary tracking-wide flex items-center gap-2"><svg class="w-4 h-4 text-accent-cyan" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path></svg> Keyboard Shortcuts</h2> <button class="p-1 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-hover transition-colors" aria-label="Close"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button></div> <div class="px-5 py-4 space-y-2.5"></div> <div class="px-5 pb-4"><div class="rounded-lg border border-border-default/50 bg-bg-primary/40 p-3"><div class="text-[10px] uppercase tracking-widest text-text-muted/60 mb-2 font-semibold">Page Numbers</div> <div class="grid grid-cols-3 gap-x-3 gap-y-1"></div></div></div></div></div>');function yt(I,T){ce(T,!0);let b=me(T,"show",15,!1);const g=typeof navigator<"u"&&/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"⌘":"Ctrl",u=[{keys:[g,"K"],desc:"Focus chat input"},{keys:[g,"/"],desc:"Toggle this help"},{keys:[g,","],desc:"Open Settings"},{keys:[g,"1–9"],desc:"Navigate to page by order"},{keys:["Esc"],desc:"Close modal / deselect"}],s=["Chat","Overview","Channels","Instances","Sessions","Usage","Cron Jobs","Approvals","Agents"];function f(){b(!1)}var x=Ce(),S=ie(x);{var w=C=>{var P=ht(),A=a(P),L=a(A),ee=r(a(L),2);t(L);var Y=r(L,2);le(Y,21,()=>u,ve,(l,y)=>{var k=bt(),O=a(k),D=a(O,!0);t(O);var p=r(O,2);le(p,21,()=>e(y).keys,ve,(_,M)=>{var o=xt(),d=a(o,!0);t(o),K(()=>Q(d,e(M))),c(_,o)}),t(p),t(k),K(()=>Q(D,e(y).desc)),c(l,k)}),t(Y);var h=r(Y,2),q=a(h),i=r(a(q),2);le(i,21,()=>s,ve,(l,y,k)=>{var O=gt(),D=a(O);D.textContent=k+1;var p=r(D,2),_=a(p,!0);t(p),t(O),K(()=>Q(_,e(y))),c(l,O)}),t(i),t(q),t(h),t(A),t(P),j("keydown",P,l=>{l.key==="Escape"&&b(!1)}),j("click",P,f),j("click",A,l=>l.stopPropagation()),j("click",ee,()=>b(!1)),c(C,P)};G(S,C=>{b()&&C(w)})}c(I,x),de()}ue(["keydown","click"]);var wt=m("<div></div>"),kt=m(`<div class="space-y-4"><div><label for="setup-url" class="block text-sm font-medium text-text-secondary mb-2">Gateway URL</label> <input id="setup-url" type="text" placeholder="openclaw.example.com" class="w-full px-4 py-3 rounded-xl glass border border-border-default bg-bg-secondary
|
|
19
|
+
text-text-primary placeholder-text-muted text-center text-lg
|
|
20
|
+
focus:outline-none focus:border-accent-cyan focus:glow-cyan
|
|
21
|
+
transition-all duration-200"/> <p class="text-xs text-text-muted mt-2 text-center">The URL where your OpenClaw gateway is running</p></div> <div class="flex gap-3"><button class="flex-1 px-4 py-2.5 rounded-xl border border-border-default text-text-secondary
|
|
22
|
+
hover:bg-bg-hover transition-colors text-sm">Skip</button> <button class="flex-1 px-4 py-2.5 rounded-xl gradient-bg text-text-primary font-medium
|
|
23
|
+
hover:brightness-110 disabled:opacity-40 disabled:cursor-not-allowed
|
|
24
|
+
transition-all text-sm">Next →</button></div></div>`),_t=m(`<div><label for="setup-token" class="block text-sm font-medium text-text-secondary mb-2">Access Token</label> <input id="setup-token" type="password" placeholder="Paste gateway token" class="w-full px-4 py-3 rounded-xl glass border border-border-default bg-bg-secondary
|
|
25
|
+
text-text-primary placeholder-text-muted
|
|
26
|
+
focus:outline-none focus:border-accent-cyan focus:glow-cyan
|
|
27
|
+
transition-all duration-200"/></div>`),Ct=m('<button class="text-xs text-text-muted hover:text-accent-cyan transition-colors flex items-center gap-1 mx-auto"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"></path></svg> I have an access token</button>'),Mt=m('<div class="p-3 rounded-xl border border-accent-red/30 bg-accent-red/10"><p class="text-sm text-accent-red"> </p></div>'),zt=m('<span class="flex items-center justify-center gap-2"><svg class="w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg> Connecting...</span>'),St=m(`<div class="space-y-4"><div class="p-4 rounded-xl border border-accent-cyan/20 bg-accent-cyan/5"><p class="text-sm text-text-secondary"><strong class="text-text-primary">Two ways to connect:</strong></p> <ul class="text-sm text-text-secondary mt-2 space-y-1"><li>🔗 <strong>Device pairing</strong> — just click Connect, gateway owner approves</li> <li>🔑 <strong>Token</strong> — paste your gateway token for instant access</li></ul></div> <!> <!> <div class="flex gap-3"><button class="flex-1 px-4 py-2.5 rounded-xl border border-border-default text-text-secondary
|
|
28
|
+
hover:bg-bg-hover transition-colors text-sm">← Back</button> <button class="flex-1 px-4 py-2.5 rounded-xl gradient-bg text-text-primary font-medium
|
|
29
|
+
hover:brightness-110 disabled:opacity-40 disabled:cursor-not-allowed
|
|
30
|
+
transition-all text-sm"><!></button></div></div>`),jt=m(`<div class="text-center space-y-4 py-4"><div class="text-5xl animate-bounce">🎉</div> <h2 class="text-xl font-bold text-text-primary">Connected!</h2> <p class="text-text-secondary text-sm">You're all set. Your gateway is ready to go.</p> <div class="pt-2"><button class="px-6 py-2.5 rounded-xl gradient-bg text-text-primary font-medium
|
|
31
|
+
hover:brightness-110 transition-all text-sm">Let's go →</button></div></div>`),Lt=m(`<div class="fixed inset-0 z-[100] flex items-center justify-center bg-black/70 backdrop-blur-sm"><div class="glass border border-border-default rounded-2xl max-w-lg w-full mx-4 overflow-hidden shadow-2xl" style="box-shadow: 0 0 60px rgba(124, 77, 255, 0.15), 0 0 120px rgba(0, 229, 255, 0.05);"><div class="px-8 pt-8 pb-4 text-center"><div class="text-5xl mb-3">🧠</div> <h1 class="text-2xl font-bold text-text-primary">Welcome to Cortex</h1> <p class="text-text-secondary mt-1 text-sm">Let's connect to your OpenClaw gateway</p></div> <div class="flex justify-center gap-2 py-3"></div> <div class="px-8 pb-8"><!></div></div></div>`);function Tt(I,T){ce(T,!0);const b=we(),$=ke();let g=R(1),u=R(""),s=R(""),f=R(!1),x=R(!1),S=R(""),w=R(!1);re(()=>{const h=localStorage.getItem("cortex:gatewayUrl"),q=localStorage.getItem("openclaw-setup-dismissed");!h&&!q&&b.state.status==="disconnected"&&(n(w,!0),Se().then(i=>{if(i.gatewayUrl){const l=i.gatewayWs||i.gatewayUrl.replace(/^http/,"ws");n(u,l,!0)}}))});function C(){n(w,!1),localStorage.setItem("openclaw-setup-dismissed","true")}async function P(){if(!e(u).trim()){n(S,"Please enter your gateway URL");return}n(S,""),n(x,!0);try{const h=e(s).trim()||"__device_auth__";b.connect(e(u).trim(),h),await new Promise((q,i)=>{const l=setTimeout(()=>i(new Error("Connection timeout")),15e3),y=b.onStateChange(k=>{k.status==="connected"?(clearTimeout(l),y(),q()):k.status==="error"&&(clearTimeout(l),y(),i(new Error(k.error||"Connection failed")))})}),n(g,3),$.success("Connected!","You're all set."),setTimeout(()=>{n(w,!1)},3e3)}catch(h){n(S,h instanceof Error?h.message:"Connection failed",!0)}finally{n(x,!1)}}function A(){let h=e(u).trim();h&&(h.match(/^(wss?|https?):\/\//)||(h="wss://"+h),h=h.replace(/^https:\/\//,"wss://").replace(/^http:\/\//,"ws://"),n(u,h,!0))}var L=Ce(),ee=ie(L);{var Y=h=>{var q=Lt(),i=a(q),l=r(a(i),2);le(l,20,()=>[1,2,3],ve,(_,M)=>{var o=wt();let d;K(()=>d=oe(o,1,"w-2 h-2 rounded-full transition-all duration-300",null,d,{"bg-accent-cyan":e(g)>=M,"scale-125":e(g)===M,"bg-border-default":e(g)<M})),c(_,o)}),t(l);var y=r(l,2),k=a(y);{var O=_=>{var M=kt(),o=a(M),d=r(a(o),2);ge(d),be(2),t(o);var H=r(o,2),B=a(H),X=r(B,2);t(H),t(M),K(J=>X.disabled=J,[()=>!e(u).trim()]),ye("blur",d,A),he(d,()=>e(u),J=>n(u,J)),j("click",B,C),j("click",X,()=>{A(),n(g,2)}),c(_,M)},D=_=>{var M=St(),o=r(a(M),2);{var d=z=>{var U=_t(),se=r(a(U),2);ge(se),t(U),he(se,()=>e(s),ne=>n(s,ne)),c(z,U)},H=z=>{var U=Ct();j("click",U,()=>n(f,!0)),c(z,U)};G(o,z=>{e(f)?z(d):z(H,!1)})}var B=r(o,2);{var X=z=>{var U=Mt(),se=a(U),ne=a(se,!0);t(se),t(U),K(()=>Q(ne,e(S))),c(z,U)};G(B,z=>{e(S)&&z(X)})}var J=r(B,2),te=a(J),N=r(te,2),V=a(N);{var F=z=>{var U=zt();c(z,U)},W=z=>{var U=xe("Connect");c(z,U)};G(V,z=>{e(x)?z(F):z(W,!1)})}t(N),t(J),t(M),K(()=>{te.disabled=e(x),N.disabled=e(x)}),j("click",te,()=>{n(g,1),n(S,"")}),j("click",N,P),c(_,M)},p=_=>{var M=jt(),o=r(a(M),6),d=a(o);t(o),t(M),j("click",d,()=>n(w,!1)),c(_,M)};G(k,_=>{e(g)===1?_(O):e(g)===2?_(D,1):e(g)===3&&_(p,2)})}t(y),t(i),t(q),c(h,q)};G(ee,h=>{e(w)&&h(Y)})}c(I,L),de()}ue(["click"]);var Et=m('<div class="fixed inset-0 bg-black/60 z-40 md:hidden backdrop-blur-sm" role="button" tabindex="0" aria-label="Close navigation"></div>'),At=m('<div class="h-screen w-screen overflow-hidden bg-bg-primary flex"><a href="#main-content" class="skip-to-content">Skip to content</a> <!> <!> <div id="main-content" class="flex-1 flex flex-col min-w-0 overflow-hidden" role="main"><header class="flex items-center gap-3 px-3 py-2 border-b border-border-default bg-bg-secondary/50 md:hidden flex-shrink-0"><button class="p-2 rounded-lg hover:bg-bg-hover text-text-muted hover:text-accent-cyan transition-colors" aria-label="Open navigation menu"><svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button> <img src="/logo.png" alt="Cortex" class="w-6 h-6 rounded-lg"/> <span class="text-sm font-bold gradient-text tracking-wider">CORTEX</span></header> <!></div> <!> <!> <!> <!> <!></div>');function $t(I,T){ce(T,!0);const b=we(),$=He(),g=Oe(),u=ke(),s=Ue();Be();let f=R(!1),x=R(!1),S=R(!1),w=R(!1),C=R(!1);re(()=>{Se().then(()=>{b.init()})}),re(()=>{typeof window<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").catch(()=>{})}),re(()=>{if(b.state.status==="connected"&&!e(f)){n(f,!0),$.fetchSessions();const p=$.activeKey||b.state.mainSessionKey;p&&($.setActiveSession(p),g.loadHistory(p))}b.state.status==="disconnected"&&n(f,!1)}),re(()=>{const p=$.activeKey;p&&p!==g.activeSessionKey&&Me.connected&&g.loadHistory(p)}),re(()=>{b.state.status==="error"&&b.state.error&&u.error("Connection Error",b.state.error,8e3)}),re(()=>{Ee(()=>s.init())}),re(()=>Me.on("chat",_=>{const M=_;if(M.state!=="final"||!s.notifyOnMessages)return;const o=M.message;if(!o||o.role!=="assistant")return;let d="";if(typeof o.content=="string"?d=o.content:Array.isArray(o.content)&&(d=o.content.filter(B=>B.type==="text"&&typeof B.text=="string").map(B=>B.text).join(" ")),!d)return;const H=d.length>100?d.slice(0,100)+"…":d;s.notify("Cortex — New message",H)})),re(()=>b.onStateChange(_=>{_.status==="disconnected"&&s.notifyOnDisconnect&&s.notify("Cortex — Connection lost","The gateway connection was lost. Attempting to reconnect…")}));var P=At();ye("keydown",ze,p=>{p.key==="Escape"&&e(w)&&n(w,!1)});var A=r(a(P),2);{var L=p=>{var _=Et();j("click",_,()=>n(w,!1)),j("keydown",_,M=>M.key==="Escape"&&n(w,!1)),c(p,_)};G(A,p=>{e(w)&&p(L)})}var ee=r(A,2);ft(ee,{onshortcuthelp:()=>n(C,!0),onnavigate:()=>n(w,!1),get collapsed(){return e(S)},set collapsed(p){n(S,p,!0)},get mobileOpen(){return e(w)},set mobileOpen(p){n(w,p,!0)}});var Y=r(ee,2),h=a(Y),q=a(h);be(4),t(h);var i=r(h,2);Ae(i,()=>T.children),t(Y);var l=r(Y,2);$e(l,{});var y=r(l,2);et(y,{get show(){return e(x)},set show(p){n(x,p,!0)}});var k=r(y,2);mt(k,{get showHelp(){return e(C)},set showHelp(p){n(C,p,!0)}});var O=r(k,2);yt(O,{get show(){return e(C)},set show(p){n(C,p,!0)}});var D=r(O,2);Tt(D,{}),t(P),j("click",q,()=>n(w,!0)),c(I,P),de()}ue(["click","keydown"]);export{$t as component,Gt as universal};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as h,f as u,s as e}from"../chunks/B2A7gHtL.js";import{i as g}from"../chunks/KBP0Pl-D.js";import{p as l,j as v,t as d,c as _,h as a,r as o,f as x}from"../chunks/qR_TM3YX.js";import{s as $,p}from"../chunks/C8SIHLmM.js";const b={get error(){return p.error},get status(){return p.status}};$.updated.check;const m=b;var k=u("<h1> </h1> <p> </p>",1);function y(f,i){l(i,!1),g();var t=k(),r=v(t),c=a(r,!0);o(r);var s=x(r,2),n=a(s,!0);o(s),d(()=>{e(c,m.status),e(n,m.error?.message)}),h(f,t),_()}export{y as component};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{d as nt,a as ee,b as c,f as u,s as m,g as lt,c as ot,t as it}from"../chunks/B2A7gHtL.js";import{p as ct,s as g,a as xe,u as be,b as me,g as r,d,t as _,c as dt,e as ut,f as i,i as ge,$ as ft,h as l,r as s,n as P,j as vt}from"../chunks/qR_TM3YX.js";import{i as y}from"../chunks/DpBBTLWw.js";import{g as pt,a as te,r as re,e as he,s as ae,d as xt,i as _e,b as bt}from"../chunks/D6tSezzf.js";import{h as mt}from"../chunks/CXQ1lKJR.js";import{b as gt,a as ht}from"../chunks/nnazh41B.js";import{b as _t}from"../chunks/BYXRTvT-.js";var yt=u('<span class="font-mono text-xs text-text-muted/60"> </span>'),wt=ot('<svg class="w-3 h-3 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg>'),kt=u('<div class="flex-1 flex items-center justify-center"><div class="rounded-xl border border-border-default bg-bg-secondary/50 p-8 text-center"><div class="text-text-muted text-sm">Connect to the gateway to view logs.</div></div></div>'),Lt=u('<label><input type="checkbox" class="sr-only"/> </label>'),Ct=u('<div class="rounded-lg border border-amber-500/30 bg-amber-500/5 px-3 py-1.5 text-amber-400 text-xs mb-2 flex-shrink-0">Log output truncated — showing latest chunk.</div>'),jt=u('<div class="rounded-lg border border-red-500/30 bg-red-500/5 px-3 py-1.5 text-red-400 text-xs mb-2 flex-shrink-0"> </div>'),Bt=u('<div class="flex items-center justify-center h-full text-text-muted/40 text-sm"> </div>'),Tt=u('<span class="w-[140px] flex-shrink-0 text-accent-purple/70 truncate"> </span>'),St=u('<span class="w-[140px] flex-shrink-0"></span>'),Ft=u('<div><span class="w-[85px] flex-shrink-0 text-text-muted/70 select-all"> </span> <span> </span> <!> <span class="flex-1 text-text-secondary break-all select-all whitespace-pre-wrap"> </span></div>'),qt=u('<div class="divide-y divide-border-default/30"></div>'),Ot=u('<span class="inline-block w-1.5 h-1.5 rounded-full bg-accent-green/60 mr-1 animate-pulse"></span> Polling every 3s',1),Rt=u('<span class="inline-block w-1.5 h-1.5 rounded-full bg-text-muted/30 mr-1"></span> Paused',1),$t=u(`<div class="flex flex-wrap items-center gap-3 mb-3 flex-shrink-0"><div class="relative flex-1 min-w-[200px] max-w-sm"><svg class="absolute left-3 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg> <input placeholder="Filter logs…" class="w-full bg-bg-input border border-border-default rounded-lg pl-9 pr-3 py-2
|
|
2
|
+
text-sm text-text-primary placeholder:text-text-muted/50
|
|
3
|
+
focus:outline-none focus:border-accent-cyan focus:shadow-[0_0_8px_rgba(0,229,255,0.15)]
|
|
4
|
+
transition-all"/></div> <div class="flex items-center gap-1.5"></div> <label class="inline-flex items-center gap-1.5 text-xs text-text-muted cursor-pointer select-none ml-auto"><input type="checkbox" class="w-3.5 h-3.5 rounded border-border-default bg-bg-input accent-accent-cyan"/> Auto-scroll</label></div> <!> <!> <div class="flex-1 overflow-y-auto bg-bg-input/30 border border-border-default rounded-xl"><!></div> <div class="flex items-center justify-between mt-2 flex-shrink-0 text-[10px] text-text-muted/50 font-mono"><span><!></span> <span> <!></span></div>`,1),At=u(`<div class="h-full flex flex-col overflow-hidden"><div class="flex-1 flex flex-col max-w-full p-4 md:p-6 overflow-hidden"><div class="flex items-center justify-between mb-4 flex-shrink-0 flex-wrap gap-3"><div><h1 class="text-2xl font-bold text-text-primary flex items-center gap-3"><span class="text-accent-cyan">📋</span> Logs</h1> <p class="text-sm text-text-muted mt-0.5">Live gateway log tail <!></p></div> <div class="flex items-center gap-3"><span class="text-xs text-text-muted font-mono"> </span> <button class="px-3 py-2 rounded-lg text-xs border border-border-default hover:border-accent-purple
|
|
5
|
+
text-text-secondary hover:text-accent-purple transition-all
|
|
6
|
+
disabled:opacity-50 disabled:cursor-not-allowed">Export</button> <button class="px-3 py-2 rounded-lg text-xs border border-border-default hover:border-accent-cyan
|
|
7
|
+
text-text-secondary hover:text-accent-cyan transition-all
|
|
8
|
+
disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1.5"><!> Refresh</button></div></div> <!></div></div>`);function Dt(ye,we){ct(we,!0);const z=["trace","debug","info","warn","error","fatal"],ke=2e3,D=pt();let L=g(xe([])),F=g(null),H=g(null),se=g(!1),q=g(!1),T=g(null),J=g(""),ne=g(""),O=g(!0),R=g(null),$=xe({trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0}),C=g(void 0);function Le(e){if(typeof e!="string")return null;const t=e.toLowerCase();return z.includes(t)?t:null}function Ce(e){if(typeof e!="string")return null;const t=e.trim();if(!t.startsWith("{")||!t.endsWith("}"))return null;try{const o=JSON.parse(t);return o&&typeof o=="object"?o:null}catch{return null}}function je(e){if(!e.trim())return{raw:e,time:null,level:null,subsystem:null,message:e};try{const t=JSON.parse(e),o=t&&typeof t._meta=="object"&&t._meta!==null?t._meta:null,v=typeof t.time=="string"?t.time:typeof o?.date=="string"?o.date:null,p=Le(o?.logLevelName??o?.level),x=typeof t[0]=="string"?t[0]:typeof o?.name=="string"?o.name:null,b=Ce(x);let j=null;b&&(j=typeof b.subsystem=="string"?b.subsystem:typeof b.module=="string"?b.module:null),!j&&x&&x.length<120&&(j=x);let B=null;return typeof t[1]=="string"?B=t[1]:!b&&typeof t[0]=="string"?B=t[0]:typeof t.message=="string"&&(B=t.message),{raw:e,time:v,level:p,subsystem:j,message:B??e}}catch{return{raw:e,time:null,level:null,subsystem:null,message:e}}}async function U(e){if(te.connected&&!(r(q)&&!e?.quiet)){e?.quiet||d(q,!0),e?.quiet||d(T,null);try{const t=await te.call("logs.tail",{cursor:e?.reset?void 0:r(F)??void 0,limit:200,maxBytes:512e3}),p=(Array.isArray(t?.lines)?t.lines:Array.isArray(t)?t:[]).filter(b=>typeof b=="string").map(je),x=!!(e?.reset||t.reset||r(F)==null);d(L,x?p:[...r(L),...p].slice(-ke),!0),(p.length>0||x)&&d(T,null),typeof t.cursor=="number"&&d(F,t.cursor,!0),typeof t.file=="string"&&d(H,t.file,!0),d(se,!!t.truncated,!0),r(O)&&p.length>0&&requestAnimationFrame(()=>{r(C)&&(r(C).scrollTop=r(C).scrollHeight)})}catch(t){d(T,String(t),!0)}finally{e?.quiet||d(q,!1)}}}function Be(){W(),d(R,setInterval(()=>{te.connected&&U({quiet:!0})},3e3),!0)}function W(){r(R)&&(clearInterval(r(R)),d(R,null))}be(()=>{const e=D.state.status;return me(()=>{e==="connected"?(U({reset:!0}).then(()=>{r(L).length===0&&!r(T)&&setTimeout(()=>U({reset:!0}),2e3)}),Be()):W()}),()=>me(()=>W())}),be(()=>{const e=r(J),t=setTimeout(()=>{d(ne,e,!0)},200);return()=>clearTimeout(t)});let A=ge(()=>{const e=r(ne).trim().toLowerCase();return r(L).filter(t=>t.level&&!$[t.level]?!1:e?[t.message,t.subsystem,t.raw].filter(Boolean).join(" ").toLowerCase().includes(e):!0)}),Te=ge(()=>z.filter(e=>!$[e]).length);function Se(){const e=r(A).map(p=>p.raw).join(`
|
|
9
|
+
`),t=new Blob([e],{type:"text/plain"}),o=URL.createObjectURL(t),v=document.createElement("a");v.href=o,v.download=`cortex-logs-${new Date().toISOString().slice(0,19).replace(/:/g,"-")}.txt`,v.click(),URL.revokeObjectURL(o)}function Fe(e){if(!e)return"";const t=new Date(e);return isNaN(t.getTime())?e:t.toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3})}function qe(e){switch(e){case"trace":return"text-gray-500";case"debug":return"text-blue-400";case"info":return"text-accent-cyan";case"warn":return"text-amber-400";case"error":return"text-red-400";case"fatal":return"text-accent-pink";default:return"text-text-muted"}}function Oe(e){switch(e){case"trace":return"bg-gray-500/10";case"debug":return"bg-blue-400/10";case"info":return"bg-accent-cyan/10";case"warn":return"bg-amber-400/10";case"error":return"bg-red-400/10";case"fatal":return"bg-accent-pink/10";default:return""}}function Re(e){switch(e){case"trace":return"border-gray-500/40 text-gray-400 has-[:checked]:bg-gray-500/20 has-[:checked]:border-gray-500";case"debug":return"border-blue-400/40 text-blue-400 has-[:checked]:bg-blue-400/20 has-[:checked]:border-blue-400";case"info":return"border-accent-cyan/40 text-accent-cyan has-[:checked]:bg-accent-cyan/20 has-[:checked]:border-accent-cyan";case"warn":return"border-amber-400/40 text-amber-400 has-[:checked]:bg-amber-400/20 has-[:checked]:border-amber-400";case"error":return"border-red-400/40 text-red-400 has-[:checked]:bg-red-400/20 has-[:checked]:border-red-400";case"fatal":return"border-accent-pink/40 text-accent-pink has-[:checked]:bg-accent-pink/20 has-[:checked]:border-accent-pink"}}function $e(){if(!r(C))return;const{scrollTop:e,scrollHeight:t,clientHeight:o}=r(C);!(t-e-o<50)&&r(O)&&d(O,!1)}function Ae(e){$[e]=!$[e]}var V=At();mt("1lsf4ps",e=>{ut(()=>{ft.title="Logs — Cortex"})});var le=l(V),G=l(le),K=l(G),oe=i(l(K),2),Ee=i(l(oe));{var Ne=e=>{var t=yt(),o=l(t);s(t),_(()=>m(o,`— ${r(H)??""}`)),c(e,t)};y(Ee,e=>{r(H)&&e(Ne)})}s(oe),s(K);var ie=i(K,2),Q=l(ie),Ue=l(Q);s(Q);var X=i(Q,2),I=i(X,2),Ie=l(I);{var Me=e=>{var t=wt();c(e,t)};y(Ie,e=>{r(q)&&e(Me)})}P(),s(I),s(ie),s(G);var Pe=i(G,2);{var ze=e=>{var t=kt();c(e,t)},De=e=>{var t=$t(),o=vt(t),v=l(o),p=i(l(v),2);re(p),s(v);var x=i(v,2);he(x,21,()=>z,_e,(a,n)=>{var h=Lt(),f=l(h);re(f);var S=i(f);s(h),_(N=>{ae(h,1,`inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-mono
|
|
10
|
+
border cursor-pointer transition-all select-none ${N??""}`),xt(f,$[r(n)]),m(S,` ${r(n)??""}`)},[()=>Re(r(n))]),ee("change",f,()=>Ae(r(n))),c(a,h)}),s(x);var b=i(x,2),j=l(b);re(j),P(),s(b),s(o);var B=i(o,2);{var He=a=>{var n=Ct();c(a,n)};y(B,a=>{r(se)&&a(He)})}var ce=i(B,2);{var Je=a=>{var n=jt(),h=l(n,!0);s(n),_(()=>m(h,r(T))),c(a,n)};y(ce,a=>{r(T)&&a(Je)})}var E=i(ce,2),We=l(E);{var Ve=a=>{var n=Bt(),h=l(n,!0);s(n),_(()=>m(h,r(L).length===0?"Waiting for log entries…":"No entries match current filters")),c(a,n)},Ge=a=>{var n=qt();he(n,21,()=>r(A),_e,(h,f)=>{var S=Ft(),N=l(S),et=l(N,!0);s(N);var M=i(N,2),tt=l(M,!0);s(M);var ve=i(M,2);{var rt=w=>{var k=Tt(),Z=l(k,!0);s(k),_(()=>{bt(k,"title",r(f).subsystem),m(Z,r(f).subsystem)}),c(w,k)},at=w=>{var k=St();c(w,k)};y(ve,w=>{r(f).subsystem?w(rt):w(at,!1)})}var pe=i(ve,2),st=l(pe,!0);s(pe),s(S),_((w,k,Z)=>{ae(S,1,`virtual-item flex items-start gap-0 px-3 py-1 hover:bg-bg-hover/30 transition-colors text-xs font-mono ${w??""}`),m(et,k),ae(M,1,`w-[50px] flex-shrink-0 font-bold uppercase ${Z??""}`),m(tt,r(f).level??""),m(st,r(f).message)},[()=>Oe(r(f).level),()=>Fe(r(f).time),()=>qe(r(f).level)]),c(h,S)}),s(n),c(a,n)};y(We,a=>{r(A).length===0?a(Ve):a(Ge,!1)})}s(E),_t(E,a=>d(C,a),()=>r(C));var de=i(E,2),Y=l(de),Ke=l(Y);{var Qe=a=>{var n=Ot();P(),c(a,n)},Xe=a=>{var n=Rt();P(),c(a,n)};y(Ke,a=>{r(R)?a(Qe):a(Xe,!1)})}s(Y);var ue=i(Y,2),fe=l(ue),Ye=i(fe);{var Ze=a=>{var n=it();_(()=>m(n,`· Cursor: ${r(F)??""}`)),c(a,n)};y(Ye,a=>{r(F)!=null&&a(Ze)})}s(ue),s(de),_(()=>m(fe,`Buffer: ${r(L).length??""}/2000 `)),gt(p,()=>r(J),a=>d(J,a)),ht(j,()=>r(O),a=>d(O,a)),lt("scroll",E,$e),c(e,t)};y(Pe,e=>{D.state.status!=="connected"?e(ze):e(De,!1)})}s(le),s(V),_(()=>{m(Ue,`${r(A).length??""}${r(Te)>0?` / ${r(L).length}`:""} entries`),X.disabled=r(A).length===0,I.disabled=r(q)||D.state.status!=="connected"}),ee("click",X,Se),ee("click",I,()=>U({reset:!0})),c(ye,V),dt()}nt(["click","change"]);export{Dt as component};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{d as _t,a as $,b as l,s as v,f as x,t as Se}from"../chunks/B2A7gHtL.js";import{p as yt,s as b,a as ht,u as wt,b as kt,t as _,g as e,c as St,e as Ct,f as n,h as r,d,$ as Mt,r as a,n as oe,i as Ce,j as Ft,k as Lt}from"../chunks/qR_TM3YX.js";import{i as y}from"../chunks/DpBBTLWw.js";import{g as jt,b as Me,a as O,r as Rt,e as Fe,s as ie,i as Ne}from"../chunks/D6tSezzf.js";import{h as At}from"../chunks/CXQ1lKJR.js";import{b as Ye}from"../chunks/nnazh41B.js";import{b as It}from"../chunks/DVP7Iy08.js";import{g as Wt}from"../chunks/Be_uRYmX.js";import{f as Bt}from"../chunks/DPrxUVm_.js";var zt=x('<span class="px-2 py-1 rounded text-[10px] bg-accent-green/15 text-accent-green border border-accent-green/20">RPC Available</span>'),Et=x('<span class="px-2 py-1 rounded text-[10px] bg-accent-amber/15 text-accent-amber border border-accent-amber/20">CLI Only</span>'),$t=x('<div class="rounded-xl border border-red-500/30 bg-red-500/5 p-3 text-sm text-red-400"> </div>'),Ot=x('<span class="text-xs px-1.5 py-0.5 rounded bg-accent-purple/10 text-accent-purple font-mono"> </span>'),Ut=x('<span class="text-xs px-1.5 py-0.5 rounded bg-bg-tertiary text-text-muted font-mono"> </span>'),qt=x('<pre class="mt-3 pt-3 border-t border-border-default text-xs text-text-secondary font-mono bg-bg-primary rounded-lg p-3 overflow-x-auto"> </pre>'),Pt=x('<button><div class="p-4"><div class="flex items-center gap-2 mb-2"><span class="text-xs font-mono text-accent-purple"></span> <!> <!></div> <p class="text-sm text-text-primary leading-relaxed"> </p> <!></div></button>'),Tt=x('<div class="space-y-3"><div class="text-sm text-text-muted"> <span class="text-accent-purple"> </span>"</div> <!></div>'),Dt=x('<div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Embedding Server</span> <span class="text-sm font-mono text-text-primary truncate max-w-[200px]"> </span></div>'),Ht=x('<div class="flex items-center justify-between py-2"><span class="text-xs text-text-muted">Workspace</span> <span class="text-sm font-mono text-text-primary"> </span></div>'),Kt=x('<div class="space-y-3"><div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Enabled</span> <span> </span></div> <div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Provider</span> <span class="text-sm font-mono text-text-primary"> </span></div> <div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Embedding Model</span> <span class="text-sm font-mono text-text-primary"> </span></div> <!> <!></div>'),Nt=x('<div class="text-text-muted text-sm">Memory search not configured.</div>'),Yt=x('<span class="text-[10px] text-amber-400"> </span>'),Qt=x('<div class="w-px h-4 bg-border-default"></div> <div class="flex items-center gap-1.5"><span class="text-[10px] uppercase tracking-wider text-text-muted">Workspace</span> <span class="text-xs font-mono text-text-secondary truncate max-w-[300px]"> </span></div>',1),Jt=x('<div class="flex flex-wrap items-center gap-4 mb-4 px-3 py-2.5 rounded-lg bg-bg-tertiary/30 border border-border-default/50"><div class="flex items-center gap-1.5"><span class="text-[10px] uppercase tracking-wider text-text-muted">Files</span> <span class="text-sm font-bold text-text-primary"> </span> <!></div> <div class="w-px h-4 bg-border-default"></div> <div class="flex items-center gap-1.5"><span class="text-[10px] uppercase tracking-wider text-text-muted">Total Size</span> <span class="text-sm font-bold text-text-primary"> </span></div> <!></div>'),Vt=x('<div class="px-3 py-2.5 rounded-lg animate-pulse"><div class="h-3 w-24 bg-bg-tertiary rounded mb-1.5"></div> <div class="h-2.5 w-16 bg-bg-tertiary rounded"></div></div>'),Gt=x('<div class="flex gap-4 min-h-0"><div class="w-52 flex-shrink-0 space-y-1"></div> <div class="flex-1 rounded-lg border border-border-default bg-bg-tertiary/30 animate-pulse min-h-[200px]"></div></div>'),Xt=x('<div class="text-center py-8 text-text-muted text-sm"> </div>'),Zt=x('<span class="px-1 py-0.5 rounded text-[9px] bg-amber-500/20 text-amber-400 flex-shrink-0">missing</span>'),ea=x('<button><span class="text-xs flex-shrink-0"> </span> <div class="min-w-0 flex-1"><div class="font-mono truncate"> </div> <div class="text-[10px] text-text-muted mt-0.5"> <!></div></div> <!></button>'),ta=x('<div class="flex items-center justify-center h-48 text-text-muted text-sm rounded-lg border border-border-default/50 bg-bg-tertiary/30">Select a file to view or edit</div>'),aa=x('<div class="flex items-center justify-center h-48 text-text-muted text-sm rounded-lg border border-border-default/50 bg-bg-tertiary/30"><svg class="w-4 h-4 animate-spin mr-2" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg> </div>'),ra=x('<span class="w-2 h-2 rounded-full bg-accent-amber" title="Unsaved changes"></span>'),sa=x('<div class="rounded-lg border border-border-default bg-bg-primary flex flex-col"><div class="px-3 py-2 border-b border-border-default bg-bg-secondary/30 flex items-center justify-between flex-shrink-0"><div class="flex items-center gap-2"><span class="text-xs font-mono font-medium text-text-primary"> </span> <!></div> <div class="flex items-center gap-2"><button class="px-2.5 py-1 rounded text-xs text-text-muted hover:text-text-primary transition-all disabled:opacity-30">Reset</button> <button> </button></div></div> <textarea class="w-full p-4 bg-bg-primary text-text-secondary font-mono text-xs resize-none focus:outline-none border-none min-h-[300px] max-h-[500px] leading-relaxed" spellcheck="false"></textarea></div>'),na=x('<div class="flex gap-4 min-h-0"><div class="w-52 flex-shrink-0 space-y-1 overflow-y-auto max-h-[500px]"></div> <div class="flex-1 min-w-0 flex flex-col"><!></div></div>'),da=x(`<div class="h-full flex flex-col overflow-hidden"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default"><div class="flex items-center justify-between flex-wrap gap-3"><div><h1 class="text-xl font-bold text-text-primary flex items-center gap-2"><span class="text-accent-purple">🧠</span> Memory</h1> <p class="text-sm text-text-muted">Agent memory system — hybrid BM25 + vector retrieval</p></div> <div class="flex items-center gap-2"><!> <button class="px-3 py-1.5 rounded-lg text-sm border border-border-default hover:border-accent-cyan
|
|
2
|
+
text-text-secondary hover:text-accent-cyan transition-all disabled:opacity-50"> </button></div></div></div> <div class="flex-1 overflow-y-auto p-4 md:p-6"><div class="max-w-6xl mx-auto space-y-6"><div class="glass rounded-xl border border-border-default p-4"><div class="flex items-center gap-3"><div class="flex-1 relative"><svg class="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg> <input type="text" class="w-full pl-10 pr-4 py-2.5 rounded-lg border border-border-default bg-bg-input
|
|
3
|
+
text-sm text-text-primary placeholder:text-text-muted/50
|
|
4
|
+
focus:outline-none focus:border-accent-purple focus:shadow-[0_0_8px_rgba(124,77,255,0.15)]
|
|
5
|
+
transition-all disabled:opacity-50"/></div> <select class="px-3 py-2.5 rounded-lg border border-border-default bg-bg-input text-sm text-text-primary
|
|
6
|
+
focus:outline-none focus:border-accent-purple disabled:opacity-50"><option>10</option><option>20</option><option>50</option></select> <button class="px-5 py-2.5 rounded-lg text-sm font-medium bg-accent-purple/20 border border-accent-purple/30
|
|
7
|
+
text-accent-purple hover:bg-accent-purple/30 transition-all disabled:opacity-40"> </button></div></div> <!> <!> <div class="grid grid-cols-1 lg:grid-cols-2 gap-4"><div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1 flex items-center gap-2"><span class="text-accent-cyan">⚙️</span> Configuration</h3> <p class="text-xs text-text-muted mb-4">Memory search engine settings from gateway config.</p> <!></div> <div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1 flex items-center gap-2"><span class="text-accent-purple">💻</span> CLI Commands</h3> <p class="text-xs text-text-muted mb-4"><!></p> <div class="space-y-3"><div class="rounded-lg bg-bg-primary border border-border-default p-3"><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1.5">Check Status</div> <code class="text-sm text-accent-cyan font-mono">openclaw memory status</code> <p class="text-[10px] text-text-muted mt-1">Shows index stats, store path, embedding info</p></div> <div class="rounded-lg bg-bg-primary border border-border-default p-3"><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1.5">Search</div> <code class="text-sm text-accent-cyan font-mono">openclaw memory search "your query"</code> <p class="text-[10px] text-text-muted mt-1">Hybrid BM25 + vector search across indexed files</p></div> <div class="rounded-lg bg-bg-primary border border-border-default p-3"><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1.5">Re-index</div> <code class="text-sm text-accent-cyan font-mono">openclaw memory index</code> <p class="text-[10px] text-text-muted mt-1">Rebuild the memory index from workspace files</p></div></div></div></div> <div class="glass rounded-xl border border-border-default p-5"><div class="flex items-center justify-between mb-1"><h3 class="text-sm font-semibold text-text-primary flex items-center gap-2"><span class="text-accent-amber">📝</span> Workspace Files</h3> <button class="text-[10px] text-text-muted hover:text-accent-cyan transition-all disabled:opacity-50"> </button></div> <p class="text-xs text-text-muted mb-4">Agent workspace files — MEMORY.md is your long-term memory store.</p> <!> <!></div> <div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1 flex items-center gap-2"><span>🏗️</span> How Memory Works</h3> <p class="text-xs text-text-muted mb-4">Architecture of the agent memory system.</p> <div class="grid grid-cols-1 md:grid-cols-3 gap-4"><div class="rounded-lg bg-bg-tertiary/30 border border-border-default p-4"><div class="text-sm font-medium text-accent-cyan mb-2">📥 Indexing</div> <p class="text-xs text-text-secondary leading-relaxed">Workspace files (markdown, configs, logs) are chunked and embedded into vectors using the configured embedding model. Stored in a local SQLite database with both BM25 and vector indices.</p></div> <div class="rounded-lg bg-bg-tertiary/30 border border-border-default p-4"><div class="text-sm font-medium text-accent-purple mb-2">🔍 Hybrid Search</div> <p class="text-xs text-text-secondary leading-relaxed">Queries use both BM25 keyword matching (exact terms) and vector cosine similarity (semantic meaning). Results are ranked by combined score for best relevance.</p></div> <div class="rounded-lg bg-bg-tertiary/30 border border-border-default p-4"><div class="text-sm font-medium text-accent-amber mb-2">🤖 Agent Integration</div> <p class="text-xs text-text-secondary leading-relaxed">The agent automatically searches memory during conversations when relevant context might exist. Memories are indexed on heartbeat cycles and during compaction flushes.</p></div></div></div></div></div></div>`);function fa(Qe,Je){yt(Je,!0);const Le=jt(),G=Wt();let X=b(!1),Z=b(null),P=b(""),ee=b(ht([])),le=b(0),ce=b(20),K=b(null),j=b(null),te=b(!1),I=b(null),Ve=b(null),ve=b(null),T=b(null),N=b(!1),A=b(null),U=b(""),W=b(""),xe=b(!1),Y=b(!1),D=Ce(()=>e(T)?.files??[]),ae=Ce(()=>e(W)!==e(U)&&e(A)!==null),re=Ce(()=>{const t=e(D).filter(i=>!i.missing),s=t.reduce((i,u)=>i+(u.size??0),0);return{count:t.length,totalCount:e(D).length,missingCount:e(D).filter(i=>i.missing).length,totalSize:s}});async function je(){if(O.connected){d(te,!0);try{const t=await O.call("memory.status",{});d(j,!0)}catch(t){const s=String(t);d(j,(s.includes("unknown method"),!1),!0)}try{const t=await O.call("config.get",{}),s=t?.config??t,u=s?.agents?.defaults,R=u?.memorySearch;d(I,R??null,!0),d(ve,u?.workspace??null,!0);const L=s?.memory?.store;d(Ve,typeof L=="string"?L:null,!0)}catch{}await pe(),d(te,!1)}}async function pe(){d(N,!0);try{const t=await O.call("agents.files.list",{agentId:"main"});d(T,t??null,!0);const i=(t?.files??[]).find(u=>u.name==="MEMORY.md"&&!u.missing);i&&!e(A)&&Ae(i.name)}catch(t){console.error("Failed to load agent files:",t),G.error("Failed to load files",String(t))}finally{d(N,!1)}}async function Re(){if(!(!O.connected||!e(P).trim())){d(X,!0),d(Z,null);try{const t=await O.call("memory.search",{query:e(P).trim(),limit:e(ce)});d(j,!0),d(ee,t.results??t.entries??[],!0),d(le,t.total??e(ee).length,!0)}catch(t){const s=String(t);s.includes("unknown method")?d(j,!1):d(Z,s,!0)}finally{d(X,!1)}}}async function Ae(t){d(A,t,!0),d(xe,!0),d(U,""),d(W,"");try{const s=await O.call("agents.files.get",{agentId:"main",name:t});d(U,s?.file?.content??"",!0),d(W,e(U),!0)}catch(s){d(U,""),d(W,""),G.error("Failed to load file",String(s))}finally{d(xe,!1)}}async function Ge(){if(!(!e(A)||e(Y))){d(Y,!0);try{await O.call("agents.files.set",{agentId:"main",name:e(A),content:e(W)}),d(U,e(W),!0),G.success("Saved",`${e(A)} saved successfully`),pe()}catch(t){G.error("Save failed",String(t))}finally{d(Y,!1)}}}function Xe(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),Re())}function Ze(t,s){return t.length<=s?t:t.slice(0,s)+"…"}function Ie(t){return t?t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1048576).toFixed(1)} MB`:"-"}function et(t){return t.endsWith(".md")?"📄":t.endsWith(".json")?"📋":t.endsWith(".yml")||t.endsWith(".yaml")?"⚙️":t.endsWith(".ts")||t.endsWith(".js")?"📜":"📎"}wt(()=>{Le.state.status==="connected"&&kt(()=>je())});var ue=da();At("1czmmpc",t=>{Ct(()=>{Mt.title="Memory — Cortex"})});var me=r(ue),We=r(me),Be=n(r(We),2),ze=r(Be);{var tt=t=>{var s=zt();l(t,s)},at=t=>{var s=Et();l(t,s)};y(ze,t=>{e(j)?t(tt):e(j)===!1&&t(at,1)})}var se=n(ze,2),rt=r(se,!0);a(se),a(Be),a(We),a(me);var Ee=n(me,2),$e=r(Ee),fe=r($e),Oe=r(fe),be=r(Oe),Q=n(r(be),2);Rt(Q),a(be);var J=n(be,2),ge=r(J);ge.value=ge.__value=10;var _e=n(ge);_e.value=_e.__value=20;var Ue=n(_e);Ue.value=Ue.__value=50,a(J);var ne=n(J,2),st=r(ne,!0);a(ne),a(Oe),a(fe);var qe=n(fe,2);{var nt=t=>{var s=$t(),i=r(s,!0);a(s),_(()=>v(i,e(Z))),l(t,s)};y(qe,t=>{e(Z)&&t(nt)})}var Pe=n(qe,2);{var dt=t=>{var s=Tt(),i=r(s),u=r(i),R=n(u),L=r(R,!0);a(R),oe(),a(i);var E=n(i,2);Fe(E,17,()=>e(ee),Ne,(B,o,c)=>{var m=Pt(),S=r(m),f=r(S),h=r(f);h.textContent=`#${c+1}`;var C=n(h,2);{var w=p=>{var g=Ot(),q=r(g);a(g),_(ke=>v(q,`${ke??""}%`),[()=>(e(o).score*100).toFixed(1)]),l(p,g)};y(C,p=>{e(o).score!==void 0&&p(w)})}var k=n(C,2);{var M=p=>{var g=Ut(),q=r(g,!0);a(g),_(()=>v(q,e(o).source)),l(p,g)};y(k,p=>{e(o).source&&p(M)})}a(f);var F=n(f,2),V=r(F,!0);a(F);var H=n(F,2);{var z=p=>{var g=qt(),q=r(g,!0);a(g),_(ke=>v(q,ke),[()=>JSON.stringify(e(o).metadata,null,2)]),l(p,g)};y(H,p=>{e(K)?.id===e(o).id&&e(o).metadata&&p(z)})}a(S),a(m),_(p=>{ie(m,1,`w-full text-left glass rounded-xl border transition-all
|
|
8
|
+
${e(K)?.id===e(o).id?"border-accent-purple/50 bg-accent-purple/5":"border-border-default hover:border-border-hover"}`),v(V,p)},[()=>e(K)?.id===e(o).id?e(o).content:Ze(e(o).content,300)]),$("click",m,()=>d(K,e(K)?.id===e(o).id?null:e(o),!0)),l(B,m)}),a(s),_(()=>{v(u,`${e(le)??""} result${e(le)!==1?"s":""} for "`),v(L,e(P))}),l(t,s)};y(Pe,t=>{e(ee).length>0&&t(dt)})}var ye=n(Pe,2),he=r(ye),ot=n(r(he),4);{var it=t=>{var s=Kt(),i=r(s),u=n(r(i),2),R=r(u,!0);a(u),a(i);var L=n(i,2),E=n(r(L),2),B=r(E,!0);a(E),a(L);var o=n(L,2),c=n(r(o),2),m=r(c,!0);a(c),a(o);var S=n(o,2);{var f=w=>{var k=Dt(),M=n(r(k),2),F=r(M,!0);a(M),a(k),_(()=>{Me(M,"title",e(I).remote.baseUrl),v(F,e(I).remote.baseUrl)}),l(w,k)};y(S,w=>{e(I).remote?.baseUrl&&w(f)})}var h=n(S,2);{var C=w=>{var k=Ht(),M=n(r(k),2),F=r(M,!0);a(M),a(k),_(()=>v(F,e(ve))),l(w,k)};y(h,w=>{e(ve)&&w(C)})}a(s),_(()=>{ie(u,1,`text-sm font-medium ${e(I).enabled!==!1?"text-accent-green":"text-red-400"}`),v(R,e(I).enabled!==!1?"Yes":"No"),v(B,e(I).provider??"-"),v(m,e(I).model??"-")}),l(t,s)},lt=t=>{var s=Nt();l(t,s)};y(ot,t=>{e(I)?t(it):t(lt,!1)})}a(he);var Te=n(he,2),De=n(r(Te),2),ct=r(De);{var vt=t=>{var s=Se("Memory is managed via the OpenClaw CLI. Use these commands on the gateway host.");l(t,s)},xt=t=>{var s=Se("Available CLI commands for memory management.");l(t,s)};y(ct,t=>{e(j)===!1?t(vt):t(xt,!1)})}a(De),oe(2),a(Te),a(ye);var He=n(ye,2),we=r(He),de=n(r(we),2),pt=r(de,!0);a(de),a(we);var Ke=n(we,4);{var ut=t=>{var s=Jt(),i=r(s),u=n(r(i),2),R=r(u,!0);a(u);var L=n(u,2);{var E=f=>{var h=Yt(),C=r(h);a(h),_(()=>v(C,`(${e(re).missingCount??""} missing)`)),l(f,h)};y(L,f=>{e(re).missingCount>0&&f(E)})}a(i);var B=n(i,4),o=n(r(B),2),c=r(o,!0);a(o),a(B);var m=n(B,2);{var S=f=>{var h=Qt(),C=n(Ft(h),2),w=n(r(C),2),k=r(w,!0);a(w),a(C),_(()=>{Me(w,"title",e(T).workspace),v(k,e(T).workspace)}),l(f,h)};y(m,f=>{e(T).workspace&&f(S)})}a(s),_(f=>{v(R,e(re).count),v(c,f)},[()=>Ie(e(re).totalSize)]),l(t,s)};y(Ke,t=>{e(T)&&t(ut)})}var mt=n(Ke,2);{var ft=t=>{var s=Gt(),i=r(s);Fe(i,20,()=>Array(4),Ne,(u,R)=>{var L=Vt();l(u,L)}),a(i),oe(2),a(s),l(t,s)},bt=t=>{var s=Xt(),i=r(s,!0);a(s),_(()=>v(i,Le.state.status!=="connected"?"Connect to the gateway to view files.":"No workspace files found.")),l(t,s)},gt=t=>{var s=na(),i=r(s);Fe(i,21,()=>e(D),o=>o.name,(o,c)=>{var m=ea(),S=r(m),f=r(S,!0);a(S);var h=n(S,2),C=r(h),w=r(C,!0);a(C);var k=n(C,2),M=r(k),F=n(M);{var V=p=>{var g=Se();_(q=>v(g,`· ${q??""}`),[()=>Bt(e(c).updatedAtMs)]),l(p,g)};y(F,p=>{e(c).updatedAtMs&&!e(c).missing&&p(V)})}a(k),a(h);var H=n(h,2);{var z=p=>{var g=Zt();l(p,g)};y(H,p=>{e(c).missing&&p(z)})}a(m),_((p,g)=>{ie(m,1,`w-full text-left px-3 py-2 rounded-lg text-xs transition-all flex items-center gap-2
|
|
9
|
+
${e(A)===e(c).name?"bg-accent-purple/10 text-accent-purple border border-accent-purple/20":"hover:bg-bg-hover text-text-secondary border border-transparent"}`),v(f,p),v(w,e(c).name),v(M,`${g??""} `)},[()=>et(e(c).name),()=>e(c).missing?"missing":Ie(e(c).size)]),$("click",m,()=>Ae(e(c).name)),l(o,m)}),a(i);var u=n(i,2),R=r(u);{var L=o=>{var c=ta();l(o,c)},E=o=>{var c=aa(),m=n(r(c));a(c),_(()=>v(m,` Loading ${e(A)??""}…`)),l(o,c)},B=o=>{var c=sa(),m=r(c),S=r(m),f=r(S),h=r(f,!0);a(f);var C=n(f,2);{var w=z=>{var p=ra();l(z,p)};y(C,z=>{e(ae)&&z(w)})}a(S);var k=n(S,2),M=r(k),F=n(M,2),V=r(F,!0);a(F),a(k),a(m);var H=n(m,2);Lt(H),a(c),_(()=>{v(h,e(A)),M.disabled=!e(ae),F.disabled=!e(ae)||e(Y),ie(F,1,`px-3 py-1 rounded text-xs transition-all
|
|
10
|
+
${e(ae)?"bg-accent-cyan/20 text-accent-cyan border border-accent-cyan/30 hover:bg-accent-cyan/30":"bg-bg-tertiary text-text-muted cursor-not-allowed"}`),v(V,e(Y)?"Saving…":"Save")}),$("click",M,()=>{d(W,e(U),!0)}),$("click",F,Ge),Ye(H,()=>e(W),z=>d(W,z)),l(o,c)};y(R,o=>{e(A)?e(xe)?o(E,1):o(B,!1):o(L)})}a(u),a(s),l(t,s)};y(mt,t=>{e(N)&&e(D).length===0?t(ft):e(D).length===0?t(bt,1):t(gt,!1)})}a(He),oe(2),a($e),a(Ee),a(ue),_(t=>{se.disabled=e(te),v(rt,e(te)?"Loading…":"Refresh"),Me(Q,"placeholder",e(j)?"Search memory… (Enter to search)":"Memory search requires CLI — see below"),Q.disabled=e(j)===!1,J.disabled=e(j)===!1,ne.disabled=t,v(st,e(X)?"Searching…":"Search"),de.disabled=e(N),v(pt,e(N)?"Loading…":"↻ Refresh")},[()=>e(X)||!e(P).trim()||e(j)===!1]),$("click",se,()=>je()),$("keydown",Q,Xe),Ye(Q,()=>e(P),t=>d(P,t)),It(J,()=>e(ce),t=>d(ce,t)),$("click",ne,Re),$("click",de,()=>pe()),l(Qe,ue),St()}_t(["click","keydown"]);export{fa as component};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{d as Ur,a as A,b as i,f as l,s as c,c as ze}from"../chunks/B2A7gHtL.js";import{p as Gr,s as y,a as Qt,u as jt,b as Jr,t as x,g as e,c as Yr,d as s,e as Wr,f as n,h as r,$ as Qr,r as t,i as I,n as Be,k as qt}from"../chunks/qR_TM3YX.js";import{i as h}from"../chunks/DpBBTLWw.js";import{g as qr,a as P,r as At,s as f,e as he,i as Ie,b as Je}from"../chunks/D6tSezzf.js";import{h as Kr}from"../chunks/CXQ1lKJR.js";import{b as Ye}from"../chunks/nnazh41B.js";import{g as Xr}from"../chunks/Be_uRYmX.js";import{f as Zr}from"../chunks/DPrxUVm_.js";var ea=l('<div class="flex items-center gap-4 mt-4"><div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-accent-cyan"></span> <span class="text-text-muted">Total</span> <span class="text-text-primary font-mono font-semibold"> </span></div> <div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-accent-green glow-pulse"></span> <span class="text-text-muted">Online</span> <span class="text-accent-green font-mono font-semibold"> </span></div> <div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-red-500"></span> <span class="text-text-muted">Offline</span> <span class="text-text-secondary font-mono font-semibold"> </span></div> <div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-accent-purple"></span> <span class="text-text-muted">Capabilities</span> <span class="text-text-secondary font-mono font-semibold"> </span></div></div>'),ta=l('<div class="flex-shrink-0 mx-4 md:mx-6 mt-4 p-4 rounded-xl border border-accent-cyan/30 bg-accent-cyan/5"><div class="flex items-start justify-between"><div class="flex-1"><h3 class="text-sm font-semibold text-text-primary mb-2">Add a Node</h3> <p class="text-xs text-text-secondary mb-3">Run this on the machine you want to pair:</p> <div class="bg-bg-primary rounded-lg p-3 font-mono text-xs text-accent-cyan overflow-x-auto"><span class="text-text-muted select-none">$</span>curl -fsSL https://gitlab.honercloud.com/llm/cortex/-/raw/main/node-install.sh | bash</div> <p class="text-xs text-text-muted mt-2">Or if OpenClaw is already installed:</p> <div class="bg-bg-primary rounded-lg p-3 font-mono text-xs text-accent-cyan mt-1 overflow-x-auto"><span class="text-text-muted select-none">$</span> </div> <p class="text-xs text-text-muted mt-2">The node will appear in <strong>Pending</strong> below. Click <strong>Approve</strong> to pair it.</p></div> <button class="text-text-muted hover:text-text-primary ml-4"><svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button></div></div>'),ra=l('<p class="text-xs text-text-muted"> </p>'),aa=l('<div class="flex items-center justify-between p-3 rounded-lg bg-bg-primary/50 border border-border-default"><div class="flex items-center gap-3"><div class="w-8 h-8 rounded-lg bg-accent-amber/20 flex items-center justify-center"><svg class="w-4 h-4 text-accent-amber" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></div> <div><p class="text-sm font-medium text-text-primary"> </p> <!></div></div> <div class="flex items-center gap-2"><button class="px-3 py-1.5 text-xs font-medium rounded-lg bg-accent-green/20 text-accent-green border border-accent-green/30 hover:bg-accent-green/30 transition-colors disabled:opacity-50"> </button> <button class="px-3 py-1.5 text-xs font-medium rounded-lg bg-accent-red/20 text-accent-red border border-accent-red/30 hover:bg-accent-red/30 transition-colors disabled:opacity-50"> </button></div></div>'),na=l('<div class="flex-shrink-0 mx-4 md:mx-6 mt-4"><div class="p-4 rounded-xl border border-accent-amber/30 bg-accent-amber/5 animate-pulse-slow"><div class="flex items-center gap-2 mb-3"><svg class="w-5 h-5 text-accent-amber" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <h3 class="text-sm font-semibold text-accent-amber"> </h3></div> <div class="space-y-2"></div></div></div>'),oa=l('<div class="flex flex-col items-center justify-center h-full text-center"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-8 h-8 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636a9 9 0 010 12.728m-2.829-2.829a5 5 0 000-7.07m-4.243 9.9a9 9 0 01-4.242-1.757"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view the node fleet.</p></div>'),sa=l('<div class="glass rounded-xl p-4 border border-accent-pink/30 mb-4"><div class="flex items-center gap-2 text-accent-pink text-sm"><svg class="w-4 h-4 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg> <span> </span></div></div>'),ia=l('<div class="glass rounded-xl p-5 border border-border-default animate-pulse"><div class="flex items-center gap-3 mb-3"><div class="w-3 h-3 rounded-full bg-bg-tertiary"></div> <div class="h-4 w-32 bg-bg-tertiary rounded"></div></div> <div class="h-3 w-48 bg-bg-tertiary rounded mb-2"></div> <div class="flex gap-2 mt-3"><div class="h-6 w-16 bg-bg-tertiary rounded-full"></div> <div class="h-6 w-16 bg-bg-tertiary rounded-full"></div> <div class="h-6 w-16 bg-bg-tertiary rounded-full"></div></div></div>'),la=l("<div></div>"),da=l('<p class="text-text-muted text-sm">No nodes matching "<span class="text-accent-cyan"> </span>"</p>'),ca=l('<p class="text-text-muted text-sm">No nodes found. Pair a device to get started.</p>'),va=l('<div class="flex flex-col items-center justify-center h-64 text-center"><div class="w-14 h-14 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-7 h-7 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></div> <!></div>'),pa=l("<span></span>"),ua=l('<p class="text-xs text-text-muted truncate font-mono mt-0.5"> </p>'),xa=l('<span class="flex items-center gap-1 font-mono"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9"></path></svg> </span>'),ma=l('<span class="font-mono"> </span>'),ba=ze('<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path></svg>'),ga=l("<span><!> </span>"),fa=l('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-bg-tertiary border border-border-default text-text-muted"> </span>'),ha=l('<span class="text-[10px] text-text-muted block mt-0.5"> </span>'),_a=ze('<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path></svg>'),ya=l('<span class="text-xs">⚡</span>'),wa=l('<div class="flex items-start gap-3 rounded-lg border border-border-default bg-bg-primary/50 p-3"><div><!></div> <div class="min-w-0"><span class="text-sm font-medium text-text-primary"> </span> <p class="text-xs text-text-muted mt-0.5"> </p></div></div>'),ka=l('<div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">Capabilities</h4> <div class="grid grid-cols-1 md:grid-cols-2 gap-2"></div></div>'),Ma=l(`<span class="px-3 py-1.5 rounded-lg text-xs font-mono
|
|
2
|
+
bg-accent-purple/10 text-accent-purple border border-accent-purple/20
|
|
3
|
+
hover:bg-accent-purple/20 transition-colors"> </span>`),Ca=l('<div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">Registered Commands</h4> <div class="flex flex-wrap gap-2"></div></div>'),Sa=l('<div class="space-y-5"><div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">System Information</h4> <div class="grid grid-cols-2 md:grid-cols-4 gap-3"><div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Node ID</span> <span class="text-xs text-text-primary font-mono break-all"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">IP Address</span> <span class="text-xs text-text-primary font-mono"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Version</span> <span class="text-xs text-text-primary font-mono"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Platform</span> <span class="text-xs text-text-primary font-mono"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Paired</span> <span> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Connected</span> <span> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Last Seen</span> <span class="text-xs text-text-primary"> </span> <!></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Uptime</span> <span class="text-xs text-text-primary"> </span></div></div></div> <!> <!></div>'),ja=l('<button class="px-2 py-0.5 text-[10px] font-mono rounded bg-accent-purple/10 text-accent-purple border border-accent-purple/20 hover:bg-accent-purple/20 transition-colors"> </button>'),Aa=l('<div class="flex flex-wrap gap-1.5 mt-2"></div>'),Na=ze('<svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> Running…',1),Ba=ze('<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> Execute',1),Ia=l('<div class="rounded-lg border border-accent-green/30 bg-bg-primary/80 overflow-hidden"><div class="flex items-center gap-2 px-3 py-2 border-b border-border-default bg-accent-green/5"><span class="w-2 h-2 rounded-full bg-accent-green"></span> <span class="text-xs font-semibold text-accent-green">Response</span></div> <pre class="p-3 text-xs font-mono text-text-primary overflow-x-auto max-h-64 overflow-y-auto"> </pre></div>'),za=l('<div class="rounded-lg border border-accent-pink/30 bg-bg-primary/80 overflow-hidden"><div class="flex items-center gap-2 px-3 py-2 border-b border-border-default bg-accent-pink/5"><span class="w-2 h-2 rounded-full bg-accent-pink"></span> <span class="text-xs font-semibold text-accent-pink">Error</span></div> <pre class="p-3 text-xs font-mono text-accent-pink overflow-x-auto"> </pre></div>'),Ha=l(`<div class="space-y-4"><div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">Node Command Invocation</h4> <p class="text-xs text-text-muted mb-4">Execute a command on this node via <code class="text-accent-cyan bg-bg-tertiary px-1 rounded">node.invoke</code> RPC.</p></div> <div class="space-y-3"><div><label class="text-xs text-text-muted block mb-1.5">Command Name</label> <input type="text" placeholder="e.g. camera_snap, screen_record" class="w-full px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-purple/50 focus:ring-1 focus:ring-accent-purple/20 transition-all"/> <!></div> <div><label class="text-xs text-text-muted block mb-1.5">Parameters (JSON)</label> <textarea class="w-full px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-purple/50 focus:ring-1 focus:ring-accent-purple/20 transition-all resize-y"></textarea></div> <div><label class="text-xs text-text-muted block mb-1.5">Timeout (ms)</label> <input type="number" class="w-32 px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-purple/50 focus:ring-1 focus:ring-accent-purple/20 transition-all"/></div> <button class="flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg transition-all
|
|
4
|
+
bg-accent-purple/20 text-accent-purple border border-accent-purple/30
|
|
5
|
+
hover:bg-accent-purple/30 hover:border-accent-purple/50
|
|
6
|
+
disabled:opacity-40 disabled:cursor-not-allowed"><!></button></div> <!> <!></div>`),$a=ze('<svg class="w-3.5 h-3.5 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg>'),La=ze('<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>'),Pa=l('<div class="text-xs text-text-muted font-mono bg-bg-primary/50 px-3 py-1.5 rounded border border-border-default"> </div>'),Ra=l('<div class="flex items-center gap-2 text-xs text-accent-amber"><span class="w-2 h-2 rounded-full bg-accent-amber animate-pulse"></span> Unsaved changes</div>'),Ea=l('<div class="space-y-4"><div class="flex items-center justify-between"><div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-1">Node Exec Allowlist</h4> <p class="text-xs text-text-muted">Commands this node is allowed to execute. One pattern per line.</p></div> <div class="flex items-center gap-2"><button class="flex items-center gap-1.5 px-3 py-1.5 text-xs bg-bg-tertiary border border-border-default rounded-lg text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 transition-all disabled:opacity-40"><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> Reload</button> <button><!> Save</button></div></div> <!> <textarea class="w-full px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-green/50 focus:ring-1 focus:ring-accent-green/20 transition-all resize-y leading-relaxed" placeholder="# Exec allowlist for this node # One command pattern per line # e.g.: ls * # e.g.: cat /etc/*"></textarea> <!></div>'),Oa=l('<div class="mt-2 rounded-xl border border-accent-cyan/20 bg-bg-secondary/80 overflow-hidden animate-slide-in-up"><div class="flex border-b border-border-default bg-bg-tertiary/50"><button><span class="flex items-center gap-1.5"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> Details</span></button> <button><span class="flex items-center gap-1.5"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg> Invoke</span></button> <button><span class="flex items-center gap-1.5"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path></svg> Exec Allowlist</span></button></div> <div class="p-5"><!></div></div>'),Va=l('<div><button><div><div><div class="relative"><span></span> <!></div> <div class="min-w-0"><h3> </h3> <!></div> <span> </span></div> <div><div><!> <span class="flex items-center gap-1"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </span> <!></div> <div class="flex flex-wrap gap-1.5"><!> <!></div></div> <div><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></div></div></button> <!></div>'),Ta=l('<div class="flex flex-col gap-4"><div></div></div>'),Da=l('<div class="h-full flex flex-col overflow-hidden"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default"><div class="flex items-start justify-between gap-4 flex-wrap"><div><div class="flex items-center gap-3"><div class="w-10 h-10 rounded-xl gradient-bg border border-border-glow flex items-center justify-center flex-shrink-0"><svg class="w-5 h-5 text-accent-cyan" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></div> <div><h1 class="text-xl font-bold text-text-primary glow-text-cyan">Node Fleet</h1> <p class="text-sm text-text-muted">Paired devices, capabilities, and command exposure</p></div></div></div> <div class="flex items-center gap-2"><div class="relative"><svg class="absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg> <input type="text" placeholder="Search nodes..." class="pl-9 pr-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-cyan/50 focus:ring-1 focus:ring-accent-cyan/20 w-48 transition-all"/></div> <div class="flex items-center bg-bg-tertiary rounded-lg border border-border-default p-0.5"><button title="Grid view"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm10 0a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zm10 0a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"></path></svg></button> <button title="List view"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 10h16M4 14h16M4 18h16"></path></svg></button></div> <button class="flex items-center gap-1.5 px-3 py-1.5 text-sm gradient-bg border border-border-glow rounded-lg text-text-primary hover:brightness-110 transition-all"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path></svg> Add Node</button> <button class="flex items-center gap-1.5 px-3 py-1.5 text-sm bg-bg-tertiary border border-border-default rounded-lg text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 transition-all disabled:opacity-40 disabled:cursor-not-allowed"><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> </button></div></div> <!></div> <!> <!> <div class="flex-1 overflow-y-auto p-4 md:p-6"><!></div></div>');function Ka(Kt,Xt){Gr(Xt,!0);const st=qr(),D=Xr();let Y=y(Qt([])),_e=y(Qt([])),de=y(!1),We=y(null),j=y("grid"),R=y(null),ye=y(""),Qe=y(!1),qe=y(null),Ke=y(null),oe=y("info"),se=y(""),He=y("{}"),it=y(3e4),$e=y(!1),Le=y(null),Pe=y(null),ce=y(""),Re=y(""),lt=y(""),Ee=y(!1),Oe=y(!1),we=y(!1);const Nt={camera:{icon:"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z",color:"text-accent-pink",label:"Camera",description:"Capture photos and video from device cameras"},screen:{icon:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z",color:"text-accent-purple",label:"Screen",description:"Screen capture and recording"},browser:{icon:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9",color:"text-accent-cyan",label:"Browser",description:"Web browser automation and control"},system:{icon:"M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z",color:"text-accent-green",label:"System/Exec",description:"Execute shell commands and system operations"},location:{icon:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z M15 11a3 3 0 11-6 0 3 3 0 016 0z",color:"text-accent-amber",label:"Location",description:"GPS and location services"},canvas:{icon:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z",color:"text-accent-cyan",label:"Canvas",description:"Visual canvas rendering and UI display"}};let Bt=I(()=>{if(!e(ye).trim())return e(Y);const a=e(ye).toLowerCase();return e(Y).filter(o=>{const m=String(o.displayName||o.nodeId||"").toLowerCase(),v=String(o.remoteIp||"").toLowerCase();return m.includes(a)||v.includes(a)})}),Xe=I(()=>{const a=e(Y).length,o=e(Y).filter(d=>!!d.connected).length,m=a-o,v=new Set;for(const d of e(Y)){const _=Array.isArray(d.caps)?d.caps:[];for(const p of _)v.add(String(p))}return{total:a,online:o,offline:m,capabilities:v.size}}),k=I(()=>e(R)?e(Y).find(a=>String(a.nodeId??a.id??"")===e(R))??null:null);async function Ve(){if(!(!P.connected||e(de))){s(de,!0),s(We,null);try{const a=await P.call("node.list",{});s(Y,Array.isArray(a.nodes)?a.nodes:[],!0)}catch(a){s(We,String(a),!0)}finally{s(de,!1)}Ze()}}async function Ze(){if(P.connected)try{const a=await P.call("node.pair.list",{});s(_e,Array.isArray(a.pending)?a.pending:[],!0)}catch{s(_e,[],!0)}}async function Zt(a){s(qe,a,!0);try{await P.call("node.pair.approve",{requestId:a}),D.success("Node Approved","Node has been paired successfully"),Ve()}catch(o){D.error("Approval Failed",String(o))}finally{s(qe,null)}}async function er(a){s(Ke,a,!0);try{await P.call("node.pair.reject",{requestId:a}),D.info("Node Rejected","Pairing request was rejected"),Ze()}catch(o){D.error("Rejection Failed",String(o))}finally{s(Ke,null)}}function tr(a){e(R)===a?s(R,null):(s(R,a,!0),s(oe,"info"),s(se,""),s(He,"{}"),s(Le,null),s(Pe,null),s(ce,""),s(Re,""),s(lt,""),s(we,!1))}function rr(a){if(a.connected)return"online";const o=a.lastSeen??a.lastSeenMs;return typeof o=="number"&&o>0&&Date.now()-o<3e5?"stale":"offline"}function It(a){switch(a){case"online":return"bg-accent-green";case"stale":return"bg-accent-amber";default:return"bg-red-500"}}function ar(a){switch(a){case"online":return"glow-green";case"stale":return"glow-amber";default:return""}}function nr(a){switch(a){case"online":return"border-accent-green/30";case"stale":return"border-accent-amber/30";default:return"border-border-default"}}function or(a){return Array.isArray(a.caps)?a.caps.map(String):[]}function sr(a){return Array.isArray(a.commands)?a.commands.map(String):[]}function zt(a){const o=a.lastSeen??a.lastSeenMs;return typeof o=="number"&&o>0?Zr(o):a.connected?"now":"unknown"}function ir(a){const o=a.connectedAt??a.connectedAtMs;if(typeof o!="number"||o<=0)return"—";const m=Date.now()-o,v=Math.floor(m/1e3),d=Math.floor(v/60),_=Math.floor(d/60),p=Math.floor(_/24);return p>0?`${p}d ${_%24}h`:_>0?`${_}h ${d%60}m`:d>0?`${d}m ${v%60}s`:`${v}s`}function lr(a){return typeof a!="number"||a<=0?"—":new Date(a).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}async function dr(){if(!(!e(R)||!e(se).trim()||e($e))){s($e,!0),s(Le,null),s(Pe,null);try{let a={};e(He).trim()&&(a=JSON.parse(e(He)));const o=await P.call("node.invoke",{nodeId:e(R),command:e(se).trim(),params:a,timeoutMs:e(it)});s(Le,JSON.stringify(o,null,2),!0),D.success("Command executed",`${e(se)} completed successfully`)}catch(a){s(Pe,String(a),!0),D.error("Invoke failed",String(a))}finally{s($e,!1)}}}async function dt(){if(e(R)){s(Ee,!0);try{const a=await P.call("exec.approvals.node.get",{nodeId:e(R)});s(Re,a.file??"",!0),s(ce,a.content??"",!0),s(lt,a.baseHash??"",!0),s(we,!1)}catch(a){D.error("Failed to load allowlist",String(a)),s(ce,"")}finally{s(Ee,!1)}}}async function cr(){if(!(!e(R)||e(Oe))){s(Oe,!0);try{await P.call("exec.approvals.node.set",{nodeId:e(R),file:e(Re),content:e(ce),baseHash:e(lt)}),await dt(),D.success("Allowlist saved","Node exec allowlist updated")}catch(a){D.error("Save failed",String(a))}finally{s(Oe,!1)}}}function ct(a){s(oe,a,!0),a==="allowlist"&&!e(ce)&&!e(Ee)&&dt()}jt(()=>{st.state.status==="connected"&&Jr(()=>Ve())}),jt(()=>P.on("system-presence",()=>{P.connected&&Ve()})),jt(()=>{const a=P.on("node.pair.requested",()=>{Ze(),D.info("New Node","A node is requesting to pair")}),o=P.on("node.pair.resolved",()=>{Ze(),Ve()});return()=>{a(),o()}});var vt=Da();Kr("1urd2h6",a=>{Wr(()=>{Qr.title="Node Fleet — Cortex"})});var pt=r(vt),ut=r(pt),Ht=n(r(ut),2),xt=r(Ht),$t=n(r(xt),2);At($t),t(xt);var mt=n(xt,2),bt=r(mt),Lt=n(bt,2);t(mt);var Pt=n(mt,2),et=n(Pt,2),Rt=r(et),vr=n(Rt);t(et),t(Ht),t(ut);var pr=n(ut,2);{var ur=a=>{var o=ea(),m=r(o),v=n(r(m),4),d=r(v,!0);t(v),t(m);var _=n(m,2),p=n(r(_),4),z=r(p,!0);t(p),t(_);var N=n(_,2),S=n(r(N),4),ie=r(S,!0);t(S),t(N);var F=n(N,2),E=n(r(F),4),W=r(E,!0);t(E),t(F),t(o),x(()=>{c(d,e(Xe).total),c(z,e(Xe).online),c(ie,e(Xe).offline),c(W,e(Xe).capabilities)}),i(a,o)};h(pr,a=>{e(Y).length>0&&a(ur)})}t(pt);var Et=n(pt,2);{var xr=a=>{var o=ta(),m=r(o),v=r(m),d=n(r(v),8),_=n(r(d));_.nodeValue="openclaw node install --host YOUR_GATEWAY_HOST --port 18789",t(d),Be(2),t(v);var p=n(v,2);t(m),t(o),A("click",p,()=>s(Qe,!1)),i(a,o)};h(Et,a=>{e(Qe)&&a(xr)})}var Ot=n(Et,2);{var mr=a=>{var o=na(),m=r(o),v=r(m),d=n(r(v),2),_=r(d);t(d),t(v);var p=n(v,2);he(p,21,()=>e(_e),Ie,(z,N)=>{const S=I(()=>String(e(N).requestId??e(N).id??"")),ie=I(()=>String(e(N).displayName??e(N).nodeId??"Unknown")),F=I(()=>String(e(N).ip??e(N).address??""));var E=aa(),W=r(E),ve=n(r(W),2),pe=r(ve),tt=r(pe,!0);t(pe);var gt=n(pe,2);{var ft=ue=>{var Te=ra(),Ce=r(Te,!0);t(Te),x(()=>c(Ce,e(F))),i(ue,Te)};h(gt,ue=>{e(F)&&ue(ft)})}t(ve),t(W);var ke=n(W,2),U=r(ke),ht=r(U,!0);t(U);var Me=n(U,2),_t=r(Me,!0);t(Me),t(ke),t(E),x(()=>{c(tt,e(ie)),U.disabled=e(qe)===e(S),c(ht,e(qe)===e(S)?"Approving…":"✓ Approve"),Me.disabled=e(Ke)===e(S),c(_t,e(Ke)===e(S)?"Rejecting…":"✗ Reject")}),A("click",U,()=>Zt(e(S))),A("click",Me,()=>er(e(S))),i(z,E)}),t(p),t(m),t(o),x(()=>c(_,`${e(_e).length??""} Pending Pairing Request${e(_e).length>1?"s":""}`)),i(a,o)};h(Ot,a=>{e(_e).length>0&&a(mr)})}var Vt=n(Ot,2),br=r(Vt);{var gr=a=>{var o=oa();i(a,o)},fr=a=>{var o=sa(),m=r(o),v=n(r(m),2),d=r(v,!0);t(v),t(m),t(o),x(()=>c(d,e(We))),i(a,o)},hr=a=>{var o=la();he(o,20,()=>Array(3),Ie,(m,v)=>{var d=ia();i(m,d)}),t(o),x(()=>f(o,1,e(j)==="grid"?"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4":"flex flex-col gap-3")),i(a,o)},_r=a=>{var o=va(),m=n(r(o),2);{var v=p=>{var z=da(),N=n(r(z)),S=r(N,!0);t(N),Be(),t(z),x(()=>c(S,e(ye))),i(p,z)},d=I(()=>e(ye).trim()),_=p=>{var z=ca();i(p,z)};h(m,p=>{e(d)?p(v):p(_,!1)})}t(o),i(a,o)},yr=a=>{var o=Ta(),m=r(o);he(m,21,()=>e(Bt),v=>String(v.nodeId??v.id??Math.random()),(v,d)=>{const _=I(()=>String(e(d).nodeId??e(d).id??"")),p=I(()=>rr(e(d))),z=I(()=>e(R)===e(_)),N=I(()=>typeof e(d).displayName=="string"&&e(d).displayName.trim()||e(_)),S=I(()=>or(e(d))),ie=I(()=>sr(e(d)));var F=Va(),E=r(F),W=r(E),ve=r(W),pe=r(ve),tt=r(pe),gt=n(tt,2);{var ft=b=>{var g=pa();x(M=>f(g,1,`absolute inset-0 w-3 h-3 rounded-full ${M??""} animate-ping opacity-30`),[()=>It(e(p))]),i(b,g)};h(gt,b=>{e(p)==="online"&&b(ft)})}t(pe);var ke=n(pe,2),U=r(ke),ht=r(U,!0);t(U);var Me=n(U,2);{var _t=b=>{var g=ua(),M=r(g,!0);t(g),x(G=>c(M,G),[()=>e(_).length>16?e(_).slice(0,16)+"…":e(_)]),i(b,g)};h(Me,b=>{e(j)==="grid"&&b(_t)})}t(ke);var ue=n(ke,2),Te=r(ue,!0);t(ue),t(ve);var Ce=n(ve,2),rt=r(Ce),Tt=r(rt);{var wr=b=>{var g=xa(),M=n(r(g));t(g),x(()=>c(M,` ${e(d).remoteIp??""}`)),i(b,g)};h(Tt,b=>{typeof e(d).remoteIp=="string"&&b(wr)})}var yt=n(Tt,2),kr=n(r(yt));t(yt);var Mr=n(yt,2);{var Cr=b=>{var g=ma(),M=r(g);t(g),x(()=>c(M,`v${e(d).version??""}`)),i(b,g)};h(Mr,b=>{typeof e(d).version=="string"&&b(Cr)})}t(rt);var Dt=n(rt,2),Ft=r(Dt);he(Ft,17,()=>e(S).slice(0,e(j)==="list"?6:8),Ie,(b,g)=>{const M=I(()=>Nt[e(g)]);var G=ga(),Se=r(G);{var at=De=>{var Fe=ba(),kt=r(Fe);t(Fe),x(()=>Je(kt,"d",e(M).icon)),i(De,Fe)};h(Se,De=>{e(M)&&De(at)})}var nt=n(Se);t(G),x(()=>{f(G,1,`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium
|
|
7
|
+
bg-bg-tertiary border border-border-default ${e(M)?.color??"text-text-secondary"??""}
|
|
8
|
+
hover:border-accent-cyan/30 transition-colors`),c(nt,` ${e(g)??""}`)}),i(b,G)});var Sr=n(Ft,2);{var jr=b=>{var g=fa(),M=r(g);t(g),x(()=>c(M,`+${e(S).length-(e(j)==="list"?6:8)}`)),i(b,g)};h(Sr,b=>{e(S).length>(e(j)==="list"?6:8)&&b(jr)})}t(Dt),t(Ce);var wt=n(Ce,2),Ar=r(wt);t(wt),t(W),t(E);var Nr=n(E,2);{var Br=b=>{var g=Oa(),M=r(g),G=r(M),Se=n(G,2),at=n(Se,2);t(M);var nt=n(M,2),De=r(nt);{var Fe=Q=>{var O=Sa(),V=r(O),q=n(r(V),2),H=r(q),je=n(r(H),2),K=r(je,!0);t(je),t(H);var X=n(H,2),Z=n(r(X),2),xe=r(Z,!0);t(Z),t(X);var ee=n(X,2),te=n(r(ee),2),re=r(te,!0);t(te),t(ee);var me=n(ee,2),Ae=n(r(me),2),w=r(Ae,!0);t(Ae),t(me);var B=n(me,2),be=n(r(B),2),Mt=r(be,!0);t(be),t(B);var u=n(B,2),C=n(r(u),2),ae=r(C,!0);t(C),t(u);var J=n(u,2),le=n(r(J),2),Ct=r(le,!0);t(le);var zr=n(le,2);{var Hr=$=>{var L=ha(),ne=r(L,!0);t(L),x(ge=>c(ne,ge),[()=>lr(e(k).lastSeen??e(k).lastSeenMs)]),i($,L)};h(zr,$=>{typeof(e(k).lastSeen??e(k).lastSeenMs)=="number"&&$(Hr)})}t(J);var Ut=n(J,2),Gt=n(r(Ut),2),$r=r(Gt,!0);t(Gt),t(Ut),t(q),t(V);var Jt=n(V,2);{var Lr=$=>{var L=ka(),ne=n(r(L),2);he(ne,21,()=>e(S),Ie,(ge,fe)=>{const T=I(()=>Nt[e(fe)]);var Ue=wa(),ot=r(Ue),Er=r(ot);{var Or=Ne=>{var Ge=_a(),Fr=r(Ge);t(Ge),x(()=>Je(Fr,"d",e(T).icon)),i(Ne,Ge)},Vr=Ne=>{var Ge=ya();i(Ne,Ge)};h(Er,Ne=>{e(T)?Ne(Or):Ne(Vr,!1)})}t(ot);var Yt=n(ot,2),St=r(Yt),Tr=r(St,!0);t(St);var Wt=n(St,2),Dr=r(Wt,!0);t(Wt),t(Yt),t(Ue),x(()=>{f(ot,1,`w-8 h-8 rounded-lg bg-bg-tertiary border border-border-default flex items-center justify-center flex-shrink-0 ${e(T)?.color??"text-text-secondary"??""}`),c(Tr,e(T)?.label??e(fe)),c(Dr,e(T)?.description??`Provides ${e(fe)} capability`)}),i(ge,Ue)}),t(ne),t(L),i($,L)};h(Jt,$=>{e(S).length>0&&$(Lr)})}var Pr=n(Jt,2);{var Rr=$=>{var L=Ca(),ne=n(r(L),2);he(ne,21,()=>e(ie),Ie,(ge,fe)=>{var T=Ma(),Ue=r(T,!0);t(T),x(()=>c(Ue,e(fe))),i(ge,T)}),t(ne),t(L),i($,L)};h(Pr,$=>{e(ie).length>0&&$(Rr)})}t(O),x(($,L,ne,ge,fe,T)=>{c(K,e(_)),c(xe,typeof e(k).remoteIp=="string"?e(k).remoteIp:"—"),c(re,typeof e(k).version=="string"?"v"+e(k).version:"—"),c(w,typeof e(k).platform=="string"?e(k).platform:typeof e(k).os=="string"?e(k).os:"—"),f(be,1,`text-xs ${$??""}`),c(Mt,L),f(C,1,`text-xs ${ne??""}`),c(ae,ge),c(Ct,fe),c($r,T)},[()=>e(k).paired?"text-accent-green":"text-red-400",()=>e(k).paired?"✓ Yes":"✗ No",()=>e(k).connected?"text-accent-green":"text-red-400",()=>e(k).connected?"✓ Online":"✗ Offline",()=>zt(e(k)),()=>ir(e(k))]),i(Q,O)},kt=Q=>{var O=Ha(),V=n(r(O),2),q=r(V),H=n(r(q),2);At(H);var je=n(H,2);{var K=u=>{var C=Aa();he(C,21,()=>e(ie),Ie,(ae,J)=>{var le=ja(),Ct=r(le,!0);t(le),x(()=>c(Ct,e(J))),A("click",le,()=>s(se,e(J),!0)),i(ae,le)}),t(C),i(u,C)};h(je,u=>{e(ie).length>0&&u(K)})}t(q);var X=n(q,2),Z=n(r(X),2);qt(Z),Je(Z,"rows",4),Je(Z,"placeholder",'{"key": "value"}'),t(X);var xe=n(X,2),ee=n(r(xe),2);At(ee),t(xe);var te=n(xe,2),re=r(te);{var me=u=>{var C=Na();Be(),i(u,C)},Ae=u=>{var C=Ba();Be(),i(u,C)};h(re,u=>{e($e)?u(me):u(Ae,!1)})}t(te),t(V);var w=n(V,2);{var B=u=>{var C=Ia(),ae=n(r(C),2),J=r(ae,!0);t(ae),t(C),x(()=>c(J,e(Le))),i(u,C)};h(w,u=>{e(Le)!==null&&u(B)})}var be=n(w,2);{var Mt=u=>{var C=za(),ae=n(r(C),2),J=r(ae,!0);t(ae),t(C),x(()=>c(J,e(Pe))),i(u,C)};h(be,u=>{e(Pe)!==null&&u(Mt)})}t(O),x(u=>te.disabled=u,[()=>e($e)||!e(se).trim()]),Ye(H,()=>e(se),u=>s(se,u)),Ye(Z,()=>e(He),u=>s(He,u)),Ye(ee,()=>e(it),u=>s(it,u)),A("click",te,dr),i(Q,O)},Ir=Q=>{var O=Ea(),V=r(O),q=n(r(V),2),H=r(q),je=r(H);Be(),t(H);var K=n(H,2),X=r(K);{var Z=w=>{var B=$a();i(w,B)},xe=w=>{var B=La();i(w,B)};h(X,w=>{e(Oe)?w(Z):w(xe,!1)})}Be(),t(K),t(q),t(V);var ee=n(V,2);{var te=w=>{var B=Pa(),be=r(B);t(B),x(()=>c(be,`📁 ${e(Re)??""}`)),i(w,B)};h(ee,w=>{e(Re)&&w(te)})}var re=n(ee,2);qt(re),Je(re,"rows",12);var me=n(re,2);{var Ae=w=>{var B=Ra();i(w,B)};h(me,w=>{e(we)&&w(Ae)})}t(O),x(()=>{H.disabled=e(Ee),f(je,0,`w-3.5 h-3.5 ${e(Ee)?"animate-spin":""}`),K.disabled=e(Oe)||!e(we),f(K,1,`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg transition-all
|
|
9
|
+
${e(we)?"bg-accent-green/20 text-accent-green border border-accent-green/30 hover:bg-accent-green/30":"bg-bg-tertiary text-text-muted border border-border-default opacity-50 cursor-not-allowed"}`)}),A("click",H,dt),A("click",K,cr),A("input",re,()=>s(we,!0)),Ye(re,()=>e(ce),w=>s(ce,w)),i(Q,O)};h(De,Q=>{e(oe)==="info"?Q(Fe):e(oe)==="invoke"?Q(kt,1):e(oe)==="allowlist"&&Q(Ir,2)})}t(nt),t(g),x(()=>{f(G,1,`px-4 py-2.5 text-sm font-medium transition-all border-b-2
|
|
10
|
+
${e(oe)==="info"?"text-accent-cyan border-accent-cyan":"text-text-muted border-transparent hover:text-text-primary hover:border-accent-cyan/30"}`),f(Se,1,`px-4 py-2.5 text-sm font-medium transition-all border-b-2
|
|
11
|
+
${e(oe)==="invoke"?"text-accent-purple border-accent-purple":"text-text-muted border-transparent hover:text-text-primary hover:border-accent-purple/30"}`),f(at,1,`px-4 py-2.5 text-sm font-medium transition-all border-b-2
|
|
12
|
+
${e(oe)==="allowlist"?"text-accent-green border-accent-green":"text-text-muted border-transparent hover:text-text-primary hover:border-accent-green/30"}`)}),A("click",G,()=>ct("info")),A("click",Se,()=>ct("invoke")),A("click",at,()=>ct("allowlist")),i(b,g)};h(Nr,b=>{e(z)&&e(k)&&b(Br)})}t(F),x((b,g,M)=>{f(F,1,e(z)&&e(j)==="grid"?"col-span-full":""),f(E,1,`w-full text-left glass rounded-xl border transition-all duration-300 cursor-pointer
|
|
13
|
+
${b??""}
|
|
14
|
+
hover:bg-bg-hover/50 animate-fade-in`),f(W,1,`p-4 ${e(j)==="list"?"flex items-center gap-4":""}`),f(ve,1,`flex items-center gap-3 ${e(j)==="list"?"min-w-[200px]":"mb-3"}`),f(tt,1,`block w-3 h-3 rounded-full ${g??""} ${e(p)==="online"?"glow-pulse":""}`),f(U,1,`text-sm font-semibold text-text-primary truncate ${e(p)==="online"?"glow-text-cyan":""}`),c(ht,e(N)),f(ue,1,`ml-auto text-[10px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded-full
|
|
15
|
+
${e(p)==="online"?"bg-accent-green/15 text-accent-green border border-accent-green/20":e(p)==="stale"?"bg-accent-amber/15 text-accent-amber border border-accent-amber/20":"bg-red-500/10 text-red-400 border border-red-500/20"}`),c(Te,e(p)),f(Ce,1,e(j)==="list"?"flex items-center gap-6 flex-1":""),f(rt,1,e(j)==="list"?"flex items-center gap-4 text-xs text-text-muted min-w-[200px]":"flex items-center gap-3 text-xs text-text-muted mb-3"),c(kr,` ${M??""}`),f(wt,1,e(j)==="list"?"ml-2":"mt-3 flex justify-center"),f(Ar,0,`w-4 h-4 text-text-muted transition-transform duration-200 ${e(z)?"rotate-180":""}`)},[()=>e(z)?"border-accent-cyan/40 "+ar(e(p)):nr(e(p))+" hover:border-accent-cyan/20",()=>It(e(p)),()=>zt(e(d))]),A("click",E,()=>tr(e(_))),i(v,F)}),t(m),t(o),x(()=>f(m,1,e(j)==="grid"?"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4":"flex flex-col gap-3")),i(a,o)};h(br,a=>{st.state.status!=="connected"?a(gr):e(We)?a(fr,1):e(de)&&e(Y).length===0?a(hr,2):e(Bt).length===0?a(_r,3):a(yr,!1)})}t(Vt),t(vt),x(()=>{f(bt,1,`p-1.5 rounded-md transition-all ${e(j)==="grid"?"bg-bg-hover text-accent-cyan":"text-text-muted hover:text-text-primary"}`),f(Lt,1,`p-1.5 rounded-md transition-all ${e(j)==="list"?"bg-bg-hover text-accent-cyan":"text-text-muted hover:text-text-primary"}`),et.disabled=e(de)||st.state.status!=="connected",f(Rt,0,`w-4 h-4 ${e(de)?"animate-spin":""}`),c(vr,` ${e(de)?"Loading…":"Refresh"}`)}),Ye($t,()=>e(ye),a=>s(ye,a)),A("click",bt,()=>s(j,"grid")),A("click",Lt,()=>s(j,"list")),A("click",Pt,()=>s(Qe,!e(Qe))),A("click",et,Ve),i(Kt,vt),Yr()}Ur(["click","input"]);export{Ka as component};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{d as ke,a as Me,b as i,f as x,s as v,c as $e,t as oe}from"../chunks/B2A7gHtL.js";import{p as Ce,d as w,g as e,u as je,b as Ae,t as k,c as Se,s as D,e as De,f as o,h as a,$ as Ve,n as z,r as t,i as V,l as Ie}from"../chunks/qR_TM3YX.js";import{i as M}from"../chunks/DpBBTLWw.js";import{g as Be,a as L,e as T,i as J,s as W,b as Oe}from"../chunks/D6tSezzf.js";import{h as Re}from"../chunks/CXQ1lKJR.js";import{g as ze}from"../chunks/CIznanO1.js";import"../chunks/Be_uRYmX.js";var Le=$e('<svg class="w-4 h-4 animate-spin inline mr-1" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg>'),Ne=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-pulse"><div class="h-3 w-16 bg-bg-tertiary rounded mb-3"></div> <div class="h-7 w-24 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-32 bg-bg-tertiary rounded"></div></div>'),Fe=x('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"></div>'),Ge=x('<div class="text-xs text-text-muted mt-1"> </div>'),He=x('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"><div><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Status</div> <div> </div> <!></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Uptime</div> <div class="text-2xl font-bold text-accent-cyan"> </div> <div class="text-xs text-text-muted mt-1"> </div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Sessions</div> <div class="text-2xl font-bold text-accent-purple"> </div> <div class="text-xs text-text-muted mt-1"><!></div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Models</div> <div class="text-2xl font-bold text-accent-amber"> </div> <div class="text-xs text-text-muted mt-1">Available providers</div></div></div>'),Ke=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-pulse"><div class="flex items-center justify-between mb-3"><div class="h-3 w-20 bg-bg-tertiary rounded"></div> <div class="h-5 w-8 bg-bg-tertiary rounded"></div></div> <div class="h-3 w-40 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-20 bg-bg-tertiary rounded"></div></div>'),Pe=x('<div class="grid grid-cols-1 md:grid-cols-3 gap-4"></div>'),Ue=x("<span> </span>"),qe=x('<span class="text-xs text-text-muted">n/a</span>'),Ee=x('<p class="text-xs text-text-muted font-mono"> </p>'),Qe=x('<div class="grid grid-cols-1 md:grid-cols-3 gap-4"><div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-3"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Instances</div> <span class="text-lg font-bold text-accent-cyan"> </span></div> <p class="text-xs text-text-muted">Presence beacons from connected clients and nodes.</p> <a href="/instances" class="inline-block mt-2 text-xs text-accent-cyan hover:underline">View all →</a></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-3"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Cron</div> <!></div> <p class="text-xs text-text-muted"> </p> <a href="/cron" class="inline-block mt-2 text-xs text-accent-cyan hover:underline">Manage jobs →</a></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-3"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Auth</div> <span class="px-2 py-0.5 rounded text-xs font-medium bg-accent-purple/20 text-accent-purple"> </span></div> <!> <a href="/settings" class="inline-block mt-2 text-xs text-accent-cyan hover:underline">Configure →</a></div></div>'),Te=x('<div><div class="text-xs text-text-muted"> </div> <div class="text-sm text-text-secondary font-mono truncate"> </div></div>'),Je=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h2 class="text-sm font-semibold text-text-primary mb-3">Gateway Snapshot</h2> <div class="grid grid-cols-2 md:grid-cols-4 gap-4"></div></div>'),We=x(`<div class="h-full overflow-y-auto"><div class="max-w-6xl mx-auto p-4 md:p-6 space-y-6"><div class="flex items-center justify-between flex-wrap gap-3"><div><h1 class="text-2xl font-bold text-text-primary">Overview</h1> <p class="text-sm text-text-muted mt-1">Gateway status, entry points, and a fast health read.</p></div> <button class="px-3 py-2 rounded-lg text-sm border border-border-default hover:border-accent-cyan
|
|
2
|
+
text-text-secondary hover:text-accent-cyan transition-all
|
|
3
|
+
disabled:opacity-50 disabled:cursor-not-allowed"><!> Refresh</button></div> <!> <!> <!> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h2 class="text-sm font-semibold text-text-primary mb-3">Quick Actions</h2> <div class="grid grid-cols-2 md:grid-cols-4 gap-3"><a href="/" class="flex items-center gap-2 p-3 rounded-lg border border-border-default hover:border-accent-cyan
|
|
4
|
+
text-text-secondary hover:text-accent-cyan transition-all text-sm"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"></path></svg> Open Chat</a> <a href="/nodes" class="flex items-center gap-2 p-3 rounded-lg border border-border-default hover:border-accent-cyan
|
|
5
|
+
text-text-secondary hover:text-accent-cyan transition-all text-sm"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg> Node Fleet</a> <a href="/debug" class="flex items-center gap-2 p-3 rounded-lg border border-border-default hover:border-accent-cyan
|
|
6
|
+
text-text-secondary hover:text-accent-cyan transition-all text-sm"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path></svg> Debug</a> <a href="/logs" class="flex items-center gap-2 p-3 rounded-lg border border-border-default hover:border-accent-cyan
|
|
7
|
+
text-text-secondary hover:text-accent-cyan transition-all text-sm"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7"></path></svg> View Logs</a></div></div></div></div>`);function st(ne,ie){Ce(ie,!0);const g=Be(),H=ze();let m=D(null),X=D(0),I=D(null),B=D(null),le=D(null),Y=D(0),$=D(!1);L.on("hello",r=>{w(m,r,!0),w(X,Array.isArray(e(m)?.snapshot?.presence)?e(m).snapshot.presence.length:0,!0)}),je(()=>{g.state.status==="connected"&&Ae(()=>Z())});async function Z(){if(!(!L.connected||e($))){w($,!0);try{const[r,s,d,n]=await Promise.all([L.call("status",{}).catch(()=>null),L.call("health",{}).catch(()=>null),L.call("models.list",{}).catch(()=>null),L.call("cron.status",{}).catch(()=>null)]);w(B,r,!0),w(le,s,!0),w(Y,Array.isArray(d?.models)?d.models.length:0,!0),n&&w(I,{enabled:n.enabled??!1,nextRun:n.nextRunMs??null},!0)}catch(r){console.error("Failed to load overview:",r)}finally{w($,!1)}}}function ce(r){if(!r)return"n/a";const s=Math.floor(r/1e3);if(s<60)return`${s}s`;const d=Math.floor(s/60);if(d<60)return`${d}m ${s%60}s`;const n=Math.floor(d/60);return n<24?`${n}h ${d%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function ve(r){if(r==null)return"n/a";const s=Date.now(),d=r-s;return d<0?"overdue":d<6e4?`in ${Math.floor(d/1e3)}s`:d<36e5?`in ${Math.floor(d/6e4)}m`:`in ${Math.floor(d/36e5)}h`}let ue=V(()=>e(m)?.snapshot?.uptimeMs),ee=V(()=>e(m)?.policy?.tickIntervalMs),te=V(()=>e(m)?.server?.version??g.state.serverVersion),xe=V(()=>e(m)?.protocol??g.state.protocol),be=V(()=>e(m)?.snapshot?.authMode??"unknown"),re=V(()=>e(m)?.server?.connId??g.state.connId);var K=We();Re("14qseeg",r=>{De(()=>{Ve.title="Overview — Cortex"})});var ae=a(K),P=a(ae),G=o(a(P),2),pe=a(G);{var me=r=>{var s=Le();i(r,s)};M(pe,r=>{e($)&&r(me)})}z(),t(G),t(P);var se=o(P,2);{var fe=r=>{var s=Fe();T(s,20,()=>Array(4),J,(d,n)=>{var b=Ne();i(d,b)}),t(s),i(r,s)},ge=r=>{var s=He(),d=a(s),n=o(a(d),2),b=a(n,!0);t(n);var O=o(n,2);{var C=c=>{var y=Ge(),Q=a(y);t(y),k(()=>v(Q,`v${e(te)??""} · protocol ${e(xe)??"?"??""}`)),i(c,y)};M(O,c=>{e(te)&&c(C)})}t(d);var p=o(d,2),f=o(a(p),2),j=a(f,!0);t(f);var R=o(f,2),h=a(R);t(R),t(p);var A=o(p,2),_=o(a(A),2),S=a(_,!0);t(_);var N=o(_,2),U=a(N);{var q=c=>{var y=oe();k(Q=>v(y,`Main: ${Q??""}`),[()=>H.mainKey.split(":").pop()]),i(c,y)},E=c=>{var y=oe("No main session");i(c,y)};M(U,c=>{H.mainKey?c(q):c(E,!1)})}t(N),t(A);var l=o(A,2),u=o(a(l),2),F=a(u,!0);t(u),z(2),t(l),t(s),k(c=>{W(d,1,`rounded-xl border border-border-default bg-bg-secondary/50 p-4
|
|
8
|
+
${g.state.status==="connected"?"glow-green":""}`),W(n,1,`text-2xl font-bold
|
|
9
|
+
${g.state.status==="connected"?"text-accent-green":"text-red-400"}`),v(b,g.state.status==="connected"?"Connected":"Disconnected"),v(j,c),v(h,`Tick: ${e(ee)?`${e(ee)}ms`:"n/a"}`),v(S,H.list.length),v(F,e(Y))},[()=>ce(e(ue))]),i(r,s)};M(se,r=>{e($)&&!e(B)?r(fe):r(ge,!1)})}var de=o(se,2);{var he=r=>{var s=Pe();T(s,20,()=>Array(3),J,(d,n)=>{var b=Ke();i(d,b)}),t(s),i(r,s)},_e=r=>{var s=Qe(),d=a(s),n=a(d),b=o(a(n),2),O=a(b,!0);t(b),t(n),z(4),t(d);var C=o(d,2),p=a(C),f=o(a(p),2);{var j=l=>{var u=Ue(),F=a(u,!0);t(u),k(()=>{W(u,1,`px-2 py-0.5 rounded text-xs font-medium
|
|
10
|
+
${e(I).enabled?"bg-accent-green/20 text-accent-green":"bg-red-500/20 text-red-400"}`),v(F,e(I).enabled?"Enabled":"Disabled")}),i(l,u)},R=l=>{var u=qe();i(l,u)};M(f,l=>{e(I)?l(j):l(R,!1)})}t(p);var h=o(p,2),A=a(h);t(h),z(2),t(C);var _=o(C,2),S=a(_),N=o(a(S),2),U=a(N,!0);t(N),t(S);var q=o(S,2);{var E=l=>{var u=Ee(),F=a(u);t(u),k(c=>v(F,`ID: ${c??""}…`),[()=>e(re).substring(0,16)]),i(l,u)};M(q,l=>{e(re)&&l(E)})}z(2),t(_),t(s),k(l=>{v(O,e(X)),v(A,`Next run: ${l??""}`),v(U,e(be))},[()=>e(I)?ve(e(I).nextRun):"n/a"]),i(r,s)};M(de,r=>{e($)&&!e(B)?r(he):r(_e,!1)})}var ye=o(de,2);{var we=r=>{var s=Je(),d=o(a(s),2);T(d,21,()=>Object.entries(e(B)).filter(([n])=>typeof e(B)[n]!="object"),J,(n,b)=>{var O=V(()=>Ie(e(b),2));let C=()=>e(O)[0],p=()=>e(O)[1];var f=Te(),j=a(f),R=a(j,!0);t(j);var h=o(j,2),A=a(h,!0);t(h),t(f),k((_,S)=>{v(R,C()),Oe(h,"title",_),v(A,S)},[()=>String(p()),()=>String(p())]),i(n,f)}),t(d),t(s),i(r,s)};M(ye,r=>{e(B)&&r(we)})}z(2),t(ae),t(K),k(()=>G.disabled=e($)||g.state.status!=="connected"),Me("click",G,Z),i(ne,K),Se()}ke(["click"]);export{st as component};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import{d as _a,a as k,b as x,s as g,f as b,e as ka,g as Cr}from"../chunks/B2A7gHtL.js";import{p as wa,s as L,a as q,u as Ar,g as e,d as f,b as Ma,t as y,c as Ca,e as Aa,h as a,f as n,i as D,$ as Ta,r,n as O,j as Kt,m as Tr,o as Lr}from"../chunks/qR_TM3YX.js";import{i as w}from"../chunks/DpBBTLWw.js";import{g as La,a as Pt,s as S,r as K,e as ne,i as Qt,b as xe}from"../chunks/D6tSezzf.js";import{h as Sa}from"../chunks/CXQ1lKJR.js";import{s as ja}from"../chunks/rBDgyNy3.js";import{b as $e,a as Be}from"../chunks/nnazh41B.js";import{b as Da,i as Sr,s as jr}from"../chunks/DVP7Iy08.js";import{g as $a}from"../chunks/CIznanO1.js";import{g as Ba}from"../chunks/Be_uRYmX.js";import{g as Fa}from"../chunks/C8SIHLmM.js";var za=b('<div class="mt-4 rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-fade-in"><div class="grid grid-cols-2 md:grid-cols-4 gap-4"><div><label class="block text-xs text-text-muted mb-1">Active Minutes (0=all)</label> <input type="number" min="0" step="1" class="w-full px-3 py-1.5 text-sm rounded-lg border border-border-default bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan transition-all"/></div> <div><label class="block text-xs text-text-muted mb-1">Limit</label> <input type="number" min="1" max="500" step="1" class="w-full px-3 py-1.5 text-sm rounded-lg border border-border-default bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan transition-all"/></div> <div class="flex flex-col justify-end gap-2"><label class="flex items-center gap-2 text-sm text-text-secondary cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-accent-cyan focus:ring-accent-cyan/30"/> Include Global</label> <label class="flex items-center gap-2 text-sm text-text-secondary cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-accent-cyan focus:ring-accent-cyan/30"/> Include Unknown</label></div> <div class="flex items-end"><button class="w-full px-3 py-1.5 text-sm rounded-lg bg-accent-cyan/10 text-accent-cyan border border-accent-cyan/30 hover:bg-accent-cyan/20 transition-all">Apply Filters</button></div></div></div>'),Va=b('<div class="flex rounded-lg border border-border-default overflow-hidden"><button>Grouped</button> <button>All</button></div>'),Ha=b('<div class="flex items-center gap-1"><button class="px-2 py-2 text-xs rounded-lg bg-bg-tertiary border border-border-default text-text-muted hover:text-text-secondary transition-all" title="Expand all"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button> <button class="px-2 py-2 text-xs rounded-lg bg-bg-tertiary border border-border-default text-text-muted hover:text-text-secondary transition-all" title="Collapse all"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></button> <span class="text-[10px] text-text-muted ml-1"> </span></div>'),Ia=b('<div class="flex flex-col items-center justify-center h-full text-center"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-8 h-8 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636a9 9 0 010 12.728m-2.829-2.829a5 5 0 000-7.07"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view sessions.</p></div>'),Na=b('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-5 animate-pulse"><div class="h-4 w-48 bg-bg-tertiary rounded mb-3"></div> <div class="h-3 w-96 bg-bg-tertiary rounded mb-2"></div> <div class="flex gap-2"><div class="h-5 w-16 bg-bg-tertiary rounded-full"></div> <div class="h-5 w-20 bg-bg-tertiary rounded-full"></div> <div class="h-5 w-14 bg-bg-tertiary rounded-full"></div></div></div>'),Ra=b('<div class="flex flex-col gap-3"></div>'),Ua=b('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm"> </p></div>'),Ea=b('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm"> </p></div>'),Oa=b('<button><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></button>'),Ga=b('<div class="w-6 flex-shrink-0 mt-0.5 flex items-center justify-center"><span></span></div>'),qa=b('<form class="flex items-center gap-2"><input type="text" class="px-2 py-1 text-sm rounded border border-accent-cyan/50 bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan w-48"/> <button type="submit" class="text-accent-cyan text-xs hover:underline">Save</button> <button type="button" class="text-text-muted text-xs hover:text-text-secondary">Cancel</button></form>'),Ka=b('<span> </span> <button class="p-0.5 rounded hover:bg-bg-hover text-text-muted hover:text-accent-cyan transition-colors" title="Rename"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg></button>',1),Pa=b('<span class="px-2 py-0.5 rounded text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),Qa=b('<span class="px-2 py-0.5 rounded text-[10px] font-medium bg-accent-purple/10 text-purple-300 border border-accent-purple/10"> </span>'),Wa=b("<span> </span>"),Ja=b('<span class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] bg-accent-purple/10 text-purple-300 border border-accent-purple/10"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg> </span>'),Xa=b('<span class="px-2 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted border border-border-default"> </span>'),Ya=b('<span class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] bg-accent-green/10 text-accent-green border border-accent-green/10"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A2 2 0 013 12V7a4 4 0 014-4z"></path></svg> </span>'),Za=b('<p class="text-xs text-text-muted truncate mb-1.5 max-w-[500px]"> </p>'),en=b('<span class="flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium bg-accent-amber/15 text-accent-amber border border-accent-amber/30"> </span>'),tn=b("<option> </option>"),rn=b(`<select class="px-2 py-1 rounded-lg text-[11px] border border-border-default bg-bg-tertiary
|
|
2
|
+
text-text-secondary hover:border-accent-purple/40 focus:outline-none focus:border-accent-purple
|
|
3
|
+
transition-all disabled:opacity-50 max-w-[200px] cursor-pointer appearance-none
|
|
4
|
+
bg-[url('data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2388929e%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M6%209l6%206%206-6%22%2F%3E%3C%2Fsvg%3E')]
|
|
5
|
+
bg-[length:12px] bg-[right_6px_center] bg-no-repeat pr-6" title="Override model for this session"><option>🤖 Model: default</option><!></select>`),an=b('<div class="px-4 pb-4"><div class="pt-3 border-t border-border-default flex items-center gap-3 flex-wrap"><span class="text-xs text-red-400">Delete this session permanently?</span> <label class="flex items-center gap-1.5 text-xs text-text-muted cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-red-400"/> Also delete transcript</label> <button class="px-3 py-1 rounded text-xs bg-red-500/20 text-red-400 border border-red-500/30 hover:bg-red-500/30 transition-colors">Confirm Delete</button> <button class="px-3 py-1 rounded text-xs bg-bg-tertiary text-text-muted border border-border-default hover:text-text-secondary transition-colors">Cancel</button></div></div>'),nn=b("<div></div>"),on=b(`<div class="animate-fade-in"><div><div class="p-4"><div class="flex items-start gap-3"><!> <div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1.5 flex-wrap"><!> <span> </span> <!> <!> <!></div> <div class="flex items-center gap-2 mb-1.5 flex-wrap"><!> <!> <!></div> <!> <div class="flex items-center gap-3 text-xs text-text-muted"><span class="flex items-center gap-1"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </span> <span class="font-mono text-text-muted/40 text-[10px] truncate max-w-[250px]"> </span></div></div> <div class="flex flex-col items-end gap-2 flex-shrink-0"><div class="flex items-center gap-1"><button><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path></svg> </button> <button><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg> </button> <!></div> <!> <div class="flex items-center gap-1"><button class="px-3 py-1.5 rounded-lg text-xs border border-accent-cyan/30 text-accent-cyan
|
|
6
|
+
hover:bg-accent-cyan/10 transition-colors" title="Open in chat">Chat</button> <button class="p-1.5 rounded-lg hover:bg-bg-hover text-text-muted hover:text-red-400 transition-colors" title="Delete session"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path></svg></button></div></div></div></div> <!></div> <!></div>`),sn=b('<div class="flex flex-col gap-3"></div>'),ln=b('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm"> </p></div>'),cn=b('<form class="flex items-center gap-2"><input type="text" class="px-2 py-1 text-sm rounded border border-accent-cyan/50 bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan w-48"/> <button type="submit" class="text-accent-cyan text-xs hover:underline">Save</button> <button type="button" class="text-text-muted text-xs hover:text-text-secondary">Cancel</button></form>'),dn=b('<span class="font-medium text-text-primary truncate max-w-[300px]"> </span> <button class="p-0.5 rounded hover:bg-bg-hover text-text-muted hover:text-accent-cyan transition-colors" title="Rename"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg></button>',1),vn=b('<span class="px-2 py-0.5 rounded text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),un=b('<span class="px-2 py-0.5 rounded text-[10px] font-medium bg-accent-purple/10 text-purple-300 border border-accent-purple/10"> </span>'),pn=b('<button class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] font-medium bg-accent-amber/10 text-accent-amber border border-accent-amber/20 hover:bg-accent-amber/20 transition-colors"><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg> </button>'),xn=b('<span class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] bg-accent-purple/10 text-purple-300 border border-accent-purple/10"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg> </span>'),bn=b('<span class="px-2 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted border border-border-default"> </span>'),gn=b('<span class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] bg-accent-green/10 text-accent-green border border-accent-green/10"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A2 2 0 013 12V7a4 4 0 014-4z"></path></svg> </span>'),fn=b('<p class="text-xs text-text-muted truncate mb-1.5 max-w-[500px]"> </p>'),mn=b('<span class="flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium bg-accent-amber/15 text-accent-amber border border-accent-amber/30"> </span>'),hn=b("<option> </option>"),yn=b(`<select class="px-2 py-1 rounded-lg text-[11px] border border-border-default bg-bg-tertiary
|
|
7
|
+
text-text-secondary hover:border-accent-purple/40 focus:outline-none focus:border-accent-purple
|
|
8
|
+
transition-all disabled:opacity-50 max-w-[200px] cursor-pointer appearance-none
|
|
9
|
+
bg-[url('data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2388929e%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M6%209l6%206%206-6%22%2F%3E%3C%2Fsvg%3E')]
|
|
10
|
+
bg-[length:12px] bg-[right_6px_center] bg-no-repeat pr-6" title="Override model for this session"><option>🤖 Model: default</option><!></select>`),_n=b('<div class="px-4 pb-4"><div class="pt-3 border-t border-border-default flex items-center gap-3 flex-wrap"><span class="text-xs text-red-400">Delete this session permanently?</span> <label class="flex items-center gap-1.5 text-xs text-text-muted cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-red-400"/> Also delete transcript</label> <button class="px-3 py-1 rounded text-xs bg-red-500/20 text-red-400 border border-red-500/30 hover:bg-red-500/30 transition-colors">Confirm Delete</button> <button class="px-3 py-1 rounded text-xs bg-bg-tertiary text-text-muted border border-border-default hover:text-text-secondary transition-colors">Cancel</button></div></div>'),kn=b('<p class="text-xs text-text-muted truncate mb-1 max-w-[400px]"> </p>'),wn=b("<span> </span>"),Mn=b("<span> </span>"),Cn=b('<div class="mt-2 pt-2 border-t border-border-default/50 flex items-center gap-2"><span class="text-[10px] text-red-400">Delete?</span> <label class="flex items-center gap-1 text-[10px] text-text-muted cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-red-400 w-3 h-3"/> + transcript</label> <button class="px-2 py-0.5 rounded text-[10px] bg-red-500/20 text-red-400 hover:bg-red-500/30 transition-colors">Confirm</button> <button class="px-2 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted hover:text-text-secondary transition-colors">Cancel</button></div>'),An=b(`<div class="rounded-lg border border-border-default/50 bg-bg-secondary/30 p-3 ml-4 relative
|
|
11
|
+
before:absolute before:left-[-12px] before:top-1/2 before:w-3 before:h-px before:bg-accent-amber/30"><div class="flex items-start justify-between gap-3"><div class="min-w-0 flex-1"><div class="flex items-center gap-2 mb-1"><span></span> <span class="text-sm font-medium text-text-primary truncate"> </span> <span> </span></div> <!> <div class="flex items-center gap-3 text-[10px] text-text-muted"><!> <!> <span> </span></div></div> <div class="flex items-center gap-1 flex-shrink-0"><button class="px-2 py-1 rounded text-[10px] border border-accent-cyan/20 text-accent-cyan hover:bg-accent-cyan/10 transition-colors">Chat</button> <button class="p-1 rounded hover:bg-bg-hover text-text-muted hover:text-red-400 transition-colors"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path></svg></button></div></div> <!></div>`),Tn=b('<div class="border-t border-border-default bg-bg-primary/30"><div class="px-4 py-2"><div class="text-[10px] uppercase tracking-wider text-text-muted font-semibold mb-2 flex items-center gap-2"><svg class="w-3.5 h-3.5 text-accent-amber" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path></svg> </div> <div class="space-y-2"></div></div></div>'),Ln=b(`<div class="rounded-xl border border-border-default bg-bg-secondary/50 hover:border-accent-cyan/20 transition-all animate-fade-in"><div class="p-4"><div class="flex items-start gap-4"><div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1.5 flex-wrap"><!> <span> </span> <!> <!> <!></div> <div class="flex items-center gap-2 mb-1.5 flex-wrap"><!> <!> <!></div> <!> <div class="flex items-center gap-3 text-xs text-text-muted"><span class="flex items-center gap-1"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </span> <span class="font-mono text-text-muted/40 text-[10px] truncate max-w-[250px]"> </span></div></div> <div class="flex flex-col items-end gap-2 flex-shrink-0"><div class="flex items-center gap-1"><button><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path></svg> </button> <button><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg> </button> <!></div> <!> <div class="flex items-center gap-1"><button class="px-3 py-1.5 rounded-lg text-xs border border-accent-cyan/30 text-accent-cyan
|
|
12
|
+
hover:bg-accent-cyan/10 transition-colors" title="Open in chat">Chat</button> <button class="p-1.5 rounded-lg hover:bg-bg-hover text-text-muted hover:text-red-400 transition-colors" title="Delete session"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path></svg></button></div></div></div></div> <!> <!></div>`),Sn=b('<div class="flex flex-col gap-3"></div>'),jn=b(`<div class="h-full flex flex-col overflow-hidden"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default"><div class="flex items-start justify-between gap-4 flex-wrap"><div class="flex items-center gap-3"><div class="w-10 h-10 rounded-xl gradient-bg border border-border-glow flex items-center justify-center flex-shrink-0"><svg class="w-5 h-5 text-accent-cyan" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path></svg></div> <div><h1 class="text-xl font-bold text-text-primary glow-text-cyan">Sessions</h1> <p class="text-sm text-text-muted">Inspect, control, and manage active sessions</p></div></div> <div class="flex items-center gap-2"><button><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"></path></svg> Filters</button> <button class="flex items-center gap-1.5 px-3 py-1.5 text-sm bg-bg-tertiary border border-border-default rounded-lg text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 transition-all disabled:opacity-40 disabled:cursor-not-allowed"><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> </button></div></div> <div class="grid grid-cols-3 md:grid-cols-5 gap-3 mt-4"><div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-xl font-bold text-text-primary font-mono"> </div> <div class="text-xs text-text-muted">Total</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-xl font-bold text-accent-purple font-mono"> </div> <div class="text-xs text-text-muted">Main</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-xl font-bold text-accent-cyan font-mono"> </div> <div class="text-xs text-text-muted">Isolated</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-xl font-bold text-accent-amber font-mono"> </div> <div class="text-xs text-text-muted">Sub-agents</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-xl font-bold text-accent-green font-mono"> </div> <div class="text-xs text-text-muted">Tokens</div></div></div> <!></div> <div class="flex-shrink-0 px-4 md:px-6 py-3 border-b border-border-default/50"><div class="flex gap-3 items-center flex-wrap"><div class="relative flex-1"><input type="text" placeholder="Search sessions by name, key, channel, model, agent..." class="w-full pl-9 pr-3 py-2 text-sm rounded-lg border border-border-default bg-bg-tertiary
|
|
13
|
+
text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-cyan transition-all"/> <svg class="absolute left-3 top-2.5 w-4 h-4 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></div> <select class="px-3 py-2 text-sm rounded-lg border border-border-default bg-bg-tertiary text-text-secondary"><option>Sort: Activity</option><option>Sort: Name</option><option>Sort: Channel</option><option>Sort: Tokens</option></select> <div class="flex rounded-lg border border-border-default overflow-hidden"><button><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg> List</button> <button><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 4h2v16H3zM9 4h2v8H9zM15 8h2v12h-2zM21 4h2v6h-2z"></path></svg> Tree</button></div> <!></div></div> <div class="flex-1 overflow-y-auto p-4 md:p-6"><!></div></div>`);function En(Dr,$r){wa($r,!0);const it=La(),j=$a(),Fe=Ba();let oe=L(!1),se=L(""),be=L(""),ge=L("activity"),I=L(null),H=L(!1),ze=L(!1),fe=L(null),P=L(""),Ve=L(null),He=L(q(new Set)),ee=L("grouped"),me=L(q([]));L(q(new Set)),L(q(new Map)),L(q(new Set));let Z=L("list"),he=L(q(new Set)),Ie=L(q(j.filters.activeMinutes)),Ne=L(q(j.filters.limit)),Re=L(q(j.filters.includeGlobal)),Ue=L(q(j.filters.includeUnknown));Ar(()=>{const t=e(se),o=setTimeout(()=>{f(be,t,!0)},200);return()=>clearTimeout(o)}),Ar(()=>{it.state.status==="connected"&&Ma(()=>{ye(),Fr()})});async function ye(){f(oe,!0),await j.fetchSessions({activeMinutes:e(Ie),limit:e(Ne),includeGlobal:e(Re),includeUnknown:e(Ue)}),f(oe,!1)}function Br(){j.setFilters({activeMinutes:e(Ie),limit:e(Ne),includeGlobal:e(Re),includeUnknown:e(Ue)}),ye()}async function Fr(){try{const t=await Pt.call("models.list",{});f(me,t?.models??[],!0)}catch{}}async function Wt(t,o){await Ee(t.key,{model:o})}async function ct(t){try{await Pt.call("sessions.delete",{key:t,deleteTranscript:e(H)}),Fe.success("Deleted","Session removed"),f(I,null),f(H,!1),await ye()}catch(o){Fe.error("Failed",String(o))}}async function Ee(t,o){f(Ve,t,!0);try{await Pt.call("sessions.patch",{key:t,...o}),Fe.success("Updated","Session settings saved"),await ye()}catch(i){Fe.error("Failed",String(i))}finally{f(Ve,null)}}function Jt(t){f(fe,t.key,!0),f(P,t.label??j.getSessionTitle(t),!0)}async function Xt(t){e(P).trim()&&await Ee(t,{label:e(P).trim()}),f(fe,null),f(P,"")}function Yt(){f(fe,null),f(P,"")}async function Zt(t){const o=["off","on","stream"],i=t.thinkingLevel??"off",m=o.indexOf(i),h=o[(m+1)%o.length];await Ee(t.key,{thinkingLevel:h})}async function er(t){const i=(t.verboseLevel??"off")==="off"?"on":"off";await Ee(t.key,{verboseLevel:i})}function dt(t){j.setActiveSession(t),Fa("/")}function zr(t){const o=new Set(e(He));o.has(t)?o.delete(t):o.add(t),f(He,o,!0)}function Vr(t){return t.key.includes(":main")?"main":t.key.includes(":subagent:")?"subagent":"isolated"}function vt(t){return t.key.includes(":subagent:")}function Hr(t){if(!vt(t))return null;const o=t.key.indexOf(":subagent:");return o===-1?null:t.key.substring(0,o)+":main"}function Ir(t){const o=t.key.lastIndexOf(":subagent:");return o===-1?t.key:t.key.substring(o+10)}function Nr(t){if(t.status==="error")return"error";if(t.status==="done"||t.status==="completed")return"done";const o=t.lastActivityAt?new Date(t.lastActivityAt).getTime():t.lastActivity?t.lastActivity:0;return o&&Date.now()-o>300*1e3?"done":o?"active":"unknown"}function tr(t){return t.includes(":subagent:")?{type:"subagent",parent:t.split(":subagent:")[0]+":main"}:t.includes(":cron:")&&t.includes(":run:")?{type:"cron-run",parent:t.split(":run:")[0]}:t.includes(":cron:")?{type:"cron",parent:t.split(":cron:")[0]+":main"}:t.endsWith(":main")?{type:"main"}:{type:"channel"}}function Rr(t){switch(t){case"main":return"cyan";case"subagent":return"purple";case"cron":return"amber";case"cron-run":return"amber";case"channel":return"green";default:return"cyan"}}function Ur(t){const o=new Set(e(he));o.has(t)?o.delete(t):o.add(t),f(he,o,!0)}function Er(){f(he,new Set,!0)}function Or(){const t=new Set,o=i=>{for(const m of i)m.children.length>0&&(t.add(m.session.key),o(m.children))};o(e(ke)),f(he,t,!0)}function ut(t){if(!t)return"n/a";const o=typeof t=="string"?new Date(t):new Date(t),i=Date.now()-o.getTime();return i<6e4?"just now":i<36e5?`${Math.floor(i/6e4)}m ago`:i<864e5?`${Math.floor(i/36e5)}h ago`:o.toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Oe(t){return!t&&t!==0?"—":t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:String(t)}let Gr=D(()=>j.list.filter(t=>!vt(t))),qr=D(()=>{const t=new Map;for(const o of j.list)if(vt(o)){const i=Hr(o);i&&(t.has(i)||t.set(i,[]),t.get(i).push(o))}return t}),pt=D(()=>{let t=e(ee)==="grouped"?e(Gr):j.list;if(e(be).trim()){const o=e(be).toLowerCase();t=t.filter(i=>j.getSessionTitle(i).toLowerCase().includes(o)||i.key.toLowerCase().includes(o)||(i.channel?.toLowerCase().includes(o)??!1)||(i.model?.toLowerCase().includes(o)??!1)||(i.agentId?.toLowerCase().includes(o)??!1)||(i.provider?.toLowerCase().includes(o)??!1))}return t=[...t],e(ge)==="name"?t.sort((o,i)=>j.getSessionTitle(o).localeCompare(j.getSessionTitle(i))):e(ge)==="channel"?t.sort((o,i)=>(o.channel??"").localeCompare(i.channel??"")):e(ge)==="tokens"?t.sort((o,i)=>le(i)-le(o)):t.sort((o,i)=>{const m=o.lastActivityAt?new Date(o.lastActivityAt).getTime():o.lastActivity??0;return(i.lastActivityAt?new Date(i.lastActivityAt).getTime():i.lastActivity??0)-m}),t});function le(t){return t.totalTokens??t.tokenCount??0}let _e=D(()=>{const t=j.list,o=t.reduce((i,m)=>i+le(m),0);return{total:t.length,main:t.filter(i=>i.key.includes(":main")&&!i.key.includes(":subagent:")).length,isolated:t.filter(i=>!i.key.includes(":main")&&!i.key.includes(":subagent:")).length,subagent:t.filter(i=>i.key.includes(":subagent:")).length,totalTokens:o}}),ke=D(()=>{const t=j.list,o=new Map,i=[];for(const h of t){const C=tr(h.key);o.set(h.key,{session:h,sessionType:C.type,children:[]})}for(const h of t){const C=tr(h.key),c=o.get(h.key);if(C.parent){const _=o.get(C.parent);if(_){_.children.push(c);continue}}i.push(c)}const m=h=>{h.sort((C,c)=>{const _=C.session.lastActivityAt?new Date(C.session.lastActivityAt).getTime():C.session.lastActivity??0;return(c.session.lastActivityAt?new Date(c.session.lastActivityAt).getTime():c.session.lastActivity??0)-_});for(const C of h)C.children.length>0&&m(C.children)};if(m(i),e(be).trim()){const h=e(be).toLowerCase(),C=c=>{const _=c.session,v=j.getSessionTitle(_).toLowerCase().includes(h)||_.key.toLowerCase().includes(h)||(_.channel?.toLowerCase().includes(h)??!1)||(_.model?.toLowerCase().includes(h)??!1)||(_.agentId?.toLowerCase().includes(h)??!1)||(_.provider?.toLowerCase().includes(h)??!1),G=c.children.some(U=>C(U));return v||G};return i.filter(c=>C(c))}return i}),rr=D(()=>{let t=0;const o=i=>{for(const m of i)t+=m.children.length,o(m.children)};return o(e(ke)),{roots:e(ke).length,nested:t}});var xt=jn();Sa("98wg7q",t=>{Aa(()=>{Ta.title="Sessions — Cortex"})});var bt=a(xt),gt=a(bt),ar=n(a(gt),2),ft=a(ar),Ge=n(ft,2),nr=a(Ge),Kr=n(nr);r(Ge),r(ar),r(gt);var mt=n(gt,2),ht=a(mt),or=a(ht),Pr=a(or,!0);r(or),O(2),r(ht);var yt=n(ht,2),sr=a(yt),Qr=a(sr,!0);r(sr),O(2),r(yt);var _t=n(yt,2),lr=a(_t),Wr=a(lr,!0);r(lr),O(2),r(_t);var kt=n(_t,2),ir=a(kt),Jr=a(ir,!0);r(ir),O(2),r(kt);var cr=n(kt,2),dr=a(cr),Xr=a(dr,!0);r(dr),O(2),r(cr),r(mt);var Yr=n(mt,2);{var Zr=t=>{var o=za(),i=a(o),m=a(i),h=n(a(m),2);K(h),r(m);var C=n(m,2),c=n(a(C),2);K(c),r(C);var _=n(C,2),v=a(_),G=a(v);K(G),O(),r(v);var U=n(v,2),N=a(U);K(N),O(),r(U),r(_);var $=n(_,2),Q=a($);r($),r(i),r(o),$e(h,()=>e(Ie),B=>f(Ie,B)),$e(c,()=>e(Ne),B=>f(Ne,B)),Be(G,()=>e(Re),B=>f(Re,B)),Be(N,()=>e(Ue),B=>f(Ue,B)),k("click",Q,Br),x(t,o)};w(Yr,t=>{e(ze)&&t(Zr)})}r(bt);var wt=n(bt,2),vr=a(wt),Mt=a(vr),ur=a(Mt);K(ur),O(2),r(Mt);var qe=n(Mt,2),Ct=a(qe);Ct.value=Ct.__value="activity";var At=n(Ct);At.value=At.__value="name";var Tt=n(At);Tt.value=Tt.__value="channel";var pr=n(Tt);pr.value=pr.__value="tokens",r(qe);var Lt=n(qe,2),St=a(Lt),xr=n(St,2);r(Lt);var ea=n(Lt,2);{var ta=t=>{var o=Va(),i=a(o),m=n(i,2);r(o),y(()=>{S(i,1,`px-3 py-2 text-xs transition-all ${e(ee)==="grouped"?"bg-accent-cyan/10 text-accent-cyan":"bg-bg-tertiary text-text-muted hover:text-text-secondary"}`),S(m,1,`px-3 py-2 text-xs transition-all ${e(ee)==="all"?"bg-accent-cyan/10 text-accent-cyan":"bg-bg-tertiary text-text-muted hover:text-text-secondary"}`)}),k("click",i,()=>f(ee,"grouped")),k("click",m,()=>f(ee,"all")),x(t,o)},ra=t=>{var o=Ha(),i=a(o),m=n(i,2),h=n(m,2),C=a(h);r(h),r(o),y(()=>g(C,`${e(rr).roots??""} roots · ${e(rr).nested??""} nested`)),k("click",i,Er),k("click",m,Or),x(t,o)};w(ea,t=>{e(Z)==="list"?t(ta):t(ra,!1)})}r(vr),r(wt);var br=n(wt,2),aa=a(br);{var na=t=>{var o=Ia();x(t,o)},oa=t=>{var o=Ra();ne(o,20,()=>Array(4),Qt,(i,m)=>{var h=Na();x(i,h)}),r(o),x(t,o)},sa=t=>{var o=Ua(),i=a(o),m=a(i,!0);r(i),r(o),y(()=>g(m,e(se)?"No sessions match your search.":"No sessions found.")),x(t,o)},la=t=>{var o=Ea(),i=a(o),m=a(i,!0);r(i),r(o),y(()=>g(m,e(se)?"No sessions match your search.":"No sessions found.")),x(t,o)},ia=t=>{const o=(m,h=Tr,C=Tr)=>{const c=D(()=>h().session),_=D(()=>h().sessionType),v=D(()=>le(e(c))),G=D(()=>e(Ve)===e(c).key),U=D(()=>!e(he).has(e(c).key)),N=D(()=>h().children.length>0),$=D(()=>Rr(e(_)));var Q=on(),B=a(Q),te=a(B),we=a(te),ie=a(we);{var Me=s=>{var l=Oa(),u=a(l);r(l),y(()=>{S(l,1,`mt-0.5 p-1 rounded-lg hover:bg-bg-hover transition-all flex-shrink-0
|
|
14
|
+
${e($)==="cyan"?"text-accent-cyan hover:bg-accent-cyan/10":e($)==="purple"?"text-accent-purple hover:bg-accent-purple/10":e($)==="amber"?"text-accent-amber hover:bg-accent-amber/10":"text-accent-green hover:bg-accent-green/10"}`),S(u,0,`w-4 h-4 transition-transform duration-200 ${e(U)?"rotate-90":""}`)}),k("click",l,()=>Ur(e(c).key)),x(s,l)},Ke=s=>{var l=Ga(),u=a(l);r(l),y(()=>S(u,1,`w-1.5 h-1.5 rounded-full
|
|
15
|
+
${e($)==="cyan"?"bg-accent-cyan/40":e($)==="purple"?"bg-accent-purple/40":e($)==="amber"?"bg-accent-amber/40":"bg-accent-green/40"}`)),x(s,l)};w(ie,s=>{e(N)?s(Me):s(Ke,!1)})}var Ce=n(ie,2),Ae=a(Ce),re=a(Ae);{var jt=s=>{var l=qa(),u=a(l);K(u),Lr(u);var A=n(u,4);r(l),Cr("submit",l,T=>{T.preventDefault(),Xt(e(c).key)}),$e(u,()=>e(P),T=>f(P,T)),k("click",A,Yt),x(s,l)},Pe=s=>{var l=Ka(),u=Kt(l),A=a(u,!0);r(u);var T=n(u,2);y(M=>{S(u,1,`font-medium text-text-primary truncate max-w-[300px]
|
|
16
|
+
${C()===0?"text-base font-semibold":"text-sm"}`),g(A,M)},[()=>j.getSessionTitle(e(c))]),k("click",T,()=>Jt(e(c))),x(s,l)};w(re,s=>{e(fe)===e(c).key?s(jt):s(Pe,!1)})}var ce=n(re,2),Qe=a(ce,!0);r(ce);var We=n(ce,2);{var Dt=s=>{var l=Pa(),u=a(l,!0);r(l),y(()=>g(u,e(c).channel)),x(s,l)};w(We,s=>{e(c).channel&&s(Dt)})}var Je=n(We,2);{var Te=s=>{var l=Qa(),u=a(l,!0);r(l),y(()=>g(u,e(c).agentId)),x(s,l)};w(Je,s=>{e(c).agentId&&s(Te)})}var Xe=n(Je,2);{var $t=s=>{var l=Wa(),u=a(l);r(l),y(()=>{S(l,1,`px-2 py-0.5 rounded-full text-[10px] font-bold
|
|
17
|
+
${e($)==="cyan"?"bg-accent-cyan/15 text-accent-cyan":e($)==="purple"?"bg-accent-purple/15 text-accent-purple":e($)==="amber"?"bg-accent-amber/15 text-accent-amber":"bg-accent-green/15 text-accent-green"}`),g(u,`${h().children.length??""} child${h().children.length!==1?"ren":""}`)}),x(s,l)};w(Xe,s=>{e(N)&&s($t)})}r(Ae);var de=n(Ae,2),Ye=a(de);{var Bt=s=>{var l=Ja(),u=n(a(l));r(l),y(()=>g(u,` ${e(c).model??""}`)),x(s,l)};w(Ye,s=>{e(c).model&&s(Bt)})}var Ze=n(Ye,2);{var et=s=>{var l=Xa(),u=a(l,!0);r(l),y(()=>g(u,e(c).provider)),x(s,l)};w(Ze,s=>{e(c).provider&&s(et)})}var Ft=n(Ze,2);{var tt=s=>{var l=Ya(),u=n(a(l));r(l),y(A=>g(u,` ${A??""} tokens`),[()=>Oe(e(v))]),x(s,l)};w(Ft,s=>{e(v)>0&&s(tt)})}r(de);var ve=n(de,2);{var zt=s=>{var l=Za(),u=a(l,!0);r(l),y(()=>g(u,e(c).lastMessage)),x(s,l)};w(ve,s=>{e(c).lastMessage&&s(zt)})}var ue=n(ve,2),Le=a(ue),rt=n(a(Le));r(Le);var ae=n(Le,2),W=a(ae,!0);r(ae),r(ue),r(Ce);var at=n(Ce,2),E=a(at),J=a(E),Vt=n(a(J));r(J);var X=n(J,2),nt=n(a(X));r(X);var Ht=n(X,2);{var ot=s=>{var l=en(),u=a(l);r(l),y(()=>g(u,`R:${e(c).reasoningLevel??""}`)),x(s,l)};w(Ht,s=>{e(c).reasoningLevel&&e(c).reasoningLevel!=="off"&&s(ot)})}r(E);var Se=n(E,2);{var It=s=>{var l=rn(),u=a(l);u.value=u.__value="default";var A=n(u);ne(A,17,()=>e(me),Qt,(M,V)=>{var R=tn(),De=a(R,!0);r(R);var pe={};y(()=>{g(De,e(V).name||e(V).id),pe!==(pe=e(V).id)&&(R.value=(R.__value=e(V).id)??"")}),x(M,R)}),r(l);var T;Sr(l),y(()=>{l.disabled=e(G),T!==(T=e(c).model||"default")&&(l.value=(l.__value=e(c).model||"default")??"",jr(l,e(c).model||"default"))}),k("change",l,M=>Wt(e(c),M.currentTarget.value)),x(s,l)};w(Se,s=>{e(me).length>0&&s(It)})}var je=n(Se,2),st=a(je),Nt=n(st,2);r(je),r(at),r(we),r(te);var Rt=n(te,2);{var Ut=s=>{var l=an(),u=a(l),A=n(a(u),2),T=a(A);K(T),O(),r(A);var M=n(A,2),V=n(M,2);r(u),r(l),Be(T,()=>e(H),R=>f(H,R)),k("click",M,()=>ct(e(c).key)),k("click",V,()=>{f(I,null),f(H,!1)}),x(s,l)};w(Rt,s=>{e(I)===e(c).key&&s(Ut)})}r(B);var p=n(B,2);{var d=s=>{var l=nn();ne(l,21,()=>h().children,u=>u.session.key,(u,A)=>{o(u,()=>e(A),()=>C()+1)}),r(l),y(()=>S(l,1,`ml-6 pl-4 mt-2 space-y-2 border-l-2
|
|
18
|
+
${e($)==="cyan"?"border-accent-cyan/30":e($)==="purple"?"border-accent-purple/30":e($)==="amber"?"border-accent-amber/30":"border-accent-green/30"}`)),x(s,l)};w(p,s=>{e(N)&&e(U)&&s(d)})}r(Q),y(s=>{S(B,1,`rounded-xl border bg-bg-secondary/50 transition-all
|
|
19
|
+
${e(_)==="main"?"border-accent-cyan/25 hover:border-accent-cyan/50":e(_)==="subagent"?"border-accent-purple/25 hover:border-accent-purple/50":e(_)==="cron"||e(_)==="cron-run"?"border-accent-amber/25 hover:border-accent-amber/50":"border-accent-green/25 hover:border-accent-green/50"}`),S(ce,1,`px-2 py-0.5 rounded text-[10px] font-medium
|
|
20
|
+
${e(_)==="main"?"bg-accent-cyan/20 text-accent-cyan border border-accent-cyan/20":e(_)==="subagent"?"bg-accent-purple/20 text-accent-purple border border-accent-purple/20":e(_)==="cron"||e(_)==="cron-run"?"bg-accent-amber/20 text-accent-amber border border-accent-amber/20":"bg-accent-green/20 text-accent-green border border-accent-green/20"}`),g(Qe,e(_)),g(rt,` ${s??""}`),xe(ae,"title",e(c).key),g(W,e(c).key),J.disabled=e(G),S(J,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
21
|
+
${e(c).thinkingLevel==="stream"?"bg-accent-cyan/15 text-accent-cyan border-accent-cyan/30 glow-cyan":e(c).thinkingLevel==="on"?"bg-accent-purple/15 text-accent-purple border-accent-purple/30":"bg-bg-tertiary text-text-muted border-border-default hover:border-accent-cyan/30 hover:text-text-secondary"}`),xe(J,"title",`Thinking: ${e(c).thinkingLevel??"off"??""} (click to cycle)`),g(Vt,` T:${e(c).thinkingLevel??"off"??""}`),X.disabled=e(G),S(X,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
22
|
+
${e(c).verboseLevel==="on"?"bg-accent-green/15 text-accent-green border-accent-green/30":"bg-bg-tertiary text-text-muted border-border-default hover:border-accent-green/30 hover:text-text-secondary"}`),xe(X,"title",`Verbose: ${e(c).verboseLevel??"off"??""} (click to toggle)`),g(nt,` V:${e(c).verboseLevel??"off"??""}`)},[()=>ut(e(c).lastActivityAt??e(c).lastActivity)]),k("click",J,()=>Zt(e(c))),k("click",X,()=>er(e(c))),k("click",st,()=>dt(e(c).key)),k("click",Nt,()=>{f(I,e(I)===e(c).key?null:e(c).key,!0),f(H,!1)}),x(m,Q)};var i=sn();ne(i,21,()=>e(ke),m=>m.session.key,(m,h)=>{o(m,()=>e(h),()=>0)}),r(i),x(t,i)},ca=t=>{var o=ka(),i=Kt(o);{var m=C=>{var c=ln(),_=a(c),v=a(_,!0);r(_),r(c),y(()=>g(v,e(se)?"No sessions match your search.":"No sessions found.")),x(C,c)},h=C=>{var c=Sn();ne(c,23,()=>e(pt),_=>_.key,(_,v,G)=>{const U=D(()=>Vr(e(v))),N=D(()=>e(qr).get(e(v).key)??[]),$=D(()=>le(e(v))),Q=D(()=>e(Ve)===e(v).key);var B=Ln(),te=a(B),we=a(te),ie=a(we),Me=a(ie),Ke=a(Me);{var Ce=p=>{var d=cn(),s=a(d);K(s),Lr(s);var l=n(s,4);r(d),Cr("submit",d,u=>{u.preventDefault(),Xt(e(v).key)}),$e(s,()=>e(P),u=>f(P,u)),k("click",l,Yt),x(p,d)},Ae=p=>{var d=dn(),s=Kt(d),l=a(s,!0);r(s);var u=n(s,2);y(A=>g(l,A),[()=>j.getSessionTitle(e(v))]),k("click",u,()=>Jt(e(v))),x(p,d)};w(Ke,p=>{e(fe)===e(v).key?p(Ce):p(Ae,!1)})}var re=n(Ke,2),jt=a(re,!0);r(re);var Pe=n(re,2);{var ce=p=>{var d=vn(),s=a(d,!0);r(d),y(()=>g(s,e(v).channel)),x(p,d)};w(Pe,p=>{e(v).channel&&p(ce)})}var Qe=n(Pe,2);{var We=p=>{var d=un(),s=a(d,!0);r(d),y(()=>g(s,e(v).agentId)),x(p,d)};w(Qe,p=>{e(v).agentId&&p(We)})}var Dt=n(Qe,2);{var Je=p=>{var d=pn(),s=a(d),l=n(s);r(d),y(u=>{S(s,0,`w-3 h-3 transition-transform ${u??""}`),g(l,` ${e(N).length??""} sub-agent${e(N).length!==1?"s":""}`)},[()=>e(He).has(e(v).key)?"rotate-90":""]),k("click",d,()=>zr(e(v).key)),x(p,d)};w(Dt,p=>{e(ee)==="grouped"&&e(N).length>0&&p(Je)})}r(Me);var Te=n(Me,2),Xe=a(Te);{var $t=p=>{var d=xn(),s=n(a(d));r(d),y(()=>g(s,` ${e(v).model??""}`)),x(p,d)};w(Xe,p=>{e(v).model&&p($t)})}var de=n(Xe,2);{var Ye=p=>{var d=bn(),s=a(d,!0);r(d),y(()=>g(s,e(v).provider)),x(p,d)};w(de,p=>{e(v).provider&&p(Ye)})}var Bt=n(de,2);{var Ze=p=>{var d=gn(),s=n(a(d));r(d),y(l=>g(s,` ${l??""} tokens`),[()=>Oe(e($))]),x(p,d)};w(Bt,p=>{e($)>0&&p(Ze)})}r(Te);var et=n(Te,2);{var Ft=p=>{var d=fn(),s=a(d,!0);r(d),y(()=>g(s,e(v).lastMessage)),x(p,d)};w(et,p=>{e(v).lastMessage&&p(Ft)})}var tt=n(et,2),ve=a(tt),zt=n(a(ve));r(ve);var ue=n(ve,2),Le=a(ue,!0);r(ue),r(tt),r(ie);var rt=n(ie,2),ae=a(rt),W=a(ae),at=n(a(W));r(W);var E=n(W,2),J=n(a(E));r(E);var Vt=n(E,2);{var X=p=>{var d=mn(),s=a(d);r(d),y(()=>g(s,`R:${e(v).reasoningLevel??""}`)),x(p,d)};w(Vt,p=>{e(v).reasoningLevel&&e(v).reasoningLevel!=="off"&&p(X)})}r(ae);var nt=n(ae,2);{var Ht=p=>{var d=yn(),s=a(d);s.value=s.__value="default";var l=n(s);ne(l,17,()=>e(me),Qt,(A,T)=>{var M=hn(),V=a(M,!0);r(M);var R={};y(()=>{g(V,e(T).name||e(T).id),R!==(R=e(T).id)&&(M.value=(M.__value=e(T).id)??"")}),x(A,M)}),r(d);var u;Sr(d),y(()=>{d.disabled=e(Q),u!==(u=e(v).model||"default")&&(d.value=(d.__value=e(v).model||"default")??"",jr(d,e(v).model||"default"))}),k("change",d,A=>Wt(e(v),A.currentTarget.value)),x(p,d)};w(nt,p=>{e(me).length>0&&p(Ht)})}var ot=n(nt,2),Se=a(ot),It=n(Se,2);r(ot),r(rt),r(we),r(te);var je=n(te,2);{var st=p=>{var d=_n(),s=a(d),l=n(a(s),2),u=a(l);K(u),O(),r(l);var A=n(l,2),T=n(A,2);r(s),r(d),Be(u,()=>e(H),M=>f(H,M)),k("click",A,()=>ct(e(v).key)),k("click",T,()=>{f(I,null),f(H,!1)}),x(p,d)};w(je,p=>{e(I)===e(v).key&&p(st)})}var Nt=n(je,2);{var Rt=p=>{var d=Tn(),s=a(d),l=a(s),u=n(a(l));r(l);var A=n(l,2);ne(A,21,()=>e(N),T=>T.key,(T,M)=>{const V=D(()=>Nr(e(M))),R=D(()=>le(e(M)));var De=An(),pe=a(De),Et=a(pe),Ot=a(Et),gr=a(Ot),Gt=n(gr,2),da=a(Gt,!0);r(Gt);var qt=n(Gt,2),va=a(qt,!0);r(qt),r(Ot);var fr=n(Ot,2);{var ua=F=>{var z=kn(),Y=a(z,!0);r(z),y(()=>g(Y,e(M).lastMessage)),x(F,z)};w(fr,F=>{e(M).lastMessage&&F(ua)})}var mr=n(fr,2),hr=a(mr);{var pa=F=>{var z=wn(),Y=a(z,!0);r(z),y(()=>g(Y,e(M).model)),x(F,z)};w(hr,F=>{e(M).model&&F(pa)})}var yr=n(hr,2);{var xa=F=>{var z=Mn(),Y=a(z);r(z),y(lt=>g(Y,`${lt??""} tokens`),[()=>Oe(e(R))]),x(F,z)};w(yr,F=>{e(R)>0&&F(xa)})}var _r=n(yr,2),ba=a(_r,!0);r(_r),r(mr),r(Et);var kr=n(Et,2),wr=a(kr),ga=n(wr,2);r(kr),r(pe);var fa=n(pe,2);{var ma=F=>{var z=Cn(),Y=n(a(z),2),lt=a(Y);K(lt),O(),r(Y);var Mr=n(Y,2),ha=n(Mr,2);r(z),Be(lt,()=>e(H),ya=>f(H,ya)),k("click",Mr,()=>ct(e(M).key)),k("click",ha,()=>{f(I,null),f(H,!1)}),x(F,z)};w(fa,F=>{e(I)===e(M).key&&F(ma)})}r(De),y((F,z)=>{S(gr,1,`w-2 h-2 rounded-full flex-shrink-0
|
|
23
|
+
${e(V)==="active"?"bg-accent-green glow-pulse":e(V)==="done"?"bg-accent-cyan":e(V)==="error"?"bg-accent-pink":"bg-text-muted"}`),g(da,F),S(qt,1,`px-1.5 py-0.5 rounded text-[9px] font-medium
|
|
24
|
+
${e(V)==="active"?"bg-accent-green/15 text-accent-green":e(V)==="done"?"bg-accent-cyan/15 text-accent-cyan":e(V)==="error"?"bg-accent-pink/15 text-accent-pink":"bg-bg-tertiary text-text-muted"}`),g(va,e(V)),g(ba,z)},[()=>e(M).label||Ir(e(M)),()=>ut(e(M).lastActivityAt??e(M).lastActivity)]),k("click",wr,()=>dt(e(M).key)),k("click",ga,()=>{f(I,e(I)===e(M).key?null:e(M).key,!0),f(H,!1)}),x(T,De)}),r(A),r(s),r(d),y(()=>g(u,` Sub-Agents (${e(N).length??""})`)),x(p,d)},Ut=D(()=>e(ee)==="grouped"&&e(He).has(e(v).key)&&e(N).length>0);w(Nt,p=>{e(Ut)&&p(Rt)})}r(B),y(p=>{ja(B,`animation-delay: ${e(G)*30}ms`),S(re,1,`px-2 py-0.5 rounded text-[10px] font-medium
|
|
25
|
+
${e(U)==="main"?"bg-accent-purple/20 text-accent-purple border border-accent-purple/20":e(U)==="subagent"?"bg-accent-amber/20 text-accent-amber border border-accent-amber/20":"bg-accent-cyan/20 text-accent-cyan border border-accent-cyan/20"}`),g(jt,e(U)),g(zt,` ${p??""}`),xe(ue,"title",e(v).key),g(Le,e(v).key),W.disabled=e(Q),S(W,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
26
|
+
${e(v).thinkingLevel==="stream"?"bg-accent-cyan/15 text-accent-cyan border-accent-cyan/30 glow-cyan":e(v).thinkingLevel==="on"?"bg-accent-purple/15 text-accent-purple border-accent-purple/30":"bg-bg-tertiary text-text-muted border-border-default hover:border-accent-cyan/30 hover:text-text-secondary"}`),xe(W,"title",`Thinking: ${e(v).thinkingLevel??"off"??""} (click to cycle)`),g(at,` T:${e(v).thinkingLevel??"off"??""}`),E.disabled=e(Q),S(E,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
27
|
+
${e(v).verboseLevel==="on"?"bg-accent-green/15 text-accent-green border-accent-green/30":"bg-bg-tertiary text-text-muted border-border-default hover:border-accent-green/30 hover:text-text-secondary"}`),xe(E,"title",`Verbose: ${e(v).verboseLevel??"off"??""} (click to toggle)`),g(J,` V:${e(v).verboseLevel??"off"??""}`)},[()=>ut(e(v).lastActivityAt??e(v).lastActivity)]),k("click",W,()=>Zt(e(v))),k("click",E,()=>er(e(v))),k("click",Se,()=>dt(e(v).key)),k("click",It,()=>{f(I,e(I)===e(v).key?null:e(v).key,!0),f(H,!1)}),x(_,B)}),r(c),x(C,c)};w(i,C=>{e(pt).length===0?C(m):C(h,!1)})}x(t,o)};w(aa,t=>{it.state.status!=="connected"?t(na):e(oe)&&j.list.length===0?t(oa,1):e(Z)==="list"&&e(pt).length===0?t(sa,2):e(Z)==="tree"&&e(ke).length===0?t(la,3):e(Z)==="tree"?t(ia,4):t(ca,!1)})}r(br),r(xt),y(t=>{S(ft,1,`flex items-center gap-1.5 px-3 py-1.5 text-sm border rounded-lg transition-all
|
|
28
|
+
${e(ze)?"border-accent-cyan/50 text-accent-cyan bg-accent-cyan/10":"border-border-default text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 bg-bg-tertiary"}`),Ge.disabled=e(oe)||it.state.status!=="connected",S(nr,0,`w-4 h-4 ${e(oe)?"animate-spin":""}`),g(Kr,` ${e(oe)?"Loading…":"Refresh"}`),g(Pr,e(_e).total),g(Qr,e(_e).main),g(Wr,e(_e).isolated),g(Jr,e(_e).subagent),g(Xr,t),S(St,1,`px-3 py-2 text-xs transition-all flex items-center gap-1.5
|
|
29
|
+
${e(Z)==="list"?"bg-accent-cyan/10 text-accent-cyan":"bg-bg-tertiary text-text-muted hover:text-text-secondary"}`),S(xr,1,`px-3 py-2 text-xs transition-all flex items-center gap-1.5
|
|
30
|
+
${e(Z)==="tree"?"bg-accent-purple/10 text-accent-purple":"bg-bg-tertiary text-text-muted hover:text-text-secondary"}`)},[()=>Oe(e(_e).totalTokens)]),k("click",ft,()=>f(ze,!e(ze))),k("click",Ge,ye),$e(ur,()=>e(se),t=>f(se,t)),Da(qe,()=>e(ge),t=>f(ge,t)),k("click",St,()=>f(Z,"list")),k("click",xr,()=>f(Z,"tree")),x(Dr,xt),Ca()}_a(["click","change"]);export{En as component};
|