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