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,);
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,
);