core: move Global module to @opencode-ai/core for centralized path management

Move the Global module from packages/opencode/src/global to packages/core/src/global
to provide a unified location for managing XDG directories and application paths.
This eliminates duplicate path definitions across packages and ensures consistent
access to data, config, cache, state, log, and bin directories throughout the codebase.
This commit is contained in:
Dax Raad
2026-04-25 13:52:32 -04:00
parent 716cf74190
commit 705f792e87
61 changed files with 99 additions and 143 deletions
@@ -4,7 +4,7 @@ import path from "path"
import { pathToFileURL } from "url"
import { tmpdir } from "../../fixture/fixture"
import { createTuiPluginApi } from "../../fixture/tui-plugin"
import { Global } from "../../../src/global"
import { Global } from "@opencode-ai/core/global"
import { TuiConfig } from "../../../src/cli/cmd/tui/config/tui"
import { Filesystem } from "../../../src/util/"
+1 -1
View File
@@ -23,7 +23,7 @@ const infra = CrossSpawnSpawner.defaultLayer.pipe(
import path from "path"
import fs from "fs/promises"
import { pathToFileURL } from "url"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { ProjectID } from "../../src/project/schema"
import { Filesystem } from "../../src/util"
import { ConfigPlugin } from "@/config/plugin"
+1 -1
View File
@@ -5,7 +5,7 @@ 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"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { Filesystem } from "../../src/util"
import { AppRuntime } from "../../src/effect/app-runtime"
import { Effect, Layer } from "effect"
@@ -7,7 +7,7 @@ import { tmpdir } from "../fixture/fixture"
import { Instance } from "../../src/project/instance"
import { Provider } from "../../src/provider"
import { Env } from "../../src/env"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { Filesystem } from "../../src/util"
import { Effect } from "effect"
import { AppRuntime } from "../../src/effect/app-runtime"
@@ -11,7 +11,7 @@ export {}
// import { Instance } from "../../src/project/instance"
// import { Provider } from "../../src/provider"
// import { Env } from "../../src/env"
// import { Global } from "../../src/global"
// import { Global } from "@opencode-ai/core/global"
// import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
// test("GitLab Duo: loads provider with API key from environment", async () => {
@@ -3,7 +3,7 @@ import { mkdir, unlink } from "fs/promises"
import path from "path"
import { tmpdir } from "../fixture/fixture"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { Instance } from "../../src/project/instance"
import { Plugin } from "../../src/plugin/index"
import { ModelsDev } from "../../src/provider"
@@ -6,7 +6,7 @@ import { Instruction } from "../../src/session/instruction"
import type { MessageV2 } from "../../src/session/message-v2"
import { Instance } from "../../src/project/instance"
import { MessageID, PartID, SessionID } from "../../src/session/schema"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { tmpdir } from "../fixture/fixture"
const run = <A>(effect: Effect.Effect<A, any, Instruction.Service>) =>
@@ -1,7 +1,7 @@
import { describe, test, expect, beforeAll, afterAll } from "bun:test"
import { Effect } from "effect"
import { Discovery } from "../../src/skill/discovery"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { Filesystem } from "../../src/util"
import { rm } from "fs/promises"
import path from "path"
+1 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import path from "path"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { InstallationChannel } from "@opencode-ai/core/installation/version"
import { Database } from "../../src/storage"
@@ -6,7 +6,7 @@ import path from "path"
import fs from "fs/promises"
import { readFileSync, readdirSync } from "fs"
import { JsonMigration } from "../../src/storage"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { ProjectTable } from "../../src/project/project.sql"
import { ProjectID } from "../../src/project/schema"
import { SessionTable, MessageTable, PartTable, TodoTable, PermissionTable } from "../../src/session/session.sql"
@@ -4,7 +4,7 @@ import { Effect, Exit, Layer } from "effect"
import { AppFileSystem } from "@opencode-ai/core/filesystem"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Git } from "../../src/git"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { Storage } from "../../src/storage"
import { tmpdirScoped } from "../fixture/fixture"
import { testEffect } from "../lib/effect"
+1 -1
View File
@@ -1,7 +1,7 @@
import { afterEach, expect, test } from "bun:test"
import fs from "fs/promises"
import path from "path"
import { Global } from "../../src/global"
import { Global } from "@opencode-ai/core/global"
import { Log } from "../../src/util"
import { tmpdir } from "../fixture/fixture"