UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 925 B
import{detectProjectIdentity}from"#setup/project-resolution.js";import{resolveModelTeamSlug}from"#internal/model-auth/vercel-team.js";function createVercelStatusTracker(e){let t=e.detectIdentity??detectProjectIdentity,n,r,i=0,a=!1,o,snapshot=()=>{let e={};return n!==void 0&&(e.identity=n),r!==void 0&&(e.modelTeamSlug=r),e},emit=()=>{a||e.onChange(snapshot())},refreshIdentity=()=>{if(a)return;o?.abort();let s=new AbortController;o=s,i+=1;let c=i;(async()=>{let l,u;try{[l,u]=await Promise.all([t(e.appRoot,{signal:s.signal}),(e.resolveTeamSlug??resolveModelTeamSlug)(s.signal).catch(()=>void 0)])}catch{return}finally{o===s&&(o=void 0)}a||c!==i||(n=l,r=u,emit())})()};return{refreshIdentity,applyEffect(e){if(!a)switch(e.kind){case`deployed`:emit(),refreshIdentity();return;case`refresh-identity`:refreshIdentity();return}},current:snapshot,dispose(){a||(a=!0,i+=1,o?.abort(),o=void 0)}}}export{createVercelStatusTracker};