Prechádzať zdrojové kódy

refactor: drop namespace proof-of-concept code changes

Kit Langton 3 mesiacov pred
rodič
commit
2bf5407657
48 zmenil súbory, kde vykonal 150 pridanie a 150 odobranie
  1. 1 1
      packages/opencode/script/schema.ts
  2. 1 1
      packages/opencode/src/acp/agent.ts
  3. 1 1
      packages/opencode/src/agent/agent.ts
  4. 1 1
      packages/opencode/src/cli/cmd/debug/config.ts
  5. 1 1
      packages/opencode/src/cli/cmd/mcp.ts
  6. 1 1
      packages/opencode/src/cli/cmd/providers.ts
  7. 1 1
      packages/opencode/src/cli/cmd/tui/worker.ts
  8. 1 1
      packages/opencode/src/cli/network.ts
  9. 1 1
      packages/opencode/src/cli/upgrade.ts
  10. 1 1
      packages/opencode/src/command/command.ts
  11. 0 1
      packages/opencode/src/config/config.ts
  12. 1 1
      packages/opencode/src/effect/app-runtime.ts
  13. 104 103
      packages/opencode/src/file/time.ts
  14. 1 1
      packages/opencode/src/file/watcher.ts
  15. 1 1
      packages/opencode/src/format/format.ts
  16. 1 1
      packages/opencode/src/lsp/lsp.ts
  17. 1 1
      packages/opencode/src/mcp/mcp.ts
  18. 1 1
      packages/opencode/src/permission/permission.ts
  19. 1 1
      packages/opencode/src/plugin/plugin.ts
  20. 1 1
      packages/opencode/src/provider/provider.ts
  21. 1 1
      packages/opencode/src/server/instance/config.ts
  22. 1 1
      packages/opencode/src/server/instance/experimental.ts
  23. 1 1
      packages/opencode/src/server/instance/global.ts
  24. 1 1
      packages/opencode/src/server/instance/mcp.ts
  25. 1 1
      packages/opencode/src/server/instance/provider.ts
  26. 1 1
      packages/opencode/src/session/compaction.ts
  27. 1 1
      packages/opencode/src/session/instruction.ts
  28. 1 1
      packages/opencode/src/session/llm.ts
  29. 1 1
      packages/opencode/src/session/overflow.ts
  30. 1 1
      packages/opencode/src/session/processor.ts
  31. 1 1
      packages/opencode/src/share/session.ts
  32. 1 1
      packages/opencode/src/share/share-next.ts
  33. 1 1
      packages/opencode/src/skill/skill.ts
  34. 1 1
      packages/opencode/src/snapshot/snapshot.ts
  35. 1 1
      packages/opencode/src/tool/registry.ts
  36. 1 1
      packages/opencode/src/tool/task.ts
  37. 1 1
      packages/opencode/test/config/agent-color.test.ts
  38. 1 1
      packages/opencode/test/config/config.test.ts
  39. 1 1
      packages/opencode/test/config/tui.test.ts
  40. 1 1
      packages/opencode/test/file/watcher.test.ts
  41. 1 1
      packages/opencode/test/fixture/fixture.ts
  42. 1 1
      packages/opencode/test/permission-task.test.ts
  43. 1 1
      packages/opencode/test/session/compaction.test.ts
  44. 1 1
      packages/opencode/test/session/processor-effect.test.ts
  45. 1 1
      packages/opencode/test/session/prompt-effect.test.ts
  46. 1 1
      packages/opencode/test/session/snapshot-tool-race.test.ts
  47. 1 1
      packages/opencode/test/share/share-next.test.ts
  48. 1 1
      packages/opencode/test/tool/task.test.ts

+ 1 - 1
packages/opencode/script/schema.ts

@@ -1,7 +1,7 @@
 #!/usr/bin/env bun
 
 import { z } from "zod"
