diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 5423ba3baf5f..93d9be091b76 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -23,6 +23,7 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { InstanceState } from "@/effect" import { Context, Duration, Effect, Exit, Fiber, Layer, Option, Schema } from "effect" import { EffectFlock } from "@opencode-ai/shared/util/effect-flock" +import { makeRuntime } from "@/effect/run-service" import { InstanceRef } from "@/effect/instance-ref" import { zod, ZodOverride } from "@/util/effect-zod" import { withStatics } from "@/util/schema" @@ -240,6 +241,9 @@ export const Info = Schema.Struct({ mcp_timeout: Schema.optional(PositiveInt).annotate({ description: "Timeout in milliseconds for model context protocol (MCP) requests", }), + enable_exa: Schema.optional(Schema.Boolean).annotate({ + description: "Enable experimental Exa features", + }), }), ), }) @@ -796,3 +800,11 @@ export const defaultLayer = layer.pipe( Layer.provide(Account.defaultLayer), Layer.provide(Npm.defaultLayer), ) + +const { runPromise } = makeRuntime(Service, defaultLayer) + +export async function experimentalEnableExa(): Promise { + if (Flag.OPENCODE_ENABLE_EXA) return true + const config = await runPromise((svc) => svc.get()) + return config.experimental?.enable_exa === true +}