eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 3.17 kB
JavaScript
import{EVE_MESSAGE_STREAM_VERSION}from"#protocol/message.js";const currentMessageStreamVersion=EVE_MESSAGE_STREAM_VERSION;function normalizeMessageStreamEvent(e,t){switch(e){case`21`:case`22`:case`23`:case`24`:return normalizeLegacyMessageStreamEvent(e,t);case`25`:return validateCurrentMessageStreamEvent(t);default:return assertNever(e)}}function normalizePersistedMessageStreamEvent(e){return e.type===`message.appended`&&`messageSoFar`in e.data||e.type===`reasoning.appended`&&`reasoningSoFar`in e.data||e.type===`action.input.appended`&&`inputTextOffset`in e.data?normalizeLegacyMessageStreamEvent(void 0,e):normalizeMessageStreamEvent(currentMessageStreamVersion,e)}function normalizeLegacyMessageStreamEvent(e,t){if(t.type===`message.appended`)return assertLegacyAppendSnapshot(t.data.messageSoFar,t.data.messageDelta,`message`,e),{data:{messageDelta:t.data.messageDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,turnId:t.data.turnId},meta:t.meta,type:`message.appended`};if(t.type===`reasoning.appended`)return assertLegacyAppendSnapshot(t.data.reasoningSoFar,t.data.reasoningDelta,`reasoning`,e),{data:{reasoningDelta:t.data.reasoningDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,turnId:t.data.turnId},meta:t.meta,type:`reasoning.appended`};if(t.type===`action.input.appended`){if(e!==void 0&&e!==`24`)throw TypeError(`Invalid action input append for stream version ${e}.`);return assertLegacyActionInputOffset(t.data.inputTextOffset,e),{data:{callId:t.data.callId,inputTextDelta:t.data.inputTextDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,toolName:t.data.toolName,turnId:t.data.turnId},meta:t.meta,type:`action.input.appended`}}return t}function validateCurrentMessageStreamEvent(e){return e.type===`message.appended`?(assertCurrentAppendDelta(e.data.messageDelta,`message`),assertUnsupportedAppendField(e.data,`messageOffset`,`message`),assertUnsupportedAppendField(e.data,`messageSoFar`,`message`)):e.type===`reasoning.appended`?(assertCurrentAppendDelta(e.data.reasoningDelta,`reasoning`),assertUnsupportedAppendField(e.data,`reasoningOffset`,`reasoning`),assertUnsupportedAppendField(e.data,`reasoningSoFar`,`reasoning`)):e.type===`action.input.appended`&&(assertCurrentAppendDelta(e.data.inputTextDelta,`action input`),assertUnsupportedAppendField(e.data,`inputTextOffset`,`action input`)),e}function assertCurrentAppendDelta(e,t){if(typeof e!=`string`)throw TypeError(`Invalid ${t} append delta for stream version 25.`)}function assertUnsupportedAppendField(e,t,n){if(t in e)throw TypeError(`Invalid ${n} append shape for stream version 25.`)}function assertNever(e){throw TypeError(`Unsupported message stream version: ${String(e)}.`)}function assertLegacyActionInputOffset(e,t){if(!Number.isSafeInteger(e)||e<0){let e=t===void 0?`persisted stream`:`stream version ${t}`;throw TypeError(`Invalid action input append offset for ${e}.`)}}function assertLegacyAppendSnapshot(e,t,n,r){let i=e.length-t.length;if(i<0||e.slice(i)!==t){let e=r===void 0?`persisted stream`:`stream version ${r}`;throw TypeError(`Invalid cumulative ${n} append for ${e}.`)}}export{normalizeMessageStreamEvent,normalizePersistedMessageStreamEvent};