-import { Config } from "../src/config/config"
+import { Config } from "../src/config"
 import { TuiConfig } from "../src/cli/cmd/tui/config/tui"
 
 function generate(schema: z.ZodType) {

+ 1 - 1
packages/opencode/src/acp/agent.ts

@@ -43,7 +43,7 @@ import { Agent as AgentModule } from "../agent/agent"
 import { AppRuntime } from "@/effect/app-runtime"
 import { Installation } from "@/installation"
 import { MessageV2 } from "@/session/message-v2"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { Todo } from "@/session/todo"
 import { z } from "zod"
 import { LoadAPIKeyError } from "ai"

+ 1 - 1
packages/opencode/src/agent/agent.ts

@@ -1,4 +1,4 @@
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import z from "zod"
 import { Provider } from "../provider"
 import { ModelID, ProviderID } from "../provider/schema"

+ 1 - 1
packages/opencode/src/cli/cmd/debug/config.ts

@@ -1,5 +1,5 @@
 import { EOL } from "os"
-import { Config } from "@/config/config"
+import { Config } from "../../../config"
 import { AppRuntime } from "@/effect/app-runtime"
 import { bootstrap } from "../../bootstrap"
 import { cmd } from "../cmd"

+ 1 - 1
packages/opencode/src/cli/cmd/mcp.ts

@@ -7,7 +7,7 @@ import { UI } from "../ui"
 import { MCP } from "../../mcp"
 import { McpAuth } from "../../mcp/auth"
 import { McpOAuthProvider } from "../../mcp/oauth-provider"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { Instance } from "../../project/instance"
 import { Installation } from "../../installation"
 import { InstallationVersion } from "../../installation/version"

+ 1 - 1
packages/opencode/src/cli/cmd/providers.ts

@@ -7,7 +7,7 @@ import { ModelsDev } from "../../provider"
 import { map, pipe, sortBy, values } from "remeda"
 import path from "path"
 import os from "os"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { Global } from "../../global"
 import { Plugin } from "../../plugin"
 import { Instance } from "../../project/instance"

+ 1 - 1
packages/opencode/src/cli/cmd/tui/worker.ts

@@ -5,7 +5,7 @@ import { Instance } from "@/project/instance"
 import { InstanceBootstrap } from "@/project/bootstrap"
 import { Rpc } from "@/util"
 import { upgrade } from "@/cli/upgrade"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { GlobalBus } from "@/bus/global"
 import { Flag } from "@/flag/flag"
 import { writeHeapSnapshot } from "node:v8"

+ 1 - 1
packages/opencode/src/cli/network.ts

@@ -1,5 +1,5 @@
 import type { Argv, InferredOptionTypes } from "yargs"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { AppRuntime } from "@/effect/app-runtime"
 
 const options = {

+ 1 - 1
packages/opencode/src/cli/upgrade.ts

@@ -1,5 +1,5 @@
 import { Bus } from "@/bus"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { AppRuntime } from "@/effect/app-runtime"
 import { Flag } from "@/flag/flag"
 import { Installation } from "@/installation"

+ 1 - 1
packages/opencode/src/command/command.ts

@@ -5,7 +5,7 @@ import type { InstanceContext } from "@/project/instance"
 import { SessionID, MessageID } from "@/session/schema"
 import { Effect, Layer, Context } from "effect"
 import z from "zod"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { MCP } from "../mcp"
 import { Skill } from "../skill"
 import PROMPT_INITIALIZE from "./template/initialize.txt"

+ 0 - 1
packages/opencode/src/config/config.ts

@@ -1583,4 +1583,3 @@ export const defaultLayer = layer.pipe(
   Layer.provide(Account.defaultLayer),
   Layer.provide(Npm.defaultLayer),
 )
-export * as Config from "./config"

+ 1 - 1
packages/opencode/src/effect/app-runtime.ts

@@ -6,7 +6,7 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem"
 import { Bus } from "@/bus"
 import { Auth } from "@/auth"
 import { Account } from "@/account"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { Git } from "@/git"
 import { Ripgrep } from "@/file/ripgrep"
 import { FileTime } from "@/file/time"

+ 104 - 103
packages/opencode/src/file/time.ts

@@ -5,108 +5,109 @@ import { Flag } from "@/flag/flag"
 import type { SessionID } from "@/session/schema"
 import { Log } from "../util"
 
-const log = Log.create({ service: "file.time" })
-
-export type Stamp = {
-  readonly read: Date
-  readonly mtime: number | undefined
-  readonly size: number | undefined
-}
-
-const session = (reads: Map<SessionID, Map<string, Stamp>>, sessionID: SessionID) => {
-  const value = reads.get(sessionID)
-  if (value) return value
-
-  const next = new Map<string, Stamp>()
-  reads.set(sessionID, next)
-  return next
-}
-
-interface State {
-  reads: Map<SessionID, Map<string, Stamp>>
-  locks: Map<string, Semaphore.Semaphore>
-}
-
-export interface Interface {
-  readonly read: (sessionID: SessionID, file: string) => Effect.Effect<void>
-  readonly get: (sessionID: SessionID, file: string) => Effect.Effect<Date | undefined>
-  readonly assert: (sessionID: SessionID, filepath: string) => Effect.Effect<void>
-  readonly withLock: <T>(filepath: string, fn: () => Effect.Effect<T>) => Effect.Effect<T>
-}
-
-export class Service extends Context.Service<Service, Interface>()("@opencode/FileTime") {}
-
-export const layer = Layer.effect(
-  Service,
-  Effect.gen(function* () {
-    const fsys = yield* AppFileSystem.Service
-    const disableCheck = yield* Flag.OPENCODE_DISABLE_FILETIME_CHECK
-
-    const stamp = Effect.fnUntraced(function* (file: string) {
-      const info = yield* fsys.stat(file).pipe(Effect.catch(() => Effect.void))
-      return {
-        read: yield* DateTime.nowAsDate,
-        mtime: info ? Option.getOrUndefined(info.mtime)?.getTime() : undefined,
-        size: info ? Number(info.size) : undefined,
-      }
-    })
-    const state = yield* InstanceState.make<State>(
-      Effect.fn("FileTime.state")(() =>
-        Effect.succeed({
-          reads: new Map<SessionID, Map<string, Stamp>>(),
-          locks: new Map<string, Semaphore.Semaphore>(),
-        }),
-      ),
-    )
-
-    const getLock = Effect.fn("FileTime.lock")(function* (filepath: string) {
-      filepath = AppFileSystem.normalizePath(filepath)
-      const locks = (yield* InstanceState.get(state)).locks
-      const lock = locks.get(filepath)
-      if (lock) return lock
-
-      const next = Semaphore.makeUnsafe(1)
-      locks.set(filepath, next)
-      return next
-    })
-
-    const read = Effect.fn("FileTime.read")(function* (sessionID: SessionID, file: string) {
-      file = AppFileSystem.normalizePath(file)
-      const reads = (yield* InstanceState.get(state)).reads
-      log.info("read", { sessionID, file })
-      session(reads, sessionID).set(file, yield* stamp(file))
-    })
-
-    const get = Effect.fn("FileTime.get")(function* (sessionID: SessionID, file: string) {
-      file = AppFileSystem.normalizePath(file)
-      const reads = (yield* InstanceState.get(state)).reads
-      return reads.get(sessionID)?.get(file)?.read
-    })
-
-    const assert = Effect.fn("FileTime.assert")(function* (sessionID: SessionID, filepath: string) {
-      if (disableCheck) return
-      filepath = AppFileSystem.normalizePath(filepath)
-
-      const reads = (yield* InstanceState.get(state)).reads
-      const time = reads.get(sessionID)?.get(filepath)
-      if (!time) throw new Error(`You must read file ${filepath} before overwriting it. Use the Read tool first`)
-
-      const next = yield* stamp(filepath)
-      const changed = next.mtime !== time.mtime || next.size !== time.size
-      if (!changed) return
-
-      throw new Error(
-        `File ${filepath} has been modified since it was last read.\nLast modification: ${new Date(next.mtime ?? next.read.getTime()).toISOString()}\nLast read: ${time.read.toISOString()}\n\nPlease read the file again before modifying it.`,
+export namespace FileTime {
+  const log = Log.create({ service: "file.time" })
+
+  export type Stamp = {
+    readonly read: Date
+    readonly mtime: number | undefined
+    readonly size: number | undefined
+  }
+
+  const session = (reads: Map<SessionID, Map<string, Stamp>>, sessionID: SessionID) => {
+    const value = reads.get(sessionID)
+    if (value) return value
+
+    const next = new Map<string, Stamp>()
+    reads.set(sessionID, next)
+    return next
+  }
+
+  interface State {
+    reads: Map<SessionID, Map<string, Stamp>>
+    locks: Map<string, Semaphore.Semaphore>
+  }
+
+  export interface Interface {
+    readonly read: (sessionID: SessionID, file: string) => Effect.Effect<void>
+    readonly get: (sessionID: SessionID, file: string) => Effect.Effect<Date | undefined>
+    readonly assert: (sessionID: SessionID, filepath: string) => Effect.Effect<void>
+    readonly withLock: <T>(filepath: string, fn: () => Effect.Effect<T>) => Effect.Effect<T>
+  }
+
+  export class Service extends Context.Service<Service, Interface>()("@opencode/FileTime") {}
+
+  export const layer = Layer.effect(
+    Service,
+    Effect.gen(function* () {
+      const fsys = yield* AppFileSystem.Service
+      const disableCheck = yield* Flag.OPENCODE_DISABLE_FILETIME_CHECK
+
+      const stamp = Effect.fnUntraced(function* (file: string) {
+        const info = yield* fsys.stat(file).pipe(Effect.catch(() => Effect.void))
+        return {
+          read: yield* DateTime.nowAsDate,
+          mtime: info ? Option.getOrUndefined(info.mtime)?.getTime() : undefined,
+          size: info ? Number(info.size) : undefined,
+        }
+      })
+      const state = yield* InstanceState.make<State>(
+        Effect.fn("FileTime.state")(() =>
+          Effect.succeed({
+            reads: new Map<SessionID, Map<string, Stamp>>(),
+            locks: new Map<string, Semaphore.Semaphore>(),
+          }),
+        ),
       )
-    })
 
-    const withLock = Effect.fn("FileTime.withLock")(function* <T>(filepath: string, fn: () => Effect.Effect<T>) {
-      return yield* fn().pipe((yield* getLock(filepath)).withPermits(1))
-    })
-
-    return Service.of({ read, get, assert, withLock })
-  }),
-).pipe(Layer.orDie)
-
-export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer))
-export * as FileTime from "./time"
+      const getLock = Effect.fn("FileTime.lock")(function* (filepath: string) {
+        filepath = AppFileSystem.normalizePath(filepath)
+        const locks = (yield* InstanceState.get(state)).locks
+        const lock = locks.get(filepath)
+        if (lock) return lock
+
+        const next = Semaphore.makeUnsafe(1)
+        locks.set(filepath, next)
+        return next
+      })
+
+      const read = Effect.fn("FileTime.read")(function* (sessionID: SessionID, file: string) {
+        file = AppFileSystem.normalizePath(file)
+        const reads = (yield* InstanceState.get(state)).reads
+        log.info("read", { sessionID, file })
+        session(reads, sessionID).set(file, yield* stamp(file))
+      })
+
+      const get = Effect.fn("FileTime.get")(function* (sessionID: SessionID, file: string) {
+        file = AppFileSystem.normalizePath(file)
+        const reads = (yield* InstanceState.get(state)).reads
+        return reads.get(sessionID)?.get(file)?.read
+      })
+
+      const assert = Effect.fn("FileTime.assert")(function* (sessionID: SessionID, filepath: string) {
+        if (disableCheck) return
+        filepath = AppFileSystem.normalizePath(filepath)
+
+        const reads = (yield* InstanceState.get(state)).reads
+        const time = reads.get(sessionID)?.get(filepath)
+        if (!time) throw new Error(`You must read file ${filepath} before overwriting it. Use the Read tool first`)
+
+        const next = yield* stamp(filepath)
+        const changed = next.mtime !== time.mtime || next.size !== time.size
+        if (!changed) return
+
+        throw new Error(
+          `File ${filepath} has been modified since it was last read.\nLast modification: ${new Date(next.mtime ?? next.read.getTime()).toISOString()}\nLast read: ${time.read.toISOString()}\n\nPlease read the file again before modifying it.`,
+        )
+      })
+
+      const withLock = Effect.fn("FileTime.withLock")(function* <T>(filepath: string, fn: () => Effect.Effect<T>) {
+        return yield* fn().pipe((yield* getLock(filepath)).withPermits(1))
+      })
+
+      return Service.of({ read, get, assert, withLock })
+    }),
+  ).pipe(Layer.orDie)
+
+  export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer))
+}

