authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-10-05 17:05:15-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-05 17:05:15-07:00
log6302d66f7773ee43d198155d2cfc22d9d66dbbe0
tree76231d634bbde32acb03c023fb0c5b6919271e37
parentee6991ad502c7c8979ab47b6a8fc645498f5b4ce
signature Signed by PGP key B5690EEEBB952194

refactor(server): import service modules as namespaces, not aliased layers (#16267)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

3 files changed, 112 insertions(+), 120 deletions(-)

apps/server/src/orchestration-v2/CheckpointRestoreSafety.test.ts+7-8
...@@ -16,13 +16,10 @@ import * as Layer from "effect/Layer";...@@ -16,13 +16,10 @@ import * as Layer from "effect/Layer";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import * as Path from "effect/Path";17import * as Path from "effect/Path";
18import { symlinksSupported } from "@t3tools/shared/testing/symlinks";18import { symlinksSupported } from "@t3tools/shared/testing/symlinks";
19import {19import * as CheckpointRollbackService from "./CheckpointRollbackService.ts";
20 CheckpointRollbackServiceV2,
21 layer as rollbackLayer,
22} from "./CheckpointRollbackService.ts";
23import { CheckpointServiceV2 } from "./CheckpointService.ts";20import { CheckpointServiceV2 } from "./CheckpointService.ts";
24import { EventSinkV2 } from "./EventSink.ts";21import { EventSinkV2 } from "./EventSink.ts";
25import { layer as idAllocatorLayer } from "./IdAllocator.ts";22import * as IdAllocator from "./IdAllocator.ts";
26import { ProjectionStoreV2 } from "./ProjectionStore.ts";23import { ProjectionStoreV2 } from "./ProjectionStore.ts";
27import * as ProjectStore from "./ProjectStore.ts";24import * as ProjectStore from "./ProjectStore.ts";
28import { ProviderSessionManagerV2 } from "./ProviderSessionManager.ts";25import { ProviderSessionManagerV2 } from "./ProviderSessionManager.ts";
...@@ -101,11 +98,11 @@ it.effect.each([...@@ -101,11 +98,11 @@ it.effect.each([
101 checkpointScopes: [{ id: scopeId, cwd }],98 checkpointScopes: [{ id: scopeId, cwd }],
102 runs: [{ id: "later-run", ordinal: 1, status: "completed", rootNodeId: null }],99 runs: [{ id: "later-run", ordinal: 1, status: "completed", rootNodeId: null }],
103 } as unknown as OrchestrationV2ThreadProjection;100 } as unknown as OrchestrationV2ThreadProjection;
104 const testLayer = rollbackLayer.pipe(101 const testLayer = CheckpointRollbackService.layer.pipe(
105 Layer.provide(102 Layer.provide(
106 Layer.mergeAll(103 Layer.mergeAll(
107 NodeServices.layer,104 NodeServices.layer,
108 idAllocatorLayer,105 IdAllocator.layer,
109 Layer.mock(ProjectStore.ProjectStoreV2)({106 Layer.mock(ProjectStore.ProjectStoreV2)({
110 get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),107 get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
111 }),108 }),
...@@ -177,7 +174,9 @@ it.effect.each([...@@ -177,7 +174,9 @@ it.effect.each([
177 ),174 ),
178 ),175 ),
179 );176 );
180 const service = yield* CheckpointRollbackServiceV2.pipe(Effect.provide(testLayer));177 const service = yield* CheckpointRollbackService.CheckpointRollbackServiceV2.pipe(
178 Effect.provide(testLayer),
179 );
181 const restoreFiles = owner !== "conversation";180 const restoreFiles = owner !== "conversation";
182 const rejected = !["sibling", "stopped-provider", "shared-provider", "conversation"].includes(181 const rejected = !["sibling", "stopped-provider", "shared-provider", "conversation"].includes(
183 owner,182 owner,
apps/server/src/orchestration-v2/Orchestrator.ts+3-6
...@@ -85,10 +85,7 @@ import { EventSinkV2 } from "./EventSink.ts";...@@ -85,10 +85,7 @@ import { EventSinkV2 } from "./EventSink.ts";
85import * as EffectOutbox from "./EffectOutbox.ts";85import * as EffectOutbox from "./EffectOutbox.ts";
86import type { OrchestrationEffectRequestV2, PendingOrchestrationEffectV2 } from "./EffectOutbox.ts";86import type { OrchestrationEffectRequestV2, PendingOrchestrationEffectV2 } from "./EffectOutbox.ts";
87import { IdAllocatorV2 } from "./IdAllocator.ts";87import { IdAllocatorV2 } from "./IdAllocator.ts";
88import {88import * as ThreadCommandExecutor from "./ThreadCommandExecutor.ts";
89 ThreadCommandExecutor,
90 layer as threadCommandExecutorLayer,
91} from "./ThreadCommandExecutor.ts";
92import {89import {
93 applyToProjection,90 applyToProjection,
94 emptyProjection,91 emptyProjection,
...@@ -787,7 +784,7 @@ const makeOrchestrator = Effect.fn("orchestrationV2.Orchestrator.layer")(functio...@@ -787,7 +784,7 @@ const makeOrchestrator = Effect.fn("orchestrationV2.Orchestrator.layer")(functio
787 const providerSwitchService = yield* ProviderSwitchServiceV2;784 const providerSwitchService = yield* ProviderSwitchServiceV2;
788 const runtimePolicy = yield* RuntimePolicyV2;785 const runtimePolicy = yield* RuntimePolicyV2;
789 const threadForkService = yield* ThreadForkServiceV2;786 const threadForkService = yield* ThreadForkServiceV2;
790 const threadDispatch = yield* ThreadCommandExecutor;787 const threadDispatch = yield* ThreadCommandExecutor.ThreadCommandExecutor;
791788
792 const mapDispatchError =789 const mapDispatchError =
793 (command: OrchestrationV2ServerCommand) =>790 (command: OrchestrationV2ServerCommand) =>
...@@ -10616,7 +10613,7 @@ export const layer: Layer.Layer<...@@ -10616,7 +10613,7 @@ export const layer: Layer.Layer<
10616 | RuntimePolicyV210613 | RuntimePolicyV2
10617 | ThreadForkServiceV210614 | ThreadForkServiceV2
10618> = Layer.effect(OrchestratorV2, makeOrchestrator()).pipe(10615> = Layer.effect(OrchestratorV2, makeOrchestrator()).pipe(
10619 Layer.provide(threadCommandExecutorLayer),10616 Layer.provide(ThreadCommandExecutor.layer),
10620);10617);
1062110618
10622const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(10619const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
apps/server/src/orchestration-v2/runtimeLayer.ts+102-106
...@@ -3,57 +3,51 @@ import * as Scheduler from "../scheduling/Scheduler.ts";...@@ -3,57 +3,51 @@ import * as Scheduler from "../scheduling/Scheduler.ts";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as OrchestrationCommandReceipts from "../persistence/Layers/OrchestrationCommandReceipts.ts";4import * as OrchestrationCommandReceipts from "../persistence/Layers/OrchestrationCommandReceipts.ts";
5import * as OrchestrationEventStore from "../persistence/Layers/OrchestrationEventStore.ts";5import * as OrchestrationEventStore from "../persistence/Layers/OrchestrationEventStore.ts";
6import { layer as providerSessionRuntimeLayer } from "../persistence/ProviderSessionRuntime.ts";6import * as ProviderSessionRuntime from "../persistence/ProviderSessionRuntime.ts";
7import * as TextGeneration from "../textGeneration/TextGeneration.ts";7import * as TextGeneration from "../textGeneration/TextGeneration.ts";
8import { ProviderAuthServiceLive } from "../provider/Layers/ProviderAuthService.ts";8import { ProviderAuthServiceLive } from "../provider/Layers/ProviderAuthService.ts";
9import { layer as agentSessionImporterLayer } from "../project/AgentSessionImporter.ts";9import * as AgentSessionImporter from "../project/AgentSessionImporter.ts";
10import * as AgentSessionScanner from "../project/AgentSessionScanner.ts";10import * as AgentSessionScanner from "../project/AgentSessionScanner.ts";
11import { layer as projectServiceLayer } from "../project/ProjectService.ts";11import * as ProjectService from "../project/ProjectService.ts";
12import { layer as projectSetupScriptRunnerLayer } from "../project/ProjectSetupScriptRunner.ts";12import * as ProjectSetupScriptRunner from "../project/ProjectSetupScriptRunner.ts";
13import * as ManagedProjectFolders from "../project/ManagedProjectFolders.ts";13import * as ManagedProjectFolders from "../project/ManagedProjectFolders.ts";
14import { layer as checkpointCaptureServiceLayer } from "./CheckpointCaptureService.ts";14import * as CheckpointCaptureService from "./CheckpointCaptureService.ts";
15import { layer as checkpointServiceLayer } from "./CheckpointService.ts";15import * as CheckpointService from "./CheckpointService.ts";
16import { layer as checkpointRollbackServiceLayer } from "./CheckpointRollbackService.ts";16import * as CheckpointRollbackService from "./CheckpointRollbackService.ts";
17import { layer as commandPolicyLayer } from "./CommandPolicy.ts";17import * as CommandPolicy from "./CommandPolicy.ts";
18import { layerFromApplicationReceipts as commandReceiptStoreLayer } from "./CommandReceiptStore.ts";18import * as CommandReceiptStore from "./CommandReceiptStore.ts";
19import { layer as contextHandoffServiceLayer } from "./ContextHandoffService.ts";19import * as ContextHandoffService from "./ContextHandoffService.ts";
20import {20import * as EffectOutbox from "./EffectOutbox.ts";
21 layer as effectOutboxLayer,21import * as EffectWorker from "./EffectWorker.ts";
22 pruneWorkerLive as effectOutboxPruneWorkerLive,22import * as EventSink from "./EventSink.ts";
23} from "./EffectOutbox.ts";23import * as EventStore from "./EventStore.ts";
24import {24import * as IdAllocator from "./IdAllocator.ts";
25 executorLayer as effectExecutorLayer,
26 layer as effectWorkerLayer,
27} from "./EffectWorker.ts";
28import { layerFromStores as eventSinkLayer } from "./EventSink.ts";
29import { layerFromOrchestrationEventStore as eventStoreLayer } from "./EventStore.ts";
30import { layer as idAllocatorLayer } from "./IdAllocator.ts";
31import * as LegacyV1ThreadImporter from "./legacy/LegacyV1ThreadImporter.ts";25import * as LegacyV1ThreadImporter from "./legacy/LegacyV1ThreadImporter.ts";
32import { layer as orchestratorLayer } from "./Orchestrator.ts";26import * as Orchestrator from "./Orchestrator.ts";
33import { layer as projectionStoreLayer } from "./ProjectionStore.ts";27import * as ProjectionStore from "./ProjectionStore.ts";
34import { layer as projectionMaintenanceLayer } from "./ProjectionMaintenance.ts";28import * as ProjectionMaintenance from "./ProjectionMaintenance.ts";
35import * as ProjectStore from "./ProjectStore.ts";29import * as ProjectStore from "./ProjectStore.ts";
36import { layerFromProviderInstanceRegistry as providerAdapterRegistryLayerFromProviderInstances } from "./ProviderAdapterRegistry.ts";30import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts";
37import { layer as providerContinuationRequestsLayer } from "./ProviderContinuationRequests.ts";31import * as ProviderContinuationRequests from "./ProviderContinuationRequests.ts";
38import { workerLive as providerContinuationWorkerLive } from "./ProviderContinuationService.ts";32import * as ProviderContinuationService from "./ProviderContinuationService.ts";
39import { layer as threadTitleRegenerationServiceLayer } from "./ThreadTitleRegenerationService.ts";33import * as ThreadTitleRegenerationService from "./ThreadTitleRegenerationService.ts";
40import { layer as providerEventIngestorLayer } from "./ProviderEventIngestor.ts";34import * as ProviderEventIngestor from "./ProviderEventIngestor.ts";
41import * as ThreadCommandExecutor from "./ThreadCommandExecutor.ts";35import * as ThreadCommandExecutor from "./ThreadCommandExecutor.ts";
42import { layer as providerSessionManagerLayer } from "./ProviderSessionManager.ts";36import * as ProviderSessionManager from "./ProviderSessionManager.ts";
43import { layer as providerRuntimeRecoveryLayer } from "./ProviderRuntimeRecoveryService.ts";37import * as ProviderRuntimeRecoveryService from "./ProviderRuntimeRecoveryService.ts";
44import { layer as providerSwitchServiceLayer } from "./ProviderSwitchService.ts";38import * as ProviderSwitchService from "./ProviderSwitchService.ts";
45import { layer as providerTurnControlServiceLayer } from "./ProviderTurnControlService.ts";39import * as ProviderTurnControlService from "./ProviderTurnControlService.ts";
46import { layer as providerTurnStartServiceLayer } from "./ProviderTurnStartService.ts";40import * as ProviderTurnStartService from "./ProviderTurnStartService.ts";
47import { layer as runExecutionServiceLayer } from "./RunExecutionService.ts";41import * as RunExecutionService from "./RunExecutionService.ts";
48import { layer as runFinalizationServiceLayer } from "./RunFinalizationService.ts";42import * as RunFinalizationService from "./RunFinalizationService.ts";
49import * as RuntimePolicy from "./RuntimePolicy.ts";43import * as RuntimePolicy from "./RuntimePolicy.ts";
50import { layer as runtimeRequestServiceLayer } from "./RuntimeRequestService.ts";44import * as RuntimeRequestService from "./RuntimeRequestService.ts";
51import { layerWithLegacyImporter as threadManagementServiceLayer } from "./ThreadManagementService.ts";45import * as ThreadManagementService from "./ThreadManagementService.ts";
52import { layer as threadLaunchServiceLayer } from "./ThreadLaunchService.ts";46import * as ThreadLaunchService from "./ThreadLaunchService.ts";
53import { layer as threadLifecycleServiceLayer } from "./ThreadLifecycleService.ts";47import * as ThreadLifecycleService from "./ThreadLifecycleService.ts";
54import { layer as threadForkServiceLayer } from "./ThreadForkService.ts";48import * as ThreadForkService from "./ThreadForkService.ts";
55import { layer as turnItemPositionStoreLayer } from "./TurnItemPositionStore.ts";49import * as TurnItemPositionStore from "./TurnItemPositionStore.ts";
56import { layer as scheduledTaskServiceLayer } from "../scheduledTasks/ScheduledTaskService.ts";50import * as ScheduledTaskService from "../scheduledTasks/ScheduledTaskService.ts";
57import * as SecretRequests from "../secrets/SecretRequests.ts";51import * as SecretRequests from "../secrets/SecretRequests.ts";
5852
59/** The shared application event log and its command receipts. */53/** The shared application event log and its command receipts. */
...@@ -66,97 +60,99 @@ const runtimePolicyProvided = RuntimePolicy.layerFromProjectStore.pipe(...@@ -66,97 +60,99 @@ const runtimePolicyProvided = RuntimePolicy.layerFromProjectStore.pipe(
66 Layer.provide(ProjectStore.layer),60 Layer.provide(ProjectStore.layer),
67);61);
6862
69const eventStoreProvided = eventStoreLayer.pipe(63const eventStoreProvided = EventStore.layerFromOrchestrationEventStore.pipe(
70 Layer.provide(OrchestrationEventInfrastructureLayerLive),64 Layer.provide(OrchestrationEventInfrastructureLayerLive),
71);65);
72const commandReceiptStoreProvided = commandReceiptStoreLayer.pipe(66const commandReceiptStoreProvided = CommandReceiptStore.layerFromApplicationReceipts.pipe(
73 Layer.provide(OrchestrationEventInfrastructureLayerLive),67 Layer.provide(OrchestrationEventInfrastructureLayerLive),
74);68);
7569
76const storesLayer = Layer.mergeAll(70const storesLayer = Layer.mergeAll(
77 OrchestrationEventInfrastructureLayerLive,71 OrchestrationEventInfrastructureLayerLive,
78 eventStoreProvided,72 eventStoreProvided,
79 projectionStoreLayer,73 ProjectionStore.layer,
80 ProjectStore.layer,74 ProjectStore.layer,
81 commandReceiptStoreProvided,75 commandReceiptStoreProvided,
82 effectOutboxLayer,76 EffectOutbox.layer,
83 turnItemPositionStoreLayer,77 TurnItemPositionStore.layer,
84);78);
8579
86export const OrchestrationV2EventSinkLayerLive = eventSinkLayer.pipe(Layer.provide(storesLayer));80export const OrchestrationV2EventSinkLayerLive = EventSink.layerFromStores.pipe(
81 Layer.provide(storesLayer),
82);
87const eventSinkProvided = OrchestrationV2EventSinkLayerLive;83const eventSinkProvided = OrchestrationV2EventSinkLayerLive;
88const projectionMaintenanceProvided = projectionMaintenanceLayer.pipe(Layer.provide(storesLayer));84const projectionMaintenanceProvided = ProjectionMaintenance.layer.pipe(Layer.provide(storesLayer));
89const legacyV1ThreadImporterProvided = LegacyV1ThreadImporter.layer.pipe(85const legacyV1ThreadImporterProvided = LegacyV1ThreadImporter.layer.pipe(
90 Layer.provide(eventSinkProvided),86 Layer.provide(eventSinkProvided),
91);87);
9288
93export const ProjectServiceLayerLive = projectServiceLayer.pipe(89export const ProjectServiceLayerLive = ProjectService.layer.pipe(
94 Layer.provide(90 Layer.provide(
95 Layer.mergeAll(91 Layer.mergeAll(
96 ProjectStore.layer,92 ProjectStore.layer,
97 projectionStoreLayer,93 ProjectionStore.layer,
98 eventSinkProvided,94 eventSinkProvided,
99 idAllocatorLayer,95 IdAllocator.layer,
100 legacyV1ThreadImporterProvided,96 legacyV1ThreadImporterProvided,
101 ),97 ),
102 ),98 ),
103);99);
104100
105const providerEventIngestorProvided = providerEventIngestorLayer.pipe(101const providerEventIngestorProvided = ProviderEventIngestor.layer.pipe(
106 Layer.provide(102 Layer.provide(
107 Layer.mergeAll(103 Layer.mergeAll(
108 eventSinkProvided,104 eventSinkProvided,
109 idAllocatorLayer,105 IdAllocator.layer,
110 projectionStoreLayer,106 ProjectionStore.layer,
111 ThreadCommandExecutor.layer,107 ThreadCommandExecutor.layer,
112 ),108 ),
113 ),109 ),
114);110);
115111
116const checkpointServiceProvided = checkpointServiceLayer.pipe(Layer.provide(idAllocatorLayer));112const checkpointServiceProvided = CheckpointService.layer.pipe(Layer.provide(IdAllocator.layer));
117const contextHandoffServiceProvided = contextHandoffServiceLayer.pipe(113const contextHandoffServiceProvided = ContextHandoffService.layer.pipe(
118 Layer.provide(idAllocatorLayer),114 Layer.provide(IdAllocator.layer),
119);115);
120116
121const providerAdapterRegistryProvided = providerAdapterRegistryLayerFromProviderInstances;117const providerAdapterRegistryProvided = ProviderAdapterRegistry.layerFromProviderInstanceRegistry;
122const providerSwitchServiceProvided = providerSwitchServiceLayer.pipe(118const providerSwitchServiceProvided = ProviderSwitchService.layer.pipe(
123 Layer.provide(providerAdapterRegistryProvided),119 Layer.provide(providerAdapterRegistryProvided),
124);120);
125121
126const providerSessionManagerProvided = providerSessionManagerLayer.pipe(122const providerSessionManagerProvided = ProviderSessionManager.layer.pipe(
127 Layer.provide(123 Layer.provide(
128 Layer.mergeAll(124 Layer.mergeAll(
129 providerAdapterRegistryProvided,125 providerAdapterRegistryProvided,
130 eventSinkProvided,126 eventSinkProvided,
131 idAllocatorLayer,127 IdAllocator.layer,
132 providerEventIngestorProvided,128 providerEventIngestorProvided,
133 projectionStoreLayer,129 ProjectionStore.layer,
134 ),130 ),
135 ),131 ),
136);132);
137133
138const providerAuthServiceProvided = ProviderAuthServiceLive.pipe(134const providerAuthServiceProvided = ProviderAuthServiceLive.pipe(
139 Layer.provide(Layer.merge(projectionStoreLayer, providerSessionManagerProvided)),135 Layer.provide(Layer.merge(ProjectionStore.layer, providerSessionManagerProvided)),
140);136);
141137
142const runExecutionServiceProvided = runExecutionServiceLayer.pipe(138const runExecutionServiceProvided = RunExecutionService.layer.pipe(
143 Layer.provide(139 Layer.provide(
144 Layer.mergeAll(140 Layer.mergeAll(
145 checkpointServiceProvided,141 checkpointServiceProvided,
146 eventSinkProvided,142 eventSinkProvided,
147 idAllocatorLayer,143 IdAllocator.layer,
148 providerEventIngestorProvided,144 providerEventIngestorProvided,
149 ),145 ),
150 ),146 ),
151);147);
152148
153const providerTurnStartServiceProvided = providerTurnStartServiceLayer.pipe(149const providerTurnStartServiceProvided = ProviderTurnStartService.layer.pipe(
154 Layer.provide(150 Layer.provide(
155 Layer.mergeAll(151 Layer.mergeAll(
156 contextHandoffServiceProvided,152 contextHandoffServiceProvided,
157 eventSinkProvided,153 eventSinkProvided,
158 idAllocatorLayer,154 IdAllocator.layer,
159 projectionStoreLayer,155 ProjectionStore.layer,
160 providerSessionManagerProvided,156 providerSessionManagerProvided,
161 providerAuthServiceProvided,157 providerAuthServiceProvided,
162 runExecutionServiceProvided,158 runExecutionServiceProvided,
...@@ -165,87 +161,87 @@ const providerTurnStartServiceProvided = providerTurnStartServiceLayer.pipe(...@@ -165,87 +161,87 @@ const providerTurnStartServiceProvided = providerTurnStartServiceLayer.pipe(
165 ),161 ),
166);162);
167163
168const providerTurnControlServiceProvided = providerTurnControlServiceLayer.pipe(164const providerTurnControlServiceProvided = ProviderTurnControlService.layer.pipe(
169 Layer.provide(Layer.merge(projectionStoreLayer, providerSessionManagerProvided)),165 Layer.provide(Layer.merge(ProjectionStore.layer, providerSessionManagerProvided)),
170);166);
171const runtimeRequestServiceProvided = runtimeRequestServiceLayer.pipe(167const runtimeRequestServiceProvided = RuntimeRequestService.layer.pipe(
172 Layer.provide(Layer.merge(projectionStoreLayer, providerSessionManagerProvided)),168 Layer.provide(Layer.merge(ProjectionStore.layer, providerSessionManagerProvided)),
173);169);
174const checkpointRollbackServiceProvided = checkpointRollbackServiceLayer.pipe(170const checkpointRollbackServiceProvided = CheckpointRollbackService.layer.pipe(
175 Layer.provide(171 Layer.provide(
176 Layer.mergeAll(172 Layer.mergeAll(
177 ProjectStore.layer,173 ProjectStore.layer,
178 checkpointServiceProvided,174 checkpointServiceProvided,
179 eventSinkProvided,175 eventSinkProvided,
180 idAllocatorLayer,176 IdAllocator.layer,
181 projectionStoreLayer,177 ProjectionStore.layer,
182 providerSessionManagerProvided,178 providerSessionManagerProvided,
183 runtimePolicyProvided,179 runtimePolicyProvided,
184 ),180 ),
185 ),181 ),
186);182);
187const checkpointCaptureServiceProvided = checkpointCaptureServiceLayer.pipe(183const checkpointCaptureServiceProvided = CheckpointCaptureService.layer.pipe(
188 Layer.provide(184 Layer.provide(
189 Layer.mergeAll(185 Layer.mergeAll(
190 checkpointServiceProvided,186 checkpointServiceProvided,
191 eventSinkProvided,187 eventSinkProvided,
192 idAllocatorLayer,188 IdAllocator.layer,
193 projectionStoreLayer,189 ProjectionStore.layer,
194 ),190 ),
195 ),191 ),
196);192);
197const runFinalizationServiceProvided = runFinalizationServiceLayer.pipe(193const runFinalizationServiceProvided = RunFinalizationService.layer.pipe(
198 Layer.provide(Layer.merge(checkpointCaptureServiceProvided, projectionStoreLayer)),194 Layer.provide(Layer.merge(checkpointCaptureServiceProvided, ProjectionStore.layer)),
199);195);
200196
201const orchestratorProvided = orchestratorLayer.pipe(197const orchestratorProvided = Orchestrator.layer.pipe(
202 Layer.provide(198 Layer.provide(
203 Layer.mergeAll(199 Layer.mergeAll(
204 checkpointServiceProvided,200 checkpointServiceProvided,
205 commandPolicyLayer,201 CommandPolicy.layer,
206 storesLayer,202 storesLayer,
207 eventSinkProvided,203 eventSinkProvided,
208 commandReceiptStoreProvided,204 commandReceiptStoreProvided,
209 contextHandoffServiceProvided,205 contextHandoffServiceProvided,
210 idAllocatorLayer,206 IdAllocator.layer,
211 ProjectStore.layer,207 ProjectStore.layer,
212 providerAdapterRegistryProvided,208 providerAdapterRegistryProvided,
213 // Same layer reference as the continuation worker and the adapter209 // Same layer reference as the continuation worker and the adapter
214 // infrastructure so layer memoization yields one shared request queue.210 // infrastructure so layer memoization yields one shared request queue.
215 providerContinuationRequestsLayer,211 ProviderContinuationRequests.layer,
216 providerEventIngestorProvided,212 providerEventIngestorProvided,
217 runtimePolicyProvided,213 runtimePolicyProvided,
218 providerSessionManagerProvided,214 providerSessionManagerProvided,
219 providerSwitchServiceProvided,215 providerSwitchServiceProvided,
220 runExecutionServiceProvided,216 runExecutionServiceProvided,
221 threadForkServiceLayer,217 ThreadForkService.layer,
222 ),218 ),
223 ),219 ),
224);220);
225221
226const agentSessionImporterProvided = agentSessionImporterLayer.pipe(222const agentSessionImporterProvided = AgentSessionImporter.layer.pipe(
227 Layer.provide(223 Layer.provide(
228 Layer.mergeAll(224 Layer.mergeAll(
229 AgentSessionScanner.layer,225 AgentSessionScanner.layer,
230 ProjectServiceLayerLive,226 ProjectServiceLayerLive,
231 orchestratorProvided,227 orchestratorProvided,
232 eventSinkProvided,228 eventSinkProvided,
233 idAllocatorLayer,229 IdAllocator.layer,
234 providerSessionRuntimeLayer,230 ProviderSessionRuntime.layer,
235 ),231 ),
236 ),232 ),
237);233);
238234
239const threadManagementProvided = threadManagementServiceLayer.pipe(235const threadManagementProvided = ThreadManagementService.layerWithLegacyImporter.pipe(
240 Layer.provide(Layer.merge(orchestratorProvided, legacyV1ThreadImporterProvided)),236 Layer.provide(Layer.merge(orchestratorProvided, legacyV1ThreadImporterProvided)),
241);237);
242export const ProjectSetupScriptRunnerLayerLive = projectSetupScriptRunnerLayer.pipe(238export const ProjectSetupScriptRunnerLayerLive = ProjectSetupScriptRunner.layer.pipe(
243 Layer.provide(ProjectServiceLayerLive),239 Layer.provide(ProjectServiceLayerLive),
244);240);
245const managedProjectFoldersProvided = ManagedProjectFolders.layer.pipe(241const managedProjectFoldersProvided = ManagedProjectFolders.layer.pipe(
246 Layer.provide(ProjectServiceLayerLive),242 Layer.provide(ProjectServiceLayerLive),
247);243);
248const threadLaunchProvided = threadLaunchServiceLayer.pipe(244const threadLaunchProvided = ThreadLaunchService.layer.pipe(
249 Layer.provide(245 Layer.provide(
250 Layer.mergeAll(246 Layer.mergeAll(
251 ProjectServiceLayerLive,247 ProjectServiceLayerLive,
...@@ -253,28 +249,28 @@ const threadLaunchProvided = threadLaunchServiceLayer.pipe(...@@ -253,28 +249,28 @@ const threadLaunchProvided = threadLaunchServiceLayer.pipe(
253 managedProjectFoldersProvided,249 managedProjectFoldersProvided,
254 threadManagementProvided,250 threadManagementProvided,
255 commandReceiptStoreProvided,251 commandReceiptStoreProvided,
256 idAllocatorLayer,252 IdAllocator.layer,
257 ),253 ),
258 ),254 ),
259);255);
260const threadLifecycleProvided = threadLifecycleServiceLayer.pipe(256const threadLifecycleProvided = ThreadLifecycleService.layer.pipe(
261 Layer.provide(threadManagementProvided),257 Layer.provide(threadManagementProvided),
262);258);
263const secretRequestsProvided = SecretRequests.layer.pipe(Layer.provide(threadManagementProvided));259const secretRequestsProvided = SecretRequests.layer.pipe(Layer.provide(threadManagementProvided));
264const scheduledTaskProvided = scheduledTaskServiceLayer.pipe(260const scheduledTaskProvided = ScheduledTaskService.layer.pipe(
265 Layer.provide(261 Layer.provide(
266 Layer.mergeAll(threadLaunchProvided, threadManagementProvided, secretRequestsProvided),262 Layer.mergeAll(threadLaunchProvided, threadManagementProvided, secretRequestsProvided),
267 ),263 ),
268);264);
269const providerContinuationWorkerProvided = providerContinuationWorkerLive.pipe(265const providerContinuationWorkerProvided = ProviderContinuationService.workerLive.pipe(
270 Layer.provide(266 Layer.provide(
271 Layer.mergeAll(providerContinuationRequestsLayer, threadManagementProvided, idAllocatorLayer),267 Layer.mergeAll(ProviderContinuationRequests.layer, threadManagementProvided, IdAllocator.layer),
272 ),268 ),
273);269);
274const threadTitleRegenerationProvided = threadTitleRegenerationServiceLayer.pipe(270const threadTitleRegenerationProvided = ThreadTitleRegenerationService.layer.pipe(
275 Layer.provide(Layer.mergeAll(threadManagementProvided, ProjectStore.layer, TextGeneration.layer)),271 Layer.provide(Layer.mergeAll(threadManagementProvided, ProjectStore.layer, TextGeneration.layer)),
276);272);
277const effectExecutorProvided = effectExecutorLayer.pipe(273const effectExecutorProvided = EffectWorker.executorLayer.pipe(
278 Layer.provide(274 Layer.provide(
279 Layer.mergeAll(275 Layer.mergeAll(
280 runFinalizationServiceProvided,276 runFinalizationServiceProvided,
...@@ -288,17 +284,17 @@ const effectExecutorProvided = effectExecutorLayer.pipe(...@@ -288,17 +284,17 @@ const effectExecutorProvided = effectExecutorLayer.pipe(
288 ),284 ),
289 ),285 ),
290);286);
291const effectWorkerProvided = effectWorkerLayer.pipe(287const effectWorkerProvided = EffectWorker.layer.pipe(
292 Layer.provide(Layer.merge(storesLayer, effectExecutorProvided)),288 Layer.provide(Layer.merge(storesLayer, effectExecutorProvided)),
293);289);
294const providerRuntimeRecoveryProvided = providerRuntimeRecoveryLayer.pipe(290const providerRuntimeRecoveryProvided = ProviderRuntimeRecoveryService.layer.pipe(
295 Layer.provide(291 Layer.provide(
296 Layer.mergeAll(292 Layer.mergeAll(
297 effectWorkerProvided,293 effectWorkerProvided,
298 storesLayer,294 storesLayer,
299 eventSinkProvided,295 eventSinkProvided,
300 idAllocatorLayer,296 IdAllocator.layer,
301 projectionStoreLayer,297 ProjectionStore.layer,
302 ),298 ),
303 ),299 ),
304);300);
...@@ -323,11 +319,11 @@ export const OrchestrationV2ProductionLayerLive = Layer.mergeAll(...@@ -323,11 +319,11 @@ export const OrchestrationV2ProductionLayerLive = Layer.mergeAll(
323 scheduledTaskProvided,319 scheduledTaskProvided,
324 secretRequestsProvided,320 secretRequestsProvided,
325 UsageLimitRecoveryWorker.workerLive.pipe(321 UsageLimitRecoveryWorker.workerLive.pipe(
326 Layer.provide(Layer.mergeAll(projectionStoreLayer, threadManagementProvided)),322 Layer.provide(Layer.mergeAll(ProjectionStore.layer, threadManagementProvided)),
327 ),323 ),
328 providerContinuationWorkerProvided,324 providerContinuationWorkerProvided,
329 agentSessionImporterProvided,325 agentSessionImporterProvided,
330 effectOutboxPruneWorkerLive.pipe(Layer.provide(effectOutboxLayer)),326 EffectOutbox.pruneWorkerLive.pipe(Layer.provide(EffectOutbox.layer)),
331).pipe(327).pipe(
332 Layer.provide(Scheduler.layer),328 Layer.provide(Scheduler.layer),
333 Layer.provideMerge(OrchestrationEventInfrastructureLayerLive),329 Layer.provideMerge(OrchestrationEventInfrastructureLayerLive),