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