UNPKG

manifest

Version:

Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard

3 lines (2 loc) 31.5 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Overview-Bi9FuoLx.js","assets/vendor-C-Y5oNOq.js","assets/charts-Cty976qB.js","assets/charts-Saz_VHki.css","assets/chart-utils-DTt1NOye.js","assets/model-display-DHwvDtl4.js","assets/routing-utils-CHapjwyd.js","assets/AuthBadge-Dj2KkXRW.js","assets/overview-DKLGwfLs.js","assets/SetupStepAddProvider-CSNkQmoC.js","assets/CopyButton-BWMVlK2w.js","assets/overview-vZEzTjBP.css","assets/routing-CLLAl6kl.js","assets/auth-CU91cd7V.js","assets/MessageLog-DoriYlHo.js","assets/Pagination-D8BOkffh.js","assets/Settings-BH-xNoID.js","assets/Routing-B-On2pvv.js","assets/provider-api-key-urls-1G6okUJ7.js","assets/Limits-Xgc4xTl5.js","assets/Account-C5g6WhPe.js","assets/Login-DMXD4PMZ.js","assets/SocialButtons-DudwEJ6b.js","assets/Register-CrovWG_d.js","assets/ResetPassword-C6B1ubhL.js","assets/ModelPrices-MhBT_7Zb.js","assets/Help-ifWIlcDo.js","assets/FreeModels-D14GhDL_.js","assets/ConnectProvider-axzk92LC.js","assets/ProviderTokens-Cu2RUqQG.js"])))=>i.map(i=>d[i]); import{u as j,a as x,d as U,b as B,e as Q,f as ee,i as u,g as r,A as C,S as p,h as M,s as S,t as g,o as H,m as N,j as xe,k as Y,T as te,M as Se,F as Z,l as Ae,n as Ee,p as Le,q as Me,v as Re,R as Te,w as b,x as Pe,y as A}from"./vendor-C-Y5oNOq.js";import{c as Ie}from"./auth-CU91cd7V.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const d of o.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&n(d)}).observe(document,{childList:!0,subtree:!0});function s(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(a){if(a.ep)return;a.ep=!0;const o=s(a);fetch(a.href,o)}})();const Oe="modulepreload",De=function(e){return"/"+e},ae={},E=function(t,s,n){let a=Promise.resolve();if(s&&s.length>0){let d=function(i){return Promise.all(i.map(h=>Promise.resolve(h).then(_=>({status:"fulfilled",value:_}),_=>({status:"rejected",reason:_}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),l=c?.nonce||c?.getAttribute("nonce");a=d(s.map(i=>{if(i=De(i),i in ae)return;ae[i]=!0;const h=i.endsWith(".css"),_=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${i}"]${_}`))return;const m=document.createElement("link");if(m.rel=h?"stylesheet":Oe,h||(m.as="script"),m.crossOrigin="",m.href=i,l&&m.setAttribute("nonce",l),document.head.appendChild(m),h)return new Promise(($,k)=>{m.addEventListener("load",$),m.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${i}`)))})}))}function o(d){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=d,window.dispatchEvent(c),!c.defaultPrevented)throw d}return a.then(d=>{for(const c of d||[])c.status==="rejected"&&o(c.reason);return t().catch(o)})};function pe(){const e=j();return()=>{const t=e.pathname.match(/^\/agents\/([^/]+)/);return t?.[1]?decodeURIComponent(t[1]):null}}function Ne(e,t){return e?`/agents/${encodeURIComponent(e)}${t}`:"/"}const F=Ie({baseURL:window.location.origin,basePath:"/api/auth"}),[D,ie]=x(null),[Ue,Ve]=x(!1),[Fe,je]=x(null);let z=null;function ne(){return D()!==null?Promise.resolve(D()):(z||(z=fetch("/api/v1/health").then(e=>e.json()).then(e=>{const t=e.mode==="local";return ie(t),Ve(e.devMode===!0),e.version&&je({version:e.version,latestVersion:e.latestVersion,updateAvailable:e.updateAvailable}),t}).catch(()=>(ie(!1),!1))),z)}const X="manifest-display-name",[Be,He]=x(localStorage.getItem(X)||"");function Ge(){return Be()}function In(e){const t=e.trim();t?localStorage.setItem(X,t):localStorage.removeItem(X),He(t)}const[Ke,qe]=x(null);function ze(){return Ke()}function oe(e){qe(e)}var We=g('<img src=/logo.svg alt=Manifest width=152 class="header__logo-img header__logo-img--light">'),Je=g('<img src=/logo-white.svg alt=Manifest width=152 class="header__logo-img header__logo-img--dark">'),Ye=g("<span class=header__mode-badge>Local"),Ze=g('<span class="header__mode-badge header__mode-badge--dev">Dev'),le=g("<span class=header__separator>/"),Xe=g("<span class=header__breadcrumb-current>"),ce=g("<div class=header__star-separator>"),Qe=g("<span class=header__github-star-count>"),et=g('<div class=header__github-star><a href=https://github.com/mnfst/manifest target=_blank rel="noopener noreferrer"class=header__github-star-btn><span class=header__github-star-action><svg class=header__github-icon width=16 height=16 viewBox="0 0 16 16"fill=currentColor aria-hidden=true><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg><span class=header__github-star-label>Star</span></span></a><button class=header__github-star-close aria-label="Dismiss GitHub star button"><svg width=10 height=10 viewBox="0 0 10 10"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden=true><line x1=2 y1=2 x2=8 y2=8></line><line x1=8 y1=2 x2=2 y2=8>'),tt=g("<span class=header__dropdown-email>"),nt=g('<svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx=12 cy=7 r=4>'),rt=g('<button class="header__dropdown-item header__dropdown-item--danger"role=menuitem><svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1=21 y1=12 x2=9 y2=12></line></svg>Log out'),st=g("<div class=header__dropdown role=menu><div class=header__dropdown-header><span class=header__dropdown-name></span></div><div class=header__dropdown-divider>"),at=g('<header class=header><div class=header__left></div><div class=header__right><a target=_blank rel="noopener noreferrer"class=header__docs-link><svg width=13 height=13 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>Docs</a><div class=header__user style=position:relative><button class=header__avatar-btn aria-label="User menu"aria-haspopup=menu><div class=header__avatar>');const de="github-star-dismissed",ue="github-star-count",ge="github-star-ts",it=36e5,ot=()=>{const e=pe(),t=j(),[s,n]=x(!1),[a,o]=x(null),[d,c]=x(sessionStorage.getItem(de)==="true"),l=F.useSession(),i=B();Q(()=>{if(ne(),!d()){const v=sessionStorage.getItem(ue),L=sessionStorage.getItem(ge);if(v&&L&&Date.now()-Number(L)<it){o(Number(v));return}fetch("/api/v1/github/stars").then(T=>T.json()).then(T=>{typeof T.stars=="number"&&(o(T.stars),sessionStorage.setItem(ue,String(T.stars)),sessionStorage.setItem(ge,String(Date.now())))}).catch(()=>{})}});const h=v=>{v.preventDefault(),v.stopPropagation(),sessionStorage.setItem(de,"true"),c(!0)},_=v=>v.toLocaleString("en-US"),m=()=>l()?.data?.user,$=()=>{if(D()){const v=Ge();if(v)return v}return m()?.name??"User"},k=()=>{const v=t.pathname;return v.includes("/limits")?"https://manifest.build/docs/set-limits":v.includes("/routing")?"https://manifest.build/docs/routing":"https://manifest.build/docs/introduction"},y=()=>$().charAt(0).toUpperCase(),f=async()=>{await F.signOut(),i("/login",{replace:!0})},I=v=>{v.target.closest(".header__user")||n(!1)};return ee(()=>{s()&&(document.addEventListener("click",I),H(()=>document.removeEventListener("click",I)))}),(()=>{var v=at(),L=v.firstChild,T=L.nextSibling,se=T.firstChild,K=se.nextSibling,q=K.firstChild,Ce=q.firstChild;return u(L,r(C,{href:"/",class:"header__logo",get children(){return[We(),Je()]}}),null),u(L,r(p,{get when(){return D()},get children(){return Ye()}}),null),u(L,r(p,{get when(){return Ue()},get children(){return Ze()}}),null),u(L,r(p,{get when(){return e()},get children(){return[le(),r(C,{href:"/",class:"header__breadcrumb-link",children:"Workspace"}),le(),(()=>{var w=Xe();return u(w,()=>ze()??e()),w})()]}}),null),u(T,r(p,{get when(){return!d()},get children(){return[ce(),(()=>{var w=et(),R=w.firstChild;R.firstChild;var O=R.nextSibling;return u(R,r(p,{get when(){return a()!==null},get children(){var P=Qe();return u(P,()=>_(a())),P}}),null),O.$$click=h,w})(),ce()]}}),K),q.$$click=()=>n(!s()),u(Ce,y),u(K,r(p,{get when(){return s()},get children(){var w=st(),R=w.firstChild,O=R.firstChild;return R.nextSibling,u(O,$),u(R,r(p,{get when(){return!D()},get children(){var P=tt();return u(P,()=>m()?.email??""),P}}),null),u(w,r(C,{href:"/account",class:"header__dropdown-item",role:"menuitem",onClick:()=>n(!1),get children(){return[nt(),"Account Preferences"]}}),null),u(w,r(p,{get when(){return!D()},get children(){var P=rt();return P.$$click=f,P}}),null),w}}),null),M(w=>{var R=k(),O=s();return R!==w.e&&S(se,"href",w.e=R),O!==w.t&&S(q,"aria-expanded",w.t=O),w},{e:void 0,t:void 0}),v})()};U(["click"]);var lt=g("<div class=sidebar__section-label>MONITORING"),ct=g("<div class=sidebar__section-label>MANAGE"),dt=g("<div class=sidebar__section-label>RESOURCES"),ut=g('<img src=/icons/free.svg alt="Free Models"style=height:12px;vertical-align:middle>'),gt=g('<nav class=sidebar aria-label="Agent navigation"><div class=sidebar__spacer></div><a href="https://github.com/mnfst/manifest/discussions/new?category=feature-request"target=_blank rel="noopener noreferrer"class=sidebar__feedback><span class=sidebar__feedback-title><i class="bxd bx-message-bubble-detail"></i>Feedback</span><p class=sidebar__feedback-hint>Share ideas or report bugs.');const ht=()=>{const e=j(),t=pe(),s=a=>Ne(t(),a),n=a=>{const o=s(a);return a===""?e.pathname===o:e.pathname.startsWith(o)};return(()=>{var a=gt(),o=a.firstChild;return u(a,r(p,{get when(){return!t()},get children(){return r(C,{href:"/",class:"sidebar__link",get classList(){return{active:e.pathname==="/"}},get"aria-current"(){return e.pathname==="/"?"page":void 0},children:"Agents"})}}),o),u(a,r(p,{get when(){return t()},get children(){return[lt(),r(C,{get href(){return s("")},class:"sidebar__link",get classList(){return{active:n("")}},get"aria-current"(){return n("")?"page":void 0},children:"Overview"}),r(C,{get href(){return s("/messages")},class:"sidebar__link",get classList(){return{active:n("/messages")}},get"aria-current"(){return n("/messages")?"page":void 0},children:"Messages"}),ct(),r(C,{get href(){return s("/routing")},class:"sidebar__link",get classList(){return{active:n("/routing")}},get"aria-current"(){return n("/routing")?"page":void 0},children:"Routing"}),r(C,{get href(){return s("/limits")},class:"sidebar__link",get classList(){return{active:n("/limits")}},get"aria-current"(){return n("/limits")?"page":void 0},children:"Limits"}),r(C,{get href(){return s("/settings")},class:"sidebar__link",get classList(){return{active:n("/settings")}},get"aria-current"(){return n("/settings")?"page":void 0},children:"Settings"})]}}),o),u(a,r(p,{get when(){return t()},get children(){return[dt(),r(C,{get href(){return s("/provider-tokens")},class:"sidebar__link",get classList(){return{active:n("/provider-tokens")}},get"aria-current"(){return n("/provider-tokens")?"page":void 0},children:"Provider Tokens"}),r(C,{get href(){return s("/model-prices")},class:"sidebar__link",get classList(){return{active:n("/model-prices")}},get"aria-current"(){return n("/model-prices")?"page":void 0},children:"Model Prices"}),r(C,{get href(){return s("/free-models")},class:"sidebar__link",get classList(){return{active:n("/free-models")}},get"aria-current"(){return n("/free-models")?"page":void 0},get children(){return[ut()," ","Models"]}}),r(C,{get href(){return s("/help")},class:"sidebar__link",get classList(){return{active:n("/help")}},get"aria-current"(){return n("/help")?"page":void 0},children:"Help"})]}}),o),a})()};var _t=g('<div class=auth-layout><div class=auth-card style=text-align:center><div class=auth-logo><img src=/logo.svg alt=Manifest class="auth-logo__img auth-logo__img--light"><img src=/logo-white.svg alt=Manifest class="auth-logo__img auth-logo__img--dark"></div><p style=color:hsl(var(--muted-foreground));font-size:var(--font-size-sm)>Loading...');const[mt,W]=x("idle");async function pt(){try{return await ne()?(await fetch("/api/auth/local-session",{credentials:"include"})).ok:!1}catch{return!1}}const vt=e=>{const t=F.useSession(),s=B();return ee(async()=>{const n=t();if(n.isPending||n.data)return;const a=mt();if(a==="pending")return;if(a==="done"||a==="failed"){s("/login",{replace:!0});return}W("pending"),await pt()?(await n.refetch(),W("done")):W("failed")}),r(p,{get when(){return N(()=>!t().isPending)()&&t().data},get fallback(){return _t()},get children(){return e.children}})},[ft,$t]=x(0);function bt(){const e=new EventSource("/api/v1/events");return e.addEventListener("ping",()=>{$t(t=>t+1)}),()=>e.close()}var yt=g('<div class=version-indicator__tooltip-wrap><span>New version available</span><div class=version-indicator__bubble role=tooltip><span class=version-indicator__range>v<!> &rarr; v</span><div class=version-indicator__command-row><code class=version-indicator__command>openclaw plugins update</code><button class=version-indicator__copy-btn aria-label="Copy upgrade command">'),wt=g("<div class=version-indicator>"),kt=g("<span>v");const Ct="openclaw plugins update",xt=()=>{const e=()=>Fe(),t=()=>e()?.version==="0.0.0",s=()=>e()?.updateAvailable===!0,[n,a]=x(!1);function o(){navigator.clipboard.writeText(Ct).then(()=>{a(!0),setTimeout(()=>a(!1),2e3)}).catch(()=>{})}return r(p,{get when(){return N(()=>!!e())()&&!t()},get children(){var d=wt();return u(d,r(p,{get when(){return s()},get fallback(){return(()=>{var c=kt();return c.firstChild,u(c,()=>e().version,null),c})()},get children(){var c=yt(),l=c.firstChild,i=l.nextSibling,h=i.firstChild,_=h.firstChild,m=_.nextSibling;m.nextSibling;var $=h.nextSibling,k=$.firstChild,y=k.nextSibling;return u(h,()=>e().version,m),u(h,()=>e().latestVersion,null),y.$$click=o,u(y,()=>n()?"✓":"⎘"),M(()=>S(y,"title",n()?"Copied!":"Copy command")),c}})),M(c=>{var l=!!s(),i=s()?`Update available: v${e().latestVersion}`:`Version ${e().version}`;return l!==c.e&&d.classList.toggle("version-indicator--update",c.e=l),i!==c.t&&S(d,"aria-label",c.t=i),c},{e:void 0,t:void 0}),d}})};U(["click"]);var St=g('<div class=app-shell><a href=#main-content class=skip-link>Skip to main content</a><div class=app-body><main id=main-content class=main-content aria-label="Dashboard content">');const At=e=>(Q(()=>{const t=bt();H(t)}),N(()=>e.children)),Et=e=>{const t=j(),s=()=>t.pathname.startsWith("/agents/"),n=()=>s();return r(vt,{get children(){return r(At,{get children(){var a=St(),o=a.firstChild,d=o.nextSibling,c=d.firstChild;return u(a,r(ot,{}),d),u(d,r(p,{get when(){return n()},get children(){return r(ht,{})}}),c),u(c,()=>e.children),u(a,r(xt,{}),null),M(()=>c.classList.toggle("main-content--full",!n())),a}})}})};var Lt=g('<div class=auth-layout><div class=auth-card><div class=auth-logo><a href=https://manifest.build class=auth-logo__link><img src=/logo.svg alt=Manifest class="auth-logo__img auth-logo__img--light"><img src=/logo-white.svg alt=Manifest class="auth-logo__img auth-logo__img--dark">');const Mt=e=>(()=>{var t=Lt(),s=t.firstChild;return s.firstChild,u(s,()=>e.children,null),t})();var Rt=g('<button class="btn btn--outline btn--sm"style=margin-top:var(--gap-md)>Try again'),Tt=g('<div class=empty-state role=alert><div class=empty-state__title></div><p style="max-width:420px;margin:0 auto">');function Pt(e){return e instanceof Error?e.message:typeof e=="string"?e:"An unexpected error occurred. Please try again."}const ve=e=>{const t=()=>e.message??Pt(e.error);return(()=>{var s=Tt(),n=s.firstChild,a=n.nextSibling;return u(n,()=>e.title??"Something went wrong"),u(a,t),u(s,r(p,{get when(){return e.onRetry},get children(){var o=Rt();return xe(o,"click",e.onRetry,!0),o}}),null),s})()};U(["click"]);const It={error:6e3,success:4e3,warning:5e3};let Ot=0;const[Dt,fe]=x([]);function J(e,t,s){const n=Ot++,a=s??It[e];return fe(o=>[...o,{id:n,type:e,message:t,duration:a}]),n}function he(e){fe(t=>t.filter(s=>s.id!==e))}const $e={error:(e,t)=>J("error",e,t),success:(e,t)=>J("success",e,t),warning:(e,t)=>J("warning",e,t)},V="/api/v1";async function be(e,t){const s=new URL(`${V}${e}`,window.location.origin);if(t)for(const[a,o]of Object.entries(t))o&&s.searchParams.set(a,o);const n=await fetch(s.toString(),{credentials:"include",cache:"no-store"});if(n.status===401)throw window.location.pathname!=="/login"&&(window.location.href="/login"),new Error("Session expired");if(!n.ok){const a=await n.text().catch(()=>"");throw new Error(a||`API error: ${n.status} ${n.statusText}`)}return n.json()}async function Nt(e){try{const t=await e.json();if(typeof t.message=="string")return t.message;if(Array.isArray(t.message))return t.message.join(", ")}catch{}return`Request failed (${e.status})`}async function G(e,t){const s=await fetch(e,{credentials:"include",...t});if(!s.ok){const a=await Nt(s);throw $e.error(a),new Error(a)}const n=await s.text();if(n)return JSON.parse(n)}function ye(){return be("/agents")}function On(e){return be(`/agents/${encodeURIComponent(e)}/key`)}function Dn(e){return G(`${V}/agents/${encodeURIComponent(e)}/rotate-key`,{method:"POST"})}function Nn(e,t){return G(`${V}/agents/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})}function Un(e){return G(`${V}/agents/${encodeURIComponent(e)}`,{method:"DELETE"})}function Ut(e){return G(`${V}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})}const re=new Set;function Vt(e){re.add(e)}function Ft(e){return re.has(e)}function jt(e){re.delete(e)}function Bt(e){if(e>=1e6){const t=e/1e6;return`${t%1===0?t.toFixed(0):t.toFixed(1)}M`}if(e>=1e3){const t=e/1e3;return`${t%1===0?t.toFixed(0):t.toFixed(1)}k`}return e.toString()}function Ht(e){return e<0?null:e>0&&e<.01?"< $0.01":`$${e.toFixed(2)}`}function Vn(e){const t=e.replace(" ","T"),s=new Date(t.endsWith("Z")?t:t+"Z"),n=s.toLocaleDateString("en-US",{month:"short",day:"numeric"}),a=s.toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});return`${n}, ${a}`}const Gt={ok:"Success",retry:"Retried",error:"Failed",rate_limited:"Rate Limited",fallback_error:"Handled"};function Fn(e){return Gt[e.toLowerCase()]??e}function jn(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function Bn(e){try{const t=JSON.parse(e),s=t?.error?.error??t?.error??t,n=s?.message??s?.msg;if(typeof n=="string"&&n.length>0){const a=s?.code??s?.status??s?.type??t?.error?.code;return a!=null?`${n} (${a})`:n}}catch{}return e}const _e=["#2430F0","#FF006E","#F0953A","#00CECB","#3b82f6","#942FFA","#E44B4D","#14b8a6","#ECBD23","#24BAF0"];function Hn(e){let t=0;for(let s=0;s<e.length;s++)t=t*31+e.charCodeAt(s)|0;return _e[Math.abs(t)%_e.length]}var Kt=g("<svg preserveAspectRatio=none aria-hidden=true style=display:block>"),qt=g("<svg><defs><linearGradient x1=0 y1=0 x2=0 y2=1><stop offset=0% stop-opacity=0.15></stop><stop offset=100% stop-opacity=0></svg>",!1,!0,!1),zt=g("<svg><path></svg>",!1,!0,!1),Wt=g("<svg><path fill=none stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></svg>",!1,!0,!1);let Jt=0;const Yt=e=>{const t=`spark-grad-${Jt++}`,s=()=>e.width??200,n=()=>e.height??50,a=()=>e.color??"hsl(178, 75%, 44%)",o=()=>{const d=e.data;if(!d.length)return null;const c=Math.max(...d,1),l=s()/Math.max(d.length-1,1),i=2,h=n()-i*2,_=d.map((y,f)=>({x:Math.round(f*l*10)/10,y:Math.round((i+h-y/c*h)*10)/10})),m=_.map((y,f)=>f===0?`M${y.x},${y.y}`:`L${y.x},${y.y}`).join(" "),$=_[_.length-1],k=`${m} L${$.x},${n()} L0,${n()} Z`;return{line:m,area:k}};return(()=>{var d=Kt();return u(d,(()=>{var c=N(()=>!!o());return()=>c()&&[(()=>{var l=qt(),i=l.firstChild,h=i.firstChild,_=h.nextSibling;return S(i,"id",t),M(m=>{var $=a(),k=a();return $!==m.e&&S(h,"stop-color",m.e=$),k!==m.t&&S(_,"stop-color",m.t=k),m},{e:void 0,t:void 0}),l})(),(()=>{var l=zt();return S(l,"fill",`url(#${t})`),M(()=>S(l,"d",o().area)),l})(),(()=>{var l=Wt();return M(i=>{var h=o().line,_=a();return h!==i.e&&S(l,"d",i.e=h),_!==i.t&&S(l,"stroke",i.t=_),i},{e:void 0,t:void 0}),l})()]})()),M(c=>{var l=s(),i=n(),h=`0 0 ${s()} ${n()}`;return l!==c.e&&S(d,"width",c.e=l),i!==c.t&&S(d,"height",c.t=i),h!==c.a&&S(d,"viewBox",c.a=h),c},{e:void 0,t:void 0,a:void 0}),d})()};var Zt=g('<div class=modal-overlay><div class=modal-card role=dialog aria-modal=true aria-labelledby=add-agent-title><h2 class=modal-card__title id=add-agent-title>Connect Agent</h2><p class=modal-card__desc>Name your agent to start tracking its LLM usage, costs, and messages in real time.</p><label class=modal-card__field-label for=agent-name-input>Agent name</label><input id=agent-name-input class=modal-card__input type=text placeholder="e.g. My Cool Agent"><div class=modal-card__footer><button class="btn btn--primary btn--sm">'),Xt=g("<span class=spinner>"),me=g("<div class=agents-grid>"),Qt=g('<div class=container--md><div class=page-header><div><h1>My Agents</h1><span class=breadcrumb>View and manage all your connected AI agents</span></div><button class="btn btn--primary btn--sm"><svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><line x1=12 y1=5 x2=12 y2=19></line><line x1=5 y1=12 x2=19 y2=12></line></svg>Connect Agent'),en=g('<div class="agent-card agent-card--skeleton"><div class="skeleton skeleton--text"style=width:60%;height:20px></div><div style=display:flex;gap:16px;margin-top:12px><div class="skeleton skeleton--text"style=width:30%;height:14px></div><div class="skeleton skeleton--text"style=width:30%;height:14px></div></div><div class="skeleton skeleton--rect"style=width:100%;height:50px;margin-top:12px>'),tn=g('<div class=empty-state><div class=empty-state__title>No agents yet</div><p>Create an agent to see its LLM calls, tokens, and costs.</p><button class="btn btn--primary btn--sm"style=margin-top:var(--gap-md)>Connect your first agent'),nn=g("<div class=agent-card__top><span class=agent-card__name>"),rn=g("<div class=agent-card__stats><div class=agent-card__stat><span class=agent-card__stat-label>Total tokens</span><span class=agent-card__stat-value></span></div><div class=agent-card__stat><span class=agent-card__stat-label>Messages</span><span class=agent-card__stat-value></span></div><div class=agent-card__stat><span class=agent-card__stat-label>Total cost</span><span class=agent-card__stat-value>"),sn=g("<div class=agent-card__chart>");const an=e=>{const t=B(),[s,n]=x(""),[a,o]=x(!1),d=async()=>{const l=s().trim();if(l){o(!0);try{const i=await Ut(l);$e.success(`Agent "${l}" connected`),e.onClose(),n("");const h=i?.agent?.name??l;Vt(h);const _=`/agents/${encodeURIComponent(h)}`;t(_,{state:{newApiKey:i?.apiKey}})}catch{}finally{o(!1)}}},c=l=>{l.key==="Enter"&&d(),l.key==="Escape"&&(e.onClose(),n(""))};return r(p,{get when(){return e.open},get children(){var l=Zt(),i=l.firstChild,h=i.firstChild,_=h.nextSibling,m=_.nextSibling,$=m.nextSibling,k=$.nextSibling,y=k.firstChild;return l.$$click=()=>{e.onClose(),n("")},i.$$click=f=>f.stopPropagation(),$.$$keydown=c,$.$$input=f=>n(f.currentTarget.value),Ae(f=>requestAnimationFrame(()=>f.focus()),$),y.$$click=d,u(y,(()=>{var f=N(()=>!!a());return()=>f()?Xt():"Create"})()),M(f=>{var I=a(),v=!s().trim()||a();return I!==f.e&&($.disabled=f.e=I),v!==f.t&&(y.disabled=f.t=v),f},{e:void 0,t:void 0}),M(()=>$.value=s()),l}})},on=()=>{const[e,{refetch:t}]=Y(()=>({_ping:ft()}),()=>ye()),[s,n]=x(!1);return(()=>{var a=Qt(),o=a.firstChild,d=o.firstChild,c=d.nextSibling;return u(a,r(te,{children:"My Agents - Manifest"}),o),u(a,r(Se,{name:"description",content:"View and manage all your AI agents. Monitor usage, messages, and costs."}),o),c.$$click=()=>n(!0),u(a,r(p,{get when(){return!e.loading},get fallback(){return(()=>{var l=me();return u(l,r(Z,{each:[1,2,3,4,5,6],children:()=>en()})),l})()},get children(){return r(p,{get when(){return!e.error},get fallback(){return r(ve,{get error(){return e.error},onRetry:t})},get children(){return r(p,{get when(){return e()?.agents?.length},get fallback(){return(()=>{var l=tn(),i=l.firstChild,h=i.nextSibling,_=h.nextSibling;return _.$$click=()=>n(!0),l})()},get children(){var l=me();return u(l,r(Z,{get each(){return e().agents},children:i=>r(C,{get href(){return`/agents/${encodeURIComponent(i.agent_name)}`},class:"agent-card",get children(){return[(()=>{var h=nn(),_=h.firstChild;return u(_,()=>i.display_name??i.agent_name),h})(),(()=>{var h=rn(),_=h.firstChild,m=_.firstChild,$=m.nextSibling,k=_.nextSibling,y=k.firstChild,f=y.nextSibling,I=k.nextSibling,v=I.firstChild,L=v.nextSibling;return u($,()=>Bt(i.total_tokens)),u(f,()=>i.message_count),u(L,()=>Ht(i.total_cost)??"$0.00"),h})(),(()=>{var h=sn();return u(h,r(Yt,{get data(){return i.sparkline},width:280,height:50})),h})()]}})})),l}})}})}}),null),u(a,r(an,{get open(){return s()},onClose:()=>n(!1)}),null),a})()};U(["click","input","keydown"]);var ln=g('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="m15 18-6-6 6-6">'),cn=g("<div class=not-found><span class=not-found__code>404</span><h1 class=not-found__title>Page not found</h1><p class=not-found__text>The page you're looking for doesn't exist or has been moved.");const we=()=>[r(te,{children:"Page Not Found - Manifest"}),(()=>{var e=cn(),t=e.firstChild,s=t.nextSibling;return s.nextSibling,u(e,r(C,{href:"/",class:"not-found__link",get children(){return[ln(),"Back to dashboard"]}}),null),e})()],dn=e=>{const t=Ee(),[s]=Y(()=>ne()),[n,{refetch:a}]=Y(()=>s()!==void 0,()=>ye()),o=Le(()=>{const d=decodeURIComponent(t.agentName),c=Ft(d),l=n()?.agents;if(!l)return!0;const i=l.find(h=>h.agent_name===d);return i&&(jt(i.agent_name),oe(i.display_name??i.agent_name)),c||!!i});return H(()=>oe(null)),r(p,{get when(){return s()!==void 0},fallback:null,get children(){return r(p,{get when(){return!n.loading},fallback:null,get children(){return r(p,{get when(){return!n.error},get fallback(){return r(ve,{get error(){return n.error},onRetry:a})},get children(){return r(p,{get when(){return n()?.agents},get children(){return r(p,{get when(){return o()},get fallback(){return r(we,{})},get children(){return e.children}})}})}})}})}})},un=e=>{const t=F.useSession(),s=B();return ee(()=>{const n=t();!n.isPending&&n.data&&s("/",{replace:!0})}),r(p,{get when(){return N(()=>!t().isPending)()&&!t().data},fallback:null,get children(){return e.children}})};var gn=g('<div role=alert aria-live=assertive><svg class=toast__icon width=18 height=18 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true></svg><span class=toast__message></span><button class=toast__dismiss aria-label="Dismiss notification"><svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><line x1=18 y1=6 x2=6 y2=18></line><line x1=6 y1=6 x2=18 y2=18>'),hn=g('<div class=toast-container aria-live=polite aria-relevant="additions removals">');const _n={error:'<circle cx="12" cy="12" r="10"/><line x1="15" y1="9" x2="9" y2="15"/><line x1="9" y1="9" x2="15" y2="15"/>',success:'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>',warning:'<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/>'},mn=e=>{let t;return Q(()=>{t=setTimeout(()=>he(e.toast.id),e.toast.duration)}),H(()=>clearTimeout(t)),(()=>{var s=gn(),n=s.firstChild,a=n.nextSibling,o=a.nextSibling;return u(a,()=>e.toast.message),o.$$click=()=>he(e.toast.id),M(d=>{var c=`toast toast--${e.toast.type}`,l=_n[e.toast.type];return c!==d.e&&Me(s,d.e=c),l!==d.t&&(n.innerHTML=d.t=l),d},{e:void 0,t:void 0}),s})()},pn=()=>(()=>{var e=hn();return u(e,r(Z,{get each(){return Dt()},children:t=>r(mn,{toast:t})})),e})();U(["click"]);const vn=A(()=>E(()=>import("./Overview-Bi9FuoLx.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]))),fn=A(()=>E(()=>import("./MessageLog-DoriYlHo.js"),__vite__mapDeps([14,1,8,6,5,7,9,10,11,15,12,13]))),$n=A(()=>E(()=>import("./Settings-BH-xNoID.js"),__vite__mapDeps([16,1,10,9,12,13]))),bn=A(()=>E(()=>import("./Routing-B-On2pvv.js"),__vite__mapDeps([17,1,6,12,10,18,7,13]))),yn=A(()=>E(()=>import("./Limits-Xgc4xTl5.js"),__vite__mapDeps([19,1,18,12,13]))),wn=A(()=>E(()=>import("./Account-C5g6WhPe.js"),__vite__mapDeps([20,1,13]))),kn=A(()=>E(()=>import("./Login-DMXD4PMZ.js"),__vite__mapDeps([21,1,22,13]))),Cn=A(()=>E(()=>import("./Register-CrovWG_d.js"),__vite__mapDeps([23,1,22,13]))),xn=A(()=>E(()=>import("./ResetPassword-C6B1ubhL.js"),__vite__mapDeps([24,1,13]))),Sn=A(()=>E(()=>import("./ModelPrices-MhBT_7Zb.js"),__vite__mapDeps([25,1,5,6,15,13]))),An=A(()=>E(()=>import("./Help-ifWIlcDo.js"),__vite__mapDeps([26,1]))),En=A(()=>E(()=>import("./FreeModels-D14GhDL_.js"),__vite__mapDeps([27,1,13]))),Ln=A(()=>E(()=>import("./ConnectProvider-axzk92LC.js"),__vite__mapDeps([28,1,13]))),Mn=A(()=>E(()=>import("./ProviderTokens-Cu2RUqQG.js"),__vite__mapDeps([29,1,2,3,4,13]))),Rn=e=>r(un,{get children(){return r(Mt,{get children(){return e.children}})}});document.head.querySelector("title")?.remove();const ke=document.getElementById("root");if(!ke)throw new Error("Root element not found");Re(()=>r(Pe,{get children(){return[r(te,{children:"Manifest"}),r(pn,{}),r(Te,{get children(){return[r(b,{path:"/",component:Et,get children(){return[r(b,{path:"/",component:on}),r(b,{path:"/agents/:agentName",component:dn,get children(){return[r(b,{path:"/",component:vn}),r(b,{path:"/messages",component:fn}),r(b,{path:"/settings/*",component:$n}),r(b,{path:"/routing",component:bn}),r(b,{path:"/limits",component:yn}),r(b,{path:"/model-prices",component:Sn}),r(b,{path:"/free-models",component:En}),r(b,{path:"/provider-tokens",component:Mn}),r(b,{path:"/help",component:An})]}}),r(b,{path:"/connect-provider",component:Ln}),r(b,{path:"/account",component:wn})]}}),r(b,{path:"/",component:Rn,get children(){return[r(b,{path:"/login",component:kn}),r(b,{path:"/register",component:Cn}),r(b,{path:"/reset-password",component:xn})]}}),r(b,{path:"*404",component:we})]}})]}}),ke);export{V as B,ve as E,Bt as a,ze as b,Hn as c,D as d,be as e,Ht as f,jn as g,Vn as h,Ft as i,Fn as j,Bn as k,On as l,Un as m,Vt as n,Dn as o,ft as p,G as q,Nn as r,F as s,$e as t,ne as u,Ge as v,In as w,ye as x,Ut as y};