+ 1 - 1
packages/opencode/src/file/watcher.ts

@@ -12,7 +12,7 @@ import { Flag } from "@/flag/flag"
 import { Git } from "@/git"
 import { Instance } from "@/project/instance"
 import { lazy } from "@/util/lazy"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { FileIgnore } from "./ignore"
 import { Protected } from "./protected"
 import { Log } from "../util"

+ 1 - 1
packages/opencode/src/format/format.ts

@@ -5,7 +5,7 @@ import { InstanceState } from "@/effect"
 import path from "path"
 import { mergeDeep } from "remeda"
 import z from "zod"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Log } from "../util"
 import * as Formatter from "./formatter"
 

+ 1 - 1
packages/opencode/src/lsp/lsp.ts

@@ -6,7 +6,7 @@ import path from "path"
 import { pathToFileURL, fileURLToPath } from "url"
 import * as LSPServer from "./server"
 import z from "zod"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Instance } from "../project/instance"
 import { Flag } from "@/flag/flag"
 import { Process } from "../util"

+ 1 - 1
packages/opencode/src/mcp/mcp.ts

@@ -9,7 +9,7 @@ import {
   type Tool as MCPToolDef,
   ToolListChangedNotificationSchema,
 } from "@modelcontextprotocol/sdk/types.js"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Log } from "../util"
 import { NamedError } from "@opencode-ai/shared/util/error"
 import z from "zod/v4"

