eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 906 B
JavaScript
import{AgentInfoResponseError,ClientError}from"#client/index.js";function isRetryableAgentInfoFailure(e){return e instanceof AgentInfoResponseError?!1:e instanceof ClientError?e.status>=500:e instanceof TypeError}function sleep(e){return new Promise(t=>setTimeout(t,e))}async function probeAgentInfo(e){let t=new AbortController,n,r=new Promise(r=>{n=setTimeout(()=>{let e=Error(`Agent inspection timed out.`);t.abort(e),r({kind:`unavailable`,error:e})},e.timeoutMs??5e3)});try{return await Promise.race([readAgentInfo(e.client,t.signal),r])}finally{clearTimeout(n)}}async function readAgentInfo(e,t){try{return{kind:`ready`,info:await e.info({signal:t})}}catch(e){if(t.aborted||!isRetryableAgentInfoFailure(e))return{kind:`unavailable`,error:e}}await sleep(100);try{return t.throwIfAborted(),{kind:`ready`,info:await e.info({signal:t})}}catch(e){return{kind:`unavailable`,error:e}}}export{probeAgentInfo};