diff --git a/packages/opencode/script/build.ts b/packages/opencode/script/build.ts index 236838dbdee7..ce45f770f04e 100755 --- a/packages/opencode/script/build.ts +++ b/packages/opencode/script/build.ts @@ -1,7 +1,6 @@ #!/usr/bin/env bun import { $ } from "bun" -import fs from "fs" import path from "path" import { fileURLToPath } from "url" import { createSolidTransformPlugin } from "@opentui/solid/bun-plugin" @@ -49,6 +48,7 @@ const createEmbeddedWebUIBundle = async () => { } const embeddedFileMap = skipEmbedWebUi ? null : await createEmbeddedWebUIBundle() +const treeSitterWorker = await Bun.file(fileURLToPath(import.meta.resolve("@opentui/core/parser.worker"))).text() const allTargets: { os: string @@ -156,14 +156,9 @@ for (const item of targets) { console.log(`building ${name}`) await $`mkdir -p dist/${name}/bin` - const localPath = path.resolve(dir, "node_modules/@opentui/core/parser.worker.js") - const rootPath = path.resolve(dir, "../../node_modules/@opentui/core/parser.worker.js") - const parserWorker = fs.realpathSync(fs.existsSync(localPath) ? localPath : rootPath) const workerPath = "./src/cli/tui/worker.ts" - - // Use platform-specific bunfs root path based on target OS + const treeSitterWorkerPath = "opentui-tree-sitter-worker.js" const bunfsRoot = item.os === "win32" ? "B:/~BUN/root/" : "/$bunfs/root/" - const workerRelativePath = path.relative(dir, parserWorker).replaceAll("\\", "/") await Bun.build({ conditions: ["bun", "node"], @@ -184,13 +179,21 @@ for (const item of targets) { execArgv: [`--user-agent=opencode/${Script.version}`, "--use-system-ca", "--"], windows: {}, }, - files: embeddedFileMap ? { "opencode-web-ui.gen.ts": embeddedFileMap } : {}, - entrypoints: ["./src/index.ts", parserWorker, workerPath, ...(embeddedFileMap ? ["opencode-web-ui.gen.ts"] : [])], + files: { + [treeSitterWorkerPath]: treeSitterWorker, + ...(embeddedFileMap ? { "opencode-web-ui.gen.ts": embeddedFileMap } : {}), + }, + entrypoints: [ + "./src/index.ts", + workerPath, + treeSitterWorkerPath, + ...(embeddedFileMap ? ["opencode-web-ui.gen.ts"] : []), + ], define: { FFF_LIBC: JSON.stringify(item.abi === "musl" ? "musl" : "gnu"), OPENCODE_VERSION: `'${Script.version}'`, OPENCODE_MODELS_DEV: generated.modelsData, - OTUI_TREE_SITTER_WORKER_PATH: bunfsRoot + workerRelativePath, + OTUI_TREE_SITTER_WORKER_PATH: bunfsRoot + treeSitterWorkerPath, OPENCODE_WORKER_PATH: workerPath, OPENCODE_CHANNEL: `'${Script.channel}'`, OPENCODE_LIBC: item.os === "linux" ? `'${item.abi ?? "glibc"}'` : "",