Something went wrong. Try again.
fork of prime agent with changes i want but are not upstreamable probqbly (and some fixes)
Something went wrong. Try again.
2.9 kB · 72 lines
JavaScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#!/usr/bin/env nodeimport { execFileSync } from "node:child_process";import { mkdirSync, mkdtempSync, renameSync, rmSync } from "node:fs";import { dirname, join, resolve } from "node:path";import { fileURLToPath } from "node:url";import { releasePlatforms } from "../../../scripts/release-platforms.mjs";import { writeClipboardBinaryBinding } from "./clipboard-binary-binding.mjs";import { copyBinaryAssets, validateBinaryAssets } from "./copy-binary-assets.mjs";import { signMacosBinary } from "./macos-signature.mjs";
const root = resolve(dirname(fileURLToPath(import.meta.url)), "../../..");const packageDir = join(root, "packages/coding-agent");const platforms = releasePlatforms;const args = process.argv.slice(2);const platform = args.length === 0 ? `${process.platform}-${process.arch}` : args[1];if (args.length !== 0 && (args.length !== 2 || args[0] !== "--platform")) { throw new Error(`Usage: npm run build:binary -- [--platform ${[...platforms, "all"].join("|")}]`);}if (platform !== "all" && !platforms.includes(platform)) throw new Error(`Unsupported binary platform: ${platform}`);
const bun = process.env.BUN_BINARY || "bun";const bunVersion = execFileSync(bun, ["--version"], { encoding: "utf8" }).trim();if (bunVersion !== "1.4.0") throw new Error(`Binary compilation requires Bun 1.4.0; found ${bunVersion}`);
// Emit workspace JavaScript and declarations using the committed model catalog.for (const name of ["tui", "ai", "agent", "coding-agent"]) { execFileSync(join(root, "node_modules/.bin/tsgo"), ["-p", `packages/${name}/tsconfig.build.json`], { cwd: root, stdio: "inherit", });}
const buildId = execFileSync("git", ["rev-parse", "HEAD"], { cwd: root, encoding: "utf8" }).trim();const outputRoot = join(packageDir, "binaries");mkdirSync(outputRoot, { recursive: true });for (const target of platform === "all" ? platforms : [platform]) { const staging = mkdtempSync(join(outputRoot, ".build-")); try { writeClipboardBinaryBinding(join(packageDir, "dist/utils/clipboard-binary-binding.js"), target); execFileSync( bun, [ "build", "--compile", "--minify", "--keep-names", "--bytecode", "--format=esm", "--external", "koffi", "--no-compile-autoload-dotenv", "--no-compile-autoload-bunfig", "--define", `__PI_BUILD_ID__=${JSON.stringify(buildId)}`, `--target=bun-${target}`, "./dist/bun/cli.js", "--outfile", join(staging, "prime-agent"), ], { cwd: packageDir, stdio: "inherit" }, ); signMacosBinary(join(staging, "prime-agent"), target); copyBinaryAssets(staging); validateBinaryAssets(staging); const destination = join(outputRoot, target); rmSync(destination, { recursive: true, force: true }); renameSync(staging, destination); console.log(`Created ${destination}`); } finally { rmSync(staging, { recursive: true, force: true }); }}