@jagreehal/workflow 1.13.0 → 1.14.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 +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/visualize.cjs +73 -67
- package/dist/visualize.cjs.map +1 -1
- package/dist/visualize.d.cts +13 -1
- package/dist/visualize.d.ts +13 -1
- package/dist/visualize.js +73 -67
- package/dist/visualize.js.map +1 -1
- package/docs/pino-logging-example.md +293 -0
- package/docs/visualization.md +35 -0
- package/package.json +6 -2
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var pt=Object.defineProperty;var Ho=Object.getOwnPropertyDescriptor;var Fo=Object.getOwnPropertyNames;var Vo=Object.prototype.hasOwnProperty;var zo=(e,t)=>{for(var n in t)pt(e,n,{get:t[n],enumerable:!0})},Ko=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Fo(t))!Vo.call(e,o)&&o!==n&&pt(e,o,{get:()=>t[o],enumerable:!(r=Ho(t,o))||r.enumerable});return e};var jo=e=>Ko(pt({},"__esModule",{value:!0}),e);var pa={};zo(pa,{CircuitOpenError:()=>ke,Duration:()=>ge,Match:()=>No,STEP_TIMEOUT_MARKER:()=>ue,Schedule:()=>Bo,TaggedError:()=>ve,UnwrapError:()=>Te,addDelay:()=>fn,all:()=>zn,allAsync:()=>Kn,allSettled:()=>jn,allSettledAsync:()=>Xn,andThen:()=>Mn,any:()=>Gn,anyAsync:()=>Jn,batchPresets:()=>Po,bimap:()=>Ln,circuitBreakerPresets:()=>lr,clearStep:()=>nr,compareSnapshots:()=>vo,composeMigrations:()=>br,composeValidators:()=>Nr,conditionalPolicy:()=>Fr,createApprovalChecker:()=>ho,createApprovalStep:()=>tr,createApprovalWebhookHandler:()=>wo,createAutotelAdapter:()=>Cr,createAutotelEventHandler:()=>Or,createCircuitBreaker:()=>cr,createCombinedLimiter:()=>gr,createConcurrencyLimiter:()=>Re,createConditionalHelpers:()=>ir,createConsoleLogger:()=>fo,createDevtools:()=>Lt,createEventHandler:()=>Wr,createExpressHandler:()=>_r,createFileCache:()=>Jr,createHITLCollector:()=>xe,createHITLOrchestrator:()=>yo,createHydratingCache:()=>Qr,createKVCache:()=>Xr,createKeyRemoveMigration:()=>xr,createKeyRenameMigration:()=>vr,createMemoryApprovalStore:()=>mo,createMemoryCache:()=>Gr,createMemoryWorkflowStateStore:()=>go,createMockFn:()=>To,createPolicyApplier:()=>Lr,createPolicyBundle:()=>Br,createPolicyRegistry:()=>zr,createRateLimiter:()=>Tt,createResource:()=>Ao,createResourceScope:()=>Ut,createResultMapper:()=>Mr,createSagaWorkflow:()=>dr,createSimpleHandler:()=>Ar,createSnapshot:()=>So,createStatePersistence:()=>Yr,createStepCollector:()=>Yn,createTestClock:()=>xo,createValueTransformMigration:()=>Rr,createVersionedState:()=>Er,createVersionedStateLoader:()=>kr,createWebhookHandler:()=>Dr,createWorkflow:()=>Qn,createWorkflowHarness:()=>Eo,days:()=>rt,defaultUnexpectedErrorMapper:()=>qe,defaultValidationErrorMapper:()=>je,delays:()=>hn,deserializeCause:()=>Ce,deserializeEntry:()=>Pt,deserializeMeta:()=>Ot,deserializeResult:()=>Ie,deserializeState:()=>Je,envPolicy:()=>Vr,err:()=>R,errOutcome:()=>bo,exhaustive:()=>Gt,exponential:()=>nn,fibonacci:()=>on,forever:()=>Zt,from:()=>bn,fromNullable:()=>In,fromPromise:()=>Cn,getPendingApprovals:()=>or,getStepTimeoutMeta:()=>gt,hasPendingApproval:()=>rr,hours:()=>nt,hydrate:()=>yt,injectApproval:()=>Ve,intersect:()=>yn,isApprovalRejected:()=>Zn,isBatchProcessingError:()=>Bt,isCircuitOpenError:()=>ur,isDuration:()=>Kt,isErr:()=>En,isInvalidBatchConfigError:()=>Oo,isMigrationError:()=>wr,isOk:()=>he,isOneOf:()=>Yt,isPendingApproval:()=>se,isQueueFullError:()=>Et,isRateLimitExceededError:()=>mr,isResourceCleanupError:()=>Ze,isSagaCompensationError:()=>pr,isSerializedResult:()=>Vn,isStepComplete:()=>Fe,isStepTimeoutError:()=>Ue,isTag:()=>Xt,isUnexpectedError:()=>mt,isValidationError:()=>Pr,isVersionIncompatibleError:()=>hr,jittered:()=>dn,linear:()=>rn,map:()=>Pn,mapError:()=>Dn,mapErrorTry:()=>Wn,mapTry:()=>Nn,match:()=>An,matchOrElse:()=>st,matchTag:()=>jt,matchTags:()=>qt,matchValue:()=>Qt,maxDelay:()=>un,mergePolicies:()=>G,migrateState:()=>St,millis:()=>ae,minDelay:()=>cn,minutes:()=>tt,modifyDelay:()=>wn,ok:()=>N,okOutcome:()=>Ro,orElse:()=>Bn,orElseAsync:()=>Un,orElseValue:()=>Jt,parseState:()=>qr,parseVersionedState:()=>Tr,partition:()=>qn,pendingApproval:()=>er,processInBatches:()=>Io,quickVisualize:()=>po,rateLimiterPresets:()=>yr,recover:()=>Hn,recoverAsync:()=>Fn,recurs:()=>en,renderDiff:()=>lo,requireFields:()=>$r,retryPolicies:()=>fe,retryPolicy:()=>Q,run:()=>pe,runSaga:()=>fr,scheduleAndThen:()=>mn,scheduleUnion:()=>gn,seconds:()=>et,sendWebhookResponse:()=>xt,serializeCause:()=>be,serializeEntry:()=>It,serializeMeta:()=>Ct,serializeResult:()=>Oe,serializeState:()=>Ge,servicePolicies:()=>Ur,spaced:()=>tn,stepOptions:()=>Kr,stringifyState:()=>jr,stringifyVersionedState:()=>Sr,tap:()=>_n,tapError:()=>$n,throwOutcome:()=>Co,timeoutPolicies:()=>de,timeoutPolicy:()=>Y,toDays:()=>zt,toHours:()=>Vt,toMillis:()=>j,toMinutes:()=>Ft,toSeconds:()=>Ht,toWebhookRequest:()=>vt,tryAsync:()=>On,unless:()=>ht,unlessOr:()=>kt,untilInput:()=>ln,untilOutput:()=>pn,unwrap:()=>vn,unwrapOr:()=>xn,unwrapOrElse:()=>Rn,upTo:()=>sn,upToElapsed:()=>an,validationError:()=>Rt,when:()=>ze,whenOr:()=>Ke,whileInput:()=>at,whileOutput:()=>it,withAutotelTracing:()=>Ir,withPolicies:()=>Hr,withPolicy:()=>bt,withScope:()=>Do});module.exports=jo(pa);var N=e=>({ok:!0,value:e}),R=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),he=e=>e.ok,En=e=>!e.ok,mt=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",ue=Symbol.for("step_timeout_marker");function Ue(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:ue in e}function gt(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(ue in e)return e[ue]}}var Tn=Symbol("early-exit");function ne(e,t){return{[Tn]:!0,error:e,meta:t}}function re(e){return typeof e=="object"&&e!==null&&e[Tn]===!0}var Sn=Symbol("mapper-exception");function qo(e){return{[Sn]:!0,thrown:e}}function Go(e){return typeof e=="object"&&e!==null&&e[Sn]===!0}function Jo(e){return typeof e=="string"?{name:e}:e??{}}function dt(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 ft(e){return new Promise(t=>setTimeout(t,e))}var kn=Symbol("timeout");async function Xo(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((l,u)=>{s=setTimeout(()=>{r.abort(),u({[kn]:!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(l){if(typeof l=="object"&&l!==null&&l[kn]===!0){let u=l.error;if(typeof u=="object"&&u!==null&&u.type!=="STEP_TIMEOUT"){let c={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};ue in u?u[ue]=c:Object.defineProperty(u,ue,{value:c,enumerable:!1,writable:!0,configurable:!1})}throw u}throw l}finally{clearTimeout(s)}}var we={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function pe(e,t){let{onError:n,onEvent:r,catchUnexpected:o,workflowId:s,context:a}=t&&typeof t=="object"?t:{},i=s??crypto.randomUUID(),l=!n&&!o,u=[],c=0,d=x=>x??`step_${++c}`,p=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 P=u.length-1;P>=0;P--){let L=u[P];if(L.type==="race"&&!L.winnerId){L.winnerId=C;break}}}r?.(w,a)},m=ne,T=x=>re(x),h=(x,w)=>l?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,O=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,A){let g=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),v=!1;u.push({scopeId:g,type:"parallel"});let I=()=>{if(v)return;v=!0;let _=u.findIndex(S=>S.scopeId===g);_!==-1&&u.splice(_,1),p({type:"scope_end",workflowId:i,scopeId:g,ts:Date.now(),durationMs:performance.now()-y})};p({type:"scope_start",workflowId:i,scopeId:g,scopeType:"parallel",name:W,ts:Date.now()});try{let _=await A();if(I(),!_.ok)throw n?.(_.error,W,a),m(_.error,{origin:"result",resultCause:_.cause});return _.value}catch(_){throw I(),_}})()},C=function(W,A){let g=Object.keys(W),y=A.name??`Parallel(${g.join(", ")})`,v=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let I=performance.now(),_=!1;u.push({scopeId:v,type:"parallel"});let S=()=>{if(_)return;_=!0;let M=u.findIndex(f=>f.scopeId===v);M!==-1&&u.splice(M,1),p({type:"scope_end",workflowId:i,scopeId:v,ts:Date.now(),durationMs:performance.now()-I})};p({type:"scope_start",workflowId:i,scopeId:v,scopeType:"parallel",name:y,ts:Date.now()});try{let M=await new Promise(k=>{if(g.length===0){k([]);return}let b=!1,B=g.length,z=new Array(g.length);for(let V=0;V<g.length;V++){let ye=g[V],ut=V;Promise.resolve(W[ye]()).catch(F=>R({type:"PROMISE_REJECTED",cause:F},{cause:{type:"PROMISE_REJECTION",reason:F}})).then(F=>{if(!b){if(!F.ok){b=!0,k([{key:ye,result:F}]);return}z[ut]={key:ye,result:F},B--,B===0&&k(z)}})}});S();let f={};for(let{key:k,result:b}of M){if(!b.ok)throw n?.(b.error,k,a),m(b.error,{origin:"result",resultCause:b.cause});f[k]=b.value}return f}catch(M){throw S(),M}})()};var D=w,E=C;let x=(W,A)=>(async()=>{let g=Jo(A),{name:y,key:v,retry:I,timeout:_}=g,S=d(v),M=r,f=M?performance.now():0;if(!(typeof W=="function")){if(I&&I.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,I?.attempts??1),backoff:I?.backoff??we.backoff,initialDelay:I?.initialDelay??we.initialDelay,maxDelay:I?.maxDelay??we.maxDelay,jitter:I?.jitter??we.jitter,retryOn:I?.retryOn??we.retryOn,onRetry:I?.onRetry??we.onRetry};r&&p({type:"step_start",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now()});let z;for(let F=1;F<=B.attempts;F++){let Uo=M?performance.now():0;try{let U;if(typeof W=="function"?_?U=await Xo(W,_,{name:y,key:v,attempt:F}):U=await W():U=await W,U.ok){let ie=performance.now()-f;return p({type:"step_success",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:ie}),v&&p({type:"step_complete",workflowId:i,stepKey:v,name:y,ts:Date.now(),durationMs:ie,result:U}),U.value}if(z=U,F<B.attempts&&B.retryOn(U.error,F)){let ie=dt(F,B);p({type:"step_retry",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:ie,error:U.error}),B.onRetry(U.error,F,ie),await ft(ie);continue}B.attempts>1&&p({type:"step_retries_exhausted",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:performance.now()-f,attempts:F,lastError:U.error});break}catch(U){let ie=performance.now()-Uo;if(T(U))throw p({type:"step_aborted",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:ie}),U;if(Ue(U)){let q=gt(U),ct=_?.ms??q?.timeoutMs??0;if(p({type:"step_timeout",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),timeoutMs:ct,attempt:F}),F<B.attempts&&B.retryOn(U,F)){let lt=dt(F,B);p({type:"step_retry",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:lt,error:U}),B.onRetry(U,F,lt),await ft(lt);continue}B.attempts>1&&p({type:"step_retries_exhausted",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:performance.now()-f,attempts:F,lastError:U})}if(F<B.attempts&&B.retryOn(U,F)){let q=dt(F,B);p({type:"step_retry",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:q,error:U}),B.onRetry(U,F,q),await ft(q);continue}B.attempts>1&&!Ue(U)&&p({type:"step_retries_exhausted",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:performance.now()-f,attempts:F,lastError:U});let Be=performance.now()-f;if(o){let q;try{q=o(U)}catch(ct){throw qo(ct)}throw p({type:"step_error",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:Be,error:q}),v&&p({type:"step_complete",workflowId:i,stepKey:v,name:y,ts:Date.now(),durationMs:Be,result:R(q,{cause:U}),meta:{origin:"throw",thrown:U}}),n?.(q,y,a),m(q,{origin:"throw",thrown:U})}else{let q={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:U}};throw p({type:"step_error",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:Be,error:q}),v&&p({type:"step_complete",workflowId:i,stepKey:v,name:y,ts:Date.now(),durationMs:Be,result:R(q,{cause:U}),meta:{origin:"throw",thrown:U}}),U}}}let V=z,ye=performance.now()-f,ut=h(V.error,{origin:"result",resultCause:V.cause});throw p({type:"step_error",workflowId:i,stepId:S,stepKey:v,name:y,ts:Date.now(),durationMs:ye,error:ut}),v&&p({type:"step_complete",workflowId:i,stepKey:v,name:y,ts:Date.now(),durationMs:ye,result:V,meta:{origin:"result",resultCause:V.cause}}),n?.(V.error,y,a),m(V.error,{origin:"result",resultCause:V.cause})})();x.try=(W,A)=>{let g=A.name,y=A.key,v=d(y),I="error"in A?()=>A.error:A.onError,_=r;return(async()=>{let S=_?performance.now():0;r&&p({type:"step_start",workflowId:i,stepId:v,stepKey:y,name:g,ts:Date.now()});try{let M=await W(),f=performance.now()-S;return p({type:"step_success",workflowId:i,stepId:v,stepKey:y,name:g,ts:Date.now(),durationMs:f}),y&&p({type:"step_complete",workflowId:i,stepKey:y,name:g,ts:Date.now(),durationMs:f,result:N(M)}),M}catch(M){let f=I(M),k=performance.now()-S,b=h(f,{origin:"throw",thrown:M});throw p({type:"step_error",workflowId:i,stepId:v,stepKey:y,name:g,ts:Date.now(),durationMs:k,error:b}),y&&p({type:"step_complete",workflowId:i,stepKey:y,name:g,ts:Date.now(),durationMs:k,result:R(f,{cause:M}),meta:{origin:"throw",thrown:M}}),n?.(f,g,a),m(f,{origin:"throw",thrown:M})}})()},x.fromResult=(W,A)=>{let g=A.name,y=A.key,v=d(y),I="error"in A?()=>A.error:A.onError,_=r;return(async()=>{let S=_?performance.now():0;r&&p({type:"step_start",workflowId:i,stepId:v,stepKey:y,name:g,ts:Date.now()});let M=await W();if(M.ok){let f=performance.now()-S;return p({type:"step_success",workflowId:i,stepId:v,stepKey:y,name:g,ts:Date.now(),durationMs:f}),y&&p({type:"step_complete",workflowId:i,stepKey:y,name:g,ts:Date.now(),durationMs:f,result:N(M.value)}),M.value}else{let f=I(M.error),k=performance.now()-S,b=h(f,{origin:"result",resultCause:M.error});throw p({type:"step_error",workflowId:i,stepId:v,stepKey:y,name:g,ts:Date.now(),durationMs:k,error:b}),y&&p({type:"step_complete",workflowId:i,stepKey:y,name:g,ts:Date.now(),durationMs:k,result:R(f,{cause:M.error}),meta:{origin:"result",resultCause:M.error}}),n?.(f,g,a),m(f,{origin:"result",resultCause:M.error})}})()},x.retry=(W,A)=>x(W,{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}),x.withTimeout=(W,A)=>x(W,{name:A.name,key:A.key,timeout:A}),x.parallel=((...W)=>{if(typeof W[0]=="string"){let A=W[0],g=W[1];return w(A,g)}else{let A=W[0],g=W[1]??{};return C(A,g)}}),x.race=(W,A)=>{let g=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),v=!1,I={scopeId:g,type:"race",winnerId:void 0};u.push(I);let _=()=>{if(v)return;v=!0;let S=u.findIndex(M=>M.scopeId===g);S!==-1&&u.splice(S,1),p({type:"scope_end",workflowId:i,scopeId:g,ts:Date.now(),durationMs:performance.now()-y,winnerId:I.winnerId})};p({type:"scope_start",workflowId:i,scopeId:g,scopeType:"race",name:W,ts:Date.now()});try{let S=await A();if(_(),!S.ok)throw n?.(S.error,W,a),m(S.error,{origin:"result",resultCause:S.cause});return S.value}catch(S){throw _(),S}})()},x.allSettled=(W,A)=>{let g=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),v=!1;u.push({scopeId:g,type:"allSettled"});let I=()=>{if(v)return;v=!0;let _=u.findIndex(S=>S.scopeId===g);_!==-1&&u.splice(_,1),p({type:"scope_end",workflowId:i,scopeId:g,ts:Date.now(),durationMs:performance.now()-y})};p({type:"scope_start",workflowId:i,scopeId:g,scopeType:"allSettled",name:W,ts:Date.now()});try{let _=await A();if(I(),!_.ok)throw n?.(_.error,W,a),m(_.error,{origin:"result",resultCause:_.cause});return _.value}catch(_){throw I(),_}})()};let L=await e(x);return N(L)}catch(x){if(Go(x))throw x.thrown;if(T(x)){let C=x.meta.origin==="throw"?x.meta.thrown:x.meta.resultCause;if(o||n)return R(x.error,{cause:C});if(mt(x.error))return R(x.error,{cause:C});let P=O(x);return R(P,{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})}}pe.strict=(e,t)=>pe(e,t);var Te=class extends Error{constructor(n,r){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=r;this.name="UnwrapError"}},vn=e=>{if(e.ok)return e.value;throw new Te(e.error,e.cause)},xn=(e,t)=>e.ok?e.value:t,Rn=(e,t)=>e.ok?e.value:t(e.error,e.cause);function bn(e,t){try{return N(e())}catch(n){return t?R(t(n),{cause:n}):R(n)}}async function Cn(e,t){try{return N(await e)}catch(n){return t?R(t(n),{cause:n}):R(n)}}async function On(e,t){try{return N(await e())}catch(n){return t?R(t(n),{cause:n}):R(n)}}function In(e,t){return e!=null?N(e):R(t())}function Pn(e,t){return e.ok?N(t(e.value)):e}function Dn(e,t){return e.ok?e:R(t(e.error),{cause:e.cause})}function An(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Mn(e,t){return e.ok?t(e.value):e}function _n(e,t){return e.ok&&t(e.value),e}function $n(e,t){return e.ok||t(e.error,e.cause),e}function Nn(e,t,n){if(!e.ok)return e;try{return N(t(e.value))}catch(r){return R(n(r),{cause:r})}}function Wn(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 Ln(e,t,n){return e.ok?N(t(e.value)):R(n(e.error),{cause:e.cause})}function Bn(e,t){return e.ok?e:t(e.error,e.cause)}async function Un(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function Hn(e,t){return e.ok?N(e.value):N(t(e.error,e.cause))}async function Fn(e,t){let n=await e;return n.ok?N(n.value):N(await t(n.error,n.cause))}function yt(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 Vn(e){return yt(e)!==null}function zn(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return N(t)}async function Kn(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 jn(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 qn(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 Gn(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 Jn(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 Xn(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 Se=class extends Error{_tag};function ve(e,t){return class extends Se{_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:l,...u}=n,c=Object.prototype.hasOwnProperty.call(u,"cause"),d=c?u.cause:void 0;c&&delete u.cause;let p=r?.cause!==void 0;if(c&&p)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,u),c&&(this.cause=d),p&&(this.cause=r?.cause)}else r?.cause!==void 0&&(this.cause=r.cause)}}}Object.defineProperty(ve,Symbol.hasInstance,{value:e=>e instanceof Se});(o=>{function e(s){return s instanceof Error}o.isError=e;function t(s){return s instanceof Se}o.isTaggedError=t;function n(s,a){let i=s._tag,l=a[i];return l(s)}o.match=n;function r(s,a,i){let l=s._tag,u=a[l];return u?u(s):i(s)}o.matchPartial=r})(ve||={});function Yn(){let e=new Map;return{handleEvent:t=>{Fe(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Yo(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function He(e,t,n){return R(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function wt(e){return Yo(e)?e.meta:{origin:"result",resultCause:e}}function Qn(e,t){async function n(r,o){let s=typeof o=="function",a=s?r:void 0,i=s?o:r,l=crypto.randomUUID(),u=t?.createContext?.(),c={workflowId:l,onEvent:t?.onEvent,context:u!==void 0?u:void 0},d=g=>{let y=g.context!==void 0||u===void 0?g:{...g,context:u};t?.onEvent?.(y,u)},p=t?.shouldRun,m=t?.catchUnexpected;if(p){let g=performance.now();try{let y=await p(l,u),v=performance.now()-g;if(d({type:"hook_should_run",workflowId:l,ts:Date.now(),durationMs:v,result:y,skipped:!y}),!y){let I=new Error("Workflow skipped by shouldRun hook");if(m){let S=m(I);return R(S)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:I}})}}catch(y){let v=performance.now()-g;if(d({type:"hook_should_run_error",workflowId:l,ts:Date.now(),durationMs:v,error:y}),m){let _=m(y);return R(_)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}})}}let T=t?.onBeforeStart;if(T){let g=performance.now();try{let y=await T(l,u),v=performance.now()-g;if(d({type:"hook_before_start",workflowId:l,ts:Date.now(),durationMs:v,result:y,skipped:!y}),!y){let I=new Error("Workflow skipped by onBeforeStart hook");if(m){let S=m(I);return R(S)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:I}})}}catch(y){let v=performance.now()-g;if(d({type:"hook_before_start_error",workflowId:l,ts:Date.now(),durationMs:v,error:y}),m){let _=m(y);return R(_)}return R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:y}})}}let h=Date.now(),O=performance.now();d({type:"workflow_start",workflowId:l,ts:h});let D=t?.resumeState,E=t?.cache;if(D&&!E&&(E=new Map),D&&E){let g=typeof D=="function"?await D():D;for(let[y,v]of g.steps){let{result:I,meta:_}=v;if(I.ok)E.set(y,I);else{let S=_??{origin:"result",resultCause:I.cause};E.set(y,He(I.error,S,I.cause))}}}let x=g=>typeof g=="string"?{name:g}:g??{},w=t?.onAfterStep,C=async(g,y)=>{if(!w)return;let v=performance.now();try{await w(g,y,l,u);let I=performance.now()-v;d({type:"hook_after_step",workflowId:l,stepKey:g,ts:Date.now(),durationMs:I})}catch(I){let _=performance.now()-v;throw d({type:"hook_after_step_error",workflowId:l,stepKey:g,ts:Date.now(),durationMs:_,error:I}),I}},P=g=>{if(!E&&!w)return g;let y=async(v,I)=>{let{name:_,key:S}=x(I);if(S&&E&&E.has(S)){d({type:"step_cache_hit",workflowId:l,stepKey:S,name:_,ts:Date.now()});let f=E.get(S);if(f.ok)return f.value;let k=wt(f.cause);throw ne(f.error,k)}S&&E&&d({type:"step_cache_miss",workflowId:l,stepKey:S,name:_,ts:Date.now()});let M=typeof v=="function"?v:()=>v;try{let f=await g(M,I);return S&&(E&&E.set(S,N(f)),await C(S,N(f))),f}catch(f){if(S&&re(f)){let k=f,b=k.meta.origin==="result"?k.meta.resultCause:k.meta.thrown,B=He(k.error,k.meta,b);E&&E.set(S,B),await C(S,B)}throw f}};return y.try=async(v,I)=>{let{name:_,key:S}=I;if(S&&E&&E.has(S)){d({type:"step_cache_hit",workflowId:l,stepKey:S,name:_,ts:Date.now()});let M=E.get(S);if(M.ok)return M.value;let f=wt(M.cause);throw ne(M.error,f)}S&&E&&d({type:"step_cache_miss",workflowId:l,stepKey:S,name:_,ts:Date.now()});try{let M=await g.try(v,I);return S&&(E&&E.set(S,N(M)),await C(S,N(M))),M}catch(M){if(S&&re(M)){let f=M,k=f.meta.origin==="result"?f.meta.resultCause:f.meta.thrown,b=He(f.error,f.meta,k);E&&E.set(S,b),await C(S,b)}throw M}},y.fromResult=async(v,I)=>{let{name:_,key:S}=I;if(S&&E&&E.has(S)){d({type:"step_cache_hit",workflowId:l,stepKey:S,name:_,ts:Date.now()});let M=E.get(S);if(M.ok)return M.value;let f=wt(M.cause);throw ne(M.error,f)}S&&E&&d({type:"step_cache_miss",workflowId:l,stepKey:S,name:_,ts:Date.now()});try{let M=await g.fromResult(v,I);return S&&(E&&E.set(S,N(M)),await C(S,N(M))),M}catch(M){if(S&&re(M)){let f=M,k=f.meta.origin==="result"?f.meta.resultCause:f.meta.thrown,b=He(f.error,f.meta,k);E&&E.set(S,b),await C(S,b)}throw M}},y.parallel=g.parallel,y.race=g.race,y.allSettled=g.allSettled,y.retry=(v,I)=>y(v,{name:I.name,key:I.key,retry:{attempts:I.attempts,backoff:I.backoff,initialDelay:I.initialDelay,maxDelay:I.maxDelay,jitter:I.jitter,retryOn:I.retryOn,onRetry:I.onRetry},timeout:I.timeout}),y.withTimeout=(v,I)=>y(v,{name:I.name,key:I.key,timeout:I}),y},L=s?g=>i(P(g),e,a,c):g=>i(P(g),e,c),W;if(t?.strict===!0){let g=t;W=await pe.strict(L,{onError:g.onError,onEvent:g.onEvent,catchUnexpected:g.catchUnexpected,workflowId:l,context:u})}else{let g=t;W=await pe(L,{onError:g?.onError??(()=>{}),onEvent:g?.onEvent,workflowId:l,context:u})}let A=performance.now()-O;return W.ok?d({type:"workflow_success",workflowId:l,ts:Date.now(),durationMs:A}):d({type:"workflow_error",workflowId:l,ts:Date.now(),durationMs:A,error:W.error}),W}return n}function Fe(e){return e.type==="step_complete"}function se(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function Zn(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function er(e,t){return R({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function tr(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 Ve(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:N(t.value)}),{steps:n}}function nr(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function rr(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:se(n.result.error)}function or(e){let t=[];for(let[n,r]of e.steps)!r.result.ok&&se(r.result.error)&&t.push(n);return t}function xe(){let e=new Map;return{handleEvent:t=>{Fe(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&&se(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,r]of e)!r.result.ok&&se(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 sr(){return`decision_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function ar(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 ze(e,t,n,r){if(e)return t();let o=sr();ar(r,n,o)}function ht(e,t,n,r){return ze(!e,t,n,r)}function Ke(e,t,n,r,o){if(e)return t();let s=sr();return ar(o,r,s),n}function kt(e,t,n,r,o){return Ke(!e,t,n,r,o)}function ir(e){return{when:(t,n,r)=>ze(t,n,r,e),unless:(t,n,r)=>ht(t,n,r,e),whenOr:(t,n,r,o)=>Ke(t,n,r,o,e),unlessOr:(t,n,r,o)=>kt(t,n,r,o,e)}}var ke=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 ur(e){return typeof e=="object"&&e!==null&&e.type==="CIRCUIT_OPEN"}var Qo={failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3};function cr(e,t){let n={...Qo,...t},r="CLOSED",o=[],s=null,a=null,i=0,l=0;function u(){let h=Date.now();o=o.filter(O=>h-O.timestamp<n.windowSize)}function c(h){if(r!==h){let O=r;r=h,h==="HALF_OPEN"&&(l=0),n.onStateChange?.(O,h,e)}}function d(){return r!=="OPEN"||s===null?!1:Date.now()-s>=n.resetTimeout?(c("HALF_OPEN"),!0):!1}function p(){a=Date.now(),i++,r==="HALF_OPEN"&&(l++,l>=n.halfOpenMax&&(c("CLOSED"),o=[]))}function m(h){let O=Date.now();s=O,u(),o.push({timestamp:O,error:h}),(r==="HALF_OPEN"||r==="CLOSED"&&o.length>=n.failureThreshold)&&c("OPEN")}function T(){if(r==="CLOSED")return 0;if(r==="OPEN"){if(d())return 0;let h=Date.now(),O=s?h-s:0;return Math.max(0,n.resetTimeout-O)}return 0}return{async execute(h,O){let D=T();if(D>0)throw new ke({circuitName:e,state:r,retryAfterMs:D});try{let E=await h();return p(),E}catch(E){throw m(E),E}},async executeResult(h,O){let D=T();if(D>0)return R(new ke({circuitName:e,state:r,retryAfterMs:D}));try{let E=await h();return E.ok?p():m(E.error),E}catch(E){throw m(E),E}},getState(){return r==="OPEN"&&d(),r},getStats(){return u(),{state:this.getState(),failureCount:o.length,successCount:i,lastFailureTime:s,lastSuccessTime:a,halfOpenSuccesses:l}},reset(){c("CLOSED"),o=[],l=0},forceOpen(){s=Date.now(),c("OPEN")},recordSuccess(){p()},recordFailure(h){m(h??new Error("Manual failure"))}}}var lr={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 pr(e){return typeof e=="object"&&e!==null&&e.type==="SAGA_COMPENSATION_ERROR"}function dr(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 c=[];a({type:"saga_compensation_start",sagaId:r,ts:Date.now(),stepCount:s.length});let d=performance.now();for(let p=s.length-1;p>=0;p--){let m=s[p];try{await m.compensate(m.value),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!0})}catch(T){c.push({stepName:m.name,error:T}),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!1,error:T})}}return a({type:"saga_compensation_end",sagaId:r,ts:Date.now(),durationMs:performance.now()-d,success:c.length===0,failedCount:c.length}),c}let l={async step(u,c){let d=await u();if(d.ok)return c?.compensate&&s.push({name:c.name,value:d.value,compensate:c.compensate}),d.value;throw ne(d.error,{origin:"result",resultCause:d.cause})},async tryStep(u,c){let d="error"in c?()=>c.error:c.onError;try{let p=await u();return c.compensate&&s.push({name:c.name,value:p,compensate:c.compensate}),p}catch(p){let m=d(p);throw ne(m,{origin:"throw",thrown:p})}},getCompensations(){return s.map(u=>({name:u.name,hasValue:u.value!==void 0}))}};try{let u=await n(l,e),c=performance.now()-o;return a({type:"saga_success",sagaId:r,ts:Date.now(),durationMs:c}),N(u)}catch(u){let c=performance.now()-o,d;re(u)?d=u.error:d=u,a({type:"saga_error",sagaId:r,ts:Date.now(),durationMs:c,error:d});let p=await i(d);if(p.length>0){let m={type:"SAGA_COMPENSATION_ERROR",originalError:d,compensationErrors:p};if(t?.onError?.(m),t?.throwOnCompensationFailure)throw m;return R(m)}return t?.onError?.(d),re(u)?R(d):R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}}async function fr(e,t){let n=crypto.randomUUID(),r=performance.now(),o=[],s=l=>{t?.onEvent?.(l)};s({type:"saga_start",sagaId:n,ts:Date.now()});async function a(l){let u=[];s({type:"saga_compensation_start",sagaId:n,ts:Date.now(),stepCount:o.length});let c=performance.now();for(let d=o.length-1;d>=0;d--){let p=o[d];try{await p.compensate(p.value),s({type:"saga_compensation_step",sagaId:n,stepName:p.name,ts:Date.now(),success:!0})}catch(m){u.push({stepName:p.name,error:m}),s({type:"saga_compensation_step",sagaId:n,stepName:p.name,ts:Date.now(),success:!1,error:m})}}return s({type:"saga_compensation_end",sagaId:n,ts:Date.now(),durationMs:performance.now()-c,success:u.length===0,failedCount:u.length}),u}let i={async step(l,u){let c=await l();if(c.ok)return u?.compensate&&o.push({name:u.name,value:c.value,compensate:u.compensate}),c.value;throw ne(c.error,{origin:"result",resultCause:c.cause})},async tryStep(l,u){let c="error"in u?()=>u.error:u.onError;try{let d=await l();return u.compensate&&o.push({name:u.name,value:d,compensate:u.compensate}),d}catch(d){let p=c(d);throw ne(p,{origin:"throw",thrown:d})}},getCompensations(){return o.map(l=>({name:l.name,hasValue:l.value!==void 0}))}};try{let l=await e(i),u=performance.now()-r;return s({type:"saga_success",sagaId:n,ts:Date.now(),durationMs:u}),N(l)}catch(l){let u=performance.now()-r,c;re(l)?c=l.error:c=l,s({type:"saga_error",sagaId:n,ts:Date.now(),durationMs:u,error:c});let d=await a(c);if(d.length>0){let p={type:"SAGA_COMPENSATION_ERROR",originalError:c,compensationErrors:d};if(t?.onError?.(p),t?.throwOnCompensationFailure)throw p;return R(p)}return t?.onError?.(c),re(l)?R(c):R({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:l}})}}function mr(e){return typeof e=="object"&&e!==null&&e.type==="RATE_LIMIT_EXCEEDED"}function Et(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function Tt(e,t){let{maxPerSecond:n,strategy:r="wait"}=t,o=t.burstCapacity??n*2,s=o,a=Date.now(),i=n/1e3,l=[];function u(){let p=Date.now(),T=(p-a)*i;s=Math.min(o,s+T),a=p}function c(){if(u(),s>=1)return s-=1,0;let p=1-s;return Math.ceil(p/i)}async function d(){return new Promise(p=>{let m=()=>{let T=c();T===0?p():(l.push(m),setTimeout(()=>{let h=l.indexOf(m);h!==-1&&(l.splice(h,1),m())},T))};m()})}return{async execute(p){let m=c();if(m>0){if(r==="reject")throw{type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m};await d()}return p()},async executeResult(p){let m=c();if(m>0){if(r==="reject")return R({type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m});await d()}return p()},getStats(){return u(),{availableTokens:Math.floor(s),maxTokens:o,tokensPerSecond:n,waitingCount:l.length}},reset(){s=o,a=Date.now(),l.length=0}}}function Re(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,c)=>{a.push({resolve:u,reject:c})})}function l(){s--,a.length>0&&s<n&&(s++,a.shift()?.resolve())}return{async execute(u){await i();try{return await u()}finally{l()}},async executeAll(u){let c=new Array(u.length),d=[];for(let p=0;p<u.length;p++){let m=p,T=this.execute(u[m]).then(h=>{c[m]=h});d.push(T)}return await Promise.all(d),c},async executeResult(u){try{await i()}catch(c){if(Et(c))return R(c);throw c}try{return await u()}finally{l()}},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 gr(e,t){let n=t.rate?Tt(`${e}-rate`,t.rate):void 0,r=t.concurrency?Re(`${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 yr={api:{maxPerSecond:10,burstCapacity:20,strategy:"wait"},database:{maxConcurrent:10,strategy:"queue",maxQueueSize:100},external:{maxPerSecond:5,burstCapacity:10,strategy:"wait"}};function wr(e){return typeof e=="object"&&e!==null&&e.type==="MIGRATION_ERROR"}function hr(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 kr(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 Er(e,t){return{version:t,state:e}}function Tr(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 Sr(e){return JSON.stringify({version:e.version,state:{steps:Array.from(e.state.steps.entries())}})}function vr(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 xr(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 Rr(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 br(e){return async t=>{let n=t;for(let r of e)n=await r(n);return n}}function Cr(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},l={stepDurations:[],retryCount:0,errorCount:0,cacheHits:0,cacheMisses:0,defaultAttributes:o};function u(d,p){return d?`${t}.${d}`:p?`${t}.step.${p}`:`${t}.step`}function c(d){switch(d.type){case"workflow_start":i.workflows.set(d.workflowId,{workflowId:d.workflowId,startTime:d.ts});break;case"workflow_success":case"workflow_error":i.workflows.get(d.workflowId)&&i.workflows.delete(d.workflowId),d.type==="workflow_error"&&a&&l.errorCount++;break;case"step_start":if(n){let p=d.stepId;i.steps.set(p,{workflowId:d.workflowId,stepId:p,stepKey:d.stepKey,name:d.name,startTime:d.ts})}break;case"step_success":case"step_error":if(n){let p=d.stepId,m=i.steps.get(p);m&&(i.steps.delete(p),r&&l.stepDurations.push({name:u(m.name,m.stepKey),durationMs:d.durationMs,success:d.type==="step_success",attributes:Object.keys(o).length>0?{...o}:void 0}),d.type==="step_error"&&a&&l.errorCount++)}break;case"step_retry":s&&l.retryCount++;break;case"step_cache_hit":l.cacheHits++;break;case"step_cache_miss":l.cacheMisses++;break;default:break}}return{handleEvent:c,getActiveSpansCount(){return{workflows:i.workflows.size,steps:i.steps.size}},getMetrics(){return{...l,stepDurations:[...l.stepDurations]}},reset(){i.workflows.clear(),i.steps.clear(),l.stepDurations.length=0,l.retryCount=0,l.errorCount=0,l.cacheHits=0,l.cacheMisses=0}}}function Or(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 Ir(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[l,u]of Object.entries(s))i.setAttribute(l,u);return o()})}}function Pr(e){return typeof e=="object"&&e!==null&&e.type==="VALIDATION_ERROR"}function je(e){return{status:400,body:{error:{type:e.type,message:e.message,details:e.field?{field:e.field}:e.details}}}}function qe(e){return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}}}function Dr(e,t,n){let{validateInput:r,mapResult:o,mapValidationError:s=je,mapUnexpectedError:a=qe,beforeValidation:i,afterResponse:l}=n;return async u=>{try{let c=i?await i(u):u,d=await r(c);if(!he(d)){let T=s(d.error,c);return l?await l(T,c):T}let p=await e(d.value,(T,h)=>t(T,h,d.value)),m=o(p,c);return l?await l(m,c):m}catch(c){let d=a(c,u);return l?await l(d,u):d}}}function Ar(e){let{validateInput:t,handler:n,mapResult:r,mapValidationError:o=je,mapUnexpectedError:s=qe}=e;return async a=>{try{let i=await t(a);if(!he(i))return o(i.error,a);let l=await n(i.value,a);return r(l,a)}catch(i){return s(i,a)}}}function Mr(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 vt(e){return{method:e.method,path:e.path,headers:e.headers,body:e.body,query:e.query,params:e.params,raw:e}}function xt(e,t){t.headers&&e.set(t.headers),e.status(t.status).json(t.body)}function _r(e){return async(t,n)=>{let r=vt(t),o=await e(r);xt(n,o)}}function Rt(e,t,n){return{type:"VALIDATION_ERROR",message:e,field:t,details:n}}function $r(e){return t=>{for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return R(Rt(`Missing required field: ${n}`,n));return N(void 0)}}function Nr(...e){return t=>{for(let n of e){let r=n(t);if(!r.ok)return r}return N(void 0)}}function Wr(e,t,n){let{validatePayload:r,mapResult:o}=n;return async s=>{try{let a=r(s);if(!he(a))return{success:!1,ack:!0,error:{type:a.error.type,message:a.error.message,retryable:!1}};let i=await e(a.value,(l,u)=>t(l,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 G(...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 Lr(...e){let t=G(...e);return n=>G(t,typeof n=="string"?{name:n}:n??{})}function Br(e,...t){return{name:e,policy:G(...t)}}function Q(e){return{retry:e}}var fe={none:Q({attempts:1}),transient:Q({attempts:3,backoff:"exponential",initialDelay:100,maxDelay:1e3,jitter:!0}),standard:Q({attempts:3,backoff:"exponential",initialDelay:200,maxDelay:5e3,jitter:!0}),aggressive:Q({attempts:5,backoff:"exponential",initialDelay:500,maxDelay:3e4,jitter:!0}),fixed:(e,t)=>Q({attempts:e,backoff:"fixed",initialDelay:t,jitter:!1}),linear:(e,t)=>Q({attempts:e,backoff:"linear",initialDelay:t,jitter:!0}),custom:e=>Q({backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,...e})};function Y(e){return{timeout:e}}var de={none:{},fast:Y({ms:1e3}),api:Y({ms:5e3}),extended:Y({ms:3e4}),long:Y({ms:12e4}),ms:e=>Y({ms:e}),seconds:e=>Y({ms:e*1e3}),withError:(e,t)=>Y({ms:e,error:t}),withSignal:e=>Y({ms:e,signal:!0})},Ur={httpApi:G(de.api,fe.standard),database:G(de.extended,Q({attempts:2,backoff:"exponential",initialDelay:100,maxDelay:2e3,jitter:!0})),cache:G(de.fast,fe.none),messageQueue:G(de.extended,fe.aggressive),fileSystem:G(de.long,fe.standard),rateLimited:G(Y({ms:1e4}),Q({attempts:5,backoff:"linear",initialDelay:1e3,maxDelay:1e4,jitter:!0}))};function bt(e,t){return G(e,typeof t=="string"?{name:t}:t??{})}function Hr(e,t){let n=typeof t=="string"?{name:t}:t??{};return G(...e,n)}function Fr(e,t,n={}){return e?t:n}function Vr(e,t=process.env.NODE_ENV??"development",n={}){return e[t]??n}function zr(){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 bt(r,n)}}}function Kr(){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(Y({ms:n})),t},retry(n){return e.push(Q(n)),t},retries(n){return e.push(fe.custom({attempts:n})),t},build(){return G(...e)}};return t}function be(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 Ce(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 Oe(e){return e.ok?{ok:!0,value:e.value}:{ok:!1,error:e.error,cause:e.cause!==void 0?be(e.cause):void 0}}function Ie(e){if(e.ok)return N(e.value);let t=e.cause?Ce(e.cause):void 0;return R(e.error,t!==void 0?{cause:t}:void 0)}function Ct(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause!==void 0?be(e.resultCause):void 0}:{origin:"throw",thrown:be(e.thrown)}}function Ot(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause?Ce(e.resultCause):void 0}:{origin:"throw",thrown:e.thrown?Ce(e.thrown):void 0}}function It(e){return{result:Oe(e.result),meta:e.meta?Ct(e.meta):void 0}}function Pt(e){return{result:Ie(e.result),meta:e.meta?Ot(e.meta):void 0}}function Ge(e,t){let n={};for(let[r,o]of e.steps)n[r]=It(o);return{version:1,entries:n,metadata:t}}function Je(e){let t=new Map;for(let[n,r]of Object.entries(e.entries))t.set(n,Pt(r));return{steps:t}}function jr(e,t){return JSON.stringify(Ge(e,t))}function qr(e){let t=JSON.parse(e);return Je(t)}function Gr(e={}){let{maxSize:t,ttl:n}=e,r=new Map,o=i=>n?Date.now()-i>n:!1,s=()=>{if(n)for(let[i,l]of r)o(l.timestamp)&&r.delete(i)},a=()=>{if(!t||r.size<t)return;let i,l=1/0;for(let[u,c]of r)c.timestamp<l&&(l=c.timestamp,i=u);i&&r.delete(i)};return{get(i){s();let l=r.get(i);if(l){if(o(l.timestamp)){r.delete(i);return}return l.result}},set(i,l){s(),a(),r.set(i,{result:l,timestamp:Date.now()})},has(i){s();let l=r.get(i);return l?o(l.timestamp)?(r.delete(i),!1):!0:!1},delete(i){return r.delete(i)},clear(){r.clear()}}}function Jr(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 l=await r.readFile(i),u=JSON.parse(l),c=Ie(u);return s.set(a,c),c}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let l=o(a),u=Oe(i);await r.writeFile(l,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 Xr(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 l=JSON.parse(i),u=Ie(l);return s.set(a,u),u}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let l=Oe(i);await t.set(o(a),JSON.stringify(l),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 Yr(e,t="workflow:state:"){let n=r=>`${t}${r}`;return{async save(r,o,s){let a=Ge(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 Je(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 Qr(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 Dt(){return`node_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Zo(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 At(e,t={}){if(Zo(e))return e;let{minOverlapMs:n=0,maxGapMs:r=5}=t,o=[],s=[];for(let u=0;u<e.length;u++){let c=e[u];c.type==="step"&&c.startTs!==void 0?o.push({node:c,startTs:c.startTs,endTs:c.endTs??c.startTs+(c.durationMs??0),originalIndex:u}):s.push({node:c,originalIndex:u})}if(o.length<=1)return e;o.sort((u,c)=>u.startTs-c.startTs);let a=[],i=[o[0]];for(let u=1;u<o.length;u++){let c=o[u],d=Math.min(...i.map(O=>O.startTs)),p=Math.max(...i.map(O=>O.endTs)),m=c.startTs<=d+r,T=c.startTs<p;if(!m&&!T){a.push(i),i=[c];continue}let h=T?Math.min(c.endTs,p)-c.startTs:0;m||h>=n?i.push(c):(a.push(i),i=[c])}a.push(i);let l=[];for(let u of a){let c=Math.min(...u.map(d=>d.originalIndex));if(u.length===1)l.push({node:u[0].node,position:c});else{let d=u.map(h=>h.node),p=Math.min(...u.map(h=>h.startTs)),m=Math.max(...u.map(h=>h.endTs)),T={type:"parallel",id:`detected_parallel_${p}`,name:`${d.length} parallel steps`,state:es(d),mode:"all",children:d,startTs:p,endTs:m,durationMs:m-p};l.push({node:T,position:c})}}for(let{node:u,originalIndex:c}of s)l.push({node:u,position:c});return l.sort((u,c)=>u.position-c.position),l.map(u=>u.node)}function es(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 Pe(e={}){let{detectParallel:t=!0,parallelDetection:n,enableSnapshots:r=!1,maxSnapshots:o=1e3}=e,s,a,i="pending",l,u,c=new Map,d=[],p=[],m=[],T=Date.now(),h=T,O={onAfterStep:new Map},D=[],E=0;function x(f){return f.stepId??f.stepKey??f.name??Dt()}function w(f){if(p.length>0){let k=p[p.length-1];for(let B of k.branches.values())if(B.taken){B.children.push(f),h=Date.now();return}let b=Array.from(k.branches.values())[0];if(b){b.children.push(f),h=Date.now();return}}d.length>0?d[d.length-1].children.push(f):m.push(f),h=Date.now()}function C(f){if(!r)return;let k=y(),b=new Map;for(let[z,V]of c)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(f),ir:structuredClone(k),timestamp:Date.now(),activeSteps:b};D.push(B),D.length>o&&D.shift(),E++}function P(f){switch(f.type){case"workflow_start":s=f.workflowId,a=f.ts,i="running",T=Date.now(),h=T,O.onAfterStep=new Map;break;case"workflow_success":i="success",u=f.durationMs,h=Date.now();break;case"workflow_error":i="error",l=f.error,u=f.durationMs,h=Date.now();break;case"step_start":{let k=x(f);c.set(k,{id:k,name:f.name,key:f.stepKey,startTs:f.ts,retryCount:0,timedOut:!1}),h=Date.now();break}case"step_success":{let k=x(f),b=c.get(k);if(b){let B={type:"step",id:b.id,name:b.name,key:b.key,state:"success",startTs:b.startTs,endTs:f.ts,durationMs:f.durationMs,...b.retryCount>0&&{retryCount:b.retryCount},...b.timedOut&&{timedOut:!0,timeoutMs:b.timeoutMs}};w(B),c.delete(k)}break}case"step_error":{let k=x(f),b=c.get(k);if(b){let B={type:"step",id:b.id,name:b.name,key:b.key,state:"error",startTs:b.startTs,endTs:f.ts,durationMs:f.durationMs,error:f.error,...b.retryCount>0&&{retryCount:b.retryCount},...b.timedOut&&{timedOut:!0,timeoutMs:b.timeoutMs}};w(B),c.delete(k)}break}case"step_aborted":{let k=x(f),b=c.get(k);if(b){let B={type:"step",id:b.id,name:b.name,key:b.key,state:"aborted",startTs:b.startTs,endTs:f.ts,durationMs:f.durationMs,...b.retryCount>0&&{retryCount:b.retryCount},...b.timedOut&&{timedOut:!0,timeoutMs:b.timeoutMs}};w(B),c.delete(k)}break}case"step_cache_hit":{let b={type:"step",id:x(f),name:f.name,key:f.stepKey,state:"cached",startTs:f.ts,endTs:f.ts,durationMs:0};w(b);break}case"step_cache_miss":break;case"step_complete":break;case"step_timeout":{let k=x(f),b=c.get(k);b&&(b.timedOut=!0,b.timeoutMs=f.timeoutMs),h=Date.now();break}case"step_retry":{let k=x(f),b=c.get(k);b&&(b.retryCount=(f.attempt??1)-1),h=Date.now();break}case"step_retries_exhausted":h=Date.now();break;case"step_skipped":{let b={type:"step",id:x(f),name:f.name,key:f.stepKey,state:"skipped",startTs:f.ts,endTs:f.ts,durationMs:0};w(b);break}case"hook_should_run":{let k={type:"shouldRun",state:"success",ts:f.ts,durationMs:f.durationMs,context:{result:f.result,skipped:f.skipped}};O.shouldRun=k,h=Date.now();break}case"hook_should_run_error":{let k={type:"shouldRun",state:"error",ts:f.ts,durationMs:f.durationMs,error:f.error};O.shouldRun=k,h=Date.now();break}case"hook_before_start":{let k={type:"onBeforeStart",state:"success",ts:f.ts,durationMs:f.durationMs,context:{result:f.result,skipped:f.skipped}};O.onBeforeStart=k,h=Date.now();break}case"hook_before_start_error":{let k={type:"onBeforeStart",state:"error",ts:f.ts,durationMs:f.durationMs,error:f.error};O.onBeforeStart=k,h=Date.now();break}case"hook_after_step":{let k={type:"onAfterStep",state:"success",ts:f.ts,durationMs:f.durationMs,context:{stepKey:f.stepKey}};O.onAfterStep.set(f.stepKey,k),h=Date.now();break}case"hook_after_step_error":{let k={type:"onAfterStep",state:"error",ts:f.ts,durationMs:f.durationMs,error:f.error,context:{stepKey:f.stepKey}};O.onAfterStep.set(f.stepKey,k),h=Date.now();break}}C(f)}function L(f){if(f.type==="scope_start")d.push({id:f.scopeId,name:f.name,type:f.scopeType,startTs:f.ts,children:[]}),h=Date.now();else if(f.type==="scope_end"){let k=d.pop();if(k){let b=k.type==="race"?{type:"race",id:k.id,name:k.name,state:A(k.children),startTs:k.startTs,endTs:f.ts,durationMs:f.durationMs,children:k.children,winnerId:f.winnerId}:{type:"parallel",id:k.id,name:k.name,state:A(k.children),startTs:k.startTs,endTs:f.ts,durationMs:f.durationMs,children:k.children,mode:k.type==="allSettled"?"allSettled":"all"};w(b)}}}function W(f){if(f.type==="decision_start")p.push({id:f.decisionId,name:f.name,condition:f.condition,decisionValue:f.decisionValue,startTs:f.ts,branches:new Map}),h=Date.now();else if(f.type==="decision_branch"){let k=p[p.length-1];if(k&&k.id===f.decisionId){let b=f.branchLabel,B=k.branches.get(b);B?B.taken=f.taken:k.branches.set(b,{label:f.branchLabel,condition:f.condition,taken:f.taken,children:[]}),h=Date.now()}}else if(f.type==="decision_end"){let k=p.pop();if(k&&k.id===f.decisionId){let b=Array.from(k.branches.values()),B={type:"decision",id:k.id,name:k.name,state:A(b.flatMap(z=>z.taken?z.children:[])),startTs:k.startTs,endTs:f.ts,durationMs:f.durationMs,condition:k.condition,decisionValue:k.decisionValue,branchTaken:f.branchTaken??k.branchTaken,branches:b};w(B)}}}function A(f){return f.length===0?"success":f.some(z=>z.state==="error")?"error":f.every(z=>z.state==="success"||z.state==="cached")?"success":f.some(z=>z.state==="running")?"running":"pending"}function g(){let f=[...m];for(let[,k]of c)f.push({type:"step",id:k.id,name:k.name,key:k.key,state:"running",startTs:k.startTs,...k.retryCount>0&&{retryCount:k.retryCount},...k.timedOut&&{timedOut:!0,timeoutMs:k.timeoutMs}});return f}function y(){let f=g();t&&(f=At(f,n));let k={type:"workflow",id:s??Dt(),workflowId:s??"unknown",state:i,startTs:a,durationMs:u,children:f,error:l},b=O.shouldRun!==void 0||O.onBeforeStart!==void 0||O.onAfterStep.size>0;return{root:k,metadata:{createdAt:T,lastUpdatedAt:h},...b&&{hooks:O}}}function v(){s=void 0,a=void 0,i="pending",l=void 0,u=void 0,c.clear(),d.length=0,p.length=0,m=[],T=Date.now(),h=T,O={onAfterStep:new Map},D.length=0,E=0}function I(){return[...D]}function _(f){return D[f]}function S(f){return D[f]?.ir}function M(){D.length=0,E=0}return{handleEvent:P,handleScopeEvent:L,handleDecisionEvent:W,getIR:y,reset:v,getSnapshots:I,getSnapshotAt:_,getIRAt:S,clearSnapshots:M,get hasActiveSteps(){return c.size>0},get state(){return i},get snapshotCount(){return D.length},get snapshotsEnabled(){return r}}}function ce(e){return e.type==="step"}function De(e){return e.type==="parallel"}function Ae(e){return e.type==="race"}function Me(e){return e.type==="decision"}var Mt="\x1B[0m",ts="\x1B[1m",eo="\x1B[2m",ns="\x1B[31m",rs="\x1B[32m",os="\x1B[33m",ss="\x1B[34m",Zr="\x1B[90m",as="\x1B[37m";function le(e,t){return t?`${t}${e}${Mt}`:e}function _e(e){return`${ts}${e}${Mt}`}function H(e){return`${eo}${e}${Mt}`}var me={pending:as,running:os,success:rs,error:ns,aborted:Zr,cached:ss,skipped:eo+Zr};function is(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 $e(e,t){let n=is(e);return le(n,t[e])}function _t(e,t,n){return le(e,n[t])}function to(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"},Ee={cold:"\x1B[34m",cool:"\x1B[36m",neutral:"",warm:"\x1B[33m",hot:"\x1B[31m",critical:"\x1B[41m"},us="\x1B[0m";function cs(e){return e<.2?Ee.cold:e<.4?Ee.cool:e<.6?Ee.neutral:e<.8?Ee.warm:e<.95?Ee.hot:Ee.critical}function no(e,t){let n=cs(t);return n?`${n}${e}${us}`:e}var ro="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function ls(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,l=Math.floor(i*(ro.length-1));return ro[l]}).join("")}function $t(e,t){let n=to(e).length,r=Math.max(0,t-n);return e+" ".repeat(r)}function ps(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 oo(e,t,n){let r=e.state==="success"?le("\u2699",n.success):le("\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 ds(e,t){let n=[];return e.shouldRun&&n.push(oo(e.shouldRun,"shouldRun",t)),e.onBeforeStart&&n.push(oo(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 Ne(){return{name:"ascii",supportsLive:!0,render(e,t){let n={...me,...t.colors},r=t.terminalWidth??60,o=r-4,s=[],a=e.root.name??"workflow",i=_e(a);if(s.push(`${$.topLeft}${ps(r-2,i)}${$.topRight}`),s.push(`${$.vertical}${" ".repeat(r-2)}${$.vertical}`),e.hooks){let u=ds(e.hooks,n);for(let c of u)s.push(`${$.vertical} ${$t(c,o)}${$.vertical}`)}let l=Xe(e.root.children,t,n,0,e.hooks);for(let u of l)s.push(`${$.vertical} ${$t(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",d=`${_t(u,e.root.state,n)} in ${K(e.root.durationMs)}`;s.push(`${$.vertical} ${$t(d,o)}${$.vertical}`),s.push(`${$.vertical}${" ".repeat(r-2)}${$.vertical}`)}return s.push(`${$.bottomLeft}${$.horizontal.repeat(r-2)}${$.bottomRight}`),s.join(`
|
|
2
|
-
`)}}}function Xe(e,t,n,r,o){let s=[];for(let a of e)ce(a)?s.push(Nt(a,t,n,o)):De(a)?s.push(...fs(a,t,n,r,o)):Ae(a)?s.push(...ms(a,t,n,r,o)):Me(a)&&s.push(...gs(a,t,n,r,o));return s}function Nt(e,t,n,r){let o=$e(e.state,n),s=e.name??e.key??"step",a=t,i=e.name??e.id,l=a.showHeatmap&&a.heatmapData?a.heatmapData.heat.get(e.id)??a.heatmapData.heat.get(i):void 0,u;l!==void 0?u=no(s,l):u=_t(s,e.state,n);let c=`${o} ${u}`;if(t.showKeys&&e.key&&(c+=H(` [key: ${e.key}]`)),e.input!==void 0){let d=typeof e.input=="string"?e.input:JSON.stringify(e.input).slice(0,30);c+=H(` [in: ${d}${d.length>=30?"...":""}]`)}if(e.output!==void 0&&e.state==="success"){let d=typeof e.output=="string"?e.output:JSON.stringify(e.output).slice(0,30);c+=H(` [out: ${d}${d.length>=30?"...":""}]`)}if(t.showTimings&&e.durationMs!==void 0){let d=K(e.durationMs),p=l!==void 0?no(`[${d}]`,l):H(`[${d}]`);c+=` ${p}`}if(a.showSparklines&&a.timingHistory){let d=a.timingHistory.get(i);d&&d.length>1&&(c+=` ${H(ls(d))}`)}if(e.retryCount!==void 0&&e.retryCount>0&&(c+=H(` [${e.retryCount} ${e.retryCount===1?"retry":"retries"}]`)),e.timedOut){let d=e.timeoutMs!==void 0?` ${e.timeoutMs}ms`:"";c+=H(` [timeout${d}]`)}if(r&&e.key&&r.onAfterStep.has(e.key)){let d=r.onAfterStep.get(e.key),p=d.state==="success"?le("\u2699",n.success):le("\u26A0",n.error),m=d.durationMs!==void 0?H(` ${K(d.durationMs)}`):"";c+=` ${p}${m}`}return c}function fs(e,t,n,r,o){let s=[],a=" ".repeat(r),i=$e(e.state,n),l=e.name??"parallel",u=e.mode==="allSettled"?" (allSettled)":"";if(s.push(`${a}${
|
|
3
|
-
`)}}}function Qe(e,t,n,r,o){if(ce(e))return Ss(e,t,n,r,o);if(De(e))return vs(e,t,n,r,o);if(Ae(e))return xs(e,t,n,r,o);if(Me(e))return Rs(e,t,n,r,o);let s=We("unknown");return n.push(` ${s}[Unknown Node]`),{entryId:s,exitId:s}}function Ss(e,t,n,r,o){let s=e.key?`step_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:We("step"),
|
|
1
|
+
"use strict";var pt=Object.defineProperty;var Ho=Object.getOwnPropertyDescriptor;var Fo=Object.getOwnPropertyNames;var Vo=Object.prototype.hasOwnProperty;var zo=(e,t)=>{for(var n in t)pt(e,n,{get:t[n],enumerable:!0})},Ko=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Fo(t))!Vo.call(e,o)&&o!==n&&pt(e,o,{get:()=>t[o],enumerable:!(r=Ho(t,o))||r.enumerable});return e};var jo=e=>Ko(pt({},"__esModule",{value:!0}),e);var pa={};zo(pa,{CircuitOpenError:()=>ke,Duration:()=>ge,Match:()=>No,STEP_TIMEOUT_MARKER:()=>ue,Schedule:()=>Bo,TaggedError:()=>ve,UnwrapError:()=>Te,addDelay:()=>fn,all:()=>zn,allAsync:()=>Kn,allSettled:()=>jn,allSettledAsync:()=>Xn,andThen:()=>Mn,any:()=>Gn,anyAsync:()=>Jn,batchPresets:()=>Po,bimap:()=>Ln,circuitBreakerPresets:()=>lr,clearStep:()=>nr,compareSnapshots:()=>vo,composeMigrations:()=>br,composeValidators:()=>Nr,conditionalPolicy:()=>Fr,createApprovalChecker:()=>ho,createApprovalStep:()=>tr,createApprovalWebhookHandler:()=>wo,createAutotelAdapter:()=>Cr,createAutotelEventHandler:()=>Or,createCircuitBreaker:()=>cr,createCombinedLimiter:()=>gr,createConcurrencyLimiter:()=>Re,createConditionalHelpers:()=>ir,createConsoleLogger:()=>fo,createDevtools:()=>Lt,createEventHandler:()=>Wr,createExpressHandler:()=>_r,createFileCache:()=>Jr,createHITLCollector:()=>xe,createHITLOrchestrator:()=>yo,createHydratingCache:()=>Qr,createKVCache:()=>Xr,createKeyRemoveMigration:()=>xr,createKeyRenameMigration:()=>vr,createMemoryApprovalStore:()=>mo,createMemoryCache:()=>Gr,createMemoryWorkflowStateStore:()=>go,createMockFn:()=>To,createPolicyApplier:()=>Lr,createPolicyBundle:()=>Br,createPolicyRegistry:()=>zr,createRateLimiter:()=>Tt,createResource:()=>Ao,createResourceScope:()=>Ut,createResultMapper:()=>Mr,createSagaWorkflow:()=>dr,createSimpleHandler:()=>Ar,createSnapshot:()=>So,createStatePersistence:()=>Yr,createStepCollector:()=>Yn,createTestClock:()=>xo,createValueTransformMigration:()=>Rr,createVersionedState:()=>Er,createVersionedStateLoader:()=>kr,createWebhookHandler:()=>Dr,createWorkflow:()=>Qn,createWorkflowHarness:()=>Eo,days:()=>rt,defaultUnexpectedErrorMapper:()=>qe,defaultValidationErrorMapper:()=>je,delays:()=>hn,deserializeCause:()=>Ce,deserializeEntry:()=>Pt,deserializeMeta:()=>Ot,deserializeResult:()=>Ie,deserializeState:()=>Je,envPolicy:()=>Vr,err:()=>b,errOutcome:()=>bo,exhaustive:()=>Gt,exponential:()=>nn,fibonacci:()=>on,forever:()=>Zt,from:()=>bn,fromNullable:()=>In,fromPromise:()=>Cn,getPendingApprovals:()=>or,getStepTimeoutMeta:()=>gt,hasPendingApproval:()=>rr,hours:()=>nt,hydrate:()=>yt,injectApproval:()=>Ve,intersect:()=>yn,isApprovalRejected:()=>Zn,isBatchProcessingError:()=>Bt,isCircuitOpenError:()=>ur,isDuration:()=>Kt,isErr:()=>En,isInvalidBatchConfigError:()=>Oo,isMigrationError:()=>wr,isOk:()=>he,isOneOf:()=>Yt,isPendingApproval:()=>se,isQueueFullError:()=>Et,isRateLimitExceededError:()=>mr,isResourceCleanupError:()=>Ze,isSagaCompensationError:()=>pr,isSerializedResult:()=>Vn,isStepComplete:()=>Fe,isStepTimeoutError:()=>Ue,isTag:()=>Xt,isUnexpectedError:()=>mt,isValidationError:()=>Pr,isVersionIncompatibleError:()=>hr,jittered:()=>dn,linear:()=>rn,map:()=>Pn,mapError:()=>Dn,mapErrorTry:()=>Wn,mapTry:()=>Nn,match:()=>An,matchOrElse:()=>st,matchTag:()=>jt,matchTags:()=>qt,matchValue:()=>Qt,maxDelay:()=>un,mergePolicies:()=>G,migrateState:()=>St,millis:()=>ae,minDelay:()=>cn,minutes:()=>tt,modifyDelay:()=>wn,ok:()=>N,okOutcome:()=>Ro,orElse:()=>Bn,orElseAsync:()=>Un,orElseValue:()=>Jt,parseState:()=>qr,parseVersionedState:()=>Tr,partition:()=>qn,pendingApproval:()=>er,processInBatches:()=>Io,quickVisualize:()=>po,rateLimiterPresets:()=>yr,recover:()=>Hn,recoverAsync:()=>Fn,recurs:()=>en,renderDiff:()=>lo,requireFields:()=>$r,retryPolicies:()=>fe,retryPolicy:()=>Z,run:()=>pe,runSaga:()=>fr,scheduleAndThen:()=>mn,scheduleUnion:()=>gn,seconds:()=>et,sendWebhookResponse:()=>xt,serializeCause:()=>be,serializeEntry:()=>It,serializeMeta:()=>Ct,serializeResult:()=>Oe,serializeState:()=>Ge,servicePolicies:()=>Ur,spaced:()=>tn,stepOptions:()=>Kr,stringifyState:()=>jr,stringifyVersionedState:()=>Sr,tap:()=>_n,tapError:()=>$n,throwOutcome:()=>Co,timeoutPolicies:()=>de,timeoutPolicy:()=>Q,toDays:()=>zt,toHours:()=>Vt,toMillis:()=>j,toMinutes:()=>Ft,toSeconds:()=>Ht,toWebhookRequest:()=>vt,tryAsync:()=>On,unless:()=>ht,unlessOr:()=>kt,untilInput:()=>ln,untilOutput:()=>pn,unwrap:()=>vn,unwrapOr:()=>xn,unwrapOrElse:()=>Rn,upTo:()=>sn,upToElapsed:()=>an,validationError:()=>Rt,when:()=>ze,whenOr:()=>Ke,whileInput:()=>at,whileOutput:()=>it,withAutotelTracing:()=>Ir,withPolicies:()=>Hr,withPolicy:()=>bt,withScope:()=>Do});module.exports=jo(pa);var N=e=>({ok:!0,value:e}),b=(e,t)=>({ok:!1,error:e,...t?.cause!==void 0?{cause:t.cause}:{}}),he=e=>e.ok,En=e=>!e.ok,mt=e=>typeof e=="object"&&e!==null&&e.type==="UNEXPECTED_ERROR",ue=Symbol.for("step_timeout_marker");function Ue(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:ue in e}function gt(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(ue in e)return e[ue]}}var Tn=Symbol("early-exit");function ne(e,t){return{[Tn]:!0,error:e,meta:t}}function re(e){return typeof e=="object"&&e!==null&&e[Tn]===!0}var Sn=Symbol("mapper-exception");function qo(e){return{[Sn]:!0,thrown:e}}function Go(e){return typeof e=="object"&&e!==null&&e[Sn]===!0}function Jo(e){return typeof e=="string"?{name:e}:e??{}}function dt(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 ft(e){return new Promise(t=>setTimeout(t,e))}var kn=Symbol("timeout");async function Xo(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((l,u)=>{s=setTimeout(()=>{r.abort(),u({[kn]:!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(l){if(typeof l=="object"&&l!==null&&l[kn]===!0){let u=l.error;if(typeof u=="object"&&u!==null&&u.type!=="STEP_TIMEOUT"){let c={timeoutMs:t.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};ue in u?u[ue]=c:Object.defineProperty(u,ue,{value:c,enumerable:!1,writable:!0,configurable:!1})}throw u}throw l}finally{clearTimeout(s)}}var we={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,retryOn:()=>!0,onRetry:()=>{}};async function pe(e,t){let{onError:n,onEvent:r,catchUnexpected:o,workflowId:s,context:a}=t&&typeof t=="object"?t:{},i=s??crypto.randomUUID(),l=!n&&!o,u=[],c=0,d=S=>S??`step_${++c}`,p=S=>{let y=S.context!==void 0||a===void 0?S:{...S,context:a};if(y.type==="step_success"){let v=y.stepId;for(let P=u.length-1;P>=0;P--){let L=u[P];if(L.type==="race"&&!L.winnerId){L.winnerId=v;break}}}r?.(y,a)},m=ne,T=S=>re(S),h=(S,y)=>l?y?.origin==="result"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:S,...y.resultCause!==void 0?{cause:y.resultCause}:{}}}:y?.origin==="throw"?{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"throw",error:S,thrown:y.thrown}}:{type:"UNEXPECTED_ERROR",cause:{type:"STEP_FAILURE",origin:"result",error:S}}:S,I=S=>({type:"UNEXPECTED_ERROR",cause:S.meta.origin==="result"?{type:"STEP_FAILURE",origin:"result",error:S.error,...S.meta.resultCause!==void 0?{cause:S.meta.resultCause}:{}}:{type:"STEP_FAILURE",origin:"throw",error:S.error,thrown:S.meta.thrown}});try{let y=function(W,D){let g=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let w=performance.now(),R=!1;u.push({scopeId:g,type:"parallel"});let O=()=>{if(R)return;R=!0;let M=u.findIndex(x=>x.scopeId===g);M!==-1&&u.splice(M,1),p({type:"scope_end",workflowId:i,scopeId:g,ts:Date.now(),durationMs:performance.now()-w})};p({type:"scope_start",workflowId:i,scopeId:g,scopeType:"parallel",name:W,ts:Date.now()});try{let M=await D();if(O(),!M.ok)throw n?.(M.error,W,a),m(M.error,{origin:"result",resultCause:M.cause});return M.value}catch(M){throw O(),M}})()},v=function(W,D){let g=Object.keys(W),w=D.name??`Parallel(${g.join(", ")})`,R=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let O=performance.now(),M=!1;u.push({scopeId:R,type:"parallel"});let x=()=>{if(M)return;M=!0;let A=u.findIndex(f=>f.scopeId===R);A!==-1&&u.splice(A,1),p({type:"scope_end",workflowId:i,scopeId:R,ts:Date.now(),durationMs:performance.now()-O})};p({type:"scope_start",workflowId:i,scopeId:R,scopeType:"parallel",name:w,ts:Date.now()});try{let A=await new Promise(k=>{if(g.length===0){k([]);return}let C=!1,B=g.length,z=new Array(g.length);for(let V=0;V<g.length;V++){let ye=g[V],ut=V;Promise.resolve(W[ye]()).catch(F=>b({type:"PROMISE_REJECTED",cause:F},{cause:{type:"PROMISE_REJECTION",reason:F}})).then(F=>{if(!C){if(!F.ok){C=!0,k([{key:ye,result:F}]);return}z[ut]={key:ye,result:F},B--,B===0&&k(z)}})}});x();let f={};for(let{key:k,result:C}of A){if(!C.ok)throw n?.(C.error,k,a),m(C.error,{origin:"result",resultCause:C.cause});f[k]=C.value}return f}catch(A){throw x(),A}})()};var $=y,E=v;let S=(W,D)=>(async()=>{let g=Jo(D),{name:w,key:R,retry:O,timeout:M}=g,x=d(R),A=r,f=A?performance.now():0;if(!(typeof W=="function")){if(O&&O.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(M)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,O?.attempts??1),backoff:O?.backoff??we.backoff,initialDelay:O?.initialDelay??we.initialDelay,maxDelay:O?.maxDelay??we.maxDelay,jitter:O?.jitter??we.jitter,retryOn:O?.retryOn??we.retryOn,onRetry:O?.onRetry??we.onRetry};r&&p({type:"step_start",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now()});let z;for(let F=1;F<=B.attempts;F++){let Uo=A?performance.now():0;try{let U;if(typeof W=="function"?M?U=await Xo(W,M,{name:w,key:R,attempt:F}):U=await W():U=await W,U.ok){let ie=performance.now()-f;return p({type:"step_success",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:ie}),R&&p({type:"step_complete",workflowId:i,stepKey:R,name:w,ts:Date.now(),durationMs:ie,result:U}),U.value}if(z=U,F<B.attempts&&B.retryOn(U.error,F)){let ie=dt(F,B);p({type:"step_retry",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:ie,error:U.error}),B.onRetry(U.error,F,ie),await ft(ie);continue}B.attempts>1&&p({type:"step_retries_exhausted",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:performance.now()-f,attempts:F,lastError:U.error});break}catch(U){let ie=performance.now()-Uo;if(T(U))throw p({type:"step_aborted",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:ie}),U;if(Ue(U)){let q=gt(U),ct=M?.ms??q?.timeoutMs??0;if(p({type:"step_timeout",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),timeoutMs:ct,attempt:F}),F<B.attempts&&B.retryOn(U,F)){let lt=dt(F,B);p({type:"step_retry",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:lt,error:U}),B.onRetry(U,F,lt),await ft(lt);continue}B.attempts>1&&p({type:"step_retries_exhausted",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:performance.now()-f,attempts:F,lastError:U})}if(F<B.attempts&&B.retryOn(U,F)){let q=dt(F,B);p({type:"step_retry",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),attempt:F+1,maxAttempts:B.attempts,delayMs:q,error:U}),B.onRetry(U,F,q),await ft(q);continue}B.attempts>1&&!Ue(U)&&p({type:"step_retries_exhausted",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:performance.now()-f,attempts:F,lastError:U});let Be=performance.now()-f;if(o){let q;try{q=o(U)}catch(ct){throw qo(ct)}throw p({type:"step_error",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:Be,error:q}),R&&p({type:"step_complete",workflowId:i,stepKey:R,name:w,ts:Date.now(),durationMs:Be,result:b(q,{cause:U}),meta:{origin:"throw",thrown:U}}),n?.(q,w,a),m(q,{origin:"throw",thrown:U})}else{let q={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:U}};throw p({type:"step_error",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:Be,error:q}),R&&p({type:"step_complete",workflowId:i,stepKey:R,name:w,ts:Date.now(),durationMs:Be,result:b(q,{cause:U}),meta:{origin:"throw",thrown:U}}),U}}}let V=z,ye=performance.now()-f,ut=h(V.error,{origin:"result",resultCause:V.cause});throw p({type:"step_error",workflowId:i,stepId:x,stepKey:R,name:w,ts:Date.now(),durationMs:ye,error:ut}),R&&p({type:"step_complete",workflowId:i,stepKey:R,name:w,ts:Date.now(),durationMs:ye,result:V,meta:{origin:"result",resultCause:V.cause}}),n?.(V.error,w,a),m(V.error,{origin:"result",resultCause:V.cause})})();S.try=(W,D)=>{let g=D.name,w=D.key,R=d(w),O="error"in D?()=>D.error:D.onError,M=r;return(async()=>{let x=M?performance.now():0;r&&p({type:"step_start",workflowId:i,stepId:R,stepKey:w,name:g,ts:Date.now()});try{let A=await W(),f=performance.now()-x;return p({type:"step_success",workflowId:i,stepId:R,stepKey:w,name:g,ts:Date.now(),durationMs:f}),w&&p({type:"step_complete",workflowId:i,stepKey:w,name:g,ts:Date.now(),durationMs:f,result:N(A)}),A}catch(A){let f=O(A),k=performance.now()-x,C=h(f,{origin:"throw",thrown:A});throw p({type:"step_error",workflowId:i,stepId:R,stepKey:w,name:g,ts:Date.now(),durationMs:k,error:C}),w&&p({type:"step_complete",workflowId:i,stepKey:w,name:g,ts:Date.now(),durationMs:k,result:b(f,{cause:A}),meta:{origin:"throw",thrown:A}}),n?.(f,g,a),m(f,{origin:"throw",thrown:A})}})()},S.fromResult=(W,D)=>{let g=D.name,w=D.key,R=d(w),O="error"in D?()=>D.error:D.onError,M=r;return(async()=>{let x=M?performance.now():0;r&&p({type:"step_start",workflowId:i,stepId:R,stepKey:w,name:g,ts:Date.now()});let A=await W();if(A.ok){let f=performance.now()-x;return p({type:"step_success",workflowId:i,stepId:R,stepKey:w,name:g,ts:Date.now(),durationMs:f}),w&&p({type:"step_complete",workflowId:i,stepKey:w,name:g,ts:Date.now(),durationMs:f,result:N(A.value)}),A.value}else{let f=O(A.error),k=performance.now()-x,C=h(f,{origin:"result",resultCause:A.error});throw p({type:"step_error",workflowId:i,stepId:R,stepKey:w,name:g,ts:Date.now(),durationMs:k,error:C}),w&&p({type:"step_complete",workflowId:i,stepKey:w,name:g,ts:Date.now(),durationMs:k,result:b(f,{cause:A.error}),meta:{origin:"result",resultCause:A.error}}),n?.(f,g,a),m(f,{origin:"result",resultCause:A.error})}})()},S.retry=(W,D)=>S(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}),S.withTimeout=(W,D)=>S(W,{name:D.name,key:D.key,timeout:D}),S.parallel=((...W)=>{if(typeof W[0]=="string"){let D=W[0],g=W[1];return y(D,g)}else{let D=W[0],g=W[1]??{};return v(D,g)}}),S.race=(W,D)=>{let g=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let w=performance.now(),R=!1,O={scopeId:g,type:"race",winnerId:void 0};u.push(O);let M=()=>{if(R)return;R=!0;let x=u.findIndex(A=>A.scopeId===g);x!==-1&&u.splice(x,1),p({type:"scope_end",workflowId:i,scopeId:g,ts:Date.now(),durationMs:performance.now()-w,winnerId:O.winnerId})};p({type:"scope_start",workflowId:i,scopeId:g,scopeType:"race",name:W,ts:Date.now()});try{let x=await D();if(M(),!x.ok)throw n?.(x.error,W,a),m(x.error,{origin:"result",resultCause:x.cause});return x.value}catch(x){throw M(),x}})()},S.allSettled=(W,D)=>{let g=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let w=performance.now(),R=!1;u.push({scopeId:g,type:"allSettled"});let O=()=>{if(R)return;R=!0;let M=u.findIndex(x=>x.scopeId===g);M!==-1&&u.splice(M,1),p({type:"scope_end",workflowId:i,scopeId:g,ts:Date.now(),durationMs:performance.now()-w})};p({type:"scope_start",workflowId:i,scopeId:g,scopeType:"allSettled",name:W,ts:Date.now()});try{let M=await D();if(O(),!M.ok)throw n?.(M.error,W,a),m(M.error,{origin:"result",resultCause:M.cause});return M.value}catch(M){throw O(),M}})()};let L=await e(S);return N(L)}catch(S){if(Go(S))throw S.thrown;if(T(S)){let v=S.meta.origin==="throw"?S.meta.thrown:S.meta.resultCause;if(o||n)return b(S.error,{cause:v});if(mt(S.error))return b(S.error,{cause:v});let P=I(S);return b(P,{cause:v})}if(o){let v=o(S);return n?.(v,"unexpected",a),b(v,{cause:S})}let y={type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:S}};return n?.(y,"unexpected",a),b(y,{cause:S})}}pe.strict=(e,t)=>pe(e,t);var Te=class extends Error{constructor(n,r){super(`Unwrap called on an error result: ${String(n)}`);this.error=n;this.cause=r;this.name="UnwrapError"}},vn=e=>{if(e.ok)return e.value;throw new Te(e.error,e.cause)},xn=(e,t)=>e.ok?e.value:t,Rn=(e,t)=>e.ok?e.value:t(e.error,e.cause);function bn(e,t){try{return N(e())}catch(n){return t?b(t(n),{cause:n}):b(n)}}async function Cn(e,t){try{return N(await e)}catch(n){return t?b(t(n),{cause:n}):b(n)}}async function On(e,t){try{return N(await e())}catch(n){return t?b(t(n),{cause:n}):b(n)}}function In(e,t){return e!=null?N(e):b(t())}function Pn(e,t){return e.ok?N(t(e.value)):e}function Dn(e,t){return e.ok?e:b(t(e.error),{cause:e.cause})}function An(e,t){return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Mn(e,t){return e.ok?t(e.value):e}function _n(e,t){return e.ok&&t(e.value),e}function $n(e,t){return e.ok||t(e.error,e.cause),e}function Nn(e,t,n){if(!e.ok)return e;try{return N(t(e.value))}catch(r){return b(n(r),{cause:r})}}function Wn(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 Ln(e,t,n){return e.ok?N(t(e.value)):b(n(e.error),{cause:e.cause})}function Bn(e,t){return e.ok?e:t(e.error,e.cause)}async function Un(e,t){let n=await e;return n.ok?n:t(n.error,n.cause)}function Hn(e,t){return e.ok?N(e.value):N(t(e.error,e.cause))}async function Fn(e,t){let n=await e;return n.ok?N(n.value):N(await t(n.error,n.cause))}function yt(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 Vn(e){return yt(e)!==null}function zn(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return N(t)}async function Kn(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=>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(N(o))}})}})}function jn(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):N(t)}function qn(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 Gn(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 Jn(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 Xn(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(n)}var Se=class extends Error{_tag};function ve(e,t){return class extends Se{_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:l,...u}=n,c=Object.prototype.hasOwnProperty.call(u,"cause"),d=c?u.cause:void 0;c&&delete u.cause;let p=r?.cause!==void 0;if(c&&p)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,u),c&&(this.cause=d),p&&(this.cause=r?.cause)}else r?.cause!==void 0&&(this.cause=r.cause)}}}Object.defineProperty(ve,Symbol.hasInstance,{value:e=>e instanceof Se});(o=>{function e(s){return s instanceof Error}o.isError=e;function t(s){return s instanceof Se}o.isTaggedError=t;function n(s,a){let i=s._tag,l=a[i];return l(s)}o.match=n;function r(s,a,i){let l=s._tag,u=a[l];return u?u(s):i(s)}o.matchPartial=r})(ve||={});function Yn(){let e=new Map;return{handleEvent:t=>{Fe(t)&&e.set(t.stepKey,{result:t.result,meta:t.meta})},getState:()=>({steps:new Map(e)}),clear:()=>e.clear()}}function Yo(e){return typeof e=="object"&&e!==null&&e.__cachedMeta===!0}function He(e,t,n){return b(e,{cause:{__cachedMeta:!0,originalCause:n,meta:t}})}function wt(e){return Yo(e)?e.meta:{origin:"result",resultCause:e}}function Qn(e,t){async function n(r,o){let s=typeof o=="function",a=s?r:void 0,i=s?o:r,l=crypto.randomUUID(),u=t?.createContext?.(),c={workflowId:l,onEvent:t?.onEvent,context:u!==void 0?u:void 0},d=g=>{let w=g.context!==void 0||u===void 0?g:{...g,context:u};t?.onEvent?.(w,u)},p=t?.shouldRun,m=t?.catchUnexpected;if(p){let g=performance.now();try{let w=await p(l,u),R=performance.now()-g;if(d({type:"hook_should_run",workflowId:l,ts:Date.now(),durationMs:R,result:w,skipped:!w}),!w){let O=new Error("Workflow skipped by shouldRun hook");if(m){let x=m(O);return b(x)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:O}})}}catch(w){let R=performance.now()-g;if(d({type:"hook_should_run_error",workflowId:l,ts:Date.now(),durationMs:R,error:w}),m){let M=m(w);return b(M)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:w}})}}let T=t?.onBeforeStart;if(T){let g=performance.now();try{let w=await T(l,u),R=performance.now()-g;if(d({type:"hook_before_start",workflowId:l,ts:Date.now(),durationMs:R,result:w,skipped:!w}),!w){let O=new Error("Workflow skipped by onBeforeStart hook");if(m){let x=m(O);return b(x)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:O}})}}catch(w){let R=performance.now()-g;if(d({type:"hook_before_start_error",workflowId:l,ts:Date.now(),durationMs:R,error:w}),m){let M=m(w);return b(M)}return b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:w}})}}let h=Date.now(),I=performance.now();d({type:"workflow_start",workflowId:l,ts:h});let $=t?.resumeState,E=t?.cache;if($&&!E&&(E=new Map),$&&E){let g=typeof $=="function"?await $():$;for(let[w,R]of g.steps){let{result:O,meta:M}=R;if(O.ok)E.set(w,O);else{let x=M??{origin:"result",resultCause:O.cause};E.set(w,He(O.error,x,O.cause))}}}let S=g=>typeof g=="string"?{name:g}:g??{},y=t?.onAfterStep,v=async(g,w)=>{if(!y)return;let R=performance.now();try{await y(g,w,l,u);let O=performance.now()-R;d({type:"hook_after_step",workflowId:l,stepKey:g,ts:Date.now(),durationMs:O})}catch(O){let M=performance.now()-R;throw d({type:"hook_after_step_error",workflowId:l,stepKey:g,ts:Date.now(),durationMs:M,error:O}),O}},P=g=>{if(!E&&!y)return g;let w=async(R,O)=>{let{name:M,key:x}=S(O);if(x&&E&&E.has(x)){d({type:"step_cache_hit",workflowId:l,stepKey:x,name:M,ts:Date.now()});let f=E.get(x);if(f.ok)return f.value;let k=wt(f.cause);throw ne(f.error,k)}x&&E&&d({type:"step_cache_miss",workflowId:l,stepKey:x,name:M,ts:Date.now()});let A=typeof R=="function"?R:()=>R;try{let f=await g(A,O);return x&&(E&&E.set(x,N(f)),await v(x,N(f))),f}catch(f){if(x&&re(f)){let k=f,C=k.meta.origin==="result"?k.meta.resultCause:k.meta.thrown,B=He(k.error,k.meta,C);E&&E.set(x,B),await v(x,B)}throw f}};return w.try=async(R,O)=>{let{name:M,key:x}=O;if(x&&E&&E.has(x)){d({type:"step_cache_hit",workflowId:l,stepKey:x,name:M,ts:Date.now()});let A=E.get(x);if(A.ok)return A.value;let f=wt(A.cause);throw ne(A.error,f)}x&&E&&d({type:"step_cache_miss",workflowId:l,stepKey:x,name:M,ts:Date.now()});try{let A=await g.try(R,O);return x&&(E&&E.set(x,N(A)),await v(x,N(A))),A}catch(A){if(x&&re(A)){let f=A,k=f.meta.origin==="result"?f.meta.resultCause:f.meta.thrown,C=He(f.error,f.meta,k);E&&E.set(x,C),await v(x,C)}throw A}},w.fromResult=async(R,O)=>{let{name:M,key:x}=O;if(x&&E&&E.has(x)){d({type:"step_cache_hit",workflowId:l,stepKey:x,name:M,ts:Date.now()});let A=E.get(x);if(A.ok)return A.value;let f=wt(A.cause);throw ne(A.error,f)}x&&E&&d({type:"step_cache_miss",workflowId:l,stepKey:x,name:M,ts:Date.now()});try{let A=await g.fromResult(R,O);return x&&(E&&E.set(x,N(A)),await v(x,N(A))),A}catch(A){if(x&&re(A)){let f=A,k=f.meta.origin==="result"?f.meta.resultCause:f.meta.thrown,C=He(f.error,f.meta,k);E&&E.set(x,C),await v(x,C)}throw A}},w.parallel=g.parallel,w.race=g.race,w.allSettled=g.allSettled,w.retry=(R,O)=>w(R,{name:O.name,key:O.key,retry:{attempts:O.attempts,backoff:O.backoff,initialDelay:O.initialDelay,maxDelay:O.maxDelay,jitter:O.jitter,retryOn:O.retryOn,onRetry:O.onRetry},timeout:O.timeout}),w.withTimeout=(R,O)=>w(R,{name:O.name,key:O.key,timeout:O}),w},L=s?g=>i(P(g),e,a,c):g=>i(P(g),e,c),W;if(t?.strict===!0){let g=t;W=await pe.strict(L,{onError:g.onError,onEvent:g.onEvent,catchUnexpected:g.catchUnexpected,workflowId:l,context:u})}else{let g=t;W=await pe(L,{onError:g?.onError??(()=>{}),onEvent:g?.onEvent,workflowId:l,context:u})}let D=performance.now()-I;return W.ok?d({type:"workflow_success",workflowId:l,ts:Date.now(),durationMs:D}):d({type:"workflow_error",workflowId:l,ts:Date.now(),durationMs:D,error:W.error}),W}return n}function Fe(e){return e.type==="step_complete"}function se(e){return typeof e=="object"&&e!==null&&e.type==="PENDING_APPROVAL"}function Zn(e){return typeof e=="object"&&e!==null&&e.type==="APPROVAL_REJECTED"}function er(e,t){return b({type:"PENDING_APPROVAL",stepKey:e,reason:t?.reason,metadata:t?.metadata})}function tr(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 N(t.value)}}}function Ve(e,t){let n=new Map(e.steps);return n.set(t.stepKey,{result:N(t.value)}),{steps:n}}function nr(e,t){let n=new Map(e.steps);return n.delete(t),{steps:n}}function rr(e,t){let n=e.steps.get(t);return!n||n.result.ok?!1:se(n.result.error)}function or(e){let t=[];for(let[n,r]of e.steps)!r.result.ok&&se(r.result.error)&&t.push(n);return t}function xe(){let e=new Map;return{handleEvent:t=>{Fe(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&&se(t.result.error))return!0;return!1},getPendingApprovals:()=>{let t=[];for(let[n,r]of e)!r.result.ok&&se(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 sr(){return`decision_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function ar(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 ze(e,t,n,r){if(e)return t();let o=sr();ar(r,n,o)}function ht(e,t,n,r){return ze(!e,t,n,r)}function Ke(e,t,n,r,o){if(e)return t();let s=sr();return ar(o,r,s),n}function kt(e,t,n,r,o){return Ke(!e,t,n,r,o)}function ir(e){return{when:(t,n,r)=>ze(t,n,r,e),unless:(t,n,r)=>ht(t,n,r,e),whenOr:(t,n,r,o)=>Ke(t,n,r,o,e),unlessOr:(t,n,r,o)=>kt(t,n,r,o,e)}}var ke=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 ur(e){return typeof e=="object"&&e!==null&&e.type==="CIRCUIT_OPEN"}var Qo={failureThreshold:5,resetTimeout:3e4,windowSize:6e4,halfOpenMax:3};function cr(e,t){let n={...Qo,...t},r="CLOSED",o=[],s=null,a=null,i=0,l=0;function u(){let h=Date.now();o=o.filter(I=>h-I.timestamp<n.windowSize)}function c(h){if(r!==h){let I=r;r=h,h==="HALF_OPEN"&&(l=0),n.onStateChange?.(I,h,e)}}function d(){return r!=="OPEN"||s===null?!1:Date.now()-s>=n.resetTimeout?(c("HALF_OPEN"),!0):!1}function p(){a=Date.now(),i++,r==="HALF_OPEN"&&(l++,l>=n.halfOpenMax&&(c("CLOSED"),o=[]))}function m(h){let I=Date.now();s=I,u(),o.push({timestamp:I,error:h}),(r==="HALF_OPEN"||r==="CLOSED"&&o.length>=n.failureThreshold)&&c("OPEN")}function T(){if(r==="CLOSED")return 0;if(r==="OPEN"){if(d())return 0;let h=Date.now(),I=s?h-s:0;return Math.max(0,n.resetTimeout-I)}return 0}return{async execute(h,I){let $=T();if($>0)throw new ke({circuitName:e,state:r,retryAfterMs:$});try{let E=await h();return p(),E}catch(E){throw m(E),E}},async executeResult(h,I){let $=T();if($>0)return b(new ke({circuitName:e,state:r,retryAfterMs:$}));try{let E=await h();return E.ok?p():m(E.error),E}catch(E){throw m(E),E}},getState(){return r==="OPEN"&&d(),r},getStats(){return u(),{state:this.getState(),failureCount:o.length,successCount:i,lastFailureTime:s,lastSuccessTime:a,halfOpenSuccesses:l}},reset(){c("CLOSED"),o=[],l=0},forceOpen(){s=Date.now(),c("OPEN")},recordSuccess(){p()},recordFailure(h){m(h??new Error("Manual failure"))}}}var lr={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 pr(e){return typeof e=="object"&&e!==null&&e.type==="SAGA_COMPENSATION_ERROR"}function dr(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 c=[];a({type:"saga_compensation_start",sagaId:r,ts:Date.now(),stepCount:s.length});let d=performance.now();for(let p=s.length-1;p>=0;p--){let m=s[p];try{await m.compensate(m.value),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!0})}catch(T){c.push({stepName:m.name,error:T}),a({type:"saga_compensation_step",sagaId:r,stepName:m.name,ts:Date.now(),success:!1,error:T})}}return a({type:"saga_compensation_end",sagaId:r,ts:Date.now(),durationMs:performance.now()-d,success:c.length===0,failedCount:c.length}),c}let l={async step(u,c){let d=await u();if(d.ok)return c?.compensate&&s.push({name:c.name,value:d.value,compensate:c.compensate}),d.value;throw ne(d.error,{origin:"result",resultCause:d.cause})},async tryStep(u,c){let d="error"in c?()=>c.error:c.onError;try{let p=await u();return c.compensate&&s.push({name:c.name,value:p,compensate:c.compensate}),p}catch(p){let m=d(p);throw ne(m,{origin:"throw",thrown:p})}},getCompensations(){return s.map(u=>({name:u.name,hasValue:u.value!==void 0}))}};try{let u=await n(l,e),c=performance.now()-o;return a({type:"saga_success",sagaId:r,ts:Date.now(),durationMs:c}),N(u)}catch(u){let c=performance.now()-o,d;re(u)?d=u.error:d=u,a({type:"saga_error",sagaId:r,ts:Date.now(),durationMs:c,error:d});let p=await i(d);if(p.length>0){let m={type:"SAGA_COMPENSATION_ERROR",originalError:d,compensationErrors:p};if(t?.onError?.(m),t?.throwOnCompensationFailure)throw m;return b(m)}return t?.onError?.(d),re(u)?b(d):b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:u}})}}}async function fr(e,t){let n=crypto.randomUUID(),r=performance.now(),o=[],s=l=>{t?.onEvent?.(l)};s({type:"saga_start",sagaId:n,ts:Date.now()});async function a(l){let u=[];s({type:"saga_compensation_start",sagaId:n,ts:Date.now(),stepCount:o.length});let c=performance.now();for(let d=o.length-1;d>=0;d--){let p=o[d];try{await p.compensate(p.value),s({type:"saga_compensation_step",sagaId:n,stepName:p.name,ts:Date.now(),success:!0})}catch(m){u.push({stepName:p.name,error:m}),s({type:"saga_compensation_step",sagaId:n,stepName:p.name,ts:Date.now(),success:!1,error:m})}}return s({type:"saga_compensation_end",sagaId:n,ts:Date.now(),durationMs:performance.now()-c,success:u.length===0,failedCount:u.length}),u}let i={async step(l,u){let c=await l();if(c.ok)return u?.compensate&&o.push({name:u.name,value:c.value,compensate:u.compensate}),c.value;throw ne(c.error,{origin:"result",resultCause:c.cause})},async tryStep(l,u){let c="error"in u?()=>u.error:u.onError;try{let d=await l();return u.compensate&&o.push({name:u.name,value:d,compensate:u.compensate}),d}catch(d){let p=c(d);throw ne(p,{origin:"throw",thrown:d})}},getCompensations(){return o.map(l=>({name:l.name,hasValue:l.value!==void 0}))}};try{let l=await e(i),u=performance.now()-r;return s({type:"saga_success",sagaId:n,ts:Date.now(),durationMs:u}),N(l)}catch(l){let u=performance.now()-r,c;re(l)?c=l.error:c=l,s({type:"saga_error",sagaId:n,ts:Date.now(),durationMs:u,error:c});let d=await a(c);if(d.length>0){let p={type:"SAGA_COMPENSATION_ERROR",originalError:c,compensationErrors:d};if(t?.onError?.(p),t?.throwOnCompensationFailure)throw p;return b(p)}return t?.onError?.(c),re(l)?b(c):b({type:"UNEXPECTED_ERROR",cause:{type:"UNCAUGHT_EXCEPTION",thrown:l}})}}function mr(e){return typeof e=="object"&&e!==null&&e.type==="RATE_LIMIT_EXCEEDED"}function Et(e){return typeof e=="object"&&e!==null&&e.type==="QUEUE_FULL"}function Tt(e,t){let{maxPerSecond:n,strategy:r="wait"}=t,o=t.burstCapacity??n*2,s=o,a=Date.now(),i=n/1e3,l=[];function u(){let p=Date.now(),T=(p-a)*i;s=Math.min(o,s+T),a=p}function c(){if(u(),s>=1)return s-=1,0;let p=1-s;return Math.ceil(p/i)}async function d(){return new Promise(p=>{let m=()=>{let T=c();T===0?p():(l.push(m),setTimeout(()=>{let h=l.indexOf(m);h!==-1&&(l.splice(h,1),m())},T))};m()})}return{async execute(p){let m=c();if(m>0){if(r==="reject")throw{type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m};await d()}return p()},async executeResult(p){let m=c();if(m>0){if(r==="reject")return b({type:"RATE_LIMIT_EXCEEDED",limiterName:e,retryAfterMs:m});await d()}return p()},getStats(){return u(),{availableTokens:Math.floor(s),maxTokens:o,tokensPerSecond:n,waitingCount:l.length}},reset(){s=o,a=Date.now(),l.length=0}}}function Re(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,c)=>{a.push({resolve:u,reject:c})})}function l(){s--,a.length>0&&s<n&&(s++,a.shift()?.resolve())}return{async execute(u){await i();try{return await u()}finally{l()}},async executeAll(u){let c=new Array(u.length),d=[];for(let p=0;p<u.length;p++){let m=p,T=this.execute(u[m]).then(h=>{c[m]=h});d.push(T)}return await Promise.all(d),c},async executeResult(u){try{await i()}catch(c){if(Et(c))return b(c);throw c}try{return await u()}finally{l()}},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 gr(e,t){let n=t.rate?Tt(`${e}-rate`,t.rate):void 0,r=t.concurrency?Re(`${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 yr={api:{maxPerSecond:10,burstCapacity:20,strategy:"wait"},database:{maxConcurrent:10,strategy:"queue",maxQueueSize:100},external:{maxPerSecond:5,burstCapacity:10,strategy:"wait"}};function wr(e){return typeof e=="object"&&e!==null&&e.type==="MIGRATION_ERROR"}function hr(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 b({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 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 N({version:o,state:r})}function kr(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 b({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 Er(e,t){return{version:t,state:e}}function Tr(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 Sr(e){return JSON.stringify({version:e.version,state:{steps:Array.from(e.state.steps.entries())}})}function vr(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 xr(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 Rr(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 br(e){return async t=>{let n=t;for(let r of e)n=await r(n);return n}}function Cr(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},l={stepDurations:[],retryCount:0,errorCount:0,cacheHits:0,cacheMisses:0,defaultAttributes:o};function u(d,p){return d?`${t}.${d}`:p?`${t}.step.${p}`:`${t}.step`}function c(d){switch(d.type){case"workflow_start":i.workflows.set(d.workflowId,{workflowId:d.workflowId,startTime:d.ts});break;case"workflow_success":case"workflow_error":i.workflows.get(d.workflowId)&&i.workflows.delete(d.workflowId),d.type==="workflow_error"&&a&&l.errorCount++;break;case"step_start":if(n){let p=d.stepId;i.steps.set(p,{workflowId:d.workflowId,stepId:p,stepKey:d.stepKey,name:d.name,startTime:d.ts})}break;case"step_success":case"step_error":if(n){let p=d.stepId,m=i.steps.get(p);m&&(i.steps.delete(p),r&&l.stepDurations.push({name:u(m.name,m.stepKey),durationMs:d.durationMs,success:d.type==="step_success",attributes:Object.keys(o).length>0?{...o}:void 0}),d.type==="step_error"&&a&&l.errorCount++)}break;case"step_retry":s&&l.retryCount++;break;case"step_cache_hit":l.cacheHits++;break;case"step_cache_miss":l.cacheMisses++;break;default:break}}return{handleEvent:c,getActiveSpansCount(){return{workflows:i.workflows.size,steps:i.steps.size}},getMetrics(){return{...l,stepDurations:[...l.stepDurations]}},reset(){i.workflows.clear(),i.steps.clear(),l.stepDurations.length=0,l.retryCount=0,l.errorCount=0,l.cacheHits=0,l.cacheMisses=0}}}function Or(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 Ir(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[l,u]of Object.entries(s))i.setAttribute(l,u);return o()})}}function Pr(e){return typeof e=="object"&&e!==null&&e.type==="VALIDATION_ERROR"}function je(e){return{status:400,body:{error:{type:e.type,message:e.message,details:e.field?{field:e.field}:e.details}}}}function qe(e){return{status:500,body:{error:{type:"INTERNAL_ERROR",message:"An unexpected error occurred"}}}}function Dr(e,t,n){let{validateInput:r,mapResult:o,mapValidationError:s=je,mapUnexpectedError:a=qe,beforeValidation:i,afterResponse:l}=n;return async u=>{try{let c=i?await i(u):u,d=await r(c);if(!he(d)){let T=s(d.error,c);return l?await l(T,c):T}let p=await e(d.value,(T,h)=>t(T,h,d.value)),m=o(p,c);return l?await l(m,c):m}catch(c){let d=a(c,u);return l?await l(d,u):d}}}function Ar(e){let{validateInput:t,handler:n,mapResult:r,mapValidationError:o=je,mapUnexpectedError:s=qe}=e;return async a=>{try{let i=await t(a);if(!he(i))return o(i.error,a);let l=await n(i.value,a);return r(l,a)}catch(i){return s(i,a)}}}function Mr(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 vt(e){return{method:e.method,path:e.path,headers:e.headers,body:e.body,query:e.query,params:e.params,raw:e}}function xt(e,t){t.headers&&e.set(t.headers),e.status(t.status).json(t.body)}function _r(e){return async(t,n)=>{let r=vt(t),o=await e(r);xt(n,o)}}function Rt(e,t,n){return{type:"VALIDATION_ERROR",message:e,field:t,details:n}}function $r(e){return t=>{for(let n of e)if(t[n]===void 0||t[n]===null||t[n]==="")return b(Rt(`Missing required field: ${n}`,n));return N(void 0)}}function Nr(...e){return t=>{for(let n of e){let r=n(t);if(!r.ok)return r}return N(void 0)}}function Wr(e,t,n){let{validatePayload:r,mapResult:o}=n;return async s=>{try{let a=r(s);if(!he(a))return{success:!1,ack:!0,error:{type:a.error.type,message:a.error.message,retryable:!1}};let i=await e(a.value,(l,u)=>t(l,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 G(...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 Lr(...e){let t=G(...e);return n=>G(t,typeof n=="string"?{name:n}:n??{})}function Br(e,...t){return{name:e,policy:G(...t)}}function Z(e){return{retry:e}}var fe={none:Z({attempts:1}),transient:Z({attempts:3,backoff:"exponential",initialDelay:100,maxDelay:1e3,jitter:!0}),standard:Z({attempts:3,backoff:"exponential",initialDelay:200,maxDelay:5e3,jitter:!0}),aggressive:Z({attempts:5,backoff:"exponential",initialDelay:500,maxDelay:3e4,jitter:!0}),fixed:(e,t)=>Z({attempts:e,backoff:"fixed",initialDelay:t,jitter:!1}),linear:(e,t)=>Z({attempts:e,backoff:"linear",initialDelay:t,jitter:!0}),custom:e=>Z({backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,...e})};function Q(e){return{timeout:e}}var de={none:{},fast:Q({ms:1e3}),api:Q({ms:5e3}),extended:Q({ms:3e4}),long:Q({ms:12e4}),ms:e=>Q({ms:e}),seconds:e=>Q({ms:e*1e3}),withError:(e,t)=>Q({ms:e,error:t}),withSignal:e=>Q({ms:e,signal:!0})},Ur={httpApi:G(de.api,fe.standard),database:G(de.extended,Z({attempts:2,backoff:"exponential",initialDelay:100,maxDelay:2e3,jitter:!0})),cache:G(de.fast,fe.none),messageQueue:G(de.extended,fe.aggressive),fileSystem:G(de.long,fe.standard),rateLimited:G(Q({ms:1e4}),Z({attempts:5,backoff:"linear",initialDelay:1e3,maxDelay:1e4,jitter:!0}))};function bt(e,t){return G(e,typeof t=="string"?{name:t}:t??{})}function Hr(e,t){let n=typeof t=="string"?{name:t}:t??{};return G(...e,n)}function Fr(e,t,n={}){return e?t:n}function Vr(e,t=process.env.NODE_ENV??"development",n={}){return e[t]??n}function zr(){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 bt(r,n)}}}function Kr(){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(Q({ms:n})),t},retry(n){return e.push(Z(n)),t},retries(n){return e.push(fe.custom({attempts:n})),t},build(){return G(...e)}};return t}function be(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 Ce(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 Oe(e){return e.ok?{ok:!0,value:e.value}:{ok:!1,error:e.error,cause:e.cause!==void 0?be(e.cause):void 0}}function Ie(e){if(e.ok)return N(e.value);let t=e.cause?Ce(e.cause):void 0;return b(e.error,t!==void 0?{cause:t}:void 0)}function Ct(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause!==void 0?be(e.resultCause):void 0}:{origin:"throw",thrown:be(e.thrown)}}function Ot(e){return e.origin==="result"?{origin:"result",resultCause:e.resultCause?Ce(e.resultCause):void 0}:{origin:"throw",thrown:e.thrown?Ce(e.thrown):void 0}}function It(e){return{result:Oe(e.result),meta:e.meta?Ct(e.meta):void 0}}function Pt(e){return{result:Ie(e.result),meta:e.meta?Ot(e.meta):void 0}}function Ge(e,t){let n={};for(let[r,o]of e.steps)n[r]=It(o);return{version:1,entries:n,metadata:t}}function Je(e){let t=new Map;for(let[n,r]of Object.entries(e.entries))t.set(n,Pt(r));return{steps:t}}function jr(e,t){return JSON.stringify(Ge(e,t))}function qr(e){let t=JSON.parse(e);return Je(t)}function Gr(e={}){let{maxSize:t,ttl:n}=e,r=new Map,o=i=>n?Date.now()-i>n:!1,s=()=>{if(n)for(let[i,l]of r)o(l.timestamp)&&r.delete(i)},a=()=>{if(!t||r.size<t)return;let i,l=1/0;for(let[u,c]of r)c.timestamp<l&&(l=c.timestamp,i=u);i&&r.delete(i)};return{get(i){s();let l=r.get(i);if(l){if(o(l.timestamp)){r.delete(i);return}return l.result}},set(i,l){s(),a(),r.set(i,{result:l,timestamp:Date.now()})},has(i){s();let l=r.get(i);return l?o(l.timestamp)?(r.delete(i),!1):!0:!1},delete(i){return r.delete(i)},clear(){r.clear()}}}function Jr(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 l=await r.readFile(i),u=JSON.parse(l),c=Ie(u);return s.set(a,c),c}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let l=o(a),u=Oe(i);await r.writeFile(l,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 Xr(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 l=JSON.parse(i),u=Ie(l);return s.set(a,u),u}catch{return}},set(a,i){s.set(a,i)},async setAsync(a,i){let l=Oe(i);await t.set(o(a),JSON.stringify(l),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 Yr(e,t="workflow:state:"){let n=r=>`${t}${r}`;return{async save(r,o,s){let a=Ge(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 Je(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 Qr(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 Dt(){return`node_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Zo(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 At(e,t={}){if(Zo(e))return e;let{minOverlapMs:n=0,maxGapMs:r=5}=t,o=[],s=[];for(let u=0;u<e.length;u++){let c=e[u];c.type==="step"&&c.startTs!==void 0?o.push({node:c,startTs:c.startTs,endTs:c.endTs??c.startTs+(c.durationMs??0),originalIndex:u}):s.push({node:c,originalIndex:u})}if(o.length<=1)return e;o.sort((u,c)=>u.startTs-c.startTs);let a=[],i=[o[0]];for(let u=1;u<o.length;u++){let c=o[u],d=Math.min(...i.map(I=>I.startTs)),p=Math.max(...i.map(I=>I.endTs)),m=c.startTs<=d+r,T=c.startTs<p;if(!m&&!T){a.push(i),i=[c];continue}let h=T?Math.min(c.endTs,p)-c.startTs:0;m||h>=n?i.push(c):(a.push(i),i=[c])}a.push(i);let l=[];for(let u of a){let c=Math.min(...u.map(d=>d.originalIndex));if(u.length===1)l.push({node:u[0].node,position:c});else{let d=u.map(h=>h.node),p=Math.min(...u.map(h=>h.startTs)),m=Math.max(...u.map(h=>h.endTs)),T={type:"parallel",id:`detected_parallel_${p}`,name:`${d.length} parallel steps`,state:es(d),mode:"all",children:d,startTs:p,endTs:m,durationMs:m-p};l.push({node:T,position:c})}}for(let{node:u,originalIndex:c}of s)l.push({node:u,position:c});return l.sort((u,c)=>u.position-c.position),l.map(u=>u.node)}function es(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 Pe(e={}){let{detectParallel:t=!0,parallelDetection:n,enableSnapshots:r=!1,maxSnapshots:o=1e3}=e,s,a,i="pending",l,u,c=new Map,d=[],p=[],m=[],T=Date.now(),h=T,I={onAfterStep:new Map},$=[],E=0;function S(f){return f.stepId??f.stepKey??f.name??Dt()}function y(f){if(p.length>0){let k=p[p.length-1];for(let B of k.branches.values())if(B.taken){B.children.push(f),h=Date.now();return}let C=Array.from(k.branches.values())[0];if(C){C.children.push(f),h=Date.now();return}}d.length>0?d[d.length-1].children.push(f):m.push(f),h=Date.now()}function v(f){if(!r)return;let k=w(),C=new Map;for(let[z,V]of c)C.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(f),ir:structuredClone(k),timestamp:Date.now(),activeSteps:C};$.push(B),$.length>o&&$.shift(),E++}function P(f){switch(f.type){case"workflow_start":s=f.workflowId,a=f.ts,i="running",T=Date.now(),h=T,I.onAfterStep=new Map;break;case"workflow_success":i="success",u=f.durationMs,h=Date.now();break;case"workflow_error":i="error",l=f.error,u=f.durationMs,h=Date.now();break;case"step_start":{let k=S(f);c.set(k,{id:k,name:f.name,key:f.stepKey,startTs:f.ts,retryCount:0,timedOut:!1}),h=Date.now();break}case"step_success":{let k=S(f),C=c.get(k);if(C){let B={type:"step",id:C.id,name:C.name,key:C.key,state:"success",startTs:C.startTs,endTs:f.ts,durationMs:f.durationMs,...C.retryCount>0&&{retryCount:C.retryCount},...C.timedOut&&{timedOut:!0,timeoutMs:C.timeoutMs}};y(B),c.delete(k)}break}case"step_error":{let k=S(f),C=c.get(k);if(C){let B={type:"step",id:C.id,name:C.name,key:C.key,state:"error",startTs:C.startTs,endTs:f.ts,durationMs:f.durationMs,error:f.error,...C.retryCount>0&&{retryCount:C.retryCount},...C.timedOut&&{timedOut:!0,timeoutMs:C.timeoutMs}};y(B),c.delete(k)}break}case"step_aborted":{let k=S(f),C=c.get(k);if(C){let B={type:"step",id:C.id,name:C.name,key:C.key,state:"aborted",startTs:C.startTs,endTs:f.ts,durationMs:f.durationMs,...C.retryCount>0&&{retryCount:C.retryCount},...C.timedOut&&{timedOut:!0,timeoutMs:C.timeoutMs}};y(B),c.delete(k)}break}case"step_cache_hit":{let C={type:"step",id:S(f),name:f.name,key:f.stepKey,state:"cached",startTs:f.ts,endTs:f.ts,durationMs:0};y(C);break}case"step_cache_miss":break;case"step_complete":break;case"step_timeout":{let k=S(f),C=c.get(k);C&&(C.timedOut=!0,C.timeoutMs=f.timeoutMs),h=Date.now();break}case"step_retry":{let k=S(f),C=c.get(k);C&&(C.retryCount=(f.attempt??1)-1),h=Date.now();break}case"step_retries_exhausted":h=Date.now();break;case"step_skipped":{let C={type:"step",id:S(f),name:f.name,key:f.stepKey,state:"skipped",startTs:f.ts,endTs:f.ts,durationMs:0};y(C);break}case"hook_should_run":{let k={type:"shouldRun",state:"success",ts:f.ts,durationMs:f.durationMs,context:{result:f.result,skipped:f.skipped}};I.shouldRun=k,h=Date.now();break}case"hook_should_run_error":{let k={type:"shouldRun",state:"error",ts:f.ts,durationMs:f.durationMs,error:f.error};I.shouldRun=k,h=Date.now();break}case"hook_before_start":{let k={type:"onBeforeStart",state:"success",ts:f.ts,durationMs:f.durationMs,context:{result:f.result,skipped:f.skipped}};I.onBeforeStart=k,h=Date.now();break}case"hook_before_start_error":{let k={type:"onBeforeStart",state:"error",ts:f.ts,durationMs:f.durationMs,error:f.error};I.onBeforeStart=k,h=Date.now();break}case"hook_after_step":{let k={type:"onAfterStep",state:"success",ts:f.ts,durationMs:f.durationMs,context:{stepKey:f.stepKey}};I.onAfterStep.set(f.stepKey,k),h=Date.now();break}case"hook_after_step_error":{let k={type:"onAfterStep",state:"error",ts:f.ts,durationMs:f.durationMs,error:f.error,context:{stepKey:f.stepKey}};I.onAfterStep.set(f.stepKey,k),h=Date.now();break}}v(f)}function L(f){if(f.type==="scope_start")d.push({id:f.scopeId,name:f.name,type:f.scopeType,startTs:f.ts,children:[]}),h=Date.now();else if(f.type==="scope_end"){let k=d.pop();if(k){let C=k.type==="race"?{type:"race",id:k.id,name:k.name,state:D(k.children),startTs:k.startTs,endTs:f.ts,durationMs:f.durationMs,children:k.children,winnerId:f.winnerId}:{type:"parallel",id:k.id,name:k.name,state:D(k.children),startTs:k.startTs,endTs:f.ts,durationMs:f.durationMs,children:k.children,mode:k.type==="allSettled"?"allSettled":"all"};y(C)}}}function W(f){if(f.type==="decision_start")p.push({id:f.decisionId,name:f.name,condition:f.condition,decisionValue:f.decisionValue,startTs:f.ts,branches:new Map}),h=Date.now();else if(f.type==="decision_branch"){let k=p[p.length-1];if(k&&k.id===f.decisionId){let C=f.branchLabel,B=k.branches.get(C);B?B.taken=f.taken:k.branches.set(C,{label:f.branchLabel,condition:f.condition,taken:f.taken,children:[]}),h=Date.now()}}else if(f.type==="decision_end"){let k=p.pop();if(k&&k.id===f.decisionId){let C=Array.from(k.branches.values()),B={type:"decision",id:k.id,name:k.name,state:D(C.flatMap(z=>z.taken?z.children:[])),startTs:k.startTs,endTs:f.ts,durationMs:f.durationMs,condition:k.condition,decisionValue:k.decisionValue,branchTaken:f.branchTaken??k.branchTaken,branches:C};y(B)}}}function D(f){return f.length===0?"success":f.some(z=>z.state==="error")?"error":f.every(z=>z.state==="success"||z.state==="cached")?"success":f.some(z=>z.state==="running")?"running":"pending"}function g(){let f=[...m];for(let[,k]of c)f.push({type:"step",id:k.id,name:k.name,key:k.key,state:"running",startTs:k.startTs,...k.retryCount>0&&{retryCount:k.retryCount},...k.timedOut&&{timedOut:!0,timeoutMs:k.timeoutMs}});return f}function w(){let f=g();t&&(f=At(f,n));let k={type:"workflow",id:s??Dt(),workflowId:s??"unknown",state:i,startTs:a,durationMs:u,children:f,error:l},C=I.shouldRun!==void 0||I.onBeforeStart!==void 0||I.onAfterStep.size>0;return{root:k,metadata:{createdAt:T,lastUpdatedAt:h},...C&&{hooks:I}}}function R(){s=void 0,a=void 0,i="pending",l=void 0,u=void 0,c.clear(),d.length=0,p.length=0,m=[],T=Date.now(),h=T,I={onAfterStep:new Map},$.length=0,E=0}function O(){return[...$]}function M(f){return $[f]}function x(f){return $[f]?.ir}function A(){$.length=0,E=0}return{handleEvent:P,handleScopeEvent:L,handleDecisionEvent:W,getIR:w,reset:R,getSnapshots:O,getSnapshotAt:M,getIRAt:x,clearSnapshots:A,get hasActiveSteps(){return c.size>0},get state(){return i},get snapshotCount(){return $.length},get snapshotsEnabled(){return r}}}function ce(e){return e.type==="step"}function De(e){return e.type==="parallel"}function Ae(e){return e.type==="race"}function Me(e){return e.type==="decision"}var Mt="\x1B[0m",ts="\x1B[1m",eo="\x1B[2m",ns="\x1B[31m",rs="\x1B[32m",os="\x1B[33m",ss="\x1B[34m",Zr="\x1B[90m",as="\x1B[37m";function le(e,t){return t?`${t}${e}${Mt}`:e}function _e(e){return`${ts}${e}${Mt}`}function H(e){return`${eo}${e}${Mt}`}var me={pending:as,running:os,success:rs,error:ns,aborted:Zr,cached:ss,skipped:eo+Zr};function is(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 $e(e,t){let n=is(e);return le(n,t[e])}function _t(e,t,n){return le(e,n[t])}function to(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"},Ee={cold:"\x1B[34m",cool:"\x1B[36m",neutral:"",warm:"\x1B[33m",hot:"\x1B[31m",critical:"\x1B[41m"},us="\x1B[0m";function cs(e){return e<.2?Ee.cold:e<.4?Ee.cool:e<.6?Ee.neutral:e<.8?Ee.warm:e<.95?Ee.hot:Ee.critical}function no(e,t){let n=cs(t);return n?`${n}${e}${us}`:e}var ro="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function ls(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,l=Math.floor(i*(ro.length-1));return ro[l]}).join("")}function $t(e,t){let n=to(e).length,r=Math.max(0,t-n);return e+" ".repeat(r)}function ps(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 oo(e,t,n){let r=e.state==="success"?le("\u2699",n.success):le("\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 ds(e,t){let n=[];return e.shouldRun&&n.push(oo(e.shouldRun,"shouldRun",t)),e.onBeforeStart&&n.push(oo(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 Ne(){return{name:"ascii",supportsLive:!0,render(e,t){let n={...me,...t.colors},r=t.terminalWidth??60,o=r-4,s=[],a=e.root.name??"workflow",i=_e(a);if(s.push(`${_.topLeft}${ps(r-2,i)}${_.topRight}`),s.push(`${_.vertical}${" ".repeat(r-2)}${_.vertical}`),e.hooks){let u=ds(e.hooks,n);for(let c of u)s.push(`${_.vertical} ${$t(c,o)}${_.vertical}`)}let l=Xe(e.root.children,t,n,0,e.hooks);for(let u of l)s.push(`${_.vertical} ${$t(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",d=`${_t(u,e.root.state,n)} in ${K(e.root.durationMs)}`;s.push(`${_.vertical} ${$t(d,o)}${_.vertical}`),s.push(`${_.vertical}${" ".repeat(r-2)}${_.vertical}`)}return s.push(`${_.bottomLeft}${_.horizontal.repeat(r-2)}${_.bottomRight}`),s.join(`
|
|
2
|
+
`)}}}function Xe(e,t,n,r,o){let s=[];for(let a of e)ce(a)?s.push(Nt(a,t,n,o)):De(a)?s.push(...fs(a,t,n,r,o)):Ae(a)?s.push(...ms(a,t,n,r,o)):Me(a)&&s.push(...gs(a,t,n,r,o));return s}function Nt(e,t,n,r){let o=$e(e.state,n),s=e.name??e.key??"step",a=t,i=e.name??e.id,l=a.showHeatmap&&a.heatmapData?a.heatmapData.heat.get(e.id)??a.heatmapData.heat.get(i):void 0,u;l!==void 0?u=no(s,l):u=_t(s,e.state,n);let c=`${o} ${u}`;if(t.showKeys&&e.key&&(c+=H(` [key: ${e.key}]`)),e.input!==void 0){let d=typeof e.input=="string"?e.input:JSON.stringify(e.input).slice(0,30);c+=H(` [in: ${d}${d.length>=30?"...":""}]`)}if(e.output!==void 0&&e.state==="success"){let d=typeof e.output=="string"?e.output:JSON.stringify(e.output).slice(0,30);c+=H(` [out: ${d}${d.length>=30?"...":""}]`)}if(t.showTimings&&e.durationMs!==void 0){let d=K(e.durationMs),p=l!==void 0?no(`[${d}]`,l):H(`[${d}]`);c+=` ${p}`}if(a.showSparklines&&a.timingHistory){let d=a.timingHistory.get(i);d&&d.length>1&&(c+=` ${H(ls(d))}`)}if(e.retryCount!==void 0&&e.retryCount>0&&(c+=H(` [${e.retryCount} ${e.retryCount===1?"retry":"retries"}]`)),e.timedOut){let d=e.timeoutMs!==void 0?` ${e.timeoutMs}ms`:"";c+=H(` [timeout${d}]`)}if(r&&e.key&&r.onAfterStep.has(e.key)){let d=r.onAfterStep.get(e.key),p=d.state==="success"?le("\u2699",n.success):le("\u26A0",n.error),m=d.durationMs!==void 0?H(` ${K(d.durationMs)}`):"";c+=` ${p}${m}`}return c}function fs(e,t,n,r,o){let s=[],a=" ".repeat(r),i=$e(e.state,n),l=e.name??"parallel",u=e.mode==="allSettled"?" (allSettled)":"";if(s.push(`${a}${_.teeRight}${_.teeDown}${_.horizontal} ${i} ${_e(l)}${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 c=0;c<e.children.length;c++){let d=e.children[c],m=c===e.children.length-1?`${a}${_.vertical} ${_.bottomLeft}`:`${a}${_.vertical} ${_.teeRight}`;if(ce(d))s.push(`${m} ${Nt(d,t,n,o)}`);else{let T=Xe([d],t,n,r+1,o);for(let h of T)s.push(`${a}${_.vertical} ${h}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${_.bottomLeft}${_.horizontal}${_.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function ms(e,t,n,r,o){let s=[],a=" ".repeat(r),i=$e(e.state,n),l=e.name??"race";if(s.push(`${a}${_.teeRight}\u26A1 ${i} ${_e(l)}`),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 c=e.children[u],p=u===e.children.length-1?`${a}${_.vertical} ${_.bottomLeft}`:`${a}${_.vertical} ${_.teeRight}`,T=e.winnerId&&c.id===e.winnerId?H(" (winner)"):"";if(ce(c))s.push(`${p} ${Nt(c,t,n,o)}${T}`);else{let h=Xe([c],t,n,r+1,o);for(let I of h)s.push(`${a}${_.vertical} ${I}`)}}return t.showTimings&&e.durationMs!==void 0&&s.push(`${a}${_.bottomLeft}${_.horizontal}${_.horizontal} ${H(`[${K(e.durationMs)}]`)}`),s}function gs(e,t,n,r,o){let s=[],a=" ".repeat(r),i=$e(e.state,n),l=e.name??"decision",u=e.condition?H(` (${e.condition})`):"",c=e.decisionValue!==void 0?H(` = ${String(e.decisionValue)}`):"",d=e.branchTaken!==void 0?H(` \u2192 ${String(e.branchTaken)}`):"";s.push(`${a}${_.teeRight}${_.teeDown}${_.horizontal} ${i} ${_e(l)}${u}${c}${d}`);for(let p=0;p<e.branches.length;p++){let m=e.branches[p],h=p===e.branches.length-1?`${a}${_.vertical} ${_.bottomLeft}`:`${a}${_.vertical} ${_.teeRight}`,I=m.taken?"\u2713":"\u2298",$=m.taken?n.success:n.skipped,E=le(`${I} ${m.label}`,$),S=m.condition?H(` (${m.condition})`):"";if(s.push(`${h} ${E}${S}`),m.children.length>0){let y=Xe(m.children,t,n,r+1,o);for(let v of y)s.push(`${a}${_.vertical} ${v}`)}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 Wt(e){return e<.2?"cold":e<.4?"cool":e<.6?"neutral":e<.8?"warm":e<.95?"hot":"critical"}function ys(){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 ws(){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 hs(e){return`heat_${e}`}function ks(){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 Es(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)}`:"",l=e.shouldRun.context?.skipped?"\\nskipped workflow":e.shouldRun.context?.result===!0?"\\nproceed":"";t.push(` ${o}[["${a} shouldRun${l}${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)}`:"",l=e.onBeforeStart.context?.skipped?"\\nskipped workflow":"";t.push(` ${o}[["${a} onBeforeStart${l}${i}"]]:::${s}`),r&&t.push(` ${r} --> ${o}`),r=o}return{lastHookId:r}}var so=0;function We(e="node"){return`${e}_${++so}`}function Ts(){so=0}function J(e){return e.replace(/[{}[\]()]/g,"").replace(/[<>]/g,"").replace(/"/g,"'").trim()}function ao(e){return J(e).replace(/[[\]]/g,"")}function Ye(){return{name:"mermaid",supportsLive:!1,render(e,t){Ts();let n=[],r=t;n.push("flowchart TD");let o;e.hooks&&(o=Es(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 l=Qe(i,t,n,r,e.hooks);n.push(` ${a} --> ${l.entryId}`),a=l.exitId}if(e.root.state==="success"||e.root.state==="error"){let i="finish",l=e.root.state==="success"?"\u2713":"\u2717",u=e.root.state==="success"?"Done":"Failed",c=`(("${l} ${u}"))`,d=e.root.state==="success"?":::success":":::error";n.push(` ${i}${c}${d}`),n.push(` ${a} --> ${i}`)}return n.push(""),n.push(...ys()),r.showHeatmap&&n.push(...ws()),e.hooks&&n.push(...ks()),n.join(`
|
|
3
|
+
`)}}}function Qe(e,t,n,r,o){if(ce(e))return Ss(e,t,n,r,o);if(De(e))return vs(e,t,n,r,o);if(Ae(e))return xs(e,t,n,r,o);if(Me(e))return Rs(e,t,n,r,o);let s=We("unknown");return n.push(` ${s}[Unknown Node]`),{entryId:s,exitId:s}}function Ss(e,t,n,r,o){let s=t,a=s.showRetryEdges??!0,i=s.showErrorEdges??!0,l=s.showTimeoutEdges??!0,u=e.key?`step_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:We("step"),c=J(e.name??e.key??"Step"),d=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"",p="";switch(e.state){case"success":p="\u2713 ";break;case"error":p="\u2717 ";break;case"cached":p="\u{1F4BE} ";break;case"running":p="\u23F3 ";break;case"skipped":p="\u2298 ";break}let m="";if(e.input!==void 0){let y=typeof e.input=="string"?J(e.input):J(JSON.stringify(e.input).slice(0,20));m+=`\\nin: ${y}`}if(e.output!==void 0&&e.state==="success"){let y=typeof e.output=="string"?J(e.output):J(JSON.stringify(e.output).slice(0,20));m+=`\\nout: ${y}`}let T="";if(o&&e.key&&o.onAfterStep.has(e.key)){let y=o.onAfterStep.get(e.key),v=y.state==="success"?"\u2699":"\u26A0",P=t.showTimings&&y.durationMs!==void 0?` ${K(y.durationMs)}`:"";T=`\\n${v} hook${P}`}let h=(p+c+m+T+d).trim(),I,$=e.name??e.id,E=r?.showHeatmap&&r.heatmapData?r.heatmapData.heat.get(e.id)??r.heatmapData.heat.get($):void 0;if(E!==void 0){let y=Wt(E);I=hs(y)}else I=e.state;let S;switch(e.state){case"error":S=`{{${h}}}`;break;case"cached":S=`[(${h})]`;break;case"skipped":S=`[${h}]:::skipped`;break;default:S=`[${h}]`}if(n.push(` ${u}${S}:::${I}`),a&&e.retryCount!==void 0&&e.retryCount>0){let y=`\u21BB ${e.retryCount} retr${e.retryCount===1?"y":"ies"}`;n.push(` ${u} -.->|"${y}"| ${u}`)}if(i&&e.state==="error"&&e.error!==void 0){let y=`ERR_${u}`,v=J(String(e.error)).slice(0,30);n.push(` ${y}{{${v}}}`),n.push(` ${u} -->|error| ${y}`),n.push(` style ${y} fill:#fee2e2,stroke:#dc2626`)}if(l&&e.timedOut){let y=`TO_${u}`,v=e.timeoutMs!==void 0?`${e.timeoutMs}ms`:"";n.push(` ${y}{{\u23F1 Timeout ${v}}}`),n.push(` ${u} -.->|timeout| ${y}`),n.push(` style ${y} fill:#fef3c7,stroke:#f59e0b`)}return{entryId:u,exitId:u}}function vs(e,t,n,r,o){let s=We("parallel"),a=`${s}_fork`,i=`${s}_join`,l=ao(e.name??"Parallel"),u=e.mode==="allSettled"?" (allSettled)":"";if(e.children.length===0){let p=s,m=J(`${l}${u}`),T="operations not individually tracked",h=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"";return n.push(` ${p}[${m}${h}\\n${T}]:::${e.state}`),{entryId:p,exitId:p}}n.push(` subgraph ${s}["${l}${u}"]`),n.push(" direction TB"),n.push(` ${a}{"\u26A1 Fork"}`);let c=[];for(let p of e.children){let m=Qe(p,t,n,r,o);n.push(` ${a} --> ${m.entryId}`),c.push(m.exitId)}n.push(` ${i}{"\u2713 Join"}`);for(let p of c)n.push(` ${p} --> ${i}`);n.push(" end");let d=e.state;return n.push(` class ${s} ${d}`),{entryId:a,exitId:i}}function xs(e,t,n,r,o){let s=We("race"),a=`${s}_start`,i=`${s}_end`,l=ao(e.name??"Race");if(e.children.length===0){let p=s,m=J(l),T="operations not individually tracked",h=t.showTimings&&e.durationMs!==void 0?` ${K(e.durationMs)}`:"";return n.push(` ${p}[\u26A1 ${m}${h}\\n${T}]:::${e.state}`),{entryId:p,exitId:p}}n.push(` subgraph ${s}["\u26A1 ${l}"]`),n.push(" direction TB"),n.push(` ${a}(("\u{1F3C1} Start"))`);let u=[],c;for(let p of e.children){let m=Qe(p,t,n,r,o),T=ce(p)&&e.winnerId===p.id;n.push(` ${a} --> ${m.entryId}`),T&&(c=m.exitId),u.push({exitId:m.exitId,isWinner:T})}n.push(` ${i}(("\u2713 First"))`);for(let{exitId:p,isWinner:m}of u)m&&c?n.push(` ${p} ==>|\u{1F3C6} Winner| ${i}`):e.winnerId?n.push(` ${p} -. cancelled .-> ${i}`):n.push(` ${p} --> ${i}`);n.push(" end");let d=e.state;return n.push(` class ${s} ${d}`),{entryId:a,exitId:i}}function Rs(e,t,n,r,o){let s=e.key?`decision_${e.key.replace(/[^a-zA-Z0-9]/g,"_")}`:We("decision"),a=J(e.condition??"condition"),i=e.decisionValue!==void 0?` = ${J(String(e.decisionValue)).slice(0,30)}`:"",l=`${a}${i}`.trim();n.push(` ${s}{${l}}`);let u=[],c;for(let d of e.branches){let p=`${s}_${d.label.replace(/[^a-zA-Z0-9]/g,"_")}`,m=J(d.label),T=d.taken?`${m} \u2713`:`${m} skipped`,h=d.taken?":::success":":::skipped";n.push(` ${p}[${T}]${h}`);let I=d.condition?`|${J(d.condition).replace(/\|/g,"")}|`:"";if(n.push(` ${s} -->${I} ${p}`),d.children.length>0){let $=p;for(let E of d.children){let S=Qe(E,t,n,r,o);n.push(` ${$} --> ${S.entryId}`),$=S.exitId}u.push($),d.taken&&(c=$)}else u.push(p),d.taken&&(c=p)}return c?{entryId:s,exitId:c}:{entryId:s,exitId:s}}var Is=require("http"),Ps=require("child_process");function io(e={}){let{workflowName:t,detectParallel:n=!0,showTimings:r=!0,showKeys:o=!1,colors:s}=e,a=Pe({detectParallel:n}),i=new Set,l=Ne(),u=Ye(),c={showTimings:r,showKeys:o,terminalWidth:process.stdout?.columns??80,colors:{...me,...s}};function d(){if(i.size>0){let y=a.getIR();for(let v of i)v(y)}}function p(y){if(y.type==="scope_start"||y.type==="scope_end"){m(y);return}a.handleEvent(y),y.type,d()}function m(y){a.handleScopeEvent(y),d()}function T(y){a.handleDecisionEvent(y),d()}function h(){let y=a.getIR();return t&&!y.root.name&&(y.root.name=t),y}function I(){let y=h();return l.render(y,c)}function $(y){let v=h();switch(y){case"ascii":return l.render(v,c);case"mermaid":return u.render(v,c);case"json":return JSON.stringify(v,null,2);default:throw new Error(`Unknown format: ${y}`)}}function E(){a.reset(),d()}function S(y){return i.add(y),()=>i.delete(y)}return{handleEvent:p,handleScopeEvent:m,handleDecisionEvent:T,getIR:h,render:I,renderAs:$,reset:E,onUpdate:S}}function Lt(e={}){let{logEvents:t=!1,maxHistory:n=10,logger:r=console.log}=e,o=io(e),s=[],a,i=0;function l(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,w){a&&(a.endTime=Date.now(),a.durationMs=a.endTime-a.startTime,a.success=g,a.error=w)}function c(g){t&&r(`[devtools] ${g.type}: ${JSON.stringify(g)}`),g.type==="workflow_start"&&l(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 d(g){t&&r(`[devtools] ${g.type}: ${JSON.stringify(g)}`),a&&a.events.push(g),o.handleDecisionEvent(g)}function p(){return a}function m(){return[...s]}function T(g){return a?.id===g?a:s.find(w=>w.id===g)}function h(g,w){let R=T(g),O=T(w);if(!(!R||!O))return uo(R,O)}function I(){if(!a||s.length===0)return;let g=s[s.length-1];return uo(g,a)}function $(){return o.render()}function E(g){return o.renderAs(g)}function S(){return o.renderAs("mermaid")}function y(){let g=v();return As(g)}function v(){return a?Ds(a.events,i):[]}function P(){s.length=0}function L(){a=void 0,o.reset()}function W(g){let w=g?T(g):a;return w?JSON.stringify(w,null,2):"{}"}function D(g){let w=JSON.parse(g);return s.push(w),w}return{handleEvent:c,handleDecisionEvent:d,getCurrentRun:p,getHistory:m,getRun:T,diff:h,diffWithPrevious:I,render:$,renderAs:E,renderMermaid:S,renderTimeline:y,getTimeline:v,clearHistory:P,reset:L,exportRun:W,importRun:D}}function uo(e,t){let n=co(e.events),r=co(t.events),o=[],s=[],a=[],i=[];for(let[p,m]of r){let T=n.get(p);T?T.status!==m.status?a.push({step:p,type:"status",from:T.status,to:m.status}):T.durationMs!==m.durationMs?a.push({step:p,type:"duration",from:T.durationMs,to:m.durationMs}):i.push(p):o.push({step:p,type:"added",to:m.status})}for(let[p]of n)r.has(p)||s.push({step:p,type:"removed",from:n.get(p)?.status});let l,u=e.success===void 0?"running":e.success?"success":"error",c=t.success===void 0?"running":t.success?"success":"error";u!==c&&(l={from:u,to:c});let d;return e.durationMs!==void 0&&t.durationMs!==void 0&&(d=t.durationMs-e.durationMs),{added:o,removed:s,changed:a,unchanged:i,statusChange:l,durationChange:d}}function co(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 Ds(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(l=>l.name===a&&l.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(l=>l.name===a&&l.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 As(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),l=Ms(o.status),u=" ".repeat(s)+l.repeat(i),c=o.durationMs!==void 0?`${o.durationMs}ms`:"?";t.push(`${o.name.padEnd(20)} |${u.padEnd(r)}| ${c}`)}return t.push("\u2500".repeat(60)),t.join(`
|
|
4
4
|
`)}function Ms(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 lo(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 po(e,t={}){let n=Lt(t);return e(n.handleEvent).then(()=>n.render())}function fo(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 mo(){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 go(){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 yo(e){let{approvalStore:t,workflowStateStore:n,defaultExpirationMs:r=10080*60*1e3,logger:o=()=>{}}=e;async function s(m,T,h,O,D){let E=D?.runId??crypto.randomUUID(),x=xe(),C=await T({onEvent:x.handleEvent})(O,h),P=x.getPendingApprovals().map(L=>L.stepKey);if(P.length>0){let L={runId:E,workflowName:m,resumeState:x.getState(),pendingApprovals:P,input:O,metadata:D?.metadata,startedAt:Date.now(),updatedAt:Date.now()};await n.save(L);for(let A of P)await t.createApproval(A,{metadata:{runId:E,workflowName:m},expiresAt:Date.now()+r});o(`Workflow ${E} paused, waiting for: ${P.join(", ")}`);let W;return!C.ok&&se(C.error)&&(W=C.error.reason),{status:"paused",runId:E,pendingApprovals:P,reason:W}}return o(`Workflow ${E} completed`),{status:"completed",result:C}}async function a(m,T,h){let O=await n.load(m);if(!O)throw new Error(`Workflow run not found: ${m}`);for(let P of O.pendingApprovals){let L=await t.getApproval(P);if(L.status==="pending")return{status:"paused",runId:m,pendingApprovals:O.pendingApprovals};if(L.status,L.status==="expired")throw new Error(`Approval ${P} has expired`)}let D=O.resumeState;for(let P of O.pendingApprovals){let L=await t.getApproval(P);L.status==="approved"&&(D=Ve(D,{stepKey:P,value:L.value}))}let E=xe(),w=await T({resumeState:D,onEvent:E.handleEvent})(O.input,h),C=E.getPendingApprovals().map(P=>P.stepKey);if(C.length>0){let P={...O,resumeState:E.getState(),pendingApprovals:C,updatedAt:Date.now()};await n.save(P);for(let W of C)await t.createApproval(W,{metadata:{runId:m,workflowName:O.workflowName},expiresAt:Date.now()+r});o(`Workflow ${m} paused again, waiting for: ${C.join(", ")}`);let L;return!w.ok&&se(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,T,h){await t.grantApproval(m,T,{approvedBy:h?.approvedBy});let O=Date.now(),D=[];if(h?.autoResume!==!1){let E=await n.findByPendingApproval(m);for(let x of E)D.push(x)}return o(`Approval ${m} granted by ${h?.approvedBy??"unknown"}`),{grantedAt:O,resumedWorkflows:D}}async function l(m,T,h){await t.rejectApproval(m,T,{rejectedBy:h?.rejectedBy}),o(`Approval ${m} rejected: ${T}`)}async function u(m,T){let{intervalMs:h=1e3,maxPolls:O,timeoutMs:D,onPollStart:E,onPollComplete:x}=T??{},w=Date.now(),C=0;for(;;){E?.();let P=await t.getApproval(m);if(x?.(P),P.status!=="pending")return P;if(C++,O!==void 0&&C>=O)return{status:"pending"};if(D!==void 0&&Date.now()-w>=D)return{status:"pending"};await new Promise(L=>setTimeout(L,h))}}async function c(m){return n.load(m)}async function d(m){return n.list({workflowName:m,hasPendingApprovals:!0})}async function p(m){let T=await n.list(),h=0,O=Date.now()-m;for(let D of T){let E=await n.load(D);E&&E.updatedAt<O&&E.pendingApprovals.length===0&&(await n.delete(D),h++)}return o(`Cleaned up ${h} old workflow states`),h}return{execute:s,resume:a,grantApproval:i,rejectApproval:l,pollApproval:u,getWorkflowStatus:c,listPendingWorkflows:d,cleanup:p}}function wo(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 ho(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 ko(e){return typeof e=="object"&&e!==null&&"__earlyExit"in e&&e.__earlyExit===!0}function Eo(e,t={}){let{recordInvocations:n=!0,clock:r=Date.now}=t,o=[],s=new Map,a=0,i=[];function l(w){o=[...w],a=0,s.clear()}function u(w,C){s.set(w,C)}function c(w){if(w&&s.has(w))return s.get(w);if(a<o.length)return o[a++]}function d(){let w=async(C,P)=>{let L=typeof P=="string"?{name:P}:P??{},W=L.name??L.key,A=r(),g={name:L.name,key:L.key,order:i.length,timestamp:A};n&&i.push(g);let y=c(W);if(y)switch(g.durationMs=r()-A,y.type){case"ok":return g.result=N(y.value),y.value;case"err":throw g.result=R(y.error),{__earlyExit:!0,error:y.error};case"throw":throw y.error}let v=typeof C=="function"?await C():await C;if(g.durationMs=r()-A,g.result=v,!v.ok)throw{__earlyExit:!0,error:v.error};return v.value};return w.try=async(C,P)=>{let L=P.name??P.key,W=r(),A={name:P.name,key:P.key,order:i.length,timestamp:W};n&&i.push(A);let g=c(L);if(g)switch(A.durationMs=r()-W,g.type){case"ok":return A.result=N(g.value),g.value;case"err":throw A.result=R(g.error),{__earlyExit:!0,error:g.error};case"throw":throw g.error}try{let y=await C();return A.durationMs=r()-W,A.result=N(y),y}catch(y){A.durationMs=r()-W;let v="error"in P?P.error:P.onError(y);throw A.result=R(v),{__earlyExit:!0,error:v}}},w}async function p(w){let C=d();try{let P=await w(C,e);return N(P)}catch(P){return ko(P)?R(P.error):R({type:"UNEXPECTED_ERROR",cause:P})}}async function m(w,C){let P=d();try{let L=await C(P,e,w);return N(L)}catch(L){return ko(L)?R(L.error):R({type:"UNEXPECTED_ERROR",cause:L})}}function T(){return[...i]}function h(w){let C=i.map(L=>L.name??L.key??"unnamed").filter(L=>L!=="unnamed"),P=JSON.stringify(C)===JSON.stringify(w);return{passed:P,message:P?`Steps invoked in order: ${w.join(", ")}`:`Expected steps [${w.join(", ")}] but got [${C.join(", ")}]`,expected:w,actual:C}}function O(w){let C=i.some(P=>P.name===w||P.key===w);return{passed:C,message:C?`Step "${w}" was invoked`:`Step "${w}" was NOT invoked`,expected:w,actual:C}}function D(w){let C=i.some(P=>P.name===w||P.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 P=w.ok===C.ok&&(w.ok?JSON.stringify(w.value)===JSON.stringify(C.value):JSON.stringify(w.error)===JSON.stringify(C.error));return{passed:P,message:P?"Result matches expected":"Result does not match expected",expected:C,actual:w}}function x(){o=[],s.clear(),a=0,i=[]}return{script:l,scriptStep:u,run:p,runWithInput:m,getInvocations:T,assertSteps:h,assertStepCalled:O,assertStepNotCalled:D,assertResult:E,reset:x}}function To(){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 So(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 vo(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 xo(e=0){let t=e;return{now:()=>t,advance:n=>{t+=n},set:n=>{t=n},reset:()=>{t=e}}}function Ro(e){return{type:"ok",value:e}}function bo(e){return{type:"err",error:e}}function Co(e){return{type:"throw",error:e}}function Bt(e){return typeof e=="object"&&e!==null&&e.type==="BATCH_PROCESSING_ERROR"}function Oo(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_BATCH_CONFIG"}var _s=e=>new Promise(t=>setTimeout(t,e));async function Io(e,t,n,r){let{batchSize:o,concurrency:s,batchDelayMs:a=0}=n,{afterBatch:i,onProgress:l}=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=[],c=Math.ceil(e.length/o),d=Re("batch-processor",{maxConcurrent:s});for(let p=0;p<c;p++){let m=p*o,T=Math.min(m+o,e.length),h=e.slice(m,T),O=p+1,D=h.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:O};return C.value});try{let E=await d.executeAll(D);u.push(...E)}catch(E){if(Bt(E))return R(E);throw E}if(l?.({batch:O,totalBatches:c,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:O})}a>0&&p<c-1&&await _s(a)}return N(u)}var Po={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 Ut(){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 Do(e){let t=Ut(),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 Ao(e,t){let n=await e();return{value:n,close:async()=>{await t(n)}}}function ae(e){return{_tag:"Duration",millis:e}}function et(e){return{_tag:"Duration",millis:e*1e3}}function tt(e){return{_tag:"Duration",millis:e*60*1e3}}function nt(e){return{_tag:"Duration",millis:e*60*60*1e3}}function rt(e){return{_tag:"Duration",millis:e*24*60*60*1e3}}var $s={_tag:"Duration",millis:0},Ns={_tag:"Duration",millis:1/0};function j(e){return e.millis}function Ht(e){return e.millis/1e3}function Ft(e){return e.millis/(60*1e3)}function Vt(e){return e.millis/(3600*1e3)}function zt(e){return e.millis/(1440*60*1e3)}function ot(e,t){return{_tag:"Duration",millis:e.millis+t.millis}}function Ws(e,t){return{_tag:"Duration",millis:Math.max(0,e.millis-t.millis)}}function Le(e,t){return{_tag:"Duration",millis:e.millis*t}}function Ls(e,t){return{_tag:"Duration",millis:e.millis/t}}function Bs(e,t){return e.millis<t.millis}function Us(e,t){return e.millis<=t.millis}function Hs(e,t){return e.millis>t.millis}function Fs(e,t){return e.millis>=t.millis}function Vs(e,t){return e.millis===t.millis}function Mo(e,t){return e.millis<=t.millis?e:t}function _o(e,t){return e.millis>=t.millis?e:t}function zs(e,t,n){return Mo(_o(e,t),n)}function Ks(e){return e.millis===0}function js(e){return e.millis===1/0}function qs(e){return Number.isFinite(e.millis)&&e.millis>0}function Kt(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Duration"&&"millis"in e&&typeof e.millis=="number"}function Gs(e){let t=e.millis;if(t===1/0)return"\u221E";if(t===0)return"0ms";let n=Math.floor(t/(1440*60*1e3)),r=Math.floor(t%(1440*60*1e3)/(3600*1e3)),o=Math.floor(t%(3600*1e3)/(60*1e3)),s=Math.floor(t%(60*1e3)/1e3),a=t%1e3,i=[];return n>0&&i.push(`${n}d`),r>0&&i.push(`${r}h`),o>0&&i.push(`${o}m`),s>0&&i.push(`${s}s`),a>0&&i.length===0&&i.push(`${a}ms`),i.join(" ")||"0ms"}function Js(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"ms":return ae(n);case"s":return et(n);case"m":return tt(n);case"h":return nt(n);case"d":return rt(n);default:return}}var ge={millis:ae,seconds:et,minutes:tt,hours:nt,days:rt,zero:$s,infinity:Ns,toMillis:j,toSeconds:Ht,toMinutes:Ft,toHours:Vt,toDays:zt,add:ot,subtract:Ws,multiply:Le,divide:Ls,lessThan:Bs,lessThanOrEqual:Us,greaterThan:Hs,greaterThanOrEqual:Fs,equals:Vs,min:Mo,max:_o,clamp:zs,isZero:Ks,isInfinite:js,isFinite:qs,isDuration:Kt,format:Gs,parse:Js};function jt(e,t){return n=>{let r=new Map(n.handlers);return r.set(e,t),{_tag:"Matcher",value:n.value,handlers:r,_remaining:void 0,_output:void 0}}}function qt(e){return t=>{let n=new Map(t.handlers);for(let[r,o]of Object.entries(e))o&&n.set(r,o);return{_tag:"Matcher",value:t.value,handlers:n,_remaining:void 0,_output:void 0}}}function Gt(e){let t=e.handlers.get(e.value._tag);if(!t)throw new Error(`No handler for tag: ${e.value._tag}`);return t(e.value)}function st(e){return t=>{let n=t.handlers.get(t.value._tag);return n?n(t.value):e(t.value)}}function Jt(e){return st(()=>e)}function Xs(e,t,n){return r=>{let o=new Map(r.handlers),s=r.handlers.get(e);return o.set(e,a=>{let i=a;if(t(i))return n(i);if(s)return s(a);throw new Error(`No handler matched for tag: ${e}`)}),{_tag:"Matcher",value:r.value,handlers:o,_remaining:r._remaining,_output:void 0}}}function Xt(e){return t=>t._tag===e}function Yt(...e){let t=new Set(e);return n=>t.has(n._tag)}function Ys(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Matcher"}function $o(e){return{...e,pipe(t){let n=t(e);return Ys(n)?$o(n):n}}}function Qt(e){return $o({_tag:"Matcher",value:e,handlers:new Map,_remaining:e,_output:void 0})}var No={value:Qt,tag:jt,tags:qt,when:Xs,exhaustive:Gt,orElse:st,orElseValue:Jt,is:Xt,isOneOf:Yt};var te={iterations:0,elapsed:ge.zero,lastInput:void 0,lastOutput:void 0};function X(e,t){return{_tag:"Continue",delay:e,output:t}}function ee(){return{_tag:"Done"}}function J(e,t,n,r){return{iterations:e.iterations+1,elapsed:ot(e.elapsed,t),lastInput:n,lastOutput:r}}function Zt(){return{_tag:"Schedule",initial:te,step:(e,t)=>X(ge.zero,t.iterations)}}function en(e){return{_tag:"Schedule",initial:te,step:(t,n)=>n.iterations<e?X(ge.zero,n.iterations):ee()}}function Qs(){return{_tag:"Schedule",initial:te,step:(e,t)=>t.iterations===0?X(ge.zero,void 0):ee()}}function Zs(){return{_tag:"Schedule",initial:te,step:()=>ee()}}function tn(e){return{_tag:"Schedule",initial:te,step:(t,n)=>X(e,n.iterations)}}function nn(e,t=2){return{_tag:"Schedule",initial:te,step:(n,r)=>{let o=Le(e,Math.pow(t,r.iterations));return X(o,o)}}}function rn(e){return{_tag:"Schedule",initial:te,step:(t,n)=>{let r=Le(e,n.iterations+1);return X(r,r)}}}function on(e){let t=[1,1];for(let n=2;n<50;n++)t[n]=t[n-1]+t[n-2];return{_tag:"Schedule",initial:te,step:(n,r)=>{let o=Math.min(r.iterations,t.length-1),s=Le(e,t[o]);return X(s,s)}}}function sn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>r.iterations>=e?ee():t.step(n,r)})}function an(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>j(r.elapsed)>=j(e)?ee():t.step(n,r)})}function un(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=j(o.delay)>j(e)?e:o.delay;return X(s,o.output)}})}function cn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=j(o.delay)<j(e)?e:o.delay;return X(s,o.output)}})}function at(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>e(n)?t.step(n,r):ee()})}function it(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Done"||e(o.output)?o:ee()}})}function ln(e){return at(t=>!e(t))}function pn(e){return it(t=>!e(t))}function dn(e=.2){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=1-e+Math.random()*e*2,a=ae(j(o.delay)*s);return X(a,o.output)}})}function fn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=ae(Math.random()*j(e)),a=ot(o.delay,s);return X(a,o.output)}})}function mn(e){return t=>{let n={inSecondPhase:!1,firstState:t.initial,secondState:e.initial};return{_tag:"Schedule",initial:{...te,meta:n},step:(r,o)=>{let s=o.meta??n;if(!s.inSecondPhase){let u=t.step(r,s.firstState);if(u._tag==="Continue"){let m=u.nextState??J(s.firstState,u.delay,r,u.output),T={...J(o,u.delay,r,u.output),meta:{...s,firstState:m}};return{_tag:"Continue",delay:u.delay,output:u.output,nextState:T}}let c=e.step(r,e.initial);if(c._tag==="Done")return ee();let d=c.nextState??J(e.initial,c.delay,r,c.output),p={...J(o,c.delay,r,c.output),meta:{inSecondPhase:!0,firstState:s.firstState,secondState:d}};return{_tag:"Continue",delay:c.delay,output:c.output,nextState:p}}let a=e.step(r,s.secondState);if(a._tag==="Done")return ee();let i=a.nextState??J(s.secondState,a.delay,r,a.output),l={...J(o,a.delay,r,a.output),meta:{...s,secondState:i}};return{_tag:"Continue",delay:a.delay,output:a.output,nextState:l}}}}}function gn(e,t){let n={firstState:e.initial,secondState:t.initial};return{_tag:"Schedule",initial:{...te,meta:n},step:(r,o)=>{let s=o.meta??n,a=e.step(r,s.firstState),i=t.step(r,s.secondState);if(a._tag==="Done"&&i._tag==="Done")return ee();let l=a._tag==="Continue"?a.nextState??J(s.firstState,a.delay,r,a.output):s.firstState,u=i._tag==="Continue"?i.nextState??J(s.secondState,i.delay,r,i.output):s.secondState,c=a._tag==="Continue"?j(a.delay):1/0,d=i._tag==="Continue"?j(i.delay):1/0,p=ae(Math.min(c,d)),m=[a._tag==="Continue"?a.output:void 0,i._tag==="Continue"?i.output:void 0],T={...J(o,p,r,m),meta:{firstState:l,secondState:u}};return{_tag:"Continue",delay:p,output:m,nextState:T}}}}function yn(e,t){let n={firstState:e.initial,secondState:t.initial};return{_tag:"Schedule",initial:{...te,meta:n},step:(r,o)=>{let s=o.meta??n,a=e.step(r,s.firstState),i=t.step(r,s.secondState);if(a._tag==="Done"||i._tag==="Done")return ee();let l=a.nextState??J(s.firstState,a.delay,r,a.output),u=i.nextState??J(s.secondState,i.delay,r,i.output),c=ae(Math.max(j(a.delay),j(i.delay))),d=[a.output,i.output],p={...J(o,c,r,d),meta:{firstState:l,secondState:u}};return{_tag:"Continue",delay:c,output:d,nextState:p}}}}function ea(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Done"?ee():X(o.delay,e(o.output))}})}function ta(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Continue"&&e(o.output,r),o}})}function wn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Done"?o:X(e(o.delay,o.output),o.output)}})}function Lo(e){let t=e.initial;return{next(n){let r=e.step(n,t);return r._tag==="Done"?{done:!0}:(t=r.nextState??J(t,r.delay,n,r.output),{done:!1,value:{delay:r.delay,output:r.output}})}}}function hn(e,t=100){let n=[],r=Lo(e);for(let o=0;o<t;o++){let s=r.next(void 0);if(s.done)break;n.push(s.value.delay)}return n}function na(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Schedule"}function oe(e){return{...e,pipe(t){let n=t(e);return na(n)?oe(n):n}}}var Wo=e=>oe(tn(e)),ra=(e,t)=>oe(nn(e,t)),oa=e=>oe(rn(e)),sa=e=>oe(on(e)),aa=e=>oe(en(e)),ia=()=>oe(Zt()),ua=()=>oe(Qs()),ca=(e,t)=>oe(gn(e,t)),la=(e,t)=>oe(yn(e,t)),Bo={forever:ia,once:ua,recurs:aa,stop:Zs,spaced:Wo,fixed:Wo,exponential:ra,linear:oa,fibonacci:sa,upTo:sn,upToElapsed:an,maxDelay:un,minDelay:cn,whileInput:at,whileOutput:it,untilInput:ln,untilOutput:pn,jittered:dn,addDelay:fn,andThen:mn,union:ca,intersect:la,map:ea,tap:ta,modifyDelay:wn,run:Lo,delays:hn};0&&(module.exports={CircuitOpenError,Duration,Match,STEP_TIMEOUT_MARKER,Schedule,TaggedError,UnwrapError,addDelay,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,days,defaultUnexpectedErrorMapper,defaultValidationErrorMapper,delays,deserializeCause,deserializeEntry,deserializeMeta,deserializeResult,deserializeState,envPolicy,err,errOutcome,exhaustive,exponential,fibonacci,forever,from,fromNullable,fromPromise,getPendingApprovals,getStepTimeoutMeta,hasPendingApproval,hours,hydrate,injectApproval,intersect,isApprovalRejected,isBatchProcessingError,isCircuitOpenError,isDuration,isErr,isInvalidBatchConfigError,isMigrationError,isOk,isOneOf,isPendingApproval,isQueueFullError,isRateLimitExceededError,isResourceCleanupError,isSagaCompensationError,isSerializedResult,isStepComplete,isStepTimeoutError,isTag,isUnexpectedError,isValidationError,isVersionIncompatibleError,jittered,linear,map,mapError,mapErrorTry,mapTry,match,matchOrElse,matchTag,matchTags,matchValue,maxDelay,mergePolicies,migrateState,millis,minDelay,minutes,modifyDelay,ok,okOutcome,orElse,orElseAsync,orElseValue,parseState,parseVersionedState,partition,pendingApproval,processInBatches,quickVisualize,rateLimiterPresets,recover,recoverAsync,recurs,renderDiff,requireFields,retryPolicies,retryPolicy,run,runSaga,scheduleAndThen,scheduleUnion,seconds,sendWebhookResponse,serializeCause,serializeEntry,serializeMeta,serializeResult,serializeState,servicePolicies,spaced,stepOptions,stringifyState,stringifyVersionedState,tap,tapError,throwOutcome,timeoutPolicies,timeoutPolicy,toDays,toHours,toMillis,toMinutes,toSeconds,toWebhookRequest,tryAsync,unless,unlessOr,untilInput,untilOutput,unwrap,unwrapOr,unwrapOrElse,upTo,upToElapsed,validationError,when,whenOr,whileInput,whileOutput,withAutotelTracing,withPolicies,withPolicy,withScope});
|
|
9
|
+
`)}function po(e,t={}){let n=Lt(t);return e(n.handleEvent).then(()=>n.render())}function fo(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 mo(){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 go(){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 yo(e){let{approvalStore:t,workflowStateStore:n,defaultExpirationMs:r=10080*60*1e3,logger:o=()=>{}}=e;async function s(m,T,h,I,$){let E=$?.runId??crypto.randomUUID(),S=xe(),v=await T({onEvent:S.handleEvent})(I,h),P=S.getPendingApprovals().map(L=>L.stepKey);if(P.length>0){let L={runId:E,workflowName:m,resumeState:S.getState(),pendingApprovals:P,input:I,metadata:$?.metadata,startedAt:Date.now(),updatedAt:Date.now()};await n.save(L);for(let D of P)await t.createApproval(D,{metadata:{runId:E,workflowName:m},expiresAt:Date.now()+r});o(`Workflow ${E} paused, waiting for: ${P.join(", ")}`);let W;return!v.ok&&se(v.error)&&(W=v.error.reason),{status:"paused",runId:E,pendingApprovals:P,reason:W}}return o(`Workflow ${E} completed`),{status:"completed",result:v}}async function a(m,T,h){let I=await n.load(m);if(!I)throw new Error(`Workflow run not found: ${m}`);for(let P of I.pendingApprovals){let L=await t.getApproval(P);if(L.status==="pending")return{status:"paused",runId:m,pendingApprovals:I.pendingApprovals};if(L.status,L.status==="expired")throw new Error(`Approval ${P} has expired`)}let $=I.resumeState;for(let P of I.pendingApprovals){let L=await t.getApproval(P);L.status==="approved"&&($=Ve($,{stepKey:P,value:L.value}))}let E=xe(),y=await T({resumeState:$,onEvent:E.handleEvent})(I.input,h),v=E.getPendingApprovals().map(P=>P.stepKey);if(v.length>0){let P={...I,resumeState:E.getState(),pendingApprovals:v,updatedAt:Date.now()};await n.save(P);for(let W of v)await t.createApproval(W,{metadata:{runId:m,workflowName:I.workflowName},expiresAt:Date.now()+r});o(`Workflow ${m} paused again, waiting for: ${v.join(", ")}`);let L;return!y.ok&&se(y.error)&&(L=y.error.reason),{status:"paused",runId:m,pendingApprovals:v,reason:L}}return await n.delete(m),o(`Workflow ${m} resumed and completed`),{status:"resumed",runId:m,result:y}}async function i(m,T,h){await t.grantApproval(m,T,{approvedBy:h?.approvedBy});let I=Date.now(),$=[];if(h?.autoResume!==!1){let E=await n.findByPendingApproval(m);for(let S of E)$.push(S)}return o(`Approval ${m} granted by ${h?.approvedBy??"unknown"}`),{grantedAt:I,resumedWorkflows:$}}async function l(m,T,h){await t.rejectApproval(m,T,{rejectedBy:h?.rejectedBy}),o(`Approval ${m} rejected: ${T}`)}async function u(m,T){let{intervalMs:h=1e3,maxPolls:I,timeoutMs:$,onPollStart:E,onPollComplete:S}=T??{},y=Date.now(),v=0;for(;;){E?.();let P=await t.getApproval(m);if(S?.(P),P.status!=="pending")return P;if(v++,I!==void 0&&v>=I)return{status:"pending"};if($!==void 0&&Date.now()-y>=$)return{status:"pending"};await new Promise(L=>setTimeout(L,h))}}async function c(m){return n.load(m)}async function d(m){return n.list({workflowName:m,hasPendingApprovals:!0})}async function p(m){let T=await n.list(),h=0,I=Date.now()-m;for(let $ of T){let E=await n.load($);E&&E.updatedAt<I&&E.pendingApprovals.length===0&&(await n.delete($),h++)}return o(`Cleaned up ${h} old workflow states`),h}return{execute:s,resume:a,grantApproval:i,rejectApproval:l,pollApproval:u,getWorkflowStatus:c,listPendingWorkflows:d,cleanup:p}}function wo(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 ho(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 ko(e){return typeof e=="object"&&e!==null&&"__earlyExit"in e&&e.__earlyExit===!0}function Eo(e,t={}){let{recordInvocations:n=!0,clock:r=Date.now}=t,o=[],s=new Map,a=0,i=[];function l(y){o=[...y],a=0,s.clear()}function u(y,v){s.set(y,v)}function c(y){if(y&&s.has(y))return s.get(y);if(a<o.length)return o[a++]}function d(){let y=async(v,P)=>{let L=typeof P=="string"?{name:P}:P??{},W=L.name??L.key,D=r(),g={name:L.name,key:L.key,order:i.length,timestamp:D};n&&i.push(g);let w=c(W);if(w)switch(g.durationMs=r()-D,w.type){case"ok":return g.result=N(w.value),w.value;case"err":throw g.result=b(w.error),{__earlyExit:!0,error:w.error};case"throw":throw w.error}let R=typeof v=="function"?await v():await v;if(g.durationMs=r()-D,g.result=R,!R.ok)throw{__earlyExit:!0,error:R.error};return R.value};return y.try=async(v,P)=>{let L=P.name??P.key,W=r(),D={name:P.name,key:P.key,order:i.length,timestamp:W};n&&i.push(D);let g=c(L);if(g)switch(D.durationMs=r()-W,g.type){case"ok":return D.result=N(g.value),g.value;case"err":throw D.result=b(g.error),{__earlyExit:!0,error:g.error};case"throw":throw g.error}try{let w=await v();return D.durationMs=r()-W,D.result=N(w),w}catch(w){D.durationMs=r()-W;let R="error"in P?P.error:P.onError(w);throw D.result=b(R),{__earlyExit:!0,error:R}}},y}async function p(y){let v=d();try{let P=await y(v,e);return N(P)}catch(P){return ko(P)?b(P.error):b({type:"UNEXPECTED_ERROR",cause:P})}}async function m(y,v){let P=d();try{let L=await v(P,e,y);return N(L)}catch(L){return ko(L)?b(L.error):b({type:"UNEXPECTED_ERROR",cause:L})}}function T(){return[...i]}function h(y){let v=i.map(L=>L.name??L.key??"unnamed").filter(L=>L!=="unnamed"),P=JSON.stringify(v)===JSON.stringify(y);return{passed:P,message:P?`Steps invoked in order: ${y.join(", ")}`:`Expected steps [${y.join(", ")}] but got [${v.join(", ")}]`,expected:y,actual:v}}function I(y){let v=i.some(P=>P.name===y||P.key===y);return{passed:v,message:v?`Step "${y}" was invoked`:`Step "${y}" was NOT invoked`,expected:y,actual:v}}function $(y){let v=i.some(P=>P.name===y||P.key===y);return{passed:!v,message:v?`Step "${y}" was invoked but should not have been`:`Step "${y}" was correctly NOT invoked`,expected:"not called",actual:v?"called":"not called"}}function E(y,v){let P=y.ok===v.ok&&(y.ok?JSON.stringify(y.value)===JSON.stringify(v.value):JSON.stringify(y.error)===JSON.stringify(v.error));return{passed:P,message:P?"Result matches expected":"Result does not match expected",expected:v,actual:y}}function S(){o=[],s.clear(),a=0,i=[]}return{script:l,scriptStep:u,run:p,runWithInput:m,getInvocations:T,assertSteps:h,assertStepCalled:I,assertStepNotCalled:$,assertResult:E,reset:S}}function To(){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 So(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 vo(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 xo(e=0){let t=e;return{now:()=>t,advance:n=>{t+=n},set:n=>{t=n},reset:()=>{t=e}}}function Ro(e){return{type:"ok",value:e}}function bo(e){return{type:"err",error:e}}function Co(e){return{type:"throw",error:e}}function Bt(e){return typeof e=="object"&&e!==null&&e.type==="BATCH_PROCESSING_ERROR"}function Oo(e){return typeof e=="object"&&e!==null&&e.type==="INVALID_BATCH_CONFIG"}var _s=e=>new Promise(t=>setTimeout(t,e));async function Io(e,t,n,r){let{batchSize:o,concurrency:s,batchDelayMs:a=0}=n,{afterBatch:i,onProgress:l}=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 N([]);let u=[],c=Math.ceil(e.length/o),d=Re("batch-processor",{maxConcurrent:s});for(let p=0;p<c;p++){let m=p*o,T=Math.min(m+o,e.length),h=e.slice(m,T),I=p+1,$=h.map((E,S)=>async()=>{let y=m+S,v=await t(E,y);if(!v.ok)throw{type:"BATCH_PROCESSING_ERROR",error:v.error,itemIndex:y,batchNumber:I};return v.value});try{let E=await d.executeAll($);u.push(...E)}catch(E){if(Bt(E))return b(E);throw E}if(l?.({batch:I,totalBatches:c,processed:u.length,total:e.length,percent:Math.round(u.length/e.length*100)}),i){let E=await i();if(!E.ok)return b({type:"BATCH_PROCESSING_ERROR",error:E.error,batchNumber:I})}a>0&&p<c-1&&await _s(a)}return N(u)}var Po={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 Ut(){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 Do(e){let t=Ut(),n;try{n=await e(t)}catch(r){try{await t.close()}catch(o){if(Ze(o))return b({...o,originalResult:{thrown:r}})}throw r}try{await t.close()}catch(r){if(Ze(r))return b({...r,originalResult:n});throw r}return n}async function Ao(e,t){let n=await e();return{value:n,close:async()=>{await t(n)}}}function ae(e){return{_tag:"Duration",millis:e}}function et(e){return{_tag:"Duration",millis:e*1e3}}function tt(e){return{_tag:"Duration",millis:e*60*1e3}}function nt(e){return{_tag:"Duration",millis:e*60*60*1e3}}function rt(e){return{_tag:"Duration",millis:e*24*60*60*1e3}}var $s={_tag:"Duration",millis:0},Ns={_tag:"Duration",millis:1/0};function j(e){return e.millis}function Ht(e){return e.millis/1e3}function Ft(e){return e.millis/(60*1e3)}function Vt(e){return e.millis/(3600*1e3)}function zt(e){return e.millis/(1440*60*1e3)}function ot(e,t){return{_tag:"Duration",millis:e.millis+t.millis}}function Ws(e,t){return{_tag:"Duration",millis:Math.max(0,e.millis-t.millis)}}function Le(e,t){return{_tag:"Duration",millis:e.millis*t}}function Ls(e,t){return{_tag:"Duration",millis:e.millis/t}}function Bs(e,t){return e.millis<t.millis}function Us(e,t){return e.millis<=t.millis}function Hs(e,t){return e.millis>t.millis}function Fs(e,t){return e.millis>=t.millis}function Vs(e,t){return e.millis===t.millis}function Mo(e,t){return e.millis<=t.millis?e:t}function _o(e,t){return e.millis>=t.millis?e:t}function zs(e,t,n){return Mo(_o(e,t),n)}function Ks(e){return e.millis===0}function js(e){return e.millis===1/0}function qs(e){return Number.isFinite(e.millis)&&e.millis>0}function Kt(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Duration"&&"millis"in e&&typeof e.millis=="number"}function Gs(e){let t=e.millis;if(t===1/0)return"\u221E";if(t===0)return"0ms";let n=Math.floor(t/(1440*60*1e3)),r=Math.floor(t%(1440*60*1e3)/(3600*1e3)),o=Math.floor(t%(3600*1e3)/(60*1e3)),s=Math.floor(t%(60*1e3)/1e3),a=t%1e3,i=[];return n>0&&i.push(`${n}d`),r>0&&i.push(`${r}h`),o>0&&i.push(`${o}m`),s>0&&i.push(`${s}s`),a>0&&i.length===0&&i.push(`${a}ms`),i.join(" ")||"0ms"}function Js(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"ms":return ae(n);case"s":return et(n);case"m":return tt(n);case"h":return nt(n);case"d":return rt(n);default:return}}var ge={millis:ae,seconds:et,minutes:tt,hours:nt,days:rt,zero:$s,infinity:Ns,toMillis:j,toSeconds:Ht,toMinutes:Ft,toHours:Vt,toDays:zt,add:ot,subtract:Ws,multiply:Le,divide:Ls,lessThan:Bs,lessThanOrEqual:Us,greaterThan:Hs,greaterThanOrEqual:Fs,equals:Vs,min:Mo,max:_o,clamp:zs,isZero:Ks,isInfinite:js,isFinite:qs,isDuration:Kt,format:Gs,parse:Js};function jt(e,t){return n=>{let r=new Map(n.handlers);return r.set(e,t),{_tag:"Matcher",value:n.value,handlers:r,_remaining:void 0,_output:void 0}}}function qt(e){return t=>{let n=new Map(t.handlers);for(let[r,o]of Object.entries(e))o&&n.set(r,o);return{_tag:"Matcher",value:t.value,handlers:n,_remaining:void 0,_output:void 0}}}function Gt(e){let t=e.handlers.get(e.value._tag);if(!t)throw new Error(`No handler for tag: ${e.value._tag}`);return t(e.value)}function st(e){return t=>{let n=t.handlers.get(t.value._tag);return n?n(t.value):e(t.value)}}function Jt(e){return st(()=>e)}function Xs(e,t,n){return r=>{let o=new Map(r.handlers),s=r.handlers.get(e);return o.set(e,a=>{let i=a;if(t(i))return n(i);if(s)return s(a);throw new Error(`No handler matched for tag: ${e}`)}),{_tag:"Matcher",value:r.value,handlers:o,_remaining:r._remaining,_output:void 0}}}function Xt(e){return t=>t._tag===e}function Yt(...e){let t=new Set(e);return n=>t.has(n._tag)}function Ys(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Matcher"}function $o(e){return{...e,pipe(t){let n=t(e);return Ys(n)?$o(n):n}}}function Qt(e){return $o({_tag:"Matcher",value:e,handlers:new Map,_remaining:e,_output:void 0})}var No={value:Qt,tag:jt,tags:qt,when:Xs,exhaustive:Gt,orElse:st,orElseValue:Jt,is:Xt,isOneOf:Yt};var te={iterations:0,elapsed:ge.zero,lastInput:void 0,lastOutput:void 0};function Y(e,t){return{_tag:"Continue",delay:e,output:t}}function ee(){return{_tag:"Done"}}function X(e,t,n,r){return{iterations:e.iterations+1,elapsed:ot(e.elapsed,t),lastInput:n,lastOutput:r}}function Zt(){return{_tag:"Schedule",initial:te,step:(e,t)=>Y(ge.zero,t.iterations)}}function en(e){return{_tag:"Schedule",initial:te,step:(t,n)=>n.iterations<e?Y(ge.zero,n.iterations):ee()}}function Qs(){return{_tag:"Schedule",initial:te,step:(e,t)=>t.iterations===0?Y(ge.zero,void 0):ee()}}function Zs(){return{_tag:"Schedule",initial:te,step:()=>ee()}}function tn(e){return{_tag:"Schedule",initial:te,step:(t,n)=>Y(e,n.iterations)}}function nn(e,t=2){return{_tag:"Schedule",initial:te,step:(n,r)=>{let o=Le(e,Math.pow(t,r.iterations));return Y(o,o)}}}function rn(e){return{_tag:"Schedule",initial:te,step:(t,n)=>{let r=Le(e,n.iterations+1);return Y(r,r)}}}function on(e){let t=[1,1];for(let n=2;n<50;n++)t[n]=t[n-1]+t[n-2];return{_tag:"Schedule",initial:te,step:(n,r)=>{let o=Math.min(r.iterations,t.length-1),s=Le(e,t[o]);return Y(s,s)}}}function sn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>r.iterations>=e?ee():t.step(n,r)})}function an(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>j(r.elapsed)>=j(e)?ee():t.step(n,r)})}function un(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=j(o.delay)>j(e)?e:o.delay;return Y(s,o.output)}})}function cn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=j(o.delay)<j(e)?e:o.delay;return Y(s,o.output)}})}function at(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>e(n)?t.step(n,r):ee()})}function it(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Done"||e(o.output)?o:ee()}})}function ln(e){return at(t=>!e(t))}function pn(e){return it(t=>!e(t))}function dn(e=.2){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=1-e+Math.random()*e*2,a=ae(j(o.delay)*s);return Y(a,o.output)}})}function fn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);if(o._tag==="Done")return o;let s=ae(Math.random()*j(e)),a=ot(o.delay,s);return Y(a,o.output)}})}function mn(e){return t=>{let n={inSecondPhase:!1,firstState:t.initial,secondState:e.initial};return{_tag:"Schedule",initial:{...te,meta:n},step:(r,o)=>{let s=o.meta??n;if(!s.inSecondPhase){let u=t.step(r,s.firstState);if(u._tag==="Continue"){let m=u.nextState??X(s.firstState,u.delay,r,u.output),T={...X(o,u.delay,r,u.output),meta:{...s,firstState:m}};return{_tag:"Continue",delay:u.delay,output:u.output,nextState:T}}let c=e.step(r,e.initial);if(c._tag==="Done")return ee();let d=c.nextState??X(e.initial,c.delay,r,c.output),p={...X(o,c.delay,r,c.output),meta:{inSecondPhase:!0,firstState:s.firstState,secondState:d}};return{_tag:"Continue",delay:c.delay,output:c.output,nextState:p}}let a=e.step(r,s.secondState);if(a._tag==="Done")return ee();let i=a.nextState??X(s.secondState,a.delay,r,a.output),l={...X(o,a.delay,r,a.output),meta:{...s,secondState:i}};return{_tag:"Continue",delay:a.delay,output:a.output,nextState:l}}}}}function gn(e,t){let n={firstState:e.initial,secondState:t.initial};return{_tag:"Schedule",initial:{...te,meta:n},step:(r,o)=>{let s=o.meta??n,a=e.step(r,s.firstState),i=t.step(r,s.secondState);if(a._tag==="Done"&&i._tag==="Done")return ee();let l=a._tag==="Continue"?a.nextState??X(s.firstState,a.delay,r,a.output):s.firstState,u=i._tag==="Continue"?i.nextState??X(s.secondState,i.delay,r,i.output):s.secondState,c=a._tag==="Continue"?j(a.delay):1/0,d=i._tag==="Continue"?j(i.delay):1/0,p=ae(Math.min(c,d)),m=[a._tag==="Continue"?a.output:void 0,i._tag==="Continue"?i.output:void 0],T={...X(o,p,r,m),meta:{firstState:l,secondState:u}};return{_tag:"Continue",delay:p,output:m,nextState:T}}}}function yn(e,t){let n={firstState:e.initial,secondState:t.initial};return{_tag:"Schedule",initial:{...te,meta:n},step:(r,o)=>{let s=o.meta??n,a=e.step(r,s.firstState),i=t.step(r,s.secondState);if(a._tag==="Done"||i._tag==="Done")return ee();let l=a.nextState??X(s.firstState,a.delay,r,a.output),u=i.nextState??X(s.secondState,i.delay,r,i.output),c=ae(Math.max(j(a.delay),j(i.delay))),d=[a.output,i.output],p={...X(o,c,r,d),meta:{firstState:l,secondState:u}};return{_tag:"Continue",delay:c,output:d,nextState:p}}}}function ea(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Done"?ee():Y(o.delay,e(o.output))}})}function ta(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Continue"&&e(o.output,r),o}})}function wn(e){return t=>({_tag:"Schedule",initial:t.initial,step:(n,r)=>{let o=t.step(n,r);return o._tag==="Done"?o:Y(e(o.delay,o.output),o.output)}})}function Lo(e){let t=e.initial;return{next(n){let r=e.step(n,t);return r._tag==="Done"?{done:!0}:(t=r.nextState??X(t,r.delay,n,r.output),{done:!1,value:{delay:r.delay,output:r.output}})}}}function hn(e,t=100){let n=[],r=Lo(e);for(let o=0;o<t;o++){let s=r.next(void 0);if(s.done)break;n.push(s.value.delay)}return n}function na(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Schedule"}function oe(e){return{...e,pipe(t){let n=t(e);return na(n)?oe(n):n}}}var Wo=e=>oe(tn(e)),ra=(e,t)=>oe(nn(e,t)),oa=e=>oe(rn(e)),sa=e=>oe(on(e)),aa=e=>oe(en(e)),ia=()=>oe(Zt()),ua=()=>oe(Qs()),ca=(e,t)=>oe(gn(e,t)),la=(e,t)=>oe(yn(e,t)),Bo={forever:ia,once:ua,recurs:aa,stop:Zs,spaced:Wo,fixed:Wo,exponential:ra,linear:oa,fibonacci:sa,upTo:sn,upToElapsed:an,maxDelay:un,minDelay:cn,whileInput:at,whileOutput:it,untilInput:ln,untilOutput:pn,jittered:dn,addDelay:fn,andThen:mn,union:ca,intersect:la,map:ea,tap:ta,modifyDelay:wn,run:Lo,delays:hn};0&&(module.exports={CircuitOpenError,Duration,Match,STEP_TIMEOUT_MARKER,Schedule,TaggedError,UnwrapError,addDelay,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,days,defaultUnexpectedErrorMapper,defaultValidationErrorMapper,delays,deserializeCause,deserializeEntry,deserializeMeta,deserializeResult,deserializeState,envPolicy,err,errOutcome,exhaustive,exponential,fibonacci,forever,from,fromNullable,fromPromise,getPendingApprovals,getStepTimeoutMeta,hasPendingApproval,hours,hydrate,injectApproval,intersect,isApprovalRejected,isBatchProcessingError,isCircuitOpenError,isDuration,isErr,isInvalidBatchConfigError,isMigrationError,isOk,isOneOf,isPendingApproval,isQueueFullError,isRateLimitExceededError,isResourceCleanupError,isSagaCompensationError,isSerializedResult,isStepComplete,isStepTimeoutError,isTag,isUnexpectedError,isValidationError,isVersionIncompatibleError,jittered,linear,map,mapError,mapErrorTry,mapTry,match,matchOrElse,matchTag,matchTags,matchValue,maxDelay,mergePolicies,migrateState,millis,minDelay,minutes,modifyDelay,ok,okOutcome,orElse,orElseAsync,orElseValue,parseState,parseVersionedState,partition,pendingApproval,processInBatches,quickVisualize,rateLimiterPresets,recover,recoverAsync,recurs,renderDiff,requireFields,retryPolicies,retryPolicy,run,runSaga,scheduleAndThen,scheduleUnion,seconds,sendWebhookResponse,serializeCause,serializeEntry,serializeMeta,serializeResult,serializeState,servicePolicies,spaced,stepOptions,stringifyState,stringifyVersionedState,tap,tapError,throwOutcome,timeoutPolicies,timeoutPolicy,toDays,toHours,toMillis,toMinutes,toSeconds,toWebhookRequest,tryAsync,unless,unlessOr,untilInput,untilOutput,unwrap,unwrapOr,unwrapOrElse,upTo,upToElapsed,validationError,when,whenOr,whileInput,whileOutput,withAutotelTracing,withPolicies,withPolicy,withScope});
|
|
10
10
|
//# sourceMappingURL=index.cjs.map
|