@jagreehal/workflow 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +499 -19
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +158 -19
- package/dist/core.d.ts +158 -19
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +282 -17
- package/dist/index.d.ts +282 -17
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/visualize.cjs +1188 -6
- package/dist/visualize.cjs.map +1 -1
- package/dist/visualize.d.cts +467 -1
- package/dist/visualize.d.ts +467 -1
- package/dist/visualize.js +1188 -6
- package/dist/visualize.js.map +1 -1
- package/dist/workflow.cjs +1 -1
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +97 -15
- package/dist/workflow.d.ts +97 -15
- package/dist/workflow.js +1 -1
- package/dist/workflow.js.map +1 -1
- package/docs/advanced.md +425 -7
- package/docs/api.md +37 -6
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var We=Object.defineProperty;var kr=Object.getOwnPropertyDescriptor;var Tr=Object.getOwnPropertyNames;var Sr=Object.prototype.hasOwnProperty;var hr=(e,t)=>{for(var n in t)We(e,n,{get:t[n],enumerable:!0})},Rr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Tr(t))!Sr.call(e,o)&&o!==n&&We(e,o,{get:()=>t[o],enumerable:!(r=kr(t,o))||r.enumerable});return e};var vr=e=>Rr(We({},"__esModule",{value:!0}),e);var Zr={};hr(Zr,{CircuitOpenError:()=>oe,STEP_TIMEOUT_MARKER:()=>J,UnwrapError:()=>se,all:()=>_t,allAsync:()=>Nt,allSettled:()=>Wt,allSettledAsync:()=>Vt,andThen:()=>xt,any:()=>Ut,anyAsync:()=>Ft,bimap:()=>Ot,circuitBreakerPresets:()=>tn,clearStep:()=>qt,compareSnapshots:()=>dr,composeMigrations:()=>En,composeValidators:()=>Pn,conditionalPolicy:()=>$n,createApprovalChecker:()=>ar,createApprovalStep:()=>Ht,createApprovalWebhookHandler:()=>ir,createAutotelAdapter:()=>kn,createAutotelEventHandler:()=>Tn,createCircuitBreaker:()=>en,createCombinedLimiter:()=>an,createConcurrencyLimiter:()=>qe,createConditionalHelpers:()=>Yt,createConsoleLogger:()=>nr,createDevtools:()=>ut,createEventHandler:()=>An,createExpressHandler:()=>Cn,createFileCache:()=>Vn,createHITLCollector:()=>ie,createHITLOrchestrator:()=>sr,createHydratingCache:()=>jn,createKVCache:()=>Bn,createKeyRemoveMigration:()=>wn,createKeyRenameMigration:()=>yn,createMemoryApprovalStore:()=>rr,createMemoryCache:()=>Fn,createMemoryWorkflowStateStore:()=>or,createMockFn:()=>pr,createPolicyApplier:()=>On,createPolicyBundle:()=>Dn,createPolicyRegistry:()=>Nn,createRateLimiter:()=>He,createResultMapper:()=>xn,createSagaWorkflow:()=>rn,createSimpleHandler:()=>vn,createSnapshot:()=>lr,createStatePersistence:()=>Kn,createStepCollector:()=>Bt,createTestClock:()=>fr,createValueTransformMigration:()=>gn,createVersionedState:()=>dn,createVersionedStateLoader:()=>ln,createWebhookHandler:()=>Rn,createWorkflow:()=>Kt,createWorkflowHarness:()=>cr,defaultUnexpectedErrorMapper:()=>ve,defaultValidationErrorMapper:()=>Re,deserializeCause:()=>ue,deserializeEntry:()=>nt,deserializeMeta:()=>et,deserializeResult:()=>pe,deserializeState:()=>Ce,envPolicy:()=>_n,err:()=>x,errOutcome:()=>yr,from:()=>Et,fromNullable:()=>St,fromPromise:()=>kt,getPendingApprovals:()=>Gt,getStepTimeoutMeta:()=>Ve,hasPendingApproval:()=>Jt,injectApproval:()=>Te,isApprovalRejected:()=>jt,isCircuitOpenError:()=>Zt,isErr:()=>dt,isMigrationError:()=>cn,isOk:()=>re,isPendingApproval:()=>H,isQueueFullError:()=>ze,isRateLimitExceededError:()=>sn,isSagaCompensationError:()=>nn,isStepComplete:()=>ke,isStepTimeoutError:()=>ge,isUnexpectedError:()=>Fe,isValidationError:()=>hn,isVersionIncompatibleError:()=>pn,map:()=>ht,mapError:()=>Rt,mapErrorTry:()=>At,mapTry:()=>Pt,match:()=>vt,mergePolicies:()=>U,migrateState:()=>Je,ok:()=>A,okOutcome:()=>mr,orElse:()=>Dt,orElseAsync:()=>Mt,parseState:()=>Un,parseVersionedState:()=>fn,partition:()=>Lt,pendingApproval:()=>zt,quickVisualize:()=>tr,rateLimiterPresets:()=>un,recover:()=>It,recoverAsync:()=>$t,renderDiff:()=>er,requireFields:()=>bn,retryPolicies:()=>Y,retryPolicy:()=>V,run:()=>X,runSaga:()=>on,sendWebhookResponse:()=>Xe,serializeCause:()=>ae,serializeEntry:()=>tt,serializeMeta:()=>Ze,serializeResult:()=>ce,serializeState:()=>xe,servicePolicies:()=>Mn,stepOptions:()=>Wn,stringifyState:()=>Ln,stringifyVersionedState:()=>mn,tap:()=>Ct,tapError:()=>bt,throwOutcome:()=>wr,timeoutPolicies:()=>Q,timeoutPolicy:()=>F,toWebhookRequest:()=>Ge,tryAsync:()=>Tt,unless:()=>Ke,unlessOr:()=>je,unwrap:()=>yt,unwrapOr:()=>wt,unwrapOrElse:()=>gt,validationError:()=>Qe,when:()=>Se,whenOr:()=>he,withAutotelTracing:()=>Sn,withPolicies:()=>In,withPolicy:()=>Ye});module.exports=vr(Zr);var A=e=>({ok:!0,value:e}),x=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),re=e=>e.ok,dt=e=>!e.ok,Fe=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",J=Symbol.for("step_timeout_marker");function ge(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:J in e}function Ve(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let t=e;return{timeoutMs:t.timeoutMs,stepName:t.stepName,stepKey:t.stepKey,attempt:t.attempt}}if(J in e)return e[J]}}var ft=Symbol("early-exit");function K(e,t){return{[ft]:!0,error:e,meta:t}}function j(e){return typeof e=="object"&&e!==null&&e[ft]===!0}var mt=Symbol("mapper-exception");function xr(e){return{[mt]:!0,thrown:e}}function Cr(e){return typeof e=="object"&&e!==null&&e[mt]===!0}function br(e){return typeof e=="string"?{name:e}:e??{}}function Le(e,t){let{backoff:n,initialDelay:r,maxDelay:o,jitter:s}=t,i;switch(n){case"fixed":i=r;break;case"linear":i=r*e;break;case"exponential":i=r*Math.pow(2,e-1);break}if(i=Math.min(i,o),s){let a=i*.25*Math.random();i=i+a}return Math.floor(i)}function Ue(e){return new Promise(t=>setTimeout(t,e))}var lt=Symbol("timeout");async function Pr(e,t,n){let r=new AbortController,o=t.error??{type:"STEP_TIMEOUT",stepName:n.name,stepKey:n.key,timeoutMs:t.ms,attempt:n.attempt},s,i=new Promise((l,u)=>{s=setTimeout(()=>{r.abort(),u({[lt]:!0,error:o})},t.ms)}),a;t.signal?a=Promise.resolve(e(r.signal)):a=Promise.resolve(e());try{return await Promise.race([a,i])}catch(l){if(typeof l=="object"&&l!==null&&l[lt]===!0){let u=l.error;if(typeof u=="object"&&u!==null&&u.type!=="STEP_TIMEOUT"){let p={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};J in u?u[J]=p:Object.defineProperty(u,J,{value:p,enumerable:!1,writable:!0,configurable:!1})}throw u}throw l}finally{clearTimeout(s)}}var ne={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function X(e,t){let{onError:n,onEvent:r,catchUnexpected:o,workflowId:s,context:i}=t&&typeof t=="object"?t:{},a=s??crypto.randomUUID(),l=!n&&!o,u=[],p=0,m=h=>h??`step_${++p}`,d=h=>{if(h.type==="step_success"){let D=h.stepId;for(let g=u.length-1;g>=0;g--){let T=u[g];if(T.type==="race"&&!T.winnerId){T.winnerId=D;break}}}r?.(h,i)},w=K,R=h=>j(h),v=(h,D)=>l?D?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:h,...D.resultCause!==void 0?{cause:D.resultCause}:{}}}:D?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:h,thrown:D.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:h}}:h,P=h=>h.origin==="result"?h.resultCause:h.thrown,O=h=>({type:"UNEXPECTED_ERROR",cause:h.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:h.error,...h.meta.resultCause!==void 0?{cause:h.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:h.error,thrown:h.meta.thrown}});try{let h=(T,k)=>(async()=>{let c=br(k),{name:y,key:f,retry:E,timeout:S}=c,C=m(f),I=r,$=I?performance.now():0;if(!(typeof T=="function")){if(E&&E.attempts>1)throw new Error("step: retry options require a function operation. Direct Promise/Result values cannot be re-executed on retry. Wrap your operation in a function: step(() => yourOperation, { retry: {...} })");if(S)throw new Error("step: timeout options require a function operation. Direct Promise/Result values cannot be wrapped with timeout after they've started. Wrap your operation in a function: step(() => yourOperation, { timeout: {...} })")}let W={attempts:Math.max(1,E?.attempts??1),backoff:E?.backoff??ne.backoff,initialDelay:E?.initialDelay??ne.initialDelay,maxDelay:E?.maxDelay??ne.maxDelay,jitter:E?.jitter??ne.jitter,retryOn:E?.retryOn??ne.retryOn,onRetry:E?.onRetry??ne.onRetry};r&&d({type:"step_start",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now()});let ct;for(let _=1;_<=W.attempts;_++){let Er=I?performance.now():0;try{let M;if(typeof T=="function"?S?M=await Pr(T,S,{name:y,key:f,attempt:_}):M=await T():M=await T,M.ok){let q=performance.now()-$;return d({type:"step_success",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:q}),f&&d({type:"step_complete",workflowId:a,stepKey:f,name:y,ts:Date.now(),durationMs:q,result:M}),M.value}if(ct=M,_<W.attempts&&W.retryOn(M.error,_)){let q=Le(_,W);d({type:"step_retry",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),attempt:_+1,maxAttempts:W.attempts,delayMs:q,error:M.error}),W.onRetry(M.error,_,q),await Ue(q);continue}W.attempts>1&&d({type:"step_retries_exhausted",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:performance.now()-$,attempts:_,lastError:M.error});break}catch(M){let q=performance.now()-Er;if(R(M))throw d({type:"step_aborted",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:q}),M;if(ge(M)){let L=Ve(M),_e=S?.ms??L?.timeoutMs??0;if(d({type:"step_timeout",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),timeoutMs:_e,attempt:_}),_<W.attempts&&W.retryOn(M,_)){let Ne=Le(_,W);d({type:"step_retry",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),attempt:_+1,maxAttempts:W.attempts,delayMs:Ne,error:M}),W.onRetry(M,_,Ne),await Ue(Ne);continue}W.attempts>1&&d({type:"step_retries_exhausted",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:performance.now()-$,attempts:_,lastError:M})}if(_<W.attempts&&W.retryOn(M,_)){let L=Le(_,W);d({type:"step_retry",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),attempt:_+1,maxAttempts:W.attempts,delayMs:L,error:M}),W.onRetry(M,_,L),await Ue(L);continue}W.attempts>1&&!ge(M)&&d({type:"step_retries_exhausted",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:performance.now()-$,attempts:_,lastError:M});let we=performance.now()-$;if(o){let L;try{L=o(M)}catch(_e){throw xr(_e)}throw d({type:"step_error",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:we,error:L}),f&&d({type:"step_complete",workflowId:a,stepKey:f,name:y,ts:Date.now(),durationMs:we,result:x(L,{cause:M}),meta:{origin:"throw",thrown:M}}),n?.(L,y),w(L,{origin:"throw",thrown:M})}else{let L={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:M}};throw d({type:"step_error",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:we,error:L}),f&&d({type:"step_complete",workflowId:a,stepKey:f,name:y,ts:Date.now(),durationMs:we,result:x(L,{cause:M}),meta:{origin:"throw",thrown:M}}),M}}}let G=ct,pt=performance.now()-$,gr=v(G.error,{origin:"result",resultCause:G.cause});throw d({type:"step_error",workflowId:a,stepId:C,stepKey:f,name:y,ts:Date.now(),durationMs:pt,error:gr}),f&&d({type:"step_complete",workflowId:a,stepKey:f,name:y,ts:Date.now(),durationMs:pt,result:G,meta:{origin:"result",resultCause:G.cause}}),n?.(G.error,y),w(G.error,{origin:"result",resultCause:G.cause})})();h.try=(T,k)=>{let c=k.name,y=k.key,f=m(y),E="error"in k?()=>k.error:k.onError,S=r;return(async()=>{let C=S?performance.now():0;r&&d({type:"step_start",workflowId:a,stepId:f,stepKey:y,name:c,ts:Date.now()});try{let I=await T(),$=performance.now()-C;return d({type:"step_success",workflowId:a,stepId:f,stepKey:y,name:c,ts:Date.now(),durationMs:$}),y&&d({type:"step_complete",workflowId:a,stepKey:y,name:c,ts:Date.now(),durationMs:$,result:A(I)}),I}catch(I){let $=E(I),te=performance.now()-C,ye=v($,{origin:"throw",thrown:I});throw d({type:"step_error",workflowId:a,stepId:f,stepKey:y,name:c,ts:Date.now(),durationMs:te,error:ye}),y&&d({type:"step_complete",workflowId:a,stepKey:y,name:c,ts:Date.now(),durationMs:te,result:x($,{cause:I}),meta:{origin:"throw",thrown:I}}),n?.($,c),w($,{origin:"throw",thrown:I})}})()},h.fromResult=(T,k)=>{let c=k.name,y=k.key,f=m(y),E="error"in k?()=>k.error:k.onError,S=r;return(async()=>{let C=S?performance.now():0;r&&d({type:"step_start",workflowId:a,stepId:f,stepKey:y,name:c,ts:Date.now()});let I=await T();if(I.ok){let $=performance.now()-C;return d({type:"step_success",workflowId:a,stepId:f,stepKey:y,name:c,ts:Date.now(),durationMs:$}),y&&d({type:"step_complete",workflowId:a,stepKey:y,name:c,ts:Date.now(),durationMs:$,result:A(I.value)}),I.value}else{let $=E(I.error),te=performance.now()-C,ye=v($,{origin:"result",resultCause:I.error});throw d({type:"step_error",workflowId:a,stepId:f,stepKey:y,name:c,ts:Date.now(),durationMs:te,error:ye}),y&&d({type:"step_complete",workflowId:a,stepKey:y,name:c,ts:Date.now(),durationMs:te,result:x($,{cause:I.error}),meta:{origin:"result",resultCause:I.error}}),n?.($,c),w($,{origin:"result",resultCause:I.error})}})()},h.retry=(T,k)=>h(T,{name:k.name,key:k.key,retry:{attempts:k.attempts,backoff:k.backoff,initialDelay:k.initialDelay,maxDelay:k.maxDelay,jitter:k.jitter,retryOn:k.retryOn,onRetry:k.onRetry},timeout:k.timeout}),h.withTimeout=(T,k)=>h(T,{name:k.name,key:k.key,timeout:k}),h.parallel=(T,k)=>{let c=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),f=!1;u.push({scopeId:c,type:"parallel"});let E=()=>{if(f)return;f=!0;let S=u.findIndex(C=>C.scopeId===c);S!==-1&&u.splice(S,1),d({type:"scope_end",workflowId:a,scopeId:c,ts:Date.now(),durationMs:performance.now()-y})};d({type:"scope_start",workflowId:a,scopeId:c,scopeType:"parallel",name:T,ts:Date.now()});try{let S=await k();if(E(),!S.ok)throw n?.(S.error,T),w(S.error,{origin:"result",resultCause:S.cause});return S.value}catch(S){throw E(),S}})()},h.race=(T,k)=>{let c=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),f=!1,E={scopeId:c,type:"race",winnerId:void 0};u.push(E);let S=()=>{if(f)return;f=!0;let C=u.findIndex(I=>I.scopeId===c);C!==-1&&u.splice(C,1),d({type:"scope_end",workflowId:a,scopeId:c,ts:Date.now(),durationMs:performance.now()-y,winnerId:E.winnerId})};d({type:"scope_start",workflowId:a,scopeId:c,scopeType:"race",name:T,ts:Date.now()});try{let C=await k();if(S(),!C.ok)throw n?.(C.error,T),w(C.error,{origin:"result",resultCause:C.cause});return C.value}catch(C){throw S(),C}})()},h.allSettled=(T,k)=>{let c=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),f=!1;u.push({scopeId:c,type:"allSettled"});let E=()=>{if(f)return;f=!0;let S=u.findIndex(C=>C.scopeId===c);S!==-1&&u.splice(S,1),d({type:"scope_end",workflowId:a,scopeId:c,ts:Date.now(),durationMs:performance.now()-y})};d({type:"scope_start",workflowId:a,scopeId:c,scopeType:"allSettled",name:T,ts:Date.now()});try{let S=await k();if(E(),!S.ok)throw n?.(S.error,T),w(S.error,{origin:"result",resultCause:S.cause});return S.value}catch(S){throw E(),S}})()};let g=await e(h);return A(g)}catch(h){if(Cr(h))throw h.thrown;if(R(h)){let g=P(h.meta);if(o||n)return x(h.error,{cause:g});if(Fe(h.error))return x(h.error,{cause:g});let T=O(h);return x(T,{cause:g})}if(o){let g=o(h);return n?.(g,"unexpected"),x(g,{cause:h})}let D={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:h}};return n?.(D,"unexpected"),x(D,{cause:h})}}X.strict=(e,t)=>X(e,t);var se=class extends Error{constructor(n,r){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=r;this.name="UnwrapError"}},yt=e=>{if(e.ok)return e.value;throw new se(e.error,e.cause)},wt=(e,t)=>e.ok?e.value:t,gt=(e,t)=>e.ok?e.value:t(e.error,e.cause);function Et(e,t){try{return A(e())}catch(n){return t?x(t(n),{cause:n}):x(n)}}async function kt(e,t){try{return A(await e)}catch(n){return t?x(t(n),{cause:n}):x(n)}}async function Tt(e,t){try{return A(await e())}catch(n){return t?x(t(n),{cause:n}):x(n)}}function St(e,t){return e!=null?A(e):x(t())}function ht(e,t){return e.ok?A(t(e.value)):e}function Rt(e,t){return e.ok?e:x(t(e.error),{cause:e.cause})}function vt(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function xt(e,t){return e.ok?t(e.value):e}function Ct(e,t){return e.ok&&t(e.value),e}function bt(e,t){return e.ok||t(e.error,e.cause),e}function Pt(e,t,n){if(!e.ok)return e;try{return A(t(e.value))}catch(r){return x(n(r),{cause:r})}}function At(e,t,n){if(e.ok)return e;try{return x(t(e.error),{cause:e.cause})}catch(r){return x(n(r),{cause:r})}}function Ot(e,t,n){return e.ok?A(t(e.value)):x(n(e.error),{cause:e.cause})}function Dt(e,t){return e.ok?e:t(e.error,e.cause)}async function Mt(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function It(e,t){return e.ok?A(e.value):A(t(e.error,e.cause))}async function $t(e,t){let n=await e;return n.ok?A(n.value):A(await t(n.error,n.cause))}function _t(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return A(t)}async function Nt(e){return e.length===0?A([]):new Promise(t=>{let n=!1,r=e.length,o=new Array(e.length);for(let s=0;s<e.length;s++){let i=s;Promise.resolve(e[i]).catch(a=>x({type:"PROMISE_REJECTED",cause:a},{cause:{type:"PROMISE_REJECTION",reason:a}})).then(a=>{if(!n){if(!a.ok){n=!0,t(a);return}o[i]=a.value,r--,r===0&&t(A(o))}})}})}function Wt(e){let t=[],n=[];for(let r of e)r.ok?t.push(r.value):n.push({error:r.error,cause:r.cause});return n.length>0?x(n):A(t)}function Lt(e){let t=[],n=[];for(let r of e)r.ok?t.push(r.value):n.push(r.error);return{values:t,errors:n}}function Ut(e){if(e.length===0)return x({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let t=null;for(let n of e){if(n.ok)return n;t||(t=n)}return t}async function Ft(e){return e.length===0?x({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let n=!1,r=e.length,o=null;for(let s of e)Promise.resolve(s).catch(i=>x({type:"PROMISE_REJECTED",cause:i},{cause:{type:"PROMISE_REJECTION",reason:i}})).then(i=>{if(!n){if(i.ok){n=!0,t(i);return}o||(o=i),r--,r===0&&t(o)}})})}async function Vt(e){let t=await Promise.all(e.map(o=>Promise.resolve(o).then(s=>({status:"result",result:s})).catch(s=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:s},cause:{type:"PROMISE_REJECTION",reason:s}})))),n=[],r=[];for(let o of t)o.status==="rejected"?r.push({error:o.error,cause:o.cause}):o.result.ok?n.push(o.result.value):r.push({error:o.result.error,cause:o.result.cause});return r.length>0?x(r):A(n)}function Bt(){let e=new Map;return{handleEvent:t=>{ke(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Ar(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function Ee(e,t,n){return x(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function Be(e){return Ar(e)?e.meta:{origin:"result",resultCause:e}}function Kt(e,t){async function n(r,o){let s=typeof o=="function",i=s?r:void 0,a=s?o:r,l=crypto.randomUUID(),u=t?.createContext?.(),p=g=>{t?.onEvent?.(g,u)},m=Date.now(),d=performance.now();p({type:"workflow_start",workflowId:l,ts:m});let w=t?.resumeState,R=t?.cache;if(w&&!R&&(R=new Map),w&&R){let g=typeof w=="function"?await w():w;for(let[T,k]of g.steps){let{result:c,meta:y}=k;if(c.ok)R.set(T,c);else{let f=y??{origin:"result",resultCause:c.cause};R.set(T,Ee(c.error,f,c.cause))}}}let v=g=>typeof g=="string"?{name:g}:g??{},P=g=>{if(!R)return g;let T=async(k,c)=>{let{name:y,key:f}=v(c);if(f&&R.has(f)){p({type:"step_cache_hit",workflowId:l,stepKey:f,name:y,ts:Date.now()});let S=R.get(f);if(S.ok)return S.value;let C=Be(S.cause);throw K(S.error,C)}f&&p({type:"step_cache_miss",workflowId:l,stepKey:f,name:y,ts:Date.now()});let E=typeof k=="function"?k:()=>k;try{let S=await g(E,c);return f&&R.set(f,A(S)),S}catch(S){if(f&&j(S)){let C=S,I=C.meta.origin==="result"?C.meta.resultCause:C.meta.thrown;R.set(f,Ee(C.error,C.meta,I))}throw S}};return T.try=async(k,c)=>{let{name:y,key:f}=c;if(f&&R.has(f)){p({type:"step_cache_hit",workflowId:l,stepKey:f,name:y,ts:Date.now()});let E=R.get(f);if(E.ok)return E.value;let S=Be(E.cause);throw K(E.error,S)}f&&p({type:"step_cache_miss",workflowId:l,stepKey:f,name:y,ts:Date.now()});try{let E=await g.try(k,c);return f&&R.set(f,A(E)),E}catch(E){if(f&&j(E)){let S=E,C=S.meta.origin==="result"?S.meta.resultCause:S.meta.thrown;R.set(f,Ee(S.error,S.meta,C))}throw E}},T.fromResult=async(k,c)=>{let{name:y,key:f}=c;if(f&&R.has(f)){p({type:"step_cache_hit",workflowId:l,stepKey:f,name:y,ts:Date.now()});let E=R.get(f);if(E.ok)return E.value;let S=Be(E.cause);throw K(E.error,S)}f&&p({type:"step_cache_miss",workflowId:l,stepKey:f,name:y,ts:Date.now()});try{let E=await g.fromResult(k,c);return f&&R.set(f,A(E)),E}catch(E){if(f&&j(E)){let S=E,C=S.meta.origin==="result"?S.meta.resultCause:S.meta.thrown;R.set(f,Ee(S.error,S.meta,C))}throw E}},T.parallel=g.parallel,T.race=g.race,T.allSettled=g.allSettled,T.retry=(k,c)=>T(k,{name:c.name,key:c.key,retry:{attempts:c.attempts,backoff:c.backoff,initialDelay:c.initialDelay,maxDelay:c.maxDelay,jitter:c.jitter,retryOn:c.retryOn,onRetry:c.onRetry},timeout:c.timeout}),T.withTimeout=(k,c)=>T(k,{name:c.name,key:c.key,timeout:c}),T},O=s?g=>a(P(g),e,i):g=>a(P(g),e),h;if(t?.strict===!0){let g=t;h=await X.strict(O,{onError:g.onError,onEvent:g.onEvent,catchUnexpected:g.catchUnexpected,workflowId:l,context:u})}else{let g=t;h=await X(O,{onError:g?.onError??(()=>{}),onEvent:g?.onEvent,workflowId:l,context:u})}let D=performance.now()-d;return h.ok?p({type:"workflow_success",workflowId:l,ts:Date.now(),durationMs:D}):p({type:"workflow_error",workflowId:l,ts:Date.now(),durationMs:D,error:h.error}),h}return n}function ke(e){return e.type==="step_complete"}function H(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function jt(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function zt(e,t){return x({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function Ht(e){return async()=>{let t=await e.checkApproval();switch(t.status){case"pending":return x({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return x({type:"APPROVAL_REJECTED",stepKey:e.key,reason:t.reason});case"approved":return A(t.value)}}}function Te(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:A(t.value)}),{steps:n}}function qt(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function Jt(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:H(n.result.error)}function Gt(e){let t=[];for(let[n,r]of e.steps)!r.result.ok&&H(r.result.error)&&t.push(n);return t}function ie(){let e=new Map;return{handleEvent:t=>{ke(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear(),hasPendingApprovals:()=>{for(let t of e.values())if(!t.result.ok&&H(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,r]of e)!r.result.ok&&H(r.result.error)&&t.push({stepKey:n,error:r.result.error});return t},injectApproval:(t,n)=>(e.set(t,{result:A(n)}),{steps:new Map(e)})}}function Xt(){return`decision_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Qt(e,t,n){e?.onEvent&&e.onEvent({type:"step_skipped",workflowId:e.workflowId,stepKey:t?.key,name:t?.name,reason:t?.reason,decisionId:n,ts:Date.now()})}function Se(e,t,n,r){if(e)return t();let o=Xt();Qt(r,n,o)}function Ke(e,t,n,r){return Se(!e,t,n,r)}function he(e,t,n,r,o){if(e)return t();let s=Xt();return Qt(o,r,s),n}function je(e,t,n,r,o){return he(!e,t,n,r,o)}function Yt(e){return{when:(t,n,r)=>Se(t,n,r,e),unless:(t,n,r)=>Ke(t,n,r,e),whenOr:(t,n,r,o)=>he(t,n,r,o,e),unlessOr:(t,n,r,o)=>je(t,n,r,o,e)}}var oe=class extends Error{type="CIRCUIT_OPEN";circuitName;state;retryAfterMs;constructor(t){super(t.message??`Circuit breaker "${t.circuitName}" is ${t.state}. Retry after ${Math.ceil(t.retryAfterMs/1e3)}s`),this.name="CircuitOpenError",this.circuitName=t.circuitName,this.state=t.state,this.retryAfterMs=t.retryAfterMs}};function Zt(e){return typeof e=="object"&&e!==null&&e.type==="CIRCUIT_OPEN"}var Or={failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3};function en(e,t){let n={...Or,...t},r="CLOSED",o=[],s=null,i=null,a=0,l=0;function u(){let v=Date.now();o=o.filter(P=>v-P.timestamp<n.windowSize)}function p(v){if(r!==v){let P=r;r=v,v==="HALF_OPEN"&&(l=0),n.onStateChange?.(P,v,e)}}function m(){return r!=="OPEN"||s===null?!1:Date.now()-s>=n.resetTimeout?(p("HALF_OPEN"),!0):!1}function d(){i=Date.now(),a++,r==="HALF_OPEN"&&(l++,l>=n.halfOpenMax&&(p("CLOSED"),o=[]))}function w(v){let P=Date.now();s=P,u(),o.push({timestamp:P,error:v}),(r==="HALF_OPEN"||r==="CLOSED"&&o.length>=n.failureThreshold)&&p("OPEN")}function R(){if(r==="CLOSED")return 0;if(r==="OPEN"){if(m())return 0;let v=Date.now(),P=s?v-s:0;return Math.max(0,n.resetTimeout-P)}return 0}return{async execute(v,P){let O=R();if(O>0)throw new oe({circuitName:e,state:r,retryAfterMs:O});try{let h=await v();return d(),h}catch(h){throw w(h),h}},async executeResult(v,P){let O=R();if(O>0)return x(new oe({circuitName:e,state:r,retryAfterMs:O}));try{let h=await v();return h.ok?d():w(h.error),h}catch(h){throw w(h),h}},getState(){return r==="OPEN"&&m(),r},getStats(){return u(),{state:this.getState(),failureCount:o.length,successCount:a,lastFailureTime:s,lastSuccessTime:i,halfOpenSuccesses:l}},reset(){p("CLOSED"),o=[],l=0},forceOpen(){s=Date.now(),p("OPEN")},recordSuccess(){d()},recordFailure(v){w(v??new Error("Manual failure"))}}}var tn={critical:{failureThreshold:3,resetTimeout:6e4,windowSize:3e4,halfOpenMax:1},standard:{failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3},lenient:{failureThreshold:10,resetTimeout:15e3,windowSize:12e4,halfOpenMax:5}};function nn(e){return typeof e=="object"&&e!==null&&e.type==="SAGA_COMPENSATION_ERROR"}function rn(e,t){return async n=>{let r=crypto.randomUUID(),o=performance.now(),s=[],i=u=>{t?.onEvent?.(u)};i({type:"saga_start",sagaId:r,ts:Date.now()});async function a(u){let p=[];i({type:"saga_compensation_start",sagaId:r,ts:Date.now(),stepCount:s.length});let m=performance.now();for(let d=s.length-1;d>=0;d--){let w=s[d];try{await w.compensate(w.value),i({type:"saga_compensation_step",sagaId:r,stepName:w.name,ts:Date.now(),success:!0})}catch(R){p.push({stepName:w.name,error:R}),i({type:"saga_compensation_step",sagaId:r,stepName:w.name,ts:Date.now(),success:!1,error:R})}}return i({type:"saga_compensation_end",sagaId:r,ts:Date.now(),durationMs:performance.now()-m,success:p.length===0,failedCount:p.length}),p}let l={async step(u,p){let m=await u();if(m.ok)return p?.compensate&&s.push({name:p.name,value:m.value,compensate:p.compensate}),m.value;throw K(m.error,{origin:"result",resultCause:m.cause})},async tryStep(u,p){let m="error"in p?()=>p.error:p.onError;try{let d=await u();return p.compensate&&s.push({name:p.name,value:d,compensate:p.compensate}),d}catch(d){let w=m(d);throw K(w,{origin:"throw",thrown:d})}},getCompensations(){return s.map(u=>({name:u.name,hasValue:u.value!==void 0}))}};try{let u=await n(l,e),p=performance.now()-o;return i({type:"saga_success",sagaId:r,ts:Date.now(),durationMs:p}),A(u)}catch(u){let p=performance.now()-o,m;j(u)?m=u.error:m=u,i({type:"saga_error",sagaId:r,ts:Date.now(),durationMs:p,error:m});let d=await a(m);if(d.length>0){let w={type:"SAGA_COMPENSATION_ERROR",originalError:m,compensationErrors:d};if(t?.onError?.(w),t?.throwOnCompensationFailure)throw w;return x(w)}return t?.onError?.(m),j(u)?x(m):x({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}}async function on(e,t){let n=crypto.randomUUID(),r=performance.now(),o=[],s=l=>{t?.onEvent?.(l)};s({type:"saga_start",sagaId:n,ts:Date.now()});async function i(l){let u=[];s({type:"saga_compensation_start",sagaId:n,ts:Date.now(),stepCount:o.length});let p=performance.now();for(let m=o.length-1;m>=0;m--){let d=o[m];try{await d.compensate(d.value),s({type:"saga_compensation_step",sagaId:n,stepName:d.name,ts:Date.now(),success:!0})}catch(w){u.push({stepName:d.name,error:w}),s({type:"saga_compensation_step",sagaId:n,stepName:d.name,ts:Date.now(),success:!1,error:w})}}return s({type:"saga_compensation_end",sagaId:n,ts:Date.now(),durationMs:performance.now()-p,success:u.length===0,failedCount:u.length}),u}let a={async step(l,u){let p=await l();if(p.ok)return u?.compensate&&o.push({name:u.name,value:p.value,compensate:u.compensate}),p.value;throw K(p.error,{origin:"result",resultCause:p.cause})},async tryStep(l,u){let p="error"in u?()=>u.error:u.onError;try{let m=await l();return u.compensate&&o.push({name:u.name,value:m,compensate:u.compensate}),m}catch(m){let d=p(m);throw K(d,{origin:"throw",thrown:m})}},getCompensations(){return o.map(l=>({name:l.name,hasValue:l.value!==void 0}))}};try{let l=await e(a),u=performance.now()-r;return s({type:"saga_success",sagaId:n,ts:Date.now(),durationMs:u}),A(l)}catch(l){let u=performance.now()-r,p;j(l)?p=l.error:p=l,s({type:"saga_error",sagaId:n,ts:Date.now(),durationMs:u,error:p});let m=await i(p);if(m.length>0){let d={type:"SAGA_COMPENSATION_ERROR",originalError:p,compensationErrors:m};if(t?.onError?.(d),t?.throwOnCompensationFailure)throw d;return x(d)}return t?.onError?.(p),j(l)?x(p):x({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:l}})}}function sn(e){return typeof e=="object"&&e!==null&&e.type==="RATE_LIMIT_EXCEEDED"}function ze(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function He(e,t){let{maxPerSecond:n,strategy:r="wait"}=t,o=t.burstCapacity??n*2,s=o,i=Date.now(),a=n/1e3,l=[];function u(){let d=Date.now(),R=(d-i)*a;s=Math.min(o,s+R),i=d}function p(){if(u(),s>=1)return s-=1,0;let d=1-s;return Math.ceil(d/a)}async function m(){return new Promise(d=>{let w=()=>{let R=p();R===0?d():(l.push(w),setTimeout(()=>{let v=l.indexOf(w);v!==-1&&(l.splice(v,1),w())},R))};w()})}return{async execute(d){let w=p();if(w>0){if(r==="reject")throw{type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:w};await m()}return d()},async executeResult(d){let w=p();if(w>0){if(r==="reject")return x({type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:w});await m()}return d()},getStats(){return u(),{availableTokens:Math.floor(s),maxTokens:o,tokensPerSecond:n,waitingCount:l.length}},reset(){s=o,i=Date.now(),l.length=0}}}function qe(e,t){let{maxConcurrent:n,strategy:r="queue",maxQueueSize:o=1/0}=t,s=0,i=[];async function a(){if(s<n){s++;return}if(r==="reject")throw{type:"QUEUE_FULL",limiterName:e,queueSize:i.length,maxQueueSize:o};if(i.length>=o)throw{type:"QUEUE_FULL",limiterName:e,queueSize:i.length,maxQueueSize:o};return new Promise((u,p)=>{i.push({resolve:u,reject:p})})}function l(){s--,i.length>0&&s<n&&(s++,i.shift()?.resolve())}return{async execute(u){await a();try{return await u()}finally{l()}},async executeAll(u){let p=new Array(u.length),m=[];for(let d=0;d<u.length;d++){let w=d,R=this.execute(u[w]).then(v=>{p[w]=v});m.push(R)}return await Promise.all(m),p},async executeResult(u){try{await a()}catch(p){if(ze(p))return x(p);throw p}try{return await u()}finally{l()}},getStats(){return{activeCount:s,maxConcurrent:n,queueSize:i.length,maxQueueSize:o}},reset(){for(s=0;i.length>0;)i.shift()?.reject(new Error("Limiter reset"))}}}function an(e,t){let n=t.rate?He(`${e}-rate`,t.rate):void 0,r=t.concurrency?qe(`${e}-concurrency`,t.concurrency):void 0;return{rate:n,concurrency:r,async execute(o){let s=o;if(n){let i=s;s=()=>n.execute(i)}return r?r.execute(s):s()}}}var un={api:{maxPerSecond:10,burstCapacity:20,strategy:"wait"},database:{maxConcurrent:10,strategy:"queue",maxQueueSize:100},external:{maxPerSecond:5,burstCapacity:10,strategy:"wait"}};function cn(e){return typeof e=="object"&&e!==null&&e.type==="MIGRATION_ERROR"}function pn(e){return typeof e=="object"&&e!==null&&e.type==="VERSION_INCOMPATIBLE"}async function Je(e,t,n){let r=e.state,o=e.version;if(o>t)return x({type:"VERSION_INCOMPATIBLE",stateVersion:o,currentVersion:t,reason:"State version is higher than current workflow version. Cannot downgrade."});if(o===t)return A({version:o,state:r});for(;o<t;){let s=n[o];if(!s)return x({type:"VERSION_INCOMPATIBLE",stateVersion:e.version,currentVersion:t,reason:`No migration found for version ${o} to ${o+1}`});try{r=await s(r),o++}catch(i){return x({type:"MIGRATION_ERROR",fromVersion:o,toVersion:o+1,cause:i})}}return A({version:o,state:r})}function ln(e){let{version:t,migrations:n={},strictVersioning:r=!0}=e;return async o=>{if(!o)return A(void 0);if(r&&o.version>t)return x({type:"VERSION_INCOMPATIBLE",stateVersion:o.version,currentVersion:t,reason:"Saved state is from a newer workflow version"});if(o.version===t)return A(o.state);let s=await Je(o,t,n);return s.ok?A(s.value.state):s}}function dn(e,t){return{version:t,state:e}}function fn(e){if(!e)return null;try{let t=typeof e=="string"?JSON.parse(e):e;if(typeof t!="object"||t===null||!("version"in t)||typeof t.version!="number"||!("state"in t)||!t.state||!Array.isArray(t.state.steps))return null;let n=t,r=new Map(n.state.steps);return{version:n.version,state:{steps:r}}}catch{return null}}function mn(e){return JSON.stringify({version:e.version,state:{steps:Array.from(e.state.steps.entries())}})}function yn(e){return t=>{let n=new Map;for(let[r,o]of t.steps){let s=e[r]??r;n.set(s,o)}return{steps:n}}}function wn(e){let t=new Set(e);return n=>{let r=new Map;for(let[o,s]of n.steps)t.has(o)||r.set(o,s);return{steps:r}}}function gn(e){return t=>{let n=new Map;for(let[r,o]of t.steps){let s=e[r];n.set(r,s?s(o):o)}return{steps:n}}}function En(e){return async t=>{let n=t;for(let r of e)n=await r(n);return n}}function kn(e={}){let{serviceName:t="workflow",createStepSpans:n=!0,recordMetrics:r=!0,defaultAttributes:o={},recordRetryEvents:s=!0,markErrorsOnSpan:i=!0}=e,a={workflows:new Map,steps:new Map},l={stepDurations:[],retryCount:0,errorCount:0,cacheHits:0,cacheMisses:0,defaultAttributes:o};function u(m,d){return m?`${t}.${m}`:d?`${t}.step.${d}`:`${t}.step`}function p(m){switch(m.type){case"workflow_start":a.workflows.set(m.workflowId,{workflowId:m.workflowId,startTime:m.ts});break;case"workflow_success":case"workflow_error":a.workflows.get(m.workflowId)&&a.workflows.delete(m.workflowId),m.type==="workflow_error"&&i&&l.errorCount++;break;case"step_start":if(n){let d=m.stepId;a.steps.set(d,{workflowId:m.workflowId,stepId:d,stepKey:m.stepKey,name:m.name,startTime:m.ts})}break;case"step_success":case"step_error":if(n){let d=m.stepId,w=a.steps.get(d);w&&(a.steps.delete(d),r&&l.stepDurations.push({name:u(w.name,w.stepKey),durationMs:m.durationMs,success:m.type==="step_success",attributes:Object.keys(o).length>0?{...o}:void 0}),m.type==="step_error"&&i&&l.errorCount++)}break;case"step_retry":s&&l.retryCount++;break;case"step_cache_hit":l.cacheHits++;break;case"step_cache_miss":l.cacheMisses++;break;default:break}}return{handleEvent:p,getActiveSpansCount(){return{workflows:a.workflows.size,steps:a.steps.size}},getMetrics(){return{...l,stepDurations:[...l.stepDurations]}},reset(){a.workflows.clear(),a.steps.clear(),l.stepDurations.length=0,l.retryCount=0,l.errorCount=0,l.cacheHits=0,l.cacheMisses=0}}}function Tn(e){let{serviceName:t="workflow",includeStepDetails:n=!0}=e??{};return r=>{if(process.env.AUTOTEL_DEBUG==="true"){let o=`[${t}]`;switch(r.type){case"workflow_start":console.log(`${o} Workflow started: ${r.workflowId}`);break;case"workflow_success":console.log(`${o} Workflow success: ${r.workflowId} (${r.durationMs}ms)`);break;case"workflow_error":console.log(`${o} Workflow error: ${r.workflowId}`,r.error);break;case"step_start":n&&console.log(`${o} Step started: ${r.name??r.stepKey??r.stepId}`);break;case"step_success":n&&console.log(`${o} Step success: ${r.name??r.stepKey??r.stepId} (${r.durationMs}ms)`);break;case"step_error":n&&console.log(`${o} Step error: ${r.name??r.stepKey??r.stepId}`,r.error);break;case"step_retry":console.log(`${o} Step retry: ${r.name??r.stepKey??r.stepId} (attempt ${r.attempt}/${r.maxAttempts})`);break}}}}function Sn(e,t){let{serviceName:n="workflow"}=t??{};return async(r,o,s)=>{let i=`${n}.${r}`;return e(i,async a=>{if(s)for(let[l,u]of Object.entries(s))a.setAttribute(l,u);return o()})}}function hn(e){return typeof e=="object"&&e!==null&&e.type==="VALIDATION_ERROR"}function Re(e){return{status:400,body:{error:{type:e.type,message:e.message,details:e.field?{field:e.field}:e.details}}}}function ve(e){return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}}}function Rn(e,t,n){let{validateInput:r,mapResult:o,mapValidationError:s=Re,mapUnexpectedError:i=ve,beforeValidation:a,afterResponse:l}=n;return async u=>{try{let p=a?await a(u):u,m=await r(p);if(!re(m)){let R=s(m.error,p);return l?await l(R,p):R}let d=await e(m.value,(R,v)=>t(R,v,m.value)),w=o(d,p);return l?await l(w,p):w}catch(p){let m=i(p,u);return l?await l(m,u):m}}}function vn(e){let{validateInput:t,handler:n,mapResult:r,mapValidationError:o=Re,mapUnexpectedError:s=ve}=e;return async i=>{try{let a=await t(i);if(!re(a))return o(a.error,i);let l=await n(a.value,i);return r(l,i)}catch(a){return s(a,i)}}}function xn(e,t={}){let{defaultStatus:n=500,successStatus:r=200}=t,o=new Map;for(let s of e)o.set(s.error,s);return s=>{if(s.ok)return{status:r,body:s.value};if(typeof s.error=="object"&&s.error!==null&&s.error.type==="UNEXPECTED_ERROR")return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}};let i=o.get(s.error);return i?{status:i.status,body:{error:{type:String(i.error),message:i.message}}}:{status:n,body:{error:{type:String(s.error)}}}}}function Ge(e){return{method:e.method,path:e.path,headers:e.headers,body:e.body,query:e.query,params:e.params,raw:e}}function Xe(e,t){t.headers&&e.set(t.headers),e.status(t.status).json(t.body)}function Cn(e){return async(t,n)=>{let r=Ge(t),o=await e(r);Xe(n,o)}}function Qe(e,t,n){return{type:"VALIDATION_ERROR",message:e,field:t,details:n}}function bn(e){return t=>{for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return x(Qe(`Missing required field: ${n}`,n));return A(void 0)}}function Pn(...e){return t=>{for(let n of e){let r=n(t);if(!r.ok)return r}return A(void 0)}}function An(e,t,n){let{validatePayload:r,mapResult:o}=n;return async s=>{try{let i=r(s);if(!re(i))return{success:!1,ack:!0,error:{type:i.error.type,message:i.error.message,retryable:!1}};let a=await e(i.value,(l,u)=>t(l,u,i.value));return o(a,s)}catch(i){return{success:!1,ack:!1,error:{type:"UNEXPECTED_ERROR",message:i instanceof Error?i.message:String(i),retryable:!0}}}}}function U(...e){let t={};for(let n of e)n.name!==void 0&&(t.name=n.name),n.key!==void 0&&(t.key=n.key),n.retry!==void 0&&(t.retry=t.retry?{...t.retry,...n.retry}:{...n.retry}),n.timeout!==void 0&&(t.timeout=t.timeout?{...t.timeout,...n.timeout}:{...n.timeout});return t}function On(...e){let t=U(...e);return n=>U(t,typeof n=="string"?{name:n}:n??{})}function Dn(e,...t){return{name:e,policy:U(...t)}}function V(e){return{retry:e}}var Y={none:V({attempts:1}),transient:V({attempts:3,backoff:"exponential",initialDelay:100,maxDelay:1e3,jitter:!0}),standard:V({attempts:3,backoff:"exponential",initialDelay:200,maxDelay:5e3,jitter:!0}),aggressive:V({attempts:5,backoff:"exponential",initialDelay:500,maxDelay:3e4,jitter:!0}),fixed:(e,t)=>V({attempts:e,backoff:"fixed",initialDelay:t,jitter:!1}),linear:(e,t)=>V({attempts:e,backoff:"linear",initialDelay:t,jitter:!0}),custom:e=>V({backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,...e})};function F(e){return{timeout:e}}var Q={none:{},fast:F({ms:1e3}),api:F({ms:5e3}),extended:F({ms:3e4}),long:F({ms:12e4}),ms:e=>F({ms:e}),seconds:e=>F({ms:e*1e3}),withError:(e,t)=>F({ms:e,error:t}),withSignal:e=>F({ms:e,signal:!0})},Mn={httpApi:U(Q.api,Y.standard),database:U(Q.extended,V({attempts:2,backoff:"exponential",initialDelay:100,maxDelay:2e3,jitter:!0})),cache:U(Q.fast,Y.none),messageQueue:U(Q.extended,Y.aggressive),fileSystem:U(Q.long,Y.standard),rateLimited:U(F({ms:1e4}),V({attempts:5,backoff:"linear",initialDelay:1e3,maxDelay:1e4,jitter:!0}))};function Ye(e,t){return U(e,typeof t=="string"?{name:t}:t??{})}function In(e,t){let n=typeof t=="string"?{name:t}:t??{};return U(...e,n)}function $n(e,t,n={}){return e?t:n}function _n(e,t=process.env.NODE_ENV??"development",n={}){return e[t]??n}function Nn(){let e=new Map;return{register(t,n){e.set(t,n)},get(t){return e.get(t)},has(t){return e.has(t)},names(){return Array.from(e.keys())},apply(t,n){let r=e.get(t);if(!r)throw new Error(`Policy not found: ${t}`);return Ye(r,n)}}}function Wn(){let e=[],t={name(n){return e.push({name:n}),t},key(n){return e.push({key:n}),t},policy(n){return e.push(n),t},timeout(n){return e.push(F({ms:n})),t},retry(n){return e.push(V(n)),t},retries(n){return e.push(Y.custom({attempts:n})),t},build(){return U(...e)}};return t}function ae(e){if(e===void 0)return{type:"undefined"};if(e instanceof Error)return{type:"error",errorName:e.name,errorMessage:e.message,errorStack:e.stack};try{return JSON.stringify(e),{type:"value",value:e}}catch{return{type:"value",value:String(e)}}}function ue(e){if(e.type!=="undefined"){if(e.type==="error"){let t=new Error(e.errorMessage??"Unknown error");return t.name=e.errorName??"Error",e.errorStack&&(t.stack=e.errorStack),t}return e.value}}function ce(e){return e.ok?{ok:!0,value:e.value}:{ok:!1,error:e.error,cause:e.cause!==void 0?ae(e.cause):void 0}}function pe(e){if(e.ok)return A(e.value);let t=e.cause?ue(e.cause):void 0;return x(e.error,t!==void 0?{cause:t}:void 0)}function Ze(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause!==void 0?ae(e.resultCause):void 0}:{origin:"throw",thrown:ae(e.thrown)}}function et(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause?ue(e.resultCause):void 0}:{origin:"throw",thrown:e.thrown?ue(e.thrown):void 0}}function tt(e){return{result:ce(e.result),meta:e.meta?Ze(e.meta):void 0}}function nt(e){return{result:pe(e.result),meta:e.meta?et(e.meta):void 0}}function xe(e,t){let n={};for(let[r,o]of e.steps)n[r]=tt(o);return{version:1,entries:n,metadata:t}}function Ce(e){let t=new Map;for(let[n,r]of Object.entries(e.entries))t.set(n,nt(r));return{steps:t}}function Ln(e,t){return JSON.stringify(xe(e,t))}function Un(e){let t=JSON.parse(e);return Ce(t)}function Fn(e={}){let{maxSize:t,ttl:n}=e,r=new Map,o=a=>n?Date.now()-a>n:!1,s=()=>{if(n)for(let[a,l]of r)o(l.timestamp)&&r.delete(a)},i=()=>{if(!t||r.size<t)return;let a,l=1/0;for(let[u,p]of r)p.timestamp<l&&(l=p.timestamp,a=u);a&&r.delete(a)};return{get(a){s();let l=r.get(a);if(l){if(o(l.timestamp)){r.delete(a);return}return l.result}},set(a,l){s(),i(),r.set(a,{result:l,timestamp:Date.now()})},has(a){s();let l=r.get(a);return l?o(l.timestamp)?(r.delete(a),!1):!0:!1},delete(a){return r.delete(a)},clear(){r.clear()}}}function Vn(e){let{directory:t,extension:n=".json",fs:r}=e;if(!r)throw new Error("File system interface is required. Pass fs option with readFile, writeFile, etc.");let o=i=>{let a=i.replace(/[^a-zA-Z0-9_-]/g,"_");return`${t}/${a}${n}`},s=new Map;return{async init(){await r.mkdir(t,{recursive:!0})},get(i){return s.get(i)},async getAsync(i){let a=o(i);try{if(!await r.exists(a))return;let l=await r.readFile(a),u=JSON.parse(l),p=pe(u);return s.set(i,p),p}catch{return}},set(i,a){s.set(i,a)},async setAsync(i,a){let l=o(i),u=ce(a);await r.writeFile(l,JSON.stringify(u,null,2)),s.set(i,a)},has(i){return s.has(i)},delete(i){return s.delete(i)},async deleteAsync(i){let a=o(i);try{return await r.unlink(a),s.delete(i),!0}catch{return!1}},clear(){s.clear()},async clearAsync(){try{let i=await r.readdir(t);for(let a of i)a.endsWith(n)&&await r.unlink(`${t}/${a}`);s.clear()}catch{}}}}function Bn(e){let{store:t,prefix:n="workflow:",ttl:r}=e,o=i=>`${n}${i}`,s=new Map;return{get(i){return s.get(i)},async getAsync(i){let a=await t.get(o(i));if(a)try{let l=JSON.parse(a),u=pe(l);return s.set(i,u),u}catch{return}},set(i,a){s.set(i,a)},async setAsync(i,a){let l=ce(a);await t.set(o(i),JSON.stringify(l),r?{ttl:r}:void 0),s.set(i,a)},has(i){return s.has(i)},async hasAsync(i){return t.exists(o(i))},delete(i){return s.delete(i)},async deleteAsync(i){return s.delete(i),t.delete(o(i))},clear(){s.clear()},async clearAsync(){let i=await t.keys(`${n}*`);for(let a of i)await t.delete(a);s.clear()}}}function Kn(e,t="workflow:state:"){let n=r=>`${t}${r}`;return{async save(r,o,s){let i=xe(o,s);await e.set(n(r),JSON.stringify(i))},async load(r){let o=await e.get(n(r));if(o)try{let s=JSON.parse(o);return Ce(s)}catch{return}},async delete(r){return e.delete(n(r))},async list(){return(await e.keys(`${t}*`)).map(o=>o.slice(t.length))}}}function jn(e,t,n){let r=!1;return{async hydrate(){if(r)return;let o=await t.load(n);if(o)for(let[s,i]of o.steps)e.set(s,i.result);r=!0},get(o){return e.get(o)},set(o,s){e.set(o,s)},has(o){return e.has(o)},delete(o){return e.delete(o)},clear(){e.clear()}}}function z(e){if(e<1e3)return`${Math.round(e)}ms`;if(e<6e4)return`${(e/1e3).toFixed(1).replace(/\.0$/,"")}s`;let t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return n===0?`${t}m`:`${t}m ${n}s`}function rt(){return`node_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Dr(e){for(let t of e)if((t.type==="parallel"||t.type==="race"||t.type==="sequence")&&!t.id.startsWith("detected_")||"decisionId"in t)return!0;return!1}function ot(e,t={}){if(Dr(e))return e;let{minOverlapMs:n=0,maxGapMs:r=5}=t,o=[],s=[];for(let u=0;u<e.length;u++){let p=e[u];p.type==="step"&&p.startTs!==void 0?o.push({node:p,startTs:p.startTs,endTs:p.endTs??p.startTs+(p.durationMs??0),originalIndex:u}):s.push({node:p,originalIndex:u})}if(o.length<=1)return e;o.sort((u,p)=>u.startTs-p.startTs);let i=[],a=[o[0]];for(let u=1;u<o.length;u++){let p=o[u],m=Math.min(...a.map(P=>P.startTs)),d=Math.max(...a.map(P=>P.endTs)),w=p.startTs<=m+r,R=p.startTs<d;if(!w&&!R){i.push(a),a=[p];continue}let v=R?Math.min(p.endTs,d)-p.startTs:0;w||v>=n?a.push(p):(i.push(a),a=[p])}i.push(a);let l=[];for(let u of i){let p=Math.min(...u.map(m=>m.originalIndex));if(u.length===1)l.push({node:u[0].node,position:p});else{let m=u.map(v=>v.node),d=Math.min(...u.map(v=>v.startTs)),w=Math.max(...u.map(v=>v.endTs)),R={type:"parallel",id:`detected_parallel_${d}`,name:`${m.length} parallel steps`,state:Mr(m),mode:"all",children:m,startTs:d,endTs:w,durationMs:w-d};l.push({node:R,position:p})}}for(let{node:u,originalIndex:p}of s)l.push({node:u,position:p});return l.sort((u,p)=>u.position-p.position),l.map(u=>u.node)}function Mr(e){return e.some(s=>s.state==="error")?"error":e.some(s=>s.state==="running")?"running":e.some(s=>s.state==="pending")?"pending":(e.every(s=>s.state==="success"||s.state==="cached"),"success")}function be(e={}){let{detectParallel:t=!0,parallelDetection:n}=e,r,o,s="pending",i,a,l=new Map,u=[],p=[],m=[],d=Date.now(),w=d;function R(c){return c.stepId??c.stepKey??c.name??rt()}function v(c){if(p.length>0){let y=p[p.length-1];for(let E of y.branches.values())if(E.taken){E.children.push(c),w=Date.now();return}let f=Array.from(y.branches.values())[0];if(f){f.children.push(c),w=Date.now();return}}u.length>0?u[u.length-1].children.push(c):m.push(c),w=Date.now()}function P(c){switch(c.type){case"workflow_start":r=c.workflowId,o=c.ts,s="running",d=Date.now(),w=d;break;case"workflow_success":s="success",a=c.durationMs,w=Date.now();break;case"workflow_error":s="error",i=c.error,a=c.durationMs,w=Date.now();break;case"step_start":{let y=R(c);l.set(y,{id:y,name:c.name,key:c.stepKey,startTs:c.ts,retryCount:0,timedOut:!1}),w=Date.now();break}case"step_success":{let y=R(c),f=l.get(y);if(f){let E={type:"step",id:f.id,name:f.name,key:f.key,state:"success",startTs:f.startTs,endTs:c.ts,durationMs:c.durationMs,...f.retryCount>0&&{retryCount:f.retryCount},...f.timedOut&&{timedOut:!0,timeoutMs:f.timeoutMs}};v(E),l.delete(y)}break}case"step_error":{let y=R(c),f=l.get(y);if(f){let E={type:"step",id:f.id,name:f.name,key:f.key,state:"error",startTs:f.startTs,endTs:c.ts,durationMs:c.durationMs,error:c.error,...f.retryCount>0&&{retryCount:f.retryCount},...f.timedOut&&{timedOut:!0,timeoutMs:f.timeoutMs}};v(E),l.delete(y)}break}case"step_aborted":{let y=R(c),f=l.get(y);if(f){let E={type:"step",id:f.id,name:f.name,key:f.key,state:"aborted",startTs:f.startTs,endTs:c.ts,durationMs:c.durationMs,...f.retryCount>0&&{retryCount:f.retryCount},...f.timedOut&&{timedOut:!0,timeoutMs:f.timeoutMs}};v(E),l.delete(y)}break}case"step_cache_hit":{let f={type:"step",id:R(c),name:c.name,key:c.stepKey,state:"cached",startTs:c.ts,endTs:c.ts,durationMs:0};v(f);break}case"step_cache_miss":break;case"step_complete":break;case"step_timeout":{let y=R(c),f=l.get(y);f&&(f.timedOut=!0,f.timeoutMs=c.timeoutMs),w=Date.now();break}case"step_retry":{let y=R(c),f=l.get(y);f&&(f.retryCount=(c.attempt??1)-1),w=Date.now();break}case"step_retries_exhausted":w=Date.now();break;case"step_skipped":{let f={type:"step",id:R(c),name:c.name,key:c.stepKey,state:"skipped",startTs:c.ts,endTs:c.ts,durationMs:0};v(f);break}}}function O(c){if(c.type==="scope_start")u.push({id:c.scopeId,name:c.name,type:c.scopeType,startTs:c.ts,children:[]}),w=Date.now();else if(c.type==="scope_end"){let y=u.pop();if(y){let f=y.type==="race"?{type:"race",id:y.id,name:y.name,state:D(y.children),startTs:y.startTs,endTs:c.ts,durationMs:c.durationMs,children:y.children,winnerId:c.winnerId}:{type:"parallel",id:y.id,name:y.name,state:D(y.children),startTs:y.startTs,endTs:c.ts,durationMs:c.durationMs,children:y.children,mode:y.type==="allSettled"?"allSettled":"all"};v(f)}}}function h(c){if(c.type==="decision_start")p.push({id:c.decisionId,name:c.name,condition:c.condition,decisionValue:c.decisionValue,startTs:c.ts,branches:new Map}),w=Date.now();else if(c.type==="decision_branch"){let y=p[p.length-1];if(y&&y.id===c.decisionId){let f=c.branchLabel,E=y.branches.get(f);E?E.taken=c.taken:y.branches.set(f,{label:c.branchLabel,condition:c.condition,taken:c.taken,children:[]}),w=Date.now()}}else if(c.type==="decision_end"){let y=p.pop();if(y&&y.id===c.decisionId){let f=Array.from(y.branches.values()),E={type:"decision",id:y.id,name:y.name,state:D(f.flatMap(S=>S.taken?S.children:[])),startTs:y.startTs,endTs:c.ts,durationMs:c.durationMs,condition:y.condition,decisionValue:y.decisionValue,branchTaken:c.branchTaken??y.branchTaken,branches:f};v(E)}}}function D(c){return c.length===0?"success":c.some(S=>S.state==="error")?"error":c.every(S=>S.state==="success"||S.state==="cached")?"success":c.some(S=>S.state==="running")?"running":"pending"}function g(){let c=[...m];for(let[,y]of l)c.push({type:"step",id:y.id,name:y.name,key:y.key,state:"running",startTs:y.startTs,...y.retryCount>0&&{retryCount:y.retryCount},...y.timedOut&&{timedOut:!0,timeoutMs:y.timeoutMs}});return c}function T(){let c=g();return t&&(c=ot(c,n)),{root:{type:"workflow",id:r??rt(),workflowId:r??"unknown",state:s,startTs:o,durationMs:a,children:c,error:i},metadata:{createdAt:d,lastUpdatedAt:w}}}function k(){r=void 0,o=void 0,s="pending",i=void 0,a=void 0,l.clear(),u.length=0,p.length=0,m=[],d=Date.now(),w=d}return{handleEvent:P,handleScopeEvent:O,handleDecisionEvent:h,getIR:T,reset:k,get hasActiveSteps(){return l.size>0},get state(){return s}}}function Z(e){return e.type==="step"}function Pe(e){return e.type==="parallel"}function Ae(e){return e.type==="race"}function Oe(e){return e.type==="decision"}var st="\x1B[0m",Ir="\x1B[1m",Hn="\x1B[2m",$r="\x1B[31m",_r="\x1B[32m",Nr="\x1B[33m",Wr="\x1B[34m",zn="\x1B[90m",Lr="\x1B[37m";function De(e,t){return t?`${t}${e}${st}`:e}function le(e){return`${Ir}${e}${st}`}function N(e){return`${Hn}${e}${st}`}var ee={pending:Lr,running:Nr,success:_r,error:$r,aborted:zn,cached:Wr,skipped:Hn+zn};function Ur(e){switch(e){case"pending":return"\u25CB";case"running":return"\u27F3";case"success":return"\u2713";case"error":return"\u2717";case"aborted":return"\u2298";case"cached":return"\u21BA";case"skipped":return"\u2298"}}function de(e,t){let n=Ur(e);return De(n,t[e])}function it(e,t,n){return De(e,n[t])}function qn(e){return e.replace(/\x1b\[[0-9;]*m/g,"")}var b={topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502",teeRight:"\u251C",teeLeft:"\u2524",teeDown:"\u252C",teeUp:"\u2534",cross:"\u253C"};function Jn(e,t){let n=qn(e).length,r=Math.max(0,t-n);return e+" ".repeat(r)}function Fr(e,t){if(!t)return b.horizontal.repeat(e);let n=` ${t} `,r=e-n.length;if(r<4)return b.horizontal.repeat(e);let o=2,s=r-o;return b.horizontal.repeat(o)+n+b.horizontal.repeat(s)}function fe(){return{name:"ascii",supportsLive:!0,render(e,t){let n={...ee,...t.colors},r=t.terminalWidth??60,o=r-4,s=[],i=e.root.name??"workflow",a=le(i);s.push(`${b.topLeft}${Fr(r-2,a)}${b.topRight}`),s.push(`${b.vertical}${" ".repeat(r-2)}${b.vertical}`);let l=Me(e.root.children,t,n,0);for(let u of l)s.push(`${b.vertical} ${Jn(u,o)}${b.vertical}`);if(s.push(`${b.vertical}${" ".repeat(r-2)}${b.vertical}`),e.root.durationMs!==void 0&&t.showTimings){let u=e.root.state==="success"?"Completed":"Failed",m=`${it(u,e.root.state,n)} in ${z(e.root.durationMs)}`;s.push(`${b.vertical} ${Jn(m,o)}${b.vertical}`),s.push(`${b.vertical}${" ".repeat(r-2)}${b.vertical}`)}return s.push(`${b.bottomLeft}${b.horizontal.repeat(r-2)}${b.bottomRight}`),s.join(`
|
|
2
|
-
`)}}}function
|
|
3
|
-
`)}}}function
|
|
4
|
-
`)}function
|
|
1
|
+
"use strict";var qe=Object.defineProperty;var Or=Object.getOwnPropertyDescriptor;var Mr=Object.getOwnPropertyNames;var _r=Object.prototype.hasOwnProperty;var $r=(e,t)=>{for(var n in t)qe(e,n,{get:t[n],enumerable:!0})},Nr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Mr(t))!_r.call(e,o)&&o!==n&&qe(e,o,{get:()=>t[o],enumerable:!(r=Or(t,o))||r.enumerable});return e};var Wr=e=>Nr(qe({},"__esModule",{value:!0}),e);var bo={};$r(bo,{CircuitOpenError:()=>de,STEP_TIMEOUT_MARKER:()=>ne,TaggedError:()=>ge,UnwrapError:()=>me,all:()=>qt,allAsync:()=>Jt,allSettled:()=>Gt,allSettledAsync:()=>Zt,andThen:()=>Nt,any:()=>Yt,anyAsync:()=>Qt,bimap:()=>Ht,circuitBreakerPresets:()=>mn,clearStep:()=>sn,compareSnapshots:()=>br,composeMigrations:()=>In,composeValidators:()=>Un,conditionalPolicy:()=>jn,createApprovalChecker:()=>vr,createApprovalStep:()=>on,createApprovalWebhookHandler:()=>hr,createAutotelAdapter:()=>Dn,createAutotelEventHandler:()=>On,createCircuitBreaker:()=>fn,createCombinedLimiter:()=>En,createConcurrencyLimiter:()=>ot,createConditionalHelpers:()=>ln,createConsoleLogger:()=>gr,createDevtools:()=>vt,createEventHandler:()=>Hn,createExpressHandler:()=>Ln,createFileCache:()=>Zn,createHITLCollector:()=>we,createHITLOrchestrator:()=>Er,createHydratingCache:()=>nr,createKVCache:()=>er,createKeyRemoveMigration:()=>Pn,createKeyRenameMigration:()=>Cn,createMemoryApprovalStore:()=>wr,createMemoryCache:()=>Qn,createMemoryWorkflowStateStore:()=>kr,createMockFn:()=>xr,createPolicyApplier:()=>Fn,createPolicyBundle:()=>Vn,createPolicyRegistry:()=>Jn,createRateLimiter:()=>rt,createResultMapper:()=>Wn,createSagaWorkflow:()=>gn,createSimpleHandler:()=>Nn,createSnapshot:()=>Rr,createStatePersistence:()=>tr,createStepCollector:()=>en,createTestClock:()=>Cr,createValueTransformMigration:()=>An,createVersionedState:()=>xn,createVersionedStateLoader:()=>Sn,createWebhookHandler:()=>$n,createWorkflow:()=>tn,createWorkflowHarness:()=>Sr,defaultUnexpectedErrorMapper:()=>Le,defaultValidationErrorMapper:()=>We,deserializeCause:()=>Ee,deserializeEntry:()=>ft,deserializeMeta:()=>lt,deserializeResult:()=>ve,deserializeState:()=>Ue,envPolicy:()=>qn,err:()=>C,errOutcome:()=>Ar,from:()=>At,fromNullable:()=>Ot,fromPromise:()=>It,getPendingApprovals:()=>un,getStepTimeoutMeta:()=>Ye,hasPendingApproval:()=>an,hydrate:()=>Qe,injectApproval:()=>_e,isApprovalRejected:()=>nn,isCircuitOpenError:()=>dn,isErr:()=>St,isMigrationError:()=>vn,isOk:()=>le,isPendingApproval:()=>ee,isQueueFullError:()=>nt,isRateLimitExceededError:()=>kn,isSagaCompensationError:()=>yn,isSerializedResult:()=>jt,isStepComplete:()=>Me,isStepTimeoutError:()=>De,isUnexpectedError:()=>Xe,isValidationError:()=>_n,isVersionIncompatibleError:()=>Tn,map:()=>Mt,mapError:()=>_t,mapErrorTry:()=>Ut,mapTry:()=>Bt,match:()=>$t,mergePolicies:()=>j,migrateState:()=>st,ok:()=>_,okOutcome:()=>Pr,orElse:()=>Ft,orElseAsync:()=>Vt,parseState:()=>Yn,parseVersionedState:()=>Rn,partition:()=>Xt,pendingApproval:()=>rn,quickVisualize:()=>yr,rateLimiterPresets:()=>hn,recover:()=>Kt,recoverAsync:()=>zt,renderDiff:()=>mr,requireFields:()=>Bn,retryPolicies:()=>ie,retryPolicy:()=>X,run:()=>se,runSaga:()=>wn,sendWebhookResponse:()=>it,serializeCause:()=>ke,serializeEntry:()=>dt,serializeMeta:()=>pt,serializeResult:()=>he,serializeState:()=>Be,servicePolicies:()=>Kn,stepOptions:()=>Gn,stringifyState:()=>Xn,stringifyVersionedState:()=>bn,tap:()=>Wt,tapError:()=>Lt,throwOutcome:()=>Ir,timeoutPolicies:()=>ae,timeoutPolicy:()=>G,toWebhookRequest:()=>at,tryAsync:()=>Dt,unless:()=>et,unlessOr:()=>tt,unwrap:()=>bt,unwrapOr:()=>Ct,unwrapOrElse:()=>Pt,validationError:()=>ut,when:()=>$e,whenOr:()=>Ne,withAutotelTracing:()=>Mn,withPolicies:()=>zn,withPolicy:()=>ct});module.exports=Wr(bo);var _=e=>({ok:!0,value:e}),C=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),le=e=>e.ok,St=e=>!e.ok,Xe=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",ne=Symbol.for("step_timeout_marker");function De(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:ne in e}function Ye(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let t=e;return{timeoutMs:t.timeoutMs,stepName:t.stepName,stepKey:t.stepKey,attempt:t.attempt}}if(ne in e)return e[ne]}}var xt=Symbol("early-exit");function Q(e,t){return{[xt]:!0,error:e,meta:t}}function Z(e){return typeof e=="object"&&e!==null&&e[xt]===!0}var Rt=Symbol("mapper-exception");function Lr(e){return{[Rt]:!0,thrown:e}}function Br(e){return typeof e=="object"&&e!==null&&e[Rt]===!0}function Ur(e){return typeof e=="string"?{name:e}:e??{}}function Je(e,t){let{backoff:n,initialDelay:r,maxDelay:o,jitter:s}=t,a;switch(n){case"fixed":a=r;break;case"linear":a=r*e;break;case"exponential":a=r*Math.pow(2,e-1);break}if(a=Math.min(a,o),s){let i=a*.25*Math.random();a=a+i}return Math.floor(a)}function Ge(e){return new Promise(t=>setTimeout(t,e))}var Tt=Symbol("timeout");async function Hr(e,t,n){let r=new AbortController,o=t.error??{type:"STEP_TIMEOUT",stepName:n.name,stepKey:n.key,timeoutMs:t.ms,attempt:n.attempt},s,a=new Promise((c,u)=>{s=setTimeout(()=>{r.abort(),u({[Tt]:!0,error:o})},t.ms)}),i;t.signal?i=Promise.resolve(e(r.signal)):i=Promise.resolve(e());try{return await Promise.race([i,a])}catch(c){if(typeof c=="object"&&c!==null&&c[Tt]===!0){let u=c.error;if(typeof u=="object"&&u!==null&&u.type!=="STEP_TIMEOUT"){let p={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};ne in u?u[ne]=p:Object.defineProperty(u,ne,{value:p,enumerable:!1,writable:!0,configurable:!1})}throw u}throw c}finally{clearTimeout(s)}}var pe={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function se(e,t){let{onError:n,onEvent:r,catchUnexpected:o,workflowId:s,context:a}=t&&typeof t=="object"?t:{},i=s??crypto.randomUUID(),c=!n&&!o,u=[],p=0,f=y=>y??`step_${++p}`,d=y=>{let b=y.context!==void 0||a===void 0?y:{...y,context:a};if(b.type==="step_success"){let P=b.stepId;for(let $=u.length-1;$>=0;$--){let V=u[$];if(V.type==="race"&&!V.winnerId){V.winnerId=P;break}}}r?.(b,a)},m=Q,S=y=>Z(y),E=(y,b)=>c?b?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:y,...b.resultCause!==void 0?{cause:b.resultCause}:{}}}:b?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:y,thrown:b.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:y}}:y,A=y=>y.origin==="result"?y.resultCause:y.thrown,D=y=>({type:"UNEXPECTED_ERROR",cause:y.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:y.error,...y.meta.resultCause!==void 0?{cause:y.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:y.error,thrown:y.meta.thrown}});try{let b=function(M,g){let k=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let v=performance.now(),h=!1;u.push({scopeId:k,type:"parallel"});let N=()=>{if(h)return;h=!0;let T=u.findIndex(I=>I.scopeId===k);T!==-1&&u.splice(T,1),d({type:"scope_end",workflowId:i,scopeId:k,ts:Date.now(),durationMs:performance.now()-v})};d({type:"scope_start",workflowId:i,scopeId:k,scopeType:"parallel",name:M,ts:Date.now()});try{let T=await g();if(N(),!T.ok)throw n?.(T.error,M,a),m(T.error,{origin:"result",resultCause:T.cause});return T.value}catch(T){throw N(),T}})()},P=function(M,g){let k=Object.keys(M),v=g.name??`Parallel(${k.join(", ")})`,h=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let N=performance.now(),T=!1;u.push({scopeId:h,type:"parallel"});let I=()=>{if(T)return;T=!0;let l=u.findIndex(w=>w.scopeId===h);l!==-1&&u.splice(l,1),d({type:"scope_end",workflowId:i,scopeId:h,ts:Date.now(),durationMs:performance.now()-N})};d({type:"scope_start",workflowId:i,scopeId:h,scopeType:"parallel",name:v,ts:Date.now()});try{let l=await new Promise(R=>{if(k.length===0){R([]);return}let B=!1,W=k.length,q=new Array(k.length);for(let J=0;J<k.length;J++){let ce=k[J],Ke=J;Promise.resolve(M[ce]()).catch(F=>C({type:"PROMISE_REJECTED",cause:F},{cause:{type:"PROMISE_REJECTION",reason:F}})).then(F=>{if(!B){if(!F.ok){B=!0,R([{key:ce,result:F}]);return}q[Ke]={key:ce,result:F},W--,W===0&&R(q)}})}});I();let w={};for(let{key:R,result:B}of l){if(!B.ok)throw n?.(B.error,R,a),m(B.error,{origin:"result",resultCause:B.cause});w[R]=B.value}return w}catch(l){throw I(),l}})()};var x=b,L=P;let y=(M,g)=>(async()=>{let k=Ur(g),{name:v,key:h,retry:N,timeout:T}=k,I=f(h),l=r,w=l?performance.now():0;if(!(typeof M=="function")){if(N&&N.attempts>1)throw new Error("step: retry options require a function operation. Direct Promise/Result values cannot be re-executed on retry. Wrap your operation in a function: step(() => yourOperation, { retry: {...} })");if(T)throw new Error("step: timeout options require a function operation. Direct Promise/Result values cannot be wrapped with timeout after they've started. Wrap your operation in a function: step(() => yourOperation, { timeout: {...} })")}let W={attempts:Math.max(1,N?.attempts??1),backoff:N?.backoff??pe.backoff,initialDelay:N?.initialDelay??pe.initialDelay,maxDelay:N?.maxDelay??pe.maxDelay,jitter:N?.jitter??pe.jitter,retryOn:N?.retryOn??pe.retryOn,onRetry:N?.onRetry??pe.onRetry};r&&d({type:"step_start",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now()});let q;for(let F=1;F<=W.attempts;F++){let Dr=l?performance.now():0;try{let U;if(typeof M=="function"?T?U=await Hr(M,T,{name:v,key:h,attempt:F}):U=await M():U=await M,U.ok){let te=performance.now()-w;return d({type:"step_success",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:te}),h&&d({type:"step_complete",workflowId:i,stepKey:h,name:v,ts:Date.now(),durationMs:te,result:U}),U.value}if(q=U,F<W.attempts&&W.retryOn(U.error,F)){let te=Je(F,W);d({type:"step_retry",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),attempt:F+1,maxAttempts:W.attempts,delayMs:te,error:U.error}),W.onRetry(U.error,F,te),await Ge(te);continue}W.attempts>1&&d({type:"step_retries_exhausted",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:performance.now()-w,attempts:F,lastError:U.error});break}catch(U){let te=performance.now()-Dr;if(S(U))throw d({type:"step_aborted",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:te}),U;if(De(U)){let z=Ye(U),ze=T?.ms??z?.timeoutMs??0;if(d({type:"step_timeout",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),timeoutMs:ze,attempt:F}),F<W.attempts&&W.retryOn(U,F)){let je=Je(F,W);d({type:"step_retry",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),attempt:F+1,maxAttempts:W.attempts,delayMs:je,error:U}),W.onRetry(U,F,je),await Ge(je);continue}W.attempts>1&&d({type:"step_retries_exhausted",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:performance.now()-w,attempts:F,lastError:U})}if(F<W.attempts&&W.retryOn(U,F)){let z=Je(F,W);d({type:"step_retry",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),attempt:F+1,maxAttempts:W.attempts,delayMs:z,error:U}),W.onRetry(U,F,z),await Ge(z);continue}W.attempts>1&&!De(U)&&d({type:"step_retries_exhausted",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:performance.now()-w,attempts:F,lastError:U});let Ie=performance.now()-w;if(o){let z;try{z=o(U)}catch(ze){throw Lr(ze)}throw d({type:"step_error",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:Ie,error:z}),h&&d({type:"step_complete",workflowId:i,stepKey:h,name:v,ts:Date.now(),durationMs:Ie,result:C(z,{cause:U}),meta:{origin:"throw",thrown:U}}),n?.(z,v,a),m(z,{origin:"throw",thrown:U})}else{let z={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:U}};throw d({type:"step_error",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:Ie,error:z}),h&&d({type:"step_complete",workflowId:i,stepKey:h,name:v,ts:Date.now(),durationMs:Ie,result:C(z,{cause:U}),meta:{origin:"throw",thrown:U}}),U}}}let J=q,ce=performance.now()-w,Ke=E(J.error,{origin:"result",resultCause:J.cause});throw d({type:"step_error",workflowId:i,stepId:I,stepKey:h,name:v,ts:Date.now(),durationMs:ce,error:Ke}),h&&d({type:"step_complete",workflowId:i,stepKey:h,name:v,ts:Date.now(),durationMs:ce,result:J,meta:{origin:"result",resultCause:J.cause}}),n?.(J.error,v,a),m(J.error,{origin:"result",resultCause:J.cause})})();y.try=(M,g)=>{let k=g.name,v=g.key,h=f(v),N="error"in g?()=>g.error:g.onError,T=r;return(async()=>{let I=T?performance.now():0;r&&d({type:"step_start",workflowId:i,stepId:h,stepKey:v,name:k,ts:Date.now()});try{let l=await M(),w=performance.now()-I;return d({type:"step_success",workflowId:i,stepId:h,stepKey:v,name:k,ts:Date.now(),durationMs:w}),v&&d({type:"step_complete",workflowId:i,stepKey:v,name:k,ts:Date.now(),durationMs:w,result:_(l)}),l}catch(l){let w=N(l),R=performance.now()-I,B=E(w,{origin:"throw",thrown:l});throw d({type:"step_error",workflowId:i,stepId:h,stepKey:v,name:k,ts:Date.now(),durationMs:R,error:B}),v&&d({type:"step_complete",workflowId:i,stepKey:v,name:k,ts:Date.now(),durationMs:R,result:C(w,{cause:l}),meta:{origin:"throw",thrown:l}}),n?.(w,k,a),m(w,{origin:"throw",thrown:l})}})()},y.fromResult=(M,g)=>{let k=g.name,v=g.key,h=f(v),N="error"in g?()=>g.error:g.onError,T=r;return(async()=>{let I=T?performance.now():0;r&&d({type:"step_start",workflowId:i,stepId:h,stepKey:v,name:k,ts:Date.now()});let l=await M();if(l.ok){let w=performance.now()-I;return d({type:"step_success",workflowId:i,stepId:h,stepKey:v,name:k,ts:Date.now(),durationMs:w}),v&&d({type:"step_complete",workflowId:i,stepKey:v,name:k,ts:Date.now(),durationMs:w,result:_(l.value)}),l.value}else{let w=N(l.error),R=performance.now()-I,B=E(w,{origin:"result",resultCause:l.error});throw d({type:"step_error",workflowId:i,stepId:h,stepKey:v,name:k,ts:Date.now(),durationMs:R,error:B}),v&&d({type:"step_complete",workflowId:i,stepKey:v,name:k,ts:Date.now(),durationMs:R,result:C(w,{cause:l.error}),meta:{origin:"result",resultCause:l.error}}),n?.(w,k,a),m(w,{origin:"result",resultCause:l.error})}})()},y.retry=(M,g)=>y(M,{name:g.name,key:g.key,retry:{attempts:g.attempts,backoff:g.backoff,initialDelay:g.initialDelay,maxDelay:g.maxDelay,jitter:g.jitter,retryOn:g.retryOn,onRetry:g.onRetry},timeout:g.timeout}),y.withTimeout=(M,g)=>y(M,{name:g.name,key:g.key,timeout:g}),y.parallel=((...M)=>{if(typeof M[0]=="string"){let g=M[0],k=M[1];return b(g,k)}else{let g=M[0],k=M[1]??{};return P(g,k)}}),y.race=(M,g)=>{let k=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let v=performance.now(),h=!1,N={scopeId:k,type:"race",winnerId:void 0};u.push(N);let T=()=>{if(h)return;h=!0;let I=u.findIndex(l=>l.scopeId===k);I!==-1&&u.splice(I,1),d({type:"scope_end",workflowId:i,scopeId:k,ts:Date.now(),durationMs:performance.now()-v,winnerId:N.winnerId})};d({type:"scope_start",workflowId:i,scopeId:k,scopeType:"race",name:M,ts:Date.now()});try{let I=await g();if(T(),!I.ok)throw n?.(I.error,M,a),m(I.error,{origin:"result",resultCause:I.cause});return I.value}catch(I){throw T(),I}})()},y.allSettled=(M,g)=>{let k=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let v=performance.now(),h=!1;u.push({scopeId:k,type:"allSettled"});let N=()=>{if(h)return;h=!0;let T=u.findIndex(I=>I.scopeId===k);T!==-1&&u.splice(T,1),d({type:"scope_end",workflowId:i,scopeId:k,ts:Date.now(),durationMs:performance.now()-v})};d({type:"scope_start",workflowId:i,scopeId:k,scopeType:"allSettled",name:M,ts:Date.now()});try{let T=await g();if(N(),!T.ok)throw n?.(T.error,M,a),m(T.error,{origin:"result",resultCause:T.cause});return T.value}catch(T){throw N(),T}})()};let V=await e(y);return _(V)}catch(y){if(Br(y))throw y.thrown;if(S(y)){let P=A(y.meta);if(o||n)return C(y.error,{cause:P});if(Xe(y.error))return C(y.error,{cause:P});let $=D(y);return C($,{cause:P})}if(o){let P=o(y);return n?.(P,"unexpected",a),C(P,{cause:y})}let b={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}};return n?.(b,"unexpected",a),C(b,{cause:y})}}se.strict=(e,t)=>se(e,t);var me=class extends Error{constructor(n,r){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=r;this.name="UnwrapError"}},bt=e=>{if(e.ok)return e.value;throw new me(e.error,e.cause)},Ct=(e,t)=>e.ok?e.value:t,Pt=(e,t)=>e.ok?e.value:t(e.error,e.cause);function At(e,t){try{return _(e())}catch(n){return t?C(t(n),{cause:n}):C(n)}}async function It(e,t){try{return _(await e)}catch(n){return t?C(t(n),{cause:n}):C(n)}}async function Dt(e,t){try{return _(await e())}catch(n){return t?C(t(n),{cause:n}):C(n)}}function Ot(e,t){return e!=null?_(e):C(t())}function Mt(e,t){return e.ok?_(t(e.value)):e}function _t(e,t){return e.ok?e:C(t(e.error),{cause:e.cause})}function $t(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Nt(e,t){return e.ok?t(e.value):e}function Wt(e,t){return e.ok&&t(e.value),e}function Lt(e,t){return e.ok||t(e.error,e.cause),e}function Bt(e,t,n){if(!e.ok)return e;try{return _(t(e.value))}catch(r){return C(n(r),{cause:r})}}function Ut(e,t,n){if(e.ok)return e;try{return C(t(e.error),{cause:e.cause})}catch(r){return C(n(r),{cause:r})}}function Ht(e,t,n){return e.ok?_(t(e.value)):C(n(e.error),{cause:e.cause})}function Ft(e,t){return e.ok?e:t(e.error,e.cause)}async function Vt(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function Kt(e,t){return e.ok?_(e.value):_(t(e.error,e.cause))}async function zt(e,t){let n=await e;return n.ok?_(n.value):_(await t(n.error,n.cause))}function Qe(e){return e!==null&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&(e.ok===!0&&"value"in e||e.ok===!1&&"error"in e)?e:null}function jt(e){return Qe(e)!==null}function qt(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return _(t)}async function Jt(e){return e.length===0?_([]):new Promise(t=>{let n=!1,r=e.length,o=new Array(e.length);for(let s=0;s<e.length;s++){let a=s;Promise.resolve(e[a]).catch(i=>C({type:"PROMISE_REJECTED",cause:i},{cause:{type:"PROMISE_REJECTION",reason:i}})).then(i=>{if(!n){if(!i.ok){n=!0,t(i);return}o[a]=i.value,r--,r===0&&t(_(o))}})}})}function Gt(e){let t=[],n=[];for(let r of e)r.ok?t.push(r.value):n.push({error:r.error,cause:r.cause});return n.length>0?C(n):_(t)}function Xt(e){let t=[],n=[];for(let r of e)r.ok?t.push(r.value):n.push(r.error);return{values:t,errors:n}}function Yt(e){if(e.length===0)return C({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let t=null;for(let n of e){if(n.ok)return n;t||(t=n)}return t}async function Qt(e){return e.length===0?C({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let n=!1,r=e.length,o=null;for(let s of e)Promise.resolve(s).catch(a=>C({type:"PROMISE_REJECTED",cause:a},{cause:{type:"PROMISE_REJECTION",reason:a}})).then(a=>{if(!n){if(a.ok){n=!0,t(a);return}o||(o=a),r--,r===0&&t(o)}})})}async function Zt(e){let t=await Promise.all(e.map(o=>Promise.resolve(o).then(s=>({status:"result",result:s})).catch(s=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:s},cause:{type:"PROMISE_REJECTION",reason:s}})))),n=[],r=[];for(let o of t)o.status==="rejected"?r.push({error:o.error,cause:o.cause}):o.result.ok?n.push(o.result.value):r.push({error:o.result.error,cause:o.result.cause});return r.length>0?C(r):_(n)}var ye=class extends Error{_tag};function ge(e,t){return class extends ye{_tag=e;constructor(n,r){let o=t?.message?t.message(n??{}):e;if(super(o),this.name=e,Object.setPrototypeOf(this,new.target.prototype),n&&typeof n=="object"){let{_tag:s,name:a,message:i,stack:c,...u}=n,p=Object.prototype.hasOwnProperty.call(u,"cause"),f=p?u.cause:void 0;p&&delete u.cause;let d=r?.cause!==void 0;if(p&&d)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,u),p&&(this.cause=f),d&&(this.cause=r?.cause)}else r?.cause!==void 0&&(this.cause=r.cause)}}}Object.defineProperty(ge,Symbol.hasInstance,{value:e=>e instanceof ye});(o=>{function e(s){return s instanceof Error}o.isError=e;function t(s){return s instanceof ye}o.isTaggedError=t;function n(s,a){let i=s._tag,c=a[i];return c(s)}o.match=n;function r(s,a,i){let c=s._tag,u=a[c];return u?u(s):i(s)}o.matchPartial=r})(ge||={});function en(){let e=new Map;return{handleEvent:t=>{Me(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Fr(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function Oe(e,t,n){return C(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function Ze(e){return Fr(e)?e.meta:{origin:"result",resultCause:e}}function tn(e,t){async function n(r,o){let s=typeof o=="function",a=s?r:void 0,i=s?o:r,c=crypto.randomUUID(),u=t?.createContext?.(),p={workflowId:c,onEvent:t?.onEvent,context:u!==void 0?u:void 0},f=g=>{let k=g.context!==void 0||u===void 0?g:{...g,context:u};t?.onEvent?.(k,u)},d=t?.shouldRun,m=t?.catchUnexpected;if(d){let g=performance.now();try{let k=await d(c,u),v=performance.now()-g;if(f({type:"hook_should_run",workflowId:c,ts:Date.now(),durationMs:v,result:k,skipped:!k}),!k){let h=new Error("Workflow skipped by shouldRun hook");if(m){let T=m(h);return C(T)}return C({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:h}})}}catch(k){let v=performance.now()-g;if(f({type:"hook_should_run_error",workflowId:c,ts:Date.now(),durationMs:v,error:k}),m){let N=m(k);return C(N)}return C({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:k}})}}let S=t?.onBeforeStart;if(S){let g=performance.now();try{let k=await S(c,u),v=performance.now()-g;if(f({type:"hook_before_start",workflowId:c,ts:Date.now(),durationMs:v,result:k,skipped:!k}),!k){let h=new Error("Workflow skipped by onBeforeStart hook");if(m){let T=m(h);return C(T)}return C({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:h}})}}catch(k){let v=performance.now()-g;if(f({type:"hook_before_start_error",workflowId:c,ts:Date.now(),durationMs:v,error:k}),m){let N=m(k);return C(N)}return C({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:k}})}}let E=Date.now(),A=performance.now();f({type:"workflow_start",workflowId:c,ts:E});let D=t?.resumeState,x=t?.cache;if(D&&!x&&(x=new Map),D&&x){let g=typeof D=="function"?await D():D;for(let[k,v]of g.steps){let{result:h,meta:N}=v;if(h.ok)x.set(k,h);else{let T=N??{origin:"result",resultCause:h.cause};x.set(k,Oe(h.error,T,h.cause))}}}let L=g=>typeof g=="string"?{name:g}:g??{},y=t?.onAfterStep,b=async(g,k)=>{if(!y)return;let v=performance.now();try{await y(g,k,c,u);let h=performance.now()-v;f({type:"hook_after_step",workflowId:c,stepKey:g,ts:Date.now(),durationMs:h})}catch(h){let N=performance.now()-v;throw f({type:"hook_after_step_error",workflowId:c,stepKey:g,ts:Date.now(),durationMs:N,error:h}),h}},P=g=>{if(!x&&!y)return g;let k=async(v,h)=>{let{name:N,key:T}=L(h);if(T&&x&&x.has(T)){f({type:"step_cache_hit",workflowId:c,stepKey:T,name:N,ts:Date.now()});let l=x.get(T);if(l.ok)return l.value;let w=Ze(l.cause);throw Q(l.error,w)}T&&x&&f({type:"step_cache_miss",workflowId:c,stepKey:T,name:N,ts:Date.now()});let I=typeof v=="function"?v:()=>v;try{let l=await g(I,h);return T&&(x&&x.set(T,_(l)),await b(T,_(l))),l}catch(l){if(T&&Z(l)){let w=l,R=w.meta.origin==="result"?w.meta.resultCause:w.meta.thrown,B=Oe(w.error,w.meta,R);x&&x.set(T,B),await b(T,B)}throw l}};return k.try=async(v,h)=>{let{name:N,key:T}=h;if(T&&x&&x.has(T)){f({type:"step_cache_hit",workflowId:c,stepKey:T,name:N,ts:Date.now()});let I=x.get(T);if(I.ok)return I.value;let l=Ze(I.cause);throw Q(I.error,l)}T&&x&&f({type:"step_cache_miss",workflowId:c,stepKey:T,name:N,ts:Date.now()});try{let I=await g.try(v,h);return T&&(x&&x.set(T,_(I)),await b(T,_(I))),I}catch(I){if(T&&Z(I)){let l=I,w=l.meta.origin==="result"?l.meta.resultCause:l.meta.thrown,R=Oe(l.error,l.meta,w);x&&x.set(T,R),await b(T,R)}throw I}},k.fromResult=async(v,h)=>{let{name:N,key:T}=h;if(T&&x&&x.has(T)){f({type:"step_cache_hit",workflowId:c,stepKey:T,name:N,ts:Date.now()});let I=x.get(T);if(I.ok)return I.value;let l=Ze(I.cause);throw Q(I.error,l)}T&&x&&f({type:"step_cache_miss",workflowId:c,stepKey:T,name:N,ts:Date.now()});try{let I=await g.fromResult(v,h);return T&&(x&&x.set(T,_(I)),await b(T,_(I))),I}catch(I){if(T&&Z(I)){let l=I,w=l.meta.origin==="result"?l.meta.resultCause:l.meta.thrown,R=Oe(l.error,l.meta,w);x&&x.set(T,R),await b(T,R)}throw I}},k.parallel=g.parallel,k.race=g.race,k.allSettled=g.allSettled,k.retry=(v,h)=>k(v,{name:h.name,key:h.key,retry:{attempts:h.attempts,backoff:h.backoff,initialDelay:h.initialDelay,maxDelay:h.maxDelay,jitter:h.jitter,retryOn:h.retryOn,onRetry:h.onRetry},timeout:h.timeout}),k.withTimeout=(v,h)=>k(v,{name:h.name,key:h.key,timeout:h}),k},$=s?g=>i(P(g),e,a,p):g=>i(P(g),e,p),V;if(t?.strict===!0){let g=t;V=await se.strict($,{onError:g.onError,onEvent:g.onEvent,catchUnexpected:g.catchUnexpected,workflowId:c,context:u})}else{let g=t;V=await se($,{onError:g?.onError??(()=>{}),onEvent:g?.onEvent,workflowId:c,context:u})}let M=performance.now()-A;return V.ok?f({type:"workflow_success",workflowId:c,ts:Date.now(),durationMs:M}):f({type:"workflow_error",workflowId:c,ts:Date.now(),durationMs:M,error:V.error}),V}return n}function Me(e){return e.type==="step_complete"}function ee(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function nn(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function rn(e,t){return C({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function on(e){return async()=>{let t=await e.checkApproval();switch(t.status){case"pending":return C({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return C({type:"APPROVAL_REJECTED",stepKey:e.key,reason:t.reason});case"approved":return _(t.value)}}}function _e(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:_(t.value)}),{steps:n}}function sn(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function an(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:ee(n.result.error)}function un(e){let t=[];for(let[n,r]of e.steps)!r.result.ok&&ee(r.result.error)&&t.push(n);return t}function we(){let e=new Map;return{handleEvent:t=>{Me(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear(),hasPendingApprovals:()=>{for(let t of e.values())if(!t.result.ok&&ee(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,r]of e)!r.result.ok&&ee(r.result.error)&&t.push({stepKey:n,error:r.result.error});return t},injectApproval:(t,n)=>(e.set(t,{result:_(n)}),{steps:new Map(e)})}}function cn(){return`decision_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function pn(e,t,n){if(!e?.onEvent)return;let r={type:"step_skipped",workflowId:e.workflowId,stepKey:t?.key,name:t?.name,reason:t?.reason,decisionId:n,ts:Date.now()},o=r.context!==void 0||e.context===void 0?r:{...r,context:e.context};e.onEvent(o)}function $e(e,t,n,r){if(e)return t();let o=cn();pn(r,n,o)}function et(e,t,n,r){return $e(!e,t,n,r)}function Ne(e,t,n,r,o){if(e)return t();let s=cn();return pn(o,r,s),n}function tt(e,t,n,r,o){return Ne(!e,t,n,r,o)}function ln(e){return{when:(t,n,r)=>$e(t,n,r,e),unless:(t,n,r)=>et(t,n,r,e),whenOr:(t,n,r,o)=>Ne(t,n,r,o,e),unlessOr:(t,n,r,o)=>tt(t,n,r,o,e)}}var de=class extends Error{type="CIRCUIT_OPEN";circuitName;state;retryAfterMs;constructor(t){super(t.message??`Circuit breaker "${t.circuitName}" is ${t.state}. Retry after ${Math.ceil(t.retryAfterMs/1e3)}s`),this.name="CircuitOpenError",this.circuitName=t.circuitName,this.state=t.state,this.retryAfterMs=t.retryAfterMs}};function dn(e){return typeof e=="object"&&e!==null&&e.type==="CIRCUIT_OPEN"}var Vr={failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3};function fn(e,t){let n={...Vr,...t},r="CLOSED",o=[],s=null,a=null,i=0,c=0;function u(){let E=Date.now();o=o.filter(A=>E-A.timestamp<n.windowSize)}function p(E){if(r!==E){let A=r;r=E,E==="HALF_OPEN"&&(c=0),n.onStateChange?.(A,E,e)}}function f(){return r!=="OPEN"||s===null?!1:Date.now()-s>=n.resetTimeout?(p("HALF_OPEN"),!0):!1}function d(){a=Date.now(),i++,r==="HALF_OPEN"&&(c++,c>=n.halfOpenMax&&(p("CLOSED"),o=[]))}function m(E){let A=Date.now();s=A,u(),o.push({timestamp:A,error:E}),(r==="HALF_OPEN"||r==="CLOSED"&&o.length>=n.failureThreshold)&&p("OPEN")}function S(){if(r==="CLOSED")return 0;if(r==="OPEN"){if(f())return 0;let E=Date.now(),A=s?E-s:0;return Math.max(0,n.resetTimeout-A)}return 0}return{async execute(E,A){let D=S();if(D>0)throw new de({circuitName:e,state:r,retryAfterMs:D});try{let x=await E();return d(),x}catch(x){throw m(x),x}},async executeResult(E,A){let D=S();if(D>0)return C(new de({circuitName:e,state:r,retryAfterMs:D}));try{let x=await E();return x.ok?d():m(x.error),x}catch(x){throw m(x),x}},getState(){return r==="OPEN"&&f(),r},getStats(){return u(),{state:this.getState(),failureCount:o.length,successCount:i,lastFailureTime:s,lastSuccessTime:a,halfOpenSuccesses:c}},reset(){p("CLOSED"),o=[],c=0},forceOpen(){s=Date.now(),p("OPEN")},recordSuccess(){d()},recordFailure(E){m(E??new Error("Manual failure"))}}}var mn={critical:{failureThreshold:3,resetTimeout:6e4,windowSize:3e4,halfOpenMax:1},standard:{failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3},lenient:{failureThreshold:10,resetTimeout:15e3,windowSize:12e4,halfOpenMax:5}};function yn(e){return typeof e=="object"&&e!==null&&e.type==="SAGA_COMPENSATION_ERROR"}function gn(e,t){return async n=>{let r=crypto.randomUUID(),o=performance.now(),s=[],a=u=>{t?.onEvent?.(u)};a({type:"saga_start",sagaId:r,ts:Date.now()});async function i(u){let p=[];a({type:"saga_compensation_start",sagaId:r,ts:Date.now(),stepCount:s.length});let f=performance.now();for(let d=s.length-1;d>=0;d--){let m=s[d];try{await m.compensate(m.value),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!0})}catch(S){p.push({stepName:m.name,error:S}),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!1,error:S})}}return a({type:"saga_compensation_end",sagaId:r,ts:Date.now(),durationMs:performance.now()-f,success:p.length===0,failedCount:p.length}),p}let c={async step(u,p){let f=await u();if(f.ok)return p?.compensate&&s.push({name:p.name,value:f.value,compensate:p.compensate}),f.value;throw Q(f.error,{origin:"result",resultCause:f.cause})},async tryStep(u,p){let f="error"in p?()=>p.error:p.onError;try{let d=await u();return p.compensate&&s.push({name:p.name,value:d,compensate:p.compensate}),d}catch(d){let m=f(d);throw Q(m,{origin:"throw",thrown:d})}},getCompensations(){return s.map(u=>({name:u.name,hasValue:u.value!==void 0}))}};try{let u=await n(c,e),p=performance.now()-o;return a({type:"saga_success",sagaId:r,ts:Date.now(),durationMs:p}),_(u)}catch(u){let p=performance.now()-o,f;Z(u)?f=u.error:f=u,a({type:"saga_error",sagaId:r,ts:Date.now(),durationMs:p,error:f});let d=await i(f);if(d.length>0){let m={type:"SAGA_COMPENSATION_ERROR",originalError:f,compensationErrors:d};if(t?.onError?.(m),t?.throwOnCompensationFailure)throw m;return C(m)}return t?.onError?.(f),Z(u)?C(f):C({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}}async function wn(e,t){let n=crypto.randomUUID(),r=performance.now(),o=[],s=c=>{t?.onEvent?.(c)};s({type:"saga_start",sagaId:n,ts:Date.now()});async function a(c){let u=[];s({type:"saga_compensation_start",sagaId:n,ts:Date.now(),stepCount:o.length});let p=performance.now();for(let f=o.length-1;f>=0;f--){let d=o[f];try{await d.compensate(d.value),s({type:"saga_compensation_step",sagaId:n,stepName:d.name,ts:Date.now(),success:!0})}catch(m){u.push({stepName:d.name,error:m}),s({type:"saga_compensation_step",sagaId:n,stepName:d.name,ts:Date.now(),success:!1,error:m})}}return s({type:"saga_compensation_end",sagaId:n,ts:Date.now(),durationMs:performance.now()-p,success:u.length===0,failedCount:u.length}),u}let i={async step(c,u){let p=await c();if(p.ok)return u?.compensate&&o.push({name:u.name,value:p.value,compensate:u.compensate}),p.value;throw Q(p.error,{origin:"result",resultCause:p.cause})},async tryStep(c,u){let p="error"in u?()=>u.error:u.onError;try{let f=await c();return u.compensate&&o.push({name:u.name,value:f,compensate:u.compensate}),f}catch(f){let d=p(f);throw Q(d,{origin:"throw",thrown:f})}},getCompensations(){return o.map(c=>({name:c.name,hasValue:c.value!==void 0}))}};try{let c=await e(i),u=performance.now()-r;return s({type:"saga_success",sagaId:n,ts:Date.now(),durationMs:u}),_(c)}catch(c){let u=performance.now()-r,p;Z(c)?p=c.error:p=c,s({type:"saga_error",sagaId:n,ts:Date.now(),durationMs:u,error:p});let f=await a(p);if(f.length>0){let d={type:"SAGA_COMPENSATION_ERROR",originalError:p,compensationErrors:f};if(t?.onError?.(d),t?.throwOnCompensationFailure)throw d;return C(d)}return t?.onError?.(p),Z(c)?C(p):C({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:c}})}}function kn(e){return typeof e=="object"&&e!==null&&e.type==="RATE_LIMIT_EXCEEDED"}function nt(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function rt(e,t){let{maxPerSecond:n,strategy:r="wait"}=t,o=t.burstCapacity??n*2,s=o,a=Date.now(),i=n/1e3,c=[];function u(){let d=Date.now(),S=(d-a)*i;s=Math.min(o,s+S),a=d}function p(){if(u(),s>=1)return s-=1,0;let d=1-s;return Math.ceil(d/i)}async function f(){return new Promise(d=>{let m=()=>{let S=p();S===0?d():(c.push(m),setTimeout(()=>{let E=c.indexOf(m);E!==-1&&(c.splice(E,1),m())},S))};m()})}return{async execute(d){let m=p();if(m>0){if(r==="reject")throw{type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m};await f()}return d()},async executeResult(d){let m=p();if(m>0){if(r==="reject")return C({type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m});await f()}return d()},getStats(){return u(),{availableTokens:Math.floor(s),maxTokens:o,tokensPerSecond:n,waitingCount:c.length}},reset(){s=o,a=Date.now(),c.length=0}}}function ot(e,t){let{maxConcurrent:n,strategy:r="queue",maxQueueSize:o=1/0}=t,s=0,a=[];async function i(){if(s<n){s++;return}if(r==="reject")throw{type:"QUEUE_FULL",limiterName:e,queueSize:a.length,maxQueueSize:o};if(a.length>=o)throw{type:"QUEUE_FULL",limiterName:e,queueSize:a.length,maxQueueSize:o};return new Promise((u,p)=>{a.push({resolve:u,reject:p})})}function c(){s--,a.length>0&&s<n&&(s++,a.shift()?.resolve())}return{async execute(u){await i();try{return await u()}finally{c()}},async executeAll(u){let p=new Array(u.length),f=[];for(let d=0;d<u.length;d++){let m=d,S=this.execute(u[m]).then(E=>{p[m]=E});f.push(S)}return await Promise.all(f),p},async executeResult(u){try{await i()}catch(p){if(nt(p))return C(p);throw p}try{return await u()}finally{c()}},getStats(){return{activeCount:s,maxConcurrent:n,queueSize:a.length,maxQueueSize:o}},reset(){for(s=0;a.length>0;)a.shift()?.reject(new Error("Limiter reset"))}}}function En(e,t){let n=t.rate?rt(`${e}-rate`,t.rate):void 0,r=t.concurrency?ot(`${e}-concurrency`,t.concurrency):void 0;return{rate:n,concurrency:r,async execute(o){let s=o;if(n){let a=s;s=()=>n.execute(a)}return r?r.execute(s):s()}}}var hn={api:{maxPerSecond:10,burstCapacity:20,strategy:"wait"},database:{maxConcurrent:10,strategy:"queue",maxQueueSize:100},external:{maxPerSecond:5,burstCapacity:10,strategy:"wait"}};function vn(e){return typeof e=="object"&&e!==null&&e.type==="MIGRATION_ERROR"}function Tn(e){return typeof e=="object"&&e!==null&&e.type==="VERSION_INCOMPATIBLE"}async function st(e,t,n){let r=e.state,o=e.version;if(o>t)return C({type:"VERSION_INCOMPATIBLE",stateVersion:o,currentVersion:t,reason:"State version is higher than current workflow version. Cannot downgrade."});if(o===t)return _({version:o,state:r});for(;o<t;){let s=n[o];if(!s)return C({type:"VERSION_INCOMPATIBLE",stateVersion:e.version,currentVersion:t,reason:`No migration found for version ${o} to ${o+1}`});try{r=await s(r),o++}catch(a){return C({type:"MIGRATION_ERROR",fromVersion:o,toVersion:o+1,cause:a})}}return _({version:o,state:r})}function Sn(e){let{version:t,migrations:n={},strictVersioning:r=!0}=e;return async o=>{if(!o)return _(void 0);if(r&&o.version>t)return C({type:"VERSION_INCOMPATIBLE",stateVersion:o.version,currentVersion:t,reason:"Saved state is from a newer workflow version"});if(o.version===t)return _(o.state);let s=await st(o,t,n);return s.ok?_(s.value.state):s}}function xn(e,t){return{version:t,state:e}}function Rn(e){if(!e)return null;try{let t=typeof e=="string"?JSON.parse(e):e;if(typeof t!="object"||t===null||!("version"in t)||typeof t.version!="number"||!("state"in t)||!t.state||!Array.isArray(t.state.steps))return null;let n=t,r=new Map(n.state.steps);return{version:n.version,state:{steps:r}}}catch{return null}}function bn(e){return JSON.stringify({version:e.version,state:{steps:Array.from(e.state.steps.entries())}})}function Cn(e){return t=>{let n=new Map;for(let[r,o]of t.steps){let s=e[r]??r;n.set(s,o)}return{steps:n}}}function Pn(e){let t=new Set(e);return n=>{let r=new Map;for(let[o,s]of n.steps)t.has(o)||r.set(o,s);return{steps:r}}}function An(e){return t=>{let n=new Map;for(let[r,o]of t.steps){let s=e[r];n.set(r,s?s(o):o)}return{steps:n}}}function In(e){return async t=>{let n=t;for(let r of e)n=await r(n);return n}}function Dn(e={}){let{serviceName:t="workflow",createStepSpans:n=!0,recordMetrics:r=!0,defaultAttributes:o={},recordRetryEvents:s=!0,markErrorsOnSpan:a=!0}=e,i={workflows:new Map,steps:new Map},c={stepDurations:[],retryCount:0,errorCount:0,cacheHits:0,cacheMisses:0,defaultAttributes:o};function u(f,d){return f?`${t}.${f}`:d?`${t}.step.${d}`:`${t}.step`}function p(f){switch(f.type){case"workflow_start":i.workflows.set(f.workflowId,{workflowId:f.workflowId,startTime:f.ts});break;case"workflow_success":case"workflow_error":i.workflows.get(f.workflowId)&&i.workflows.delete(f.workflowId),f.type==="workflow_error"&&a&&c.errorCount++;break;case"step_start":if(n){let d=f.stepId;i.steps.set(d,{workflowId:f.workflowId,stepId:d,stepKey:f.stepKey,name:f.name,startTime:f.ts})}break;case"step_success":case"step_error":if(n){let d=f.stepId,m=i.steps.get(d);m&&(i.steps.delete(d),r&&c.stepDurations.push({name:u(m.name,m.stepKey),durationMs:f.durationMs,success:f.type==="step_success",attributes:Object.keys(o).length>0?{...o}:void 0}),f.type==="step_error"&&a&&c.errorCount++)}break;case"step_retry":s&&c.retryCount++;break;case"step_cache_hit":c.cacheHits++;break;case"step_cache_miss":c.cacheMisses++;break;default:break}}return{handleEvent:p,getActiveSpansCount(){return{workflows:i.workflows.size,steps:i.steps.size}},getMetrics(){return{...c,stepDurations:[...c.stepDurations]}},reset(){i.workflows.clear(),i.steps.clear(),c.stepDurations.length=0,c.retryCount=0,c.errorCount=0,c.cacheHits=0,c.cacheMisses=0}}}function On(e){let{serviceName:t="workflow",includeStepDetails:n=!0}=e??{};return r=>{if(process.env.AUTOTEL_DEBUG==="true"){let o=`[${t}]`;switch(r.type){case"workflow_start":console.log(`${o} Workflow started: ${r.workflowId}`);break;case"workflow_success":console.log(`${o} Workflow success: ${r.workflowId} (${r.durationMs}ms)`);break;case"workflow_error":console.log(`${o} Workflow error: ${r.workflowId}`,r.error);break;case"step_start":n&&console.log(`${o} Step started: ${r.name??r.stepKey??r.stepId}`);break;case"step_success":n&&console.log(`${o} Step success: ${r.name??r.stepKey??r.stepId} (${r.durationMs}ms)`);break;case"step_error":n&&console.log(`${o} Step error: ${r.name??r.stepKey??r.stepId}`,r.error);break;case"step_retry":console.log(`${o} Step retry: ${r.name??r.stepKey??r.stepId} (attempt ${r.attempt}/${r.maxAttempts})`);break}}}}function Mn(e,t){let{serviceName:n="workflow"}=t??{};return async(r,o,s)=>{let a=`${n}.${r}`;return e(a,async i=>{if(s)for(let[c,u]of Object.entries(s))i.setAttribute(c,u);return o()})}}function _n(e){return typeof e=="object"&&e!==null&&e.type==="VALIDATION_ERROR"}function We(e){return{status:400,body:{error:{type:e.type,message:e.message,details:e.field?{field:e.field}:e.details}}}}function Le(e){return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}}}function $n(e,t,n){let{validateInput:r,mapResult:o,mapValidationError:s=We,mapUnexpectedError:a=Le,beforeValidation:i,afterResponse:c}=n;return async u=>{try{let p=i?await i(u):u,f=await r(p);if(!le(f)){let S=s(f.error,p);return c?await c(S,p):S}let d=await e(f.value,(S,E)=>t(S,E,f.value)),m=o(d,p);return c?await c(m,p):m}catch(p){let f=a(p,u);return c?await c(f,u):f}}}function Nn(e){let{validateInput:t,handler:n,mapResult:r,mapValidationError:o=We,mapUnexpectedError:s=Le}=e;return async a=>{try{let i=await t(a);if(!le(i))return o(i.error,a);let c=await n(i.value,a);return r(c,a)}catch(i){return s(i,a)}}}function Wn(e,t={}){let{defaultStatus:n=500,successStatus:r=200}=t,o=new Map;for(let s of e)o.set(s.error,s);return s=>{if(s.ok)return{status:r,body:s.value};if(typeof s.error=="object"&&s.error!==null&&s.error.type==="UNEXPECTED_ERROR")return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}};let a=o.get(s.error);return a?{status:a.status,body:{error:{type:String(a.error),message:a.message}}}:{status:n,body:{error:{type:String(s.error)}}}}}function at(e){return{method:e.method,path:e.path,headers:e.headers,body:e.body,query:e.query,params:e.params,raw:e}}function it(e,t){t.headers&&e.set(t.headers),e.status(t.status).json(t.body)}function Ln(e){return async(t,n)=>{let r=at(t),o=await e(r);it(n,o)}}function ut(e,t,n){return{type:"VALIDATION_ERROR",message:e,field:t,details:n}}function Bn(e){return t=>{for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return C(ut(`Missing required field: ${n}`,n));return _(void 0)}}function Un(...e){return t=>{for(let n of e){let r=n(t);if(!r.ok)return r}return _(void 0)}}function Hn(e,t,n){let{validatePayload:r,mapResult:o}=n;return async s=>{try{let a=r(s);if(!le(a))return{success:!1,ack:!0,error:{type:a.error.type,message:a.error.message,retryable:!1}};let i=await e(a.value,(c,u)=>t(c,u,a.value));return o(i,s)}catch(a){return{success:!1,ack:!1,error:{type:"UNEXPECTED_ERROR",message:a instanceof Error?a.message:String(a),retryable:!0}}}}}function j(...e){let t={};for(let n of e)n.name!==void 0&&(t.name=n.name),n.key!==void 0&&(t.key=n.key),n.retry!==void 0&&(t.retry=t.retry?{...t.retry,...n.retry}:{...n.retry}),n.timeout!==void 0&&(t.timeout=t.timeout?{...t.timeout,...n.timeout}:{...n.timeout});return t}function Fn(...e){let t=j(...e);return n=>j(t,typeof n=="string"?{name:n}:n??{})}function Vn(e,...t){return{name:e,policy:j(...t)}}function X(e){return{retry:e}}var ie={none:X({attempts:1}),transient:X({attempts:3,backoff:"exponential",initialDelay:100,maxDelay:1e3,jitter:!0}),standard:X({attempts:3,backoff:"exponential",initialDelay:200,maxDelay:5e3,jitter:!0}),aggressive:X({attempts:5,backoff:"exponential",initialDelay:500,maxDelay:3e4,jitter:!0}),fixed:(e,t)=>X({attempts:e,backoff:"fixed",initialDelay:t,jitter:!1}),linear:(e,t)=>X({attempts:e,backoff:"linear",initialDelay:t,jitter:!0}),custom:e=>X({backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,...e})};function G(e){return{timeout:e}}var ae={none:{},fast:G({ms:1e3}),api:G({ms:5e3}),extended:G({ms:3e4}),long:G({ms:12e4}),ms:e=>G({ms:e}),seconds:e=>G({ms:e*1e3}),withError:(e,t)=>G({ms:e,error:t}),withSignal:e=>G({ms:e,signal:!0})},Kn={httpApi:j(ae.api,ie.standard),database:j(ae.extended,X({attempts:2,backoff:"exponential",initialDelay:100,maxDelay:2e3,jitter:!0})),cache:j(ae.fast,ie.none),messageQueue:j(ae.extended,ie.aggressive),fileSystem:j(ae.long,ie.standard),rateLimited:j(G({ms:1e4}),X({attempts:5,backoff:"linear",initialDelay:1e3,maxDelay:1e4,jitter:!0}))};function ct(e,t){return j(e,typeof t=="string"?{name:t}:t??{})}function zn(e,t){let n=typeof t=="string"?{name:t}:t??{};return j(...e,n)}function jn(e,t,n={}){return e?t:n}function qn(e,t=process.env.NODE_ENV??"development",n={}){return e[t]??n}function Jn(){let e=new Map;return{register(t,n){e.set(t,n)},get(t){return e.get(t)},has(t){return e.has(t)},names(){return Array.from(e.keys())},apply(t,n){let r=e.get(t);if(!r)throw new Error(`Policy not found: ${t}`);return ct(r,n)}}}function Gn(){let e=[],t={name(n){return e.push({name:n}),t},key(n){return e.push({key:n}),t},policy(n){return e.push(n),t},timeout(n){return e.push(G({ms:n})),t},retry(n){return e.push(X(n)),t},retries(n){return e.push(ie.custom({attempts:n})),t},build(){return j(...e)}};return t}function ke(e){if(e===void 0)return{type:"undefined"};if(e instanceof Error)return{type:"error",errorName:e.name,errorMessage:e.message,errorStack:e.stack};try{return JSON.stringify(e),{type:"value",value:e}}catch{return{type:"value",value:String(e)}}}function Ee(e){if(e.type!=="undefined"){if(e.type==="error"){let t=new Error(e.errorMessage??"Unknown error");return t.name=e.errorName??"Error",e.errorStack&&(t.stack=e.errorStack),t}return e.value}}function he(e){return e.ok?{ok:!0,value:e.value}:{ok:!1,error:e.error,cause:e.cause!==void 0?ke(e.cause):void 0}}function ve(e){if(e.ok)return _(e.value);let t=e.cause?Ee(e.cause):void 0;return C(e.error,t!==void 0?{cause:t}:void 0)}function pt(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause!==void 0?ke(e.resultCause):void 0}:{origin:"throw",thrown:ke(e.thrown)}}function lt(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause?Ee(e.resultCause):void 0}:{origin:"throw",thrown:e.thrown?Ee(e.thrown):void 0}}function dt(e){return{result:he(e.result),meta:e.meta?pt(e.meta):void 0}}function ft(e){return{result:ve(e.result),meta:e.meta?lt(e.meta):void 0}}function Be(e,t){let n={};for(let[r,o]of e.steps)n[r]=dt(o);return{version:1,entries:n,metadata:t}}function Ue(e){let t=new Map;for(let[n,r]of Object.entries(e.entries))t.set(n,ft(r));return{steps:t}}function Xn(e,t){return JSON.stringify(Be(e,t))}function Yn(e){let t=JSON.parse(e);return Ue(t)}function Qn(e={}){let{maxSize:t,ttl:n}=e,r=new Map,o=i=>n?Date.now()-i>n:!1,s=()=>{if(n)for(let[i,c]of r)o(c.timestamp)&&r.delete(i)},a=()=>{if(!t||r.size<t)return;let i,c=1/0;for(let[u,p]of r)p.timestamp<c&&(c=p.timestamp,i=u);i&&r.delete(i)};return{get(i){s();let c=r.get(i);if(c){if(o(c.timestamp)){r.delete(i);return}return c.result}},set(i,c){s(),a(),r.set(i,{result:c,timestamp:Date.now()})},has(i){s();let c=r.get(i);return c?o(c.timestamp)?(r.delete(i),!1):!0:!1},delete(i){return r.delete(i)},clear(){r.clear()}}}function Zn(e){let{directory:t,extension:n=".json",fs:r}=e;if(!r)throw new Error("File system interface is required. Pass fs option with readFile, writeFile, etc.");let o=a=>{let i=a.replace(/[^a-zA-Z0-9_-]/g,"_");return`${t}/${i}${n}`},s=new Map;return{async init(){await r.mkdir(t,{recursive:!0})},get(a){return s.get(a)},async getAsync(a){let i=o(a);try{if(!await r.exists(i))return;let c=await r.readFile(i),u=JSON.parse(c),p=ve(u);return s.set(a,p),p}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let c=o(a),u=he(i);await r.writeFile(c,JSON.stringify(u,null,2)),s.set(a,i)},has(a){return s.has(a)},delete(a){return s.delete(a)},async deleteAsync(a){let i=o(a);try{return await r.unlink(i),s.delete(a),!0}catch{return!1}},clear(){s.clear()},async clearAsync(){try{let a=await r.readdir(t);for(let i of a)i.endsWith(n)&&await r.unlink(`${t}/${i}`);s.clear()}catch{}}}}function er(e){let{store:t,prefix:n="workflow:",ttl:r}=e,o=a=>`${n}${a}`,s=new Map;return{get(a){return s.get(a)},async getAsync(a){let i=await t.get(o(a));if(i)try{let c=JSON.parse(i),u=ve(c);return s.set(a,u),u}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let c=he(i);await t.set(o(a),JSON.stringify(c),r?{ttl:r}:void 0),s.set(a,i)},has(a){return s.has(a)},async hasAsync(a){return t.exists(o(a))},delete(a){return s.delete(a)},async deleteAsync(a){return s.delete(a),t.delete(o(a))},clear(){s.clear()},async clearAsync(){let a=await t.keys(`${n}*`);for(let i of a)await t.delete(i);s.clear()}}}function tr(e,t="workflow:state:"){let n=r=>`${t}${r}`;return{async save(r,o,s){let a=Be(o,s);await e.set(n(r),JSON.stringify(a))},async load(r){let o=await e.get(n(r));if(o)try{let s=JSON.parse(o);return Ue(s)}catch{return}},async delete(r){return e.delete(n(r))},async list(){return(await e.keys(`${t}*`)).map(o=>o.slice(t.length))}}}function nr(e,t,n){let r=!1;return{async hydrate(){if(r)return;let o=await t.load(n);if(o)for(let[s,a]of o.steps)e.set(s,a.result);r=!0},get(o){return e.get(o)},set(o,s){e.set(o,s)},has(o){return e.has(o)},delete(o){return e.delete(o)},clear(){e.clear()}}}function K(e){if(e<1e3)return`${Math.round(e)}ms`;if(e<6e4)return`${(e/1e3).toFixed(1).replace(/\.0$/,"")}s`;let t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return n===0?`${t}m`:`${t}m ${n}s`}function mt(){return`node_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Kr(e){for(let t of e)if((t.type==="parallel"||t.type==="race"||t.type==="sequence")&&!t.id.startsWith("detected_")||"decisionId"in t)return!0;return!1}function yt(e,t={}){if(Kr(e))return e;let{minOverlapMs:n=0,maxGapMs:r=5}=t,o=[],s=[];for(let u=0;u<e.length;u++){let p=e[u];p.type==="step"&&p.startTs!==void 0?o.push({node:p,startTs:p.startTs,endTs:p.endTs??p.startTs+(p.durationMs??0),originalIndex:u}):s.push({node:p,originalIndex:u})}if(o.length<=1)return e;o.sort((u,p)=>u.startTs-p.startTs);let a=[],i=[o[0]];for(let u=1;u<o.length;u++){let p=o[u],f=Math.min(...i.map(A=>A.startTs)),d=Math.max(...i.map(A=>A.endTs)),m=p.startTs<=f+r,S=p.startTs<d;if(!m&&!S){a.push(i),i=[p];continue}let E=S?Math.min(p.endTs,d)-p.startTs:0;m||E>=n?i.push(p):(a.push(i),i=[p])}a.push(i);let c=[];for(let u of a){let p=Math.min(...u.map(f=>f.originalIndex));if(u.length===1)c.push({node:u[0].node,position:p});else{let f=u.map(E=>E.node),d=Math.min(...u.map(E=>E.startTs)),m=Math.max(...u.map(E=>E.endTs)),S={type:"parallel",id:`detected_parallel_${d}`,name:`${f.length} parallel steps`,state:zr(f),mode:"all",children:f,startTs:d,endTs:m,durationMs:m-d};c.push({node:S,position:p})}}for(let{node:u,originalIndex:p}of s)c.push({node:u,position:p});return c.sort((u,p)=>u.position-p.position),c.map(u=>u.node)}function zr(e){return e.some(s=>s.state==="error")?"error":e.some(s=>s.state==="running")?"running":e.some(s=>s.state==="pending")?"pending":(e.every(s=>s.state==="success"||s.state==="cached"),"success")}function Te(e={}){let{detectParallel:t=!0,parallelDetection:n,enableSnapshots:r=!1,maxSnapshots:o=1e3}=e,s,a,i="pending",c,u,p=new Map,f=[],d=[],m=[],S=Date.now(),E=S,A={onAfterStep:new Map},D=[],x=0;function L(l){return l.stepId??l.stepKey??l.name??mt()}function y(l){if(d.length>0){let w=d[d.length-1];for(let B of w.branches.values())if(B.taken){B.children.push(l),E=Date.now();return}let R=Array.from(w.branches.values())[0];if(R){R.children.push(l),E=Date.now();return}}f.length>0?f[f.length-1].children.push(l):m.push(l),E=Date.now()}function b(l){if(!r)return;let w=k(),R=new Map;for(let[W,q]of p)R.set(W,{id:q.id,name:q.name,key:q.key,startTs:q.startTs,retryCount:q.retryCount,timedOut:q.timedOut,timeoutMs:q.timeoutMs});let B={id:`snapshot_${x}`,eventIndex:x,event:structuredClone(l),ir:structuredClone(w),timestamp:Date.now(),activeSteps:R};D.push(B),D.length>o&&D.shift(),x++}function P(l){switch(l.type){case"workflow_start":s=l.workflowId,a=l.ts,i="running",S=Date.now(),E=S,A.onAfterStep=new Map;break;case"workflow_success":i="success",u=l.durationMs,E=Date.now();break;case"workflow_error":i="error",c=l.error,u=l.durationMs,E=Date.now();break;case"step_start":{let w=L(l);p.set(w,{id:w,name:l.name,key:l.stepKey,startTs:l.ts,retryCount:0,timedOut:!1}),E=Date.now();break}case"step_success":{let w=L(l),R=p.get(w);if(R){let B={type:"step",id:R.id,name:R.name,key:R.key,state:"success",startTs:R.startTs,endTs:l.ts,durationMs:l.durationMs,...R.retryCount>0&&{retryCount:R.retryCount},...R.timedOut&&{timedOut:!0,timeoutMs:R.timeoutMs}};y(B),p.delete(w)}break}case"step_error":{let w=L(l),R=p.get(w);if(R){let B={type:"step",id:R.id,name:R.name,key:R.key,state:"error",startTs:R.startTs,endTs:l.ts,durationMs:l.durationMs,error:l.error,...R.retryCount>0&&{retryCount:R.retryCount},...R.timedOut&&{timedOut:!0,timeoutMs:R.timeoutMs}};y(B),p.delete(w)}break}case"step_aborted":{let w=L(l),R=p.get(w);if(R){let B={type:"step",id:R.id,name:R.name,key:R.key,state:"aborted",startTs:R.startTs,endTs:l.ts,durationMs:l.durationMs,...R.retryCount>0&&{retryCount:R.retryCount},...R.timedOut&&{timedOut:!0,timeoutMs:R.timeoutMs}};y(B),p.delete(w)}break}case"step_cache_hit":{let R={type:"step",id:L(l),name:l.name,key:l.stepKey,state:"cached",startTs:l.ts,endTs:l.ts,durationMs:0};y(R);break}case"step_cache_miss":break;case"step_complete":break;case"step_timeout":{let w=L(l),R=p.get(w);R&&(R.timedOut=!0,R.timeoutMs=l.timeoutMs),E=Date.now();break}case"step_retry":{let w=L(l),R=p.get(w);R&&(R.retryCount=(l.attempt??1)-1),E=Date.now();break}case"step_retries_exhausted":E=Date.now();break;case"step_skipped":{let R={type:"step",id:L(l),name:l.name,key:l.stepKey,state:"skipped",startTs:l.ts,endTs:l.ts,durationMs:0};y(R);break}case"hook_should_run":{let w={type:"shouldRun",state:"success",ts:l.ts,durationMs:l.durationMs,context:{result:l.result,skipped:l.skipped}};A.shouldRun=w,E=Date.now();break}case"hook_should_run_error":{let w={type:"shouldRun",state:"error",ts:l.ts,durationMs:l.durationMs,error:l.error};A.shouldRun=w,E=Date.now();break}case"hook_before_start":{let w={type:"onBeforeStart",state:"success",ts:l.ts,durationMs:l.durationMs,context:{result:l.result,skipped:l.skipped}};A.onBeforeStart=w,E=Date.now();break}case"hook_before_start_error":{let w={type:"onBeforeStart",state:"error",ts:l.ts,durationMs:l.durationMs,error:l.error};A.onBeforeStart=w,E=Date.now();break}case"hook_after_step":{let w={type:"onAfterStep",state:"success",ts:l.ts,durationMs:l.durationMs,context:{stepKey:l.stepKey}};A.onAfterStep.set(l.stepKey,w),E=Date.now();break}case"hook_after_step_error":{let w={type:"onAfterStep",state:"error",ts:l.ts,durationMs:l.durationMs,error:l.error,context:{stepKey:l.stepKey}};A.onAfterStep.set(l.stepKey,w),E=Date.now();break}}b(l)}function $(l){if(l.type==="scope_start")f.push({id:l.scopeId,name:l.name,type:l.scopeType,startTs:l.ts,children:[]}),E=Date.now();else if(l.type==="scope_end"){let w=f.pop();if(w){let R=w.type==="race"?{type:"race",id:w.id,name:w.name,state:M(w.children),startTs:w.startTs,endTs:l.ts,durationMs:l.durationMs,children:w.children,winnerId:l.winnerId}:{type:"parallel",id:w.id,name:w.name,state:M(w.children),startTs:w.startTs,endTs:l.ts,durationMs:l.durationMs,children:w.children,mode:w.type==="allSettled"?"allSettled":"all"};y(R)}}}function V(l){if(l.type==="decision_start")d.push({id:l.decisionId,name:l.name,condition:l.condition,decisionValue:l.decisionValue,startTs:l.ts,branches:new Map}),E=Date.now();else if(l.type==="decision_branch"){let w=d[d.length-1];if(w&&w.id===l.decisionId){let R=l.branchLabel,B=w.branches.get(R);B?B.taken=l.taken:w.branches.set(R,{label:l.branchLabel,condition:l.condition,taken:l.taken,children:[]}),E=Date.now()}}else if(l.type==="decision_end"){let w=d.pop();if(w&&w.id===l.decisionId){let R=Array.from(w.branches.values()),B={type:"decision",id:w.id,name:w.name,state:M(R.flatMap(W=>W.taken?W.children:[])),startTs:w.startTs,endTs:l.ts,durationMs:l.durationMs,condition:w.condition,decisionValue:w.decisionValue,branchTaken:l.branchTaken??w.branchTaken,branches:R};y(B)}}}function M(l){return l.length===0?"success":l.some(W=>W.state==="error")?"error":l.every(W=>W.state==="success"||W.state==="cached")?"success":l.some(W=>W.state==="running")?"running":"pending"}function g(){let l=[...m];for(let[,w]of p)l.push({type:"step",id:w.id,name:w.name,key:w.key,state:"running",startTs:w.startTs,...w.retryCount>0&&{retryCount:w.retryCount},...w.timedOut&&{timedOut:!0,timeoutMs:w.timeoutMs}});return l}function k(){let l=g();t&&(l=yt(l,n));let w={type:"workflow",id:s??mt(),workflowId:s??"unknown",state:i,startTs:a,durationMs:u,children:l,error:c},R=A.shouldRun!==void 0||A.onBeforeStart!==void 0||A.onAfterStep.size>0;return{root:w,metadata:{createdAt:S,lastUpdatedAt:E},...R&&{hooks:A}}}function v(){s=void 0,a=void 0,i="pending",c=void 0,u=void 0,p.clear(),f.length=0,d.length=0,m=[],S=Date.now(),E=S,A={onAfterStep:new Map},D.length=0,x=0}function h(){return[...D]}function N(l){return D[l]}function T(l){return D[l]?.ir}function I(){D.length=0,x=0}return{handleEvent:P,handleScopeEvent:$,handleDecisionEvent:V,getIR:k,reset:v,getSnapshots:h,getSnapshotAt:N,getIRAt:T,clearSnapshots:I,get hasActiveSteps(){return p.size>0},get state(){return i},get snapshotCount(){return D.length},get snapshotsEnabled(){return r}}}function re(e){return e.type==="step"}function Se(e){return e.type==="parallel"}function xe(e){return e.type==="race"}function Re(e){return e.type==="decision"}var gt="\x1B[0m",jr="\x1B[1m",or="\x1B[2m",qr="\x1B[31m",Jr="\x1B[32m",Gr="\x1B[33m",Xr="\x1B[34m",rr="\x1B[90m",Yr="\x1B[37m";function oe(e,t){return t?`${t}${e}${gt}`:e}function be(e){return`${jr}${e}${gt}`}function H(e){return`${or}${e}${gt}`}var ue={pending:Yr,running:Gr,success:Jr,error:qr,aborted:rr,cached:Xr,skipped:or+rr};function Qr(e){switch(e){case"pending":return"\u25CB";case"running":return"\u27F3";case"success":return"\u2713";case"error":return"\u2717";case"aborted":return"\u2298";case"cached":return"\u21BA";case"skipped":return"\u2298"}}function Ce(e,t){let n=Qr(e);return oe(n,t[e])}function wt(e,t,n){return oe(e,n[t])}function sr(e){return e.replace(/\x1b\[[0-9;]*m/g,"")}var O={topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502",teeRight:"\u251C",teeLeft:"\u2524",teeDown:"\u252C",teeUp:"\u2534",cross:"\u253C"},fe={cold:"\x1B[34m",cool:"\x1B[36m",neutral:"",warm:"\x1B[33m",hot:"\x1B[31m",critical:"\x1B[41m"},Zr="\x1B[0m";function eo(e){return e<.2?fe.cold:e<.4?fe.cool:e<.6?fe.neutral:e<.8?fe.warm:e<.95?fe.hot:fe.critical}function ar(e,t){let n=eo(t);return n?`${n}${e}${Zr}`:e}var ir="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function to(e,t=10){if(e.length===0)return"";let n=e.slice(-t),r=Math.min(...n),s=Math.max(...n)-r||1;return n.map(a=>{let i=(a-r)/s,c=Math.floor(i*(ir.length-1));return ir[c]}).join("")}function kt(e,t){let n=sr(e).length,r=Math.max(0,t-n);return e+" ".repeat(r)}function no(e,t){if(!t)return O.horizontal.repeat(e);let n=` ${t} `,r=e-n.length;if(r<4)return O.horizontal.repeat(e);let o=2,s=r-o;return O.horizontal.repeat(o)+n+O.horizontal.repeat(s)}function ur(e,t,n){let r=e.state==="success"?oe("\u2699",n.success):oe("\u26A0",n.error),o=e.durationMs!==void 0?H(` [${K(e.durationMs)}]`):"",s="";e.type==="shouldRun"&&e.context?.skipped?s=H(" \u2192 workflow skipped"):e.type==="shouldRun"&&e.context?.result===!0?s=H(" \u2192 proceed"):e.type==="onBeforeStart"&&e.context?.skipped?s=H(" \u2192 workflow skipped"):e.type==="onAfterStep"&&e.context?.stepKey&&(s=H(` (${e.context.stepKey})`));let a=e.state==="error"&&e.error?H(` error: ${String(e.error)}`):"";return`${r} ${H(t)}${s}${o}${a}`}function ro(e,t){let n=[];return e.shouldRun&&n.push(ur(e.shouldRun,"shouldRun",t)),e.onBeforeStart&&n.push(ur(e.onBeforeStart,"onBeforeStart",t)),n.length>0&&n.push(H("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),n}function Pe(){return{name:"ascii",supportsLive:!0,render(e,t){let n={...ue,...t.colors},r=t.terminalWidth??60,o=r-4,s=[],a=e.root.name??"workflow",i=be(a);if(s.push(`${O.topLeft}${no(r-2,i)}${O.topRight}`),s.push(`${O.vertical}${" ".repeat(r-2)}${O.vertical}`),e.hooks){let u=ro(e.hooks,n);for(let p of u)s.push(`${O.vertical} ${kt(p,o)}${O.vertical}`)}let c=He(e.root.children,t,n,0,e.hooks);for(let u of c)s.push(`${O.vertical} ${kt(u,o)}${O.vertical}`);if(s.push(`${O.vertical}${" ".repeat(r-2)}${O.vertical}`),e.root.durationMs!==void 0&&t.showTimings){let u=e.root.state==="success"?"Completed":"Failed",f=`${wt(u,e.root.state,n)} in ${K(e.root.durationMs)}`;s.push(`${O.vertical} ${kt(f,o)}${O.vertical}`),s.push(`${O.vertical}${" ".repeat(r-2)}${O.vertical}`)}return s.push(`${O.bottomLeft}${O.horizontal.repeat(r-2)}${O.bottomRight}`),s.join(`
|
|
2
|
+
`)}}}function He(e,t,n,r,o){let s=[];for(let a of e)re(a)?s.push(Et(a,t,n,o)):Se(a)?s.push(...oo(a,t,n,r,o)):xe(a)?s.push(...so(a,t,n,r,o)):Re(a)&&s.push(...ao(a,t,n,r,o));return s}function Et(e,t,n,r){let o=Ce(e.state,n),s=e.name??e.key??"step",a=t,i=e.name??e.id,c=a.showHeatmap&&a.heatmapData?a.heatmapData.heat.get(e.id)??a.heatmapData.heat.get(i):void 0,u;c!==void 0?u=ar(s,c):u=wt(s,e.state,n);let p=`${o} ${u}`;if(t.showKeys&&e.key&&(p+=H(` [key: ${e.key}]`)),e.input!==void 0){let f=typeof e.input=="string"?e.input:JSON.stringify(e.input).slice(0,30);p+=H(` [in: ${f}${f.length>=30?"...":""}]`)}if(e.output!==void 0&&e.state==="success"){let f=typeof e.output=="string"?e.output:JSON.stringify(e.output).slice(0,30);p+=H(` [out: ${f}${f.length>=30?"...":""}]`)}if(t.showTimings&&e.durationMs!==void 0){let f=K(e.durationMs),d=c!==void 0?ar(`[${f}]`,c):H(`[${f}]`);p+=` ${d}`}if(a.showSparklines&&a.timingHistory){let f=a.timingHistory.get(i);f&&f.length>1&&(p+=` ${H(to(f))}`)}if(e.retryCount!==void 0&&e.retryCount>0&&(p+=H(` [${e.retryCount} ${e.retryCount===1?"retry":"retries"}]`)),e.timedOut){let f=e.timeoutMs!==void 0?` ${e.timeoutMs}ms`:"";p+=H(` [timeout${f}]`)}if(r&&e.key&&r.onAfterStep.has(e.key)){let f=r.onAfterStep.get(e.key),d=f.state==="success"?oe("\u2699",n.success):oe("\u26A0",n.error),m=f.durationMs!==void 0?H(` ${K(f.durationMs)}`):"";p+=` ${d}${m}`}return p}function oo(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Ce(e.state,n),c=e.name??"parallel",u=e.mode==="allSettled"?" (allSettled)":"";if(s.push(`${a}${O.teeRight}${O.teeDown}${O.horizontal} ${i} ${be(c)}${u}`),e.children.length===0)s.push(`${a}${O.vertical} ${H("(operations not individually tracked)")}`),s.push(`${a}${O.vertical} ${H("(wrap each operation with step() to see individual steps)")}`);else for(let p=0;p<e.children.length;p++){let f=e.children[p],m=p===e.children.length-1?`${a}${O.vertical} ${O.bottomLeft}`:`${a}${O.vertical} ${O.teeRight}`;if(re(f))s.push(`${m} ${Et(f,t,n,o)}`);else{let S=He([f],t,n,r+1,o);for(let E of S)s.push(`${a}${O.vertical} ${E}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${O.bottomLeft}${O.horizontal}${O.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function so(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Ce(e.state,n),c=e.name??"race";if(s.push(`${a}${O.teeRight}\u26A1 ${i} ${be(c)}`),e.children.length===0)s.push(`${a}${O.vertical} ${H("(operations not individually tracked)")}`),s.push(`${a}${O.vertical} ${H("(wrap each operation with step() to see individual steps)")}`);else for(let u=0;u<e.children.length;u++){let p=e.children[u],d=u===e.children.length-1?`${a}${O.vertical} ${O.bottomLeft}`:`${a}${O.vertical} ${O.teeRight}`,S=e.winnerId&&p.id===e.winnerId?H(" (winner)"):"";if(re(p))s.push(`${d} ${Et(p,t,n,o)}${S}`);else{let E=He([p],t,n,r+1,o);for(let A of E)s.push(`${a}${O.vertical} ${A}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${O.bottomLeft}${O.horizontal}${O.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function ao(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Ce(e.state,n),c=e.name??"decision",u=e.condition?H(` (${e.condition})`):"",p=e.decisionValue!==void 0?H(` = ${String(e.decisionValue)}`):"",f=e.branchTaken!==void 0?H(` \u2192 ${String(e.branchTaken)}`):"";s.push(`${a}${O.teeRight}${O.teeDown}${O.horizontal} ${i} ${be(c)}${u}${p}${f}`);for(let d=0;d<e.branches.length;d++){let m=e.branches[d],E=d===e.branches.length-1?`${a}${O.vertical} ${O.bottomLeft}`:`${a}${O.vertical} ${O.teeRight}`,A=m.taken?"\u2713":"\u2298",D=m.taken?n.success:n.skipped,x=oe(`${A} ${m.label}`,D),L=m.condition?H(` (${m.condition})`):"";if(s.push(`${E} ${x}${L}`),m.children.length>0){let y=He(m.children,t,n,r+1,o);for(let b of y)s.push(`${a}${O.vertical} ${b}`)}else m.taken||s.push(`${a}${O.vertical} ${H("(skipped)")}`)}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${O.bottomLeft}${O.horizontal}${O.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function ht(e){return e<.2?"cold":e<.4?"cool":e<.6?"neutral":e<.8?"warm":e<.95?"hot":"critical"}function io(){return[" classDef pending fill:#f3f4f6,stroke:#9ca3af,stroke-width:2px,color:#374151"," classDef running fill:#fef3c7,stroke:#f59e0b,stroke-width:3px,color:#92400e"," classDef success fill:#d1fae5,stroke:#10b981,stroke-width:3px,color:#065f46"," classDef error fill:#fee2e2,stroke:#ef4444,stroke-width:3px,color:#991b1b"," classDef aborted fill:#f3f4f6,stroke:#6b7280,stroke-width:2px,color:#4b5563,stroke-dasharray: 5 5"," classDef cached fill:#dbeafe,stroke:#3b82f6,stroke-width:3px,color:#1e40af"," classDef skipped fill:#f9fafb,stroke:#d1d5db,stroke-width:2px,color:#6b7280,stroke-dasharray: 5 5"]}function uo(){return[" classDef heat_cold fill:#dbeafe,stroke:#3b82f6,stroke-width:2px,color:#1e40af"," classDef heat_cool fill:#ccfbf1,stroke:#14b8a6,stroke-width:2px,color:#0f766e"," classDef heat_neutral fill:#f3f4f6,stroke:#6b7280,stroke-width:2px,color:#374151"," classDef heat_warm fill:#fef3c7,stroke:#f59e0b,stroke-width:2px,color:#92400e"," classDef heat_hot fill:#fed7aa,stroke:#f97316,stroke-width:3px,color:#c2410c"," classDef heat_critical fill:#fecaca,stroke:#ef4444,stroke-width:3px,color:#b91c1c"]}function co(e){return`heat_${e}`}function po(){return[" classDef hook_success fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0c4a6e"," classDef hook_error fill:#fef2f2,stroke:#dc2626,stroke-width:2px,color:#7f1d1d"]}function lo(e,t,n){let r;if(e.shouldRun){let o="hook_shouldRun",s=e.shouldRun.state==="success"?"hook_success":"hook_error",a=e.shouldRun.state==="success"?"\u2699":"\u26A0",i=n.showTimings&&e.shouldRun.durationMs!==void 0?` ${K(e.shouldRun.durationMs)}`:"",c=e.shouldRun.context?.skipped?"\\nskipped workflow":e.shouldRun.context?.result===!0?"\\nproceed":"";t.push(` ${o}[["${a} shouldRun${c}${i}"]]:::${s}`),r=o}if(e.onBeforeStart){let o="hook_beforeStart",s=e.onBeforeStart.state==="success"?"hook_success":"hook_error",a=e.onBeforeStart.state==="success"?"\u2699":"\u26A0",i=n.showTimings&&e.onBeforeStart.durationMs!==void 0?` ${K(e.onBeforeStart.durationMs)}`:"",c=e.onBeforeStart.context?.skipped?"\\nskipped workflow":"";t.push(` ${o}[["${a} onBeforeStart${c}${i}"]]:::${s}`),r&&t.push(` ${r} --> ${o}`),r=o}return{lastHookId:r}}var cr=0;function Ae(e="node"){return`${e}_${++cr}`}function fo(){cr=0}function Y(e){return e.replace(/[{}[\]()]/g,"").replace(/[<>]/g,"").replace(/"/g,"'").trim()}function pr(e){return Y(e).replace(/[[\]]/g,"")}function Fe(){return{name:"mermaid",supportsLive:!1,render(e,t){fo();let n=[],r=t;n.push("flowchart TD");let o;e.hooks&&(o=lo(e.hooks,n,t).lastHookId);let s="start";n.push(` ${s}(("\u25B6 Start"))`),o&&n.push(` ${o} --> ${s}`);let a=s;for(let i of e.root.children){let c=Ve(i,t,n,r,e.hooks);n.push(` ${a} --> ${c.entryId}`),a=c.exitId}if(e.root.state==="success"||e.root.state==="error"){let i="finish",c=e.root.state==="success"?"\u2713":"\u2717",u=e.root.state==="success"?"Done":"Failed",p=`(("${c} ${u}"))`,f=e.root.state==="success"?":::success":":::error";n.push(` ${i}${p}${f}`),n.push(` ${a} --> ${i}`)}return n.push(""),n.push(...io()),r.showHeatmap&&n.push(...uo()),e.hooks&&n.push(...po()),n.join(`
|
|
3
|
+
`)}}}function Ve(e,t,n,r,o){if(re(e))return mo(e,t,n,r,o);if(Se(e))return yo(e,t,n,r,o);if(xe(e))return go(e,t,n,r,o);if(Re(e))return wo(e,t,n,r,o);let s=Ae("unknown");return n.push(` ${s}[Unknown Node]`),{entryId:s,exitId:s}}function mo(e,t,n,r,o){let s=e.key?`step_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:Ae("step"),a=Y(e.name??e.key??"Step"),i=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"",c="";switch(e.state){case"success":c="\u2713 ";break;case"error":c="\u2717 ";break;case"cached":c="\u{1F4BE} ";break;case"running":c="\u23F3 ";break;case"skipped":c="\u2298 ";break}let u="";if(e.input!==void 0){let D=typeof e.input=="string"?Y(e.input):Y(JSON.stringify(e.input).slice(0,20));u+=`\\nin: ${D}`}if(e.output!==void 0&&e.state==="success"){let D=typeof e.output=="string"?Y(e.output):Y(JSON.stringify(e.output).slice(0,20));u+=`\\nout: ${D}`}let p="";if(e.retryCount!==void 0&&e.retryCount>0&&(p+=`\\n\u21BB ${e.retryCount} retr${e.retryCount===1?"y":"ies"}`),e.timedOut){let D=e.timeoutMs!==void 0?`${e.timeoutMs}ms`:"";p+=`\\n\u23F1 timeout ${D}`}let f="";if(o&&e.key&&o.onAfterStep.has(e.key)){let D=o.onAfterStep.get(e.key),x=D.state==="success"?"\u2699":"\u26A0",L=t.showTimings&&D.durationMs!==void 0?` ${K(D.durationMs)}`:"";f=`\\n${x} hook${L}`}let d=(c+a+u+p+f+i).trim(),m,S=e.name??e.id,E=r?.showHeatmap&&r.heatmapData?r.heatmapData.heat.get(e.id)??r.heatmapData.heat.get(S):void 0;if(E!==void 0){let D=ht(E);m=co(D)}else m=e.state;let A;switch(e.state){case"error":A=`{{${d}}}`;break;case"cached":A=`[(${d})]`;break;case"skipped":A=`[${d}]:::skipped`;break;default:A=`[${d}]`}return n.push(` ${s}${A}:::${m}`),{entryId:s,exitId:s}}function yo(e,t,n,r,o){let s=Ae("parallel"),a=`${s}_fork`,i=`${s}_join`,c=pr(e.name??"Parallel"),u=e.mode==="allSettled"?" (allSettled)":"";if(e.children.length===0){let d=s,m=Y(`${c}${u}`),S="operations not individually tracked",E=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"";return n.push(` ${d}[${m}${E}\\n${S}]:::${e.state}`),{entryId:d,exitId:d}}n.push(` subgraph ${s}["${c}${u}"]`),n.push(" direction TB"),n.push(` ${a}{"\u26A1 Fork"}`);let p=[];for(let d of e.children){let m=Ve(d,t,n,r,o);n.push(` ${a} --> ${m.entryId}`),p.push(m.exitId)}n.push(` ${i}{"\u2713 Join"}`);for(let d of p)n.push(` ${d} --> ${i}`);n.push(" end");let f=e.state;return n.push(` class ${s} ${f}`),{entryId:a,exitId:i}}function go(e,t,n,r,o){let s=Ae("race"),a=`${s}_start`,i=`${s}_end`,c=pr(e.name??"Race");if(e.children.length===0){let d=s,m=Y(c),S="operations not individually tracked",E=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"";return n.push(` ${d}[\u26A1 ${m}${E}\\n${S}]:::${e.state}`),{entryId:d,exitId:d}}n.push(` subgraph ${s}["\u26A1 ${c}"]`),n.push(" direction TB"),n.push(` ${a}(("\u{1F3C1} Start"))`);let u=[],p;for(let d of e.children){let m=Ve(d,t,n,r,o),S=re(d)&&e.winnerId===d.id;n.push(` ${a} --> ${m.entryId}`),S&&(p=m.exitId),u.push({exitId:m.exitId,isWinner:S})}n.push(` ${i}(("\u2713 First"))`);for(let{exitId:d,isWinner:m}of u)m&&p?n.push(` ${d} ==>|\u{1F3C6} Winner| ${i}`):e.winnerId?n.push(` ${d} -. cancelled .-> ${i}`):n.push(` ${d} --> ${i}`);n.push(" end");let f=e.state;return n.push(` class ${s} ${f}`),{entryId:a,exitId:i}}function wo(e,t,n,r,o){let s=e.key?`decision_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:Ae("decision"),a=Y(e.condition??"condition"),i=e.decisionValue!==void 0?` = ${Y(String(e.decisionValue)).slice(0,30)}`:"",c=`${a}${i}`.trim();n.push(` ${s}{${c}}`);let u=[],p;for(let f of e.branches){let d=`${s}_${f.label.replace(/[^a-zA-Z0-9]/g,"_")}`,m=Y(f.label),S=f.taken?`${m} \u2713`:`${m} skipped`,E=f.taken?":::success":":::skipped";n.push(` ${d}[${S}]${E}`);let A=f.condition?`|${Y(f.condition).replace(/\|/g,"")}|`:"";if(n.push(` ${s} -->${A} ${d}`),f.children.length>0){let D=d;for(let x of f.children){let L=Ve(x,t,n,r,o);n.push(` ${D} --> ${L.entryId}`),D=L.exitId}u.push(D),f.taken&&(p=D)}else u.push(d),f.taken&&(p=d)}return p?{entryId:s,exitId:p}:{entryId:s,exitId:s}}var vo=require("http"),To=require("child_process");function lr(e={}){let{workflowName:t,detectParallel:n=!0,showTimings:r=!0,showKeys:o=!1,colors:s}=e,a=Te({detectParallel:n}),i=new Set,c=Pe(),u=Fe(),p={showTimings:r,showKeys:o,terminalWidth:process.stdout?.columns??80,colors:{...ue,...s}};function f(){if(i.size>0){let y=a.getIR();for(let b of i)b(y)}}function d(y){if(y.type==="scope_start"||y.type==="scope_end"){m(y);return}a.handleEvent(y),y.type,f()}function m(y){a.handleScopeEvent(y),f()}function S(y){a.handleDecisionEvent(y),f()}function E(){let y=a.getIR();return t&&!y.root.name&&(y.root.name=t),y}function A(){let y=E();return c.render(y,p)}function D(y){let b=E();switch(y){case"ascii":return c.render(b,p);case"mermaid":return u.render(b,p);case"json":return JSON.stringify(b,null,2);default:throw new Error(`Unknown format: ${y}`)}}function x(){a.reset(),f()}function L(y){return i.add(y),()=>i.delete(y)}return{handleEvent:d,handleScopeEvent:m,handleDecisionEvent:S,getIR:E,render:A,renderAs:D,reset:x,onUpdate:L}}function vt(e={}){let{logEvents:t=!1,maxHistory:n=10,logger:r=console.log}=e,o=lr(e),s=[],a,i=0;function c(g){if(a)for(s.push(a);s.length>n;)s.shift();i=Date.now(),a={id:g,name:e.workflowName,startTime:i,events:[]},o.reset()}function u(g,k){a&&(a.endTime=Date.now(),a.durationMs=a.endTime-a.startTime,a.success=g,a.error=k)}function p(g){t&&r(`[devtools] ${g.type}: ${JSON.stringify(g)}`),g.type==="workflow_start"&&c(g.workflowId),a&&a.events.push(g),o.handleEvent(g),g.type==="workflow_success"?u(!0):g.type==="workflow_error"&&u(!1,g.error)}function f(g){t&&r(`[devtools] ${g.type}: ${JSON.stringify(g)}`),a&&a.events.push(g),o.handleDecisionEvent(g)}function d(){return a}function m(){return[...s]}function S(g){return a?.id===g?a:s.find(k=>k.id===g)}function E(g,k){let v=S(g),h=S(k);if(!(!v||!h))return dr(v,h)}function A(){if(!a||s.length===0)return;let g=s[s.length-1];return dr(g,a)}function D(){return o.render()}function x(g){return o.renderAs(g)}function L(){return o.renderAs("mermaid")}function y(){let g=b();return xo(g)}function b(){return a?So(a.events,i):[]}function P(){s.length=0}function $(){a=void 0,o.reset()}function V(g){let k=g?S(g):a;return k?JSON.stringify(k,null,2):"{}"}function M(g){let k=JSON.parse(g);return s.push(k),k}return{handleEvent:p,handleDecisionEvent:f,getCurrentRun:d,getHistory:m,getRun:S,diff:E,diffWithPrevious:A,render:D,renderAs:x,renderMermaid:L,renderTimeline:y,getTimeline:b,clearHistory:P,reset:$,exportRun:V,importRun:M}}function dr(e,t){let n=fr(e.events),r=fr(t.events),o=[],s=[],a=[],i=[];for(let[d,m]of r){let S=n.get(d);S?S.status!==m.status?a.push({step:d,type:"status",from:S.status,to:m.status}):S.durationMs!==m.durationMs?a.push({step:d,type:"duration",from:S.durationMs,to:m.durationMs}):i.push(d):o.push({step:d,type:"added",to:m.status})}for(let[d]of n)r.has(d)||s.push({step:d,type:"removed",from:n.get(d)?.status});let c,u=e.success===void 0?"running":e.success?"success":"error",p=t.success===void 0?"running":t.success?"success":"error";u!==p&&(c={from:u,to:p});let f;return e.durationMs!==void 0&&t.durationMs!==void 0&&(f=t.durationMs-e.durationMs),{added:o,removed:s,changed:a,unchanged:i,statusChange:c,durationChange:f}}function fr(e){let t=new Map;for(let n of e)if(n.type==="step_start"){let r=n,o=r.name||r.stepKey||r.stepId;t.set(o,{name:o,key:r.stepKey,status:"running"})}else if(n.type==="step_success"){let r=n,o=r.name||r.stepKey||r.stepId,s=t.get(o);s&&(s.status="success",s.durationMs=r.durationMs)}else if(n.type==="step_error"){let r=n,o=r.name||r.stepKey||r.stepId,s=t.get(o);s&&(s.status="error",s.durationMs=r.durationMs,s.error=r.error)}else if(n.type==="step_cache_hit"){let r=n,o=r.name||r.stepKey;t.set(o,{name:o,key:r.stepKey,status:"cached"})}else if(n.type==="step_skipped"){let r=n,o=r.name||r.stepKey||"unknown";t.set(o,{name:o,key:r.stepKey,status:"skipped"})}return t}function So(e,t){let n=[],r=new Map;for(let o of e)if(o.type==="step_start"){let s=o,a=s.name||s.stepKey||s.stepId;r.set(a,s.ts),n.push({name:a,key:s.stepKey,startMs:s.ts-t,status:"running"})}else if(o.type==="step_success"){let s=o,a=s.name||s.stepKey||s.stepId,i=n.find(c=>c.name===a&&c.status==="running");i&&(i.endMs=s.ts-t,i.durationMs=s.durationMs,i.status="success")}else if(o.type==="step_error"){let s=o,a=s.name||s.stepKey||s.stepId,i=n.find(c=>c.name===a&&c.status==="running");i&&(i.endMs=s.ts-t,i.durationMs=s.durationMs,i.status="error",i.error=s.error)}else if(o.type==="step_cache_hit"){let s=o,a=s.name||s.stepKey;n.push({name:a,key:s.stepKey,startMs:s.ts-t,endMs:s.ts-t,durationMs:0,status:"cached"})}else if(o.type==="step_skipped"){let s=o,a=s.name||s.stepKey||"unknown";n.push({name:a,key:s.stepKey,startMs:s.ts-t,endMs:s.ts-t,durationMs:0,status:"skipped"})}return n}function xo(e){if(e.length===0)return"No timeline data";let t=[];t.push("Timeline:"),t.push("\u2500".repeat(60));let n=Math.max(...e.map(o=>o.endMs??o.startMs+100)),r=40;for(let o of e){let s=Math.floor(o.startMs/n*r),a=Math.floor((o.endMs??o.startMs+10)/n*r),i=Math.max(1,a-s),c=Ro(o.status),u=" ".repeat(s)+c.repeat(i),p=o.durationMs!==void 0?`${o.durationMs}ms`:"?";t.push(`${o.name.padEnd(20)} |${u.padEnd(r)}| ${p}`)}return t.push("\u2500".repeat(60)),t.join(`
|
|
4
|
+
`)}function Ro(e){switch(e){case"success":return"\u2588";case"error":return"\u2591";case"running":return"\u2592";case"cached":return"\u2593";case"skipped":return"\xB7";default:return"?"}}function mr(e){let t=[];if(e.statusChange&&t.push(`Status: ${e.statusChange.from} \u2192 ${e.statusChange.to}`),e.durationChange!==void 0){let n=e.durationChange>=0?"+":"";t.push(`Duration: ${n}${e.durationChange}ms`)}if(e.added.length>0){t.push(`
|
|
5
5
|
Added steps:`);for(let n of e.added)t.push(` + ${n.step}`)}if(e.removed.length>0){t.push(`
|
|
6
6
|
Removed steps:`);for(let n of e.removed)t.push(` - ${n.step}`)}if(e.changed.length>0){t.push(`
|
|
7
7
|
Changed steps:`);for(let n of e.changed)t.push(` ~ ${n.step}: ${n.from} \u2192 ${n.to}`)}return e.unchanged.length>0&&t.push(`
|
|
8
8
|
Unchanged: ${e.unchanged.length} steps`),t.join(`
|
|
9
|
-
`)}function tr(e,t={}){let n=ut(t);return e(n.handleEvent).then(()=>n.render())}function nr(e={}){let{prefix:t="[workflow]",colors:n=!0}=e,r=n?{reset:"\x1B[0m",dim:"\x1B[2m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"}:{reset:"",dim:"",green:"",red:"",yellow:"",blue:"",cyan:""};return o=>{let s=new Date().toISOString().slice(11,23),i="";switch(o.type){case"workflow_start":i=`${r.blue}\u23F5 Workflow started${r.reset}`;break;case"workflow_success":i=`${r.green}\u2713 Workflow completed${r.reset} ${r.dim}(${o.durationMs}ms)${r.reset}`;break;case"workflow_error":i=`${r.red}\u2717 Workflow failed${r.reset}`;break;case"step_start":i=`${r.cyan}\u2192 ${o.name||o.stepKey||o.stepId}${r.reset}`;break;case"step_success":i=`${r.green}\u2713 ${o.name||o.stepKey||o.stepId}${r.reset} ${r.dim}(${o.durationMs}ms)${r.reset}`;break;case"step_error":i=`${r.red}\u2717 ${o.name||o.stepKey||o.stepId}${r.reset}`;break;case"step_cache_hit":i=`${r.yellow}\u26A1 ${o.name||o.stepKey} (cached)${r.reset}`;break;case"step_retry":i=`${r.yellow}\u21BB ${o.name||o.stepKey||o.stepId} retry ${o.attempt}/${o.maxAttempts}${r.reset}`;break;default:i=`${r.dim}${o.type}${r.reset}`}console.log(`${r.dim}${s}${r.reset} ${t} ${i}`)}}function rr(){let e=new Map;return{async getApproval(t){let n=e.get(t);return n?n.expiresAt&&Date.now()>n.expiresAt?{status:"expired",expiredAt:n.expiresAt}:n:{status:"pending"}},async createApproval(t,n){e.set(t,{status:"pending",metadata:n?.metadata,expiresAt:n?.expiresAt})},async grantApproval(t,n,r){e.set(t,{status:"approved",value:n,approvedBy:r?.approvedBy,approvedAt:Date.now()})},async rejectApproval(t,n,r){e.set(t,{status:"rejected",reason:n,rejectedBy:r?.rejectedBy,rejectedAt:Date.now()})},async cancelApproval(t){e.delete(t)},async listPending(t){let n=[];for(let[r,o]of e)o.status==="pending"&&(!t?.prefix||r.startsWith(t.prefix))&&n.push(r);return n}}}function or(){let e=new Map;return{async save(t){e.set(t.runId,{...t,updatedAt:Date.now()})},async load(t){return e.get(t)},async delete(t){e.delete(t)},async list(t){let n=[];for(let[r,o]of e)if(!(t?.workflowName&&o.workflowName!==t.workflowName)){if(t?.hasPendingApprovals!==void 0){let s=o.pendingApprovals.length>0;if(t.hasPendingApprovals!==s)continue}n.push(r)}return n},async findByPendingApproval(t){let n=[];for(let[r,o]of e)o.pendingApprovals.includes(t)&&n.push(r);return n}}}function sr(e){let{approvalStore:t,workflowStateStore:n,defaultExpirationMs:r=10080*60*1e3,logger:o=()=>{}}=e;async function s(w,R,v,P,O){let h=O?.runId??crypto.randomUUID(),D=ie(),T=await R({onEvent:D.handleEvent})(P,v),k=D.getPendingApprovals().map(c=>c.stepKey);if(k.length>0){let c={runId:h,workflowName:w,resumeState:D.getState(),pendingApprovals:k,input:P,metadata:O?.metadata,startedAt:Date.now(),updatedAt:Date.now()};await n.save(c);for(let f of k)await t.createApproval(f,{metadata:{runId:h,workflowName:w},expiresAt:Date.now()+r});o(`Workflow ${h} paused, waiting for: ${k.join(", ")}`);let y;return!T.ok&&H(T.error)&&(y=T.error.reason),{status:"paused",runId:h,pendingApprovals:k,reason:y}}return o(`Workflow ${h} completed`),{status:"completed",result:T}}async function i(w,R,v){let P=await n.load(w);if(!P)throw new Error(`Workflow run not found: ${w}`);for(let k of P.pendingApprovals){let c=await t.getApproval(k);if(c.status==="pending")return{status:"paused",runId:w,pendingApprovals:P.pendingApprovals};if(c.status,c.status==="expired")throw new Error(`Approval ${k} has expired`)}let O=P.resumeState;for(let k of P.pendingApprovals){let c=await t.getApproval(k);c.status==="approved"&&(O=Te(O,{stepKey:k,value:c.value}))}let h=ie(),g=await R({resumeState:O,onEvent:h.handleEvent})(P.input,v),T=h.getPendingApprovals().map(k=>k.stepKey);if(T.length>0){let k={...P,resumeState:h.getState(),pendingApprovals:T,updatedAt:Date.now()};await n.save(k);for(let y of T)await t.createApproval(y,{metadata:{runId:w,workflowName:P.workflowName},expiresAt:Date.now()+r});o(`Workflow ${w} paused again, waiting for: ${T.join(", ")}`);let c;return!g.ok&&H(g.error)&&(c=g.error.reason),{status:"paused",runId:w,pendingApprovals:T,reason:c}}return await n.delete(w),o(`Workflow ${w} resumed and completed`),{status:"resumed",runId:w,result:g}}async function a(w,R,v){await t.grantApproval(w,R,{approvedBy:v?.approvedBy});let P=Date.now(),O=[];if(v?.autoResume!==!1){let h=await n.findByPendingApproval(w);for(let D of h)O.push(D)}return o(`Approval ${w} granted by ${v?.approvedBy??"unknown"}`),{grantedAt:P,resumedWorkflows:O}}async function l(w,R,v){await t.rejectApproval(w,R,{rejectedBy:v?.rejectedBy}),o(`Approval ${w} rejected: ${R}`)}async function u(w,R){let{intervalMs:v=1e3,maxPolls:P,timeoutMs:O,onPollStart:h,onPollComplete:D}=R??{},g=Date.now(),T=0;for(;;){h?.();let k=await t.getApproval(w);if(D?.(k),k.status!=="pending")return k;if(T++,P!==void 0&&T>=P)return{status:"pending"};if(O!==void 0&&Date.now()-g>=O)return{status:"pending"};await new Promise(c=>setTimeout(c,v))}}async function p(w){return n.load(w)}async function m(w){return n.list({workflowName:w,hasPendingApprovals:!0})}async function d(w){let R=await n.list(),v=0,P=Date.now()-w;for(let O of R){let h=await n.load(O);h&&h.updatedAt<P&&h.pendingApprovals.length===0&&(await n.delete(O),v++)}return o(`Cleaned up ${v} old workflow states`),v}return{execute:s,resume:i,grantApproval:a,rejectApproval:l,pollApproval:u,getWorkflowStatus:p,listPendingWorkflows:m,cleanup:d}}function ir(e){return async t=>{let{key:n,action:r,value:o,reason:s,actorId:i}=t;try{switch(r){case"approve":return await e.grantApproval(n,o,{approvedBy:i}),{success:!0,message:`Approval ${n} granted`,data:{key:n,action:r,timestamp:Date.now()}};case"reject":return s?(await e.rejectApproval(n,s,{rejectedBy:i}),{success:!0,message:`Approval ${n} rejected`,data:{key:n,action:r,timestamp:Date.now()}}):{success:!1,message:"Reason is required for rejection"};case"cancel":return await e.cancelApproval(n),{success:!0,message:`Approval ${n} cancelled`,data:{key:n,action:r,timestamp:Date.now()}};default:return{success:!1,message:`Unknown action: ${r}`}}}catch(a){return{success:!1,message:a instanceof Error?a.message:String(a)}}}}function ar(e){return t=>async()=>{let n=await e.getApproval(t);switch(n.status){case"pending":return{status:"pending"};case"approved":return{status:"approved",value:n.value};case"rejected":return{status:"rejected",reason:n.reason};case"expired":return{status:"rejected",reason:"Approval request expired"};default:return{status:"pending"}}}}function ur(e){return typeof e=="object"&&e!==null&&"__earlyExit"in e&&e.__earlyExit===!0}function cr(e,t={}){let{recordInvocations:n=!0,clock:r=Date.now}=t,o=[],s=new Map,i=0,a=[];function l(g){o=[...g],i=0,s.clear()}function u(g,T){s.set(g,T)}function p(g){if(g&&s.has(g))return s.get(g);if(i<o.length)return o[i++]}function m(){let g=async(T,k)=>{let c=typeof k=="string"?{name:k}:k??{},y=c.name??c.key,f=r(),E={name:c.name,key:c.key,order:a.length,timestamp:f};n&&a.push(E);let S=p(y);if(S)switch(E.durationMs=r()-f,S.type){case"ok":return E.result=A(S.value),S.value;case"err":throw E.result=x(S.error),{__earlyExit:!0,error:S.error};case"throw":throw S.error}let C=typeof T=="function"?await T():await T;if(E.durationMs=r()-f,E.result=C,!C.ok)throw{__earlyExit:!0,error:C.error};return C.value};return g.try=async(T,k)=>{let c=k.name??k.key,y=r(),f={name:k.name,key:k.key,order:a.length,timestamp:y};n&&a.push(f);let E=p(c);if(E)switch(f.durationMs=r()-y,E.type){case"ok":return f.result=A(E.value),E.value;case"err":throw f.result=x(E.error),{__earlyExit:!0,error:E.error};case"throw":throw E.error}try{let S=await T();return f.durationMs=r()-y,f.result=A(S),S}catch(S){f.durationMs=r()-y;let C="error"in k?k.error:k.onError(S);throw f.result=x(C),{__earlyExit:!0,error:C}}},g}async function d(g){let T=m();try{let k=await g(T,e);return A(k)}catch(k){return ur(k)?x(k.error):x({type:"UNEXPECTED_ERROR",cause:k})}}async function w(g,T){let k=m();try{let c=await T(k,e,g);return A(c)}catch(c){return ur(c)?x(c.error):x({type:"UNEXPECTED_ERROR",cause:c})}}function R(){return[...a]}function v(g){let T=a.map(c=>c.name??c.key??"unnamed").filter(c=>c!=="unnamed"),k=JSON.stringify(T)===JSON.stringify(g);return{passed:k,message:k?`Steps invoked in order: ${g.join(", ")}`:`Expected steps [${g.join(", ")}] but got [${T.join(", ")}]`,expected:g,actual:T}}function P(g){let T=a.some(k=>k.name===g||k.key===g);return{passed:T,message:T?`Step "${g}" was invoked`:`Step "${g}" was NOT invoked`,expected:g,actual:T}}function O(g){let T=a.some(k=>k.name===g||k.key===g);return{passed:!T,message:T?`Step "${g}" was invoked but should not have been`:`Step "${g}" was correctly NOT invoked`,expected:"not called",actual:T?"called":"not called"}}function h(g,T){let k=g.ok===T.ok&&(g.ok?JSON.stringify(g.value)===JSON.stringify(T.value):JSON.stringify(g.error)===JSON.stringify(T.error));return{passed:k,message:k?"Result matches expected":"Result does not match expected",expected:T,actual:g}}function D(){o=[],s.clear(),i=0,a=[]}return{script:l,scriptStep:u,run:d,runWithInput:w,getInvocations:R,assertSteps:v,assertStepCalled:P,assertStepNotCalled:O,assertResult:h,reset:D}}function pr(){let e,t=[],n=[],r=((...o)=>{if(n.push(o),t.length>0)return Promise.resolve(t.shift());if(e)return Promise.resolve(e);throw new Error("Mock function called without configured return value")});return r.returns=o=>(e=o,r),r.returnsOnce=o=>(t.push(o),r),r.getCalls=()=>[...n],r.getCallCount=()=>n.length,r.reset=()=>{e=void 0,t.length=0,n.length=0},r}function lr(e,t,n){let r=e.reduce((o,s)=>o+(s.durationMs??0),0);return{invocations:e.map(o=>({...o,timestamp:0})),result:t,events:n?.map(o=>({...o,ts:0})),durationMs:r}}function dr(e,t){let n=[];e.invocations.length!==t.invocations.length&&n.push(`Invocation count: ${e.invocations.length} vs ${t.invocations.length}`);let r=Math.max(e.invocations.length,t.invocations.length);for(let o=0;o<r;o++){let s=e.invocations[o],i=t.invocations[o];if(!s){n.push(`Step ${o}: missing in first snapshot`);continue}if(!i){n.push(`Step ${o}: missing in second snapshot`);continue}s.name!==i.name&&n.push(`Step ${o} name: "${s.name}" vs "${i.name}"`),s.key!==i.key&&n.push(`Step ${o} key: "${s.key}" vs "${i.key}"`),s.result?.ok!==i.result?.ok&&n.push(`Step ${o} result: ${s.result?.ok?"ok":"err"} vs ${i.result?.ok?"ok":"err"}`)}return e.result.ok!==t.result.ok&&n.push(`Final result: ${e.result.ok?"ok":"err"} vs ${t.result.ok?"ok":"err"}`),{equal:n.length===0,differences:n}}function fr(e=0){let t=e;return{now:()=>t,advance:n=>{t+=n},set:n=>{t=n},reset:()=>{t=e}}}function mr(e){return{type:"ok",value:e}}function yr(e){return{type:"err",error:e}}function wr(e){return{type:"throw",error:e}}0&&(module.exports={CircuitOpenError,STEP_TIMEOUT_MARKER,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,bimap,circuitBreakerPresets,clearStep,compareSnapshots,composeMigrations,composeValidators,conditionalPolicy,createApprovalChecker,createApprovalStep,createApprovalWebhookHandler,createAutotelAdapter,createAutotelEventHandler,createCircuitBreaker,createCombinedLimiter,createConcurrencyLimiter,createConditionalHelpers,createConsoleLogger,createDevtools,createEventHandler,createExpressHandler,createFileCache,createHITLCollector,createHITLOrchestrator,createHydratingCache,createKVCache,createKeyRemoveMigration,createKeyRenameMigration,createMemoryApprovalStore,createMemoryCache,createMemoryWorkflowStateStore,createMockFn,createPolicyApplier,createPolicyBundle,createPolicyRegistry,createRateLimiter,createResultMapper,createSagaWorkflow,createSimpleHandler,createSnapshot,createStatePersistence,createStepCollector,createTestClock,createValueTransformMigration,createVersionedState,createVersionedStateLoader,createWebhookHandler,createWorkflow,createWorkflowHarness,defaultUnexpectedErrorMapper,defaultValidationErrorMapper,deserializeCause,deserializeEntry,deserializeMeta,deserializeResult,deserializeState,envPolicy,err,errOutcome,from,fromNullable,fromPromise,getPendingApprovals,getStepTimeoutMeta,hasPendingApproval,injectApproval,isApprovalRejected,isCircuitOpenError,isErr,isMigrationError,isOk,isPendingApproval,isQueueFullError,isRateLimitExceededError,isSagaCompensationError,isStepComplete,isStepTimeoutError,isUnexpectedError,isValidationError,isVersionIncompatibleError,map,mapError,mapErrorTry,mapTry,match,mergePolicies,migrateState,ok,okOutcome,orElse,orElseAsync,parseState,parseVersionedState,partition,pendingApproval,quickVisualize,rateLimiterPresets,recover,recoverAsync,renderDiff,requireFields,retryPolicies,retryPolicy,run,runSaga,sendWebhookResponse,serializeCause,serializeEntry,serializeMeta,serializeResult,serializeState,servicePolicies,stepOptions,stringifyState,stringifyVersionedState,tap,tapError,throwOutcome,timeoutPolicies,timeoutPolicy,toWebhookRequest,tryAsync,unless,unlessOr,unwrap,unwrapOr,unwrapOrElse,validationError,when,whenOr,withAutotelTracing,withPolicies,withPolicy});
|
|
9
|
+
`)}function yr(e,t={}){let n=vt(t);return e(n.handleEvent).then(()=>n.render())}function gr(e={}){let{prefix:t="[workflow]",colors:n=!0}=e,r=n?{reset:"\x1B[0m",dim:"\x1B[2m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"}:{reset:"",dim:"",green:"",red:"",yellow:"",blue:"",cyan:""};return o=>{let s=new Date().toISOString().slice(11,23),a="";switch(o.type){case"workflow_start":a=`${r.blue}\u23F5 Workflow started${r.reset}`;break;case"workflow_success":a=`${r.green}\u2713 Workflow completed${r.reset} ${r.dim}(${o.durationMs}ms)${r.reset}`;break;case"workflow_error":a=`${r.red}\u2717 Workflow failed${r.reset}`;break;case"step_start":a=`${r.cyan}\u2192 ${o.name||o.stepKey||o.stepId}${r.reset}`;break;case"step_success":a=`${r.green}\u2713 ${o.name||o.stepKey||o.stepId}${r.reset} ${r.dim}(${o.durationMs}ms)${r.reset}`;break;case"step_error":a=`${r.red}\u2717 ${o.name||o.stepKey||o.stepId}${r.reset}`;break;case"step_cache_hit":a=`${r.yellow}\u26A1 ${o.name||o.stepKey} (cached)${r.reset}`;break;case"step_retry":a=`${r.yellow}\u21BB ${o.name||o.stepKey||o.stepId} retry ${o.attempt}/${o.maxAttempts}${r.reset}`;break;default:a=`${r.dim}${o.type}${r.reset}`}console.log(`${r.dim}${s}${r.reset} ${t} ${a}`)}}function wr(){let e=new Map;return{async getApproval(t){let n=e.get(t);return n?n.expiresAt&&Date.now()>n.expiresAt?{status:"expired",expiredAt:n.expiresAt}:n:{status:"pending"}},async createApproval(t,n){e.set(t,{status:"pending",metadata:n?.metadata,expiresAt:n?.expiresAt})},async grantApproval(t,n,r){e.set(t,{status:"approved",value:n,approvedBy:r?.approvedBy,approvedAt:Date.now()})},async rejectApproval(t,n,r){e.set(t,{status:"rejected",reason:n,rejectedBy:r?.rejectedBy,rejectedAt:Date.now()})},async cancelApproval(t){e.delete(t)},async listPending(t){let n=[];for(let[r,o]of e)o.status==="pending"&&(!t?.prefix||r.startsWith(t.prefix))&&n.push(r);return n}}}function kr(){let e=new Map;return{async save(t){e.set(t.runId,{...t,updatedAt:Date.now()})},async load(t){return e.get(t)},async delete(t){e.delete(t)},async list(t){let n=[];for(let[r,o]of e)if(!(t?.workflowName&&o.workflowName!==t.workflowName)){if(t?.hasPendingApprovals!==void 0){let s=o.pendingApprovals.length>0;if(t.hasPendingApprovals!==s)continue}n.push(r)}return n},async findByPendingApproval(t){let n=[];for(let[r,o]of e)o.pendingApprovals.includes(t)&&n.push(r);return n}}}function Er(e){let{approvalStore:t,workflowStateStore:n,defaultExpirationMs:r=10080*60*1e3,logger:o=()=>{}}=e;async function s(m,S,E,A,D){let x=D?.runId??crypto.randomUUID(),L=we(),b=await S({onEvent:L.handleEvent})(A,E),P=L.getPendingApprovals().map($=>$.stepKey);if(P.length>0){let $={runId:x,workflowName:m,resumeState:L.getState(),pendingApprovals:P,input:A,metadata:D?.metadata,startedAt:Date.now(),updatedAt:Date.now()};await n.save($);for(let M of P)await t.createApproval(M,{metadata:{runId:x,workflowName:m},expiresAt:Date.now()+r});o(`Workflow ${x} paused, waiting for: ${P.join(", ")}`);let V;return!b.ok&&ee(b.error)&&(V=b.error.reason),{status:"paused",runId:x,pendingApprovals:P,reason:V}}return o(`Workflow ${x} completed`),{status:"completed",result:b}}async function a(m,S,E){let A=await n.load(m);if(!A)throw new Error(`Workflow run not found: ${m}`);for(let P of A.pendingApprovals){let $=await t.getApproval(P);if($.status==="pending")return{status:"paused",runId:m,pendingApprovals:A.pendingApprovals};if($.status,$.status==="expired")throw new Error(`Approval ${P} has expired`)}let D=A.resumeState;for(let P of A.pendingApprovals){let $=await t.getApproval(P);$.status==="approved"&&(D=_e(D,{stepKey:P,value:$.value}))}let x=we(),y=await S({resumeState:D,onEvent:x.handleEvent})(A.input,E),b=x.getPendingApprovals().map(P=>P.stepKey);if(b.length>0){let P={...A,resumeState:x.getState(),pendingApprovals:b,updatedAt:Date.now()};await n.save(P);for(let V of b)await t.createApproval(V,{metadata:{runId:m,workflowName:A.workflowName},expiresAt:Date.now()+r});o(`Workflow ${m} paused again, waiting for: ${b.join(", ")}`);let $;return!y.ok&&ee(y.error)&&($=y.error.reason),{status:"paused",runId:m,pendingApprovals:b,reason:$}}return await n.delete(m),o(`Workflow ${m} resumed and completed`),{status:"resumed",runId:m,result:y}}async function i(m,S,E){await t.grantApproval(m,S,{approvedBy:E?.approvedBy});let A=Date.now(),D=[];if(E?.autoResume!==!1){let x=await n.findByPendingApproval(m);for(let L of x)D.push(L)}return o(`Approval ${m} granted by ${E?.approvedBy??"unknown"}`),{grantedAt:A,resumedWorkflows:D}}async function c(m,S,E){await t.rejectApproval(m,S,{rejectedBy:E?.rejectedBy}),o(`Approval ${m} rejected: ${S}`)}async function u(m,S){let{intervalMs:E=1e3,maxPolls:A,timeoutMs:D,onPollStart:x,onPollComplete:L}=S??{},y=Date.now(),b=0;for(;;){x?.();let P=await t.getApproval(m);if(L?.(P),P.status!=="pending")return P;if(b++,A!==void 0&&b>=A)return{status:"pending"};if(D!==void 0&&Date.now()-y>=D)return{status:"pending"};await new Promise($=>setTimeout($,E))}}async function p(m){return n.load(m)}async function f(m){return n.list({workflowName:m,hasPendingApprovals:!0})}async function d(m){let S=await n.list(),E=0,A=Date.now()-m;for(let D of S){let x=await n.load(D);x&&x.updatedAt<A&&x.pendingApprovals.length===0&&(await n.delete(D),E++)}return o(`Cleaned up ${E} old workflow states`),E}return{execute:s,resume:a,grantApproval:i,rejectApproval:c,pollApproval:u,getWorkflowStatus:p,listPendingWorkflows:f,cleanup:d}}function hr(e){return async t=>{let{key:n,action:r,value:o,reason:s,actorId:a}=t;try{switch(r){case"approve":return await e.grantApproval(n,o,{approvedBy:a}),{success:!0,message:`Approval ${n} granted`,data:{key:n,action:r,timestamp:Date.now()}};case"reject":return s?(await e.rejectApproval(n,s,{rejectedBy:a}),{success:!0,message:`Approval ${n} rejected`,data:{key:n,action:r,timestamp:Date.now()}}):{success:!1,message:"Reason is required for rejection"};case"cancel":return await e.cancelApproval(n),{success:!0,message:`Approval ${n} cancelled`,data:{key:n,action:r,timestamp:Date.now()}};default:return{success:!1,message:`Unknown action: ${r}`}}}catch(i){return{success:!1,message:i instanceof Error?i.message:String(i)}}}}function vr(e){return t=>async()=>{let n=await e.getApproval(t);switch(n.status){case"pending":return{status:"pending"};case"approved":return{status:"approved",value:n.value};case"rejected":return{status:"rejected",reason:n.reason};case"expired":return{status:"rejected",reason:"Approval request expired"};default:return{status:"pending"}}}}function Tr(e){return typeof e=="object"&&e!==null&&"__earlyExit"in e&&e.__earlyExit===!0}function Sr(e,t={}){let{recordInvocations:n=!0,clock:r=Date.now}=t,o=[],s=new Map,a=0,i=[];function c(y){o=[...y],a=0,s.clear()}function u(y,b){s.set(y,b)}function p(y){if(y&&s.has(y))return s.get(y);if(a<o.length)return o[a++]}function f(){let y=async(b,P)=>{let $=typeof P=="string"?{name:P}:P??{},V=$.name??$.key,M=r(),g={name:$.name,key:$.key,order:i.length,timestamp:M};n&&i.push(g);let k=p(V);if(k)switch(g.durationMs=r()-M,k.type){case"ok":return g.result=_(k.value),k.value;case"err":throw g.result=C(k.error),{__earlyExit:!0,error:k.error};case"throw":throw k.error}let v=typeof b=="function"?await b():await b;if(g.durationMs=r()-M,g.result=v,!v.ok)throw{__earlyExit:!0,error:v.error};return v.value};return y.try=async(b,P)=>{let $=P.name??P.key,V=r(),M={name:P.name,key:P.key,order:i.length,timestamp:V};n&&i.push(M);let g=p($);if(g)switch(M.durationMs=r()-V,g.type){case"ok":return M.result=_(g.value),g.value;case"err":throw M.result=C(g.error),{__earlyExit:!0,error:g.error};case"throw":throw g.error}try{let k=await b();return M.durationMs=r()-V,M.result=_(k),k}catch(k){M.durationMs=r()-V;let v="error"in P?P.error:P.onError(k);throw M.result=C(v),{__earlyExit:!0,error:v}}},y}async function d(y){let b=f();try{let P=await y(b,e);return _(P)}catch(P){return Tr(P)?C(P.error):C({type:"UNEXPECTED_ERROR",cause:P})}}async function m(y,b){let P=f();try{let $=await b(P,e,y);return _($)}catch($){return Tr($)?C($.error):C({type:"UNEXPECTED_ERROR",cause:$})}}function S(){return[...i]}function E(y){let b=i.map($=>$.name??$.key??"unnamed").filter($=>$!=="unnamed"),P=JSON.stringify(b)===JSON.stringify(y);return{passed:P,message:P?`Steps invoked in order: ${y.join(", ")}`:`Expected steps [${y.join(", ")}] but got [${b.join(", ")}]`,expected:y,actual:b}}function A(y){let b=i.some(P=>P.name===y||P.key===y);return{passed:b,message:b?`Step "${y}" was invoked`:`Step "${y}" was NOT invoked`,expected:y,actual:b}}function D(y){let b=i.some(P=>P.name===y||P.key===y);return{passed:!b,message:b?`Step "${y}" was invoked but should not have been`:`Step "${y}" was correctly NOT invoked`,expected:"not called",actual:b?"called":"not called"}}function x(y,b){let P=y.ok===b.ok&&(y.ok?JSON.stringify(y.value)===JSON.stringify(b.value):JSON.stringify(y.error)===JSON.stringify(b.error));return{passed:P,message:P?"Result matches expected":"Result does not match expected",expected:b,actual:y}}function L(){o=[],s.clear(),a=0,i=[]}return{script:c,scriptStep:u,run:d,runWithInput:m,getInvocations:S,assertSteps:E,assertStepCalled:A,assertStepNotCalled:D,assertResult:x,reset:L}}function xr(){let e,t=[],n=[],r=((...o)=>{if(n.push(o),t.length>0)return Promise.resolve(t.shift());if(e)return Promise.resolve(e);throw new Error("Mock function called without configured return value")});return r.returns=o=>(e=o,r),r.returnsOnce=o=>(t.push(o),r),r.getCalls=()=>[...n],r.getCallCount=()=>n.length,r.reset=()=>{e=void 0,t.length=0,n.length=0},r}function Rr(e,t,n){let r=e.reduce((o,s)=>o+(s.durationMs??0),0);return{invocations:e.map(o=>({...o,timestamp:0})),result:t,events:n?.map(o=>({...o,ts:0})),durationMs:r}}function br(e,t){let n=[];e.invocations.length!==t.invocations.length&&n.push(`Invocation count: ${e.invocations.length} vs ${t.invocations.length}`);let r=Math.max(e.invocations.length,t.invocations.length);for(let o=0;o<r;o++){let s=e.invocations[o],a=t.invocations[o];if(!s){n.push(`Step ${o}: missing in first snapshot`);continue}if(!a){n.push(`Step ${o}: missing in second snapshot`);continue}s.name!==a.name&&n.push(`Step ${o} name: "${s.name}" vs "${a.name}"`),s.key!==a.key&&n.push(`Step ${o} key: "${s.key}" vs "${a.key}"`),s.result?.ok!==a.result?.ok&&n.push(`Step ${o} result: ${s.result?.ok?"ok":"err"} vs ${a.result?.ok?"ok":"err"}`)}return e.result.ok!==t.result.ok&&n.push(`Final result: ${e.result.ok?"ok":"err"} vs ${t.result.ok?"ok":"err"}`),{equal:n.length===0,differences:n}}function Cr(e=0){let t=e;return{now:()=>t,advance:n=>{t+=n},set:n=>{t=n},reset:()=>{t=e}}}function Pr(e){return{type:"ok",value:e}}function Ar(e){return{type:"err",error:e}}function Ir(e){return{type:"throw",error:e}}0&&(module.exports={CircuitOpenError,STEP_TIMEOUT_MARKER,TaggedError,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,bimap,circuitBreakerPresets,clearStep,compareSnapshots,composeMigrations,composeValidators,conditionalPolicy,createApprovalChecker,createApprovalStep,createApprovalWebhookHandler,createAutotelAdapter,createAutotelEventHandler,createCircuitBreaker,createCombinedLimiter,createConcurrencyLimiter,createConditionalHelpers,createConsoleLogger,createDevtools,createEventHandler,createExpressHandler,createFileCache,createHITLCollector,createHITLOrchestrator,createHydratingCache,createKVCache,createKeyRemoveMigration,createKeyRenameMigration,createMemoryApprovalStore,createMemoryCache,createMemoryWorkflowStateStore,createMockFn,createPolicyApplier,createPolicyBundle,createPolicyRegistry,createRateLimiter,createResultMapper,createSagaWorkflow,createSimpleHandler,createSnapshot,createStatePersistence,createStepCollector,createTestClock,createValueTransformMigration,createVersionedState,createVersionedStateLoader,createWebhookHandler,createWorkflow,createWorkflowHarness,defaultUnexpectedErrorMapper,defaultValidationErrorMapper,deserializeCause,deserializeEntry,deserializeMeta,deserializeResult,deserializeState,envPolicy,err,errOutcome,from,fromNullable,fromPromise,getPendingApprovals,getStepTimeoutMeta,hasPendingApproval,hydrate,injectApproval,isApprovalRejected,isCircuitOpenError,isErr,isMigrationError,isOk,isPendingApproval,isQueueFullError,isRateLimitExceededError,isSagaCompensationError,isSerializedResult,isStepComplete,isStepTimeoutError,isUnexpectedError,isValidationError,isVersionIncompatibleError,map,mapError,mapErrorTry,mapTry,match,mergePolicies,migrateState,ok,okOutcome,orElse,orElseAsync,parseState,parseVersionedState,partition,pendingApproval,quickVisualize,rateLimiterPresets,recover,recoverAsync,renderDiff,requireFields,retryPolicies,retryPolicy,run,runSaga,sendWebhookResponse,serializeCause,serializeEntry,serializeMeta,serializeResult,serializeState,servicePolicies,stepOptions,stringifyState,stringifyVersionedState,tap,tapError,throwOutcome,timeoutPolicies,timeoutPolicy,toWebhookRequest,tryAsync,unless,unlessOr,unwrap,unwrapOr,unwrapOrElse,validationError,when,whenOr,withAutotelTracing,withPolicies,withPolicy});
|
|
10
10
|
//# sourceMappingURL=index.cjs.map
|