+ 1 - 1
packages/opencode/src/permission/permission.ts

@@ -1,6 +1,6 @@
 import { Bus } from "@/bus"
 import { BusEvent } from "@/bus/bus-event"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { InstanceState } from "@/effect"
 import { ProjectID } from "@/project/schema"
 import { MessageID, SessionID } from "@/session/schema"

+ 1 - 1
packages/opencode/src/plugin/plugin.ts

@@ -5,7 +5,7 @@ import type {
   PluginModule,
   WorkspaceAdaptor as PluginWorkspaceAdaptor,
 } from "@opencode-ai/plugin"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Bus } from "../bus"
 import { Log } from "../util"
 import { createOpencodeClient } from "@opencode-ai/sdk"

+ 1 - 1
packages/opencode/src/provider/provider.ts

@@ -1,7 +1,7 @@
 import z from "zod"
 import os from "os"
 import fuzzysort from "fuzzysort"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { mapValues, mergeDeep, omit, pickBy, sortBy } from "remeda"
 import { NoSuchModelError, type Provider as SDK } from "ai"
 import { Log } from "../util"

+ 1 - 1
packages/opencode/src/server/instance/config.ts

@@ -1,7 +1,7 @@
 import { Hono } from "hono"
 import { describeRoute, validator, resolver } from "hono-openapi"
 import z from "zod"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { Provider } from "../../provider"
 import { mapValues } from "remeda"
 import { errors } from "../error"

