openclaw-cortex 3.2.4 → 3.2.5
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/dist/{audio-preflight-BT6BcGi_.js → audio-preflight-DgmMV8p-.js} +4 -4
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{chrome-CBhKqm1e.js → chrome-DxhUHYxR.js} +7 -7
- package/dist/control-ui/_app/immutable/chunks/2UnHt_9K.js +1 -0
- package/dist/control-ui/_app/immutable/chunks/B4GbTqhO.js +1 -0
- package/dist/control-ui/_app/immutable/chunks/BFumT5Y0.js +112 -0
- package/dist/control-ui/_app/immutable/chunks/{C7KVOWgV.js → BLM6VoLO.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{C9VLzrYr.js → BQKxqYwa.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CVAw3cDG.js → BR-s7H7s.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{Bt3hjGaS.js → BhDMmVbO.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{kbQmmJpo.js → BpdIPI45.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BhXAsS8g.js → BwK9WVrR.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CLY1rHgs.js → BwY8sfED.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{C_LuOpHS.js → C1Eymii5.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CseiHJK5.js → CGNab0sK.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DCXXFcx5.js → CMAgoL0b.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BsUBloFL.js → CRqxfK8Q.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{C7m1KhrR.js → CTNPOj0C.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CHTlfT2F.js → CTWxnwAC.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{Bh6lEBNv.js → CToOwI3J.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BQJCZmRh.js → C_KVsgu8.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DJjlYUoC.js → CjRaiADz.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DZsBL6ln.js → CmisPrPB.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{B8DrosHE.js → CtgLaeta.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BEwWGCvZ.js → D3i-icoF.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CrremO5S.js → D6TmrqPb.js} +4 -4
- package/dist/control-ui/_app/immutable/chunks/{BSVakDDW.js → DA25TLUp.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DRZM4rH8.js → DBlwFnJd.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{SHB02qEx.js → DFN8J1NF.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{dQY-7VfC.js → DLqjuVZy.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{TuMlQKbB.js → DM2PI6Ub.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CiyAy8dp.js → DN-9aXEU.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{-WaG6-Wa.js → DREM5LJO.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{Tfaq1PK1.js → DRMrozhP.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{Ba7JwTQm.js → DVR5y4oH.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DMY-Nl0I.js → DcdYjMti.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BLtDog0v.js → DeOOVYCg.js} +2 -2
- package/dist/control-ui/_app/immutable/chunks/{CPgEtRZT.js → Dgn5d0KE.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{Bae3KkPP.js → DkQuM6_3.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CxBb1Xul.js → Dp0CT_qn.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{5eXlR5OL.js → Dr9WtqlZ.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{Du2cKiDo.js → DvXEWbFO.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DnRi7lHs.js → FrknC80A.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DtDnO4qq.js → HSq6Z-Ri.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BrxfYBSP.js → L9tM3YT2.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CgWI5Oik.js → Mcnmm_vJ.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{C--qzJ6W.js → X1MNi0qp.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{C-JVM0la.js → XUyUXXap.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{C8PuvvjP.js → XzWkBa-Y.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{BsZ_uYnn.js → YH-SwxLT.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CVZCvD9s.js → c7C9Q4bC.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{CkF797NI.js → f2z7Vhzy.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DwPRscxf.js → qjmh8Sgh.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{DVy-_nYK.js → xY7vVkih.js} +1 -1
- package/dist/control-ui/_app/immutable/chunks/{aXQqHONi.js → xiH5_-XQ.js} +1 -1
- package/dist/control-ui/_app/immutable/entry/{app.DdWEO2JM.js → app.D7kdWIZ9.js} +2 -2
- package/dist/control-ui/_app/immutable/entry/start.BYvWRDfG.js +1 -0
- package/dist/control-ui/_app/immutable/nodes/{0.C6WLhEYF.js → 0.D6FVZzqA.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{1.C8XVTSEb.js → 1.C9c9_PmZ.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{10.DfK8stgG.js → 10.BDapaGMa.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{11.Dzw5x9Jt.js → 11.DBYtQZHB.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{12.Sd6L6Nq2.js → 12.D8XUK_lu.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{13.tVVXkjFh.js → 13.BDfcMPWD.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{14.D93_LX58.js → 14.CRNfMLjf.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{15.hsoE3Qhh.js → 15.CQ6Hk24N.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{16.Cf772zrj.js → 16.C4l7NDBm.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{17.QX2ielYQ.js → 17.BkTX8oXe.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{18.6qOW3iFE.js → 18.B5ULV77i.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/2.BbOfUph1.js +1 -0
- package/dist/control-ui/_app/immutable/nodes/{3.CJTqvGaW.js → 3.CAwDlZXX.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{4.Dz3JH-PB.js → 4.UqbCNSjq.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{5.BbK5Iwro.js → 5.fyz3FwUS.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{6.CbanPjIA.js → 6.Dico67qE.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{7.B2G6IFSu.js → 7.CTGW4yVr.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{8.C7FQ9bAP.js → 8.B4g5dpji.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{9.D4Abr5tX.js → 9.BzrUr7aI.js} +1 -1
- package/dist/control-ui/_app/version.json +1 -1
- package/dist/control-ui/index.html +6 -6
- package/dist/{deliver-6ybd_3jT.js → deliver-Brnl4HfK.js} +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{image-BccL3ngs.js → image-4JNpzCjn.js} +1 -1
- package/dist/{pi-embedded-BgUNEKQv.js → pi-embedded-DCp1o-Q-.js} +16 -16
- package/dist/{pi-embedded-helpers-Dh6fWzG0.js → pi-embedded-helpers-OUBsvbo7.js} +4 -4
- package/dist/plugin-sdk/{accounts-uAqOguyH.js → accounts-LxMkgia0.js} +1 -1
- package/dist/plugin-sdk/{accounts-b1Cok6r_.js → accounts-iN-dbgw4.js} +3 -3
- package/dist/plugin-sdk/{accounts-CRs7kbLB.js → accounts-vV5Gfd26.js} +1 -1
- package/dist/plugin-sdk/{active-listener-BdVTYHTN.js → active-listener-Bh0LXjEI.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-Bs92YR2y.js → agent-scope-CbyigN8s.js} +2 -2
- package/dist/plugin-sdk/{api-key-rotation-wd2Jnynp.js → api-key-rotation--_SHlBvO.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-CblfMzuT.js → audio-preflight-Cs-ml8zg.js} +25 -25
- package/dist/plugin-sdk/{bindings-BiEEaTNG.js → bindings-EiVe9I7R.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-DHI8R5Xg.js → channel-activity-PV3vhwo2.js} +1 -1
- package/dist/plugin-sdk/{channel-web-B06HVGIL.js → channel-web-21Mv-TmV.js} +22 -22
- package/dist/plugin-sdk/{chrome-ORXV3sOi.js → chrome-DY36v1wL.js} +3 -3
- package/dist/plugin-sdk/{chunk-C9J4kyVw.js → chunk-CyOBR4uk.js} +1 -1
- package/dist/plugin-sdk/{command-format-BTciq6Gg.js → command-format-C5kdEGEu.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-B03cVRjI.js → commands-registry-OichNmLJ.js} +3 -3
- package/dist/plugin-sdk/{common-xLIrQlvS.js → common-BnJL1iD6.js} +2 -2
- package/dist/plugin-sdk/{config-gGD5Rkaw.js → config-BG3Dq3SQ.js} +9 -9
- package/dist/plugin-sdk/{deliver-DrIvPqH5.js → deliver-BtCdGBea.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-oBxO5N68.js → diagnostic-DFXnVf2I.js} +1 -1
- package/dist/plugin-sdk/{fs-safe--E2UxVCE.js → fs-safe-D3UMk9-G.js} +1 -1
- package/dist/plugin-sdk/{image-psst3EfB.js → image-CcHh2-91.js} +4 -4
- package/dist/plugin-sdk/index.js +52 -52
- package/dist/plugin-sdk/{ir-B7KEB-SH.js → ir-CyBaWJwF.js} +4 -4
- package/dist/plugin-sdk/{local-roots-BCWc25rb.js → local-roots-BO0Dyqgm.js} +3 -3
- package/dist/plugin-sdk/{login-B3Mf_yyo.js → login-gAP1E9vw.js} +7 -7
- package/dist/plugin-sdk/{login-qr-BwyNiRRo.js → login-qr-C_TnVe07.js} +9 -9
- package/dist/plugin-sdk/{manager-Dv8oeW8Q.js → manager-CC6jXeB-.js} +8 -8
- package/dist/plugin-sdk/{manifest-registry-Lzj-fZNH.js → manifest-registry-BgkX6ON4.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-JToF08xk.js → markdown-tables-Q9Bw5OWT.js} +1 -1
- package/dist/plugin-sdk/{message-channel-C3OrO29D.js → message-channel-DxNExIdv.js} +1 -1
- package/dist/plugin-sdk/{model-selection-BP-yZfgL.js → model-selection-CcOKuG2n.js} +4 -4
- package/dist/plugin-sdk/{normalize-CALo0r3J.js → normalize-DQzsuqr8.js} +4 -4
- package/dist/plugin-sdk/{outbound-Xv_dXAwT.js → outbound-BNo9XNzM.js} +7 -7
- package/dist/plugin-sdk/{outbound-attachment-BcrG8SHW.js → outbound-attachment-CisuJmNV.js} +2 -2
- package/dist/plugin-sdk/{pi-auth-json-cJTtFNw1.js → pi-auth-json-BHnQjxub.js} +5 -5
- package/dist/plugin-sdk/{pi-embedded-helpers-DjyrCaOR.js → pi-embedded-helpers-D5mU_VuV.js} +17 -17
- package/dist/plugin-sdk/{plugins-DkDfsqpU.js → plugins-DZx_qlHO.js} +3 -3
- package/dist/plugin-sdk/{pw-ai-DzpfUQcL.js → pw-ai-DYABE96f.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-CJcPR4Tl.js → qmd-manager-B3_LuPWI.js} +4 -4
- package/dist/plugin-sdk/{registry-C8pj8ctW.js → registry-BECEtj9n.js} +2 -2
- package/dist/plugin-sdk/{replies-D70UX9el.js → replies-DYi7SN77.js} +3 -3
- package/dist/plugin-sdk/{reply-Bd2hTqt2.js → reply-Cjk7LMy5.js} +78 -78
- package/dist/plugin-sdk/{reply-prefix-C4uKnJw5.js → reply-prefix-CjyfQ_d1.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-D3KbwzED.js → resolve-route-DcFELQ2A.js} +3 -3
- package/dist/plugin-sdk/{retry-B8Oq5mgi.js → retry-Bkj1k1me.js} +1 -1
- package/dist/plugin-sdk/{runner-eN6avbf7.js → runner-DpYDxpAW.js} +9 -9
- package/dist/plugin-sdk/{send-DbftCLdT.js → send-BZCJA8cX.js} +11 -11
- package/dist/plugin-sdk/{send-NfHYBhul.js → send-DZKSn0On.js} +7 -7
- package/dist/plugin-sdk/{send-g2G5-BE1.js → send-DstsvZrR.js} +7 -7
- package/dist/plugin-sdk/{send-DTQ35K1k.js → send-L7Qzaw1k.js} +11 -11
- package/dist/plugin-sdk/{send-CYWWJEcn.js → send-ydtZKtPY.js} +6 -6
- package/dist/plugin-sdk/{session-BS3El_89.js → session-hN4eOpFg.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-Cle2Lzhm.js → skill-commands-BI1wVtHZ.js} +5 -5
- package/dist/plugin-sdk/{skills-BKSekIbi.js → skills-Xz3Fbq-R.js} +7 -7
- package/dist/plugin-sdk/{sqlite-Yn48izJ_.js → sqlite-DtIiUWZr.js} +1 -1
- package/dist/plugin-sdk/{store-Cz4sBcdW.js → store-w9NR0-ll.js} +2 -2
- package/dist/plugin-sdk/{subsystem-BfLMZ8kW.js → subsystem-Ck27y_6W.js} +1 -1
- package/dist/plugin-sdk/{tables-gytp5jHK.js → tables-CmVJrzl_.js} +1 -1
- package/dist/plugin-sdk/{thinking-BOKrkVfN.js → thinking-DIWJ8ngy.js} +5 -5
- package/dist/plugin-sdk/{tokens-D1LxPszt.js → tokens-B6GWdF_0.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-CYSptBsl.js → tool-loop-detection-CbPwu1_R.js} +2 -2
- package/dist/plugin-sdk/web-DV9s3A0M.js +65 -0
- package/dist/plugin-sdk/{whatsapp-actions-Cxf0P-Zz.js → whatsapp-actions-DdnRWwJa.js} +20 -20
- package/dist/{pw-ai-Bp7tQXP7.js → pw-ai-ByDR1q8k.js} +1 -1
- package/dist/{runner-j4Bfr_LY.js → runner-BYhtaPKn.js} +1 -1
- package/dist/{web-y3J71ECd.js → web-ZW9Geotk.js} +6 -6
- package/package.json +1 -1
- package/dist/control-ui/_app/immutable/chunks/BBXALFLP.js +0 -112
- package/dist/control-ui/_app/immutable/chunks/BZPuz03W.js +0 -1
- package/dist/control-ui/_app/immutable/chunks/CbL4AD8o.js +0 -1
- package/dist/control-ui/_app/immutable/chunks/CrSotJB3.js +0 -1
- package/dist/control-ui/_app/immutable/entry/app._v8i6nBc.js +0 -2
- package/dist/control-ui/_app/immutable/entry/start.B3_R8Pb8.js +0 -1
- package/dist/control-ui/_app/immutable/entry/start.lsitudt4.js +0 -1
- package/dist/control-ui/_app/immutable/nodes/0.CPUGwa5J.js +0 -33
- package/dist/control-ui/_app/immutable/nodes/1.e1sYpbGn.js +0 -1
- package/dist/control-ui/_app/immutable/nodes/15.jtEPdobl.js +0 -30
- package/dist/control-ui/_app/immutable/nodes/2.BTwPpsUd.js +0 -1
- package/dist/plugin-sdk/web-CHrq1191.js +0 -65
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as Nt,a as D,b as v,f as p,s as c,t as ie,e as Tt}from"../chunks/B2A7gHtL.js";import{p as zt,s as A,a as Dt,u as ze,b as Ft,d as w,t as x,c as Ht,e as Pt,g as e,f as i,h as n,$ as Et,r,i as F,j as Ut}from"../chunks/qR_TM3YX.js";import{i as f}from"../chunks/DpBBTLWw.js";import{g as Ot,a as H,s as V,e as C,i as L,b as De}from"../chunks/BLtDog0v.js";import{h as Rt}from"../chunks/CXQ1lKJR.js";import{s as qt}from"../chunks/SHB02qEx.js";import{g as Gt}from"../chunks/Be_uRYmX.js";var Jt=p('<div class="flex items-center gap-1.5 mt-3 text-xs"><span class="w-2 h-2 rounded-full bg-accent-green glow-pulse"></span> <span class="text-text-muted">Active instances:</span> <span class="text-accent-green font-mono font-semibold"> </span></div>'),Qt=p('<div class="flex flex-col items-center justify-center h-full text-center"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-8 h-8 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636a9 9 0 010 12.728m-2.829-2.829a5 5 0 000-7.07"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view instances.</p></div>'),Wt=p('<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>'),Xt=p('<div class="glass rounded-xl p-5 border border-border-default animate-pulse"><div class="h-4 w-40 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-64 bg-bg-tertiary rounded mb-3"></div> <div class="flex gap-2"><div class="h-5 w-14 bg-bg-tertiary rounded-full"></div> <div class="h-5 w-14 bg-bg-tertiary rounded-full"></div></div></div>'),Yt=p('<div class="flex flex-col gap-3"></div>'),Zt=p('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm">No instances reported yet.</p></div>'),ea=p('<span class="text-xs text-text-muted"> </span>'),ta=p('<span class="text-text-muted/50"> </span>'),aa=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-cyan/10 text-accent-cyan border border-accent-cyan/20"> </span>'),ra=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-purple/10 text-accent-purple border border-accent-purple/20"> </span>'),sa=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),oa=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-green/10 text-accent-green border border-accent-green/10"> </span>'),na=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),ia=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-purple/10 text-purple-300 border border-accent-purple/10"> </span>'),da=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-amber/10 text-accent-amber border border-accent-amber/10"> </span>'),la=p('<div class="flex items-center gap-1 justify-end"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </div>'),va=p("<div> </div>"),ca=p('<div class="text-text-muted/60"> </div>'),pa=p('<div class="flex items-center gap-1"><button><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path></svg> </button> <button><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg> </button></div>'),xa=p('<div class="col-span-2 md:col-span-3"><span class="text-text-muted block mb-0.5">Session Key</span> <span class="text-text-primary font-mono text-[10px] break-all"> </span></div>'),ua=p('<div><span class="text-text-muted block mb-0.5">Model</span> <span class="text-accent-purple font-mono"> </span></div>'),fa=p('<span class="px-1.5 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted border border-border-default font-mono"> </span>'),ma=p('<div class="col-span-2 md:col-span-3"><span class="text-text-muted block mb-0.5">Scopes</span> <div class="flex flex-wrap gap-1 mt-1"></div></div>'),ba=p('<span class="px-1.5 py-0.5 rounded text-[10px] bg-accent-green/10 text-accent-green border border-accent-green/10 font-mono"> </span>'),_a=p('<div class="col-span-2 md:col-span-3"><span class="text-text-muted block mb-0.5">Capabilities</span> <div class="flex flex-wrap gap-1 mt-1"></div></div>'),ga=p('<div class="px-4 pb-4 border-t border-border-default/50 pt-3 animate-fade-in"><div class="grid grid-cols-2 md:grid-cols-3 gap-3 text-xs"><div><span class="text-text-muted block mb-0.5">Mode</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Platform</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Device</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Model ID</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Client Version</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Client ID</span> <span class="text-text-primary font-mono"> </span></div> <!> <!> <!> <!></div></div>'),ha=p('<div class="rounded-xl border border-border-default bg-bg-secondary/50 hover:border-accent-cyan/20 transition-all animate-fade-in"><div class="p-4"><div class="flex items-start justify-between gap-4"><div class="min-w-0 flex-1"><div class="flex items-center gap-2 mb-1.5"><span></span> <h3 class="text-sm font-semibold text-text-primary truncate"> </h3> <!></div> <p class="text-xs text-text-muted mb-2"><!> <!> <!> <!></p> <div class="flex flex-wrap gap-1.5"><!> <!> <!> <!> <!> <!></div></div> <div class="flex flex-col items-end gap-2 flex-shrink-0"><div class="text-right text-xs text-text-muted space-y-0.5"><!> <!> <!></div> <!> <button class="flex items-center gap-1 text-[10px] text-text-muted hover:text-accent-cyan transition-colors"><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> </button></div></div></div> <!></div>'),ka=p('<div class="flex flex-col gap-3"></div>'),wa=p('<div class="h-full flex flex-col overflow-hidden"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default"><div class="flex items-start justify-between gap-4 flex-wrap"><div class="flex items-center gap-3"><div class="w-10 h-10 rounded-xl gradient-bg border border-border-glow flex items-center justify-center"><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="M5.636 18.364a9 9 0 010-12.728m12.728 0a9 9 0 010 12.728M12 12h.01"></path></svg></div> <div><h1 class="text-xl font-bold text-text-primary glow-text-cyan">Connected Instances</h1> <p class="text-sm text-text-muted">Presence beacons from the gateway and clients</p></div></div> <button class="flex items-center gap-1.5 px-3 py-1.5 text-sm bg-bg-tertiary border border-border-default rounded-lg text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 transition-all disabled:opacity-40 disabled:cursor-not-allowed"><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> </button></div> <!></div> <div class="flex-1 overflow-y-auto p-4 md:p-6"><!></div></div>');function Sa(Fe,He){zt(He,!0);const P=Ot(),E=Gt();let y=A(Dt([])),M=A(!1),B=A(null),de=A(null),U=A(null);async function O(){if(!(!H.connected||e(M))){w(M,!0),w(B,null);try{const o=await H.call("system-presence",{});Array.isArray(o)?w(y,o,!0):o&&Array.isArray(o.entries)?w(y,o.entries,!0):w(y,[],!0)}catch(o){w(B,String(o),!0)}finally{w(M,!1)}}}async function le(o,l,u){if(!o.sessionKey){E.error("No Session","This instance has no active session to patch");return}w(U,l,!0);try{await H.call("sessions.patch",{key:o.sessionKey,...u}),E.success("Updated","Session settings saved"),await O()}catch(t){E.error("Failed",String(t))}finally{w(U,null)}}async function Pe(o,l){const u=["off","on","stream"],t=o.thinkingLevel??"off",m=u.indexOf(t),N=u[(m+1)%u.length];await le(o,l,{thinkingLevel:N})}async function Ee(o,l){const t=(o.verboseLevel??"off")==="off"?"on":"off";await le(o,l,{verboseLevel:t})}function Ue(o){if(typeof o!="number"||o<=0)return"—";const l=Math.floor(o/1e3),u=Math.floor(l/60),t=Math.floor(u/60),m=Math.floor(t/24);return m>0?`${m}d ${t%24}h`:t>0?`${t}h ${u%60}m`:u>0?`${u}m`:`${l}s`}function Oe(o){return o==null?"—":o<60?`${o}s ago`:o<3600?`${Math.floor(o/60)}m ago`:o<86400?`${Math.floor(o/3600)}h ago`:`${Math.floor(o/86400)}d ago`}function Re(o){return o.lastInputSeconds!=null?o.lastInputSeconds<300?"online":o.lastInputSeconds<3600?"idle":"stale":"online"}let qe=F(()=>[...e(y)].sort((o,l)=>{const u=o.mode==="gateway"?0:1,t=l.mode==="gateway"?0:1;return u!==t?u-t:(l.uptimeMs??0)-(o.uptimeMs??0)}));ze(()=>{P.state.status==="connected"&&Ft(()=>O())}),ze(()=>H.on("system-presence",l=>{Array.isArray(l)&&w(y,l,!0)}));var R=wa();Rt("aye7dn",o=>{Pt(()=>{Et.title="Instances — Cortex"})});var q=n(R),G=n(q),K=i(n(G),2),ve=n(K),Ge=i(ve);r(K),r(G);var Je=i(G,2);{var Qe=o=>{var l=Jt(),u=i(n(l),4),t=n(u,!0);r(u),r(l),x(()=>c(t,e(y).length)),v(o,l)};f(Je,o=>{e(y).length>0&&o(Qe)})}r(q);var ce=i(q,2),We=n(ce);{var Xe=o=>{var l=Qt();v(o,l)},Ye=o=>{var l=Wt(),u=n(l),t=i(n(u),2),m=n(t,!0);r(t),r(u),r(l),x(()=>c(m,e(B))),v(o,l)},Ze=o=>{var l=Yt();C(l,20,()=>Array(3),L,(u,t)=>{var m=Xt();v(u,m)}),r(l),v(o,l)},et=o=>{var l=Zt();v(o,l)},tt=o=>{var l=ka();C(l,21,()=>e(qe),L,(u,t,m)=>{const N=F(()=>Re(e(t))),T=F(()=>e(de)===m),pe=F(()=>e(U)===m);var z=ha();qt(z,`animation-delay: ${m*50}ms`);var J=n(z),xe=n(J),Q=n(xe),W=n(Q),ue=n(W),X=i(ue,2),at=n(X,!0);r(X);var rt=i(X,2);{var st=a=>{var s=ea(),d=n(s);r(s),x(()=>c(d,`(${e(t).host??""})`)),v(a,s)};f(rt,a=>{e(t).displayName&&e(t).host&&e(t).displayName!==e(t).host&&a(st)})}r(W);var Y=i(W,2),fe=n(Y);{var ot=a=>{var s=ie();x(()=>c(s,e(t).platform)),v(a,s)};f(fe,a=>{e(t).platform&&a(ot)})}var me=i(fe,2);{var nt=a=>{var s=ie();x(()=>c(s,`· ${e(t).deviceFamily??""}`)),v(a,s)};f(me,a=>{e(t).deviceFamily&&a(nt)})}var be=i(me,2);{var it=a=>{var s=ie();x(()=>c(s,`· ${e(t).modelIdentifier??""}`)),v(a,s)};f(be,a=>{e(t).modelIdentifier&&a(it)})}var dt=i(be,2);{var lt=a=>{var s=ta(),d=n(s);r(s),x(()=>c(d,`· ${e(t).clientId??""}`)),v(a,s)};f(dt,a=>{e(t).clientId&&e(t).clientId!==e(t).host&&a(lt)})}r(Y);var _e=i(Y,2),ge=n(_e);{var vt=a=>{var s=aa(),d=n(s,!0);r(s),x(()=>c(d,e(t).mode)),v(a,s)};f(ge,a=>{e(t).mode&&a(vt)})}var he=i(ge,2);C(he,17,()=>e(t).roles??[],L,(a,s)=>{var d=ra(),g=n(d,!0);r(d),x(()=>c(g,e(s))),v(a,d)});var ke=i(he,2);{var ct=a=>{var s=sa(),d=n(s);r(s),x(()=>c(d,`v${e(t).clientVersion??e(t).version??""}`)),v(a,s)};f(ke,a=>{(e(t).version||e(t).clientVersion)&&a(ct)})}var we=i(ke,2);{var pt=a=>{var s=Tt(),d=Ut(s);C(d,17,()=>e(t).capabilities??[],L,(g,h)=>{var $=oa(),S=n($,!0);r($),x(()=>c(S,e(h))),v(g,$)}),v(a,s)},xt=a=>{var s=na(),d=n(s);r(s),x(()=>c(d,`${(e(t).scopes??[]).length??""} scopes`)),v(a,s)};f(we,a=>{(e(t).capabilities??[]).length>0?a(pt):(e(t).scopes??[]).length>0&&a(xt,1)})}var ye=i(we,2);{var ut=a=>{var s=ia(),d=n(s,!0);r(s),x(()=>c(d,e(t).model)),v(a,s)};f(ye,a=>{e(t).model&&a(ut)})}var ft=i(ye,2);{var mt=a=>{var s=da(),d=n(s,!0);r(s),x(()=>c(d,e(t).agentId)),v(a,s)};f(ft,a=>{e(t).agentId&&a(mt)})}r(_e),r(Q);var Me=i(Q,2),Z=n(Me),$e=n(Z);{var bt=a=>{var s=la(),d=i(n(s));r(s),x(g=>c(d,` Up ${g??""}`),[()=>Ue(e(t).uptimeMs)]),v(a,s)};f($e,a=>{e(t).uptimeMs&&a(bt)})}var Ie=i($e,2);{var _t=a=>{var s=va(),d=n(s);r(s),x(g=>c(d,`Input ${g??""}`),[()=>Oe(e(t).lastInputSeconds)]),v(a,s)};f(Ie,a=>{e(t).lastInputSeconds!=null&&a(_t)})}var gt=i(Ie,2);{var ht=a=>{var s=ca(),d=n(s,!0);r(s),x(()=>c(d,e(t).reason)),v(a,s)};f(gt,a=>{e(t).reason&&a(ht)})}r(Z);var je=i(Z,2);{var kt=a=>{var s=pa(),d=n(s),g=i(n(d));r(d);var h=i(d,2),$=i(n(h));r(h),r(s),x(()=>{d.disabled=e(pe),V(d,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
1
|
+
import{d as Nt,a as D,b as v,f as p,s as c,t as ie,e as Tt}from"../chunks/B2A7gHtL.js";import{p as zt,s as A,a as Dt,u as ze,b as Ft,d as w,t as x,c as Ht,e as Pt,g as e,f as i,h as n,$ as Et,r,i as F,j as Ut}from"../chunks/qR_TM3YX.js";import{i as f}from"../chunks/DpBBTLWw.js";import{g as Ot,a as H,s as V,e as C,i as L,b as De}from"../chunks/DeOOVYCg.js";import{h as Rt}from"../chunks/CXQ1lKJR.js";import{s as qt}from"../chunks/DFN8J1NF.js";import{g as Gt}from"../chunks/Be_uRYmX.js";var Jt=p('<div class="flex items-center gap-1.5 mt-3 text-xs"><span class="w-2 h-2 rounded-full bg-accent-green glow-pulse"></span> <span class="text-text-muted">Active instances:</span> <span class="text-accent-green font-mono font-semibold"> </span></div>'),Qt=p('<div class="flex flex-col items-center justify-center h-full text-center"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-8 h-8 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636a9 9 0 010 12.728m-2.829-2.829a5 5 0 000-7.07"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view instances.</p></div>'),Wt=p('<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>'),Xt=p('<div class="glass rounded-xl p-5 border border-border-default animate-pulse"><div class="h-4 w-40 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-64 bg-bg-tertiary rounded mb-3"></div> <div class="flex gap-2"><div class="h-5 w-14 bg-bg-tertiary rounded-full"></div> <div class="h-5 w-14 bg-bg-tertiary rounded-full"></div></div></div>'),Yt=p('<div class="flex flex-col gap-3"></div>'),Zt=p('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm">No instances reported yet.</p></div>'),ea=p('<span class="text-xs text-text-muted"> </span>'),ta=p('<span class="text-text-muted/50"> </span>'),aa=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-cyan/10 text-accent-cyan border border-accent-cyan/20"> </span>'),ra=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-purple/10 text-accent-purple border border-accent-purple/20"> </span>'),sa=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),oa=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-green/10 text-accent-green border border-accent-green/10"> </span>'),na=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),ia=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-purple/10 text-purple-300 border border-accent-purple/10"> </span>'),da=p('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-accent-amber/10 text-accent-amber border border-accent-amber/10"> </span>'),la=p('<div class="flex items-center gap-1 justify-end"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> </div>'),va=p("<div> </div>"),ca=p('<div class="text-text-muted/60"> </div>'),pa=p('<div class="flex items-center gap-1"><button><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path></svg> </button> <button><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg> </button></div>'),xa=p('<div class="col-span-2 md:col-span-3"><span class="text-text-muted block mb-0.5">Session Key</span> <span class="text-text-primary font-mono text-[10px] break-all"> </span></div>'),ua=p('<div><span class="text-text-muted block mb-0.5">Model</span> <span class="text-accent-purple font-mono"> </span></div>'),fa=p('<span class="px-1.5 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted border border-border-default font-mono"> </span>'),ma=p('<div class="col-span-2 md:col-span-3"><span class="text-text-muted block mb-0.5">Scopes</span> <div class="flex flex-wrap gap-1 mt-1"></div></div>'),ba=p('<span class="px-1.5 py-0.5 rounded text-[10px] bg-accent-green/10 text-accent-green border border-accent-green/10 font-mono"> </span>'),_a=p('<div class="col-span-2 md:col-span-3"><span class="text-text-muted block mb-0.5">Capabilities</span> <div class="flex flex-wrap gap-1 mt-1"></div></div>'),ga=p('<div class="px-4 pb-4 border-t border-border-default/50 pt-3 animate-fade-in"><div class="grid grid-cols-2 md:grid-cols-3 gap-3 text-xs"><div><span class="text-text-muted block mb-0.5">Mode</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Platform</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Device</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Model ID</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Client Version</span> <span class="text-text-primary font-mono"> </span></div> <div><span class="text-text-muted block mb-0.5">Client ID</span> <span class="text-text-primary font-mono"> </span></div> <!> <!> <!> <!></div></div>'),ha=p('<div class="rounded-xl border border-border-default bg-bg-secondary/50 hover:border-accent-cyan/20 transition-all animate-fade-in"><div class="p-4"><div class="flex items-start justify-between gap-4"><div class="min-w-0 flex-1"><div class="flex items-center gap-2 mb-1.5"><span></span> <h3 class="text-sm font-semibold text-text-primary truncate"> </h3> <!></div> <p class="text-xs text-text-muted mb-2"><!> <!> <!> <!></p> <div class="flex flex-wrap gap-1.5"><!> <!> <!> <!> <!> <!></div></div> <div class="flex flex-col items-end gap-2 flex-shrink-0"><div class="text-right text-xs text-text-muted space-y-0.5"><!> <!> <!></div> <!> <button class="flex items-center gap-1 text-[10px] text-text-muted hover:text-accent-cyan transition-colors"><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> </button></div></div></div> <!></div>'),ka=p('<div class="flex flex-col gap-3"></div>'),wa=p('<div class="h-full flex flex-col overflow-hidden"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default"><div class="flex items-start justify-between gap-4 flex-wrap"><div class="flex items-center gap-3"><div class="w-10 h-10 rounded-xl gradient-bg border border-border-glow flex items-center justify-center"><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="M5.636 18.364a9 9 0 010-12.728m12.728 0a9 9 0 010 12.728M12 12h.01"></path></svg></div> <div><h1 class="text-xl font-bold text-text-primary glow-text-cyan">Connected Instances</h1> <p class="text-sm text-text-muted">Presence beacons from the gateway and clients</p></div></div> <button class="flex items-center gap-1.5 px-3 py-1.5 text-sm bg-bg-tertiary border border-border-default rounded-lg text-text-secondary hover:text-accent-cyan hover:border-accent-cyan/30 transition-all disabled:opacity-40 disabled:cursor-not-allowed"><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> </button></div> <!></div> <div class="flex-1 overflow-y-auto p-4 md:p-6"><!></div></div>');function Sa(Fe,He){zt(He,!0);const P=Ot(),E=Gt();let y=A(Dt([])),M=A(!1),B=A(null),de=A(null),U=A(null);async function O(){if(!(!H.connected||e(M))){w(M,!0),w(B,null);try{const o=await H.call("system-presence",{});Array.isArray(o)?w(y,o,!0):o&&Array.isArray(o.entries)?w(y,o.entries,!0):w(y,[],!0)}catch(o){w(B,String(o),!0)}finally{w(M,!1)}}}async function le(o,l,u){if(!o.sessionKey){E.error("No Session","This instance has no active session to patch");return}w(U,l,!0);try{await H.call("sessions.patch",{key:o.sessionKey,...u}),E.success("Updated","Session settings saved"),await O()}catch(t){E.error("Failed",String(t))}finally{w(U,null)}}async function Pe(o,l){const u=["off","on","stream"],t=o.thinkingLevel??"off",m=u.indexOf(t),N=u[(m+1)%u.length];await le(o,l,{thinkingLevel:N})}async function Ee(o,l){const t=(o.verboseLevel??"off")==="off"?"on":"off";await le(o,l,{verboseLevel:t})}function Ue(o){if(typeof o!="number"||o<=0)return"—";const l=Math.floor(o/1e3),u=Math.floor(l/60),t=Math.floor(u/60),m=Math.floor(t/24);return m>0?`${m}d ${t%24}h`:t>0?`${t}h ${u%60}m`:u>0?`${u}m`:`${l}s`}function Oe(o){return o==null?"—":o<60?`${o}s ago`:o<3600?`${Math.floor(o/60)}m ago`:o<86400?`${Math.floor(o/3600)}h ago`:`${Math.floor(o/86400)}d ago`}function Re(o){return o.lastInputSeconds!=null?o.lastInputSeconds<300?"online":o.lastInputSeconds<3600?"idle":"stale":"online"}let qe=F(()=>[...e(y)].sort((o,l)=>{const u=o.mode==="gateway"?0:1,t=l.mode==="gateway"?0:1;return u!==t?u-t:(l.uptimeMs??0)-(o.uptimeMs??0)}));ze(()=>{P.state.status==="connected"&&Ft(()=>O())}),ze(()=>H.on("system-presence",l=>{Array.isArray(l)&&w(y,l,!0)}));var R=wa();Rt("aye7dn",o=>{Pt(()=>{Et.title="Instances — Cortex"})});var q=n(R),G=n(q),K=i(n(G),2),ve=n(K),Ge=i(ve);r(K),r(G);var Je=i(G,2);{var Qe=o=>{var l=Jt(),u=i(n(l),4),t=n(u,!0);r(u),r(l),x(()=>c(t,e(y).length)),v(o,l)};f(Je,o=>{e(y).length>0&&o(Qe)})}r(q);var ce=i(q,2),We=n(ce);{var Xe=o=>{var l=Qt();v(o,l)},Ye=o=>{var l=Wt(),u=n(l),t=i(n(u),2),m=n(t,!0);r(t),r(u),r(l),x(()=>c(m,e(B))),v(o,l)},Ze=o=>{var l=Yt();C(l,20,()=>Array(3),L,(u,t)=>{var m=Xt();v(u,m)}),r(l),v(o,l)},et=o=>{var l=Zt();v(o,l)},tt=o=>{var l=ka();C(l,21,()=>e(qe),L,(u,t,m)=>{const N=F(()=>Re(e(t))),T=F(()=>e(de)===m),pe=F(()=>e(U)===m);var z=ha();qt(z,`animation-delay: ${m*50}ms`);var J=n(z),xe=n(J),Q=n(xe),W=n(Q),ue=n(W),X=i(ue,2),at=n(X,!0);r(X);var rt=i(X,2);{var st=a=>{var s=ea(),d=n(s);r(s),x(()=>c(d,`(${e(t).host??""})`)),v(a,s)};f(rt,a=>{e(t).displayName&&e(t).host&&e(t).displayName!==e(t).host&&a(st)})}r(W);var Y=i(W,2),fe=n(Y);{var ot=a=>{var s=ie();x(()=>c(s,e(t).platform)),v(a,s)};f(fe,a=>{e(t).platform&&a(ot)})}var me=i(fe,2);{var nt=a=>{var s=ie();x(()=>c(s,`· ${e(t).deviceFamily??""}`)),v(a,s)};f(me,a=>{e(t).deviceFamily&&a(nt)})}var be=i(me,2);{var it=a=>{var s=ie();x(()=>c(s,`· ${e(t).modelIdentifier??""}`)),v(a,s)};f(be,a=>{e(t).modelIdentifier&&a(it)})}var dt=i(be,2);{var lt=a=>{var s=ta(),d=n(s);r(s),x(()=>c(d,`· ${e(t).clientId??""}`)),v(a,s)};f(dt,a=>{e(t).clientId&&e(t).clientId!==e(t).host&&a(lt)})}r(Y);var _e=i(Y,2),ge=n(_e);{var vt=a=>{var s=aa(),d=n(s,!0);r(s),x(()=>c(d,e(t).mode)),v(a,s)};f(ge,a=>{e(t).mode&&a(vt)})}var he=i(ge,2);C(he,17,()=>e(t).roles??[],L,(a,s)=>{var d=ra(),g=n(d,!0);r(d),x(()=>c(g,e(s))),v(a,d)});var ke=i(he,2);{var ct=a=>{var s=sa(),d=n(s);r(s),x(()=>c(d,`v${e(t).clientVersion??e(t).version??""}`)),v(a,s)};f(ke,a=>{(e(t).version||e(t).clientVersion)&&a(ct)})}var we=i(ke,2);{var pt=a=>{var s=Tt(),d=Ut(s);C(d,17,()=>e(t).capabilities??[],L,(g,h)=>{var $=oa(),S=n($,!0);r($),x(()=>c(S,e(h))),v(g,$)}),v(a,s)},xt=a=>{var s=na(),d=n(s);r(s),x(()=>c(d,`${(e(t).scopes??[]).length??""} scopes`)),v(a,s)};f(we,a=>{(e(t).capabilities??[]).length>0?a(pt):(e(t).scopes??[]).length>0&&a(xt,1)})}var ye=i(we,2);{var ut=a=>{var s=ia(),d=n(s,!0);r(s),x(()=>c(d,e(t).model)),v(a,s)};f(ye,a=>{e(t).model&&a(ut)})}var ft=i(ye,2);{var mt=a=>{var s=da(),d=n(s,!0);r(s),x(()=>c(d,e(t).agentId)),v(a,s)};f(ft,a=>{e(t).agentId&&a(mt)})}r(_e),r(Q);var Me=i(Q,2),Z=n(Me),$e=n(Z);{var bt=a=>{var s=la(),d=i(n(s));r(s),x(g=>c(d,` Up ${g??""}`),[()=>Ue(e(t).uptimeMs)]),v(a,s)};f($e,a=>{e(t).uptimeMs&&a(bt)})}var Ie=i($e,2);{var _t=a=>{var s=va(),d=n(s);r(s),x(g=>c(d,`Input ${g??""}`),[()=>Oe(e(t).lastInputSeconds)]),v(a,s)};f(Ie,a=>{e(t).lastInputSeconds!=null&&a(_t)})}var gt=i(Ie,2);{var ht=a=>{var s=ca(),d=n(s,!0);r(s),x(()=>c(d,e(t).reason)),v(a,s)};f(gt,a=>{e(t).reason&&a(ht)})}r(Z);var je=i(Z,2);{var kt=a=>{var s=pa(),d=n(s),g=i(n(d));r(d);var h=i(d,2),$=i(n(h));r(h),r(s),x(()=>{d.disabled=e(pe),V(d,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
2
2
|
${e(t).thinkingLevel==="stream"?"bg-accent-cyan/15 text-accent-cyan border-accent-cyan/30":e(t).thinkingLevel==="on"?"bg-accent-purple/15 text-accent-purple border-accent-purple/30":"bg-bg-tertiary text-text-muted border-border-default hover:border-accent-cyan/30"}`),De(d,"title",`Thinking: ${e(t).thinkingLevel??"off"??""}`),c(g,` T:${e(t).thinkingLevel??"off"??""}`),h.disabled=e(pe),V(h,1,`flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium border transition-all disabled:opacity-50
|
|
3
3
|
${e(t).verboseLevel==="on"?"bg-accent-green/15 text-accent-green border-accent-green/30":"bg-bg-tertiary text-text-muted border-border-default hover:border-accent-green/30"}`),De(h,"title",`Verbose: ${e(t).verboseLevel??"off"??""}`),c($,` V:${e(t).verboseLevel??"off"??""}`)}),D("click",d,()=>Pe(e(t),m)),D("click",h,()=>Ee(e(t),m)),v(a,s)};f(je,a=>{e(t).sessionKey&&a(kt)})}var ee=i(je,2),Ce=n(ee),wt=i(Ce);r(ee),r(Me),r(xe),r(J);var yt=i(J,2);{var Mt=a=>{var s=ga(),d=n(s),g=n(d),h=i(n(g),2),$=n(h,!0);r(h),r(g);var S=i(g,2),Le=i(n(S),2),$t=n(Le,!0);r(Le),r(S);var te=i(S,2),Se=i(n(te),2),It=n(Se,!0);r(Se),r(te);var ae=i(te,2),Ae=i(n(ae),2),jt=n(Ae,!0);r(Ae),r(ae);var re=i(ae,2),Ve=i(n(re),2),Ct=n(Ve,!0);r(Ve),r(re);var se=i(re,2),Be=i(n(se),2),Lt=n(Be,!0);r(Be),r(se);var Ke=i(se,2);{var St=b=>{var _=xa(),k=i(n(_),2),I=n(k,!0);r(k),r(_),x(()=>c(I,e(t).sessionKey)),v(b,_)};f(Ke,b=>{e(t).sessionKey&&b(St)})}var Ne=i(Ke,2);{var At=b=>{var _=ua(),k=i(n(_),2),I=n(k,!0);r(k),r(_),x(()=>c(I,e(t).model)),v(b,_)};f(Ne,b=>{e(t).model&&b(At)})}var Te=i(Ne,2);{var Vt=b=>{var _=ma(),k=i(n(_),2);C(k,21,()=>e(t).scopes??[],L,(I,oe)=>{var j=fa(),ne=n(j,!0);r(j),x(()=>c(ne,e(oe))),v(I,j)}),r(k),r(_),v(b,_)};f(Te,b=>{(e(t).scopes??[]).length>0&&b(Vt)})}var Bt=i(Te,2);{var Kt=b=>{var _=_a(),k=i(n(_),2);C(k,21,()=>e(t).capabilities??[],L,(I,oe)=>{var j=ba(),ne=n(j,!0);r(j),x(()=>c(ne,e(oe))),v(I,j)}),r(k),r(_),v(b,_)};f(Bt,b=>{(e(t).capabilities??[]).length>0&&b(Kt)})}r(d),r(s),x(()=>{c($,e(t).mode??"—"),c($t,e(t).platform??"—"),c(It,e(t).deviceFamily??"—"),c(jt,e(t).modelIdentifier??"—"),c(Ct,e(t).clientVersion??e(t).version??"—"),c(Lt,e(t).clientId??"—")}),v(a,s)};f(yt,a=>{e(T)&&a(Mt)})}r(z),x(()=>{V(ue,1,`w-2 h-2 rounded-full flex-shrink-0
|
|
4
4
|
${e(N)==="online"?"bg-accent-green glow-pulse":e(N)==="idle"?"bg-accent-amber":"bg-text-muted"}`),c(at,e(t).displayName??e(t).host??"unknown host"),V(Ce,0,`w-3.5 h-3.5 transition-transform ${e(T)?"rotate-180":""}`),c(wt,` ${e(T)?"Less":"Details"}`)}),D("click",ee,()=>w(de,e(T)?null:m,!0)),v(u,z)}),r(l),v(o,l)};f(We,o=>{P.state.status!=="connected"?o(Xe):e(B)?o(Ye,1):e(M)&&e(y).length===0?o(Ze,2):e(y).length===0?o(et,3):o(tt,!1)})}r(ce),r(R),x(()=>{K.disabled=e(M)||P.state.status!=="connected",V(ve,0,`w-4 h-4 ${e(M)?"animate-spin":""}`),c(Ge,` ${e(M)?"Loading…":"Refresh"}`)}),D("click",K,O),v(Fe,R),Ht()}Nt(["click"]);export{Sa as component};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as nt,a as ee,b as c,f as u,s as m,g as lt,c as ot,t as it}from"../chunks/B2A7gHtL.js";import{p as ct,s as g,a as xe,u as be,b as me,g as r,d,t as _,c as dt,e as ut,f as i,i as ge,h as l,$ as ft,r as s,n as P,j as vt}from"../chunks/qR_TM3YX.js";import{i as y}from"../chunks/DpBBTLWw.js";import{g as pt,a as te,r as re,e as he,s as ae,d as xt,i as _e,b as bt}from"../chunks/
|
|
1
|
+
import{d as nt,a as ee,b as c,f as u,s as m,g as lt,c as ot,t as it}from"../chunks/B2A7gHtL.js";import{p as ct,s as g,a as xe,u as be,b as me,g as r,d,t as _,c as dt,e as ut,f as i,i as ge,h as l,$ as ft,r as s,n as P,j as vt}from"../chunks/qR_TM3YX.js";import{i as y}from"../chunks/DpBBTLWw.js";import{g as pt,a as te,r as re,e as he,s as ae,d as xt,i as _e,b as bt}from"../chunks/DeOOVYCg.js";import{h as mt}from"../chunks/CXQ1lKJR.js";import{b as gt,a as ht}from"../chunks/nnazh41B.js";import{b as _t}from"../chunks/BYXRTvT-.js";var yt=u('<span class="font-mono text-xs text-text-muted/60"> </span>'),wt=ot('<svg class="w-3 h-3 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg>'),kt=u('<div class="flex-1 flex items-center justify-center"><div class="rounded-xl border border-border-default bg-bg-secondary/50 p-8 text-center"><div class="text-text-muted text-sm">Connect to the gateway to view logs.</div></div></div>'),Lt=u('<label><input type="checkbox" class="sr-only"/> </label>'),Ct=u('<div class="rounded-lg border border-amber-500/30 bg-amber-500/5 px-3 py-1.5 text-amber-400 text-xs mb-2 flex-shrink-0">Log output truncated — showing latest chunk.</div>'),jt=u('<div class="rounded-lg border border-red-500/30 bg-red-500/5 px-3 py-1.5 text-red-400 text-xs mb-2 flex-shrink-0"> </div>'),Bt=u('<div class="flex items-center justify-center h-full text-text-muted/40 text-sm"> </div>'),Tt=u('<span class="w-[140px] flex-shrink-0 text-accent-purple/70 truncate"> </span>'),St=u('<span class="w-[140px] flex-shrink-0"></span>'),Ft=u('<div><span class="w-[85px] flex-shrink-0 text-text-muted/70 select-all"> </span> <span> </span> <!> <span class="flex-1 text-text-secondary break-all select-all whitespace-pre-wrap"> </span></div>'),qt=u('<div class="divide-y divide-border-default/30"></div>'),Ot=u('<span class="inline-block w-1.5 h-1.5 rounded-full bg-accent-green/60 mr-1 animate-pulse"></span> Polling every 3s',1),Rt=u('<span class="inline-block w-1.5 h-1.5 rounded-full bg-text-muted/30 mr-1"></span> Paused',1),$t=u(`<div class="flex flex-wrap items-center gap-3 mb-3 flex-shrink-0"><div class="relative flex-1 min-w-[200px] max-w-sm"><svg class="absolute left-3 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg> <input placeholder="Filter logs…" class="w-full bg-bg-input border border-border-default rounded-lg pl-9 pr-3 py-2
|
|
2
2
|
text-sm text-text-primary placeholder:text-text-muted/50
|
|
3
3
|
focus:outline-none focus:border-accent-cyan focus:shadow-[0_0_8px_rgba(0,229,255,0.15)]
|
|
4
4
|
transition-all"/></div> <div class="flex items-center gap-1.5"></div> <label class="inline-flex items-center gap-1.5 text-xs text-text-muted cursor-pointer select-none ml-auto"><input type="checkbox" class="w-3.5 h-3.5 rounded border-border-default bg-bg-input accent-accent-cyan"/> Auto-scroll</label></div> <!> <!> <div class="flex-1 overflow-y-auto bg-bg-input/30 border border-border-default rounded-xl"><!></div> <div class="flex items-center justify-between mt-2 flex-shrink-0 text-[10px] text-text-muted/50 font-mono"><span><!></span> <span> <!></span></div>`,1),At=u(`<div class="h-full flex flex-col overflow-hidden"><div class="flex-1 flex flex-col max-w-full p-4 md:p-6 overflow-hidden"><div class="flex items-center justify-between mb-4 flex-shrink-0 flex-wrap gap-3"><div><h1 class="text-2xl font-bold text-text-primary flex items-center gap-3"><span class="text-accent-cyan">📋</span> Logs</h1> <p class="text-sm text-text-muted mt-0.5">Live gateway log tail <!></p></div> <div class="flex items-center gap-3"><span class="text-xs text-text-muted font-mono"> </span> <button class="px-3 py-2 rounded-lg text-xs border border-border-default hover:border-accent-purple
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as _t,a as $,b as l,s as v,f as x,t as Se}from"../chunks/B2A7gHtL.js";import{p as yt,s as b,a as ht,u as wt,b as kt,t as _,g as e,c as St,e as Ct,f as n,h as r,d,$ as Mt,r as a,n as oe,i as Ce,j as Ft,k as Lt}from"../chunks/qR_TM3YX.js";import{i as y}from"../chunks/DpBBTLWw.js";import{g as jt,b as Me,a as O,r as Rt,e as Fe,s as ie,i as Ne}from"../chunks/
|
|
1
|
+
import{d as _t,a as $,b as l,s as v,f as x,t as Se}from"../chunks/B2A7gHtL.js";import{p as yt,s as b,a as ht,u as wt,b as kt,t as _,g as e,c as St,e as Ct,f as n,h as r,d,$ as Mt,r as a,n as oe,i as Ce,j as Ft,k as Lt}from"../chunks/qR_TM3YX.js";import{i as y}from"../chunks/DpBBTLWw.js";import{g as jt,b as Me,a as O,r as Rt,e as Fe,s as ie,i as Ne}from"../chunks/DeOOVYCg.js";import{h as At}from"../chunks/CXQ1lKJR.js";import{b as Ye}from"../chunks/nnazh41B.js";import{b as It}from"../chunks/DVP7Iy08.js";import{g as Wt}from"../chunks/Be_uRYmX.js";import{f as Bt}from"../chunks/DPrxUVm_.js";var zt=x('<span class="px-2 py-1 rounded text-[10px] bg-accent-green/15 text-accent-green border border-accent-green/20">RPC Available</span>'),Et=x('<span class="px-2 py-1 rounded text-[10px] bg-accent-amber/15 text-accent-amber border border-accent-amber/20">CLI Only</span>'),$t=x('<div class="rounded-xl border border-red-500/30 bg-red-500/5 p-3 text-sm text-red-400"> </div>'),Ot=x('<span class="text-xs px-1.5 py-0.5 rounded bg-accent-purple/10 text-accent-purple font-mono"> </span>'),Ut=x('<span class="text-xs px-1.5 py-0.5 rounded bg-bg-tertiary text-text-muted font-mono"> </span>'),qt=x('<pre class="mt-3 pt-3 border-t border-border-default text-xs text-text-secondary font-mono bg-bg-primary rounded-lg p-3 overflow-x-auto"> </pre>'),Pt=x('<button><div class="p-4"><div class="flex items-center gap-2 mb-2"><span class="text-xs font-mono text-accent-purple"></span> <!> <!></div> <p class="text-sm text-text-primary leading-relaxed"> </p> <!></div></button>'),Tt=x('<div class="space-y-3"><div class="text-sm text-text-muted"> <span class="text-accent-purple"> </span>"</div> <!></div>'),Dt=x('<div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Embedding Server</span> <span class="text-sm font-mono text-text-primary truncate max-w-[200px]"> </span></div>'),Ht=x('<div class="flex items-center justify-between py-2"><span class="text-xs text-text-muted">Workspace</span> <span class="text-sm font-mono text-text-primary"> </span></div>'),Kt=x('<div class="space-y-3"><div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Enabled</span> <span> </span></div> <div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Provider</span> <span class="text-sm font-mono text-text-primary"> </span></div> <div class="flex items-center justify-between py-2 border-b border-border-default/30"><span class="text-xs text-text-muted">Embedding Model</span> <span class="text-sm font-mono text-text-primary"> </span></div> <!> <!></div>'),Nt=x('<div class="text-text-muted text-sm">Memory search not configured.</div>'),Yt=x('<span class="text-[10px] text-amber-400"> </span>'),Qt=x('<div class="w-px h-4 bg-border-default"></div> <div class="flex items-center gap-1.5"><span class="text-[10px] uppercase tracking-wider text-text-muted">Workspace</span> <span class="text-xs font-mono text-text-secondary truncate max-w-[300px]"> </span></div>',1),Jt=x('<div class="flex flex-wrap items-center gap-4 mb-4 px-3 py-2.5 rounded-lg bg-bg-tertiary/30 border border-border-default/50"><div class="flex items-center gap-1.5"><span class="text-[10px] uppercase tracking-wider text-text-muted">Files</span> <span class="text-sm font-bold text-text-primary"> </span> <!></div> <div class="w-px h-4 bg-border-default"></div> <div class="flex items-center gap-1.5"><span class="text-[10px] uppercase tracking-wider text-text-muted">Total Size</span> <span class="text-sm font-bold text-text-primary"> </span></div> <!></div>'),Vt=x('<div class="px-3 py-2.5 rounded-lg animate-pulse"><div class="h-3 w-24 bg-bg-tertiary rounded mb-1.5"></div> <div class="h-2.5 w-16 bg-bg-tertiary rounded"></div></div>'),Gt=x('<div class="flex gap-4 min-h-0"><div class="w-52 flex-shrink-0 space-y-1"></div> <div class="flex-1 rounded-lg border border-border-default bg-bg-tertiary/30 animate-pulse min-h-[200px]"></div></div>'),Xt=x('<div class="text-center py-8 text-text-muted text-sm"> </div>'),Zt=x('<span class="px-1 py-0.5 rounded text-[9px] bg-amber-500/20 text-amber-400 flex-shrink-0">missing</span>'),ea=x('<button><span class="text-xs flex-shrink-0"> </span> <div class="min-w-0 flex-1"><div class="font-mono truncate"> </div> <div class="text-[10px] text-text-muted mt-0.5"> <!></div></div> <!></button>'),ta=x('<div class="flex items-center justify-center h-48 text-text-muted text-sm rounded-lg border border-border-default/50 bg-bg-tertiary/30">Select a file to view or edit</div>'),aa=x('<div class="flex items-center justify-center h-48 text-text-muted text-sm rounded-lg border border-border-default/50 bg-bg-tertiary/30"><svg class="w-4 h-4 animate-spin mr-2" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg> </div>'),ra=x('<span class="w-2 h-2 rounded-full bg-accent-amber" title="Unsaved changes"></span>'),sa=x('<div class="rounded-lg border border-border-default bg-bg-primary flex flex-col"><div class="px-3 py-2 border-b border-border-default bg-bg-secondary/30 flex items-center justify-between flex-shrink-0"><div class="flex items-center gap-2"><span class="text-xs font-mono font-medium text-text-primary"> </span> <!></div> <div class="flex items-center gap-2"><button class="px-2.5 py-1 rounded text-xs text-text-muted hover:text-text-primary transition-all disabled:opacity-30">Reset</button> <button> </button></div></div> <textarea class="w-full p-4 bg-bg-primary text-text-secondary font-mono text-xs resize-none focus:outline-none border-none min-h-[300px] max-h-[500px] leading-relaxed" spellcheck="false"></textarea></div>'),na=x('<div class="flex gap-4 min-h-0"><div class="w-52 flex-shrink-0 space-y-1 overflow-y-auto max-h-[500px]"></div> <div class="flex-1 min-w-0 flex flex-col"><!></div></div>'),da=x(`<div class="h-full flex flex-col overflow-hidden"><div class="flex-shrink-0 p-4 md:p-6 pb-4 border-b border-border-default"><div class="flex items-center justify-between flex-wrap gap-3"><div><h1 class="text-xl font-bold text-text-primary flex items-center gap-2"><span class="text-accent-purple">🧠</span> Memory</h1> <p class="text-sm text-text-muted">Agent memory system — hybrid BM25 + vector retrieval</p></div> <div class="flex items-center gap-2"><!> <button class="px-3 py-1.5 rounded-lg text-sm border border-border-default hover:border-accent-cyan
|
|
2
2
|
text-text-secondary hover:text-accent-cyan transition-all disabled:opacity-50"> </button></div></div></div> <div class="flex-1 overflow-y-auto p-4 md:p-6"><div class="max-w-6xl mx-auto space-y-6"><div class="glass rounded-xl border border-border-default p-4"><div class="flex items-center gap-3"><div class="flex-1 relative"><svg class="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg> <input type="text" class="w-full pl-10 pr-4 py-2.5 rounded-lg border border-border-default bg-bg-input
|
|
3
3
|
text-sm text-text-primary placeholder:text-text-muted/50
|
|
4
4
|
focus:outline-none focus:border-accent-purple focus:shadow-[0_0_8px_rgba(124,77,255,0.15)]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as qr,a as B,b as i,f as c,s as l,t as ea,c as Pe}from"../chunks/B2A7gHtL.js";import{p as ta,s as f,a as mt,u as bt,b as ra,t as u,g as e,c as aa,d as s,e as na,f as n,h as a,$ as oa,r as t,i as A,n as De,k as rr}from"../chunks/qR_TM3YX.js";import{i as h}from"../chunks/DpBBTLWw.js";import{g as sa,a as N,r as Ht,s as y,e as he,i as Se,b as tt}from"../chunks/
|
|
1
|
+
import{d as qr,a as B,b as i,f as c,s as l,t as ea,c as Pe}from"../chunks/B2A7gHtL.js";import{p as ta,s as f,a as mt,u as bt,b as ra,t as u,g as e,c as aa,d as s,e as na,f as n,h as a,$ as oa,r as t,i as A,n as De,k as rr}from"../chunks/qR_TM3YX.js";import{i as h}from"../chunks/DpBBTLWw.js";import{g as sa,a as N,r as Ht,s as y,e as he,i as Se,b as tt}from"../chunks/DeOOVYCg.js";import{h as ia}from"../chunks/CXQ1lKJR.js";import{b as rt}from"../chunks/nnazh41B.js";import{g as la}from"../chunks/Be_uRYmX.js";import{f as da}from"../chunks/DPrxUVm_.js";var ca=c('<div class="flex items-center gap-4 mt-4"><div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-accent-cyan"></span> <span class="text-text-muted">Total</span> <span class="text-text-primary font-mono font-semibold"> </span></div> <div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-accent-green glow-pulse"></span> <span class="text-text-muted">Online</span> <span class="text-accent-green font-mono font-semibold"> </span></div> <div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-red-500"></span> <span class="text-text-muted">Offline</span> <span class="text-text-secondary font-mono font-semibold"> </span></div> <div class="flex items-center gap-1.5 text-xs"><span class="w-2 h-2 rounded-full bg-accent-purple"></span> <span class="text-text-muted">Capabilities</span> <span class="text-text-secondary font-mono font-semibold"> </span></div></div>'),va=c('<div class="flex-shrink-0 mx-4 md:mx-6 mt-4 p-4 rounded-xl border border-accent-cyan/30 bg-accent-cyan/5"><div class="flex items-start justify-between"><div class="flex-1"><h3 class="text-sm font-semibold text-text-primary mb-2">Add a Node</h3> <p class="text-xs text-text-secondary mb-3">Run this on the machine you want to pair:</p> <div class="bg-bg-primary rounded-lg p-3 font-mono text-xs text-accent-cyan overflow-x-auto"><span class="text-text-muted select-none">$</span>curl -fsSL https://gitlab.honercloud.com/llm/cortex/-/raw/main/node-install.sh | bash</div> <p class="text-xs text-text-muted mt-2">Or if OpenClaw is already installed:</p> <div class="bg-bg-primary rounded-lg p-3 font-mono text-xs text-accent-cyan mt-1 overflow-x-auto"><span class="text-text-muted select-none">$</span> </div> <p class="text-xs text-text-muted mt-2">The node will appear in <strong>Pending</strong> below. Click <strong>Approve</strong> to pair it.</p></div> <button class="text-text-muted hover:text-text-primary ml-4"><svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button></div></div>'),pa=c('<p class="text-xs text-text-muted"> </p>'),ua=c('<div class="flex items-center justify-between p-3 rounded-lg bg-bg-primary/50 border border-border-default"><div class="flex items-center gap-3"><div class="w-8 h-8 rounded-lg bg-accent-amber/20 flex items-center justify-center"><svg class="w-4 h-4 text-accent-amber" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></div> <div><p class="text-sm font-medium text-text-primary"> </p> <!></div></div> <div class="flex items-center gap-2"><button class="px-3 py-1.5 text-xs font-medium rounded-lg bg-accent-green/20 text-accent-green border border-accent-green/30 hover:bg-accent-green/30 transition-colors disabled:opacity-50"> </button> <button class="px-3 py-1.5 text-xs font-medium rounded-lg bg-accent-red/20 text-accent-red border border-accent-red/30 hover:bg-accent-red/30 transition-colors disabled:opacity-50"> </button></div></div>'),xa=c('<div class="flex-shrink-0 mx-4 md:mx-6 mt-4"><div class="p-4 rounded-xl border border-accent-amber/30 bg-accent-amber/5 animate-pulse-slow"><div class="flex items-center gap-2 mb-3"><svg class="w-5 h-5 text-accent-amber" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <h3 class="text-sm font-semibold text-accent-amber"> </h3></div> <div class="space-y-2"></div></div></div>'),ma=c('<div class="flex items-center justify-between p-3 rounded-lg bg-bg-primary/50 border border-border-default"><div class="flex items-center gap-3"><div class="w-8 h-8 rounded-lg bg-accent-cyan/20 flex items-center justify-center"><svg class="w-4 h-4 text-accent-cyan" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"></path></svg></div> <div><p class="text-sm font-medium text-text-primary"> </p> <p class="text-xs text-text-muted"> <!></p></div></div> <div class="flex items-center gap-2"><button class="px-3 py-1.5 text-xs font-medium rounded-lg bg-accent-green/20 text-accent-green border border-accent-green/30 hover:bg-accent-green/30 transition-colors disabled:opacity-50"> </button> <button class="px-3 py-1.5 text-xs font-medium rounded-lg bg-accent-red/20 text-accent-red border border-accent-red/30 hover:bg-accent-red/30 transition-colors disabled:opacity-50"> </button></div></div>'),ba=c('<div class="flex-shrink-0 mx-4 md:mx-6 mt-4"><div class="p-4 rounded-xl border border-accent-cyan/30 bg-accent-cyan/5 animate-pulse-slow"><div class="flex items-center gap-2 mb-3"><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="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"></path></svg> <h3 class="text-sm font-semibold text-accent-cyan"> </h3></div> <div class="space-y-2"></div></div></div>'),ga=c('<div class="flex flex-col items-center justify-center h-full text-center"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-8 h-8 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636a9 9 0 010 12.728m-2.829-2.829a5 5 0 000-7.07m-4.243 9.9a9 9 0 01-4.242-1.757"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view the node fleet.</p></div>'),fa=c('<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>'),ha=c('<div class="glass rounded-xl p-5 border border-border-default animate-pulse"><div class="flex items-center gap-3 mb-3"><div class="w-3 h-3 rounded-full bg-bg-tertiary"></div> <div class="h-4 w-32 bg-bg-tertiary rounded"></div></div> <div class="h-3 w-48 bg-bg-tertiary rounded mb-2"></div> <div class="flex gap-2 mt-3"><div class="h-6 w-16 bg-bg-tertiary rounded-full"></div> <div class="h-6 w-16 bg-bg-tertiary rounded-full"></div> <div class="h-6 w-16 bg-bg-tertiary rounded-full"></div></div></div>'),_a=c("<div></div>"),ya=c('<p class="text-text-muted text-sm">No nodes matching "<span class="text-accent-cyan"> </span>"</p>'),wa=c('<p class="text-text-muted text-sm">No nodes found. Pair a device to get started.</p>'),ka=c('<div class="flex flex-col items-center justify-center h-64 text-center"><div class="w-14 h-14 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-7 h-7 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></div> <!></div>'),Ma=c("<span></span>"),ja=c('<p class="text-xs text-text-muted truncate font-mono mt-0.5"> </p>'),Ca=c('<span class="flex items-center gap-1 font-mono"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9"></path></svg> </span>'),Sa=c('<span class="font-mono"> </span>'),Aa=Pe('<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path></svg>'),Na=c("<span><!> </span>"),Ba=c('<span class="px-2 py-0.5 rounded-full text-[10px] font-medium bg-bg-tertiary border border-border-default text-text-muted"> </span>'),Ia=c('<span class="text-[10px] text-text-muted block mt-0.5"> </span>'),$a=Pe('<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path></svg>'),za=c('<span class="text-xs">⚡</span>'),Ha=c('<div class="flex items-start gap-3 rounded-lg border border-border-default bg-bg-primary/50 p-3"><div><!></div> <div class="min-w-0"><span class="text-sm font-medium text-text-primary"> </span> <p class="text-xs text-text-muted mt-0.5"> </p></div></div>'),La=c('<div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">Capabilities</h4> <div class="grid grid-cols-1 md:grid-cols-2 gap-2"></div></div>'),Ra=c(`<span class="px-3 py-1.5 rounded-lg text-xs font-mono
|
|
2
2
|
bg-accent-purple/10 text-accent-purple border border-accent-purple/20
|
|
3
3
|
hover:bg-accent-purple/20 transition-colors"> </span>`),Da=c('<div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">Registered Commands</h4> <div class="flex flex-wrap gap-2"></div></div>'),Pa=c('<div class="space-y-5"><div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">System Information</h4> <div class="grid grid-cols-2 md:grid-cols-4 gap-3"><div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Node ID</span> <span class="text-xs text-text-primary font-mono break-all"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">IP Address</span> <span class="text-xs text-text-primary font-mono"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Version</span> <span class="text-xs text-text-primary font-mono"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Platform</span> <span class="text-xs text-text-primary font-mono"> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Paired</span> <span> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Connected</span> <span> </span></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Last Seen</span> <span class="text-xs text-text-primary"> </span> <!></div> <div class="rounded-lg border border-border-default bg-bg-primary/50 p-3"><span class="text-[10px] uppercase tracking-wider text-text-muted block mb-1">Uptime</span> <span class="text-xs text-text-primary"> </span></div></div></div> <!> <!></div>'),Va=c('<button class="px-2 py-0.5 text-[10px] font-mono rounded bg-accent-purple/10 text-accent-purple border border-accent-purple/20 hover:bg-accent-purple/20 transition-colors"> </button>'),Ea=c('<div class="flex flex-wrap gap-1.5 mt-2"></div>'),Oa=Pe('<svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path></svg> Running…',1),Ta=Pe('<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> Execute',1),Fa=c('<div class="rounded-lg border border-accent-green/30 bg-bg-primary/80 overflow-hidden"><div class="flex items-center gap-2 px-3 py-2 border-b border-border-default bg-accent-green/5"><span class="w-2 h-2 rounded-full bg-accent-green"></span> <span class="text-xs font-semibold text-accent-green">Response</span></div> <pre class="p-3 text-xs font-mono text-text-primary overflow-x-auto max-h-64 overflow-y-auto"> </pre></div>'),Ua=c('<div class="rounded-lg border border-accent-pink/30 bg-bg-primary/80 overflow-hidden"><div class="flex items-center gap-2 px-3 py-2 border-b border-border-default bg-accent-pink/5"><span class="w-2 h-2 rounded-full bg-accent-pink"></span> <span class="text-xs font-semibold text-accent-pink">Error</span></div> <pre class="p-3 text-xs font-mono text-accent-pink overflow-x-auto"> </pre></div>'),Ga=c(`<div class="space-y-4"><div><h4 class="text-xs font-semibold uppercase tracking-wider text-text-muted mb-3">Node Command Invocation</h4> <p class="text-xs text-text-muted mb-4">Execute a command on this node via <code class="text-accent-cyan bg-bg-tertiary px-1 rounded">node.invoke</code> RPC.</p></div> <div class="space-y-3"><div><label class="text-xs text-text-muted block mb-1.5">Command Name</label> <input type="text" placeholder="e.g. camera_snap, screen_record" class="w-full px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-purple/50 focus:ring-1 focus:ring-accent-purple/20 transition-all"/> <!></div> <div><label class="text-xs text-text-muted block mb-1.5">Parameters (JSON)</label> <textarea class="w-full px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:border-accent-purple/50 focus:ring-1 focus:ring-accent-purple/20 transition-all resize-y"></textarea></div> <div><label class="text-xs text-text-muted block mb-1.5">Timeout (ms)</label> <input type="number" class="w-32 px-3 py-2 text-sm font-mono bg-bg-input border border-border-default rounded-lg text-text-primary focus:outline-none focus:border-accent-purple/50 focus:ring-1 focus:ring-accent-purple/20 transition-all"/></div> <button class="flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg transition-all
|
|
4
4
|
bg-accent-purple/20 text-accent-purple border border-accent-purple/30
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as ke,a as Me,b as i,f as x,s as v,c as $e,t as oe}from"../chunks/B2A7gHtL.js";import{p as Ce,d as w,g as e,u as je,b as Ae,t as k,c as Se,s as D,e as De,f as o,h as a,$ as Ve,n as z,r as t,i as V,l as Ie}from"../chunks/qR_TM3YX.js";import{i as M}from"../chunks/DpBBTLWw.js";import{g as Be,a as L,e as T,i as J,s as W,b as Oe}from"../chunks/
|
|
1
|
+
import{d as ke,a as Me,b as i,f as x,s as v,c as $e,t as oe}from"../chunks/B2A7gHtL.js";import{p as Ce,d as w,g as e,u as je,b as Ae,t as k,c as Se,s as D,e as De,f as o,h as a,$ as Ve,n as z,r as t,i as V,l as Ie}from"../chunks/qR_TM3YX.js";import{i as M}from"../chunks/DpBBTLWw.js";import{g as Be,a as L,e as T,i as J,s as W,b as Oe}from"../chunks/DeOOVYCg.js";import{h as Re}from"../chunks/CXQ1lKJR.js";import{g as ze}from"../chunks/X1MNi0qp.js";import"../chunks/Be_uRYmX.js";var Le=$e('<svg class="w-4 h-4 animate-spin inline mr-1" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg>'),Ne=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-pulse"><div class="h-3 w-16 bg-bg-tertiary rounded mb-3"></div> <div class="h-7 w-24 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-32 bg-bg-tertiary rounded"></div></div>'),Fe=x('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"></div>'),Ge=x('<div class="text-xs text-text-muted mt-1"> </div>'),He=x('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"><div><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Status</div> <div> </div> <!></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Uptime</div> <div class="text-2xl font-bold text-accent-cyan"> </div> <div class="text-xs text-text-muted mt-1"> </div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Sessions</div> <div class="text-2xl font-bold text-accent-purple"> </div> <div class="text-xs text-text-muted mt-1"><!></div></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="text-xs font-medium text-text-muted uppercase tracking-wider mb-2">Models</div> <div class="text-2xl font-bold text-accent-amber"> </div> <div class="text-xs text-text-muted mt-1">Available providers</div></div></div>'),Ke=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-pulse"><div class="flex items-center justify-between mb-3"><div class="h-3 w-20 bg-bg-tertiary rounded"></div> <div class="h-5 w-8 bg-bg-tertiary rounded"></div></div> <div class="h-3 w-40 bg-bg-tertiary rounded mb-2"></div> <div class="h-3 w-20 bg-bg-tertiary rounded"></div></div>'),Pe=x('<div class="grid grid-cols-1 md:grid-cols-3 gap-4"></div>'),Ue=x("<span> </span>"),qe=x('<span class="text-xs text-text-muted">n/a</span>'),Ee=x('<p class="text-xs text-text-muted font-mono"> </p>'),Qe=x('<div class="grid grid-cols-1 md:grid-cols-3 gap-4"><div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-3"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Instances</div> <span class="text-lg font-bold text-accent-cyan"> </span></div> <p class="text-xs text-text-muted">Presence beacons from connected clients and nodes.</p> <a href="/instances" class="inline-block mt-2 text-xs text-accent-cyan hover:underline">View all →</a></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-3"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Cron</div> <!></div> <p class="text-xs text-text-muted"> </p> <a href="/cron" class="inline-block mt-2 text-xs text-accent-cyan hover:underline">Manage jobs →</a></div> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><div class="flex items-center justify-between mb-3"><div class="text-xs font-medium text-text-muted uppercase tracking-wider">Auth</div> <span class="px-2 py-0.5 rounded text-xs font-medium bg-accent-purple/20 text-accent-purple"> </span></div> <!> <a href="/settings" class="inline-block mt-2 text-xs text-accent-cyan hover:underline">Configure →</a></div></div>'),Te=x('<div><div class="text-xs text-text-muted"> </div> <div class="text-sm text-text-secondary font-mono truncate"> </div></div>'),Je=x('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h2 class="text-sm font-semibold text-text-primary mb-3">Gateway Snapshot</h2> <div class="grid grid-cols-2 md:grid-cols-4 gap-4"></div></div>'),We=x(`<div class="h-full overflow-y-auto"><div class="max-w-6xl mx-auto p-4 md:p-6 space-y-6"><div class="flex items-center justify-between flex-wrap gap-3"><div><h1 class="text-2xl font-bold text-text-primary">Overview</h1> <p class="text-sm text-text-muted mt-1">Gateway status, entry points, and a fast health read.</p></div> <button class="px-3 py-2 rounded-lg text-sm border border-border-default hover:border-accent-cyan
|
|
2
2
|
text-text-secondary hover:text-accent-cyan transition-all
|
|
3
3
|
disabled:opacity-50 disabled:cursor-not-allowed"><!> Refresh</button></div> <!> <!> <!> <div class="rounded-xl border border-border-default bg-bg-secondary/50 p-4"><h2 class="text-sm font-semibold text-text-primary mb-3">Quick Actions</h2> <div class="grid grid-cols-2 md:grid-cols-4 gap-3"><a href="/" class="flex items-center gap-2 p-3 rounded-lg border border-border-default hover:border-accent-cyan
|
|
4
4
|
text-text-secondary hover:text-accent-cyan transition-all text-sm"><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"></path></svg> Open Chat</a> <a href="/nodes" class="flex items-center gap-2 p-3 rounded-lg border border-border-default hover:border-accent-cyan
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as _a,a as k,b as x,s as g,f as b,e as ka,g as Cr}from"../chunks/B2A7gHtL.js";import{p as wa,s as L,a as q,u as Ar,g as e,d as f,b as Ma,t as y,c as Ca,e as Aa,h as a,f as n,i as D,$ as Ta,r,n as O,j as Kt,m as Tr,o as Lr}from"../chunks/qR_TM3YX.js";import{i as w}from"../chunks/DpBBTLWw.js";import{g as La,a as Pt,s as S,r as K,e as ne,i as Qt,b as xe}from"../chunks/
|
|
1
|
+
import{d as _a,a as k,b as x,s as g,f as b,e as ka,g as Cr}from"../chunks/B2A7gHtL.js";import{p as wa,s as L,a as q,u as Ar,g as e,d as f,b as Ma,t as y,c as Ca,e as Aa,h as a,f as n,i as D,$ as Ta,r,n as O,j as Kt,m as Tr,o as Lr}from"../chunks/qR_TM3YX.js";import{i as w}from"../chunks/DpBBTLWw.js";import{g as La,a as Pt,s as S,r as K,e as ne,i as Qt,b as xe}from"../chunks/DeOOVYCg.js";import{h as Sa}from"../chunks/CXQ1lKJR.js";import{s as ja}from"../chunks/DFN8J1NF.js";import{b as $e,a as Be}from"../chunks/nnazh41B.js";import{b as Da,i as Sr,s as jr}from"../chunks/DVP7Iy08.js";import{g as $a}from"../chunks/X1MNi0qp.js";import{g as Ba}from"../chunks/Be_uRYmX.js";import{g as Fa}from"../chunks/BhDMmVbO.js";var za=b('<div class="mt-4 rounded-xl border border-border-default bg-bg-secondary/50 p-4 animate-fade-in"><div class="grid grid-cols-2 md:grid-cols-4 gap-4"><div><label class="block text-xs text-text-muted mb-1">Active Minutes (0=all)</label> <input type="number" min="0" step="1" class="w-full px-3 py-1.5 text-sm rounded-lg border border-border-default bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan transition-all"/></div> <div><label class="block text-xs text-text-muted mb-1">Limit</label> <input type="number" min="1" max="500" step="1" class="w-full px-3 py-1.5 text-sm rounded-lg border border-border-default bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan transition-all"/></div> <div class="flex flex-col justify-end gap-2"><label class="flex items-center gap-2 text-sm text-text-secondary cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-accent-cyan focus:ring-accent-cyan/30"/> Include Global</label> <label class="flex items-center gap-2 text-sm text-text-secondary cursor-pointer"><input type="checkbox" class="rounded border-border-default bg-bg-tertiary text-accent-cyan focus:ring-accent-cyan/30"/> Include Unknown</label></div> <div class="flex items-end"><button class="w-full px-3 py-1.5 text-sm rounded-lg bg-accent-cyan/10 text-accent-cyan border border-accent-cyan/30 hover:bg-accent-cyan/20 transition-all">Apply Filters</button></div></div></div>'),Va=b('<div class="flex rounded-lg border border-border-default overflow-hidden"><button>Grouped</button> <button>All</button></div>'),Ha=b('<div class="flex items-center gap-1"><button class="px-2 py-2 text-xs rounded-lg bg-bg-tertiary border border-border-default text-text-muted hover:text-text-secondary transition-all" title="Expand all"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button> <button class="px-2 py-2 text-xs rounded-lg bg-bg-tertiary border border-border-default text-text-muted hover:text-text-secondary transition-all" title="Collapse all"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></button> <span class="text-[10px] text-text-muted ml-1"> </span></div>'),Ia=b('<div class="flex flex-col items-center justify-center h-full text-center"><div class="w-16 h-16 rounded-2xl bg-bg-tertiary border border-border-default flex items-center justify-center mb-4"><svg class="w-8 h-8 text-text-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 5.636a9 9 0 010 12.728m-2.829-2.829a5 5 0 000-7.07"></path></svg></div> <p class="text-text-muted text-sm">Connect to the gateway to view sessions.</p></div>'),Na=b('<div class="rounded-xl border border-border-default bg-bg-secondary/50 p-5 animate-pulse"><div class="h-4 w-48 bg-bg-tertiary rounded mb-3"></div> <div class="h-3 w-96 bg-bg-tertiary rounded mb-2"></div> <div class="flex gap-2"><div class="h-5 w-16 bg-bg-tertiary rounded-full"></div> <div class="h-5 w-20 bg-bg-tertiary rounded-full"></div> <div class="h-5 w-14 bg-bg-tertiary rounded-full"></div></div></div>'),Ra=b('<div class="flex flex-col gap-3"></div>'),Ua=b('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm"> </p></div>'),Ea=b('<div class="flex flex-col items-center justify-center h-64 text-center"><p class="text-text-muted text-sm"> </p></div>'),Oa=b('<button><svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></button>'),Ga=b('<div class="w-6 flex-shrink-0 mt-0.5 flex items-center justify-center"><span></span></div>'),qa=b('<form class="flex items-center gap-2"><input type="text" class="px-2 py-1 text-sm rounded border border-accent-cyan/50 bg-bg-tertiary text-text-primary focus:outline-none focus:border-accent-cyan w-48"/> <button type="submit" class="text-accent-cyan text-xs hover:underline">Save</button> <button type="button" class="text-text-muted text-xs hover:text-text-secondary">Cancel</button></form>'),Ka=b('<span> </span> <button class="p-0.5 rounded hover:bg-bg-hover text-text-muted hover:text-accent-cyan transition-colors" title="Rename"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg></button>',1),Pa=b('<span class="px-2 py-0.5 rounded text-[10px] font-medium bg-bg-tertiary text-text-muted border border-border-default"> </span>'),Qa=b('<span class="px-2 py-0.5 rounded text-[10px] font-medium bg-accent-purple/10 text-purple-300 border border-accent-purple/10"> </span>'),Wa=b("<span> </span>"),Ja=b('<span class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] bg-accent-purple/10 text-purple-300 border border-accent-purple/10"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg> </span>'),Xa=b('<span class="px-2 py-0.5 rounded text-[10px] bg-bg-tertiary text-text-muted border border-border-default"> </span>'),Ya=b('<span class="flex items-center gap-1 px-2 py-0.5 rounded text-[10px] bg-accent-green/10 text-accent-green border border-accent-green/10"><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A2 2 0 013 12V7a4 4 0 014-4z"></path></svg> </span>'),Za=b('<p class="text-xs text-text-muted truncate mb-1.5 max-w-[500px]"> </p>'),en=b('<span class="flex items-center gap-1 px-2 py-1 rounded-lg text-[10px] font-medium bg-accent-amber/15 text-accent-amber border border-accent-amber/30"> </span>'),tn=b("<option> </option>"),rn=b(`<select class="px-2 py-1 rounded-lg text-[11px] border border-border-default bg-bg-tertiary
|
|
2
2
|
text-text-secondary hover:border-accent-purple/40 focus:outline-none focus:border-accent-purple
|
|
3
3
|
transition-all disabled:opacity-50 max-w-[200px] cursor-pointer appearance-none
|
|
4
4
|
bg-[url('data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2388929e%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M6%209l6%206%206-6%22%2F%3E%3C%2Fsvg%3E')]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as se,a as v,b as i,f as d,s as O,c as it}from"../chunks/B2A7gHtL.js";import{p as ce,s as _,a as Mt,u as nt,b as st,t as B,g as a,c as le,d as x,e as ie,h as n,f as o,$ as de,r,n as N,j as ct}from"../chunks/qR_TM3YX.js";import{i as h}from"../chunks/DpBBTLWw.js";import{g as pe,e as ue,i as ve,r as R,c as xe,b as y,s as C}from"../chunks/
|
|
1
|
+
import{d as se,a as v,b as i,f as d,s as O,c as it}from"../chunks/B2A7gHtL.js";import{p as ce,s as _,a as Mt,u as nt,b as st,t as B,g as a,c as le,d as x,e as ie,h as n,f as o,$ as de,r,n as N,j as ct}from"../chunks/qR_TM3YX.js";import{i as h}from"../chunks/DpBBTLWw.js";import{g as pe,e as ue,i as ve,r as R,c as xe,b as y,s as C}from"../chunks/DeOOVYCg.js";import{h as me}from"../chunks/CXQ1lKJR.js";import{s as jt}from"../chunks/DFN8J1NF.js";import{b as lt}from"../chunks/nnazh41B.js";import{b as be}from"../chunks/BYXRTvT-.js";import{g as fe,a as ge,A as he}from"../chunks/CktI4lAE.js";import{C as ye}from"../chunks/DM2PI6Ub.js";var we=it('<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>'),_e=d(`<button><!> <span class="absolute -bottom-7 left-1/2 -translate-x-1/2 text-xs text-text-muted
|
|
2
2
|
opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none"> </span></button>`),ke=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
3
|
flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity" aria-label="Remove avatar">×</button>`,1),Ce=d(`<div class="w-24 h-24 rounded-full bg-accent-cyan/10 border-2 border-dashed border-accent-cyan/30
|
|
4
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>`),Se=d('<p class="text-sm text-text-muted">Your browser does not support notifications.</p>'),Me=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>'),je=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>'),Ae=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>'),Oe=d(`<button class="px-5 py-2.5 rounded-xl text-sm font-medium
|
|
@@ -1,4 +1,4 @@
|
|
|
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/
|
|
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/DeOOVYCg.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
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
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
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
|
|
@@ -1,4 +1,4 @@
|
|
|
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/BLtDog0v.js";import{h as wr}from"../chunks/CXQ1lKJR.js";import{s as st}from"../chunks/SHB02qEx.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
|
|
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/DeOOVYCg.js";import{h as wr}from"../chunks/CXQ1lKJR.js";import{s as st}from"../chunks/DFN8J1NF.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
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
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
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as m}from"../chunks/BFumT5Y0.js";export{m as component};
|
|
@@ -1,4 +1,4 @@
|
|
|
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/
|
|
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/DeOOVYCg.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
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
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
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
|