282 lines · 10.7 KB · TypeScript
RawDownload
import * as Layer from "effect/Layer";import {  OrchestrationEventInfrastructureLayerLive,  OrchestrationLayerLive,} from "../orchestration/runtimeLayer.ts";import { ProjectionProjectRepositoryLive } from "../persistence/Layers/ProjectionProjects.ts";import * as TextGeneration from "../textGeneration/TextGeneration.ts";import { ProviderAuthServiceLive } from "../provider/Layers/ProviderAuthService.ts";import { layer as projectServiceLayer } from "../project/ProjectService.ts";import { layer as projectSetupScriptRunnerLayer } from "../project/ProjectSetupScriptRunner.ts";import { layer as checkpointCaptureServiceLayer } from "./CheckpointCaptureService.ts";import { layer as checkpointServiceLayer } from "./CheckpointService.ts";import { layer as checkpointRollbackServiceLayer } from "./CheckpointRollbackService.ts";import { layer as commandPolicyLayer } from "./CommandPolicy.ts";import { layerFromApplicationReceipts as commandReceiptStoreLayer } from "./CommandReceiptStore.ts";import { layer as contextHandoffServiceLayer } from "./ContextHandoffService.ts";import { layer as effectOutboxLayer } from "./EffectOutbox.ts";import {  executorLayer as effectExecutorLayer,  layer as effectWorkerLayer,} from "./EffectWorker.ts";import { layerFromStores as eventSinkLayer } from "./EventSink.ts";import { layerFromOrchestrationEventStore as eventStoreLayer } from "./EventStore.ts";import { layer as idAllocatorLayer } from "./IdAllocator.ts";import { layer as legacyV1ThreadImporterLayer } from "./LegacyV1ThreadImporter.ts";import { layer as orchestratorLayer } from "./Orchestrator.ts";import { layer as projectionStoreLayer } from "./ProjectionStore.ts";import { layer as projectionMaintenanceLayer } from "./ProjectionMaintenance.ts";import { layerFromProviderInstanceRegistry as providerAdapterRegistryLayerFromProviderInstances } from "./ProviderAdapterRegistry.ts";import { layer as providerContinuationRequestsLayer } from "./ProviderContinuationRequests.ts";import { workerLive as providerContinuationWorkerLive } from "./ProviderContinuationService.ts";import { layer as threadTitleRegenerationServiceLayer } from "./ThreadTitleRegenerationService.ts";import { layer as providerEventIngestorLayer } from "./ProviderEventIngestor.ts";import { layer as providerSessionManagerLayer } from "./ProviderSessionManager.ts";import { layer as providerRuntimeRecoveryLayer } from "./ProviderRuntimeRecoveryService.ts";import { layer as providerSwitchServiceLayer } from "./ProviderSwitchService.ts";import { layer as providerTurnControlServiceLayer } from "./ProviderTurnControlService.ts";import { layer as providerTurnStartServiceLayer } from "./ProviderTurnStartService.ts";import { layer as runExecutionServiceLayer } from "./RunExecutionService.ts";import { layer as runFinalizationServiceLayer } from "./RunFinalizationService.ts";import { layerFromProjectRepository as runtimePolicyLayerFromProjectRepository } from "./RuntimePolicy.ts";import { layer as runtimeRequestServiceLayer } from "./RuntimeRequestService.ts";import { layerWithLegacyImporter as threadManagementServiceLayer } from "./ThreadManagementService.ts";import { layer as threadLaunchServiceLayer } from "./ThreadLaunchService.ts";import { layer as threadLifecycleServiceLayer } from "./ThreadLifecycleService.ts";import { layer as threadForkServiceLayer } from "./ThreadForkService.ts";import { layer as turnItemPositionStoreLayer } from "./TurnItemPositionStore.ts";import { layer as scheduledTaskServiceLayer } from "../scheduledTasks/ScheduledTaskService.ts"; const runtimePolicyProvided = runtimePolicyLayerFromProjectRepository.pipe(  Layer.provide(ProjectionProjectRepositoryLive),); const eventStoreProvided = eventStoreLayer.pipe(  Layer.provide(OrchestrationEventInfrastructureLayerLive),);const commandReceiptStoreProvided = commandReceiptStoreLayer.pipe(  Layer.provide(OrchestrationEventInfrastructureLayerLive),); const storesLayer = Layer.mergeAll(  OrchestrationEventInfrastructureLayerLive,  eventStoreProvided,  projectionStoreLayer,  commandReceiptStoreProvided,  effectOutboxLayer,  turnItemPositionStoreLayer,); export const OrchestrationV2EventSinkLayerLive = eventSinkLayer.pipe(Layer.provide(storesLayer));const eventSinkProvided = OrchestrationV2EventSinkLayerLive;const projectionMaintenanceProvided = projectionMaintenanceLayer.pipe(Layer.provide(storesLayer));const legacyV1ThreadImporterProvided = legacyV1ThreadImporterLayer.pipe(  Layer.provide(Layer.mergeAll(eventSinkProvided, eventStoreProvided)),); export const ProjectServiceLayerLive = projectServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(      ProjectionProjectRepositoryLive,      OrchestrationLayerLive,      projectionStoreLayer,      eventSinkProvided,      idAllocatorLayer,      legacyV1ThreadImporterProvided,    ),  ),); const providerEventIngestorProvided = providerEventIngestorLayer.pipe(  Layer.provide(Layer.mergeAll(eventSinkProvided, idAllocatorLayer, projectionStoreLayer)),); const checkpointServiceProvided = checkpointServiceLayer.pipe(Layer.provide(idAllocatorLayer));const contextHandoffServiceProvided = contextHandoffServiceLayer.pipe(  Layer.provide(idAllocatorLayer),); const providerAdapterRegistryProvided = providerAdapterRegistryLayerFromProviderInstances;const providerSwitchServiceProvided = providerSwitchServiceLayer.pipe(  Layer.provide(providerAdapterRegistryProvided),); const providerSessionManagerProvided = providerSessionManagerLayer.pipe(  Layer.provide(    Layer.mergeAll(      providerAdapterRegistryProvided,      eventSinkProvided,      idAllocatorLayer,      projectionStoreLayer,    ),  ),); const providerAuthServiceProvided = ProviderAuthServiceLive.pipe(  Layer.provide(Layer.merge(projectionStoreLayer, providerSessionManagerProvided)),); const runExecutionServiceProvided = runExecutionServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(      checkpointServiceProvided,      eventSinkProvided,      idAllocatorLayer,      providerEventIngestorProvided,    ),  ),); const providerTurnStartServiceProvided = providerTurnStartServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(      contextHandoffServiceProvided,      eventSinkProvided,      idAllocatorLayer,      projectionStoreLayer,      providerSessionManagerProvided,      providerAuthServiceProvided,      runExecutionServiceProvided,      runtimePolicyProvided,    ),  ),); const providerTurnControlServiceProvided = providerTurnControlServiceLayer.pipe(  Layer.provide(Layer.merge(projectionStoreLayer, providerSessionManagerProvided)),);const runtimeRequestServiceProvided = runtimeRequestServiceLayer.pipe(  Layer.provide(Layer.merge(projectionStoreLayer, providerSessionManagerProvided)),);const checkpointRollbackServiceProvided = checkpointRollbackServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(      checkpointServiceProvided,      eventSinkProvided,      idAllocatorLayer,      projectionStoreLayer,      providerSessionManagerProvided,      runtimePolicyProvided,    ),  ),);const checkpointCaptureServiceProvided = checkpointCaptureServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(      checkpointServiceProvided,      eventSinkProvided,      idAllocatorLayer,      projectionStoreLayer,    ),  ),);const runFinalizationServiceProvided = runFinalizationServiceLayer.pipe(  Layer.provide(Layer.merge(checkpointCaptureServiceProvided, projectionStoreLayer)),); const orchestratorProvided = orchestratorLayer.pipe(  Layer.provide(    Layer.mergeAll(      checkpointServiceProvided,      commandPolicyLayer,      storesLayer,      eventSinkProvided,      commandReceiptStoreProvided,      contextHandoffServiceProvided,      idAllocatorLayer,      providerAdapterRegistryProvided,      // Same layer reference as the continuation worker and the adapter      // infrastructure so layer memoization yields one shared request queue.      providerContinuationRequestsLayer,      providerEventIngestorProvided,      runtimePolicyProvided,      providerSessionManagerProvided,      providerSwitchServiceProvided,      runExecutionServiceProvided,      threadForkServiceLayer,    ),  ),); const threadManagementProvided = threadManagementServiceLayer.pipe(  Layer.provide(Layer.merge(orchestratorProvided, legacyV1ThreadImporterProvided)),);export const ProjectSetupScriptRunnerLayerLive = projectSetupScriptRunnerLayer.pipe(  Layer.provide(ProjectServiceLayerLive),);const threadLaunchProvided = threadLaunchServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(      ProjectServiceLayerLive,      ProjectSetupScriptRunnerLayerLive,      threadManagementProvided,      commandReceiptStoreProvided,      idAllocatorLayer,    ),  ),);const threadLifecycleProvided = threadLifecycleServiceLayer.pipe(  Layer.provide(threadManagementProvided),);const scheduledTaskProvided = scheduledTaskServiceLayer.pipe(  Layer.provide(Layer.mergeAll(threadLaunchProvided, threadManagementProvided)),);const providerContinuationWorkerProvided = providerContinuationWorkerLive.pipe(  Layer.provide(    Layer.mergeAll(providerContinuationRequestsLayer, threadManagementProvided, idAllocatorLayer),  ),);const threadTitleRegenerationProvided = threadTitleRegenerationServiceLayer.pipe(  Layer.provide(    Layer.mergeAll(threadManagementProvided, ProjectionProjectRepositoryLive, TextGeneration.layer),  ),);const effectExecutorProvided = effectExecutorLayer.pipe(  Layer.provide(    Layer.mergeAll(      runFinalizationServiceProvided,      checkpointRollbackServiceProvided,      providerSessionManagerProvided,      providerTurnControlServiceProvided,      providerTurnStartServiceProvided,      runtimeRequestServiceProvided,      threadTitleRegenerationProvided,      threadManagementProvided,    ),  ),);const effectWorkerProvided = effectWorkerLayer.pipe(  Layer.provide(Layer.merge(storesLayer, effectExecutorProvided)),);const providerRuntimeRecoveryProvided = providerRuntimeRecoveryLayer.pipe(  Layer.provide(    Layer.mergeAll(      effectWorkerProvided,      storesLayer,      eventSinkProvided,      idAllocatorLayer,      projectionStoreLayer,    ),  ),); export const OrchestrationV2LayerLive = Layer.mergeAll(  orchestratorProvided,  threadManagementProvided,  effectWorkerProvided,  providerSessionManagerProvided,  providerAuthServiceProvided,  providerRuntimeRecoveryProvided,  projectionMaintenanceProvided,  legacyV1ThreadImporterProvided,); export const OrchestrationV2ProductionLayerLive = Layer.mergeAll(  OrchestrationLayerLive,  OrchestrationV2LayerLive.pipe(Layer.provide(ProjectServiceLayerLive)),  ProjectServiceLayerLive,  threadLaunchProvided,  threadLifecycleProvided,  scheduledTaskProvided,  providerContinuationWorkerProvided,);