feat: migrate runtime from Node.js to Bun

- Replace better-sqlite3 with bun:sqlite (native, no native addon build)
- Change all spawn('node') to spawn('bun') for agent processes
- Update package.json scripts: node→bun, tsx→bun, npm→bun
- Add bun-types for tsc compatibility
- Add bun:sqlite→better-sqlite3 shim for vitest (tests run on Node.js)
- Update Dockerfile: install bun alongside Node.js (CLIs need Node)
- Update setup/platform.ts: getNodePath() resolves bun binary
- Remove better-sqlite3 from production dependencies (devDep only for tests)
This commit is contained in:
Eyejoker
2026-03-30 23:58:54 +09:00
parent 3e2954ebcf
commit 0112f5a2d6
18 changed files with 713 additions and 77 deletions

View File

@@ -6,23 +6,22 @@
"main": "dist/index.js",
"scripts": {
"build": "tsc",
"build:runners": "npm --prefix runners/agent-runner install && npm --prefix runners/agent-runner run build && npm --prefix runners/codex-runner install && npm --prefix runners/codex-runner run build",
"build:runners": "bun install --cwd runners/agent-runner && bun run --cwd runners/agent-runner build && bun install --cwd runners/codex-runner && bun run --cwd runners/codex-runner build",
"restart:stack": "bash scripts/restart-ejclaw-stack.sh",
"restart:hint": "tsx src/restart-context-cli.ts write",
"start": "node dist/index.js",
"dev": "tsx src/index.ts",
"restart:hint": "bun src/restart-context-cli.ts write",
"start": "bun dist/index.js",
"dev": "bun --watch src/index.ts",
"typecheck": "tsc --noEmit",
"format": "prettier --write \"src/**/*.ts\"",
"format:fix": "prettier --write \"src/**/*.ts\"",
"format:check": "prettier --check \"src/**/*.ts\"",
"prepare": "husky",
"setup": "tsx setup/index.ts",
"setup": "bun setup/index.ts",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.27.1",
"better-sqlite3": "^11.8.1",
"cron-parser": "^5.5.0",
"discord.js": "^14.18.0",
"pino": "^9.6.0",
@@ -31,12 +30,13 @@
"zod": "^4.3.6"
},
"devDependencies": {
"@types/better-sqlite3": "^7.6.12",
"@types/better-sqlite3": "^7.6.13",
"@types/bun": "^1.3.11",
"@types/node": "^22.10.0",
"@vitest/coverage-v8": "^4.0.18",
"better-sqlite3": "^12.8.0",
"husky": "^9.1.7",
"prettier": "^3.8.1",
"tsx": "^4.19.0",
"typescript": "^5.7.0",
"vitest": "^4.0.18"
},