eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 3.02 kB
JavaScript
import{createEveSessionCancelRoutePath,createEveSessionClearRoutePath,createEveSessionCompactRoutePath,createEveSessionResetRoutePath}from"#protocol/routes.js";import{ClientError}from"#client/client-error.js";import{createClientUrl}from"#client/url.js";import{CancelTurnResponseSchema}from"#protocol/cancel-turn.js";import{ClearResponseSchema}from"#protocol/clear-session.js";import{CompactResponseSchema}from"#protocol/compact-session.js";import{ResetResponseSchema}from"#protocol/reset-session.js";async function cancelClientSession(e){let{signal:t,...n}=e.options??{},{payload:r,response:i}=await postJson({body:n,context:e.context,operation:`Cancel`,path:createEveSessionCancelRoutePath(e.sessionId),signal:t}),a=CancelTurnResponseSchema.safeParse(r);if(!a.success||a.data.status===`accepted`&&a.data.sessionId!==e.sessionId)throw Error(`Cancel route returned an invalid response (${i.status}).`);return a.data.status===`accepted`?{sessionId:a.data.sessionId,status:`accepted`}:{status:`no_active_turn`}}async function clearClientSession(e){let{payload:t}=await postJson({context:e.context,operation:`Clear`,path:createEveSessionClearRoutePath(e.sessionId)}),n=ClearResponseSchema.safeParse(t);if(!n.success||n.data.status===`accepted`&&n.data.sessionId!==e.sessionId)throw Error(`Clear route returned an invalid response.`);return n.data.status===`accepted`?{sessionId:n.data.sessionId,status:`accepted`}:{status:`no_active_session`}}async function compactClientSession(e){let{payload:t}=await postJson({context:e.context,operation:`Compact`,path:createEveSessionCompactRoutePath(e.sessionId)}),n=CompactResponseSchema.safeParse(t);if(!n.success||n.data.status===`accepted`&&n.data.sessionId!==e.sessionId)throw Error(`Compact route returned an invalid response.`);return n.data.status===`accepted`?{sessionId:n.data.sessionId,status:`accepted`}:{status:`no_active_session`}}async function resetClientSession(e){let{signal:t,...n}=e.options??{},{payload:r}=await postJson({body:n,context:e.context,operation:`Reset`,path:createEveSessionResetRoutePath(e.sessionId),signal:t}),i=ResetResponseSchema.safeParse(r);if(!i.success||i.data.status===`reset`&&i.data.previousSessionId!==e.sessionId)throw Error(`Reset route returned an invalid response.`);return i.data.status===`reset`?{previousSessionId:i.data.previousSessionId,status:`reset`}:{status:`no_active_session`}}async function postJson(e){let t=await e.context.resolveHeaders();t.set(`content-type`,`application/json`);let n=await fetch(createClientUrl(e.context.host,e.path),withRedirectPolicy({body:e.body===void 0?void 0:JSON.stringify(e.body),headers:t,method:`POST`,signal:e.signal},e.context.redirect)),r=await n.text();if(!n.ok)throw new ClientError(n.status,r,n.headers);try{return{payload:JSON.parse(r),response:n}}catch{throw Error(`${e.operation} route returned invalid JSON (${n.status}).`)}}function withRedirectPolicy(e,t){return t===void 0?e:{...e,redirect:t}}export{cancelClientSession,clearClientSession,compactClientSession,resetClientSession};