Files
2026-01-27 16:09:11 +01:00

73 lines
1.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
const childProcess = require("child_process")
const fs = require("fs")
const path = require("path")
const os = require("os")
const { createRequire } = require("module")
function run(target) {
const result = childProcess.spawnSync(target, process.argv.slice(2), {
stdio: "inherit",
})
if (result.error) {
console.error(result.error.message)
process.exit(1)
}
const code = typeof result.status === "number" ? result.status : 0
process.exit(code)
}
const envPath = process.env.KILO_BIN_PATH
if (envPath) {
run(envPath)
}
const platformMap = {
darwin: "darwin",
linux: "linux",
win32: "windows",
}
const archMap = {
x64: "x64",
arm64: "arm64",
arm: "arm",
}
let platform = platformMap[os.platform()]
if (!platform) {
platform = os.platform()
}
let arch = archMap[os.arch()]
if (!arch) {
arch = os.arch()
}
const base = "@kilocode/cli-" + platform + "-" + arch
const binary = platform === "windows" ? "kilo.exe" : "kilo"
function findBinary() {
// Use require.resolve to find the platform-specific package
// This handles scoped packages correctly (e.g., @kilocode/cli-darwin-arm64)
const req = createRequire(__filename)
try {
const pkgPath = req.resolve(base + "/package.json")
const pkgDir = path.dirname(pkgPath)
const candidate = path.join(pkgDir, "bin", binary)
if (fs.existsSync(candidate)) {
return candidate
}
} catch {}
}
const resolved = findBinary()
if (!resolved) {
console.error(
'It seems that your package manager failed to install the right version of the Kilo CLI for your platform. You can try manually installing the "' +
base +
'" package',
)
process.exit(1)
}
run(resolved)