authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-04-01 08:58:04-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-04-01 08:58:04-07:00
loga9e5a84c03fbec2934777a0c718bcabec161863e
tree47dbbe12b2c22f7e43c13f5bde96f67a25049167
parent67ca528fea4a90638811105929248fe565d0a27e
signature Signed by PGP key B5690EEEBB952194

[codex] migrate Effect.fn in apps/server/src/provider/Layers/ProviderAdapterRegistry.ts (#1637)

Co-authored-by: codex <codex@users.noreply.github.com>

1 files changed, 22 insertions(+), 21 deletions(-)

apps/server/src/provider/Layers/ProviderAdapterRegistry.ts+22-21
......@@ -22,30 +22,31 @@ export interface ProviderAdapterRegistryLiveOptions {
2222 readonly adapters?: ReadonlyArray<ProviderAdapterShape<ProviderAdapterError>>;
2323}
2424
25const makeProviderAdapterRegistry = (options?: ProviderAdapterRegistryLiveOptions) =>
26 Effect.gen(function* () {
27 const adapters =
28 options?.adapters !== undefined
29 ? options.adapters
30 : [yield* CodexAdapter, yield* ClaudeAdapter];
31 const byProvider = new Map(adapters.map((adapter) => [adapter.provider, adapter]));
25const makeProviderAdapterRegistry = Effect.fn("makeProviderAdapterRegistry")(function* (
26 options?: ProviderAdapterRegistryLiveOptions,
27) {
28 const adapters =
29 options?.adapters !== undefined
30 ? options.adapters
31 : [yield* CodexAdapter, yield* ClaudeAdapter];
32 const byProvider = new Map(adapters.map((adapter) => [adapter.provider, adapter]));
3233
33 const getByProvider: ProviderAdapterRegistryShape["getByProvider"] = (provider) => {
34 const adapter = byProvider.get(provider);
35 if (!adapter) {
36 return Effect.fail(new ProviderUnsupportedError({ provider }));
37 }
38 return Effect.succeed(adapter);
39 };
34 const getByProvider: ProviderAdapterRegistryShape["getByProvider"] = (provider) => {
35 const adapter = byProvider.get(provider);
36 if (!adapter) {
37 return Effect.fail(new ProviderUnsupportedError({ provider }));
38 }
39 return Effect.succeed(adapter);
40 };
4041
41 const listProviders: ProviderAdapterRegistryShape["listProviders"] = () =>
42 Effect.sync(() => Array.from(byProvider.keys()));
42 const listProviders: ProviderAdapterRegistryShape["listProviders"] = () =>
43 Effect.sync(() => Array.from(byProvider.keys()));
4344
44 return {
45 getByProvider,
46 listProviders,
47 } satisfies ProviderAdapterRegistryShape;
48 });
45 return {
46 getByProvider,
47 listProviders,
48 } satisfies ProviderAdapterRegistryShape;
49});
4950
5051export const ProviderAdapterRegistryLive = Layer.effect(
5152 ProviderAdapterRegistry,