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,27 @@
|
|
|
1
|
+
import{d as ae,a as v,b as i,f as d,s as $,c as ct}from"../chunks/B2A7gHtL.js";import{p as oe,s as _,a as _t,u as rt,b as kt,g as e,d as x,t as O,c as re,e as ne,h as n,f as o,$ as se,r,n as B,j as nt}from"../chunks/qR_TM3YX.js";import{i as h}from"../chunks/DpBBTLWw.js";import{g as ce,e as le,i as ie,r as R,c as de,b as y,s as C}from"../chunks/D6tSezzf.js";import{h as pe}from"../chunks/CXQ1lKJR.js";import{s as Ct}from"../chunks/rBDgyNy3.js";import{b as st}from"../chunks/nnazh41B.js";import{b as ue}from"../chunks/BYXRTvT-.js";import{g as ve,a as xe,A as me}from"../chunks/CktI4lAE.js";import{C as be}from"../chunks/bWB8K6-D.js";var fe=ct('<svg class="w-5 h-5 absolute inset-0 m-auto text-white drop-shadow-lg" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="3"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>'),ge=d(`<button><!> <span class="absolute -bottom-7 left-1/2 -translate-x-1/2 text-xs text-text-muted
|
|
2
|
+
opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none"> </span></button>`),he=d(`<img alt="Your avatar" class="w-24 h-24 rounded-full object-cover border-2 border-accent-cyan/30 shadow-[0_0_15px_rgba(0,229,255,0.15)]"/> <button class="absolute -top-1 -right-1 w-6 h-6 rounded-full bg-red-500 text-white text-xs font-bold
|
|
3
|
+
flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity" aria-label="Remove avatar">Ć</button>`,1),ye=d(`<div class="w-24 h-24 rounded-full bg-accent-cyan/10 border-2 border-dashed border-accent-cyan/30
|
|
4
|
+
flex items-center justify-center"><svg class="w-10 h-10 text-accent-cyan/40" fill="currentColor" viewBox="0 0 24 24"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"></path></svg></div>`),we=d('<p class="text-sm text-text-muted">Your browser does not support notifications.</p>'),_e=d('<span class="inline-flex items-center gap-1.5 text-sm font-medium text-green-400"><span class="w-2 h-2 rounded-full bg-green-400"></span> Granted</span>'),ke=d('<span class="inline-flex items-center gap-1.5 text-sm font-medium text-red-400"><span class="w-2 h-2 rounded-full bg-red-400"></span> Denied</span>'),Ce=d('<span class="inline-flex items-center gap-1.5 text-sm font-medium text-yellow-400"><span class="w-2 h-2 rounded-full bg-yellow-400"></span> Not requested</span>'),Se=d(`<button class="px-5 py-2.5 rounded-xl text-sm font-medium
|
|
5
|
+
bg-accent-cyan/20 border border-accent-cyan/30 text-accent-cyan
|
|
6
|
+
hover:bg-accent-cyan/30 transition-all glow-cyan">Enable Notifications</button>`),Me=d(`<p class="text-sm text-red-400/80 bg-red-500/10 border border-red-500/20 rounded-xl px-4 py-3">Notifications are blocked. To enable them, open your browser's site settings and allow notifications for this site.</p>`),je=d('<label class="flex items-center justify-between cursor-pointer group"><div><p class="text-sm font-medium text-text-primary">Notify on new messages</p> <p class="text-xs text-text-muted">Show a notification when a message arrives while the tab is in the background</p></div> <button role="switch"><span></span></button></label> <label class="flex items-center justify-between cursor-pointer group"><div><p class="text-sm font-medium text-text-primary">Notify on connection lost</p> <p class="text-xs text-text-muted">Show a notification if the gateway connection drops</p></div> <button role="switch"><span></span></button></label>',1),Ae=d('<div class="flex items-center gap-3"><span class="text-sm text-text-secondary">Permission:</span> <!></div> <!> <!> <!>',1),Oe=ct('<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="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"></path></svg>'),Be=ct('<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="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path></svg>'),Ne=d(`<button class="px-5 py-2.5 rounded-xl text-sm font-medium
|
|
7
|
+
bg-red-500/20 border border-red-500/30 text-red-400
|
|
8
|
+
hover:bg-red-500/30 transition-all">Disconnect</button>`),ze=d("<button>Connect</button>"),De=d(`<div class="h-full overflow-y-auto"><div class="max-w-2xl mx-auto px-4 md:px-6 py-6 md:py-8"><a href="/" class="inline-flex items-center gap-2 text-sm text-text-secondary hover:text-accent-cyan transition-colors mb-8"><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="M15 19l-7-7 7-7"></path></svg> Back to Chat</a> <div class="flex items-center gap-4 mb-8"><img src="/logo.png" alt="Cortex" class="w-16 h-16 rounded-xl"/> <div><h1 class="text-2xl font-bold text-accent-cyan glow-text-cyan">Settings</h1> <p class="text-sm text-text-muted">Customize your Cortex experience</p></div></div> <div class="glass rounded-2xl p-6 space-y-6 mb-6"><h2 class="text-lg font-semibold text-text-primary flex items-center gap-2"><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="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"></path></svg> Appearance</h2> <div><label class="block text-sm font-medium text-text-secondary mb-3">Accent Color</label> <div class="flex flex-wrap gap-3"></div> <div class="mt-4 flex items-center gap-3"><label for="custom-accent-color" class="text-sm text-text-muted">Custom:</label> <input id="custom-accent-color" type="color" class="w-10 h-10 rounded-lg border border-border-default bg-bg-input cursor-pointer
|
|
9
|
+
[&::-webkit-color-swatch-wrapper]:p-1 [&::-webkit-color-swatch]:rounded-md [&::-webkit-color-swatch]:border-none
|
|
10
|
+
[&::-moz-color-swatch]:rounded-md [&::-moz-color-swatch]:border-none"/> <span class="text-sm font-mono text-text-muted"> </span></div></div> <div class="border-t border-border-default pt-4"><p class="text-sm text-text-muted mb-3">Preview</p> <div class="flex flex-wrap items-center gap-3"><span class="text-accent-cyan font-medium">Accent text</span> <button class="px-3 py-1.5 rounded-lg text-sm bg-accent-cyan/20 border border-accent-cyan/30 text-accent-cyan glow-cyan">Button</button> <span class="inline-block w-3 h-3 rounded-full bg-accent-cyan glow-cyan"></span> <span class="text-sm text-text-secondary">Link: <a href="#preview" class="text-accent-cyan hover:underline">example</a></span> <code class="text-sm font-mono px-2 py-0.5 rounded">code</code></div></div></div> <div class="glass rounded-2xl p-6 space-y-6 mb-6"><h2 class="text-lg font-semibold text-text-primary flex items-center gap-2"><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="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"></path></svg> Profile</h2> <div class="flex flex-col sm:flex-row items-start gap-6"><div class="flex flex-col items-center gap-3"><div class="relative group"><!></div> <button class="px-3 py-1.5 rounded-lg text-xs font-medium border border-accent-cyan/30 text-accent-cyan
|
|
11
|
+
hover:bg-accent-cyan/10 transition-all"> </button> <input type="file" accept="image/*" class="hidden"/> <p class="text-[10px] text-text-muted">Max 2MB Ā· Stored in browser</p></div> <div class="flex-1 w-full"><label for="user-name" class="block text-sm font-medium text-text-secondary mb-2">Display Name</label> <div class="flex gap-2"><input id="user-name" type="text" placeholder="Your name" class="flex-1 px-3 py-2 rounded-lg border border-border-default bg-bg-input text-sm text-text-primary
|
|
12
|
+
placeholder:text-text-muted/50 focus:outline-none focus:border-accent-cyan/50"/> <button class="px-3 py-2 rounded-lg text-sm font-medium bg-accent-cyan/20 border border-accent-cyan/30
|
|
13
|
+
text-accent-cyan hover:bg-accent-cyan/30 transition-all">Save</button></div> <p class="text-xs text-text-muted mt-1.5">Shown next to your messages in chat</p></div></div></div> <div class="glass rounded-2xl p-6 space-y-6 mb-6"><h2 class="text-lg font-semibold text-text-primary flex items-center gap-2"><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="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path></svg> Notifications</h2> <!></div> <div class="mb-6"><!></div> <div class="glass rounded-2xl p-6 space-y-6 mb-6"><h2 class="text-lg font-semibold text-text-primary flex items-center gap-2"><svg class="w-5 h-5 text-accent-purple" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 12h14M12 5l7 7-7 7"></path></svg> Gateway Connection</h2> <div><label for="gateway-url" class="block text-sm font-medium text-text-secondary mb-2">Gateway WebSocket URL</label> <input id="gateway-url" type="text" placeholder="ws://192.168.1.242:18789 or wss://openclaw.honercloud.com" class="w-full px-4 py-3 rounded-xl bg-bg-input border border-border-default
|
|
14
|
+
text-text-primary placeholder:text-text-muted text-sm font-mono
|
|
15
|
+
focus:outline-none focus:border-accent-cyan/50 focus:ring-1 focus:ring-accent-cyan/20
|
|
16
|
+
transition-all"/> <p class="text-xs text-text-muted mt-1.5">Use <code class="text-accent-cyan">ws://</code> for local, <code class="text-accent-cyan">wss://</code> for TLS</p></div> <div><label for="gateway-token" class="block text-sm font-medium text-text-secondary mb-2">Auth Token</label> <div class="relative"><input id="gateway-token" placeholder="Gateway authentication token" class="w-full px-4 py-3 pr-12 rounded-xl bg-bg-input border border-border-default
|
|
17
|
+
text-text-primary placeholder:text-text-muted text-sm font-mono
|
|
18
|
+
focus:outline-none focus:border-accent-cyan/50 focus:ring-1 focus:ring-accent-cyan/20
|
|
19
|
+
transition-all"/> <button class="absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-primary transition-colors" type="button"><!></button></div> <p class="text-xs text-text-muted mt-1.5">Find this in <code class="text-accent-cyan">~/.openclaw/openclaw.json</code> ā <code class="text-accent-cyan">gateway.auth.token</code></p></div> <div class="flex items-center gap-3 pt-2"><button class="px-5 py-2.5 rounded-xl text-sm font-medium
|
|
20
|
+
bg-accent-cyan/20 border border-accent-cyan/30 text-accent-cyan
|
|
21
|
+
hover:bg-accent-cyan/30 transition-all glow-cyan"> </button> <!></div></div> <div class="glass rounded-2xl p-6"><h2 class="text-lg font-semibold text-text-primary mb-4">About Cortex</h2> <div class="space-y-3 text-sm text-text-secondary"><p><strong class="text-text-primary">Version:</strong> 1.0.0</p> <p><strong class="text-text-primary">Protocol:</strong> OpenClaw Gateway WS v3</p> <p><strong class="text-text-primary">Source:</strong> <a href="https://gitlab.honercloud.com/llm/cortex" target="_blank" rel="noopener" class="text-accent-cyan hover:underline">gitlab.honercloud.com/llm/cortex</a></p> <p class="text-text-muted text-xs mt-4">Cortex is a cyberpunk command center for OpenClaw ā connecting directly to the Gateway WebSocket
|
|
22
|
+
for real-time chat, session management, and system control.</p></div></div></div></div>`);function Ee(St,Mt){oe(Mt,!0);const m=ce(),p=ve(),l=xe();let f=_(_t(m.url||"")),g=_(_t(m.token||"")),S=_(!1),V=_(!1),k=_(null),N=_(""),W=_(void 0);rt(()=>{kt(()=>{typeof window<"u"&&(x(k,localStorage.getItem("cortex-user-avatar"),!0),x(N,localStorage.getItem("cortex-user-name")||"",!0))})});function jt(t){const a=t.target,s=a.files?.[0];if(!s||!s.type.startsWith("image/"))return;if(s.size>2*1024*1024){alert("Image too large ā max 2MB");return}const b=new FileReader;b.addEventListener("load",()=>{const w=b.result;x(k,w,!0),localStorage.setItem("cortex-user-avatar",w)}),b.readAsDataURL(s),a.value=""}function At(){x(k,null),localStorage.removeItem("cortex-user-avatar")}function Ot(){localStorage.setItem("cortex-user-name",e(N))}rt(()=>{kt(()=>l.init())}),rt(()=>{m.url&&!e(f)&&x(f,m.url,!0),m.token&&!e(g)&&x(g,m.token,!0)});function Bt(){m.saveSettings(e(f),e(g)),m.url=e(f),m.token=e(g),x(V,!0),setTimeout(()=>x(V,!1),2e3)}function Nt(){m.connect(e(f),e(g))}function zt(){m.disconnect()}var E=De();pe("1i19ct2",t=>{ne(()=>{se.title="Settings ā Cortex"})});var lt=n(E),F=o(n(lt),4),Y=o(n(F),2),q=o(n(Y),2);le(q,21,()=>me,ie,(t,a)=>{var s=ge();let b;var w=n(s);{var at=M=>{var G=fe();i(M,G)};h(w,M=>{p.accentColor===e(a).value&&M(at)})}var T=o(w,2),U=n(T,!0);r(T),r(s),O(()=>{b=C(s,1,"group relative w-12 h-12 rounded-xl transition-all duration-200 hover:scale-110",null,b,{"ring-2":p.accentColor===e(a).value,"ring-offset-2":p.accentColor===e(a).value,"ring-offset-bg-primary":p.accentColor===e(a).value}),Ct(s,`background-color: ${e(a).value??""}; ${p.accentColor===e(a).value?`ring-color: ${e(a).value}; box-shadow: 0 0 20px ${e(a).value}44, 0 0 40px ${e(a).value}22;`:""}`),y(s,"title",e(a).name),y(s,"aria-label",`Set accent color to ${e(a).name??""}`),y(s,"aria-pressed",p.accentColor===e(a).value),$(U,e(a).name)}),v("click",s,()=>p.setAccent(e(a).value)),i(t,s)}),r(q);var it=o(q,2),z=o(n(it),2);R(z);var dt=o(z,2),Dt=n(dt,!0);r(dt),r(it),r(Y);var pt=o(Y,2),ut=o(n(pt),2),Lt=o(n(ut),8);r(ut),r(pt),r(F);var H=o(F,2),vt=o(n(H),2),J=n(vt),K=n(J),It=n(K);{var Pt=t=>{var a=he(),s=nt(a),b=o(s,2);O(()=>y(s,"src",e(k))),v("click",b,At),i(t,a)},Tt=t=>{var a=ye();i(t,a)};h(It,t=>{e(k)?t(Pt):t(Tt,!1)})}r(K);var D=o(K,2),Ut=n(D,!0);r(D);var xt=o(D,2);ue(xt,t=>x(W,t),()=>e(W)),B(2),r(J);var mt=o(J,2),bt=o(n(mt),2),Q=n(bt);R(Q);var Gt=o(Q,2);r(bt),B(2),r(mt),r(vt),r(H);var X=o(H,2),$t=o(n(X),2);{var Rt=t=>{var a=we();i(t,a)},Vt=t=>{var a=Ae(),s=nt(a),b=o(n(s),2);{var w=c=>{var u=_e();i(c,u)},at=c=>{var u=ke();i(c,u)},T=c=>{var u=Ce();i(c,u)};h(b,c=>{l.permission==="granted"?c(w):l.permission==="denied"?c(at,1):c(T,!1)})}r(s);var U=o(s,2);{var M=c=>{var u=Se();v("click",u,()=>l.requestPermission()),i(c,u)};h(U,c=>{l.permission==="default"&&c(M)})}var G=o(U,2);{var Qt=c=>{var u=Me();i(c,u)};h(G,c=>{l.permission==="denied"&&c(Qt)})}var Xt=o(G,2);{var Zt=c=>{var u=je(),ot=nt(u),j=o(n(ot),2),te=n(j);r(j),r(ot);var wt=o(ot,2),A=o(n(wt),2),ee=n(A);r(A),r(wt),O(()=>{y(j,"aria-checked",l.notifyOnMessages),C(j,1,`relative inline-flex h-6 w-11 shrink-0 rounded-full border-2 border-transparent transition-colors duration-200
|
|
23
|
+
${l.notifyOnMessages?"bg-accent-cyan":"bg-bg-tertiary"}`),C(te,1,`pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition-transform duration-200
|
|
24
|
+
${l.notifyOnMessages?"translate-x-5":"translate-x-0"}`),y(A,"aria-checked",l.notifyOnDisconnect),C(A,1,`relative inline-flex h-6 w-11 shrink-0 rounded-full border-2 border-transparent transition-colors duration-200
|
|
25
|
+
${l.notifyOnDisconnect?"bg-accent-cyan":"bg-bg-tertiary"}`),C(ee,1,`pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition-transform duration-200
|
|
26
|
+
${l.notifyOnDisconnect?"translate-x-5":"translate-x-0"}`)}),v("click",j,()=>l.setNotifyOnMessages(!l.notifyOnMessages)),v("click",A,()=>l.setNotifyOnDisconnect(!l.notifyOnDisconnect)),i(c,u)};h(Xt,c=>{l.permission==="granted"&&c(Zt)})}i(t,a)};h($t,t=>{l.supported?t(Vt,!1):t(Rt)})}r(X);var Z=o(X,2),Wt=n(Z);be(Wt,{}),r(Z);var ft=o(Z,2),tt=o(n(ft),2),gt=o(n(tt),2);R(gt),B(2),r(tt);var et=o(tt,2),ht=o(n(et),2),L=n(ht);R(L);var I=o(L,2),Et=n(I);{var Ft=t=>{var a=Oe();i(t,a)},Yt=t=>{var a=Be();i(t,a)};h(Et,t=>{e(S)?t(Ft):t(Yt,!1)})}r(I),r(ht),B(2),r(et);var yt=o(et,2),P=n(yt),qt=n(P,!0);r(P);var Ht=o(P,2);{var Jt=t=>{var a=Ne();v("click",a,zt),i(t,a)},Kt=t=>{var a=ze();O(()=>{a.disabled=!e(f)||!e(g),C(a,1,`px-5 py-2.5 rounded-xl text-sm font-medium
|
|
27
|
+
${e(f)&&e(g)?"bg-accent-purple/20 border border-accent-purple/30 text-accent-purple hover:bg-accent-purple/30 glow-purple":"bg-bg-tertiary border border-border-default text-text-muted cursor-not-allowed opacity-50"} transition-all`)}),v("click",a,Nt),i(t,a)};h(Ht,t=>{m.state.status==="connected"?t(Jt):t(Kt,!1)})}r(yt),r(ft),B(2),r(lt),r(E),O(()=>{de(z,p.accentColor),$(Dt,p.accentColor),Ct(Lt,`background: color-mix(in srgb, ${p.accentColor??""} 8%, transparent); border: 1px solid color-mix(in srgb, ${p.accentColor??""} 15%, transparent); color: ${p.accentColor??""};`),$(Ut,e(k)?"Change Photo":"Upload Photo"),y(L,"type",e(S)?"text":"password"),y(I,"aria-label",e(S)?"Hide token":"Show token"),$(qt,e(V)?"ā Saved":"Save Settings")}),v("input",z,t=>p.setAccent(t.target.value)),v("click",D,()=>e(W)?.click()),v("change",xt,jt),st(Q,()=>e(N),t=>x(N,t)),v("click",Gt,Ot),st(gt,()=>e(f),t=>x(f,t)),st(L,()=>e(g),t=>x(g,t)),v("click",I,()=>x(S,!e(S))),v("click",P,Bt),i(St,E),re()}ae(["click","input","change"]);export{Ee as component};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{d as Je,a as C,b as u,f as x,s as c}from"../chunks/B2A7gHtL.js";import{p as Ke,s as g,a as Oe,u as ge,g as t,d as v,b as Ve,t as b,c as Xe,e as Ye,h as d,f as s,$ as Ze,r as a,n as A,i as me,j as et}from"../chunks/qR_TM3YX.js";import{i as w}from"../chunks/DpBBTLWw.js";import{g as tt,a as _e,r as ye,e as he,i as rt,s as at,b as dt}from"../chunks/D6tSezzf.js";import{h as st}from"../chunks/CXQ1lKJR.js";import{b as we}from"../chunks/nnazh41B.js";import{b as ot}from"../chunks/DVP7Iy08.js";import{g as lt}from"../chunks/Be_uRYmX.js";var nt=x(`<div class="rounded-xl border border-accent-green/30 bg-bg-secondary/50 p-4"><h3 class="text-sm font-medium text-accent-green mb-3">Install Skill from ClawHub</h3> <div class="flex gap-2"><input type="text" placeholder="Skill name or URL..." class="flex-1 px-3 py-2 text-sm rounded-lg border border-border-default bg-bg-tertiary
|
|
2
|
+
text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-green transition-all"/> <button class="px-4 py-2 rounded-lg text-sm bg-accent-green/20 text-accent-green border border-accent-green/30
|
|
3
|
+
hover:bg-accent-green/30 transition-all disabled:opacity-50"> </button></div></div>`),it=x('<div class="rounded-lg border border-red-500/30 bg-red-500/5 px-4 py-3 text-red-400 text-sm"><strong>Failed to load skills:</strong> <button class="ml-2 underline hover:text-red-300">Retry</button></div>'),ct=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-pulse"><div class="h-4 w-48 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-96 bg-bg-tertiary rounded"></div></div>'),vt=x('<div class="space-y-2"></div>'),ut=x('<div class="text-center py-12 text-text-muted"> </div>'),xt=x('<div class="text-center py-12 text-text-muted"> </div>'),bt=x('<span class="text-xs text-text-muted font-mono"> </span>'),pt=x('<p class="text-xs text-text-secondary leading-relaxed mb-1.5"> </p>'),ft=x('<div class="text-[10px] text-text-muted/40 font-mono truncate"> </div>'),gt=x('<div class="mt-2 text-xs text-red-400 bg-red-500/10 rounded px-2 py-1"> </div>'),mt=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 transition-all hover:border-border-default/80"><div class="flex items-start gap-3"><div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1 flex-wrap"><span class="font-medium text-text-primary"> </span> <span> </span> <!></div> <!> <!> <!></div></div></div>'),_t=x('<div class="space-y-2"></div> <div class="text-xs text-text-muted/40 text-center pt-2"> </div>',1),yt=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">Skills</h1> <p class="text-sm text-text-muted mt-1">Agent skill library ā bundled, workspace, and installed skills.</p></div> <div class="flex gap-2"><button class="px-3 py-2 rounded-lg text-sm border border-accent-green/30 text-accent-green
|
|
4
|
+
hover:bg-accent-green/10 transition-all">+ Install</button> <button class="px-3 py-2 rounded-lg text-sm border border-border-default hover:border-accent-cyan
|
|
5
|
+
text-text-secondary hover:text-accent-cyan transition-all disabled:opacity-50"> </button></div></div> <!> <div class="grid grid-cols-4 gap-3"><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"> </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"> </div> <div class="text-xs text-text-muted">Bundled</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"> </div> <div class="text-xs text-text-muted">Workspace</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"> </div> <div class="text-xs text-text-muted">Managed</div></div></div> <div class="flex gap-3"><div class="relative flex-1"><input type="text" placeholder="Search skills..." class="w-full pl-9 pr-3 py-2 text-sm rounded-lg border border-border-default bg-bg-tertiary
|
|
6
|
+
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>All Sources</option><option>Bundled</option><option>Workspace</option><option>Managed</option></select></div> <!> <!></div></div>`);function $t(ke,Se){Ke(Se,!0);const Z=tt(),N=lt();let f=g(Oe([])),_=g(!1),L=g(null),I=g(""),P=g(""),k=g("all"),$=g(!1),y=g(""),M=g(!1);ge(()=>{const e=t(I),r=setTimeout(()=>{v(P,e,!0)},200);return()=>clearTimeout(r)}),ge(()=>{Z.state.status==="connected"&&Ve(()=>T())});async function T(){if(!t(_)){v(_,!0),v(L,null);try{const e=await _e.call("skills.status",{}),r=Array.isArray(e?.skills)?e.skills:Array.isArray(e?.entries)?e.entries:Array.isArray(e)?e:[];v(f,r,!0)}catch(e){const r=String(e);console.error("skills.status failed:",r),v(L,r,!0),N.error("Skills Load Failed",r)}finally{v(_,!1)}}}async function ee(){if(t(y).trim()){v(M,!0);try{const e=await _e.call("skills.install",{name:t(y).trim(),timeoutMs:12e4});N.success("Installed",e?.message??`${t(y)} installed`),v(y,""),v($,!1),await T()}catch(e){N.error("Install Failed",String(e))}finally{v(M,!1)}}}let R=me(()=>{let e=t(f);if(t(P).trim()){const r=t(P).toLowerCase();e=e.filter(l=>l.name.toLowerCase().includes(r)||(l.description?.toLowerCase().includes(r)??!1)||(l.source?.toLowerCase().includes(r)??!1))}return t(k)==="bundled"&&(e=e.filter(r=>r.bundled)),t(k)==="workspace"&&(e=e.filter(r=>r.source==="workspace")),t(k)==="managed"&&(e=e.filter(r=>r.source==="managed"||r.source==="clawhub")),e}),j=me(()=>({total:t(f).length,bundled:t(f).filter(e=>e.bundled).length,workspace:t(f).filter(e=>e.source==="workspace").length,managed:t(f).filter(e=>e.source==="managed"||e.source==="clawhub").length}));function Ce(e,r){return r?"bundled":e==="workspace"?"workspace":e==="managed"||e==="clawhub"?"managed":e??"unknown"}function Ae(e,r){return r?"bg-accent-purple/20 text-accent-purple border-accent-purple/30":e==="workspace"?"bg-accent-cyan/20 text-accent-cyan border-accent-cyan/30":e==="managed"||e==="clawhub"?"bg-accent-green/20 text-accent-green border-accent-green/30":"bg-bg-tertiary text-text-muted border-border-default"}var q=yt();st("1g4s34r",e=>{Ye(()=>{Ze.title="Skills ā Cortex"})});var te=d(q),E=d(te),re=s(d(E),2),ae=d(re),B=s(ae,2),Le=d(B,!0);a(B),a(re),a(E);var de=s(E,2);{var Ie=e=>{var r=nt(),l=s(d(r),2),p=d(l);ye(p);var m=s(p,2),S=d(m,!0);a(m),a(l),a(r),b(o=>{m.disabled=o,c(S,t(M)?"Installing...":"Install")},[()=>t(M)||!t(y).trim()]),C("keydown",p,o=>o.key==="Enter"&&ee()),we(p,()=>t(y),o=>v(y,o)),C("click",m,ee),u(e,r)};w(de,e=>{t($)&&e(Ie)})}var W=s(de,2),z=d(W),se=d(z),$e=d(se,!0);a(se),A(2),a(z);var H=s(z,2),oe=d(H),Me=d(oe,!0);a(oe),A(2),a(H);var Q=s(H,2),le=d(Q),Te=d(le,!0);a(le),A(2),a(Q);var ne=s(Q,2),ie=d(ne),je=d(ie,!0);a(ie),A(2),a(ne),a(W);var U=s(W,2),D=d(U),ce=d(D);ye(ce),A(2),a(D);var G=s(D,2),J=d(G);J.value=J.__value="all";var K=s(J);K.value=K.__value="bundled";var O=s(K);O.value=O.__value="workspace";var ve=s(O);ve.value=ve.__value="managed",a(G),a(U);var ue=s(U,2);{var Be=e=>{var r=it(),l=s(d(r)),p=s(l);a(r),b(()=>c(l,` ${t(L)??""} `)),C("click",p,T),u(e,r)};w(ue,e=>{t(L)&&e(Be)})}var Fe=s(ue,2);{var Ne=e=>{var r=vt();he(r,20,()=>Array(5),rt,(l,p)=>{var m=ct();u(l,m)}),a(r),u(e,r)},Pe=e=>{var r=ut(),l=d(r,!0);a(r),b(()=>c(l,Z.state.status!=="connected"?"Connect to the gateway to view skills.":"No skills found.")),u(e,r)},Re=e=>{var r=xt(),l=d(r);a(r),b(()=>c(l,`No skills match "${t(I)??""}"`)),u(e,r)},qe=e=>{var r=_t(),l=et(r);he(l,23,()=>t(R),(S,o)=>S.name+"-"+o,(S,o)=>{var V=mt(),xe=d(V),be=d(xe),X=d(be),Y=d(X),Ee=d(Y,!0);a(Y);var F=s(Y,2),We=d(F,!0);a(F);var ze=s(F,2);{var He=i=>{var n=bt(),h=d(n);a(n),b(()=>c(h,`v${t(o).version??""}`)),u(i,n)};w(ze,i=>{t(o).version&&i(He)})}a(X);var pe=s(X,2);{var Qe=i=>{var n=pt(),h=d(n,!0);a(n),b(()=>c(h,t(o).description)),u(i,n)};w(pe,i=>{t(o).description&&i(Qe)})}var fe=s(pe,2);{var Ue=i=>{var n=ft(),h=d(n,!0);a(n),b(()=>{dt(n,"title",t(o).filePath),c(h,t(o).filePath)}),u(i,n)};w(fe,i=>{t(o).filePath&&i(Ue)})}var De=s(fe,2);{var Ge=i=>{var n=gt(),h=d(n,!0);a(n),b(()=>c(h,t(o).error)),u(i,n)};w(De,i=>{t(o).error&&i(Ge)})}a(be),a(xe),a(V),b((i,n)=>{c(Ee,t(o).name),at(F,1,`px-1.5 py-0.5 rounded text-[10px] font-mono border ${i??""}`),c(We,n)},[()=>Ae(t(o).source,t(o).bundled),()=>Ce(t(o).source,t(o).bundled)]),u(S,V)}),a(l);var p=s(l,2),m=d(p);a(p),b(()=>c(m,`Showing ${t(R).length??""} of ${t(f).length??""} skills`)),u(e,r)};w(Fe,e=>{t(_)&&t(f).length===0?e(Ne):t(f).length===0&&!t(_)?e(Pe,1):t(R).length===0?e(Re,2):e(qe,!1)})}a(te),a(q),b(()=>{B.disabled=t(_),c(Le,t(_)?"Loading...":"Refresh"),c($e,t(j).total),c(Me,t(j).bundled),c(Te,t(j).workspace),c(je,t(j).managed)}),C("click",ae,()=>v($,!t($))),C("click",B,T),we(ce,()=>t(I),e=>v(I,e)),ot(G,()=>t(k),e=>v(k,e)),u(ke,q),Xe()}Je(["click","keydown"]);export{$t as component};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import{d as pr,a as gt,b as n,f as i,s as o,c as mr,t as ua}from"../chunks/B2A7gHtL.js";import{p as gr,s as rt,a as pa,u as _r,b as br,t as p,g as t,c as fr,e as hr,f as r,d as h,h as a,$ as yr,r as e,n as Wt,i as k,j as jt}from"../chunks/qR_TM3YX.js";import{i as m}from"../chunks/DpBBTLWw.js";import{g as kr,a as Qt,r as ma,s as _t,e as bt,i as Ct,b as ut}from"../chunks/D6tSezzf.js";import{h as wr}from"../chunks/CXQ1lKJR.js";import{s as st}from"../chunks/rBDgyNy3.js";import{b as ga}from"../chunks/nnazh41B.js";import{b as $r}from"../chunks/DVP7Iy08.js";import{g as Cr}from"../chunks/Be_uRYmX.js";var Tr=mr('<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>'),Dr=i('<span class="text-accent-amber ml-1">(limit reached)</span>'),Mr=i('<span class="text-xs text-text-muted ml-auto"> <!></span>'),Sr=i('<div class="rounded-xl border border-status-error/30 bg-status-error/10 p-4"><p class="text-sm text-status-error"> </p></div>'),Rr=i('<div class="text-center py-16"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mx-auto 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="M13 10V3L4 14h7v7l9-11h-7z"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view usage analytics.</p></div>'),Ur=i('<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>'),Wr=i('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"></div>'),jr=i('<div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-3"><div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-xs text-text-muted">Messages</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-xs text-text-muted">User Msgs</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-xs text-text-muted">Assistant Msgs</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-xs text-text-muted">Tool Calls</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-xs text-text-muted">Unique Tools</div></div> <div class="rounded-lg border border-border-default bg-bg-secondary/50 p-3 text-center"><div> </div> <div class="text-xs text-text-muted">Errors</div></div></div>'),Lr=i('<div class="bg-accent-pink/80 transition-all"></div> <div class="bg-accent-cyan/80 transition-all"></div> <div class="bg-accent-purple/80 transition-all"></div> <div class="bg-accent-green/80 transition-all"></div>',1),Pr=i('<div class="bg-accent-pink/80 transition-all"></div> <div class="bg-accent-cyan/80 transition-all"></div> <div class="bg-accent-purple/80 transition-all"></div> <div class="bg-accent-green/80 transition-all"></div>',1),Ar=i('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h3 class="text-sm font-semibold text-text-primary mb-3"> </h3> <div class="h-4 rounded-full overflow-hidden flex bg-bg-tertiary mb-3"><!></div> <div class="flex flex-wrap gap-x-5 gap-y-1 text-xs"><span class="flex items-center gap-1.5"><span class="w-2.5 h-2.5 rounded-sm bg-accent-pink/80"></span> <span class="text-text-muted">Output</span> <span class="text-text-secondary font-medium"> </span></span> <span class="flex items-center gap-1.5"><span class="w-2.5 h-2.5 rounded-sm bg-accent-cyan/80"></span> <span class="text-text-muted">Input</span> <span class="text-text-secondary font-medium"> </span></span> <span class="flex items-center gap-1.5"><span class="w-2.5 h-2.5 rounded-sm bg-accent-purple/80"></span> <span class="text-text-muted">Cache Write</span> <span class="text-text-secondary font-medium"> </span></span> <span class="flex items-center gap-1.5"><span class="w-2.5 h-2.5 rounded-sm bg-accent-green/80"></span> <span class="text-text-muted">Cache Read</span> <span class="text-text-secondary font-medium"> </span></span></div></div>'),Ir=i('<div class="flex-1 flex flex-col items-center group relative min-w-0"><div class="w-full rounded-t transition-all bg-accent-cyan/60 hover:bg-accent-cyan/90 cursor-default"></div> <div class="absolute bottom-full mb-2 hidden group-hover:block z-10"><div class="glass rounded-lg px-3 py-2 text-xs whitespace-nowrap shadow-lg border border-border-default"><div class="font-medium text-text-primary"> </div> <div class="text-text-secondary"> </div> <div class="text-text-secondary"> </div></div></div></div>'),Br=i("<span> </span>"),Or=i('<div class="flex justify-between mt-1.5 text-[10px] text-text-muted px-1"><span> </span> <!> <span> </span></div>'),zr=i('<div class="flex items-end gap-px h-36"></div> <!>',1),Fr=i('<div class="h-36 flex items-center justify-center text-text-muted text-sm">No daily data</div>'),Vr=i('<div><div class="flex justify-between text-xs mb-1"><span class="text-text-secondary truncate mr-2 font-mono"> </span> <span class="text-text-muted whitespace-nowrap"> </span></div> <div class="h-1.5 rounded-full bg-bg-tertiary overflow-hidden"><div class="h-full rounded-full bg-gradient-to-r from-accent-cyan to-accent-purple transition-all"></div></div> <div class="text-[10px] text-text-muted mt-0.5"> </div></div>'),Nr=i('<div class="space-y-3"></div>'),qr=i('<div class="flex items-center justify-center h-24 text-text-muted text-sm">No model data</div>'),Hr=i('<div class="flex justify-between text-xs"><span class="text-text-secondary font-mono"> </span> <span class="text-text-muted"> </span></div>'),Kr=i('<h3 class="text-sm font-semibold text-text-primary mt-5 mb-2">Top Providers</h3> <div class="space-y-1.5"></div>',1),Yr=i('<div class="text-center py-8 text-text-muted text-sm">No sessions in this date range.</div>'),Er=i('<span class="px-1.5 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted flex-shrink-0"> </span>'),Gr=i('<span class="px-1.5 py-0.5 rounded text-[10px] bg-accent-purple/10 text-purple-300 flex-shrink-0 truncate max-w-32"> </span>'),Jr=i("<span> </span>"),Qr=i('<span class="text-accent-pink"> </span>'),Xr=i("<span> </span> <span> </span> <!> <!>",1),Zr=i('<div class="flex items-center gap-2 text-sm text-text-muted py-4"><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 12h4z"></path></svg> Loading session details...</div>'),ts=i('<div class="text-[10px] text-text-muted"> </div>'),es=i('<div class="text-[10px] text-text-muted"> </div>'),as=i('<div class="text-[10px] text-text-muted"> </div>'),rs=i('<div class="grid grid-cols-2 md:grid-cols-4 gap-3 mb-4"><div class="rounded-lg bg-bg-tertiary/50 p-2.5"><div class="text-[10px] text-text-muted uppercase">Input</div> <div class="text-sm font-bold text-accent-cyan"> </div> <!></div> <div class="rounded-lg bg-bg-tertiary/50 p-2.5"><div class="text-[10px] text-text-muted uppercase">Output</div> <div class="text-sm font-bold text-accent-pink"> </div> <!></div> <div class="rounded-lg bg-bg-tertiary/50 p-2.5"><div class="text-[10px] text-text-muted uppercase">Duration</div> <div class="text-sm font-bold text-text-primary"> </div> <!></div> <div class="rounded-lg bg-bg-tertiary/50 p-2.5"><div class="text-[10px] text-text-muted uppercase">Tools</div> <div class="text-sm font-bold text-text-primary"> </div> <div class="text-[10px] text-text-muted"> </div></div></div>'),ss=i('<span class="px-2 py-0.5 rounded text-[10px] bg-accent-cyan/10 text-accent-cyan"> </span>'),os=i('<span class="px-2 py-0.5 rounded text-[10px] bg-accent-purple/10 text-accent-purple"> </span>'),ds=i('<span class="px-2 py-0.5 rounded text-[10px] bg-accent-amber/10 text-accent-amber"> </span>'),ns=i('<div class="rounded-lg bg-bg-tertiary/50 px-2.5 py-1.5 text-xs"><span class="text-text-secondary font-mono"> </span> <span class="text-text-muted ml-1.5"> </span></div>'),is=i('<div class="mb-3"><h4 class="text-xs font-medium text-text-muted mb-1.5">Model Mix</h4> <div class="flex flex-wrap gap-2"></div></div>'),vs=i('<span class="px-2 py-0.5 rounded text-[10px] bg-accent-green/10 text-accent-green"> </span>'),ls=i('<div class="mb-3"><h4 class="text-xs font-medium text-text-muted mb-1.5">Top Tools</h4> <div class="flex flex-wrap gap-1.5"></div></div>'),cs=i('<div class="flex-1 rounded-t bg-accent-cyan/40 hover:bg-accent-cyan/70 transition-all min-w-[1px]"></div>'),xs=i('<div class="mb-3"><h4 class="text-xs font-medium text-text-muted mb-1.5">Usage Over Time</h4> <div class="flex items-end gap-px h-16"></div> <div class="text-[10px] text-text-muted mt-1"> </div></div>'),us=i('<span class="text-text-muted flex-shrink-0"> </span>'),ps=i('<div><span> </span> <span class="text-text-secondary truncate flex-1"> </span> <!></div>'),ms=i('<div class="text-[10px] text-text-muted text-center py-1"> </div>'),gs=i('<div><h4 class="text-xs font-medium text-text-muted mb-1.5"> </h4> <div class="space-y-1 max-h-48 overflow-y-auto rounded-lg border border-border-default bg-bg-primary/50 p-2"><!> <!></div></div>'),_s=i('<!> <div class="flex flex-wrap gap-1.5 mb-3"><!> <!> <!> <span class="px-2 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted font-mono truncate max-w-80"> </span></div> <!> <!> <!> <!>',1),bs=i('<div class="mt-3 pt-3 border-t border-border-default"><!></div>'),fs=i('<button><div class="flex items-start gap-3"><div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-0.5"><span class="text-sm font-medium text-text-primary truncate"> </span> <!> <!></div> <div class="h-1 rounded-full bg-bg-tertiary overflow-hidden mt-1.5 mb-1"><div></div></div> <div class="flex items-center gap-3 text-[11px] text-text-muted"><!> <span class="ml-auto"> </span></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> <!></button>'),hs=i('<div class="text-center text-xs text-text-muted py-3"> </div>'),ys=i('<div class="space-y-1"><!> <!></div>'),ks=i('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"><div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 glow-cyan"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Total Tokens</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 glow-purple"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Total Cost</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">Sessions</div> <div class="text-2xl font-bold text-accent-green"> </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">Cache Hit Rate</div> <div> </div> <div class="text-xs text-text-muted mt-1"> </div></div></div> <!> <!> <div class="grid grid-cols-1 lg:grid-cols-3 gap-4"><div class="lg:col-span-2 rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h3 class="text-sm font-semibold text-text-primary mb-3"> </h3> <!></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h3 class="text-sm font-semibold text-text-primary mb-3">Top Models</h3> <!> <!></div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-4"><h3 class="text-sm font-semibold text-text-primary">Sessions</h3> <div class="flex items-center gap-2"><select class="px-2 py-1 text-xs rounded-lg border border-border-default bg-bg-tertiary text-text-secondary"><option>Sort: Tokens</option><option>Sort: Cost</option><option>Sort: Recent</option></select> <span class="text-xs text-text-muted"> </span></div></div> <!></div>',1),ws=i('<div class="text-center py-16"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mx-auto 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="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"></path></svg></div> <p class="text-text-muted text-sm">No usage data found for this date range.</p> <p class="text-text-muted text-xs mt-1">Try expanding the date range or check that sessions have been active.</p></div>'),$s=i(`<div class="h-full overflow-y-auto"><div class="max-w-7xl 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">Usage Analytics</h1> <p class="text-sm text-text-muted mt-1">Track tokens, costs, and session activity across your gateway.</p></div> <div class="flex items-center gap-2"><div class="flex rounded-lg border border-border-default overflow-hidden"><button>Tokens</button> <button>Cost</button></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 disabled:opacity-50"><!> Refresh</button></div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center flex-wrap gap-3"><div class="flex items-center gap-2"><span class="text-xs text-text-muted uppercase tracking-wider font-medium">Range</span> <input type="date" class="px-3 py-1.5 rounded-lg border border-border-default bg-bg-tertiary text-sm
|
|
3
|
+
text-text-primary focus:outline-none focus:border-accent-cyan transition-all"/> <span class="text-text-muted text-sm">to</span> <input type="date" class="px-3 py-1.5 rounded-lg border border-border-default bg-bg-tertiary text-sm
|
|
4
|
+
text-text-primary focus:outline-none focus:border-accent-cyan transition-all"/></div> <div class="flex items-center gap-1.5"><button class="px-2.5 py-1 rounded-md text-xs border border-border-default text-text-muted
|
|
5
|
+
hover:border-accent-cyan hover:text-accent-cyan transition-all">Today</button> <button class="px-2.5 py-1 rounded-md text-xs border border-border-default text-text-muted
|
|
6
|
+
hover:border-accent-cyan hover:text-accent-cyan transition-all">7d</button> <button class="px-2.5 py-1 rounded-md text-xs border border-border-default text-text-muted
|
|
7
|
+
hover:border-accent-cyan hover:text-accent-cyan transition-all">30d</button> <button class="px-2.5 py-1 rounded-md text-xs border border-border-default text-text-muted
|
|
8
|
+
hover:border-accent-cyan hover:text-accent-cyan transition-all">90d</button></div> <!></div></div> <!> <!></div></div>`);function Ls(_a,ba){gr(ba,!0);const ve=kr(),fa=Cr();let Tt=rt(!1),Xt=rt(null),Ot=rt(pa(te(ha(6)))),zt=rt(pa(te(new Date))),Zt=rt(null),le=rt(null),Ft=rt(null),ce=rt(!1),Lt=rt(null),it=rt(null),P=rt("tokens"),xe=rt("tokens");function ha(s){const d=new Date;return d.setDate(d.getDate()-s),d}function te(s){return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function w(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:String(Math.round(s))}function M(s,d=2){return`$${s.toFixed(d)}`}function ya(s){if(!s)return"n/a";const d=new Date(s),u=Date.now()-d.getTime();return u<6e4?"just now":u<36e5?`${Math.floor(u/6e4)}m ago`:u<864e5?`${Math.floor(u/36e5)}h ago`:d.toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function ka(s){if(!s||s<=0)return"ā";const d=Math.floor(s/1e3);if(d<60)return`${d}s`;const u=Math.floor(d/60);return u<60?`${u}m ${d%60}s`:`${Math.floor(u/60)}h ${u%60}m`}function vt(s,d){return d>0?s/d*100:0}function wa(s){const d=s.label||s.key;return d.startsWith("agent:")&&d.includes("?token=")?d.slice(0,d.indexOf("?token=")):d.length>60?d.slice(0,60)+"ā¦":d}async function ue(){if(!(!Qt.connected||t(Tt))){h(Tt,!0),h(Xt,null),h(Ft,null),h(Lt,null),h(it,null);try{const[s,d]=await Promise.all([Qt.call("sessions.usage",{startDate:t(Ot),endDate:t(zt),limit:1e3,includeContextWeight:!0}),Qt.call("usage.cost",{startDate:t(Ot),endDate:t(zt)})]);h(Zt,s,!0),h(le,d,!0)}catch(s){h(Xt,String(s),!0),fa.error("Usage Load Failed",String(s))}finally{h(Tt,!1)}}}async function $a(s){if(t(Ft)===s){h(Ft,null),h(Lt,null),h(it,null);return}h(Ft,s,!0),h(ce,!0),h(Lt,null),h(it,null);try{const[d,u]=await Promise.all([Qt.call("sessions.usage.timeseries",{key:s}).catch(()=>null),Qt.call("sessions.usage.logs",{key:s,limit:200}).catch(()=>null)]);d&&h(Lt,d,!0),u?.logs&&h(it,u.logs,!0)}catch{}finally{h(ce,!1)}}function ee(s){const d=new Date,u=new Date;u.setDate(u.getDate()-(s-1)),h(Ot,te(u),!0),h(zt,te(d),!0),ue()}_r(()=>{ve.state.status==="connected"&&br(()=>ue())});let c=k(()=>t(Zt)?.totals??null),ft=k(()=>t(Zt)?.sessions??[]),H=k(()=>t(Zt)?.aggregates??null),ot=k(()=>t(le)?.daily??[]),Pt=k(()=>{const s=[...t(ft)];switch(t(xe)){case"cost":return s.sort((d,u)=>(u.usage?.totalCost??0)-(d.usage?.totalCost??0));case"recent":return s.sort((d,u)=>(u.updatedAt??0)-(d.updatedAt??0));default:return s.sort((d,u)=>(u.usage?.totalTokens??0)-(d.usage?.totalTokens??0))}}),pe=k(()=>(t(H)?.byModel??[]).slice(0,5).map(s=>({name:s.model??"unknown",provider:s.provider??"",cost:s.totals.totalCost,tokens:s.totals.totalTokens,count:s.count}))),ze=k(()=>(t(H)?.byProvider??[]).slice(0,5).map(s=>({name:s.provider??"unknown",cost:s.totals.totalCost,tokens:s.totals.totalTokens,count:s.count}))),K=k(()=>{if(!t(c))return null;const s=t(c).totalCost||1;return{input:{tokens:t(c).input,cost:t(c).inputCost,pct:vt(t(c).inputCost,s)},output:{tokens:t(c).output,cost:t(c).outputCost,pct:vt(t(c).outputCost,s)},cacheRead:{tokens:t(c).cacheRead,cost:t(c).cacheReadCost,pct:vt(t(c).cacheReadCost,s)},cacheWrite:{tokens:t(c).cacheWrite,cost:t(c).cacheWriteCost,pct:vt(t(c).cacheWriteCost,s)}}}),ae=k(()=>{if(!t(c))return 0;const s=t(c).input+t(c).cacheRead;return s>0?t(c).cacheRead/s:0}),Ca=k(()=>{if(!t(ot).length)return 1;const s=t(P)==="tokens",d=t(ot).map(u=>s?u.totalTokens:u.totalCost);return Math.max(...d,s?1:.001)}),ht=k(()=>{if(!t(Lt)?.points?.length)return[];let s=0,d=0;return t(Lt).points.map(u=>(s+=u.totalTokens,d+=u.cost,{...u,cumulativeTokens:s,cumulativeCost:d}))});var me=$s();wr("1y1fchs",s=>{hr(()=>{yr.title="Usage ā Cortex"})});var Fe=a(me),ge=a(Fe),Ve=r(a(ge),2),_e=a(Ve),be=a(_e),Ne=r(be,2);e(_e);var re=r(_e,2),Ta=a(re);{var Da=s=>{var d=Tr();n(s,d)};m(Ta,s=>{t(Tt)&&s(Da)})}Wt(),e(re),e(Ve),e(ge);var fe=r(ge,2),qe=a(fe),he=a(qe),ye=r(a(he),2);ma(ye);var He=r(ye,4);ma(He),e(he);var ke=r(he,2),Ke=a(ke),Ye=r(Ke,2),Ee=r(Ye,2),Ma=r(Ee,2);e(ke);var Sa=r(ke,2);{var Ra=s=>{var d=Mr(),u=a(d),pt=r(u);{var Dt=Vt=>{var se=Dr();n(Vt,se)};m(pt,Vt=>{t(ft).length>=1e3&&Vt(Dt)})}e(d),p(()=>o(u,`${t(ft).length??""} session${t(ft).length!==1?"s":""} in range `)),n(s,d)};m(Sa,s=>{t(ft).length>0&&s(Ra)})}e(qe),e(fe);var Ge=r(fe,2);{var Ua=s=>{var d=Sr(),u=a(d),pt=a(u,!0);e(u),e(d),p(()=>o(pt,t(Xt))),n(s,d)};m(Ge,s=>{t(Xt)&&s(Ua)})}var Wa=r(Ge,2);{var ja=s=>{var d=Rr();n(s,d)},La=s=>{var d=Wr();bt(d,20,()=>Array(4),Ct,(u,pt)=>{var Dt=Ur();n(u,Dt)}),e(d),n(s,d)},Pa=s=>{var d=ks(),u=jt(d),pt=a(u),Dt=r(a(pt),2),Vt=a(Dt,!0);e(Dt);var se=r(Dt,2),Ia=a(se);e(se),e(pt);var we=r(pt,2),$e=r(a(we),2),Ba=a($e,!0);e($e);var Je=r($e,2),Oa=a(Je);e(Je),e(we);var Ce=r(we,2),Te=r(a(Ce),2),za=a(Te,!0);e(Te);var Qe=r(Te,2),Fa=a(Qe);{var Va=x=>{var g=ua();p(()=>o(g,`${t(H).messages.total??""} messages Ā· ${t(H).messages.errors??""} errors`)),n(x,g)},Na=x=>{var g=ua("In selected range");n(x,g)};m(Fa,x=>{t(H)?x(Va):x(Na,!1)})}e(Qe),e(Ce);var Xe=r(Ce,2),oe=r(a(Xe),2),qa=a(oe,!0);e(oe);var Ze=r(oe,2),Ha=a(Ze);e(Ze),e(Xe),e(u);var ta=r(u,2);{var Ka=x=>{var g=jr(),T=a(g),W=a(T),A=a(W,!0);e(W),Wt(2),e(T);var f=r(T,2),v=a(f),y=a(v,!0);e(v),Wt(2),e(f);var l=r(f,2),j=a(l),I=a(j,!0);e(j),Wt(2),e(l);var L=r(l,2),D=a(L),S=a(D,!0);e(D),Wt(2),e(L);var C=r(L,2),O=a(C),z=a(O,!0);e(O),Wt(2),e(C);var lt=r(C,2),J=a(lt),yt=a(J,!0);e(J),Wt(2),e(lt),e(g),p(()=>{o(A,t(H).messages.total),o(y,t(H).messages.user),o(I,t(H).messages.assistant),o(S,t(H).tools.totalCalls),o(z,t(H).tools.uniqueTools),_t(J,1,`text-lg font-bold ${t(H).messages.errors>0?"text-accent-pink":"text-text-primary"}`),o(yt,t(H).messages.errors)}),n(x,g)};m(ta,x=>{t(H)&&x(Ka)})}var ea=r(ta,2);{var Ya=x=>{var g=Ar(),T=a(g),W=a(T);e(T);var A=r(T,2),f=a(A);{var v=Q=>{var Y=Lr(),X=jt(Y),Z=r(X,2),ct=r(Z,2),Mt=r(ct,2);p((At,qt,Ht,Kt,je,R,U,dt)=>{st(X,`width: ${At??""}%`),ut(X,"title",`Output: ${qt??""}`),st(Z,`width: ${Ht??""}%`),ut(Z,"title",`Input: ${Kt??""}`),st(ct,`width: ${je??""}%`),ut(ct,"title",`Cache Write: ${R??""}`),st(Mt,`width: ${U??""}%`),ut(Mt,"title",`Cache Read: ${dt??""}`)},[()=>vt(t(c).output,t(c).totalTokens),()=>w(t(c).output),()=>vt(t(c).input,t(c).totalTokens),()=>w(t(c).input),()=>vt(t(c).cacheWrite,t(c).totalTokens),()=>w(t(c).cacheWrite),()=>vt(t(c).cacheRead,t(c).totalTokens),()=>w(t(c).cacheRead)]),n(Q,Y)},y=Q=>{var Y=Pr(),X=jt(Y),Z=r(X,2),ct=r(Z,2),Mt=r(ct,2);p((At,qt,Ht,Kt)=>{st(X,`width: ${t(K).output.pct??""}%`),ut(X,"title",`Output: ${At??""}`),st(Z,`width: ${t(K).input.pct??""}%`),ut(Z,"title",`Input: ${qt??""}`),st(ct,`width: ${t(K).cacheWrite.pct??""}%`),ut(ct,"title",`Cache Write: ${Ht??""}`),st(Mt,`width: ${t(K).cacheRead.pct??""}%`),ut(Mt,"title",`Cache Read: ${Kt??""}`)},[()=>M(t(K).output.cost),()=>M(t(K).input.cost),()=>M(t(K).cacheWrite.cost),()=>M(t(K).cacheRead.cost)]),n(Q,Y)};m(f,Q=>{t(P)==="tokens"?Q(v):Q(y,!1)})}e(A);var l=r(A,2),j=a(l),I=r(a(j),4),L=a(I,!0);e(I),e(j);var D=r(j,2),S=r(a(D),4),C=a(S,!0);e(S),e(D);var O=r(D,2),z=r(a(O),4),lt=a(z,!0);e(z),e(O);var J=r(O,2),yt=r(a(J),4),Nt=a(yt,!0);e(yt),e(J),e(l),e(g),p((Q,Y,X,Z)=>{o(W,`${t(P)==="tokens"?"Token":"Cost"} Breakdown`),o(L,Q),o(C,Y),o(lt,X),o(Nt,Z)},[()=>t(P)==="tokens"?w(t(c).output):M(t(K).output.cost),()=>t(P)==="tokens"?w(t(c).input):M(t(K).input.cost),()=>t(P)==="tokens"?w(t(c).cacheWrite):M(t(K).cacheWrite.cost),()=>t(P)==="tokens"?w(t(c).cacheRead):M(t(K).cacheRead.cost)]),n(x,g)};m(ea,x=>{t(K)&&t(c).totalCost>0&&x(Ya)})}var De=r(ea,2),Me=a(De),Se=a(Me),Ea=a(Se);e(Se);var Ga=r(Se,2);{var Ja=x=>{var g=zr(),T=jt(g);bt(T,21,()=>t(ot),Ct,(f,v)=>{const y=k(()=>t(P)==="tokens"?t(v).totalTokens:t(v).totalCost),l=k(()=>Math.max(t(y)/t(Ca)*100,1)),j=k(()=>new Date(t(v).date+"T12:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric"}));var I=Ir(),L=a(I),D=r(L,2),S=a(D),C=a(S),O=a(C,!0);e(C);var z=r(C,2),lt=a(z);e(z);var J=r(z,2),yt=a(J,!0);e(J),e(S),e(D),e(I),p((Nt,Q,Y)=>{st(L,`height: ${t(l)??""}%`),ut(L,"title",`${t(j)??""}: ${Nt??""}`),o(O,t(j)),o(lt,`${Q??""} tokens`),o(yt,Y)},[()=>t(P)==="tokens"?w(t(y)):M(t(y)),()=>w(t(v).totalTokens),()=>M(t(v).totalCost)]),n(f,I)}),e(T);var W=r(T,2);{var A=f=>{var v=Or(),y=a(v),l=a(y,!0);e(y);var j=r(y,2);{var I=S=>{var C=Br(),O=a(C,!0);e(C),p(z=>o(O,z),[()=>new Date(t(ot)[Math.floor(t(ot).length/2)].date+"T12:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric"})]),n(S,C)};m(j,S=>{t(ot).length>2&&S(I)})}var L=r(j,2),D=a(L,!0);e(L),e(v),p((S,C)=>{o(l,S),o(D,C)},[()=>new Date(t(ot)[0].date+"T12:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric"}),()=>new Date(t(ot)[t(ot).length-1].date+"T12:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric"})]),n(f,v)};m(W,f=>{t(ot).length>=2&&f(A)})}n(x,g)},Qa=x=>{var g=Fr();n(x,g)};m(Ga,x=>{t(ot).length>0?x(Ja):x(Qa,!1)})}e(Me);var aa=r(Me,2),ra=r(a(aa),2);{var Xa=x=>{var g=Nr();bt(g,21,()=>t(pe),Ct,(T,W)=>{const A=k(()=>t(pe)[0]?.cost||1),f=k(()=>vt(t(W).cost,t(A)));var v=Vr(),y=a(v),l=a(y),j=a(l,!0);e(l);var I=r(l,2),L=a(I,!0);e(I),e(y);var D=r(y,2),S=a(D);e(D);var C=r(D,2),O=a(C);e(C),e(v),p((z,lt)=>{o(j,t(W).name),o(L,z),st(S,`width: ${t(f)??""}%`),o(O,`${lt??""} tokens Ā· ${t(W).count??""} msgs`)},[()=>M(t(W).cost),()=>w(t(W).tokens)]),n(T,v)}),e(g),n(x,g)},Za=x=>{var g=qr();n(x,g)};m(ra,x=>{t(pe).length>0?x(Xa):x(Za,!1)})}var tr=r(ra,2);{var er=x=>{var g=Kr(),T=r(jt(g),2);bt(T,21,()=>t(ze),Ct,(W,A)=>{var f=Hr(),v=a(f),y=a(v,!0);e(v);var l=r(v,2),j=a(l);e(l),e(f),p((I,L)=>{o(y,t(A).name),o(j,`${I??""} Ā· ${L??""}`)},[()=>M(t(A).cost),()=>w(t(A).tokens)]),n(W,f)}),e(T),n(x,g)};m(tr,x=>{t(ze).length>0&&x(er)})}e(aa),e(De);var sa=r(De,2),Re=a(sa),oa=r(a(Re),2),de=a(oa),Ue=a(de);Ue.value=Ue.__value="tokens";var We=r(Ue);We.value=We.__value="cost";var da=r(We);da.value=da.__value="recent",e(de);var na=r(de,2),ar=a(na);e(na),e(oa),e(Re);var rr=r(Re,2);{var sr=x=>{var g=Yr();n(x,g)},or=x=>{var g=ys(),T=a(g);bt(T,17,()=>t(Pt).slice(0,50),f=>f.key,(f,v)=>{const y=k(()=>t(Ft)===t(v).key),l=k(()=>t(v).usage),j=k(()=>t(P)==="tokens"?t(l)?.totalTokens??0:t(l)?.totalCost??0),I=k(()=>t(P)==="tokens"?t(Pt)[0]?.usage?.totalTokens??1:t(Pt)[0]?.usage?.totalCost??1),L=k(()=>vt(t(j),t(I)));var D=fs(),S=a(D),C=a(S),O=a(C),z=a(O),lt=a(z,!0);e(z);var J=r(z,2);{var yt=R=>{var U=Er(),dt=a(U,!0);e(U),p(()=>o(dt,t(v).channel)),n(R,U)};m(J,R=>{t(v).channel&&R(yt)})}var Nt=r(J,2);{var Q=R=>{var U=Gr(),dt=a(U,!0);e(U),p(()=>o(dt,t(v).model)),n(R,U)};m(Nt,R=>{t(v).model&&R(Q)})}e(O);var Y=r(O,2),X=a(Y);e(Y);var Z=r(Y,2),ct=a(Z);{var Mt=R=>{var U=Xr(),dt=jt(U),Le=a(dt);e(dt);var Yt=r(dt,2),xt=a(Yt,!0);e(Yt);var St=r(Yt,2);{var ne=tt=>{var nt=Jr(),It=a(nt);e(nt),p(()=>o(It,`${t(l).messageCounts.total??""} msgs`)),n(tt,nt)};m(St,tt=>{t(l).messageCounts&&tt(ne)})}var Pe=r(St,2);{var Et=tt=>{var nt=Qr(),It=a(nt);e(nt),p(()=>o(It,`${t(l).messageCounts.errors??""} errors`)),n(tt,nt)};m(Pe,tt=>{t(l).messageCounts?.errors&&tt(Et)})}p((tt,nt)=>{o(Le,`${tt??""} tokens`),o(xt,nt)},[()=>w(t(l).totalTokens),()=>M(t(l).totalCost)]),n(R,U)};m(ct,R=>{t(l)&&R(Mt)})}var At=r(ct,2),qt=a(At,!0);e(At),e(Z),e(C);var Ht=r(C,2);e(S);var Kt=r(S,2);{var je=R=>{var U=bs(),dt=a(U);{var Le=xt=>{var St=Zr();n(xt,St)},Yt=xt=>{var St=_s(),ne=jt(St);{var Pe=_=>{var b=rs(),$=a(b),et=r(a($),2),E=a(et,!0);e(et);var F=r(et,2);{var V=N=>{var G=ts(),Ut=a(G,!0);e(G),p(Oe=>o(Ut,Oe),[()=>M(t(l).inputCost,4)]),n(N,G)};m(F,N=>{t(l).inputCost&&N(V)})}e($);var mt=r($,2),q=r(a(mt),2),B=a(q,!0);e(q);var at=r(q,2);{var kt=N=>{var G=es(),Ut=a(G,!0);e(G),p(Oe=>o(Ut,Oe),[()=>M(t(l).outputCost,4)]),n(N,G)};m(at,N=>{t(l).outputCost&&N(kt)})}e(mt);var wt=r(mt,2),$t=r(a(wt),2),Ae=a($t,!0);e($t);var Gt=r($t,2);{var Ie=N=>{var G=as(),Ut=a(G);e(G),p(()=>o(Ut,`${t(l).messageCounts.total??""} messages`)),n(N,G)};m(Gt,N=>{t(l).messageCounts&&N(Ie)})}e(wt);var ie=r(wt,2),Jt=r(a(ie),2),Rt=a(Jt,!0);e(Jt);var Bt=r(Jt,2),Be=a(Bt);e(Bt),e(ie),e(b),p((N,G,Ut)=>{o(E,N),o(B,G),o(Ae,Ut),o(Rt,t(l).toolUsage?.totalCalls??0),o(Be,`${t(l).toolUsage?.uniqueTools??0??""} unique`)},[()=>w(t(l).input),()=>w(t(l).output),()=>ka(t(l).durationMs)]),n(_,b)};m(ne,_=>{t(l)&&_(Pe)})}var Et=r(ne,2),tt=a(Et);{var nt=_=>{var b=ss(),$=a(b);e(b),p(()=>o($,`agent:${t(v).agentId??""}`)),n(_,b)};m(tt,_=>{t(v).agentId&&_(nt)})}var It=r(tt,2);{var dr=_=>{var b=os(),$=a(b);e(b),p(()=>o($,`provider:${t(v).modelProvider??t(v).providerOverride??""}`)),n(_,b)};m(It,_=>{(t(v).modelProvider||t(v).providerOverride)&&_(dr)})}var ia=r(It,2);{var nr=_=>{var b=ds(),$=a(b);e(b),p(()=>o($,`model:${t(v).model??""}`)),n(_,b)};m(ia,_=>{t(v).model&&_(nr)})}var va=r(ia,2),ir=a(va,!0);e(va),e(Et);var la=r(Et,2);{var vr=_=>{var b=is(),$=r(a(b),2);bt($,21,()=>t(l).modelUsage.slice(0,6),Ct,(et,E)=>{var F=ns(),V=a(F),mt=a(V,!0);e(V);var q=r(V,2),B=a(q);e(q),e(F),p((at,kt)=>{o(mt,t(E).model??"unknown"),o(B,`${at??""} Ā· ${kt??""}`)},[()=>M(t(E).totals.totalCost),()=>w(t(E).totals.totalTokens)]),n(et,F)}),e($),e(b),n(_,b)};m(la,_=>{t(l)?.modelUsage&&t(l).modelUsage.length>0&&_(vr)})}var ca=r(la,2);{var lr=_=>{var b=ls(),$=r(a(b),2);bt($,21,()=>t(l).toolUsage.tools.slice(0,8),Ct,(et,E)=>{var F=vs(),V=a(F);e(F),p(()=>o(V,`${t(E).name??""} Ć${t(E).count??""}`)),n(et,F)}),e($),e(b),n(_,b)};m(ca,_=>{t(l)?.toolUsage?.tools&&t(l).toolUsage.tools.length>0&&_(lr)})}var xa=r(ca,2);{var cr=_=>{var b=xs(),$=r(a(b),2);bt($,21,()=>t(ht),Ct,(F,V)=>{const mt=k(()=>Math.max(...t(ht).map(at=>at.totalTokens),1)),q=k(()=>Math.max(t(V).totalTokens/t(mt)*100,2));var B=cs();p((at,kt)=>{st(B,`height: ${t(q)??""}%`),ut(B,"title",`${at??""}: ${kt??""} tokens`)},[()=>new Date(t(V).timestamp).toLocaleString(),()=>w(t(V).totalTokens)]),n(F,B)}),e($);var et=r($,2),E=a(et);e(et),e(b),p((F,V)=>o(E,`${t(ht).length??""} turns Ā·
|
|
9
|
+
${F??""} total Ā·
|
|
10
|
+
${V??""}`),[()=>w(t(ht)[t(ht).length-1]?.cumulativeTokens??0),()=>M(t(ht)[t(ht).length-1]?.cumulativeCost??0)]),n(_,b)};m(xa,_=>{t(ht).length>=2&&_(cr)})}var xr=r(xa,2);{var ur=_=>{var b=gs(),$=a(b),et=a($);e($);var E=r($,2),F=a(E);bt(F,17,()=>t(it).slice(0,30),Ct,(q,B)=>{const at=k(()=>t(B).role==="user"),kt=k(()=>t(B).role==="assistant");var wt=ps();_t(wt,1,"flex gap-2 text-xs py-1 ");var $t=a(wt),Ae=a($t,!0);e($t);var Gt=r($t,2),Ie=a(Gt,!0);e(Gt);var ie=r(Gt,2);{var Jt=Rt=>{var Bt=us(),Be=a(Bt,!0);e(Bt),p(N=>o(Be,N),[()=>w(t(B).tokens)]),n(Rt,Bt)};m(ie,Rt=>{t(B).tokens&&Rt(Jt)})}e(wt),p(Rt=>{_t($t,1,`font-medium flex-shrink-0 w-14 text-right
|
|
11
|
+
${t(at)?"text-accent-cyan":t(kt)?"text-accent-purple":"text-accent-amber"}`),o(Ae,t(at)?"You":t(kt)?"AI":"Tool"),o(Ie,Rt)},[()=>t(B).content?.slice(0,200)??""]),n(q,wt)});var V=r(F,2);{var mt=q=>{var B=ms(),at=a(B);e(B),p(()=>o(at,`+${t(it).length-30} more messages`)),n(q,B)};m(V,q=>{t(it).length>30&&q(mt)})}e(E),e(b),p(()=>o(et,`Conversation (${t(it).length??""} messages)`)),n(_,b)};m(xr,_=>{t(it)&&t(it).length>0&&_(ur)})}p(()=>o(ir,t(v).key)),n(xt,St)};m(dt,xt=>{t(ce)?xt(Le):xt(Yt,!1)})}e(U),gt("click",U,xt=>xt.stopPropagation()),n(R,U)};m(Kt,R=>{t(y)&&R(je)})}e(D),p((R,U)=>{_t(D,1,`w-full text-left rounded-lg p-3 transition-all border
|
|
12
|
+
${t(y)?"border-accent-cyan/50 bg-accent-cyan/5 glow-cyan":"border-transparent hover:bg-bg-hover"}`),o(lt,R),_t(X,1,`h-full rounded-full transition-all ${t(P)==="tokens"?"bg-accent-cyan/60":"bg-accent-purple/60"}`),st(X,`width: ${t(L)??""}%`),o(qt,U),_t(Ht,0,`w-4 h-4 text-text-muted flex-shrink-0 mt-1 transition-transform ${t(y)?"rotate-180":""}`)},[()=>wa(t(v)),()=>ya(t(v).updatedAt)]),gt("click",D,()=>$a(t(v).key)),n(f,D)});var W=r(T,2);{var A=f=>{var v=hs(),y=a(v);e(v),p(()=>o(y,`Showing 50 of ${t(Pt).length??""} sessions. Narrow the date range for more detail.`)),n(f,v)};m(W,f=>{t(Pt).length>50&&f(A)})}e(g),n(x,g)};m(rr,x=>{t(Pt).length===0?x(sr):x(or,!1)})}e(sa),p((x,g,T,W,A,f,v,y)=>{o(Vt,x),o(Ia,`${g??""} in Ā· ${T??""} out`),o(Ba,W),o(Oa,`${t(le)?.currency??"USD"??""} Ā· ${A??""} avg/session`),o(za,t(ft).length),_t(oe,1,`text-2xl font-bold ${t(ae)>.6?"text-accent-green":t(ae)>.3?"text-accent-amber":"text-accent-pink"}`),o(qa,f),o(Ha,`${v??""} cached Ā· ${y??""} uncached`),o(Ea,`Daily ${t(P)==="tokens"?"Token":"Cost"} Usage`),o(ar,`${t(ft).length??""} total`)},[()=>w(t(c).totalTokens),()=>w(t(c).input),()=>w(t(c).output),()=>M(t(c).totalCost),()=>M(t(c).totalCost/Math.max(t(ft).length,1),3),()=>t(ae)>0?`${(t(ae)*100).toFixed(1)}%`:"ā",()=>w(t(c).cacheRead),()=>w(t(c).input)]),$r(de,()=>t(xe),x=>h(xe,x)),n(s,d)},Aa=s=>{var d=ws();n(s,d)};m(Wa,s=>{ve.state.status!=="connected"?s(ja):t(Tt)&&!t(c)?s(La,1):t(c)?s(Pa,2):t(Tt)||s(Aa,3)})}e(Fe),e(me),p(()=>{_t(be,1,`px-3 py-1.5 text-xs font-medium transition-all
|
|
13
|
+
${t(P)==="tokens"?"bg-accent-cyan/20 text-accent-cyan":"text-text-muted hover:text-text-secondary"}`),_t(Ne,1,`px-3 py-1.5 text-xs font-medium transition-all
|
|
14
|
+
${t(P)==="cost"?"bg-accent-purple/20 text-accent-purple":"text-text-muted hover:text-text-secondary"}`),re.disabled=t(Tt)||ve.state.status!=="connected"}),gt("click",be,()=>h(P,"tokens")),gt("click",Ne,()=>h(P,"cost")),gt("click",re,()=>ue()),ga(ye,()=>t(Ot),s=>h(Ot,s)),ga(He,()=>t(zt),s=>h(zt,s)),gt("click",Ke,()=>ee(1)),gt("click",Ye,()=>ee(7)),gt("click",Ee,()=>ee(30)),gt("click",Ma,()=>ee(90)),n(_a,me),fr()}pr(["click"]);export{Ls as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as m}from"../chunks/tddw2aQM.js";export{m as component};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{d as aa,a as rt,b as l,f as n,s as d,c as ra,e as Se,t as sa}from"../chunks/B2A7gHtL.js";import{p as ia,s as S,a as Ut,u as da,b as Yt,t as _,c as la,e as oa,d as o,g as t,f as s,$ as na,h as a,n as Et,r as e,i as lt,j as qt,k as va}from"../chunks/qR_TM3YX.js";import{i as L}from"../chunks/DpBBTLWw.js";import{g as ca,e as ut,a as st,s as gt,i as wt,r as xa}from"../chunks/D6tSezzf.js";import{h as ua}from"../chunks/CXQ1lKJR.js";import{b as Ae}from"../chunks/nnazh41B.js";import{i as pa,s as fa,b as ma}from"../chunks/DVP7Iy08.js";import{g as ba}from"../chunks/Be_uRYmX.js";import{f as Ce}from"../chunks/DPrxUVm_.js";var _a=ra('<svg class="w-3.5 h-3.5 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>'),ga=n('<span class="inline-block mt-1 px-1.5 py-0.5 rounded text-[9px] uppercase tracking-wider font-semibold bg-accent-purple/20 text-accent-purple">default</span>'),ya=n('<button><div class="flex items-center gap-2"><span class="text-lg"> </span> <div class="min-w-0 flex-1"><div> </div> <div class="text-[10px] text-text-muted font-mono"> </div></div></div> <!></button>'),ha=n("<option> </option>"),ka=n('<div class="md:hidden flex-shrink-0 p-3 border-b border-border-default bg-bg-secondary/30"><select class="w-full px-3 py-2 text-sm rounded-lg border border-border-default bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan"><option disabled="">Select agentā¦</option><!></select></div>'),wa=n('<div class="flex-1 flex items-center justify-center text-text-muted">Select an agent to view details</div>'),Sa=n('<span class="px-1.5 py-0.5 rounded bg-accent-purple/20 text-accent-purple text-[10px] uppercase font-semibold">default</span>'),Aa=n("<button> </button>"),Ca=n("<option> </option>"),ja=n("<option> </option>"),Fa=n(`<div class="p-6 space-y-6"><div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1">Overview</h3> <p class="text-xs text-text-muted mb-4">Workspace paths and identity metadata.</p> <div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4"><div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1">Workspace</div> <div class="text-sm font-mono text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1">Primary Model</div> <div class="text-sm font-mono text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1">Identity Name</div> <div class="text-sm text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1">Default</div> <div class="text-sm text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1">Identity Emoji</div> <div class="text-lg"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-1">Skills Filter</div> <div class="text-sm text-text-primary"> </div></div></div></div> <div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1">Model Selection</h3> <p class="text-xs text-text-muted mb-4">Primary model and fallback configuration.</p> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"><div><label class="block text-xs text-text-muted mb-1.5">Primary model (default)</label> <select class="w-full bg-bg-input border border-border-default rounded-lg px-3 py-2 text-sm text-text-primary
|
|
2
|
+
focus:outline-none focus:border-accent-cyan transition-all"><option>ā select ā</option><!><!></select></div> <div><label class="block text-xs text-text-muted mb-1.5">Fallbacks (comma-separated)</label> <input placeholder="provider/model, provider/model" class="w-full bg-bg-input border border-border-default rounded-lg px-3 py-2 text-sm text-text-primary
|
|
3
|
+
placeholder:text-text-muted/40 focus:outline-none focus:border-accent-cyan transition-all"/></div></div> <div class="flex justify-end gap-2 mt-4"><button class="px-3 py-1.5 rounded-lg text-xs border border-border-default text-text-secondary hover:text-text-primary transition-all">Reload Config</button> <button class="px-4 py-1.5 rounded-lg text-xs font-medium bg-accent-cyan/20 text-accent-cyan border border-accent-cyan/30
|
|
4
|
+
hover:bg-accent-cyan/30 transition-all disabled:opacity-50"> </button></div></div></div>`),La=n('<div class="px-3 py-1.5 text-[10px] font-mono text-text-muted/60 truncate border-b border-border-default/50"> </div>'),Ma=n('<div class="p-4 text-text-muted text-sm">Loadingā¦</div>'),Wa=n('<div class="p-4 text-text-muted text-sm">No workspace files</div>'),Ia=n('<span class="px-1 py-0.5 rounded text-[9px] bg-amber-500/20 text-amber-400">missing</span>'),Ra=n('<button><span class="text-xs"> </span> <div class="min-w-0 flex-1"><div class="truncate font-mono text-xs"> </div> <div class="text-[10px] text-text-muted"> <!></div></div> <!></button>'),Ta=n('<div class="flex-1 flex items-center justify-center text-text-muted text-sm">Select a file to view or edit</div>'),Na=n('<div class="flex-1 flex items-center justify-center text-text-muted text-sm"> </div>'),Oa=n('<span class="w-2 h-2 rounded-full bg-accent-amber"></span>'),Da=n('<div class="flex items-center justify-between px-4 py-2 border-b border-border-default bg-bg-secondary/30 flex-shrink-0"><div class="flex items-center gap-2"><span class="text-sm 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="flex-1 w-full p-4 bg-bg-primary text-text-primary font-mono text-sm resize-none focus:outline-none border-none" spellcheck="false"></textarea>',1),Pa=n('<div class="flex-1 flex min-h-0 h-full"><div class="w-56 border-r border-border-default bg-bg-tertiary/30 overflow-y-auto flex-shrink-0"><div class="p-3 border-b border-border-default flex items-center justify-between"><span class="text-xs font-medium text-text-muted">Core Files</span> <button class="text-[10px] text-text-muted hover:text-accent-cyan transition-all"> </button></div> <!> <!></div> <div class="flex-1 flex flex-col min-w-0"><!></div></div>'),Ba=n('<span class="ml-1 px-1.5 py-0.5 rounded text-[10px] bg-accent-cyan/20 text-accent-cyan font-mono"> </span>'),Ea=n('<div class="flex items-center justify-between py-1"><span class="text-xs font-mono text-text-secondary"> </span> <span> </span></div>'),Ja=n('<div class="rounded-lg border border-border-default bg-bg-tertiary/30 p-3"><div class="text-xs font-semibold text-text-primary mb-2 uppercase tracking-wider"> </div> <div class="space-y-1"></div></div>'),za=n('<div class="p-6 space-y-4"><div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1">Tool Policy</h3> <p class="text-xs text-text-muted mb-4">Tool access configuration for this agent. <!></p> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"></div></div></div>'),$a=n('<div class="text-text-muted text-sm">Loading skillsā¦</div>'),Ga=n('<div class="text-text-muted text-sm">No skills installed.</div>'),Va=n('<span class="px-1 py-0.5 rounded text-[9px] bg-accent-purple/20 text-accent-purple">bundled</span>'),Ka=n('<div class="text-[10px] text-text-muted font-mono truncate"> </div>'),Ua=n('<div class="rounded-lg border border-border-default bg-bg-tertiary/30 p-3"><div class="flex items-center gap-2 mb-1"><span class="text-xs">ā”</span> <span class="text-sm font-medium text-text-primary"> </span> <!></div> <!></div>'),Ya=n('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"></div>'),qa=n('<div class="p-6 space-y-4"><div class="glass rounded-xl border border-border-default p-5"><div class="flex items-center justify-between mb-4"><div><h3 class="text-sm font-semibold text-text-primary">Skills</h3> <p class="text-xs text-text-muted">Installed skills available to this agent.</p></div> <button class="px-3 py-1.5 rounded-lg text-xs border border-border-default text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 transition-all disabled:opacity-50"> </button></div> <!></div></div>'),Ha=n('<div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1">Agent Context</h3> <p class="text-xs text-text-muted mb-4">Workspace, identity, and model configuration.</p> <div class="grid grid-cols-2 gap-3"><div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-0.5">Workspace</div> <div class="text-xs font-mono text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-0.5">Model</div> <div class="text-xs font-mono text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-0.5">Identity</div> <div class="text-xs font-mono text-text-primary"> </div></div> <div><div class="text-[10px] uppercase tracking-wider text-text-muted mb-0.5">Default</div> <div class="text-xs font-mono text-text-primary"> </div></div></div></div>'),Qa=n('<div class="text-text-muted text-sm">Load channels to see live status.</div>'),Xa=n('<div class="text-text-muted text-sm">No channels found.</div>'),Za=n('<div class="flex items-center justify-between py-1.5 border-b border-border-default/30 last:border-0"><div><div class="text-sm font-medium text-text-primary"> </div> <div class="text-[10px] text-text-muted"> </div></div> <span></span></div>'),tr=n('<div class="space-y-2"></div>'),er=n('<div class="p-6 space-y-4"><div class="grid grid-cols-1 lg:grid-cols-2 gap-4"><!> <div class="glass rounded-xl border border-border-default p-5"><div class="flex items-center justify-between mb-4"><div><h3 class="text-sm font-semibold text-text-primary">Channels</h3> <p class="text-xs text-text-muted">Gateway-wide channel status.</p></div> <button class="px-3 py-1.5 rounded-lg text-xs border border-border-default text-text-secondary hover:text-accent-cyan transition-all disabled:opacity-50"> </button></div> <!></div></div></div>'),ar=n('<div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1">Agent Context</h3> <p class="text-xs text-text-muted mb-3">Workspace and scheduling targets.</p> <div class="grid grid-cols-2 gap-3 text-xs"><div><span class="text-text-muted">Workspace</span> <div class="font-mono text-text-primary"> </div></div> <div><span class="text-text-muted">Model</span> <div class="font-mono text-text-primary"> </div></div></div></div>'),rr=n('<div class="text-text-muted text-sm">Loadingā¦</div>'),sr=n('<div class="text-text-muted text-sm">No jobs assigned to this agent.</div>'),ir=n('<span class="px-1.5 py-0.5 rounded bg-bg-tertiary font-mono"> </span>'),dr=n('<span class="px-1.5 py-0.5 rounded bg-bg-tertiary font-mono"> </span>'),lr=n('<div class="rounded-lg border border-border-default bg-bg-tertiary/30 p-3"><div class="flex items-center justify-between mb-1"><span class="text-sm font-medium text-text-primary"> </span> <span> </span></div> <div class="flex items-center gap-2 text-[10px] text-text-muted"><span class="px-1.5 py-0.5 rounded bg-bg-tertiary font-mono"> </span> <!> <!></div></div>'),or=n('<div class="space-y-2"></div>'),nr=n('<div class="p-6 space-y-4"><div class="grid grid-cols-1 lg:grid-cols-2 gap-4"><!> <div class="glass rounded-xl border border-border-default p-5"><div class="flex items-center justify-between mb-3"><div><h3 class="text-sm font-semibold text-text-primary">Scheduler</h3> <p class="text-xs text-text-muted">Gateway cron status.</p></div> <button class="px-3 py-1.5 rounded-lg text-xs border border-border-default text-text-secondary hover:text-accent-cyan transition-all disabled:opacity-50"> </button></div> <div class="grid grid-cols-3 gap-4"><div class="text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-[10px] text-text-muted uppercase">Enabled</div></div> <div class="text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-[10px] text-text-muted uppercase">Jobs</div></div> <div class="text-center"><div class="text-lg font-bold text-text-primary"> </div> <div class="text-[10px] text-text-muted uppercase">Next Wake</div></div></div></div></div> <div class="glass rounded-xl border border-border-default p-5"><h3 class="text-sm font-semibold text-text-primary mb-1">Agent Cron Jobs</h3> <p class="text-xs text-text-muted mb-4">Scheduled jobs targeting this agent.</p> <!></div></div>'),vr=n('<div class="flex-shrink-0 border-b border-border-default"><div class="px-4 md:px-6 pt-4 pb-3 flex items-center justify-between flex-wrap gap-2"><div class="flex items-center gap-3"><span class="text-2xl"> </span> <div><h2 class="text-lg font-bold text-text-primary"> </h2> <p class="text-xs text-text-muted">Agent workspace and routing.</p></div></div> <div class="flex items-center gap-2 text-xs text-text-muted"><span class="font-mono"> </span> <!></div></div> <div class="flex gap-0 px-4 md:px-6 overflow-x-auto"></div></div> <div class="flex-1 overflow-y-auto"><!></div>',1),cr=n(`<div class="h-full flex flex-col overflow-hidden"><div class="px-4 md:px-6 py-4 border-b border-border-default flex items-center justify-between flex-shrink-0"><div><h1 class="text-xl font-bold text-text-primary flex items-center gap-2"><span class="text-accent-cyan">š¤</span> Agents</h1> <p class="text-sm text-text-muted">Manage agent workspaces, tools, and identities.</p></div> <button class="px-3 py-1.5 rounded-lg text-sm border border-border-default hover:border-accent-cyan
|
|
5
|
+
text-text-secondary hover:text-accent-cyan transition-all disabled:opacity-50 flex items-center gap-1.5"><!> Refresh</button></div> <div class="flex-1 flex min-h-0 overflow-hidden"><div class="hidden md:flex w-48 border-r border-border-default bg-bg-secondary/30 flex-col flex-shrink-0"><div class="p-3 border-b border-border-default"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Agents</div> <div class="text-xs text-text-muted mt-0.5"> </div></div> <div class="flex-1 overflow-y-auto"></div></div> <div class="flex-1 flex flex-col min-w-0 overflow-hidden"><!> <!></div></div></div>`);function hr(je,Fe){ia(Fe,!0);const Le=ca(),ct=ba();let mt=S(Ut([])),St=S(""),F=S(null),Jt=S(!1),pt=S("overview"),At=S(null),zt=S(null),Me=S(null),Ht=S(Ut([])),ot=S(""),Wt=S(""),Ct=S(!1),jt=S(null),It=S(!1),nt=S(null),Ft=S(""),bt=S(""),Qt=S(!1),Rt=S(!1),$t=S(Ut([])),Tt=S(!1),Nt=S(null),Gt=S(!1),Xt=S(Ut([])),Ot=S(null),Dt=S(!1),$=lt(()=>t(mt).find(r=>r.id===t(F))??null),H=lt(()=>{if(!t($))return null;const r=ne(t($).id),i=t(jt)?.workspace||r?.workspace||t($).workspace||"/home/ihoner",u=We(r?.model??t($).model),M=t(At)?.name||t($).identity?.name||t($).name||t($).id,g=t(At)?.emoji||t($).identity?.emoji||"-",G=r?.skills??t($).skills,V=Array.isArray(G)?`${G.length} selected`:"all skills",Q=t($).id===t(St);return{workspace:i,model:u,identityName:M,identityEmoji:g,skillsLabel:V,isDefault:Q}}),Vt=lt(()=>t(bt)!==t(Ft)&&t(nt)!==null),oe=lt(()=>t(Xt).filter(r=>r.agentId===t(F)||!r.agentId&&t(F)===t(St)));function ne(r){return t(zt)?(t(zt).agents?.list??[]).find(g=>g?.id===r)??null:null}function We(r){if(!r)return"-";if(typeof r=="string")return r.trim()||"-";if(typeof r=="object"&&r){const i=r,u=typeof i.primary=="string"?i.primary.trim():"";if(u){const M=Array.isArray(i.fallbacks)?i.fallbacks.length:0;return M>0?`${u} (+${M} fallback)`:u}}return"-"}function ve(r){return(t(At)?.emoji||r.identity?.emoji||"").trim()||"š¤"}function Ie(r){return r?r<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(1)} KB`:`${(r/1048576).toFixed(1)} MB`:"-"}function Re(r){return r.endsWith(".md")?"š":r.endsWith(".json")?"š":r.endsWith(".yml")||r.endsWith(".yaml")?"āļø":r.endsWith(".ts")||r.endsWith(".js")?"š":"š"}const Te=[{key:"overview",label:"Overview",icon:"š"},{key:"files",label:"Files",icon:"š"},{key:"tools",label:"Tools",icon:"š§"},{key:"skills",label:"Skills",icon:"ā”"},{key:"channels",label:"Channels",icon:"š¬"},{key:"cron",label:"Cron Jobs",icon:"ā°"}],Ne=[{id:"fs",label:"Files",tools:["read","write","edit","apply_patch"]},{id:"runtime",label:"Runtime",tools:["exec","process"]},{id:"web",label:"Web",tools:["web_search","web_fetch"]},{id:"sessions",label:"Sessions",tools:["sessions_list","sessions_history","sessions_send","sessions_spawn","session_status"]},{id:"ui",label:"UI",tools:["browser","canvas"]},{id:"messaging",label:"Messaging",tools:["message"]},{id:"automation",label:"Automation",tools:["cron","gateway"]},{id:"nodes",label:"Nodes",tools:["nodes"]},{id:"agents",label:"Agents",tools:["agents_list"]},{id:"media",label:"Media",tools:["image","tts"]}];async function ce(){o(Jt,!0);try{const r=await st.call("agents.list",{});o(mt,r?.agents??[],!0),o(St,r?.defaultId??"",!0),!t(F)&&t(mt).length&&o(F,t(St)||t(mt)[0]?.id||null,!0),Zt(),t(F)&&(xe(t(F)),te(t(F)))}catch(r){ct.error("Failed to load agents",String(r))}finally{o(Jt,!1)}}async function xe(r){try{const i=await st.call("agent.identity.get",{agentId:r});o(At,i??null,!0)}catch{o(At,null)}}async function Zt(){try{const[r,i,u]=await Promise.all([st.call("config.get",{}),st.call("config.schema",{}),st.call("models.list",{})]);o(zt,r?.config??r,!0),o(Me,i,!0);const M=u?.models??[];if(o(Ht,Array.isArray(M)?M.map(g=>({value:typeof g=="string"?g:g.id||g.value||String(g),label:typeof g=="string"?g:g.label||g.alias||g.id||String(g)})):[],!0),t(F)){const G=ne(t(F))?.model??t(zt)?.agents?.defaults?.model;if(typeof G=="string")o(ot,G,!0),o(Wt,"");else if(G&&typeof G=="object"){const V=G;o(ot,typeof V.primary=="string"?V.primary:"",!0),o(Wt,Array.isArray(V.fallbacks)?V.fallbacks.join(", "):"",!0)}}}catch(r){console.error("Config load error:",r)}}async function te(r){o(It,!0),o(nt,null),o(Ft,""),o(bt,"");try{const i=await st.call("agents.files.list",{agentId:r});o(jt,i??null,!0)}catch(i){ct.error("Failed to load files",String(i))}finally{o(It,!1)}}async function Oe(r){if(t(F)){o(nt,r,!0),o(Qt,!0);try{const i=await st.call("agents.files.get",{agentId:t(F),name:r});o(Ft,i?.file?.content??"",!0),o(bt,t(Ft),!0)}catch(i){ct.error("Failed to load file",String(i))}finally{o(Qt,!1)}}}async function De(){if(!(!t(F)||!t(nt)||t(Rt))){o(Rt,!0);try{await st.call("agents.files.set",{agentId:t(F),name:t(nt),content:t(bt)}),o(Ft,t(bt),!0),ct.success("Saved",`${t(nt)} saved successfully`)}catch(r){ct.error("Save failed",String(r))}finally{o(Rt,!1)}}}async function ue(){o(Tt,!0);try{const r=await st.call("skills.status",{});o($t,r?.skills??[],!0)}catch(r){ct.error("Failed to load skills",String(r))}finally{o(Tt,!1)}}async function pe(){o(Gt,!0);try{const r=await st.call("channels.status",{});o(Nt,r,!0)}catch(r){ct.error("Failed to load channels",String(r))}finally{o(Gt,!1)}}async function fe(){o(Dt,!0);try{const[r,i]=await Promise.all([st.call("cron.status",{}),st.call("cron.list",{})]);o(Ot,r,!0),o(Xt,i?.jobs??[],!0)}catch(r){ct.error("Failed to load cron",String(r))}finally{o(Dt,!1)}}async function Pe(){if(!(t(Ct)||!t(F))){o(Ct,!0);try{const r=t(Wt).split(",").map(u=>u.trim()).filter(Boolean),i=r.length>0?{primary:t(ot),fallbacks:r}:t(ot)||void 0;await st.call("config.set",{path:["agents","list"],match:{id:t(F)},patch:{model:i}}),ct.success("Saved","Agent config updated"),await Zt()}catch(r){ct.error("Save failed",String(r))}finally{o(Ct,!1)}}}function me(r){o(F,r,!0),o(pt,"overview"),o(nt,null),o(At,null),xe(r),te(r)}function Be(r){o(pt,r,!0),r==="skills"&&t($t).length===0&&Yt(()=>ue()),r==="channels"&&!t(Nt)&&Yt(()=>pe()),r==="cron"&&t(Xt).length===0&&Yt(()=>fe())}function Ee(r){const i=t($);if(!i?.tools)return"default";const u=i.tools.deny??[],M=i.tools.allow??[],g=i.tools.alsoAllow??[];return u.includes(r)||u.includes("*")?"denied":M.includes(r)||M.includes("*")||g.includes(r)?"allowed":"default"}function Je(r){const i=r.schedule;return i?i.kind==="cron"&&i.expr?`cron: ${i.expr}`:i.kind==="every"&&i.everyMs?`every ${Math.round(i.everyMs/6e4)}m`:i.kind==="at"&&i.at?`at: ${new Date(i.at).toLocaleString()}`:JSON.stringify(i):"-"}da(()=>{Le.state.status==="connected"&&Yt(()=>ce())});var ee=cr();ua("h3sa6j",r=>{oa(()=>{na.title="Agents ā Cortex"})});var ae=a(ee),Kt=s(a(ae),2),ze=a(Kt);{var $e=r=>{var i=_a();l(r,i)};L(ze,r=>{t(Jt)&&r($e)})}Et(),e(Kt),e(ae);var be=s(ae,2),re=a(be),se=a(re),_e=s(a(se),2),Ge=a(_e);e(_e),e(se);var ge=s(se,2);ut(ge,21,()=>t(mt),r=>r.id,(r,i)=>{var u=ya(),M=a(u),g=a(M),G=a(g,!0);e(g);var V=s(g,2),Q=a(V),xt=a(Q,!0);e(Q);var Lt=s(Q,2),yt=a(Lt,!0);e(Lt),e(V),e(M);var Pt=s(M,2);{var ie=ht=>{var de=ga();l(ht,de)};L(Pt,ht=>{t(i).id===t(St)&&ht(ie)})}e(u),_(ht=>{gt(u,1,`w-full text-left px-3 py-3 transition-all border-l-2 group
|
|
6
|
+
${t(F)===t(i).id?"border-accent-cyan bg-accent-cyan/5":"border-transparent hover:bg-bg-hover"}`),d(G,ht),gt(Q,1,`text-sm font-medium truncate ${t(F)===t(i).id?"text-accent-cyan":"text-text-primary group-hover:text-text-primary"}`),d(xt,t(i).identity?.name||t(i).name||t(i).id),d(yt,t(i).id)},[()=>ve(t(i))]),rt("click",u,()=>me(t(i).id)),l(r,u)}),e(ge),e(re);var ye=s(re,2),he=a(ye);{var Ve=r=>{var i=ka(),u=a(i),M=a(u);M.value=M.__value="";var g=s(M);ut(g,17,()=>t(mt),V=>V.id,(V,Q)=>{var xt=ha(),Lt=a(xt);e(xt);var yt={};_(()=>{d(Lt,`${t(Q).identity?.name??t(Q).name??t(Q).id??""}
|
|
7
|
+
${t(Q).id===t(St)?" (default)":""}`),yt!==(yt=t(Q).id)&&(xt.value=(xt.__value=t(Q).id)??"")}),l(V,xt)}),e(u);var G;pa(u),e(i),_(()=>{G!==(G=t(F)??"")&&(u.value=(u.__value=t(F)??"")??"",fa(u,t(F)??""))}),rt("change",u,V=>me(V.currentTarget.value)),l(r,i)};L(he,r=>{t(mt).length>0&&r(Ve)})}var Ke=s(he,2);{var Ue=r=>{var i=wa();l(r,i)},Ye=r=>{var i=vr(),u=qt(i),M=a(u),g=a(M),G=a(g),V=a(G,!0);e(G);var Q=s(G,2),xt=a(Q),Lt=a(xt,!0);e(xt),Et(2),e(Q),e(g);var yt=s(g,2),Pt=a(yt),ie=a(Pt,!0);e(Pt);var ht=s(Pt,2);{var de=y=>{var f=Sa();l(y,f)};L(ht,y=>{t(H)?.isDefault&&y(de)})}e(yt),e(M);var ke=s(M,2);ut(ke,21,()=>Te,wt,(y,f)=>{var h=Aa(),R=a(h,!0);e(h),_(()=>{gt(h,1,`px-4 py-2 text-sm font-medium transition-all border-b-2 whitespace-nowrap
|
|
8
|
+
${t(pt)===t(f).key?"border-accent-cyan text-accent-cyan bg-accent-cyan/5":"border-transparent text-text-muted hover:text-text-secondary hover:border-border-default"}`),d(R,t(f).label)}),rt("click",h,()=>Be(t(f).key)),l(y,h)}),e(ke),e(u);var we=s(u,2),qe=a(we);{var He=y=>{var f=Fa(),h=a(f),R=s(a(h),4),B=a(R),tt=s(a(B),2),K=a(tt,!0);e(tt),e(B);var W=s(B,2),U=s(a(W),2),X=a(U,!0);e(U),e(W);var A=s(W,2),E=s(a(A),2),T=a(E,!0);e(E),e(A);var k=s(A,2),O=s(a(k),2),D=a(O,!0);e(O),e(k);var N=s(k,2),v=s(a(N),2),c=a(v,!0);e(v),e(N);var w=s(N,2),C=s(a(w),2),p=a(C,!0);e(C),e(w),e(R),e(h);var j=s(h,2),I=s(a(j),4),x=a(I),m=s(a(x),2),P=a(m);P.value=P.__value="";var b=s(P);ut(b,17,()=>t(Ht),wt,(at,vt)=>{var ft=Ca(),Mt=a(ft,!0);e(ft);var dt={};_(()=>{d(Mt,t(vt).label),dt!==(dt=t(vt).value)&&(ft.value=(ft.__value=t(vt).value)??"")}),l(at,ft)});var Y=s(b);{var q=at=>{var vt=ja(),ft=a(vt);e(vt);var Mt={};_(()=>{d(ft,`${t(ot)??""} (current)`),Mt!==(Mt=t(ot))&&(vt.value=(vt.__value=t(ot))??"")}),l(at,vt)},z=lt(()=>t(ot)&&!t(Ht).some(at=>at.value===t(ot)));L(Y,at=>{t(z)&&at(q)})}e(m),e(x);var et=s(x,2),it=s(a(et),2);xa(it),e(et),e(I);var _t=s(I,2),J=a(_t),Z=s(J,2),Bt=a(Z,!0);e(Z),e(_t),e(j),e(f),_(()=>{d(K,t(H)?.workspace),d(X,t(H)?.model),d(T,t(H)?.identityName),d(D,t(H)?.isDefault?"yes":"no"),d(c,t(H)?.identityEmoji),d(p,t(H)?.skillsLabel),J.disabled=t(Ct),Z.disabled=t(Ct),d(Bt,t(Ct)?"Savingā¦":"Save")}),ma(m,()=>t(ot),at=>o(ot,at)),Ae(it,()=>t(Wt),at=>o(Wt,at)),rt("click",J,()=>Zt()),rt("click",Z,Pe),l(y,f)},Qe=y=>{var f=Pa(),h=a(f),R=a(h),B=s(a(R),2),tt=a(B,!0);e(B),e(R);var K=s(R,2);{var W=v=>{var c=La(),w=a(c,!0);e(c),_(()=>d(w,t(jt).workspace)),l(v,c)};L(K,v=>{t(jt)?.workspace&&v(W)})}var U=s(K,2);{var X=v=>{var c=Ma();l(v,c)},A=v=>{var c=Wa();l(v,c)},E=v=>{var c=Se(),w=qt(c);ut(w,17,()=>t(jt).files,C=>C.name,(C,p)=>{var j=Ra(),I=a(j),x=a(I,!0);e(I);var m=s(I,2),P=a(m),b=a(P,!0);e(P);var Y=s(P,2),q=a(Y),z=s(q);{var et=J=>{var Z=sa();_(Bt=>d(Z,`Ā· ${Bt??""}`),[()=>Ce(t(p).updatedAtMs)]),l(J,Z)};L(z,J=>{t(p).updatedAtMs&&!t(p).missing&&J(et)})}e(Y),e(m);var it=s(m,2);{var _t=J=>{var Z=Ia();l(J,Z)};L(it,J=>{t(p).missing&&J(_t)})}e(j),_((J,Z)=>{gt(j,1,`w-full text-left px-3 py-2 text-sm transition-all flex items-center gap-2
|
|
9
|
+
${t(nt)===t(p).name?"bg-accent-cyan/10 text-accent-cyan":"hover:bg-bg-hover text-text-secondary"}`),d(x,J),d(b,t(p).name),d(q,`${Z??""} `)},[()=>Re(t(p).name),()=>t(p).missing?"missing":Ie(t(p).size)]),rt("click",j,()=>Oe(t(p).name)),l(C,j)}),l(v,c)};L(U,v=>{t(It)?v(X):t(jt)?.files?.length?v(E,!1):v(A,1)})}e(h);var T=s(h,2),k=a(T);{var O=v=>{var c=Ta();l(v,c)},D=v=>{var c=Na(),w=a(c);e(c),_(()=>d(w,`Loading ${t(nt)??""}ā¦`)),l(v,c)},N=v=>{var c=Da(),w=qt(c),C=a(w),p=a(C),j=a(p,!0);e(p);var I=s(p,2);{var x=z=>{var et=Oa();l(z,et)};L(I,z=>{t(Vt)&&z(x)})}e(C);var m=s(C,2),P=a(m),b=s(P,2),Y=a(b,!0);e(b),e(m),e(w);var q=s(w,2);va(q),_(()=>{d(j,t(nt)),P.disabled=!t(Vt),b.disabled=!t(Vt)||t(Rt),gt(b,1,`px-3 py-1 rounded text-xs transition-all
|
|
10
|
+
${t(Vt)?"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"}`),d(Y,t(Rt)?"Savingā¦":"Save")}),rt("click",P,()=>{o(bt,t(Ft),!0)}),rt("click",b,De),Ae(q,()=>t(bt),z=>o(bt,z)),l(v,c)};L(k,v=>{t(nt)?t(Qt)?v(D,1):v(N,!1):v(O)})}e(T),e(f),_(()=>{B.disabled=t(It),d(tt,t(It)?"...":"ā»")}),rt("click",B,()=>t(F)&&te(t(F))),l(y,f)},Xe=y=>{var f=za(),h=a(f),R=s(a(h),2),B=s(a(R));{var tt=W=>{var U=Ba(),X=a(U);e(U),_(()=>d(X,`profile: ${t($).tools.profile??""}`)),l(W,U)};L(B,W=>{t($)?.tools?.profile&&W(tt)})}e(R);var K=s(R,2);ut(K,21,()=>Ne,wt,(W,U)=>{var X=Ja(),A=a(X),E=a(A,!0);e(A);var T=s(A,2);ut(T,21,()=>t(U).tools,wt,(k,O)=>{const D=lt(()=>Ee(t(O)));var N=Ea(),v=a(N),c=a(v,!0);e(v);var w=s(v,2),C=a(w,!0);e(w),e(N),_(()=>{d(c,t(O)),gt(w,1,`text-[10px] px-1.5 py-0.5 rounded font-medium
|
|
11
|
+
${t(D)==="allowed"?"bg-accent-green/15 text-accent-green":t(D)==="denied"?"bg-red-500/15 text-red-400":"bg-bg-tertiary text-text-muted"}`),d(C,t(D))}),l(k,N)}),e(T),e(X),_(()=>d(E,t(U).label)),l(W,X)}),e(K),e(h),e(f),l(y,f)},Ze=y=>{var f=qa(),h=a(f),R=a(h),B=s(a(R),2),tt=a(B,!0);e(B),e(R);var K=s(R,2);{var W=A=>{var E=$a();l(A,E)},U=A=>{var E=Ga();l(A,E)},X=A=>{var E=Ya();ut(E,21,()=>t($t),wt,(T,k)=>{var O=Ua(),D=a(O),N=s(a(D),2),v=a(N,!0);e(N);var c=s(N,2);{var w=j=>{var I=Va();l(j,I)};L(c,j=>{t(k).bundled&&j(w)})}e(D);var C=s(D,2);{var p=j=>{var I=Ka(),x=a(I,!0);e(I),_(()=>d(x,t(k).source)),l(j,I)};L(C,j=>{t(k).source&&j(p)})}e(O),_(()=>d(v,t(k).name)),l(T,O)}),e(E),l(A,E)};L(K,A=>{t(Tt)?A(W):t($t).length===0?A(U,1):A(X,!1)})}e(h),e(f),_(()=>{B.disabled=t(Tt),d(tt,t(Tt)?"Loadingā¦":"Refresh")}),rt("click",B,ue),l(y,f)},ta=y=>{var f=er(),h=a(f),R=a(h);{var B=T=>{var k=Ha(),O=s(a(k),4),D=a(O),N=s(a(D),2),v=a(N,!0);e(N),e(D);var c=s(D,2),w=s(a(c),2),C=a(w,!0);e(w),e(c);var p=s(c,2),j=s(a(p),2),I=a(j,!0);e(j),e(p);var x=s(p,2),m=s(a(x),2),P=a(m,!0);e(m),e(x),e(O),e(k),_(()=>{d(v,t(H).workspace),d(C,t(H).model),d(I,t(H).identityName),d(P,t(H).isDefault?"yes":"no")}),l(T,k)};L(R,T=>{t(H)&&T(B)})}var tt=s(R,2),K=a(tt),W=s(a(K),2),U=a(W,!0);e(W),e(K);var X=s(K,2);{var A=T=>{var k=Qa();l(T,k)},E=T=>{const k=lt(()=>t(Nt).channels??{}),O=lt(()=>t(Nt).channelAccounts??{}),D=lt(()=>Object.keys(t(k)).length?Object.keys(t(k)):Object.keys(t(O)));var N=Se(),v=qt(N);{var c=C=>{var p=Xa();l(C,p)},w=C=>{var p=tr();ut(p,21,()=>t(D),wt,(j,I)=>{const x=lt(()=>t(k)[t(I)]),m=lt(()=>t(O)[t(I)]??[]),P=lt(()=>t(m).filter(J=>J.connected||J.running).length);var b=Za(),Y=a(b),q=a(Y),z=a(q,!0);e(q);var et=s(q,2),it=a(et);e(et),e(Y);var _t=s(Y,2);e(b),_(()=>{d(z,t(I)),d(it,`${t(m).length?`${t(P)}/${t(m).length} connected`:"no accounts"}
|
|
12
|
+
Ā· ${t(x)?.configured?"configured":"not configured"}`),gt(_t,1,`w-2 h-2 rounded-full ${t(x)?.configured||t(x)?.running?"bg-accent-green":"bg-text-muted/30"}`)}),l(j,b)}),e(p),l(C,p)};L(v,C=>{t(D).length===0?C(c):C(w,!1)})}l(T,N)};L(X,T=>{t(Nt)?T(E,!1):T(A)})}e(tt),e(h),e(f),_(()=>{W.disabled=t(Gt),d(U,t(Gt)?"Loadingā¦":"Refresh")}),rt("click",W,pe),l(y,f)},ea=y=>{var f=nr(),h=a(f),R=a(h);{var B=x=>{var m=ar(),P=s(a(m),4),b=a(P),Y=s(a(b),2),q=a(Y,!0);e(Y),e(b);var z=s(b,2),et=s(a(z),2),it=a(et,!0);e(et),e(z),e(P),e(m),_(()=>{d(q,t(H).workspace),d(it,t(H).model)}),l(x,m)};L(R,x=>{t(H)&&x(B)})}var tt=s(R,2),K=a(tt),W=s(a(K),2),U=a(W,!0);e(W),e(K);var X=s(K,2),A=a(X),E=a(A),T=a(E,!0);e(E),Et(2),e(A);var k=s(A,2),O=a(k),D=a(O,!0);e(O),Et(2),e(k);var N=s(k,2),v=a(N),c=a(v,!0);e(v),Et(2),e(N),e(X),e(tt),e(h);var w=s(h,2),C=s(a(w),4);{var p=x=>{var m=rr();l(x,m)},j=x=>{var m=sr();l(x,m)},I=x=>{var m=or();ut(m,21,()=>t(oe),wt,(P,b)=>{var Y=lr(),q=a(Y),z=a(q),et=a(z,!0);e(z);var it=s(z,2),_t=a(it,!0);e(it),e(q);var J=s(q,2),Z=a(J),Bt=a(Z,!0);e(Z);var at=s(Z,2);{var vt=dt=>{var kt=ir(),le=a(kt,!0);e(kt),_(()=>d(le,t(b).sessionTarget)),l(dt,kt)};L(at,dt=>{t(b).sessionTarget&&dt(vt)})}var ft=s(at,2);{var Mt=dt=>{var kt=dr(),le=a(kt,!0);e(kt),_(()=>d(le,t(b).payload.kind)),l(dt,kt)};L(ft,dt=>{t(b).payload?.kind&&dt(Mt)})}e(J),e(Y),_(dt=>{d(et,t(b).name||t(b).jobId||t(b).id),gt(it,1,`px-1.5 py-0.5 rounded text-[10px] font-medium
|
|
13
|
+
${t(b).enabled!==!1?"bg-accent-green/15 text-accent-green":"bg-amber-500/15 text-amber-400"}`),d(_t,t(b).enabled!==!1?"enabled":"disabled"),d(Bt,dt)},[()=>Je(t(b))]),l(P,Y)}),e(m),l(x,m)};L(C,x=>{t(Dt)?x(p):t(oe).length===0?x(j,1):x(I,!1)})}e(w),e(f),_(x=>{W.disabled=t(Dt),d(U,t(Dt)?"Loadingā¦":"Refresh"),d(T,t(Ot)?.enabled?"Yes":"No"),d(D,t(Ot)?.jobs??"-"),d(c,x)},[()=>t(Ot)?.nextWakeAtMs?Ce(t(Ot).nextWakeAtMs):"-"]),rt("click",W,fe),l(y,f)};L(qe,y=>{t(pt)==="overview"?y(He):t(pt)==="files"?y(Qe,1):t(pt)==="tools"?y(Xe,2):t(pt)==="skills"?y(Ze,3):t(pt)==="channels"?y(ta,4):t(pt)==="cron"&&y(ea,5)})}e(we),_(y=>{d(V,y),d(Lt,t(H)?.identityName??t($).id),d(ie,t($).id)},[()=>ve(t($))]),l(r,i)};L(Ke,r=>{t($)?r(Ye,!1):r(Ue)})}e(ye),e(be),e(ee),_(()=>{Kt.disabled=t(Jt),d(Ge,`${t(mt).length??""} configured`)}),rt("click",Kt,()=>ce()),l(je,ee),la()}aa(["click","change"]);export{hr as component};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import{d as Is,a as y,b as l,f as i,s as f,c as Fe}from"../chunks/B2A7gHtL.js";import{p as Ks,s as H,a as Ye,u as yt,d,g as e,b as kt,t as h,c as Ns,e as Qs,h as s,f as o,$ as Ws,r as t,n as De,i as te,j as Zt,o as Gs}from"../chunks/qR_TM3YX.js";import{i as _}from"../chunks/DpBBTLWw.js";import{g as Js,a as ze,s as S,e as Ze,i as es,r as ts,b as ss}from"../chunks/D6tSezzf.js";import{h as Xs}from"../chunks/CXQ1lKJR.js";import{s as Ys}from"../chunks/rBDgyNy3.js";import{b as as}from"../chunks/nnazh41B.js";import{i as Se,s as $e}from"../chunks/DVP7Iy08.js";import{g as Zs}from"../chunks/Be_uRYmX.js";var ea=i("<span> </span>"),ta=i('<span class="ml-1 px-1.5 py-0.5 rounded-full bg-accent-pink/20 text-accent-pink text-[10px] font-bold svelte-19gsovj"> </span>'),sa=i('<span class="ml-1 px-1.5 py-0.5 rounded-full bg-accent-green/20 text-accent-green text-[10px] font-bold svelte-19gsovj"> </span>'),aa=i('<div class="flex flex-col items-center justify-center h-full text-center svelte-19gsovj"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4 svelte-19gsovj"><svg class="w-8 h-8 text-text-muted svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg></div> <p class="text-text-muted text-sm svelte-19gsovj">Connect to the gateway to manage exec approvals.</p></div>'),oa=i('<span class="text-accent-amber svelte-19gsovj"> </span>'),ra=i('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-8 text-center svelte-19gsovj"><div class="w-12 h-12 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mx-auto mb-3 svelte-19gsovj"><svg class="w-6 h-6 text-accent-green svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" class="svelte-19gsovj"></path></svg></div> <p class="text-text-muted text-sm svelte-19gsovj">No pending approval requests</p> <p class="text-text-muted text-xs mt-1 svelte-19gsovj">Requests will appear here in real-time when agents need permission</p></div>'),la=i('<span class="flex items-center gap-1 font-mono svelte-19gsovj"> </span>'),va=i('<span class="flex items-center gap-1 svelte-19gsovj"> </span>'),na=i('<span class="flex items-center gap-1 svelte-19gsovj"> </span>'),ia=i('<span class="font-mono svelte-19gsovj"> </span>'),da=i('<span class="px-1.5 py-0.5 rounded bg-accent-purple/10 text-accent-purple border border-accent-purple/20 font-mono svelte-19gsovj"> </span>'),ca=Fe('<svg class="w-4 h-4 animate-spin svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg>'),ua=Fe('<svg class="w-4 h-4 svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" class="svelte-19gsovj"></path></svg>'),ga=i(`<div><div class="h-1 bg-bg-tertiary svelte-19gsovj"><div></div></div> <div class="p-4 svelte-19gsovj"><div class="flex items-start justify-between gap-4 mb-3 svelte-19gsovj"><div class="min-w-0 flex-1 svelte-19gsovj"><div class="flex items-center gap-2 mb-1 svelte-19gsovj"><svg class="w-4 h-4 text-accent-amber flex-shrink-0 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> <code class="text-sm font-mono text-accent-cyan break-all svelte-19gsovj"> </code></div></div> <div><svg class="w-3.5 h-3.5 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> </div></div> <div class="flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs text-text-muted mb-4 svelte-19gsovj"><!> <!> <!> <!> <!> <span class="font-mono text-text-muted/60 svelte-19gsovj"> </span></div> <div class="flex items-center gap-2 svelte-19gsovj"><button class="flex items-center gap-1.5 px-4 py-2 text-sm font-medium rounded-lg transition-all
|
|
2
|
+
bg-accent-green/15 text-accent-green border border-accent-green/30
|
|
3
|
+
hover:bg-accent-green/25 hover:border-accent-green/50 hover:shadow-[0_0_12px_rgba(0,255,136,0.15)]
|
|
4
|
+
disabled:opacity-40 disabled:cursor-not-allowed svelte-19gsovj"><!> Approve</button> <button class="flex items-center gap-1.5 px-4 py-2 text-sm font-medium rounded-lg transition-all
|
|
5
|
+
bg-accent-pink/15 text-accent-pink border border-accent-pink/30
|
|
6
|
+
hover:bg-accent-pink/25 hover:border-accent-pink/50 hover:shadow-[0_0_12px_rgba(244,63,158,0.15)]
|
|
7
|
+
disabled:opacity-40 disabled:cursor-not-allowed svelte-19gsovj"><svg class="w-4 h-4 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> Deny</button></div></div></div>`),pa=i('<div class="space-y-3 svelte-19gsovj"></div>'),xa=i('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-6 text-center svelte-19gsovj"><p class="text-text-muted text-xs svelte-19gsovj">No resolved requests yet this session</p></div>'),fa=Fe('<svg class="w-3.5 h-3.5 svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" class="svelte-19gsovj"></path></svg>'),_a=Fe('<svg class="w-3.5 h-3.5 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg>'),ma=i('<div class="flex items-center gap-3 rounded-lg border border-border-default bg-bg-secondary/30 px-4 py-2.5 text-sm svelte-19gsovj"><span><!></span> <code class="text-xs font-mono text-text-primary truncate flex-1 svelte-19gsovj"> </code> <span> </span> <span class="text-xs text-text-muted font-mono flex-shrink-0 svelte-19gsovj"> </span></div>'),ba=i('<div class="space-y-2 svelte-19gsovj"></div>'),ja=i('<div class="space-y-6 svelte-19gsovj"><div class="svelte-19gsovj"><h2 class="text-sm font-semibold uppercase tracking-wider text-text-muted mb-4 flex items-center gap-2 svelte-19gsovj"><span></span> Pending Approvals <!></h2> <!></div> <div class="svelte-19gsovj"><h2 class="text-sm font-semibold uppercase tracking-wider text-text-muted mb-4 flex items-center gap-2 svelte-19gsovj"><svg class="w-4 h-4 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> Recent Decisions</h2> <!></div></div>'),ha=i('<p class="text-xs text-text-muted font-mono svelte-19gsovj"> </p>'),ya=i('<p class="text-xs text-text-muted svelte-19gsovj">Per-agent command allowlists and approval policies</p>'),ka=i('<span class="flex items-center gap-1.5 text-xs text-accent-amber svelte-19gsovj"><span class="w-2 h-2 rounded-full bg-accent-amber animate-pulse svelte-19gsovj"></span> Unsaved</span>'),wa=Fe('<svg class="w-3.5 h-3.5 animate-spin svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg>'),Aa=Fe('<svg class="w-3.5 h-3.5 svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" class="svelte-19gsovj"></path></svg>'),Ma=i('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-8 text-center svelte-19gsovj"><div class="w-12 h-12 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mx-auto mb-3 svelte-19gsovj"><svg class="w-6 h-6 text-text-muted svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg></div> <p class="text-text-muted text-sm mb-3 svelte-19gsovj">Load exec approvals to view and edit allowlists</p> <button class="px-4 py-2 text-sm font-medium rounded-lg bg-accent-cyan/15 text-accent-cyan border border-accent-cyan/30 hover:bg-accent-cyan/25 transition-all svelte-19gsovj">Load Approvals</button></div>'),Ca=i('<div class="space-y-4 animate-pulse svelte-19gsovj"><div class="h-10 bg-bg-tertiary rounded-lg svelte-19gsovj"></div> <div class="h-32 bg-bg-tertiary rounded-lg svelte-19gsovj"></div> <div class="h-48 bg-bg-tertiary rounded-lg svelte-19gsovj"></div></div>'),qa=i("<span> </span>"),Ba=i('<button><span class="font-mono svelte-19gsovj"> </span> <!></button>'),Da=i('<div class="rounded-xl border border-border-default bg-bg-secondary/50 overflow-hidden svelte-19gsovj"><div class="px-4 py-3 border-b border-border-default bg-bg-tertiary/50 svelte-19gsovj"><h3 class="text-sm font-semibold text-text-primary svelte-19gsovj">Default Policy</h3> <p class="text-xs text-text-muted mt-0.5 svelte-19gsovj">These settings apply to all agents unless overridden per-agent.</p></div> <div class="divide-y divide-border-default svelte-19gsovj"><div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Security</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj">Default exec security mode</div></div> <select class="px-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-cyan/50 svelte-19gsovj"><option class="svelte-19gsovj">Deny</option><option class="svelte-19gsovj">Allowlist</option><option class="svelte-19gsovj">Full</option></select></div> <div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Ask</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj">When to prompt for approval</div></div> <select class="px-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-cyan/50 svelte-19gsovj"><option class="svelte-19gsovj">Off</option><option class="svelte-19gsovj">On miss</option><option class="svelte-19gsovj">Always</option></select></div> <div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Ask Fallback</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj">Applied when the UI prompt is unavailable</div></div> <select class="px-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-cyan/50 svelte-19gsovj"><option class="svelte-19gsovj">Deny</option><option class="svelte-19gsovj">Allowlist</option><option class="svelte-19gsovj">Full</option></select></div> <div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Auto-allow skill CLIs</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj">Automatically allow executables from installed skills</div></div> <button><span></span></button></div></div></div>'),Sa=i('<span class="text-text-muted font-normal svelte-19gsovj"> </span>'),$a=i('<div class="p-6 text-center svelte-19gsovj"><p class="text-text-muted text-sm svelte-19gsovj">No allowlist entries for this scope</p></div>'),Fa=i('<div class="flex items-center gap-2 svelte-19gsovj"><input type="text" class="flex-1 px-2 py-1 text-sm font-mono bg-bg-input border border-accent-cyan/50 rounded text-text-primary focus:outline-none focus:ring-1 focus:ring-accent-cyan/30 svelte-19gsovj"/> <button class="p-1 text-accent-green hover:bg-accent-green/10 rounded transition-colors svelte-19gsovj" title="Save"><svg class="w-4 h-4 svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" class="svelte-19gsovj"></path></svg></button> <button class="p-1 text-text-muted hover:bg-bg-hover rounded transition-colors svelte-19gsovj" title="Cancel"><svg class="w-4 h-4 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg></button></div>'),Pa=i('<div class="flex items-center gap-2 svelte-19gsovj"><code class="text-sm font-mono text-accent-cyan cursor-pointer hover:underline svelte-19gsovj" title="Click to edit"> </code></div>'),La=i('<span class="flex items-center gap-1 svelte-19gsovj"><svg class="w-3 h-3 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> </span>'),Ha=i('<span class="text-text-muted/50 svelte-19gsovj">never used</span>'),Ra=i('<span class="font-mono text-text-muted/70 truncate max-w-xs svelte-19gsovj"> </span>'),Ea=i('<div class="mt-1 text-xs font-mono text-text-muted/60 truncate max-w-lg svelte-19gsovj"> </div>'),Ua=i('<button class="p-1.5 text-text-muted hover:text-accent-cyan hover:bg-accent-cyan/10 rounded-lg transition-colors svelte-19gsovj" title="Edit pattern"><svg class="w-3.5 h-3.5 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg></button>'),Ta=i('<div class="px-4 py-3 hover:bg-bg-hover/30 transition-colors group svelte-19gsovj"><div class="flex items-start justify-between gap-3 svelte-19gsovj"><div class="flex-1 min-w-0 svelte-19gsovj"><!> <div class="flex flex-wrap items-center gap-x-4 gap-y-1 mt-1.5 text-xs text-text-muted svelte-19gsovj"><!> <!></div> <!></div> <div class="flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0 svelte-19gsovj"><!> <button class="p-1.5 text-text-muted hover:text-accent-pink hover:bg-accent-pink/10 rounded-lg transition-colors svelte-19gsovj" title="Remove pattern"><svg class="w-3.5 h-3.5 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg></button></div></div></div>'),za=i('<div class="divide-y divide-border-default svelte-19gsovj"></div>'),Oa=i('<div class="rounded-xl border border-border-default bg-bg-secondary/50 overflow-hidden svelte-19gsovj"><div class="px-4 py-3 border-b border-border-default bg-bg-tertiary/50 svelte-19gsovj"><h3 class="text-sm font-semibold text-text-primary svelte-19gsovj">Policy Overrides ā <span class="font-mono text-accent-cyan svelte-19gsovj"> </span></h3> <p class="text-xs text-text-muted mt-0.5 svelte-19gsovj">Leave as "Use default" to inherit from defaults above.</p></div> <div class="divide-y divide-border-default svelte-19gsovj"><div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Security</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj"> </div></div> <select class="px-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-cyan/50 svelte-19gsovj"><option class="svelte-19gsovj"> </option><option class="svelte-19gsovj">Deny</option><option class="svelte-19gsovj">Allowlist</option><option class="svelte-19gsovj">Full</option></select></div> <div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Ask</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj"> </div></div> <select class="px-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-cyan/50 svelte-19gsovj"><option class="svelte-19gsovj"> </option><option class="svelte-19gsovj">Off</option><option class="svelte-19gsovj">On miss</option><option class="svelte-19gsovj">Always</option></select></div> <div class="flex items-center justify-between px-4 py-3 gap-4 svelte-19gsovj"><div class="svelte-19gsovj"><div class="text-sm font-medium text-text-primary svelte-19gsovj">Ask Fallback</div> <div class="text-xs text-text-muted mt-0.5 svelte-19gsovj"> </div></div> <select class="px-3 py-1.5 text-sm bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-cyan/50 svelte-19gsovj"><option class="svelte-19gsovj"> </option><option class="svelte-19gsovj">Deny</option><option class="svelte-19gsovj">Allowlist</option><option class="svelte-19gsovj">Full</option></select></div></div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 overflow-hidden svelte-19gsovj"><div class="px-4 py-3 border-b border-border-default bg-bg-tertiary/50 flex items-center justify-between svelte-19gsovj"><div class="svelte-19gsovj"><h3 class="text-sm font-semibold text-text-primary svelte-19gsovj">Allowlist Patterns <!></h3> <p class="text-xs text-text-muted mt-0.5 svelte-19gsovj">Case-insensitive glob patterns. Matching commands are auto-approved.</p></div></div> <!> <div class="px-4 py-3 border-t border-border-default bg-bg-tertiary/30 svelte-19gsovj"><div class="flex items-center gap-2 svelte-19gsovj"><input type="text" placeholder="Add new pattern (e.g., /usr/bin/git, **, cat /home/**)" class="flex-1 px-3 py-1.5 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted/50 focus:outline-none focus:border-accent-green/50 focus:ring-1 focus:ring-accent-green/20 svelte-19gsovj"/> <button><svg class="w-3.5 h-3.5 svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" class="svelte-19gsovj"></path></svg> Add</button></div></div></div>',1),Va=i('<div class="flex flex-wrap items-center gap-2 svelte-19gsovj"><span class="text-xs text-text-muted uppercase tracking-wider font-semibold mr-1 svelte-19gsovj">Scope</span> <button>āļø Defaults</button> <!></div> <!> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 svelte-19gsovj"><h3 class="text-xs font-semibold text-text-muted uppercase tracking-wider mb-2 svelte-19gsovj">How it works</h3> <ul class="text-xs text-text-muted space-y-1.5 svelte-19gsovj"><li class="flex items-start gap-2 svelte-19gsovj"><span class="text-accent-green mt-0.5 svelte-19gsovj">ā¢</span> <span class="svelte-19gsovj"><strong class="text-text-secondary svelte-19gsovj">Defaults</strong> apply to all agents unless overridden per-scope.</span></li> <li class="flex items-start gap-2 svelte-19gsovj"><span class="text-accent-green mt-0.5 svelte-19gsovj">ā¢</span> <span class="svelte-19gsovj"><strong class="text-text-secondary svelte-19gsovj">* (global)</strong> matches all agents. Per-agent scopes (e.g., "main") override global.</span></li> <li class="flex items-start gap-2 svelte-19gsovj"><span class="text-accent-green mt-0.5 svelte-19gsovj">ā¢</span> <span class="svelte-19gsovj">Allowlist patterns use case-insensitive <code class="text-accent-cyan bg-bg-tertiary px-1 rounded svelte-19gsovj">glob</code> matching (<code class="text-accent-cyan bg-bg-tertiary px-1 rounded svelte-19gsovj">*</code> = single segment, <code class="text-accent-cyan bg-bg-tertiary px-1 rounded svelte-19gsovj">**</code> = any depth).</span></li> <li class="flex items-start gap-2 svelte-19gsovj"><span class="text-accent-green mt-0.5 svelte-19gsovj">ā¢</span> <span class="svelte-19gsovj">Commands not matching any pattern trigger an approval request in the Queue tab.</span></li> <li class="flex items-start gap-2 svelte-19gsovj"><span class="text-accent-green mt-0.5 svelte-19gsovj">ā¢</span> <span class="svelte-19gsovj">Changes take effect immediately after saving.</span></li></ul></div>',1),Ia=i('<div class="space-y-6 svelte-19gsovj"><div class="flex items-center justify-between flex-wrap gap-3 svelte-19gsovj"><div class="svelte-19gsovj"><h2 class="text-sm font-semibold uppercase tracking-wider text-text-muted mb-1 svelte-19gsovj">Exec Approvals Configuration</h2> <!></div> <div class="flex items-center gap-2 svelte-19gsovj"><!> <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 svelte-19gsovj"><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" class="svelte-19gsovj"></path></svg> </button> <button><!> Save</button></div></div> <!></div>'),Ka=i('<div class="h-full flex flex-col overflow-hidden svelte-19gsovj"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default svelte-19gsovj"><div class="flex items-start justify-between gap-4 flex-wrap svelte-19gsovj"><div class="svelte-19gsovj"><div class="flex items-center gap-3 svelte-19gsovj"><div style="background: linear-gradient(135deg, rgba(0, 229, 255, 0.1), rgba(124, 77, 255, 0.1));"><svg class="w-5 h-5 text-accent-cyan svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> <!></div> <div class="svelte-19gsovj"><h1 class="text-xl font-bold text-text-primary glow-text-cyan svelte-19gsovj">Exec Approvals</h1> <p class="text-sm text-text-muted svelte-19gsovj">Real-time command approval queue and allowlist management</p></div></div></div> <div class="flex items-center bg-bg-tertiary rounded-lg border border-border-default p-0.5 svelte-19gsovj"><button><svg class="w-4 h-4 svelte-19gsovj" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" class="svelte-19gsovj"></path></svg> Queue <!></button> <button><svg class="w-4 h-4 svelte-19gsovj" 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" class="svelte-19gsovj"></path></svg> Allowlist <!></button></div></div></div> <div class="flex-1 overflow-y-auto p-4 md:p-6 svelte-19gsovj"><!></div></div>');function to(os,rs){Ks(rs,!0);const et=Js(),je=Zs();let I=H(Ye([])),he=H(Ye([])),ye=H(Ye(new Set)),Oe=H(!1),pe=H("queue"),tt=H(null),v=H(null),wt=H(""),re=H(!1),Pe=H(!1),ke=H(!1),u=H("__defaults__"),we=H(""),Le=H(null),Ae=H(""),He=H(Ye(Date.now())),xe=te(()=>e(I).length),At=te(()=>[...e(I)].sort((a,r)=>a.expiresAtMs-r.expiresAtMs)),ls=te(()=>e(v)?.agents?Object.keys(e(v).agents).sort((a,r)=>a==="*"?-1:r==="*"?1:a.localeCompare(r)):[]),D=te(()=>{const a=e(v)?.defaults??{};return{security:a.security??"deny",ask:a.ask??"on-miss",askFallback:a.askFallback??"deny",autoAllowSkills:a.autoAllowSkills??!1}}),Q=te(()=>e(u)==="__defaults__"||!e(v)?.agents?null:e(v).agents[e(u)]??null),Ve=te(()=>e(Q)?.allowlist?e(Q).allowlist:[]),Mt=te(()=>e(v)?.agents?Object.values(e(v).agents).reduce((a,r)=>a+(r.allowlist?.length??0),0):0);async function Ct(a,r){if(!e(ye).has(a)){d(ye,new Set([...e(ye),a]),!0);try{await ze.call("exec.approval.resolve",{id:a,decision:r}),d(I,e(I).filter(n=>n.id!==a),!0),je.success(r==="approve"?"Approved":"Denied",`Exec request ${a.slice(0,8)}⦠${r==="approve"?"approved":"denied"}`)}catch(n){je.error("Resolution failed",String(n))}finally{const n=new Set(e(ye));n.delete(a),d(ye,n,!0)}}}function vs(){const a=Date.now(),r=e(I).filter(n=>n.expiresAtMs<a);if(r.length>0){d(I,e(I).filter(n=>n.expiresAtMs>=a),!0);for(const n of r)d(he,[{id:n.id,decision:"deny",request:n.request,resolvedAtMs:a,command:n.request.command},...e(he)].slice(0,50),!0)}}function ns(a){const r=a-e(He);if(r<=0)return"Expired";const n=Math.floor(r/1e3),k=Math.floor(n/60);return k>0?`${k}m ${n%60}s`:`${n}s`}function is(a,r){const n=r-a,k=r-e(He);return n<=0?0:Math.max(0,Math.min(100,k/n*100))}function ds(a){const r=a-e(He);return r<=1e4?"text-accent-pink":r<=3e4?"text-accent-amber":"text-accent-green"}function cs(a){const r=a-e(He);return r<=1e4?"bg-accent-pink":r<=3e4?"bg-accent-amber":"bg-accent-green"}function us(a){return new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function gs(a){const r=Date.now()-a;return r<6e4?"just now":r<36e5?`${Math.floor(r/6e4)}m ago`:r<864e5?`${Math.floor(r/36e5)}h ago`:`${Math.floor(r/864e5)}d ago`}async function Ie(){d(re,!0);try{const a=await ze.call("exec.approvals.get",{});d(tt,a,!0),d(v,structuredClone(a.file??{}),!0),d(wt,a.hash??"",!0),d(ke,!1),e(u)!=="__defaults__"&&!e(v)?.agents?.[e(u)]&&d(u,"__defaults__")}catch(a){je.error("Failed to load exec approvals",String(a)),d(v,null)}finally{d(re,!1)}}async function ps(){if(!(e(Pe)||!e(v))){d(Pe,!0);try{await ze.call("exec.approvals.set",{file:e(v),baseHash:e(wt)}),d(ke,!1),await Ie(),je.success("Saved","Exec approvals updated")}catch(a){je.error("Save failed",String(a))}finally{d(Pe,!1)}}}function Me(){d(ke,!0),d(v,{...e(v)},!0)}function Ke(a,r){e(v)&&(e(v).defaults||(e(v).defaults={}),e(v).defaults[a]=r,Me())}function st(a,r,n){e(v)&&(e(v).agents||(e(v).agents={}),e(v).agents[a]||(e(v).agents[a]={}),e(v).agents[a][r]=n,Me())}function at(a,r){e(v)?.agents?.[a]&&(delete e(v).agents[a][r],Me())}function qt(){const a=e(we).trim();!a||e(u)==="__defaults__"||!e(v)||(e(v).agents||(e(v).agents={}),e(v).agents[e(u)]||(e(v).agents[e(u)]={}),e(v).agents[e(u)].allowlist||(e(v).agents[e(u)].allowlist=[]),e(v).agents[e(u)].allowlist.push({pattern:a}),d(we,""),Me())}function xs(a){e(u)==="__defaults__"||!e(v)?.agents?.[e(u)]?.allowlist||(e(v).agents[e(u)].allowlist.splice(a,1),e(v).agents[e(u)].allowlist.length===0&&delete e(v).agents[e(u)].allowlist,Me())}function Bt(a,r){d(Le,a,!0),d(Ae,r,!0)}function Dt(a){if(e(u)==="__defaults__"||!e(v)?.agents?.[e(u)]?.allowlist)return;const r=e(Ae).trim();r&&(e(v).agents[e(u)].allowlist[a].pattern=r,Me()),d(Le,null),d(Ae,"")}function St(){d(Le,null),d(Ae,"")}yt(()=>{const a=setInterval(()=>{d(He,Date.now(),!0),vs()},1e3);return()=>clearInterval(a)}),yt(()=>{if(et.state.status!=="connected")return;const a=ze.on("exec.approval.requested",n=>{const k=n;e(I).find(le=>le.id===k.id)||(d(I,[...e(I),k],!0),d(Oe,!0),setTimeout(()=>{d(Oe,!1)},2e3),je.warning("Approval requested",`${k.request?.command??"Unknown command"}`,8e3))}),r=ze.on("exec.approval.resolved",n=>{const k=n,le=k.decision==="approve"?"approve":"deny";d(I,e(I).filter(Ee=>Ee.id!==k.id),!0),d(he,[{id:k.id,decision:le,request:k.request,resolvedAtMs:Date.now(),command:k.request?.command},...e(he)].slice(0,50),!0)});return()=>{a(),r()}}),yt(()=>{e(pe)==="allowlist"&&et.state.status==="connected"&&!e(v)&&!e(re)&&kt(()=>Ie())});var ot=Ka();Xs("19gsovj",a=>{Qs(()=>{Ws.title="Exec Approvals ā Cortex"})});var rt=s(ot),$t=s(rt),lt=s($t),Ft=s(lt),vt=s(Ft),fs=o(s(vt),2);{var _s=a=>{var r=ea(),n=s(r,!0);t(r),h(()=>{S(r,1,`absolute -top-1.5 -right-1.5 w-5 h-5 rounded-full bg-accent-pink text-white text-[10px] font-bold flex items-center justify-center border-2 border-bg-primary ${e(Oe)?"animate-bounce":""}`,"svelte-19gsovj"),f(n,e(xe))}),l(a,r)};_(fs,a=>{e(xe)>0&&a(_s)})}t(vt),De(2),t(Ft),t(lt);var Pt=o(lt,2),Re=s(Pt),ms=o(s(Re),2);{var bs=a=>{var r=ta(),n=s(r,!0);t(r),h(()=>f(n,e(xe))),l(a,r)};_(ms,a=>{e(xe)>0&&a(bs)})}t(Re);var Ne=o(Re,2),js=o(s(Ne),2);{var hs=a=>{var r=sa(),n=s(r,!0);t(r),h(()=>f(n,e(Mt))),l(a,r)};_(js,a=>{e(Mt)>0&&a(hs)})}t(Ne),t(Pt),t($t),t(rt);var Lt=o(rt,2),ys=s(Lt);{var ks=a=>{var r=aa();l(a,r)},ws=a=>{var r=ja(),n=s(r),k=s(n),le=s(k),Ee=o(le,2);{var nt=B=>{var $=oa(),K=s($);t($),h(()=>f(K,`(${e(xe)??""})`)),l(B,$)};_(Ee,B=>{e(xe)>0&&B(nt)})}t(k);var Qe=o(k,2);{var We=B=>{var $=ra();l(B,$)},it=B=>{var $=pa();Ze($,21,()=>e(At),K=>K.id,(K,g)=>{const ne=te(()=>is(e(g).createdAtMs,e(g).expiresAtMs)),X=te(()=>e(ye).has(e(g).id));var ie=ga(),p=s(ie),b=s(p);t(p);var T=o(p,2),se=s(T),Y=s(se),Ce=s(Y),_e=o(s(Ce),2),Ue=s(_e,!0);t(_e),t(Ce),t(Y);var A=o(Y,2),M=o(s(A));t(A),t(se);var O=o(se,2),P=s(O);{var L=c=>{var x=la(),C=s(x);t(x),h(()=>f(C,`š ${e(g).request.cwd??""}`)),l(c,x)};_(P,c=>{e(g).request.cwd&&c(L)})}var W=o(P,2);{var ae=c=>{var x=va(),C=s(x);t(x),h(()=>f(C,`š„ļø ${e(g).request.host??""}`)),l(c,x)};_(W,c=>{e(g).request.host&&c(ae)})}var Z=o(W,2);{var N=c=>{var x=na(),C=s(x);t(x),h(()=>f(C,`š¤ ${e(g).request.agentId??""}`)),l(c,x)};_(Z,c=>{e(g).request.agentId&&c(N)})}var R=o(Z,2);{var z=c=>{var x=ia(),C=s(x);t(x),h(E=>f(C,`š ${E??""}`),[()=>e(g).request.sessionKey.length>20?e(g).request.sessionKey.slice(0,20)+"ā¦":e(g).request.sessionKey]),l(c,x)};_(R,c=>{e(g).request.sessionKey&&c(z)})}var de=o(R,2);{var V=c=>{var x=da(),C=s(x,!0);t(x),h(()=>f(C,e(g).request.security)),l(c,x)};_(de,c=>{e(g).request.security&&c(V)})}var G=o(de,2),qe=s(G);t(G),t(O);var ee=o(O,2),F=s(ee),ce=s(F);{var ue=c=>{var x=ca();l(c,x)},ge=c=>{var x=ua();l(c,x)};_(ce,c=>{e(X)?c(ue):c(ge,!1)})}De(),t(F);var oe=o(F,2);t(ee),t(T),t(ie),h((c,x,C,E)=>{S(ie,1,`rounded-xl border border-border-default bg-bg-secondary/50 overflow-hidden animate-fade-in
|
|
8
|
+
${e(ne)<20?"border-accent-pink/40":"hover:border-accent-cyan/20"} transition-all`,"svelte-19gsovj"),S(b,1,`h-full ${c??""} transition-all duration-1000 ease-linear`,"svelte-19gsovj"),Ys(b,`width: ${e(ne)??""}%`),f(Ue,e(g).request.command),S(A,1,`flex items-center gap-1.5 ${x??""} text-xs font-mono flex-shrink-0`,"svelte-19gsovj"),f(M,` ${C??""}`),f(qe,`id: ${E??""}ā¦`),F.disabled=e(X),oe.disabled=e(X)},[()=>cs(e(g).expiresAtMs),()=>ds(e(g).expiresAtMs),()=>ns(e(g).expiresAtMs),()=>e(g).id.slice(0,12)]),y("click",F,()=>Ct(e(g).id,"approve")),y("click",oe,()=>Ct(e(g).id,"deny")),l(K,ie)}),t($),l(B,$)};_(Qe,B=>{e(At).length===0?B(We):B(it,!1)})}t(n);var ve=o(n,2),Ge=o(s(ve),2);{var dt=B=>{var $=xa();l(B,$)},fe=B=>{var $=ba();Ze($,21,()=>e(he),K=>K.id+K.resolvedAtMs,(K,g)=>{var ne=ma(),X=s(ne),ie=s(X);{var p=A=>{var M=fa();l(A,M)},b=A=>{var M=_a();l(A,M)};_(ie,A=>{e(g).decision==="approve"?A(p):A(b,!1)})}t(X);var T=o(X,2),se=s(T,!0);t(T);var Y=o(T,2),Ce=s(Y,!0);t(Y);var _e=o(Y,2),Ue=s(_e,!0);t(_e),t(ne),h((A,M)=>{S(X,1,`w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0
|
|
9
|
+
${e(g).decision==="approve"?"bg-accent-green/15 text-accent-green":"bg-accent-pink/15 text-accent-pink"}`,"svelte-19gsovj"),f(se,A),S(Y,1,`text-[10px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded-full
|
|
10
|
+
${e(g).decision==="approve"?"bg-accent-green/15 text-accent-green border border-accent-green/20":"bg-accent-pink/15 text-accent-pink border border-accent-pink/20"}`,"svelte-19gsovj"),f(Ce,e(g).decision==="approve"?"approved":"denied"),f(Ue,M)},[()=>e(g).command??e(g).request?.command??e(g).id.slice(0,16),()=>us(e(g).resolvedAtMs)]),l(K,ne)}),t($),l(B,$)};_(Ge,B=>{e(he).length===0?B(dt):B(fe,!1)})}t(ve),t(r),h(()=>S(le,1,`w-2 h-2 rounded-full ${e(xe)>0?"bg-accent-amber animate-pulse":"bg-text-muted"}`,"svelte-19gsovj")),l(a,r)},As=a=>{var r=Ia(),n=s(r),k=s(n),le=o(s(k),2);{var Ee=p=>{var b=ha(),T=s(b);t(b),h(()=>f(T,`š ${e(tt).path??""}`)),l(p,b)},nt=p=>{var b=ya();l(p,b)};_(le,p=>{e(tt)?.path?p(Ee):p(nt,!1)})}t(k);var Qe=o(k,2),We=s(Qe);{var it=p=>{var b=ka();l(p,b)};_(We,p=>{e(ke)&&p(it)})}var ve=o(We,2),Ge=s(ve),dt=o(Ge);t(ve);var fe=o(ve,2),B=s(fe);{var $=p=>{var b=wa();l(p,b)},K=p=>{var b=Aa();l(p,b)};_(B,p=>{e(Pe)?p($):p(K,!1)})}De(),t(fe),t(Qe),t(n);var g=o(n,2);{var ne=p=>{var b=Ma(),T=o(s(b),4);t(b),y("click",T,()=>kt(()=>Ie())),l(p,b)},X=p=>{var b=Ca();l(p,b)},ie=p=>{var b=Va(),T=Zt(b),se=o(s(T),2),Y=o(se,2);Ze(Y,17,()=>e(ls),es,(A,M)=>{const O=te(()=>e(v)?.agents?.[e(M)]?.allowlist?.length??0);var P=Ba(),L=s(P),W=s(L,!0);t(L);var ae=o(L,2);{var Z=N=>{var R=qa(),z=s(R,!0);t(R),h(()=>{S(R,1,`px-1.5 py-0.5 rounded-full text-[10px] font-bold
|
|
11
|
+
${e(u)===e(M)?"bg-accent-cyan/20 text-accent-cyan":"bg-bg-hover text-text-muted"}`,"svelte-19gsovj"),f(z,e(O))}),l(N,R)};_(ae,N=>{e(O)>0&&N(Z)})}t(P),h(()=>{S(P,1,`px-3 py-1.5 text-xs rounded-lg border transition-all flex items-center gap-1.5
|
|
12
|
+
${e(u)===e(M)?"bg-accent-cyan/15 text-accent-cyan border-accent-cyan/30 font-medium":"bg-bg-tertiary text-text-muted border-border-default hover:text-text-primary hover:border-border-glow"}`,"svelte-19gsovj"),f(W,e(M)==="*"?"* (global)":e(M))}),y("click",P,()=>d(u,e(M),!0)),l(A,P)}),t(T);var Ce=o(T,2);{var _e=A=>{var M=Da(),O=o(s(M),2),P=s(O),L=o(s(P),2),W=s(L);W.value=W.__value="deny";var ae=o(W);ae.value=ae.__value="allowlist";var Z=o(ae);Z.value=Z.__value="full",t(L);var N;Se(L),t(P);var R=o(P,2),z=o(s(R),2),de=s(z);de.value=de.__value="off";var V=o(de);V.value=V.__value="on-miss";var G=o(V);G.value=G.__value="always",t(z);var qe;Se(z),t(R);var ee=o(R,2),F=o(s(ee),2),ce=s(F);ce.value=ce.__value="deny";var ue=o(ce);ue.value=ue.__value="allowlist";var ge=o(ue);ge.value=ge.__value="full",t(F);var oe;Se(F),t(ee);var c=o(ee,2),x=o(s(c),2),C=s(x);t(x),t(c),t(O),t(M),h(()=>{N!==(N=e(D).security)&&(L.value=(L.__value=e(D).security)??"",$e(L,e(D).security)),qe!==(qe=e(D).ask)&&(z.value=(z.__value=e(D).ask)??"",$e(z,e(D).ask)),oe!==(oe=e(D).askFallback)&&(F.value=(F.__value=e(D).askFallback)??"",$e(F,e(D).askFallback)),S(x,1,`relative w-11 h-6 rounded-full transition-colors duration-200
|
|
13
|
+
${e(D).autoAllowSkills?"bg-accent-green":"bg-bg-tertiary border border-border-default"}`,"svelte-19gsovj"),S(C,1,`absolute top-0.5 left-0.5 w-5 h-5 rounded-full bg-white shadow-sm transition-transform duration-200
|
|
14
|
+
${e(D).autoAllowSkills?"translate-x-5":"translate-x-0"}`,"svelte-19gsovj")}),y("change",L,E=>Ke("security",E.target.value)),y("change",z,E=>Ke("ask",E.target.value)),y("change",F,E=>Ke("askFallback",E.target.value)),y("click",x,()=>Ke("autoAllowSkills",!e(D).autoAllowSkills)),l(A,M)},Ue=A=>{var M=Oa(),O=Zt(M),P=s(O),L=s(P),W=o(s(L)),ae=s(W,!0);t(W),t(L),De(2),t(P);var Z=o(P,2),N=s(Z),R=s(N),z=o(s(R),2),de=s(z);t(z),t(R);var V=o(R,2),G=s(V),qe=s(G);t(G),G.value=G.__value="__default__";var ee=o(G);ee.value=ee.__value="deny";var F=o(ee);F.value=F.__value="allowlist";var ce=o(F);ce.value=ce.__value="full",t(V);var ue;Se(V),t(N);var ge=o(N,2),oe=s(ge),c=o(s(oe),2),x=s(c);t(c),t(oe);var C=o(oe,2),E=s(C),Ms=s(E);t(E),E.value=E.__value="__default__";var ct=o(E);ct.value=ct.__value="off";var ut=o(ct);ut.value=ut.__value="on-miss";var Ht=o(ut);Ht.value=Ht.__value="always",t(C);var Rt;Se(C),t(ge);var Et=o(ge,2),gt=s(Et),Ut=o(s(gt),2),Cs=s(Ut);t(Ut),t(gt);var me=o(gt,2),Te=s(me),qs=s(Te);t(Te),Te.value=Te.__value="__default__";var pt=o(Te);pt.value=pt.__value="deny";var xt=o(pt);xt.value=xt.__value="allowlist";var Tt=o(xt);Tt.value=Tt.__value="full",t(me);var zt;Se(me),t(Et),t(Z),t(O);var Ot=o(O,2),ft=s(Ot),Vt=s(ft),It=s(Vt),Bs=o(s(It));{var Ds=w=>{var q=Sa(),mt=s(q);t(q),h(()=>f(mt,`(${e(Ve).length??""})`)),l(w,q)};_(Bs,w=>{e(Ve).length>0&&w(Ds)})}t(It),De(2),t(Vt),t(ft);var Kt=o(ft,2);{var Ss=w=>{var q=$a();l(w,q)},$s=w=>{var q=za();Ze(q,21,()=>e(Ve),es,(mt,J,be)=>{var bt=Ta(),Wt=s(bt),jt=s(Wt),Gt=s(jt);{var Fs=j=>{var m=Fa(),U=s(m);ts(U),Gs(U);var Be=o(U,2),Vs=o(Be,2);t(m),y("keydown",U,Xe=>{Xe.key==="Enter"&&Dt(be),Xe.key==="Escape"&&St()}),as(U,()=>e(Ae),Xe=>d(Ae,Xe)),y("click",Be,()=>Dt(be)),y("click",Vs,St),l(j,m)},Ps=j=>{var m=Pa(),U=s(m),Be=s(U,!0);t(U),t(m),h(()=>f(Be,e(J).pattern)),y("click",U,()=>Bt(be,e(J).pattern)),l(j,m)};_(Gt,j=>{e(Le)===be?j(Fs):j(Ps,!1)})}var ht=o(Gt,2),Jt=s(ht);{var Ls=j=>{var m=La(),U=o(s(m));t(m),h(Be=>f(U,` ${Be??""}`),[()=>gs(e(J).lastUsedAt)]),l(j,m)},Hs=j=>{var m=Ha();l(j,m)};_(Jt,j=>{e(J).lastUsedAt?j(Ls):j(Hs,!1)})}var Rs=o(Jt,2);{var Es=j=>{var m=Ra(),U=s(m);t(m),h(()=>{ss(m,"title",e(J).lastResolvedPath),f(U,`ā ${e(J).lastResolvedPath??""}`)}),l(j,m)};_(Rs,j=>{e(J).lastResolvedPath&&j(Es)})}t(ht);var Us=o(ht,2);{var Ts=j=>{var m=Ea(),U=s(m);t(m),h(()=>{ss(m,"title",e(J).lastUsedCommand),f(U,`$ ${e(J).lastUsedCommand??""}`)}),l(j,m)};_(Us,j=>{e(J).lastUsedCommand&&j(Ts)})}t(jt);var Xt=o(jt,2),Yt=s(Xt);{var zs=j=>{var m=Ua();y("click",m,()=>Bt(be,e(J).pattern)),l(j,m)};_(Yt,j=>{e(Le)!==be&&j(zs)})}var Os=o(Yt,2);t(Xt),t(Wt),t(bt),y("click",Os,()=>xs(be)),l(mt,bt)}),t(q),l(w,q)};_(Kt,w=>{e(Ve).length===0?w(Ss):w($s,!1)})}var Nt=o(Kt,2),Qt=s(Nt),Je=s(Qt);ts(Je);var _t=o(Je,2);t(Qt),t(Nt),t(Ot),h((w,q)=>{f(ae,e(u)==="*"?"* (global)":e(u)),f(de,`Default: ${e(D).security??""}`),f(qe,`Use default (${e(D).security??""})`),ue!==(ue=e(Q)?.security??"__default__")&&(V.value=(V.__value=e(Q)?.security??"__default__")??"",$e(V,e(Q)?.security??"__default__")),f(x,`Default: ${e(D).ask??""}`),f(Ms,`Use default (${e(D).ask??""})`),Rt!==(Rt=e(Q)?.ask??"__default__")&&(C.value=(C.__value=e(Q)?.ask??"__default__")??"",$e(C,e(Q)?.ask??"__default__")),f(Cs,`Default: ${e(D).askFallback??""}`),f(qs,`Use default (${e(D).askFallback??""})`),zt!==(zt=e(Q)?.askFallback??"__default__")&&(me.value=(me.__value=e(Q)?.askFallback??"__default__")??"",$e(me,e(Q)?.askFallback??"__default__")),_t.disabled=w,S(_t,1,`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg transition-all
|
|
15
|
+
${q??""}`,"svelte-19gsovj")},[()=>!e(we).trim(),()=>e(we).trim()?"bg-accent-green/15 text-accent-green border border-accent-green/30 hover:bg-accent-green/25":"bg-bg-tertiary text-text-muted border border-border-default opacity-50 cursor-not-allowed"]),y("change",V,w=>{const q=w.target.value;q==="__default__"?at(e(u),"security"):st(e(u),"security",q)}),y("change",C,w=>{const q=w.target.value;q==="__default__"?at(e(u),"ask"):st(e(u),"ask",q)}),y("change",me,w=>{const q=w.target.value;q==="__default__"?at(e(u),"askFallback"):st(e(u),"askFallback",q)}),y("keydown",Je,w=>{w.key==="Enter"&&qt()}),as(Je,()=>e(we),w=>d(we,w)),y("click",_t,qt),l(A,M)};_(Ce,A=>{e(u)==="__defaults__"?A(_e):A(Ue,!1)})}De(2),h(()=>S(se,1,`px-3 py-1.5 text-xs rounded-lg border transition-all
|
|
16
|
+
${e(u)==="__defaults__"?"bg-accent-cyan/15 text-accent-cyan border-accent-cyan/30 font-medium":"bg-bg-tertiary text-text-muted border-border-default hover:text-text-primary hover:border-border-glow"}`,"svelte-19gsovj")),y("click",se,()=>d(u,"__defaults__")),l(p,b)};_(g,p=>{!e(v)&&!e(re)?p(ne):e(re)&&!e(v)?p(X,1):e(v)&&p(ie,2)})}t(r),h(()=>{ve.disabled=e(re),S(Ge,0,`w-3.5 h-3.5 ${e(re)?"animate-spin":""}`,"svelte-19gsovj"),f(dt,` ${e(re)?"Loadingā¦":"Reload"}`),fe.disabled=e(Pe)||!e(ke),S(fe,1,`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg transition-all
|
|
17
|
+
${e(ke)?"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"}`,"svelte-19gsovj")}),y("click",ve,()=>kt(()=>Ie())),y("click",fe,ps),l(a,r)};_(ys,a=>{et.state.status!=="connected"?a(ks):e(pe)==="queue"?a(ws,1):e(pe)==="allowlist"&&a(As,2)})}t(Lt),t(ot),h(()=>{S(vt,1,`w-10 h-10 rounded-xl border border-border-glow flex items-center justify-center relative
|
|
18
|
+
${e(Oe)?"approval-pulse":""}`,"svelte-19gsovj"),S(Re,1,`px-3 py-1.5 text-sm rounded-md transition-all flex items-center gap-1.5
|
|
19
|
+
${e(pe)==="queue"?"bg-bg-hover text-accent-cyan font-medium":"text-text-muted hover:text-text-primary"}`,"svelte-19gsovj"),S(Ne,1,`px-3 py-1.5 text-sm rounded-md transition-all flex items-center gap-1.5
|
|
20
|
+
${e(pe)==="allowlist"?"bg-bg-hover text-accent-green font-medium":"text-text-muted hover:text-text-primary"}`,"svelte-19gsovj")}),y("click",Re,()=>d(pe,"queue")),y("click",Ne,()=>d(pe,"allowlist")),l(os,ot),Ns()}Is(["click","change","keydown"]);export{to as component};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{d as Xe,a as it,b as d,f as v,s as l,t as Et,c as ie}from"../chunks/B2A7gHtL.js";import{p as Ze,s as q,a as tr,u as er,b as rr,t as g,c as ar,e as sr,g as t,d as m,f as s,$ as or,h as r,r as e,i as F,j as Rt,n as Dt}from"../chunks/qR_TM3YX.js";import{i as x}from"../chunks/DpBBTLWw.js";import{g as nr,a as at,s as j,e as Tt,i as ne,b as de}from"../chunks/D6tSezzf.js";import{h as dr}from"../chunks/CXQ1lKJR.js";import{g as ir}from"../chunks/Be_uRYmX.js";import{f as lt}from"../chunks/DPrxUVm_.js";var lr=v('<span class="text-xs text-text-muted font-mono"> </span>'),cr=v('<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">Errors</span> <span class="text-red-400 font-mono font-semibold"> </span></div>'),vr=v('<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">Connected</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-accent-amber"></span> <span class="text-text-muted">Configured</span> <span class="text-text-secondary font-mono font-semibold"> </span></div> <!></div>'),ur=v('<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 channel status.</p></div>'),pr=v('<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>'),xr=v('<div class="glass rounded-xl p-5 border border-border-default animate-pulse"><div class="flex items-center gap-3 mb-4"><div class="w-10 h-10 rounded-xl bg-bg-tertiary"></div> <div><div class="h-4 w-24 bg-bg-tertiary rounded mb-1.5"></div> <div class="h-3 w-36 bg-bg-tertiary rounded"></div></div></div> <div class="space-y-2.5"><div class="h-3 w-full bg-bg-tertiary rounded"></div> <div class="h-3 w-3/4 bg-bg-tertiary rounded"></div> <div class="h-3 w-1/2 bg-bg-tertiary rounded"></div></div></div>'),gr=v('<div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4"></div>'),br=v('<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="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> <p class="text-text-muted text-sm">No channels configured. Add channels in your gateway config.</p></div>'),fr=v("<div> </div>"),mr=v('<div class="flex justify-between"><span class="text-text-muted">Linked</span> <span> </span></div>'),_r=v('<div class="flex justify-between"><span class="text-text-muted">Mode</span> <span class="text-text-primary font-mono"> </span></div>'),hr=v('<div class="mx-4 mb-3 p-2.5 rounded-lg bg-red-500/8 border border-red-500/20"><p class="text-xs text-red-400 leading-relaxed break-words"> </p></div>'),wr=v("<div><p> <!> <!> <!></p></div>"),yr=v('<div class="mx-4 mb-3 p-2.5 rounded-lg bg-accent-cyan/8 border border-accent-cyan/20"><p class="text-xs text-accent-cyan"> </p></div>'),kr=v('<div class="mx-4 mb-3 p-2.5 rounded-lg bg-accent-green/8 border border-accent-green/20"><div class="flex items-center gap-2"><svg class="w-4 h-4 text-accent-green" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <p class="text-xs text-accent-green font-medium">WhatsApp connected successfully!</p></div></div>'),Mr=v('<div class="mx-4 mb-3 text-center"><p class="text-xs text-text-muted animate-pulse">Waiting for scanā¦</p></div>'),Cr=v('<div class="mx-4 mb-3 flex justify-center"><div><img alt="WhatsApp QR Code" class="w-48 h-48"/></div></div> <!>',1),Ar=ie('<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> Workingā¦',1),zr=ie('<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="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z"></path></svg> Show QR',1),Lr=v(`<button class="px-3 py-1.5 text-xs font-medium rounded-lg transition-all
|
|
2
|
+
bg-bg-tertiary text-text-secondary border border-border-default
|
|
3
|
+
hover:text-accent-cyan hover:border-accent-cyan/30
|
|
4
|
+
disabled:opacity-40 disabled:cursor-not-allowed">Wait for scan</button>`),jr=v(`<!> <!> <!> <div class="px-4 pb-3 flex flex-wrap gap-2"><button class="flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-lg transition-all
|
|
5
|
+
bg-[#25d366]/15 text-[#25d366] border border-[#25d366]/25
|
|
6
|
+
hover:bg-[#25d366]/25 hover:border-[#25d366]/40
|
|
7
|
+
disabled:opacity-40 disabled:cursor-not-allowed"><!></button> <button class="px-3 py-1.5 text-xs font-medium rounded-lg transition-all
|
|
8
|
+
bg-bg-tertiary text-text-secondary border border-border-default
|
|
9
|
+
hover:text-accent-cyan hover:border-accent-cyan/30
|
|
10
|
+
disabled:opacity-40 disabled:cursor-not-allowed">Relink</button> <!></div>`,1),$r=v('<p class="mt-1.5 text-[11px] text-red-400 break-words"> </p>'),Sr=v('<div class="p-2.5 rounded-lg bg-bg-tertiary/50 border border-border-default"><div class="flex items-center justify-between mb-1.5"><span class="text-xs font-medium text-text-primary"> </span> <span class="text-[10px] font-mono text-text-muted"> </span></div> <div class="grid grid-cols-3 gap-2 text-[11px]"><div><span class="text-text-muted">Running</span> <span> </span></div> <div><span class="text-text-muted">Config</span> <span> </span></div> <div><span class="text-text-muted">Inbound</span> <span class="ml-1 text-text-primary"> </span></div></div> <!></div>'),Br=v('<div class="px-4 pb-3 space-y-2"></div>'),Hr=v(`<button class="flex items-center gap-1 px-2.5 py-1.5 text-xs font-medium rounded-lg transition-all
|
|
11
|
+
text-red-400/80 hover:text-red-400 hover:bg-red-500/10 border border-transparent hover:border-red-500/20
|
|
12
|
+
disabled:opacity-40 disabled:cursor-not-allowed"><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="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"></path></svg> </button>`),Wr=v('<div><span class="text-text-muted block mb-0.5">Last connected</span> <span class="text-text-primary"> </span></div>'),Vr=v('<div><span class="text-text-muted block mb-0.5">Last message</span> <span class="text-text-primary"> </span></div>'),Nr=v('<div><span class="text-text-muted block mb-0.5">Last start</span> <span class="text-text-primary"> </span></div>'),Er=v('<div><span class="text-text-muted block mb-0.5">Last probe</span> <span class="text-text-primary"> </span></div>'),Rr=v('<div><span class="text-text-muted block mb-0.5">Auth age</span> <span class="text-text-primary font-mono"> </span></div>'),Dr=v('<div><span class="text-text-muted block mb-0.5">Base URL</span> <span class="text-text-primary font-mono text-[11px] break-all"> </span></div>'),Tr=v('<div><span class="text-text-muted block mb-0.5">Mode</span> <span class="text-text-primary font-mono"> </span></div>'),Ur=v('<div class="border-t border-border-default p-4 animate-slide-in-up"><div class="grid grid-cols-2 lg:grid-cols-3 gap-4 text-xs"><!> <!> <!> <!> <!> <!> <!></div> <details class="mt-4"><summary class="text-[11px] text-text-muted cursor-pointer hover:text-text-secondary transition-colors">Raw status JSON</summary> <pre class="mt-2 p-3 rounded-lg bg-bg-tertiary/60 border border-border-default text-[11px] text-text-secondary font-mono overflow-x-auto max-h-64 overflow-y-auto leading-relaxed"> </pre></details></div>'),Or=v(`<div><div class="p-4 pb-3"><div class="flex items-start justify-between gap-3"><div class="flex items-center gap-3 min-w-0"><div><svg viewBox="0 0 24 24" fill="currentColor"><path></path></svg></div> <div class="min-w-0"><h3 class="text-sm font-semibold text-text-primary truncate"> </h3> <p class="text-xs text-text-muted truncate"> </p></div></div> <span><span class="inline-flex items-center gap-1"><span></span> </span></span></div> <!></div> <div class="px-4 pb-3"><div class="grid grid-cols-2 gap-x-4 gap-y-1.5 text-xs"><div class="flex justify-between"><span class="text-text-muted">Configured</span> <span> </span></div> <div class="flex justify-between"><span class="text-text-muted">Running</span> <span> </span></div> <div class="flex justify-between"><span class="text-text-muted">Connected</span> <span> </span></div> <!> <!></div></div> <!> <!> <!> <!> <div class="px-4 pb-4 pt-1 flex items-center gap-2 border-t border-border-default mt-1"><button class="flex items-center gap-1 px-2.5 py-1.5 text-xs font-medium rounded-lg transition-all
|
|
13
|
+
text-text-muted hover:text-text-primary hover:bg-bg-hover"><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> Details</button> <div class="flex-1"></div> <!></div> <!></div>`),Yr=v('<span class="text-xs text-text-muted font-mono ml-2"> </span>'),Qr=v('<div class="p-2.5 rounded-lg bg-red-500/8 border border-red-500/20 mb-3"><p class="text-xs text-red-400"> </p></div>'),Pr=v('<details class="mt-6"><summary class="glass rounded-xl p-4 border border-border-default cursor-pointer hover:border-accent-cyan/20 transition-all"><div class="inline-flex items-center gap-2"><svg class="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="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"></path></svg> <span class="text-sm text-text-muted">Channel health snapshot</span> <!></div></summary> <div class="mt-2 glass rounded-xl p-4 border border-border-default"><!> <pre class="text-[11px] text-text-secondary font-mono overflow-x-auto max-h-96 overflow-y-auto leading-relaxed"> </pre></div></details>'),Jr=v('<div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4"></div> <!>',1),qr=v('<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="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">Channels</h1> <p class="text-sm text-text-muted">Messaging platform connections and health</p></div></div></div> <div class="flex items-center gap-2"><!> <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> <button class="flex items-center gap-1.5 px-3 py-1.5 text-sm bg-accent-cyan/10 border border-accent-cyan/25 rounded-lg text-accent-cyan hover:bg-accent-cyan/20 hover:border-accent-cyan/40 transition-all disabled:opacity-40 disabled:cursor-not-allowed"><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.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> Probe All</button></div></div> <!></div> <div class="flex-1 overflow-y-auto p-4 md:p-6"><!></div></div>');function ea(le,ce){Ze(ce,!0);const wt=nr(),G=ir(),ve={discord:{color:"text-[#7289da]",bg:"bg-[#7289da]/10",border:"border-[#7289da]/25",glow:"shadow-[0_0_12px_rgba(114,137,218,0.2)]",icon:"M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03z"},telegram:{color:"text-[#0088cc]",bg:"bg-[#0088cc]/10",border:"border-[#0088cc]/25",glow:"shadow-[0_0_12px_rgba(0,136,204,0.2)]",icon:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19-.14.75-.42 1-.68 1.03-.58.05-1.02-.38-1.58-.75-.88-.58-1.38-.94-2.23-1.5-.99-.65-.35-1.01.22-1.59.15-.15 2.71-2.48 2.76-2.69a.2.2 0 00-.05-.18c-.06-.05-.14-.03-.21-.02-.09.02-1.49.95-4.22 2.79-.4.27-.76.41-1.08.4-.36-.01-1.04-.2-1.55-.37-.63-.2-1.12-.31-1.08-.66.02-.18.27-.36.74-.55 2.92-1.27 4.86-2.11 5.83-2.51 2.78-1.16 3.35-1.36 3.73-1.36.08 0 .27.02.39.12.1.08.13.19.14.27-.01.06.01.24 0 .38z"},whatsapp:{color:"text-[#25d366]",bg:"bg-[#25d366]/10",border:"border-[#25d366]/25",glow:"shadow-[0_0_12px_rgba(37,211,102,0.2)]",icon:"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z M12 2C6.477 2 2 6.477 2 12c0 1.89.525 3.66 1.438 5.168L2 22l4.832-1.438A9.955 9.955 0 0012 22c5.523 0 10-4.477 10-10S17.523 2 12 2z"},signal:{color:"text-[#3a76f0]",bg:"bg-[#3a76f0]/10",border:"border-[#3a76f0]/25",glow:"shadow-[0_0_12px_rgba(58,118,240,0.2)]",icon:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15l-4-4 1.41-1.41L11 14.17l6.59-6.59L19 9l-8 8z"},slack:{color:"text-[#e01e5a]",bg:"bg-[#e01e5a]/10",border:"border-[#e01e5a]/25",glow:"shadow-[0_0_12px_rgba(224,30,90,0.2)]",icon:"M5.042 15.165a2.528 2.528 0 01-2.52 2.523A2.528 2.528 0 010 15.165a2.527 2.527 0 012.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 012.521-2.52 2.527 2.527 0 012.521 2.52v6.313A2.528 2.528 0 018.834 24a2.528 2.528 0 01-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 01-2.521-2.52A2.528 2.528 0 018.834 0a2.528 2.528 0 012.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 012.521 2.521 2.528 2.528 0 01-2.521 2.521H2.522A2.528 2.528 0 010 8.834a2.528 2.528 0 012.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 012.522-2.521A2.528 2.528 0 0124 8.834a2.528 2.528 0 01-2.522 2.521h-2.522V8.834zm-1.271 0a2.528 2.528 0 01-2.521 2.521 2.528 2.528 0 01-2.521-2.521V2.522A2.528 2.528 0 0115.164 0a2.528 2.528 0 012.521 2.522v6.312zM15.164 18.956a2.528 2.528 0 012.521 2.522A2.528 2.528 0 0115.164 24a2.528 2.528 0 01-2.521-2.522v-2.522h2.521zm0-1.271a2.528 2.528 0 01-2.521-2.521 2.528 2.528 0 012.521-2.521h6.314A2.528 2.528 0 0124 15.164a2.528 2.528 0 01-2.522 2.521h-6.314z"},imessage:{color:"text-[#34c759]",bg:"bg-[#34c759]/10",border:"border-[#34c759]/25",glow:"shadow-[0_0_12px_rgba(52,199,89,0.2)]",icon:"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"},nostr:{color:"text-accent-purple",bg:"bg-accent-purple/10",border:"border-accent-purple/25",glow:"shadow-[0_0_12px_rgba(124,77,255,0.2)]",icon:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"},googlechat:{color:"text-[#00ac47]",bg:"bg-[#00ac47]/10",border:"border-[#00ac47]/25",glow:"shadow-[0_0_12px_rgba(0,172,71,0.2)]",icon:"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"},"nextcloud-talk":{color:"text-[#0082c9]",bg:"bg-[#0082c9]/10",border:"border-[#0082c9]/25",glow:"shadow-[0_0_12px_rgba(0,130,201,0.2)]",icon:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1.41 16.09V20H8.54v-1.91c-1.75-.32-3.29-1.46-3.4-3.33h1.82c.13 1.05.97 1.72 2.59 1.72 1.72 0 2.1-.81 2.1-1.32 0-.69-.42-1.33-2.17-1.79C7.76 12.91 6 12.15 6 10.24c0-1.57 1.27-2.66 2.54-2.98V5.35h2.05v1.93c1.61.42 2.57 1.66 2.62 3.03h-1.82c-.05-.96-.73-1.72-2.12-1.72-1.32 0-2.21.59-2.21 1.48 0 .93.65 1.28 2.42 1.76 1.96.53 3.83 1.14 3.83 3.41 0 1.78-1.36 2.76-2.72 3.15V18.09z"}},ue={color:"text-accent-cyan",bg:"bg-accent-cyan/10",border:"border-accent-cyan/25",glow:"shadow-[0_0_12px_rgba(0,229,255,0.2)]",icon:"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"},pe={discord:"Bot status and server configuration",telegram:"Bot status and message polling",whatsapp:"WhatsApp Web link and connection health",signal:"signal-cli daemon status",slack:"Slack app and workspace connection",imessage:"iMessage bridge status",nostr:"Nostr relay and profile management",googlechat:"Google Chat app status","nextcloud-talk":"Nextcloud Talk webhook bot"};let B=q(null),I=q(!1),ct=q(null),xt=q(null),E=q(!1),K=q(null),X=q(null),gt=q(null),st=q(tr({})),kt=q(null),xe=F(()=>t(B)?.channelMeta?.length?t(B).channelMeta.map(a=>a.id):t(B)?.channelOrder?.length?t(B).channelOrder:["whatsapp","telegram","discord","googlechat","slack","signal","imessage","nostr"]),ot=F(()=>{const a=t(B)?.channels??{},n=t(B)?.channelAccounts??{};return t(xe).map((u,k)=>{const C=a[u],H=n[u]??[],o=!!(C?.configured||C?.running||C?.connected||H.some(A=>A.configured||A.running||A.connected));return{key:u,status:C,accounts:H,enabled:o,order:k}}).toSorted((u,k)=>u.enabled!==k.enabled?u.enabled?-1:1:u.order-k.order)}),bt=F(()=>{const a=t(ot).length,n=t(ot).filter(C=>Qt(C.status,C.accounts)==="connected").length,u=t(ot).filter(C=>C.enabled).length,k=t(ot).filter(C=>C.status?.lastError).length;return{total:a,connected:n,configured:u,errors:k}});async function ft(a=!1){if(!(!at.connected||t(I))){m(I,!0),m(ct,null);try{const n=await at.call("channels.status",{probe:a,timeoutMs:8e3});m(B,n,!0),m(xt,Date.now(),!0),a&&G.success("Channels probed","All channel statuses refreshed")}catch(n){m(ct,String(n),!0),G.error("Failed to load channels",String(n))}finally{m(I,!1)}}}async function ge(a){if(!(!at.connected||t(st)[a])){m(st,{...t(st),[a]:!0},!0);try{await at.call("channels.logout",{channelId:a}),G.success("Logged out",`${Yt(a)} has been disconnected`),a==="whatsapp"&&(m(K,"Logged out."),m(X,null),m(gt,null)),await ft(!1)}catch(n){G.error("Logout failed",String(n))}finally{m(st,{...t(st),[a]:!1},!0)}}}async function Ut(a=!1){if(!(!at.connected||t(E))){m(E,!0),m(K,null),m(X,null),m(gt,null);try{const n=await at.call("web.login.start",{force:a,timeoutMs:3e4});m(K,n.message??null,!0),m(X,n.qrDataUrl??null,!0),t(X)&&(G.info("QR Code ready","Scan with WhatsApp to connect"),Ot())}catch(n){m(K,String(n),!0),G.error("WhatsApp login failed",String(n))}finally{m(E,!1)}}}async function Ot(){if(!(!at.connected||t(E))){m(E,!0);try{const a=await at.call("web.login.wait",{timeoutMs:12e4});m(K,a.message??null,!0),m(gt,a.connected??null,!0),a.connected?(m(X,null),G.success("WhatsApp connected","Successfully linked via QR scan"),await ft(!1)):a.error&&G.error("WhatsApp login failed",a.error)}catch(a){m(K,String(a),!0),m(gt,null)}finally{m(E,!1)}}}function Yt(a){return t(B)?.channelMeta?.find(u=>u.id===a)?.label??t(B)?.channelLabels?.[a]??a.charAt(0).toUpperCase()+a.slice(1)}function be(a){return ve[a]??ue}function Qt(a,n){return a?.connected||n?.some(u=>u.connected)||a?.running&&a?.configured||a?.configured&&!a?.lastError?"connected":a?.running?"connecting":(a?.configured&&a?.lastError,"disconnected")}function fe(a){switch(a){case"connected":return"bg-accent-green";case"connecting":return"bg-accent-amber";default:return"bg-red-500"}}function me(a){switch(a){case"connected":return"bg-accent-green/15 text-accent-green border border-accent-green/20";case"connecting":return"bg-accent-amber/15 text-accent-amber border border-accent-amber/20";default:return"bg-red-500/10 text-red-400 border border-red-500/20"}}function _e(a){m(kt,t(kt)===a?null:a,!0)}function he(a){const n=Math.floor(a/1e3);if(n<60)return`${n}s`;const u=Math.floor(n/60);if(u<60)return`${u}m`;const k=Math.floor(u/60);return k<24?`${k}h ${u%60}m`:`${Math.floor(k/24)}d ${k%24}h`}er(()=>{wt.state.status==="connected"&&rr(()=>ft(!1))});var Mt=qr();dr("1psf3x9",a=>{sr(()=>{or.title="Channels ā Cortex"})});var Ct=r(Mt),At=r(Ct),Pt=s(r(At),2),Jt=r(Pt);{var we=a=>{var n=lr(),u=r(n,!0);e(n),g(k=>l(u,k),[()=>lt(t(xt))]),d(a,n)};x(Jt,a=>{t(xt)&&a(we)})}var mt=s(Jt,2),qt=r(mt),ye=s(qt);e(mt);var Ft=s(mt,2);e(Pt),e(At);var ke=s(At,2);{var Me=a=>{var n=vr(),u=r(n),k=s(r(u),4),C=r(k,!0);e(k),e(u);var H=s(u,2),o=s(r(H),4),A=r(o,!0);e(o),e(H);var R=s(H,2),Z=s(r(R),4),vt=r(Z,!0);e(Z),e(R);var ut=s(R,2);{var pt=T=>{var U=cr(),tt=s(r(U),4),$=r(tt,!0);e(tt),e(U),g(()=>l($,t(bt).errors)),d(T,U)};x(ut,T=>{t(bt).errors>0&&T(pt)})}e(n),g(()=>{l(C,t(bt).total),l(A,t(bt).connected),l(vt,t(bt).configured)}),d(a,n)};x(ke,a=>{t(B)&&t(ot).length>0&&a(Me)})}e(Ct);var Gt=s(Ct,2),Ce=r(Gt);{var Ae=a=>{var n=ur();d(a,n)},ze=a=>{var n=pr(),u=r(n),k=s(r(u),2),C=r(k,!0);e(k),e(u),e(n),g(()=>l(C,t(ct))),d(a,n)},Le=a=>{var n=gr();Tt(n,20,()=>Array(4),ne,(u,k)=>{var C=xr();d(u,C)}),e(n),d(a,n)},je=a=>{var n=br();d(a,n)},$e=a=>{var n=Jr(),u=Rt(n);Tt(u,21,()=>t(ot),H=>H.key,(H,o)=>{const A=F(()=>be(t(o).key)),R=F(()=>Qt(t(o).status,t(o).accounts)),Z=F(()=>t(kt)===t(o).key),vt=F(()=>t(o).key==="whatsapp"),ut=F(()=>Yt(t(o).key)),pt=F(()=>pe[t(o).key]??"Channel status and configuration");var T=Or(),U=r(T),tt=r(U),$=r(tt),V=r($),et=r(V),_t=r(et);e(et),e(V);var It=s(V,2),zt=r(It),Se=r(zt,!0);e(zt);var Kt=s(zt,2),Be=r(Kt,!0);e(Kt),e(It),e($);var Lt=s($,2),Xt=r(Lt),Zt=r(Xt),He=s(Zt);e(Xt),e(Lt),e(tt);var We=s(tt,2);{var Ve=c=>{var i=fr(),_=r(i);e(i),g(()=>{j(i,1,`mt-2 text-[10px] font-medium uppercase tracking-wider text-text-muted ${t(A).color??""}`),l(_,`${t(o).accounts.length??""} accounts`)}),d(c,i)};x(We,c=>{t(o).accounts.length>1&&c(Ve)})}e(U);var jt=s(U,2),te=r(jt),$t=r(te),St=s(r($t),2),Ne=r(St,!0);e(St),e($t);var Bt=s($t,2),Ht=s(r(Bt),2),Ee=r(Ht,!0);e(Ht),e(Bt);var Wt=s(Bt,2),Vt=s(r(Wt),2),Re=r(Vt,!0);e(Vt),e(Wt);var ee=s(Wt,2);{var De=c=>{var i=mr(),_=s(r(i),2),h=r(_,!0);e(_),e(i),g(()=>{j(_,1,t(o).status?.linked?"text-accent-green":"text-text-secondary"),l(h,t(o).status?.linked?"Yes":"No")}),d(c,i)};x(ee,c=>{t(vt)&&t(o).status?.linked!==void 0&&c(De)})}var Te=s(ee,2);{var Ue=c=>{var i=_r(),_=s(r(i),2),h=r(_,!0);e(_),e(i),g(()=>l(h,t(o).status.mode)),d(c,i)};x(Te,c=>{t(o).status?.mode&&c(Ue)})}e(te),e(jt);var re=s(jt,2);{var Oe=c=>{var i=hr(),_=r(i),h=r(_,!0);e(_),e(i),g(()=>l(h,t(o).status.lastError)),d(c,i)};x(re,c=>{t(o).status?.lastError&&c(Oe)})}var ae=s(re,2);{var Ye=c=>{var i=wr(),_=r(i),h=r(_),O=s(h);{var Y=z=>{var L=Et();g(()=>l(L,`Ā· ${t(o).status.probe.status??""}`)),d(z,L)};x(O,z=>{t(o).status.probe.status&&z(Y)})}var D=s(O,2);{var Q=z=>{var L=Et();g(()=>l(L,`Ā· ${t(o).status.probe.error??""}`)),d(z,L)};x(D,z=>{t(o).status.probe.error&&z(Q)})}var rt=s(D,2);{var W=z=>{var L=Et();g(()=>l(L,`Ā· @${t(o).status.probe.bot.username??""}`)),d(z,L)};x(rt,z=>{t(o).status.probe.bot?.username&&z(W)})}e(_),e(i),g(()=>{j(i,1,`mx-4 mb-3 p-2.5 rounded-lg ${t(o).status.probe.ok?"bg-accent-green/8 border border-accent-green/20":"bg-accent-amber/8 border border-accent-amber/20"}`),j(_,1,`text-xs ${t(o).status.probe.ok?"text-accent-green":"text-accent-amber"}`),l(h,`Probe ${t(o).status.probe.ok?"ok":"failed"} `)}),d(c,i)};x(ae,c=>{t(o).status?.probe&&c(Ye)})}var se=s(ae,2);{var Qe=c=>{var i=jr(),_=Rt(i);{var h=f=>{var M=yr(),N=r(M),J=r(N,!0);e(N),e(M),g(()=>l(J,t(K))),d(f,M)};x(_,f=>{t(K)&&f(h)})}var O=s(_,2);{var Y=f=>{var M=kr();d(f,M)};x(O,f=>{t(gt)&&f(Y)})}var D=s(O,2);{var Q=f=>{var M=Cr(),N=Rt(M),J=r(N),p=r(J);e(J),e(N);var b=s(N,2);{var w=y=>{var S=Mr();d(y,S)};x(b,y=>{t(E)&&y(w)})}g(()=>{j(J,1,`p-3 bg-white rounded-xl border-2 ${t(A).border??""}`),de(p,"src",t(X))}),d(f,M)};x(D,f=>{t(X)&&f(Q)})}var rt=s(D,2),W=r(rt),z=r(W);{var L=f=>{var M=Ar();Dt(),d(f,M)},nt=f=>{var M=zr();Dt(),d(f,M)};x(z,f=>{t(E)?f(L):f(nt,!1)})}e(W);var P=s(W,2),ht=s(P,2);{var dt=f=>{var M=Lr();g(()=>M.disabled=t(E)),it("click",M,Ot),d(f,M)};x(ht,f=>{t(X)||f(dt)})}e(rt),g(()=>{W.disabled=t(E),P.disabled=t(E)}),it("click",W,()=>Ut(!1)),it("click",P,()=>Ut(!0)),d(c,i)};x(se,c=>{t(vt)&&c(Qe)})}var oe=s(se,2);{var Pe=c=>{var i=Br();Tt(i,21,()=>t(o).accounts,ne,(_,h)=>{const O=F(()=>t(h).probe?.bot?.username);var Y=Sr(),D=r(Y),Q=r(D),rt=r(Q,!0);e(Q);var W=s(Q,2),z=r(W,!0);e(W),e(D);var L=s(D,2),nt=r(L),P=s(r(nt),2),ht=r(P,!0);e(P),e(nt);var dt=s(nt,2),f=s(r(dt),2),M=r(f,!0);e(f),e(dt);var N=s(dt,2),J=s(r(N),2),p=r(J,!0);e(J),e(N),e(L);var b=s(L,2);{var w=y=>{var S=$r(),Ke=r(S,!0);e(S),g(()=>l(Ke,t(h).lastError)),d(y,S)};x(b,y=>{t(h).lastError&&y(w)})}e(Y),g(y=>{l(rt,t(O)?`@${t(O)}`:t(h).name||t(h).accountId),l(z,t(h).accountId),j(P,1,`ml-1 ${t(h).running?"text-accent-green":"text-text-secondary"}`),l(ht,t(h).running?"Yes":"No"),j(f,1,`ml-1 ${t(h).configured?"text-accent-green":"text-text-secondary"}`),l(M,t(h).configured?"Yes":"No"),l(p,y)},[()=>t(h).lastInboundAt?lt(t(h).lastInboundAt):"n/a"]),d(_,Y)}),e(i),d(c,i)};x(oe,c=>{t(o).accounts.length>1&&c(Pe)})}var Nt=s(oe,2),yt=r(Nt),Je=r(yt);Dt(),e(yt);var qe=s(yt,4);{var Fe=c=>{var i=Hr(),_=s(r(i));e(i),g(()=>{i.disabled=t(st)[t(o).key],l(_,` ${t(st)[t(o).key]?"Logging outā¦":"Logout"}`)}),it("click",i,()=>ge(t(o).key)),d(c,i)};x(qe,c=>{(t(o).status?.connected||t(o).status?.running)&&c(Fe)})}e(Nt);var Ge=s(Nt,2);{var Ie=c=>{var i=Ur(),_=r(i),h=r(_);{var O=p=>{var b=Wr(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(S=>l(y,S),[()=>lt(t(o).status.lastConnectedAt)]),d(p,b)};x(h,p=>{t(o).status?.lastConnectedAt&&p(O)})}var Y=s(h,2);{var D=p=>{var b=Vr(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(S=>l(y,S),[()=>lt(t(o).status.lastMessageAt)]),d(p,b)};x(Y,p=>{t(o).status?.lastMessageAt&&p(D)})}var Q=s(Y,2);{var rt=p=>{var b=Nr(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(S=>l(y,S),[()=>lt(t(o).status.lastStartAt)]),d(p,b)};x(Q,p=>{t(o).status?.lastStartAt&&p(rt)})}var W=s(Q,2);{var z=p=>{var b=Er(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(S=>l(y,S),[()=>lt(t(o).status.lastProbeAt)]),d(p,b)};x(W,p=>{t(o).status?.lastProbeAt&&p(z)})}var L=s(W,2);{var nt=p=>{var b=Rr(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(S=>l(y,S),[()=>he(t(o).status.authAgeMs)]),d(p,b)};x(L,p=>{t(o).status?.authAgeMs!=null&&p(nt)})}var P=s(L,2);{var ht=p=>{var b=Dr(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(()=>l(y,t(o).status.baseUrl)),d(p,b)};x(P,p=>{t(o).status?.baseUrl&&p(ht)})}var dt=s(P,2);{var f=p=>{var b=Tr(),w=s(r(b),2),y=r(w,!0);e(w),e(b),g(()=>l(y,t(o).status.mode)),d(p,b)};x(dt,p=>{t(o).status?.mode&&p(f)})}e(_);var M=s(_,2),N=s(r(M),2),J=r(N,!0);e(N),e(M),e(i),g(p=>l(J,p),[()=>JSON.stringify(t(o).status,null,2)]),d(c,i)};x(Ge,c=>{t(Z)&&c(Ie)})}e(T),g((c,i)=>{j(T,1,`glass rounded-xl border transition-all duration-300 animate-fade-in
|
|
14
|
+
${t(o).enabled?t(A).border+" "+t(A).glow:"border-border-default opacity-60"}
|
|
15
|
+
${t(Z)?"md:col-span-2 xl:col-span-2":""}
|
|
16
|
+
hover:border-opacity-50`),j(V,1,`w-10 h-10 rounded-xl ${t(A).bg??""} ${t(A).border??""} border flex items-center justify-center flex-shrink-0`),j(et,0,`w-5 h-5 ${t(A).color??""}`),de(_t,"d",t(A).icon),l(Se,t(ut)),l(Be,t(pt)),j(Lt,1,`flex-shrink-0 text-[10px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded-full ${c??""}`),j(Zt,1,`w-1.5 h-1.5 rounded-full ${i??""} ${t(R)==="connected"?"glow-pulse":""}`),l(He,` ${t(R)??""}`),j(St,1,t(o).status?.configured?"text-accent-green":"text-text-secondary"),l(Ne,t(o).status?.configured?"Yes":"No"),j(Ht,1,t(o).status?.running?"text-accent-green":"text-text-secondary"),l(Ee,t(o).status?.running?"Yes":"No"),j(Vt,1,t(o).status?.connected?"text-accent-green":"text-text-secondary"),l(Re,t(o).status?.connected?"Yes":"No"),j(Je,0,`w-3.5 h-3.5 transition-transform duration-200 ${t(Z)?"rotate-180":""}`)},[()=>me(t(R)),()=>fe(t(R))]),it("click",yt,()=>_e(t(o).key)),d(H,T)}),e(u);var k=s(u,2);{var C=H=>{var o=Pr(),A=r(o),R=r(A),Z=s(r(R),4);{var vt=$=>{var V=Yr(),et=r(V,!0);e(V),g(_t=>l(et,_t),[()=>lt(t(xt))]),d($,V)};x(Z,$=>{t(xt)&&$(vt)})}e(R),e(A);var ut=s(A,2),pt=r(ut);{var T=$=>{var V=Qr(),et=r(V),_t=r(et,!0);e(et),e(V),g(()=>l(_t,t(ct))),d($,V)};x(pt,$=>{t(ct)&&$(T)})}var U=s(pt,2),tt=r(U,!0);e(U),e(ut),e(o),g($=>l(tt,$),[()=>JSON.stringify(t(B),null,2)]),d(H,o)};x(k,H=>{t(B)&&H(C)})}d(a,n)};x(Ce,a=>{wt.state.status!=="connected"?a(Ae):t(ct)&&!t(B)?a(ze,1):t(I)&&!t(B)?a(Le,2):t(ot).length===0?a(je,3):a($e,!1)})}e(Gt),e(Mt),g(()=>{mt.disabled=t(I)||wt.state.status!=="connected",j(qt,0,`w-4 h-4 ${t(I)?"animate-spin":""}`),l(ye,` ${t(I)?"Loadingā¦":"Refresh"}`),Ft.disabled=t(I)||wt.state.status!=="connected"}),it("click",mt,()=>ft(!1)),it("click",Ft,()=>ft(!0)),d(le,Mt),ar()}Xe(["click"]);export{ea as component};
|