UNPKG

eve

Version:

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

1 lines 1.52 kB
import{createLogger,logError}from"#internal/logging.js";import{getChannelActivityPresentation}from"#channel/activity-renderer.js";import{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{deserializeContext}from"#context/serialize.js";const log=createLogger(`execution.session-activity-renderer`);async function renderSessionActivityStep(e){"use step";let{adapter:t,destination:n,presentation:r}=await resolveActivityPresentation(e.serializedContext),i={...e.rendererStates};for(let a of r.renderers)for(let r=0;r<2;r+=1)try{i[a.id]=await a.render({destination:n,snapshot:e.snapshot,state:i[a.id]});break}catch(n){logError(log,`activity renderer failed`,n,{adapterKind:t.kind,attempt:r+1,rendererId:a.id,revision:e.snapshot.revision}),r===0&&await new Promise(e=>setTimeout(e,250))}return{rendererStates:i}}async function disposeSessionActivityStep(e){"use step";let{adapter:t,destination:n,presentation:r}=await resolveActivityPresentation(e.serializedContext);for(let i of r.renderers)if(i.dispose!==void 0)try{await i.dispose({destination:n,state:e.rendererStates[i.id]})}catch(e){logError(log,`activity renderer disposal failed`,e,{adapterKind:t.kind,rendererId:i.id})}}async function resolveActivityPresentation(e){let t=(await deserializeContext(e)).require(ChannelKey),n=getChannelActivityPresentation(t);if(n===void 0)throw Error(`Channel has no activity presentation.`);return{adapter:t,destination:n.destination(t.state),presentation:n}}export{disposeSessionActivityStep,renderSessionActivityStep};