@@ -10,10 +10,21 @@ import {
1010 S3Buckets ,
1111 Videos ,
1212 VideosPolicy ,
13+ WorkflowsLayer ,
1314} from "@cap/web-backend" ;
1415import { type HttpAuthMiddleware , Video } from "@cap/web-domain" ;
16+ import {
17+ ClusterWorkflowEngine ,
18+ MessageStorage ,
19+ Runners ,
20+ Sharding ,
21+ ShardingConfig ,
22+ ShardManager ,
23+ ShardStorage ,
24+ } from "@effect/cluster" ;
1525import * as NodeSdk from "@effect/opentelemetry/NodeSdk" ;
1626import {
27+ FetchHttpClient ,
1728 type HttpApi ,
1829 HttpApiBuilder ,
1930 HttpMiddleware ,
@@ -22,6 +33,7 @@ import {
2233import { Cause , Effect , Exit , Layer , ManagedRuntime , Option } from "effect" ;
2334import { isNotFoundError } from "next/dist/client/components/not-found" ;
2435import { cookies } from "next/headers" ;
36+
2537import { allowedOrigins } from "@/utils/cors" ;
2638import { getTracingConfig } from "./tracing" ;
2739
@@ -48,13 +60,27 @@ const CookiePasswordAttachmentLive = Layer.effect(
4860 } ) ,
4961) ;
5062
51- export const Dependencies = Layer . mergeAll (
52- S3Buckets . Default ,
53- Videos . Default ,
54- VideosPolicy . Default ,
55- Folders . Default ,
56- TracingLayer ,
57- ) . pipe ( Layer . provideMerge ( DatabaseLive ) ) ;
63+ const WorkflowEngine = ClusterWorkflowEngine . layer . pipe (
64+ Layer . provideMerge ( Sharding . layer ) ,
65+ Layer . provide ( ShardManager . layerClientLocal ) ,
66+ Layer . provide ( ShardStorage . layerNoop ) ,
67+ Layer . provide ( Runners . layerNoop ) ,
68+ Layer . provideMerge ( MessageStorage . layerMemory ) ,
69+ Layer . provide ( ShardingConfig . layer ( ) ) ,
70+ ) ;
71+
72+ export const Dependencies = WorkflowsLayer . pipe (
73+ Layer . provideMerge (
74+ Layer . mergeAll (
75+ S3Buckets . Default ,
76+ Videos . Default ,
77+ VideosPolicy . Default ,
78+ Folders . Default ,
79+ FetchHttpClient . layer ,
80+ WorkflowEngine ,
81+ ) . pipe ( Layer . provideMerge ( Layer . mergeAll ( DatabaseLive , TracingLayer ) ) ) ,
82+ ) ,
83+ ) ;
5884
5985// purposefully not exposed
6086const EffectRuntime = ManagedRuntime . make ( Dependencies ) ;
0 commit comments