@uploadista/core 0.0.19 → 0.0.20-beta.2
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-p3NmuAky.cjs → checksum-DVPe3Db4.cjs} +1 -1
- package/dist/errors/index.cjs +1 -1
- package/dist/errors/index.d.cts +0 -1
- package/dist/flow/index.cjs +1 -1
- package/dist/flow/index.d.cts +2 -6
- package/dist/flow/index.d.mts +2 -2
- package/dist/flow/index.mjs +1 -1
- package/dist/flow-Cv8vCBQ2.cjs +1 -0
- package/dist/flow-_OmguvZm.mjs +2 -0
- package/dist/flow-_OmguvZm.mjs.map +1 -0
- package/dist/index-9gyMMEIB.d.cts.map +1 -1
- package/dist/index-B9V5SSxl.d.mts.map +1 -1
- package/dist/{index-TokXRAZ5.d.mts → index-CLs5xLRG.d.mts} +492 -34
- package/dist/index-CLs5xLRG.d.mts.map +1 -0
- package/dist/{index-BOic6-Cg.d.cts → index-pIIaXWWU.d.cts} +492 -34
- package/dist/index-pIIaXWWU.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -3
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{stream-limiter-Cem7Zvaw.cjs → stream-limiter-BvkaZXcz.cjs} +1 -1
- package/dist/streams/index.cjs +1 -1
- package/dist/streams/index.d.cts +0 -1
- package/dist/testing/index.cjs +2 -2
- package/dist/testing/index.d.cts +1 -5
- package/dist/testing/index.d.cts.map +1 -1
- package/dist/testing/index.d.mts +1 -1
- package/dist/testing/index.d.mts.map +1 -1
- package/dist/testing/index.mjs +3 -3
- package/dist/testing/index.mjs.map +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +2 -6
- package/dist/types/index.d.mts +2 -2
- package/dist/types/index.mjs +1 -1
- package/dist/types-Cws60JHC.cjs +1 -0
- package/dist/types-DKGQJIEr.mjs +2 -0
- package/dist/types-DKGQJIEr.mjs.map +1 -0
- package/dist/upload/index.cjs +1 -1
- package/dist/upload/index.d.cts +1 -5
- package/dist/upload/index.d.mts +1 -1
- package/dist/upload/index.mjs +1 -1
- package/dist/{upload-5l3utoc7.cjs → upload-BHDuuJ80.cjs} +1 -1
- package/dist/{upload-B2RDFkTe.mjs → upload-tLC7uR9U.mjs} +2 -2
- package/dist/upload-tLC7uR9U.mjs.map +1 -0
- package/dist/{uploadista-error-BfpQ4mOO.cjs → uploadista-error-BgQU45we.cjs} +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.d.cts +0 -1
- package/dist/{utils-QJOPnlmt.cjs → utils-UUJt8ILJ.cjs} +1 -1
- package/package.json +4 -4
- package/src/flow/flow-server.ts +23 -1
- package/src/flow/index.ts +10 -0
- package/src/flow/nodes/transform-node.ts +321 -29
- package/src/flow/plugins/image-plugin.ts +101 -1
- package/src/flow/plugins/video-plugin.ts +124 -1
- package/src/testing/mock-upload-server.ts +81 -2
- package/src/types/data-store.ts +157 -0
- package/src/types/input-file.ts +47 -21
- package/src/upload/upload-server.ts +234 -1
- package/dist/flow-DKCp_0Y1.mjs +0 -2
- package/dist/flow-DKCp_0Y1.mjs.map +0 -1
- package/dist/flow-NHkTGTxu.cjs +0 -1
- package/dist/index-BOic6-Cg.d.cts.map +0 -1
- package/dist/index-TokXRAZ5.d.mts.map +0 -1
- package/dist/types-CHbyV8e6.mjs +0 -2
- package/dist/types-CHbyV8e6.mjs.map +0 -1
- package/dist/types-D3_rWxD0.cjs +0 -1
- package/dist/upload-B2RDFkTe.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./types-
|
|
1
|
+
const e=require(`./types-Cws60JHC.cjs`),t=require(`./uploadista-error-BgQU45we.cjs`);let n=require(`effect`);var r=class extends n.Context.Tag(`UploadistaGenerateIdService`)(){};const i=r.Service,a=r.of({generateId:()=>n.Effect.succeed(crypto.randomUUID())}),o=n.Layer.succeed(r,a),s=r.of({generateId:()=>n.Effect.succeed(`${Date.now()}-${Math.random().toString(36).slice(2,11)}`)}),c=[`sha256`];function l(e){return c.includes(e)}function u(e,r){return n.Effect.gen(function*(){if(!l(r))return yield*t.n.fromCode(`UNSUPPORTED_CHECKSUM_ALGORITHM`,{body:`Checksum algorithm '${r}' is not supported. Supported algorithms: ${c.join(`, `)}`,details:{algorithm:r,supportedAlgorithms:c}}).toEffect();let i=r.toUpperCase().replace(/\d+/,`-$&`),a=yield*n.Effect.tryPromise({try:()=>crypto.subtle.digest(i,e),catch:e=>t.n.fromCode(`UNKNOWN_ERROR`,{body:`Failed to compute checksum: ${e instanceof Error?e.message:`Unknown error`}`,cause:e,details:{algorithm:r}})});return Array.from(new Uint8Array(a)).map(e=>e.toString(16).padStart(2,`0`)).join(``)})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
|
package/dist/errors/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../uploadista-error-
|
|
1
|
+
const e=require(`../uploadista-error-BgQU45we.cjs`);require(`../errors-CRm1FHHT.cjs`),exports.ERRORS=e.t,exports.ERROR_CATALOG=e.t,exports.UploadistaError=e.n,exports.httpFailure=e.r,exports.isUploadistaError=e.i;
|
package/dist/errors/index.d.cts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import { a as isUploadistaError, i as httpFailure, n as UploadistaError, r as UploadistaErrorCode, t as ERROR_CATALOG } from "../uploadista-error-CYCmAtkZ.cjs";
|
|
2
|
-
import "../index-_wQ5ClJU.cjs";
|
|
3
2
|
export { ERROR_CATALOG as ERRORS, ERROR_CATALOG, UploadistaError, UploadistaErrorCode, httpFailure, isUploadistaError };
|
package/dist/flow/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../types-
|
|
1
|
+
const e=require(`../types-Cws60JHC.cjs`);require(`../uploadista-error-BgQU45we.cjs`),require(`../errors-CRm1FHHT.cjs`);const t=require(`../flow-Cv8vCBQ2.cjs`);require(`../upload-BHDuuJ80.cjs`),require(`../checksum-DVPe3Db4.cjs`),require(`../stream-limiter-BvkaZXcz.cjs`),exports.AVAILABLE_TEMPLATE_VARIABLES=t.F,exports.CredentialProvider=t.N,exports.DEFAULT_CIRCUIT_BREAKER_CONFIG=t.Kt,exports.DEFAULT_RETRY_POLICY=t.X,exports.DEFAULT_STREAMING_CONFIG=e.b,exports.DeadLetterQueueService=t.q,exports.DistributedCircuitBreaker=t.Bt,exports.DistributedCircuitBreakerRegistry=t.Vt,exports.DocumentAiPlugin=t.M,exports.DocumentPlugin=t.j,exports.EventType=t.Rt,exports.FlowProvider=t.H,exports.FlowServer=t.U,exports.FlowWaitUntil=t.W,exports.IMAGE_DESCRIPTION_OUTPUT_TYPE_ID=t._t,exports.ImageAiPlugin=t.A,exports.ImagePlugin=t.k,exports.InputTypeRegistry=t.Ft,exports.NodeType=t.kt,exports.OCR_OUTPUT_TYPE_ID=t.vt,exports.OutputTypeRegistry=t.Mt,exports.ParallelScheduler=t.gt,exports.STORAGE_OUTPUT_TYPE_ID=t.yt,exports.STREAMING_INPUT_TYPE_ID=t.bt,exports.VideoPlugin=t.a,exports.VirusScanPlugin=t.i,exports.ZipPlugin=t.r,exports.applyFileNaming=t.I,exports.blurTransformSchema=t.s,exports.brightnessTransformSchema=t.c,exports.buildNamingContext=t.L,exports.calculateBackoffDelay=t.Z,exports.calculateExpirationDate=t.Q,exports.completeNodeExecution=t.Dt,exports.contrastTransformSchema=t.l,exports.createDeadLetterQueueService=t.J,exports.createFlow=t.n,exports.createFlowEdge=t.zt,exports.createFlowNode=t.At,exports.createFlowServer=t.G,exports.createFlowWithSchema=t.et,exports.createInputNode=t.Ct,exports.createTransformNode=t.P,exports.createTypeGuard=t.nt,exports.deadLetterQueueService=t.Y,exports.describeImageParamsSchema=t.O,exports.describeVideoMetadataSchema=t.D,exports.extractFrameVideoParamsSchema=t.E,exports.filterOutputsByType=t.rt,exports.flipTransformSchema=t.u,exports.flowServer=t.K,exports.getBaseName=t.R,exports.getExtension=t.z,exports.getFirstOutputByType=t.it,exports.getFlowData=t.tt,exports.getNodeData=t.jt,exports.getOutputByNodeId=t.at,exports.getSingleOutputByType=t.ot,exports.grayscaleTransformSchema=t.d,exports.hasOutputOfType=t.st,exports.imageDescriptionOutputSchema=t.xt,exports.inputDataSchema=t.wt,exports.inputNodeParamsSchema=t.Tt,exports.inputTypeRegistry=t.It,exports.interpolateFileName=t.B,exports.isErrorRetryable=t.$,exports.isFinalizeOperation=t.ct,exports.isImageDescriptionOutput=t.lt,exports.isInitOperation=t.ut,exports.isOcrOutput=t.dt,exports.isStorageOutput=t.ft,exports.isUploadFile=t.pt,exports.isUploadOperation=t.mt,exports.isUrlOperation=t.ht,exports.kvCircuitBreakerStoreLayer=t.Ht,exports.logoTransformSchema=t.f,exports.makeKvCircuitBreakerStore=t.Ut,exports.makeMemoryCircuitBreakerStore=t.Wt,exports.memoryCircuitBreakerStoreLayer=t.Gt,exports.ocrOutputSchema=t.St,exports.optimizeParamsSchema=t.T,exports.outputTypeRegistry=t.Nt,exports.removeBackgroundParamsSchema=t.w,exports.resizeParamsSchema=t.C,exports.resizeTransformSchema=t.p,exports.resizeVideoParamsSchema=t.S,exports.resolveUploadMetadata=t.Et,exports.rotateTransformSchema=t.m,exports.runArgsSchema=t.t,exports.sepiaTransformSchema=t.h,exports.sharpenTransformSchema=t.g,exports.textTransformSchema=t._,exports.transcodeVideoParamsSchema=t.x,exports.transformImageParamsSchema=t.v,exports.transformationSchema=t.y,exports.trimVideoParamsSchema=t.o,exports.validateFlowInput=t.Lt,exports.validateFlowOutput=t.Pt,exports.validatePattern=t.V,exports.waitingNodeExecution=t.Ot,exports.watermarkTransformSchema=t.b;
|
package/dist/flow/index.d.cts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
|
|
3
|
-
import { $ as DescribeImageParams, $i as waitingNodeExecution, $n as FlowWaitUntil, $r as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, $t as sepiaTransformSchema, A as NodeDefinition, Aa as FlowEventNodeStart, An as CredentialProviderShape, At as BrightnessTransform, B as getOutputByNodeId, Ba as kvCircuitBreakerStoreLayer, Bi as FlowCircuitBreakerConfig, Bn as ResolveEffect, Bt as TextTransform, C as DeadLetterRetryAttempt, Ca as FlowEventJobEnd, Cn as DocumentAiPluginShape, Ct as extractFrameVideoParamsSchema, D as FlowOutputMap, Da as FlowEventNodePause, Dn as OcrTaskType, Dt as ImagePluginLayer, E as FlowInputMap, Ea as FlowEventNodeError, En as OcrResult, Et as ImagePlugin, F as createFlow, Fa as createFlowNode, Fi as AutoNamingSuffixGenerator, Fn as createTransformNode, Ft as OverlayPosition, G as isInitOperation, Gi as FlowNodeData, Gn as inputDataSchema, Gt as blurTransformSchema, H as hasOutputOfType, Ha as makeMemoryCircuitBreakerStore, Hi as FlowConfig, Hn as InputData, Ht as Transformation, I as NarrowedTypedOutput, Ia as getNodeData, Ii as BuiltInTypedOutput, In as ExtractEffectError, It as ResizeTransform, J as isUploadFile, Ji as NodeExecutionResult, Jn as FlowProviderShape, Jt as flipTransformSchema, K as isOcrOutput, Ki as NamingContext, Kn as inputNodeParamsSchema, Kt as brightnessTransformSchema, L as createTypeGuard, La as AllowRequestResult, Li as CustomTypedOutput, Ln as ExtractEffectRequirements, Lt as RotateTransform, M as TypedFlow, Ma as ConditionOperator, Mn as ParallelScheduler, Mt as FlipTransform, N as TypedFlowConfig, Na as ConditionValue, Ni as FlowEdge, Nn as ParallelSchedulerConfig, Nt as GrayscaleTransform, O as FlowPluginRequirements, Oa as FlowEventNodeResponse, On as CredentialProvider, Ot as ImagePluginShape, P as TypedFlowEdge, Pa as NodeType, Pi as createFlowEdge, Pn as TransformNodeConfig, Pt as LogoTransform, Q as removeBackgroundParamsSchema, Qi as completeNodeExecution, Qn as FlowServerShape, Qt as rotateTransformSchema, R as filterOutputsByType, Ra as DistributedCircuitBreaker, Ri as FileNamingConfig, Rn as ExtractLayerService, Rt as SepiaTransform, S as DeadLetterRetryAllResult, Sa as FlowEventFlowStart, Sn as DocumentAiPluginLayer, St as ExtractFrameVideoParams, T as runArgsSchema, Ta as FlowEventNodeEnd, Tn as OcrResolution, Tt as describeVideoMetadataSchema, U as isFinalizeOperation, Ua as memoryCircuitBreakerStoreLayer, Ui as FlowDeadLetterQueueConfig, Un as InputNodeParams, Ut as TransformationType, V as getSingleOutputByType, Va as makeKvCircuitBreakerStore, Vi as FlowCircuitBreakerFallback, Vn as FlowCondition, Vt as TransformImageParams, W as isImageDescriptionOutput, Wi as FlowNode, Wn as createInputNode, Wt as WatermarkTransform, X as isUrlOperation, Xi as TypeCompatibilityChecker, Xn as FlowServerLayer, Xt as logoTransformSchema, Y as isUploadOperation, Yi as NodeTypeMap, Yn as FlowServer, Yt as grayscaleTransformSchema, Z as RemoveBackgroundParams, Zi as TypedOutput, Zn as FlowServerOptions, Zt as resizeTransformSchema, _ as DeadLetterItem, _a as FlowEventDlqRetrySuccess, _i as Flow, _n as MergePdfParams, _t as trimVideoParamsSchema, a as getExtension, aa as RetryPolicy, ai as imageDescriptionOutputSchema, an as ResizeParams, ar as FlowJobTask, at as ZipPlugin, b as DeadLetterProcessResult, ba as FlowEventFlowError, bi as createFlowWithSchema, bn as DocumentAiContext, bt as ResizeVideoParams, c as ResolvedUploadMetadata, ca as isErrorRetryable, ci as OutputTypeRegistry, cn as optimizeParamsSchema, ct as ScanMetadata, d as DeadLetterQueueServiceShape, da as FlowEvent, di as validateFlowOutput, dn as ImageAiPluginLayer, do as CircuitBreakerConfig, dt as VirusScanPluginLayer, ea as BackoffStrategy, ei as ImageDescriptionOutput, en as sharpenTransformSchema, er as WaitUntilCallback, et as describeImageParamsSchema, f as createDeadLetterQueueService, fa as FlowEventDlqItemAdded, fi as InputTypeDefinition, fn as ImageAiPluginShape, fo as CircuitBreakerEvent, ft as VirusScanPluginShape, g as DeadLetterError, ga as FlowEventDlqRetryStart, gi as validateFlowInput, gn as DocumentPluginShape, go as DEFAULT_CIRCUIT_BREAKER_CONFIG, gt as TrimVideoParams, h as DeadLetterCleanupResult, ha as FlowEventDlqRetryFailed, hi as inputTypeRegistry, hn as DocumentPluginLayer, ho as CircuitBreakerState, ht as VideoPluginShape, i as getBaseName, ia as ImmediateBackoff, ii as STREAMING_INPUT_TYPE_ID, in as watermarkTransformSchema, ir as FlowJobStatus, it as ZipParams, j as NodeDefinitionsRecord, ja as ConditionField, jn as ExecutionLevel, jt as ContrastTransform, k as FlowRequirements, ka as FlowEventNodeResume, kn as CredentialProviderLayer, kt as BlurTransform, l as resolveUploadMetadata, la as DlqEvent, li as OutputValidationResult, ln as ImageAiContext, lt as ScanResult, m as DeadLetterCleanupOptions, ma as FlowEventDlqItemResolved, mi as InputValidationResult, mn as DocumentPlugin, mo as CircuitBreakerFallback, mt as VideoPluginLayer, n as applyFileNaming, na as ExponentialBackoff, ni as OcrOutput, nn as transformImageParamsSchema, nr as flowServer, nt as PluginLayer, o as interpolateFileName, oa as calculateBackoffDelay, oi as ocrOutputSchema, on as resizeParamsSchema, or as FlowJobTaskStatus, ot as ZipPluginLayer, p as deadLetterQueueService, pa as FlowEventDlqItemExhausted, pi as InputTypeRegistry, pn as DocumentMetadata, po as CircuitBreakerEventHandler, pt as VideoPlugin, q as isStorageOutput, qi as NodeConnectionValidator, qn as FlowProvider, qt as contrastTransformSchema, r as buildNamingContext, ra as FixedBackoff, ri as STORAGE_OUTPUT_TYPE_ID, rn as transformationSchema, rr as FlowJob, rt as ZipInput, s as validatePattern, sa as calculateExpirationDate, si as OutputTypeDefinition, sn as OptimizeParams, sr as FlowJobTraceContext, st as ZipPluginShape, t as AVAILABLE_TEMPLATE_VARIABLES, ta as DEFAULT_RETRY_POLICY, ti as OCR_OUTPUT_TYPE_ID, tn as textTransformSchema, tr as createFlowServer, tt as Plugin, u as DeadLetterQueueService, ua as EventType, ui as outputTypeRegistry, un as ImageAiPlugin, ut as VirusScanPlugin, v as DeadLetterItemStatus, va as FlowEventFlowCancel, vi as FlowData, vn as SplitPdfParams, vt as TranscodeVideoParams, w as RunArgs, wa as FlowEventJobStart, wn as OcrParams, wt as DescribeVideoMetadata, x as DeadLetterQueueStats, xa as FlowEventFlowPause, xi as getFlowData, xn as DocumentAiPlugin, xt as resizeVideoParamsSchema, y as DeadLetterListOptions, ya as FlowEventFlowEnd, yi as FlowExecutionResult, yn as SplitPdfResult, yt as transcodeVideoParamsSchema, z as getFirstOutputByType, za as DistributedCircuitBreakerRegistry, zi as FileNamingFunction, zn as ExtractLayerServices, zt as SharpenTransform } from "../index-BOic6-Cg.cjs";
|
|
4
|
-
import "../index-9gyMMEIB.cjs";
|
|
5
|
-
import "../index-DFbu_-zn.cjs";
|
|
6
|
-
export { AVAILABLE_TEMPLATE_VARIABLES, AllowRequestResult, AutoNamingSuffixGenerator, BackoffStrategy, BlurTransform, BrightnessTransform, BuiltInTypedOutput, CircuitBreakerConfig, CircuitBreakerEvent, CircuitBreakerEventHandler, CircuitBreakerFallback, CircuitBreakerState, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DEFAULT_CIRCUIT_BREAKER_CONFIG, DEFAULT_RETRY_POLICY, DeadLetterCleanupOptions, DeadLetterCleanupResult, DeadLetterError, DeadLetterItem, DeadLetterItemStatus, DeadLetterListOptions, DeadLetterProcessResult, DeadLetterQueueService, DeadLetterQueueServiceShape, DeadLetterQueueStats, DeadLetterRetryAllResult, DeadLetterRetryAttempt, DescribeImageParams, DescribeVideoMetadata, DistributedCircuitBreaker, DistributedCircuitBreakerRegistry, DlqEvent, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExponentialBackoff, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FileNamingConfig, FileNamingFunction, FixedBackoff, FlipTransform, Flow, FlowCircuitBreakerConfig, FlowCircuitBreakerFallback, FlowCondition, FlowConfig, FlowData, FlowDeadLetterQueueConfig, FlowEdge, FlowEvent, FlowEventDlqItemAdded, FlowEventDlqItemExhausted, FlowEventDlqItemResolved, FlowEventDlqRetryFailed, FlowEventDlqRetryStart, FlowEventDlqRetrySuccess, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowJobTraceContext, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, ImmediateBackoff, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NamingContext, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RetryPolicy, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, applyFileNaming, blurTransformSchema, brightnessTransformSchema, buildNamingContext, calculateBackoffDelay, calculateExpirationDate, completeNodeExecution, contrastTransformSchema, createDeadLetterQueueService, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, deadLetterQueueService, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getBaseName, getExtension, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, interpolateFileName, isErrorRetryable, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, kvCircuitBreakerStoreLayer, logoTransformSchema, makeKvCircuitBreakerStore, makeMemoryCircuitBreakerStore, memoryCircuitBreakerStoreLayer, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, validatePattern, waitingNodeExecution, watermarkTransformSchema };
|
|
1
|
+
import { $ as DescribeImageParams, $a as memoryCircuitBreakerStoreLayer, $i as FlowDeadLetterQueueConfig, $n as FlowProviderShape, $t as resizeTransformSchema, A as NodeDefinition, Aa as FlowEventFlowError, An as CredentialProvider, At as ImagePluginShape, B as getOutputByNodeId, Ba as FlowEventNodeStart, Bn as createTransformNode, Bt as SepiaTransform, C as DeadLetterRetryAttempt, Ca as FlowEventDlqItemExhausted, Ci as FlowData, Cn as DocumentAiPlugin, Co as CircuitBreakerEventHandler, Ct as resizeVideoParamsSchema, D as FlowOutputMap, Da as FlowEventDlqRetrySuccess, Dn as OcrResolution, Dt as describeVideoMetadataSchema, E as FlowInputMap, Ea as FlowEventDlqRetryStart, Ei as getFlowData, En as OcrParams, Eo as DEFAULT_CIRCUIT_BREAKER_CONFIG, Et as DescribeVideoMetadata, F as createFlow, Fa as FlowEventNodeEnd, Fn as ParallelSchedulerConfig, Ft as GrayscaleTransform, G as isInitOperation, Ga as createFlowNode, Gi as AutoNamingSuffixGenerator, Gn as ResolveEffect, Gt as TransformationType, H as hasOutputOfType, Ha as ConditionOperator, Hn as ExtractEffectRequirements, Ht as TextTransform, I as NarrowedTypedOutput, Ia as FlowEventNodeError, Ii as StreamingConfig, In as StreamingTransformFn, It as LogoTransform, J as isUploadFile, Ja as DistributedCircuitBreaker, Ji as FileNamingConfig, Jn as InputNodeParams, Jt as brightnessTransformSchema, K as isOcrOutput, Ka as getNodeData, Ki as BuiltInTypedOutput, Kn as FlowCondition, Kt as WatermarkTransform, L as createTypeGuard, La as FlowEventNodePause, Ln as StreamingTransformResult, Lt as OverlayPosition, M as TypedFlow, Ma as FlowEventFlowStart, Mn as CredentialProviderShape, Mt as BrightnessTransform, N as TypedFlowConfig, Na as FlowEventJobEnd, Nn as ExecutionLevel, Nt as ContrastTransform, O as FlowPluginRequirements, Oa as FlowEventFlowCancel, On as OcrResult, Ot as ImagePlugin, P as TypedFlowEdge, Pa as FlowEventJobStart, Pn as ParallelScheduler, Pt as FlipTransform, Q as removeBackgroundParamsSchema, Qa as makeMemoryCircuitBreakerStore, Qi as FlowConfig, Qn as FlowProvider, Qt as logoTransformSchema, R as filterOutputsByType, Ra as FlowEventNodeResponse, Rn as TransformMode, Rt as ResizeTransform, S as DeadLetterRetryAllResult, Sa as FlowEventDlqItemAdded, Si as Flow, Sn as DocumentAiContext, So as CircuitBreakerEvent, St as ResizeVideoParams, T as runArgsSchema, Ta as FlowEventDlqRetryFailed, Ti as createFlowWithSchema, Tn as DocumentAiPluginShape, To as CircuitBreakerState, Tt as extractFrameVideoParamsSchema, U as isFinalizeOperation, Ua as ConditionValue, Ui as FlowEdge, Un as ExtractLayerService, Ut as TransformImageParams, V as getSingleOutputByType, Va as ConditionField, Vn as ExtractEffectError, Vt as SharpenTransform, W as isImageDescriptionOutput, Wa as NodeType, Wi as createFlowEdge, Wn as ExtractLayerServices, Wt as Transformation, X as isUrlOperation, Xa as kvCircuitBreakerStoreLayer, Xi as FlowCircuitBreakerConfig, Xn as inputDataSchema, Xt as flipTransformSchema, Y as isUploadOperation, Ya as DistributedCircuitBreakerRegistry, Yi as FileNamingFunction, Yn as createInputNode, Yt as contrastTransformSchema, Z as RemoveBackgroundParams, Za as makeKvCircuitBreakerStore, Zi as FlowCircuitBreakerFallback, Zn as inputNodeParamsSchema, Zt as grayscaleTransformSchema, _ as DeadLetterItem, _a as calculateExpirationDate, _i as InputTypeDefinition, _n as DocumentPluginLayer, _t as VideoStreamOptions, a as getExtension, aa as NodeTypeMap, ai as ImageDescriptionOutput, an as transformationSchema, ar as WaitUntilCallback, at as ZipPlugin, b as DeadLetterProcessResult, ba as EventType, bi as inputTypeRegistry, bn as SplitPdfParams, bt as TranscodeVideoParams, c as ResolvedUploadMetadata, ca as completeNodeExecution, ci as STORAGE_OUTPUT_TYPE_ID, cn as resizeParamsSchema, cr as FlowJob, ct as ScanMetadata, d as DeadLetterQueueServiceShape, da as DEFAULT_RETRY_POLICY, di as ocrOutputSchema, dn as ImageAiContext, dr as FlowJobTaskStatus, dt as VirusScanPluginLayer, ea as FlowNode, en as rotateTransformSchema, er as FlowServer, et as describeImageParamsSchema, f as createDeadLetterQueueService, fa as ExponentialBackoff, fi as OutputTypeDefinition, fn as ImageAiPlugin, fr as FlowJobTraceContext, ft as VirusScanPluginShape, g as DeadLetterError, ga as calculateBackoffDelay, gi as validateFlowOutput, gn as DocumentPlugin, gt as VideoStreamInput, h as DeadLetterCleanupResult, ha as RetryPolicy, hi as outputTypeRegistry, hn as DocumentMetadata, ht as VideoPluginShape, i as getBaseName, ia as NodeExecutionResult, ii as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, in as transformImageParamsSchema, ir as FlowWaitUntil, it as ZipParams, j as NodeDefinitionsRecord, ja as FlowEventFlowPause, jn as CredentialProviderLayer, jt as BlurTransform, k as FlowRequirements, ka as FlowEventFlowEnd, ki as DEFAULT_STREAMING_CONFIG, kn as OcrTaskType, kt as ImagePluginLayer, l as resolveUploadMetadata, la as waitingNodeExecution, li as STREAMING_INPUT_TYPE_ID, ln as OptimizeParams, lr as FlowJobStatus, lt as ScanResult, m as DeadLetterCleanupOptions, ma as ImmediateBackoff, mi as OutputValidationResult, mn as ImageAiPluginShape, mt as VideoPluginLayer, n as applyFileNaming, na as NamingContext, nn as sharpenTransformSchema, nr as FlowServerOptions, nt as PluginLayer, o as interpolateFileName, oa as TypeCompatibilityChecker, oi as OCR_OUTPUT_TYPE_ID, on as watermarkTransformSchema, or as createFlowServer, ot as ZipPluginLayer, p as deadLetterQueueService, pa as FixedBackoff, pi as OutputTypeRegistry, pn as ImageAiPluginLayer, pt as VideoPlugin, q as isStorageOutput, qa as AllowRequestResult, qi as CustomTypedOutput, qn as InputData, qt as blurTransformSchema, r as buildNamingContext, ra as NodeConnectionValidator, rn as textTransformSchema, rr as FlowServerShape, rt as ZipInput, s as validatePattern, sa as TypedOutput, si as OcrOutput, sn as ResizeParams, sr as flowServer, st as ZipPluginShape, t as AVAILABLE_TEMPLATE_VARIABLES, ta as FlowNodeData, tn as sepiaTransformSchema, tr as FlowServerLayer, tt as Plugin, u as DeadLetterQueueService, ua as BackoffStrategy, ui as imageDescriptionOutputSchema, un as optimizeParamsSchema, ur as FlowJobTask, ut as VirusScanPlugin, v as DeadLetterItemStatus, va as isErrorRetryable, vi as InputTypeRegistry, vn as DocumentPluginShape, vt as TrimVideoParams, w as RunArgs, wa as FlowEventDlqItemResolved, wi as FlowExecutionResult, wn as DocumentAiPluginLayer, wo as CircuitBreakerFallback, wt as ExtractFrameVideoParams, x as DeadLetterQueueStats, xa as FlowEvent, xi as validateFlowInput, xn as SplitPdfResult, xo as CircuitBreakerConfig, xt as transcodeVideoParamsSchema, y as DeadLetterListOptions, ya as DlqEvent, yi as InputValidationResult, yn as MergePdfParams, yt as trimVideoParamsSchema, z as getFirstOutputByType, za as FlowEventNodeResume, zn as TransformNodeConfig, zt as RotateTransform } from "../index-pIIaXWWU.cjs";
|
|
2
|
+
export { AVAILABLE_TEMPLATE_VARIABLES, AllowRequestResult, AutoNamingSuffixGenerator, BackoffStrategy, BlurTransform, BrightnessTransform, BuiltInTypedOutput, CircuitBreakerConfig, CircuitBreakerEvent, CircuitBreakerEventHandler, CircuitBreakerFallback, CircuitBreakerState, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DEFAULT_CIRCUIT_BREAKER_CONFIG, DEFAULT_RETRY_POLICY, DEFAULT_STREAMING_CONFIG, DeadLetterCleanupOptions, DeadLetterCleanupResult, DeadLetterError, DeadLetterItem, DeadLetterItemStatus, DeadLetterListOptions, DeadLetterProcessResult, DeadLetterQueueService, DeadLetterQueueServiceShape, DeadLetterQueueStats, DeadLetterRetryAllResult, DeadLetterRetryAttempt, DescribeImageParams, DescribeVideoMetadata, DistributedCircuitBreaker, DistributedCircuitBreakerRegistry, DlqEvent, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExponentialBackoff, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FileNamingConfig, FileNamingFunction, FixedBackoff, FlipTransform, Flow, FlowCircuitBreakerConfig, FlowCircuitBreakerFallback, FlowCondition, FlowConfig, FlowData, FlowDeadLetterQueueConfig, FlowEdge, FlowEvent, FlowEventDlqItemAdded, FlowEventDlqItemExhausted, FlowEventDlqItemResolved, FlowEventDlqRetryFailed, FlowEventDlqRetryStart, FlowEventDlqRetrySuccess, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowJobTraceContext, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, ImmediateBackoff, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NamingContext, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RetryPolicy, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, StreamingConfig, StreamingTransformFn, StreamingTransformResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformMode, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VideoStreamInput, VideoStreamOptions, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, applyFileNaming, blurTransformSchema, brightnessTransformSchema, buildNamingContext, calculateBackoffDelay, calculateExpirationDate, completeNodeExecution, contrastTransformSchema, createDeadLetterQueueService, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, deadLetterQueueService, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getBaseName, getExtension, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, interpolateFileName, isErrorRetryable, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, kvCircuitBreakerStoreLayer, logoTransformSchema, makeKvCircuitBreakerStore, makeMemoryCircuitBreakerStore, memoryCircuitBreakerStoreLayer, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, validatePattern, waitingNodeExecution, watermarkTransformSchema };
|
package/dist/flow/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../uploadista-error-DR0XimpE.mjs";
|
|
2
2
|
import "../index-C-svZlpj.mjs";
|
|
3
|
-
import { $ as DescribeImageParams, $
|
|
3
|
+
import { $ as DescribeImageParams, $a as memoryCircuitBreakerStoreLayer, $i as FlowDeadLetterQueueConfig, $n as FlowProviderShape, $t as resizeTransformSchema, A as NodeDefinition, Aa as FlowEventFlowError, An as CredentialProvider, At as ImagePluginShape, B as getOutputByNodeId, Ba as FlowEventNodeStart, Bn as createTransformNode, Bt as SepiaTransform, C as DeadLetterRetryAttempt, Ca as FlowEventDlqItemExhausted, Ci as FlowData, Cn as DocumentAiPlugin, Co as CircuitBreakerEventHandler, Ct as resizeVideoParamsSchema, D as FlowOutputMap, Da as FlowEventDlqRetrySuccess, Dn as OcrResolution, Dt as describeVideoMetadataSchema, E as FlowInputMap, Ea as FlowEventDlqRetryStart, Ei as getFlowData, En as OcrParams, Eo as DEFAULT_CIRCUIT_BREAKER_CONFIG, Et as DescribeVideoMetadata, F as createFlow, Fa as FlowEventNodeEnd, Fn as ParallelSchedulerConfig, Ft as GrayscaleTransform, G as isInitOperation, Ga as createFlowNode, Gi as AutoNamingSuffixGenerator, Gn as ResolveEffect, Gt as TransformationType, H as hasOutputOfType, Ha as ConditionOperator, Hn as ExtractEffectRequirements, Ht as TextTransform, I as NarrowedTypedOutput, Ia as FlowEventNodeError, Ii as StreamingConfig, In as StreamingTransformFn, It as LogoTransform, J as isUploadFile, Ja as DistributedCircuitBreaker, Ji as FileNamingConfig, Jn as InputNodeParams, Jt as brightnessTransformSchema, K as isOcrOutput, Ka as getNodeData, Ki as BuiltInTypedOutput, Kn as FlowCondition, Kt as WatermarkTransform, L as createTypeGuard, La as FlowEventNodePause, Ln as StreamingTransformResult, Lt as OverlayPosition, M as TypedFlow, Ma as FlowEventFlowStart, Mn as CredentialProviderShape, Mt as BrightnessTransform, N as TypedFlowConfig, Na as FlowEventJobEnd, Nn as ExecutionLevel, Nt as ContrastTransform, O as FlowPluginRequirements, Oa as FlowEventFlowCancel, On as OcrResult, Ot as ImagePlugin, P as TypedFlowEdge, Pa as FlowEventJobStart, Pn as ParallelScheduler, Pt as FlipTransform, Q as removeBackgroundParamsSchema, Qa as makeMemoryCircuitBreakerStore, Qi as FlowConfig, Qn as FlowProvider, Qt as logoTransformSchema, R as filterOutputsByType, Ra as FlowEventNodeResponse, Rn as TransformMode, Rt as ResizeTransform, S as DeadLetterRetryAllResult, Sa as FlowEventDlqItemAdded, Si as Flow, Sn as DocumentAiContext, So as CircuitBreakerEvent, St as ResizeVideoParams, T as runArgsSchema, Ta as FlowEventDlqRetryFailed, Ti as createFlowWithSchema, Tn as DocumentAiPluginShape, To as CircuitBreakerState, Tt as extractFrameVideoParamsSchema, U as isFinalizeOperation, Ua as ConditionValue, Ui as FlowEdge, Un as ExtractLayerService, Ut as TransformImageParams, V as getSingleOutputByType, Va as ConditionField, Vn as ExtractEffectError, Vt as SharpenTransform, W as isImageDescriptionOutput, Wa as NodeType, Wi as createFlowEdge, Wn as ExtractLayerServices, Wt as Transformation, X as isUrlOperation, Xa as kvCircuitBreakerStoreLayer, Xi as FlowCircuitBreakerConfig, Xn as inputDataSchema, Xt as flipTransformSchema, Y as isUploadOperation, Ya as DistributedCircuitBreakerRegistry, Yi as FileNamingFunction, Yn as createInputNode, Yt as contrastTransformSchema, Z as RemoveBackgroundParams, Za as makeKvCircuitBreakerStore, Zi as FlowCircuitBreakerFallback, Zn as inputNodeParamsSchema, Zt as grayscaleTransformSchema, _ as DeadLetterItem, _a as calculateExpirationDate, _i as InputTypeDefinition, _n as DocumentPluginLayer, _t as VideoStreamOptions, a as getExtension, aa as NodeTypeMap, ai as ImageDescriptionOutput, an as transformationSchema, ar as WaitUntilCallback, at as ZipPlugin, b as DeadLetterProcessResult, ba as EventType, bi as inputTypeRegistry, bn as SplitPdfParams, bt as TranscodeVideoParams, c as ResolvedUploadMetadata, ca as completeNodeExecution, ci as STORAGE_OUTPUT_TYPE_ID, cn as resizeParamsSchema, cr as FlowJob, ct as ScanMetadata, d as DeadLetterQueueServiceShape, da as DEFAULT_RETRY_POLICY, di as ocrOutputSchema, dn as ImageAiContext, dr as FlowJobTaskStatus, dt as VirusScanPluginLayer, ea as FlowNode, en as rotateTransformSchema, er as FlowServer, et as describeImageParamsSchema, f as createDeadLetterQueueService, fa as ExponentialBackoff, fi as OutputTypeDefinition, fn as ImageAiPlugin, fr as FlowJobTraceContext, ft as VirusScanPluginShape, g as DeadLetterError, ga as calculateBackoffDelay, gi as validateFlowOutput, gn as DocumentPlugin, gt as VideoStreamInput, h as DeadLetterCleanupResult, ha as RetryPolicy, hi as outputTypeRegistry, hn as DocumentMetadata, ht as VideoPluginShape, i as getBaseName, ia as NodeExecutionResult, ii as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, in as transformImageParamsSchema, ir as FlowWaitUntil, it as ZipParams, j as NodeDefinitionsRecord, ja as FlowEventFlowPause, jn as CredentialProviderLayer, jt as BlurTransform, k as FlowRequirements, ka as FlowEventFlowEnd, ki as DEFAULT_STREAMING_CONFIG, kn as OcrTaskType, kt as ImagePluginLayer, l as resolveUploadMetadata, la as waitingNodeExecution, li as STREAMING_INPUT_TYPE_ID, ln as OptimizeParams, lr as FlowJobStatus, lt as ScanResult, m as DeadLetterCleanupOptions, ma as ImmediateBackoff, mi as OutputValidationResult, mn as ImageAiPluginShape, mt as VideoPluginLayer, n as applyFileNaming, na as NamingContext, nn as sharpenTransformSchema, nr as FlowServerOptions, nt as PluginLayer, o as interpolateFileName, oa as TypeCompatibilityChecker, oi as OCR_OUTPUT_TYPE_ID, on as watermarkTransformSchema, or as createFlowServer, ot as ZipPluginLayer, p as deadLetterQueueService, pa as FixedBackoff, pi as OutputTypeRegistry, pn as ImageAiPluginLayer, pt as VideoPlugin, q as isStorageOutput, qa as AllowRequestResult, qi as CustomTypedOutput, qn as InputData, qt as blurTransformSchema, r as buildNamingContext, ra as NodeConnectionValidator, rn as textTransformSchema, rr as FlowServerShape, rt as ZipInput, s as validatePattern, sa as TypedOutput, si as OcrOutput, sn as ResizeParams, sr as flowServer, st as ZipPluginShape, t as AVAILABLE_TEMPLATE_VARIABLES, ta as FlowNodeData, tn as sepiaTransformSchema, tr as FlowServerLayer, tt as Plugin, u as DeadLetterQueueService, ua as BackoffStrategy, ui as imageDescriptionOutputSchema, un as optimizeParamsSchema, ur as FlowJobTask, ut as VirusScanPlugin, v as DeadLetterItemStatus, va as isErrorRetryable, vi as InputTypeRegistry, vn as DocumentPluginShape, vt as TrimVideoParams, w as RunArgs, wa as FlowEventDlqItemResolved, wi as FlowExecutionResult, wn as DocumentAiPluginLayer, wo as CircuitBreakerFallback, wt as ExtractFrameVideoParams, x as DeadLetterQueueStats, xa as FlowEvent, xi as validateFlowInput, xn as SplitPdfResult, xo as CircuitBreakerConfig, xt as transcodeVideoParamsSchema, y as DeadLetterListOptions, ya as DlqEvent, yi as InputValidationResult, yn as MergePdfParams, yt as trimVideoParamsSchema, z as getFirstOutputByType, za as FlowEventNodeResume, zn as TransformNodeConfig, zt as RotateTransform } from "../index-CLs5xLRG.mjs";
|
|
4
4
|
import "../index-B9V5SSxl.mjs";
|
|
5
5
|
import "../index-BFSHumky.mjs";
|
|
6
|
-
export { AVAILABLE_TEMPLATE_VARIABLES, AllowRequestResult, AutoNamingSuffixGenerator, BackoffStrategy, BlurTransform, BrightnessTransform, BuiltInTypedOutput, CircuitBreakerConfig, CircuitBreakerEvent, CircuitBreakerEventHandler, CircuitBreakerFallback, CircuitBreakerState, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DEFAULT_CIRCUIT_BREAKER_CONFIG, DEFAULT_RETRY_POLICY, DeadLetterCleanupOptions, DeadLetterCleanupResult, DeadLetterError, DeadLetterItem, DeadLetterItemStatus, DeadLetterListOptions, DeadLetterProcessResult, DeadLetterQueueService, DeadLetterQueueServiceShape, DeadLetterQueueStats, DeadLetterRetryAllResult, DeadLetterRetryAttempt, DescribeImageParams, DescribeVideoMetadata, DistributedCircuitBreaker, DistributedCircuitBreakerRegistry, DlqEvent, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExponentialBackoff, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FileNamingConfig, FileNamingFunction, FixedBackoff, FlipTransform, Flow, FlowCircuitBreakerConfig, FlowCircuitBreakerFallback, FlowCondition, FlowConfig, FlowData, FlowDeadLetterQueueConfig, FlowEdge, FlowEvent, FlowEventDlqItemAdded, FlowEventDlqItemExhausted, FlowEventDlqItemResolved, FlowEventDlqRetryFailed, FlowEventDlqRetryStart, FlowEventDlqRetrySuccess, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowJobTraceContext, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, ImmediateBackoff, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NamingContext, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RetryPolicy, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, applyFileNaming, blurTransformSchema, brightnessTransformSchema, buildNamingContext, calculateBackoffDelay, calculateExpirationDate, completeNodeExecution, contrastTransformSchema, createDeadLetterQueueService, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, deadLetterQueueService, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getBaseName, getExtension, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, interpolateFileName, isErrorRetryable, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, kvCircuitBreakerStoreLayer, logoTransformSchema, makeKvCircuitBreakerStore, makeMemoryCircuitBreakerStore, memoryCircuitBreakerStoreLayer, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, validatePattern, waitingNodeExecution, watermarkTransformSchema };
|
|
6
|
+
export { AVAILABLE_TEMPLATE_VARIABLES, AllowRequestResult, AutoNamingSuffixGenerator, BackoffStrategy, BlurTransform, BrightnessTransform, BuiltInTypedOutput, CircuitBreakerConfig, CircuitBreakerEvent, CircuitBreakerEventHandler, CircuitBreakerFallback, CircuitBreakerState, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DEFAULT_CIRCUIT_BREAKER_CONFIG, DEFAULT_RETRY_POLICY, DEFAULT_STREAMING_CONFIG, DeadLetterCleanupOptions, DeadLetterCleanupResult, DeadLetterError, DeadLetterItem, DeadLetterItemStatus, DeadLetterListOptions, DeadLetterProcessResult, DeadLetterQueueService, DeadLetterQueueServiceShape, DeadLetterQueueStats, DeadLetterRetryAllResult, DeadLetterRetryAttempt, DescribeImageParams, DescribeVideoMetadata, DistributedCircuitBreaker, DistributedCircuitBreakerRegistry, DlqEvent, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExponentialBackoff, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FileNamingConfig, FileNamingFunction, FixedBackoff, FlipTransform, Flow, FlowCircuitBreakerConfig, FlowCircuitBreakerFallback, FlowCondition, FlowConfig, FlowData, FlowDeadLetterQueueConfig, FlowEdge, FlowEvent, FlowEventDlqItemAdded, FlowEventDlqItemExhausted, FlowEventDlqItemResolved, FlowEventDlqRetryFailed, FlowEventDlqRetryStart, FlowEventDlqRetrySuccess, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowJobTraceContext, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, ImmediateBackoff, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NamingContext, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RetryPolicy, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, StreamingConfig, StreamingTransformFn, StreamingTransformResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformMode, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VideoStreamInput, VideoStreamOptions, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, applyFileNaming, blurTransformSchema, brightnessTransformSchema, buildNamingContext, calculateBackoffDelay, calculateExpirationDate, completeNodeExecution, contrastTransformSchema, createDeadLetterQueueService, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, deadLetterQueueService, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getBaseName, getExtension, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, interpolateFileName, isErrorRetryable, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, kvCircuitBreakerStoreLayer, logoTransformSchema, makeKvCircuitBreakerStore, makeMemoryCircuitBreakerStore, memoryCircuitBreakerStoreLayer, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, validatePattern, waitingNodeExecution, watermarkTransformSchema };
|
package/dist/flow/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../uploadista-error-CkSxSyNo.mjs";import"../errors-CtPUOWNd.mjs";import{$ as e,A as t,At as n,B as r,Bt as i,C as a,Ct as o,D as s,Dt as c,E as l,Et as u,F as d,Ft as f,G as p,Gt as m,H as h,Ht as g,I as _,It as v,J as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as E,Nt as D,O,Ot as k,P as A,Pt as j,Q as M,R as N,Rt as P,S as F,St as I,T as L,Tt as R,U as z,Ut as B,V,Vt as H,W as U,Wt as W,X as G,Y as K,Z as q,_ as J,_t as Y,a as X,at as Z,b as Q,bt as $,c as ee,ct as te,d as ne,dt as re,et as ie,f as ae,ft as oe,g as se,gt as ce,h as le,ht as ue,i as de,it as fe,j as pe,jt as me,k as he,kt as ge,l as _e,lt as ve,m as ye,mt as be,n as xe,nt as Se,o as Ce,ot as we,p as Te,pt as Ee,q as De,r as Oe,rt as ke,s as Ae,st as je,t as Me,tt as Ne,u as Pe,ut as Fe,v as Ie,vt as Le,w as Re,wt as ze,x as Be,xt as Ve,y as He,yt as Ue,z as We,zt as Ge}from"../flow-
|
|
1
|
+
import"../uploadista-error-CkSxSyNo.mjs";import"../errors-CtPUOWNd.mjs";import{$ as e,A as t,At as n,B as r,Bt as i,C as a,Ct as o,D as s,Dt as c,E as l,Et as u,F as d,Ft as f,G as p,Gt as m,H as h,Ht as g,I as _,It as v,J as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as E,Nt as D,O,Ot as k,P as A,Pt as j,Q as M,R as N,Rt as P,S as F,St as I,T as L,Tt as R,U as z,Ut as B,V,Vt as H,W as U,Wt as W,X as G,Y as K,Z as q,_ as J,_t as Y,a as X,at as Z,b as Q,bt as $,c as ee,ct as te,d as ne,dt as re,et as ie,f as ae,ft as oe,g as se,gt as ce,h as le,ht as ue,i as de,it as fe,j as pe,jt as me,k as he,kt as ge,l as _e,lt as ve,m as ye,mt as be,n as xe,nt as Se,o as Ce,ot as we,p as Te,pt as Ee,q as De,r as Oe,rt as ke,s as Ae,st as je,t as Me,tt as Ne,u as Pe,ut as Fe,v as Ie,vt as Le,w as Re,wt as ze,x as Be,xt as Ve,y as He,yt as Ue,z as We,zt as Ge}from"../flow-_OmguvZm.mjs";import{b as Ke}from"../types-DKGQJIEr.mjs";import"../upload-tLC7uR9U.mjs";import"../checksum-COoD-F1l.mjs";import"../stream-limiter-B9nsn2gb.mjs";export{d as AVAILABLE_TEMPLATE_VARIABLES,E as CredentialProvider,x as DEFAULT_CIRCUIT_BREAKER_CONFIG,G as DEFAULT_RETRY_POLICY,Ke as DEFAULT_STREAMING_CONFIG,De as DeadLetterQueueService,i as DistributedCircuitBreaker,H as DistributedCircuitBreakerRegistry,w as DocumentAiPlugin,pe as DocumentPlugin,P as EventType,h as FlowProvider,z as FlowServer,U as FlowWaitUntil,Y as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID,t as ImageAiPlugin,he as ImagePlugin,f as InputTypeRegistry,ge as NodeType,Le as OCR_OUTPUT_TYPE_ID,T as OutputTypeRegistry,ce as ParallelScheduler,Ue as STORAGE_OUTPUT_TYPE_ID,$ as STREAMING_INPUT_TYPE_ID,X as VideoPlugin,de as VirusScanPlugin,Oe as ZipPlugin,_ as applyFileNaming,Ae as blurTransformSchema,ee as brightnessTransformSchema,S as buildNamingContext,q as calculateBackoffDelay,M as calculateExpirationDate,c as completeNodeExecution,_e as contrastTransformSchema,y as createDeadLetterQueueService,xe as createFlow,Ge as createFlowEdge,n as createFlowNode,p as createFlowServer,ie as createFlowWithSchema,o as createInputNode,A as createTransformNode,Se as createTypeGuard,K as deadLetterQueueService,O as describeImageParamsSchema,s as describeVideoMetadataSchema,l as extractFrameVideoParamsSchema,ke as filterOutputsByType,Pe as flipTransformSchema,b as flowServer,N as getBaseName,We as getExtension,fe as getFirstOutputByType,Ne as getFlowData,me as getNodeData,Z as getOutputByNodeId,we as getSingleOutputByType,ne as grayscaleTransformSchema,je as hasOutputOfType,Ve as imageDescriptionOutputSchema,ze as inputDataSchema,R as inputNodeParamsSchema,v as inputTypeRegistry,r as interpolateFileName,e as isErrorRetryable,te as isFinalizeOperation,ve as isImageDescriptionOutput,Fe as isInitOperation,re as isOcrOutput,oe as isStorageOutput,Ee as isUploadFile,be as isUploadOperation,ue as isUrlOperation,g as kvCircuitBreakerStoreLayer,ae as logoTransformSchema,B as makeKvCircuitBreakerStore,W as makeMemoryCircuitBreakerStore,m as memoryCircuitBreakerStoreLayer,I as ocrOutputSchema,L as optimizeParamsSchema,D as outputTypeRegistry,Re as removeBackgroundParamsSchema,a as resizeParamsSchema,Te as resizeTransformSchema,F as resizeVideoParamsSchema,u as resolveUploadMetadata,ye as rotateTransformSchema,Me as runArgsSchema,le as sepiaTransformSchema,se as sharpenTransformSchema,J as textTransformSchema,Be as transcodeVideoParamsSchema,Ie as transformImageParamsSchema,He as transformationSchema,Ce as trimVideoParamsSchema,C as validateFlowInput,j as validateFlowOutput,V as validatePattern,k as waitingNodeExecution,Q as watermarkTransformSchema};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./types-Cws60JHC.cjs`),t=require(`./uploadista-error-BgQU45we.cjs`),n=require(`./upload-BHDuuJ80.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.I.deserialize(a)}catch{return yield*t.delete(r),null}}),a=(r,i)=>{let a=n(r),o=e.I.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.O({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.O({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.D,r.Effect.gen(function*(){return c(yield*e.k)})),d=r.Layer.succeed(e.D,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.O({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.O({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=>({type:`complete`,data:e}),E=e=>({type:`waiting`,partialData:e}),D=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var O=class{typeChecker;constructor(e=D){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 k(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 A=i.z.object({operation:i.z.literal(`init`),storageId:i.z.string(),metadata:i.z.record(i.z.string(),i.z.any()).optional()}),j=i.z.object({operation:i.z.literal(`finalize`),uploadId:i.z.string()}),M=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()}),N=i.z.union([A,j,M]),P=i.z.object({allowedMimeTypes:i.z.array(i.z.string()).optional(),minSize:i.z.number().positive().optional(),maxSize:i.z.number().positive().optional()});function ee(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 te(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:N,outputSchema:e.E,keepOutput:s,inputTypeId:R,outputTypeId:F,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 E(yield*o.createUpload(t,l))}case`finalize`:{let t=yield*o.getUpload(e.uploadId),{type:n}=k(t.metadata);return yield*ee({type:n,size:t.size||0},a),T(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*ee({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 T({...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 F=`storage-output-v1`,I=`ocr-output-v1`,L=`image-description-output-v1`,R=`streaming-input-v1`,z=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()}),B=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:R,schema:N,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),b.register({id:F,schema:e.E,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),b.register({id:I,schema:z,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),b.register({id:L,schema:B,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});var ne=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 V(e){return t=>{if(t.nodeType!==e)return!1;let n=b.get(e);return n?n.schema.safeParse(t.data).success:!1}}function re(t){return!t||typeof t!=`object`?!1:e.E.safeParse(t).success}const ie=V(`storage-output-v1`),ae=V(I),oe=V(L);function H(e,t){return e.filter(t)}function se(e,n){return r.Effect.gen(function*(){let r=H(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 ce(e,t){return H(e,t)[0]}function le(e,t){return e.find(e=>e.nodeId===t)}function ue(e,t){return e.some(t)}function de(e){return e.operation===`init`}function fe(e){return e.operation===`finalize`}function pe(e){return e.operation===`url`}function me(e){return e.operation===`init`||e.operation===`url`}const U=e=>({id:e.id,name:e.name,nodes:e.nodes.map(w),edges:e.edges});function W(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 O(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=()=>{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},S=(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)},C=(e,t)=>{let{reverseGraph:n}=b(),r=n[e]||[],i={};return r.forEach(e=>{let n=t.get(e);n!==void 0&&(i[e]=n)}),i},w=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},T=e=>!u.some(t=>t.source===e),E=e=>{let t=_.find(t=>t.id===e);return T(e)||t?.keepOutput===!0},D=e=>{let t=_.filter(e=>E(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},k=(e,t)=>{let n=_.filter(e=>E(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},A=(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}),j=(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 w=0,T=null;for(;w<=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=C(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`&&!(yield*S(m,l)))return c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name})),{nodeId:e,result:l,success:!0,waiting:!1};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(E(e)&&(re(g)&&g.storage.id!==i&&(yield*r.Effect.logDebug(`Auto-persisting output node ${e} output from ${g.storage.id} to ${i}`),g=yield*A(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(T=n instanceof t.n?n:t.n.fromCode(`FLOW_NODE_ERROR`,{cause:n}),x&&(yield*x.recordFailure(T.body)),w<g){w++;let t=v?_*2**(w-1):_;yield*r.Effect.logWarning(`Node ${e} (${m.name}) failed, retrying (${w}/${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:T.body,retryCount:w})),yield*T.toEffect()}return T?yield*T.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}})})()),M=({inputs:a,storageId:s,jobId:l,resumeFrom:d,clientId:m})=>r.Effect.gen(function*(){let g=yield*r.Effect.serviceOption(e.D),v=g._tag===`Some`?new p(g.value):null;!d&&c&&(yield*c({jobId:l,eventType:h.FlowStart,flowId:o}));let y=w(a||{}),b,S,C;d?(b=d.executionOrder,S=d.nodeResults,C=d.currentIndex):(b=x(),S=new Map,C=0);let T=new Map;if(b.length!==_.length)return yield*t.n.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let O=new Map(_.map(e=>[e.id,e]));if(n.parallelExecution?.enabled??!1){yield*r.Effect.logDebug(`Flow ${o}: Executing in parallel mode (maxConcurrency: ${n.parallelExecution?.maxConcurrency??4})`);let e=new ne({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=n.nodes.map(e=>()=>r.Effect.gen(function*(){if(d&&e===d.executionOrder[C]&&c){let t=O.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*j(e,s,y,S,O,l,m,v)}})),i=yield*e.executeNodesInParallel(t);for(let{nodeId:e,nodeResult:t}of i){if(t.waiting)return t.result!==void 0&&(S.set(e,t.result),t.nodeType&&T.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:b,currentIndex:b.indexOf(e),inputs:y}};t.success&&(S.set(e,t.result),t.nodeType&&T.set(e,t.nodeType))}}}else{yield*r.Effect.logDebug(`Flow ${o}: Executing in sequential mode`);for(let e=C;e<b.length;e++){let n=b[e];if(!n)return yield*t.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(d&&e===C&&c){let e=O.get(n);e&&(yield*c({jobId:l,flowId:o,nodeId:n,eventType:h.NodeResume,nodeName:e.name,nodeType:e.type}))}let r=yield*j(n,s,y,S,O,l,m,v);if(r.waiting)return r.result!==void 0&&(S.set(r.nodeId,r.result),r.nodeType&&T.set(r.nodeId,r.nodeType)),{type:`paused`,nodeId:r.nodeId,executionState:{executionOrder:b,currentIndex:e,inputs:y}};r.success&&(S.set(r.nodeId,r.result),r.nodeType&&T.set(r.nodeId,r.nodeType))}}let A=D(S),M=k(S,T),N=i.z.record(i.z.string(),f).safeParse(A);if(!N.success){let e=`Flow output validation failed: ${N.error.message}. Expected outputs: ${JSON.stringify(Object.keys(D(S)))}. Output nodes (sinks + keepOutput): ${_.filter(e=>E(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:N.error}).toEffect()}let P=N.data;return c&&(yield*c({jobId:l,eventType:h.FlowEnd,flowId:o,outputs:M,result:P})),{type:`completed`,result:P,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})=>M({inputs:e,storageId:t,jobId:n,clientId:r}),resume:({jobId:e,storageId:t,nodeResults:n,executionState:r,clientId:i})=>M({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)}})}const G={enabled:!0,maxRetries:3,backoff:{type:`exponential`,initialDelayMs:1e3,maxDelayMs:3e5,multiplier:2,jitter:!0},ttlMs:6048e5};function K(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 he(e,t){return!t.enabled||t.nonRetryableErrors?.includes(e)?!1:t.retryableErrors&&t.retryableErrors.length>0?t.retryableErrors.includes(e):!0}function ge(e,t){if(!(t===void 0||t<=0))return new Date(e.getTime()+t)}var q=class e extends r.Context.Tag(`DeadLetterQueueService`)(){static optional=r.Effect.serviceOption(e)};function _e(){return r.Effect.gen(function*(){let t=yield*e.A,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=G)=>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=he(s.code,a),d;if(a.enabled&&u&&a.maxRetries>0){let e=K(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:ge(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=K(G.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 ve=r.Layer.effect(q,_e());var J=class e extends r.Context.Tag(`FlowWaitUntil`)(){static optional=r.Effect.serviceOption(e)},ye=class extends r.Context.Tag(`FlowProvider`)(){},be=class extends r.Context.Tag(`FlowServer`)(){};const xe=e=>typeof e==`object`&&!!e&&`id`in e,Se=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function Ce(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}];yield*i.set(t,{...e,tasks:n,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=Se(l),d=n.intermediateFiles||[],f=s||c;f&&xe(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&&xe(u)&&u.id&&(d.includes(u.id)||d.push(u.id)),yield*i.set(t,{...n,tasks:a,intermediateFiles:d,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*W({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*W({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 we(){return r.Effect.gen(function*(){let i=yield*ye,a=yield*e.d,o=yield*e.j,s=yield*n.n,c=yield*q.optional,l=(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`}))}),u=(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*l(e,{intermediateFiles:[]}))}),d=(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`)}),f=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})})}),p=({jobId:e,flow:n,storageId:i,clientId:s,inputs:c})=>r.Effect.gen(function*(){return console.log(`[FlowServer] executeFlowInBackground started for job: ${e}`),yield*l(e,{status:`running`,traceContext:yield*f}),yield*r.Effect.gen(function*(){console.log(`[FlowServer] Creating flowWithEvents for job: ${e}`);let t=Ce(n,a,o);console.log(`[FlowServer] Running flow for job: ${e}`);let r=yield*t.run({inputs:c,storageId:i,jobId:e,clientId:s});return console.log(`[FlowServer] Flow completed for job: ${e}, result type: ${r.type}`),r.type===`paused`?yield*l(e,{status:`paused`,pausedAt:r.nodeId,executionState:r.executionState,updatedAt:new Date}):(yield*l(e,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*u(e,s)),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 c=i instanceof t.n?i.body:String(i);yield*r.Effect.logInfo(`Updating job ${e} to failed status with error: ${c}`),yield*l(e,{status:`failed`,error:c,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 f=yield*o.get(e);throw f&&(yield*a.emit(e,{jobId:e,eventType:h.FlowError,flowId:f.flowId,error:c}).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:c}).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*u(e,s).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*d(e,i instanceof t.n?i:new t.n({code:`UNKNOWN_ERROR`,status:500,body:String(i),cause:i})),i})));return{getFlow:(e,t)=>r.Effect.gen(function*(){return yield*i.getFlow(e,t)}),getFlowData:(e,t)=>r.Effect.gen(function*(){return U(yield*i.getFlow(e,t))}),runFlow:({flowId:e,storageId:n,clientId:a,inputs:s})=>r.Effect.gen(function*(){let c=yield*J.optional,l=yield*r.Effect.try({try:()=>$.parse({inputs:s}),catch:e=>t.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:e})}),u=crypto.randomUUID(),d=new Date,f={id:u,flowId:e,storageId:n,clientId:a,status:`started`,createdAt:d,updatedAt:d,tasks:[]};yield*o.set(u,f);let m=yield*i.getFlow(e,a);console.log(`[FlowServer] About to fork flow execution for job: ${u}`);let h=p({jobId:u,flow:m,storageId:n,clientId:a,inputs:l.inputs}).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow execution failed`,e)));if(r.Option.isSome(c)){console.log(`[FlowServer] Using waitUntil for job: ${u}`);let e=yield*r.Effect.runtime(),t=r.Runtime.runPromise(e)(h);c.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${u}`),yield*r.Effect.forkDaemon(h);return console.log(`[FlowServer] Flow execution started for job: ${u}`),f}),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:s,clientId:c})=>r.Effect.gen(function*(){let f=yield*J.optional,p=yield*o.get(e);if(!p)return console.error(`Job not found`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}));if(p.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: ${p.status})`}));if(p.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 ${p.pausedAt}, not ${n}`}));if(!p.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 m={...p.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[n]:s},g={...p.executionState.inputs,[n]:s};yield*l(e,{status:`running`});let _=yield*i.getFlow(p.flowId,p.clientId),v=p.traceContext?r.Tracer.externalSpan({traceId:p.traceContext.traceId,spanId:p.traceContext.spanId,sampled:p.traceContext.traceFlags===1}):void 0,y=r.Effect.gen(function*(){let n=Ce(_,a,o);if(!p.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:p.storageId,nodeResults:m,executionState:{...p.executionState,inputs:g},clientId:p.clientId});return i.type===`paused`?yield*l(e,{status:`paused`,pausedAt:i.nodeId,executionState:i.executionState,updatedAt:new Date}):(yield*l(e,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*u(e,c)),i}).pipe(r.Effect.withSpan(`flow-execution-resume`,{attributes:{"flow.id":_.id,"flow.name":_.name,"flow.job_id":e,"flow.storage_id":p.storageId,"flow.resumed_from_node":n},parent:v})).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*l(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 s=yield*o.get(e);throw s&&(yield*a.emit(e,{jobId:e,eventType:h.FlowError,flowId:s.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*u(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*d(e,n instanceof t.n?n:new t.n({code:`UNKNOWN_ERROR`,status:500,body:String(n),cause:n})),n}))).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow resume failed`,e)));if(r.Option.isSome(f)){console.log(`[FlowServer] Using waitUntil for resume job: ${e}`);let t=yield*r.Effect.runtime(),n=r.Runtime.runPromise(t)(y);f.value(n)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${e}`),yield*r.Effect.forkDaemon(y);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*l(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*l(e,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*a.emit(e,{jobId:e,flowId:i.flowId,eventType:h.FlowCancel}),yield*u(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 Te=r.Layer.effect(be,we());function Ee(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function De(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?``:e.substring(t+1)}function Y(e,t,n){let r=e.metadata??{},i=r.fileName??r.originalName??r.name??`unnamed`;return{baseName:Ee(i),extension:De(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function Oe(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 X(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 Oe(n.pattern,t)||r}return r}catch{return r}}function ke(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 Ae=[{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 Z(e){return!(`stream`in e)}function je({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.E,outputSchema:e.E,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}=k(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=Z(u)?u:u.stream,h=Z(u)?void 0:u.type,x=Z(u)?void 0:u.estimatedSize,S=Z(u)?void 0:u.fileName;!S&&c&&(S=X(e,Y(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 E=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 T(E?{...w,metadata:E}: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;!w&&c&&(w=X(e,Y(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),O=y?{...y,...C&&{mimeType:C,type:C,"content-type":C},...w&&{fileName:w,originalName:w,name:w,extension:w.split(`.`).pop()||y.extension}}:D.metadata;return T(O?{...D,metadata:O}:D)})})})}var Me=class extends r.Context.Tag(`CredentialProvider`)(){},Ne=class extends r.Context.Tag(`DocumentAiPlugin`)(){},Pe=class extends r.Context.Tag(`DocumentPlugin`)(){},Fe=class extends r.Context.Tag(`ImageAiPlugin`)(){},Ie=class extends r.Context.Tag(`ImagePlugin`)(){};const Le=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),Re=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()}),ze=i.z.object({timestamp:i.z.number().nonnegative(),format:i.z.enum([`png`,`jpeg`]).optional(),quality:i.z.number().min(1).max(100).optional()}),Be=i.z.object({quality:i.z.number().min(0).max(100),format:i.z.enum([`jpeg`,`webp`,`png`,`avif`])}),Ve=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),He=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`),Ue=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`),We=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()}),Ge=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`])}),Ke=i.z.object({type:i.z.literal(`blur`),sigma:i.z.number().min(.3).max(1e3)}),qe=i.z.object({type:i.z.literal(`rotate`),angle:i.z.number(),background:i.z.string().optional()}),Je=i.z.object({type:i.z.literal(`flip`),direction:i.z.enum([`horizontal`,`vertical`])}),Ye=i.z.object({type:i.z.literal(`grayscale`)}),Q=i.z.object({type:i.z.literal(`sepia`)}),Xe=i.z.object({type:i.z.literal(`brightness`),value:i.z.number().min(-100).max(100)}),Ze=i.z.object({type:i.z.literal(`contrast`),value:i.z.number().min(-100).max(100)}),Qe=i.z.object({type:i.z.literal(`sharpen`),sigma:i.z.number().positive().optional()}),$e=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()}),et=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()}),tt=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()}),nt=i.z.discriminatedUnion(`type`,[Ge,Ke,qe,Je,Ye,Q,Xe,Ze,Qe,$e,et,tt]),rt=i.z.object({transformations:i.z.array(nt).min(1)}),it=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 at=class extends r.Context.Tag(`VideoPlugin`)(){},ot=class extends r.Context.Tag(`VirusScanPlugin`)(){},st=class extends r.Context.Tag(`ZipPlugin`)(){};const ct=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>i.z.union([e,t]),n)};function lt(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)).map(([,e])=>e.outputSchema),p=e.inputSchema??ct(l,i.z.unknown()),m=e.outputSchema??ct(f,i.z.unknown());return yield*W({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 $=i.z.object({inputs:i.z.record(i.z.string(),i.z.any())});Object.defineProperty(exports,`$`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,`At`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,`Bt`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,`Ct`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,`Dt`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,`Et`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,`Ft`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`G`,{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,`Gt`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`H`,{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,`Ht`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`It`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`J`,{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,`K`,{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,`Kt`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`Lt`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,`Mt`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,`Nt`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,`Ot`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,`Pt`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`Q`,{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,`Rt`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,`St`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,`Tt`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`U`,{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,`Ut`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,`Vt`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`W`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`Wt`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`X`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`Y`,{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,`Z`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`_t`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,`at`,{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,`bt`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,`ct`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,`dt`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`et`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,`ft`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,`gt`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`ht`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,`it`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,`jt`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,`kt`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,`lt`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,`mt`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,`nt`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,`ot`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,`pt`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,`rt`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,`st`,{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`tt`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,`ut`,{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,`vt`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,`wt`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`xt`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,`yt`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,`zt`,{enumerable:!0,get:function(){return m}});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./uploadista-error-CkSxSyNo.mjs";import{A as t,D as n,E as r,I as i,O as a,S as o,b as s,d as c,j as l,k as u}from"./types-DKGQJIEr.mjs";import{a as d,n as f,o as p}from"./upload-tLC7uR9U.mjs";import{Context as m,Effect as h,Layer as g,Option as _,Runtime as v,Stream as y,Tracer as b}from"effect";import{z as x}from"zod";import{render as S}from"micromustache";const C={enabled:!1,failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:6e4,fallback:{type:`fail`}},w=`uploadista:circuit-breaker:`;function T(e){let t=e=>`${w}${e}`,n=n=>h.gen(function*(){let r=t(n),a=yield*e.get(r);if(a===null)return null;try{return i.deserialize(a)}catch{return yield*e.delete(r),null}}),r=(n,r)=>{let a=t(n),o=i.serialize(r);return e.set(a,o)};return{getState:n,setState:r,incrementFailures:(e,t)=>h.gen(function*(){let i=Date.now(),o=yield*n(e);return o===null&&(o=a({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:t})),o=i-o.windowStart>t?{...o,failureCount:1,windowStart:i}:{...o,failureCount:o.failureCount+1},yield*r(e,o),o.failureCount}),resetFailures:e=>h.gen(function*(){let t=yield*n(e);t!==null&&(yield*r(e,{...t,failureCount:0,windowStart:Date.now()}))}),incrementHalfOpenSuccesses:e=>h.gen(function*(){let t=yield*n(e);if(t===null)return 1;let i={...t,halfOpenSuccesses:t.halfOpenSuccesses+1};return yield*r(e,i),i.halfOpenSuccesses}),getAllStats:()=>h.gen(function*(){let t=new Map;if(!e.list)return t;let r=yield*e.list(w),i=Date.now();for(let e of r){let r=e,a=yield*n(r);if(a!==null){let e=i-a.lastStateChange;t.set(r,{nodeType:r,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 E(){let e=new Map;return{getState:t=>h.succeed(e.get(t)??null),setState:(t,n)=>h.sync(()=>{e.set(t,n)}),incrementFailures:(t,n)=>h.sync(()=>{let r=Date.now(),i=e.get(t);return i===void 0&&(i=a({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:n})),i=r-i.windowStart>n?{...i,failureCount:1,windowStart:r}:{...i,failureCount:i.failureCount+1},e.set(t,i),i.failureCount}),resetFailures:t=>h.sync(()=>{let n=e.get(t);n!==void 0&&e.set(t,{...n,failureCount:0,windowStart:Date.now()})}),incrementHalfOpenSuccesses:t=>h.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:()=>h.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=>h.sync(()=>{e.delete(t)})}}const D=g.effect(n,h.gen(function*(){return T(yield*u)})),O=g.succeed(n,E());var k=class{eventHandler;nodeType;config;store;constructor(e,t,n){this.nodeType=e,this.config={enabled:t.enabled??C.enabled,failureThreshold:t.failureThreshold??C.failureThreshold,resetTimeout:t.resetTimeout??C.resetTimeout,halfOpenRequests:t.halfOpenRequests??C.halfOpenRequests,windowDuration:t.windowDuration??C.windowDuration,fallback:t.fallback??C.fallback},this.store=n}setEventHandler(e){this.eventHandler=e}allowRequest(){let e=this;return h.gen(function*(){if(!e.config.enabled)return{allowed:!0,state:`closed`,failureCount:0};let t=yield*e.store.getState(e.nodeType),n=Date.now();if(t===null&&(t=a({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`&&n-t.lastStateChange>=e.config.resetTimeout){let r=t.state;t={...t,state:`half-open`,halfOpenSuccesses:0,lastStateChange:n},yield*e.store.setState(e.nodeType,t),yield*e.emitEvent(r,`half-open`,t.failureCount)}return{allowed:t.state!==`open`,state:t.state,failureCount:t.failureCount}})}getState(){let e=this;return h.gen(function*(){return(yield*e.store.getState(e.nodeType))?.state??`closed`})}getFailureCount(){let e=this;return h.gen(function*(){return(yield*e.store.getState(e.nodeType))?.failureCount??0})}recordSuccess(){let e=this;return h.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 h.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 h.gen(function*(){let t=(yield*e.store.getState(e.nodeType))?.state??`closed`;yield*e.store.setState(e.nodeType,a({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 h.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 h.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 k(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 h.gen(function*(){for(let t of e.breakers.values())yield*t.reset()})}clear(){this.breakers.clear()}};function A({source:e,target:t,sourcePort:n,targetPort:r}){return{source:e,target:t,sourcePort:n,targetPort:r}}let j=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 M=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 N=new M;function te(e,t){return N.validate(e,t)}var ne=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 P=new ne;function re(e,t){return P.validate(e,t)}let F=function(e){return e.input=`input`,e.process=`process`,e.conditional=`conditional`,e.multiplex=`multiplex`,e.merge=`merge`,e}({});function I({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:g=!1,circuitBreaker:_,nodeTypeId:v}){return h.gen(function*(){return p&&!N.get(p)?yield*e.fromCode(`INVALID_INPUT_TYPE`,{body:`Input type "${p}" is not registered in inputTypeRegistry`,details:{inputTypeId:p,nodeId:t}}).toEffect():m&&!P.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:g,inputSchema:a,outputSchema:o,pausable:d,run:({data:r,jobId:i,flowId:c,storageId:l,clientId:u})=>h.gen(function*(){let d=yield*s({data:yield*h.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*h.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:_,nodeTypeId:v}})}const ie=e=>({id:e.id,name:e.name,description:e.description,type:e.type,inputTypeId:e.inputTypeId,outputTypeId:e.outputTypeId,nodeTypeId:e.nodeTypeId}),L=e=>({type:`complete`,data:e}),ae=e=>({type:`waiting`,partialData:e}),oe=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var se=class{typeChecker;constructor(e=oe){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 R(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 ce=x.object({operation:x.literal(`init`),storageId:x.string(),metadata:x.record(x.string(),x.any()).optional()}),le=x.object({operation:x.literal(`finalize`),uploadId:x.string()}),ue=x.object({operation:x.literal(`url`),url:x.string(),storageId:x.string().optional(),metadata:x.record(x.string(),x.any()).optional()}),z=x.union([ce,le,ue]),de=x.object({allowedMimeTypes:x.array(x.string()).optional(),minSize:x.number().positive().optional(),maxSize:x.number().positive().optional()});function fe(t,n){return h.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 pe(t,n,i){let a=i?.keepOutput??!1;return h.gen(function*(){let i=yield*f;return yield*I({id:t,name:`Input`,description:`Handles file input through multiple methods - streaming upload (init/finalize) or direct URL fetch`,type:F.input,nodeTypeId:`input`,inputSchema:z,outputSchema:r,keepOutput:a,inputTypeId:U,outputTypeId:B,run:({data:r,flowId:a,jobId:o,clientId:s})=>h.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 ae(yield*i.createUpload(e,s))}case`finalize`:{let e=yield*i.getUpload(r.uploadId),{type:t}=R(e.metadata);return yield*fe({type:t,size:e.size||0},n),L(e)}case`url`:{let e=yield*p(r.url),c=yield*d(e),l=r.metadata?.mimeType||e.headers.get(`content-type`)||`application/octet-stream`,u=r.metadata?.size||Number(e.headers.get(`content-length`)||0),f=r.metadata?.originalName||r.url.split(`/`).pop()||`file`;yield*fe({type:l,size:u},n);let m=new ReadableStream({start(e){e.enqueue(new Uint8Array(c)),e.close()}}),h={storageId:r.storageId||`buffer`,size:u,type:l,fileName:f,lastModified:Date.now(),metadata:r.metadata?JSON.stringify(r.metadata):void 0};return L({...yield*i.upload(h,s,m),flow:{flowId:a,nodeId:t,jobId:o}})}default:throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`Invalid operation`)}).toEffect()}})})})}const B=`storage-output-v1`,V=`ocr-output-v1`,H=`image-description-output-v1`,U=`streaming-input-v1`,me=x.object({extractedText:x.string(),format:x.enum([`markdown`,`plain`,`structured`]),taskType:x.enum([`convertToMarkdown`,`freeOcr`,`parseFigure`,`locateObject`]),confidence:x.number().min(0).max(1).optional()}),he=x.object({description:x.string(),confidence:x.number().min(0).max(1).optional(),metadata:x.record(x.string(),x.unknown()).optional()});N.register({id:U,schema:z,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),P.register({id:B,schema:r,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),P.register({id:V,schema:me,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),P.register({id:H,schema:he,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});var ge=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 h.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 W(e){return t=>{if(t.nodeType!==e)return!1;let n=P.get(e);return n?n.schema.safeParse(t.data).success:!1}}function _e(e){return!e||typeof e!=`object`?!1:r.safeParse(e).success}const ve=W(`storage-output-v1`),ye=W(V),be=W(H);function G(e,t){return e.filter(t)}function xe(t,n){return h.gen(function*(){let r=G(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 Se(e,t){return G(e,t)[0]}function Ce(e,t){return e.find(e=>e.nodeId===t)}function we(e,t){return e.some(t)}function Te(e){return e.operation===`init`}function Ee(e){return e.operation===`finalize`}function De(e){return e.operation===`url`}function Oe(e){return e.operation===`init`||e.operation===`url`}const ke=e=>({id:e.id,name:e.name,nodes:e.nodes.map(ie),edges:e.edges});function K(t){return h.gen(function*(){let r=yield*h.all(t.nodes.map(e=>h.isEffect(e)?e:h.succeed(e))),{flowId:i,name:a,onEvent:s,checkJobStatus:c,edges:l,inputSchema:u,outputSchema:d,typeChecker:f,circuitBreaker:p}=t,m=r,g=new se(f),_=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}},v=()=>{let e={},t={},n={};return m.forEach(r=>{e[r.id]=[],n[r.id]=[],t[r.id]=0}),l.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}},b=()=>{let{graph:e,inDegree:t}=v(),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 h.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 h.succeed(s)},C=(e,t)=>{let{reverseGraph:n}=v(),r=n[e]||[],i={};return r.forEach(e=>{let n=t.get(e);n!==void 0&&(i[e]=n)}),i},w=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]=u.parse(e[t.id]))}),n},T=e=>!l.some(t=>t.source===e),E=e=>{let t=m.find(t=>t.id===e);return T(e)||t?.keepOutput===!0},D=e=>{let t=m.filter(e=>E(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},O=(e,t)=>{let n=m.filter(e=>E(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},k=(e,t,n)=>h.gen(function*(){if(e.storage.id===t)return e;let r=yield*o,i=yield*r.getDataStore(e.storage.id,n),a=yield*r.getDataStore(t,n),s=yield*i.read(e.id),c=y.make(s),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}),A=(n,r,a,o,l,u,d,f)=>h.gen(function*(){let p=l.get(n);if(!p)return yield*e.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(c){let t=yield*c(u);if(t===`paused`)return yield*e.fromCode(`FLOW_PAUSED`,{cause:`Flow ${i} was paused by user at job ${u}`}).toEffect();if(t===`cancelled`)return yield*e.fromCode(`FLOW_CANCELLED`,{cause:`Flow ${i} was cancelled by user at job ${u}`}).toEffect()}s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.NodeStart,nodeName:p.name,nodeType:p.type}));let m=p.retry?.maxRetries??0,g=p.retry?.retryDelay??1e3,v=p.retry?.exponentialBackoff??!0,y=_(p),b=y?.enabled&&p.nodeTypeId&&f?f.getOrCreate(p.nodeTypeId,y):null;if(b){let{allowed:t,state:r,failureCount:o}=yield*b.allowRequest();if(!t){let t=b.getFallback();return yield*h.logWarning(`Circuit breaker OPEN for node type "${p.nodeTypeId}" - applying fallback`),t.type===`skip`?(s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.NodeEnd,nodeName:p.name})),{nodeId:n,result:a[n],success:!0,waiting:!1}):t.type===`default`?(s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.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:r,failureCount:o}}).toEffect()}}let x=0,w=null;for(;x<=m;)try{let c,l={};if(p.type===`input`){if(c=a[n],c===void 0)return yield*h.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,o),Object.keys(l).length===0)return yield*h.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)c=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();c=l[t]}}if(p.type===`conditional`&&!(yield*S(p,c)))return s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.NodeEnd,nodeName:p.name})),{nodeId:n,result:c,success:!0,waiting:!1};let f=yield*p.run({data:c,inputs:l,jobId:u,flowId:i,storageId:r,clientId:d});if(f.type===`waiting`){let e=f.partialData;return s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.NodePause,nodeName:p.name,partialData:e})),{nodeId:n,result:e,success:!0,waiting:!0,nodeType:f.nodeType}}let m=f.data;if(E(n)&&(_e(m)&&m.storage.id!==r&&(yield*h.logDebug(`Auto-persisting output node ${n} output from ${m.storage.id} to ${r}`),m=yield*k(m,r,d)),t.hooks?.onNodeOutput)){yield*h.logDebug(`Calling onNodeOutput hook for sink node ${n}`);let e=t.hooks.onNodeOutput({output:m,nodeId:n,flowId:i,jobId:u,storageId:r,clientId:d});m=yield*h.isEffect(e)?e:h.promise(()=>e)}return b&&(yield*b.recordSuccess()),s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.NodeEnd,nodeName:p.name,result:m})),{nodeId:n,result:m,success:!0,waiting:!1,nodeType:f.nodeType}}catch(t){if(w=t instanceof e?t:e.fromCode(`FLOW_NODE_ERROR`,{cause:t}),b&&(yield*b.recordFailure(w.body)),x<m){x++;let e=v?g*2**(x-1):g;yield*h.logWarning(`Node ${n} (${p.name}) failed, retrying (${x}/${m}) after ${e}ms`),yield*h.sleep(e);continue}return s&&(yield*s({jobId:u,flowId:i,nodeId:n,eventType:j.NodeError,nodeName:p.name,error:w.body,retryCount:x})),yield*w.toEffect()}return w?yield*w.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 h.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":i,"flow.job_id":u}})})()),M=({inputs:r,storageId:a,jobId:o,resumeFrom:c,clientId:u})=>h.gen(function*(){let f=yield*h.serviceOption(n),p=f._tag===`Some`?new ee(f.value):null;!c&&s&&(yield*s({jobId:o,eventType:j.FlowStart,flowId:i}));let g=w(r||{}),_,v,y;c?(_=c.executionOrder,v=c.nodeResults,y=c.currentIndex):(_=b(),v=new Map,y=0);let S=new Map;if(_.length!==m.length)return yield*e.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let C=new Map(m.map(e=>[e.id,e]));if(t.parallelExecution?.enabled??!1){yield*h.logDebug(`Flow ${i}: Executing in parallel mode (maxConcurrency: ${t.parallelExecution?.maxConcurrency??4})`);let e=new ge({maxConcurrency:t.parallelExecution?.maxConcurrency??4}),n=e.groupNodesByExecutionLevel(m,l);yield*h.logDebug(`Flow ${i}: Grouped nodes into ${n.length} execution levels`);let r={};m.forEach(e=>{r[e.id]=[]}),l.forEach(e=>{r[e.target]?.push(e.source)});for(let t of n){yield*h.logDebug(`Flow ${i}: Executing level ${t.level} with nodes: ${t.nodes.join(`, `)}`);let n=t.nodes.map(e=>()=>h.gen(function*(){if(c&&e===c.executionOrder[y]&&s){let t=C.get(e);t&&(yield*s({jobId:o,flowId:i,nodeId:e,eventType:j.NodeResume,nodeName:t.name,nodeType:t.type}))}return{nodeId:e,nodeResult:yield*A(e,a,g,v,C,o,u,p)}})),r=yield*e.executeNodesInParallel(n);for(let{nodeId:e,nodeResult:t}of r){if(t.waiting)return t.result!==void 0&&(v.set(e,t.result),t.nodeType&&S.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:_,currentIndex:_.indexOf(e),inputs:g}};t.success&&(v.set(e,t.result),t.nodeType&&S.set(e,t.nodeType))}}}else{yield*h.logDebug(`Flow ${i}: Executing in sequential mode`);for(let t=y;t<_.length;t++){let n=_[t];if(!n)return yield*e.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(c&&t===y&&s){let e=C.get(n);e&&(yield*s({jobId:o,flowId:i,nodeId:n,eventType:j.NodeResume,nodeName:e.name,nodeType:e.type}))}let r=yield*A(n,a,g,v,C,o,u,p);if(r.waiting)return r.result!==void 0&&(v.set(r.nodeId,r.result),r.nodeType&&S.set(r.nodeId,r.nodeType)),{type:`paused`,nodeId:r.nodeId,executionState:{executionOrder:_,currentIndex:t,inputs:g}};r.success&&(v.set(r.nodeId,r.result),r.nodeType&&S.set(r.nodeId,r.nodeType))}}let T=D(v),k=O(v,S),M=x.record(x.string(),d).safeParse(T);if(!M.success){let t=`Flow output validation failed: ${M.error.message}. Expected outputs: ${JSON.stringify(Object.keys(D(v)))}. Output nodes (sinks + keepOutput): ${m.filter(e=>E(e.id)).map(e=>e.id).join(`, `)}`;return s&&(yield*s({jobId:o,eventType:j.FlowError,flowId:i,error:t})),yield*e.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:t,cause:M.error}).toEffect()}let N=M.data;return s&&(yield*s({jobId:o,eventType:j.FlowEnd,flowId:i,outputs:k,result:N})),{type:`completed`,result:N,outputs:k}});return{id:i,name:a,nodes:m,edges:l,inputSchema:u,outputSchema:d,onEvent:s,checkJobStatus:c,hooks:t.hooks,run:({inputs:e,storageId:t,jobId:n,clientId:r})=>M({inputs:e,storageId:t,jobId:n,clientId:r}),resume:({jobId:e,storageId:t,nodeResults:n,executionState:r,clientId:i})=>M({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 g.validateFlow(e,l)},validateInputs:e=>g.validateData(e,u),validateOutputs:e=>g.validateData(e,d)}})}const q={enabled:!0,maxRetries:3,backoff:{type:`exponential`,initialDelayMs:1e3,maxDelayMs:3e5,multiplier:2,jitter:!0},ttlMs:6048e5};function J(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 Ae(e,t){return!t.enabled||t.nonRetryableErrors?.includes(e)?!1:t.retryableErrors&&t.retryableErrors.length>0?t.retryableErrors.includes(e):!0}function je(e,t){if(!(t===void 0||t<=0))return new Date(e.getTime()+t)}var Y=class e extends m.Tag(`DeadLetterQueueService`)(){static optional=h.serviceOption(e)};function Me(){return h.gen(function*(){let e=yield*t,n=()=>`dlq_${crypto.randomUUID()}`,r=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)}))}),i=()=>h.gen(function*(){if(!e.list)return[];let t=yield*e.list(),n=[];for(let i of t){let t=yield*h.catchAll(e.get(i),()=>h.succeed(null));t&&n.push(r(t))}return n});return{add:(t,r,i=q)=>h.gen(function*(){let a=n(),o=new Date,s={code:r.code||`UNKNOWN_ERROR`,message:r.body||r.message||`Unknown error`,nodeId:void 0,stack:r.stack},c=t.tasks.find(e=>e.status===`failed`);c&&(s.nodeId=c.nodeId);let l={};for(let e of t.tasks)e.result!==void 0&&(l[e.nodeId]=e.result);let u=Ae(s.code,i),d;if(i.enabled&&u&&i.maxRetries>0){let e=J(i.backoff,0);d=new Date(o.getTime()+e)}let f={id:a,jobId:t.id,flowId:t.flowId,storageId:t.storageId,clientId:t.clientId,error:s,inputs:t.executionState?.inputs||{},nodeResults:l,failedAtNodeId:s.nodeId,retryCount:0,maxRetries:i.maxRetries,nextRetryAt:d,retryHistory:[],createdAt:o,updatedAt:o,expiresAt:je(o,i.ttlMs),status:u&&i.enabled?`pending`:`exhausted`};return yield*e.set(a,f),f}),get:t=>h.gen(function*(){return r(yield*e.get(t))}),getOption:t=>h.gen(function*(){let n=yield*h.either(e.get(t));return n._tag===`Left`?n.left.code===`FILE_NOT_FOUND`?_.none():yield*h.fail(n.left):_.some(r(n.right))}),delete:t=>e.delete(t),list:(e={})=>h.gen(function*(){let t=yield*i(),{status:n,flowId:r,clientId:a,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)),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,n)=>h.gen(function*(){let i={...r(yield*e.get(t)),...n,updatedAt:new Date};return yield*e.set(t,i),i}),markRetrying:t=>h.gen(function*(){let n={...r(yield*e.get(t)),status:`retrying`,updatedAt:new Date};return yield*e.set(t,n),n}),recordRetryFailure:(t,n,i)=>h.gen(function*(){let a=r(yield*e.get(t)),o=new Date,s=a.retryCount+1,c=[...a.retryHistory,{attemptedAt:o,error:n,durationMs:i}],l=`pending`,u;if(s>=a.maxRetries)l=`exhausted`,u=void 0;else{let e=J(q.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=>h.gen(function*(){let n={...r(yield*e.get(t)),status:`resolved`,nextRetryAt:void 0,updatedAt:new Date};return yield*e.set(t,n),n}),getScheduledRetries:(e=100)=>h.gen(function*(){let t=yield*i(),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={})=>h.gen(function*(){let n=yield*i(),{olderThan:r,status:a}=t,o=new Date,s=0;for(let t of n){let n=!1;t.expiresAt&&t.expiresAt<=o&&(n=!0),r&&t.createdAt<=r&&(a?n=t.status===a:(t.status===`exhausted`||t.status===`resolved`)&&(n=!0)),n&&(yield*h.catchAll(e.delete(t.id),()=>h.succeed(void 0)),s++)}return{deleted:s}}),getStats:()=>h.gen(function*(){let e=yield*i(),t={pending:0,retrying:0,exhausted:0,resolved:0},n={},r,a=0;for(let i of e)t[i.status]++,n[i.flowId]=(n[i.flowId]||0)+1,(!r||i.createdAt<r)&&(r=i.createdAt),a+=i.retryCount;let o=e.length>0?a/e.length:0;return{totalItems:e.length,byStatus:t,byFlow:n,oldestItem:r,averageRetryCount:o}})}})}const Ne=g.effect(Y,Me());var X=class e extends m.Tag(`FlowWaitUntil`)(){static optional=h.serviceOption(e)},Pe=class extends m.Tag(`FlowProvider`)(){},Fe=class extends m.Tag(`FlowServer`)(){};const Ie=e=>typeof e==`object`&&!!e&&`id`in e,Le=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function Re(t,n,r){let i=e=>{let i=t=>h.gen(function*(){let n=yield*r.get(e);n&&(yield*r.set(e,{...n,...t,updatedAt:new Date}))});return a=>h.gen(function*(){switch(t.onEvent&&(yield*h.catchAll(t.onEvent(a),e=>(h.logError(`Original onEvent failed`,e),h.succeed({eventId:null})))),yield*n.emit(e,a),h.logInfo(`Updating job ${e} with event ${a.eventType}`),a.eventType){case j.FlowStart:yield*i({status:`running`});break;case j.FlowEnd:yield*h.gen(function*(){let t=yield*r.get(e);t&&a.outputs&&(yield*r.set(e,{...t,result:a.outputs,updatedAt:new Date}))});break;case j.FlowError:yield*i({status:`failed`,error:a.error});break;case j.NodeStart:yield*h.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 j.NodePause:yield*h.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}];yield*r.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case j.NodeResume:yield*h.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 j.NodeEnd:yield*h.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=Le(c),u=n.intermediateFiles||[],d=o||s;d&&Ie(l)&&l.id?(u=u.filter(e=>e!==l.id),s&&!o&&h.logInfo(`Preserving output from node ${a.nodeId} due to keepOutput flag`)):!d&&Ie(l)&&l.id&&(u.includes(l.id)||u.push(l.id)),yield*r.set(e,{...n,tasks:i,intermediateFiles:u,updatedAt:new Date})}});break;case j.NodeError:yield*h.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=>h.gen(function*(){let n=yield*r.get(t);return n?n.status===`paused`?`paused`:n.status===`cancelled`?`cancelled`:`running`:yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))});return{...t,run:e=>h.gen(function*(){let n=e.jobId||crypto.randomUUID(),r=i(n),o=a(n);return yield*(yield*K({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=>h.gen(function*(){let n=e.jobId,r=i(n),o=a(n);return yield*(yield*K({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 ze(){return h.gen(function*(){let t=yield*Pe,n=yield*c,r=yield*l,i=yield*f,a=yield*Y.optional,o=(t,n)=>h.gen(function*(){let i=yield*r.get(t);return i?yield*r.set(t,{...i,...n}):yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),s=(e,t)=>h.gen(function*(){let n=yield*r.get(e);!n||!n.intermediateFiles||n.intermediateFiles.length===0||(yield*h.logInfo(`Cleaning up ${n.intermediateFiles.length} intermediate files for job ${e}`),yield*h.all(n.intermediateFiles.map(e=>h.gen(function*(){yield*i.delete(e,t),yield*h.logDebug(`Deleted intermediate file ${e}`)}).pipe(h.catchAll(t=>h.gen(function*(){return yield*h.logWarning(`Failed to delete intermediate file ${e}: ${t}`),h.succeed(void 0)})))),{concurrency:5}),yield*o(e,{intermediateFiles:[]}))}),u=(e,t)=>h.gen(function*(){if(_.isNone(a)){yield*h.logDebug(`[FlowServer] DLQ not configured, skipping for job: ${e}`);return}let n=a.value,i=yield*h.catchAll(r.get(e),()=>h.succeed(null));if(!i){yield*h.logWarning(`[FlowServer] Job ${e} not found when adding to DLQ`);return}yield*h.catchAll(n.add(i,t),t=>h.gen(function*(){return yield*h.logError(`[FlowServer] Failed to add job ${e} to DLQ`,t),h.succeed(void 0)})),yield*h.logInfo(`[FlowServer] Added job ${e} to Dead Letter Queue`)}),d=h.gen(function*(){let e=yield*h.currentSpan.pipe(h.option);return _.match(e,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})}),p=({jobId:t,flow:i,storageId:a,clientId:c,inputs:l})=>h.gen(function*(){return console.log(`[FlowServer] executeFlowInBackground started for job: ${t}`),yield*o(t,{status:`running`,traceContext:yield*d}),yield*h.gen(function*(){console.log(`[FlowServer] Creating flowWithEvents for job: ${t}`);let e=Re(i,n,r);console.log(`[FlowServer] Running flow for job: ${t}`);let u=yield*e.run({inputs:l,storageId:a,jobId:t,clientId:c});return console.log(`[FlowServer] Flow completed for job: ${t}, result type: ${u.type}`),u.type===`paused`?yield*o(t,{status:`paused`,pausedAt:u.nodeId,executionState:u.executionState,updatedAt:new Date}):(yield*o(t,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*s(t,c)),u}).pipe(h.withSpan(`flow-execution`,{attributes:{"flow.id":i.id,"flow.name":i.name,"flow.job_id":t,"flow.storage_id":a,"flow.node_count":i.nodes.length}}))}).pipe(h.withSpan(`flow`,{attributes:{"flow.id":i.id,"flow.name":i.name,"flow.job_id":t,"flow.storage_id":a,"flow.node_count":i.nodes.length}}),h.catchAll(a=>h.gen(function*(){yield*h.logError(`Flow execution failed`,a);let l=a instanceof e?a.body:String(a);yield*h.logInfo(`Updating job ${t} to failed status with error: ${l}`),yield*o(t,{status:`failed`,error:l,updatedAt:new Date}).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logError(`Failed to update job ${t}`,e),h.succeed(void 0)})));let d=yield*r.get(t);throw d&&(yield*n.emit(t,{jobId:t,eventType:j.FlowError,flowId:d.flowId,error:l}).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logError(`Failed to emit FlowError event for job ${t}`,e),h.succeed(void 0)})))),i.onEvent&&(yield*i.onEvent({jobId:t,eventType:j.FlowError,flowId:i.id,error:l}).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logError(`Failed to call flow.onEvent for FlowError event for job ${t}`,e),h.succeed({eventId:null})})))),yield*s(t,c).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logWarning(`Failed to cleanup intermediate files for job ${t}`,e),h.succeed(void 0)}))),yield*u(t,a instanceof e?a:new e({code:`UNKNOWN_ERROR`,status:500,body:String(a),cause:a})),a})));return{getFlow:(e,n)=>h.gen(function*(){return yield*t.getFlow(e,n)}),getFlowData:(e,n)=>h.gen(function*(){return ke(yield*t.getFlow(e,n))}),runFlow:({flowId:n,storageId:i,clientId:a,inputs:o})=>h.gen(function*(){let s=yield*X.optional,c=yield*h.try({try:()=>Et.parse({inputs:o}),catch:t=>e.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:t})}),l=crypto.randomUUID(),u=new Date,d={id:l,flowId:n,storageId:i,clientId:a,status:`started`,createdAt:u,updatedAt:u,tasks:[]};yield*r.set(l,d);let f=yield*t.getFlow(n,a);console.log(`[FlowServer] About to fork flow execution for job: ${l}`);let m=p({jobId:l,flow:f,storageId:i,clientId:a,inputs:c.inputs}).pipe(h.tapErrorCause(e=>h.logError(`Flow execution failed`,e)));if(_.isSome(s)){console.log(`[FlowServer] Using waitUntil for job: ${l}`);let e=yield*h.runtime(),t=v.runPromise(e)(m);s.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${l}`),yield*h.forkDaemon(m);return console.log(`[FlowServer] Flow execution started for job: ${l}`),d}),getJobStatus:t=>h.gen(function*(){return(yield*r.get(t))||(yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`})))}),resumeFlow:({jobId:i,nodeId:a,newData:c,clientId:l})=>h.gen(function*(){let d=yield*X.optional,f=yield*r.get(i);if(!f)return console.error(`Job not found`),yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${i} not found`}));if(f.status!==`paused`)return console.error(`Job is not paused`),yield*h.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} is not paused (status: ${f.status})`}));if(f.pausedAt!==a)return console.error(`Job is not paused at the expected node`),yield*h.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} is paused at node ${f.pausedAt}, not ${a}`}));if(!f.executionState)return console.error(`Job has no execution state`),yield*h.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} has no execution state`}));let p={...f.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[a]:c},m={...f.executionState.inputs,[a]:c};yield*o(i,{status:`running`});let g=yield*t.getFlow(f.flowId,f.clientId),y=f.traceContext?b.externalSpan({traceId:f.traceContext.traceId,spanId:f.traceContext.spanId,sampled:f.traceContext.traceFlags===1}):void 0,x=h.gen(function*(){let t=Re(g,n,r);if(!f.executionState)return yield*h.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} has no execution state`}));let a=yield*t.resume({jobId:i,storageId:f.storageId,nodeResults:p,executionState:{...f.executionState,inputs:m},clientId:f.clientId});return a.type===`paused`?yield*o(i,{status:`paused`,pausedAt:a.nodeId,executionState:a.executionState,updatedAt:new Date}):(yield*o(i,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*s(i,l)),a}).pipe(h.withSpan(`flow-execution-resume`,{attributes:{"flow.id":g.id,"flow.name":g.name,"flow.job_id":i,"flow.storage_id":f.storageId,"flow.resumed_from_node":a},parent:y})).pipe(h.catchAll(t=>h.gen(function*(){yield*h.logError(`Flow resume failed`,t);let a=t instanceof e?t.body:String(t);yield*h.logInfo(`Updating job ${i} to failed status with error: ${a}`),yield*o(i,{status:`failed`,error:a,updatedAt:new Date}).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logError(`Failed to update job ${i}`,e),h.succeed(void 0)})));let c=yield*r.get(i);throw c&&(yield*n.emit(i,{jobId:i,eventType:j.FlowError,flowId:c.flowId,error:a}).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logError(`Failed to emit FlowError event for job ${i}`,e),h.succeed(void 0)})))),yield*s(i,l).pipe(h.catchAll(e=>h.gen(function*(){return yield*h.logWarning(`Failed to cleanup intermediate files for job ${i}`,e),h.succeed(void 0)}))),yield*u(i,t instanceof e?t:new e({code:`UNKNOWN_ERROR`,status:500,body:String(t),cause:t})),t}))).pipe(h.tapErrorCause(e=>h.logError(`Flow resume failed`,e)));if(_.isSome(d)){console.log(`[FlowServer] Using waitUntil for resume job: ${i}`);let e=yield*h.runtime(),t=v.runPromise(e)(x);d.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${i}`),yield*h.forkDaemon(x);return(yield*r.get(i))||(yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${i} not found after update`})))}),pauseFlow:(t,i)=>h.gen(function*(){let a=yield*r.get(t);if(!a)return yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}));if(i!==null&&a.clientId!==i)return yield*h.fail(e.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${i} is not authorized to pause job ${t}`}));if(a.status!==`running`)return yield*h.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be paused (current status: ${a.status})`}));let s=a.tasks.find(e=>e.status===`running`)?.nodeId;return yield*o(t,{status:`paused`,pausedAt:s,updatedAt:new Date}),yield*n.emit(t,{jobId:t,flowId:a.flowId,eventType:j.FlowPause,pausedAt:s}),(yield*r.get(t))||(yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after pause`})))}),cancelFlow:(t,i)=>h.gen(function*(){let a=yield*r.get(t);return a?i!==null&&a.clientId!==i?yield*h.fail(e.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${i} is not authorized to cancel job ${t}`})):a.status!==`running`&&a.status!==`paused`&&a.status!==`started`?yield*h.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be cancelled (current status: ${a.status})`})):(yield*o(t,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*n.emit(t,{jobId:t,flowId:a.flowId,eventType:j.FlowCancel}),yield*s(t,i),(yield*r.get(t))||(yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after cancellation`})))):yield*h.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),subscribeToFlowEvents:(e,t)=>h.gen(function*(){yield*n.subscribe(e,t)}),unsubscribeFromFlowEvents:e=>h.gen(function*(){yield*n.unsubscribe(e)})}})}const Be=g.effect(Fe,ze());function Ve(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function He(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:Ve(i),extension:He(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function Ue(e,t){try{let n={};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=String(r));return S(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 Ue(n.pattern,t)||r}return r}catch{return r}}function We(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 Ge=[{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 Ke({id:e,name:t,description:n,outputTypeId:i,keepOutput:a,naming:o,nodeType:c=`transform`,nodeTypeId:l,namingVars:u,circuitBreaker:d,mode:p=`auto`,streamingConfig:m,transform:g,streamingTransform:_}){if(p===`streaming`&&!_)throw Error(`Transform node "${e}": mode is "streaming" but no streamingTransform function provided`);if(p===`buffered`&&!g)throw Error(`Transform node "${e}": mode is "buffered" but no transform function provided`);if(p===`auto`&&!g&&!_)throw Error(`Transform node "${e}": mode is "auto" but neither transform nor streamingTransform provided`);let v={...s,...m};return h.gen(function*(){let s=yield*f;return yield*I({id:e,name:t,description:n,type:F.process,outputTypeId:i,keepOutput:a,nodeTypeId:l,circuitBreaker:d,inputSchema:r,outputSchema:r,run:({data:t,storageId:n,flowId:r,jobId:i,clientId:a})=>h.gen(function*(){let l={flowId:r,nodeId:e,jobId:i},d=yield*h.gen(function*(){if(p===`buffered`)return!1;if(p===`streaming`)return!0;let e=t.size??0,r=v.fileSizeThreshold;return e>0&&e<r?(yield*h.logDebug(`File ${t.id} (${e} bytes) below threshold (${r}), using buffered mode`),!1):_?(yield*s.getCapabilities(n,a)).supportsStreamingRead?(yield*h.logDebug(`File ${t.id} qualifies for streaming mode`),!0):(yield*h.logDebug(`DataStore doesn't support streaming read, using buffered mode`),!1):(yield*h.logDebug(`No streamingTransform function, using buffered mode`),!1)}),{type:f,fileName:m,metadata:b,metadataJson:x}=R(t.metadata);if(d&&_){yield*h.logDebug(`Using streaming transform for ${t.id}`);let d=yield*_(yield*s.readStream(t.id,a,v),t),p=$(d)?d:d.stream,g=$(d)?void 0:d.type,S=$(d)?void 0:d.estimatedSize,C=$(d)?void 0:d.fileName;!C&&o&&(C=Q(t,Z(t,{flowId:r,jobId:i,nodeId:e,nodeType:c},u),o));let w=yield*s.getCapabilities(n,a),T;if(w.supportsStreamingWrite)yield*h.logDebug(`Using streaming write for ${t.id} - no intermediate buffering`),T=yield*s.uploadStream({storageId:n,uploadLengthDeferred:!0,sizeHint:S,type:g??f,fileName:C??m,lastModified:0,metadata:x,flow:l},a,p);else{yield*h.logDebug(`Falling back to buffered upload for ${t.id} (streaming write not supported)`);let e=[];yield*y.runForEach(p,t=>h.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 c=new ReadableStream({start(e){e.enqueue(i),e.close()}});T=yield*s.upload({storageId:n,size:i.byteLength,type:g??f,fileName:C??m,lastModified:0,metadata:x,flow:l},a,c)}let E=b?{...b,...g&&{mimeType:g,type:g,"content-type":g},...C&&{fileName:C,originalName:C,name:C,extension:C.split(`.`).pop()||b.extension}}:T.metadata;return L(E?{...T,metadata:E}:T)}if(!g)throw Error(`Transform node "${e}": buffered mode selected but no transform function provided`);let S=yield*g(yield*s.read(t.id,a),t),C=S instanceof Uint8Array?S:S.bytes,w=S instanceof Uint8Array?void 0:S.type,T=S instanceof Uint8Array?void 0:S.fileName;!T&&o&&(T=Q(t,Z(t,{flowId:r,jobId:i,nodeId:e,nodeType:c},u),o));let E=new ReadableStream({start(e){e.enqueue(C),e.close()}}),D=yield*s.upload({storageId:n,size:C.byteLength,type:w??f,fileName:T??m,lastModified:0,metadata:x,flow:l},a,E),O=b?{...b,...w&&{mimeType:w,type:w,"content-type":w},...T&&{fileName:T,originalName:T,name:T,extension:T.split(`.`).pop()||b.extension}}:D.metadata;return L(O?{...D,metadata:O}:D)})})})}var qe=class extends m.Tag(`CredentialProvider`)(){},Je=class extends m.Tag(`DocumentAiPlugin`)(){},Ye=class extends m.Tag(`DocumentPlugin`)(){},Xe=class extends m.Tag(`ImageAiPlugin`)(){},Ze=class extends m.Tag(`ImagePlugin`)(){};const Qe=x.object({serviceType:x.enum([`replicate`]).optional()}),$e=x.object({duration:x.number().nonnegative(),width:x.number().positive(),height:x.number().positive(),codec:x.string(),format:x.string(),bitrate:x.number().nonnegative(),frameRate:x.number().positive(),aspectRatio:x.string(),hasAudio:x.boolean(),audioCodec:x.string().optional(),audioBitrate:x.number().nonnegative().optional(),size:x.number().nonnegative()}),et=x.object({timestamp:x.number().nonnegative(),format:x.enum([`png`,`jpeg`]).optional(),quality:x.number().min(1).max(100).optional()}),tt=x.object({quality:x.number().min(0).max(100),format:x.enum([`jpeg`,`webp`,`png`,`avif`])}),nt=x.object({serviceType:x.enum([`replicate`]).optional()}),rt=x.object({width:x.number().positive().optional(),height:x.number().positive().optional(),fit:x.enum([`contain`,`cover`,`fill`])}).refine(e=>e.width||e.height,`Either width or height must be specified for resize`),it=x.object({width:x.number().positive().optional(),height:x.number().positive().optional(),aspectRatio:x.enum([`keep`,`ignore`]).optional(),scaling:x.enum([`bicubic`,`bilinear`,`lanczos`]).optional()}).refine(e=>e.width||e.height,`Either width or height must be specified for video resize`),at=x.object({format:x.enum([`mp4`,`webm`,`mov`,`avi`]),codec:x.enum([`h264`,`h265`,`vp9`,`av1`]).optional(),videoBitrate:x.string().optional(),audioBitrate:x.string().optional(),audioCodec:x.enum([`aac`,`mp3`,`opus`,`vorbis`]).optional()}),ot=x.object({type:x.literal(`resize`),width:x.number().positive().optional(),height:x.number().positive().optional(),fit:x.enum([`contain`,`cover`,`fill`])}),st=x.object({type:x.literal(`blur`),sigma:x.number().min(.3).max(1e3)}),ct=x.object({type:x.literal(`rotate`),angle:x.number(),background:x.string().optional()}),lt=x.object({type:x.literal(`flip`),direction:x.enum([`horizontal`,`vertical`])}),ut=x.object({type:x.literal(`grayscale`)}),dt=x.object({type:x.literal(`sepia`)}),ft=x.object({type:x.literal(`brightness`),value:x.number().min(-100).max(100)}),pt=x.object({type:x.literal(`contrast`),value:x.number().min(-100).max(100)}),mt=x.object({type:x.literal(`sharpen`),sigma:x.number().positive().optional()}),ht=x.object({type:x.literal(`watermark`),imagePath:x.string().min(1).url(),position:x.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),opacity:x.number().min(0).max(1),offsetX:x.number().optional(),offsetY:x.number().optional()}),gt=x.object({type:x.literal(`logo`),imagePath:x.string().min(1).url(),position:x.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),scale:x.number().min(.1).max(2),offsetX:x.number().optional(),offsetY:x.number().optional()}),_t=x.object({type:x.literal(`text`),text:x.string().min(1),position:x.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),fontSize:x.number().positive(),color:x.string().min(1),fontFamily:x.string().optional(),offsetX:x.number().optional(),offsetY:x.number().optional()}),vt=x.discriminatedUnion(`type`,[ot,st,ct,lt,ut,dt,ft,pt,mt,ht,gt,_t]),yt=x.object({transformations:x.array(vt).min(1)}),bt=x.object({startTime:x.number().nonnegative(),endTime:x.number().positive().optional(),duration:x.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 xt=class extends m.Tag(`VideoPlugin`)(){},St=class extends m.Tag(`VirusScanPlugin`)(){},Ct=class extends m.Tag(`ZipPlugin`)(){};const wt=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>x.union([e,t]),n)};function Tt(t){return h.gen(function*(){let n=Object.entries(t.nodes),r=e=>h.isEffect(e)?e:h.succeed(e),i=yield*h.forEach(n,([t,n])=>h.flatMap(r(n),n=>n.id===t?h.succeed([t,n]):h.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===F.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)).map(([,e])=>e.outputSchema),d=t.inputSchema??wt(s,x.unknown()),f=t.outputSchema??wt(u,x.unknown());return yield*K({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 Et=x.object({inputs:x.record(x.string(),x.any())});export{Ae as $,Xe as A,I as At,Ue as B,k as Bt,rt as C,pe as Ct,$e as D,L as Dt,et as E,R as Et,Ge as F,M as Ft,ze as G,O as Gt,Pe as H,D as Ht,Q as I,N as It,Me as J,Be as K,C as Kt,Z as L,te as Lt,Je as M,ne as Mt,qe as N,P as Nt,Qe as O,ae as Ot,Ke as P,re as Pt,je as Q,Ve as R,j as Rt,it as S,me as St,tt as T,de as Tt,Fe as U,T as Ut,We as V,ee as Vt,X as W,E as Wt,q as X,Ne as Y,J as Z,_t as _,H as _t,xt as a,Ce as at,ht as b,U as bt,ft as c,Ee as ct,ut as d,ye as dt,K as et,gt as f,ve as ft,mt as g,ge as gt,dt as h,De as ht,St as i,Se as it,Ye as j,ie as jt,Ze as k,F as kt,pt as l,be as lt,ct as m,Oe as mt,Tt as n,W as nt,bt as o,xe as ot,ot as p,_e as pt,Y as q,Ct as r,G as rt,st as s,we as st,Et as t,ke as tt,lt as u,Te as ut,yt as v,V as vt,nt as w,z as wt,at as x,he as xt,vt as y,B as yt,He as z,A as zt};
|
|
2
|
+
//# sourceMappingURL=flow-_OmguvZm.mjs.map
|