eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 739 B
JavaScript
function append(e,t){let n=latestStreamingRun(e,t.type,t.stepIndex);return upsert(e,{state:`streaming`,stepIndex:t.stepIndex,text:(n?.text??``)+t.delta,type:t.type})}function latestStreamingRun(e,t,n){for(let r=e.parts.length-1;r>=0;--r){let i=e.parts[r];if(i?.type===t&&i.stepIndex===n)return i.state===`streaming`?i:void 0}}function upsert(e,t){let n=-1;for(let r=e.parts.length-1;r>=0;--r){let i=e.parts[r];if(i?.type===t.type&&i.stepIndex===t.stepIndex){n=r;break}}let r=n!==-1&&e.parts[n].state===`streaming`?[...e.parts.slice(0,n),t,...e.parts.slice(n+1)]:[...e.parts,t];return{...e,metadata:{...e.metadata,status:t.type===`text`&&t.state===`done`?`complete`:`streaming`},parts:r}}const messageRun={append,upsert};export{messageRun};