@@ -3,7 +3,8 @@ import { execFileSync } from "node:child_process";
33import * as NodeServices from "@effect/platform-node/NodeServices" ;
44import {
55 ApprovalRequestId ,
6- ProviderKind ,
6+ CodexSettings ,
7+ ProviderDriverKind ,
78 type OrchestrationEvent ,
89 type OrchestrationThread ,
910} from "@t3tools/contracts" ;
@@ -36,13 +37,16 @@ import { ProviderSessionRuntimeRepositoryLive } from "../src/persistence/Layers/
3637import { makeSqlitePersistenceLive } from "../src/persistence/Layers/Sqlite.ts" ;
3738import { ProjectionCheckpointRepository } from "../src/persistence/Services/ProjectionCheckpoints.ts" ;
3839import { ProjectionPendingApprovalRepository } from "../src/persistence/Services/ProjectionPendingApprovals.ts" ;
39- import { ProviderUnsupportedError } from "../src/provider/Errors .ts" ;
40+ import { makeAdapterRegistryMock } from "../src/provider/testUtils/providerAdapterRegistryMock .ts" ;
4041import { ProviderAdapterRegistry } from "../src/provider/Services/ProviderAdapterRegistry.ts" ;
4142import { ProviderSessionDirectoryLive } from "../src/provider/Layers/ProviderSessionDirectory.ts" ;
4243import { ServerSettingsService } from "../src/serverSettings.ts" ;
4344import { makeProviderServiceLive } from "../src/provider/Layers/ProviderService.ts" ;
44- import { makeCodexAdapterLive } from "../src/provider/Layers/CodexAdapter.ts" ;
45- import { CodexAdapter } from "../src/provider/Services/CodexAdapter.ts" ;
45+ import { makeCodexAdapter } from "../src/provider/Layers/CodexAdapter.ts" ;
46+ import {
47+ NoOpProviderEventLoggers ,
48+ ProviderEventLoggers ,
49+ } from "../src/provider/Layers/ProviderEventLoggers.ts" ;
4650import { ProviderService } from "../src/provider/Services/ProviderService.ts" ;
4751import { AnalyticsService } from "../src/telemetry/Services/AnalyticsService.ts" ;
4852import { CheckpointReactorLive } from "../src/orchestration/Layers/CheckpointReactor.ts" ;
@@ -214,7 +218,7 @@ export interface OrchestrationIntegrationHarness {
214218}
215219
216220interface MakeOrchestrationIntegrationHarnessOptions {
217- readonly provider ?: ProviderKind ;
221+ readonly provider ?: ProviderDriverKind ;
218222 readonly realCodex ?: boolean ;
219223}
220224
@@ -225,21 +229,18 @@ export const makeOrchestrationIntegrationHarness = (
225229 const path = yield * Path . Path ;
226230 const fileSystem = yield * FileSystem . FileSystem ;
227231
228- const provider = options ?. provider ?? "codex" ;
232+ const provider = options ?. provider ?? ProviderDriverKind . make ( "codex" ) ;
229233 const useRealCodex = options ?. realCodex === true ;
230234 const adapterHarness = useRealCodex
231235 ? null
232236 : yield * makeTestProviderAdapterHarness ( {
233237 provider,
234238 } ) ;
235239 const fakeRegistry = adapterHarness
236- ? Layer . succeed ( ProviderAdapterRegistry , {
237- getByProvider : ( resolvedProvider ) =>
238- resolvedProvider === adapterHarness . provider
239- ? Effect . succeed ( adapterHarness . adapter )
240- : Effect . fail ( new ProviderUnsupportedError ( { provider : resolvedProvider } ) ) ,
241- listProviders : ( ) => Effect . succeed ( [ adapterHarness . provider ] ) ,
242- } as typeof ProviderAdapterRegistry . Service )
240+ ? Layer . succeed (
241+ ProviderAdapterRegistry ,
242+ makeAdapterRegistryMock ( { [ adapterHarness . provider ] : adapterHarness . adapter } ) ,
243+ )
243244 : null ;
244245 const rootDir = yield * fileSystem . makeTempDirectoryScoped ( {
245246 prefix : "t3-orchestration-integration-" ,
@@ -264,31 +265,30 @@ export const makeOrchestrationIntegrationHarness = (
264265 const realCodexRegistry = Layer . effect (
265266 ProviderAdapterRegistry ,
266267 Effect . gen ( function * ( ) {
267- const codexAdapter = yield * CodexAdapter ;
268- return {
269- getByProvider : ( resolvedProvider ) =>
270- resolvedProvider === "codex"
271- ? Effect . succeed ( codexAdapter )
272- : Effect . fail ( new ProviderUnsupportedError ( { provider : resolvedProvider } ) ) ,
273- listProviders : ( ) => Effect . succeed ( [ "codex" ] as const ) ,
274- } as typeof ProviderAdapterRegistry . Service ;
268+ const codexSettings = Schema . decodeSync ( CodexSettings ) ( { } ) ;
269+ const codexAdapter = yield * makeCodexAdapter ( codexSettings ) ;
270+ return makeAdapterRegistryMock ( {
271+ [ ProviderDriverKind . make ( "codex" ) ] : codexAdapter ,
272+ } ) ;
275273 } ) ,
276274 ) . pipe (
277- Layer . provide ( makeCodexAdapterLive ( ) ) ,
278275 Layer . provideMerge ( ServerConfig . layerTest ( workspaceDir , rootDir ) ) ,
279276 Layer . provideMerge ( NodeServices . layer ) ,
280277 Layer . provideMerge ( providerSessionDirectoryLayer ) ,
281278 ) ;
279+ const providerEventLoggersLayer = Layer . succeed ( ProviderEventLoggers , NoOpProviderEventLoggers ) ;
282280 const providerLayer = useRealCodex
283281 ? makeProviderServiceLive ( ) . pipe (
284282 Layer . provide ( providerSessionDirectoryLayer ) ,
285283 Layer . provide ( realCodexRegistry ) ,
286284 Layer . provide ( AnalyticsService . layerTest ) ,
285+ Layer . provide ( providerEventLoggersLayer ) ,
287286 )
288287 : makeProviderServiceLive ( ) . pipe (
289288 Layer . provide ( providerSessionDirectoryLayer ) ,
290289 Layer . provide ( fakeRegistry ! ) ,
291290 Layer . provide ( AnalyticsService . layerTest ) ,
291+ Layer . provide ( providerEventLoggersLayer ) ,
292292 ) ;
293293
294294 const checkpointStoreLayer = CheckpointStoreLive . pipe ( Layer . provide ( GitCoreLive ) ) ;
0 commit comments