@uploadista/core 0.2.0 → 1.0.0-beta.3
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/{checksum-BjP9nb5b.mjs → checksum-BRjFmTRk.mjs} +2 -2
- package/dist/{checksum-BjP9nb5b.mjs.map → checksum-BRjFmTRk.mjs.map} +1 -1
- package/dist/{checksum-B7RDiO7V.cjs → checksum-BrjQ8GJL.cjs} +1 -1
- package/dist/errors/index.cjs +1 -1
- package/dist/errors/index.d.cts +1 -1
- package/dist/errors/index.d.mts +1 -1
- package/dist/errors/index.mjs +1 -1
- package/dist/flow/index.cjs +1 -1
- package/dist/flow/index.d.cts +3 -2
- package/dist/flow/index.d.mts +8 -5
- package/dist/flow/index.mjs +1 -1
- package/dist/generate-id-BAMRQzMr.d.cts +34 -0
- package/dist/generate-id-BAMRQzMr.d.cts.map +1 -0
- package/dist/generate-id-DuZwLm4m.d.mts +34 -0
- package/dist/generate-id-DuZwLm4m.d.mts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +8 -5
- package/dist/index.d.mts +8 -5
- package/dist/index.mjs +1 -1
- package/dist/middleware-BghazxzH.d.cts +4129 -0
- package/dist/middleware-BghazxzH.d.cts.map +1 -0
- package/dist/middleware-CYizzAhP.d.mts +4129 -0
- package/dist/middleware-CYizzAhP.d.mts.map +1 -0
- package/dist/resolve-upload-metadata-CYl2PHIs.d.mts +4542 -0
- package/dist/resolve-upload-metadata-CYl2PHIs.d.mts.map +1 -0
- package/dist/resolve-upload-metadata-D0qFuyWc.d.cts +4542 -0
- package/dist/resolve-upload-metadata-D0qFuyWc.d.cts.map +1 -0
- package/dist/run-args-CM14Vtzu.cjs +1 -0
- package/dist/run-args-DSKHoSWs.mjs +2 -0
- package/dist/run-args-DSKHoSWs.mjs.map +1 -0
- package/dist/{stream-limiter-BCFULdAM.d.cts → stream-limiter-7wkBVLWT.d.mts} +2 -2
- package/dist/{stream-limiter-BCFULdAM.d.cts.map → stream-limiter-7wkBVLWT.d.mts.map} +1 -1
- package/dist/{stream-limiter-DZ22uIqf.cjs → stream-limiter-B-Y0DTgA.cjs} +1 -1
- package/dist/{stream-limiter-CTJPEJqE.mjs → stream-limiter-CvDuNIyd.mjs} +2 -2
- package/dist/{stream-limiter-CTJPEJqE.mjs.map → stream-limiter-CvDuNIyd.mjs.map} +1 -1
- package/dist/{stream-limiter-Bi7OTbRp.d.mts → stream-limiter-D1KC-6pK.d.cts} +2 -2
- package/dist/{stream-limiter-Bi7OTbRp.d.mts.map → stream-limiter-D1KC-6pK.d.cts.map} +1 -1
- package/dist/streams/index.cjs +1 -1
- package/dist/streams/index.d.cts +1 -1
- package/dist/streams/index.d.mts +2 -2
- package/dist/streams/index.mjs +1 -1
- package/dist/testing/index.cjs +1 -1
- package/dist/testing/index.d.cts +2 -1
- package/dist/testing/index.d.cts.map +1 -1
- package/dist/testing/index.d.mts +7 -4
- package/dist/testing/index.d.mts.map +1 -1
- package/dist/testing/index.mjs +1 -1
- package/dist/{throttle-Da0OA8JT.d.cts → throttle-3FRcr7MU.d.mts} +4 -34
- package/dist/throttle-3FRcr7MU.d.mts.map +1 -0
- package/dist/{throttle-ibiT6E4U.d.mts → throttle-BlH27EGu.d.cts} +4 -34
- package/dist/throttle-BlH27EGu.d.cts.map +1 -0
- package/dist/{throttle-KnkRgZPi.cjs → throttle-Dp59f37i.cjs} +1 -1
- package/dist/{throttle-CnDa3v1k.mjs → throttle-TFY-V41R.mjs} +2 -2
- package/dist/{throttle-CnDa3v1k.mjs.map → throttle-TFY-V41R.mjs.map} +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.mts +3 -5
- package/dist/types/index.mjs +1 -1
- package/dist/upload/index.cjs +1 -1
- package/dist/upload/index.d.cts +1 -1
- package/dist/upload/index.d.mts +4 -4
- package/dist/upload/index.mjs +1 -1
- package/dist/upload-strategy-negotiator-0-dpNIce.d.cts +455 -0
- package/dist/upload-strategy-negotiator-0-dpNIce.d.cts.map +1 -0
- package/dist/upload-strategy-negotiator-BR_o1Ez8.cjs +1 -0
- package/dist/upload-strategy-negotiator-C9MeoOnW.mjs +2 -0
- package/dist/upload-strategy-negotiator-C9MeoOnW.mjs.map +1 -0
- package/dist/upload-strategy-negotiator-CEnlfVgJ.d.mts +455 -0
- package/dist/upload-strategy-negotiator-CEnlfVgJ.d.mts.map +1 -0
- package/dist/{uploadista-error-B-geDgi8.cjs → uploadista-error-CZx1JU_L.cjs} +3 -1
- package/dist/{uploadista-error-Fsfvr2Bb.mjs → uploadista-error-DQ7V1FlX.mjs} +3 -1
- package/dist/uploadista-error-DQ7V1FlX.mjs.map +1 -0
- package/dist/{uploadista-error-BragVhIs.d.mts → uploadista-error-LtiZn-R_.d.mts} +2 -2
- package/dist/{uploadista-error-BragVhIs.d.mts.map → uploadista-error-LtiZn-R_.d.mts.map} +1 -1
- package/dist/{uploadista-error-Cj_pAFck.d.cts → uploadista-error-eZtG4iyf.d.cts} +2 -2
- package/dist/{uploadista-error-Cj_pAFck.d.cts.map → uploadista-error-eZtG4iyf.d.cts.map} +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.d.cts +2 -1
- package/dist/utils/index.d.mts +3 -2
- package/dist/utils/index.mjs +1 -1
- package/dist/websocket-Br0ijEZA.cjs +1 -0
- package/dist/websocket-DftnHFfN.mjs +2 -0
- package/dist/websocket-DftnHFfN.mjs.map +1 -0
- package/package.json +3 -3
- package/src/errors/uploadista-error.ts +11 -1
- package/src/flow/README.md +115 -0
- package/src/flow/flow-engine.ts +36 -2
- package/src/flow/flow-queue-store.ts +155 -0
- package/src/flow/flow-queue.ts +640 -0
- package/src/flow/index.ts +4 -0
- package/src/flow/types/flow-queue-item.ts +154 -0
- package/src/types/data-store.ts +3 -3
- package/src/types/kv-store.ts +31 -1
- package/src/upload/write-to-store.ts +24 -29
- package/tests/flow-queue-store.test.ts +150 -0
- package/tests/flow-queue.test.ts +308 -0
- package/dist/resolve-upload-metadata-BUVl1LoS.d.cts +0 -8723
- package/dist/resolve-upload-metadata-BUVl1LoS.d.cts.map +0 -1
- package/dist/resolve-upload-metadata-MPDmDfOZ.d.mts +0 -8723
- package/dist/resolve-upload-metadata-MPDmDfOZ.d.mts.map +0 -1
- package/dist/run-args-WD1otVrz.mjs +0 -2
- package/dist/run-args-WD1otVrz.mjs.map +0 -1
- package/dist/run-args-g74p8pEZ.cjs +0 -1
- package/dist/throttle-Da0OA8JT.d.cts.map +0 -1
- package/dist/throttle-ibiT6E4U.d.mts.map +0 -1
- package/dist/upload-strategy-negotiator-BuxPf1sa.mjs +0 -2
- package/dist/upload-strategy-negotiator-BuxPf1sa.mjs.map +0 -1
- package/dist/upload-strategy-negotiator-DfiQ0Fy0.cjs +0 -1
- package/dist/uploadista-error-Fsfvr2Bb.mjs.map +0 -1
- package/dist/websocket-Avz4T8YB.cjs +0 -1
- package/dist/websocket-CdgVhVJs.mjs +0 -2
- package/dist/websocket-CdgVhVJs.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-upload-metadata-D0qFuyWc.d.cts","names":[],"sources":["../src/flow/circuit-breaker.ts","../src/flow/circuit-breaker-store.ts","../src/flow/distributed-circuit-breaker.ts","../src/flow/edge.ts","../src/flow/flow.ts","../src/flow/input-type-registry.ts","../src/flow/output-type-registry.ts","../src/flow/node-types/index.ts","../src/flow/dead-letter-queue.ts","../src/flow/flow-queue-store.ts","../src/flow/flow-engine.ts","../src/flow/flow-queue.ts","../src/flow/nodes/input-node.ts","../src/flow/types/flow-file.ts","../src/flow/types/type-utils.ts","../src/flow/nodes/transform-node.ts","../src/flow/parallel-scheduler.ts","../src/flow/plugins/credential-provider.ts","../src/flow/plugins/document-ai-plugin.ts","../src/flow/plugins/document-plugin.ts","../src/flow/plugins/image-ai-plugin.ts","../src/flow/plugins/types/optimize-node.ts","../src/flow/plugins/types/resize-node.ts","../src/flow/plugins/types/transform-image-node.ts","../src/flow/plugins/image-plugin.ts","../src/flow/plugins/types/describe-video-node.ts","../src/flow/plugins/types/extract-frame-video-node.ts","../src/flow/plugins/types/resize-video-node.ts","../src/flow/plugins/types/transcode-video-node.ts","../src/flow/plugins/types/trim-video-node.ts","../src/flow/plugins/video-plugin.ts","../src/flow/plugins/virus-scan-plugin.ts","../src/flow/plugins/zip-plugin.ts","../src/flow/plugins/plugins.ts","../src/flow/plugins/types/describe-image-node.ts","../src/flow/plugins/types/remove-background-node.ts","../src/flow/type-guards.ts","../src/flow/typed-flow.ts","../src/flow/types/run-args.ts","../src/flow/utils/file-naming.ts","../src/flow/utils/resolve-upload-metadata.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./websocket-Br0ijEZA.cjs`),t=require(`./uploadista-error-CZx1JU_L.cjs`),n=require(`./upload-strategy-negotiator-BR_o1Ez8.cjs`);let r=require(`effect`),i=require(`zod`),a=require(`micromustache`);const o={enabled:!1,failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:6e4,fallback:{type:`fail`}},s=`uploadista:circuit-breaker:`;function c(t){let n=e=>`${s}${e}`,i=i=>r.Effect.gen(function*(){let r=n(i),a=yield*t.get(r);if(a===null)return null;try{return e.L.deserialize(a)}catch{return yield*t.delete(r),null}}),a=(r,i)=>{let a=n(r),o=e.L.serialize(i);return t.set(a,o)};return{getState:i,setState:a,incrementFailures:(t,n)=>r.Effect.gen(function*(){let r=Date.now(),o=yield*i(t);return o===null&&(o=e.B({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:n})),o=r-o.windowStart>n?{...o,failureCount:1,windowStart:r}:{...o,failureCount:o.failureCount+1},yield*a(t,o),o.failureCount}),resetFailures:e=>r.Effect.gen(function*(){let t=yield*i(e);t!==null&&(yield*a(e,{...t,failureCount:0,windowStart:Date.now()}))}),incrementHalfOpenSuccesses:e=>r.Effect.gen(function*(){let t=yield*i(e);if(t===null)return 1;let n={...t,halfOpenSuccesses:t.halfOpenSuccesses+1};return yield*a(e,n),n.halfOpenSuccesses}),getAllStats:()=>r.Effect.gen(function*(){let e=new Map;if(!t.list)return e;let n=yield*t.list(s),r=Date.now();for(let t of n){let n=t,a=yield*i(n);if(a!==null){let t=r-a.lastStateChange;e.set(n,{nodeType:n,state:a.state,failureCount:a.failureCount,halfOpenSuccesses:a.halfOpenSuccesses,timeSinceLastStateChange:t,timeUntilHalfOpen:a.state===`open`?Math.max(0,a.config.resetTimeout-t):void 0})}}return e}),delete:e=>t.delete(n(e))}}function l(){let t=new Map;return{getState:e=>r.Effect.succeed(t.get(e)??null),setState:(e,n)=>r.Effect.sync(()=>{t.set(e,n)}),incrementFailures:(n,i)=>r.Effect.sync(()=>{let r=Date.now(),a=t.get(n);return a===void 0&&(a=e.B({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:i})),a=r-a.windowStart>i?{...a,failureCount:1,windowStart:r}:{...a,failureCount:a.failureCount+1},t.set(n,a),a.failureCount}),resetFailures:e=>r.Effect.sync(()=>{let n=t.get(e);n!==void 0&&t.set(e,{...n,failureCount:0,windowStart:Date.now()})}),incrementHalfOpenSuccesses:e=>r.Effect.sync(()=>{let n=t.get(e);if(n===void 0)return 1;let r={...n,halfOpenSuccesses:n.halfOpenSuccesses+1};return t.set(e,r),r.halfOpenSuccesses}),getAllStats:()=>r.Effect.sync(()=>{let e=new Map,n=Date.now();for(let[r,i]of t){let t=n-i.lastStateChange;e.set(r,{nodeType:r,state:i.state,failureCount:i.failureCount,halfOpenSuccesses:i.halfOpenSuccesses,timeSinceLastStateChange:t,timeUntilHalfOpen:i.state===`open`?Math.max(0,i.config.resetTimeout-t):void 0})}return e}),delete:e=>r.Effect.sync(()=>{t.delete(e)})}}const u=r.Layer.effect(e.z,r.Effect.gen(function*(){return c(yield*e.O)})),d=r.Layer.succeed(e.z,l());var f=class{eventHandler;nodeType;config;store;constructor(e,t,n){this.nodeType=e,this.config={enabled:t.enabled??o.enabled,failureThreshold:t.failureThreshold??o.failureThreshold,resetTimeout:t.resetTimeout??o.resetTimeout,halfOpenRequests:t.halfOpenRequests??o.halfOpenRequests,windowDuration:t.windowDuration??o.windowDuration,fallback:t.fallback??o.fallback},this.store=n}setEventHandler(e){this.eventHandler=e}allowRequest(){let t=this;return r.Effect.gen(function*(){if(!t.config.enabled)return{allowed:!0,state:`closed`,failureCount:0};let n=yield*t.store.getState(t.nodeType),r=Date.now();if(n===null&&(n=e.B({failureThreshold:t.config.failureThreshold,resetTimeout:t.config.resetTimeout,halfOpenRequests:t.config.halfOpenRequests,windowDuration:t.config.windowDuration}),yield*t.store.setState(t.nodeType,n)),n.state===`open`&&r-n.lastStateChange>=t.config.resetTimeout){let e=n.state;n={...n,state:`half-open`,halfOpenSuccesses:0,lastStateChange:r},yield*t.store.setState(t.nodeType,n),yield*t.emitEvent(e,`half-open`,n.failureCount)}return{allowed:n.state!==`open`,state:n.state,failureCount:n.failureCount}})}getState(){let e=this;return r.Effect.gen(function*(){return(yield*e.store.getState(e.nodeType))?.state??`closed`})}getFailureCount(){let e=this;return r.Effect.gen(function*(){return(yield*e.store.getState(e.nodeType))?.failureCount??0})}recordSuccess(){let e=this;return r.Effect.gen(function*(){if(!e.config.enabled)return;let t=yield*e.store.getState(e.nodeType);t!==null&&(t.state===`half-open`?(yield*e.store.incrementHalfOpenSuccesses(e.nodeType))>=e.config.halfOpenRequests&&(yield*e.transitionTo(`closed`,t.failureCount)):t.state===`closed`&&(yield*e.store.resetFailures(e.nodeType)))})}recordFailure(e){let t=this;return r.Effect.gen(function*(){if(!t.config.enabled)return;let e=yield*t.store.getState(t.nodeType);if(e===null||e.state===`closed`){let e=yield*t.store.incrementFailures(t.nodeType,t.config.windowDuration);e>=t.config.failureThreshold&&(yield*t.transitionTo(`open`,e))}else e.state===`half-open`&&(yield*t.transitionTo(`open`,e.failureCount))})}getFallback(){return this.config.fallback}reset(){let t=this;return r.Effect.gen(function*(){let n=(yield*t.store.getState(t.nodeType))?.state??`closed`;yield*t.store.setState(t.nodeType,e.B({failureThreshold:t.config.failureThreshold,resetTimeout:t.config.resetTimeout,halfOpenRequests:t.config.halfOpenRequests,windowDuration:t.config.windowDuration})),n!==`closed`&&(yield*t.emitEvent(n,`closed`,0))})}transitionTo(e,t){let n=this;return r.Effect.gen(function*(){let r=yield*n.store.getState(n.nodeType),i=r?.state??`closed`;if(i===e)return;let a=Date.now(),o={state:e,failureCount:e===`closed`?0:t,lastStateChange:a,halfOpenSuccesses:0,windowStart:e===`closed`?a:r?.windowStart??a,config:{failureThreshold:n.config.failureThreshold,resetTimeout:n.config.resetTimeout,halfOpenRequests:n.config.halfOpenRequests,windowDuration:n.config.windowDuration}};yield*n.store.setState(n.nodeType,o),yield*n.emitEvent(i,e,t)})}emitEvent(e,t,n){let i=this;return r.Effect.gen(function*(){i.eventHandler&&(yield*i.eventHandler({nodeType:i.nodeType,previousState:e,newState:t,timestamp:Date.now(),failureCount:n}))})}},p=class{breakers=new Map;eventHandler;constructor(e){this.store=e}setEventHandler(e){this.eventHandler=e;for(let t of this.breakers.values())t.setEventHandler(e)}getOrCreate(e,t){let n=this.breakers.get(e);return n||(n=new f(e,t,this.store),this.eventHandler&&n.setEventHandler(this.eventHandler),this.breakers.set(e,n)),n}get(e){return this.breakers.get(e)}getAllStats(){return this.store.getAllStats()}resetAll(){let e=this;return r.Effect.gen(function*(){for(let t of e.breakers.values())yield*t.reset()})}clear(){this.breakers.clear()}};function m({source:e,target:t,sourcePort:n,targetPort:r}){return{source:e,target:t,sourcePort:n,targetPort:r}}let h=function(e){return e.JobStart=`job-start`,e.JobEnd=`job-end`,e.FlowStart=`flow-start`,e.FlowEnd=`flow-end`,e.FlowError=`flow-error`,e.FlowPause=`flow-pause`,e.FlowCancel=`flow-cancel`,e.NodeStart=`node-start`,e.NodeEnd=`node-end`,e.NodePause=`node-pause`,e.NodeResume=`node-resume`,e.NodeError=`node-error`,e.NodeStream=`node-stream`,e.NodeResponse=`node-response`,e.DlqItemAdded=`dlq-item-added`,e.DlqRetryStart=`dlq-retry-start`,e.DlqRetrySuccess=`dlq-retry-success`,e.DlqRetryFailed=`dlq-retry-failed`,e.DlqItemExhausted=`dlq-item-exhausted`,e.DlqItemResolved=`dlq-item-resolved`,e}({});var g=class{types;constructor(){this.types=new Map}register(e){if(this.types.has(e.id))throw t.n.fromCode(`VALIDATION_ERROR`,{body:`Input type "${e.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:e.id}});this.types.set(e.id,e)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(e,n){let r=this.types.get(e);if(!r)return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Input type "${e}" is not registered`,details:{typeId:e}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for input type "${e}"`,cause:n,details:{typeId:e,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const _=new g;function v(e,t){return _.validate(e,t)}var y=class{types;constructor(){this.types=new Map}register(e){if(this.types.has(e.id))throw t.n.fromCode(`VALIDATION_ERROR`,{body:`Output type "${e.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:e.id}});this.types.set(e.id,e)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(e,n){let r=this.types.get(e);if(!r)return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Output type "${e}" is not registered`,details:{typeId:e}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for output type "${e}"`,cause:n,details:{typeId:e,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const b=new y;function x(e,t){return b.validate(e,t)}let S=function(e){return e.input=`input`,e.process=`process`,e.conditional=`conditional`,e.multiplex=`multiplex`,e.merge=`merge`,e}({});function C({id:e,name:n,description:i,type:a,inputSchema:o,outputSchema:s,run:c,condition:l,multiInput:u=!1,multiOutput:d=!1,pausable:f=!1,retry:p,inputTypeId:m,outputTypeId:h,keepOutput:g=!1,circuitBreaker:v,nodeTypeId:y}){return r.Effect.gen(function*(){return m&&!_.get(m)?yield*t.n.fromCode(`INVALID_INPUT_TYPE`,{body:`Input type "${m}" is not registered in inputTypeRegistry`,details:{inputTypeId:m,nodeId:e}}).toEffect():h&&!b.get(h)?yield*t.n.fromCode(`INVALID_OUTPUT_TYPE`,{body:`Output type "${h}" is not registered in outputTypeRegistry`,details:{outputTypeId:h,nodeId:e}}).toEffect():{id:e,name:n,description:i,type:a,inputTypeId:m,outputTypeId:h,keepOutput:g,inputSchema:o,outputSchema:s,pausable:f,run:({data:i,jobId:a,flowId:l,storageId:u,clientId:d})=>r.Effect.gen(function*(){let f=yield*c({data:yield*r.Effect.try({try:()=>o.parse(i),catch:r=>{let i=r instanceof Error?r.message:String(r);return t.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${e}) input validation failed: ${i}`,cause:r})}}),jobId:a,storageId:u,flowId:l,clientId:d});return f.type===`waiting`?{type:`waiting`,partialData:f.partialData,nodeType:h,nodeId:e}:{type:`complete`,data:yield*r.Effect.try({try:()=>s.parse(f.data),catch:r=>{let i=r instanceof Error?r.message:String(r);return t.n.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${e}) output validation failed: ${i}`,cause:r})}}),nodeType:h,nodeId:e}}),condition:l,multiInput:u,multiOutput:d,retry:p,circuitBreaker:v,nodeTypeId:y}})}const w=e=>({id:e.id,name:e.name,description:e.description,type:e.type,inputTypeId:e.inputTypeId,outputTypeId:e.outputTypeId,nodeTypeId:e.nodeTypeId}),T=e=>t=>t.nodeType===e,E=T(`storage-output-v1`),D=T(`streaming-input-v1`),O=e=>({type:`complete`,data:e}),k=e=>({type:`waiting`,partialData:e}),A=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var ee=class{typeChecker;constructor(e=A){this.typeChecker=e}validateConnection(e,t,n){return this.getCompatibleTypes(e.outputSchema,t.inputSchema)}getCompatibleTypes(e,t){return this.typeChecker(e,t)}validateFlow(e,t){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=r.get(e.source),i=r.get(e.target);if(!t){n.push(`Source node ${e.source} not found`);continue}if(!i){n.push(`Target node ${e.target} not found`);continue}this.validateConnection(t,i,e)||n.push(`Schema mismatch: ${t.id} output schema incompatible with ${i.id} input schema`)}return{isValid:n.length===0,errors:n}}getExpectedInputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.target===e){let e=r.get(t.source);if(e){let n=t.sourcePort||t.source;i[n]=e.outputSchema}}return i}getActualOutputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.source===e){let e=r.get(t.target);if(e){let n=t.targetPort||t.target;i[n]=e.inputSchema}}return i}validateData(e,t){try{return t.parse(e),{isValid:!0,errors:[]}}catch(e){return e instanceof Error&&`errors`in e?{isValid:!1,errors:e.errors.map(e=>`${e.path.join(`.`)}: ${e.message}`)}:{isValid:!1,errors:[e instanceof Error?e.message:`Validation failed`]}}}};function j(e){if(!e)return{type:``,fileName:``,metadata:void 0,metadataJson:void 0};let t={...e},n=String(t.type||t.mimeType||t[`content-type`]||``);n&&(t.type||=n,t.mimeType||=n);let r=String(t.fileName||t.originalName||t.name||``);return r&&(t.fileName||=r,t.originalName||=r,t.name||=r),{type:n,fileName:r,metadata:t,metadataJson:JSON.stringify(t)}}const M=i.z.object({operation:i.z.literal(`init`),storageId:i.z.string(),metadata:i.z.record(i.z.string(),i.z.any()).optional()}),N=i.z.object({operation:i.z.literal(`finalize`),uploadId:i.z.string()}),P=i.z.object({operation:i.z.literal(`url`),url:i.z.string(),storageId:i.z.string().optional(),metadata:i.z.record(i.z.string(),i.z.any()).optional()}),F=i.z.union([M,N,P]),te=i.z.object({allowedMimeTypes:i.z.array(i.z.string()).optional(),minSize:i.z.number().positive().optional(),maxSize:i.z.number().positive().optional()});function ne(e,n){return r.Effect.gen(function*(){if(n){if(n.allowedMimeTypes&&n.allowedMimeTypes.length>0&&!n.allowedMimeTypes.some(t=>{if(t.endsWith(`/*`)){let n=t.slice(0,-2);return e.type.startsWith(n)}return e.type===t}))throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File type "${e.type}" is not allowed. Allowed types: ${n.allowedMimeTypes.join(`, `)}`)}).toEffect();if(n.minSize!==void 0&&e.size<n.minSize)throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${e.size} bytes) is below minimum (${n.minSize} bytes)`)}).toEffect();if(n.maxSize!==void 0&&e.size>n.maxSize)throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${e.size} bytes) exceeds maximum (${n.maxSize} bytes)`)}).toEffect()}})}function re(i,a,o){let s=o?.keepOutput??!1;return r.Effect.gen(function*(){let o=yield*n.n;return yield*C({id:i,name:`Input`,description:`Handles file input through multiple methods - streaming upload (init/finalize) or direct URL fetch`,type:S.input,nodeTypeId:`input`,inputSchema:F,outputSchema:e.D,keepOutput:s,inputTypeId:z,outputTypeId:I,run:({data:e,flowId:s,jobId:c,clientId:l})=>r.Effect.gen(function*(){switch(e.operation){case`init`:{let t={storageId:e.storageId,size:e.metadata?.size||0,type:e.metadata?.mimeType||`application/octet-stream`,fileName:e.metadata?.originalName,lastModified:e.metadata?.size?Date.now():void 0,metadata:e.metadata?JSON.stringify(e.metadata):void 0,flow:{flowId:s,nodeId:i,jobId:c}};return k(yield*o.createUpload(t,l))}case`finalize`:{let t=yield*o.getUpload(e.uploadId),{type:n}=j(t.metadata);return yield*ne({type:n,size:t.size||0},a),O(t)}case`url`:{let t=yield*n.o(e.url),r=yield*n.a(t),u=e.metadata?.mimeType||t.headers.get(`content-type`)||`application/octet-stream`,d=e.metadata?.size||Number(t.headers.get(`content-length`)||0),f=e.metadata?.originalName||e.url.split(`/`).pop()||`file`;yield*ne({type:u,size:d},a);let p=new ReadableStream({start(e){e.enqueue(new Uint8Array(r)),e.close()}}),m={storageId:e.storageId||`buffer`,size:d,type:u,fileName:f,lastModified:Date.now(),metadata:e.metadata?JSON.stringify(e.metadata):void 0};return O({...yield*o.upload(m,l,p),flow:{flowId:s,nodeId:i,jobId:c}})}default:throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`Invalid operation`)}).toEffect()}})})})}const I=`storage-output-v1`,L=`ocr-output-v1`,R=`image-description-output-v1`,z=`streaming-input-v1`,ie=i.z.object({extractedText:i.z.string(),format:i.z.enum([`markdown`,`plain`,`structured`]),taskType:i.z.enum([`convertToMarkdown`,`freeOcr`,`parseFigure`,`locateObject`]),confidence:i.z.number().min(0).max(1).optional()}),ae=i.z.object({description:i.z.string(),confidence:i.z.number().min(0).max(1).optional(),metadata:i.z.record(i.z.string(),i.z.unknown()).optional()});_.register({id:z,schema:F,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),b.register({id:I,schema:e.D,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),b.register({id:L,schema:ie,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),b.register({id:R,schema:ae,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});const B={enabled:!0,maxRetries:3,backoff:{type:`exponential`,initialDelayMs:1e3,maxDelayMs:3e5,multiplier:2,jitter:!0},ttlMs:6048e5};function V(e,t){switch(e.type){case`immediate`:return 0;case`fixed`:return e.delayMs;case`exponential`:{let n=e.initialDelayMs*e.multiplier**t,r=Math.min(n,e.maxDelayMs);if(e.jitter){let e=.5+Math.random();return Math.floor(r*e)}return r}default:return 0}}function oe(e,t){return!t.enabled||t.nonRetryableErrors?.includes(e)?!1:t.retryableErrors&&t.retryableErrors.length>0?t.retryableErrors.includes(e):!0}function se(e,t){if(!(t===void 0||t<=0))return new Date(e.getTime()+t)}var H=class e extends r.Context.Tag(`DeadLetterQueueService`)(){static optional=r.Effect.serviceOption(e)};function ce(){return r.Effect.gen(function*(){let t=yield*e.k,n=()=>`dlq_${crypto.randomUUID()}`,i=e=>({...e,createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt),expiresAt:e.expiresAt?new Date(e.expiresAt):void 0,nextRetryAt:e.nextRetryAt?new Date(e.nextRetryAt):void 0,retryHistory:e.retryHistory.map(e=>({...e,attemptedAt:new Date(e.attemptedAt)}))}),a=()=>r.Effect.gen(function*(){if(!t.list)return[];let e=yield*t.list(),n=[];for(let a of e){let e=yield*r.Effect.catchAll(t.get(a),()=>r.Effect.succeed(null));e&&n.push(i(e))}return n});return{add:(e,i,a=B)=>r.Effect.gen(function*(){let r=n(),o=new Date,s={code:i.code||`UNKNOWN_ERROR`,message:i.body||i.message||`Unknown error`,nodeId:void 0,stack:i.stack},c=e.tasks.find(e=>e.status===`failed`);c&&(s.nodeId=c.nodeId);let l={};for(let t of e.tasks)t.result!==void 0&&(l[t.nodeId]=t.result);let u=oe(s.code,a),d;if(a.enabled&&u&&a.maxRetries>0){let e=V(a.backoff,0);d=new Date(o.getTime()+e)}let f={id:r,jobId:e.id,flowId:e.flowId,storageId:e.storageId,clientId:e.clientId,error:s,inputs:e.executionState?.inputs||{},nodeResults:l,failedAtNodeId:s.nodeId,retryCount:0,maxRetries:a.maxRetries,nextRetryAt:d,retryHistory:[],createdAt:o,updatedAt:o,expiresAt:se(o,a.ttlMs),status:u&&a.enabled?`pending`:`exhausted`};return yield*t.set(r,f),f}),get:e=>r.Effect.gen(function*(){return i(yield*t.get(e))}),getOption:e=>r.Effect.gen(function*(){let n=yield*r.Effect.either(t.get(e));return n._tag===`Left`?n.left.code===`FILE_NOT_FOUND`?r.Option.none():yield*r.Effect.fail(n.left):r.Option.some(i(n.right))}),delete:e=>t.delete(e),list:(e={})=>r.Effect.gen(function*(){let t=yield*a(),{status:n,flowId:r,clientId:i,limit:o=50,offset:s=0}=e,c=t;n&&(c=c.filter(e=>e.status===n)),r&&(c=c.filter(e=>e.flowId===r)),i&&(c=c.filter(e=>e.clientId===i)),c.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime());let l=c.length;return{items:c.slice(s,s+o),total:l}}),update:(e,n)=>r.Effect.gen(function*(){let r={...i(yield*t.get(e)),...n,updatedAt:new Date};return yield*t.set(e,r),r}),markRetrying:e=>r.Effect.gen(function*(){let n={...i(yield*t.get(e)),status:`retrying`,updatedAt:new Date};return yield*t.set(e,n),n}),recordRetryFailure:(e,n,a)=>r.Effect.gen(function*(){let r=i(yield*t.get(e)),o=new Date,s=r.retryCount+1,c=[...r.retryHistory,{attemptedAt:o,error:n,durationMs:a}],l=`pending`,u;if(s>=r.maxRetries)l=`exhausted`,u=void 0;else{let e=V(B.backoff,s);u=new Date(o.getTime()+e)}let d={...r,retryCount:s,retryHistory:c,status:l,nextRetryAt:u,updatedAt:o};return yield*t.set(e,d),d}),markResolved:e=>r.Effect.gen(function*(){let n={...i(yield*t.get(e)),status:`resolved`,nextRetryAt:void 0,updatedAt:new Date};return yield*t.set(e,n),n}),getScheduledRetries:(e=100)=>r.Effect.gen(function*(){let t=yield*a(),n=new Date;return t.filter(e=>e.status===`pending`&&e.nextRetryAt&&e.nextRetryAt<=n).sort((e,t)=>(e.nextRetryAt?.getTime()||0)-(t.nextRetryAt?.getTime()||0)).slice(0,e)}),cleanup:(e={})=>r.Effect.gen(function*(){let n=yield*a(),{olderThan:i,status:o}=e,s=new Date,c=0;for(let e of n){let n=!1;e.expiresAt&&e.expiresAt<=s&&(n=!0),i&&e.createdAt<=i&&(o?n=e.status===o:(e.status===`exhausted`||e.status===`resolved`)&&(n=!0)),n&&(yield*r.Effect.catchAll(t.delete(e.id),()=>r.Effect.succeed(void 0)),c++)}return{deleted:c}}),getStats:()=>r.Effect.gen(function*(){let e=yield*a(),t={pending:0,retrying:0,exhausted:0,resolved:0},n={},r,i=0;for(let a of e)t[a.status]++,n[a.flowId]=(n[a.flowId]||0)+1,(!r||a.createdAt<r)&&(r=a.createdAt),i+=a.retryCount;let o=e.length>0?i/e.length:0;return{totalItems:e.length,byStatus:t,byFlow:n,oldestItem:r,averageRetryCount:o}})}})}const le=r.Layer.effect(H,ce());var ue=class{maxConcurrency;constructor(e={}){this.maxConcurrency=e.maxConcurrency??4}groupNodesByExecutionLevel(e,t){let n={},r={};e.forEach(e=>{n[e.id]=[],r[e.id]=0}),t.forEach(e=>{n[e.source]?.push(e.target),r[e.target]=(r[e.target]||0)+1});let i=[],a=new Set,o=0;for(;a.size<e.length;){let e=Object.keys(r).filter(e=>r[e]===0&&!a.has(e));if(e.length===0)throw Error(`Cycle detected in flow graph - cannot execute in parallel`);i.push({level:o++,nodes:e}),e.forEach(e=>{a.add(e),delete r[e],n[e]?.forEach(e=>{r[e]!==void 0&&r[e]--})})}return i}executeNodesInParallel(e){return r.Effect.all(e.map(e=>e()),{concurrency:this.maxConcurrency})}canExecuteInParallel(e,t,n){return e.every(e=>(n[e]||[]).every(e=>t.has(e)))}getStats(){return{maxConcurrency:this.maxConcurrency}}};function U(e){return t=>{if(t.nodeType!==e)return!1;let n=b.get(e);return n?n.schema.safeParse(t.data).success:!1}}function de(t){return!t||typeof t!=`object`?!1:e.D.safeParse(t).success}const fe=U(`storage-output-v1`),pe=U(L),me=U(R);function W(e,t){return e.filter(t)}function he(e,n){return r.Effect.gen(function*(){let r=W(e,n);return r.length===0?yield*t.n.fromCode(`OUTPUT_NOT_FOUND`,{body:`No output of the specified type was found in the flow results`}).toEffect():r.length>1?yield*t.n.fromCode(`MULTIPLE_OUTPUTS_FOUND`,{body:`Found ${r.length} outputs of the specified type, expected exactly one`,details:{foundCount:r.length,nodeIds:r.map(e=>e.nodeId)}}).toEffect():r[0]})}function ge(e,t){return W(e,t)[0]}function _e(e,t){return e.find(e=>e.nodeId===t)}function ve(e,t){return e.some(t)}function ye(e){return e.operation===`init`}function be(e){return e.operation===`finalize`}function xe(e){return e.operation===`url`}function Se(e){return e.operation===`init`||e.operation===`url`}const Ce=e=>({id:e.id,name:e.name,nodes:e.nodes.map(w),edges:e.edges});function G(n){return r.Effect.gen(function*(){let a=yield*r.Effect.all(n.nodes.map(e=>r.Effect.isEffect(e)?e:r.Effect.succeed(e))),{flowId:o,name:s,onEvent:c,checkJobStatus:l,edges:u,inputSchema:d,outputSchema:f,typeChecker:m,circuitBreaker:g}=n,_=a,v=new ee(m),y=e=>{let t=e.circuitBreaker,n=e.nodeTypeId?g?.nodeTypeOverrides?.[e.nodeTypeId]:void 0,r=g?.defaults;if(!(!t&&!n&&!r))return{...r,...n,...t}},b=()=>{let e={},t={},n={};return _.forEach(r=>{e[r.id]=[],n[r.id]=[],t[r.id]=0}),u.forEach(r=>{e[r.source]?.push(r.target),n[r.target]?.push(r.source),t[r.target]=(t[r.target]||0)+1}),{graph:e,reverseGraph:n,inDegree:t}},x=new Map;u.forEach(e=>{let t=x.get(e.target)||[];t.push({source:e.source,sourcePort:e.sourcePort,targetPort:e.targetPort}),x.set(e.target,t)});let S=new Map,C=()=>{let{graph:e,inDegree:t}=b(),n=[],r=[];for(Object.keys(t).forEach(e=>{t[e]===0&&n.push(e)});n.length>0;){let i=n.shift();if(!i)throw Error(`No current node found`);r.push(i),e[i]?.forEach(e=>{t[e]=(t[e]||0)-1,t[e]===0&&n.push(e)})}return r},w=(e,t)=>{if(!e.condition)return r.Effect.succeed(!0);let{field:n,operator:i,value:a}=e.condition,o=t,s=o?.metadata?.[n]||o?.[n],c=(()=>{switch(i){case`equals`:return s===a;case`notEquals`:return s!==a;case`greaterThan`:return Number(s)>Number(a);case`lessThan`:return Number(s)<Number(a);case`contains`:return String(s).includes(String(a));case`startsWith`:return String(s).startsWith(String(a));default:return!0}})();return r.Effect.succeed(c)},T=(e,t)=>{let n=x.get(e)||[],r={};return n.forEach(e=>{let n=e.source,i=t.get(n);if(i!==void 0){if(_.find(e=>e.id===n)?.type===`conditional`&&e.sourcePort){let t=S.get(n)?`true`:`false`;if(e.sourcePort!==t)return}r[n]=i}}),r},E=(e,t,n)=>{let r=x.get(e)||[];if(_.find(t=>t.id===e)?.type===`input`||r.length===0)return`execute`;let i=!1,a=!1,o=!1,s=!1;for(let e of r){let r=e.source;if(n.has(r)){a=!0;continue}if(t.get(r)===void 0){s=!0;continue}if(_.find(e=>e.id===r)?.type===`conditional`&&e.sourcePort){let t=S.get(r);if(t===void 0){s=!0;continue}let n=t?`true`:`false`;e.sourcePort===n?o=!0:i=!0}else o=!0}return o?`execute`:(i||a)&&!s?`skip`:s?`wait`:`execute`},D=e=>{let t=_.filter(e=>e.type===`input`),n={};return t.forEach(t=>{e&&typeof e==`object`&&t.id in e&&(n[t.id]=d.parse(e[t.id]))}),n},O=e=>!u.some(t=>t.source===e),k=e=>{let t=_.find(t=>t.id===e);return O(e)||t?.keepOutput===!0},A=e=>{let t=_.filter(e=>k(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},j=(e,t)=>{let n=_.filter(e=>k(e.id)),r=[];return n.forEach(n=>{let i=e.get(n.id);if(i!==void 0){let e=t.get(n.id);r.push({nodeId:n.id,nodeType:e,data:i,timestamp:new Date().toISOString()})}}),r},M=(t,n,i)=>r.Effect.gen(function*(){if(t.storage.id===n)return t;let a=yield*e.S,o=yield*a.getDataStore(t.storage.id,i),s=yield*a.getDataStore(n,i),c=yield*o.read(t.id),l=r.Stream.make(c),u={...t,storage:{id:n,type:t.storage.type}},d=yield*s.create(u);return yield*s.write({file_id:d.id,stream:l,offset:0},{}),d}),N=(e,i,a,s,u,d,f,p)=>r.Effect.gen(function*(){let m=u.get(e);if(!m)return yield*t.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(l){let e=yield*l(d);if(e===`paused`)return yield*t.n.fromCode(`FLOW_PAUSED`,{cause:`Flow ${o} was paused by user at job ${d}`}).toEffect();if(e===`cancelled`)return yield*t.n.fromCode(`FLOW_CANCELLED`,{cause:`Flow ${o} was cancelled by user at job ${d}`}).toEffect()}c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeStart,nodeName:m.name,nodeType:m.type}));let g=m.retry?.maxRetries??0,_=m.retry?.retryDelay??1e3,v=m.retry?.exponentialBackoff??!0,b=y(m),x=b?.enabled&&m.nodeTypeId&&p?p.getOrCreate(m.nodeTypeId,b):null;if(x){let{allowed:n,state:i,failureCount:s}=yield*x.allowRequest();if(!n){let n=x.getFallback();return yield*r.Effect.logWarning(`Circuit breaker OPEN for node type "${m.nodeTypeId}" - applying fallback`),n.type===`skip`?(c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name})),{nodeId:e,result:a[e],success:!0,waiting:!1}):n.type===`default`?(c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name,result:n.value})),{nodeId:e,result:n.value,success:!0,waiting:!1}):yield*t.n.fromCode(`CIRCUIT_BREAKER_OPEN`,{body:`Circuit breaker is open for node type "${m.name}"`,details:{nodeType:m.name,nodeId:e,state:i,failureCount:s}}).toEffect()}}let C=0,E=null;for(;C<=g;)try{let l,u={};if(m.type===`input`){if(l=a[e],l===void 0)return yield*r.Effect.logError(`Input node ${e} has no input data`),yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Input node ${e} has no input data`)}).toEffect()}else{if(u=T(e,s),Object.keys(u).length===0)return yield*r.Effect.logError(`Node ${e} has no input data`),yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${e} has no input data`)}).toEffect();if(m.multiInput)l=u;else{let n=Object.keys(u)[0];if(!n)return yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${e} has no input data`)}).toEffect();l=u[n]}}if(m.type===`conditional`){let t=yield*w(m,l);S.set(e,t)}let p=yield*m.run({data:l,inputs:u,jobId:d,flowId:o,storageId:i,clientId:f});if(p.type===`waiting`){let t=p.partialData;return c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodePause,nodeName:m.name,partialData:t})),{nodeId:e,result:t,success:!0,waiting:!0,nodeType:p.nodeType}}let g=p.data;if(k(e)&&(de(g)&&g.storage.id!==i&&(yield*r.Effect.logDebug(`Auto-persisting output node ${e} output from ${g.storage.id} to ${i}`),g=yield*M(g,i,f)),n.hooks?.onNodeOutput)){yield*r.Effect.logDebug(`Calling onNodeOutput hook for sink node ${e}`);let t=n.hooks.onNodeOutput({output:g,nodeId:e,flowId:o,jobId:d,storageId:i,clientId:f});g=yield*r.Effect.isEffect(t)?t:r.Effect.promise(()=>t)}return x&&(yield*x.recordSuccess()),c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name,result:g})),{nodeId:e,result:g,success:!0,waiting:!1,nodeType:p.nodeType}}catch(n){if(E=n instanceof t.n?n:t.n.fromCode(`FLOW_NODE_ERROR`,{cause:n}),x&&(yield*x.recordFailure(E.body)),C<g){C++;let t=v?_*2**(C-1):_;yield*r.Effect.logWarning(`Node ${e} (${m.name}) failed, retrying (${C}/${g}) after ${t}ms`),yield*r.Effect.sleep(t);continue}return c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeError,nodeName:m.name,error:E.body,retryCount:C})),yield*E.toEffect()}return E?yield*E.toEffect():yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Unexpected error in retry loop`)}).toEffect()}).pipe((()=>{let t=u.get(e),n=t?.nodeTypeId??t?.type??`unknown`;return r.Effect.withSpan(`node-${n}`,{attributes:{"node.id":e,"node.type":t?.type??`unknown`,"node.type_id":t?.nodeTypeId??`unknown`,"node.name":t?.name??`unknown`,"flow.id":o,"flow.job_id":d}})})()),P=({inputs:a,storageId:s,jobId:l,resumeFrom:d,clientId:m})=>r.Effect.gen(function*(){let g=yield*r.Effect.serviceOption(e.z),v=g._tag===`Some`?new p(g.value):null;!d&&c&&(yield*c({jobId:l,eventType:h.FlowStart,flowId:o}));let y=D(a||{}),b,x,S;d?(b=d.executionOrder,x=d.nodeResults,S=d.currentIndex):(b=C(),x=new Map,S=0);let w=new Map;if(b.length!==_.length)return yield*t.n.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let T=new Map(_.map(e=>[e.id,e])),O=new Set;if(n.parallelExecution?.enabled??!1){yield*r.Effect.logDebug(`Flow ${o}: Executing in parallel mode (maxConcurrency: ${n.parallelExecution?.maxConcurrency??4})`);let e=new ue({maxConcurrency:n.parallelExecution?.maxConcurrency??4}),t=e.groupNodesByExecutionLevel(_,u);yield*r.Effect.logDebug(`Flow ${o}: Grouped nodes into ${t.length} execution levels`);let i={};_.forEach(e=>{i[e.id]=[]}),u.forEach(e=>{i[e.target]?.push(e.source)});for(let n of t){yield*r.Effect.logDebug(`Flow ${o}: Executing level ${n.level} with nodes: ${n.nodes.join(`, `)}`);let t=[],i=[];for(let e of n.nodes)E(e,x,O)===`skip`?(i.push(e),O.add(e)):t.push(e);if(i.length>0&&(yield*r.Effect.logDebug(`Flow ${o}: Skipping nodes due to conditional routing: ${i.join(`, `)}`)),t.length===0){yield*r.Effect.logDebug(`Flow ${o}: All nodes in level ${n.level} skipped due to conditional routing`);continue}let a=t.map(e=>()=>r.Effect.gen(function*(){if(d&&e===d.executionOrder[S]&&c){let t=T.get(e);t&&(yield*c({jobId:l,flowId:o,nodeId:e,eventType:h.NodeResume,nodeName:t.name,nodeType:t.type}))}return{nodeId:e,nodeResult:yield*N(e,s,y,x,T,l,m,v)}})),u=yield*e.executeNodesInParallel(a);for(let{nodeId:e,nodeResult:t}of u){if(t.waiting)return t.result!==void 0&&(x.set(e,t.result),t.nodeType&&w.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:b,currentIndex:b.indexOf(e),inputs:y}};t.success&&(x.set(e,t.result),t.nodeType&&w.set(e,t.nodeType))}}}else{yield*r.Effect.logDebug(`Flow ${o}: Executing in sequential mode`);for(let e=S;e<b.length;e++){let n=b[e];if(!n)return yield*t.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(E(n,x,O)===`skip`){yield*r.Effect.logDebug(`Flow ${o}: Skipping node ${n} due to conditional routing`),O.add(n);continue}if(d&&e===S&&c){let e=T.get(n);e&&(yield*c({jobId:l,flowId:o,nodeId:n,eventType:h.NodeResume,nodeName:e.name,nodeType:e.type}))}let i=yield*N(n,s,y,x,T,l,m,v);if(i.waiting)return i.result!==void 0&&(x.set(i.nodeId,i.result),i.nodeType&&w.set(i.nodeId,i.nodeType)),{type:`paused`,nodeId:i.nodeId,executionState:{executionOrder:b,currentIndex:e,inputs:y}};i.success&&(x.set(i.nodeId,i.result),i.nodeType&&w.set(i.nodeId,i.nodeType))}}let ee=A(x),M=j(x,w),P=i.z.record(i.z.string(),f).safeParse(ee);if(!P.success){let e=`Flow output validation failed: ${P.error.message}. Expected outputs: ${JSON.stringify(Object.keys(A(x)))}. Output nodes (sinks + keepOutput): ${_.filter(e=>k(e.id)).map(e=>e.id).join(`, `)}`;return c&&(yield*c({jobId:l,eventType:h.FlowError,flowId:o,error:e})),yield*t.n.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:e,cause:P.error}).toEffect()}let F=P.data;return c&&(yield*c({jobId:l,eventType:h.FlowEnd,flowId:o,outputs:M,result:F})),{type:`completed`,result:F,outputs:M}});return{id:o,name:s,nodes:_,edges:u,inputSchema:d,outputSchema:f,onEvent:c,checkJobStatus:l,hooks:n.hooks,run:({inputs:e,storageId:t,jobId:n,clientId:r})=>P({inputs:e,storageId:t,jobId:n,clientId:r}),resume:({jobId:e,storageId:t,nodeResults:n,executionState:r,clientId:i})=>P({inputs:r.inputs,storageId:t,jobId:e,resumeFrom:{executionOrder:r.executionOrder,nodeResults:new Map(Object.entries(n)),currentIndex:r.currentIndex},clientId:i}),validateTypes:()=>{let e=_;return v.validateFlow(e,u)},validateInputs:e=>v.validateData(e,d),validateOutputs:e=>v.validateData(e,f)}})}var we=class{items=new Map;createItem(e){return r.Effect.sync(()=>(this.items.set(e.id,{...e}),e))}getItem(e){return r.Effect.sync(()=>this.items.get(e)??null)}updateItem(e,n){let i=this;return r.Effect.suspend(()=>{let a=i.items.get(e);if(!a)return r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{body:`Queue item ${e} not found`}));let o={...a,...n};return i.items.set(e,o),r.Effect.succeed(o)})}listByStatus(e){return r.Effect.sync(()=>{let t=[];for(let n of this.items.values())n.status===e&&t.push({...n});return e===`pending`&&t.sort((e,t)=>e.enqueuedAt.getTime()-t.enqueuedAt.getTime()),t})}deleteItem(e){return r.Effect.sync(()=>{this.items.delete(e)})}};const Te={maxConcurrency:4,dlqRetryIntervalMs:3e4,dlqRetryBatchSize:10};var K=class e extends r.Context.Tag(`FlowWaitUntil`)(){static optional=r.Effect.serviceOption(e)},Ee=class e extends r.Context.Tag(`FlowLifecycleHook`)(){static optional=r.Effect.serviceOption(e)},De=class extends r.Context.Tag(`FlowProvider`)(){},q=class extends r.Context.Tag(`FlowEngine`)(){};const J=e=>typeof e==`object`&&!!e&&`id`in e,Oe=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function Y(e,n,i){let a=t=>{let a=e=>r.Effect.gen(function*(){let n=yield*i.get(t);n&&(yield*i.set(t,{...n,...e,updatedAt:new Date}))});return o=>r.Effect.gen(function*(){switch(e.onEvent&&(yield*r.Effect.catchAll(e.onEvent(o),e=>(r.Effect.logError(`Original onEvent failed`,e),r.Effect.succeed({eventId:null})))),yield*n.emit(t,o),r.Effect.logInfo(`Updating job ${t} with event ${o.eventType}`),o.eventType){case h.FlowStart:yield*a({status:`running`});break;case h.FlowEnd:yield*r.Effect.gen(function*(){let e=yield*i.get(t);e&&o.outputs&&(yield*i.set(t,{...e,result:o.outputs,updatedAt:new Date}))});break;case h.FlowError:yield*a({status:`failed`,error:o.error});break;case h.NodeStart:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.find(e=>e.nodeId===o.nodeId)?e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`running`,updatedAt:new Date}:e):[...e.tasks,{nodeId:o.nodeId,status:`running`,createdAt:new Date,updatedAt:new Date}];yield*i.set(t,{...e,tasks:n,updatedAt:new Date})}});break;case h.NodePause:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.find(e=>e.nodeId===o.nodeId)?e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`paused`,result:o.partialData,updatedAt:new Date}:e):[...e.tasks,{nodeId:o.nodeId,status:`paused`,result:o.partialData,createdAt:new Date,updatedAt:new Date}],r=o.partialData?.id,a=r?[...e.activeUploads||[],r]:e.activeUploads;yield*i.set(t,{...e,tasks:n,activeUploads:a,updatedAt:new Date})}});break;case h.NodeResume:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`running`,updatedAt:new Date}:e);yield*i.set(t,{...e,tasks:n,updatedAt:new Date})}});break;case h.NodeEnd:yield*r.Effect.gen(function*(){let n=yield*i.get(t);if(n){let a=n.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`completed`,result:o.result,updatedAt:new Date}:e),s=!e.edges.some(e=>e.source===o.nodeId),c=e.nodes.find(e=>e.id===o.nodeId)?.keepOutput===!0,l=o.result,u=Oe(l),d=n.intermediateFiles||[],f=s||c;f&&J(u)&&u.id?(d=d.filter(e=>e!==u.id),c&&!s&&r.Effect.logInfo(`Preserving output from node ${o.nodeId} due to keepOutput flag`)):!f&&J(u)&&u.id&&(d.includes(u.id)||d.push(u.id));let p=n.activeUploads||[];J(u)&&u.id&&(p=p.filter(e=>e!==u.id)),yield*i.set(t,{...n,tasks:a,intermediateFiles:d,activeUploads:p,updatedAt:new Date})}});break;case h.NodeError:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`failed`,error:o.error,retryCount:o.retryCount,updatedAt:new Date}:e);yield*i.set(t,{...e,tasks:n,error:o.error,updatedAt:new Date})}});break}return{eventId:t}})},o=e=>e=>r.Effect.gen(function*(){let n=yield*i.get(e);return n?n.status===`paused`?`paused`:n.status===`cancelled`?`cancelled`:`running`:yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}))});return{...e,run:t=>r.Effect.gen(function*(){let n=t.jobId||crypto.randomUUID(),r=a(n),i=o(n);return yield*(yield*G({flowId:e.id,name:e.name,nodes:e.nodes,edges:e.edges,inputSchema:e.inputSchema,outputSchema:e.outputSchema,onEvent:r,checkJobStatus:i})).run({...t,jobId:n,clientId:t.clientId})}),resume:t=>r.Effect.gen(function*(){let n=t.jobId,r=a(n),i=o(n);return yield*(yield*G({flowId:e.id,name:e.name,nodes:e.nodes,edges:e.edges,inputSchema:e.inputSchema,outputSchema:e.outputSchema,onEvent:r,checkJobStatus:i})).resume(t)})}}function ke(){return r.Effect.gen(function*(){let i=yield*De,a=yield*e.d,o=yield*e.A,s=yield*n.n,c=yield*H.optional,l=yield*Ee.optional,u=(e,n)=>r.Effect.gen(function*(){let i=yield*o.get(e);return i?yield*o.set(e,{...i,...n}):yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}))}),d=(e,t)=>r.Effect.gen(function*(){let n=yield*o.get(e);!n||!n.intermediateFiles||n.intermediateFiles.length===0||(yield*r.Effect.logInfo(`Cleaning up ${n.intermediateFiles.length} intermediate files for job ${e}`),yield*r.Effect.all(n.intermediateFiles.map(e=>r.Effect.gen(function*(){yield*s.delete(e,t),yield*r.Effect.logDebug(`Deleted intermediate file ${e}`)}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to delete intermediate file ${e}: ${t}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(e,{intermediateFiles:[]}))}),f=(e,t)=>r.Effect.gen(function*(){if(r.Option.isNone(c)){yield*r.Effect.logDebug(`[FlowServer] DLQ not configured, skipping for job: ${e}`);return}let n=c.value,i=yield*r.Effect.catchAll(o.get(e),()=>r.Effect.succeed(null));if(!i){yield*r.Effect.logWarning(`[FlowServer] Job ${e} not found when adding to DLQ`);return}yield*r.Effect.catchAll(n.add(i,t),t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`[FlowServer] Failed to add job ${e} to DLQ`,t),r.Effect.succeed(void 0)})),yield*r.Effect.logInfo(`[FlowServer] Added job ${e} to Dead Letter Queue`)}),p=e=>r.Option.isSome(l)?l.value.onComplete(e).pipe(r.Effect.catchAll(e=>r.Effect.logWarning(`FlowLifecycleHook.onComplete failed: ${e}`))):r.Effect.void,m=r.Effect.gen(function*(){let e=yield*r.Effect.currentSpan.pipe(r.Effect.option);return r.Option.match(e,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})}),g=({jobId:e,flow:n,storageId:i,clientId:c,inputs:l})=>r.Effect.gen(function*(){return console.log(`[FlowServer] executeFlowInBackground started for job: ${e}`),yield*u(e,{status:`running`,traceContext:yield*m}),yield*r.Effect.gen(function*(){console.log(`[FlowServer] Creating flowWithEvents for job: ${e}`);let t=Y(n,a,o);console.log(`[FlowServer] Running flow for job: ${e}`);let r=yield*t.run({inputs:l,storageId:i,jobId:e,clientId:c});return console.log(`[FlowServer] Flow completed for job: ${e}, result type: ${r.type}`),r.type===`paused`?yield*u(e,{status:`paused`,pausedAt:r.nodeId,executionState:r.executionState,updatedAt:new Date}):(yield*u(e,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*d(e,c),yield*p({jobId:e,flowId:n.id,clientId:c,status:`completed`})),r}).pipe(r.Effect.withSpan(`flow-execution`,{attributes:{"flow.id":n.id,"flow.name":n.name,"flow.job_id":e,"flow.storage_id":i,"flow.node_count":n.nodes.length}}))}).pipe(r.Effect.withSpan(`flow`,{attributes:{"flow.id":n.id,"flow.name":n.name,"flow.job_id":e,"flow.storage_id":i,"flow.node_count":n.nodes.length}}),r.Effect.catchAll(i=>r.Effect.gen(function*(){yield*r.Effect.logError(`Flow execution failed`,i);let l=i instanceof t.n?i.body:String(i);yield*r.Effect.logInfo(`Updating job ${e} to failed status with error: ${l}`),yield*u(e,{status:`failed`,error:l,updatedAt:new Date}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to update job ${e}`,t),r.Effect.succeed(void 0)})));let m=yield*o.get(e);throw m&&(yield*a.emit(e,{jobId:e,eventType:h.FlowError,flowId:m.flowId,error:l}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to emit FlowError event for job ${e}`,t),r.Effect.succeed(void 0)})))),n.onEvent&&(yield*n.onEvent({jobId:e,eventType:h.FlowError,flowId:n.id,error:l}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to call flow.onEvent for FlowError event for job ${e}`,t),r.Effect.succeed({eventId:null})})))),yield*d(e,c).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup intermediate files for job ${e}`,t),r.Effect.succeed(void 0)}))),yield*r.Effect.gen(function*(){let t=yield*o.get(e);t&&t.activeUploads&&t.activeUploads.length>0&&(yield*r.Effect.logInfo(`Cleaning up ${t.activeUploads.length} active uploads for failed job ${e}`),yield*r.Effect.all(t.activeUploads.map(t=>r.Effect.gen(function*(){yield*s.delete(t,c),yield*r.Effect.logDebug(`Aborted active upload ${t} for failed job ${e}`)}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to abort active upload ${t}: ${e}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(e,{activeUploads:[]}))}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup active uploads for job ${e}`,t),r.Effect.succeed(void 0)}))),yield*f(e,i instanceof t.n?i:new t.n({code:`UNKNOWN_ERROR`,status:500,body:String(i),cause:i})),yield*p({jobId:e,flowId:n.id,clientId:c,status:`failed`}),i})));return{getFlow:(e,t)=>r.Effect.gen(function*(){return yield*i.getFlow(e,t)}),getFlowData:(e,t)=>r.Effect.gen(function*(){return Ce(yield*i.getFlow(e,t))}),runFlow:({flowId:e,storageId:n,clientId:a,inputs:s,jobId:c})=>r.Effect.gen(function*(){let l=yield*r.Effect.serviceOption(X),u=yield*Me.optional;if(r.Option.isSome(u)&&r.Option.isNone(l)){let t=yield*u.value.enqueue({flowId:e,storageId:n,input:s,clientId:a}),r=t.enqueuedAt,i={id:t.id,flowId:e,storageId:n,clientId:a,status:`pending`,tasks:[],createdAt:r,updatedAt:r};return yield*o.set(t.id,i),i}let d=yield*K.optional,f=yield*r.Effect.try({try:()=>yt.parse({inputs:s}),catch:e=>t.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:e})}),p=c??crypto.randomUUID(),m=new Date,h={id:p,flowId:e,storageId:n,clientId:a,status:`started`,createdAt:m,updatedAt:m,tasks:[]};yield*o.set(p,h);let _=yield*i.getFlow(e,a);console.log(`[FlowServer] About to fork flow execution for job: ${p}`);let v=g({jobId:p,flow:_,storageId:n,clientId:a,inputs:f.inputs}).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow execution failed`,e)));if(r.Option.isSome(d)){console.log(`[FlowServer] Using waitUntil for job: ${p}`);let e=yield*r.Effect.runtime(),t=r.Runtime.runPromise(e)(v);d.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${p}`),yield*r.Effect.forkDaemon(v);return console.log(`[FlowServer] Flow execution started for job: ${p}`),h}),getJobStatus:e=>r.Effect.gen(function*(){return(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`})))}),resumeFlow:({jobId:e,nodeId:n,newData:c,clientId:l})=>r.Effect.gen(function*(){let m=yield*K.optional,g=yield*o.get(e);if(!g)return console.error(`Job not found`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}));if(g.status!==`paused`)return console.error(`Job is not paused`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} is not paused (status: ${g.status})`}));if(g.pausedAt!==n)return console.error(`Job is not paused at the expected node`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} is paused at node ${g.pausedAt}, not ${n}`}));if(!g.executionState)return console.error(`Job has no execution state`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} has no execution state`}));let _={...g.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[n]:c},v={...g.executionState.inputs,[n]:c};yield*u(e,{status:`running`});let y=yield*i.getFlow(g.flowId,g.clientId),b=g.traceContext?r.Tracer.externalSpan({traceId:g.traceContext.traceId,spanId:g.traceContext.spanId,sampled:g.traceContext.traceFlags===1}):void 0,x=r.Effect.gen(function*(){let n=Y(y,a,o);if(!g.executionState)return yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} has no execution state`}));let i=yield*n.resume({jobId:e,storageId:g.storageId,nodeResults:_,executionState:{...g.executionState,inputs:v},clientId:g.clientId});return i.type===`paused`?yield*u(e,{status:`paused`,pausedAt:i.nodeId,executionState:i.executionState,updatedAt:new Date}):(yield*u(e,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*d(e,l),yield*p({jobId:e,flowId:y.id,clientId:g.clientId,status:`completed`})),i}).pipe(r.Effect.withSpan(`flow-execution-resume`,{attributes:{"flow.id":y.id,"flow.name":y.name,"flow.job_id":e,"flow.storage_id":g.storageId,"flow.resumed_from_node":n},parent:b})).pipe(r.Effect.catchAll(n=>r.Effect.gen(function*(){yield*r.Effect.logError(`Flow resume failed`,n);let i=n instanceof t.n?n.body:String(n);yield*r.Effect.logInfo(`Updating job ${e} to failed status with error: ${i}`),yield*u(e,{status:`failed`,error:i,updatedAt:new Date}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to update job ${e}`,t),r.Effect.succeed(void 0)})));let c=yield*o.get(e);throw c&&(yield*a.emit(e,{jobId:e,eventType:h.FlowError,flowId:c.flowId,error:i}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to emit FlowError event for job ${e}`,t),r.Effect.succeed(void 0)})))),yield*d(e,l).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup intermediate files for job ${e}`,t),r.Effect.succeed(void 0)}))),yield*r.Effect.gen(function*(){let t=yield*o.get(e);t&&t.activeUploads&&t.activeUploads.length>0&&(yield*r.Effect.logInfo(`Cleaning up ${t.activeUploads.length} active uploads for failed job ${e}`),yield*r.Effect.all(t.activeUploads.map(t=>r.Effect.gen(function*(){yield*s.delete(t,l),yield*r.Effect.logDebug(`Aborted active upload ${t} for failed job ${e}`)}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to abort active upload ${t}: ${e}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(e,{activeUploads:[]}))}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup active uploads for job ${e}`,t),r.Effect.succeed(void 0)}))),yield*f(e,n instanceof t.n?n:new t.n({code:`UNKNOWN_ERROR`,status:500,body:String(n),cause:n})),yield*p({jobId:e,flowId:y.id,clientId:g.clientId,status:`failed`}),n}))).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow resume failed`,e)));if(r.Option.isSome(m)){console.log(`[FlowServer] Using waitUntil for resume job: ${e}`);let t=yield*r.Effect.runtime(),n=r.Runtime.runPromise(t)(x);m.value(n)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${e}`),yield*r.Effect.forkDaemon(x);return(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found after update`})))}),pauseFlow:(e,n)=>r.Effect.gen(function*(){let i=yield*o.get(e);if(!i)return yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}));if(n!==null&&i.clientId!==n)return yield*r.Effect.fail(t.n.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to pause job ${e}`}));if(i.status!==`running`)return yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} cannot be paused (current status: ${i.status})`}));let s=i.tasks.find(e=>e.status===`running`)?.nodeId;return yield*u(e,{status:`paused`,pausedAt:s,updatedAt:new Date}),yield*a.emit(e,{jobId:e,flowId:i.flowId,eventType:h.FlowPause,pausedAt:s}),(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found after pause`})))}),cancelFlow:(e,n)=>r.Effect.gen(function*(){let i=yield*o.get(e);return i?n!==null&&i.clientId!==n?yield*r.Effect.fail(t.n.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to cancel job ${e}`})):i.status!==`running`&&i.status!==`paused`&&i.status!==`started`?yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} cannot be cancelled (current status: ${i.status})`})):(yield*u(e,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*a.emit(e,{jobId:e,flowId:i.flowId,eventType:h.FlowCancel}),i.activeUploads&&i.activeUploads.length>0&&(yield*r.Effect.logInfo(`Cleaning up ${i.activeUploads.length} active uploads for job ${e}`),yield*r.Effect.all(i.activeUploads.map(t=>r.Effect.gen(function*(){yield*s.delete(t,n),yield*r.Effect.logDebug(`Aborted active upload ${t} for job ${e}`)}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to abort active upload ${t}: ${e}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(e,{activeUploads:[]})),yield*d(e,n),(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found after cancellation`})))):yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}))}),subscribeToFlowEvents:(e,t)=>r.Effect.gen(function*(){yield*a.subscribe(e,t)}),unsubscribeFromFlowEvents:e=>r.Effect.gen(function*(){yield*a.unsubscribe(e)})}})}const Ae=r.Layer.effect(q,ke());var X=class extends r.Context.Tag(`FlowQueueDispatchMarker`)(){};function je(e){let n=e=>({...e,enqueuedAt:new Date(e.enqueuedAt),startedAt:e.startedAt?new Date(e.startedAt):void 0,completedAt:e.completedAt?new Date(e.completedAt):void 0});return{createItem:t=>e.set(t.id,t).pipe(r.Effect.map(()=>t)),getItem:t=>e.get(t).pipe(r.Effect.map(e=>n(e)),r.Effect.catchAll(()=>r.Effect.succeed(null))),updateItem:(i,a)=>r.Effect.gen(function*(){let o={...yield*e.get(i).pipe(r.Effect.map(n),r.Effect.mapError(()=>t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{body:`Queue item ${i} not found`}))),...a};return yield*e.set(i,o),o}),listByStatus:t=>r.Effect.gen(function*(){if(!e.list)return[];let i=yield*e.list(),a=[];for(let o of i){let i=yield*e.get(o).pipe(r.Effect.map(e=>n(e)),r.Effect.catchAll(()=>r.Effect.succeed(null)));i&&i.status===t&&a.push(i)}return t===`pending`&&a.sort((e,t)=>e.enqueuedAt.getTime()-t.enqueuedAt.getTime()),a}),deleteItem:t=>e.delete(t)}}var Me=class t extends r.Context.Tag(`FlowQueueService`)(){static optional=r.Effect.serviceOption(t);static Default(e){return t.make(e??{},new we)}static make(e,n){return r.Layer.effect(t,Ne(e,n))}static fromKvStore(n={}){return r.Layer.effect(t,r.Effect.gen(function*(){return yield*Ne(n,je(yield*e.j))}))}static fromBaseKvStore(n={}){return t.fromKvStore(n).pipe(r.Layer.provide(e.I))}};function Ne(e,n){return r.Effect.gen(function*(){let{maxConcurrency:i,dlqRetryIntervalMs:a,dlqRetryBatchSize:o}={...Te,...e},s=yield*r.Ref.make(0),c=yield*q,l=yield*H.optional,u=()=>`q_${crypto.randomUUID()}`,d=e=>{let i=Date.now(),a=r.Effect.gen(function*(){yield*r.Effect.catchAll(n.updateItem(e.id,{status:`running`,startedAt:new Date}),e=>r.Effect.logError(`FlowQueue: failed to mark item running`,e)),yield*r.Ref.update(s,e=>e+1)}),o=c.runFlow({flowId:e.flowId,storageId:e.storageId,clientId:e.clientId,inputs:e.input,jobId:e.id}).pipe(r.Effect.provideService(X,!0)).pipe(r.Effect.andThen(()=>r.Effect.gen(function*(){yield*r.Effect.catchAll(n.updateItem(e.id,{status:`completed`,completedAt:new Date}),e=>r.Effect.logError(`FlowQueue: failed to mark item completed`,e)),e.dlqItemId&&r.Option.isSome(l)&&(yield*r.Effect.catchAll(l.value.markResolved(e.dlqItemId),e=>r.Effect.logError(`FlowQueue: failed to mark DLQ item resolved`,e)))})),r.Effect.catchAll(a=>r.Effect.gen(function*(){let o=a instanceof t.n?a.body:String(a);if(yield*r.Effect.catchAll(n.updateItem(e.id,{status:`failed`,completedAt:new Date,error:o}),e=>r.Effect.logError(`FlowQueue: failed to mark item failed`,e)),e.dlqItemId&&r.Option.isSome(l)){let t=Date.now()-i;yield*r.Effect.catchAll(l.value.recordRetryFailure(e.dlqItemId,o,t),e=>r.Effect.logError(`FlowQueue: failed to record DLQ retry failure`,e))}}))),u=r.Ref.update(s,e=>Math.max(0,e-1));return a.pipe(r.Effect.andThen(()=>o.pipe(r.Effect.ensuring(u))),r.Effect.catchAllCause(e=>r.Effect.logError(`FlowQueue: unexpected error in dispatchItem`,e)))},f=r.Effect.gen(function*(){let e=i-(yield*r.Ref.get(s));if(e<=0)return;let t=(yield*r.Effect.catchAll(n.listByStatus(`pending`),()=>r.Effect.succeed([]))).slice(0,e);for(let e of t)yield*r.Effect.forkDaemon(d(e))});if(yield*r.Effect.forkDaemon(f.pipe(r.Effect.repeat(r.Schedule.spaced(r.Duration.millis(500))),r.Effect.catchAllCause(e=>r.Effect.logError(`FlowQueue: worker loop crashed`,e)))),r.Option.isSome(l)){let e=l.value,t=r.Effect.gen(function*(){let t=yield*r.Effect.catchAll(e.getScheduledRetries(o),e=>r.Effect.logError(`FlowQueue: failed to fetch DLQ scheduled retries`,e).pipe(r.Effect.as([])));for(let i of t){yield*r.Effect.catchAll(e.markRetrying(i.id),e=>r.Effect.logError(`FlowQueue: failed to mark DLQ item retrying`,e));let t={id:u(),flowId:i.flowId,storageId:i.storageId,input:i.inputs,clientId:i.clientId,status:`pending`,dlqItemId:i.id,enqueuedAt:new Date};yield*r.Effect.catchAll(n.createItem(t),e=>r.Effect.logError(`FlowQueue: failed to enqueue DLQ retry item`,e))}});yield*r.Effect.forkDaemon(r.Effect.sleep(r.Duration.millis(a)).pipe(r.Effect.andThen(t.pipe(r.Effect.repeat(r.Schedule.spaced(r.Duration.millis(a))))),r.Effect.catchAllCause(e=>r.Effect.logError(`FlowQueue: DLQ retry loop crashed`,e))))}return{enqueue:({flowId:e,storageId:t,input:i,clientId:a,dlqItemId:o})=>r.Effect.gen(function*(){let r={id:u(),flowId:e,storageId:t,input:i,clientId:a,status:`pending`,dlqItemId:o,enqueuedAt:new Date};return yield*n.createItem(r)}),getStatus:e=>r.Effect.gen(function*(){return(yield*n.getItem(e))||(yield*r.Effect.fail(t.n.fromCode(`QUEUE_ITEM_NOT_FOUND`)))}),cancel:e=>r.Effect.gen(function*(){let i=yield*n.getItem(e);if(!i)return yield*r.Effect.fail(t.n.fromCode(`QUEUE_ITEM_NOT_FOUND`));if(i.status===`running`)return yield*r.Effect.fail(t.n.fromCode(`QUEUE_ITEM_ALREADY_RUNNING`));i.status===`pending`&&(yield*n.deleteItem(e))}),list:e=>r.Effect.gen(function*(){if(e?.status)return yield*n.listByStatus(e.status);let[t,i,a,o]=yield*r.Effect.all([n.listByStatus(`pending`),n.listByStatus(`running`),n.listByStatus(`completed`),n.listByStatus(`failed`)]);return[...t,...i,...a,...o]}),getStats:()=>r.Effect.gen(function*(){let[e,t,a,o]=yield*r.Effect.all([n.listByStatus(`pending`),n.listByStatus(`running`),n.listByStatus(`completed`),n.listByStatus(`failed`)]),c=yield*r.Ref.get(s);return{pending:e.length,running:t.length,completed:a.length,failed:o.length,maxConcurrency:i,currentConcurrency:c}})}})}function Pe(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function Fe(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?``:e.substring(t+1)}function Z(e,t,n){let r=e.metadata??{},i=r.fileName??r.originalName??r.name??`unnamed`;return{baseName:Pe(i),extension:Fe(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function Ie(e,t){try{let n={};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=String(r));return(0,a.render)(e,n)}catch{return e}}function Q(e,t,n){let r=t.fileName;if(!n)return r;try{if(n.mode===`auto`){if(n.autoSuffix){let e=n.autoSuffix(t);if(e){let{baseName:n,extension:r}=t;return r?`${n}-${e}.${r}`:`${n}-${e}`}}return r}if(n.mode===`custom`){if(n.rename)return n.rename(e,t)||r;if(n.pattern)return Ie(n.pattern,t)||r}return r}catch{return r}}function Le(e){if(!e||e.trim()===``)return{isValid:!1,error:`Pattern cannot be empty`};let t=(e.match(/\{\{/g)||[]).length,n=(e.match(/\}\}/g)||[]).length;if(t!==n)return{isValid:!1,error:`Unbalanced braces: ${t} opening, ${n} closing`};let r=e.match(/\{\{[^}]*[^a-zA-Z0-9_}][^}]*\}\}/g);return r?{isValid:!1,error:`Invalid variable syntax: ${r[0]}`}:{isValid:!0}}const Re=[{name:`baseName`,description:`Filename without extension`,example:`photo`},{name:`extension`,description:`File extension without dot`,example:`jpg`},{name:`fileName`,description:`Full original filename`,example:`photo.jpg`},{name:`nodeType`,description:`Type of processing node`,example:`resize`},{name:`nodeId`,description:`Specific node instance ID`,example:`resize-1`},{name:`flowId`,description:`Flow identifier`,example:`flow-abc`},{name:`jobId`,description:`Execution job ID`,example:`job-123`},{name:`timestamp`,description:`ISO 8601 processing time`,example:`2024-01-15T10:30:00Z`},{name:`width`,description:`Output width (image/video)`,example:`800`},{name:`height`,description:`Output height (image/video)`,example:`600`},{name:`format`,description:`Output format`,example:`webp`},{name:`quality`,description:`Quality setting`,example:`80`},{name:`pageNumber`,description:`Page number (documents)`,example:`1`}];function $(e){return!(`stream`in e)}function ze({id:t,name:i,description:a,outputTypeId:o,keepOutput:s,naming:c,nodeType:l=`transform`,nodeTypeId:u,namingVars:d,circuitBreaker:f,mode:p=`auto`,streamingConfig:m,transform:h,streamingTransform:g}){if(p===`streaming`&&!g)throw Error(`Transform node "${t}": mode is "streaming" but no streamingTransform function provided`);if(p===`buffered`&&!h)throw Error(`Transform node "${t}": mode is "buffered" but no transform function provided`);if(p===`auto`&&!h&&!g)throw Error(`Transform node "${t}": mode is "auto" but neither transform nor streamingTransform provided`);let _={...e.b,...m};return r.Effect.gen(function*(){let m=yield*n.n;return yield*C({id:t,name:i,description:a,type:S.process,outputTypeId:o,keepOutput:s,nodeTypeId:u,circuitBreaker:f,inputSchema:e.D,outputSchema:e.D,run:({data:e,storageId:n,flowId:i,jobId:a,clientId:o})=>r.Effect.gen(function*(){let s={flowId:i,nodeId:t,jobId:a},u=yield*r.Effect.gen(function*(){if(p===`buffered`)return!1;if(p===`streaming`)return!0;let t=e.size??0,i=_.fileSizeThreshold;return t>0&&t<i?(yield*r.Effect.logDebug(`File ${e.id} (${t} bytes) below threshold (${i}), using buffered mode`),!1):g?(yield*m.getCapabilities(n,o)).supportsStreamingRead?(yield*r.Effect.logDebug(`File ${e.id} qualifies for streaming mode`),!0):(yield*r.Effect.logDebug(`DataStore doesn't support streaming read, using buffered mode`),!1):(yield*r.Effect.logDebug(`No streamingTransform function, using buffered mode`),!1)}),{type:f,fileName:v,metadata:y,metadataJson:b}=j(e.metadata);if(u&&g){yield*r.Effect.logDebug(`Using streaming transform for ${e.id}`);let u=yield*g(yield*m.readStream(e.id,o,_),e),p=$(u)?u:u.stream,h=$(u)?void 0:u.type,x=$(u)?void 0:u.estimatedSize,S=$(u)?void 0:u.fileName;!S&&c&&(S=Q(e,Z(e,{flowId:i,jobId:a,nodeId:t,nodeType:l},d),c));let C=yield*m.getCapabilities(n,o),w;if(C.supportsStreamingWrite)yield*r.Effect.logDebug(`Using streaming write for ${e.id} - no intermediate buffering`),w=yield*m.uploadStream({storageId:n,uploadLengthDeferred:!0,sizeHint:x,type:h??f,fileName:S??v,lastModified:0,metadata:b,flow:s},o,p);else{yield*r.Effect.logDebug(`Falling back to buffered upload for ${e.id} (streaming write not supported)`);let t=[];yield*r.Stream.runForEach(p,e=>r.Effect.sync(()=>{t.push(e)}));let i=t.reduce((e,t)=>e+t.byteLength,0),a=new Uint8Array(i),c=0;for(let e of t)a.set(e,c),c+=e.byteLength;let l=new ReadableStream({start(e){e.enqueue(a),e.close()}});w=yield*m.upload({storageId:n,size:a.byteLength,type:h??f,fileName:S??v,lastModified:0,metadata:b,flow:s},o,l)}let T=y?{...y,...h&&{mimeType:h,type:h,"content-type":h},...S&&{fileName:S,originalName:S,name:S,extension:S.split(`.`).pop()||y.extension}}:w.metadata;return O(T?{...w,metadata:T}:w)}if(!h)throw Error(`Transform node "${t}": buffered mode selected but no transform function provided`);let x=yield*h(yield*m.read(e.id,o),e),S=x instanceof Uint8Array?x:x.bytes,C=x instanceof Uint8Array?void 0:x.type,w=x instanceof Uint8Array?void 0:x.fileName,T=x instanceof Uint8Array?void 0:x.metadata;!w&&c&&(w=Q(e,Z(e,{flowId:i,jobId:a,nodeId:t,nodeType:l},d),c));let E=new ReadableStream({start(e){e.enqueue(S),e.close()}}),D=yield*m.upload({storageId:n,size:S.byteLength,type:C??f,fileName:w??v,lastModified:0,metadata:b,flow:s},o,E),k=y?{...y,...T,...C&&{mimeType:C,type:C,"content-type":C},...w&&{fileName:w,originalName:w,name:w,extension:w.split(`.`).pop()||y.extension}}:D.metadata;return O(k?{...D,metadata:k}:D)})})})}var Be=class extends r.Context.Tag(`CredentialProvider`)(){},Ve=class extends r.Context.Tag(`DocumentAiPlugin`)(){},He=class extends r.Context.Tag(`DocumentPlugin`)(){},Ue=class extends r.Context.Tag(`ImageAiPlugin`)(){},We=class extends r.Context.Tag(`ImagePlugin`)(){};const Ge=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),Ke=i.z.object({duration:i.z.number().nonnegative(),width:i.z.number().positive(),height:i.z.number().positive(),codec:i.z.string(),format:i.z.string(),bitrate:i.z.number().nonnegative(),frameRate:i.z.number().positive(),aspectRatio:i.z.string(),hasAudio:i.z.boolean(),audioCodec:i.z.string().optional(),audioBitrate:i.z.number().nonnegative().optional(),size:i.z.number().nonnegative()}),qe=i.z.object({timestamp:i.z.number().nonnegative(),format:i.z.enum([`png`,`jpeg`]).optional(),quality:i.z.number().min(1).max(100).optional()}),Je=i.z.object({quality:i.z.number().min(0).max(100),format:i.z.enum([`jpeg`,`webp`,`png`,`avif`])}),Ye=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),Xe=i.z.object({width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),fit:i.z.enum([`contain`,`cover`,`fill`])}).refine(e=>e.width||e.height,`Either width or height must be specified for resize`),Ze=i.z.object({width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),aspectRatio:i.z.enum([`keep`,`ignore`]).optional(),scaling:i.z.enum([`bicubic`,`bilinear`,`lanczos`]).optional()}).refine(e=>e.width||e.height,`Either width or height must be specified for video resize`),Qe=i.z.object({format:i.z.enum([`mp4`,`webm`,`mov`,`avi`]),codec:i.z.enum([`h264`,`h265`,`vp9`,`av1`]).optional(),videoBitrate:i.z.string().optional(),audioBitrate:i.z.string().optional(),audioCodec:i.z.enum([`aac`,`mp3`,`opus`,`vorbis`]).optional()}),$e=i.z.object({type:i.z.literal(`resize`),width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),fit:i.z.enum([`contain`,`cover`,`fill`])}),et=i.z.object({type:i.z.literal(`blur`),sigma:i.z.number().min(.3).max(1e3)}),tt=i.z.object({type:i.z.literal(`rotate`),angle:i.z.number(),background:i.z.string().optional()}),nt=i.z.object({type:i.z.literal(`flip`),direction:i.z.enum([`horizontal`,`vertical`])}),rt=i.z.object({type:i.z.literal(`grayscale`)}),it=i.z.object({type:i.z.literal(`sepia`)}),at=i.z.object({type:i.z.literal(`brightness`),value:i.z.number().min(-100).max(100)}),ot=i.z.object({type:i.z.literal(`contrast`),value:i.z.number().min(-100).max(100)}),st=i.z.object({type:i.z.literal(`sharpen`),sigma:i.z.number().positive().optional()}),ct=i.z.object({type:i.z.literal(`watermark`),imagePath:i.z.string().min(1).url(),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),opacity:i.z.number().min(0).max(1),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),lt=i.z.object({type:i.z.literal(`logo`),imagePath:i.z.string().min(1).url(),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),scale:i.z.number().min(.1).max(2),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),ut=i.z.object({type:i.z.literal(`text`),text:i.z.string().min(1),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),fontSize:i.z.number().positive(),color:i.z.string().min(1),fontFamily:i.z.string().optional(),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),dt=i.z.discriminatedUnion(`type`,[$e,et,tt,nt,rt,it,at,ot,st,ct,lt,ut]),ft=i.z.object({transformations:i.z.array(dt).min(1)}),pt=i.z.object({startTime:i.z.number().nonnegative(),endTime:i.z.number().positive().optional(),duration:i.z.number().positive().optional()}).refine(e=>!e.endTime||!e.duration,`Cannot specify both endTime and duration`).refine(e=>!e.endTime||e.endTime>e.startTime,`endTime must be greater than startTime`);var mt=class extends r.Context.Tag(`VideoPlugin`)(){},ht=class extends r.Context.Tag(`VirusScanPlugin`)(){},gt=class extends r.Context.Tag(`ZipPlugin`)(){};const _t=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>i.z.union([e,t]),n)};function vt(e){return r.Effect.gen(function*(){let n=Object.entries(e.nodes),a=e=>r.Effect.isEffect(e)?e:r.Effect.succeed(e),o=yield*r.Effect.forEach(n,([e,n])=>r.Effect.flatMap(a(n),n=>n.id===e?r.Effect.succeed([e,n]):r.Effect.fail(t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node key ${e} does not match node id ${n.id}`)})))),s=Object.fromEntries(o),c=o.map(([,e])=>e),l=o.filter(([,e])=>e.type===S.input).map(([,e])=>e.inputSchema),u=e.edges.map(e=>({source:s[e.source]?.id??e.source,target:s[e.target]?.id??e.target,sourcePort:e.sourcePort,targetPort:e.targetPort})),d=new Set(o.map(([e])=>s[e]?.id).filter(e=>e&&!u.some(t=>t.source===e))),f=o.filter(([,e])=>d.has(e.id)||e.keepOutput===!0).map(([,e])=>e.outputSchema),p=e.inputSchema??_t(l,i.z.unknown()),m=e.outputSchema??_t(f,i.z.unknown());return yield*G({flowId:e.flowId,name:e.name,nodes:c,edges:u,inputSchema:p,outputSchema:m,typeChecker:e.typeChecker,onEvent:e.onEvent,parallelExecution:e.parallelExecution,hooks:e.hooks,circuitBreaker:e.circuitBreaker})})}const yt=i.z.object({inputs:i.z.record(i.z.string(),i.z.any())});Object.defineProperty(exports,`$`,{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,`$t`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,`At`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,`Bt`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,`Ct`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,`Dt`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,`Et`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,`Ft`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`G`,{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,`Gt`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`H`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`Ht`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`It`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`J`,{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,`Jt`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`K`,{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,`Kt`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`Lt`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,`Mt`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,`Nt`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,`Ot`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,`Pt`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`Q`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`Qt`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,`Rt`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,`St`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,`Tt`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`U`,{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,`Ut`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,`Vt`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`W`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`Wt`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`X`,{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,`Xt`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`Y`,{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,`Yt`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`Z`,{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,`Zt`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,`_t`,{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return mt}}),Object.defineProperty(exports,`at`,{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,`bt`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,`ct`,{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,`dt`,{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,`en`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`et`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,`ft`,{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,`gt`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,`ht`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ht}}),Object.defineProperty(exports,`it`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,`jt`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`kt`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,`lt`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`mt`,{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,`nt`,{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return pt}}),Object.defineProperty(exports,`ot`,{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,`pt`,{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`qt`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,`rt`,{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,`st`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,`tt`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,`ut`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,`vt`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,`wt`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,`xt`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,`yt`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,`zt`,{enumerable:!0,get:function(){return w}});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./uploadista-error-DQ7V1FlX.mjs";import{A as t,B as n,D as r,I as i,L as a,O as o,S as s,b as c,d as l,j as u,k as d,z as f}from"./websocket-DftnHFfN.mjs";import{a as p,n as m,o as h}from"./upload-strategy-negotiator-C9MeoOnW.mjs";import{Context as g,Duration as _,Effect as v,Layer as y,Option as b,Ref as x,Runtime as S,Schedule as C,Stream as w,Tracer as T}from"effect";import{z as E}from"zod";import{render as D}from"micromustache";const O={enabled:!1,failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:6e4,fallback:{type:`fail`}},k=`uploadista:circuit-breaker:`;function A(e){let t=e=>`${k}${e}`,r=n=>v.gen(function*(){let r=t(n),i=yield*e.get(r);if(i===null)return null;try{return a.deserialize(i)}catch{return yield*e.delete(r),null}}),i=(n,r)=>{let i=t(n),o=a.serialize(r);return e.set(i,o)};return{getState:r,setState:i,incrementFailures:(e,t)=>v.gen(function*(){let a=Date.now(),o=yield*r(e);return o===null&&(o=n({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:t})),o=a-o.windowStart>t?{...o,failureCount:1,windowStart:a}:{...o,failureCount:o.failureCount+1},yield*i(e,o),o.failureCount}),resetFailures:e=>v.gen(function*(){let t=yield*r(e);t!==null&&(yield*i(e,{...t,failureCount:0,windowStart:Date.now()}))}),incrementHalfOpenSuccesses:e=>v.gen(function*(){let t=yield*r(e);if(t===null)return 1;let n={...t,halfOpenSuccesses:t.halfOpenSuccesses+1};return yield*i(e,n),n.halfOpenSuccesses}),getAllStats:()=>v.gen(function*(){let t=new Map;if(!e.list)return t;let n=yield*e.list(k),i=Date.now();for(let e of n){let n=e,a=yield*r(n);if(a!==null){let e=i-a.lastStateChange;t.set(n,{nodeType:n,state:a.state,failureCount:a.failureCount,halfOpenSuccesses:a.halfOpenSuccesses,timeSinceLastStateChange:e,timeUntilHalfOpen:a.state===`open`?Math.max(0,a.config.resetTimeout-e):void 0})}}return t}),delete:n=>e.delete(t(n))}}function j(){let e=new Map;return{getState:t=>v.succeed(e.get(t)??null),setState:(t,n)=>v.sync(()=>{e.set(t,n)}),incrementFailures:(t,r)=>v.sync(()=>{let i=Date.now(),a=e.get(t);return a===void 0&&(a=n({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:r})),a=i-a.windowStart>r?{...a,failureCount:1,windowStart:i}:{...a,failureCount:a.failureCount+1},e.set(t,a),a.failureCount}),resetFailures:t=>v.sync(()=>{let n=e.get(t);n!==void 0&&e.set(t,{...n,failureCount:0,windowStart:Date.now()})}),incrementHalfOpenSuccesses:t=>v.sync(()=>{let n=e.get(t);if(n===void 0)return 1;let r={...n,halfOpenSuccesses:n.halfOpenSuccesses+1};return e.set(t,r),r.halfOpenSuccesses}),getAllStats:()=>v.sync(()=>{let t=new Map,n=Date.now();for(let[r,i]of e){let e=n-i.lastStateChange;t.set(r,{nodeType:r,state:i.state,failureCount:i.failureCount,halfOpenSuccesses:i.halfOpenSuccesses,timeSinceLastStateChange:e,timeUntilHalfOpen:i.state===`open`?Math.max(0,i.config.resetTimeout-e):void 0})}return t}),delete:t=>v.sync(()=>{e.delete(t)})}}const M=y.effect(f,v.gen(function*(){return A(yield*o)})),N=y.succeed(f,j());var P=class{eventHandler;nodeType;config;store;constructor(e,t,n){this.nodeType=e,this.config={enabled:t.enabled??O.enabled,failureThreshold:t.failureThreshold??O.failureThreshold,resetTimeout:t.resetTimeout??O.resetTimeout,halfOpenRequests:t.halfOpenRequests??O.halfOpenRequests,windowDuration:t.windowDuration??O.windowDuration,fallback:t.fallback??O.fallback},this.store=n}setEventHandler(e){this.eventHandler=e}allowRequest(){let e=this;return v.gen(function*(){if(!e.config.enabled)return{allowed:!0,state:`closed`,failureCount:0};let t=yield*e.store.getState(e.nodeType),r=Date.now();if(t===null&&(t=n({failureThreshold:e.config.failureThreshold,resetTimeout:e.config.resetTimeout,halfOpenRequests:e.config.halfOpenRequests,windowDuration:e.config.windowDuration}),yield*e.store.setState(e.nodeType,t)),t.state===`open`&&r-t.lastStateChange>=e.config.resetTimeout){let n=t.state;t={...t,state:`half-open`,halfOpenSuccesses:0,lastStateChange:r},yield*e.store.setState(e.nodeType,t),yield*e.emitEvent(n,`half-open`,t.failureCount)}return{allowed:t.state!==`open`,state:t.state,failureCount:t.failureCount}})}getState(){let e=this;return v.gen(function*(){return(yield*e.store.getState(e.nodeType))?.state??`closed`})}getFailureCount(){let e=this;return v.gen(function*(){return(yield*e.store.getState(e.nodeType))?.failureCount??0})}recordSuccess(){let e=this;return v.gen(function*(){if(!e.config.enabled)return;let t=yield*e.store.getState(e.nodeType);t!==null&&(t.state===`half-open`?(yield*e.store.incrementHalfOpenSuccesses(e.nodeType))>=e.config.halfOpenRequests&&(yield*e.transitionTo(`closed`,t.failureCount)):t.state===`closed`&&(yield*e.store.resetFailures(e.nodeType)))})}recordFailure(e){let t=this;return v.gen(function*(){if(!t.config.enabled)return;let e=yield*t.store.getState(t.nodeType);if(e===null||e.state===`closed`){let e=yield*t.store.incrementFailures(t.nodeType,t.config.windowDuration);e>=t.config.failureThreshold&&(yield*t.transitionTo(`open`,e))}else e.state===`half-open`&&(yield*t.transitionTo(`open`,e.failureCount))})}getFallback(){return this.config.fallback}reset(){let e=this;return v.gen(function*(){let t=(yield*e.store.getState(e.nodeType))?.state??`closed`;yield*e.store.setState(e.nodeType,n({failureThreshold:e.config.failureThreshold,resetTimeout:e.config.resetTimeout,halfOpenRequests:e.config.halfOpenRequests,windowDuration:e.config.windowDuration})),t!==`closed`&&(yield*e.emitEvent(t,`closed`,0))})}transitionTo(e,t){let n=this;return v.gen(function*(){let r=yield*n.store.getState(n.nodeType),i=r?.state??`closed`;if(i===e)return;let a=Date.now(),o={state:e,failureCount:e===`closed`?0:t,lastStateChange:a,halfOpenSuccesses:0,windowStart:e===`closed`?a:r?.windowStart??a,config:{failureThreshold:n.config.failureThreshold,resetTimeout:n.config.resetTimeout,halfOpenRequests:n.config.halfOpenRequests,windowDuration:n.config.windowDuration}};yield*n.store.setState(n.nodeType,o),yield*n.emitEvent(i,e,t)})}emitEvent(e,t,n){let r=this;return v.gen(function*(){r.eventHandler&&(yield*r.eventHandler({nodeType:r.nodeType,previousState:e,newState:t,timestamp:Date.now(),failureCount:n}))})}},ee=class{breakers=new Map;eventHandler;constructor(e){this.store=e}setEventHandler(e){this.eventHandler=e;for(let t of this.breakers.values())t.setEventHandler(e)}getOrCreate(e,t){let n=this.breakers.get(e);return n||(n=new P(e,t,this.store),this.eventHandler&&n.setEventHandler(this.eventHandler),this.breakers.set(e,n)),n}get(e){return this.breakers.get(e)}getAllStats(){return this.store.getAllStats()}resetAll(){let e=this;return v.gen(function*(){for(let t of e.breakers.values())yield*t.reset()})}clear(){this.breakers.clear()}};function te({source:e,target:t,sourcePort:n,targetPort:r}){return{source:e,target:t,sourcePort:n,targetPort:r}}let F=function(e){return e.JobStart=`job-start`,e.JobEnd=`job-end`,e.FlowStart=`flow-start`,e.FlowEnd=`flow-end`,e.FlowError=`flow-error`,e.FlowPause=`flow-pause`,e.FlowCancel=`flow-cancel`,e.NodeStart=`node-start`,e.NodeEnd=`node-end`,e.NodePause=`node-pause`,e.NodeResume=`node-resume`,e.NodeError=`node-error`,e.NodeStream=`node-stream`,e.NodeResponse=`node-response`,e.DlqItemAdded=`dlq-item-added`,e.DlqRetryStart=`dlq-retry-start`,e.DlqRetrySuccess=`dlq-retry-success`,e.DlqRetryFailed=`dlq-retry-failed`,e.DlqItemExhausted=`dlq-item-exhausted`,e.DlqItemResolved=`dlq-item-resolved`,e}({});var ne=class{types;constructor(){this.types=new Map}register(t){if(this.types.has(t.id))throw e.fromCode(`VALIDATION_ERROR`,{body:`Input type "${t.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:t.id}});this.types.set(t.id,t)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(t,n){let r=this.types.get(t);if(!r)return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Input type "${t}" is not registered`,details:{typeId:t}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for input type "${t}"`,cause:n,details:{typeId:t,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const I=new ne;function re(e,t){return I.validate(e,t)}var ie=class{types;constructor(){this.types=new Map}register(t){if(this.types.has(t.id))throw e.fromCode(`VALIDATION_ERROR`,{body:`Output type "${t.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:t.id}});this.types.set(t.id,t)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(t,n){let r=this.types.get(t);if(!r)return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Output type "${t}" is not registered`,details:{typeId:t}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for output type "${t}"`,cause:n,details:{typeId:t,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const L=new ie;function ae(e,t){return L.validate(e,t)}let R=function(e){return e.input=`input`,e.process=`process`,e.conditional=`conditional`,e.multiplex=`multiplex`,e.merge=`merge`,e}({});function z({id:t,name:n,description:r,type:i,inputSchema:a,outputSchema:o,run:s,condition:c,multiInput:l=!1,multiOutput:u=!1,pausable:d=!1,retry:f,inputTypeId:p,outputTypeId:m,keepOutput:h=!1,circuitBreaker:g,nodeTypeId:_}){return v.gen(function*(){return p&&!I.get(p)?yield*e.fromCode(`INVALID_INPUT_TYPE`,{body:`Input type "${p}" is not registered in inputTypeRegistry`,details:{inputTypeId:p,nodeId:t}}).toEffect():m&&!L.get(m)?yield*e.fromCode(`INVALID_OUTPUT_TYPE`,{body:`Output type "${m}" is not registered in outputTypeRegistry`,details:{outputTypeId:m,nodeId:t}}).toEffect():{id:t,name:n,description:r,type:i,inputTypeId:p,outputTypeId:m,keepOutput:h,inputSchema:a,outputSchema:o,pausable:d,run:({data:r,jobId:i,flowId:c,storageId:l,clientId:u})=>v.gen(function*(){let d=yield*s({data:yield*v.try({try:()=>a.parse(r),catch:r=>{let i=r instanceof Error?r.message:String(r);return e.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${t}) input validation failed: ${i}`,cause:r})}}),jobId:i,storageId:l,flowId:c,clientId:u});return d.type===`waiting`?{type:`waiting`,partialData:d.partialData,nodeType:m,nodeId:t}:{type:`complete`,data:yield*v.try({try:()=>o.parse(d.data),catch:r=>{let i=r instanceof Error?r.message:String(r);return e.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${t}) output validation failed: ${i}`,cause:r})}}),nodeType:m,nodeId:t}}),condition:c,multiInput:l,multiOutput:u,retry:f,circuitBreaker:g,nodeTypeId:_}})}const oe=e=>({id:e.id,name:e.name,description:e.description,type:e.type,inputTypeId:e.inputTypeId,outputTypeId:e.outputTypeId,nodeTypeId:e.nodeTypeId}),B=e=>t=>t.nodeType===e,se=B(`storage-output-v1`),ce=B(`streaming-input-v1`),V=e=>({type:`complete`,data:e}),le=e=>({type:`waiting`,partialData:e}),ue=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var de=class{typeChecker;constructor(e=ue){this.typeChecker=e}validateConnection(e,t,n){return this.getCompatibleTypes(e.outputSchema,t.inputSchema)}getCompatibleTypes(e,t){return this.typeChecker(e,t)}validateFlow(e,t){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=r.get(e.source),i=r.get(e.target);if(!t){n.push(`Source node ${e.source} not found`);continue}if(!i){n.push(`Target node ${e.target} not found`);continue}this.validateConnection(t,i,e)||n.push(`Schema mismatch: ${t.id} output schema incompatible with ${i.id} input schema`)}return{isValid:n.length===0,errors:n}}getExpectedInputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.target===e){let e=r.get(t.source);if(e){let n=t.sourcePort||t.source;i[n]=e.outputSchema}}return i}getActualOutputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.source===e){let e=r.get(t.target);if(e){let n=t.targetPort||t.target;i[n]=e.inputSchema}}return i}validateData(e,t){try{return t.parse(e),{isValid:!0,errors:[]}}catch(e){return e instanceof Error&&`errors`in e?{isValid:!1,errors:e.errors.map(e=>`${e.path.join(`.`)}: ${e.message}`)}:{isValid:!1,errors:[e instanceof Error?e.message:`Validation failed`]}}}};function H(e){if(!e)return{type:``,fileName:``,metadata:void 0,metadataJson:void 0};let t={...e},n=String(t.type||t.mimeType||t[`content-type`]||``);n&&(t.type||=n,t.mimeType||=n);let r=String(t.fileName||t.originalName||t.name||``);return r&&(t.fileName||=r,t.originalName||=r,t.name||=r),{type:n,fileName:r,metadata:t,metadataJson:JSON.stringify(t)}}const fe=E.object({operation:E.literal(`init`),storageId:E.string(),metadata:E.record(E.string(),E.any()).optional()}),pe=E.object({operation:E.literal(`finalize`),uploadId:E.string()}),me=E.object({operation:E.literal(`url`),url:E.string(),storageId:E.string().optional(),metadata:E.record(E.string(),E.any()).optional()}),U=E.union([fe,pe,me]),he=E.object({allowedMimeTypes:E.array(E.string()).optional(),minSize:E.number().positive().optional(),maxSize:E.number().positive().optional()});function ge(t,n){return v.gen(function*(){if(n){if(n.allowedMimeTypes&&n.allowedMimeTypes.length>0&&!n.allowedMimeTypes.some(e=>{if(e.endsWith(`/*`)){let n=e.slice(0,-2);return t.type.startsWith(n)}return t.type===e}))throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`File type "${t.type}" is not allowed. Allowed types: ${n.allowedMimeTypes.join(`, `)}`)}).toEffect();if(n.minSize!==void 0&&t.size<n.minSize)throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${t.size} bytes) is below minimum (${n.minSize} bytes)`)}).toEffect();if(n.maxSize!==void 0&&t.size>n.maxSize)throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${t.size} bytes) exceeds maximum (${n.maxSize} bytes)`)}).toEffect()}})}function _e(t,n,i){let a=i?.keepOutput??!1;return v.gen(function*(){let i=yield*m;return yield*z({id:t,name:`Input`,description:`Handles file input through multiple methods - streaming upload (init/finalize) or direct URL fetch`,type:R.input,nodeTypeId:`input`,inputSchema:U,outputSchema:r,keepOutput:a,inputTypeId:q,outputTypeId:W,run:({data:r,flowId:a,jobId:o,clientId:s})=>v.gen(function*(){switch(r.operation){case`init`:{let e={storageId:r.storageId,size:r.metadata?.size||0,type:r.metadata?.mimeType||`application/octet-stream`,fileName:r.metadata?.originalName,lastModified:r.metadata?.size?Date.now():void 0,metadata:r.metadata?JSON.stringify(r.metadata):void 0,flow:{flowId:a,nodeId:t,jobId:o}};return le(yield*i.createUpload(e,s))}case`finalize`:{let e=yield*i.getUpload(r.uploadId),{type:t}=H(e.metadata);return yield*ge({type:t,size:e.size||0},n),V(e)}case`url`:{let e=yield*h(r.url),c=yield*p(e),l=r.metadata?.mimeType||e.headers.get(`content-type`)||`application/octet-stream`,u=r.metadata?.size||Number(e.headers.get(`content-length`)||0),d=r.metadata?.originalName||r.url.split(`/`).pop()||`file`;yield*ge({type:l,size:u},n);let f=new ReadableStream({start(e){e.enqueue(new Uint8Array(c)),e.close()}}),m={storageId:r.storageId||`buffer`,size:u,type:l,fileName:d,lastModified:Date.now(),metadata:r.metadata?JSON.stringify(r.metadata):void 0};return V({...yield*i.upload(m,s,f),flow:{flowId:a,nodeId:t,jobId:o}})}default:throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`Invalid operation`)}).toEffect()}})})})}const W=`storage-output-v1`,G=`ocr-output-v1`,K=`image-description-output-v1`,q=`streaming-input-v1`,ve=E.object({extractedText:E.string(),format:E.enum([`markdown`,`plain`,`structured`]),taskType:E.enum([`convertToMarkdown`,`freeOcr`,`parseFigure`,`locateObject`]),confidence:E.number().min(0).max(1).optional()}),ye=E.object({description:E.string(),confidence:E.number().min(0).max(1).optional(),metadata:E.record(E.string(),E.unknown()).optional()});I.register({id:q,schema:U,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),L.register({id:W,schema:r,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),L.register({id:G,schema:ve,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),L.register({id:K,schema:ye,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});const J={enabled:!0,maxRetries:3,backoff:{type:`exponential`,initialDelayMs:1e3,maxDelayMs:3e5,multiplier:2,jitter:!0},ttlMs:6048e5};function Y(e,t){switch(e.type){case`immediate`:return 0;case`fixed`:return e.delayMs;case`exponential`:{let n=e.initialDelayMs*e.multiplier**t,r=Math.min(n,e.maxDelayMs);if(e.jitter){let e=.5+Math.random();return Math.floor(r*e)}return r}default:return 0}}function be(e,t){return!t.enabled||t.nonRetryableErrors?.includes(e)?!1:t.retryableErrors&&t.retryableErrors.length>0?t.retryableErrors.includes(e):!0}function xe(e,t){if(!(t===void 0||t<=0))return new Date(e.getTime()+t)}var X=class e extends g.Tag(`DeadLetterQueueService`)(){static optional=v.serviceOption(e)};function Se(){return v.gen(function*(){let e=yield*d,t=()=>`dlq_${crypto.randomUUID()}`,n=e=>({...e,createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt),expiresAt:e.expiresAt?new Date(e.expiresAt):void 0,nextRetryAt:e.nextRetryAt?new Date(e.nextRetryAt):void 0,retryHistory:e.retryHistory.map(e=>({...e,attemptedAt:new Date(e.attemptedAt)}))}),r=()=>v.gen(function*(){if(!e.list)return[];let t=yield*e.list(),r=[];for(let i of t){let t=yield*v.catchAll(e.get(i),()=>v.succeed(null));t&&r.push(n(t))}return r});return{add:(n,r,i=J)=>v.gen(function*(){let a=t(),o=new Date,s={code:r.code||`UNKNOWN_ERROR`,message:r.body||r.message||`Unknown error`,nodeId:void 0,stack:r.stack},c=n.tasks.find(e=>e.status===`failed`);c&&(s.nodeId=c.nodeId);let l={};for(let e of n.tasks)e.result!==void 0&&(l[e.nodeId]=e.result);let u=be(s.code,i),d;if(i.enabled&&u&&i.maxRetries>0){let e=Y(i.backoff,0);d=new Date(o.getTime()+e)}let f={id:a,jobId:n.id,flowId:n.flowId,storageId:n.storageId,clientId:n.clientId,error:s,inputs:n.executionState?.inputs||{},nodeResults:l,failedAtNodeId:s.nodeId,retryCount:0,maxRetries:i.maxRetries,nextRetryAt:d,retryHistory:[],createdAt:o,updatedAt:o,expiresAt:xe(o,i.ttlMs),status:u&&i.enabled?`pending`:`exhausted`};return yield*e.set(a,f),f}),get:t=>v.gen(function*(){return n(yield*e.get(t))}),getOption:t=>v.gen(function*(){let r=yield*v.either(e.get(t));return r._tag===`Left`?r.left.code===`FILE_NOT_FOUND`?b.none():yield*v.fail(r.left):b.some(n(r.right))}),delete:t=>e.delete(t),list:(e={})=>v.gen(function*(){let t=yield*r(),{status:n,flowId:i,clientId:a,limit:o=50,offset:s=0}=e,c=t;n&&(c=c.filter(e=>e.status===n)),i&&(c=c.filter(e=>e.flowId===i)),a&&(c=c.filter(e=>e.clientId===a)),c.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime());let l=c.length;return{items:c.slice(s,s+o),total:l}}),update:(t,r)=>v.gen(function*(){let i={...n(yield*e.get(t)),...r,updatedAt:new Date};return yield*e.set(t,i),i}),markRetrying:t=>v.gen(function*(){let r={...n(yield*e.get(t)),status:`retrying`,updatedAt:new Date};return yield*e.set(t,r),r}),recordRetryFailure:(t,r,i)=>v.gen(function*(){let a=n(yield*e.get(t)),o=new Date,s=a.retryCount+1,c=[...a.retryHistory,{attemptedAt:o,error:r,durationMs:i}],l=`pending`,u;if(s>=a.maxRetries)l=`exhausted`,u=void 0;else{let e=Y(J.backoff,s);u=new Date(o.getTime()+e)}let d={...a,retryCount:s,retryHistory:c,status:l,nextRetryAt:u,updatedAt:o};return yield*e.set(t,d),d}),markResolved:t=>v.gen(function*(){let r={...n(yield*e.get(t)),status:`resolved`,nextRetryAt:void 0,updatedAt:new Date};return yield*e.set(t,r),r}),getScheduledRetries:(e=100)=>v.gen(function*(){let t=yield*r(),n=new Date;return t.filter(e=>e.status===`pending`&&e.nextRetryAt&&e.nextRetryAt<=n).sort((e,t)=>(e.nextRetryAt?.getTime()||0)-(t.nextRetryAt?.getTime()||0)).slice(0,e)}),cleanup:(t={})=>v.gen(function*(){let n=yield*r(),{olderThan:i,status:a}=t,o=new Date,s=0;for(let t of n){let n=!1;t.expiresAt&&t.expiresAt<=o&&(n=!0),i&&t.createdAt<=i&&(a?n=t.status===a:(t.status===`exhausted`||t.status===`resolved`)&&(n=!0)),n&&(yield*v.catchAll(e.delete(t.id),()=>v.succeed(void 0)),s++)}return{deleted:s}}),getStats:()=>v.gen(function*(){let e=yield*r(),t={pending:0,retrying:0,exhausted:0,resolved:0},n={},i,a=0;for(let r of e)t[r.status]++,n[r.flowId]=(n[r.flowId]||0)+1,(!i||r.createdAt<i)&&(i=r.createdAt),a+=r.retryCount;let o=e.length>0?a/e.length:0;return{totalItems:e.length,byStatus:t,byFlow:n,oldestItem:i,averageRetryCount:o}})}})}const Ce=y.effect(X,Se());var we=class{maxConcurrency;constructor(e={}){this.maxConcurrency=e.maxConcurrency??4}groupNodesByExecutionLevel(e,t){let n={},r={};e.forEach(e=>{n[e.id]=[],r[e.id]=0}),t.forEach(e=>{n[e.source]?.push(e.target),r[e.target]=(r[e.target]||0)+1});let i=[],a=new Set,o=0;for(;a.size<e.length;){let e=Object.keys(r).filter(e=>r[e]===0&&!a.has(e));if(e.length===0)throw Error(`Cycle detected in flow graph - cannot execute in parallel`);i.push({level:o++,nodes:e}),e.forEach(e=>{a.add(e),delete r[e],n[e]?.forEach(e=>{r[e]!==void 0&&r[e]--})})}return i}executeNodesInParallel(e){return v.all(e.map(e=>e()),{concurrency:this.maxConcurrency})}canExecuteInParallel(e,t,n){return e.every(e=>(n[e]||[]).every(e=>t.has(e)))}getStats(){return{maxConcurrency:this.maxConcurrency}}};function Z(e){return t=>{if(t.nodeType!==e)return!1;let n=L.get(e);return n?n.schema.safeParse(t.data).success:!1}}function Te(e){return!e||typeof e!=`object`?!1:r.safeParse(e).success}const Ee=Z(`storage-output-v1`),De=Z(G),Oe=Z(K);function ke(e,t){return e.filter(t)}function Ae(t,n){return v.gen(function*(){let r=ke(t,n);return r.length===0?yield*e.fromCode(`OUTPUT_NOT_FOUND`,{body:`No output of the specified type was found in the flow results`}).toEffect():r.length>1?yield*e.fromCode(`MULTIPLE_OUTPUTS_FOUND`,{body:`Found ${r.length} outputs of the specified type, expected exactly one`,details:{foundCount:r.length,nodeIds:r.map(e=>e.nodeId)}}).toEffect():r[0]})}function je(e,t){return ke(e,t)[0]}function Me(e,t){return e.find(e=>e.nodeId===t)}function Ne(e,t){return e.some(t)}function Pe(e){return e.operation===`init`}function Fe(e){return e.operation===`finalize`}function Ie(e){return e.operation===`url`}function Le(e){return e.operation===`init`||e.operation===`url`}const Re=e=>({id:e.id,name:e.name,nodes:e.nodes.map(oe),edges:e.edges});function Q(t){return v.gen(function*(){let n=yield*v.all(t.nodes.map(e=>v.isEffect(e)?e:v.succeed(e))),{flowId:r,name:i,onEvent:a,checkJobStatus:o,edges:c,inputSchema:l,outputSchema:u,typeChecker:d,circuitBreaker:p}=t,m=n,h=new de(d),g=e=>{let t=e.circuitBreaker,n=e.nodeTypeId?p?.nodeTypeOverrides?.[e.nodeTypeId]:void 0,r=p?.defaults;if(!(!t&&!n&&!r))return{...r,...n,...t}},_=()=>{let e={},t={},n={};return m.forEach(r=>{e[r.id]=[],n[r.id]=[],t[r.id]=0}),c.forEach(r=>{e[r.source]?.push(r.target),n[r.target]?.push(r.source),t[r.target]=(t[r.target]||0)+1}),{graph:e,reverseGraph:n,inDegree:t}},y=new Map;c.forEach(e=>{let t=y.get(e.target)||[];t.push({source:e.source,sourcePort:e.sourcePort,targetPort:e.targetPort}),y.set(e.target,t)});let b=new Map,x=()=>{let{graph:e,inDegree:t}=_(),n=[],r=[];for(Object.keys(t).forEach(e=>{t[e]===0&&n.push(e)});n.length>0;){let i=n.shift();if(!i)throw Error(`No current node found`);r.push(i),e[i]?.forEach(e=>{t[e]=(t[e]||0)-1,t[e]===0&&n.push(e)})}return r},S=(e,t)=>{if(!e.condition)return v.succeed(!0);let{field:n,operator:r,value:i}=e.condition,a=t,o=a?.metadata?.[n]||a?.[n],s=(()=>{switch(r){case`equals`:return o===i;case`notEquals`:return o!==i;case`greaterThan`:return Number(o)>Number(i);case`lessThan`:return Number(o)<Number(i);case`contains`:return String(o).includes(String(i));case`startsWith`:return String(o).startsWith(String(i));default:return!0}})();return v.succeed(s)},C=(e,t)=>{let n=y.get(e)||[],r={};return n.forEach(e=>{let n=e.source,i=t.get(n);if(i!==void 0){if(m.find(e=>e.id===n)?.type===`conditional`&&e.sourcePort){let t=b.get(n)?`true`:`false`;if(e.sourcePort!==t)return}r[n]=i}}),r},T=(e,t,n)=>{let r=y.get(e)||[];if(m.find(t=>t.id===e)?.type===`input`||r.length===0)return`execute`;let i=!1,a=!1,o=!1,s=!1;for(let e of r){let r=e.source;if(n.has(r)){a=!0;continue}if(t.get(r)===void 0){s=!0;continue}if(m.find(e=>e.id===r)?.type===`conditional`&&e.sourcePort){let t=b.get(r);if(t===void 0){s=!0;continue}let n=t?`true`:`false`;e.sourcePort===n?o=!0:i=!0}else o=!0}return o?`execute`:(i||a)&&!s?`skip`:s?`wait`:`execute`},D=e=>{let t=m.filter(e=>e.type===`input`),n={};return t.forEach(t=>{e&&typeof e==`object`&&t.id in e&&(n[t.id]=l.parse(e[t.id]))}),n},O=e=>!c.some(t=>t.source===e),k=e=>{let t=m.find(t=>t.id===e);return O(e)||t?.keepOutput===!0},A=e=>{let t=m.filter(e=>k(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},j=(e,t)=>{let n=m.filter(e=>k(e.id)),r=[];return n.forEach(n=>{let i=e.get(n.id);if(i!==void 0){let e=t.get(n.id);r.push({nodeId:n.id,nodeType:e,data:i,timestamp:new Date().toISOString()})}}),r},M=(e,t,n)=>v.gen(function*(){if(e.storage.id===t)return e;let r=yield*s,i=yield*r.getDataStore(e.storage.id,n),a=yield*r.getDataStore(t,n),o=yield*i.read(e.id),c=w.make(o),l={...e,storage:{id:t,type:e.storage.type}},u=yield*a.create(l);return yield*a.write({file_id:u.id,stream:c,offset:0},{}),u}),N=(n,i,s,c,l,u,d,f)=>v.gen(function*(){let p=l.get(n);if(!p)return yield*e.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(o){let t=yield*o(u);if(t===`paused`)return yield*e.fromCode(`FLOW_PAUSED`,{cause:`Flow ${r} was paused by user at job ${u}`}).toEffect();if(t===`cancelled`)return yield*e.fromCode(`FLOW_CANCELLED`,{cause:`Flow ${r} was cancelled by user at job ${u}`}).toEffect()}a&&(yield*a({jobId:u,flowId:r,nodeId:n,eventType:F.NodeStart,nodeName:p.name,nodeType:p.type}));let m=p.retry?.maxRetries??0,h=p.retry?.retryDelay??1e3,_=p.retry?.exponentialBackoff??!0,y=g(p),x=y?.enabled&&p.nodeTypeId&&f?f.getOrCreate(p.nodeTypeId,y):null;if(x){let{allowed:t,state:i,failureCount:o}=yield*x.allowRequest();if(!t){let t=x.getFallback();return yield*v.logWarning(`Circuit breaker OPEN for node type "${p.nodeTypeId}" - applying fallback`),t.type===`skip`?(a&&(yield*a({jobId:u,flowId:r,nodeId:n,eventType:F.NodeEnd,nodeName:p.name})),{nodeId:n,result:s[n],success:!0,waiting:!1}):t.type===`default`?(a&&(yield*a({jobId:u,flowId:r,nodeId:n,eventType:F.NodeEnd,nodeName:p.name,result:t.value})),{nodeId:n,result:t.value,success:!0,waiting:!1}):yield*e.fromCode(`CIRCUIT_BREAKER_OPEN`,{body:`Circuit breaker is open for node type "${p.name}"`,details:{nodeType:p.name,nodeId:n,state:i,failureCount:o}}).toEffect()}}let w=0,T=null;for(;w<=m;)try{let o,l={};if(p.type===`input`){if(o=s[n],o===void 0)return yield*v.logError(`Input node ${n} has no input data`),yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Input node ${n} has no input data`)}).toEffect()}else{if(l=C(n,c),Object.keys(l).length===0)return yield*v.logError(`Node ${n} has no input data`),yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${n} has no input data`)}).toEffect();if(p.multiInput)o=l;else{let t=Object.keys(l)[0];if(!t)return yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${n} has no input data`)}).toEffect();o=l[t]}}if(p.type===`conditional`){let e=yield*S(p,o);b.set(n,e)}let f=yield*p.run({data:o,inputs:l,jobId:u,flowId:r,storageId:i,clientId:d});if(f.type===`waiting`){let e=f.partialData;return a&&(yield*a({jobId:u,flowId:r,nodeId:n,eventType:F.NodePause,nodeName:p.name,partialData:e})),{nodeId:n,result:e,success:!0,waiting:!0,nodeType:f.nodeType}}let m=f.data;if(k(n)&&(Te(m)&&m.storage.id!==i&&(yield*v.logDebug(`Auto-persisting output node ${n} output from ${m.storage.id} to ${i}`),m=yield*M(m,i,d)),t.hooks?.onNodeOutput)){yield*v.logDebug(`Calling onNodeOutput hook for sink node ${n}`);let e=t.hooks.onNodeOutput({output:m,nodeId:n,flowId:r,jobId:u,storageId:i,clientId:d});m=yield*v.isEffect(e)?e:v.promise(()=>e)}return x&&(yield*x.recordSuccess()),a&&(yield*a({jobId:u,flowId:r,nodeId:n,eventType:F.NodeEnd,nodeName:p.name,result:m})),{nodeId:n,result:m,success:!0,waiting:!1,nodeType:f.nodeType}}catch(t){if(T=t instanceof e?t:e.fromCode(`FLOW_NODE_ERROR`,{cause:t}),x&&(yield*x.recordFailure(T.body)),w<m){w++;let e=_?h*2**(w-1):h;yield*v.logWarning(`Node ${n} (${p.name}) failed, retrying (${w}/${m}) after ${e}ms`),yield*v.sleep(e);continue}return a&&(yield*a({jobId:u,flowId:r,nodeId:n,eventType:F.NodeError,nodeName:p.name,error:T.body,retryCount:w})),yield*T.toEffect()}return T?yield*T.toEffect():yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Unexpected error in retry loop`)}).toEffect()}).pipe((()=>{let e=l.get(n),t=e?.nodeTypeId??e?.type??`unknown`;return v.withSpan(`node-${t}`,{attributes:{"node.id":n,"node.type":e?.type??`unknown`,"node.type_id":e?.nodeTypeId??`unknown`,"node.name":e?.name??`unknown`,"flow.id":r,"flow.job_id":u}})})()),P=({inputs:n,storageId:i,jobId:o,resumeFrom:s,clientId:l})=>v.gen(function*(){let d=yield*v.serviceOption(f),p=d._tag===`Some`?new ee(d.value):null;!s&&a&&(yield*a({jobId:o,eventType:F.FlowStart,flowId:r}));let h=D(n||{}),g,_,y;s?(g=s.executionOrder,_=s.nodeResults,y=s.currentIndex):(g=x(),_=new Map,y=0);let b=new Map;if(g.length!==m.length)return yield*e.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let S=new Map(m.map(e=>[e.id,e])),C=new Set;if(t.parallelExecution?.enabled??!1){yield*v.logDebug(`Flow ${r}: Executing in parallel mode (maxConcurrency: ${t.parallelExecution?.maxConcurrency??4})`);let e=new we({maxConcurrency:t.parallelExecution?.maxConcurrency??4}),n=e.groupNodesByExecutionLevel(m,c);yield*v.logDebug(`Flow ${r}: Grouped nodes into ${n.length} execution levels`);let u={};m.forEach(e=>{u[e.id]=[]}),c.forEach(e=>{u[e.target]?.push(e.source)});for(let t of n){yield*v.logDebug(`Flow ${r}: Executing level ${t.level} with nodes: ${t.nodes.join(`, `)}`);let n=[],c=[];for(let e of t.nodes)T(e,_,C)===`skip`?(c.push(e),C.add(e)):n.push(e);if(c.length>0&&(yield*v.logDebug(`Flow ${r}: Skipping nodes due to conditional routing: ${c.join(`, `)}`)),n.length===0){yield*v.logDebug(`Flow ${r}: All nodes in level ${t.level} skipped due to conditional routing`);continue}let u=n.map(e=>()=>v.gen(function*(){if(s&&e===s.executionOrder[y]&&a){let t=S.get(e);t&&(yield*a({jobId:o,flowId:r,nodeId:e,eventType:F.NodeResume,nodeName:t.name,nodeType:t.type}))}return{nodeId:e,nodeResult:yield*N(e,i,h,_,S,o,l,p)}})),d=yield*e.executeNodesInParallel(u);for(let{nodeId:e,nodeResult:t}of d){if(t.waiting)return t.result!==void 0&&(_.set(e,t.result),t.nodeType&&b.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:g,currentIndex:g.indexOf(e),inputs:h}};t.success&&(_.set(e,t.result),t.nodeType&&b.set(e,t.nodeType))}}}else{yield*v.logDebug(`Flow ${r}: Executing in sequential mode`);for(let t=y;t<g.length;t++){let n=g[t];if(!n)return yield*e.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(T(n,_,C)===`skip`){yield*v.logDebug(`Flow ${r}: Skipping node ${n} due to conditional routing`),C.add(n);continue}if(s&&t===y&&a){let e=S.get(n);e&&(yield*a({jobId:o,flowId:r,nodeId:n,eventType:F.NodeResume,nodeName:e.name,nodeType:e.type}))}let c=yield*N(n,i,h,_,S,o,l,p);if(c.waiting)return c.result!==void 0&&(_.set(c.nodeId,c.result),c.nodeType&&b.set(c.nodeId,c.nodeType)),{type:`paused`,nodeId:c.nodeId,executionState:{executionOrder:g,currentIndex:t,inputs:h}};c.success&&(_.set(c.nodeId,c.result),c.nodeType&&b.set(c.nodeId,c.nodeType))}}let w=A(_),O=j(_,b),M=E.record(E.string(),u).safeParse(w);if(!M.success){let t=`Flow output validation failed: ${M.error.message}. Expected outputs: ${JSON.stringify(Object.keys(A(_)))}. Output nodes (sinks + keepOutput): ${m.filter(e=>k(e.id)).map(e=>e.id).join(`, `)}`;return a&&(yield*a({jobId:o,eventType:F.FlowError,flowId:r,error:t})),yield*e.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:t,cause:M.error}).toEffect()}let P=M.data;return a&&(yield*a({jobId:o,eventType:F.FlowEnd,flowId:r,outputs:O,result:P})),{type:`completed`,result:P,outputs:O}});return{id:r,name:i,nodes:m,edges:c,inputSchema:l,outputSchema:u,onEvent:a,checkJobStatus:o,hooks:t.hooks,run:({inputs:e,storageId:t,jobId:n,clientId:r})=>P({inputs:e,storageId:t,jobId:n,clientId:r}),resume:({jobId:e,storageId:t,nodeResults:n,executionState:r,clientId:i})=>P({inputs:r.inputs,storageId:t,jobId:e,resumeFrom:{executionOrder:r.executionOrder,nodeResults:new Map(Object.entries(n)),currentIndex:r.currentIndex},clientId:i}),validateTypes:()=>{let e=m;return h.validateFlow(e,c)},validateInputs:e=>h.validateData(e,l),validateOutputs:e=>h.validateData(e,u)}})}var ze=class{items=new Map;createItem(e){return v.sync(()=>(this.items.set(e.id,{...e}),e))}getItem(e){return v.sync(()=>this.items.get(e)??null)}updateItem(t,n){let r=this;return v.suspend(()=>{let i=r.items.get(t);if(!i)return v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{body:`Queue item ${t} not found`}));let a={...i,...n};return r.items.set(t,a),v.succeed(a)})}listByStatus(e){return v.sync(()=>{let t=[];for(let n of this.items.values())n.status===e&&t.push({...n});return e===`pending`&&t.sort((e,t)=>e.enqueuedAt.getTime()-t.enqueuedAt.getTime()),t})}deleteItem(e){return v.sync(()=>{this.items.delete(e)})}};const Be={maxConcurrency:4,dlqRetryIntervalMs:3e4,dlqRetryBatchSize:10};var Ve=class e extends g.Tag(`FlowWaitUntil`)(){static optional=v.serviceOption(e)},He=class e extends g.Tag(`FlowLifecycleHook`)(){static optional=v.serviceOption(e)},Ue=class extends g.Tag(`FlowProvider`)(){},We=class extends g.Tag(`FlowEngine`)(){};const Ge=e=>typeof e==`object`&&!!e&&`id`in e,Ke=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function qe(t,n,r){let i=e=>{let i=t=>v.gen(function*(){let n=yield*r.get(e);n&&(yield*r.set(e,{...n,...t,updatedAt:new Date}))});return a=>v.gen(function*(){switch(t.onEvent&&(yield*v.catchAll(t.onEvent(a),e=>(v.logError(`Original onEvent failed`,e),v.succeed({eventId:null})))),yield*n.emit(e,a),v.logInfo(`Updating job ${e} with event ${a.eventType}`),a.eventType){case F.FlowStart:yield*i({status:`running`});break;case F.FlowEnd:yield*v.gen(function*(){let t=yield*r.get(e);t&&a.outputs&&(yield*r.set(e,{...t,result:a.outputs,updatedAt:new Date}))});break;case F.FlowError:yield*i({status:`failed`,error:a.error});break;case F.NodeStart:yield*v.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.find(e=>e.nodeId===a.nodeId)?t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`running`,updatedAt:new Date}:e):[...t.tasks,{nodeId:a.nodeId,status:`running`,createdAt:new Date,updatedAt:new Date}];yield*r.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case F.NodePause:yield*v.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.find(e=>e.nodeId===a.nodeId)?t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`paused`,result:a.partialData,updatedAt:new Date}:e):[...t.tasks,{nodeId:a.nodeId,status:`paused`,result:a.partialData,createdAt:new Date,updatedAt:new Date}],i=a.partialData?.id,o=i?[...t.activeUploads||[],i]:t.activeUploads;yield*r.set(e,{...t,tasks:n,activeUploads:o,updatedAt:new Date})}});break;case F.NodeResume:yield*v.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`running`,updatedAt:new Date}:e);yield*r.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case F.NodeEnd:yield*v.gen(function*(){let n=yield*r.get(e);if(n){let i=n.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`completed`,result:a.result,updatedAt:new Date}:e),o=!t.edges.some(e=>e.source===a.nodeId),s=t.nodes.find(e=>e.id===a.nodeId)?.keepOutput===!0,c=a.result,l=Ke(c),u=n.intermediateFiles||[],d=o||s;d&&Ge(l)&&l.id?(u=u.filter(e=>e!==l.id),s&&!o&&v.logInfo(`Preserving output from node ${a.nodeId} due to keepOutput flag`)):!d&&Ge(l)&&l.id&&(u.includes(l.id)||u.push(l.id));let f=n.activeUploads||[];Ge(l)&&l.id&&(f=f.filter(e=>e!==l.id)),yield*r.set(e,{...n,tasks:i,intermediateFiles:u,activeUploads:f,updatedAt:new Date})}});break;case F.NodeError:yield*v.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`failed`,error:a.error,retryCount:a.retryCount,updatedAt:new Date}:e);yield*r.set(e,{...t,tasks:n,error:a.error,updatedAt:new Date})}});break}return{eventId:e}})},a=t=>t=>v.gen(function*(){let n=yield*r.get(t);return n?n.status===`paused`?`paused`:n.status===`cancelled`?`cancelled`:`running`:yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))});return{...t,run:e=>v.gen(function*(){let n=e.jobId||crypto.randomUUID(),r=i(n),o=a(n);return yield*(yield*Q({flowId:t.id,name:t.name,nodes:t.nodes,edges:t.edges,inputSchema:t.inputSchema,outputSchema:t.outputSchema,onEvent:r,checkJobStatus:o})).run({...e,jobId:n,clientId:e.clientId})}),resume:e=>v.gen(function*(){let n=e.jobId,r=i(n),o=a(n);return yield*(yield*Q({flowId:t.id,name:t.name,nodes:t.nodes,edges:t.edges,inputSchema:t.inputSchema,outputSchema:t.outputSchema,onEvent:r,checkJobStatus:o})).resume(e)})}}function Je(){return v.gen(function*(){let n=yield*Ue,r=yield*l,i=yield*t,a=yield*m,o=yield*X.optional,s=yield*He.optional,c=(t,n)=>v.gen(function*(){let r=yield*i.get(t);return r?yield*i.set(t,{...r,...n}):yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),u=(e,t)=>v.gen(function*(){let n=yield*i.get(e);!n||!n.intermediateFiles||n.intermediateFiles.length===0||(yield*v.logInfo(`Cleaning up ${n.intermediateFiles.length} intermediate files for job ${e}`),yield*v.all(n.intermediateFiles.map(e=>v.gen(function*(){yield*a.delete(e,t),yield*v.logDebug(`Deleted intermediate file ${e}`)}).pipe(v.catchAll(t=>v.gen(function*(){return yield*v.logWarning(`Failed to delete intermediate file ${e}: ${t}`),v.succeed(void 0)})))),{concurrency:5}),yield*c(e,{intermediateFiles:[]}))}),d=(e,t)=>v.gen(function*(){if(b.isNone(o)){yield*v.logDebug(`[FlowServer] DLQ not configured, skipping for job: ${e}`);return}let n=o.value,r=yield*v.catchAll(i.get(e),()=>v.succeed(null));if(!r){yield*v.logWarning(`[FlowServer] Job ${e} not found when adding to DLQ`);return}yield*v.catchAll(n.add(r,t),t=>v.gen(function*(){return yield*v.logError(`[FlowServer] Failed to add job ${e} to DLQ`,t),v.succeed(void 0)})),yield*v.logInfo(`[FlowServer] Added job ${e} to Dead Letter Queue`)}),f=e=>b.isSome(s)?s.value.onComplete(e).pipe(v.catchAll(e=>v.logWarning(`FlowLifecycleHook.onComplete failed: ${e}`))):v.void,p=v.gen(function*(){let e=yield*v.currentSpan.pipe(v.option);return b.match(e,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})}),h=({jobId:t,flow:n,storageId:o,clientId:s,inputs:l})=>v.gen(function*(){return console.log(`[FlowServer] executeFlowInBackground started for job: ${t}`),yield*c(t,{status:`running`,traceContext:yield*p}),yield*v.gen(function*(){console.log(`[FlowServer] Creating flowWithEvents for job: ${t}`);let e=qe(n,r,i);console.log(`[FlowServer] Running flow for job: ${t}`);let a=yield*e.run({inputs:l,storageId:o,jobId:t,clientId:s});return console.log(`[FlowServer] Flow completed for job: ${t}, result type: ${a.type}`),a.type===`paused`?yield*c(t,{status:`paused`,pausedAt:a.nodeId,executionState:a.executionState,updatedAt:new Date}):(yield*c(t,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*u(t,s),yield*f({jobId:t,flowId:n.id,clientId:s,status:`completed`})),a}).pipe(v.withSpan(`flow-execution`,{attributes:{"flow.id":n.id,"flow.name":n.name,"flow.job_id":t,"flow.storage_id":o,"flow.node_count":n.nodes.length}}))}).pipe(v.withSpan(`flow`,{attributes:{"flow.id":n.id,"flow.name":n.name,"flow.job_id":t,"flow.storage_id":o,"flow.node_count":n.nodes.length}}),v.catchAll(o=>v.gen(function*(){yield*v.logError(`Flow execution failed`,o);let l=o instanceof e?o.body:String(o);yield*v.logInfo(`Updating job ${t} to failed status with error: ${l}`),yield*c(t,{status:`failed`,error:l,updatedAt:new Date}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logError(`Failed to update job ${t}`,e),v.succeed(void 0)})));let p=yield*i.get(t);throw p&&(yield*r.emit(t,{jobId:t,eventType:F.FlowError,flowId:p.flowId,error:l}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logError(`Failed to emit FlowError event for job ${t}`,e),v.succeed(void 0)})))),n.onEvent&&(yield*n.onEvent({jobId:t,eventType:F.FlowError,flowId:n.id,error:l}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logError(`Failed to call flow.onEvent for FlowError event for job ${t}`,e),v.succeed({eventId:null})})))),yield*u(t,s).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logWarning(`Failed to cleanup intermediate files for job ${t}`,e),v.succeed(void 0)}))),yield*v.gen(function*(){let e=yield*i.get(t);e&&e.activeUploads&&e.activeUploads.length>0&&(yield*v.logInfo(`Cleaning up ${e.activeUploads.length} active uploads for failed job ${t}`),yield*v.all(e.activeUploads.map(e=>v.gen(function*(){yield*a.delete(e,s),yield*v.logDebug(`Aborted active upload ${e} for failed job ${t}`)}).pipe(v.catchAll(t=>v.gen(function*(){return yield*v.logWarning(`Failed to abort active upload ${e}: ${t}`),v.succeed(void 0)})))),{concurrency:5}),yield*c(t,{activeUploads:[]}))}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logWarning(`Failed to cleanup active uploads for job ${t}`,e),v.succeed(void 0)}))),yield*d(t,o instanceof e?o:new e({code:`UNKNOWN_ERROR`,status:500,body:String(o),cause:o})),yield*f({jobId:t,flowId:n.id,clientId:s,status:`failed`}),o})));return{getFlow:(e,t)=>v.gen(function*(){return yield*n.getFlow(e,t)}),getFlowData:(e,t)=>v.gen(function*(){return Re(yield*n.getFlow(e,t))}),runFlow:({flowId:t,storageId:r,clientId:a,inputs:o,jobId:s})=>v.gen(function*(){let c=yield*v.serviceOption(Xe),l=yield*Qe.optional;if(b.isSome(l)&&b.isNone(c)){let e=yield*l.value.enqueue({flowId:t,storageId:r,input:o,clientId:a}),n=e.enqueuedAt,s={id:e.id,flowId:t,storageId:r,clientId:a,status:`pending`,tasks:[],createdAt:n,updatedAt:n};return yield*i.set(e.id,s),s}let u=yield*Ve.optional,d=yield*v.try({try:()=>Vt.parse({inputs:o}),catch:t=>e.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:t})}),f=s??crypto.randomUUID(),p=new Date,m={id:f,flowId:t,storageId:r,clientId:a,status:`started`,createdAt:p,updatedAt:p,tasks:[]};yield*i.set(f,m);let g=yield*n.getFlow(t,a);console.log(`[FlowServer] About to fork flow execution for job: ${f}`);let _=h({jobId:f,flow:g,storageId:r,clientId:a,inputs:d.inputs}).pipe(v.tapErrorCause(e=>v.logError(`Flow execution failed`,e)));if(b.isSome(u)){console.log(`[FlowServer] Using waitUntil for job: ${f}`);let e=yield*v.runtime(),t=S.runPromise(e)(_);u.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${f}`),yield*v.forkDaemon(_);return console.log(`[FlowServer] Flow execution started for job: ${f}`),m}),getJobStatus:t=>v.gen(function*(){return(yield*i.get(t))||(yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`})))}),resumeFlow:({jobId:t,nodeId:o,newData:s,clientId:l})=>v.gen(function*(){let p=yield*Ve.optional,m=yield*i.get(t);if(!m)return console.error(`Job not found`),yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}));if(m.status!==`paused`)return console.error(`Job is not paused`),yield*v.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} is not paused (status: ${m.status})`}));if(m.pausedAt!==o)return console.error(`Job is not paused at the expected node`),yield*v.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} is paused at node ${m.pausedAt}, not ${o}`}));if(!m.executionState)return console.error(`Job has no execution state`),yield*v.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} has no execution state`}));let h={...m.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[o]:s},g={...m.executionState.inputs,[o]:s};yield*c(t,{status:`running`});let _=yield*n.getFlow(m.flowId,m.clientId),y=m.traceContext?T.externalSpan({traceId:m.traceContext.traceId,spanId:m.traceContext.spanId,sampled:m.traceContext.traceFlags===1}):void 0,x=v.gen(function*(){let n=qe(_,r,i);if(!m.executionState)return yield*v.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} has no execution state`}));let a=yield*n.resume({jobId:t,storageId:m.storageId,nodeResults:h,executionState:{...m.executionState,inputs:g},clientId:m.clientId});return a.type===`paused`?yield*c(t,{status:`paused`,pausedAt:a.nodeId,executionState:a.executionState,updatedAt:new Date}):(yield*c(t,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*u(t,l),yield*f({jobId:t,flowId:_.id,clientId:m.clientId,status:`completed`})),a}).pipe(v.withSpan(`flow-execution-resume`,{attributes:{"flow.id":_.id,"flow.name":_.name,"flow.job_id":t,"flow.storage_id":m.storageId,"flow.resumed_from_node":o},parent:y})).pipe(v.catchAll(n=>v.gen(function*(){yield*v.logError(`Flow resume failed`,n);let o=n instanceof e?n.body:String(n);yield*v.logInfo(`Updating job ${t} to failed status with error: ${o}`),yield*c(t,{status:`failed`,error:o,updatedAt:new Date}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logError(`Failed to update job ${t}`,e),v.succeed(void 0)})));let s=yield*i.get(t);throw s&&(yield*r.emit(t,{jobId:t,eventType:F.FlowError,flowId:s.flowId,error:o}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logError(`Failed to emit FlowError event for job ${t}`,e),v.succeed(void 0)})))),yield*u(t,l).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logWarning(`Failed to cleanup intermediate files for job ${t}`,e),v.succeed(void 0)}))),yield*v.gen(function*(){let e=yield*i.get(t);e&&e.activeUploads&&e.activeUploads.length>0&&(yield*v.logInfo(`Cleaning up ${e.activeUploads.length} active uploads for failed job ${t}`),yield*v.all(e.activeUploads.map(e=>v.gen(function*(){yield*a.delete(e,l),yield*v.logDebug(`Aborted active upload ${e} for failed job ${t}`)}).pipe(v.catchAll(t=>v.gen(function*(){return yield*v.logWarning(`Failed to abort active upload ${e}: ${t}`),v.succeed(void 0)})))),{concurrency:5}),yield*c(t,{activeUploads:[]}))}).pipe(v.catchAll(e=>v.gen(function*(){return yield*v.logWarning(`Failed to cleanup active uploads for job ${t}`,e),v.succeed(void 0)}))),yield*d(t,n instanceof e?n:new e({code:`UNKNOWN_ERROR`,status:500,body:String(n),cause:n})),yield*f({jobId:t,flowId:_.id,clientId:m.clientId,status:`failed`}),n}))).pipe(v.tapErrorCause(e=>v.logError(`Flow resume failed`,e)));if(b.isSome(p)){console.log(`[FlowServer] Using waitUntil for resume job: ${t}`);let e=yield*v.runtime(),n=S.runPromise(e)(x);p.value(n)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${t}`),yield*v.forkDaemon(x);return(yield*i.get(t))||(yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after update`})))}),pauseFlow:(t,n)=>v.gen(function*(){let a=yield*i.get(t);if(!a)return yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}));if(n!==null&&a.clientId!==n)return yield*v.fail(e.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to pause job ${t}`}));if(a.status!==`running`)return yield*v.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be paused (current status: ${a.status})`}));let o=a.tasks.find(e=>e.status===`running`)?.nodeId;return yield*c(t,{status:`paused`,pausedAt:o,updatedAt:new Date}),yield*r.emit(t,{jobId:t,flowId:a.flowId,eventType:F.FlowPause,pausedAt:o}),(yield*i.get(t))||(yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after pause`})))}),cancelFlow:(t,n)=>v.gen(function*(){let o=yield*i.get(t);return o?n!==null&&o.clientId!==n?yield*v.fail(e.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to cancel job ${t}`})):o.status!==`running`&&o.status!==`paused`&&o.status!==`started`?yield*v.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be cancelled (current status: ${o.status})`})):(yield*c(t,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*r.emit(t,{jobId:t,flowId:o.flowId,eventType:F.FlowCancel}),o.activeUploads&&o.activeUploads.length>0&&(yield*v.logInfo(`Cleaning up ${o.activeUploads.length} active uploads for job ${t}`),yield*v.all(o.activeUploads.map(e=>v.gen(function*(){yield*a.delete(e,n),yield*v.logDebug(`Aborted active upload ${e} for job ${t}`)}).pipe(v.catchAll(t=>v.gen(function*(){return yield*v.logWarning(`Failed to abort active upload ${e}: ${t}`),v.succeed(void 0)})))),{concurrency:5}),yield*c(t,{activeUploads:[]})),yield*u(t,n),(yield*i.get(t))||(yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after cancellation`})))):yield*v.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),subscribeToFlowEvents:(e,t)=>v.gen(function*(){yield*r.subscribe(e,t)}),unsubscribeFromFlowEvents:e=>v.gen(function*(){yield*r.unsubscribe(e)})}})}const Ye=y.effect(We,Je());var Xe=class extends g.Tag(`FlowQueueDispatchMarker`)(){};function Ze(t){let n=e=>({...e,enqueuedAt:new Date(e.enqueuedAt),startedAt:e.startedAt?new Date(e.startedAt):void 0,completedAt:e.completedAt?new Date(e.completedAt):void 0});return{createItem:e=>t.set(e.id,e).pipe(v.map(()=>e)),getItem:e=>t.get(e).pipe(v.map(e=>n(e)),v.catchAll(()=>v.succeed(null))),updateItem:(r,i)=>v.gen(function*(){let a={...yield*t.get(r).pipe(v.map(n),v.mapError(()=>e.fromCode(`FLOW_JOB_NOT_FOUND`,{body:`Queue item ${r} not found`}))),...i};return yield*t.set(r,a),a}),listByStatus:e=>v.gen(function*(){if(!t.list)return[];let r=yield*t.list(),i=[];for(let a of r){let r=yield*t.get(a).pipe(v.map(e=>n(e)),v.catchAll(()=>v.succeed(null)));r&&r.status===e&&i.push(r)}return e===`pending`&&i.sort((e,t)=>e.enqueuedAt.getTime()-t.enqueuedAt.getTime()),i}),deleteItem:e=>t.delete(e)}}var Qe=class e extends g.Tag(`FlowQueueService`)(){static optional=v.serviceOption(e);static Default(t){return e.make(t??{},new ze)}static make(t,n){return y.effect(e,$e(t,n))}static fromKvStore(t={}){return y.effect(e,v.gen(function*(){return yield*$e(t,Ze(yield*u))}))}static fromBaseKvStore(t={}){return e.fromKvStore(t).pipe(y.provide(i))}};function $e(t,n){return v.gen(function*(){let{maxConcurrency:r,dlqRetryIntervalMs:i,dlqRetryBatchSize:a}={...Be,...t},o=yield*x.make(0),s=yield*We,c=yield*X.optional,l=()=>`q_${crypto.randomUUID()}`,u=t=>{let r=Date.now(),i=v.gen(function*(){yield*v.catchAll(n.updateItem(t.id,{status:`running`,startedAt:new Date}),e=>v.logError(`FlowQueue: failed to mark item running`,e)),yield*x.update(o,e=>e+1)}),a=s.runFlow({flowId:t.flowId,storageId:t.storageId,clientId:t.clientId,inputs:t.input,jobId:t.id}).pipe(v.provideService(Xe,!0)).pipe(v.andThen(()=>v.gen(function*(){yield*v.catchAll(n.updateItem(t.id,{status:`completed`,completedAt:new Date}),e=>v.logError(`FlowQueue: failed to mark item completed`,e)),t.dlqItemId&&b.isSome(c)&&(yield*v.catchAll(c.value.markResolved(t.dlqItemId),e=>v.logError(`FlowQueue: failed to mark DLQ item resolved`,e)))})),v.catchAll(i=>v.gen(function*(){let a=i instanceof e?i.body:String(i);if(yield*v.catchAll(n.updateItem(t.id,{status:`failed`,completedAt:new Date,error:a}),e=>v.logError(`FlowQueue: failed to mark item failed`,e)),t.dlqItemId&&b.isSome(c)){let e=Date.now()-r;yield*v.catchAll(c.value.recordRetryFailure(t.dlqItemId,a,e),e=>v.logError(`FlowQueue: failed to record DLQ retry failure`,e))}}))),l=x.update(o,e=>Math.max(0,e-1));return i.pipe(v.andThen(()=>a.pipe(v.ensuring(l))),v.catchAllCause(e=>v.logError(`FlowQueue: unexpected error in dispatchItem`,e)))},d=v.gen(function*(){let e=r-(yield*x.get(o));if(e<=0)return;let t=(yield*v.catchAll(n.listByStatus(`pending`),()=>v.succeed([]))).slice(0,e);for(let e of t)yield*v.forkDaemon(u(e))});if(yield*v.forkDaemon(d.pipe(v.repeat(C.spaced(_.millis(500))),v.catchAllCause(e=>v.logError(`FlowQueue: worker loop crashed`,e)))),b.isSome(c)){let e=c.value,t=v.gen(function*(){let t=yield*v.catchAll(e.getScheduledRetries(a),e=>v.logError(`FlowQueue: failed to fetch DLQ scheduled retries`,e).pipe(v.as([])));for(let r of t){yield*v.catchAll(e.markRetrying(r.id),e=>v.logError(`FlowQueue: failed to mark DLQ item retrying`,e));let t={id:l(),flowId:r.flowId,storageId:r.storageId,input:r.inputs,clientId:r.clientId,status:`pending`,dlqItemId:r.id,enqueuedAt:new Date};yield*v.catchAll(n.createItem(t),e=>v.logError(`FlowQueue: failed to enqueue DLQ retry item`,e))}});yield*v.forkDaemon(v.sleep(_.millis(i)).pipe(v.andThen(t.pipe(v.repeat(C.spaced(_.millis(i))))),v.catchAllCause(e=>v.logError(`FlowQueue: DLQ retry loop crashed`,e))))}return{enqueue:({flowId:e,storageId:t,input:r,clientId:i,dlqItemId:a})=>v.gen(function*(){let o={id:l(),flowId:e,storageId:t,input:r,clientId:i,status:`pending`,dlqItemId:a,enqueuedAt:new Date};return yield*n.createItem(o)}),getStatus:t=>v.gen(function*(){return(yield*n.getItem(t))||(yield*v.fail(e.fromCode(`QUEUE_ITEM_NOT_FOUND`)))}),cancel:t=>v.gen(function*(){let r=yield*n.getItem(t);if(!r)return yield*v.fail(e.fromCode(`QUEUE_ITEM_NOT_FOUND`));if(r.status===`running`)return yield*v.fail(e.fromCode(`QUEUE_ITEM_ALREADY_RUNNING`));r.status===`pending`&&(yield*n.deleteItem(t))}),list:e=>v.gen(function*(){if(e?.status)return yield*n.listByStatus(e.status);let[t,r,i,a]=yield*v.all([n.listByStatus(`pending`),n.listByStatus(`running`),n.listByStatus(`completed`),n.listByStatus(`failed`)]);return[...t,...r,...i,...a]}),getStats:()=>v.gen(function*(){let[e,t,i,a]=yield*v.all([n.listByStatus(`pending`),n.listByStatus(`running`),n.listByStatus(`completed`),n.listByStatus(`failed`)]),s=yield*x.get(o);return{pending:e.length,running:t.length,completed:i.length,failed:a.length,maxConcurrency:r,currentConcurrency:s}})}})}function et(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function tt(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?``:e.substring(t+1)}function nt(e,t,n){let r=e.metadata??{},i=r.fileName??r.originalName??r.name??`unnamed`;return{baseName:et(i),extension:tt(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function rt(e,t){try{let n={};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=String(r));return D(e,n)}catch{return e}}function it(e,t,n){let r=t.fileName;if(!n)return r;try{if(n.mode===`auto`){if(n.autoSuffix){let e=n.autoSuffix(t);if(e){let{baseName:n,extension:r}=t;return r?`${n}-${e}.${r}`:`${n}-${e}`}}return r}if(n.mode===`custom`){if(n.rename)return n.rename(e,t)||r;if(n.pattern)return rt(n.pattern,t)||r}return r}catch{return r}}function at(e){if(!e||e.trim()===``)return{isValid:!1,error:`Pattern cannot be empty`};let t=(e.match(/\{\{/g)||[]).length,n=(e.match(/\}\}/g)||[]).length;if(t!==n)return{isValid:!1,error:`Unbalanced braces: ${t} opening, ${n} closing`};let r=e.match(/\{\{[^}]*[^a-zA-Z0-9_}][^}]*\}\}/g);return r?{isValid:!1,error:`Invalid variable syntax: ${r[0]}`}:{isValid:!0}}const ot=[{name:`baseName`,description:`Filename without extension`,example:`photo`},{name:`extension`,description:`File extension without dot`,example:`jpg`},{name:`fileName`,description:`Full original filename`,example:`photo.jpg`},{name:`nodeType`,description:`Type of processing node`,example:`resize`},{name:`nodeId`,description:`Specific node instance ID`,example:`resize-1`},{name:`flowId`,description:`Flow identifier`,example:`flow-abc`},{name:`jobId`,description:`Execution job ID`,example:`job-123`},{name:`timestamp`,description:`ISO 8601 processing time`,example:`2024-01-15T10:30:00Z`},{name:`width`,description:`Output width (image/video)`,example:`800`},{name:`height`,description:`Output height (image/video)`,example:`600`},{name:`format`,description:`Output format`,example:`webp`},{name:`quality`,description:`Quality setting`,example:`80`},{name:`pageNumber`,description:`Page number (documents)`,example:`1`}];function $(e){return!(`stream`in e)}function st({id:e,name:t,description:n,outputTypeId:i,keepOutput:a,naming:o,nodeType:s=`transform`,nodeTypeId:l,namingVars:u,circuitBreaker:d,mode:f=`auto`,streamingConfig:p,transform:h,streamingTransform:g}){if(f===`streaming`&&!g)throw Error(`Transform node "${e}": mode is "streaming" but no streamingTransform function provided`);if(f===`buffered`&&!h)throw Error(`Transform node "${e}": mode is "buffered" but no transform function provided`);if(f===`auto`&&!h&&!g)throw Error(`Transform node "${e}": mode is "auto" but neither transform nor streamingTransform provided`);let _={...c,...p};return v.gen(function*(){let c=yield*m;return yield*z({id:e,name:t,description:n,type:R.process,outputTypeId:i,keepOutput:a,nodeTypeId:l,circuitBreaker:d,inputSchema:r,outputSchema:r,run:({data:t,storageId:n,flowId:r,jobId:i,clientId:a})=>v.gen(function*(){let l={flowId:r,nodeId:e,jobId:i},d=yield*v.gen(function*(){if(f===`buffered`)return!1;if(f===`streaming`)return!0;let e=t.size??0,r=_.fileSizeThreshold;return e>0&&e<r?(yield*v.logDebug(`File ${t.id} (${e} bytes) below threshold (${r}), using buffered mode`),!1):g?(yield*c.getCapabilities(n,a)).supportsStreamingRead?(yield*v.logDebug(`File ${t.id} qualifies for streaming mode`),!0):(yield*v.logDebug(`DataStore doesn't support streaming read, using buffered mode`),!1):(yield*v.logDebug(`No streamingTransform function, using buffered mode`),!1)}),{type:p,fileName:m,metadata:y,metadataJson:b}=H(t.metadata);if(d&&g){yield*v.logDebug(`Using streaming transform for ${t.id}`);let d=yield*g(yield*c.readStream(t.id,a,_),t),f=$(d)?d:d.stream,h=$(d)?void 0:d.type,x=$(d)?void 0:d.estimatedSize,S=$(d)?void 0:d.fileName;!S&&o&&(S=it(t,nt(t,{flowId:r,jobId:i,nodeId:e,nodeType:s},u),o));let C=yield*c.getCapabilities(n,a),T;if(C.supportsStreamingWrite)yield*v.logDebug(`Using streaming write for ${t.id} - no intermediate buffering`),T=yield*c.uploadStream({storageId:n,uploadLengthDeferred:!0,sizeHint:x,type:h??p,fileName:S??m,lastModified:0,metadata:b,flow:l},a,f);else{yield*v.logDebug(`Falling back to buffered upload for ${t.id} (streaming write not supported)`);let e=[];yield*w.runForEach(f,t=>v.sync(()=>{e.push(t)}));let r=e.reduce((e,t)=>e+t.byteLength,0),i=new Uint8Array(r),o=0;for(let t of e)i.set(t,o),o+=t.byteLength;let s=new ReadableStream({start(e){e.enqueue(i),e.close()}});T=yield*c.upload({storageId:n,size:i.byteLength,type:h??p,fileName:S??m,lastModified:0,metadata:b,flow:l},a,s)}let E=y?{...y,...h&&{mimeType:h,type:h,"content-type":h},...S&&{fileName:S,originalName:S,name:S,extension:S.split(`.`).pop()||y.extension}}:T.metadata;return V(E?{...T,metadata:E}:T)}if(!h)throw Error(`Transform node "${e}": buffered mode selected but no transform function provided`);let x=yield*h(yield*c.read(t.id,a),t),S=x instanceof Uint8Array?x:x.bytes,C=x instanceof Uint8Array?void 0:x.type,T=x instanceof Uint8Array?void 0:x.fileName,E=x instanceof Uint8Array?void 0:x.metadata;!T&&o&&(T=it(t,nt(t,{flowId:r,jobId:i,nodeId:e,nodeType:s},u),o));let D=new ReadableStream({start(e){e.enqueue(S),e.close()}}),O=yield*c.upload({storageId:n,size:S.byteLength,type:C??p,fileName:T??m,lastModified:0,metadata:b,flow:l},a,D),k=y?{...y,...E,...C&&{mimeType:C,type:C,"content-type":C},...T&&{fileName:T,originalName:T,name:T,extension:T.split(`.`).pop()||y.extension}}:O.metadata;return V(k?{...O,metadata:k}:O)})})})}var ct=class extends g.Tag(`CredentialProvider`)(){},lt=class extends g.Tag(`DocumentAiPlugin`)(){},ut=class extends g.Tag(`DocumentPlugin`)(){},dt=class extends g.Tag(`ImageAiPlugin`)(){},ft=class extends g.Tag(`ImagePlugin`)(){};const pt=E.object({serviceType:E.enum([`replicate`]).optional()}),mt=E.object({duration:E.number().nonnegative(),width:E.number().positive(),height:E.number().positive(),codec:E.string(),format:E.string(),bitrate:E.number().nonnegative(),frameRate:E.number().positive(),aspectRatio:E.string(),hasAudio:E.boolean(),audioCodec:E.string().optional(),audioBitrate:E.number().nonnegative().optional(),size:E.number().nonnegative()}),ht=E.object({timestamp:E.number().nonnegative(),format:E.enum([`png`,`jpeg`]).optional(),quality:E.number().min(1).max(100).optional()}),gt=E.object({quality:E.number().min(0).max(100),format:E.enum([`jpeg`,`webp`,`png`,`avif`])}),_t=E.object({serviceType:E.enum([`replicate`]).optional()}),vt=E.object({width:E.number().positive().optional(),height:E.number().positive().optional(),fit:E.enum([`contain`,`cover`,`fill`])}).refine(e=>e.width||e.height,`Either width or height must be specified for resize`),yt=E.object({width:E.number().positive().optional(),height:E.number().positive().optional(),aspectRatio:E.enum([`keep`,`ignore`]).optional(),scaling:E.enum([`bicubic`,`bilinear`,`lanczos`]).optional()}).refine(e=>e.width||e.height,`Either width or height must be specified for video resize`),bt=E.object({format:E.enum([`mp4`,`webm`,`mov`,`avi`]),codec:E.enum([`h264`,`h265`,`vp9`,`av1`]).optional(),videoBitrate:E.string().optional(),audioBitrate:E.string().optional(),audioCodec:E.enum([`aac`,`mp3`,`opus`,`vorbis`]).optional()}),xt=E.object({type:E.literal(`resize`),width:E.number().positive().optional(),height:E.number().positive().optional(),fit:E.enum([`contain`,`cover`,`fill`])}),St=E.object({type:E.literal(`blur`),sigma:E.number().min(.3).max(1e3)}),Ct=E.object({type:E.literal(`rotate`),angle:E.number(),background:E.string().optional()}),wt=E.object({type:E.literal(`flip`),direction:E.enum([`horizontal`,`vertical`])}),Tt=E.object({type:E.literal(`grayscale`)}),Et=E.object({type:E.literal(`sepia`)}),Dt=E.object({type:E.literal(`brightness`),value:E.number().min(-100).max(100)}),Ot=E.object({type:E.literal(`contrast`),value:E.number().min(-100).max(100)}),kt=E.object({type:E.literal(`sharpen`),sigma:E.number().positive().optional()}),At=E.object({type:E.literal(`watermark`),imagePath:E.string().min(1).url(),position:E.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),opacity:E.number().min(0).max(1),offsetX:E.number().optional(),offsetY:E.number().optional()}),jt=E.object({type:E.literal(`logo`),imagePath:E.string().min(1).url(),position:E.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),scale:E.number().min(.1).max(2),offsetX:E.number().optional(),offsetY:E.number().optional()}),Mt=E.object({type:E.literal(`text`),text:E.string().min(1),position:E.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),fontSize:E.number().positive(),color:E.string().min(1),fontFamily:E.string().optional(),offsetX:E.number().optional(),offsetY:E.number().optional()}),Nt=E.discriminatedUnion(`type`,[xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt]),Pt=E.object({transformations:E.array(Nt).min(1)}),Ft=E.object({startTime:E.number().nonnegative(),endTime:E.number().positive().optional(),duration:E.number().positive().optional()}).refine(e=>!e.endTime||!e.duration,`Cannot specify both endTime and duration`).refine(e=>!e.endTime||e.endTime>e.startTime,`endTime must be greater than startTime`);var It=class extends g.Tag(`VideoPlugin`)(){},Lt=class extends g.Tag(`VirusScanPlugin`)(){},Rt=class extends g.Tag(`ZipPlugin`)(){};const zt=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>E.union([e,t]),n)};function Bt(t){return v.gen(function*(){let n=Object.entries(t.nodes),r=e=>v.isEffect(e)?e:v.succeed(e),i=yield*v.forEach(n,([t,n])=>v.flatMap(r(n),n=>n.id===t?v.succeed([t,n]):v.fail(e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node key ${t} does not match node id ${n.id}`)})))),a=Object.fromEntries(i),o=i.map(([,e])=>e),s=i.filter(([,e])=>e.type===R.input).map(([,e])=>e.inputSchema),c=t.edges.map(e=>({source:a[e.source]?.id??e.source,target:a[e.target]?.id??e.target,sourcePort:e.sourcePort,targetPort:e.targetPort})),l=new Set(i.map(([e])=>a[e]?.id).filter(e=>e&&!c.some(t=>t.source===e))),u=i.filter(([,e])=>l.has(e.id)||e.keepOutput===!0).map(([,e])=>e.outputSchema),d=t.inputSchema??zt(s,E.unknown()),f=t.outputSchema??zt(u,E.unknown());return yield*Q({flowId:t.flowId,name:t.name,nodes:o,edges:c,inputSchema:d,outputSchema:f,typeChecker:t.typeChecker,onEvent:t.onEvent,parallelExecution:t.parallelExecution,hooks:t.hooks,circuitBreaker:t.circuitBreaker})})}const Vt=E.object({inputs:E.record(E.string(),E.any())});export{Re as $,N as $t,dt as A,he as At,rt as B,ie as Bt,vt as C,G as Ct,mt as D,ve as Dt,ht as E,ye as Et,ot as F,ce as Ft,He as G,re as Gt,Xe as H,ae as Ht,it as I,le as It,Je as J,P as Jt,Ue as K,F as Kt,nt as L,R as Lt,lt as M,V as Mt,ct as N,B as Nt,pt as O,_e as Ot,st as P,se as Pt,Q,j as Qt,et as R,z as Rt,yt as S,K as St,gt as T,q as Tt,Qe as U,ne as Ut,at as V,L as Vt,We as W,I as Wt,Be as X,M as Xt,Ye as Y,ee as Yt,ze as Z,A as Zt,Mt as _,Ce as _t,It as a,Ne as at,At as b,xe as bt,Dt as c,Pe as ct,Tt as d,Te as dt,O as en,Z as et,jt as f,Le as ft,kt as g,Se as gt,Et as h,X as ht,Lt as i,Ae as it,ut as j,H as jt,ft as k,U as kt,Ot as l,De as lt,Ct as m,we as mt,Bt as n,je as nt,Ft as o,Fe as ot,xt as p,Ie as pt,Ve as q,te as qt,Rt as r,Me as rt,St as s,Oe as st,Vt as t,ke as tt,wt as u,Ee as ut,Pt as v,J as vt,_t as w,W as wt,bt as x,be as xt,Nt as y,Y as yt,tt as z,oe as zt};
|
|
2
|
+
//# sourceMappingURL=run-args-DSKHoSWs.mjs.map
|