- 品牌替换:OpenCode/opencode → AirCoding/aircoding(16+ 文件) - Logo ASCII art:修复 left/right 行数不匹配导致的启动崩溃 - 启动诊断:添加 OPENCODE_PRINT_TIMING 计时探针 - dev 模式默认 --pure 跳过外部插件加载 - AGENTS.md 模板:追加 AirCoding 多 Agent 专项段落 - architect prompt + plugin:强化 AGENTS.md 产出验证
29 lines
986 B
TypeScript
Executable File
29 lines
986 B
TypeScript
Executable File
#!/usr/bin/env bun
|
|
|
|
import fs from "fs/promises"
|
|
import path from "path"
|
|
import { fileURLToPath } from "url"
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
const dir = path.resolve(__dirname, "..")
|
|
|
|
if (process.platform !== "win32") {
|
|
const root = path.join(dir, "node_modules", "node-pty", "prebuilds")
|
|
const dirs = await fs.readdir(root, { withFileTypes: true }).catch(() => [])
|
|
const files = dirs.filter((x) => x.isDirectory()).map((x) => path.join(root, x.name, "spawn-helper"))
|
|
const result = await Promise.all(
|
|
files.map(async (file) => {
|
|
const stat = await fs.stat(file).catch(() => undefined)
|
|
if (!stat) return
|
|
if ((stat.mode & 0o111) === 0o111) return
|
|
await fs.chmod(file, stat.mode | 0o755)
|
|
return file
|
|
}),
|
|
)
|
|
const fixed = result.filter(Boolean)
|
|
if (fixed.length) {
|
|
console.log(`fixed node-pty permissions for ${fixed.length} helper${fixed.length === 1 ? "" : "s"}`)
|
|
}
|
|
}
|