diff options
| author | Kit Langton <[email protected]> | 2026-04-15 22:45:45 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-16 02:45:45 +0000 |
| commit | 379e40d7720ab1caecfc750ca87ab3d039957ba3 (patch) | |
| tree | 0cad3c95fdcb5e50e11bda18f438b751378c1b38 /packages | |
| parent | 6c7e9f6f3ac211454576e6e51cc5ff65718cd491 (diff) | |
| download | opencode-379e40d7720ab1caecfc750ca87ab3d039957ba3.tar.gz opencode-379e40d7720ab1caecfc750ca87ab3d039957ba3.zip | |
feat: unwrap InstanceState + EffectBridge namespaces to flat exports + barrel (#22721)
Diffstat (limited to 'packages')
40 files changed, 138 insertions, 140 deletions
diff --git a/packages/opencode/src/agent/agent.ts b/packages/opencode/src/agent/agent.ts index 8d11a93b3..b027c8c94 100644 --- a/packages/opencode/src/agent/agent.ts +++ b/packages/opencode/src/agent/agent.ts @@ -20,7 +20,7 @@ import path from "path" import { Plugin } from "@/plugin" import { Skill } from "../skill" import { Effect, Context, Layer } from "effect" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import * as Option from "effect/Option" import * as OtelTracer from "@effect/opentelemetry/Tracer" diff --git a/packages/opencode/src/bus/bus.ts b/packages/opencode/src/bus/bus.ts index fe9169171..12d7f246c 100644 --- a/packages/opencode/src/bus/bus.ts +++ b/packages/opencode/src/bus/bus.ts @@ -1,10 +1,10 @@ import z from "zod" import { Effect, Exit, Layer, PubSub, Scope, Context, Stream } from "effect" -import { EffectBridge } from "@/effect/bridge" +import { EffectBridge } from "@/effect" import { Log } from "../util/log" import { BusEvent } from "./bus-event" import { GlobalBus } from "./global" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { makeRuntime } from "@/effect/run-service" const log = Log.create({ service: "bus" }) diff --git a/packages/opencode/src/command/command.ts b/packages/opencode/src/command/command.ts index fe9005edb..4ea132524 100644 --- a/packages/opencode/src/command/command.ts +++ b/packages/opencode/src/command/command.ts @@ -1,6 +1,6 @@ import { BusEvent } from "@/bus/bus-event" -import { InstanceState } from "@/effect/instance-state" -import { EffectBridge } from "@/effect/bridge" +import { InstanceState } from "@/effect" +import { EffectBridge } from "@/effect" import type { InstanceContext } from "@/project/instance" import { SessionID, MessageID } from "@/session/schema" import { Effect, Layer, Context } from "effect" diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 43ec8d709..7eeacf1ff 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -32,7 +32,7 @@ import { isRecord } from "@/util/record" import { ConfigPaths } from "./paths" import type { ConsoleState } from "./console-state" import { AppFileSystem } from "@opencode-ai/shared/filesystem" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Context, Duration, Effect, Exit, Fiber, Layer, Option } from "effect" import { EffectFlock } from "@opencode-ai/shared/util/effect-flock" diff --git a/packages/opencode/src/config/tui.ts b/packages/opencode/src/config/tui.ts index 163bd4d7d..24ccefecd 100644 --- a/packages/opencode/src/config/tui.ts +++ b/packages/opencode/src/config/tui.ts @@ -10,7 +10,7 @@ import { Flag } from "@/flag/flag" import { Log } from "@/util/log" import { isRecord } from "@/util/record" import { Global } from "@/global" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { makeRuntime } from "@/effect/run-service" import { AppFileSystem } from "@opencode-ai/shared/filesystem" diff --git a/packages/opencode/src/effect/bridge.ts b/packages/opencode/src/effect/bridge.ts index bafa5a0ea..9ca7b50ad 100644 --- a/packages/opencode/src/effect/bridge.ts +++ b/packages/opencode/src/effect/bridge.ts @@ -5,45 +5,43 @@ import { LocalContext } from "@/util/local-context" import { InstanceRef, WorkspaceRef } from "./instance-ref" import { attachWith } from "./run-service" -export namespace EffectBridge { - export interface Shape { - readonly promise: <A, E, R>(effect: Effect.Effect<A, E, R>) => Promise<A> - readonly fork: <A, E, R>(effect: Effect.Effect<A, E, R>) => Fiber.Fiber<A, E> - } +export interface Shape { + readonly promise: <A, E, R>(effect: Effect.Effect<A, E, R>) => Promise<A> + readonly fork: <A, E, R>(effect: Effect.Effect<A, E, R>) => Fiber.Fiber<A, E> +} - function restore<R>(instance: InstanceContext | undefined, workspace: string | undefined, fn: () => R): R { - if (instance && workspace !== undefined) { - return WorkspaceContext.restore(workspace, () => Instance.restore(instance, fn)) - } - if (instance) return Instance.restore(instance, fn) - if (workspace !== undefined) return WorkspaceContext.restore(workspace, fn) - return fn() +function restore<R>(instance: InstanceContext | undefined, workspace: string | undefined, fn: () => R): R { + if (instance && workspace !== undefined) { + return WorkspaceContext.restore(workspace, () => Instance.restore(instance, fn)) } + if (instance) return Instance.restore(instance, fn) + if (workspace !== undefined) return WorkspaceContext.restore(workspace, fn) + return fn() +} - export function make(): Effect.Effect<Shape> { - return Effect.gen(function* () { - const ctx = yield* Effect.context() - const value = yield* InstanceRef - const instance = - value ?? - (() => { - try { - return Instance.current - } catch (err) { - if (!(err instanceof LocalContext.NotFound)) throw err - } - })() - const workspace = (yield* WorkspaceRef) ?? WorkspaceContext.workspaceID - const attach = <A, E, R>(effect: Effect.Effect<A, E, R>) => attachWith(effect, { instance, workspace }) - const wrap = <A, E, R>(effect: Effect.Effect<A, E, R>) => - attach(effect).pipe(Effect.provide(ctx)) as Effect.Effect<A, E, never> +export function make(): Effect.Effect<Shape> { + return Effect.gen(function* () { + const ctx = yield* Effect.context() + const value = yield* InstanceRef + const instance = + value ?? + (() => { + try { + return Instance.current + } catch (err) { + if (!(err instanceof LocalContext.NotFound)) throw err + } + })() + const workspace = (yield* WorkspaceRef) ?? WorkspaceContext.workspaceID + const attach = <A, E, R>(effect: Effect.Effect<A, E, R>) => attachWith(effect, { instance, workspace }) + const wrap = <A, E, R>(effect: Effect.Effect<A, E, R>) => + attach(effect).pipe(Effect.provide(ctx)) as Effect.Effect<A, E, never> - return { - promise: <A, E, R>(effect: Effect.Effect<A, E, R>) => - restore(instance, workspace, () => Effect.runPromise(wrap(effect))), - fork: <A, E, R>(effect: Effect.Effect<A, E, R>) => - restore(instance, workspace, () => Effect.runFork(wrap(effect))), - } satisfies Shape - }) - } + return { + promise: <A, E, R>(effect: Effect.Effect<A, E, R>) => + restore(instance, workspace, () => Effect.runPromise(wrap(effect))), + fork: <A, E, R>(effect: Effect.Effect<A, E, R>) => + restore(instance, workspace, () => Effect.runFork(wrap(effect))), + } satisfies Shape + }) } diff --git a/packages/opencode/src/effect/index.ts b/packages/opencode/src/effect/index.ts new file mode 100644 index 000000000..d10afdff2 --- /dev/null +++ b/packages/opencode/src/effect/index.ts @@ -0,0 +1,2 @@ +export * as InstanceState from "./instance-state" +export * as EffectBridge from "./bridge" diff --git a/packages/opencode/src/effect/instance-state.ts b/packages/opencode/src/effect/instance-state.ts index b3392d156..2a51931ad 100644 --- a/packages/opencode/src/effect/instance-state.ts +++ b/packages/opencode/src/effect/instance-state.ts @@ -13,72 +13,70 @@ export interface InstanceState<A, E = never, R = never> { readonly cache: ScopedCache.ScopedCache<string, A, E, R> } -export namespace InstanceState { - export const bind = <F extends (...args: any[]) => any>(fn: F): F => { - try { - return Instance.bind(fn) - } catch (err) { - if (!(err instanceof LocalContext.NotFound)) throw err - } - const fiber = Fiber.getCurrent() - const ctx = fiber ? Context.getReferenceUnsafe(fiber.context, InstanceRef) : undefined - if (!ctx) return fn - return ((...args: any[]) => Instance.restore(ctx, () => fn(...args))) as F +export const bind = <F extends (...args: any[]) => any>(fn: F): F => { + try { + return Instance.bind(fn) + } catch (err) { + if (!(err instanceof LocalContext.NotFound)) throw err } + const fiber = Fiber.getCurrent() + const ctx = fiber ? Context.getReferenceUnsafe(fiber.context, InstanceRef) : undefined + if (!ctx) return fn + return ((...args: any[]) => Instance.restore(ctx, () => fn(...args))) as F +} - export const context = Effect.gen(function* () { - return (yield* InstanceRef) ?? Instance.current - }) +export const context = Effect.gen(function* () { + return (yield* InstanceRef) ?? Instance.current +}) - export const workspaceID = Effect.gen(function* () { - return (yield* WorkspaceRef) ?? WorkspaceContext.workspaceID - }) +export const workspaceID = Effect.gen(function* () { + return (yield* WorkspaceRef) ?? WorkspaceContext.workspaceID +}) - export const directory = Effect.map(context, (ctx) => ctx.directory) +export const directory = Effect.map(context, (ctx) => ctx.directory) - export const make = <A, E = never, R = never>( - init: (ctx: InstanceContext) => Effect.Effect<A, E, R | Scope.Scope>, - ): Effect.Effect<InstanceState<A, E, Exclude<R, Scope.Scope>>, never, R | Scope.Scope> => - Effect.gen(function* () { - const cache = yield* ScopedCache.make<string, A, E, R>({ - capacity: Number.POSITIVE_INFINITY, - lookup: () => - Effect.gen(function* () { - return yield* init(yield* context) - }), - }) +export const make = <A, E = never, R = never>( + init: (ctx: InstanceContext) => Effect.Effect<A, E, R | Scope.Scope>, +): Effect.Effect<InstanceState<A, E, Exclude<R, Scope.Scope>>, never, R | Scope.Scope> => + Effect.gen(function* () { + const cache = yield* ScopedCache.make<string, A, E, R>({ + capacity: Number.POSITIVE_INFINITY, + lookup: () => + Effect.gen(function* () { + return yield* init(yield* context) + }), + }) - const off = registerDisposer((directory) => - Effect.runPromise(ScopedCache.invalidate(cache, directory).pipe(Effect.provide(EffectLogger.layer))), - ) - yield* Effect.addFinalizer(() => Effect.sync(off)) + const off = registerDisposer((directory) => + Effect.runPromise(ScopedCache.invalidate(cache, directory).pipe(Effect.provide(EffectLogger.layer))), + ) + yield* Effect.addFinalizer(() => Effect.sync(off)) - return { - [TypeId]: TypeId, - cache, - } - }) + return { + [TypeId]: TypeId, + cache, + } + }) - export const get = <A, E, R>(self: InstanceState<A, E, R>) => - Effect.gen(function* () { - return yield* ScopedCache.get(self.cache, yield* directory) - }) +export const get = <A, E, R>(self: InstanceState<A, E, R>) => + Effect.gen(function* () { + return yield* ScopedCache.get(self.cache, yield* directory) + }) - export const use = <A, E, R, B>(self: InstanceState<A, E, R>, select: (value: A) => B) => - Effect.map(get(self), select) +export const use = <A, E, R, B>(self: InstanceState<A, E, R>, select: (value: A) => B) => + Effect.map(get(self), select) - export const useEffect = <A, E, R, B, E2, R2>( - self: InstanceState<A, E, R>, - select: (value: A) => Effect.Effect<B, E2, R2>, - ) => Effect.flatMap(get(self), select) +export const useEffect = <A, E, R, B, E2, R2>( + self: InstanceState<A, E, R>, + select: (value: A) => Effect.Effect<B, E2, R2>, +) => Effect.flatMap(get(self), select) - export const has = <A, E, R>(self: InstanceState<A, E, R>) => - Effect.gen(function* () { - return yield* ScopedCache.has(self.cache, yield* directory) - }) +export const has = <A, E, R>(self: InstanceState<A, E, R>) => + Effect.gen(function* () { + return yield* ScopedCache.has(self.cache, yield* directory) + }) - export const invalidate = <A, E, R>(self: InstanceState<A, E, R>) => - Effect.gen(function* () { - return yield* ScopedCache.invalidate(self.cache, yield* directory) - }) -} +export const invalidate = <A, E, R>(self: InstanceState<A, E, R>) => + Effect.gen(function* () { + return yield* ScopedCache.invalidate(self.cache, yield* directory) + }) diff --git a/packages/opencode/src/env/env.ts b/packages/opencode/src/env/env.ts index 0ffd5ebdc..618ae3268 100644 --- a/packages/opencode/src/env/env.ts +++ b/packages/opencode/src/env/env.ts @@ -1,5 +1,5 @@ import { Context, Effect, Layer } from "effect" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" type State = Record<string, string | undefined> diff --git a/packages/opencode/src/file/file.ts b/packages/opencode/src/file/file.ts index a101574f6..35f2a8740 100644 --- a/packages/opencode/src/file/file.ts +++ b/packages/opencode/src/file/file.ts @@ -1,5 +1,5 @@ import { BusEvent } from "@/bus/bus-event" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { Git } from "@/git" diff --git a/packages/opencode/src/file/time.ts b/packages/opencode/src/file/time.ts index 853da3bd9..86b6b4116 100644 --- a/packages/opencode/src/file/time.ts +++ b/packages/opencode/src/file/time.ts @@ -1,5 +1,5 @@ import { DateTime, Effect, Layer, Option, Semaphore, Context } from "effect" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { Flag } from "@/flag/flag" import type { SessionID } from "@/session/schema" diff --git a/packages/opencode/src/file/watcher.ts b/packages/opencode/src/file/watcher.ts index 4dcec5094..ab5942547 100644 --- a/packages/opencode/src/file/watcher.ts +++ b/packages/opencode/src/file/watcher.ts @@ -7,7 +7,7 @@ import path from "path" import z from "zod" import { Bus } from "@/bus" import { BusEvent } from "@/bus/bus-event" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Flag } from "@/flag/flag" import { Git } from "@/git" import { Instance } from "@/project/instance" diff --git a/packages/opencode/src/format/format.ts b/packages/opencode/src/format/format.ts index 6df00d3db..2ce922495 100644 --- a/packages/opencode/src/format/format.ts +++ b/packages/opencode/src/format/format.ts @@ -1,7 +1,7 @@ import { Effect, Layer, Context } from "effect" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import path from "path" import { mergeDeep } from "remeda" import z from "zod" diff --git a/packages/opencode/src/lsp/index.ts b/packages/opencode/src/lsp/index.ts index 4daacd30b..f567868f6 100644 --- a/packages/opencode/src/lsp/index.ts +++ b/packages/opencode/src/lsp/index.ts @@ -12,7 +12,7 @@ import { Flag } from "@/flag/flag" import { Process } from "../util/process" import { spawn as lspspawn } from "./launch" import { Effect, Layer, Context } from "effect" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" export namespace LSP { const log = Log.create({ service: "lsp" }) diff --git a/packages/opencode/src/mcp/mcp.ts b/packages/opencode/src/mcp/mcp.ts index 947f29c05..f5179b224 100644 --- a/packages/opencode/src/mcp/mcp.ts +++ b/packages/opencode/src/mcp/mcp.ts @@ -25,8 +25,8 @@ import { Bus } from "@/bus" import { TuiEvent } from "@/cli/cmd/tui/event" import open from "open" import { Effect, Exit, Layer, Option, Context, Stream } from "effect" -import { EffectBridge } from "@/effect/bridge" -import { InstanceState } from "@/effect/instance-state" +import { EffectBridge } from "@/effect" +import { InstanceState } from "@/effect" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner" diff --git a/packages/opencode/src/permission/permission.ts b/packages/opencode/src/permission/permission.ts index a5f6ded32..e2dead8fe 100644 --- a/packages/opencode/src/permission/permission.ts +++ b/packages/opencode/src/permission/permission.ts @@ -1,7 +1,7 @@ import { Bus } from "@/bus" import { BusEvent } from "@/bus/bus-event" import { Config } from "@/config" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { ProjectID } from "@/project/schema" import { MessageID, SessionID } from "@/session/schema" import { PermissionTable } from "@/session/session.sql" diff --git a/packages/opencode/src/plugin/plugin.ts b/packages/opencode/src/plugin/plugin.ts index 537794138..23c807ebe 100644 --- a/packages/opencode/src/plugin/plugin.ts +++ b/packages/opencode/src/plugin/plugin.ts @@ -18,8 +18,8 @@ import { gitlabAuthPlugin as GitlabAuthPlugin } from "opencode-gitlab-auth" import { PoeAuthPlugin } from "opencode-poe-auth" import { CloudflareAIGatewayAuthPlugin, CloudflareWorkersAuthPlugin } from "./cloudflare" import { Effect, Layer, Context, Stream } from "effect" -import { EffectBridge } from "@/effect/bridge" -import { InstanceState } from "@/effect/instance-state" +import { EffectBridge } from "@/effect" +import { InstanceState } from "@/effect" import { errorMessage } from "@/util/error" import { PluginLoader } from "./loader" import { parsePluginSpecifier, readPluginId, readV1Plugin, resolvePluginId } from "./shared" diff --git a/packages/opencode/src/project/vcs.ts b/packages/opencode/src/project/vcs.ts index e4093fd45..187c61660 100644 --- a/packages/opencode/src/project/vcs.ts +++ b/packages/opencode/src/project/vcs.ts @@ -3,7 +3,7 @@ import { formatPatch, structuredPatch } from "diff" import path from "path" import { Bus } from "@/bus" import { BusEvent } from "@/bus/bus-event" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { FileWatcher } from "@/file/watcher" import { Git } from "@/git" diff --git a/packages/opencode/src/provider/auth.ts b/packages/opencode/src/provider/auth.ts index 0f2923a58..fd71f2f7a 100644 --- a/packages/opencode/src/provider/auth.ts +++ b/packages/opencode/src/provider/auth.ts @@ -1,7 +1,7 @@ import type { AuthOAuthResult, Hooks } from "@opencode-ai/plugin" import { NamedError } from "@opencode-ai/shared/util/error" import { Auth } from "@/auth" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { zod } from "@/util/effect-zod" import { withStatics } from "@/util/schema" import { Plugin } from "../plugin" diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index fed4d9358..ef6cbd61e 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -19,8 +19,8 @@ import { iife } from "@/util/iife" import { Global } from "../global" import path from "path" import { Effect, Layer, Context } from "effect" -import { EffectBridge } from "@/effect/bridge" -import { InstanceState } from "@/effect/instance-state" +import { EffectBridge } from "@/effect" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { isRecord } from "@/util/record" diff --git a/packages/opencode/src/pty/service.ts b/packages/opencode/src/pty/service.ts index 3359d0aab..ff52095b4 100644 --- a/packages/opencode/src/pty/service.ts +++ b/packages/opencode/src/pty/service.ts @@ -1,6 +1,6 @@ import { BusEvent } from "@/bus/bus-event" import { Bus } from "@/bus" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Instance } from "@/project/instance" import type { Proc } from "#pty" import z from "zod" @@ -10,7 +10,7 @@ import { Shell } from "@/shell/shell" import { Plugin } from "@/plugin" import { PtyID } from "./schema" import { Effect, Layer, Context } from "effect" -import { EffectBridge } from "@/effect/bridge" +import { EffectBridge } from "@/effect" const log = Log.create({ service: "pty" }) diff --git a/packages/opencode/src/question/index.ts b/packages/opencode/src/question/index.ts index ba76efa64..8d023c18b 100644 --- a/packages/opencode/src/question/index.ts +++ b/packages/opencode/src/question/index.ts @@ -1,7 +1,7 @@ import { Deferred, Effect, Layer, Schema, Context } from "effect" import { Bus } from "@/bus" import { BusEvent } from "@/bus/bus-event" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { SessionID, MessageID } from "@/session/schema" import { zod } from "@/util/effect-zod" import { Log } from "@/util/log" diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 644a76752..3d39a6055 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -14,7 +14,7 @@ import { Config } from "@/config" import { NotFoundError } from "@/storage/db" import { ModelID, ProviderID } from "@/provider/schema" import { Effect, Layer, Context } from "effect" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { isOverflow as overflow } from "./overflow" export namespace SessionCompaction { diff --git a/packages/opencode/src/session/instruction.ts b/packages/opencode/src/session/instruction.ts index 23dd88ff5..076c81ec7 100644 --- a/packages/opencode/src/session/instruction.ts +++ b/packages/opencode/src/session/instruction.ts @@ -3,7 +3,7 @@ import path from "path" import { Effect, Layer, Context } from "effect" import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http" import { Config } from "@/config" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Flag } from "@/flag/flag" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { withTransientReadRetry } from "@/util/effect-http-client" diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index 3db1c99d6..bde36d263 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -20,7 +20,7 @@ import { Wildcard } from "@/util/wildcard" import { SessionID } from "@/session/schema" import { Auth } from "@/auth" import { Installation } from "@/installation" -import { EffectBridge } from "@/effect/bridge" +import { EffectBridge } from "@/effect" import * as Option from "effect/Option" import * as OtelTracer from "@effect/opentelemetry/Tracer" diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index b69967689..7a7493903 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -45,10 +45,10 @@ import { decodeDataUrl } from "@/util/data-url" import { Process } from "@/util/process" import { Cause, Effect, Exit, Layer, Option, Scope, Context } from "effect" import { EffectLogger } from "@/effect/logger" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { TaskTool, type TaskPromptOps } from "@/tool/task" import { SessionRunState } from "./run-state" -import { EffectBridge } from "@/effect/bridge" +import { EffectBridge } from "@/effect" // @ts-ignore globalThis.AI_SDK_LOG_WARNINGS = false diff --git a/packages/opencode/src/session/run-state.ts b/packages/opencode/src/session/run-state.ts index f67c726ec..922daf117 100644 --- a/packages/opencode/src/session/run-state.ts +++ b/packages/opencode/src/session/run-state.ts @@ -1,4 +1,4 @@ -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Runner } from "@/effect/runner" import { Effect, Layer, Scope, Context } from "effect" import { Session } from "." diff --git a/packages/opencode/src/session/session.ts b/packages/opencode/src/session/session.ts index 12ecd8552..0b82d8b99 100644 --- a/packages/opencode/src/session/session.ts +++ b/packages/opencode/src/session/session.ts @@ -18,7 +18,7 @@ import { Log } from "../util/log" import { updateSchema } from "../util/update-schema" import { MessageV2 } from "./message-v2" import { Instance } from "../project/instance" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Snapshot } from "@/snapshot" import { ProjectID } from "../project/schema" import { WorkspaceID } from "../control-plane/schema" diff --git a/packages/opencode/src/session/status.ts b/packages/opencode/src/session/status.ts index 5800cb732..f0d4e6cf7 100644 --- a/packages/opencode/src/session/status.ts +++ b/packages/opencode/src/session/status.ts @@ -1,6 +1,6 @@ import { BusEvent } from "@/bus/bus-event" import { Bus } from "@/bus" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { SessionID } from "./schema" import { Effect, Layer, Context } from "effect" import z from "zod" diff --git a/packages/opencode/src/share/share-next.ts b/packages/opencode/src/share/share-next.ts index c764c20b9..9b345ac8e 100644 --- a/packages/opencode/src/share/share-next.ts +++ b/packages/opencode/src/share/share-next.ts @@ -3,7 +3,7 @@ import { Effect, Exit, Layer, Option, Schema, Scope, Context, Stream } from "eff import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" import { Account } from "@/account" import { Bus } from "@/bus" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Provider } from "@/provider" import { ModelID, ProviderID } from "@/provider/schema" import { Session } from "@/session" @@ -142,7 +142,7 @@ export namespace ShareNext { }) } - const state: InstanceState<State> = yield* InstanceState.make<State>( + const state: InstanceState.InstanceState<State> = yield* InstanceState.make<State>( Effect.fn("ShareNext.state")(function* (_ctx) { const cache: State = { queue: new Map(), scope: yield* Scope.make() } diff --git a/packages/opencode/src/skill/skill.ts b/packages/opencode/src/skill/skill.ts index afc644667..3122115cd 100644 --- a/packages/opencode/src/skill/skill.ts +++ b/packages/opencode/src/skill/skill.ts @@ -6,7 +6,7 @@ import { Effect, Layer, Context } from "effect" import { NamedError } from "@opencode-ai/shared/util/error" import type { Agent } from "@/agent/agent" import { Bus } from "@/bus" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Flag } from "@/flag/flag" import { Global } from "@/global" import { Permission } from "@/permission" diff --git a/packages/opencode/src/snapshot/snapshot.ts b/packages/opencode/src/snapshot/snapshot.ts index 6624dee98..7aa3a4deb 100644 --- a/packages/opencode/src/snapshot/snapshot.ts +++ b/packages/opencode/src/snapshot/snapshot.ts @@ -4,7 +4,7 @@ import { formatPatch, structuredPatch } from "diff" import path from "path" import z from "zod" import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { Hash } from "@opencode-ai/shared/util/hash" import { Config } from "../config" diff --git a/packages/opencode/src/storage/db.ts b/packages/opencode/src/storage/db.ts index 68a41e471..247cb347c 100644 --- a/packages/opencode/src/storage/db.ts +++ b/packages/opencode/src/storage/db.ts @@ -12,7 +12,7 @@ import path from "path" import { readFileSync, readdirSync, existsSync } from "fs" import { Flag } from "../flag/flag" import { CHANNEL } from "../installation/meta" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { iife } from "@/util/iife" import { init } from "#db" diff --git a/packages/opencode/src/tool/external-directory.ts b/packages/opencode/src/tool/external-directory.ts index 352cc0739..c91b69803 100644 --- a/packages/opencode/src/tool/external-directory.ts +++ b/packages/opencode/src/tool/external-directory.ts @@ -1,7 +1,7 @@ import path from "path" import { Effect } from "effect" import { EffectLogger } from "@/effect/logger" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import type { Tool } from "./tool" import { Instance } from "../project/instance" import { AppFileSystem } from "@opencode-ai/shared/filesystem" diff --git a/packages/opencode/src/tool/glob.ts b/packages/opencode/src/tool/glob.ts index 778a74ddc..0a0a8f1e2 100644 --- a/packages/opencode/src/tool/glob.ts +++ b/packages/opencode/src/tool/glob.ts @@ -2,7 +2,7 @@ import path from "path" import z from "zod" import { Effect, Option } from "effect" import * as Stream from "effect/Stream" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { Ripgrep } from "../file/ripgrep" import { assertExternalDirectoryEffect } from "./external-directory" diff --git a/packages/opencode/src/tool/grep.ts b/packages/opencode/src/tool/grep.ts index 9a2bab5b2..b6b4a063f 100644 --- a/packages/opencode/src/tool/grep.ts +++ b/packages/opencode/src/tool/grep.ts @@ -1,7 +1,7 @@ import path from "path" import z from "zod" import { Effect, Option } from "effect" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { Ripgrep } from "../file/ripgrep" import { assertExternalDirectoryEffect } from "./external-directory" diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index b9870d194..6171e4366 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -35,7 +35,7 @@ import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner" import { Ripgrep } from "../file/ripgrep" import { Format } from "../format" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" import { Question } from "../question" import { Todo } from "../session/todo" import { LSP } from "../lsp" diff --git a/packages/opencode/src/worktree/worktree.ts b/packages/opencode/src/worktree/worktree.ts index 674d4d757..fab9ce57f 100644 --- a/packages/opencode/src/worktree/worktree.ts +++ b/packages/opencode/src/worktree/worktree.ts @@ -19,7 +19,7 @@ import { NodePath } from "@effect/platform-node" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { BootstrapRuntime } from "@/effect/bootstrap-runtime" import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner" -import { InstanceState } from "@/effect/instance-state" +import { InstanceState } from "@/effect" const log = Log.create({ service: "worktree" }) diff --git a/packages/opencode/test/effect/app-runtime-logger.test.ts b/packages/opencode/test/effect/app-runtime-logger.test.ts index 7388748f9..91f367ff3 100644 --- a/packages/opencode/test/effect/app-runtime-logger.test.ts +++ b/packages/opencode/test/effect/app-runtime-logger.test.ts @@ -1,7 +1,7 @@ import { expect, test } from "bun:test" import { Context, Effect, Layer, Logger } from "effect" import { AppRuntime } from "../../src/effect/app-runtime" -import { EffectBridge } from "../../src/effect/bridge" +import { EffectBridge } from "../../src/effect" import { InstanceRef } from "../../src/effect/instance-ref" import { EffectLogger } from "../../src/effect/logger" import { makeRuntime } from "../../src/effect/run-service" diff --git a/packages/opencode/test/effect/instance-state.test.ts b/packages/opencode/test/effect/instance-state.test.ts index ca74c915b..50206ba84 100644 --- a/packages/opencode/test/effect/instance-state.test.ts +++ b/packages/opencode/test/effect/instance-state.test.ts @@ -1,11 +1,11 @@ import { afterEach, expect, test } from "bun:test" import { Deferred, Duration, Effect, Exit, Fiber, Layer, ManagedRuntime, Context } from "effect" -import { InstanceState } from "../../src/effect/instance-state" +import { InstanceState } from "../../src/effect" import { InstanceRef } from "../../src/effect/instance-ref" import { Instance } from "../../src/project/instance" import { tmpdir } from "../fixture/fixture" -async function access<A, E>(state: InstanceState<A, E>, dir: string) { +async function access<A, E>(state: InstanceState.InstanceState<A, E>, dir: string) { return Instance.provide({ directory: dir, fn: () => Effect.runPromise(InstanceState.get(state)), |
