@jagreehal/workflow 1.8.0 → 1.10.0

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