Files
NetMesh/scripts/generate-codex-app-server-schema.cjs
zhaolei 3c72efcb7f
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
[Init] Initial commit - NetMesh terminal manager
2026-09-13 18:24:01 +08:00

61 lines
1.8 KiB
JavaScript

"use strict";
const fs = require("node:fs");
const path = require("node:path");
const { execFileSync } = require("node:child_process");
const root = path.resolve(__dirname, "..");
const cacheDir = path.join(root, "node_modules", ".cache", "netcatty", "codex-app-server-schema");
const sourceFile = path.join(cacheDir, "codex_app_server_protocol.schemas.json");
const targetFile = path.join(
root,
"electron",
"bridges",
"aiBridge",
"codexAppServer",
"protocol.schema.json",
);
const check = process.argv.includes("--check");
fs.rmSync(cacheDir, { recursive: true, force: true });
fs.mkdirSync(cacheDir, { recursive: true });
const codexEntry = require.resolve("@openai/codex/bin/codex.js");
execFileSync(process.execPath, [
codexEntry,
"app-server",
"generate-json-schema",
"--experimental",
"--out",
cacheDir,
], {
cwd: root,
stdio: "inherit",
env: process.env,
});
function sortJson(value) {
if (Array.isArray(value)) return value.map(sortJson);
if (!value || typeof value !== "object") return value;
return Object.fromEntries(
Object.keys(value).sort().map((key) => [key, sortJson(value[key])]),
);
}
const generated = Buffer.from(
`${JSON.stringify(sortJson(JSON.parse(fs.readFileSync(sourceFile, "utf8"))), null, 2)}\n`,
);
if (check) {
const current = fs.existsSync(targetFile) ? fs.readFileSync(targetFile) : null;
if (!current || !current.equals(generated)) {
console.error("Codex App Server protocol schema is out of date. Run npm run generate:codex-app-server-schema.");
process.exitCode = 1;
}
} else {
fs.mkdirSync(path.dirname(targetFile), { recursive: true });
fs.writeFileSync(targetFile, generated);
console.log(`Updated ${path.relative(root, targetFile)}`);
}
fs.rmSync(cacheDir, { recursive: true, force: true });