@jagreehal/workflow 1.9.0 → 1.10.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/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";var Je=Object.defineProperty;var Ur=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var Fr=Object.prototype.hasOwnProperty;var Vr=(e,t)=>{for(var n in t)Je(e,n,{get:t[n],enumerable:!0})},zr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Hr(t))!Fr.call(e,o)&&o!==n&&Je(e,o,{get:()=>t[o],enumerable:!(r=Ur(t,o))||r.enumerable});return e};var Kr=e=>zr(Je({},"__esModule",{value:!0}),e);var $o={};Vr($o,{CircuitOpenError:()=>de,STEP_TIMEOUT_MARKER:()=>ne,TaggedError:()=>ge,UnwrapError:()=>me,all:()=>Xt,allAsync:()=>Yt,allSettled:()=>Qt,allSettledAsync:()=>nn,andThen:()=>Bt,any:()=>en,anyAsync:()=>tn,batchPresets:()=>Nr,bimap:()=>zt,circuitBreakerPresets:()=>wn,clearStep:()=>cn,compareSnapshots:()=>Ar,composeMigrations:()=>Mn,composeValidators:()=>Vn,conditionalPolicy:()=>Jn,createApprovalChecker:()=>xr,createApprovalStep:()=>un,createApprovalWebhookHandler:()=>Sr,createAutotelAdapter:()=>_n,createAutotelEventHandler:()=>$n,createCircuitBreaker:()=>gn,createCombinedLimiter:()=>Tn,createConcurrencyLimiter:()=>ke,createConditionalHelpers:()=>mn,createConsoleLogger:()=>hr,createDevtools:()=>Tt,createEventHandler:()=>zn,createExpressHandler:()=>Hn,createFileCache:()=>nr,createHITLCollector:()=>we,createHITLOrchestrator:()=>Tr,createHydratingCache:()=>sr,createKVCache:()=>rr,createKeyRemoveMigration:()=>On,createKeyRenameMigration:()=>In,createMemoryApprovalStore:()=>Er,createMemoryCache:()=>tr,createMemoryWorkflowStateStore:()=>vr,createMockFn:()=>Cr,createPolicyApplier:()=>Kn,createPolicyBundle:()=>jn,createPolicyRegistry:()=>Yn,createRateLimiter:()=>st,createResource:()=>Lr,createResourceScope:()=>xt,createResultMapper:()=>Un,createSagaWorkflow:()=>hn,createSimpleHandler:()=>Bn,createSnapshot:()=>Pr,createStatePersistence:()=>or,createStepCollector:()=>rn,createTestClock:()=>Ir,createValueTransformMigration:()=>Dn,createVersionedState:()=>Cn,createVersionedStateLoader:()=>bn,createWebhookHandler:()=>Ln,createWorkflow:()=>on,createWorkflowHarness:()=>br,defaultUnexpectedErrorMapper:()=>Be,defaultValidationErrorMapper:()=>Le,deserializeCause:()=>Ee,deserializeEntry:()=>mt,deserializeMeta:()=>dt,deserializeResult:()=>Te,deserializeState:()=>He,envPolicy:()=>Xn,err:()=>b,errOutcome:()=>Dr,from:()=>Dt,fromNullable:()=>$t,fromPromise:()=>Mt,getPendingApprovals:()=>ln,getStepTimeoutMeta:()=>Ze,hasPendingApproval:()=>pn,hydrate:()=>et,injectApproval:()=>$e,isApprovalRejected:()=>sn,isBatchProcessingError:()=>St,isCircuitOpenError:()=>yn,isErr:()=>bt,isInvalidBatchConfigError:()=>_r,isMigrationError:()=>xn,isOk:()=>le,isPendingApproval:()=>ee,isQueueFullError:()=>ot,isRateLimitExceededError:()=>vn,isResourceCleanupError:()=>Ke,isSagaCompensationError:()=>kn,isSerializedResult:()=>Jt,isStepComplete:()=>_e,isStepTimeoutError:()=>De,isUnexpectedError:()=>Qe,isValidationError:()=>Wn,isVersionIncompatibleError:()=>Rn,map:()=>Nt,mapError:()=>Wt,mapErrorTry:()=>Vt,mapTry:()=>Ft,match:()=>Lt,mergePolicies:()=>j,migrateState:()=>at,ok:()=>_,okOutcome:()=>Or,orElse:()=>Kt,orElseAsync:()=>jt,parseState:()=>er,parseVersionedState:()=>Pn,partition:()=>Zt,pendingApproval:()=>an,processInBatches:()=>$r,quickVisualize:()=>kr,rateLimiterPresets:()=>Sn,recover:()=>qt,recoverAsync:()=>Gt,renderDiff:()=>wr,requireFields:()=>Fn,retryPolicies:()=>ie,retryPolicy:()=>X,run:()=>se,runSaga:()=>En,sendWebhookResponse:()=>ut,serializeCause:()=>he,serializeEntry:()=>ft,serializeMeta:()=>lt,serializeResult:()=>ve,serializeState:()=>Ue,servicePolicies:()=>qn,stepOptions:()=>Qn,stringifyState:()=>Zn,stringifyVersionedState:()=>An,tap:()=>Ut,tapError:()=>Ht,throwOutcome:()=>Mr,timeoutPolicies:()=>ae,timeoutPolicy:()=>J,toWebhookRequest:()=>it,tryAsync:()=>_t,unless:()=>nt,unlessOr:()=>rt,unwrap:()=>At,unwrapOr:()=>It,unwrapOrElse:()=>Ot,validationError:()=>ct,when:()=>Ne,whenOr:()=>We,withAutotelTracing:()=>Nn,withPolicies:()=>Gn,withPolicy:()=>pt,withScope:()=>Wr});module.exports=Kr($o);var _=e=>({ok:!0,value:e}),b=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),le=e=>e.ok,bt=e=>!e.ok,Qe=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 Ze(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 Ct=Symbol("early-exit");function Q(e,t){return{[Ct]:!0,error:e,meta:t}}function Z(e){return typeof e=="object"&&e!==null&&e[Ct]===!0}var Pt=Symbol("mapper-exception");function jr(e){return{[Pt]:!0,thrown:e}}function qr(e){return typeof e=="object"&&e!==null&&e[Pt]===!0}function Gr(e){return typeof e=="string"?{name:e}:e??{}}function Xe(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 Ye(e){return new Promise(t=>setTimeout(t,e))}var Rt=Symbol("timeout");async function Jr(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({[Rt]:!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[Rt]===!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}`,l=y=>{let x=y.context!==void 0||a===void 0?y:{...y,context:a};if(x.type==="step_success"){let A=x.stepId;for(let $=u.length-1;$>=0;$--){let V=u[$];if(V.type==="race"&&!V.winnerId){V.winnerId=A;break}}}r?.(x,a)},m=Q,R=y=>Z(y),h=(y,x)=>c?x?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:y,...x.resultCause!==void 0?{cause:x.resultCause}:{}}}:x?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:y,thrown:x.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:y}}:y,P=y=>y.origin==="result"?y.resultCause:y.thrown,O=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 x=function(M,g){let k=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let T=performance.now(),E=!1;u.push({scopeId:k,type:"parallel"});let N=()=>{if(E)return;E=!0;let S=u.findIndex(I=>I.scopeId===k);S!==-1&&u.splice(S,1),l({type:"scope_end",workflowId:i,scopeId:k,ts:Date.now(),durationMs:performance.now()-T})};l({type:"scope_start",workflowId:i,scopeId:k,scopeType:"parallel",name:M,ts:Date.now()});try{let S=await g();if(N(),!S.ok)throw n?.(S.error,M,a),m(S.error,{origin:"result",resultCause:S.cause});return S.value}catch(S){throw N(),S}})()},A=function(M,g){let k=Object.keys(M),T=g.name??`Parallel(${k.join(", ")})`,E=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let N=performance.now(),S=!1;u.push({scopeId:E,type:"parallel"});let I=()=>{if(S)return;S=!0;let d=u.findIndex(w=>w.scopeId===E);d!==-1&&u.splice(d,1),l({type:"scope_end",workflowId:i,scopeId:E,ts:Date.now(),durationMs:performance.now()-N})};l({type:"scope_start",workflowId:i,scopeId:E,scopeType:"parallel",name:T,ts:Date.now()});try{let d=await new Promise(C=>{if(k.length===0){C([]);return}let B=!1,L=k.length,q=new Array(k.length);for(let G=0;G<k.length;G++){let ce=k[G],je=G;Promise.resolve(M[ce]()).catch(F=>b({type:"PROMISE_REJECTED",cause:F},{cause:{type:"PROMISE_REJECTION",reason:F}})).then(F=>{if(!B){if(!F.ok){B=!0,C([{key:ce,result:F}]);return}q[je]={key:ce,result:F},L--,L===0&&C(q)}})}});I();let w={};for(let{key:C,result:B}of d){if(!B.ok)throw n?.(B.error,C,a),m(B.error,{origin:"result",resultCause:B.cause});w[C]=B.value}return w}catch(d){throw I(),d}})()};var v=x,W=A;let y=(M,g)=>(async()=>{let k=Gr(g),{name:T,key:E,retry:N,timeout:S}=k,I=f(E),d=r,w=d?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(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 L={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&&l({type:"step_start",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now()});let q;for(let F=1;F<=L.attempts;F++){let Br=d?performance.now():0;try{let U;if(typeof M=="function"?S?U=await Jr(M,S,{name:T,key:E,attempt:F}):U=await M():U=await M,U.ok){let te=performance.now()-w;return l({type:"step_success",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:te}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:T,ts:Date.now(),durationMs:te,result:U}),U.value}if(q=U,F<L.attempts&&L.retryOn(U.error,F)){let te=Xe(F,L);l({type:"step_retry",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),attempt:F+1,maxAttempts:L.attempts,delayMs:te,error:U.error}),L.onRetry(U.error,F,te),await Ye(te);continue}L.attempts>1&&l({type:"step_retries_exhausted",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:performance.now()-w,attempts:F,lastError:U.error});break}catch(U){let te=performance.now()-Br;if(R(U))throw l({type:"step_aborted",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:te}),U;if(De(U)){let K=Ze(U),qe=S?.ms??K?.timeoutMs??0;if(l({type:"step_timeout",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),timeoutMs:qe,attempt:F}),F<L.attempts&&L.retryOn(U,F)){let Ge=Xe(F,L);l({type:"step_retry",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),attempt:F+1,maxAttempts:L.attempts,delayMs:Ge,error:U}),L.onRetry(U,F,Ge),await Ye(Ge);continue}L.attempts>1&&l({type:"step_retries_exhausted",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:performance.now()-w,attempts:F,lastError:U})}if(F<L.attempts&&L.retryOn(U,F)){let K=Xe(F,L);l({type:"step_retry",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),attempt:F+1,maxAttempts:L.attempts,delayMs:K,error:U}),L.onRetry(U,F,K),await Ye(K);continue}L.attempts>1&&!De(U)&&l({type:"step_retries_exhausted",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:performance.now()-w,attempts:F,lastError:U});let Oe=performance.now()-w;if(o){let K;try{K=o(U)}catch(qe){throw jr(qe)}throw l({type:"step_error",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:Oe,error:K}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:T,ts:Date.now(),durationMs:Oe,result:b(K,{cause:U}),meta:{origin:"throw",thrown:U}}),n?.(K,T,a),m(K,{origin:"throw",thrown:U})}else{let K={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:U}};throw l({type:"step_error",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:Oe,error:K}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:T,ts:Date.now(),durationMs:Oe,result:b(K,{cause:U}),meta:{origin:"throw",thrown:U}}),U}}}let G=q,ce=performance.now()-w,je=h(G.error,{origin:"result",resultCause:G.cause});throw l({type:"step_error",workflowId:i,stepId:I,stepKey:E,name:T,ts:Date.now(),durationMs:ce,error:je}),E&&l({type:"step_complete",workflowId:i,stepKey:E,name:T,ts:Date.now(),durationMs:ce,result:G,meta:{origin:"result",resultCause:G.cause}}),n?.(G.error,T,a),m(G.error,{origin:"result",resultCause:G.cause})})();y.try=(M,g)=>{let k=g.name,T=g.key,E=f(T),N="error"in g?()=>g.error:g.onError,S=r;return(async()=>{let I=S?performance.now():0;r&&l({type:"step_start",workflowId:i,stepId:E,stepKey:T,name:k,ts:Date.now()});try{let d=await M(),w=performance.now()-I;return l({type:"step_success",workflowId:i,stepId:E,stepKey:T,name:k,ts:Date.now(),durationMs:w}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:k,ts:Date.now(),durationMs:w,result:_(d)}),d}catch(d){let w=N(d),C=performance.now()-I,B=h(w,{origin:"throw",thrown:d});throw l({type:"step_error",workflowId:i,stepId:E,stepKey:T,name:k,ts:Date.now(),durationMs:C,error:B}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:k,ts:Date.now(),durationMs:C,result:b(w,{cause:d}),meta:{origin:"throw",thrown:d}}),n?.(w,k,a),m(w,{origin:"throw",thrown:d})}})()},y.fromResult=(M,g)=>{let k=g.name,T=g.key,E=f(T),N="error"in g?()=>g.error:g.onError,S=r;return(async()=>{let I=S?performance.now():0;r&&l({type:"step_start",workflowId:i,stepId:E,stepKey:T,name:k,ts:Date.now()});let d=await M();if(d.ok){let w=performance.now()-I;return l({type:"step_success",workflowId:i,stepId:E,stepKey:T,name:k,ts:Date.now(),durationMs:w}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:k,ts:Date.now(),durationMs:w,result:_(d.value)}),d.value}else{let w=N(d.error),C=performance.now()-I,B=h(w,{origin:"result",resultCause:d.error});throw l({type:"step_error",workflowId:i,stepId:E,stepKey:T,name:k,ts:Date.now(),durationMs:C,error:B}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:k,ts:Date.now(),durationMs:C,result:b(w,{cause:d.error}),meta:{origin:"result",resultCause:d.error}}),n?.(w,k,a),m(w,{origin:"result",resultCause:d.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 x(g,k)}else{let g=M[0],k=M[1]??{};return A(g,k)}}),y.race=(M,g)=>{let k=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let T=performance.now(),E=!1,N={scopeId:k,type:"race",winnerId:void 0};u.push(N);let S=()=>{if(E)return;E=!0;let I=u.findIndex(d=>d.scopeId===k);I!==-1&&u.splice(I,1),l({type:"scope_end",workflowId:i,scopeId:k,ts:Date.now(),durationMs:performance.now()-T,winnerId:N.winnerId})};l({type:"scope_start",workflowId:i,scopeId:k,scopeType:"race",name:M,ts:Date.now()});try{let I=await g();if(S(),!I.ok)throw n?.(I.error,M,a),m(I.error,{origin:"result",resultCause:I.cause});return I.value}catch(I){throw S(),I}})()},y.allSettled=(M,g)=>{let k=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let T=performance.now(),E=!1;u.push({scopeId:k,type:"allSettled"});let N=()=>{if(E)return;E=!0;let S=u.findIndex(I=>I.scopeId===k);S!==-1&&u.splice(S,1),l({type:"scope_end",workflowId:i,scopeId:k,ts:Date.now(),durationMs:performance.now()-T})};l({type:"scope_start",workflowId:i,scopeId:k,scopeType:"allSettled",name:M,ts:Date.now()});try{let S=await g();if(N(),!S.ok)throw n?.(S.error,M,a),m(S.error,{origin:"result",resultCause:S.cause});return S.value}catch(S){throw N(),S}})()};let V=await e(y);return _(V)}catch(y){if(qr(y))throw y.thrown;if(R(y)){let A=P(y.meta);if(o||n)return b(y.error,{cause:A});if(Qe(y.error))return b(y.error,{cause:A});let $=O(y);return b($,{cause:A})}if(o){let A=o(y);return n?.(A,"unexpected",a),b(A,{cause:y})}let x={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}};return n?.(x,"unexpected",a),b(x,{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"}},At=e=>{if(e.ok)return e.value;throw new me(e.error,e.cause)},It=(e,t)=>e.ok?e.value:t,Ot=(e,t)=>e.ok?e.value:t(e.error,e.cause);function Dt(e,t){try{return _(e())}catch(n){return t?b(t(n),{cause:n}):b(n)}}async function Mt(e,t){try{return _(await e)}catch(n){return t?b(t(n),{cause:n}):b(n)}}async function _t(e,t){try{return _(await e())}catch(n){return t?b(t(n),{cause:n}):b(n)}}function $t(e,t){return e!=null?_(e):b(t())}function Nt(e,t){return e.ok?_(t(e.value)):e}function Wt(e,t){return e.ok?e:b(t(e.error),{cause:e.cause})}function Lt(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Bt(e,t){return e.ok?t(e.value):e}function Ut(e,t){return e.ok&&t(e.value),e}function Ht(e,t){return e.ok||t(e.error,e.cause),e}function Ft(e,t,n){if(!e.ok)return e;try{return _(t(e.value))}catch(r){return b(n(r),{cause:r})}}function Vt(e,t,n){if(e.ok)return e;try{return b(t(e.error),{cause:e.cause})}catch(r){return b(n(r),{cause:r})}}function zt(e,t,n){return e.ok?_(t(e.value)):b(n(e.error),{cause:e.cause})}function Kt(e,t){return e.ok?e:t(e.error,e.cause)}async function jt(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function qt(e,t){return e.ok?_(e.value):_(t(e.error,e.cause))}async function Gt(e,t){let n=await e;return n.ok?_(n.value):_(await t(n.error,n.cause))}function et(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 et(e)!==null}function Xt(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return _(t)}async function Yt(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=>b({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 Qt(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?b(n):_(t)}function Zt(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 en(e){if(e.length===0)return b({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 tn(e){return e.length===0?b({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=>b({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 nn(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?b(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 l=r?.cause!==void 0;if(p&&l)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,u),p&&(this.cause=f),l&&(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 rn(){let e=new Map;return{handleEvent:t=>{_e(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Xr(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function Me(e,t,n){return b(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function tt(e){return Xr(e)?e.meta:{origin:"result",resultCause:e}}function on(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)},l=t?.shouldRun,m=t?.catchUnexpected;if(l){let g=performance.now();try{let k=await l(c,u),T=performance.now()-g;if(f({type:"hook_should_run",workflowId:c,ts:Date.now(),durationMs:T,result:k,skipped:!k}),!k){let E=new Error("Workflow skipped by shouldRun hook");if(m){let S=m(E);return b(S)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:E}})}}catch(k){let T=performance.now()-g;if(f({type:"hook_should_run_error",workflowId:c,ts:Date.now(),durationMs:T,error:k}),m){let N=m(k);return b(N)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:k}})}}let R=t?.onBeforeStart;if(R){let g=performance.now();try{let k=await R(c,u),T=performance.now()-g;if(f({type:"hook_before_start",workflowId:c,ts:Date.now(),durationMs:T,result:k,skipped:!k}),!k){let E=new Error("Workflow skipped by onBeforeStart hook");if(m){let S=m(E);return b(S)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:E}})}}catch(k){let T=performance.now()-g;if(f({type:"hook_before_start_error",workflowId:c,ts:Date.now(),durationMs:T,error:k}),m){let N=m(k);return b(N)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:k}})}}let h=Date.now(),P=performance.now();f({type:"workflow_start",workflowId:c,ts:h});let O=t?.resumeState,v=t?.cache;if(O&&!v&&(v=new Map),O&&v){let g=typeof O=="function"?await O():O;for(let[k,T]of g.steps){let{result:E,meta:N}=T;if(E.ok)v.set(k,E);else{let S=N??{origin:"result",resultCause:E.cause};v.set(k,Me(E.error,S,E.cause))}}}let W=g=>typeof g=="string"?{name:g}:g??{},y=t?.onAfterStep,x=async(g,k)=>{if(!y)return;let T=performance.now();try{await y(g,k,c,u);let E=performance.now()-T;f({type:"hook_after_step",workflowId:c,stepKey:g,ts:Date.now(),durationMs:E})}catch(E){let N=performance.now()-T;throw f({type:"hook_after_step_error",workflowId:c,stepKey:g,ts:Date.now(),durationMs:N,error:E}),E}},A=g=>{if(!v&&!y)return g;let k=async(T,E)=>{let{name:N,key:S}=W(E);if(S&&v&&v.has(S)){f({type:"step_cache_hit",workflowId:c,stepKey:S,name:N,ts:Date.now()});let d=v.get(S);if(d.ok)return d.value;let w=tt(d.cause);throw Q(d.error,w)}S&&v&&f({type:"step_cache_miss",workflowId:c,stepKey:S,name:N,ts:Date.now()});let I=typeof T=="function"?T:()=>T;try{let d=await g(I,E);return S&&(v&&v.set(S,_(d)),await x(S,_(d))),d}catch(d){if(S&&Z(d)){let w=d,C=w.meta.origin==="result"?w.meta.resultCause:w.meta.thrown,B=Me(w.error,w.meta,C);v&&v.set(S,B),await x(S,B)}throw d}};return k.try=async(T,E)=>{let{name:N,key:S}=E;if(S&&v&&v.has(S)){f({type:"step_cache_hit",workflowId:c,stepKey:S,name:N,ts:Date.now()});let I=v.get(S);if(I.ok)return I.value;let d=tt(I.cause);throw Q(I.error,d)}S&&v&&f({type:"step_cache_miss",workflowId:c,stepKey:S,name:N,ts:Date.now()});try{let I=await g.try(T,E);return S&&(v&&v.set(S,_(I)),await x(S,_(I))),I}catch(I){if(S&&Z(I)){let d=I,w=d.meta.origin==="result"?d.meta.resultCause:d.meta.thrown,C=Me(d.error,d.meta,w);v&&v.set(S,C),await x(S,C)}throw I}},k.fromResult=async(T,E)=>{let{name:N,key:S}=E;if(S&&v&&v.has(S)){f({type:"step_cache_hit",workflowId:c,stepKey:S,name:N,ts:Date.now()});let I=v.get(S);if(I.ok)return I.value;let d=tt(I.cause);throw Q(I.error,d)}S&&v&&f({type:"step_cache_miss",workflowId:c,stepKey:S,name:N,ts:Date.now()});try{let I=await g.fromResult(T,E);return S&&(v&&v.set(S,_(I)),await x(S,_(I))),I}catch(I){if(S&&Z(I)){let d=I,w=d.meta.origin==="result"?d.meta.resultCause:d.meta.thrown,C=Me(d.error,d.meta,w);v&&v.set(S,C),await x(S,C)}throw I}},k.parallel=g.parallel,k.race=g.race,k.allSettled=g.allSettled,k.retry=(T,E)=>k(T,{name:E.name,key:E.key,retry:{attempts:E.attempts,backoff:E.backoff,initialDelay:E.initialDelay,maxDelay:E.maxDelay,jitter:E.jitter,retryOn:E.retryOn,onRetry:E.onRetry},timeout:E.timeout}),k.withTimeout=(T,E)=>k(T,{name:E.name,key:E.key,timeout:E}),k},$=s?g=>i(A(g),e,a,p):g=>i(A(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()-P;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 _e(e){return e.type==="step_complete"}function ee(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function sn(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function an(e,t){return b({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function un(e){return async()=>{let t=await e.checkApproval();switch(t.status){case"pending":return b({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return b({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 cn(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function pn(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:ee(n.result.error)}function ln(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=>{_e(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 dn(){return`decision_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function fn(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 Ne(e,t,n,r){if(e)return t();let o=dn();fn(r,n,o)}function nt(e,t,n,r){return Ne(!e,t,n,r)}function We(e,t,n,r,o){if(e)return t();let s=dn();return fn(o,r,s),n}function rt(e,t,n,r,o){return We(!e,t,n,r,o)}function mn(e){return{when:(t,n,r)=>Ne(t,n,r,e),unless:(t,n,r)=>nt(t,n,r,e),whenOr:(t,n,r,o)=>We(t,n,r,o,e),unlessOr:(t,n,r,o)=>rt(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 yn(e){return typeof e=="object"&&e!==null&&e.type==="CIRCUIT_OPEN"}var Yr={failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3};function gn(e,t){let n={...Yr,...t},r="CLOSED",o=[],s=null,a=null,i=0,c=0;function u(){let h=Date.now();o=o.filter(P=>h-P.timestamp<n.windowSize)}function p(h){if(r!==h){let P=r;r=h,h==="HALF_OPEN"&&(c=0),n.onStateChange?.(P,h,e)}}function f(){return r!=="OPEN"||s===null?!1:Date.now()-s>=n.resetTimeout?(p("HALF_OPEN"),!0):!1}function l(){a=Date.now(),i++,r==="HALF_OPEN"&&(c++,c>=n.halfOpenMax&&(p("CLOSED"),o=[]))}function m(h){let P=Date.now();s=P,u(),o.push({timestamp:P,error:h}),(r==="HALF_OPEN"||r==="CLOSED"&&o.length>=n.failureThreshold)&&p("OPEN")}function R(){if(r==="CLOSED")return 0;if(r==="OPEN"){if(f())return 0;let h=Date.now(),P=s?h-s:0;return Math.max(0,n.resetTimeout-P)}return 0}return{async execute(h,P){let O=R();if(O>0)throw new de({circuitName:e,state:r,retryAfterMs:O});try{let v=await h();return l(),v}catch(v){throw m(v),v}},async executeResult(h,P){let O=R();if(O>0)return b(new de({circuitName:e,state:r,retryAfterMs:O}));try{let v=await h();return v.ok?l():m(v.error),v}catch(v){throw m(v),v}},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(){l()},recordFailure(h){m(h??new Error("Manual failure"))}}}var wn={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 kn(e){return typeof e=="object"&&e!==null&&e.type==="SAGA_COMPENSATION_ERROR"}function hn(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 l=s.length-1;l>=0;l--){let m=s[l];try{await m.compensate(m.value),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!0})}catch(R){p.push({stepName:m.name,error:R}),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!1,error:R})}}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 l=await u();return p.compensate&&s.push({name:p.name,value:l,compensate:p.compensate}),l}catch(l){let m=f(l);throw Q(m,{origin:"throw",thrown:l})}},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 l=await i(f);if(l.length>0){let m={type:"SAGA_COMPENSATION_ERROR",originalError:f,compensationErrors:l};if(t?.onError?.(m),t?.throwOnCompensationFailure)throw m;return b(m)}return t?.onError?.(f),Z(u)?b(f):b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}}async function En(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 l=o[f];try{await l.compensate(l.value),s({type:"saga_compensation_step",sagaId:n,stepName:l.name,ts:Date.now(),success:!0})}catch(m){u.push({stepName:l.name,error:m}),s({type:"saga_compensation_step",sagaId:n,stepName:l.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 l=p(f);throw Q(l,{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 l={type:"SAGA_COMPENSATION_ERROR",originalError:p,compensationErrors:f};if(t?.onError?.(l),t?.throwOnCompensationFailure)throw l;return b(l)}return t?.onError?.(p),Z(c)?b(p):b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:c}})}}function vn(e){return typeof e=="object"&&e!==null&&e.type==="RATE_LIMIT_EXCEEDED"}function ot(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function st(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 l=Date.now(),R=(l-a)*i;s=Math.min(o,s+R),a=l}function p(){if(u(),s>=1)return s-=1,0;let l=1-s;return Math.ceil(l/i)}async function f(){return new Promise(l=>{let m=()=>{let R=p();R===0?l():(c.push(m),setTimeout(()=>{let h=c.indexOf(m);h!==-1&&(c.splice(h,1),m())},R))};m()})}return{async execute(l){let m=p();if(m>0){if(r==="reject")throw{type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m};await f()}return l()},async executeResult(l){let m=p();if(m>0){if(r==="reject")return b({type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m});await f()}return l()},getStats(){return u(),{availableTokens:Math.floor(s),maxTokens:o,tokensPerSecond:n,waitingCount:c.length}},reset(){s=o,a=Date.now(),c.length=0}}}function ke(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 l=0;l<u.length;l++){let m=l,R=this.execute(u[m]).then(h=>{p[m]=h});f.push(R)}return await Promise.all(f),p},async executeResult(u){try{await i()}catch(p){if(ot(p))return b(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 Tn(e,t){let n=t.rate?st(`${e}-rate`,t.rate):void 0,r=t.concurrency?ke(`${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 Sn={api:{maxPerSecond:10,burstCapacity:20,strategy:"wait"},database:{maxConcurrent:10,strategy:"queue",maxQueueSize:100},external:{maxPerSecond:5,burstCapacity:10,strategy:"wait"}};function xn(e){return typeof e=="object"&&e!==null&&e.type==="MIGRATION_ERROR"}function Rn(e){return typeof e=="object"&&e!==null&&e.type==="VERSION_INCOMPATIBLE"}async function at(e,t,n){let r=e.state,o=e.version;if(o>t)return b({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 b({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 b({type:"MIGRATION_ERROR",fromVersion:o,toVersion:o+1,cause:a})}}return _({version:o,state:r})}function bn(e){let{version:t,migrations:n={},strictVersioning:r=!0}=e;return async o=>{if(!o)return _(void 0);if(r&&o.version>t)return b({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 at(o,t,n);return s.ok?_(s.value.state):s}}function Cn(e,t){return{version:t,state:e}}function Pn(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 An(e){return JSON.stringify({version:e.version,state:{steps:Array.from(e.state.steps.entries())}})}function In(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 On(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 Dn(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 Mn(e){return async t=>{let n=t;for(let r of e)n=await r(n);return n}}function _n(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,l){return f?`${t}.${f}`:l?`${t}.step.${l}`:`${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 l=f.stepId;i.steps.set(l,{workflowId:f.workflowId,stepId:l,stepKey:f.stepKey,name:f.name,startTime:f.ts})}break;case"step_success":case"step_error":if(n){let l=f.stepId,m=i.steps.get(l);m&&(i.steps.delete(l),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 $n(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 Nn(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 Wn(e){return typeof e=="object"&&e!==null&&e.type==="VALIDATION_ERROR"}function Le(e){return{status:400,body:{error:{type:e.type,message:e.message,details:e.field?{field:e.field}:e.details}}}}function Be(e){return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}}}function Ln(e,t,n){let{validateInput:r,mapResult:o,mapValidationError:s=Le,mapUnexpectedError:a=Be,beforeValidation:i,afterResponse:c}=n;return async u=>{try{let p=i?await i(u):u,f=await r(p);if(!le(f)){let R=s(f.error,p);return c?await c(R,p):R}let l=await e(f.value,(R,h)=>t(R,h,f.value)),m=o(l,p);return c?await c(m,p):m}catch(p){let f=a(p,u);return c?await c(f,u):f}}}function Bn(e){let{validateInput:t,handler:n,mapResult:r,mapValidationError:o=Le,mapUnexpectedError:s=Be}=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 Un(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 it(e){return{method:e.method,path:e.path,headers:e.headers,body:e.body,query:e.query,params:e.params,raw:e}}function ut(e,t){t.headers&&e.set(t.headers),e.status(t.status).json(t.body)}function Hn(e){return async(t,n)=>{let r=it(t),o=await e(r);ut(n,o)}}function ct(e,t,n){return{type:"VALIDATION_ERROR",message:e,field:t,details:n}}function Fn(e){return t=>{for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return b(ct(`Missing required field: ${n}`,n));return _(void 0)}}function Vn(...e){return t=>{for(let n of e){let r=n(t);if(!r.ok)return r}return _(void 0)}}function zn(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 Kn(...e){let t=j(...e);return n=>j(t,typeof n=="string"?{name:n}:n??{})}function jn(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 J(e){return{timeout:e}}var ae={none:{},fast:J({ms:1e3}),api:J({ms:5e3}),extended:J({ms:3e4}),long:J({ms:12e4}),ms:e=>J({ms:e}),seconds:e=>J({ms:e*1e3}),withError:(e,t)=>J({ms:e,error:t}),withSignal:e=>J({ms:e,signal:!0})},qn={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(J({ms:1e4}),X({attempts:5,backoff:"linear",initialDelay:1e3,maxDelay:1e4,jitter:!0}))};function pt(e,t){return j(e,typeof t=="string"?{name:t}:t??{})}function Gn(e,t){let n=typeof t=="string"?{name:t}:t??{};return j(...e,n)}function Jn(e,t,n={}){return e?t:n}function Xn(e,t=process.env.NODE_ENV??"development",n={}){return e[t]??n}function Yn(){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 pt(r,n)}}}function Qn(){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(J({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 he(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 ve(e){return e.ok?{ok:!0,value:e.value}:{ok:!1,error:e.error,cause:e.cause!==void 0?he(e.cause):void 0}}function Te(e){if(e.ok)return _(e.value);let t=e.cause?Ee(e.cause):void 0;return b(e.error,t!==void 0?{cause:t}:void 0)}function lt(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause!==void 0?he(e.resultCause):void 0}:{origin:"throw",thrown:he(e.thrown)}}function dt(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 ft(e){return{result:ve(e.result),meta:e.meta?lt(e.meta):void 0}}function mt(e){return{result:Te(e.result),meta:e.meta?dt(e.meta):void 0}}function Ue(e,t){let n={};for(let[r,o]of e.steps)n[r]=ft(o);return{version:1,entries:n,metadata:t}}function He(e){let t=new Map;for(let[n,r]of Object.entries(e.entries))t.set(n,mt(r));return{steps:t}}function Zn(e,t){return JSON.stringify(Ue(e,t))}function er(e){let t=JSON.parse(e);return He(t)}function tr(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 nr(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=Te(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=ve(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 rr(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=Te(c);return s.set(a,u),u}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let c=ve(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 or(e,t="workflow:state:"){let n=r=>`${t}${r}`;return{async save(r,o,s){let a=Ue(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 He(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 sr(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 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 yt(){return`node_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Qr(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 gt(e,t={}){if(Qr(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(P=>P.startTs)),l=Math.max(...i.map(P=>P.endTs)),m=p.startTs<=f+r,R=p.startTs<l;if(!m&&!R){a.push(i),i=[p];continue}let h=R?Math.min(p.endTs,l)-p.startTs:0;m||h>=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(h=>h.node),l=Math.min(...u.map(h=>h.startTs)),m=Math.max(...u.map(h=>h.endTs)),R={type:"parallel",id:`detected_parallel_${l}`,name:`${f.length} parallel steps`,state:Zr(f),mode:"all",children:f,startTs:l,endTs:m,durationMs:m-l};c.push({node:R,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 Se(e={}){let{detectParallel:t=!0,parallelDetection:n,enableSnapshots:r=!1,maxSnapshots:o=1e3}=e,s,a,i="pending",c,u,p=new Map,f=[],l=[],m=[],R=Date.now(),h=R,P={onAfterStep:new Map},O=[],v=0;function W(d){return d.stepId??d.stepKey??d.name??yt()}function y(d){if(l.length>0){let w=l[l.length-1];for(let B of w.branches.values())if(B.taken){B.children.push(d),h=Date.now();return}let C=Array.from(w.branches.values())[0];if(C){C.children.push(d),h=Date.now();return}}f.length>0?f[f.length-1].children.push(d):m.push(d),h=Date.now()}function x(d){if(!r)return;let w=k(),C=new Map;for(let[L,q]of p)C.set(L,{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_${v}`,eventIndex:v,event:structuredClone(d),ir:structuredClone(w),timestamp:Date.now(),activeSteps:C};O.push(B),O.length>o&&O.shift(),v++}function A(d){switch(d.type){case"workflow_start":s=d.workflowId,a=d.ts,i="running",R=Date.now(),h=R,P.onAfterStep=new Map;break;case"workflow_success":i="success",u=d.durationMs,h=Date.now();break;case"workflow_error":i="error",c=d.error,u=d.durationMs,h=Date.now();break;case"step_start":{let w=W(d);p.set(w,{id:w,name:d.name,key:d.stepKey,startTs:d.ts,retryCount:0,timedOut:!1}),h=Date.now();break}case"step_success":{let w=W(d),C=p.get(w);if(C){let B={type:"step",id:C.id,name:C.name,key:C.key,state:"success",startTs:C.startTs,endTs:d.ts,durationMs:d.durationMs,...C.retryCount>0&&{retryCount:C.retryCount},...C.timedOut&&{timedOut:!0,timeoutMs:C.timeoutMs}};y(B),p.delete(w)}break}case"step_error":{let w=W(d),C=p.get(w);if(C){let B={type:"step",id:C.id,name:C.name,key:C.key,state:"error",startTs:C.startTs,endTs:d.ts,durationMs:d.durationMs,error:d.error,...C.retryCount>0&&{retryCount:C.retryCount},...C.timedOut&&{timedOut:!0,timeoutMs:C.timeoutMs}};y(B),p.delete(w)}break}case"step_aborted":{let w=W(d),C=p.get(w);if(C){let B={type:"step",id:C.id,name:C.name,key:C.key,state:"aborted",startTs:C.startTs,endTs:d.ts,durationMs:d.durationMs,...C.retryCount>0&&{retryCount:C.retryCount},...C.timedOut&&{timedOut:!0,timeoutMs:C.timeoutMs}};y(B),p.delete(w)}break}case"step_cache_hit":{let C={type:"step",id:W(d),name:d.name,key:d.stepKey,state:"cached",startTs:d.ts,endTs:d.ts,durationMs:0};y(C);break}case"step_cache_miss":break;case"step_complete":break;case"step_timeout":{let w=W(d),C=p.get(w);C&&(C.timedOut=!0,C.timeoutMs=d.timeoutMs),h=Date.now();break}case"step_retry":{let w=W(d),C=p.get(w);C&&(C.retryCount=(d.attempt??1)-1),h=Date.now();break}case"step_retries_exhausted":h=Date.now();break;case"step_skipped":{let C={type:"step",id:W(d),name:d.name,key:d.stepKey,state:"skipped",startTs:d.ts,endTs:d.ts,durationMs:0};y(C);break}case"hook_should_run":{let w={type:"shouldRun",state:"success",ts:d.ts,durationMs:d.durationMs,context:{result:d.result,skipped:d.skipped}};P.shouldRun=w,h=Date.now();break}case"hook_should_run_error":{let w={type:"shouldRun",state:"error",ts:d.ts,durationMs:d.durationMs,error:d.error};P.shouldRun=w,h=Date.now();break}case"hook_before_start":{let w={type:"onBeforeStart",state:"success",ts:d.ts,durationMs:d.durationMs,context:{result:d.result,skipped:d.skipped}};P.onBeforeStart=w,h=Date.now();break}case"hook_before_start_error":{let w={type:"onBeforeStart",state:"error",ts:d.ts,durationMs:d.durationMs,error:d.error};P.onBeforeStart=w,h=Date.now();break}case"hook_after_step":{let w={type:"onAfterStep",state:"success",ts:d.ts,durationMs:d.durationMs,context:{stepKey:d.stepKey}};P.onAfterStep.set(d.stepKey,w),h=Date.now();break}case"hook_after_step_error":{let w={type:"onAfterStep",state:"error",ts:d.ts,durationMs:d.durationMs,error:d.error,context:{stepKey:d.stepKey}};P.onAfterStep.set(d.stepKey,w),h=Date.now();break}}x(d)}function $(d){if(d.type==="scope_start")f.push({id:d.scopeId,name:d.name,type:d.scopeType,startTs:d.ts,children:[]}),h=Date.now();else if(d.type==="scope_end"){let w=f.pop();if(w){let C=w.type==="race"?{type:"race",id:w.id,name:w.name,state:M(w.children),startTs:w.startTs,endTs:d.ts,durationMs:d.durationMs,children:w.children,winnerId:d.winnerId}:{type:"parallel",id:w.id,name:w.name,state:M(w.children),startTs:w.startTs,endTs:d.ts,durationMs:d.durationMs,children:w.children,mode:w.type==="allSettled"?"allSettled":"all"};y(C)}}}function V(d){if(d.type==="decision_start")l.push({id:d.decisionId,name:d.name,condition:d.condition,decisionValue:d.decisionValue,startTs:d.ts,branches:new Map}),h=Date.now();else if(d.type==="decision_branch"){let w=l[l.length-1];if(w&&w.id===d.decisionId){let C=d.branchLabel,B=w.branches.get(C);B?B.taken=d.taken:w.branches.set(C,{label:d.branchLabel,condition:d.condition,taken:d.taken,children:[]}),h=Date.now()}}else if(d.type==="decision_end"){let w=l.pop();if(w&&w.id===d.decisionId){let C=Array.from(w.branches.values()),B={type:"decision",id:w.id,name:w.name,state:M(C.flatMap(L=>L.taken?L.children:[])),startTs:w.startTs,endTs:d.ts,durationMs:d.durationMs,condition:w.condition,decisionValue:w.decisionValue,branchTaken:d.branchTaken??w.branchTaken,branches:C};y(B)}}}function M(d){return d.length===0?"success":d.some(L=>L.state==="error")?"error":d.every(L=>L.state==="success"||L.state==="cached")?"success":d.some(L=>L.state==="running")?"running":"pending"}function g(){let d=[...m];for(let[,w]of p)d.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 d}function k(){let d=g();t&&(d=gt(d,n));let w={type:"workflow",id:s??yt(),workflowId:s??"unknown",state:i,startTs:a,durationMs:u,children:d,error:c},C=P.shouldRun!==void 0||P.onBeforeStart!==void 0||P.onAfterStep.size>0;return{root:w,metadata:{createdAt:R,lastUpdatedAt:h},...C&&{hooks:P}}}function T(){s=void 0,a=void 0,i="pending",c=void 0,u=void 0,p.clear(),f.length=0,l.length=0,m=[],R=Date.now(),h=R,P={onAfterStep:new Map},O.length=0,v=0}function E(){return[...O]}function N(d){return O[d]}function S(d){return O[d]?.ir}function I(){O.length=0,v=0}return{handleEvent:A,handleScopeEvent:$,handleDecisionEvent:V,getIR:k,reset:T,getSnapshots:E,getSnapshotAt:N,getIRAt:S,clearSnapshots:I,get hasActiveSteps(){return p.size>0},get state(){return i},get snapshotCount(){return O.length},get snapshotsEnabled(){return r}}}function re(e){return e.type==="step"}function xe(e){return e.type==="parallel"}function Re(e){return e.type==="race"}function be(e){return e.type==="decision"}var wt="\x1B[0m",eo="\x1B[1m",ir="\x1B[2m",to="\x1B[31m",no="\x1B[32m",ro="\x1B[33m",oo="\x1B[34m",ar="\x1B[90m",so="\x1B[37m";function oe(e,t){return t?`${t}${e}${wt}`:e}function Ce(e){return`${eo}${e}${wt}`}function H(e){return`${ir}${e}${wt}`}var ue={pending:so,running:ro,success:no,error:to,aborted:ar,cached:oo,skipped:ir+ar};function ao(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 Pe(e,t){let n=ao(e);return oe(n,t[e])}function kt(e,t,n){return oe(e,n[t])}function ur(e){return e.replace(/\x1b\[[0-9;]*m/g,"")}var D={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"},io="\x1B[0m";function uo(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 cr(e,t){let n=uo(t);return n?`${n}${e}${io}`:e}var pr="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function co(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*(pr.length-1));return pr[c]}).join("")}function ht(e,t){let n=ur(e).length,r=Math.max(0,t-n);return e+" ".repeat(r)}function po(e,t){if(!t)return D.horizontal.repeat(e);let n=` ${t} `,r=e-n.length;if(r<4)return D.horizontal.repeat(e);let o=2,s=r-o;return D.horizontal.repeat(o)+n+D.horizontal.repeat(s)}function lr(e,t,n){let r=e.state==="success"?oe("\u2699",n.success):oe("\u26A0",n.error),o=e.durationMs!==void 0?H(` [${z(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 lo(e,t){let n=[];return e.shouldRun&&n.push(lr(e.shouldRun,"shouldRun",t)),e.onBeforeStart&&n.push(lr(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 Ae(){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=Ce(a);if(s.push(`${D.topLeft}${po(r-2,i)}${D.topRight}`),s.push(`${D.vertical}${" ".repeat(r-2)}${D.vertical}`),e.hooks){let u=lo(e.hooks,n);for(let p of u)s.push(`${D.vertical} ${ht(p,o)}${D.vertical}`)}let c=Fe(e.root.children,t,n,0,e.hooks);for(let u of c)s.push(`${D.vertical} ${ht(u,o)}${D.vertical}`);if(s.push(`${D.vertical}${" ".repeat(r-2)}${D.vertical}`),e.root.durationMs!==void 0&&t.showTimings){let u=e.root.state==="success"?"Completed":"Failed",f=`${kt(u,e.root.state,n)} in ${z(e.root.durationMs)}`;s.push(`${D.vertical} ${ht(f,o)}${D.vertical}`),s.push(`${D.vertical}${" ".repeat(r-2)}${D.vertical}`)}return s.push(`${D.bottomLeft}${D.horizontal.repeat(r-2)}${D.bottomRight}`),s.join(`
2
- `)}}}function Fe(e,t,n,r,o){let s=[];for(let a of e)re(a)?s.push(Et(a,t,n,o)):xe(a)?s.push(...fo(a,t,n,r,o)):Re(a)?s.push(...mo(a,t,n,r,o)):be(a)&&s.push(...yo(a,t,n,r,o));return s}function Et(e,t,n,r){let o=Pe(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=cr(s,c):u=kt(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=z(e.durationMs),l=c!==void 0?cr(`[${f}]`,c):H(`[${f}]`);p+=` ${l}`}if(a.showSparklines&&a.timingHistory){let f=a.timingHistory.get(i);f&&f.length>1&&(p+=` ${H(co(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),l=f.state==="success"?oe("\u2699",n.success):oe("\u26A0",n.error),m=f.durationMs!==void 0?H(` ${z(f.durationMs)}`):"";p+=` ${l}${m}`}return p}function fo(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Pe(e.state,n),c=e.name??"parallel",u=e.mode==="allSettled"?" (allSettled)":"";if(s.push(`${a}${D.teeRight}${D.teeDown}${D.horizontal} ${i} ${Ce(c)}${u}`),e.children.length===0)s.push(`${a}${D.vertical} ${H("(operations not individually tracked)")}`),s.push(`${a}${D.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}${D.vertical} ${D.bottomLeft}`:`${a}${D.vertical} ${D.teeRight}`;if(re(f))s.push(`${m} ${Et(f,t,n,o)}`);else{let R=Fe([f],t,n,r+1,o);for(let h of R)s.push(`${a}${D.vertical} ${h}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${D.bottomLeft}${D.horizontal}${D.horizontal} ${H(`[${z(e.durationMs)}]`)}`),s}function mo(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Pe(e.state,n),c=e.name??"race";if(s.push(`${a}${D.teeRight}\u26A1 ${i} ${Ce(c)}`),e.children.length===0)s.push(`${a}${D.vertical} ${H("(operations not individually tracked)")}`),s.push(`${a}${D.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],l=u===e.children.length-1?`${a}${D.vertical} ${D.bottomLeft}`:`${a}${D.vertical} ${D.teeRight}`,R=e.winnerId&&p.id===e.winnerId?H(" (winner)"):"";if(re(p))s.push(`${l} ${Et(p,t,n,o)}${R}`);else{let h=Fe([p],t,n,r+1,o);for(let P of h)s.push(`${a}${D.vertical} ${P}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${D.bottomLeft}${D.horizontal}${D.horizontal} ${H(`[${z(e.durationMs)}]`)}`),s}function yo(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Pe(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}${D.teeRight}${D.teeDown}${D.horizontal} ${i} ${Ce(c)}${u}${p}${f}`);for(let l=0;l<e.branches.length;l++){let m=e.branches[l],h=l===e.branches.length-1?`${a}${D.vertical} ${D.bottomLeft}`:`${a}${D.vertical} ${D.teeRight}`,P=m.taken?"\u2713":"\u2298",O=m.taken?n.success:n.skipped,v=oe(`${P} ${m.label}`,O),W=m.condition?H(` (${m.condition})`):"";if(s.push(`${h} ${v}${W}`),m.children.length>0){let y=Fe(m.children,t,n,r+1,o);for(let x of y)s.push(`${a}${D.vertical} ${x}`)}else m.taken||s.push(`${a}${D.vertical} ${H("(skipped)")}`)}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${D.bottomLeft}${D.horizontal}${D.horizontal} ${H(`[${z(e.durationMs)}]`)}`),s}function vt(e){return e<.2?"cold":e<.4?"cool":e<.6?"neutral":e<.8?"warm":e<.95?"hot":"critical"}function go(){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 wo(){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 ko(e){return`heat_${e}`}function ho(){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 Eo(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?` ${z(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?` ${z(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 dr=0;function Ie(e="node"){return`${e}_${++dr}`}function vo(){dr=0}function Y(e){return e.replace(/[{}[\]()]/g,"").replace(/[<>]/g,"").replace(/"/g,"'").trim()}function fr(e){return Y(e).replace(/[[\]]/g,"")}function Ve(){return{name:"mermaid",supportsLive:!1,render(e,t){vo();let n=[],r=t;n.push("flowchart TD");let o;e.hooks&&(o=Eo(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=ze(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(...go()),r.showHeatmap&&n.push(...wo()),e.hooks&&n.push(...ho()),n.join(`
3
- `)}}}function ze(e,t,n,r,o){if(re(e))return To(e,t,n,r,o);if(xe(e))return So(e,t,n,r,o);if(Re(e))return xo(e,t,n,r,o);if(be(e))return Ro(e,t,n,r,o);let s=Ie("unknown");return n.push(` ${s}[Unknown Node]`),{entryId:s,exitId:s}}function To(e,t,n,r,o){let s=e.key?`step_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:Ie("step"),a=Y(e.name??e.key??"Step"),i=t.showTimings&&e.durationMs!==void 0?` ${z(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 O=typeof e.input=="string"?Y(e.input):Y(JSON.stringify(e.input).slice(0,20));u+=`\\nin: ${O}`}if(e.output!==void 0&&e.state==="success"){let O=typeof e.output=="string"?Y(e.output):Y(JSON.stringify(e.output).slice(0,20));u+=`\\nout: ${O}`}let p="";if(e.retryCount!==void 0&&e.retryCount>0&&(p+=`\\n\u21BB ${e.retryCount} retr${e.retryCount===1?"y":"ies"}`),e.timedOut){let O=e.timeoutMs!==void 0?`${e.timeoutMs}ms`:"";p+=`\\n\u23F1 timeout ${O}`}let f="";if(o&&e.key&&o.onAfterStep.has(e.key)){let O=o.onAfterStep.get(e.key),v=O.state==="success"?"\u2699":"\u26A0",W=t.showTimings&&O.durationMs!==void 0?` ${z(O.durationMs)}`:"";f=`\\n${v} hook${W}`}let l=(c+a+u+p+f+i).trim(),m,R=e.name??e.id,h=r?.showHeatmap&&r.heatmapData?r.heatmapData.heat.get(e.id)??r.heatmapData.heat.get(R):void 0;if(h!==void 0){let O=vt(h);m=ko(O)}else m=e.state;let P;switch(e.state){case"error":P=`{{${l}}}`;break;case"cached":P=`[(${l})]`;break;case"skipped":P=`[${l}]:::skipped`;break;default:P=`[${l}]`}return n.push(` ${s}${P}:::${m}`),{entryId:s,exitId:s}}function So(e,t,n,r,o){let s=Ie("parallel"),a=`${s}_fork`,i=`${s}_join`,c=fr(e.name??"Parallel"),u=e.mode==="allSettled"?" (allSettled)":"";if(e.children.length===0){let l=s,m=Y(`${c}${u}`),R="operations not individually tracked",h=t.showTimings&&e.durationMs!==void 0?` ${z(e.durationMs)}`:"";return n.push(` ${l}[${m}${h}\\n${R}]:::${e.state}`),{entryId:l,exitId:l}}n.push(` subgraph ${s}["${c}${u}"]`),n.push(" direction TB"),n.push(` ${a}{"\u26A1 Fork"}`);let p=[];for(let l of e.children){let m=ze(l,t,n,r,o);n.push(` ${a} --> ${m.entryId}`),p.push(m.exitId)}n.push(` ${i}{"\u2713 Join"}`);for(let l of p)n.push(` ${l} --> ${i}`);n.push(" end");let f=e.state;return n.push(` class ${s} ${f}`),{entryId:a,exitId:i}}function xo(e,t,n,r,o){let s=Ie("race"),a=`${s}_start`,i=`${s}_end`,c=fr(e.name??"Race");if(e.children.length===0){let l=s,m=Y(c),R="operations not individually tracked",h=t.showTimings&&e.durationMs!==void 0?` ${z(e.durationMs)}`:"";return n.push(` ${l}[\u26A1 ${m}${h}\\n${R}]:::${e.state}`),{entryId:l,exitId:l}}n.push(` subgraph ${s}["\u26A1 ${c}"]`),n.push(" direction TB"),n.push(` ${a}(("\u{1F3C1} Start"))`);let u=[],p;for(let l of e.children){let m=ze(l,t,n,r,o),R=re(l)&&e.winnerId===l.id;n.push(` ${a} --> ${m.entryId}`),R&&(p=m.exitId),u.push({exitId:m.exitId,isWinner:R})}n.push(` ${i}(("\u2713 First"))`);for(let{exitId:l,isWinner:m}of u)m&&p?n.push(` ${l} ==>|\u{1F3C6} Winner| ${i}`):e.winnerId?n.push(` ${l} -. cancelled .-> ${i}`):n.push(` ${l} --> ${i}`);n.push(" end");let f=e.state;return n.push(` class ${s} ${f}`),{entryId:a,exitId:i}}function Ro(e,t,n,r,o){let s=e.key?`decision_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:Ie("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 l=`${s}_${f.label.replace(/[^a-zA-Z0-9]/g,"_")}`,m=Y(f.label),R=f.taken?`${m} \u2713`:`${m} skipped`,h=f.taken?":::success":":::skipped";n.push(` ${l}[${R}]${h}`);let P=f.condition?`|${Y(f.condition).replace(/\|/g,"")}|`:"";if(n.push(` ${s} -->${P} ${l}`),f.children.length>0){let O=l;for(let v of f.children){let W=ze(v,t,n,r,o);n.push(` ${O} --> ${W.entryId}`),O=W.exitId}u.push(O),f.taken&&(p=O)}else u.push(l),f.taken&&(p=l)}return p?{entryId:s,exitId:p}:{entryId:s,exitId:s}}var Ao=require("http"),Io=require("child_process");function mr(e={}){let{workflowName:t,detectParallel:n=!0,showTimings:r=!0,showKeys:o=!1,colors:s}=e,a=Se({detectParallel:n}),i=new Set,c=Ae(),u=Ve(),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 x of i)x(y)}}function l(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 R(y){a.handleDecisionEvent(y),f()}function h(){let y=a.getIR();return t&&!y.root.name&&(y.root.name=t),y}function P(){let y=h();return c.render(y,p)}function O(y){let x=h();switch(y){case"ascii":return c.render(x,p);case"mermaid":return u.render(x,p);case"json":return JSON.stringify(x,null,2);default:throw new Error(`Unknown format: ${y}`)}}function v(){a.reset(),f()}function W(y){return i.add(y),()=>i.delete(y)}return{handleEvent:l,handleScopeEvent:m,handleDecisionEvent:R,getIR:h,render:P,renderAs:O,reset:v,onUpdate:W}}function Tt(e={}){let{logEvents:t=!1,maxHistory:n=10,logger:r=console.log}=e,o=mr(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 l(){return a}function m(){return[...s]}function R(g){return a?.id===g?a:s.find(k=>k.id===g)}function h(g,k){let T=R(g),E=R(k);if(!(!T||!E))return yr(T,E)}function P(){if(!a||s.length===0)return;let g=s[s.length-1];return yr(g,a)}function O(){return o.render()}function v(g){return o.renderAs(g)}function W(){return o.renderAs("mermaid")}function y(){let g=x();return Do(g)}function x(){return a?Oo(a.events,i):[]}function A(){s.length=0}function $(){a=void 0,o.reset()}function V(g){let k=g?R(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:l,getHistory:m,getRun:R,diff:h,diffWithPrevious:P,render:O,renderAs:v,renderMermaid:W,renderTimeline:y,getTimeline:x,clearHistory:A,reset:$,exportRun:V,importRun:M}}function yr(e,t){let n=gr(e.events),r=gr(t.events),o=[],s=[],a=[],i=[];for(let[l,m]of r){let R=n.get(l);R?R.status!==m.status?a.push({step:l,type:"status",from:R.status,to:m.status}):R.durationMs!==m.durationMs?a.push({step:l,type:"duration",from:R.durationMs,to:m.durationMs}):i.push(l):o.push({step:l,type:"added",to:m.status})}for(let[l]of n)r.has(l)||s.push({step:l,type:"removed",from:n.get(l)?.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 gr(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 Oo(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 Do(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=Mo(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 Mo(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 wr(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(`
1
+ "use strict";var Ge=Object.defineProperty;var Br=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Hr=Object.prototype.hasOwnProperty;var Fr=(e,t)=>{for(var n in t)Ge(e,n,{get:t[n],enumerable:!0})},Vr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ur(t))!Hr.call(e,o)&&o!==n&&Ge(e,o,{get:()=>t[o],enumerable:!(r=Br(t,o))||r.enumerable});return e};var zr=e=>Vr(Ge({},"__esModule",{value:!0}),e);var _o={};Fr(_o,{CircuitOpenError:()=>le,STEP_TIMEOUT_MARKER:()=>te,TaggedError:()=>ye,UnwrapError:()=>fe,all:()=>Jt,allAsync:()=>Xt,allSettled:()=>Yt,allSettledAsync:()=>tn,andThen:()=>Lt,any:()=>Zt,anyAsync:()=>en,batchPresets:()=>$r,bimap:()=>Vt,circuitBreakerPresets:()=>gn,clearStep:()=>un,compareSnapshots:()=>Pr,composeMigrations:()=>Dn,composeValidators:()=>Fn,conditionalPolicy:()=>Gn,createApprovalChecker:()=>Sr,createApprovalStep:()=>an,createApprovalWebhookHandler:()=>Tr,createAutotelAdapter:()=>Mn,createAutotelEventHandler:()=>_n,createCircuitBreaker:()=>yn,createCombinedLimiter:()=>vn,createConcurrencyLimiter:()=>we,createConditionalHelpers:()=>fn,createConsoleLogger:()=>kr,createDevtools:()=>vt,createEventHandler:()=>Vn,createExpressHandler:()=>Un,createFileCache:()=>tr,createHITLCollector:()=>ge,createHITLOrchestrator:()=>vr,createHydratingCache:()=>or,createKVCache:()=>nr,createKeyRemoveMigration:()=>In,createKeyRenameMigration:()=>An,createMemoryApprovalStore:()=>hr,createMemoryCache:()=>er,createMemoryWorkflowStateStore:()=>Er,createMockFn:()=>br,createPolicyApplier:()=>zn,createPolicyBundle:()=>Kn,createPolicyRegistry:()=>Xn,createRateLimiter:()=>ot,createResource:()=>Wr,createResourceScope:()=>St,createResultMapper:()=>Bn,createSagaWorkflow:()=>kn,createSimpleHandler:()=>Ln,createSnapshot:()=>Cr,createStatePersistence:()=>rr,createStepCollector:()=>nn,createTestClock:()=>Ar,createValueTransformMigration:()=>On,createVersionedState:()=>bn,createVersionedStateLoader:()=>Rn,createWebhookHandler:()=>Wn,createWorkflow:()=>rn,createWorkflowHarness:()=>Rr,defaultUnexpectedErrorMapper:()=>Le,defaultValidationErrorMapper:()=>We,deserializeCause:()=>he,deserializeEntry:()=>ft,deserializeMeta:()=>lt,deserializeResult:()=>ve,deserializeState:()=>Ue,envPolicy:()=>Jn,err:()=>R,errOutcome:()=>Or,from:()=>Ot,fromNullable:()=>_t,fromPromise:()=>Dt,getPendingApprovals:()=>pn,getStepTimeoutMeta:()=>Qe,hasPendingApproval:()=>cn,hydrate:()=>Ze,injectApproval:()=>_e,isApprovalRejected:()=>on,isBatchProcessingError:()=>Tt,isCircuitOpenError:()=>mn,isErr:()=>Rt,isInvalidBatchConfigError:()=>Mr,isMigrationError:()=>Sn,isOk:()=>pe,isPendingApproval:()=>Z,isQueueFullError:()=>rt,isRateLimitExceededError:()=>En,isResourceCleanupError:()=>ze,isSagaCompensationError:()=>wn,isSerializedResult:()=>Gt,isStepComplete:()=>Me,isStepTimeoutError:()=>Oe,isUnexpectedError:()=>Ye,isValidationError:()=>Nn,isVersionIncompatibleError:()=>xn,map:()=>$t,mapError:()=>Nt,mapErrorTry:()=>Ft,mapTry:()=>Ht,match:()=>Wt,mergePolicies:()=>q,migrateState:()=>st,ok:()=>N,okOutcome:()=>Ir,orElse:()=>zt,orElseAsync:()=>Kt,parseState:()=>Zn,parseVersionedState:()=>Cn,partition:()=>Qt,pendingApproval:()=>sn,processInBatches:()=>_r,quickVisualize:()=>wr,rateLimiterPresets:()=>Tn,recover:()=>jt,recoverAsync:()=>qt,renderDiff:()=>gr,requireFields:()=>Hn,retryPolicies:()=>ae,retryPolicy:()=>J,run:()=>oe,runSaga:()=>hn,sendWebhookResponse:()=>it,serializeCause:()=>ke,serializeEntry:()=>dt,serializeMeta:()=>pt,serializeResult:()=>Ee,serializeState:()=>Be,servicePolicies:()=>jn,stepOptions:()=>Yn,stringifyState:()=>Qn,stringifyVersionedState:()=>Pn,tap:()=>Bt,tapError:()=>Ut,throwOutcome:()=>Dr,timeoutPolicies:()=>se,timeoutPolicy:()=>G,toWebhookRequest:()=>at,tryAsync:()=>Mt,unless:()=>tt,unlessOr:()=>nt,unwrap:()=>Pt,unwrapOr:()=>At,unwrapOrElse:()=>It,validationError:()=>ut,when:()=>$e,whenOr:()=>Ne,withAutotelTracing:()=>$n,withPolicies:()=>qn,withPolicy:()=>ct,withScope:()=>Nr});module.exports=zr(_o);var N=e=>({ok:!0,value:e}),R=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),pe=e=>e.ok,Rt=e=>!e.ok,Ye=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",te=Symbol.for("step_timeout_marker");function Oe(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:te in e}function Qe(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(te in e)return e[te]}}var bt=Symbol("early-exit");function Y(e,t){return{[bt]:!0,error:e,meta:t}}function Q(e){return typeof e=="object"&&e!==null&&e[bt]===!0}var Ct=Symbol("mapper-exception");function Kr(e){return{[Ct]:!0,thrown:e}}function jr(e){return typeof e=="object"&&e!==null&&e[Ct]===!0}function qr(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 Xe(e){return new Promise(t=>setTimeout(t,e))}var xt=Symbol("timeout");async function Gr(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({[xt]:!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[xt]===!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};te in u?u[te]=p:Object.defineProperty(u,te,{value:p,enumerable:!1,writable:!0,configurable:!1})}throw u}throw c}finally{clearTimeout(s)}}var ce={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function oe(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=x=>x??`step_${++p}`,l=x=>{let w=x.context!==void 0||a===void 0?x:{...x,context:a};if(w.type==="step_success"){let C=w.stepId;for(let I=u.length-1;I>=0;I--){let L=u[I];if(L.type==="race"&&!L.winnerId){L.winnerId=C;break}}}r?.(w,a)},m=Y,S=x=>Q(x),k=(x,w)=>c?w?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:x,...w.resultCause!==void 0?{cause:w.resultCause}:{}}}:w?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:x,thrown:w.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:x}}:x,P=x=>({type:"UNEXPECTED_ERROR",cause:x.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:x.error,...x.meta.resultCause!==void 0?{cause:x.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:x.error,thrown:x.meta.thrown}});try{let w=function(W,D){let y=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let g=performance.now(),T=!1;u.push({scopeId:y,type:"parallel"});let A=()=>{if(T)return;T=!0;let _=u.findIndex(v=>v.scopeId===y);_!==-1&&u.splice(_,1),l({type:"scope_end",workflowId:i,scopeId:y,ts:Date.now(),durationMs:performance.now()-g})};l({type:"scope_start",workflowId:i,scopeId:y,scopeType:"parallel",name:W,ts:Date.now()});try{let _=await D();if(A(),!_.ok)throw n?.(_.error,W,a),m(_.error,{origin:"result",resultCause:_.cause});return _.value}catch(_){throw A(),_}})()},C=function(W,D){let y=Object.keys(W),g=D.name??`Parallel(${y.join(", ")})`,T=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let A=performance.now(),_=!1;u.push({scopeId:T,type:"parallel"});let v=()=>{if(_)return;_=!0;let M=u.findIndex(d=>d.scopeId===T);M!==-1&&u.splice(M,1),l({type:"scope_end",workflowId:i,scopeId:T,ts:Date.now(),durationMs:performance.now()-A})};l({type:"scope_start",workflowId:i,scopeId:T,scopeType:"parallel",name:g,ts:Date.now()});try{let M=await new Promise(h=>{if(y.length===0){h([]);return}let b=!1,B=y.length,z=new Array(y.length);for(let V=0;V<y.length;V++){let ue=y[V],Ke=V;Promise.resolve(W[ue]()).catch(F=>R({type:"PROMISE_REJECTED",cause:F},{cause:{type:"PROMISE_REJECTION",reason:F}})).then(F=>{if(!b){if(!F.ok){b=!0,h([{key:ue,result:F}]);return}z[Ke]={key:ue,result:F},B--,B===0&&h(z)}})}});v();let d={};for(let{key:h,result:b}of M){if(!b.ok)throw n?.(b.error,h,a),m(b.error,{origin:"result",resultCause:b.cause});d[h]=b.value}return d}catch(M){throw v(),M}})()};var O=w,E=C;let x=(W,D)=>(async()=>{let y=qr(D),{name:g,key:T,retry:A,timeout:_}=y,v=f(T),M=r,d=M?performance.now():0;if(!(typeof W=="function")){if(A&&A.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(_)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 B={attempts:Math.max(1,A?.attempts??1),backoff:A?.backoff??ce.backoff,initialDelay:A?.initialDelay??ce.initialDelay,maxDelay:A?.maxDelay??ce.maxDelay,jitter:A?.jitter??ce.jitter,retryOn:A?.retryOn??ce.retryOn,onRetry:A?.onRetry??ce.onRetry};r&&l({type:"step_start",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now()});let z;for(let F=1;F<=B.attempts;F++){let Lr=M?performance.now():0;try{let U;if(typeof W=="function"?_?U=await Gr(W,_,{name:g,key:T,attempt:F}):U=await W():U=await W,U.ok){let ee=performance.now()-d;return l({type:"step_success",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:ee}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:g,ts:Date.now(),durationMs:ee,result:U}),U.value}if(z=U,F<B.attempts&&B.retryOn(U.error,F)){let ee=Je(F,B);l({type:"step_retry",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:ee,error:U.error}),B.onRetry(U.error,F,ee),await Xe(ee);continue}B.attempts>1&&l({type:"step_retries_exhausted",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:performance.now()-d,attempts:F,lastError:U.error});break}catch(U){let ee=performance.now()-Lr;if(S(U))throw l({type:"step_aborted",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:ee}),U;if(Oe(U)){let j=Qe(U),je=_?.ms??j?.timeoutMs??0;if(l({type:"step_timeout",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),timeoutMs:je,attempt:F}),F<B.attempts&&B.retryOn(U,F)){let qe=Je(F,B);l({type:"step_retry",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:qe,error:U}),B.onRetry(U,F,qe),await Xe(qe);continue}B.attempts>1&&l({type:"step_retries_exhausted",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:performance.now()-d,attempts:F,lastError:U})}if(F<B.attempts&&B.retryOn(U,F)){let j=Je(F,B);l({type:"step_retry",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:j,error:U}),B.onRetry(U,F,j),await Xe(j);continue}B.attempts>1&&!Oe(U)&&l({type:"step_retries_exhausted",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:performance.now()-d,attempts:F,lastError:U});let Ie=performance.now()-d;if(o){let j;try{j=o(U)}catch(je){throw Kr(je)}throw l({type:"step_error",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:Ie,error:j}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:g,ts:Date.now(),durationMs:Ie,result:R(j,{cause:U}),meta:{origin:"throw",thrown:U}}),n?.(j,g,a),m(j,{origin:"throw",thrown:U})}else{let j={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:U}};throw l({type:"step_error",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:Ie,error:j}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:g,ts:Date.now(),durationMs:Ie,result:R(j,{cause:U}),meta:{origin:"throw",thrown:U}}),U}}}let V=z,ue=performance.now()-d,Ke=k(V.error,{origin:"result",resultCause:V.cause});throw l({type:"step_error",workflowId:i,stepId:v,stepKey:T,name:g,ts:Date.now(),durationMs:ue,error:Ke}),T&&l({type:"step_complete",workflowId:i,stepKey:T,name:g,ts:Date.now(),durationMs:ue,result:V,meta:{origin:"result",resultCause:V.cause}}),n?.(V.error,g,a),m(V.error,{origin:"result",resultCause:V.cause})})();x.try=(W,D)=>{let y=D.name,g=D.key,T=f(g),A="error"in D?()=>D.error:D.onError,_=r;return(async()=>{let v=_?performance.now():0;r&&l({type:"step_start",workflowId:i,stepId:T,stepKey:g,name:y,ts:Date.now()});try{let M=await W(),d=performance.now()-v;return l({type:"step_success",workflowId:i,stepId:T,stepKey:g,name:y,ts:Date.now(),durationMs:d}),g&&l({type:"step_complete",workflowId:i,stepKey:g,name:y,ts:Date.now(),durationMs:d,result:N(M)}),M}catch(M){let d=A(M),h=performance.now()-v,b=k(d,{origin:"throw",thrown:M});throw l({type:"step_error",workflowId:i,stepId:T,stepKey:g,name:y,ts:Date.now(),durationMs:h,error:b}),g&&l({type:"step_complete",workflowId:i,stepKey:g,name:y,ts:Date.now(),durationMs:h,result:R(d,{cause:M}),meta:{origin:"throw",thrown:M}}),n?.(d,y,a),m(d,{origin:"throw",thrown:M})}})()},x.fromResult=(W,D)=>{let y=D.name,g=D.key,T=f(g),A="error"in D?()=>D.error:D.onError,_=r;return(async()=>{let v=_?performance.now():0;r&&l({type:"step_start",workflowId:i,stepId:T,stepKey:g,name:y,ts:Date.now()});let M=await W();if(M.ok){let d=performance.now()-v;return l({type:"step_success",workflowId:i,stepId:T,stepKey:g,name:y,ts:Date.now(),durationMs:d}),g&&l({type:"step_complete",workflowId:i,stepKey:g,name:y,ts:Date.now(),durationMs:d,result:N(M.value)}),M.value}else{let d=A(M.error),h=performance.now()-v,b=k(d,{origin:"result",resultCause:M.error});throw l({type:"step_error",workflowId:i,stepId:T,stepKey:g,name:y,ts:Date.now(),durationMs:h,error:b}),g&&l({type:"step_complete",workflowId:i,stepKey:g,name:y,ts:Date.now(),durationMs:h,result:R(d,{cause:M.error}),meta:{origin:"result",resultCause:M.error}}),n?.(d,y,a),m(d,{origin:"result",resultCause:M.error})}})()},x.retry=(W,D)=>x(W,{name:D.name,key:D.key,retry:{attempts:D.attempts,backoff:D.backoff,initialDelay:D.initialDelay,maxDelay:D.maxDelay,jitter:D.jitter,retryOn:D.retryOn,onRetry:D.onRetry},timeout:D.timeout}),x.withTimeout=(W,D)=>x(W,{name:D.name,key:D.key,timeout:D}),x.parallel=((...W)=>{if(typeof W[0]=="string"){let D=W[0],y=W[1];return w(D,y)}else{let D=W[0],y=W[1]??{};return C(D,y)}}),x.race=(W,D)=>{let y=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let g=performance.now(),T=!1,A={scopeId:y,type:"race",winnerId:void 0};u.push(A);let _=()=>{if(T)return;T=!0;let v=u.findIndex(M=>M.scopeId===y);v!==-1&&u.splice(v,1),l({type:"scope_end",workflowId:i,scopeId:y,ts:Date.now(),durationMs:performance.now()-g,winnerId:A.winnerId})};l({type:"scope_start",workflowId:i,scopeId:y,scopeType:"race",name:W,ts:Date.now()});try{let v=await D();if(_(),!v.ok)throw n?.(v.error,W,a),m(v.error,{origin:"result",resultCause:v.cause});return v.value}catch(v){throw _(),v}})()},x.allSettled=(W,D)=>{let y=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let g=performance.now(),T=!1;u.push({scopeId:y,type:"allSettled"});let A=()=>{if(T)return;T=!0;let _=u.findIndex(v=>v.scopeId===y);_!==-1&&u.splice(_,1),l({type:"scope_end",workflowId:i,scopeId:y,ts:Date.now(),durationMs:performance.now()-g})};l({type:"scope_start",workflowId:i,scopeId:y,scopeType:"allSettled",name:W,ts:Date.now()});try{let _=await D();if(A(),!_.ok)throw n?.(_.error,W,a),m(_.error,{origin:"result",resultCause:_.cause});return _.value}catch(_){throw A(),_}})()};let L=await e(x);return N(L)}catch(x){if(jr(x))throw x.thrown;if(S(x)){let C=x.meta.origin==="throw"?x.meta.thrown:x.meta.resultCause;if(o||n)return R(x.error,{cause:C});if(Ye(x.error))return R(x.error,{cause:C});let I=P(x);return R(I,{cause:C})}if(o){let C=o(x);return n?.(C,"unexpected",a),R(C,{cause:x})}let w={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:x}};return n?.(w,"unexpected",a),R(w,{cause:x})}}oe.strict=(e,t)=>oe(e,t);var fe=class extends Error{constructor(n,r){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=r;this.name="UnwrapError"}},Pt=e=>{if(e.ok)return e.value;throw new fe(e.error,e.cause)},At=(e,t)=>e.ok?e.value:t,It=(e,t)=>e.ok?e.value:t(e.error,e.cause);function Ot(e,t){try{return N(e())}catch(n){return t?R(t(n),{cause:n}):R(n)}}async function Dt(e,t){try{return N(await e)}catch(n){return t?R(t(n),{cause:n}):R(n)}}async function Mt(e,t){try{return N(await e())}catch(n){return t?R(t(n),{cause:n}):R(n)}}function _t(e,t){return e!=null?N(e):R(t())}function $t(e,t){return e.ok?N(t(e.value)):e}function Nt(e,t){return e.ok?e:R(t(e.error),{cause:e.cause})}function Wt(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Lt(e,t){return e.ok?t(e.value):e}function Bt(e,t){return e.ok&&t(e.value),e}function Ut(e,t){return e.ok||t(e.error,e.cause),e}function Ht(e,t,n){if(!e.ok)return e;try{return N(t(e.value))}catch(r){return R(n(r),{cause:r})}}function Ft(e,t,n){if(e.ok)return e;try{return R(t(e.error),{cause:e.cause})}catch(r){return R(n(r),{cause:r})}}function Vt(e,t,n){return e.ok?N(t(e.value)):R(n(e.error),{cause:e.cause})}function zt(e,t){return e.ok?e:t(e.error,e.cause)}async function Kt(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function jt(e,t){return e.ok?N(e.value):N(t(e.error,e.cause))}async function qt(e,t){let n=await e;return n.ok?N(n.value):N(await t(n.error,n.cause))}function Ze(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 Gt(e){return Ze(e)!==null}function Jt(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return N(t)}async function Xt(e){return e.length===0?N([]):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=>R({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(N(o))}})}})}function Yt(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?R(n):N(t)}function Qt(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 Zt(e){if(e.length===0)return R({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 en(e){return e.length===0?R({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=>R({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 tn(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?R(r):N(n)}var me=class extends Error{_tag};function ye(e,t){return class extends me{_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 l=r?.cause!==void 0;if(p&&l)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,u),p&&(this.cause=f),l&&(this.cause=r?.cause)}else r?.cause!==void 0&&(this.cause=r.cause)}}}Object.defineProperty(ye,Symbol.hasInstance,{value:e=>e instanceof me});(o=>{function e(s){return s instanceof Error}o.isError=e;function t(s){return s instanceof me}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})(ye||={});function nn(){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 Jr(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function De(e,t,n){return R(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function et(e){return Jr(e)?e.meta:{origin:"result",resultCause:e}}function rn(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=y=>{let g=y.context!==void 0||u===void 0?y:{...y,context:u};t?.onEvent?.(g,u)},l=t?.shouldRun,m=t?.catchUnexpected;if(l){let y=performance.now();try{let g=await l(c,u),T=performance.now()-y;if(f({type:"hook_should_run",workflowId:c,ts:Date.now(),durationMs:T,result:g,skipped:!g}),!g){let A=new Error("Workflow skipped by shouldRun hook");if(m){let v=m(A);return R(v)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:A}})}}catch(g){let T=performance.now()-y;if(f({type:"hook_should_run_error",workflowId:c,ts:Date.now(),durationMs:T,error:g}),m){let _=m(g);return R(_)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:g}})}}let S=t?.onBeforeStart;if(S){let y=performance.now();try{let g=await S(c,u),T=performance.now()-y;if(f({type:"hook_before_start",workflowId:c,ts:Date.now(),durationMs:T,result:g,skipped:!g}),!g){let A=new Error("Workflow skipped by onBeforeStart hook");if(m){let v=m(A);return R(v)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:A}})}}catch(g){let T=performance.now()-y;if(f({type:"hook_before_start_error",workflowId:c,ts:Date.now(),durationMs:T,error:g}),m){let _=m(g);return R(_)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:g}})}}let k=Date.now(),P=performance.now();f({type:"workflow_start",workflowId:c,ts:k});let O=t?.resumeState,E=t?.cache;if(O&&!E&&(E=new Map),O&&E){let y=typeof O=="function"?await O():O;for(let[g,T]of y.steps){let{result:A,meta:_}=T;if(A.ok)E.set(g,A);else{let v=_??{origin:"result",resultCause:A.cause};E.set(g,De(A.error,v,A.cause))}}}let x=y=>typeof y=="string"?{name:y}:y??{},w=t?.onAfterStep,C=async(y,g)=>{if(!w)return;let T=performance.now();try{await w(y,g,c,u);let A=performance.now()-T;f({type:"hook_after_step",workflowId:c,stepKey:y,ts:Date.now(),durationMs:A})}catch(A){let _=performance.now()-T;throw f({type:"hook_after_step_error",workflowId:c,stepKey:y,ts:Date.now(),durationMs:_,error:A}),A}},I=y=>{if(!E&&!w)return y;let g=async(T,A)=>{let{name:_,key:v}=x(A);if(v&&E&&E.has(v)){f({type:"step_cache_hit",workflowId:c,stepKey:v,name:_,ts:Date.now()});let d=E.get(v);if(d.ok)return d.value;let h=et(d.cause);throw Y(d.error,h)}v&&E&&f({type:"step_cache_miss",workflowId:c,stepKey:v,name:_,ts:Date.now()});let M=typeof T=="function"?T:()=>T;try{let d=await y(M,A);return v&&(E&&E.set(v,N(d)),await C(v,N(d))),d}catch(d){if(v&&Q(d)){let h=d,b=h.meta.origin==="result"?h.meta.resultCause:h.meta.thrown,B=De(h.error,h.meta,b);E&&E.set(v,B),await C(v,B)}throw d}};return g.try=async(T,A)=>{let{name:_,key:v}=A;if(v&&E&&E.has(v)){f({type:"step_cache_hit",workflowId:c,stepKey:v,name:_,ts:Date.now()});let M=E.get(v);if(M.ok)return M.value;let d=et(M.cause);throw Y(M.error,d)}v&&E&&f({type:"step_cache_miss",workflowId:c,stepKey:v,name:_,ts:Date.now()});try{let M=await y.try(T,A);return v&&(E&&E.set(v,N(M)),await C(v,N(M))),M}catch(M){if(v&&Q(M)){let d=M,h=d.meta.origin==="result"?d.meta.resultCause:d.meta.thrown,b=De(d.error,d.meta,h);E&&E.set(v,b),await C(v,b)}throw M}},g.fromResult=async(T,A)=>{let{name:_,key:v}=A;if(v&&E&&E.has(v)){f({type:"step_cache_hit",workflowId:c,stepKey:v,name:_,ts:Date.now()});let M=E.get(v);if(M.ok)return M.value;let d=et(M.cause);throw Y(M.error,d)}v&&E&&f({type:"step_cache_miss",workflowId:c,stepKey:v,name:_,ts:Date.now()});try{let M=await y.fromResult(T,A);return v&&(E&&E.set(v,N(M)),await C(v,N(M))),M}catch(M){if(v&&Q(M)){let d=M,h=d.meta.origin==="result"?d.meta.resultCause:d.meta.thrown,b=De(d.error,d.meta,h);E&&E.set(v,b),await C(v,b)}throw M}},g.parallel=y.parallel,g.race=y.race,g.allSettled=y.allSettled,g.retry=(T,A)=>g(T,{name:A.name,key:A.key,retry:{attempts:A.attempts,backoff:A.backoff,initialDelay:A.initialDelay,maxDelay:A.maxDelay,jitter:A.jitter,retryOn:A.retryOn,onRetry:A.onRetry},timeout:A.timeout}),g.withTimeout=(T,A)=>g(T,{name:A.name,key:A.key,timeout:A}),g},L=s?y=>i(I(y),e,a,p):y=>i(I(y),e,p),W;if(t?.strict===!0){let y=t;W=await oe.strict(L,{onError:y.onError,onEvent:y.onEvent,catchUnexpected:y.catchUnexpected,workflowId:c,context:u})}else{let y=t;W=await oe(L,{onError:y?.onError??(()=>{}),onEvent:y?.onEvent,workflowId:c,context:u})}let D=performance.now()-P;return W.ok?f({type:"workflow_success",workflowId:c,ts:Date.now(),durationMs:D}):f({type:"workflow_error",workflowId:c,ts:Date.now(),durationMs:D,error:W.error}),W}return n}function Me(e){return e.type==="step_complete"}function Z(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function on(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function sn(e,t){return R({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function an(e){return async()=>{let t=await e.checkApproval();switch(t.status){case"pending":return R({type:"PENDING_APPROVAL",stepKey:e.key,reason:e.pendingReason,metadata:e.metadata});case"rejected":return R({type:"APPROVAL_REJECTED",stepKey:e.key,reason:t.reason});case"approved":return N(t.value)}}}function _e(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:N(t.value)}),{steps:n}}function un(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function cn(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:Z(n.result.error)}function pn(e){let t=[];for(let[n,r]of e.steps)!r.result.ok&&Z(r.result.error)&&t.push(n);return t}function ge(){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&&Z(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,r]of e)!r.result.ok&&Z(r.result.error)&&t.push({stepKey:n,error:r.result.error});return t},injectApproval:(t,n)=>(e.set(t,{result:N(n)}),{steps:new Map(e)})}}function ln(){return`decision_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function dn(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=ln();dn(r,n,o)}function tt(e,t,n,r){return $e(!e,t,n,r)}function Ne(e,t,n,r,o){if(e)return t();let s=ln();return dn(o,r,s),n}function nt(e,t,n,r,o){return Ne(!e,t,n,r,o)}function fn(e){return{when:(t,n,r)=>$e(t,n,r,e),unless:(t,n,r)=>tt(t,n,r,e),whenOr:(t,n,r,o)=>Ne(t,n,r,o,e),unlessOr:(t,n,r,o)=>nt(t,n,r,o,e)}}var le=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 mn(e){return typeof e=="object"&&e!==null&&e.type==="CIRCUIT_OPEN"}var Xr={failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3};function yn(e,t){let n={...Xr,...t},r="CLOSED",o=[],s=null,a=null,i=0,c=0;function u(){let k=Date.now();o=o.filter(P=>k-P.timestamp<n.windowSize)}function p(k){if(r!==k){let P=r;r=k,k==="HALF_OPEN"&&(c=0),n.onStateChange?.(P,k,e)}}function f(){return r!=="OPEN"||s===null?!1:Date.now()-s>=n.resetTimeout?(p("HALF_OPEN"),!0):!1}function l(){a=Date.now(),i++,r==="HALF_OPEN"&&(c++,c>=n.halfOpenMax&&(p("CLOSED"),o=[]))}function m(k){let P=Date.now();s=P,u(),o.push({timestamp:P,error:k}),(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 k=Date.now(),P=s?k-s:0;return Math.max(0,n.resetTimeout-P)}return 0}return{async execute(k,P){let O=S();if(O>0)throw new le({circuitName:e,state:r,retryAfterMs:O});try{let E=await k();return l(),E}catch(E){throw m(E),E}},async executeResult(k,P){let O=S();if(O>0)return R(new le({circuitName:e,state:r,retryAfterMs:O}));try{let E=await k();return E.ok?l():m(E.error),E}catch(E){throw m(E),E}},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(){l()},recordFailure(k){m(k??new Error("Manual failure"))}}}var gn={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 wn(e){return typeof e=="object"&&e!==null&&e.type==="SAGA_COMPENSATION_ERROR"}function kn(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 l=s.length-1;l>=0;l--){let m=s[l];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 Y(f.error,{origin:"result",resultCause:f.cause})},async tryStep(u,p){let f="error"in p?()=>p.error:p.onError;try{let l=await u();return p.compensate&&s.push({name:p.name,value:l,compensate:p.compensate}),l}catch(l){let m=f(l);throw Y(m,{origin:"throw",thrown:l})}},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}),N(u)}catch(u){let p=performance.now()-o,f;Q(u)?f=u.error:f=u,a({type:"saga_error",sagaId:r,ts:Date.now(),durationMs:p,error:f});let l=await i(f);if(l.length>0){let m={type:"SAGA_COMPENSATION_ERROR",originalError:f,compensationErrors:l};if(t?.onError?.(m),t?.throwOnCompensationFailure)throw m;return R(m)}return t?.onError?.(f),Q(u)?R(f):R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}}async function hn(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 l=o[f];try{await l.compensate(l.value),s({type:"saga_compensation_step",sagaId:n,stepName:l.name,ts:Date.now(),success:!0})}catch(m){u.push({stepName:l.name,error:m}),s({type:"saga_compensation_step",sagaId:n,stepName:l.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 Y(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 l=p(f);throw Y(l,{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}),N(c)}catch(c){let u=performance.now()-r,p;Q(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 l={type:"SAGA_COMPENSATION_ERROR",originalError:p,compensationErrors:f};if(t?.onError?.(l),t?.throwOnCompensationFailure)throw l;return R(l)}return t?.onError?.(p),Q(c)?R(p):R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:c}})}}function En(e){return typeof e=="object"&&e!==null&&e.type==="RATE_LIMIT_EXCEEDED"}function rt(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function ot(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 l=Date.now(),S=(l-a)*i;s=Math.min(o,s+S),a=l}function p(){if(u(),s>=1)return s-=1,0;let l=1-s;return Math.ceil(l/i)}async function f(){return new Promise(l=>{let m=()=>{let S=p();S===0?l():(c.push(m),setTimeout(()=>{let k=c.indexOf(m);k!==-1&&(c.splice(k,1),m())},S))};m()})}return{async execute(l){let m=p();if(m>0){if(r==="reject")throw{type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m};await f()}return l()},async executeResult(l){let m=p();if(m>0){if(r==="reject")return R({type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m});await f()}return l()},getStats(){return u(),{availableTokens:Math.floor(s),maxTokens:o,tokensPerSecond:n,waitingCount:c.length}},reset(){s=o,a=Date.now(),c.length=0}}}function we(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 l=0;l<u.length;l++){let m=l,S=this.execute(u[m]).then(k=>{p[m]=k});f.push(S)}return await Promise.all(f),p},async executeResult(u){try{await i()}catch(p){if(rt(p))return R(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 vn(e,t){let n=t.rate?ot(`${e}-rate`,t.rate):void 0,r=t.concurrency?we(`${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 Tn={api:{maxPerSecond:10,burstCapacity:20,strategy:"wait"},database:{maxConcurrent:10,strategy:"queue",maxQueueSize:100},external:{maxPerSecond:5,burstCapacity:10,strategy:"wait"}};function Sn(e){return typeof e=="object"&&e!==null&&e.type==="MIGRATION_ERROR"}function xn(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 R({type:"VERSION_INCOMPATIBLE",stateVersion:o,currentVersion:t,reason:"State version is higher than current workflow version. Cannot downgrade."});if(o===t)return N({version:o,state:r});for(;o<t;){let s=n[o];if(!s)return R({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 R({type:"MIGRATION_ERROR",fromVersion:o,toVersion:o+1,cause:a})}}return N({version:o,state:r})}function Rn(e){let{version:t,migrations:n={},strictVersioning:r=!0}=e;return async o=>{if(!o)return N(void 0);if(r&&o.version>t)return R({type:"VERSION_INCOMPATIBLE",stateVersion:o.version,currentVersion:t,reason:"Saved state is from a newer workflow version"});if(o.version===t)return N(o.state);let s=await st(o,t,n);return s.ok?N(s.value.state):s}}function bn(e,t){return{version:t,state:e}}function Cn(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 Pn(e){return JSON.stringify({version:e.version,state:{steps:Array.from(e.state.steps.entries())}})}function An(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 In(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 On(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 Dn(e){return async t=>{let n=t;for(let r of e)n=await r(n);return n}}function Mn(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,l){return f?`${t}.${f}`:l?`${t}.step.${l}`:`${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 l=f.stepId;i.steps.set(l,{workflowId:f.workflowId,stepId:l,stepKey:f.stepKey,name:f.name,startTime:f.ts})}break;case"step_success":case"step_error":if(n){let l=f.stepId,m=i.steps.get(l);m&&(i.steps.delete(l),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 _n(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 $n(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 Nn(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 Wn(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(!pe(f)){let S=s(f.error,p);return c?await c(S,p):S}let l=await e(f.value,(S,k)=>t(S,k,f.value)),m=o(l,p);return c?await c(m,p):m}catch(p){let f=a(p,u);return c?await c(f,u):f}}}function Ln(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(!pe(i))return o(i.error,a);let c=await n(i.value,a);return r(c,a)}catch(i){return s(i,a)}}}function Bn(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 Un(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 Hn(e){return t=>{for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return R(ut(`Missing required field: ${n}`,n));return N(void 0)}}function Fn(...e){return t=>{for(let n of e){let r=n(t);if(!r.ok)return r}return N(void 0)}}function Vn(e,t,n){let{validatePayload:r,mapResult:o}=n;return async s=>{try{let a=r(s);if(!pe(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 q(...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 zn(...e){let t=q(...e);return n=>q(t,typeof n=="string"?{name:n}:n??{})}function Kn(e,...t){return{name:e,policy:q(...t)}}function J(e){return{retry:e}}var ae={none:J({attempts:1}),transient:J({attempts:3,backoff:"exponential",initialDelay:100,maxDelay:1e3,jitter:!0}),standard:J({attempts:3,backoff:"exponential",initialDelay:200,maxDelay:5e3,jitter:!0}),aggressive:J({attempts:5,backoff:"exponential",initialDelay:500,maxDelay:3e4,jitter:!0}),fixed:(e,t)=>J({attempts:e,backoff:"fixed",initialDelay:t,jitter:!1}),linear:(e,t)=>J({attempts:e,backoff:"linear",initialDelay:t,jitter:!0}),custom:e=>J({backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,...e})};function G(e){return{timeout:e}}var se={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})},jn={httpApi:q(se.api,ae.standard),database:q(se.extended,J({attempts:2,backoff:"exponential",initialDelay:100,maxDelay:2e3,jitter:!0})),cache:q(se.fast,ae.none),messageQueue:q(se.extended,ae.aggressive),fileSystem:q(se.long,ae.standard),rateLimited:q(G({ms:1e4}),J({attempts:5,backoff:"linear",initialDelay:1e3,maxDelay:1e4,jitter:!0}))};function ct(e,t){return q(e,typeof t=="string"?{name:t}:t??{})}function qn(e,t){let n=typeof t=="string"?{name:t}:t??{};return q(...e,n)}function Gn(e,t,n={}){return e?t:n}function Jn(e,t=process.env.NODE_ENV??"development",n={}){return e[t]??n}function Xn(){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 Yn(){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(J(n)),t},retries(n){return e.push(ae.custom({attempts:n})),t},build(){return q(...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 he(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 Ee(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 N(e.value);let t=e.cause?he(e.cause):void 0;return R(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?he(e.resultCause):void 0}:{origin:"throw",thrown:e.thrown?he(e.thrown):void 0}}function dt(e){return{result:Ee(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 Qn(e,t){return JSON.stringify(Be(e,t))}function Zn(e){let t=JSON.parse(e);return Ue(t)}function er(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 tr(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=Ee(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 nr(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=Ee(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 rr(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 or(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 Yr(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(Yr(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(P=>P.startTs)),l=Math.max(...i.map(P=>P.endTs)),m=p.startTs<=f+r,S=p.startTs<l;if(!m&&!S){a.push(i),i=[p];continue}let k=S?Math.min(p.endTs,l)-p.startTs:0;m||k>=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(k=>k.node),l=Math.min(...u.map(k=>k.startTs)),m=Math.max(...u.map(k=>k.endTs)),S={type:"parallel",id:`detected_parallel_${l}`,name:`${f.length} parallel steps`,state:Qr(f),mode:"all",children:f,startTs:l,endTs:m,durationMs:m-l};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 Qr(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=[],l=[],m=[],S=Date.now(),k=S,P={onAfterStep:new Map},O=[],E=0;function x(d){return d.stepId??d.stepKey??d.name??mt()}function w(d){if(l.length>0){let h=l[l.length-1];for(let B of h.branches.values())if(B.taken){B.children.push(d),k=Date.now();return}let b=Array.from(h.branches.values())[0];if(b){b.children.push(d),k=Date.now();return}}f.length>0?f[f.length-1].children.push(d):m.push(d),k=Date.now()}function C(d){if(!r)return;let h=g(),b=new Map;for(let[z,V]of p)b.set(z,{id:V.id,name:V.name,key:V.key,startTs:V.startTs,retryCount:V.retryCount,timedOut:V.timedOut,timeoutMs:V.timeoutMs});let B={id:`snapshot_${E}`,eventIndex:E,event:structuredClone(d),ir:structuredClone(h),timestamp:Date.now(),activeSteps:b};O.push(B),O.length>o&&O.shift(),E++}function I(d){switch(d.type){case"workflow_start":s=d.workflowId,a=d.ts,i="running",S=Date.now(),k=S,P.onAfterStep=new Map;break;case"workflow_success":i="success",u=d.durationMs,k=Date.now();break;case"workflow_error":i="error",c=d.error,u=d.durationMs,k=Date.now();break;case"step_start":{let h=x(d);p.set(h,{id:h,name:d.name,key:d.stepKey,startTs:d.ts,retryCount:0,timedOut:!1}),k=Date.now();break}case"step_success":{let h=x(d),b=p.get(h);if(b){let B={type:"step",id:b.id,name:b.name,key:b.key,state:"success",startTs:b.startTs,endTs:d.ts,durationMs:d.durationMs,...b.retryCount>0&&{retryCount:b.retryCount},...b.timedOut&&{timedOut:!0,timeoutMs:b.timeoutMs}};w(B),p.delete(h)}break}case"step_error":{let h=x(d),b=p.get(h);if(b){let B={type:"step",id:b.id,name:b.name,key:b.key,state:"error",startTs:b.startTs,endTs:d.ts,durationMs:d.durationMs,error:d.error,...b.retryCount>0&&{retryCount:b.retryCount},...b.timedOut&&{timedOut:!0,timeoutMs:b.timeoutMs}};w(B),p.delete(h)}break}case"step_aborted":{let h=x(d),b=p.get(h);if(b){let B={type:"step",id:b.id,name:b.name,key:b.key,state:"aborted",startTs:b.startTs,endTs:d.ts,durationMs:d.durationMs,...b.retryCount>0&&{retryCount:b.retryCount},...b.timedOut&&{timedOut:!0,timeoutMs:b.timeoutMs}};w(B),p.delete(h)}break}case"step_cache_hit":{let b={type:"step",id:x(d),name:d.name,key:d.stepKey,state:"cached",startTs:d.ts,endTs:d.ts,durationMs:0};w(b);break}case"step_cache_miss":break;case"step_complete":break;case"step_timeout":{let h=x(d),b=p.get(h);b&&(b.timedOut=!0,b.timeoutMs=d.timeoutMs),k=Date.now();break}case"step_retry":{let h=x(d),b=p.get(h);b&&(b.retryCount=(d.attempt??1)-1),k=Date.now();break}case"step_retries_exhausted":k=Date.now();break;case"step_skipped":{let b={type:"step",id:x(d),name:d.name,key:d.stepKey,state:"skipped",startTs:d.ts,endTs:d.ts,durationMs:0};w(b);break}case"hook_should_run":{let h={type:"shouldRun",state:"success",ts:d.ts,durationMs:d.durationMs,context:{result:d.result,skipped:d.skipped}};P.shouldRun=h,k=Date.now();break}case"hook_should_run_error":{let h={type:"shouldRun",state:"error",ts:d.ts,durationMs:d.durationMs,error:d.error};P.shouldRun=h,k=Date.now();break}case"hook_before_start":{let h={type:"onBeforeStart",state:"success",ts:d.ts,durationMs:d.durationMs,context:{result:d.result,skipped:d.skipped}};P.onBeforeStart=h,k=Date.now();break}case"hook_before_start_error":{let h={type:"onBeforeStart",state:"error",ts:d.ts,durationMs:d.durationMs,error:d.error};P.onBeforeStart=h,k=Date.now();break}case"hook_after_step":{let h={type:"onAfterStep",state:"success",ts:d.ts,durationMs:d.durationMs,context:{stepKey:d.stepKey}};P.onAfterStep.set(d.stepKey,h),k=Date.now();break}case"hook_after_step_error":{let h={type:"onAfterStep",state:"error",ts:d.ts,durationMs:d.durationMs,error:d.error,context:{stepKey:d.stepKey}};P.onAfterStep.set(d.stepKey,h),k=Date.now();break}}C(d)}function L(d){if(d.type==="scope_start")f.push({id:d.scopeId,name:d.name,type:d.scopeType,startTs:d.ts,children:[]}),k=Date.now();else if(d.type==="scope_end"){let h=f.pop();if(h){let b=h.type==="race"?{type:"race",id:h.id,name:h.name,state:D(h.children),startTs:h.startTs,endTs:d.ts,durationMs:d.durationMs,children:h.children,winnerId:d.winnerId}:{type:"parallel",id:h.id,name:h.name,state:D(h.children),startTs:h.startTs,endTs:d.ts,durationMs:d.durationMs,children:h.children,mode:h.type==="allSettled"?"allSettled":"all"};w(b)}}}function W(d){if(d.type==="decision_start")l.push({id:d.decisionId,name:d.name,condition:d.condition,decisionValue:d.decisionValue,startTs:d.ts,branches:new Map}),k=Date.now();else if(d.type==="decision_branch"){let h=l[l.length-1];if(h&&h.id===d.decisionId){let b=d.branchLabel,B=h.branches.get(b);B?B.taken=d.taken:h.branches.set(b,{label:d.branchLabel,condition:d.condition,taken:d.taken,children:[]}),k=Date.now()}}else if(d.type==="decision_end"){let h=l.pop();if(h&&h.id===d.decisionId){let b=Array.from(h.branches.values()),B={type:"decision",id:h.id,name:h.name,state:D(b.flatMap(z=>z.taken?z.children:[])),startTs:h.startTs,endTs:d.ts,durationMs:d.durationMs,condition:h.condition,decisionValue:h.decisionValue,branchTaken:d.branchTaken??h.branchTaken,branches:b};w(B)}}}function D(d){return d.length===0?"success":d.some(z=>z.state==="error")?"error":d.every(z=>z.state==="success"||z.state==="cached")?"success":d.some(z=>z.state==="running")?"running":"pending"}function y(){let d=[...m];for(let[,h]of p)d.push({type:"step",id:h.id,name:h.name,key:h.key,state:"running",startTs:h.startTs,...h.retryCount>0&&{retryCount:h.retryCount},...h.timedOut&&{timedOut:!0,timeoutMs:h.timeoutMs}});return d}function g(){let d=y();t&&(d=yt(d,n));let h={type:"workflow",id:s??mt(),workflowId:s??"unknown",state:i,startTs:a,durationMs:u,children:d,error:c},b=P.shouldRun!==void 0||P.onBeforeStart!==void 0||P.onAfterStep.size>0;return{root:h,metadata:{createdAt:S,lastUpdatedAt:k},...b&&{hooks:P}}}function T(){s=void 0,a=void 0,i="pending",c=void 0,u=void 0,p.clear(),f.length=0,l.length=0,m=[],S=Date.now(),k=S,P={onAfterStep:new Map},O.length=0,E=0}function A(){return[...O]}function _(d){return O[d]}function v(d){return O[d]?.ir}function M(){O.length=0,E=0}return{handleEvent:I,handleScopeEvent:L,handleDecisionEvent:W,getIR:g,reset:T,getSnapshots:A,getSnapshotAt:_,getIRAt:v,clearSnapshots:M,get hasActiveSteps(){return p.size>0},get state(){return i},get snapshotCount(){return O.length},get snapshotsEnabled(){return r}}}function ne(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",Zr="\x1B[1m",ar="\x1B[2m",eo="\x1B[31m",to="\x1B[32m",no="\x1B[33m",ro="\x1B[34m",sr="\x1B[90m",oo="\x1B[37m";function re(e,t){return t?`${t}${e}${gt}`:e}function be(e){return`${Zr}${e}${gt}`}function H(e){return`${ar}${e}${gt}`}var ie={pending:oo,running:no,success:to,error:eo,aborted:sr,cached:ro,skipped:ar+sr};function so(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=so(e);return re(n,t[e])}function wt(e,t,n){return re(e,n[t])}function ir(e){return e.replace(/\x1b\[[0-9;]*m/g,"")}var $={topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502",teeRight:"\u251C",teeLeft:"\u2524",teeDown:"\u252C",teeUp:"\u2534",cross:"\u253C"},de={cold:"\x1B[34m",cool:"\x1B[36m",neutral:"",warm:"\x1B[33m",hot:"\x1B[31m",critical:"\x1B[41m"},ao="\x1B[0m";function io(e){return e<.2?de.cold:e<.4?de.cool:e<.6?de.neutral:e<.8?de.warm:e<.95?de.hot:de.critical}function ur(e,t){let n=io(t);return n?`${n}${e}${ao}`:e}var cr="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function uo(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*(cr.length-1));return cr[c]}).join("")}function kt(e,t){let n=ir(e).length,r=Math.max(0,t-n);return e+" ".repeat(r)}function co(e,t){if(!t)return $.horizontal.repeat(e);let n=` ${t} `,r=e-n.length;if(r<4)return $.horizontal.repeat(e);let o=2,s=r-o;return $.horizontal.repeat(o)+n+$.horizontal.repeat(s)}function pr(e,t,n){let r=e.state==="success"?re("\u2699",n.success):re("\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 po(e,t){let n=[];return e.shouldRun&&n.push(pr(e.shouldRun,"shouldRun",t)),e.onBeforeStart&&n.push(pr(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={...ie,...t.colors},r=t.terminalWidth??60,o=r-4,s=[],a=e.root.name??"workflow",i=be(a);if(s.push(`${$.topLeft}${co(r-2,i)}${$.topRight}`),s.push(`${$.vertical}${" ".repeat(r-2)}${$.vertical}`),e.hooks){let u=po(e.hooks,n);for(let p of u)s.push(`${$.vertical} ${kt(p,o)}${$.vertical}`)}let c=He(e.root.children,t,n,0,e.hooks);for(let u of c)s.push(`${$.vertical} ${kt(u,o)}${$.vertical}`);if(s.push(`${$.vertical}${" ".repeat(r-2)}${$.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(`${$.vertical} ${kt(f,o)}${$.vertical}`),s.push(`${$.vertical}${" ".repeat(r-2)}${$.vertical}`)}return s.push(`${$.bottomLeft}${$.horizontal.repeat(r-2)}${$.bottomRight}`),s.join(`
2
+ `)}}}function He(e,t,n,r,o){let s=[];for(let a of e)ne(a)?s.push(ht(a,t,n,o)):Se(a)?s.push(...lo(a,t,n,r,o)):xe(a)?s.push(...fo(a,t,n,r,o)):Re(a)&&s.push(...mo(a,t,n,r,o));return s}function ht(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=ur(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),l=c!==void 0?ur(`[${f}]`,c):H(`[${f}]`);p+=` ${l}`}if(a.showSparklines&&a.timingHistory){let f=a.timingHistory.get(i);f&&f.length>1&&(p+=` ${H(uo(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),l=f.state==="success"?re("\u2699",n.success):re("\u26A0",n.error),m=f.durationMs!==void 0?H(` ${K(f.durationMs)}`):"";p+=` ${l}${m}`}return p}function lo(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}${$.teeRight}${$.teeDown}${$.horizontal} ${i} ${be(c)}${u}`),e.children.length===0)s.push(`${a}${$.vertical} ${H("(operations not individually tracked)")}`),s.push(`${a}${$.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}${$.vertical} ${$.bottomLeft}`:`${a}${$.vertical} ${$.teeRight}`;if(ne(f))s.push(`${m} ${ht(f,t,n,o)}`);else{let S=He([f],t,n,r+1,o);for(let k of S)s.push(`${a}${$.vertical} ${k}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${$.bottomLeft}${$.horizontal}${$.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function fo(e,t,n,r,o){let s=[],a=" ".repeat(r),i=Ce(e.state,n),c=e.name??"race";if(s.push(`${a}${$.teeRight}\u26A1 ${i} ${be(c)}`),e.children.length===0)s.push(`${a}${$.vertical} ${H("(operations not individually tracked)")}`),s.push(`${a}${$.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],l=u===e.children.length-1?`${a}${$.vertical} ${$.bottomLeft}`:`${a}${$.vertical} ${$.teeRight}`,S=e.winnerId&&p.id===e.winnerId?H(" (winner)"):"";if(ne(p))s.push(`${l} ${ht(p,t,n,o)}${S}`);else{let k=He([p],t,n,r+1,o);for(let P of k)s.push(`${a}${$.vertical} ${P}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${$.bottomLeft}${$.horizontal}${$.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function mo(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}${$.teeRight}${$.teeDown}${$.horizontal} ${i} ${be(c)}${u}${p}${f}`);for(let l=0;l<e.branches.length;l++){let m=e.branches[l],k=l===e.branches.length-1?`${a}${$.vertical} ${$.bottomLeft}`:`${a}${$.vertical} ${$.teeRight}`,P=m.taken?"\u2713":"\u2298",O=m.taken?n.success:n.skipped,E=re(`${P} ${m.label}`,O),x=m.condition?H(` (${m.condition})`):"";if(s.push(`${k} ${E}${x}`),m.children.length>0){let w=He(m.children,t,n,r+1,o);for(let C of w)s.push(`${a}${$.vertical} ${C}`)}else m.taken||s.push(`${a}${$.vertical} ${H("(skipped)")}`)}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${$.bottomLeft}${$.horizontal}${$.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function Et(e){return e<.2?"cold":e<.4?"cool":e<.6?"neutral":e<.8?"warm":e<.95?"hot":"critical"}function yo(){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 go(){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 wo(e){return`heat_${e}`}function ko(){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 ho(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 lr=0;function Ae(e="node"){return`${e}_${++lr}`}function Eo(){lr=0}function X(e){return e.replace(/[{}[\]()]/g,"").replace(/[<>]/g,"").replace(/"/g,"'").trim()}function dr(e){return X(e).replace(/[[\]]/g,"")}function Fe(){return{name:"mermaid",supportsLive:!1,render(e,t){Eo();let n=[],r=t;n.push("flowchart TD");let o;e.hooks&&(o=ho(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(...yo()),r.showHeatmap&&n.push(...go()),e.hooks&&n.push(...ko()),n.join(`
3
+ `)}}}function Ve(e,t,n,r,o){if(ne(e))return vo(e,t,n,r,o);if(Se(e))return To(e,t,n,r,o);if(xe(e))return So(e,t,n,r,o);if(Re(e))return xo(e,t,n,r,o);let s=Ae("unknown");return n.push(` ${s}[Unknown Node]`),{entryId:s,exitId:s}}function vo(e,t,n,r,o){let s=e.key?`step_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:Ae("step"),a=X(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 O=typeof e.input=="string"?X(e.input):X(JSON.stringify(e.input).slice(0,20));u+=`\\nin: ${O}`}if(e.output!==void 0&&e.state==="success"){let O=typeof e.output=="string"?X(e.output):X(JSON.stringify(e.output).slice(0,20));u+=`\\nout: ${O}`}let p="";if(e.retryCount!==void 0&&e.retryCount>0&&(p+=`\\n\u21BB ${e.retryCount} retr${e.retryCount===1?"y":"ies"}`),e.timedOut){let O=e.timeoutMs!==void 0?`${e.timeoutMs}ms`:"";p+=`\\n\u23F1 timeout ${O}`}let f="";if(o&&e.key&&o.onAfterStep.has(e.key)){let O=o.onAfterStep.get(e.key),E=O.state==="success"?"\u2699":"\u26A0",x=t.showTimings&&O.durationMs!==void 0?` ${K(O.durationMs)}`:"";f=`\\n${E} hook${x}`}let l=(c+a+u+p+f+i).trim(),m,S=e.name??e.id,k=r?.showHeatmap&&r.heatmapData?r.heatmapData.heat.get(e.id)??r.heatmapData.heat.get(S):void 0;if(k!==void 0){let O=Et(k);m=wo(O)}else m=e.state;let P;switch(e.state){case"error":P=`{{${l}}}`;break;case"cached":P=`[(${l})]`;break;case"skipped":P=`[${l}]:::skipped`;break;default:P=`[${l}]`}return n.push(` ${s}${P}:::${m}`),{entryId:s,exitId:s}}function To(e,t,n,r,o){let s=Ae("parallel"),a=`${s}_fork`,i=`${s}_join`,c=dr(e.name??"Parallel"),u=e.mode==="allSettled"?" (allSettled)":"";if(e.children.length===0){let l=s,m=X(`${c}${u}`),S="operations not individually tracked",k=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"";return n.push(` ${l}[${m}${k}\\n${S}]:::${e.state}`),{entryId:l,exitId:l}}n.push(` subgraph ${s}["${c}${u}"]`),n.push(" direction TB"),n.push(` ${a}{"\u26A1 Fork"}`);let p=[];for(let l of e.children){let m=Ve(l,t,n,r,o);n.push(` ${a} --> ${m.entryId}`),p.push(m.exitId)}n.push(` ${i}{"\u2713 Join"}`);for(let l of p)n.push(` ${l} --> ${i}`);n.push(" end");let f=e.state;return n.push(` class ${s} ${f}`),{entryId:a,exitId:i}}function So(e,t,n,r,o){let s=Ae("race"),a=`${s}_start`,i=`${s}_end`,c=dr(e.name??"Race");if(e.children.length===0){let l=s,m=X(c),S="operations not individually tracked",k=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"";return n.push(` ${l}[\u26A1 ${m}${k}\\n${S}]:::${e.state}`),{entryId:l,exitId:l}}n.push(` subgraph ${s}["\u26A1 ${c}"]`),n.push(" direction TB"),n.push(` ${a}(("\u{1F3C1} Start"))`);let u=[],p;for(let l of e.children){let m=Ve(l,t,n,r,o),S=ne(l)&&e.winnerId===l.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:l,isWinner:m}of u)m&&p?n.push(` ${l} ==>|\u{1F3C6} Winner| ${i}`):e.winnerId?n.push(` ${l} -. cancelled .-> ${i}`):n.push(` ${l} --> ${i}`);n.push(" end");let f=e.state;return n.push(` class ${s} ${f}`),{entryId:a,exitId:i}}function xo(e,t,n,r,o){let s=e.key?`decision_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:Ae("decision"),a=X(e.condition??"condition"),i=e.decisionValue!==void 0?` = ${X(String(e.decisionValue)).slice(0,30)}`:"",c=`${a}${i}`.trim();n.push(` ${s}{${c}}`);let u=[],p;for(let f of e.branches){let l=`${s}_${f.label.replace(/[^a-zA-Z0-9]/g,"_")}`,m=X(f.label),S=f.taken?`${m} \u2713`:`${m} skipped`,k=f.taken?":::success":":::skipped";n.push(` ${l}[${S}]${k}`);let P=f.condition?`|${X(f.condition).replace(/\|/g,"")}|`:"";if(n.push(` ${s} -->${P} ${l}`),f.children.length>0){let O=l;for(let E of f.children){let x=Ve(E,t,n,r,o);n.push(` ${O} --> ${x.entryId}`),O=x.exitId}u.push(O),f.taken&&(p=O)}else u.push(l),f.taken&&(p=l)}return p?{entryId:s,exitId:p}:{entryId:s,exitId:s}}var Po=require("http"),Ao=require("child_process");function fr(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:{...ie,...s}};function f(){if(i.size>0){let w=a.getIR();for(let C of i)C(w)}}function l(w){if(w.type==="scope_start"||w.type==="scope_end"){m(w);return}a.handleEvent(w),w.type,f()}function m(w){a.handleScopeEvent(w),f()}function S(w){a.handleDecisionEvent(w),f()}function k(){let w=a.getIR();return t&&!w.root.name&&(w.root.name=t),w}function P(){let w=k();return c.render(w,p)}function O(w){let C=k();switch(w){case"ascii":return c.render(C,p);case"mermaid":return u.render(C,p);case"json":return JSON.stringify(C,null,2);default:throw new Error(`Unknown format: ${w}`)}}function E(){a.reset(),f()}function x(w){return i.add(w),()=>i.delete(w)}return{handleEvent:l,handleScopeEvent:m,handleDecisionEvent:S,getIR:k,render:P,renderAs:O,reset:E,onUpdate:x}}function vt(e={}){let{logEvents:t=!1,maxHistory:n=10,logger:r=console.log}=e,o=fr(e),s=[],a,i=0;function c(y){if(a)for(s.push(a);s.length>n;)s.shift();i=Date.now(),a={id:y,name:e.workflowName,startTime:i,events:[]},o.reset()}function u(y,g){a&&(a.endTime=Date.now(),a.durationMs=a.endTime-a.startTime,a.success=y,a.error=g)}function p(y){t&&r(`[devtools] ${y.type}: ${JSON.stringify(y)}`),y.type==="workflow_start"&&c(y.workflowId),a&&a.events.push(y),o.handleEvent(y),y.type==="workflow_success"?u(!0):y.type==="workflow_error"&&u(!1,y.error)}function f(y){t&&r(`[devtools] ${y.type}: ${JSON.stringify(y)}`),a&&a.events.push(y),o.handleDecisionEvent(y)}function l(){return a}function m(){return[...s]}function S(y){return a?.id===y?a:s.find(g=>g.id===y)}function k(y,g){let T=S(y),A=S(g);if(!(!T||!A))return mr(T,A)}function P(){if(!a||s.length===0)return;let y=s[s.length-1];return mr(y,a)}function O(){return o.render()}function E(y){return o.renderAs(y)}function x(){return o.renderAs("mermaid")}function w(){let y=C();return Oo(y)}function C(){return a?Io(a.events,i):[]}function I(){s.length=0}function L(){a=void 0,o.reset()}function W(y){let g=y?S(y):a;return g?JSON.stringify(g,null,2):"{}"}function D(y){let g=JSON.parse(y);return s.push(g),g}return{handleEvent:p,handleDecisionEvent:f,getCurrentRun:l,getHistory:m,getRun:S,diff:k,diffWithPrevious:P,render:O,renderAs:E,renderMermaid:x,renderTimeline:w,getTimeline:C,clearHistory:I,reset:L,exportRun:W,importRun:D}}function mr(e,t){let n=yr(e.events),r=yr(t.events),o=[],s=[],a=[],i=[];for(let[l,m]of r){let S=n.get(l);S?S.status!==m.status?a.push({step:l,type:"status",from:S.status,to:m.status}):S.durationMs!==m.durationMs?a.push({step:l,type:"duration",from:S.durationMs,to:m.durationMs}):i.push(l):o.push({step:l,type:"added",to:m.status})}for(let[l]of n)r.has(l)||s.push({step:l,type:"removed",from:n.get(l)?.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 yr(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 Io(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 Oo(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=Do(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 Do(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 gr(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 kr(e,t={}){let n=Tt(t);return e(n.handleEvent).then(()=>n.render())}function hr(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 Er(){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 vr(){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 Tr(e){let{approvalStore:t,workflowStateStore:n,defaultExpirationMs:r=10080*60*1e3,logger:o=()=>{}}=e;async function s(m,R,h,P,O){let v=O?.runId??crypto.randomUUID(),W=we(),x=await R({onEvent:W.handleEvent})(P,h),A=W.getPendingApprovals().map($=>$.stepKey);if(A.length>0){let $={runId:v,workflowName:m,resumeState:W.getState(),pendingApprovals:A,input:P,metadata:O?.metadata,startedAt:Date.now(),updatedAt:Date.now()};await n.save($);for(let M of A)await t.createApproval(M,{metadata:{runId:v,workflowName:m},expiresAt:Date.now()+r});o(`Workflow ${v} paused, waiting for: ${A.join(", ")}`);let V;return!x.ok&&ee(x.error)&&(V=x.error.reason),{status:"paused",runId:v,pendingApprovals:A,reason:V}}return o(`Workflow ${v} completed`),{status:"completed",result:x}}async function a(m,R,h){let P=await n.load(m);if(!P)throw new Error(`Workflow run not found: ${m}`);for(let A of P.pendingApprovals){let $=await t.getApproval(A);if($.status==="pending")return{status:"paused",runId:m,pendingApprovals:P.pendingApprovals};if($.status,$.status==="expired")throw new Error(`Approval ${A} has expired`)}let O=P.resumeState;for(let A of P.pendingApprovals){let $=await t.getApproval(A);$.status==="approved"&&(O=$e(O,{stepKey:A,value:$.value}))}let v=we(),y=await R({resumeState:O,onEvent:v.handleEvent})(P.input,h),x=v.getPendingApprovals().map(A=>A.stepKey);if(x.length>0){let A={...P,resumeState:v.getState(),pendingApprovals:x,updatedAt:Date.now()};await n.save(A);for(let V of x)await t.createApproval(V,{metadata:{runId:m,workflowName:P.workflowName},expiresAt:Date.now()+r});o(`Workflow ${m} paused again, waiting for: ${x.join(", ")}`);let $;return!y.ok&&ee(y.error)&&($=y.error.reason),{status:"paused",runId:m,pendingApprovals:x,reason:$}}return await n.delete(m),o(`Workflow ${m} resumed and completed`),{status:"resumed",runId:m,result:y}}async function i(m,R,h){await t.grantApproval(m,R,{approvedBy:h?.approvedBy});let P=Date.now(),O=[];if(h?.autoResume!==!1){let v=await n.findByPendingApproval(m);for(let W of v)O.push(W)}return o(`Approval ${m} granted by ${h?.approvedBy??"unknown"}`),{grantedAt:P,resumedWorkflows:O}}async function c(m,R,h){await t.rejectApproval(m,R,{rejectedBy:h?.rejectedBy}),o(`Approval ${m} rejected: ${R}`)}async function u(m,R){let{intervalMs:h=1e3,maxPolls:P,timeoutMs:O,onPollStart:v,onPollComplete:W}=R??{},y=Date.now(),x=0;for(;;){v?.();let A=await t.getApproval(m);if(W?.(A),A.status!=="pending")return A;if(x++,P!==void 0&&x>=P)return{status:"pending"};if(O!==void 0&&Date.now()-y>=O)return{status:"pending"};await new Promise($=>setTimeout($,h))}}async function p(m){return n.load(m)}async function f(m){return n.list({workflowName:m,hasPendingApprovals:!0})}async function l(m){let R=await n.list(),h=0,P=Date.now()-m;for(let O of R){let v=await n.load(O);v&&v.updatedAt<P&&v.pendingApprovals.length===0&&(await n.delete(O),h++)}return o(`Cleaned up ${h} old workflow states`),h}return{execute:s,resume:a,grantApproval:i,rejectApproval:c,pollApproval:u,getWorkflowStatus:p,listPendingWorkflows:f,cleanup:l}}function Sr(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 xr(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 Rr(e){return typeof e=="object"&&e!==null&&"__earlyExit"in e&&e.__earlyExit===!0}function br(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,x){s.set(y,x)}function p(y){if(y&&s.has(y))return s.get(y);if(a<o.length)return o[a++]}function f(){let y=async(x,A)=>{let $=typeof A=="string"?{name:A}:A??{},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=b(k.error),{__earlyExit:!0,error:k.error};case"throw":throw k.error}let T=typeof x=="function"?await x():await x;if(g.durationMs=r()-M,g.result=T,!T.ok)throw{__earlyExit:!0,error:T.error};return T.value};return y.try=async(x,A)=>{let $=A.name??A.key,V=r(),M={name:A.name,key:A.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=b(g.error),{__earlyExit:!0,error:g.error};case"throw":throw g.error}try{let k=await x();return M.durationMs=r()-V,M.result=_(k),k}catch(k){M.durationMs=r()-V;let T="error"in A?A.error:A.onError(k);throw M.result=b(T),{__earlyExit:!0,error:T}}},y}async function l(y){let x=f();try{let A=await y(x,e);return _(A)}catch(A){return Rr(A)?b(A.error):b({type:"UNEXPECTED_ERROR",cause:A})}}async function m(y,x){let A=f();try{let $=await x(A,e,y);return _($)}catch($){return Rr($)?b($.error):b({type:"UNEXPECTED_ERROR",cause:$})}}function R(){return[...i]}function h(y){let x=i.map($=>$.name??$.key??"unnamed").filter($=>$!=="unnamed"),A=JSON.stringify(x)===JSON.stringify(y);return{passed:A,message:A?`Steps invoked in order: ${y.join(", ")}`:`Expected steps [${y.join(", ")}] but got [${x.join(", ")}]`,expected:y,actual:x}}function P(y){let x=i.some(A=>A.name===y||A.key===y);return{passed:x,message:x?`Step "${y}" was invoked`:`Step "${y}" was NOT invoked`,expected:y,actual:x}}function O(y){let x=i.some(A=>A.name===y||A.key===y);return{passed:!x,message:x?`Step "${y}" was invoked but should not have been`:`Step "${y}" was correctly NOT invoked`,expected:"not called",actual:x?"called":"not called"}}function v(y,x){let A=y.ok===x.ok&&(y.ok?JSON.stringify(y.value)===JSON.stringify(x.value):JSON.stringify(y.error)===JSON.stringify(x.error));return{passed:A,message:A?"Result matches expected":"Result does not match expected",expected:x,actual:y}}function W(){o=[],s.clear(),a=0,i=[]}return{script:c,scriptStep:u,run:l,runWithInput:m,getInvocations:R,assertSteps:h,assertStepCalled:P,assertStepNotCalled:O,assertResult:v,reset:W}}function Cr(){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 Pr(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 Ar(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 Ir(e=0){let t=e;return{now:()=>t,advance:n=>{t+=n},set:n=>{t=n},reset:()=>{t=e}}}function Or(e){return{type:"ok",value:e}}function Dr(e){return{type:"err",error:e}}function Mr(e){return{type:"throw",error:e}}function St(e){return typeof e=="object"&&e!==null&&e.type==="BATCH_PROCESSING_ERROR"}function _r(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_BATCH_CONFIG"}var _o=e=>new Promise(t=>setTimeout(t,e));async function $r(e,t,n,r){let{batchSize:o,concurrency:s,batchDelayMs:a=0}=n,{afterBatch:i,onProgress:c}=r??{};if(!Number.isInteger(o)||o<1)return b({type:"INVALID_BATCH_CONFIG",reason:"batchSize must be a positive integer",field:"batchSize",value:o});if(!Number.isInteger(s)||s<1)return b({type:"INVALID_BATCH_CONFIG",reason:"concurrency must be a positive integer",field:"concurrency",value:s});if(e.length===0)return _([]);let u=[],p=Math.ceil(e.length/o),f=ke("batch-processor",{maxConcurrent:s});for(let l=0;l<p;l++){let m=l*o,R=Math.min(m+o,e.length),h=e.slice(m,R),P=l+1,O=h.map((v,W)=>async()=>{let y=m+W,x=await t(v,y);if(!x.ok)throw{type:"BATCH_PROCESSING_ERROR",error:x.error,itemIndex:y,batchNumber:P};return x.value});try{let v=await f.executeAll(O);u.push(...v)}catch(v){if(St(v))return b(v);throw v}if(c?.({batch:P,totalBatches:p,processed:u.length,total:e.length,percent:Math.round(u.length/e.length*100)}),i){let v=await i();if(!v.ok)return b({type:"BATCH_PROCESSING_ERROR",error:v.error,batchNumber:P})}a>0&&l<p-1&&await _o(a)}return _(u)}var Nr={conservative:{batchSize:20,concurrency:3,batchDelayMs:50},balanced:{batchSize:50,concurrency:5,batchDelayMs:10},aggressive:{batchSize:100,concurrency:10,batchDelayMs:0}};function Ke(e){return typeof e=="object"&&e!==null&&e.type==="RESOURCE_CLEANUP_ERROR"}function xt(){let e=[];return{add:t=>(e.push(t),t.value),close:async()=>{let t=[];for(let n=e.length-1;n>=0;n--)try{await e[n].close()}catch(r){t.push(r)}if(e.length=0,t.length>0)throw{type:"RESOURCE_CLEANUP_ERROR",errors:t}},has:t=>e.includes(t),size:()=>e.length}}async function Wr(e){let t=xt(),n;try{n=await e(t)}catch(r){try{await t.close()}catch(o){if(Ke(o))return b({...o,originalResult:{thrown:r}})}throw r}try{await t.close()}catch(r){if(Ke(r))return b({...r,originalResult:n});throw r}return n}async function Lr(e,t){let n=await e();return{value:n,close:async()=>{await t(n)}}}0&&(module.exports={CircuitOpenError,STEP_TIMEOUT_MARKER,TaggedError,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,batchPresets,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,createResource,createResourceScope,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,isBatchProcessingError,isCircuitOpenError,isErr,isInvalidBatchConfigError,isMigrationError,isOk,isPendingApproval,isQueueFullError,isRateLimitExceededError,isResourceCleanupError,isSagaCompensationError,isSerializedResult,isStepComplete,isStepTimeoutError,isUnexpectedError,isValidationError,isVersionIncompatibleError,map,mapError,mapErrorTry,mapTry,match,mergePolicies,migrateState,ok,okOutcome,orElse,orElseAsync,parseState,parseVersionedState,partition,pendingApproval,processInBatches,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,withScope});
9
+ `)}function wr(e,t={}){let n=vt(t);return e(n.handleEvent).then(()=>n.render())}function kr(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 hr(){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 Er(){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 vr(e){let{approvalStore:t,workflowStateStore:n,defaultExpirationMs:r=10080*60*1e3,logger:o=()=>{}}=e;async function s(m,S,k,P,O){let E=O?.runId??crypto.randomUUID(),x=ge(),C=await S({onEvent:x.handleEvent})(P,k),I=x.getPendingApprovals().map(L=>L.stepKey);if(I.length>0){let L={runId:E,workflowName:m,resumeState:x.getState(),pendingApprovals:I,input:P,metadata:O?.metadata,startedAt:Date.now(),updatedAt:Date.now()};await n.save(L);for(let D of I)await t.createApproval(D,{metadata:{runId:E,workflowName:m},expiresAt:Date.now()+r});o(`Workflow ${E} paused, waiting for: ${I.join(", ")}`);let W;return!C.ok&&Z(C.error)&&(W=C.error.reason),{status:"paused",runId:E,pendingApprovals:I,reason:W}}return o(`Workflow ${E} completed`),{status:"completed",result:C}}async function a(m,S,k){let P=await n.load(m);if(!P)throw new Error(`Workflow run not found: ${m}`);for(let I of P.pendingApprovals){let L=await t.getApproval(I);if(L.status==="pending")return{status:"paused",runId:m,pendingApprovals:P.pendingApprovals};if(L.status,L.status==="expired")throw new Error(`Approval ${I} has expired`)}let O=P.resumeState;for(let I of P.pendingApprovals){let L=await t.getApproval(I);L.status==="approved"&&(O=_e(O,{stepKey:I,value:L.value}))}let E=ge(),w=await S({resumeState:O,onEvent:E.handleEvent})(P.input,k),C=E.getPendingApprovals().map(I=>I.stepKey);if(C.length>0){let I={...P,resumeState:E.getState(),pendingApprovals:C,updatedAt:Date.now()};await n.save(I);for(let W of C)await t.createApproval(W,{metadata:{runId:m,workflowName:P.workflowName},expiresAt:Date.now()+r});o(`Workflow ${m} paused again, waiting for: ${C.join(", ")}`);let L;return!w.ok&&Z(w.error)&&(L=w.error.reason),{status:"paused",runId:m,pendingApprovals:C,reason:L}}return await n.delete(m),o(`Workflow ${m} resumed and completed`),{status:"resumed",runId:m,result:w}}async function i(m,S,k){await t.grantApproval(m,S,{approvedBy:k?.approvedBy});let P=Date.now(),O=[];if(k?.autoResume!==!1){let E=await n.findByPendingApproval(m);for(let x of E)O.push(x)}return o(`Approval ${m} granted by ${k?.approvedBy??"unknown"}`),{grantedAt:P,resumedWorkflows:O}}async function c(m,S,k){await t.rejectApproval(m,S,{rejectedBy:k?.rejectedBy}),o(`Approval ${m} rejected: ${S}`)}async function u(m,S){let{intervalMs:k=1e3,maxPolls:P,timeoutMs:O,onPollStart:E,onPollComplete:x}=S??{},w=Date.now(),C=0;for(;;){E?.();let I=await t.getApproval(m);if(x?.(I),I.status!=="pending")return I;if(C++,P!==void 0&&C>=P)return{status:"pending"};if(O!==void 0&&Date.now()-w>=O)return{status:"pending"};await new Promise(L=>setTimeout(L,k))}}async function p(m){return n.load(m)}async function f(m){return n.list({workflowName:m,hasPendingApprovals:!0})}async function l(m){let S=await n.list(),k=0,P=Date.now()-m;for(let O of S){let E=await n.load(O);E&&E.updatedAt<P&&E.pendingApprovals.length===0&&(await n.delete(O),k++)}return o(`Cleaned up ${k} old workflow states`),k}return{execute:s,resume:a,grantApproval:i,rejectApproval:c,pollApproval:u,getWorkflowStatus:p,listPendingWorkflows:f,cleanup:l}}function Tr(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 Sr(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 xr(e){return typeof e=="object"&&e!==null&&"__earlyExit"in e&&e.__earlyExit===!0}function Rr(e,t={}){let{recordInvocations:n=!0,clock:r=Date.now}=t,o=[],s=new Map,a=0,i=[];function c(w){o=[...w],a=0,s.clear()}function u(w,C){s.set(w,C)}function p(w){if(w&&s.has(w))return s.get(w);if(a<o.length)return o[a++]}function f(){let w=async(C,I)=>{let L=typeof I=="string"?{name:I}:I??{},W=L.name??L.key,D=r(),y={name:L.name,key:L.key,order:i.length,timestamp:D};n&&i.push(y);let g=p(W);if(g)switch(y.durationMs=r()-D,g.type){case"ok":return y.result=N(g.value),g.value;case"err":throw y.result=R(g.error),{__earlyExit:!0,error:g.error};case"throw":throw g.error}let T=typeof C=="function"?await C():await C;if(y.durationMs=r()-D,y.result=T,!T.ok)throw{__earlyExit:!0,error:T.error};return T.value};return w.try=async(C,I)=>{let L=I.name??I.key,W=r(),D={name:I.name,key:I.key,order:i.length,timestamp:W};n&&i.push(D);let y=p(L);if(y)switch(D.durationMs=r()-W,y.type){case"ok":return D.result=N(y.value),y.value;case"err":throw D.result=R(y.error),{__earlyExit:!0,error:y.error};case"throw":throw y.error}try{let g=await C();return D.durationMs=r()-W,D.result=N(g),g}catch(g){D.durationMs=r()-W;let T="error"in I?I.error:I.onError(g);throw D.result=R(T),{__earlyExit:!0,error:T}}},w}async function l(w){let C=f();try{let I=await w(C,e);return N(I)}catch(I){return xr(I)?R(I.error):R({type:"UNEXPECTED_ERROR",cause:I})}}async function m(w,C){let I=f();try{let L=await C(I,e,w);return N(L)}catch(L){return xr(L)?R(L.error):R({type:"UNEXPECTED_ERROR",cause:L})}}function S(){return[...i]}function k(w){let C=i.map(L=>L.name??L.key??"unnamed").filter(L=>L!=="unnamed"),I=JSON.stringify(C)===JSON.stringify(w);return{passed:I,message:I?`Steps invoked in order: ${w.join(", ")}`:`Expected steps [${w.join(", ")}] but got [${C.join(", ")}]`,expected:w,actual:C}}function P(w){let C=i.some(I=>I.name===w||I.key===w);return{passed:C,message:C?`Step "${w}" was invoked`:`Step "${w}" was NOT invoked`,expected:w,actual:C}}function O(w){let C=i.some(I=>I.name===w||I.key===w);return{passed:!C,message:C?`Step "${w}" was invoked but should not have been`:`Step "${w}" was correctly NOT invoked`,expected:"not called",actual:C?"called":"not called"}}function E(w,C){let I=w.ok===C.ok&&(w.ok?JSON.stringify(w.value)===JSON.stringify(C.value):JSON.stringify(w.error)===JSON.stringify(C.error));return{passed:I,message:I?"Result matches expected":"Result does not match expected",expected:C,actual:w}}function x(){o=[],s.clear(),a=0,i=[]}return{script:c,scriptStep:u,run:l,runWithInput:m,getInvocations:S,assertSteps:k,assertStepCalled:P,assertStepNotCalled:O,assertResult:E,reset:x}}function br(){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 Cr(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 Pr(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 Ar(e=0){let t=e;return{now:()=>t,advance:n=>{t+=n},set:n=>{t=n},reset:()=>{t=e}}}function Ir(e){return{type:"ok",value:e}}function Or(e){return{type:"err",error:e}}function Dr(e){return{type:"throw",error:e}}function Tt(e){return typeof e=="object"&&e!==null&&e.type==="BATCH_PROCESSING_ERROR"}function Mr(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_BATCH_CONFIG"}var Mo=e=>new Promise(t=>setTimeout(t,e));async function _r(e,t,n,r){let{batchSize:o,concurrency:s,batchDelayMs:a=0}=n,{afterBatch:i,onProgress:c}=r??{};if(!Number.isInteger(o)||o<1)return R({type:"INVALID_BATCH_CONFIG",reason:"batchSize must be a positive integer",field:"batchSize",value:o});if(!Number.isInteger(s)||s<1)return R({type:"INVALID_BATCH_CONFIG",reason:"concurrency must be a positive integer",field:"concurrency",value:s});if(e.length===0)return N([]);let u=[],p=Math.ceil(e.length/o),f=we("batch-processor",{maxConcurrent:s});for(let l=0;l<p;l++){let m=l*o,S=Math.min(m+o,e.length),k=e.slice(m,S),P=l+1,O=k.map((E,x)=>async()=>{let w=m+x,C=await t(E,w);if(!C.ok)throw{type:"BATCH_PROCESSING_ERROR",error:C.error,itemIndex:w,batchNumber:P};return C.value});try{let E=await f.executeAll(O);u.push(...E)}catch(E){if(Tt(E))return R(E);throw E}if(c?.({batch:P,totalBatches:p,processed:u.length,total:e.length,percent:Math.round(u.length/e.length*100)}),i){let E=await i();if(!E.ok)return R({type:"BATCH_PROCESSING_ERROR",error:E.error,batchNumber:P})}a>0&&l<p-1&&await Mo(a)}return N(u)}var $r={conservative:{batchSize:20,concurrency:3,batchDelayMs:50},balanced:{batchSize:50,concurrency:5,batchDelayMs:10},aggressive:{batchSize:100,concurrency:10,batchDelayMs:0}};function ze(e){return typeof e=="object"&&e!==null&&e.type==="RESOURCE_CLEANUP_ERROR"}function St(){let e=[];return{add:t=>(e.push(t),t.value),close:async()=>{let t=[];for(let n=e.length-1;n>=0;n--)try{await e[n].close()}catch(r){t.push(r)}if(e.length=0,t.length>0)throw{type:"RESOURCE_CLEANUP_ERROR",errors:t}},has:t=>e.includes(t),size:()=>e.length}}async function Nr(e){let t=St(),n;try{n=await e(t)}catch(r){try{await t.close()}catch(o){if(ze(o))return R({...o,originalResult:{thrown:r}})}throw r}try{await t.close()}catch(r){if(ze(r))return R({...r,originalResult:n});throw r}return n}async function Wr(e,t){let n=await e();return{value:n,close:async()=>{await t(n)}}}0&&(module.exports={CircuitOpenError,STEP_TIMEOUT_MARKER,TaggedError,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,batchPresets,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,createResource,createResourceScope,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,isBatchProcessingError,isCircuitOpenError,isErr,isInvalidBatchConfigError,isMigrationError,isOk,isPendingApproval,isQueueFullError,isRateLimitExceededError,isResourceCleanupError,isSagaCompensationError,isSerializedResult,isStepComplete,isStepTimeoutError,isUnexpectedError,isValidationError,isVersionIncompatibleError,map,mapError,mapErrorTry,mapTry,match,mergePolicies,migrateState,ok,okOutcome,orElse,orElseAsync,parseState,parseVersionedState,partition,pendingApproval,processInBatches,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,withScope});
10
10
  //# sourceMappingURL=index.cjs.map