+ 1 - 1
packages/opencode/src/server/instance/experimental.ts

@@ -8,7 +8,7 @@ import { Instance } from "../../project/instance"
 import { Project } from "../../project"
 import { MCP } from "../../mcp"
 import { Session } from "../../session"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { ConsoleState } from "../../config/console-state"
 import { Account, AccountID, OrgID } from "../../account"
 import { AppRuntime } from "../../effect/app-runtime"

+ 1 - 1
packages/opencode/src/server/instance/global.ts

@@ -13,7 +13,7 @@ import { Installation } from "@/installation"
 import { InstallationVersion } from "@/installation/version"
 import { Log } from "../../util"
 import { lazy } from "../../util/lazy"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { errors } from "../error"
 
 const log = Log.create({ service: "server" })

+ 1 - 1
packages/opencode/src/server/instance/mcp.ts

@@ -2,7 +2,7 @@ import { Hono } from "hono"
 import { describeRoute, validator, resolver } from "hono-openapi"
 import z from "zod"
 import { MCP } from "../../mcp"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { AppRuntime } from "../../effect/app-runtime"
 import { errors } from "../error"
 import { lazy } from "../../util/lazy"

+ 1 - 1
packages/opencode/src/server/instance/provider.ts

@@ -1,7 +1,7 @@
 import { Hono } from "hono"
 import { describeRoute, validator, resolver } from "hono-openapi"
 import z from "zod"
