From ff9702f934b38c73e5ed2dfb01ece2ad4e43bd32 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Wed, 1 Apr 2026 09:39:57 -0400 Subject: [PATCH] refactor(provider): use Plugin Effect service instead of async facade Replace Effect.promise(() => Plugin.list()) with yield* plugin.list() by injecting Plugin.Service into the Provider layer. --- packages/opencode/src/provider/provider.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index b2f7d848d0f0..4776c2afc9c1 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -961,11 +961,12 @@ export namespace Provider { } } - const layer: Layer.Layer = Layer.effect( + const layer: Layer.Layer = Layer.effect( Service, Effect.gen(function* () { const config = yield* Config.Service const auth = yield* Auth.Service + const plugin = yield* Plugin.Service const cache = yield* InstanceState.make(() => Effect.gen(function* () { @@ -1128,7 +1129,7 @@ export namespace Provider { } } - const plugins = yield* Effect.promise(() => Plugin.list()) + const plugins = yield* plugin.list() for (const plugin of plugins) { if (!plugin.auth) continue const providerID = ProviderID.make(plugin.auth.provider) @@ -1541,7 +1542,11 @@ export namespace Provider { }), ) - export const defaultLayer = layer.pipe(Layer.provide(Config.defaultLayer), Layer.provide(Auth.defaultLayer)) + export const defaultLayer = layer.pipe( + Layer.provide(Config.defaultLayer), + Layer.provide(Auth.defaultLayer), + Layer.provide(Plugin.defaultLayer), + ) const { runPromise } = makeRuntime(Service, defaultLayer)