eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 5.43 kB
JavaScript
import{r as e}from"./rolldown-runtime-DPpTSio4.js";import{W as t,c as n,o as r}from"./dist-DDeH-1ER.js";import{At as i,Dt as a,Gn as o,Mn as s,Tr as c,Tt as l,fr as u,ft as d,gt as f,ir as p,j as m,jr as h,kt as g,mr as _,n as v,r as y,rr as b,s as x,tr as S,tt as C,w,wt as T,z as E}from"./attribute-changes-C6H-fRVP.js";import{d as D,k as O,n as k,o as A}from"./dist-xTushGCp.js";var j=e({getHookByToken:()=>U,resumeHook:()=>W,resumeWebhook:()=>K});const M=r();async function N(e){let t=await crypto.subtle.digest(`SHA-256`,e),n=new Uint8Array(t),r=``;for(let e of n)r+=e.toString(16).padStart(2,`0`);return r}const P=[25,100];function F(e,t){if(t?.(e))return!1;let n=e??{},r=n.status??n.statusCode;if(typeof r==`number`)return r>=500||r===408||r===429;let i=e?.name;return i!==`BadRequestError`&&i!==`UnauthorizedError`&&i!==`ForbiddenError`}async function I(e,t){let n;for(let r=0;r<=P.length;r++)try{await e();return}catch(e){if(n=e,!F(e,t))break;let i=P[r];i!==void 0&&await new Promise(e=>setTimeout(e,i))}throw A.is(n)?new O(`The hook resume was committed, but its workflow wake could not be published`,{cause:n}):n}function L(e){let t=e.executionContext?.workflowCoreVersion,n=e.executionContext?.traceCarrier,r=e.executionContext?.hookResumeInputVersion;return{deploymentId:e.deploymentId,workflowName:e.workflowName,runSpecVersion:e.specVersion,workflowCoreVersion:typeof t==`string`?t:void 0,traceCarrier:n&&typeof n==`object`?n:void 0,encryptionPublicKey:e.encryptionPublicKey,hookResumeInputVersion:typeof r==`number`?r:void 0}}async function R(e){if(e.resumeContext)return{resumeContext:e.resumeContext,source:`hook`};let t=await(await _()).runs.get(e.runId);return{resumeContext:L(t),source:`run_fallback`,run:t}}async function z(e,t){let n=await _(),r=t.run?await n.getEncryptionKeyForRun?.(t.run):await n.getEncryptionKeyForRun?.(e.runId,{deploymentId:t.resumeContext.deploymentId});return r?await h(r):void 0}function B(e){let t=Object.getOwnPropertyDescriptor(e,`metadata`);return t!==void 0&&typeof t.get==`function`}function V(e){let t=e.metadata,n,r,i=async()=>{let n=await _(),i=await R(e),a=i.run?await n.getEncryptionKeyForRun?.(i.run):await n.getEncryptionKeyForRun?.(e.runId,{deploymentId:i.resumeContext.deploymentId});return r=a?await S(a):void 0,await E(t,e.runId,r)},a=e;return Object.defineProperty(a,"metadata",{get:()=>n??=t===void 0?Promise.resolve(void 0):i(),enumerable:!1,configurable:!0}),{hook:a,metadataEncryptionKey:()=>r}}function H(e){return B(e)?e:V(e).hook}async function U(e){return V(await(await _()).hooks.getByToken(e)).hook}async function W(e,t,n){return G(e,t,n,!1,Date.now())}async function G(e,r,c,h,S){return await y(()=>f(`hook.resume`,async f=>{let y=await _();try{let _=typeof e==`string`,T=_?await y.hooks.getByToken(e):e,E=_||h,O=await R(T),{resumeContext:k}=O;if(f?.setAttributes({...g(T.token),...l(T.hookId),...o(T.runId),"workflow.hook.resume_context_source":O.source}),O.run&&t(O.run.status))throw new A(T.token);let j=w(k.workflowCoreVersion),P,F=c?void 0:u(k.encryptionPublicKey);if(F)P=b(F);else{let e=c??await z(T,O);j.supportedFormats.has(p.ENCRYPTED)||(e=void 0),P=e}let L=(k.runSpecVersion??0)>=5&&j.supportedFormats.has(p.GZIP),B=[],V=[],U=n(T.specVersion),W=await m(r,T.runId,P,B,globalThis,U,j.framedByteStreams,L,void 0,V);await Promise.all(B.map(e=>e.catch(e=>{if(e!==void 0)throw e}))),v(Promise.all(V),e=>{e!==void 0&&C.warn(`Background readback of hook payload failed`,{workflowRunId:T.runId,hookId:T.hookId,error:e instanceof Error?e.message:String(e)})}),f?.setAttributes({...s(k.workflowName)});let G=await d(k.traceCarrier);G&&f?.addLink?.(G);let K=x(k.workflowName),q={deploymentId:k.deploymentId,specVersion:k.runSpecVersion??1},J=((E?T.resumeCapabilities?.hookResumeDedupVersion??0:0)>=1||y.capabilities?.hookResumeDedup===!0)&&!U&&W instanceof Uint8Array;f?.setAttributes({"workflow.hook.resume_strategy":`sequential`});let Y=J?M():void 0,X=J?await N(W):void 0;Y&&f?.setAttributes({"workflow.hook.resume_id":Y});let Z=e=>A.is(e)||D.is(e);try{await y.events.create(T.runId,{eventType:`hook_received`,specVersion:7,correlationId:T.hookId,eventData:{...U?{}:{token:T.token},payload:W}},{v1Compat:U,...Y&&X?{resumeId:Y,resumePayloadDigest:X}:{}})}catch(e){throw Z(e)?new A(T.token):e}f?.setAttributes(a(!0));let Q=Date.now();return await I(()=>y.queue(K,{runId:T.runId,traceCarrier:k.traceCarrier??void 0,hookResumeTiming:{resumeRequestedAtMs:S,queuePublishRequestedAtMs:Q,strategy:`sequential`}},{...q,...Y?{idempotencyKey:`hook-${Y}`}:{}}),y.isDeploymentUnavailableError?.bind(y)),f?.setAttributes(i(!0)),H(T)}catch(t){throw f?.setAttributes({...g(typeof e==`string`?e:e.token),...T(!1)}),t}}))}async function K(e,t){let n=Date.now(),{hook:r,metadataEncryptionKey:i}=V(await(await _()).hooks.getByToken(e));if(r.isWebhook===!1)throw new A(e);let a=await r.metadata,o,s;if(a&&typeof a==`object`&&`respondWith`in a){if(a.respondWith===`manual`){let{readable:e,writable:n}=new TransformStream;s=e,t[c]=n}else if(a.respondWith instanceof Response)o=a.respondWith;else throw new O(`Invalid \`respondWith\` value: ${a.respondWith}`,{slug:k.WEBHOOK_INVALID_RESPOND_WITH_VALUE})}else o=new Response(null,{status:202});if(await G(r,t,i(),!0,n),s){let e=s.getReader(),t=await e.read();t.value&&(o=t.value),e.cancel()}if(!o)throw new O(`Workflow run did not send a response`,{slug:k.WEBHOOK_RESPONSE_NOT_SENT});return o}export{j as i,W as n,K as r,U as t};