-import { Config } from "@/config/config"
+import { Config } from "../../config"
 import { Provider } from "../../provider"
 import { ModelsDev } from "../../provider"
 import { ProviderAuth } from "../../provider"

+ 1 - 1
packages/opencode/src/session/compaction.ts

@@ -10,7 +10,7 @@ import { Log } from "../util"
 import { SessionProcessor } from "./processor"
 import { Agent } from "@/agent/agent"
 import { Plugin } from "@/plugin"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { NotFoundError } from "@/storage"
 import { ModelID, ProviderID } from "@/provider/schema"
 import { Effect, Layer, Context } from "effect"

+ 1 - 1
packages/opencode/src/session/instruction.ts

@@ -2,7 +2,7 @@ import os from "os"
 import path from "path"
 import { Effect, Layer, Context } from "effect"
 import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { InstanceState } from "@/effect"
 import { Flag } from "@/flag/flag"
 import { AppFileSystem } from "@opencode-ai/shared/filesystem"

+ 1 - 1
packages/opencode/src/session/llm.ts

@@ -6,7 +6,7 @@ import { streamText, wrapLanguageModel, type ModelMessage, type Tool, tool, json
 import { mergeDeep, pipe } from "remeda"
 import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
 import { ProviderTransform } from "@/provider"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { Instance } from "@/project/instance"
 import type { Agent } from "@/agent/agent"
 import type { MessageV2 } from "./message-v2"

+ 1 - 1
packages/opencode/src/session/overflow.ts

@@ -1,4 +1,4 @@
-import type { Config } from "@/config/config"
+import type { Config } from "@/config"
 import type { Provider } from "@/provider"
 import { ProviderTransform } from "@/provider"
 import type { MessageV2 } from "./message-v2"

+ 1 - 1
packages/opencode/src/session/processor.ts

@@ -2,7 +2,7 @@ import { Cause, Deferred, Effect, Layer, Context, Scope } from "effect"
 import * as Stream from "effect/Stream"
 import { Agent } from "@/agent/agent"
 import { Bus } from "@/bus"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { Permission } from "@/permission"
 import { Plugin } from "@/plugin"
 import { Snapshot } from "@/snapshot"

+ 1 - 1
packages/opencode/src/share/session.ts

@@ -2,7 +2,7 @@ import { Session } from "@/session"
 import { SessionID } from "@/session/schema"
 import { SyncEvent } from "@/sync"
 import { Effect, Layer, Scope, Context } from "effect"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Flag } from "../flag/flag"
 import * as ShareNext from "./share-next"
 

