@uploadista/core 1.0.0-beta.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/flow/index.cjs +1 -1
- package/dist/flow/index.d.cts +1 -1
- package/dist/flow/index.d.mts +1 -1
- package/dist/flow/index.mjs +1 -1
- package/dist/flow-BAYnF4vh.cjs +1 -0
- package/dist/{flow-Ag6JbNS6.mjs → flow-BLK5x1LF.mjs} +2 -2
- package/dist/{flow-Ag6JbNS6.mjs.map → flow-BLK5x1LF.mjs.map} +1 -1
- package/dist/index-Ce8IxXxR.d.mts.map +1 -1
- package/dist/{index-Cwin1ALJ.d.cts → index-Dl4AtGUF.d.cts} +84 -84
- package/dist/index-Dl4AtGUF.d.cts.map +1 -0
- package/dist/{index-CTpuhufX.d.mts → index-_IkOrjon.d.mts} +84 -84
- package/dist/index-_IkOrjon.d.mts.map +1 -0
- package/dist/index-_Q4OxX9Y.d.cts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/testing/index.cjs +1 -1
- package/dist/testing/index.d.cts +1 -1
- package/dist/testing/index.d.mts +1 -1
- package/dist/testing/index.mjs +1 -1
- package/package.json +3 -3
- package/src/flow/flow-engine.ts +12 -8
- package/src/flow/flow-queue-store.ts +12 -6
- package/src/flow/flow-queue.ts +86 -90
- package/src/flow/flow.ts +7 -8
- package/src/flow/index.ts +3 -2
- package/src/flow/types/flow-queue-item.ts +5 -1
- package/src/flow/types/flow-types.ts +1 -1
- package/src/flow/types/type-utils.ts +2 -5
- package/dist/flow-DA_u2lYT.cjs +0 -1
- package/dist/index-CTpuhufX.d.mts.map +0 -1
- package/dist/index-Cwin1ALJ.d.cts.map +0 -1
package/src/flow/flow-queue.ts
CHANGED
|
@@ -32,13 +32,27 @@
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
-
import {
|
|
35
|
+
import {
|
|
36
|
+
Context,
|
|
37
|
+
Duration,
|
|
38
|
+
Effect,
|
|
39
|
+
Layer,
|
|
40
|
+
Option,
|
|
41
|
+
Ref,
|
|
42
|
+
Schedule,
|
|
43
|
+
} from "effect";
|
|
36
44
|
import { UploadistaError } from "../errors";
|
|
37
45
|
import { FlowQueueKVStore, flowQueueKvStore } from "../types/kv-store";
|
|
38
46
|
import { DeadLetterQueueService } from "./dead-letter-queue";
|
|
39
|
-
import type { DeadLetterItem } from "./types/dead-letter-item";
|
|
40
|
-
import { MemoryFlowQueueStore, type FlowQueueStore } from "./flow-queue-store";
|
|
41
47
|
import type { FlowEngineShape } from "./flow-engine";
|
|
48
|
+
// Import the FlowEngine tag lazily to avoid circular module graph issues.
|
|
49
|
+
// flow-engine.ts will import FlowQueueService for the optional check,
|
|
50
|
+
// and flow-queue.ts needs FlowEngine to dispatch items. We break the cycle
|
|
51
|
+
// by importing only the *class* (tag) from flow-engine at call time inside
|
|
52
|
+
// the Effect generator, where module evaluation is already complete.
|
|
53
|
+
import { FlowEngine } from "./flow-engine";
|
|
54
|
+
import { type FlowQueueStore, MemoryFlowQueueStore } from "./flow-queue-store";
|
|
55
|
+
import type { DeadLetterItem } from "./types/dead-letter-item";
|
|
42
56
|
import type { FlowJob } from "./types/flow-job";
|
|
43
57
|
import {
|
|
44
58
|
DEFAULT_QUEUE_CONFIG,
|
|
@@ -47,13 +61,6 @@ import {
|
|
|
47
61
|
type FlowQueueStats,
|
|
48
62
|
} from "./types/flow-queue-item";
|
|
49
63
|
|
|
50
|
-
// Import the FlowEngine tag lazily to avoid circular module graph issues.
|
|
51
|
-
// flow-engine.ts will import FlowQueueService for the optional check,
|
|
52
|
-
// and flow-queue.ts needs FlowEngine to dispatch items. We break the cycle
|
|
53
|
-
// by importing only the *class* (tag) from flow-engine at call time inside
|
|
54
|
-
// the Effect generator, where module evaluation is already complete.
|
|
55
|
-
import { FlowEngine } from "./flow-engine";
|
|
56
|
-
|
|
57
64
|
/**
|
|
58
65
|
* Context marker that signals the current Effect is running inside the
|
|
59
66
|
* FlowQueueService worker dispatch loop.
|
|
@@ -143,8 +150,7 @@ function makeKvStoreFlowQueueStore(
|
|
|
143
150
|
});
|
|
144
151
|
|
|
145
152
|
return {
|
|
146
|
-
createItem: (item) =>
|
|
147
|
-
kv.set(item.id, item).pipe(Effect.map(() => item)),
|
|
153
|
+
createItem: (item) => kv.set(item.id, item).pipe(Effect.map(() => item)),
|
|
148
154
|
|
|
149
155
|
getItem: (id) =>
|
|
150
156
|
kv.get(id).pipe(
|
|
@@ -173,14 +179,10 @@ function makeKvStoreFlowQueueStore(
|
|
|
173
179
|
const keys = yield* kv.list();
|
|
174
180
|
const items: FlowQueueItem[] = [];
|
|
175
181
|
for (const key of keys) {
|
|
176
|
-
const item = yield* kv
|
|
177
|
-
.
|
|
178
|
-
.
|
|
179
|
-
|
|
180
|
-
Effect.catchAll(() =>
|
|
181
|
-
Effect.succeed(null as FlowQueueItem | null),
|
|
182
|
-
),
|
|
183
|
-
);
|
|
182
|
+
const item = yield* kv.get(key).pipe(
|
|
183
|
+
Effect.map((i) => parseDates(i) as FlowQueueItem | null),
|
|
184
|
+
Effect.catchAll(() => Effect.succeed(null as FlowQueueItem | null)),
|
|
185
|
+
);
|
|
184
186
|
if (item && item.status === status) items.push(item);
|
|
185
187
|
}
|
|
186
188
|
if (status === "pending") {
|
|
@@ -291,7 +293,11 @@ export class FlowQueueService extends Context.Tag("FlowQueueService")<
|
|
|
291
293
|
*/
|
|
292
294
|
static fromBaseKvStore(
|
|
293
295
|
config: FlowQueueConfig = {},
|
|
294
|
-
): Layer.Layer<
|
|
296
|
+
): Layer.Layer<
|
|
297
|
+
FlowQueueService,
|
|
298
|
+
never,
|
|
299
|
+
FlowEngine | import("../types/kv-store").BaseKvStoreService
|
|
300
|
+
> {
|
|
295
301
|
return FlowQueueService.fromKvStore(config).pipe(
|
|
296
302
|
Layer.provide(flowQueueKvStore),
|
|
297
303
|
);
|
|
@@ -369,72 +375,72 @@ function createFlowQueueService(
|
|
|
369
375
|
).pipe(Effect.provideService(FlowQueueDispatchMarker, true));
|
|
370
376
|
|
|
371
377
|
const execute = runFlowEffect.pipe(
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
378
|
+
Effect.andThen(() =>
|
|
379
|
+
Effect.gen(function* () {
|
|
380
|
+
// Mark as completed
|
|
381
|
+
yield* Effect.catchAll(
|
|
382
|
+
store.updateItem(item.id, {
|
|
383
|
+
status: "completed",
|
|
384
|
+
completedAt: new Date(),
|
|
385
|
+
}),
|
|
386
|
+
(err) =>
|
|
387
|
+
Effect.logError(
|
|
388
|
+
"FlowQueue: failed to mark item completed",
|
|
389
|
+
err,
|
|
390
|
+
),
|
|
391
|
+
);
|
|
392
|
+
|
|
393
|
+
// DLQ correlation — success
|
|
394
|
+
if (item.dlqItemId && Option.isSome(dlqOption)) {
|
|
375
395
|
yield* Effect.catchAll(
|
|
376
|
-
|
|
377
|
-
status: "completed",
|
|
378
|
-
completedAt: new Date(),
|
|
379
|
-
}),
|
|
396
|
+
dlqOption.value.markResolved(item.dlqItemId),
|
|
380
397
|
(err) =>
|
|
381
398
|
Effect.logError(
|
|
382
|
-
"FlowQueue: failed to mark item
|
|
399
|
+
"FlowQueue: failed to mark DLQ item resolved",
|
|
383
400
|
err,
|
|
384
401
|
),
|
|
385
402
|
);
|
|
403
|
+
}
|
|
404
|
+
}),
|
|
405
|
+
),
|
|
406
|
+
Effect.catchAll((err) =>
|
|
407
|
+
Effect.gen(function* () {
|
|
408
|
+
const errorMsg =
|
|
409
|
+
err instanceof UploadistaError ? err.body : String(err);
|
|
410
|
+
|
|
411
|
+
// Mark as failed
|
|
412
|
+
yield* Effect.catchAll(
|
|
413
|
+
store.updateItem(item.id, {
|
|
414
|
+
status: "failed",
|
|
415
|
+
completedAt: new Date(),
|
|
416
|
+
error: errorMsg,
|
|
417
|
+
}),
|
|
418
|
+
(storeErr) =>
|
|
419
|
+
Effect.logError(
|
|
420
|
+
"FlowQueue: failed to mark item failed",
|
|
421
|
+
storeErr,
|
|
422
|
+
),
|
|
423
|
+
);
|
|
386
424
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
dlqOption.value.markResolved(item.dlqItemId),
|
|
391
|
-
(err) =>
|
|
392
|
-
Effect.logError(
|
|
393
|
-
"FlowQueue: failed to mark DLQ item resolved",
|
|
394
|
-
err,
|
|
395
|
-
),
|
|
396
|
-
);
|
|
397
|
-
}
|
|
398
|
-
}),
|
|
399
|
-
),
|
|
400
|
-
Effect.catchAll((err) =>
|
|
401
|
-
Effect.gen(function* () {
|
|
402
|
-
const errorMsg =
|
|
403
|
-
err instanceof UploadistaError ? err.body : String(err);
|
|
404
|
-
|
|
405
|
-
// Mark as failed
|
|
425
|
+
// DLQ correlation — failure
|
|
426
|
+
if (item.dlqItemId && Option.isSome(dlqOption)) {
|
|
427
|
+
const durationMs = Date.now() - startedAt;
|
|
406
428
|
yield* Effect.catchAll(
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
(
|
|
429
|
+
dlqOption.value.recordRetryFailure(
|
|
430
|
+
item.dlqItemId,
|
|
431
|
+
errorMsg,
|
|
432
|
+
durationMs,
|
|
433
|
+
),
|
|
434
|
+
(dlqErr) =>
|
|
413
435
|
Effect.logError(
|
|
414
|
-
"FlowQueue: failed to
|
|
415
|
-
|
|
436
|
+
"FlowQueue: failed to record DLQ retry failure",
|
|
437
|
+
dlqErr,
|
|
416
438
|
),
|
|
417
439
|
);
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
yield* Effect.catchAll(
|
|
423
|
-
dlqOption.value.recordRetryFailure(
|
|
424
|
-
item.dlqItemId,
|
|
425
|
-
errorMsg,
|
|
426
|
-
durationMs,
|
|
427
|
-
),
|
|
428
|
-
(dlqErr) =>
|
|
429
|
-
Effect.logError(
|
|
430
|
-
"FlowQueue: failed to record DLQ retry failure",
|
|
431
|
-
dlqErr,
|
|
432
|
-
),
|
|
433
|
-
);
|
|
434
|
-
}
|
|
435
|
-
}),
|
|
436
|
-
),
|
|
437
|
-
);
|
|
440
|
+
}
|
|
441
|
+
}),
|
|
442
|
+
),
|
|
443
|
+
);
|
|
438
444
|
|
|
439
445
|
// Always decrement concurrency, even on unexpected failures
|
|
440
446
|
const release = Ref.update(concurrencyRef, (n) => Math.max(0, n - 1));
|
|
@@ -502,13 +508,8 @@ function createFlowQueueService(
|
|
|
502
508
|
|
|
503
509
|
for (const dlqItem of items) {
|
|
504
510
|
// Mark as retrying before enqueuing to prevent duplicate dispatch
|
|
505
|
-
yield* Effect.catchAll(
|
|
506
|
-
|
|
507
|
-
(err) =>
|
|
508
|
-
Effect.logError(
|
|
509
|
-
"FlowQueue: failed to mark DLQ item retrying",
|
|
510
|
-
err,
|
|
511
|
-
),
|
|
511
|
+
yield* Effect.catchAll(dlq.markRetrying(dlqItem.id), (err) =>
|
|
512
|
+
Effect.logError("FlowQueue: failed to mark DLQ item retrying", err),
|
|
512
513
|
);
|
|
513
514
|
|
|
514
515
|
// Create queue item for the retry
|
|
@@ -523,13 +524,8 @@ function createFlowQueueService(
|
|
|
523
524
|
enqueuedAt: new Date(),
|
|
524
525
|
};
|
|
525
526
|
|
|
526
|
-
yield* Effect.catchAll(
|
|
527
|
-
|
|
528
|
-
(err) =>
|
|
529
|
-
Effect.logError(
|
|
530
|
-
"FlowQueue: failed to enqueue DLQ retry item",
|
|
531
|
-
err,
|
|
532
|
-
),
|
|
527
|
+
yield* Effect.catchAll(store.createItem(queueItem), (err) =>
|
|
528
|
+
Effect.logError("FlowQueue: failed to enqueue DLQ retry item", err),
|
|
533
529
|
);
|
|
534
530
|
}
|
|
535
531
|
});
|
package/src/flow/flow.ts
CHANGED
|
@@ -585,14 +585,13 @@ export function createFlowWithSchema<
|
|
|
585
585
|
}
|
|
586
586
|
}
|
|
587
587
|
|
|
588
|
-
const decision =
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
: "execute";
|
|
588
|
+
const decision = hasValidInput
|
|
589
|
+
? "execute"
|
|
590
|
+
: (hasConditionalSkip || hasSkippedSource) && !hasPendingDependency
|
|
591
|
+
? "skip"
|
|
592
|
+
: hasPendingDependency
|
|
593
|
+
? "wait"
|
|
594
|
+
: "execute";
|
|
596
595
|
|
|
597
596
|
return decision;
|
|
598
597
|
};
|
package/src/flow/index.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type { Flow, FlowData } from "./flow";
|
|
|
12
12
|
// Type registries (separate registries for input and output types)
|
|
13
13
|
export * from "./input-type-registry";
|
|
14
14
|
export * from "./output-type-registry";
|
|
15
|
+
|
|
15
16
|
// Built-in node types (auto-registers on import)
|
|
16
17
|
import "./node-types";
|
|
17
18
|
|
|
@@ -20,11 +21,11 @@ export type { StreamingConfig } from "../types/data-store";
|
|
|
20
21
|
export { DEFAULT_STREAMING_CONFIG } from "../types/data-store";
|
|
21
22
|
export * from "./dead-letter-queue";
|
|
22
23
|
export * from "./flow";
|
|
23
|
-
export * from "./flow-queue";
|
|
24
|
-
export * from "./flow-queue-store";
|
|
25
24
|
// Core flow engine
|
|
26
25
|
export { createFlowWithSchema } from "./flow";
|
|
27
26
|
export * from "./flow-engine";
|
|
27
|
+
export * from "./flow-queue";
|
|
28
|
+
export * from "./flow-queue-store";
|
|
28
29
|
export * from "./node";
|
|
29
30
|
// Node types and interfaces
|
|
30
31
|
export { createFlowNode, NodeType } from "./node";
|
|
@@ -18,7 +18,11 @@
|
|
|
18
18
|
* - `completed`: Flow execution finished successfully
|
|
19
19
|
* - `failed`: Flow execution ended with an error
|
|
20
20
|
*/
|
|
21
|
-
export type FlowQueueItemStatus =
|
|
21
|
+
export type FlowQueueItemStatus =
|
|
22
|
+
| "pending"
|
|
23
|
+
| "running"
|
|
24
|
+
| "completed"
|
|
25
|
+
| "failed";
|
|
22
26
|
|
|
23
27
|
/**
|
|
24
28
|
* Represents a single queued flow execution request.
|
|
@@ -933,6 +933,6 @@ export type FileNamingConfig = {
|
|
|
933
933
|
autoSuffix?: AutoNamingSuffixGenerator;
|
|
934
934
|
};
|
|
935
935
|
|
|
936
|
+
export type { FlowEvent, FlowEventFlowEnd, FlowEventFlowStart };
|
|
936
937
|
// Re-export existing types for compatibility
|
|
937
938
|
export { NodeType };
|
|
938
|
-
export type { FlowEvent, FlowEventFlowEnd, FlowEventFlowStart };
|
|
@@ -34,11 +34,8 @@ import type { Effect, Layer } from "effect";
|
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
36
|
|
|
37
|
-
export type ExtractLayerService<
|
|
38
|
-
T,
|
|
39
|
-
TError = never,
|
|
40
|
-
TRequirements = never,
|
|
41
|
-
> = T extends Layer.Layer<infer S, TError, TRequirements> ? S : never;
|
|
37
|
+
export type ExtractLayerService<T, TError = never, TRequirements = never> =
|
|
38
|
+
T extends Layer.Layer<infer S, TError, TRequirements> ? S : never;
|
|
42
39
|
|
|
43
40
|
/**
|
|
44
41
|
* Extracts all service types from a tuple of layers and returns them as a union.
|
package/dist/flow-DA_u2lYT.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./uploadista-error-C6mqvnK_.cjs");require("./errors/index.cjs");const t=require("./types/index.cjs"),n=require("./upload-DiHATxK7.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(e){let n=e=>`${s}${e}`,i=i=>r.Effect.gen(function*(){let r=n(i),a=yield*e.get(r);if(a===null)return null;try{return t.jsonSerializer.deserialize(a)}catch{return yield*e.delete(r),null}}),a=(r,i)=>{let a=n(r),o=t.jsonSerializer.serialize(i);return e.set(a,o)};return{getState:i,setState:a,incrementFailures:(e,n)=>r.Effect.gen(function*(){let r=Date.now(),o=yield*i(e);return o===null&&(o=t.createInitialCircuitBreakerState({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(e,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 t=new Map;if(!e.list)return t;let n=yield*e.list(s),r=Date.now();for(let e of n){let n=e,a=yield*i(n);if(a!==null){let e=r-a.lastStateChange;t.set(n,{nodeType:n,state:a.state,failureCount:a.failureCount,halfOpenSuccesses:a.halfOpenSuccesses,timeSinceLastStateChange:e,timeUntilHalfOpen:a.state===`open`?Math.max(0,a.config.resetTimeout-e):void 0})}}return t}),delete:t=>e.delete(n(t))}}function l(){let e=new Map;return{getState:t=>r.Effect.succeed(e.get(t)??null),setState:(t,n)=>r.Effect.sync(()=>{e.set(t,n)}),incrementFailures:(n,i)=>r.Effect.sync(()=>{let r=Date.now(),a=e.get(n);return a===void 0&&(a=t.createInitialCircuitBreakerState({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:i})),a=r-a.windowStart>i?{...a,failureCount:1,windowStart:r}:{...a,failureCount:a.failureCount+1},e.set(n,a),a.failureCount}),resetFailures:t=>r.Effect.sync(()=>{let n=e.get(t);n!==void 0&&e.set(t,{...n,failureCount:0,windowStart:Date.now()})}),incrementHalfOpenSuccesses:t=>r.Effect.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:()=>r.Effect.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=>r.Effect.sync(()=>{e.delete(t)})}}const u=r.Layer.effect(t.CircuitBreakerStoreService,r.Effect.gen(function*(){return c(yield*t.BaseKvStoreService)})),d=r.Layer.succeed(t.CircuitBreakerStoreService,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 e=this;return r.Effect.gen(function*(){if(!e.config.enabled)return{allowed:!0,state:`closed`,failureCount:0};let n=yield*e.store.getState(e.nodeType),r=Date.now();if(n===null&&(n=t.createInitialCircuitBreakerState({failureThreshold:e.config.failureThreshold,resetTimeout:e.config.resetTimeout,halfOpenRequests:e.config.halfOpenRequests,windowDuration:e.config.windowDuration}),yield*e.store.setState(e.nodeType,n)),n.state===`open`&&r-n.lastStateChange>=e.config.resetTimeout){let t=n.state;n={...n,state:`half-open`,halfOpenSuccesses:0,lastStateChange:r},yield*e.store.setState(e.nodeType,n),yield*e.emitEvent(t,`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 e=this;return r.Effect.gen(function*(){let n=(yield*e.store.getState(e.nodeType))?.state??`closed`;yield*e.store.setState(e.nodeType,t.createInitialCircuitBreakerState({failureThreshold:e.config.failureThreshold,resetTimeout:e.config.resetTimeout,halfOpenRequests:e.config.halfOpenRequests,windowDuration:e.config.windowDuration})),n!==`closed`&&(yield*e.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{store;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(t){if(this.types.has(t.id))throw e.n.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.n.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.n.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 _=new g;function v(e,t){return _.validate(e,t)}var y=class{types;constructor(){this.types=new Map}register(t){if(this.types.has(t.id))throw e.n.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.n.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.n.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 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:t,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*e.n.fromCode(`INVALID_INPUT_TYPE`,{body:`Input type "${m}" is not registered in inputTypeRegistry`,details:{inputTypeId:m,nodeId:t}}).toEffect():h&&!b.get(h)?yield*e.n.fromCode(`INVALID_OUTPUT_TYPE`,{body:`Output type "${h}" is not registered in outputTypeRegistry`,details:{outputTypeId:h,nodeId:t}}).toEffect():{id:t,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 e.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${t}) 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:t}:{type:`complete`,data:yield*r.Effect.try({try:()=>s.parse(f.data),catch:r=>{let i=r instanceof Error?r.message:String(r);return e.n.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${t}) output validation failed: ${i}`,cause:r})}}),nodeType:h,nodeId:t}}),condition:l,multiInput:u,multiOutput:d,retry:p,circuitBreaker:v,nodeTypeId:y}})}const w=e=>({id:e.id,name:e.name,description:e.description,type:e.type,inputTypeId:e.inputTypeId,outputTypeId:e.outputTypeId,nodeTypeId:e.nodeTypeId}),T=e=>t=>t.nodeType===e,E=T(`storage-output-v1`),D=T(`streaming-input-v1`),O=e=>({type:`complete`,data:e}),k=e=>({type:`waiting`,partialData:e}),ee=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var te=class{typeChecker;constructor(e=ee){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 A(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 j=i.z.object({operation:i.z.literal(`init`),storageId:i.z.string(),metadata:i.z.record(i.z.string(),i.z.any()).optional()}),M=i.z.object({operation:i.z.literal(`finalize`),uploadId:i.z.string()}),N=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()}),P=i.z.union([j,M,N]),ne=i.z.object({allowedMimeTypes:i.z.array(i.z.string()).optional(),minSize:i.z.number().positive().optional(),maxSize:i.z.number().positive().optional()});function re(t,n){return r.Effect.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.n.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.n.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.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${t.size} bytes) exceeds maximum (${n.maxSize} bytes)`)}).toEffect()}})}function ie(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:`input`,nodeTypeId:`input`,inputSchema:P,outputSchema:t.uploadFileSchema,keepOutput:s,inputTypeId:R,outputTypeId:F,run:({data:t,flowId:s,jobId:c,clientId:l})=>r.Effect.gen(function*(){switch(t.operation){case`init`:{let e={storageId:t.storageId,size:t.metadata?.size||0,type:t.metadata?.mimeType||`application/octet-stream`,fileName:t.metadata?.originalName,lastModified:t.metadata?.size?Date.now():void 0,metadata:t.metadata?JSON.stringify(t.metadata):void 0,flow:{flowId:s,nodeId:i,jobId:c}};return k(yield*o.createUpload(e,l))}case`finalize`:{let e=yield*o.getUpload(t.uploadId),{type:n}=A(e.metadata);return yield*re({type:n,size:e.size||0},a),O(e)}case`url`:{let e=yield*n.o(t.url),r=yield*n.a(e),u=t.metadata?.mimeType||e.headers.get(`content-type`)||`application/octet-stream`,d=t.metadata?.size||Number(e.headers.get(`content-length`)||0),f=t.metadata?.originalName||t.url.split(`/`).pop()||`file`;yield*re({type:u,size:d},a);let p=new ReadableStream({start(e){e.enqueue(new Uint8Array(r)),e.close()}}),m={storageId:t.storageId||`buffer`,size:d,type:u,fileName:f,lastModified:Date.now(),metadata:t.metadata?JSON.stringify(t.metadata):void 0};return O({...yield*o.upload(m,l,p),flow:{flowId:s,nodeId:i,jobId:c}})}default:throw yield*e.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`,ae=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()}),oe=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:P,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),b.register({id:F,schema:t.uploadFileSchema,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),b.register({id:I,schema:ae,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),b.register({id:L,schema:oe,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});const z={enabled:!0,maxRetries:3,backoff:{type:`exponential`,initialDelayMs:1e3,maxDelayMs:3e5,multiplier:2,jitter:!0},ttlMs:6048e5};function B(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 se(e,t){return!t.enabled||t.nonRetryableErrors?.includes(e)?!1:t.retryableErrors&&t.retryableErrors.length>0?t.retryableErrors.includes(e):!0}function ce(e,t){if(!(t===void 0||t<=0))return new Date(e.getTime()+t)}var V=class e extends r.Context.Tag(`DeadLetterQueueService`)(){static optional=r.Effect.serviceOption(e)};function le(){return r.Effect.gen(function*(){let e=yield*t.DeadLetterQueueKVStore,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(!e.list)return[];let t=yield*e.list(),n=[];for(let a of t){let t=yield*r.Effect.catchAll(e.get(a),()=>r.Effect.succeed(null));t&&n.push(i(t))}return n});return{add:(t,i,a=z)=>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=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=se(s.code,a),d;if(a.enabled&&u&&a.maxRetries>0){let e=B(a.backoff,0);d=new Date(o.getTime()+e)}let f={id:r,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:a.maxRetries,nextRetryAt:d,retryHistory:[],createdAt:o,updatedAt:o,expiresAt:ce(o,a.ttlMs),status:u&&a.enabled?`pending`:`exhausted`};return yield*e.set(r,f),f}),get:t=>r.Effect.gen(function*(){return i(yield*e.get(t))}),getOption:t=>r.Effect.gen(function*(){let n=yield*r.Effect.either(e.get(t));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:t=>e.delete(t),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:(t,n)=>r.Effect.gen(function*(){let r={...i(yield*e.get(t)),...n,updatedAt:new Date};return yield*e.set(t,r),r}),markRetrying:t=>r.Effect.gen(function*(){let n={...i(yield*e.get(t)),status:`retrying`,updatedAt:new Date};return yield*e.set(t,n),n}),recordRetryFailure:(t,n,a)=>r.Effect.gen(function*(){let r=i(yield*e.get(t)),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=B(z.backoff,s);u=new Date(o.getTime()+e)}let d={...r,retryCount:s,retryHistory:c,status:l,nextRetryAt:u,updatedAt:o};return yield*e.set(t,d),d}),markResolved:t=>r.Effect.gen(function*(){let n={...i(yield*e.get(t)),status:`resolved`,nextRetryAt:void 0,updatedAt:new Date};return yield*e.set(t,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:(t={})=>r.Effect.gen(function*(){let n=yield*a(),{olderThan:i,status:o}=t,s=new Date,c=0;for(let t of n){let n=!1;t.expiresAt&&t.expiresAt<=s&&(n=!0),i&&t.createdAt<=i&&(o?n=t.status===o:(t.status===`exhausted`||t.status===`resolved`)&&(n=!0)),n&&(yield*r.Effect.catchAll(e.delete(t.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 ue=r.Layer.effect(V,le());var de=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 H(e){return t=>{if(t.nodeType!==e)return!1;let n=b.get(e);return n?n.schema.safeParse(t.data).success:!1}}function U(e){return!e||typeof e!=`object`?!1:t.uploadFileSchema.safeParse(e).success}const fe=H(`storage-output-v1`),pe=H(I),me=H(L);function W(e,t){return e.filter(t)}function he(t,n){return r.Effect.gen(function*(){let r=W(t,n);return r.length===0?yield*e.n.fromCode(`OUTPUT_NOT_FOUND`,{body:`No output of the specified type was found in the flow results`}).toEffect():r.length>1?yield*e.n.fromCode(`MULTIPLE_OUTPUTS_FOUND`,{body:`Found ${r.length} outputs of the specified type, expected exactly one`,details:{foundCount:r.length,nodeIds:r.map(e=>e.nodeId)}}).toEffect():r[0]})}function ge(e,t){return W(e,t)[0]}function _e(e,t){return e.find(e=>e.nodeId===t)}function ve(e,t){return e.some(t)}function ye(e){return e.operation===`init`}function be(e){return e.operation===`finalize`}function xe(e){return e.operation===`url`}function Se(e){return e.operation===`init`||e.operation===`url`}const Ce=e=>({id:e.id,name:e.name,nodes:e.nodes.map(w),edges:e.edges});function G(n){return r.Effect.gen(function*(){let a=yield*r.Effect.all(n.nodes.map(e=>r.Effect.isEffect(e)?e:r.Effect.succeed(e))),{flowId:o,name:s,onEvent:c,checkJobStatus:l,edges:u,inputSchema:d,outputSchema:f,typeChecker:m,circuitBreaker:h}=n,g=a,_=new te(m),v=e=>{let t=e.circuitBreaker,n=e.nodeTypeId?h?.nodeTypeOverrides?.[e.nodeTypeId]:void 0,r=h?.defaults;if(!(!t&&!n&&!r))return{...r,...n,...t}},y=()=>{let e={},t={},n={};return g.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}},b=new Map;u.forEach(e=>{let t=b.get(e.target)||[];t.push({source:e.source,sourcePort:e.sourcePort,targetPort:e.targetPort}),b.set(e.target,t)});let x=new Map,S=()=>{let{graph:e,inDegree:t}=y(),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},C=(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)},w=(e,t)=>{let n=b.get(e)||[],r={};return n.forEach(e=>{let n=e.source,i=t.get(n);if(i!==void 0){if(g.find(e=>e.id===n)?.type===`conditional`&&e.sourcePort){let t=x.get(n)?`true`:`false`;if(e.sourcePort!==t)return}r[n]=i}}),r},T=(e,t,n)=>{let r=b.get(e)||[];if(g.find(t=>t.id===e)?.type===`input`||r.length===0)return`execute`;let i=!1,a=!1,o=!1,s=!1;for(let e of r){let r=e.source;if(n.has(r)){a=!0;continue}if(t.get(r)===void 0){s=!0;continue}if(g.find(e=>e.id===r)?.type===`conditional`&&e.sourcePort){let t=x.get(r);if(t===void 0){s=!0;continue}let n=t?`true`:`false`;e.sourcePort===n?o=!0:i=!0}else o=!0}return o?`execute`:(i||a)&&!s?`skip`:s?`wait`:`execute`},E=e=>{let t=g.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},D=e=>!u.some(t=>t.source===e),O=e=>{let t=g.find(t=>t.id===e);return D(e)||t?.keepOutput===!0},k=e=>{let t=g.filter(e=>O(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},ee=(e,t)=>{let n=g.filter(e=>O(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=(e,n,i)=>r.Effect.gen(function*(){if(e.storage.id===n)return e;let a=yield*t.UploadFileDataStores,o=yield*a.getDataStore(e.storage.id,i),s=yield*a.getDataStore(n,i),c=yield*o.read(e.id),l=r.Stream.make(c),u={...e,storage:{id:n,type:e.storage.type}},d=yield*s.create(u);return yield*s.write({file_id:d.id,stream:l,offset:0},{}),d}),j=(t,i,a,s,u,d,f,p)=>r.Effect.gen(function*(){let m=u.get(t);if(!m)return yield*e.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(l){let t=yield*l(d);if(t===`paused`)return yield*e.n.fromCode(`FLOW_PAUSED`,{cause:`Flow ${o} was paused by user at job ${d}`}).toEffect();if(t===`cancelled`)return yield*e.n.fromCode(`FLOW_CANCELLED`,{cause:`Flow ${o} was cancelled by user at job ${d}`}).toEffect()}c&&(yield*c({jobId:d,flowId:o,nodeId:t,eventType:`node-start`,nodeName:m.name,nodeType:m.type}));let h=m.retry?.maxRetries??0,g=m.retry?.retryDelay??1e3,_=m.retry?.exponentialBackoff??!0,y=v(m),b=y?.enabled&&m.nodeTypeId&&p?p.getOrCreate(m.nodeTypeId,y):null;if(b){let{allowed:n,state:i,failureCount:s}=yield*b.allowRequest();if(!n){let n=b.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:t,eventType:`node-end`,nodeName:m.name})),{nodeId:t,result:a[t],success:!0,waiting:!1}):n.type==="default"?(c&&(yield*c({jobId:d,flowId:o,nodeId:t,eventType:`node-end`,nodeName:m.name,result:n.value})),{nodeId:t,result:n.value,success:!0,waiting:!1}):yield*e.n.fromCode(`CIRCUIT_BREAKER_OPEN`,{body:`Circuit breaker is open for node type "${m.name}"`,details:{nodeType:m.name,nodeId:t,state:i,failureCount:s}}).toEffect()}}let S=0,T=null;for(;S<=h;)try{let l,u={};if(m.type===`input`){if(l=a[t],l===void 0)return yield*r.Effect.logError(`Input node ${t} has no input data`),yield*e.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Input node ${t} has no input data`)}).toEffect()}else{if(u=w(t,s),Object.keys(u).length===0)return yield*r.Effect.logError(`Node ${t} has no input data`),yield*e.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${t} has no input data`)}).toEffect();if(m.multiInput)l=u;else{let n=Object.keys(u)[0];if(!n)return yield*e.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${t} has no input data`)}).toEffect();l=u[n]}}if(m.type===`conditional`){let e=yield*C(m,l);x.set(t,e)}let p=yield*m.run({data:l,inputs:u,jobId:d,flowId:o,storageId:i,clientId:f});if(p.type===`waiting`){let e=p.partialData;return c&&(yield*c({jobId:d,flowId:o,nodeId:t,eventType:`node-pause`,nodeName:m.name,partialData:e})),{nodeId:t,result:e,success:!0,waiting:!0,nodeType:p.nodeType}}let h=p.data;if(O(t)&&(U(h)&&h.storage.id!==i&&(yield*r.Effect.logDebug(`Auto-persisting output node ${t} output from ${h.storage.id} to ${i}`),h=yield*A(h,i,f)),n.hooks?.onNodeOutput)){yield*r.Effect.logDebug(`Calling onNodeOutput hook for sink node ${t}`);let e=n.hooks.onNodeOutput({output:h,nodeId:t,flowId:o,jobId:d,storageId:i,clientId:f});h=yield*r.Effect.isEffect(e)?e:r.Effect.promise(()=>e)}return b&&(yield*b.recordSuccess()),c&&(yield*c({jobId:d,flowId:o,nodeId:t,eventType:`node-end`,nodeName:m.name,result:h})),{nodeId:t,result:h,success:!0,waiting:!1,nodeType:p.nodeType}}catch(n){if(T=n instanceof e.n?n:e.n.fromCode(`FLOW_NODE_ERROR`,{cause:n}),b&&(yield*b.recordFailure(T.body)),S<h){S++;let e=_?g*2**(S-1):g;yield*r.Effect.logWarning(`Node ${t} (${m.name}) failed, retrying (${S}/${h}) after ${e}ms`),yield*r.Effect.sleep(e);continue}return c&&(yield*c({jobId:d,flowId:o,nodeId:t,eventType:`node-error`,nodeName:m.name,error:T.body,retryCount:S})),yield*T.toEffect()}return T?yield*T.toEffect():yield*e.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Unexpected error in retry loop`)}).toEffect()}).pipe((()=>{let e=u.get(t),n=e?.nodeTypeId??e?.type??`unknown`;return r.Effect.withSpan(`node-${n}`,{attributes:{"node.id":t,"node.type":e?.type??`unknown`,"node.type_id":e?.nodeTypeId??`unknown`,"node.name":e?.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 h=yield*r.Effect.serviceOption(t.CircuitBreakerStoreService),_=h._tag===`Some`?new p(h.value):null;!d&&c&&(yield*c({jobId:l,eventType:`flow-start`,flowId:o}));let v=E(a||{}),y,b,x;d?(y=d.executionOrder,b=d.nodeResults,x=d.currentIndex):(y=S(),b=new Map,x=0);let C=new Map;if(y.length!==g.length)return yield*e.n.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let w=new Map(g.map(e=>[e.id,e])),D=new Set;if(n.parallelExecution?.enabled??!1){yield*r.Effect.logDebug(`Flow ${o}: Executing in parallel mode (maxConcurrency: ${n.parallelExecution?.maxConcurrency??4})`);let e=new de({maxConcurrency:n.parallelExecution?.maxConcurrency??4}),t=e.groupNodesByExecutionLevel(g,u);yield*r.Effect.logDebug(`Flow ${o}: Grouped nodes into ${t.length} execution levels`);let i={};g.forEach(e=>{i[e.id]=[]}),u.forEach(e=>{i[e.target]?.push(e.source)});for(let n of t){yield*r.Effect.logDebug(`Flow ${o}: Executing level ${n.level} with nodes: ${n.nodes.join(`, `)}`);let t=[],i=[];for(let e of n.nodes)T(e,b,D)===`skip`?(i.push(e),D.add(e)):t.push(e);if(i.length>0&&(yield*r.Effect.logDebug(`Flow ${o}: Skipping nodes due to conditional routing: ${i.join(`, `)}`)),t.length===0){yield*r.Effect.logDebug(`Flow ${o}: All nodes in level ${n.level} skipped due to conditional routing`);continue}let a=t.map(e=>()=>r.Effect.gen(function*(){if(d&&e===d.executionOrder[x]&&c){let t=w.get(e);t&&(yield*c({jobId:l,flowId:o,nodeId:e,eventType:`node-resume`,nodeName:t.name,nodeType:t.type}))}return{nodeId:e,nodeResult:yield*j(e,s,v,b,w,l,m,_)}})),u=yield*e.executeNodesInParallel(a);for(let{nodeId:e,nodeResult:t}of u){if(t.waiting)return t.result!==void 0&&(b.set(e,t.result),t.nodeType&&C.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:y,currentIndex:y.indexOf(e),inputs:v}};t.success&&(b.set(e,t.result),t.nodeType&&C.set(e,t.nodeType))}}}else{yield*r.Effect.logDebug(`Flow ${o}: Executing in sequential mode`);for(let t=x;t<y.length;t++){let n=y[t];if(!n)return yield*e.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(T(n,b,D)===`skip`){yield*r.Effect.logDebug(`Flow ${o}: Skipping node ${n} due to conditional routing`),D.add(n);continue}if(d&&t===x&&c){let e=w.get(n);e&&(yield*c({jobId:l,flowId:o,nodeId:n,eventType:`node-resume`,nodeName:e.name,nodeType:e.type}))}let i=yield*j(n,s,v,b,w,l,m,_);if(i.waiting)return i.result!==void 0&&(b.set(i.nodeId,i.result),i.nodeType&&C.set(i.nodeId,i.nodeType)),{type:`paused`,nodeId:i.nodeId,executionState:{executionOrder:y,currentIndex:t,inputs:v}};i.success&&(b.set(i.nodeId,i.result),i.nodeType&&C.set(i.nodeId,i.nodeType))}}let te=k(b),A=ee(b,C),M=i.z.record(i.z.string(),f).safeParse(te);if(!M.success){let t=`Flow output validation failed: ${M.error.message}. Expected outputs: ${JSON.stringify(Object.keys(k(b)))}. Output nodes (sinks + keepOutput): ${g.filter(e=>O(e.id)).map(e=>e.id).join(`, `)}`;return c&&(yield*c({jobId:l,eventType:`flow-error`,flowId:o,error:t})),yield*e.n.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:t,cause:M.error}).toEffect()}let N=M.data;return c&&(yield*c({jobId:l,eventType:`flow-end`,flowId:o,outputs:A,result:N})),{type:`completed`,result:N,outputs:A}});return{id:o,name:s,nodes:g,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=g;return _.validateFlow(e,u)},validateInputs:e=>_.validateData(e,d),validateOutputs:e=>_.validateData(e,f)}})}var we=class{items=new Map;createItem(e){return r.Effect.sync(()=>(this.items.set(e.id,{...e}),e))}getItem(e){return r.Effect.sync(()=>this.items.get(e)??null)}updateItem(t,n){let i=this;return r.Effect.suspend(()=>{let a=i.items.get(t);if(!a)return r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{body:`Queue item ${t} not found`}));let o={...a,...n};return i.items.set(t,o),r.Effect.succeed(o)})}listByStatus(e){return r.Effect.sync(()=>{let t=[];for(let n of this.items.values())n.status===e&&t.push({...n});return e===`pending`&&t.sort((e,t)=>e.enqueuedAt.getTime()-t.enqueuedAt.getTime()),t})}deleteItem(e){return r.Effect.sync(()=>{this.items.delete(e)})}};const Te={maxConcurrency:4,dlqRetryIntervalMs:3e4,dlqRetryBatchSize:10};var K=class e extends r.Context.Tag(`FlowWaitUntil`)(){static optional=r.Effect.serviceOption(e)},Ee=class e extends r.Context.Tag(`FlowLifecycleHook`)(){static optional=r.Effect.serviceOption(e)},De=class extends r.Context.Tag(`FlowProvider`)(){},q=class extends r.Context.Tag(`FlowEngine`)(){};const J=e=>typeof e==`object`&&!!e&&`id`in e,Oe=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function Y(t,n,i){let a=e=>{let a=t=>r.Effect.gen(function*(){let n=yield*i.get(e);n&&(yield*i.set(e,{...n,...t,updatedAt:new Date}))});return o=>r.Effect.gen(function*(){switch(t.onEvent&&(yield*r.Effect.catchAll(t.onEvent(o),e=>(r.Effect.logError(`Original onEvent failed`,e),r.Effect.succeed({eventId:null})))),yield*n.emit(e,o),r.Effect.logInfo(`Updating job ${e} with event ${o.eventType}`),o.eventType){case`flow-start`:yield*a({status:`running`});break;case`flow-end`:yield*r.Effect.gen(function*(){let t=yield*i.get(e);t&&o.outputs&&(yield*i.set(e,{...t,result:o.outputs,updatedAt:new Date}))});break;case`flow-error`:yield*a({status:`failed`,error:o.error});break;case`node-start`:yield*r.Effect.gen(function*(){let t=yield*i.get(e);if(t){let n=t.tasks.find(e=>e.nodeId===o.nodeId)?t.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`running`,updatedAt:new Date}:e):[...t.tasks,{nodeId:o.nodeId,status:`running`,createdAt:new Date,updatedAt:new Date}];yield*i.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case`node-pause`:yield*r.Effect.gen(function*(){let t=yield*i.get(e);if(t){let n=t.tasks.find(e=>e.nodeId===o.nodeId)?t.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`paused`,result:o.partialData,updatedAt:new Date}:e):[...t.tasks,{nodeId:o.nodeId,status:`paused`,result:o.partialData,createdAt:new Date,updatedAt:new Date}],r=o.partialData?.id,a=r?[...t.activeUploads||[],r]:t.activeUploads;yield*i.set(e,{...t,tasks:n,activeUploads:a,updatedAt:new Date})}});break;case`node-resume`:yield*r.Effect.gen(function*(){let t=yield*i.get(e);if(t){let n=t.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`running`,updatedAt:new Date}:e);yield*i.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case`node-end`:yield*r.Effect.gen(function*(){let n=yield*i.get(e);if(n){let a=n.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`completed`,result:o.result,updatedAt:new Date}:e),s=!t.edges.some(e=>e.source===o.nodeId),c=t.nodes.find(e=>e.id===o.nodeId)?.keepOutput===!0,l=o.result,u=Oe(l),d=n.intermediateFiles||[],f=s||c;f&&J(u)&&u.id?(d=d.filter(e=>e!==u.id),c&&!s&&r.Effect.logInfo(`Preserving output from node ${o.nodeId} due to keepOutput flag`)):!f&&J(u)&&u.id&&(d.includes(u.id)||d.push(u.id));let p=n.activeUploads||[];J(u)&&u.id&&(p=p.filter(e=>e!==u.id)),yield*i.set(e,{...n,tasks:a,intermediateFiles:d,activeUploads:p,updatedAt:new Date})}});break;case`node-error`:yield*r.Effect.gen(function*(){let t=yield*i.get(e);if(t){let n=t.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`failed`,error:o.error,retryCount:o.retryCount,updatedAt:new Date}:e);yield*i.set(e,{...t,tasks:n,error:o.error,updatedAt:new Date})}});break}return{eventId:e}})},o=t=>t=>r.Effect.gen(function*(){let n=yield*i.get(t);return n?n.status===`paused`?`paused`:n.status===`cancelled`?`cancelled`:`running`:yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))});return{...t,run:e=>r.Effect.gen(function*(){let n=e.jobId||crypto.randomUUID(),r=a(n),i=o(n);return yield*(yield*G({flowId:t.id,name:t.name,nodes:t.nodes,edges:t.edges,inputSchema:t.inputSchema,outputSchema:t.outputSchema,onEvent:r,checkJobStatus:i})).run({...e,jobId:n,clientId:e.clientId})}),resume:e=>r.Effect.gen(function*(){let n=e.jobId,r=a(n),i=o(n);return yield*(yield*G({flowId:t.id,name:t.name,nodes:t.nodes,edges:t.edges,inputSchema:t.inputSchema,outputSchema:t.outputSchema,onEvent:r,checkJobStatus:i})).resume(e)})}}function ke(){return r.Effect.gen(function*(){let i=yield*De,a=yield*t.FlowEventEmitter,o=yield*t.FlowJobKVStore,s=yield*n.n,c=yield*V.optional,l=yield*Ee.optional,u=(t,n)=>r.Effect.gen(function*(){let i=yield*o.get(t);return i?yield*o.set(t,{...i,...n}):yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),d=(e,t)=>r.Effect.gen(function*(){let n=yield*o.get(e);!n||!n.intermediateFiles||n.intermediateFiles.length===0||(yield*r.Effect.logInfo(`Cleaning up ${n.intermediateFiles.length} intermediate files for job ${e}`),yield*r.Effect.all(n.intermediateFiles.map(e=>r.Effect.gen(function*(){yield*s.delete(e,t),yield*r.Effect.logDebug(`Deleted intermediate file ${e}`)}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to delete intermediate file ${e}: ${t}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(e,{intermediateFiles:[]}))}),f=(e,t)=>r.Effect.gen(function*(){if(r.Option.isNone(c)){yield*r.Effect.logDebug(`[FlowServer] DLQ not configured, skipping for job: ${e}`);return}let n=c.value,i=yield*r.Effect.catchAll(o.get(e),()=>r.Effect.succeed(null));if(!i){yield*r.Effect.logWarning(`[FlowServer] Job ${e} not found when adding to DLQ`);return}yield*r.Effect.catchAll(n.add(i,t),t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`[FlowServer] Failed to add job ${e} to DLQ`,t),r.Effect.succeed(void 0)})),yield*r.Effect.logInfo(`[FlowServer] Added job ${e} to Dead Letter Queue`)}),p=e=>r.Option.isSome(l)?l.value.onComplete(e).pipe(r.Effect.catchAll(e=>r.Effect.logWarning(`FlowLifecycleHook.onComplete failed: ${e}`))):r.Effect.void,m=r.Effect.gen(function*(){let e=yield*r.Effect.currentSpan.pipe(r.Effect.option);return r.Option.match(e,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:+!!e.sampled})})}),h=({jobId:t,flow:n,storageId:i,clientId:c,inputs:l})=>r.Effect.gen(function*(){return console.log(`[FlowServer] executeFlowInBackground started for job: ${t}`),yield*u(t,{status:`running`,traceContext:yield*m}),yield*r.Effect.gen(function*(){console.log(`[FlowServer] Creating flowWithEvents for job: ${t}`);let e=Y(n,a,o);console.log(`[FlowServer] Running flow for job: ${t}`);let r=yield*e.run({inputs:l,storageId:i,jobId:t,clientId:c});return console.log(`[FlowServer] Flow completed for job: ${t}, result type: ${r.type}`),r.type===`paused`?yield*u(t,{status:`paused`,pausedAt:r.nodeId,executionState:r.executionState,updatedAt:new Date}):(yield*u(t,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*d(t,c),yield*p({jobId:t,flowId:n.id,clientId:c,status:`completed`})),r}).pipe(r.Effect.withSpan(`flow-execution`,{attributes:{"flow.id":n.id,"flow.name":n.name,"flow.job_id":t,"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":t,"flow.storage_id":i,"flow.node_count":n.nodes.length}}),r.Effect.catchAll(i=>r.Effect.gen(function*(){yield*r.Effect.logError(`Flow execution failed`,i);let l=i instanceof e.n?i.body:String(i);yield*r.Effect.logInfo(`Updating job ${t} to failed status with error: ${l}`),yield*u(t,{status:`failed`,error:l,updatedAt:new Date}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to update job ${t}`,e),r.Effect.succeed(void 0)})));let m=yield*o.get(t);throw m&&(yield*a.emit(t,{jobId:t,eventType:`flow-error`,flowId:m.flowId,error:l}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to emit FlowError event for job ${t}`,e),r.Effect.succeed(void 0)})))),n.onEvent&&(yield*n.onEvent({jobId:t,eventType:`flow-error`,flowId:n.id,error:l}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to call flow.onEvent for FlowError event for job ${t}`,e),r.Effect.succeed({eventId:null})})))),yield*d(t,c).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup intermediate files for job ${t}`,e),r.Effect.succeed(void 0)}))),yield*r.Effect.gen(function*(){let e=yield*o.get(t);e&&e.activeUploads&&e.activeUploads.length>0&&(yield*r.Effect.logInfo(`Cleaning up ${e.activeUploads.length} active uploads for failed job ${t}`),yield*r.Effect.all(e.activeUploads.map(e=>r.Effect.gen(function*(){yield*s.delete(e,c),yield*r.Effect.logDebug(`Aborted active upload ${e} for failed job ${t}`)}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to abort active upload ${e}: ${t}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(t,{activeUploads:[]}))}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup active uploads for job ${t}`,e),r.Effect.succeed(void 0)}))),yield*f(t,i instanceof e.n?i:new e.n({code:`UNKNOWN_ERROR`,status:500,body:String(i),cause:i})),yield*p({jobId:t,flowId:n.id,clientId:c,status:`failed`}),i})));return{getFlow:(e,t)=>r.Effect.gen(function*(){return yield*i.getFlow(e,t)}),getFlowData:(e,t)=>r.Effect.gen(function*(){return Ce(yield*i.getFlow(e,t))}),runFlow:({flowId:t,storageId:n,clientId:a,inputs:s,jobId:c})=>r.Effect.gen(function*(){let l=yield*r.Effect.serviceOption(X),u=yield*Me.optional;if(r.Option.isSome(u)&&r.Option.isNone(l)){let e=yield*u.value.enqueue({flowId:t,storageId:n,input:s,clientId:a}),r=e.enqueuedAt,i={id:e.id,flowId:t,storageId:n,clientId:a,status:`pending`,tasks:[],createdAt:r,updatedAt:r};return yield*o.set(e.id,i),i}let d=yield*K.optional,f=yield*r.Effect.try({try:()=>yt.parse({inputs:s}),catch:t=>e.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:t})}),p=c??crypto.randomUUID(),m=new Date,g={id:p,flowId:t,storageId:n,clientId:a,status:`started`,createdAt:m,updatedAt:m,tasks:[]};yield*o.set(p,g);let _=yield*i.getFlow(t,a);console.log(`[FlowServer] About to fork flow execution for job: ${p}`);let v=h({jobId:p,flow:_,storageId:n,clientId:a,inputs:f.inputs}).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow execution failed`,e)));if(r.Option.isSome(d)){console.log(`[FlowServer] Using waitUntil for job: ${p}`);let e=yield*r.Effect.runtime(),t=r.Runtime.runPromise(e)(v);d.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${p}`),yield*r.Effect.forkDaemon(v);return console.log(`[FlowServer] Flow execution started for job: ${p}`),g}),getJobStatus:t=>r.Effect.gen(function*(){return(yield*o.get(t))||(yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`})))}),resumeFlow:({jobId:t,nodeId:n,newData:c,clientId:l})=>r.Effect.gen(function*(){let m=yield*K.optional,h=yield*o.get(t);if(!h)return console.error(`Job not found`),yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}));if(h.status!==`paused`)return console.error(`Job is not paused`),yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} is not paused (status: ${h.status})`}));if(h.pausedAt!==n)return console.error(`Job is not paused at the expected node`),yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} is paused at node ${h.pausedAt}, not ${n}`}));if(!h.executionState)return console.error(`Job has no execution state`),yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} has no execution state`}));let g={...h.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[n]:c},_={...h.executionState.inputs,[n]:c};yield*u(t,{status:`running`});let v=yield*i.getFlow(h.flowId,h.clientId),y=h.traceContext?r.Tracer.externalSpan({traceId:h.traceContext.traceId,spanId:h.traceContext.spanId,sampled:h.traceContext.traceFlags===1}):void 0,b=r.Effect.gen(function*(){let n=Y(v,a,o);if(!h.executionState)return yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} has no execution state`}));let i=yield*n.resume({jobId:t,storageId:h.storageId,nodeResults:g,executionState:{...h.executionState,inputs:_},clientId:h.clientId});return i.type===`paused`?yield*u(t,{status:`paused`,pausedAt:i.nodeId,executionState:i.executionState,updatedAt:new Date}):(yield*u(t,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*d(t,l),yield*p({jobId:t,flowId:v.id,clientId:h.clientId,status:`completed`})),i}).pipe(r.Effect.withSpan(`flow-execution-resume`,{attributes:{"flow.id":v.id,"flow.name":v.name,"flow.job_id":t,"flow.storage_id":h.storageId,"flow.resumed_from_node":n},parent:y})).pipe(r.Effect.catchAll(n=>r.Effect.gen(function*(){yield*r.Effect.logError(`Flow resume failed`,n);let i=n instanceof e.n?n.body:String(n);yield*r.Effect.logInfo(`Updating job ${t} to failed status with error: ${i}`),yield*u(t,{status:`failed`,error:i,updatedAt:new Date}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to update job ${t}`,e),r.Effect.succeed(void 0)})));let c=yield*o.get(t);throw c&&(yield*a.emit(t,{jobId:t,eventType:`flow-error`,flowId:c.flowId,error:i}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to emit FlowError event for job ${t}`,e),r.Effect.succeed(void 0)})))),yield*d(t,l).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup intermediate files for job ${t}`,e),r.Effect.succeed(void 0)}))),yield*r.Effect.gen(function*(){let e=yield*o.get(t);e&&e.activeUploads&&e.activeUploads.length>0&&(yield*r.Effect.logInfo(`Cleaning up ${e.activeUploads.length} active uploads for failed job ${t}`),yield*r.Effect.all(e.activeUploads.map(e=>r.Effect.gen(function*(){yield*s.delete(e,l),yield*r.Effect.logDebug(`Aborted active upload ${e} for failed job ${t}`)}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to abort active upload ${e}: ${t}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(t,{activeUploads:[]}))}).pipe(r.Effect.catchAll(e=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup active uploads for job ${t}`,e),r.Effect.succeed(void 0)}))),yield*f(t,n instanceof e.n?n:new e.n({code:`UNKNOWN_ERROR`,status:500,body:String(n),cause:n})),yield*p({jobId:t,flowId:v.id,clientId:h.clientId,status:`failed`}),n}))).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow resume failed`,e)));if(r.Option.isSome(m)){console.log(`[FlowServer] Using waitUntil for resume job: ${t}`);let e=yield*r.Effect.runtime(),n=r.Runtime.runPromise(e)(b);m.value(n)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${t}`),yield*r.Effect.forkDaemon(b);return(yield*o.get(t))||(yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after update`})))}),pauseFlow:(t,n)=>r.Effect.gen(function*(){let i=yield*o.get(t);if(!i)return yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}));if(n!==null&&i.clientId!==n)return yield*r.Effect.fail(e.n.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to pause job ${t}`}));if(i.status!==`running`)return yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be paused (current status: ${i.status})`}));let s=i.tasks.find(e=>e.status===`running`)?.nodeId;return yield*u(t,{status:`paused`,pausedAt:s,updatedAt:new Date}),yield*a.emit(t,{jobId:t,flowId:i.flowId,eventType:`flow-pause`,pausedAt:s}),(yield*o.get(t))||(yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after pause`})))}),cancelFlow:(t,n)=>r.Effect.gen(function*(){let i=yield*o.get(t);return i?n!==null&&i.clientId!==n?yield*r.Effect.fail(e.n.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to cancel job ${t}`})):i.status!==`running`&&i.status!==`paused`&&i.status!==`started`?yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be cancelled (current status: ${i.status})`})):(yield*u(t,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*a.emit(t,{jobId:t,flowId:i.flowId,eventType:`flow-cancel`}),i.activeUploads&&i.activeUploads.length>0&&(yield*r.Effect.logInfo(`Cleaning up ${i.activeUploads.length} active uploads for job ${t}`),yield*r.Effect.all(i.activeUploads.map(e=>r.Effect.gen(function*(){yield*s.delete(e,n),yield*r.Effect.logDebug(`Aborted active upload ${e} for job ${t}`)}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to abort active upload ${e}: ${t}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*u(t,{activeUploads:[]})),yield*d(t,n),(yield*o.get(t))||(yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after cancellation`})))):yield*r.Effect.fail(e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),subscribeToFlowEvents:(e,t)=>r.Effect.gen(function*(){yield*a.subscribe(e,t)}),unsubscribeFromFlowEvents:e=>r.Effect.gen(function*(){yield*a.unsubscribe(e)})}})}const Ae=r.Layer.effect(q,ke());var X=class extends r.Context.Tag(`FlowQueueDispatchMarker`)(){};function je(t){let n=e=>({...e,enqueuedAt:new Date(e.enqueuedAt),startedAt:e.startedAt?new Date(e.startedAt):void 0,completedAt:e.completedAt?new Date(e.completedAt):void 0});return{createItem:e=>t.set(e.id,e).pipe(r.Effect.map(()=>e)),getItem:e=>t.get(e).pipe(r.Effect.map(e=>n(e)),r.Effect.catchAll(()=>r.Effect.succeed(null))),updateItem:(i,a)=>r.Effect.gen(function*(){let o={...yield*t.get(i).pipe(r.Effect.map(n),r.Effect.mapError(()=>e.n.fromCode(`FLOW_JOB_NOT_FOUND`,{body:`Queue item ${i} not found`}))),...a};return yield*t.set(i,o),o}),listByStatus:e=>r.Effect.gen(function*(){if(!t.list)return[];let i=yield*t.list(),a=[];for(let o of i){let i=yield*t.get(o).pipe(r.Effect.map(e=>n(e)),r.Effect.catchAll(()=>r.Effect.succeed(null)));i&&i.status===e&&a.push(i)}return e===`pending`&&a.sort((e,t)=>e.enqueuedAt.getTime()-t.enqueuedAt.getTime()),a}),deleteItem:e=>t.delete(e)}}var Me=class e extends r.Context.Tag(`FlowQueueService`)(){static optional=r.Effect.serviceOption(e);static Default(t){return e.make(t??{},new we)}static make(t,n){return r.Layer.effect(e,Ne(t,n))}static fromKvStore(n={}){return r.Layer.effect(e,r.Effect.gen(function*(){return yield*Ne(n,je(yield*t.FlowQueueKVStore))}))}static fromBaseKvStore(n={}){return e.fromKvStore(n).pipe(r.Layer.provide(t.flowQueueKvStore))}};function Ne(t,n){return r.Effect.gen(function*(){let{maxConcurrency:i,dlqRetryIntervalMs:a,dlqRetryBatchSize:o}={...Te,...t},s=yield*r.Ref.make(0),c=yield*q,l=yield*V.optional,u=()=>`q_${crypto.randomUUID()}`,d=t=>{let i=Date.now(),a=r.Effect.gen(function*(){yield*r.Effect.catchAll(n.updateItem(t.id,{status:`running`,startedAt:new Date}),e=>r.Effect.logError(`FlowQueue: failed to mark item running`,e)),yield*r.Ref.update(s,e=>e+1)}),o=c.runFlow({flowId:t.flowId,storageId:t.storageId,clientId:t.clientId,inputs:t.input,jobId:t.id}).pipe(r.Effect.provideService(X,!0)).pipe(r.Effect.andThen(()=>r.Effect.gen(function*(){yield*r.Effect.catchAll(n.updateItem(t.id,{status:`completed`,completedAt:new Date}),e=>r.Effect.logError(`FlowQueue: failed to mark item completed`,e)),t.dlqItemId&&r.Option.isSome(l)&&(yield*r.Effect.catchAll(l.value.markResolved(t.dlqItemId),e=>r.Effect.logError(`FlowQueue: failed to mark DLQ item resolved`,e)))})),r.Effect.catchAll(a=>r.Effect.gen(function*(){let o=a instanceof e.n?a.body:String(a);if(yield*r.Effect.catchAll(n.updateItem(t.id,{status:`failed`,completedAt:new Date,error:o}),e=>r.Effect.logError(`FlowQueue: failed to mark item failed`,e)),t.dlqItemId&&r.Option.isSome(l)){let e=Date.now()-i;yield*r.Effect.catchAll(l.value.recordRetryFailure(t.dlqItemId,o,e),e=>r.Effect.logError(`FlowQueue: failed to record DLQ retry failure`,e))}}))),u=r.Ref.update(s,e=>Math.max(0,e-1));return a.pipe(r.Effect.andThen(()=>o.pipe(r.Effect.ensuring(u))),r.Effect.catchAllCause(e=>r.Effect.logError(`FlowQueue: unexpected error in dispatchItem`,e)))},f=r.Effect.gen(function*(){let e=i-(yield*r.Ref.get(s));if(e<=0)return;let t=(yield*r.Effect.catchAll(n.listByStatus(`pending`),()=>r.Effect.succeed([]))).slice(0,e);for(let e of t)yield*r.Effect.forkDaemon(d(e))});if(yield*r.Effect.forkDaemon(f.pipe(r.Effect.repeat(r.Schedule.spaced(r.Duration.millis(500))),r.Effect.catchAllCause(e=>r.Effect.logError(`FlowQueue: worker loop crashed`,e)))),r.Option.isSome(l)){let e=l.value,t=r.Effect.gen(function*(){let t=yield*r.Effect.catchAll(e.getScheduledRetries(o),e=>r.Effect.logError(`FlowQueue: failed to fetch DLQ scheduled retries`,e).pipe(r.Effect.as([])));for(let i of t){yield*r.Effect.catchAll(e.markRetrying(i.id),e=>r.Effect.logError(`FlowQueue: failed to mark DLQ item retrying`,e));let t={id:u(),flowId:i.flowId,storageId:i.storageId,input:i.inputs,clientId:i.clientId,status:`pending`,dlqItemId:i.id,enqueuedAt:new Date};yield*r.Effect.catchAll(n.createItem(t),e=>r.Effect.logError(`FlowQueue: failed to enqueue DLQ retry item`,e))}});yield*r.Effect.forkDaemon(r.Effect.sleep(r.Duration.millis(a)).pipe(r.Effect.andThen(t.pipe(r.Effect.repeat(r.Schedule.spaced(r.Duration.millis(a))))),r.Effect.catchAllCause(e=>r.Effect.logError(`FlowQueue: DLQ retry loop crashed`,e))))}return{enqueue:({flowId:e,storageId:t,input:i,clientId:a,dlqItemId:o})=>r.Effect.gen(function*(){let r={id:u(),flowId:e,storageId:t,input:i,clientId:a,status:`pending`,dlqItemId:o,enqueuedAt:new Date};return yield*n.createItem(r)}),getStatus:t=>r.Effect.gen(function*(){return(yield*n.getItem(t))||(yield*r.Effect.fail(e.n.fromCode(`QUEUE_ITEM_NOT_FOUND`)))}),cancel:t=>r.Effect.gen(function*(){let i=yield*n.getItem(t);if(!i)return yield*r.Effect.fail(e.n.fromCode(`QUEUE_ITEM_NOT_FOUND`));if(i.status===`running`)return yield*r.Effect.fail(e.n.fromCode(`QUEUE_ITEM_ALREADY_RUNNING`));i.status===`pending`&&(yield*n.deleteItem(t))}),list:e=>r.Effect.gen(function*(){if(e?.status)return yield*n.listByStatus(e.status);let[t,i,a,o]=yield*r.Effect.all([n.listByStatus(`pending`),n.listByStatus(`running`),n.listByStatus(`completed`),n.listByStatus(`failed`)]);return[...t,...i,...a,...o]}),getStats:()=>r.Effect.gen(function*(){let[e,t,a,o]=yield*r.Effect.all([n.listByStatus(`pending`),n.listByStatus(`running`),n.listByStatus(`completed`),n.listByStatus(`failed`)]),c=yield*r.Ref.get(s);return{pending:e.length,running:t.length,completed:a.length,failed:o.length,maxConcurrency:i,currentConcurrency:c}})}})}function Pe(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function Fe(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?``:e.substring(t+1)}function Z(e,t,n){let r=e.metadata??{},i=r.fileName??r.originalName??r.name??`unnamed`;return{baseName:Pe(i),extension:Fe(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function Ie(e,t){try{let n={};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=String(r));return(0,a.render)(e,n)}catch{return e}}function Q(e,t,n){let r=t.fileName;if(!n)return r;try{if(n.mode===`auto`){if(n.autoSuffix){let e=n.autoSuffix(t);if(e){let{baseName:n,extension:r}=t;return r?`${n}-${e}.${r}`:`${n}-${e}`}}return r}if(n.mode===`custom`){if(n.rename)return n.rename(e,t)||r;if(n.pattern)return Ie(n.pattern,t)||r}return r}catch{return r}}function Le(e){if(!e||e.trim()===``)return{isValid:!1,error:`Pattern cannot be empty`};let t=(e.match(/\{\{/g)||[]).length,n=(e.match(/\}\}/g)||[]).length;if(t!==n)return{isValid:!1,error:`Unbalanced braces: ${t} opening, ${n} closing`};let r=e.match(/\{\{[^}]*[^a-zA-Z0-9_}][^}]*\}\}/g);return r?{isValid:!1,error:`Invalid variable syntax: ${r[0]}`}:{isValid:!0}}const Re=[{name:`baseName`,description:`Filename without extension`,example:`photo`},{name:`extension`,description:`File extension without dot`,example:`jpg`},{name:`fileName`,description:`Full original filename`,example:`photo.jpg`},{name:`nodeType`,description:`Type of processing node`,example:`resize`},{name:`nodeId`,description:`Specific node instance ID`,example:`resize-1`},{name:`flowId`,description:`Flow identifier`,example:`flow-abc`},{name:`jobId`,description:`Execution job ID`,example:`job-123`},{name:`timestamp`,description:`ISO 8601 processing time`,example:`2024-01-15T10:30:00Z`},{name:`width`,description:`Output width (image/video)`,example:`800`},{name:`height`,description:`Output height (image/video)`,example:`600`},{name:`format`,description:`Output format`,example:`webp`},{name:`quality`,description:`Quality setting`,example:`80`},{name:`pageNumber`,description:`Page number (documents)`,example:`1`}];function $(e){return!(`stream`in e)}function ze({id:e,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 "${e}": mode is "streaming" but no streamingTransform function provided`);if(p===`buffered`&&!h)throw Error(`Transform node "${e}": mode is "buffered" but no transform function provided`);if(p===`auto`&&!h&&!g)throw Error(`Transform node "${e}": mode is "auto" but neither transform nor streamingTransform provided`);let _={...t.DEFAULT_STREAMING_CONFIG,...m};return r.Effect.gen(function*(){let m=yield*n.n;return yield*C({id:e,name:i,description:a,type:`process`,outputTypeId:o,keepOutput:s,nodeTypeId:u,circuitBreaker:f,inputSchema:t.uploadFileSchema,outputSchema:t.uploadFileSchema,run:({data:t,storageId:n,flowId:i,jobId:a,clientId:o})=>r.Effect.gen(function*(){let s={flowId:i,nodeId:e,jobId:a},u=yield*r.Effect.gen(function*(){if(p===`buffered`)return!1;if(p===`streaming`)return!0;let e=t.size??0,i=_.fileSizeThreshold;return e>0&&e<i?(yield*r.Effect.logDebug(`File ${t.id} (${e} bytes) below threshold (${i}), using buffered mode`),!1):g?(yield*m.getCapabilities(n,o)).supportsStreamingRead?(yield*r.Effect.logDebug(`File ${t.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}=A(t.metadata);if(u&&g){yield*r.Effect.logDebug(`Using streaming transform for ${t.id}`);let u=yield*g(yield*m.readStream(t.id,o,_),t),p=$(u)?u:u.stream,h=$(u)?void 0:u.type,x=$(u)?void 0:u.estimatedSize,S=$(u)?void 0:u.fileName;!S&&c&&(S=Q(t,Z(t,{flowId:i,jobId:a,nodeId:e,nodeType:l},d),c));let C=yield*m.getCapabilities(n,o),w;if(C.supportsStreamingWrite)yield*r.Effect.logDebug(`Using streaming write for ${t.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 ${t.id} (streaming write not supported)`);let e=[];yield*r.Stream.runForEach(p,t=>r.Effect.sync(()=>{e.push(t)}));let i=e.reduce((e,t)=>e+t.byteLength,0),a=new Uint8Array(i),c=0;for(let t of e)a.set(t,c),c+=t.byteLength;let l=new ReadableStream({start(e){e.enqueue(a),e.close()}});w=yield*m.upload({storageId:n,size:a.byteLength,type:h??f,fileName:S??v,lastModified:0,metadata:b,flow:s},o,l)}let T=y?{...y,...h&&{mimeType:h,type:h,"content-type":h},...S&&{fileName:S,originalName:S,name:S,extension:S.split(`.`).pop()||y.extension}}:w.metadata;return O(T?{...w,metadata:T}:w)}if(!h)throw Error(`Transform node "${e}": buffered mode selected but no transform function provided`);let x=yield*h(yield*m.read(t.id,o),t),S=x instanceof Uint8Array?x:x.bytes,C=x instanceof Uint8Array?void 0:x.type,w=x instanceof Uint8Array?void 0:x.fileName,T=x instanceof Uint8Array?void 0:x.metadata;!w&&c&&(w=Q(t,Z(t,{flowId:i,jobId:a,nodeId:e,nodeType:l},d),c));let E=new ReadableStream({start(e){e.enqueue(S),e.close()}}),D=yield*m.upload({storageId:n,size:S.byteLength,type:C??f,fileName:w??v,lastModified:0,metadata:b,flow:s},o,E),k=y?{...y,...T,...C&&{mimeType:C,type:C,"content-type":C},...w&&{fileName:w,originalName:w,name:w,extension:w.split(`.`).pop()||y.extension}}:D.metadata;return O(k?{...D,metadata:k}:D)})})})}var Be=class extends r.Context.Tag(`CredentialProvider`)(){},Ve=class extends r.Context.Tag(`DocumentAiPlugin`)(){},He=class extends r.Context.Tag(`DocumentPlugin`)(){},Ue=class extends r.Context.Tag(`ImageAiPlugin`)(){},We=class extends r.Context.Tag(`ImagePlugin`)(){};const Ge=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),Ke=i.z.object({duration:i.z.number().nonnegative(),width:i.z.number().positive(),height:i.z.number().positive(),codec:i.z.string(),format:i.z.string(),bitrate:i.z.number().nonnegative(),frameRate:i.z.number().positive(),aspectRatio:i.z.string(),hasAudio:i.z.boolean(),audioCodec:i.z.string().optional(),audioBitrate:i.z.number().nonnegative().optional(),size:i.z.number().nonnegative()}),qe=i.z.object({timestamp:i.z.number().nonnegative(),format:i.z.enum([`png`,`jpeg`]).optional(),quality:i.z.number().min(1).max(100).optional()}),Je=i.z.object({quality:i.z.number().min(0).max(100),format:i.z.enum([`jpeg`,`webp`,`png`,`avif`])}),Ye=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),Xe=i.z.object({width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),fit:i.z.enum([`contain`,`cover`,`fill`])}).refine(e=>e.width||e.height,`Either width or height must be specified for resize`),Ze=i.z.object({width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),aspectRatio:i.z.enum([`keep`,`ignore`]).optional(),scaling:i.z.enum([`bicubic`,`bilinear`,`lanczos`]).optional()}).refine(e=>e.width||e.height,`Either width or height must be specified for video resize`),Qe=i.z.object({format:i.z.enum([`mp4`,`webm`,`mov`,`avi`]),codec:i.z.enum([`h264`,`h265`,`vp9`,`av1`]).optional(),videoBitrate:i.z.string().optional(),audioBitrate:i.z.string().optional(),audioCodec:i.z.enum([`aac`,`mp3`,`opus`,`vorbis`]).optional()}),$e=i.z.object({type:i.z.literal(`resize`),width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),fit:i.z.enum([`contain`,`cover`,`fill`])}),et=i.z.object({type:i.z.literal(`blur`),sigma:i.z.number().min(.3).max(1e3)}),tt=i.z.object({type:i.z.literal(`rotate`),angle:i.z.number(),background:i.z.string().optional()}),nt=i.z.object({type:i.z.literal(`flip`),direction:i.z.enum([`horizontal`,`vertical`])}),rt=i.z.object({type:i.z.literal(`grayscale`)}),it=i.z.object({type:i.z.literal(`sepia`)}),at=i.z.object({type:i.z.literal(`brightness`),value:i.z.number().min(-100).max(100)}),ot=i.z.object({type:i.z.literal(`contrast`),value:i.z.number().min(-100).max(100)}),st=i.z.object({type:i.z.literal(`sharpen`),sigma:i.z.number().positive().optional()}),ct=i.z.object({type:i.z.literal(`watermark`),imagePath:i.z.string().min(1).url(),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),opacity:i.z.number().min(0).max(1),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),lt=i.z.object({type:i.z.literal(`logo`),imagePath:i.z.string().min(1).url(),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),scale:i.z.number().min(.1).max(2),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),ut=i.z.object({type:i.z.literal(`text`),text:i.z.string().min(1),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),fontSize:i.z.number().positive(),color:i.z.string().min(1),fontFamily:i.z.string().optional(),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),dt=i.z.discriminatedUnion(`type`,[$e,et,tt,nt,rt,it,at,ot,st,ct,lt,ut]),ft=i.z.object({transformations:i.z.array(dt).min(1)}),pt=i.z.object({startTime:i.z.number().nonnegative(),endTime:i.z.number().positive().optional(),duration:i.z.number().positive().optional()}).refine(e=>!e.endTime||!e.duration,`Cannot specify both endTime and duration`).refine(e=>!e.endTime||e.endTime>e.startTime,`endTime must be greater than startTime`);var mt=class extends r.Context.Tag(`VideoPlugin`)(){},ht=class extends r.Context.Tag(`VirusScanPlugin`)(){},gt=class extends r.Context.Tag(`ZipPlugin`)(){};const _t=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>i.z.union([e,t]),n)};function vt(t){return r.Effect.gen(function*(){let n=Object.entries(t.nodes),a=e=>r.Effect.isEffect(e)?e:r.Effect.succeed(e),o=yield*r.Effect.forEach(n,([t,n])=>r.Effect.flatMap(a(n),n=>n.id===t?r.Effect.succeed([t,n]):r.Effect.fail(e.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node key ${t} does not match node id ${n.id}`)})))),s=Object.fromEntries(o),c=o.map(([,e])=>e),l=o.filter(([,e])=>e.type===`input`).map(([,e])=>e.inputSchema),u=t.edges.map(e=>({source:s[e.source]?.id??e.source,target:s[e.target]?.id??e.target,sourcePort:e.sourcePort,targetPort:e.targetPort})),d=new Set(o.map(([e])=>s[e]?.id).filter(e=>e&&!u.some(t=>t.source===e))),f=o.filter(([,e])=>d.has(e.id)||e.keepOutput===!0).map(([,e])=>e.outputSchema),p=t.inputSchema??_t(l,i.z.unknown()),m=t.outputSchema??_t(f,i.z.unknown());return yield*G({flowId:t.flowId,name:t.name,nodes:c,edges:u,inputSchema:p,outputSchema:m,typeChecker:t.typeChecker,onEvent:t.onEvent,parallelExecution:t.parallelExecution,hooks:t.hooks,circuitBreaker:t.circuitBreaker})})}const yt=i.z.object({inputs:i.z.record(i.z.string(),i.z.any())});Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"$t",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"At",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"Bt",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"Ct",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"Dt",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"Et",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"Ft",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"Gt",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"Ht",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"It",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"Jt",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"Kt",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"Lt",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"Mt",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"Nt",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"Ot",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"Pt",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"Qt",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"Rt",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"St",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"Tt",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"Ut",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"Vt",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"Wt",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"Xt",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"Yt",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"Zt",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"_t",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(exports,"at",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"bt",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"ct",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,"dt",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"en",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"et",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"ft",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,"gt",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"ht",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return ht}}),Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"jt",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"kt",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,"lt",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"mt",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,"nt",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return pt}}),Object.defineProperty(exports,"ot",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"pt",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"qt",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,"rt",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"st",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,"tt",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"ut",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"vt",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"wt",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"xt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"yt",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"zt",{enumerable:!0,get:function(){return w}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CTpuhufX.d.mts","names":[],"sources":["../src/flow/circuit-breaker.ts","../src/flow/circuit-breaker-store.ts","../src/flow/distributed-circuit-breaker.ts","../src/flow/edge.ts","../src/flow/flow.ts","../src/flow/input-type-registry.ts","../src/flow/output-type-registry.ts","../src/flow/node-types/index.ts","../src/flow/dead-letter-queue.ts","../src/flow/flow-queue-store.ts","../src/flow/flow-engine.ts","../src/flow/flow-queue.ts","../src/flow/nodes/input-node.ts","../src/flow/types/flow-file.ts","../src/flow/types/type-utils.ts","../src/flow/nodes/transform-node.ts","../src/flow/parallel-scheduler.ts","../src/flow/plugins/credential-provider.ts","../src/flow/plugins/document-ai-plugin.ts","../src/flow/plugins/document-plugin.ts","../src/flow/plugins/image-ai-plugin.ts","../src/flow/plugins/types/optimize-node.ts","../src/flow/plugins/types/resize-node.ts","../src/flow/plugins/types/transform-image-node.ts","../src/flow/plugins/image-plugin.ts","../src/flow/plugins/types/describe-video-node.ts","../src/flow/plugins/types/extract-frame-video-node.ts","../src/flow/plugins/types/resize-video-node.ts","../src/flow/plugins/types/transcode-video-node.ts","../src/flow/plugins/types/trim-video-node.ts","../src/flow/plugins/video-plugin.ts","../src/flow/plugins/virus-scan-plugin.ts","../src/flow/plugins/zip-plugin.ts","../src/flow/plugins/plugins.ts","../src/flow/plugins/types/describe-image-node.ts","../src/flow/plugins/types/remove-background-node.ts","../src/flow/type-guards.ts","../src/flow/typed-flow.ts","../src/flow/types/run-args.ts","../src/flow/utils/file-naming.ts","../src/flow/utils/resolve-upload-metadata.ts"],"mappings":"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"}
|