diff --git a/bun.lock b/bun.lock index b767909b3a9f..bb621335ec37 100644 --- a/bun.lock +++ b/bun.lock @@ -126,14 +126,15 @@ "dependencies": { "@effect/platform-node": "catalog:", "@opencode-ai/client": "workspace:*", - "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", "@opencode-ai/schema": "workspace:*", "@opencode-ai/server": "workspace:*", "@opencode-ai/tui": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "@opentui/solid": "catalog:", "@parcel/watcher": "2.5.1", + "@silvia-odwyer/photon-node": "0.3.4", "effect": "catalog:", "immer": "11.1.4", "jsonc-parser": "3.3.1", @@ -358,52 +359,38 @@ "@ai-sdk/vercel": "2.0.39", "@ai-sdk/xai": "3.0.102", "@aws-sdk/credential-providers": "3.1057.0", - "@effect/opentelemetry": "catalog:", "@effect/platform-node": "catalog:", "@effect/sql-sqlite-bun": "catalog:", "@ff-labs/fff-bun": "0.9.4", "@lydell/node-pty": "catalog:", "@modelcontextprotocol/sdk": "1.29.0", - "@npmcli/arborist": "9.4.0", - "@npmcli/config": "10.8.1", "@opencode-ai/ai": "workspace:*", "@opencode-ai/codemode": "workspace:*", "@opencode-ai/effect-drizzle-sqlite": "workspace:*", "@opencode-ai/effect-sqlite-node": "workspace:*", "@opencode-ai/plugin": "workspace:*", "@opencode-ai/schema": "workspace:*", + "@opencode-ai/util": "workspace:*", "@openrouter/ai-sdk-provider": "2.9.0", - "@opentelemetry/api": "1.9.0", - "@opentelemetry/context-async-hooks": "2.6.1", - "@opentelemetry/exporter-trace-otlp-http": "0.214.0", - "@opentelemetry/sdk-trace-base": "2.6.1", - "@opentelemetry/sdk-trace-node": "2.6.1", "@parcel/watcher": "2.5.1", "@silvia-odwyer/photon-node": "0.3.4", "ai-gateway-provider": "3.1.2", "bun-pty": "0.4.8", - "cross-spawn": "catalog:", "diff": "catalog:", "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", "gitlab-ai-provider": "6.11.1", - "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", "htmlparser2": "8.0.2", "ignore": "7.0.5", "immer": "11.1.4", "jsonc-parser": "3.3.1", - "mime-types": "3.0.2", - "minimatch": "10.2.5", - "npm-package-arg": "13.0.2", - "resolve.exports": "catalog:", "semver": "^7.6.3", "turndown": "7.2.0", "venice-ai-sdk-provider": "2.1.1", "which": "6.0.1", - "xdg-basedir": "5.1.0", "zod": "catalog:", }, "devDependencies": { @@ -418,10 +405,7 @@ "@parcel/watcher-win32-x64": "2.5.1", "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", - "@types/cross-spawn": "catalog:", "@types/node": "catalog:", - "@types/npm-package-arg": "6.1.4", - "@types/npmcli__arborist": "6.3.3", "@types/semver": "catalog:", "@types/turndown": "5.0.5", "@types/which": "3.0.4", @@ -706,6 +690,7 @@ "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", "@opencode-ai/simulation": "workspace:*", + "@opencode-ai/util": "workspace:*", "drizzle-orm": "catalog:", "effect": "catalog:", }, @@ -771,6 +756,7 @@ "@opencode-ai/ai": "workspace:*", "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "effect": "catalog:", }, @@ -898,6 +884,7 @@ "@opencode-ai/schema": "workspace:*", "@opencode-ai/simulation": "workspace:*", "@opencode-ai/ui": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", @@ -972,6 +959,38 @@ "solid-js": "^1.9.0", }, }, + "packages/util": { + "name": "@opencode-ai/util", + "version": "1.18.3", + "dependencies": { + "@effect/opentelemetry": "catalog:", + "@effect/platform-node": "catalog:", + "@npmcli/arborist": "catalog:", + "@npmcli/config": "10.8.1", + "@opencode-ai/ai": "workspace:*", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/context-async-hooks": "2.6.1", + "@opentelemetry/exporter-trace-otlp-http": "0.214.0", + "@opentelemetry/sdk-trace-base": "2.6.1", + "cross-spawn": "catalog:", + "effect": "catalog:", + "glob": "13.0.5", + "mime-types": "3.0.2", + "minimatch": "10.2.5", + "npm-package-arg": "13.0.2", + "resolve.exports": "catalog:", + "xdg-basedir": "5.1.0", + }, + "devDependencies": { + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@types/cross-spawn": "catalog:", + "@types/node": "catalog:", + "@types/npm-package-arg": "6.1.4", + "@types/npmcli__arborist": "6.3.3", + "@typescript/native-preview": "catalog:", + }, + }, "packages/web": { "name": "@opencode-ai/web", "version": "1.18.4", @@ -2098,6 +2117,8 @@ "@opencode-ai/ui": ["@opencode-ai/ui@workspace:packages/ui"], + "@opencode-ai/util": ["@opencode-ai/util@workspace:packages/util"], + "@opencode-ai/web": ["@opencode-ai/web@workspace:packages/web"], "@opencode-ai/www": ["@opencode-ai/www@workspace:packages/www"], diff --git a/package.json b/package.json index c8b778f207fe..7bb37f946f4c 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dev:www": "bun run --cwd packages/www dev", "dev:storybook": "bun --cwd packages/storybook storybook", "lint": "oxlint", - "lint:effect-patterns": "ast-grep scan -c script/ast-grep/sgconfig.yml packages/core/src packages/server/src packages/protocol/src packages/cli/src", + "lint:effect-patterns": "ast-grep scan -c script/ast-grep/sgconfig.yml packages/util/src packages/core/src packages/server/src packages/protocol/src packages/cli/src", "test:lint-rules": "ast-grep test -c script/ast-grep/sgconfig.yml", "typecheck": "bun turbo typecheck --concurrency=3", "typecheck:profile": "bun script/profile-typecheck.ts", diff --git a/packages/cli/package.json b/packages/cli/package.json index a3fbfc7630e1..096124aea758 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,14 +25,15 @@ "dependencies": { "@effect/platform-node": "catalog:", "@opencode-ai/client": "workspace:*", - "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", "@opencode-ai/schema": "workspace:*", "@opencode-ai/server": "workspace:*", "@opencode-ai/tui": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "@opentui/solid": "catalog:", "@parcel/watcher": "2.5.1", + "@silvia-odwyer/photon-node": "0.3.4", "effect": "catalog:", "immer": "11.1.4", "jsonc-parser": "3.3.1", diff --git a/packages/cli/script/node-assets.ts b/packages/cli/script/node-assets.ts index 749a0f74c259..cde31db13f6e 100644 --- a/packages/cli/script/node-assets.ts +++ b/packages/cli/script/node-assets.ts @@ -1,6 +1,5 @@ import { createHash } from "node:crypto" import { copyFile, mkdir, readdir, readFile, stat } from "node:fs/promises" -import { createRequire } from "node:module" import path from "node:path" import { fileURLToPath } from "node:url" import { getNodeAssets } from "@opentui/core/node-assets" @@ -40,7 +39,7 @@ export async function collectNodeAssets(target: NodeTarget) { { key: target.parcelWatcherAsset, source: fileURLToPath(import.meta.resolve(target.parcelWatcherPackage)) }, { key: photonWasmAsset, - source: createRequire(path.resolve(dir, "../core/package.json")).resolve(photonWasmAsset), + source: fileURLToPath(import.meta.resolve(photonWasmAsset)), }, ...attentionSoundAssets.map((key) => ({ key, diff --git a/packages/cli/src/commands/handlers/console/login.ts b/packages/cli/src/commands/handlers/console/login.ts index cb2eee5193de..380944d52724 100644 --- a/packages/cli/src/commands/handlers/console/login.ts +++ b/packages/cli/src/commands/handlers/console/login.ts @@ -1,7 +1,7 @@ import { Cause, Effect, Exit, Option } from "effect" import { Service } from "@opencode-ai/client/effect/service" import { OpenCode, type OpenCodeClient } from "@opencode-ai/client/promise" -import { AppProcess } from "@opencode-ai/core/process" +import { AppProcess } from "@opencode-ai/util/process" import { Commands } from "../../commands" import { Runtime } from "../../../framework/runtime" import { ServiceConfig } from "../../../services/service-config" diff --git a/packages/cli/src/commands/handlers/default.ts b/packages/cli/src/commands/handlers/default.ts index 535003ed1a9f..325f2c2b3ac2 100644 --- a/packages/cli/src/commands/handlers/default.ts +++ b/packages/cli/src/commands/handlers/default.ts @@ -1,5 +1,5 @@ -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { Global } from "@opencode-ai/core/global" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" import { run } from "@opencode-ai/tui" import { Commands } from "../commands" import { Runtime } from "../../framework/runtime" @@ -8,7 +8,7 @@ import { Context, Effect, FileSystem, Option } from "effect" import { ServerConnection } from "../../services/server-connection" import { Updater } from "../../services/updater" import { UpdatePreflight } from "../../services/update-preflight" -import { Npm } from "@opencode-ai/core/npm" +import { Npm } from "@opencode-ai/util/npm" export default Runtime.handler(Commands, (input) => Effect.gen(function* () { diff --git a/packages/cli/src/commands/handlers/mcp/add.ts b/packages/cli/src/commands/handlers/mcp/add.ts index 348bca228d51..89d2c937f19b 100644 --- a/packages/cli/src/commands/handlers/mcp/add.ts +++ b/packages/cli/src/commands/handlers/mcp/add.ts @@ -3,7 +3,7 @@ import path from "node:path" import { readFile, stat, writeFile } from "node:fs/promises" import { Effect, Option } from "effect" import { applyEdits, modify } from "jsonc-parser" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Commands } from "../../commands" import { Runtime } from "../../../framework/runtime" diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index d9f01b3fce5b..e655802b7bf5 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -1,6 +1,6 @@ export * as Config from "./config" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Context, Effect, FileSystem, Layer, Option, Schema, Semaphore } from "effect" import { produce, type Draft } from "immer" import { applyEdits, modify, parse, type ParseError } from "jsonc-parser" diff --git a/packages/cli/src/framework/runtime.ts b/packages/cli/src/framework/runtime.ts index a353a38a2017..a2ad9e8cbf94 100644 --- a/packages/cli/src/framework/runtime.ts +++ b/packages/cli/src/framework/runtime.ts @@ -1,10 +1,10 @@ import { Effect, FileSystem, Scope } from "effect" import { Command } from "effect/unstable/cli" import { Spec } from "./spec" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Updater } from "../services/updater" import { Config } from "../config" -import { Npm } from "@opencode-ai/core/npm" +import { Npm } from "@opencode-ai/util/npm" export type Input = Value extends Spec.Node diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index db269e507f77..d5138b5c49b4 100755 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -4,14 +4,14 @@ import { NodeRuntime, NodeServices } from "@effect/platform-node" import { Effect } from "effect" import { Commands } from "./commands/commands" import { Runtime } from "./framework/runtime" -import { Observability } from "@opencode-ai/core/observability" +import { Observability } from "@opencode-ai/util/observability" import { Updater } from "./services/updater" -import { InstallationChannel, InstallationVersion, InstallationLocal } from "@opencode-ai/core/installation/version" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { Global } from "@opencode-ai/core/global" -import { AppProcess } from "@opencode-ai/core/process" +import { InstallationChannel, InstallationVersion, InstallationLocal } from "@opencode-ai/util/installation/version" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" +import { AppProcess } from "@opencode-ai/util/process" import { Config } from "./config" -import { Npm } from "@opencode-ai/core/npm" +import { Npm } from "@opencode-ai/util/npm" const Handlers = Runtime.handlers(Commands, { $: () => import("./commands/handlers/default"), diff --git a/packages/cli/src/mini-host.ts b/packages/cli/src/mini-host.ts index 935248691f51..49078695c18e 100644 --- a/packages/cli/src/mini-host.ts +++ b/packages/cli/src/mini-host.ts @@ -1,6 +1,6 @@ import type { MiniFrontendInput } from "@opencode-ai/tui/mini" import { createModelPreferenceRepository } from "@opencode-ai/tui/model-preference" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import fs from "node:fs" import { readFile } from "node:fs/promises" import path from "node:path" diff --git a/packages/cli/src/run/run.ts b/packages/cli/src/run/run.ts index 6ebec1b3c415..496bdfa86d0d 100644 --- a/packages/cli/src/run/run.ts +++ b/packages/cli/src/run/run.ts @@ -1,6 +1,6 @@ import { Service, type Endpoint } from "@opencode-ai/client/effect/service" import { OpenCode, type OpenCodeClient, type SessionMessageAssistantTool } from "@opencode-ai/client/promise" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { open } from "node:fs/promises" import path from "node:path" import { readStdin } from "../util/io" diff --git a/packages/cli/src/server-process.ts b/packages/cli/src/server-process.ts index fd952139e5e5..8591fd3060ab 100644 --- a/packages/cli/src/server-process.ts +++ b/packages/cli/src/server-process.ts @@ -2,10 +2,10 @@ export * as ServerProcess from "./server-process" import { NodeServices } from "@effect/platform-node" import { Service, type DiscoverOptions, type Info } from "@opencode-ai/client/effect/service" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { Global } from "@opencode-ai/core/global" -import { InstallationVersion } from "@opencode-ai/core/installation/version" -import { AppProcess } from "@opencode-ai/core/process" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" +import { InstallationVersion } from "@opencode-ai/util/installation/version" +import { AppProcess } from "@opencode-ai/util/process" import { randomBytes, randomUUID } from "node:crypto" import path from "node:path" import { Effect, FileSystem, Logger, Option, Redacted, Schedule, Schema } from "effect" diff --git a/packages/cli/src/services/server-connection.ts b/packages/cli/src/services/server-connection.ts index 2fa39672528a..70bd2fcda272 100644 --- a/packages/cli/src/services/server-connection.ts +++ b/packages/cli/src/services/server-connection.ts @@ -1,6 +1,6 @@ import { Service, type Endpoint, type EnsureOptions } from "@opencode-ai/client/effect/service" import { ClientError, isUnauthorizedError, OpenCode } from "@opencode-ai/client/promise" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Effect, Redacted } from "effect" import { Env } from "../env" import { ServiceConfig } from "./service-config" diff --git a/packages/cli/src/services/service-config.ts b/packages/cli/src/services/service-config.ts index 58c7c76935d5..b96bb578c8b3 100644 --- a/packages/cli/src/services/service-config.ts +++ b/packages/cli/src/services/service-config.ts @@ -1,6 +1,6 @@ -import { Global } from "@opencode-ai/core/global" -import { InstallationChannel, InstallationVersion } from "@opencode-ai/core/installation/version" -import { Hash } from "@opencode-ai/core/util/hash" +import { Global } from "@opencode-ai/util/global" +import { InstallationChannel, InstallationVersion } from "@opencode-ai/util/installation/version" +import { Hash } from "@opencode-ai/util/hash" import { Service } from "@opencode-ai/client/effect/service" import { Effect, FileSystem, Option, Schema } from "effect" import { randomBytes } from "crypto" @@ -25,17 +25,21 @@ const decodeInfo = Schema.decodeUnknownEffect(Schema.fromJsonString(Info)) const decodeRegistration = Schema.decodeUnknownEffect(Schema.fromJsonString(Service.Info)) export function filename(channel = InstallationChannel) { - if (channel === "latest") return "service.json" - if (channel === "local") return "service-local.json" - return `service-${Hash.fast(channel)}.json` + if (channel === "latest" || channel === "next") return "service.json" + return `service-${channel.replace(/[^a-zA-Z0-9._-]/g, "-")}.json` } export function defaultPort(channel = InstallationChannel) { - if (channel === "latest") return 0xc0de + if (channel === "latest" || channel === "next") return 0xc0de if (channel === "local") return 0xc0df return 10_000 + (Number.parseInt(Hash.fast(channel).slice(0, 8), 16) % 50_000) } +export function legacyFilename(channel = InstallationChannel) { + if (channel === "latest" || channel === "local") return + return `service-${Hash.fast(channel)}.json` +} + export function versionBelongsToChannel( version: string | undefined, channel = InstallationChannel, @@ -54,7 +58,6 @@ export const migrateRegistration = Effect.fnUntraced(function* ( channel = InstallationChannel, installedVersion = InstallationVersion, ) { - if (channel === "latest" || channel === "local") return const fs = yield* FileSystem.FileSystem const text = yield* fs.readFileString(legacy).pipe(Effect.option) if (Option.isNone(text)) return @@ -64,6 +67,14 @@ export const migrateRegistration = Effect.fnUntraced(function* ( yield* fs.writeFileString(file, text.value, { flag: "wx", mode: 0o600 }).pipe(Effect.ignore) }) +export const migrateConfig = Effect.fnUntraced(function* (legacy: string, file: string) { + const fs = yield* FileSystem.FileSystem + const text = yield* fs.readFileString(legacy).pipe(Effect.option) + if (Option.isNone(text)) return + if (Option.isNone(yield* decodeInfo(text.value).pipe(Effect.option))) return + yield* fs.writeFileString(file, text.value, { flag: "wx", mode: 0o600 }).pipe(Effect.ignore) +}) + function configKey(key: string): Key { if (key === "hostname" || key === "port" || key === "password") return key throw new Error(`Unknown service config key: ${key}`) @@ -73,18 +84,23 @@ const paths = Effect.gen(function* () { const fs = yield* FileSystem.FileSystem const global = yield* Global.Service const name = filename() + const legacy = legacyFilename() const file = path.join(global.state, name) return { fs, file, - legacyFile: path.join(global.state, "service.json"), + legacyConfigFile: legacy ? path.join(global.config, legacy) : undefined, + legacyRegistrationFiles: [ + ...(legacy ? [path.join(global.state, legacy)] : []), + ...(name !== "service.json" && InstallationChannel !== "local" ? [path.join(global.state, "service.json")] : []), + ], configFile: path.join(global.config, name), } }) export const options = Effect.fnUntraced(function* () { - const { file, legacyFile } = yield* paths - yield* migrateRegistration(legacyFile, file) + const { file, legacyRegistrationFiles } = yield* paths + yield* Effect.forEach(legacyRegistrationFiles, (legacy) => migrateRegistration(legacy, file)) return { file, version: InstallationVersion, @@ -93,7 +109,8 @@ export const options = Effect.fnUntraced(function* () { }) export const read = Effect.fn("cli.service-config.read")(function* () { - const { fs, configFile } = yield* paths + const { fs, configFile, legacyConfigFile } = yield* paths + if (legacyConfigFile) yield* migrateConfig(legacyConfigFile, configFile) return yield* fs.readFileString(configFile).pipe( Effect.flatMap(decodeInfo), Effect.catch(() => Effect.succeed({} as Info)), diff --git a/packages/cli/src/services/standalone.ts b/packages/cli/src/services/standalone.ts index 899af8153fbe..3a98a578e418 100644 --- a/packages/cli/src/services/standalone.ts +++ b/packages/cli/src/services/standalone.ts @@ -1,6 +1,6 @@ import { Service, type Endpoint } from "@opencode-ai/client/effect/service" -import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Deferred, Effect, Schema, Stream } from "effect" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" import { randomBytes } from "node:crypto" diff --git a/packages/cli/src/services/update-preflight.tsx b/packages/cli/src/services/update-preflight.tsx index f1dc57c460af..87a4c46ed75e 100644 --- a/packages/cli/src/services/update-preflight.tsx +++ b/packages/cli/src/services/update-preflight.tsx @@ -3,7 +3,7 @@ // version-mismatched background service before the TUI attaches. import { createCliRenderer, RGBA, TextAttributes, type CliRenderer, type ThemeMode } from "@opentui/core" import { render, useTerminalDimensions } from "@opentui/solid" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { registerOpencodeSpinner } from "@opencode-ai/tui/component/register-spinner" import { SPINNER_FRAMES } from "@opencode-ai/tui/component/spinner" import { go } from "@opencode-ai/tui/logo" diff --git a/packages/cli/src/services/updater.ts b/packages/cli/src/services/updater.ts index db43fe334f07..a1b10b699a5b 100644 --- a/packages/cli/src/services/updater.ts +++ b/packages/cli/src/services/updater.ts @@ -1,10 +1,10 @@ -import { Global } from "@opencode-ai/core/global" -import { AppProcess } from "@opencode-ai/core/process" +import { Global } from "@opencode-ai/util/global" +import { AppProcess } from "@opencode-ai/util/process" import { InstallationChannel, InstallationLocal, InstallationVersion, -} from "@opencode-ai/core/installation/version" +} from "@opencode-ai/util/installation/version" import { Context, Duration, Effect, FileSystem, Layer } from "effect" import { ChildProcess } from "effect/unstable/process" import { parse, type ParseError } from "jsonc-parser" diff --git a/packages/cli/test/config.test.ts b/packages/cli/test/config.test.ts index 41c023d1a1ab..db0074edb29b 100644 --- a/packages/cli/test/config.test.ts +++ b/packages/cli/test/config.test.ts @@ -1,5 +1,5 @@ import { NodeFileSystem } from "@effect/platform-node" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Effect } from "effect" import { expect, test } from "bun:test" import path from "path" diff --git a/packages/cli/test/import-boundaries.test.ts b/packages/cli/test/import-boundaries.test.ts index 039ea9763726..f0eef3cbd8bf 100644 --- a/packages/cli/test/import-boundaries.test.ts +++ b/packages/cli/test/import-boundaries.test.ts @@ -5,6 +5,16 @@ import path from "node:path" const root = path.resolve(import.meta.dir, "../../..") describe("CLI frontend import boundaries", () => { + test("does not import Core directly", async () => { + const glob = new Bun.Glob("{src,test}/**/*.{ts,tsx}") + const imports: string[] = [] + for await (const file of glob.scan({ cwd: path.join(root, "packages/cli") })) { + const source = await Bun.file(path.join(root, "packages/cli", file)).text() + if (/["']@opencode-ai\/core(?:\/[^"']*)?["']/.test(source)) imports.push(file) + } + expect(imports).toEqual([]) + }) + test("exposes only the intentional package entrypoints", async () => { const run = await import("@opencode-ai/cli/run") const mini = await import("@opencode-ai/tui/mini") diff --git a/packages/cli/test/mini.test.ts b/packages/cli/test/mini.test.ts index 357506d6c2aa..50af6e205ffa 100644 --- a/packages/cli/test/mini.test.ts +++ b/packages/cli/test/mini.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test" import { ClientError, OpenCode } from "@opencode-ai/client/promise" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import path from "node:path" import { createMiniConnection, mergeInput as mergeInteractiveInput, resolveMiniTarget } from "../src/mini" import { mergeInput as mergeNonInteractiveInput, parseRunModel } from "../src/run/run" diff --git a/packages/cli/test/server-connection.test.ts b/packages/cli/test/server-connection.test.ts index 41a061f57c03..c5407f7f3213 100644 --- a/packages/cli/test/server-connection.test.ts +++ b/packages/cli/test/server-connection.test.ts @@ -1,6 +1,6 @@ import { NodeFileSystem } from "@effect/platform-node" -import { Global } from "@opencode-ai/core/global" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { Global } from "@opencode-ai/util/global" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { expect, test } from "bun:test" import { Effect, FileSystem, Scope } from "effect" import fs from "node:fs/promises" diff --git a/packages/cli/test/service.test.ts b/packages/cli/test/service.test.ts index 2194bfe20d21..801fe5ad7750 100644 --- a/packages/cli/test/service.test.ts +++ b/packages/cli/test/service.test.ts @@ -1,18 +1,9 @@ import { NodeFileSystem } from "@effect/platform-node" import { Service, type Info } from "@opencode-ai/client/effect/service" -import { Database } from "@opencode-ai/core/database/database" -import { EventV2 } from "@opencode-ai/core/event" -import { EventTable } from "@opencode-ai/core/event/sql" -import { Global } from "@opencode-ai/core/global" -import { InstallationVersion } from "@opencode-ai/core/installation/version" -import { Project } from "@opencode-ai/core/project" -import { ProjectTable } from "@opencode-ai/core/project/sql" -import { AbsolutePath } from "@opencode-ai/core/schema" -import { SessionV2 } from "@opencode-ai/core/session" -import { SessionEvent } from "@opencode-ai/core/session/event" -import { SessionTable } from "@opencode-ai/core/session/sql" +import { Global } from "@opencode-ai/util/global" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { expect, test } from "bun:test" -import { Effect, Schedule, Schema } from "effect" +import { Effect, Schema } from "effect" import fs from "node:fs/promises" import os from "node:os" import path from "node:path" @@ -20,6 +11,7 @@ import { ServiceConfig } from "../src/services/service-config" test("managed service ports are stable per installation channel", () => { expect(ServiceConfig.defaultPort("latest")).toBe(0xc0de) + expect(ServiceConfig.defaultPort("next")).toBe(0xc0de) expect(ServiceConfig.defaultPort("local")).toBe(0xc0df) expect(ServiceConfig.defaultPort("preview-a")).toBe(ServiceConfig.defaultPort("preview-a")) expect(ServiceConfig.defaultPort("preview-a")).not.toBe(ServiceConfig.defaultPort("preview-b")) @@ -43,17 +35,35 @@ test("local channel stores service config with the local service filename", asyn } }) -test("service filenames isolate installation channels", () => { +test("service filenames share release channels and identify preview channels", () => { expect(ServiceConfig.filename("latest")).toBe("service.json") + expect(ServiceConfig.filename("next")).toBe("service.json") expect(ServiceConfig.filename("local")).toBe("service-local.json") - expect(ServiceConfig.filename("preview-a")).not.toBe(ServiceConfig.filename("preview-b")) - expect(ServiceConfig.filename("preview-a")).not.toBe(ServiceConfig.filename("latest")) + expect(ServiceConfig.filename("preview-a")).toBe("service-preview-a.json") + expect(ServiceConfig.filename("preview/a")).toBe("service-preview-a.json") expect(ServiceConfig.versionBelongsToChannel("0.0.0-preview-a-1234", "preview-a")).toBe(true) expect(ServiceConfig.versionBelongsToChannel("0.0.0-preview-a-1234.2", "preview-a")).toBe(true) expect(ServiceConfig.versionBelongsToChannel("0.0.0-preview-a-other-1234", "preview-a")).toBe(false) expect(ServiceConfig.versionBelongsToChannel("1.2.3", "preview-a")).toBe(false) }) +test("service config migrates from the hashed channel filename", async () => { + const root = await fs.mkdtemp(path.join(os.tmpdir(), "opencode-service-config-migration-")) + const legacy = path.join(root, ServiceConfig.legacyFilename("preview-a")!) + const target = path.join(root, ServiceConfig.filename("preview-a")) + try { + await fs.writeFile(legacy, JSON.stringify({ hostname: "127.0.0.2", port: 4098 })) + await Effect.runPromise(ServiceConfig.migrateConfig(legacy, target).pipe(Effect.provide(NodeFileSystem.layer))) + expect(await Bun.file(target).json()).toEqual({ hostname: "127.0.0.2", port: 4098 }) + + await fs.writeFile(target, JSON.stringify({ port: 4099 })) + await Effect.runPromise(ServiceConfig.migrateConfig(legacy, target).pipe(Effect.provide(NodeFileSystem.layer))) + expect(await Bun.file(target).json()).toEqual({ port: 4099 }) + } finally { + await fs.rm(root, { recursive: true, force: true }) + } +}) + test("preview registration migration never moves stable discovery", async () => { const root = await fs.mkdtemp(path.join(os.tmpdir(), "opencode-service-migration-")) const legacy = path.join(root, "service.json") @@ -185,31 +195,6 @@ test("concurrent service processes elect one server", async () => { XDG_DATA_HOME: path.join(root, "data"), XDG_STATE_HOME: path.join(root, "state"), } - const sessionID = SessionV2.ID.make("ses_service_recovery") - await withDatabase( - database, - Effect.gen(function* () { - const { db } = yield* Database.Service - yield* db - .insert(ProjectTable) - .values({ id: Project.ID.global, worktree: AbsolutePath.make(root), sandboxes: [] }) - .run() - .pipe(Effect.orDie) - yield* db - .insert(SessionTable) - .values({ - id: sessionID, - project_id: Project.ID.global, - slug: "recovery", - directory: root, - title: "recovery", - version: "test", - time_suspended: Date.now(), - }) - .run() - .pipe(Effect.orDie) - }), - ) const command = [process.execPath, path.join(import.meta.dir, "../src/index.ts"), "serve", "--service"] const registration = path.join(root, "state", "opencode", "service-local.json") const port = await availablePort() @@ -262,20 +247,6 @@ test("concurrent service processes elect one server", async () => { contender.kill("SIGTERM") await contender.exited } - expect( - await withDatabase( - database, - Effect.gen(function* () { - const { db } = yield* Database.Service - return yield* db - .select({ timeSuspended: SessionTable.time_suspended }) - .from(SessionTable) - .get() - .pipe(Effect.orDie) - }), - ), - ).toEqual({ timeSuspended: null }) - expect(await waitForExecutionStart(database, sessionID)).toBe(1) await Effect.runPromise(Service.stop({ file: registration }).pipe(Effect.provide(NodeFileSystem.layer))) await winner?.exited expect(await Bun.file(registration).exists()).toBe(false) @@ -510,40 +481,6 @@ test("a failed service stays registered and owns the selected port until stopped } }, 30_000) -function withDatabase(file: string, effect: Effect.Effect) { - return Effect.runPromise(effect.pipe(Effect.provide(Database.layer({ path: file })), Effect.scoped)) -} - -function waitForExecutionStart(file: string, sessionID: SessionV2.ID) { - return withDatabase( - file, - Effect.gen(function* () { - const { db } = yield* Database.Service - return yield* db - .select({ id: EventTable.id, sessionID: EventTable.aggregate_id, type: EventTable.type }) - .from(EventTable) - .all() - .pipe( - Effect.orDie, - Effect.map((rows) => - rows.filter( - (row) => - row.sessionID === sessionID && - row.type === - EventV2.versionedType( - SessionEvent.Execution.Started.type, - SessionEvent.Execution.Started.durable.version, - ), - ), - ), - Effect.filterOrFail((rows) => rows.length > 0), - Effect.map((rows) => rows.length), - Effect.retry(Schedule.max([Schedule.spaced("50 millis"), Schedule.recurs(200)])), - ) - }), - ) -} - async function waitForInfo(file: string, accept: (info: Info) => boolean = () => true) { for (let attempt = 0; attempt < 400; attempt++) { const value = await Bun.file(file) diff --git a/packages/core/package.json b/packages/core/package.json index 44ad033a9add..3dfce047f46f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -16,8 +16,6 @@ "opencode": "./bin/opencode" }, "exports": { - "./effect/layer-node": "./src/effect/layer-node.ts", - "./effect/app-node": "./src/effect/app-node.ts", "./session/runner": "./src/session/runner/index.ts", "./instructions": "./src/instructions/index.ts", "./*": "./src/*.ts" @@ -44,9 +42,9 @@ "default": "./src/image/photon-wasm.bun.ts" }, "#runtime-import": { - "bun": "./src/runtime/import.bun.ts", - "node": "./src/runtime/import.node.ts", - "default": "./src/runtime/import.bun.ts" + "bun": "@opencode-ai/util/runtime/import.bun", + "node": "@opencode-ai/util/runtime/import.node", + "default": "@opencode-ai/util/runtime/import.bun" }, "#process-lock-ffi": { "bun": "./src/util/process-lock-ffi.bun.ts", @@ -57,10 +55,7 @@ "devDependencies": { "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", - "@types/cross-spawn": "catalog:", "@types/node": "catalog:", - "@types/npm-package-arg": "6.1.4", - "@types/npmcli__arborist": "6.3.3", "@types/semver": "catalog:", "@types/turndown": "5.0.5", "@types/which": "3.0.4", @@ -97,52 +92,38 @@ "@ai-sdk/vercel": "2.0.39", "@ai-sdk/xai": "3.0.102", "@aws-sdk/credential-providers": "3.1057.0", - "@effect/opentelemetry": "catalog:", "@effect/platform-node": "catalog:", "@effect/sql-sqlite-bun": "catalog:", "@lydell/node-pty": "catalog:", "@modelcontextprotocol/sdk": "1.29.0", "@ff-labs/fff-bun": "0.9.4", - "@npmcli/arborist": "9.4.0", - "@npmcli/config": "10.8.1", "@opencode-ai/codemode": "workspace:*", "@opencode-ai/effect-drizzle-sqlite": "workspace:*", "@opencode-ai/effect-sqlite-node": "workspace:*", "@opencode-ai/ai": "workspace:*", "@opencode-ai/schema": "workspace:*", "@opencode-ai/plugin": "workspace:*", - "@opentelemetry/api": "1.9.0", - "@opentelemetry/context-async-hooks": "2.6.1", - "@opentelemetry/exporter-trace-otlp-http": "0.214.0", - "@opentelemetry/sdk-trace-base": "2.6.1", - "@opentelemetry/sdk-trace-node": "2.6.1", + "@opencode-ai/util": "workspace:*", "@parcel/watcher": "2.5.1", "@silvia-odwyer/photon-node": "0.3.4", "@openrouter/ai-sdk-provider": "2.9.0", "ai-gateway-provider": "3.1.2", "bun-pty": "0.4.8", - "cross-spawn": "catalog:", "diff": "catalog:", "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", "gitlab-ai-provider": "6.11.1", - "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", "htmlparser2": "8.0.2", "immer": "11.1.4", "ignore": "7.0.5", "jsonc-parser": "3.3.1", - "mime-types": "3.0.2", - "minimatch": "10.2.5", - "npm-package-arg": "13.0.2", - "resolve.exports": "catalog:", "semver": "^7.6.3", "turndown": "7.2.0", "venice-ai-sdk-provider": "2.1.1", "which": "6.0.1", - "xdg-basedir": "5.1.0", "zod": "catalog:" }, "overrides": { diff --git a/packages/core/src/agent.ts b/packages/core/src/agent.ts index 822eab9a4a25..23f1fd1240b5 100644 --- a/packages/core/src/agent.ts +++ b/packages/core/src/agent.ts @@ -1,6 +1,6 @@ export * as AgentV2 from "./agent" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Array, Context, Effect, Layer, Types } from "effect" import { Agent } from "@opencode-ai/schema/agent" import { EventV2 } from "./event" diff --git a/packages/core/src/aisdk.ts b/packages/core/src/aisdk.ts index f4f9b03f7186..d81d62505757 100644 --- a/packages/core/src/aisdk.ts +++ b/packages/core/src/aisdk.ts @@ -1,6 +1,6 @@ export * as AISDK from "./aisdk" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import type { JSONSchema7, JSONValue, diff --git a/packages/core/src/catalog.ts b/packages/core/src/catalog.ts index c12793b3589c..9f634447907f 100644 --- a/packages/core/src/catalog.ts +++ b/packages/core/src/catalog.ts @@ -1,6 +1,6 @@ export * as Catalog from "./catalog" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Array, Context, Effect, Layer, Option, Order, pipe } from "effect" import { Catalog } from "@opencode-ai/schema/catalog" import { ModelV2 } from "./model" diff --git a/packages/core/src/command.ts b/packages/core/src/command.ts index 4b23b0b3fbf0..f673231beb5f 100644 --- a/packages/core/src/command.ts +++ b/packages/core/src/command.ts @@ -1,12 +1,12 @@ export * as CommandV2 from "./command" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Schema, Types } from "effect" import { Command } from "@opencode-ai/schema/command" import { State } from "./state" import { MCP } from "./mcp/index" import { EventV2 } from "./event" -import { AppProcess } from "./process" +import { AppProcess } from "@opencode-ai/util/process" import { ChildProcess } from "effect/unstable/process" import { Config } from "./config" import { Location } from "./location" diff --git a/packages/core/src/config.ts b/packages/core/src/config.ts index 575e35f4c4fb..4c63972c39c2 100644 --- a/packages/core/src/config.ts +++ b/packages/core/src/config.ts @@ -1,6 +1,6 @@ export * as Config from "./config" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import path from "path" import { isDeepStrictEqual } from "node:util" import { type ParseError, parse } from "jsonc-parser" @@ -11,8 +11,8 @@ import { Integration } from "@opencode-ai/schema/integration" import { Credential } from "./credential" import { EventV2 } from "./event" import { Watcher } from "./filesystem/watcher" -import { FSUtil } from "./fs-util" -import { Global } from "./global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Location } from "./location" import { AbsolutePath } from "./schema" import { ConfigAgent } from "./config/agent" diff --git a/packages/core/src/config/plugin/agent.ts b/packages/core/src/config/plugin/agent.ts index 8ec2c15a635a..1254576e22af 100644 --- a/packages/core/src/config/plugin/agent.ts +++ b/packages/core/src/config/plugin/agent.ts @@ -7,10 +7,10 @@ import { AgentV2 } from "../../agent" import { Config } from "../../config" import { ConfigAgent } from "../agent" import { ConfigMarkdown } from "../markdown" -import { FSUtil } from "../../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { ConfigAgentV1 } from "../../v1/config/agent" import { ConfigMigrateV1 } from "../../v1/config/migrate" -import { Global } from "../../global" +import { Global } from "@opencode-ai/util/global" import { PermissionV2 } from "../../permission" import type { LocationMutation } from "../../location-mutation" import type { ReadTool } from "../../tool/read" diff --git a/packages/core/src/config/plugin/command.ts b/packages/core/src/config/plugin/command.ts index 90b1920ee494..29de7eddb57e 100644 --- a/packages/core/src/config/plugin/command.ts +++ b/packages/core/src/config/plugin/command.ts @@ -5,7 +5,7 @@ import path from "path" import { Effect, Option, Schema, Stream } from "effect" import { CommandV2 } from "../../command" import { Config } from "../../config" -import { FSUtil } from "../../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { ConfigCommand } from "../command" import { ConfigMarkdown } from "../markdown" diff --git a/packages/core/src/config/plugin/reference.ts b/packages/core/src/config/plugin/reference.ts index 75e0cc10e419..a790a7cc5486 100644 --- a/packages/core/src/config/plugin/reference.ts +++ b/packages/core/src/config/plugin/reference.ts @@ -7,7 +7,7 @@ import { Config } from "../../config" import { ConfigReference } from "../reference" import { Reference } from "../../reference" import { AbsolutePath } from "../../schema" -import { Global } from "../../global" +import { Global } from "@opencode-ai/util/global" import { Location } from "../../location" export const Plugin = define({ diff --git a/packages/core/src/config/plugin/skill.ts b/packages/core/src/config/plugin/skill.ts index de2f28ac9cd8..c4271c4843d5 100644 --- a/packages/core/src/config/plugin/skill.ts +++ b/packages/core/src/config/plugin/skill.ts @@ -6,7 +6,7 @@ import { Effect, Stream } from "effect" import { Config } from "../../config" import { AbsolutePath } from "../../schema" import { SkillV2 } from "../../skill" -import { Global } from "../../global" +import { Global } from "@opencode-ai/util/global" import { Location } from "../../location" export const Plugin = define({ diff --git a/packages/core/src/config/variable.ts b/packages/core/src/config/variable.ts index 3bb1d22dd3e1..539d88413b94 100644 --- a/packages/core/src/config/variable.ts +++ b/packages/core/src/config/variable.ts @@ -3,7 +3,7 @@ export * as ConfigVariable from "./variable" import os from "os" import path from "path" import { Effect } from "effect" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { InvalidError } from "../v1/config/error" type ParseSource = diff --git a/packages/core/src/control-plane/move-session.ts b/packages/core/src/control-plane/move-session.ts index 1fadfea1e2f8..b5d229b7157e 100644 --- a/packages/core/src/control-plane/move-session.ts +++ b/packages/core/src/control-plane/move-session.ts @@ -1,10 +1,10 @@ export * as MoveSession from "./move-session" import { Context, DateTime, Effect, Layer, Schema } from "effect" -import { makeGlobalNode } from "../effect/app-node" -import { FSUtil } from "../fs-util" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Git } from "../git" -import { Global } from "../global" +import { Global } from "@opencode-ai/util/global" import { ProjectV2 } from "../project" import { SessionV2 } from "../session" import { SessionExecution } from "../session/execution" diff --git a/packages/core/src/credential.ts b/packages/core/src/credential.ts index 554073970911..be8b97db3d65 100644 --- a/packages/core/src/credential.ts +++ b/packages/core/src/credential.ts @@ -5,7 +5,7 @@ import { Context, Effect, Layer, Schema } from "effect" import { Credential } from "@opencode-ai/schema/credential" import { Integration } from "@opencode-ai/schema/integration" import { Database } from "./database/database" -import { makeGlobalNode } from "./effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { CredentialTable } from "./credential/sql" export const ID = Credential.ID diff --git a/packages/core/src/database/database.ts b/packages/core/src/database/database.ts index acfd7155eb12..b25f270b50de 100644 --- a/packages/core/src/database/database.ts +++ b/packages/core/src/database/database.ts @@ -3,11 +3,11 @@ export * as Database from "./database" import { EffectDrizzleSqlite } from "@opencode-ai/effect-drizzle-sqlite" import { sqliteLayer } from "#sqlite" import { Context, Effect, Layer, Schema } from "effect" -import { Global } from "../global" +import { Global } from "@opencode-ai/util/global" import { isAbsolute, join } from "path" import { DatabaseMigration } from "./migration" -import { InstallationChannel } from "../installation/version" -import { makeGlobalNode } from "../effect/app-node" +import { InstallationChannel } from "@opencode-ai/util/installation/version" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" const makeDatabase = EffectDrizzleSqlite.makeWithDefaults() type DatabaseShape = Effect.Success diff --git a/packages/core/src/effect/app-node-builder.ts b/packages/core/src/effect/app-node-builder.ts index 5f01469dab09..e6cc934ca1dd 100644 --- a/packages/core/src/effect/app-node-builder.ts +++ b/packages/core/src/effect/app-node-builder.ts @@ -1,7 +1,7 @@ import { buildLocationServiceMap } from "../location-services" import { LocationServiceMap } from "../location-service-map" -import { LayerNode } from "./layer-node" -import { makeGlobalNode } from "./app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" export function build(root: LayerNode.Node, replacements: LayerNode.Replacements = []) { let allReplacements = replacements diff --git a/packages/core/src/event-logger.ts b/packages/core/src/event-logger.ts index f07c96320ee1..12cc9c490ec0 100644 --- a/packages/core/src/event-logger.ts +++ b/packages/core/src/event-logger.ts @@ -1,7 +1,7 @@ export * as EventLogger from "./event-logger" import { Effect, Layer } from "effect" -import { makeGlobalNode } from "./effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { EventV2 } from "./event" const Types = new Set([ diff --git a/packages/core/src/event.ts b/packages/core/src/event.ts index 8a199fc60931..759a55721d33 100644 --- a/packages/core/src/event.ts +++ b/packages/core/src/event.ts @@ -8,7 +8,7 @@ import { and, asc, eq, gt, inArray, lte, sql } from "drizzle-orm" import { Database } from "./database/database" import { EventSequenceTable, EventTable } from "./event/sql" import { Location } from "./location" -import { makeGlobalNode } from "./effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { isDeepStrictEqual } from "node:util" import { Durable } from "@opencode-ai/schema/durable-event-manifest" diff --git a/packages/core/src/file-mutation.ts b/packages/core/src/file-mutation.ts index 7981bb26ded0..d11144d5767e 100644 --- a/packages/core/src/file-mutation.ts +++ b/packages/core/src/file-mutation.ts @@ -1,10 +1,10 @@ export * as FileMutation from "./file-mutation" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Schema } from "effect" import { dirname } from "path" import { KeyedMutex } from "./effect/keyed-mutex" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" export interface Target { readonly canonical: string diff --git a/packages/core/src/filesystem.ts b/packages/core/src/filesystem.ts index f1dafd5c55c9..3d0f54af6cba 100644 --- a/packages/core/src/filesystem.ts +++ b/packages/core/src/filesystem.ts @@ -1,9 +1,9 @@ export * as FileSystem from "./filesystem" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import path from "path" import { Context, Effect, Layer, Schema } from "effect" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "./location" import { PositiveInt, RelativePath } from "./schema" import { FileSystemSearch } from "./filesystem/search" diff --git a/packages/core/src/filesystem/ignore.ts b/packages/core/src/filesystem/ignore.ts index 4d88eb5e87ce..ff64c80b4078 100644 --- a/packages/core/src/filesystem/ignore.ts +++ b/packages/core/src/filesystem/ignore.ts @@ -1,4 +1,4 @@ -import { Glob } from "../util/glob" +import { Glob } from "@opencode-ai/util/glob" const FOLDERS = new Set([ "node_modules", diff --git a/packages/core/src/filesystem/location-watcher.ts b/packages/core/src/filesystem/location-watcher.ts index 7765a396e855..ff18d2cbee8e 100644 --- a/packages/core/src/filesystem/location-watcher.ts +++ b/packages/core/src/filesystem/location-watcher.ts @@ -1,13 +1,13 @@ export * as LocationWatcher from "./location-watcher" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Stream } from "effect" import { FileSystem } from "@opencode-ai/schema/filesystem" import os from "os" import path from "path" import { Config } from "../config" import { EventV2 } from "../event" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Git } from "../git" import { Location } from "../location" import { Watcher } from "./watcher" diff --git a/packages/core/src/filesystem/search.ts b/packages/core/src/filesystem/search.ts index 59e2bf3216cd..2bc92a5994d9 100644 --- a/packages/core/src/filesystem/search.ts +++ b/packages/core/src/filesystem/search.ts @@ -1,12 +1,12 @@ export * as FileSystemSearch from "./search" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import path from "path" import { Context, Effect, Layer, Schema, Scope } from "effect" import { Fff } from "#fff" import fuzzysort from "fuzzysort" import { FileSystem } from "../filesystem" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "../location" import { Ripgrep } from "../ripgrep" import { RelativePath } from "../schema" diff --git a/packages/core/src/filesystem/watcher.ts b/packages/core/src/filesystem/watcher.ts index 7da5fbeb0df4..e4ef94c54353 100644 --- a/packages/core/src/filesystem/watcher.ts +++ b/packages/core/src/filesystem/watcher.ts @@ -4,7 +4,7 @@ export * as Watcher from "./watcher" import { createWrapper } from "@parcel/watcher/wrapper" import type ParcelWatcher from "@parcel/watcher" import { FileSystem } from "@opencode-ai/schema/filesystem" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { Cause, Context, Effect, Layer, PubSub, Schema, Scope, Stream } from "effect" import { KeyedMutex } from "../effect/keyed-mutex" import { lazy } from "../util/lazy" diff --git a/packages/core/src/form.ts b/packages/core/src/form.ts index 30ae70e16c2c..bef4ad4f5426 100644 --- a/packages/core/src/form.ts +++ b/packages/core/src/form.ts @@ -2,7 +2,7 @@ export * as Form from "./form" import { Form } from "@opencode-ai/schema/form" import { Cache, Context, Deferred, Duration, Effect, Exit, Layer, Option, Schema } from "effect" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { EventV2 } from "./event" const RETENTION = Duration.minutes(10) diff --git a/packages/core/src/generate.ts b/packages/core/src/generate.ts index 3dbc86dc623d..9304bbb0014d 100644 --- a/packages/core/src/generate.ts +++ b/packages/core/src/generate.ts @@ -3,8 +3,8 @@ export * as Generate from "./generate" import { LLM, LLMClient, LLMError } from "@opencode-ai/ai" import { Context, Effect, Layer, Schema } from "effect" import { Catalog } from "./catalog" -import { makeLocationNode } from "./effect/app-node" -import { llmClient } from "./effect/app-node-platform" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" import { Integration } from "./integration" import { ModelV2 } from "./model" import { SessionRunnerModel } from "./session/runner/model" diff --git a/packages/core/src/git.ts b/packages/core/src/git.ts index 8ac4ed203b80..989e15ae3b36 100644 --- a/packages/core/src/git.ts +++ b/packages/core/src/git.ts @@ -5,9 +5,9 @@ import { randomUUID } from "crypto" import { Context, Effect, Layer, Schema, Stream } from "effect" import { ChildProcess } from "effect/unstable/process" import { AbsolutePath, RelativePath } from "./schema" -import { FSUtil } from "./fs-util" -import { AppProcess } from "./process" -import { makeGlobalNode } from "./effect/app-node" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { AppProcess } from "@opencode-ai/util/process" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { File } from "./file" import { KeyedMutex } from "./effect/keyed-mutex" diff --git a/packages/core/src/image.ts b/packages/core/src/image.ts index 5551d06cd40c..f24b222590ea 100644 --- a/packages/core/src/image.ts +++ b/packages/core/src/image.ts @@ -1,6 +1,6 @@ export * as Image from "./image" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Schema } from "effect" import { Config } from "./config" import { FileSystem } from "./filesystem" diff --git a/packages/core/src/instruction-discovery.ts b/packages/core/src/instruction-discovery.ts index 6845eca07b2a..910e92f8029a 100644 --- a/packages/core/src/instruction-discovery.ts +++ b/packages/core/src/instruction-discovery.ts @@ -2,12 +2,12 @@ export * as InstructionDiscovery from "./instruction-discovery" import { Array, Context, Effect, Layer, Schema } from "effect" import { isAbsolute, join, relative, sep } from "path" -import { FSUtil } from "./fs-util" -import { Global } from "./global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Location } from "./location" import { AbsolutePath } from "./schema" import { Instructions } from "./instructions/index" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" class File extends Schema.Class("InstructionDiscovery.File")({ path: AbsolutePath, diff --git a/packages/core/src/instructions/builtins.ts b/packages/core/src/instructions/builtins.ts index f8ce9b553589..03b38d75b7b7 100644 --- a/packages/core/src/instructions/builtins.ts +++ b/packages/core/src/instructions/builtins.ts @@ -1,6 +1,6 @@ export * as InstructionBuiltIns from "./builtins" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, DateTime, Effect, Layer, Schema } from "effect" import { Location } from "../location" import { SessionSchema } from "../session/schema" diff --git a/packages/core/src/integration.ts b/packages/core/src/integration.ts index 88b947d10dfc..5c9548bccb03 100644 --- a/packages/core/src/integration.ts +++ b/packages/core/src/integration.ts @@ -1,6 +1,6 @@ export * as Integration from "./integration" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Cause, Clock, @@ -22,7 +22,7 @@ import { Credential } from "./credential" import { State } from "./state" import { EventV2 } from "./event" import { IntegrationConnection } from "./integration/connection" -import { AppProcess } from "./process" +import { AppProcess } from "@opencode-ai/util/process" import { ChildProcess } from "effect/unstable/process" export const ID = Integration.ID diff --git a/packages/core/src/job.ts b/packages/core/src/job.ts index ff5f40d39c5a..eb2efb2fd197 100644 --- a/packages/core/src/job.ts +++ b/packages/core/src/job.ts @@ -1,7 +1,7 @@ export * as Job from "./job" import { Cause, Clock, Context, Deferred, Effect, Exit, Layer, Scope, SynchronizedRef } from "effect" -import { makeGlobalNode } from "./effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { Identifier } from "./id/id" import { SessionSchema } from "./session/schema" diff --git a/packages/core/src/kv.ts b/packages/core/src/kv.ts index 9bc0d1009485..92b7bd9c2c09 100644 --- a/packages/core/src/kv.ts +++ b/packages/core/src/kv.ts @@ -3,7 +3,7 @@ export * as KV from "./kv" import { eq } from "drizzle-orm" import { Context, Effect, Layer, Schema } from "effect" import { Database } from "./database/database" -import { makeGlobalNode } from "./effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { KVTable } from "./kv/sql" export type Value = Schema.Json diff --git a/packages/core/src/location-mutation.ts b/packages/core/src/location-mutation.ts index 74b028de85ed..3c15d9a2a405 100644 --- a/packages/core/src/location-mutation.ts +++ b/packages/core/src/location-mutation.ts @@ -1,9 +1,9 @@ export * as LocationMutation from "./location-mutation" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import path from "path" import { Context, Effect, Layer, Schema } from "effect" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "./location" import { Project } from "./project" import { AbsolutePath } from "./schema" diff --git a/packages/core/src/location-service-map.ts b/packages/core/src/location-service-map.ts index 1a6c26737dd5..c79837b04e2a 100644 --- a/packages/core/src/location-service-map.ts +++ b/packages/core/src/location-service-map.ts @@ -1,6 +1,6 @@ import { Context, Effect, Layer, LayerMap } from "effect" -import { LayerNode } from "./effect/layer-node" -import { Node } from "./effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Node } from "@opencode-ai/util/effect/app-node" import { Location } from "./location" import type { LocationError, LocationServices } from "./location-services" diff --git a/packages/core/src/location-services.ts b/packages/core/src/location-services.ts index 47e3f6dd2fbc..d4ddcecbf247 100644 --- a/packages/core/src/location-services.ts +++ b/packages/core/src/location-services.ts @@ -4,8 +4,8 @@ import { AISDK } from "./aisdk" import { Catalog } from "./catalog" import { CommandV2 } from "./command" import { Config } from "./config" -import { LayerNode } from "./effect/layer-node" -import { Node } from "./effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Node } from "@opencode-ai/util/effect/app-node" import { EventV2 } from "./event" import { FileMutation } from "./file-mutation" import { FileSystem } from "./filesystem" diff --git a/packages/core/src/location.ts b/packages/core/src/location.ts index 8228b8599ea3..f5ccabf8c556 100644 --- a/packages/core/src/location.ts +++ b/packages/core/src/location.ts @@ -1,8 +1,8 @@ import { Context, Effect, Layer } from "effect" import { Info, Ref, response } from "@opencode-ai/schema/location" import { Project } from "./project" -import { LayerNode } from "./effect/layer-node" -import { makeLocationNode, tags } from "./effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { makeLocationNode, tags } from "@opencode-ai/util/effect/app-node" export * as Location from "./location" diff --git a/packages/core/src/mcp/client.ts b/packages/core/src/mcp/client.ts index 5f48cba64957..98e125bfcaf4 100644 --- a/packages/core/src/mcp/client.ts +++ b/packages/core/src/mcp/client.ts @@ -29,7 +29,7 @@ import { } from "@modelcontextprotocol/sdk/types.js" import { Cause, Effect, Exit, Schema } from "effect" import { ConfigMCP } from "../config/mcp" -import { InstallationVersion } from "../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" const DEFAULT_STARTUP_TIMEOUT = 30_000 const DEFAULT_CATALOG_TIMEOUT = 30_000 diff --git a/packages/core/src/mcp/index.ts b/packages/core/src/mcp/index.ts index 7586f262723f..d8807ae4c871 100644 --- a/packages/core/src/mcp/index.ts +++ b/packages/core/src/mcp/index.ts @@ -5,7 +5,7 @@ import { McpEvent } from "@opencode-ai/schema/mcp-event" import { Command } from "@opencode-ai/schema/command" import { createHash } from "node:crypto" import { Cause, Context, Deferred, Effect, Exit, FiberSet, Layer, Schema, Scope, Stream } from "effect" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Config } from "../config" import { ConfigMCP } from "../config/mcp" import { Credential } from "../credential" @@ -15,7 +15,7 @@ import { Integration } from "../integration" import { IntegrationConnection } from "../integration/connection" import { KeyedMutex } from "../effect/keyed-mutex" import { Location } from "../location" -import { waitForAbort } from "../process" +import { waitForAbort } from "@opencode-ai/util/process" import { State } from "../state" import { MCPClient } from "./client" import { MCPOAuth } from "./oauth" diff --git a/packages/core/src/mcp/instructions.ts b/packages/core/src/mcp/instructions.ts index 6c0be1dc737f..e41a108bc355 100644 --- a/packages/core/src/mcp/instructions.ts +++ b/packages/core/src/mcp/instructions.ts @@ -1,6 +1,6 @@ export * as McpInstructions from "./instructions" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Schema } from "effect" import { AgentV2 } from "../agent" import { PermissionV2 } from "../permission" diff --git a/packages/core/src/models-dev.ts b/packages/core/src/models-dev.ts index 2e181493e49f..d75896432124 100644 --- a/packages/core/src/models-dev.ts +++ b/packages/core/src/models-dev.ts @@ -3,14 +3,14 @@ import { Context, Duration, Effect, Layer, Option, Schedule, Schema } from "effe import { HttpClient, HttpClientRequest } from "effect/unstable/http" import { ModelsDev } from "@opencode-ai/schema/models-dev" import { Money } from "@opencode-ai/schema/money" -import { Global } from "./global" -import { Flock } from "./util/flock" -import { Hash } from "./util/hash" -import { FSUtil } from "./fs-util" -import { InstallationChannel, InstallationVersion } from "./installation/version" +import { Global } from "@opencode-ai/util/global" +import { Flock } from "@opencode-ai/util/flock" +import { Hash } from "@opencode-ai/util/hash" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { InstallationChannel, InstallationVersion } from "@opencode-ai/util/installation/version" import { EventV2 } from "./event" -import { makeGlobalNode } from "./effect/app-node" -import { httpClient } from "./effect/app-node-platform" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" import { ModelV2 } from "./model" import { ProviderV2 } from "./provider" diff --git a/packages/core/src/permission.ts b/packages/core/src/permission.ts index 29a8e3720a7a..1a93f4f58da7 100644 --- a/packages/core/src/permission.ts +++ b/packages/core/src/permission.ts @@ -1,6 +1,6 @@ export * as PermissionV2 from "./permission" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Deferred, Effect, Layer, Schema } from "effect" import { Permission } from "@opencode-ai/schema/permission" import { EventV2 } from "./event" diff --git a/packages/core/src/permission/saved.ts b/packages/core/src/permission/saved.ts index ffc4559afee0..a973ae3e1ba0 100644 --- a/packages/core/src/permission/saved.ts +++ b/packages/core/src/permission/saved.ts @@ -3,7 +3,7 @@ export * as PermissionSaved from "./saved" import { eq } from "drizzle-orm" import { Context, Effect, Layer, Schema } from "effect" import { Database } from "../database/database" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { ProjectV2 } from "../project" import { PermissionTable } from "./sql" import { PermissionSaved } from "@opencode-ai/schema/permission-saved" diff --git a/packages/core/src/plugin.ts b/packages/core/src/plugin.ts index 4054873851f8..59c53736791c 100644 --- a/packages/core/src/plugin.ts +++ b/packages/core/src/plugin.ts @@ -2,7 +2,7 @@ export * as PluginV2 from "./plugin" import type { Plugin } from "@opencode-ai/plugin/v2/effect/plugin" import { Event, ID, type Info } from "@opencode-ai/schema/plugin" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Exit, Layer, Scope, Semaphore } from "effect" import { AgentV2 } from "./agent" import { AISDK } from "./aisdk" diff --git a/packages/core/src/plugin/agent.ts b/packages/core/src/plugin/agent.ts index 8b94e219aeaf..080cdb1ebebf 100644 --- a/packages/core/src/plugin/agent.ts +++ b/packages/core/src/plugin/agent.ts @@ -4,7 +4,7 @@ import path from "path" import { define } from "@opencode-ai/plugin/v2/effect/plugin" import { Effect } from "effect" import { AgentV2 } from "../agent" -import { Global } from "../global" +import { Global } from "@opencode-ai/util/global" import { Location } from "../location" import { PermissionV2 } from "../permission" diff --git a/packages/core/src/plugin/hooks.ts b/packages/core/src/plugin/hooks.ts index 4ac437d39260..5538601c915c 100644 --- a/packages/core/src/plugin/hooks.ts +++ b/packages/core/src/plugin/hooks.ts @@ -4,7 +4,7 @@ import type { AISDKHooks } from "@opencode-ai/plugin/v2/effect/aisdk" import type { SessionHooks } from "@opencode-ai/plugin/v2/effect/session" import type { ToolHooks } from "@opencode-ai/plugin/v2/effect/tool" import { Context, Effect, Layer, Scope } from "effect" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { State } from "../state" export interface Domains { diff --git a/packages/core/src/plugin/internal.ts b/packages/core/src/plugin/internal.ts index 69725e2c2424..2488c1c6fd95 100644 --- a/packages/core/src/plugin/internal.ts +++ b/packages/core/src/plugin/internal.ts @@ -17,14 +17,14 @@ import { EventV2 } from "../event" import { FileMutation } from "../file-mutation" import { Form } from "../form" import { FileSystem } from "../filesystem" -import { FSUtil } from "../fs-util" -import { Global } from "../global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Image } from "../image" import { Integration } from "../integration" import { Location } from "../location" import { LocationMutation } from "../location-mutation" import { ModelsDev } from "../models-dev" -import { Npm } from "../npm" +import { Npm } from "@opencode-ai/util/npm" import { PermissionV2 } from "../permission" import { Reference } from "../reference" import { Ripgrep } from "../ripgrep" diff --git a/packages/core/src/plugin/layer-map.example.ts b/packages/core/src/plugin/layer-map.example.ts index 63e33d3f0c46..8a8dc1795ac5 100644 --- a/packages/core/src/plugin/layer-map.example.ts +++ b/packages/core/src/plugin/layer-map.example.ts @@ -1,7 +1,7 @@ export * as LayerMapExample from "./layer-map.example" import { Context, Effect, Layer, LayerMap } from "effect" -import { Npm } from "../npm" +import { Npm } from "@opencode-ai/util/npm" /** * Tutorial: split global services from context-specific services. diff --git a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts index 06025496145d..a24cd711b3e1 100644 --- a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts +++ b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts @@ -1,5 +1,5 @@ import os from "os" -import { InstallationVersion } from "../../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Effect, Option, Schema } from "effect" import { define } from "@opencode-ai/plugin/v2/effect/plugin" diff --git a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts index c3aa50fbb468..435d7086c2b5 100644 --- a/packages/core/src/plugin/provider/cloudflare-workers-ai.ts +++ b/packages/core/src/plugin/provider/cloudflare-workers-ai.ts @@ -1,5 +1,5 @@ import os from "os" -import { InstallationVersion } from "../../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Effect } from "effect" import { define } from "@opencode-ai/plugin/v2/effect/plugin" import { ProviderV2 } from "../../provider" diff --git a/packages/core/src/plugin/provider/dynamic.ts b/packages/core/src/plugin/provider/dynamic.ts index 97bfd15ebd6a..e5876a5a8242 100644 --- a/packages/core/src/plugin/provider/dynamic.ts +++ b/packages/core/src/plugin/provider/dynamic.ts @@ -1,7 +1,7 @@ import { Effect } from "effect" import { pathToFileURL } from "url" import { define } from "@opencode-ai/plugin/v2/effect/plugin" -import { Npm } from "../../npm" +import { Npm } from "@opencode-ai/util/npm" import { importModule } from "#runtime-import" export const DynamicProviderPlugin = define({ diff --git a/packages/core/src/plugin/provider/github-copilot.ts b/packages/core/src/plugin/provider/github-copilot.ts index 324a937a5c10..68ed4591c7a2 100644 --- a/packages/core/src/plugin/provider/github-copilot.ts +++ b/packages/core/src/plugin/provider/github-copilot.ts @@ -4,7 +4,7 @@ import { Catalog } from "../../catalog" import { Credential } from "../../credential" import { EventV2 } from "../../event" import { CopilotModels } from "../../github-copilot/models" -import { InstallationVersion } from "../../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Integration } from "../../integration" import { ModelV2 } from "../../model" import { define } from "@opencode-ai/plugin/v2/effect/plugin" diff --git a/packages/core/src/plugin/provider/gitlab.ts b/packages/core/src/plugin/provider/gitlab.ts index a413c85d7dba..9cb3974f1d75 100644 --- a/packages/core/src/plugin/provider/gitlab.ts +++ b/packages/core/src/plugin/provider/gitlab.ts @@ -1,5 +1,5 @@ import os from "os" -import { InstallationVersion } from "../../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Effect } from "effect" import { define } from "@opencode-ai/plugin/v2/effect/plugin" import { ProviderV2 } from "../../provider" diff --git a/packages/core/src/plugin/provider/openai.ts b/packages/core/src/plugin/provider/openai.ts index 013388aa5557..195fdd317bb4 100644 --- a/packages/core/src/plugin/provider/openai.ts +++ b/packages/core/src/plugin/provider/openai.ts @@ -4,7 +4,7 @@ import { define } from "@opencode-ai/plugin/v2/effect/plugin" import { Deferred, Effect, Option, Schema, Semaphore, Stream } from "effect" import { Credential } from "../../credential" import { EventV2 } from "../../event" -import { InstallationVersion } from "../../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Integration } from "../../integration" import { ModelV2 } from "../../model" import { OauthCallbackPage } from "../../oauth/page" diff --git a/packages/core/src/plugin/provider/sap-ai-core.ts b/packages/core/src/plugin/provider/sap-ai-core.ts index 581a028cf963..07b19a9f248e 100644 --- a/packages/core/src/plugin/provider/sap-ai-core.ts +++ b/packages/core/src/plugin/provider/sap-ai-core.ts @@ -1,7 +1,7 @@ import { Effect } from "effect" import { pathToFileURL } from "url" import { define } from "@opencode-ai/plugin/v2/effect/plugin" -import { Npm } from "../../npm" +import { Npm } from "@opencode-ai/util/npm" import { ProviderV2 } from "../../provider" import { importModule } from "#runtime-import" diff --git a/packages/core/src/plugin/provider/xai.ts b/packages/core/src/plugin/provider/xai.ts index 617bb0f87181..647c560ad030 100644 --- a/packages/core/src/plugin/provider/xai.ts +++ b/packages/core/src/plugin/provider/xai.ts @@ -3,7 +3,7 @@ import type { IntegrationOAuthMethodRegistration } from "@opencode-ai/plugin/v2/ import { define } from "@opencode-ai/plugin/v2/effect/plugin" import { Clock, Deferred, Effect, Option, Schema } from "effect" import { Credential } from "../../credential" -import { InstallationVersion } from "../../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Integration } from "../../integration" import { OauthCallbackPage } from "../../oauth/page" import { ProviderV2 } from "../../provider" diff --git a/packages/core/src/plugin/runtime.ts b/packages/core/src/plugin/runtime.ts index e07bb2b03183..4bb85f059dc8 100644 --- a/packages/core/src/plugin/runtime.ts +++ b/packages/core/src/plugin/runtime.ts @@ -2,7 +2,7 @@ export * as PluginRuntime from "./runtime" import { Context, Effect, Layer } from "effect" import { AgentV2 } from "../agent" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { Job } from "../job" import { Location } from "../location" import { LocationServiceMap } from "../location-service-map" diff --git a/packages/core/src/plugin/sdk.ts b/packages/core/src/plugin/sdk.ts index 56df0813dd65..99861d90d5a2 100644 --- a/packages/core/src/plugin/sdk.ts +++ b/packages/core/src/plugin/sdk.ts @@ -2,7 +2,7 @@ export * as SdkPlugins from "./sdk" import type { Plugin } from "@opencode-ai/plugin/v2/effect/plugin" import { Context, Effect, Layer } from "effect" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { EventV2 } from "../event" import type { PluginV2 } from "../plugin" diff --git a/packages/core/src/plugin/skill.ts b/packages/core/src/plugin/skill.ts index f5fa0a4ea5dd..ed2cdccb6418 100644 --- a/packages/core/src/plugin/skill.ts +++ b/packages/core/src/plugin/skill.ts @@ -6,10 +6,10 @@ import { define } from "@opencode-ai/plugin/v2/effect/plugin" import { Effect } from "effect" import { AbsolutePath } from "../schema" import { SkillV2 } from "../skill" -import { InstallationChannel, InstallationVersion } from "../installation/version" +import { InstallationChannel, InstallationVersion } from "@opencode-ai/util/installation/version" import { Config } from "../config" import { Location } from "../location" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import os from "os" import path from "path" import { fileURLToPath } from "url" diff --git a/packages/core/src/plugin/supervisor.ts b/packages/core/src/plugin/supervisor.ts index ee91e4cfc341..1e0b604952f8 100644 --- a/packages/core/src/plugin/supervisor.ts +++ b/packages/core/src/plugin/supervisor.ts @@ -10,20 +10,20 @@ import { Catalog } from "../catalog" import { CommandV2 } from "../command" import { Config } from "../config" import { ConfigPlugin } from "../config/plugin" -import { makeLocationNode } from "../effect/app-node" -import { httpClient } from "../effect/app-node-platform" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" import { EventV2 } from "../event" import { FileMutation } from "../file-mutation" import { FileSystem } from "../filesystem" import { Form } from "../form" -import { FSUtil } from "../fs-util" -import { Global } from "../global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Image } from "../image" import { Integration } from "../integration" import { Location } from "../location" import { LocationMutation } from "../location-mutation" import { ModelsDev } from "../models-dev" -import { Npm } from "../npm" +import { Npm } from "@opencode-ai/util/npm" import { PermissionV2 } from "../permission" import { PluginV2 } from "../plugin" import { PluginPromise } from "../plugin/promise" diff --git a/packages/core/src/project.ts b/packages/core/src/project.ts index 1539d56f4f7c..30ea46540730 100644 --- a/packages/core/src/project.ts +++ b/packages/core/src/project.ts @@ -7,11 +7,11 @@ import { asc, desc } from "drizzle-orm" import path from "path" import { AbsolutePath } from "./schema" import { Database } from "./database/database" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Git } from "./git" -import { AppProcess } from "./process" -import { makeGlobalNode } from "./effect/app-node" -import { Hash } from "./util/hash" +import { AppProcess } from "@opencode-ai/util/process" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { Hash } from "@opencode-ai/util/hash" import { ProjectDirectories } from "./project/directories" import { ProjectSchema } from "./project/schema" import { ProjectTable } from "./project/sql" diff --git a/packages/core/src/project/copy.ts b/packages/core/src/project/copy.ts index 9183e26eb9fd..8b09eb78864e 100644 --- a/packages/core/src/project/copy.ts +++ b/packages/core/src/project/copy.ts @@ -3,9 +3,9 @@ export * as ProjectCopy from "./copy" import { Context, Effect, Layer, Schema } from "effect" import path from "path" import { AbsolutePath } from "../schema" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Git } from "../git" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Project } from "../project" import { ProjectDirectories } from "./directories" import { makeGitWorktreeStrategy } from "./copy-strategies" diff --git a/packages/core/src/project/directories.ts b/packages/core/src/project/directories.ts index fa4995c26d05..ef0064c5d8f7 100644 --- a/packages/core/src/project/directories.ts +++ b/packages/core/src/project/directories.ts @@ -3,7 +3,7 @@ export * as ProjectDirectories from "./directories" import { and, asc, desc, eq, isNotNull, isNull, ne, or } from "drizzle-orm" import { Context, Effect, Layer, Schema } from "effect" import { Database } from "../database/database" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { AbsolutePath } from "../schema" import { ProjectSchema } from "./schema" import { ProjectDirectoryTable } from "./sql" diff --git a/packages/core/src/provider.ts b/packages/core/src/provider.ts index f4db71ca8355..fd8be3d7887a 100644 --- a/packages/core/src/provider.ts +++ b/packages/core/src/provider.ts @@ -3,7 +3,7 @@ export * as ProviderV2 from "./provider" import { Effect, Schema } from "effect" import { Provider } from "@opencode-ai/schema/provider" import type { ProviderPackageDefinition } from "@opencode-ai/ai" -import { Npm } from "./npm" +import { Npm } from "@opencode-ai/util/npm" import type { DeepMutable } from "./schema" import { importModule, resolveModule } from "#runtime-import" diff --git a/packages/core/src/pty.ts b/packages/core/src/pty.ts index 4ccfdf18201c..427444d91a29 100644 --- a/packages/core/src/pty.ts +++ b/packages/core/src/pty.ts @@ -1,6 +1,6 @@ export * as Pty from "./pty" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import type { Disp, Proc } from "#pty" import { Context, Effect, Layer, Schema, Types } from "effect" import { Pty } from "@opencode-ai/schema/pty" diff --git a/packages/core/src/pty/ticket.ts b/packages/core/src/pty/ticket.ts index 2f227aa1427d..f434c367914e 100644 --- a/packages/core/src/pty/ticket.ts +++ b/packages/core/src/pty/ticket.ts @@ -4,7 +4,7 @@ import { WorkspaceV2 } from "../workspace" import { PtyTicket } from "@opencode-ai/schema/pty-ticket" import { PtyID } from "./schema" import { Cache, Context, Duration, Effect, Layer } from "effect" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" const DEFAULT_TTL = Duration.seconds(60) const CAPACITY = 10_000 diff --git a/packages/core/src/question.ts b/packages/core/src/question.ts index 1b57cfcfe207..3961ad5b1fb5 100644 --- a/packages/core/src/question.ts +++ b/packages/core/src/question.ts @@ -1,6 +1,6 @@ export * as QuestionV2 from "./question" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Deferred, Effect, Layer, Schema } from "effect" import { Question } from "@opencode-ai/schema/question" import { EventV2 } from "./event" diff --git a/packages/core/src/reference.ts b/packages/core/src/reference.ts index 3c0e7bb479cc..414af3ba32ce 100644 --- a/packages/core/src/reference.ts +++ b/packages/core/src/reference.ts @@ -1,9 +1,9 @@ export * as Reference from "./reference" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Scope, Types } from "effect" import { Reference } from "@opencode-ai/schema/reference" -import { Global } from "./global" +import { Global } from "@opencode-ai/util/global" import { EventV2 } from "./event" import { Repository } from "./repository" import { RepositoryCache } from "./repository-cache" diff --git a/packages/core/src/reference/instructions.ts b/packages/core/src/reference/instructions.ts index 7e0994679089..83632ba58506 100644 --- a/packages/core/src/reference/instructions.ts +++ b/packages/core/src/reference/instructions.ts @@ -1,6 +1,6 @@ export * as ReferenceInstructions from "./instructions" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Schema } from "effect" import { Reference } from "../reference" import { Instructions } from "../instructions/index" diff --git a/packages/core/src/repository-cache.ts b/packages/core/src/repository-cache.ts index 988236743b39..7e02a459e034 100644 --- a/packages/core/src/repository-cache.ts +++ b/packages/core/src/repository-cache.ts @@ -1,12 +1,12 @@ import path from "path" import { Context, Effect, Layer, Schema } from "effect" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Git } from "./git" -import { Global } from "./global" +import { Global } from "@opencode-ai/util/global" import { Repository } from "./repository" import { AbsolutePath } from "./schema" -import { makeGlobalNode } from "./effect/app-node" -import { EffectFlock } from "./util/effect-flock" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { EffectFlock } from "@opencode-ai/util/effect-flock" export type Result = { readonly repository: string diff --git a/packages/core/src/ripgrep.ts b/packages/core/src/ripgrep.ts index 7e1056c4d826..5673c9ab4ce8 100644 --- a/packages/core/src/ripgrep.ts +++ b/packages/core/src/ripgrep.ts @@ -3,8 +3,8 @@ export * as Ripgrep from "./ripgrep" import { Context, Effect, Fiber, Layer, Schema, Stream } from "effect" import { ChildProcess } from "effect/unstable/process" import { Entry, Match } from "@opencode-ai/schema/filesystem" -import { makeGlobalNode } from "./effect/app-node" -import { AppProcess, collectStream, waitForAbort } from "./process" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { AppProcess, collectStream, waitForAbort } from "@opencode-ai/util/process" import { NonNegativeInt, PositiveInt, RelativePath } from "./schema" import { RipgrepBinary } from "./ripgrep/binary" diff --git a/packages/core/src/ripgrep/binary.ts b/packages/core/src/ripgrep/binary.ts index 762a8e613ef0..3f876f901de6 100644 --- a/packages/core/src/ripgrep/binary.ts +++ b/packages/core/src/ripgrep/binary.ts @@ -3,11 +3,11 @@ import { Context, Effect, Layer, Stream } from "effect" import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http" import { ChildProcess } from "effect/unstable/process" import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner" -import { CrossSpawnSpawner } from "../cross-spawn-spawner" -import { makeGlobalNode } from "../effect/app-node" -import { httpClient } from "../effect/app-node-platform" -import { FSUtil } from "../fs-util" -import { Global } from "../global" +import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { which } from "../util/which" export namespace RipgrepBinary { diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts index d9fa0627b1d2..822c93465a01 100644 --- a/packages/core/src/session.ts +++ b/packages/core/src/session.ts @@ -20,7 +20,7 @@ import { AbsolutePath, PositiveInt, RelativePath } from "./schema" import { AgentV2 } from "./agent" import { SessionV1 } from "./v1/session" import { Money } from "@opencode-ai/schema/money" -import { InstallationVersion } from "./installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Slug } from "./util/slug" import { ProjectTable } from "./project/sql" import path from "path" @@ -29,7 +29,7 @@ import { SessionRunner } from "./session/runner/index" import { SessionStore } from "./session/store" import { SessionExecution } from "./session/execution" import { MessageDecodeError, NotFoundError } from "./session/error" -import { makeGlobalNode } from "./effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { LocationServiceMap } from "./location-service-map" import { SessionEvent } from "./session/event" import { SessionPending } from "./session/pending" @@ -37,7 +37,7 @@ import { SessionGenerate } from "./session/generate" import { Snapshot } from "./snapshot" import { SessionRevert } from "./session/revert" import { Session } from "@opencode-ai/schema/session" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Image } from "./image" import { Mime } from "./mime" import type { EventLog } from "@opencode-ai/schema/event-log" @@ -45,7 +45,7 @@ import { SkillV2 } from "./skill" import { Job } from "./job" import { CommandV2 } from "./command" import { Shell } from "./shell" -import { Global } from "./global" +import { Global } from "@opencode-ai/util/global" import { Shell as ShellSchema } from "@opencode-ai/schema/shell" import { KeyedMutex } from "./effect/keyed-mutex" import { fileURLToPath } from "url" diff --git a/packages/core/src/session/compaction.ts b/packages/core/src/session/compaction.ts index f67d65e2fdb1..8ae095c4b0ad 100644 --- a/packages/core/src/session/compaction.ts +++ b/packages/core/src/session/compaction.ts @@ -5,8 +5,8 @@ import { SessionError } from "@opencode-ai/schema/session-error" import { Context, Effect, Layer, Stream } from "effect" import { Config } from "../config" import { EventV2 } from "../event" -import { makeLocationNode } from "../effect/app-node" -import { llmClient } from "../effect/app-node-platform" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" import { SessionEvent } from "./event" import type { SessionMessage } from "./message" import { SessionModelHeaders } from "./model-headers" diff --git a/packages/core/src/session/context.ts b/packages/core/src/session/context.ts index 9bdf354731a0..d07a7f1e8c33 100644 --- a/packages/core/src/session/context.ts +++ b/packages/core/src/session/context.ts @@ -3,7 +3,7 @@ export * as SessionContext from "./context" import { Context, Effect, Layer } from "effect" import { AgentV2 } from "../agent" import { Database } from "../database/database" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { InstructionDiscovery } from "../instruction-discovery" import { Instructions } from "../instructions/index" import { InstructionBuiltIns } from "../instructions/builtins" diff --git a/packages/core/src/session/execution.ts b/packages/core/src/session/execution.ts index 3b45ba25c92d..9cef14725293 100644 --- a/packages/core/src/session/execution.ts +++ b/packages/core/src/session/execution.ts @@ -3,7 +3,7 @@ export * as SessionExecution from "./execution" import { Cause, Context, Effect, Exit, Layer } from "effect" import { EventV2 } from "../event" import { LocationServiceMap } from "../location-service-map" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { SessionEvent } from "./event" import { SessionRunCoordinator } from "./run-coordinator" import { SessionRunner } from "./runner/index" diff --git a/packages/core/src/session/execution/restart.ts b/packages/core/src/session/execution/restart.ts index eb75a7bf4212..985c46a556ea 100644 --- a/packages/core/src/session/execution/restart.ts +++ b/packages/core/src/session/execution/restart.ts @@ -1,7 +1,7 @@ export * as SessionRestart from "./restart" import { Context, Effect, Layer } from "effect" -import { makeGlobalNode } from "../../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { SessionExecution } from "../execution" import { SessionStore } from "../store" diff --git a/packages/core/src/session/generate-node.ts b/packages/core/src/session/generate-node.ts index 6fb5b37f3773..fcde898c4c31 100644 --- a/packages/core/src/session/generate-node.ts +++ b/packages/core/src/session/generate-node.ts @@ -3,8 +3,8 @@ export * as SessionGenerateNode from "./generate-node" import { LLM, LLMClient, Message, SystemPart } from "@opencode-ai/ai" import { Effect, Layer } from "effect" import { Database } from "../database/database" -import { makeLocationNode } from "../effect/app-node" -import { llmClient } from "../effect/app-node-platform" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" import { PluginHooks } from "../plugin/hooks" import { SessionContext } from "./context" import { SessionGenerate } from "./generate" diff --git a/packages/core/src/session/instruction-entry.ts b/packages/core/src/session/instruction-entry.ts index 43ccb99b2400..371a7337e764 100644 --- a/packages/core/src/session/instruction-entry.ts +++ b/packages/core/src/session/instruction-entry.ts @@ -4,7 +4,7 @@ import { and, asc, eq, isNotNull, isNull, ne, or } from "drizzle-orm" import { Context, Effect, Layer, Schema } from "effect" import { InstructionEntry } from "@opencode-ai/schema/instruction-entry" import { Database } from "../database/database" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Instructions } from "../instructions/index" import { SessionSchema } from "./schema" import { InstructionEntryTable } from "./sql" diff --git a/packages/core/src/session/instructions.ts b/packages/core/src/session/instructions.ts index 22f003e5eafb..d3ad3fcbaf60 100644 --- a/packages/core/src/session/instructions.ts +++ b/packages/core/src/session/instructions.ts @@ -2,9 +2,9 @@ export * as SessionInstructions from "./instructions" import { relative } from "path" import { Context, DateTime, Effect, Layer, Option, Ref, Schema } from "effect" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { EventV2 } from "../event" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "../location" import { SessionEvent } from "./event" import { MessageDecodeError } from "./error" diff --git a/packages/core/src/session/model-headers.ts b/packages/core/src/session/model-headers.ts index 8b835da010be..5e9f75821ce5 100644 --- a/packages/core/src/session/model-headers.ts +++ b/packages/core/src/session/model-headers.ts @@ -1,6 +1,6 @@ export * as SessionModelHeaders from "./model-headers" -import { InstallationVersion } from "../installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { SessionSchema } from "./schema" import { Schema } from "effect" diff --git a/packages/core/src/session/model-request.ts b/packages/core/src/session/model-request.ts index 2d76c2002384..5b460433b82b 100644 --- a/packages/core/src/session/model-request.ts +++ b/packages/core/src/session/model-request.ts @@ -3,7 +3,7 @@ export * as SessionModelRequest from "./model-request" import { LLM, Message, SystemPart, type LLMRequest } from "@opencode-ai/ai" import { SessionError } from "@opencode-ai/schema/session-error" import { Context, Effect, Layer } from "effect" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { PluginHooks } from "../plugin/hooks" import { ToolRegistry } from "../tool/registry" import { SessionContext } from "./context" diff --git a/packages/core/src/session/projector.ts b/packages/core/src/session/projector.ts index 62bd34ecc6c1..97044675d165 100644 --- a/packages/core/src/session/projector.ts +++ b/packages/core/src/session/projector.ts @@ -4,7 +4,7 @@ import { and, asc, desc, eq, gt, gte, inArray, lt, sql } from "drizzle-orm" import { DateTime, Effect, Layer, Schema, Stream } from "effect" import { Database } from "../database/database" import { EventV2 } from "../event" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { ModelV2 } from "../model" import { SessionEvent } from "./event" import { SessionV1 } from "../v1/session" diff --git a/packages/core/src/session/runner/llm.ts b/packages/core/src/session/runner/llm.ts index dfb5de04781c..2885a24c14c7 100644 --- a/packages/core/src/session/runner/llm.ts +++ b/packages/core/src/session/runner/llm.ts @@ -21,8 +21,8 @@ import { SessionTitle } from "../title" import { Service } from "./index" import { createLLMEventPublisher } from "./publish-llm-event" import { Snapshot } from "../../snapshot" -import { makeLocationNode } from "../../effect/app-node" -import { llmClient } from "../../effect/app-node-platform" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" import { StepFailedError } from "../error" import { toSessionError } from "../to-session-error" import { SessionRunnerRetry } from "./retry" diff --git a/packages/core/src/session/runner/model.ts b/packages/core/src/session/runner/model.ts index e002aa6c21b0..a8435575c9e1 100644 --- a/packages/core/src/session/runner/model.ts +++ b/packages/core/src/session/runner/model.ts @@ -1,6 +1,6 @@ export * as SessionRunnerModel from "./model" -import { makeLocationNode } from "../../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Model } from "@opencode-ai/ai" // ast-grep-ignore: no-star-import import * as AnthropicMessages from "@opencode-ai/ai/protocols/anthropic-messages" @@ -16,7 +16,7 @@ import { Catalog } from "../../catalog" import { Credential } from "../../credential" import { Integration } from "../../integration" import { ModelV2 } from "../../model" -import { Npm } from "../../npm" +import { Npm } from "@opencode-ai/util/npm" import { OpenAICodex } from "../../plugin/provider/openai-codex" import { ProviderV2 } from "../../provider" import { SessionSchema } from "../schema" diff --git a/packages/core/src/session/store.ts b/packages/core/src/session/store.ts index 516159c1e4fb..0018ace4a645 100644 --- a/packages/core/src/session/store.ts +++ b/packages/core/src/session/store.ts @@ -3,7 +3,7 @@ export * as SessionStore from "./store" import { and, eq, inArray, isNotNull, isNull } from "drizzle-orm" import { Context, Effect, Layer, Schema } from "effect" import { Database } from "../database/database" -import { makeGlobalNode } from "../effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { SessionHistory } from "./history" import { MessageDecodeError } from "./error" import { SessionMessage } from "./message" diff --git a/packages/core/src/session/title.ts b/packages/core/src/session/title.ts index 58359c73d5a2..faa53ac01c52 100644 --- a/packages/core/src/session/title.ts +++ b/packages/core/src/session/title.ts @@ -5,8 +5,8 @@ import { Context, Effect, Layer, Stream } from "effect" import { AgentV2 } from "../agent" import { Database } from "../database/database" import { EventV2 } from "../event" -import { makeLocationNode } from "../effect/app-node" -import { llmClient } from "../effect/app-node-platform" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" import { SessionEvent } from "./event" import { SessionHistory } from "./history" import { SessionModelHeaders } from "./model-headers" diff --git a/packages/core/src/shell.ts b/packages/core/src/shell.ts index 9835d27a51e1..4a2be872bf5e 100644 --- a/packages/core/src/shell.ts +++ b/packages/core/src/shell.ts @@ -5,12 +5,12 @@ import { Context, Deferred, Duration, Effect, Fiber, Layer, Schema, Stream } fro import { ChildProcess } from "effect/unstable/process" import { produce } from "immer" import { Shell } from "@opencode-ai/schema/shell" -import { makeLocationNode } from "./effect/app-node" -import { AppProcess } from "./process" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { AppProcess } from "@opencode-ai/util/process" import { Config } from "./config" import { EventV2 } from "./event" import { Location } from "./location" -import { Global } from "./global" +import { Global } from "@opencode-ai/util/global" import { ShellSelect } from "./shell/select" export class NotFoundError extends Schema.TaggedErrorClass()("Shell.NotFoundError", { diff --git a/packages/core/src/shell/select.ts b/packages/core/src/shell/select.ts index f9c81c532560..8086b2304858 100644 --- a/packages/core/src/shell/select.ts +++ b/packages/core/src/shell/select.ts @@ -6,7 +6,7 @@ import { readFile } from "fs/promises" import { statSync } from "fs" import { setTimeout } from "node:timers/promises" import { Schema } from "effect" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { which } from "../util/which" const SIGKILL_TIMEOUT_MS = 200 diff --git a/packages/core/src/skill.ts b/packages/core/src/skill.ts index 8708d84fda3c..c66fb4f46c49 100644 --- a/packages/core/src/skill.ts +++ b/packages/core/src/skill.ts @@ -1,6 +1,6 @@ export * as SkillV2 from "./skill" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import path from "path" import { Context, Effect, Layer, Schema, Stream, Types } from "effect" import { FileSystem } from "@opencode-ai/schema/filesystem" @@ -8,7 +8,7 @@ import { Skill } from "@opencode-ai/schema/skill" import { AgentV2 } from "./agent" import { ConfigMarkdown } from "./config/markdown" import { EventV2 } from "./event" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { PermissionV2 } from "./permission" import { AbsolutePath } from "./schema" import { SkillDiscovery } from "./skill/discovery" diff --git a/packages/core/src/skill/discovery.ts b/packages/core/src/skill/discovery.ts index feb06a34d022..074434ec61db 100644 --- a/packages/core/src/skill/discovery.ts +++ b/packages/core/src/skill/discovery.ts @@ -3,12 +3,12 @@ export * as SkillDiscovery from "./discovery" import path from "path" import { Context, Effect, Layer, Schedule, Schema } from "effect" import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" -import { FSUtil } from "../fs-util" -import { Global } from "../global" -import { makeGlobalNode } from "../effect/app-node" -import { httpClient } from "../effect/app-node-platform" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" import { AbsolutePath } from "../schema" -import { Hash } from "../util/hash" +import { Hash } from "@opencode-ai/util/hash" const skillConcurrency = 4 const fileConcurrency = 8 diff --git a/packages/core/src/skill/instructions.ts b/packages/core/src/skill/instructions.ts index 1da106205de8..382fede3b581 100644 --- a/packages/core/src/skill/instructions.ts +++ b/packages/core/src/skill/instructions.ts @@ -1,6 +1,6 @@ export * as SkillInstructions from "./instructions" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Context, Effect, Layer, Schema } from "effect" import { AgentV2 } from "../agent" import { SkillV2 } from "../skill" diff --git a/packages/core/src/snapshot.ts b/packages/core/src/snapshot.ts index 41072e3ce3e0..72982fbd90ae 100644 --- a/packages/core/src/snapshot.ts +++ b/packages/core/src/snapshot.ts @@ -1,17 +1,17 @@ export * as Snapshot from "./snapshot" -import { makeLocationNode } from "./effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import path from "path" import { Context, Effect, Fiber, Layer, Schema, Scope } from "effect" import { Config } from "./config" import { File } from "./file" -import { FSUtil } from "./fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Git } from "./git" -import { Global } from "./global" +import { Global } from "@opencode-ai/util/global" import { Location } from "./location" import { AbsolutePath, RelativePath } from "./schema" import { ID } from "@opencode-ai/schema/snapshot" -import { Hash } from "./util/hash" +import { Hash } from "@opencode-ai/util/hash" export { ID } diff --git a/packages/core/src/tool-output-store.ts b/packages/core/src/tool-output-store.ts index 057c6b4c6836..f7eccefea038 100644 --- a/packages/core/src/tool-output-store.ts +++ b/packages/core/src/tool-output-store.ts @@ -3,9 +3,9 @@ export * as ToolOutputStore from "./tool-output-store" import path from "path" import { Context, Duration, Effect, Layer, Option, Schedule, Schema } from "effect" import { Config } from "./config" -import { FSUtil } from "./fs-util" -import { Global } from "./global" -import { makeGlobalNode, makeLocationNode } from "./effect/app-node" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" +import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node" import { SessionSchema } from "./session/schema" import { Identifier } from "./util/identifier" import type { ToolOutput } from "@opencode-ai/ai" diff --git a/packages/core/src/tool/edit.ts b/packages/core/src/tool/edit.ts index 2319d4baf242..0456195dd99c 100644 --- a/packages/core/src/tool/edit.ts +++ b/packages/core/src/tool/edit.ts @@ -12,7 +12,7 @@ import { FileDiff } from "@opencode-ai/schema/file-diff" import { createTwoFilesPatch, diffLines } from "diff" import { Effect, Schema } from "effect" import { FileMutation } from "../file-mutation" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { LocationMutation } from "../location-mutation" import { PermissionV2 } from "../permission" import { Tool } from "./tool" diff --git a/packages/core/src/tool/glob.ts b/packages/core/src/tool/glob.ts index 35dc58d6cfde..e231ec7c0ba5 100644 --- a/packages/core/src/tool/glob.ts +++ b/packages/core/src/tool/glob.ts @@ -5,7 +5,7 @@ import type { Context as PluginContext } from "@opencode-ai/plugin/v2/effect/plu import { Effect, Schema } from "effect" import path from "path" import { FileSystem } from "../filesystem" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "../location" import { Ripgrep } from "../ripgrep" import { RelativePath } from "../schema" diff --git a/packages/core/src/tool/grep.ts b/packages/core/src/tool/grep.ts index ef7c76c745fb..a972c958659f 100644 --- a/packages/core/src/tool/grep.ts +++ b/packages/core/src/tool/grep.ts @@ -5,7 +5,7 @@ import { ToolFailure } from "@opencode-ai/ai" import { Effect, Schema } from "effect" import path from "path" import { FileSystem } from "../filesystem" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "../location" import { PermissionV2 } from "../permission" import { Ripgrep } from "../ripgrep" diff --git a/packages/core/src/tool/hooks.ts b/packages/core/src/tool/hooks.ts index b6dba58ffb47..5a0c93c31498 100644 --- a/packages/core/src/tool/hooks.ts +++ b/packages/core/src/tool/hooks.ts @@ -1,6 +1,6 @@ export * as ToolHooks from "./hooks" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Agent } from "@opencode-ai/schema/agent" import { Session } from "@opencode-ai/schema/session" import { SessionMessage } from "../session/message" diff --git a/packages/core/src/tool/mcp.ts b/packages/core/src/tool/mcp.ts index d71a58bc0832..de9910a81971 100644 --- a/packages/core/src/tool/mcp.ts +++ b/packages/core/src/tool/mcp.ts @@ -3,7 +3,7 @@ export * as McpTool from "./mcp" import { ToolFailure } from "@opencode-ai/ai" import { McpEvent } from "@opencode-ai/schema/mcp-event" import { Effect, Exit, type JsonSchema, Layer, Scope, Semaphore, Stream } from "effect" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { EventV2 } from "../event" import { MCP } from "../mcp" diff --git a/packages/core/src/tool/patch.ts b/packages/core/src/tool/patch.ts index 0cd9200ef030..7de2b4284da6 100644 --- a/packages/core/src/tool/patch.ts +++ b/packages/core/src/tool/patch.ts @@ -6,7 +6,7 @@ import { FileDiff } from "@opencode-ai/schema/file-diff" import { createTwoFilesPatch, diffLines } from "diff" import { Effect, Schema } from "effect" import path from "path" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "../location" import { Patch } from "../patch" import { PermissionV2 } from "../permission" diff --git a/packages/core/src/tool/read-filesystem.ts b/packages/core/src/tool/read-filesystem.ts index e325a83edd2c..5eeab17b87e5 100644 --- a/packages/core/src/tool/read-filesystem.ts +++ b/packages/core/src/tool/read-filesystem.ts @@ -4,8 +4,8 @@ import path from "path" import { pathToFileURL } from "url" import { Context, Effect, Layer, Option, Schema } from "effect" import { FileSystem } from "../filesystem" -import { FSUtil } from "../fs-util" -import { makeLocationNode } from "../effect/app-node" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { AbsolutePath, PositiveInt, RelativePath } from "../schema" export const MAX_READ_LINES = 2_000 diff --git a/packages/core/src/tool/read.ts b/packages/core/src/tool/read.ts index 8f73f7e90cd3..4021516cc4a3 100644 --- a/packages/core/src/tool/read.ts +++ b/packages/core/src/tool/read.ts @@ -5,7 +5,7 @@ import { dirname } from "path" import { ToolFailure } from "@opencode-ai/ai" import { Effect, Schema } from "effect" import { FileSystem } from "../filesystem" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "../location" import { LocationMutation } from "../location-mutation" import { PermissionV2 } from "../permission" diff --git a/packages/core/src/tool/registry.ts b/packages/core/src/tool/registry.ts index ac003775f4ca..cbfffb7087af 100644 --- a/packages/core/src/tool/registry.ts +++ b/packages/core/src/tool/registry.ts @@ -21,7 +21,7 @@ import { } from "./tool" import { Tools } from "./tools" import { ToolHooks } from "./hooks" -import { makeLocationNode } from "../effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { SessionError } from "@opencode-ai/schema/session-error" import { toSessionError } from "../session/to-session-error" diff --git a/packages/core/src/tool/shell.ts b/packages/core/src/tool/shell.ts index 300acf8cd5b4..11a3e67d49a2 100644 --- a/packages/core/src/tool/shell.ts +++ b/packages/core/src/tool/shell.ts @@ -4,7 +4,7 @@ import path from "path" import { ToolFailure } from "@opencode-ai/ai" import type { Context as PluginContext } from "@opencode-ai/plugin/v2/effect/plugin" import { Effect, Fiber, Schedule, Schema, Scope } from "effect" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { LocationMutation } from "../location-mutation" import { PermissionV2 } from "../permission" import { PluginRuntime } from "../plugin/runtime" diff --git a/packages/core/src/tool/skill.ts b/packages/core/src/tool/skill.ts index ac7e675e4619..21fdef69c0be 100644 --- a/packages/core/src/tool/skill.ts +++ b/packages/core/src/tool/skill.ts @@ -4,7 +4,7 @@ import type { Context as PluginContext } from "@opencode-ai/plugin/v2/effect/plu import path from "path" import { ToolFailure } from "@opencode-ai/ai" import { Effect, Schema } from "effect" -import { FSUtil } from "../fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { SkillV2 } from "../skill" import { PermissionV2 } from "../permission" import { Tool } from "./tool" diff --git a/packages/core/src/tool/websearch.ts b/packages/core/src/tool/websearch.ts index 803f6588c87a..75752de6fbc2 100644 --- a/packages/core/src/tool/websearch.ts +++ b/packages/core/src/tool/websearch.ts @@ -4,8 +4,8 @@ import type { Context as PluginContext } from "@opencode-ai/plugin/v2/effect/plu import { ToolFailure } from "@opencode-ai/ai" import { Context, Duration, Effect, Layer, Schema } from "effect" import { HttpClient, HttpClientRequest } from "effect/unstable/http" -import { makeLocationNode } from "../effect/app-node" -import { InstallationVersion } from "../installation/version" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { PositiveInt } from "../schema" import { PermissionV2 } from "../permission" import { Tool } from "./tool" diff --git a/packages/core/src/util/process-lock.ts b/packages/core/src/util/process-lock.ts index 2c2a72144833..196ed8a337ac 100644 --- a/packages/core/src/util/process-lock.ts +++ b/packages/core/src/util/process-lock.ts @@ -3,7 +3,7 @@ import { closeSync, mkdirSync, openSync } from "node:fs" import { connect, createServer, type Server, type Socket } from "node:net" import path from "node:path" import { Effect, Schema } from "effect" -import { Hash } from "./hash" +import { Hash } from "@opencode-ai/util/hash" export namespace ProcessLock { export class HeldError extends Schema.TaggedErrorClass()("ProcessLockHeldError", { diff --git a/packages/core/src/util/which.ts b/packages/core/src/util/which.ts index 2e40739148a1..7e7bd97acfb6 100644 --- a/packages/core/src/util/which.ts +++ b/packages/core/src/util/which.ts @@ -1,6 +1,6 @@ import whichPkg from "which" import path from "path" -import { Global } from "../global" +import { Global } from "@opencode-ai/util/global" export function which(cmd: string, env?: NodeJS.ProcessEnv) { const base = env?.PATH ?? env?.Path ?? process.env.PATH ?? process.env.Path ?? "" diff --git a/packages/core/src/vcs.ts b/packages/core/src/vcs.ts index 46417eafb7a2..cb61e681f7e4 100644 --- a/packages/core/src/vcs.ts +++ b/packages/core/src/vcs.ts @@ -3,10 +3,10 @@ export * as Vcs from "./vcs" import { Context, Effect, Layer } from "effect" import { FileDiff } from "@opencode-ai/schema/file-diff" import { FileStatus, Mode } from "@opencode-ai/schema/vcs" -import { makeLocationNode } from "./effect/app-node" -import { FSUtil } from "./fs-util" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "./location" -import { AppProcess } from "./process" +import { AppProcess } from "@opencode-ai/util/process" import { VcsGit } from "./vcs/git" import { VcsHg } from "./vcs/hg" diff --git a/packages/core/src/vcs/git.ts b/packages/core/src/vcs/git.ts index d416a5af8a6b..390348fc4f03 100644 --- a/packages/core/src/vcs/git.ts +++ b/packages/core/src/vcs/git.ts @@ -4,7 +4,7 @@ import { Effect } from "effect" import { ChildProcess } from "effect/unstable/process" import { FileDiff } from "@opencode-ai/schema/file-diff" import { FileStatus, Mode } from "@opencode-ai/schema/vcs" -import { AppProcess } from "../process" +import { AppProcess } from "@opencode-ai/util/process" import type { DiffOptions, Interface } from "../vcs" import { chunksByFile, emptyPatch, MAX_PATCH_BYTES, MAX_TOTAL_PATCH_BYTES, PATCH_CONTEXT_LINES } from "./patch" import type { Patch } from "./patch" diff --git a/packages/core/src/vcs/hg.ts b/packages/core/src/vcs/hg.ts index 0c27f12b9599..10ae0bcbfc8f 100644 --- a/packages/core/src/vcs/hg.ts +++ b/packages/core/src/vcs/hg.ts @@ -5,8 +5,8 @@ import { Effect } from "effect" import { ChildProcess } from "effect/unstable/process" import { FileDiff } from "@opencode-ai/schema/file-diff" import { FileStatus, Mode } from "@opencode-ai/schema/vcs" -import { FSUtil } from "../fs-util" -import { AppProcess } from "../process" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { AppProcess } from "@opencode-ai/util/process" import type { DiffOptions, Interface } from "../vcs" import { addPatch, diff --git a/packages/core/src/wellknown.ts b/packages/core/src/wellknown.ts index 73eea6dcfbc5..78a21e74800e 100644 --- a/packages/core/src/wellknown.ts +++ b/packages/core/src/wellknown.ts @@ -4,8 +4,8 @@ import { Integration } from "@opencode-ai/schema/integration" import { Context, Effect, Layer, Ref, Schema, Semaphore } from "effect" import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" import { isDeepStrictEqual } from "node:util" -import { makeGlobalNode } from "./effect/app-node" -import { httpClient } from "./effect/app-node-platform" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" import { EventV2 } from "./event" import { KV } from "./kv" diff --git a/packages/core/test/agent.test.ts b/packages/core/test/agent.test.ts index 6a0ca3df7e09..88bf879b6026 100644 --- a/packages/core/test/agent.test.ts +++ b/packages/core/test/agent.test.ts @@ -4,7 +4,7 @@ import { TestClock } from "effect/testing" import { AgentV2 } from "@opencode-ai/core/agent" import { EventV2 } from "@opencode-ai/core/event" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Location } from "@opencode-ai/core/location" import { PermissionV2 } from "@opencode-ai/core/permission" import { AgentPlugin } from "@opencode-ai/core/plugin/agent" diff --git a/packages/core/test/catalog.test.ts b/packages/core/test/catalog.test.ts index f14feaee5f4c..502a46b7d415 100644 --- a/packages/core/test/catalog.test.ts +++ b/packages/core/test/catalog.test.ts @@ -6,7 +6,7 @@ import { Catalog } from "@opencode-ai/core/catalog" import { Integration } from "@opencode-ai/core/integration" import { Credential } from "@opencode-ai/core/credential" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { ModelV2 } from "@opencode-ai/core/model" diff --git a/packages/core/test/config/agent.test.ts b/packages/core/test/config/agent.test.ts index 4579b1151f76..0380c38e3a32 100644 --- a/packages/core/test/config/agent.test.ts +++ b/packages/core/test/config/agent.test.ts @@ -6,9 +6,9 @@ import { AgentV2 } from "@opencode-ai/core/agent" import { Config } from "@opencode-ai/core/config" import { ConfigAgentPlugin } from "@opencode-ai/core/config/plugin/agent" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { Global } from "@opencode-ai/core/global" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { PermissionV2 } from "@opencode-ai/core/permission" import { AbsolutePath } from "@opencode-ai/core/schema" import { ConfigMigrateV1 } from "@opencode-ai/core/v1/config/migrate" diff --git a/packages/core/test/config/command.test.ts b/packages/core/test/config/command.test.ts index f3d1defc686f..fced5f83dbe6 100644 --- a/packages/core/test/config/command.test.ts +++ b/packages/core/test/config/command.test.ts @@ -8,8 +8,8 @@ import { AgentV2 } from "@opencode-ai/core/agent" import { Config } from "@opencode-ai/core/config" import { ConfigCommandPlugin } from "@opencode-ai/core/config/plugin/command" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { MCP } from "@opencode-ai/core/mcp/index" diff --git a/packages/core/test/config/config.test.ts b/packages/core/test/config/config.test.ts index dbef8cf06a37..2daecccc6a0c 100644 --- a/packages/core/test/config/config.test.ts +++ b/packages/core/test/config/config.test.ts @@ -8,15 +8,15 @@ import { ConfigModel } from "@opencode-ai/core/config/model" import { Config as ConfigSchema } from "@opencode-ai/schema/config" import { ConfigProvider } from "@opencode-ai/core/config/provider" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Credential } from "@opencode-ai/core/credential" import { ConfigMigrateV1 } from "@opencode-ai/core/v1/config/migrate" import { ConfigV1 } from "@opencode-ai/core/v1/config/config" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Watcher } from "@opencode-ai/core/filesystem/watcher" import { EventV2 } from "@opencode-ai/core/event" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Location } from "@opencode-ai/core/location" import { Project } from "@opencode-ai/core/project" import { ProviderV2 } from "@opencode-ai/core/provider" diff --git a/packages/core/test/config/plugin.test.ts b/packages/core/test/config/plugin.test.ts index 9d68b5f40855..2a9dfa81bf0d 100644 --- a/packages/core/test/config/plugin.test.ts +++ b/packages/core/test/config/plugin.test.ts @@ -8,7 +8,7 @@ import { Plugin } from "@opencode-ai/schema/plugin" import { AgentV2 } from "@opencode-ai/core/agent" import { Catalog } from "@opencode-ai/core/catalog" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { LocationServiceMap } from "@opencode-ai/core/location-services" diff --git a/packages/core/test/config/reload.test.ts b/packages/core/test/config/reload.test.ts index e5f8bd10fcda..d917821facb9 100644 --- a/packages/core/test/config/reload.test.ts +++ b/packages/core/test/config/reload.test.ts @@ -11,7 +11,7 @@ import { ConfigProviderPlugin } from "@opencode-ai/core/config/plugin/provider" import { ConfigReferencePlugin } from "@opencode-ai/core/config/plugin/reference" import { ConfigSkillPlugin } from "@opencode-ai/core/config/plugin/skill" import { EventV2 } from "@opencode-ai/core/event" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { PluginV2 } from "@opencode-ai/core/plugin" import { PluginHost } from "@opencode-ai/core/plugin/host" import { ProviderV2 } from "@opencode-ai/core/provider" diff --git a/packages/core/test/config/skill.test.ts b/packages/core/test/config/skill.test.ts index 8b5b0bdf6276..86df211cf8ed 100644 --- a/packages/core/test/config/skill.test.ts +++ b/packages/core/test/config/skill.test.ts @@ -3,7 +3,7 @@ import { describe, expect } from "bun:test" import { Effect, Layer, Schema } from "effect" import { Config } from "@opencode-ai/core/config" import { ConfigSkillPlugin } from "@opencode-ai/core/config/plugin/skill" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Location } from "@opencode-ai/core/location" import { AbsolutePath } from "@opencode-ai/core/schema" import { SkillV2 } from "@opencode-ai/core/skill" diff --git a/packages/core/test/credential.test.ts b/packages/core/test/credential.test.ts index c6070145d119..3b74df5c2c02 100644 --- a/packages/core/test/credential.test.ts +++ b/packages/core/test/credential.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Effect } from "effect" import { Credential } from "@opencode-ai/core/credential" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Integration } from "@opencode-ai/core/integration" import { testEffect } from "./lib/effect" diff --git a/packages/core/test/database-migration.test.ts b/packages/core/test/database-migration.test.ts index d4d76c2a2356..2c68d2e186fc 100644 --- a/packages/core/test/database-migration.test.ts +++ b/packages/core/test/database-migration.test.ts @@ -25,7 +25,7 @@ import addSessionForkMigration from "@opencode-ai/core/database/migration/202607 import timeSuspendedMigration from "@opencode-ai/core/database/migration/20260709163752_time_suspended" import instructionSyncMigration from "@opencode-ai/core/database/migration/20260710025429_instruction_sync" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { ProjectV2 } from "@opencode-ai/core/project" import { ProjectTable } from "@opencode-ai/core/project/sql" diff --git a/packages/core/test/effect/cross-spawn-spawner.test.ts b/packages/core/test/effect/cross-spawn-spawner.test.ts index fc4e3db6a92e..89aec55aff22 100644 --- a/packages/core/test/effect/cross-spawn-spawner.test.ts +++ b/packages/core/test/effect/cross-spawn-spawner.test.ts @@ -5,8 +5,8 @@ import path from "node:path" import { Effect, Exit, Stream } from "effect" import type * as PlatformError from "effect/PlatformError" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" -import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { testEffect } from "../lib/effect" const live = LayerNode.compile(CrossSpawnSpawner.node) diff --git a/packages/core/test/effect/layer-node/layer-node-types.test.ts b/packages/core/test/effect/layer-node/layer-node-types.test.ts index 366bf746daad..73f662eb3168 100644 --- a/packages/core/test/effect/layer-node/layer-node-types.test.ts +++ b/packages/core/test/effect/layer-node/layer-node-types.test.ts @@ -1,7 +1,7 @@ import { test } from "bun:test" import { Context, Effect, Layer } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { makeGlobalNode, makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { makeGlobalNode, makeLocationNode } from "@opencode-ai/util/effect/app-node" class A extends Context.Service()("test/LayerNodeA") {} class B extends Context.Service()("test/LayerNodeB") {} diff --git a/packages/core/test/effect/layer-node/layer-node.test.ts b/packages/core/test/effect/layer-node/layer-node.test.ts index b671792c59af..c344594c4539 100644 --- a/packages/core/test/effect/layer-node/layer-node.test.ts +++ b/packages/core/test/effect/layer-node/layer-node.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test" import { Context, Effect, Layer } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" class Value extends Context.Service()("test/LayerNodeValue") {} class Greeting extends Context.Service()("test/LayerNodeGreeting") {} diff --git a/packages/core/test/effect/layer-node/node-build.test.ts b/packages/core/test/effect/layer-node/node-build.test.ts index 32c9988f1627..a4a2bf28605e 100644 --- a/packages/core/test/effect/layer-node/node-build.test.ts +++ b/packages/core/test/effect/layer-node/node-build.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test" import { Context, Effect, Layer, LayerMap, Option } from "effect" -import { Node } from "@opencode-ai/core/effect/app-node" +import { Node } from "@opencode-ai/util/effect/app-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Location } from "@opencode-ai/core/location" import { LocationServiceMap } from "@opencode-ai/core/location-service-map" import type { LocationError, LocationServices } from "@opencode-ai/core/location-services" diff --git a/packages/core/test/effect/observability.test.ts b/packages/core/test/effect/observability.test.ts index 39fe91a4e57f..27a1251eff44 100644 --- a/packages/core/test/effect/observability.test.ts +++ b/packages/core/test/effect/observability.test.ts @@ -4,8 +4,8 @@ import { Effect, Layer, Logger } from "effect" import fs from "fs/promises" import os from "os" import path from "path" -import { fileLogger } from "../../src/observability/logging" -import { resource } from "../../src/observability/otlp" +import { fileLogger } from "@opencode-ai/util/observability/logging" +import { resource } from "@opencode-ai/util/observability/otlp" const otelResourceAttributes = process.env.OTEL_RESOURCE_ATTRIBUTES @@ -61,7 +61,7 @@ test("falls back to local logging when OTLP initialization fails", async () => { "--eval", ` import { Effect } from "effect" - import { Observability } from "./src/observability.ts" + import { Observability } from "@opencode-ai/util/observability" await Effect.void.pipe(Effect.provide(Observability.layer()), Effect.scoped, Effect.runPromise) `, ], diff --git a/packages/core/test/event-logger.test.ts b/packages/core/test/event-logger.test.ts index ef48d7abbd92..ab7aca7d5b9e 100644 --- a/packages/core/test/event-logger.test.ts +++ b/packages/core/test/event-logger.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test" import { Effect, Layer, Logger } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Database } from "@opencode-ai/core/database/database" import { EventV2 } from "@opencode-ai/core/event" import { EventLogger } from "@opencode-ai/core/event-logger" diff --git a/packages/core/test/event.test.ts b/packages/core/test/event.test.ts index 17d887e1929d..5fa89af8972c 100644 --- a/packages/core/test/event.test.ts +++ b/packages/core/test/event.test.ts @@ -7,7 +7,7 @@ import { SessionEvent } from "@opencode-ai/schema/session-event" import { SessionV1 } from "@opencode-ai/schema/session-v1" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventSequenceTable, EventTable } from "@opencode-ai/core/event/sql" import { Location } from "@opencode-ai/core/location" import { AbsolutePath } from "@opencode-ai/core/schema" diff --git a/packages/core/test/file-mutation.test.ts b/packages/core/test/file-mutation.test.ts index bcd6ce97ed88..73f5a7a4dcf6 100644 --- a/packages/core/test/file-mutation.test.ts +++ b/packages/core/test/file-mutation.test.ts @@ -3,9 +3,9 @@ import path from "path" import { describe, expect } from "bun:test" import { Deferred, Effect, Fiber, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { FileMutation } from "@opencode-ai/core/file-mutation" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "@opencode-ai/core/location" import { LocationMutation } from "@opencode-ai/core/location-mutation" import { AbsolutePath } from "@opencode-ai/core/schema" diff --git a/packages/core/test/filesystem/filesystem.test.ts b/packages/core/test/filesystem/filesystem.test.ts index 907fcb773953..f4203cfde764 100644 --- a/packages/core/test/filesystem/filesystem.test.ts +++ b/packages/core/test/filesystem/filesystem.test.ts @@ -1,8 +1,8 @@ import { describe, test, expect } from "bun:test" import { Effect, FileSystem } from "effect" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { testEffect } from "../lib/effect" import path from "path" diff --git a/packages/core/test/filesystem/search.test.ts b/packages/core/test/filesystem/search.test.ts index 6c47c85e9635..ab75d7165c08 100644 --- a/packages/core/test/filesystem/search.test.ts +++ b/packages/core/test/filesystem/search.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import fs from "fs/promises" import path from "path" import { Effect } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Ripgrep } from "@opencode-ai/core/ripgrep" import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema" import { tmpdir } from "../fixture/tmpdir" diff --git a/packages/core/test/filesystem/watcher.test.ts b/packages/core/test/filesystem/watcher.test.ts index d25d62b3af89..5c597d2db534 100644 --- a/packages/core/test/filesystem/watcher.test.ts +++ b/packages/core/test/filesystem/watcher.test.ts @@ -5,9 +5,9 @@ import path from "path" import { Deferred, Duration, Effect, Fiber, Layer, Option, Schedule, Stream } from "effect" import { Config } from "@opencode-ai/core/config" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { LocationWatcher } from "@opencode-ai/core/filesystem/location-watcher" import { Watcher } from "@opencode-ai/core/filesystem/watcher" import { FileSystem } from "@opencode-ai/schema/filesystem" diff --git a/packages/core/test/fixture/effect-flock-worker.ts b/packages/core/test/fixture/effect-flock-worker.ts index 7e42e80098f5..38260849d928 100644 --- a/packages/core/test/fixture/effect-flock-worker.ts +++ b/packages/core/test/fixture/effect-flock-worker.ts @@ -2,8 +2,8 @@ import fs from "fs/promises" import os from "os" import { Effect } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { EffectFlock } from "@opencode-ai/core/util/effect-flock" -import { Global } from "@opencode-ai/core/global" +import { EffectFlock } from "@opencode-ai/util/effect-flock" +import { Global } from "@opencode-ai/util/global" type Msg = { key: string diff --git a/packages/core/test/fixture/flock-worker.ts b/packages/core/test/fixture/flock-worker.ts index 0b9c314c0877..ece4dc6f5016 100644 --- a/packages/core/test/fixture/flock-worker.ts +++ b/packages/core/test/fixture/flock-worker.ts @@ -1,5 +1,5 @@ import fs from "fs/promises" -import { Flock } from "@opencode-ai/core/util/flock" +import { Flock } from "@opencode-ai/util/flock" type Msg = { key: string diff --git a/packages/core/test/form.test.ts b/packages/core/test/form.test.ts index 33283722032a..06b50f3643ba 100644 --- a/packages/core/test/form.test.ts +++ b/packages/core/test/form.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Deferred, Effect, Exit, Fiber } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Form } from "@opencode-ai/core/form" import { SessionSchema } from "@opencode-ai/core/session/schema" diff --git a/packages/core/test/git.test.ts b/packages/core/test/git.test.ts index d4d80fd732f9..abcc60181f43 100644 --- a/packages/core/test/git.test.ts +++ b/packages/core/test/git.test.ts @@ -3,7 +3,7 @@ import { $ } from "bun" import fs from "fs/promises" import path from "path" import { Effect } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Git } from "@opencode-ai/core/git" import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema" import { branch, commit, gitRemote } from "./fixture/git" diff --git a/packages/core/test/global.test.ts b/packages/core/test/global.test.ts index 4e13e8842430..ca0610941942 100644 --- a/packages/core/test/global.test.ts +++ b/packages/core/test/global.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test" import fs from "fs/promises" import os from "os" import path from "path" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" describe("global paths", () => { test("tmp path is under the system temp directory", () => { diff --git a/packages/core/test/instruction-discovery.test.ts b/packages/core/test/instruction-discovery.test.ts index 71d753681d07..aa5c759b63e2 100644 --- a/packages/core/test/instruction-discovery.test.ts +++ b/packages/core/test/instruction-discovery.test.ts @@ -3,9 +3,9 @@ import { Effect, Layer } from "effect" import fs from "fs/promises" import path from "path" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { Global } from "@opencode-ai/core/global" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery" import { Location } from "@opencode-ai/core/location" import { AbsolutePath } from "@opencode-ai/core/schema" diff --git a/packages/core/test/instruction-state.test.ts b/packages/core/test/instruction-state.test.ts index 6d7d4d78d7d7..6557731fd799 100644 --- a/packages/core/test/instruction-state.test.ts +++ b/packages/core/test/instruction-state.test.ts @@ -3,7 +3,7 @@ import { and, asc, eq } from "drizzle-orm" import { Effect, Schema } from "effect" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" import { Instructions } from "@opencode-ai/core/instructions" diff --git a/packages/core/test/instructions/builtins.test.ts b/packages/core/test/instructions/builtins.test.ts index 079c443392f0..4f8ffc20ef0e 100644 --- a/packages/core/test/instructions/builtins.test.ts +++ b/packages/core/test/instructions/builtins.test.ts @@ -3,8 +3,8 @@ import { Effect, Layer } from "effect" import * as TestClock from "effect/testing/TestClock" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { Location } from "@opencode-ai/core/location" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { Global } from "@opencode-ai/core/global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { AbsolutePath } from "@opencode-ai/core/schema" import { InstructionBuiltIns } from "@opencode-ai/core/instructions/builtins" import { SessionSchema } from "@opencode-ai/core/session/schema" diff --git a/packages/core/test/integration.test.ts b/packages/core/test/integration.test.ts index 42934bd3e5e7..e5d79a53c600 100644 --- a/packages/core/test/integration.test.ts +++ b/packages/core/test/integration.test.ts @@ -3,8 +3,8 @@ import { Cause, Clock, Duration, Effect, Exit, Fiber, Layer, Scope, Stream } fro import * as TestClock from "effect/testing/TestClock" import { Credential } from "@opencode-ai/core/credential" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Integration } from "@opencode-ai/core/integration" import { testEffect } from "./lib/effect" diff --git a/packages/core/test/kv.test.ts b/packages/core/test/kv.test.ts index 3fd3797ddeb2..bdb9001a9140 100644 --- a/packages/core/test/kv.test.ts +++ b/packages/core/test/kv.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Effect } from "effect" import { KV } from "@opencode-ai/core/kv" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { testEffect } from "./lib/effect" const it = testEffect(LayerNode.compile(KV.node)) diff --git a/packages/core/test/location-filesystem.test.ts b/packages/core/test/location-filesystem.test.ts index f0075db24514..4f59419ba604 100644 --- a/packages/core/test/location-filesystem.test.ts +++ b/packages/core/test/location-filesystem.test.ts @@ -2,7 +2,7 @@ import fs from "fs/promises" import path from "path" import { describe, expect } from "bun:test" import { Effect, Exit, Layer } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { FileSystem } from "@opencode-ai/core/filesystem" import { Location } from "@opencode-ai/core/location" import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema" diff --git a/packages/core/test/location-layer.test.ts b/packages/core/test/location-layer.test.ts index ec84b3b8ad01..44a572f138d5 100644 --- a/packages/core/test/location-layer.test.ts +++ b/packages/core/test/location-layer.test.ts @@ -9,7 +9,7 @@ import { Plugin as EffectPlugin } from "@opencode-ai/plugin/v2/effect" import { AgentV2 } from "@opencode-ai/core/agent" import { Catalog } from "@opencode-ai/core/catalog" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { LocationServiceMap } from "@opencode-ai/core/location-services" import { Location } from "@opencode-ai/core/location" import { PluginV2 } from "@opencode-ai/core/plugin" diff --git a/packages/core/test/location-mutation.test.ts b/packages/core/test/location-mutation.test.ts index 30185ae68d81..35e21905d2b3 100644 --- a/packages/core/test/location-mutation.test.ts +++ b/packages/core/test/location-mutation.test.ts @@ -2,7 +2,7 @@ import fs from "fs/promises" import path from "path" import { describe, expect, test } from "bun:test" import { Effect, Layer, Schema } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Location } from "@opencode-ai/core/location" import { LocationMutation } from "@opencode-ai/core/location-mutation" import { AbsolutePath } from "@opencode-ai/core/schema" diff --git a/packages/core/test/logging.test.ts b/packages/core/test/logging.test.ts index 6ac19ab9e135..88269ce56307 100644 --- a/packages/core/test/logging.test.ts +++ b/packages/core/test/logging.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test" import path from "path" -import { Global } from "@opencode-ai/core/global" -import { Logging } from "@opencode-ai/core/observability/logging" +import { Global } from "@opencode-ai/util/global" +import { Logging } from "@opencode-ai/util/observability/logging" describe("Logging", () => { test("uses a local-specific log file for local installs", () => { diff --git a/packages/core/test/mcp.test.ts b/packages/core/test/mcp.test.ts index c7ed503106fb..c6f9adbfe289 100644 --- a/packages/core/test/mcp.test.ts +++ b/packages/core/test/mcp.test.ts @@ -15,7 +15,7 @@ import { ConfigMCP } from "@opencode-ai/core/config/mcp" import { Config } from "@opencode-ai/core/config" import { Credential } from "@opencode-ai/core/credential" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Form } from "@opencode-ai/core/form" import { Integration } from "@opencode-ai/core/integration" diff --git a/packages/core/test/models.test.ts b/packages/core/test/models.test.ts index 0060281f3749..3228bb4eaabb 100644 --- a/packages/core/test/models.test.ts +++ b/packages/core/test/models.test.ts @@ -3,9 +3,9 @@ import { Money } from "@opencode-ai/schema/money" import { Effect, Layer, Ref } from "effect" import { HttpClient, HttpClientResponse } from "effect/unstable/http" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { Global } from "@opencode-ai/core/global" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" import { ModelV2 } from "@opencode-ai/core/model" import { ModelsDev } from "@opencode-ai/core/models-dev" import { ProviderV2 } from "@opencode-ai/core/provider" diff --git a/packages/core/test/move-session.test.ts b/packages/core/test/move-session.test.ts index 77d0840756d7..952bd292413a 100644 --- a/packages/core/test/move-session.test.ts +++ b/packages/core/test/move-session.test.ts @@ -7,7 +7,7 @@ import { Effect, Layer } from "effect" import { MoveSession } from "@opencode-ai/core/control-plane/move-session" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Job } from "@opencode-ai/core/job" import { Project } from "@opencode-ai/core/project" diff --git a/packages/core/test/npm-config.test.ts b/packages/core/test/npm-config.test.ts index 895b35db5409..a2faba8eb369 100644 --- a/packages/core/test/npm-config.test.ts +++ b/packages/core/test/npm-config.test.ts @@ -1,7 +1,7 @@ import path from "path" import { describe, expect, test } from "bun:test" import { Effect } from "effect" -import { NpmConfig } from "@opencode-ai/core/npm-config" +import { NpmConfig } from "@opencode-ai/util/npm-config" import { tmpdir } from "./fixture/tmpdir" describe("NpmConfig.load", () => { diff --git a/packages/core/test/npm.test.ts b/packages/core/test/npm.test.ts index 3a2a956299cb..b2235d5b7afd 100644 --- a/packages/core/test/npm.test.ts +++ b/packages/core/test/npm.test.ts @@ -3,8 +3,8 @@ import path from "path" import { describe, expect, test } from "bun:test" import { Effect, Option } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { Global } from "@opencode-ai/core/global" -import { Npm } from "@opencode-ai/core/npm" +import { Global } from "@opencode-ai/util/global" +import { Npm } from "@opencode-ai/util/npm" import { tmpdir } from "./fixture/tmpdir" const win = process.platform === "win32" diff --git a/packages/core/test/permission.test.ts b/packages/core/test/permission.test.ts index 669fb4d9691e..6abf9c47ca62 100644 --- a/packages/core/test/permission.test.ts +++ b/packages/core/test/permission.test.ts @@ -3,7 +3,7 @@ import { Cause, Deferred, Effect, Fiber, Layer } from "effect" import { AgentV2 } from "@opencode-ai/core/agent" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Job } from "@opencode-ai/core/job" import { Location } from "@opencode-ai/core/location" diff --git a/packages/core/test/plugin/fixture.ts b/packages/core/test/plugin/fixture.ts index ffef32738da3..ffe005cb63f8 100644 --- a/packages/core/test/plugin/fixture.ts +++ b/packages/core/test/plugin/fixture.ts @@ -4,14 +4,14 @@ import { Catalog } from "@opencode-ai/core/catalog" import { CommandV2 } from "@opencode-ai/core/command" import { Credential } from "@opencode-ai/core/credential" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { FileSystem } from "@opencode-ai/core/filesystem" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Integration } from "@opencode-ai/core/integration" import { Location } from "@opencode-ai/core/location" -import { Npm } from "@opencode-ai/core/npm" +import { Npm } from "@opencode-ai/util/npm" import { PluginV2 } from "@opencode-ai/core/plugin" import { PluginHooks } from "@opencode-ai/core/plugin/hooks" import { PluginRuntime } from "@opencode-ai/core/plugin/runtime" diff --git a/packages/core/test/plugin/models-dev.test.ts b/packages/core/test/plugin/models-dev.test.ts index 2aa5d457e250..b08e6792c276 100644 --- a/packages/core/test/plugin/models-dev.test.ts +++ b/packages/core/test/plugin/models-dev.test.ts @@ -5,7 +5,7 @@ import { Effect, Layer } from "effect" import { Catalog } from "@opencode-ai/core/catalog" import { Integration } from "@opencode-ai/core/integration" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { ModelV2 } from "@opencode-ai/core/model" diff --git a/packages/core/test/plugin/provider-dynamic.test.ts b/packages/core/test/plugin/provider-dynamic.test.ts index c5a598a8703a..d0b1a8af5ace 100644 --- a/packages/core/test/plugin/provider-dynamic.test.ts +++ b/packages/core/test/plugin/provider-dynamic.test.ts @@ -1,4 +1,4 @@ -import { Npm } from "@opencode-ai/core/npm" +import { Npm } from "@opencode-ai/util/npm" import { describe, expect } from "bun:test" import { Cause, Effect, Layer } from "effect" import fs from "fs/promises" diff --git a/packages/core/test/plugin/provider-sap-ai-core.test.ts b/packages/core/test/plugin/provider-sap-ai-core.test.ts index 8822866be8e1..26dc3ac86cfe 100644 --- a/packages/core/test/plugin/provider-sap-ai-core.test.ts +++ b/packages/core/test/plugin/provider-sap-ai-core.test.ts @@ -4,7 +4,7 @@ import { Effect } from "effect" import { ModelV2 } from "@opencode-ai/core/model" import { PluginV2 } from "@opencode-ai/core/plugin" import { PluginHost } from "@opencode-ai/core/plugin/host" -import { Npm } from "@opencode-ai/core/npm" +import { Npm } from "@opencode-ai/util/npm" import { SapAICorePlugin } from "@opencode-ai/core/plugin/provider/sap-ai-core" import { ProviderV2 } from "@opencode-ai/core/provider" import { testEffect } from "../lib/effect" diff --git a/packages/core/test/plugin/skill.test.ts b/packages/core/test/plugin/skill.test.ts index de0f745183b9..c35d7073eb65 100644 --- a/packages/core/test/plugin/skill.test.ts +++ b/packages/core/test/plugin/skill.test.ts @@ -2,8 +2,8 @@ import { describe, expect } from "bun:test" import { NodeFileSystem } from "@effect/platform-node" import { Config } from "@opencode-ai/core/config" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Location } from "@opencode-ai/core/location" import { Effect } from "effect" import { SkillPlugin } from "@opencode-ai/core/plugin/skill" diff --git a/packages/core/test/plugin/variant.test.ts b/packages/core/test/plugin/variant.test.ts index 5f3dafd2099c..5e87748dc4af 100644 --- a/packages/core/test/plugin/variant.test.ts +++ b/packages/core/test/plugin/variant.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Catalog } from "@opencode-ai/core/catalog" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Location } from "@opencode-ai/core/location" import { ModelV2 } from "@opencode-ai/core/model" import { VariantPlugin } from "@opencode-ai/core/plugin/variant" diff --git a/packages/core/test/process/process.test.ts b/packages/core/test/process/process.test.ts index 82b6dc4717a3..bf3d403e7860 100644 --- a/packages/core/test/process/process.test.ts +++ b/packages/core/test/process/process.test.ts @@ -5,8 +5,8 @@ import { tmpdir } from "node:os" import path from "node:path" import { Effect, Exit, Fiber, Stream } from "effect" import { ChildProcess } from "effect/unstable/process" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { AppProcess } from "@opencode-ai/core/process" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { AppProcess } from "@opencode-ai/util/process" import { testEffect } from "../lib/effect" const it = testEffect(LayerNode.compile(AppProcess.node)) diff --git a/packages/core/test/project-copy.test.ts b/packages/core/test/project-copy.test.ts index d37f6302074a..d85d13dcc3bb 100644 --- a/packages/core/test/project-copy.test.ts +++ b/packages/core/test/project-copy.test.ts @@ -5,7 +5,7 @@ import path from "path" import { eq } from "drizzle-orm" import { Effect, Fiber, Stream } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { AbsolutePath } from "@opencode-ai/core/schema" import { Git } from "@opencode-ai/core/git" import { Database } from "@opencode-ai/core/database/database" diff --git a/packages/core/test/project-directories.test.ts b/packages/core/test/project-directories.test.ts index d070376b68e2..9071dcb4ef1b 100644 --- a/packages/core/test/project-directories.test.ts +++ b/packages/core/test/project-directories.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Effect, Schema } from "effect" import { Database } from "@opencode-ai/core/database/database" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { Project } from "@opencode-ai/core/project" import { ProjectDirectories } from "@opencode-ai/core/project/directories" diff --git a/packages/core/test/project.test.ts b/packages/core/test/project.test.ts index 6be3333f51e4..dc505465c72d 100644 --- a/packages/core/test/project.test.ts +++ b/packages/core/test/project.test.ts @@ -8,7 +8,7 @@ import { Database } from "@opencode-ai/core/database/database" import { ProjectV2 } from "@opencode-ai/core/project" import { ProjectTable } from "@opencode-ai/core/project/sql" import { AbsolutePath } from "@opencode-ai/core/schema" -import { Hash } from "@opencode-ai/core/util/hash" +import { Hash } from "@opencode-ai/util/hash" import { tmpdir } from "./fixture/tmpdir" import { testEffect } from "./lib/effect" diff --git a/packages/core/test/pty/pty-session.test.ts b/packages/core/test/pty/pty-session.test.ts index 6d049b49aea1..d11f36fc0bf5 100644 --- a/packages/core/test/pty/pty-session.test.ts +++ b/packages/core/test/pty/pty-session.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import { Cause, Deferred, Effect, Exit, Layer, Queue } from "effect" import { Config } from "@opencode-ai/core/config" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { Pty } from "@opencode-ai/core/pty" diff --git a/packages/core/test/pty/ticket.test.ts b/packages/core/test/pty/ticket.test.ts index 10849f2f61b7..c478e721dba1 100644 --- a/packages/core/test/pty/ticket.test.ts +++ b/packages/core/test/pty/ticket.test.ts @@ -1,6 +1,6 @@ import { describe, expect } from "bun:test" import { Effect, Layer } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { PtyID } from "@opencode-ai/core/pty/schema" import { PtyTicket } from "@opencode-ai/core/pty/ticket" import { WorkspaceV2 } from "@opencode-ai/core/workspace" diff --git a/packages/core/test/question.test.ts b/packages/core/test/question.test.ts index 03d61a956507..d60288cc7964 100644 --- a/packages/core/test/question.test.ts +++ b/packages/core/test/question.test.ts @@ -1,6 +1,6 @@ import { describe, expect } from "bun:test" import { Context, Deferred, Effect, Exit, Fiber, Layer, Scope } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { EventV2 } from "@opencode-ai/core/event" import { QuestionV2 } from "@opencode-ai/core/question" diff --git a/packages/core/test/reference.test.ts b/packages/core/test/reference.test.ts index a5a656c8bff4..cc42b7ca8783 100644 --- a/packages/core/test/reference.test.ts +++ b/packages/core/test/reference.test.ts @@ -1,9 +1,9 @@ import { describe, expect } from "bun:test" import { Effect, Exit, Layer, Scope } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { AbsolutePath } from "@opencode-ai/core/schema" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Reference } from "@opencode-ai/core/reference" import { Repository } from "@opencode-ai/core/repository" import { RepositoryCache } from "@opencode-ai/core/repository-cache" diff --git a/packages/core/test/repository-cache.test.ts b/packages/core/test/repository-cache.test.ts index 2dd0ce250288..53a4abb8b726 100644 --- a/packages/core/test/repository-cache.test.ts +++ b/packages/core/test/repository-cache.test.ts @@ -4,8 +4,8 @@ import path from "path" import { pathToFileURL } from "url" import { Effect, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { Global } from "@opencode-ai/core/global" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" import { Repository } from "@opencode-ai/core/repository" import { RepositoryCache } from "@opencode-ai/core/repository-cache" import { git, gitRemote } from "./fixture/git" diff --git a/packages/core/test/ripgrep.test.ts b/packages/core/test/ripgrep.test.ts index 3abce1c02d6d..15d1ec63ce5d 100644 --- a/packages/core/test/ripgrep.test.ts +++ b/packages/core/test/ripgrep.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import fs from "fs/promises" import path from "path" import { Effect } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Ripgrep } from "@opencode-ai/core/ripgrep" import { RelativePath } from "@opencode-ai/core/schema" import { tmpdir } from "./fixture/tmpdir" diff --git a/packages/core/test/session-compact.test.ts b/packages/core/test/session-compact.test.ts index 07e15e35cb09..49b915abbe2d 100644 --- a/packages/core/test/session-compact.test.ts +++ b/packages/core/test/session-compact.test.ts @@ -4,7 +4,7 @@ import { OpenAIChat } from "@opencode-ai/ai/protocols" import { Config } from "@opencode-ai/core/config" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Job } from "@opencode-ai/core/job" import { Location } from "@opencode-ai/core/location" diff --git a/packages/core/test/session-compaction.test.ts b/packages/core/test/session-compaction.test.ts index 48bf53030cbc..a4959badf660 100644 --- a/packages/core/test/session-compaction.test.ts +++ b/packages/core/test/session-compaction.test.ts @@ -4,8 +4,8 @@ import { OpenAIChat } from "@opencode-ai/ai/protocols" import { Config } from "@opencode-ai/core/config" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { llmClient } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" import { SessionCompaction } from "@opencode-ai/core/session/compaction" @@ -18,7 +18,7 @@ import { SessionStore } from "@opencode-ai/core/session/store" import { SessionV2 } from "@opencode-ai/core/session" import { Project } from "@opencode-ai/core/project" import { ProjectTable } from "@opencode-ai/core/project/sql" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { AbsolutePath } from "@opencode-ai/core/schema" import { Money } from "@opencode-ai/schema/money" import { DateTime, Effect, Fiber, Layer, Stream } from "effect" diff --git a/packages/core/test/session-create.test.ts b/packages/core/test/session-create.test.ts index e44a50e8ddf5..80136f02f866 100644 --- a/packages/core/test/session-create.test.ts +++ b/packages/core/test/session-create.test.ts @@ -6,7 +6,7 @@ import { AgentV2 } from "@opencode-ai/core/agent" import { asc, eq } from "drizzle-orm" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" import { Location } from "@opencode-ai/core/location" diff --git a/packages/core/test/session-execution.test.ts b/packages/core/test/session-execution.test.ts index 0e25881a62cd..192b88eac871 100644 --- a/packages/core/test/session-execution.test.ts +++ b/packages/core/test/session-execution.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test" import { LLMError, TransportReason } from "@opencode-ai/ai" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { LocationServiceMap } from "@opencode-ai/core/location-service-map" import type { LocationServices } from "@opencode-ai/core/location-services" diff --git a/packages/core/test/session-generate.test.ts b/packages/core/test/session-generate.test.ts index a66ac6a69e85..647122ef349b 100644 --- a/packages/core/test/session-generate.test.ts +++ b/packages/core/test/session-generate.test.ts @@ -4,8 +4,8 @@ import { OpenAIChat } from "@opencode-ai/ai/protocols" import { AgentV2 } from "@opencode-ai/core/agent" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { llmClient } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery" diff --git a/packages/core/test/session-instructions.test.ts b/packages/core/test/session-instructions.test.ts index 64f667541e0f..f0720cfc12f7 100644 --- a/packages/core/test/session-instructions.test.ts +++ b/packages/core/test/session-instructions.test.ts @@ -5,12 +5,12 @@ import { DateTime, Effect, Layer } from "effect" import { Message } from "@opencode-ai/ai" import { AgentV2 } from "@opencode-ai/core/agent" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Config } from "@opencode-ai/core/config" import { Database } from "@opencode-ai/core/database/database" import { EventV2 } from "@opencode-ai/core/event" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { Global } from "@opencode-ai/core/global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Image } from "@opencode-ai/core/image" import { Location } from "@opencode-ai/core/location" import { LocationMutation } from "@opencode-ai/core/location-mutation" @@ -32,7 +32,7 @@ import { ToolHooks } from "@opencode-ai/core/tool/hooks" import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" import { ToolRegistry } from "@opencode-ai/core/tool/registry" import { tempLocationLayer } from "./fixture/location" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { testEffect } from "./lib/effect" import { registerToolPlugin, settleTool } from "./lib/tool" diff --git a/packages/core/test/session-log.test.ts b/packages/core/test/session-log.test.ts index a6c7797e0f5d..870f6acf02af 100644 --- a/packages/core/test/session-log.test.ts +++ b/packages/core/test/session-log.test.ts @@ -3,7 +3,7 @@ import { Effect, Fiber, Layer, Schema, Stream } from "effect" import { Database } from "@opencode-ai/core/database/database" import { AgentV2 } from "@opencode-ai/core/agent" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { ProjectV2 } from "@opencode-ai/core/project" diff --git a/packages/core/test/session-projector.test.ts b/packages/core/test/session-projector.test.ts index cddafaf52b3b..18bdcdbd62ed 100644 --- a/packages/core/test/session-projector.test.ts +++ b/packages/core/test/session-projector.test.ts @@ -3,7 +3,7 @@ import { DateTime, Effect, Fiber, Option, Schema, Stream } from "effect" import { asc, eq, sql } from "drizzle-orm" import { Database } from "@opencode-ai/core/database/database" import { AgentV2 } from "@opencode-ai/core/agent" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" diff --git a/packages/core/test/session-prompt.test.ts b/packages/core/test/session-prompt.test.ts index b86e19444a19..941154351247 100644 --- a/packages/core/test/session-prompt.test.ts +++ b/packages/core/test/session-prompt.test.ts @@ -8,7 +8,7 @@ import { eq } from "drizzle-orm" import { Database } from "@opencode-ai/core/database/database" import { AgentV2 } from "@opencode-ai/core/agent" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" import { SessionEvent } from "@opencode-ai/core/session/event" diff --git a/packages/core/test/session-remove.test.ts b/packages/core/test/session-remove.test.ts index b0fa62e5a86e..8d61af76c856 100644 --- a/packages/core/test/session-remove.test.ts +++ b/packages/core/test/session-remove.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Effect, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Database } from "@opencode-ai/core/database/database" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" diff --git a/packages/core/test/session-runner-recorded.test.ts b/packages/core/test/session-runner-recorded.test.ts index beee5d476dba..bf5b538122bb 100644 --- a/packages/core/test/session-runner-recorded.test.ts +++ b/packages/core/test/session-runner-recorded.test.ts @@ -4,8 +4,8 @@ import { Auth, LLMClient, RequestExecutor } from "@opencode-ai/ai/route" import { Catalog } from "@opencode-ai/core/catalog" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { EventTable } from "@opencode-ai/core/event/sql" import { Job } from "@opencode-ai/core/job" diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index e6c160f93713..e38875cffa46 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -17,12 +17,12 @@ import { import * as OpenAIChat from "@opencode-ai/ai/protocols/openai-chat" import { Catalog } from "@opencode-ai/core/catalog" import { Database } from "@opencode-ai/core/database/database" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { PermissionV2 } from "@opencode-ai/core/permission" import { EventTable } from "@opencode-ai/core/event/sql" import { Project } from "@opencode-ai/core/project" diff --git a/packages/core/test/session-skill.test.ts b/packages/core/test/session-skill.test.ts index d8cd7fbb5631..decf33a9a31b 100644 --- a/packages/core/test/session-skill.test.ts +++ b/packages/core/test/session-skill.test.ts @@ -3,7 +3,7 @@ import { describe, expect } from "bun:test" import { Effect, Layer, LayerMap } from "effect" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { LocationServiceMap } from "@opencode-ai/core/location-service-map" diff --git a/packages/core/test/session-title.test.ts b/packages/core/test/session-title.test.ts index f44090dd5fe9..d1cebe3d40d2 100644 --- a/packages/core/test/session-title.test.ts +++ b/packages/core/test/session-title.test.ts @@ -4,8 +4,8 @@ import { OpenAIChat } from "@opencode-ai/ai/protocols" import { AgentV2 } from "@opencode-ai/core/agent" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { llmClient } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { llmClient } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { SessionEvent } from "@opencode-ai/core/session/event" import { SessionMessage } from "@opencode-ai/core/session/message" @@ -17,7 +17,7 @@ import { SessionTitle } from "@opencode-ai/core/session/title" import { SessionV2 } from "@opencode-ai/core/session" import { Project } from "@opencode-ai/core/project" import { ProjectTable } from "@opencode-ai/core/project/sql" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { AbsolutePath } from "@opencode-ai/core/schema" import { Money } from "@opencode-ai/schema/money" import { Effect, Layer, Stream } from "effect" diff --git a/packages/core/test/session-tool-progress.test.ts b/packages/core/test/session-tool-progress.test.ts index e61bb54b636c..0935ee36338b 100644 --- a/packages/core/test/session-tool-progress.test.ts +++ b/packages/core/test/session-tool-progress.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import { asc, eq } from "drizzle-orm" import { DateTime, Effect, Schema } from "effect" import { Database } from "@opencode-ai/core/database/database" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { AgentV2 } from "@opencode-ai/core/agent" import { EventTable } from "@opencode-ai/core/event/sql" diff --git a/packages/core/test/session-wait.test.ts b/packages/core/test/session-wait.test.ts index e15543f4778c..b7c69c478002 100644 --- a/packages/core/test/session-wait.test.ts +++ b/packages/core/test/session-wait.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import { Effect, Layer } from "effect" import { Database } from "@opencode-ai/core/database/database" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Job } from "@opencode-ai/core/job" import { Location } from "@opencode-ai/core/location" diff --git a/packages/core/test/shell.test.ts b/packages/core/test/shell.test.ts index a3fd4f2b6b90..78782442255d 100644 --- a/packages/core/test/shell.test.ts +++ b/packages/core/test/shell.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test" import path from "path" import { ShellSelect } from "@opencode-ai/core/shell/select" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { which } from "@opencode-ai/core/util/which" const withShell = async (shell: string | undefined, fn: () => void | Promise) => { diff --git a/packages/core/test/skill-discovery.test.ts b/packages/core/test/skill-discovery.test.ts index ca95c64a4907..850f4c2aea15 100644 --- a/packages/core/test/skill-discovery.test.ts +++ b/packages/core/test/skill-discovery.test.ts @@ -3,7 +3,7 @@ import path from "path" import { describe, expect, test } from "bun:test" import { Effect } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { SkillDiscovery } from "@opencode-ai/core/skill/discovery" import { tmpdir } from "./fixture/tmpdir" diff --git a/packages/core/test/skill.test.ts b/packages/core/test/skill.test.ts index 428dfaecd038..06df3dc83954 100644 --- a/packages/core/test/skill.test.ts +++ b/packages/core/test/skill.test.ts @@ -4,9 +4,9 @@ import { describe, expect } from "bun:test" import { Deferred, Effect, Fiber, Layer, Stream } from "effect" import { AgentV2 } from "@opencode-ai/core/agent" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { AbsolutePath } from "@opencode-ai/core/schema" import { SkillV2 } from "@opencode-ai/core/skill" import { SkillDiscovery } from "@opencode-ai/core/skill/discovery" diff --git a/packages/core/test/snapshot.test.ts b/packages/core/test/snapshot.test.ts index 5e16dbed9c0e..eba95e66267e 100644 --- a/packages/core/test/snapshot.test.ts +++ b/packages/core/test/snapshot.test.ts @@ -5,11 +5,11 @@ import path from "path" import { Deferred, Effect, Fiber, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { Git } from "@opencode-ai/core/git" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { Location } from "@opencode-ai/core/location" import { AbsolutePath, RelativePath } from "@opencode-ai/core/schema" import { Snapshot } from "@opencode-ai/core/snapshot" -import { Hash } from "@opencode-ai/core/util/hash" +import { Hash } from "@opencode-ai/util/hash" import { tmpdir } from "./fixture/tmpdir" import { testEffect } from "./lib/effect" diff --git a/packages/core/test/tool-edit.test.ts b/packages/core/test/tool-edit.test.ts index ded236e6541d..4beb47f84913 100644 --- a/packages/core/test/tool-edit.test.ts +++ b/packages/core/test/tool-edit.test.ts @@ -4,9 +4,9 @@ import { fileURLToPath } from "url" import { describe, expect, test } from "bun:test" import { Effect, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { FileMutation } from "@opencode-ai/core/file-mutation" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "@opencode-ai/core/location" import { LocationMutation } from "@opencode-ai/core/location-mutation" import { PermissionV2 } from "@opencode-ai/core/permission" @@ -17,7 +17,7 @@ import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" import { EditTool } from "@opencode-ai/core/tool/edit" import { location } from "./fixture/location" import { tmpdir } from "./fixture/tmpdir" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { testEffect } from "./lib/effect" import { toolIdentity, executeTool, registerToolPlugin, settleTool, toolDefinitions } from "./lib/tool" diff --git a/packages/core/test/tool-output-store.test.ts b/packages/core/test/tool-output-store.test.ts index 4de63dfdcd06..d8a872ce602e 100644 --- a/packages/core/test/tool-output-store.test.ts +++ b/packages/core/test/tool-output-store.test.ts @@ -2,9 +2,9 @@ import { describe, expect } from "bun:test" import path from "path" import { Cause, Effect, Exit, Fiber, Layer, Option } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { Global } from "@opencode-ai/core/global" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Config } from "@opencode-ai/core/config" import { ConfigToolOutput } from "@opencode-ai/core/config/tool-output" import { SessionV2 } from "@opencode-ai/core/session" diff --git a/packages/core/test/tool-patch.test.ts b/packages/core/test/tool-patch.test.ts index 2f9319714032..05cee564186e 100644 --- a/packages/core/test/tool-patch.test.ts +++ b/packages/core/test/tool-patch.test.ts @@ -3,8 +3,8 @@ import path from "path" import { describe, expect } from "bun:test" import { Effect, Exit, Layer, Schema } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "@opencode-ai/core/location" import { PermissionV2 } from "@opencode-ai/core/permission" import { AbsolutePath } from "@opencode-ai/core/schema" @@ -14,7 +14,7 @@ import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" import { PatchTool } from "@opencode-ai/core/tool/patch" import { location } from "./fixture/location" import { tmpdir } from "./fixture/tmpdir" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { testEffect } from "./lib/effect" import { toolIdentity, executeTool, registerToolPlugin, settleTool, toolDefinitions } from "./lib/tool" diff --git a/packages/core/test/tool-question.test.ts b/packages/core/test/tool-question.test.ts index f3ef03bf79e7..002806ec49c5 100644 --- a/packages/core/test/tool-question.test.ts +++ b/packages/core/test/tool-question.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Cause, Effect, Exit, Fiber, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Form } from "@opencode-ai/core/form" import { PermissionV2 } from "@opencode-ai/core/permission" import { SessionV2 } from "@opencode-ai/core/session" @@ -11,7 +11,7 @@ import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" import { Image } from "@opencode-ai/core/image" import { testEffect } from "./lib/effect" import { imagePassthrough } from "./lib/image" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { toolIdentity, executeTool, registerToolPlugin, settleTool, toolDefinitions } from "./lib/tool" const sessionID = SessionV2.ID.make("ses_question_tool_test") diff --git a/packages/core/test/tool-read-filesystem.test.ts b/packages/core/test/tool-read-filesystem.test.ts index e9970fb975da..92c4f1739725 100644 --- a/packages/core/test/tool-read-filesystem.test.ts +++ b/packages/core/test/tool-read-filesystem.test.ts @@ -1,9 +1,9 @@ import { describe, expect } from "bun:test" import path from "path" import { Effect, FileSystem } from "effect" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { ReadToolFileSystem } from "@opencode-ai/core/tool/read-filesystem" import { testEffect } from "./lib/effect" diff --git a/packages/core/test/tool-read.test.ts b/packages/core/test/tool-read.test.ts index 6437e3f12823..6d309e38348c 100644 --- a/packages/core/test/tool-read.test.ts +++ b/packages/core/test/tool-read.test.ts @@ -4,22 +4,22 @@ import { Effect, Exit, Layer, PlatformError } from "effect" import { Config } from "@opencode-ai/core/config" import { ConfigAttachments } from "@opencode-ai/core/config/attachments" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { FileSystem } from "@opencode-ai/core/filesystem" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "@opencode-ai/core/location" import { Image } from "@opencode-ai/core/image" import { PermissionV2 } from "@opencode-ai/core/permission" import { SessionV2 } from "@opencode-ai/core/session" import { AbsolutePath } from "@opencode-ai/core/schema" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { LocationMutation } from "@opencode-ai/core/location-mutation" import { location } from "./fixture/location" import { ToolRegistry } from "@opencode-ai/core/tool/registry" import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" import { ReadTool } from "@opencode-ai/core/tool/read" import { ReadToolFileSystem } from "@opencode-ai/core/tool/read-filesystem" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { SessionInstructions } from "@opencode-ai/core/session/instructions" import { testEffect } from "./lib/effect" import { toolIdentity, executeTool, registerToolPlugin, settleTool, toolDefinitions } from "./lib/tool" diff --git a/packages/core/test/tool-search.test.ts b/packages/core/test/tool-search.test.ts index 45a3e42296d5..3152c3f4e1e3 100644 --- a/packages/core/test/tool-search.test.ts +++ b/packages/core/test/tool-search.test.ts @@ -3,10 +3,10 @@ import fs from "fs/promises" import path from "path" import { Effect, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { FileSystem } from "@opencode-ai/core/filesystem" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "@opencode-ai/core/location" import { PermissionV2 } from "@opencode-ai/core/permission" import { Ripgrep } from "@opencode-ai/core/ripgrep" diff --git a/packages/core/test/tool-shell.test.ts b/packages/core/test/tool-shell.test.ts index 1e59e788e49d..2b66b2ec8db1 100644 --- a/packages/core/test/tool-shell.test.ts +++ b/packages/core/test/tool-shell.test.ts @@ -5,13 +5,13 @@ import { describe, expect, test } from "bun:test" import { DateTime, Deferred, Duration, Effect, Fiber, Layer, Scope, Stream } from "effect" import { Money } from "@opencode-ai/schema/money" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" -import { filesystem } from "@opencode-ai/core/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { filesystem } from "@opencode-ai/util/effect/app-node-platform" import { Database } from "@opencode-ai/core/database/database" import { EventV2 } from "@opencode-ai/core/event" -import { FSUtil } from "@opencode-ai/core/fs-util" -import { Global } from "@opencode-ai/core/global" +import { FSUtil } from "@opencode-ai/util/fs-util" +import { Global } from "@opencode-ai/util/global" import { Location } from "@opencode-ai/core/location" import { LocationServiceMap } from "@opencode-ai/core/location-service-map" import { ModelV2 } from "@opencode-ai/core/model" diff --git a/packages/core/test/tool-skill.test.ts b/packages/core/test/tool-skill.test.ts index 8cc3eb25df75..d6745b44d258 100644 --- a/packages/core/test/tool-skill.test.ts +++ b/packages/core/test/tool-skill.test.ts @@ -3,7 +3,7 @@ import path from "path" import { describe, expect } from "bun:test" import { Effect, Layer } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { PermissionV2 } from "@opencode-ai/core/permission" import { AbsolutePath } from "@opencode-ai/core/schema" import { SessionV2 } from "@opencode-ai/core/session" @@ -15,8 +15,8 @@ import { tmpdir } from "./fixture/tmpdir" import { Image } from "@opencode-ai/core/image" import { it } from "./lib/effect" import { imagePassthrough } from "./lib/image" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { toolIdentity, executeTool, registerToolPlugin, settleTool, toolDefinitions } from "./lib/tool" const skillToolNode = makeLocationNode({ diff --git a/packages/core/test/tool-subagent.test.ts b/packages/core/test/tool-subagent.test.ts index fc257a7d4025..f86d0d184562 100644 --- a/packages/core/test/tool-subagent.test.ts +++ b/packages/core/test/tool-subagent.test.ts @@ -3,8 +3,8 @@ import { DateTime, Effect, Fiber, Layer, Schema, Stream } from "effect" import path from "path" import { Money } from "@opencode-ai/schema/money" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { Database } from "@opencode-ai/core/database/database" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" diff --git a/packages/core/test/tool-webfetch.test.ts b/packages/core/test/tool-webfetch.test.ts index fc38296c9bad..27a917d56758 100644 --- a/packages/core/test/tool-webfetch.test.ts +++ b/packages/core/test/tool-webfetch.test.ts @@ -3,14 +3,14 @@ import { Duration, Effect, Fiber, Layer, Schema } from "effect" import * as TestClock from "effect/testing/TestClock" import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" import { PermissionV2 } from "@opencode-ai/core/permission" import { SessionV2 } from "@opencode-ai/core/session" import { ToolRegistry } from "@opencode-ai/core/tool/registry" import { WebFetchTool } from "@opencode-ai/core/tool/webfetch" import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Image } from "@opencode-ai/core/image" import { testEffect } from "./lib/effect" import { imagePassthrough } from "./lib/image" diff --git a/packages/core/test/tool-websearch.test.ts b/packages/core/test/tool-websearch.test.ts index 8d1cc1e67919..f8468285a5fd 100644 --- a/packages/core/test/tool-websearch.test.ts +++ b/packages/core/test/tool-websearch.test.ts @@ -2,14 +2,14 @@ import { beforeEach, describe, expect, test } from "bun:test" import { Effect, Layer, Schema } from "effect" import { HttpClient, HttpClientResponse } from "effect/unstable/http" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { LayerNodePlatform } from "@opencode-ai/util/effect/app-node-platform" import { PermissionV2 } from "@opencode-ai/core/permission" import { SessionV2 } from "@opencode-ai/core/session" import { ToolRegistry } from "@opencode-ai/core/tool/registry" import { WebSearchTool } from "@opencode-ai/core/tool/websearch" import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { Image } from "@opencode-ai/core/image" import { testEffect } from "./lib/effect" import { imagePassthrough } from "./lib/image" diff --git a/packages/core/test/tool-write.test.ts b/packages/core/test/tool-write.test.ts index 1fc82f142825..11698f922432 100644 --- a/packages/core/test/tool-write.test.ts +++ b/packages/core/test/tool-write.test.ts @@ -5,8 +5,8 @@ import { describe, expect, test } from "bun:test" import { Effect, Layer } from "effect" import { FileMutation } from "@opencode-ai/core/file-mutation" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { FSUtil } from "@opencode-ai/core/fs-util" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { FSUtil } from "@opencode-ai/util/fs-util" import { Location } from "@opencode-ai/core/location" import { LocationMutation } from "@opencode-ai/core/location-mutation" import { PermissionV2 } from "@opencode-ai/core/permission" @@ -17,7 +17,7 @@ import { ToolOutputStore } from "@opencode-ai/core/tool-output-store" import { WriteTool } from "@opencode-ai/core/tool/write" import { location } from "./fixture/location" import { tmpdir } from "./fixture/tmpdir" -import { makeLocationNode } from "@opencode-ai/core/effect/app-node" +import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { testEffect } from "./lib/effect" import { toolIdentity, executeTool, registerToolPlugin, settleTool, toolDefinitions } from "./lib/tool" diff --git a/packages/core/test/util/effect-flock.test.ts b/packages/core/test/util/effect-flock.test.ts index ca2820737d81..436074b503b1 100644 --- a/packages/core/test/util/effect-flock.test.ts +++ b/packages/core/test/util/effect-flock.test.ts @@ -6,10 +6,10 @@ import os from "os" import { Cause, Effect, Exit } from "effect" import { testEffect } from "../lib/effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { EffectFlock } from "@opencode-ai/core/util/effect-flock" -import { Global } from "@opencode-ai/core/global" -import { Hash } from "@opencode-ai/core/util/hash" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { EffectFlock } from "@opencode-ai/util/effect-flock" +import { Global } from "@opencode-ai/util/global" +import { Hash } from "@opencode-ai/util/hash" function lock(dir: string, key: string) { return path.join(dir, Hash.fast(key) + ".lock") diff --git a/packages/core/test/util/flock.test.ts b/packages/core/test/util/flock.test.ts index 53bfc1874ea8..37cd51497bfb 100644 --- a/packages/core/test/util/flock.test.ts +++ b/packages/core/test/util/flock.test.ts @@ -3,8 +3,8 @@ import fs from "fs/promises" import { spawn } from "child_process" import path from "path" import os from "os" -import { Flock } from "@opencode-ai/core/util/flock" -import { Hash } from "@opencode-ai/core/util/hash" +import { Flock } from "@opencode-ai/util/flock" +import { Hash } from "@opencode-ai/util/hash" type Msg = { key: string diff --git a/packages/core/test/vcs-hg.test.ts b/packages/core/test/vcs-hg.test.ts index 372631cb1fcf..f699eb645753 100644 --- a/packages/core/test/vcs-hg.test.ts +++ b/packages/core/test/vcs-hg.test.ts @@ -3,7 +3,7 @@ import { describe, expect } from "bun:test" import fs from "fs/promises" import path from "path" import { Effect, Layer } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Location } from "@opencode-ai/core/location" import { AbsolutePath } from "@opencode-ai/core/schema" import { Vcs } from "@opencode-ai/core/vcs" diff --git a/packages/core/test/vcs.test.ts b/packages/core/test/vcs.test.ts index 2a42d1f54af7..822deff75bd5 100644 --- a/packages/core/test/vcs.test.ts +++ b/packages/core/test/vcs.test.ts @@ -3,7 +3,7 @@ import { describe, expect } from "bun:test" import fs from "fs/promises" import path from "path" import { Effect, Layer } from "effect" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Location } from "@opencode-ai/core/location" import { AbsolutePath } from "@opencode-ai/core/schema" import { Vcs } from "@opencode-ai/core/vcs" diff --git a/packages/core/test/wellknown.test.ts b/packages/core/test/wellknown.test.ts index 08ecbfc8b640..829f60ccd789 100644 --- a/packages/core/test/wellknown.test.ts +++ b/packages/core/test/wellknown.test.ts @@ -2,7 +2,7 @@ import { expect } from "bun:test" import { Effect, Fiber, Stream } from "effect" import { FetchHttpClient } from "effect/unstable/http" import { KV } from "@opencode-ai/core/kv" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { WellKnown } from "@opencode-ai/core/wellknown" import { testEffect } from "./lib/effect" diff --git a/packages/server/package.json b/packages/server/package.json index fce964340f84..f661018fe8f9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -17,6 +17,7 @@ "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", "@opencode-ai/simulation": "workspace:*", + "@opencode-ai/util": "workspace:*", "drizzle-orm": "catalog:", "effect": "catalog:" }, diff --git a/packages/server/src/handlers/health.ts b/packages/server/src/handlers/health.ts index 111113efd464..19d32a6b1066 100644 --- a/packages/server/src/handlers/health.ts +++ b/packages/server/src/handlers/health.ts @@ -1,4 +1,4 @@ -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Effect } from "effect" import { HttpApiBuilder } from "effect/unstable/httpapi" import { Api } from "../api" diff --git a/packages/server/src/options.ts b/packages/server/src/options.ts index 30625dcfa033..91de36dbbf2c 100644 --- a/packages/server/src/options.ts +++ b/packages/server/src/options.ts @@ -1,6 +1,6 @@ import { Database } from "@opencode-ai/core/database/database" import { ModelsDev } from "@opencode-ai/core/models-dev" -import { Observability } from "@opencode-ai/core/observability" +import { Observability } from "@opencode-ai/util/observability" import { Schema } from "effect" export const ServerOptions = Schema.Struct({ diff --git a/packages/server/src/process.ts b/packages/server/src/process.ts index d1d70201800c..6f57ed723d87 100644 --- a/packages/server/src/process.ts +++ b/packages/server/src/process.ts @@ -1,7 +1,7 @@ export * as ServerProcess from "./process" import { NodeHttpServer, NodeHttpServerRequest } from "@effect/platform-node" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { SessionRestart } from "@opencode-ai/core/session/execution/restart" import { ServiceStatus } from "@opencode-ai/protocol/groups/health" import { hasPtyConnectTicketURL } from "@opencode-ai/protocol/groups/pty" diff --git a/packages/server/src/pty-environment.ts b/packages/server/src/pty-environment.ts index 3e18a6f9258f..0d8e3381a5a4 100644 --- a/packages/server/src/pty-environment.ts +++ b/packages/server/src/pty-environment.ts @@ -1,7 +1,7 @@ export * as PtyEnvironment from "./pty-environment" import { Context, Effect, Layer } from "effect" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" export interface Interface { readonly get: (input: { directory: string; cwd: string }) => Effect.Effect> diff --git a/packages/server/src/routes.ts b/packages/server/src/routes.ts index 37878b9f7d2e..1cd36240ef41 100644 --- a/packages/server/src/routes.ts +++ b/packages/server/src/routes.ts @@ -1,11 +1,11 @@ import { Database } from "@opencode-ai/core/database/database" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { httpClient } from "@opencode-ai/core/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { EventV2 } from "@opencode-ai/core/event" import { EventLogger } from "@opencode-ai/core/event-logger" import { FileSystemSearch } from "@opencode-ai/core/filesystem/search" -import { Observability } from "@opencode-ai/core/observability" +import { Observability } from "@opencode-ai/util/observability" import { Credential } from "@opencode-ai/core/credential" import { Config } from "@opencode-ai/core/config" import { CommandV2 } from "@opencode-ai/core/command" @@ -20,7 +20,7 @@ import { SessionModelRequest } from "@opencode-ai/core/session/model-request" import { SessionTitle } from "@opencode-ai/core/session/title" import { Shell } from "@opencode-ai/core/shell" import { Job } from "@opencode-ai/core/job" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { InstructionDiscovery } from "@opencode-ai/core/instruction-discovery" import { LocationServiceMap } from "@opencode-ai/core/location-service-map" import { ModelsDev } from "@opencode-ai/core/models-dev" diff --git a/packages/simulation/package.json b/packages/simulation/package.json index 010097c4bdaf..23a7d4836e22 100644 --- a/packages/simulation/package.json +++ b/packages/simulation/package.json @@ -25,6 +25,7 @@ "@opencode-ai/core": "workspace:*", "@opencode-ai/ai": "workspace:*", "@opencode-ai/plugin": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "effect": "catalog:" }, diff --git a/packages/simulation/src/backend/index.ts b/packages/simulation/src/backend/index.ts index 2eef5a6706e1..bd430e0f1dde 100644 --- a/packages/simulation/src/backend/index.ts +++ b/packages/simulation/src/backend/index.ts @@ -1,6 +1,6 @@ -import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" -import { httpClient } from "@opencode-ai/core/effect/app-node-platform" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" +import { httpClient } from "@opencode-ai/util/effect/app-node-platform" import { SdkPlugins } from "@opencode-ai/core/plugin/sdk" import { Config, Effect, Layer } from "effect" import { HttpClient } from "effect/unstable/http" diff --git a/packages/simulation/src/backend/simulated-provider.ts b/packages/simulation/src/backend/simulated-provider.ts index a2470a5d6f2a..7d1a67470170 100644 --- a/packages/simulation/src/backend/simulated-provider.ts +++ b/packages/simulation/src/backend/simulated-provider.ts @@ -1,4 +1,4 @@ -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { SdkPlugins } from "@opencode-ai/core/plugin/sdk" import { Plugin } from "@opencode-ai/plugin/v2/effect" import { Tool } from "@opencode-ai/plugin/v2/effect/tool" diff --git a/packages/simulation/src/frontend/server.ts b/packages/simulation/src/frontend/server.ts index 73ad44e4a95c..4aaabd882c44 100644 --- a/packages/simulation/src/frontend/server.ts +++ b/packages/simulation/src/frontend/server.ts @@ -1,4 +1,4 @@ -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { Effect } from "effect" import { SimulationControlServer } from "../control-server" import { SimulationProtocol } from "../protocol" diff --git a/packages/simulation/test/simulated-provider.test.ts b/packages/simulation/test/simulated-provider.test.ts index 271ef58009f2..b91922f1386e 100644 --- a/packages/simulation/test/simulated-provider.test.ts +++ b/packages/simulation/test/simulated-provider.test.ts @@ -5,9 +5,9 @@ import { join } from "node:path" import { AgentV2 } from "@opencode-ai/core/agent" import { Config } from "@opencode-ai/core/config" import { Database } from "@opencode-ai/core/database/database" -import { makeGlobalNode } from "@opencode-ai/core/effect/app-node" +import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { Location } from "@opencode-ai/core/location" import { LocationServiceMap } from "@opencode-ai/core/location-services" diff --git a/packages/tui/package.json b/packages/tui/package.json index 6ec968a2ff59..8ced93ff1fcb 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -84,6 +84,7 @@ "@opencode-ai/schema": "workspace:*", "@opencode-ai/simulation": "workspace:*", "@opencode-ai/ui": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", diff --git a/packages/tui/src/app.tsx b/packages/tui/src/app.tsx index 47f5168dbf6a..27f561b69f22 100644 --- a/packages/tui/src/app.tsx +++ b/packages/tui/src/app.tsx @@ -3,7 +3,7 @@ import { registerOpencodeSpinner } from "./component/register-spinner" import { Deferred, Effect } from "effect" import { Service, type Endpoint } from "@opencode-ai/client/effect/service" import { OpenCode } from "@opencode-ai/client" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { ClipboardProvider, useClipboard } from "./context/clipboard" import { LogProvider, useLog, type LogSink } from "./context/log" import { ExitProvider, useExit } from "./context/exit" diff --git a/packages/tui/src/component/dialog-debug.tsx b/packages/tui/src/component/dialog-debug.tsx index 99e0fd0f7139..43b24b2d0c4a 100644 --- a/packages/tui/src/component/dialog-debug.tsx +++ b/packages/tui/src/component/dialog-debug.tsx @@ -1,6 +1,6 @@ import { TextAttributes } from "@opentui/core" import { createMemo, createSignal, For } from "solid-js" -import { InstallationChannel, InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationChannel, InstallationVersion } from "@opencode-ai/util/installation/version" import { Keymap } from "../context/keymap" import { useTheme } from "../context/theme" import { useDialog } from "../ui/dialog" diff --git a/packages/tui/src/component/error-component.tsx b/packages/tui/src/component/error-component.tsx index 8d778badca63..c17ee2957319 100644 --- a/packages/tui/src/component/error-component.tsx +++ b/packages/tui/src/component/error-component.tsx @@ -3,7 +3,7 @@ import { useKeyboard, useTerminalDimensions } from "@opentui/solid" import { createSignal, For, Show } from "solid-js" import { getScrollAcceleration } from "../util/scroll" import { useClipboard } from "../context/clipboard" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { useExit } from "../context/exit" import { describeOS, describeTerminal } from "../util/system" diff --git a/packages/tui/src/context/theme.tsx b/packages/tui/src/context/theme.tsx index 0a70f763d504..13caa748c9e2 100644 --- a/packages/tui/src/context/theme.tsx +++ b/packages/tui/src/context/theme.tsx @@ -26,7 +26,7 @@ import { createEffect, createMemo, onCleanup, onMount, type Accessor } from "sol import { createStore, produce } from "solid-js/store" import { createSimpleContext } from "./helper" import { useConfig } from "../config" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { DevTools } from "../devtools" const themePerformance = DevTools.register({ id: "theme-performance", title: "Theme performance" }) diff --git a/packages/tui/src/feature-plugins/home/footer.tsx b/packages/tui/src/feature-plugins/home/footer.tsx index 903bc16dfe53..ad66916a98fe 100644 --- a/packages/tui/src/feature-plugins/home/footer.tsx +++ b/packages/tui/src/feature-plugins/home/footer.tsx @@ -1,5 +1,5 @@ import { Plugin } from "@opencode-ai/plugin/v2/tui" -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { InstallationVersion } from "@opencode-ai/util/installation/version" import { createMemo, Match, Show, Switch } from "solid-js" import { useTerminalDimensions } from "@opentui/solid" import { useTuiPaths } from "../../context/runtime" diff --git a/packages/tui/test/app-lifecycle.test.tsx b/packages/tui/test/app-lifecycle.test.tsx index a6425b8cf9fe..7c6584f25055 100644 --- a/packages/tui/test/app-lifecycle.test.tsx +++ b/packages/tui/test/app-lifecycle.test.tsx @@ -2,7 +2,7 @@ import { expect, mock, test } from "bun:test" import { createTestRenderer } from "@opentui/core/testing" import { Effect, FileSystem } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" -import { Global } from "@opencode-ai/core/global" +import { Global } from "@opencode-ai/util/global" import { createEventStream, createFetch, directory, json } from "./fixture/tui-client" test("SIGHUP clears title and disposes scoped resources once", async () => { diff --git a/packages/util/package.json b/packages/util/package.json new file mode 100644 index 000000000000..817c94328fa0 --- /dev/null +++ b/packages/util/package.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "name": "@opencode-ai/util", + "version": "1.18.3", + "private": true, + "type": "module", + "license": "MIT", + "exports": { + "./effect/layer-node": "./src/effect/layer-node.ts", + "./*": "./src/*.ts" + }, + "imports": { + "#runtime-import": { + "bun": "./src/runtime/import.bun.ts", + "node": "./src/runtime/import.node.ts", + "default": "./src/runtime/import.bun.ts" + } + }, + "scripts": { + "typecheck": "tsgo --noEmit" + }, + "dependencies": { + "@effect/opentelemetry": "catalog:", + "@effect/platform-node": "catalog:", + "@npmcli/arborist": "catalog:", + "@npmcli/config": "10.8.1", + "@opencode-ai/ai": "workspace:*", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/context-async-hooks": "2.6.1", + "@opentelemetry/exporter-trace-otlp-http": "0.214.0", + "@opentelemetry/sdk-trace-base": "2.6.1", + "cross-spawn": "catalog:", + "effect": "catalog:", + "glob": "13.0.5", + "mime-types": "3.0.2", + "minimatch": "10.2.5", + "npm-package-arg": "13.0.2", + "resolve.exports": "catalog:", + "xdg-basedir": "5.1.0" + }, + "devDependencies": { + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@types/cross-spawn": "catalog:", + "@types/node": "catalog:", + "@types/npm-package-arg": "6.1.4", + "@types/npmcli__arborist": "6.3.3", + "@typescript/native-preview": "catalog:" + } +} diff --git a/packages/core/src/cross-spawn-spawner.ts b/packages/util/src/cross-spawn-spawner.ts similarity index 100% rename from packages/core/src/cross-spawn-spawner.ts rename to packages/util/src/cross-spawn-spawner.ts diff --git a/packages/core/src/util/effect-flock.ts b/packages/util/src/effect-flock.ts similarity index 98% rename from packages/core/src/util/effect-flock.ts rename to packages/util/src/effect-flock.ts index c190d37393e7..7da2cc590ecb 100644 --- a/packages/core/src/util/effect-flock.ts +++ b/packages/util/src/effect-flock.ts @@ -4,9 +4,9 @@ import { randomUUID } from "crypto" import { Context, Effect, Function, Layer, Option, Schedule, Schema } from "effect" import type { FileSystem, Scope } from "effect" import type { PlatformError } from "effect/PlatformError" -import { FSUtil } from "../fs-util" -import { Global } from "../global" -import { makeGlobalNode } from "../effect/app-node" +import { FSUtil } from "./fs-util" +import { Global } from "./global" +import { makeGlobalNode } from "./effect/app-node" import { Hash } from "./hash" export namespace EffectFlock { diff --git a/packages/core/src/effect/app-node-platform.ts b/packages/util/src/effect/app-node-platform.ts similarity index 89% rename from packages/core/src/effect/app-node-platform.ts rename to packages/util/src/effect/app-node-platform.ts index 23b221d17825..213ca758951f 100644 --- a/packages/core/src/effect/app-node-platform.ts +++ b/packages/util/src/effect/app-node-platform.ts @@ -1,8 +1,7 @@ import { NodeFileSystem, NodePath } from "@effect/platform-node" import { LLMClient, RequestExecutor } from "@opencode-ai/ai/route" import { FileSystem, Path } from "effect" -import { FetchHttpClient } from "effect/unstable/http" -import { HttpClient } from "effect/unstable/http" +import { FetchHttpClient, HttpClient } from "effect/unstable/http" import { makeGlobalNode } from "./app-node" export const filesystem = makeGlobalNode({ service: FileSystem.FileSystem, layer: NodeFileSystem.layer, deps: [] }) diff --git a/packages/core/src/effect/app-node.ts b/packages/util/src/effect/app-node.ts similarity index 100% rename from packages/core/src/effect/app-node.ts rename to packages/util/src/effect/app-node.ts diff --git a/packages/core/src/effect/layer-node.ts b/packages/util/src/effect/layer-node.ts similarity index 100% rename from packages/core/src/effect/layer-node.ts rename to packages/util/src/effect/layer-node.ts diff --git a/packages/core/src/effect/memo-map.ts b/packages/util/src/effect/memo-map.ts similarity index 100% rename from packages/core/src/effect/memo-map.ts rename to packages/util/src/effect/memo-map.ts diff --git a/packages/core/src/effect/runtime.ts b/packages/util/src/effect/runtime.ts similarity index 100% rename from packages/core/src/effect/runtime.ts rename to packages/util/src/effect/runtime.ts diff --git a/packages/core/src/effect/service-use.ts b/packages/util/src/effect/service-use.ts similarity index 100% rename from packages/core/src/effect/service-use.ts rename to packages/util/src/effect/service-use.ts diff --git a/packages/core/src/util/flock.ts b/packages/util/src/flock.ts similarity index 100% rename from packages/core/src/util/flock.ts rename to packages/util/src/flock.ts diff --git a/packages/core/src/fs-util.ts b/packages/util/src/fs-util.ts similarity index 99% rename from packages/core/src/fs-util.ts rename to packages/util/src/fs-util.ts index 0c74fbbc35d9..152d2599fd3d 100644 --- a/packages/core/src/fs-util.ts +++ b/packages/util/src/fs-util.ts @@ -5,7 +5,7 @@ import { readdir } from "fs/promises" import { lookup } from "mime-types" import { Context, Effect, FileSystem, Layer, Schema } from "effect" import type { PlatformError } from "effect/PlatformError" -import { Glob } from "./util/glob" +import { Glob } from "./glob" import { serviceUse } from "./effect/service-use" import { makeGlobalNode } from "./effect/app-node" import { filesystem } from "./effect/app-node-platform" diff --git a/packages/core/src/util/glob.ts b/packages/util/src/glob.ts similarity index 100% rename from packages/core/src/util/glob.ts rename to packages/util/src/glob.ts diff --git a/packages/core/src/global.ts b/packages/util/src/global.ts similarity index 98% rename from packages/core/src/global.ts rename to packages/util/src/global.ts index e3909880d3ae..bced17b5b33e 100644 --- a/packages/core/src/global.ts +++ b/packages/util/src/global.ts @@ -3,7 +3,7 @@ import fs from "fs/promises" import { xdgData, xdgCache, xdgConfig, xdgState } from "xdg-basedir" import os from "os" import { Context, Effect, Layer } from "effect" -import { Flock } from "./util/flock" +import { Flock } from "./flock" import { makeGlobalNode } from "./effect/app-node" const app = "opencode" diff --git a/packages/core/src/util/hash.ts b/packages/util/src/hash.ts similarity index 100% rename from packages/core/src/util/hash.ts rename to packages/util/src/hash.ts diff --git a/packages/core/src/installation/version.ts b/packages/util/src/installation/version.ts similarity index 100% rename from packages/core/src/installation/version.ts rename to packages/util/src/installation/version.ts diff --git a/packages/core/src/npm-config.ts b/packages/util/src/npm-config.ts similarity index 94% rename from packages/core/src/npm-config.ts rename to packages/util/src/npm-config.ts index 896bb84872c1..da0f0f263241 100644 --- a/packages/core/src/npm-config.ts +++ b/packages/util/src/npm-config.ts @@ -16,7 +16,7 @@ export const load = (dir: string) => npmPath, cwd: dir, env: { ...process.env }, - argv: [process.execPath, process.execPath], + argv: [process.execPath, process.execPath, "--prefix", dir], execPath: process.execPath, platform: process.platform, definitions, diff --git a/packages/core/src/npm.ts b/packages/util/src/npm.ts similarity index 99% rename from packages/core/src/npm.ts rename to packages/util/src/npm.ts index 71bd69cf6592..fa4e40332bfc 100644 --- a/packages/core/src/npm.ts +++ b/packages/util/src/npm.ts @@ -6,7 +6,7 @@ import { Effect, Schema, Context, Layer, Option, FileSystem } from "effect" import { NodeFileSystem } from "@effect/platform-node" import { FSUtil } from "./fs-util" import { Global } from "./global" -import { EffectFlock } from "./util/effect-flock" +import { EffectFlock } from "./effect-flock" import { makeGlobalNode } from "./effect/app-node" import { filesystem } from "./effect/app-node-platform" import { LayerNode } from "./effect/layer-node" diff --git a/packages/core/src/observability.ts b/packages/util/src/observability.ts similarity index 100% rename from packages/core/src/observability.ts rename to packages/util/src/observability.ts diff --git a/packages/core/src/observability/logging.ts b/packages/util/src/observability/logging.ts similarity index 100% rename from packages/core/src/observability/logging.ts rename to packages/util/src/observability/logging.ts diff --git a/packages/core/src/observability/otlp.ts b/packages/util/src/observability/otlp.ts similarity index 100% rename from packages/core/src/observability/otlp.ts rename to packages/util/src/observability/otlp.ts diff --git a/packages/core/src/observability/shared.ts b/packages/util/src/observability/shared.ts similarity index 100% rename from packages/core/src/observability/shared.ts rename to packages/util/src/observability/shared.ts diff --git a/packages/core/src/process.ts b/packages/util/src/process.ts similarity index 100% rename from packages/core/src/process.ts rename to packages/util/src/process.ts diff --git a/packages/core/src/runtime/import.bun.ts b/packages/util/src/runtime/import.bun.ts similarity index 100% rename from packages/core/src/runtime/import.bun.ts rename to packages/util/src/runtime/import.bun.ts diff --git a/packages/core/src/runtime/import.node.ts b/packages/util/src/runtime/import.node.ts similarity index 100% rename from packages/core/src/runtime/import.node.ts rename to packages/util/src/runtime/import.node.ts diff --git a/packages/util/tsconfig.json b/packages/util/tsconfig.json new file mode 100644 index 000000000000..fe5c4d217b2e --- /dev/null +++ b/packages/util/tsconfig.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@tsconfig/bun/tsconfig.json", + "compilerOptions": { + "noUncheckedIndexedAccess": false + } +}