+ 1 - 1
packages/opencode/src/share/share-next.ts

@@ -10,7 +10,7 @@ import { Session } from "@/session"
 import { MessageV2 } from "@/session/message-v2"
 import type { SessionID } from "@/session/schema"
 import { Database, eq } from "@/storage"
-import { Config } from "@/config/config"
+import { Config } from "@/config"
 import { Log } from "@/util"
 import { SessionShareTable } from "./share.sql"
 

+ 1 - 1
packages/opencode/src/skill/skill.ts

@@ -11,7 +11,7 @@ import { Flag } from "@/flag/flag"
 import { Global } from "@/global"
 import { Permission } from "@/permission"
 import { AppFileSystem } from "@opencode-ai/shared/filesystem"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { ConfigMarkdown } from "../config"
 import { Glob } from "@opencode-ai/shared/util/glob"
 import { Log } from "../util"

+ 1 - 1
packages/opencode/src/snapshot/snapshot.ts

@@ -7,7 +7,7 @@ import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner"
 import { InstanceState } from "@/effect"
 import { AppFileSystem } from "@opencode-ai/shared/filesystem"
 import { Hash } from "@opencode-ai/shared/util/hash"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Global } from "../global"
 import { Log } from "../util"
 

+ 1 - 1
packages/opencode/src/tool/registry.ts

@@ -13,7 +13,7 @@ import { WriteTool } from "./write"
 import { InvalidTool } from "./invalid"
 import { SkillTool } from "./skill"
 import * as Tool from "./tool"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { type ToolContext as PluginToolContext, type ToolDefinition } from "@opencode-ai/plugin"
 import z from "zod"
 import { Plugin } from "../plugin"

+ 1 - 1
packages/opencode/src/tool/task.ts

@@ -6,7 +6,7 @@ import { SessionID, MessageID } from "../session/schema"
 import { MessageV2 } from "../session/message-v2"
 import { Agent } from "../agent/agent"
 import type { SessionPrompt } from "../session/prompt"
