From c585b9b50d686c9bc58c265d1ff0a4b66ec7536c Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 19 Feb 2026 20:42:56 -0600 Subject: [PATCH] chore: cleanup --- package.json | 3 +- packages/opencode/script/build.ts | 2 + packages/opencode/script/node-pty-helper.ts | 45 +++++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 packages/opencode/script/node-pty-helper.ts diff --git a/package.json b/package.json index 2e7c1172aa..488613ee16 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,7 @@ "dev:web": "bun --cwd packages/app dev", "typecheck": "bun turbo typecheck", "prepare": "husky", - "random": "echo 'Random script'", - "hello": "echo 'Hello World!'", + "postinstall": "bun packages/opencode/script/node-pty-helper.ts", "test": "echo 'do not run tests from root' && exit 1" }, "workspaces": { diff --git a/packages/opencode/script/build.ts b/packages/opencode/script/build.ts index ddb4769912..b87a131e03 100755 --- a/packages/opencode/script/build.ts +++ b/packages/opencode/script/build.ts @@ -142,6 +142,8 @@ if (!skipInstall) { await $`bun install --os="*" --cpu="*" @opentui/core@${pkg.dependencies["@opentui/core"]}` await $`bun install --os="*" --cpu="*" @parcel/watcher@${pkg.dependencies["@parcel/watcher"]}` } +await $`bun script/node-pty-helper.ts` + for (const item of targets) { const name = [ pkg.name, diff --git a/packages/opencode/script/node-pty-helper.ts b/packages/opencode/script/node-pty-helper.ts new file mode 100644 index 0000000000..c2bf682aa3 --- /dev/null +++ b/packages/opencode/script/node-pty-helper.ts @@ -0,0 +1,45 @@ +#!/usr/bin/env bun + +import fs from "node:fs" +import path from "node:path" +import { createRequire } from "node:module" + +const req = createRequire(import.meta.url) + +const resolve = () => { + try { + return path.dirname(req.resolve("node-pty/package.json")) + } catch { + return + } +} + +export const fixNodePtyHelper = () => { + const root = resolve() + if (!root) return [] + + const files = [ + path.join(root, "prebuilds", "darwin-arm64", "spawn-helper"), + path.join(root, "prebuilds", "darwin-x64", "spawn-helper"), + path.join(root, "build", "Release", "spawn-helper"), + path.join(root, "build", "Debug", "spawn-helper"), + ] + + return files.flatMap((file) => { + if (!fs.existsSync(file)) return [] + const mode = fs.statSync(file).mode + const next = mode | 0o111 + if (mode === next) return [] + fs.chmodSync(file, next) + return [file] + }) +} + +if (import.meta.main) { + const changed = fixNodePtyHelper() + if (!changed.length) process.exit(0) + console.log(`updated node-pty spawn-helper permissions (${changed.length})`) + for (const file of changed) { + console.log(`- ${file}`) + } +}