-import { Config } from "@/config/config"
+import { Config } from "../config"
 import { Effect } from "effect"
 
 export interface TaskPromptOps {

+ 1 - 1
packages/opencode/test/config/agent-color.test.ts

@@ -3,7 +3,7 @@ import { Effect } from "effect"
 import path from "path"
 import { provideInstance, tmpdir } from "../fixture/fixture"
 import { Instance } from "../../src/project/instance"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { Agent as AgentSvc } from "../../src/agent/agent"
 import { Color } from "../../src/util"
 import { AppRuntime } from "../../src/effect/app-runtime"

+ 1 - 1
packages/opencode/test/config/config.test.ts

@@ -1,7 +1,7 @@
 import { test, expect, describe, mock, afterEach, beforeEach, spyOn } from "bun:test"
 import { Deferred, Effect, Fiber, Layer, Option } from "effect"
 import { NodeFileSystem, NodePath } from "@effect/platform-node"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { EffectFlock } from "@opencode-ai/shared/util/effect-flock"
 
 import { Instance } from "../../src/project/instance"

+ 1 - 1
packages/opencode/test/config/tui.test.ts

@@ -4,7 +4,7 @@ import fs from "fs/promises"
 import { tmpdir } from "../fixture/fixture"
 import { Instance } from "../../src/project/instance"
 import { TuiConfig } from "../../src/cli/cmd/tui/config/tui"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { Global } from "../../src/global"
 import { Filesystem } from "../../src/util"
 import { AppRuntime } from "../../src/effect/app-runtime"

+ 1 - 1
packages/opencode/test/file/watcher.test.ts

@@ -5,7 +5,7 @@ import path from "path"
 import { ConfigProvider, Deferred, Effect, Layer, ManagedRuntime, Option } from "effect"
 import { tmpdir } from "../fixture/fixture"
 import { Bus } from "../../src/bus"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { FileWatcher } from "../../src/file/watcher"
 import { Git } from "../../src/git"
 import { Instance } from "../../src/project/instance"

+ 1 - 1
packages/opencode/test/fixture/fixture.ts

@@ -6,7 +6,7 @@ import { Effect, Context } from "effect"
 import type * as PlatformError from "effect/PlatformError"
 import type * as Scope from "effect/Scope"
 import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
-import type { Config } from "../../src/config/config"
+import type { Config } from "../../src/config"
 import { InstanceRef } from "../../src/effect/instance-ref"
 import { Instance } from "../../src/project/instance"
 import { TestLLMServer } from "../lib/llm-server"

+ 1 - 1
packages/opencode/test/permission-task.test.ts

@@ -1,6 +1,6 @@
 import { afterEach, describe, test, expect } from "bun:test"
 import { Permission } from "../src/permission"
-import { Config } from "../src/config/config"
+import { Config } from "../src/config"
 import { Instance } from "../src/project/instance"
 import { tmpdir } from "./fixture/fixture"
 import { AppRuntime } from "../src/effect/app-runtime"

+ 1 - 1
packages/opencode/test/session/compaction.test.ts

@@ -4,7 +4,7 @@ import { Cause, Effect, Exit, Layer, ManagedRuntime } from "effect"
 import * as Stream from "effect/Stream"
 import z from "zod"
 import { Bus } from "../../src/bus"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { Agent } from "../../src/agent/agent"
 import { LLM } from "../../src/session/llm"
 import { SessionCompaction } from "../../src/session/compaction"

+ 1 - 1
packages/opencode/test/session/processor-effect.test.ts

@@ -5,7 +5,7 @@ import path from "path"
 import type { Agent } from "../../src/agent/agent"
 import { Agent as AgentSvc } from "../../src/agent/agent"
 import { Bus } from "../../src/bus"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { Permission } from "../../src/permission"
 import { Plugin } from "../../src/plugin"
 import { Provider } from "../../src/provider"

+ 1 - 1
packages/opencode/test/session/prompt-effect.test.ts

@@ -6,7 +6,7 @@ import path from "path"
 import { Agent as AgentSvc } from "../../src/agent/agent"
 import { Bus } from "../../src/bus"
 import { Command } from "../../src/command"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { FileTime } from "../../src/file/time"
 import { LSP } from "../../src/lsp"
 import { MCP } from "../../src/mcp"

+ 1 - 1
packages/opencode/test/session/snapshot-tool-race.test.ts

@@ -32,7 +32,7 @@ import { NodeFileSystem } from "@effect/platform-node"
 import { Agent as AgentSvc } from "../../src/agent/agent"
 import { Bus } from "../../src/bus"
 import { Command } from "../../src/command"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { FileTime } from "../../src/file/time"
 import { LSP } from "../../src/lsp"
 import { MCP } from "../../src/mcp"

+ 1 - 1
packages/opencode/test/share/share-next.test.ts

@@ -8,7 +8,7 @@ import { Account } from "../../src/account"
 import { AccountRepo } from "../../src/account/repo"
 import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
 import { Bus } from "../../src/bus"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import { Provider } from "../../src/provider"
 import { Session } from "../../src/session"
 import type { SessionID } from "../../src/session/schema"

+ 1 - 1
packages/opencode/test/tool/task.test.ts

@@ -1,7 +1,7 @@
 import { afterEach, describe, expect } from "bun:test"
 import { Effect, Layer } from "effect"
 import { Agent } from "../../src/agent/agent"
-import { Config } from "../../src/config/config"
+import { Config } from "../../src/config"
 import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
 import { Instance } from "../../src/project/instance"
 import { Session } from "../../src/session"