mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
fix: rename openwork-server package references (#1040)
Co-authored-by: Omar McAdam <omar@OpenWork-Studio.localdomain>
This commit is contained in:
4
.github/workflows/release-macos-aarch64.yml
vendored
4
.github/workflows/release-macos-aarch64.yml
vendored
@@ -824,7 +824,7 @@ jobs:
|
||||
# npm view exits non-zero for packages that don't exist yet (404).
|
||||
# Treat missing packages as "not published" so release can publish them.
|
||||
orchestrator_current="$(npm view openwork-orchestrator version 2>/dev/null || true)"
|
||||
server_current="$(npm view @openwork/server version 2>/dev/null || true)"
|
||||
server_current="$(npm view openwork-server version 2>/dev/null || true)"
|
||||
opencodeRouter_current="$(npm view opencode-router version 2>/dev/null || true)"
|
||||
|
||||
if [ "$orchestrator_current" = "$ORCHESTRATOR_VERSION" ]; then
|
||||
@@ -876,7 +876,7 @@ jobs:
|
||||
|
||||
- name: Publish openwork-server
|
||||
if: steps.npm-auth.outputs.enabled == 'true' && steps.npm-versions.outputs.publish_server == 'true'
|
||||
run: pnpm --filter @openwork/server publish --access public --no-git-checks
|
||||
run: pnpm --filter openwork-server publish --access public --no-git-checks
|
||||
|
||||
- name: Publish opencode-router
|
||||
if: steps.npm-auth.outputs.enabled == 'true' && steps.npm-versions.outputs.publish_opencodeRouter == 'true'
|
||||
|
||||
@@ -36,7 +36,8 @@ if (mode === "--set") {
|
||||
|
||||
const semverPattern = /^\d+\.\d+\.\d+$/;
|
||||
|
||||
const readJson = async (filePath) => JSON.parse(await readFile(filePath, "utf8"));
|
||||
const readJson = async (filePath) =>
|
||||
JSON.parse(await readFile(filePath, "utf8"));
|
||||
|
||||
const bump = (value, bumpMode) => {
|
||||
if (!semverPattern.test(value)) {
|
||||
@@ -58,9 +59,19 @@ const targetVersion = async () => {
|
||||
const updatePackageJson = async (nextVersion) => {
|
||||
const uiPath = path.join(ROOT, "package.json");
|
||||
const tauriPath = path.join(REPO_ROOT, "apps", "desktop", "package.json");
|
||||
const orchestratorPath = path.join(REPO_ROOT, "apps", "orchestrator", "package.json");
|
||||
const orchestratorPath = path.join(
|
||||
REPO_ROOT,
|
||||
"apps",
|
||||
"orchestrator",
|
||||
"package.json",
|
||||
);
|
||||
const serverPath = path.join(REPO_ROOT, "apps", "server", "package.json");
|
||||
const opencodeRouterPath = path.join(REPO_ROOT, "apps", "opencode-router", "package.json");
|
||||
const opencodeRouterPath = path.join(
|
||||
REPO_ROOT,
|
||||
"apps",
|
||||
"opencode-router",
|
||||
"package.json",
|
||||
);
|
||||
const uiData = await readJson(uiPath);
|
||||
const tauriData = await readJson(tauriPath);
|
||||
const orchestratorData = await readJson(orchestratorPath);
|
||||
@@ -74,7 +85,7 @@ const updatePackageJson = async (nextVersion) => {
|
||||
|
||||
// Ensure openwork-orchestrator uses the same openwork-server/opencode-router versions.
|
||||
orchestratorData.dependencies = orchestratorData.dependencies ?? {};
|
||||
orchestratorData.dependencies["@openwork/server"] = nextVersion;
|
||||
orchestratorData.dependencies["openwork-server"] = nextVersion;
|
||||
orchestratorData.dependencies["opencode-router"] = nextVersion;
|
||||
|
||||
serverData.version = nextVersion;
|
||||
@@ -82,23 +93,38 @@ const updatePackageJson = async (nextVersion) => {
|
||||
if (!isDryRun) {
|
||||
await writeFile(uiPath, JSON.stringify(uiData, null, 2) + "\n");
|
||||
await writeFile(tauriPath, JSON.stringify(tauriData, null, 2) + "\n");
|
||||
await writeFile(orchestratorPath, JSON.stringify(orchestratorData, null, 2) + "\n");
|
||||
await writeFile(
|
||||
orchestratorPath,
|
||||
JSON.stringify(orchestratorData, null, 2) + "\n",
|
||||
);
|
||||
await writeFile(serverPath, JSON.stringify(serverData, null, 2) + "\n");
|
||||
await writeFile(opencodeRouterPath, JSON.stringify(opencodeRouterData, null, 2) + "\n");
|
||||
await writeFile(
|
||||
opencodeRouterPath,
|
||||
JSON.stringify(opencodeRouterData, null, 2) + "\n",
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const updateCargoToml = async (nextVersion) => {
|
||||
const filePath = path.join(REPO_ROOT, "apps", "desktop", "src-tauri", "Cargo.toml");
|
||||
const filePath = path.join(
|
||||
REPO_ROOT,
|
||||
"apps",
|
||||
"desktop",
|
||||
"src-tauri",
|
||||
"Cargo.toml",
|
||||
);
|
||||
const raw = await readFile(filePath, "utf8");
|
||||
const updated = raw.replace(/\bversion\s*=\s*"[^"]+"/m, `version = "${nextVersion}"`);
|
||||
const updated = raw.replace(
|
||||
/\bversion\s*=\s*"[^"]+"/m,
|
||||
`version = "${nextVersion}"`,
|
||||
);
|
||||
if (!isDryRun) {
|
||||
await writeFile(filePath, updated);
|
||||
// Regenerate Cargo.lock so it stays in sync with the version bump.
|
||||
const { execFileSync } = await import("node:child_process");
|
||||
try {
|
||||
execFileSync("cargo", ["generate-lockfile"], {
|
||||
cwd: path.join(REPO_ROOT, "apps", "desktop", "src-tauri"),
|
||||
cwd: path.join(REPO_ROOT, "apps", "desktop", "src-tauri"),
|
||||
stdio: "ignore",
|
||||
});
|
||||
} catch {
|
||||
@@ -108,7 +134,13 @@ const updateCargoToml = async (nextVersion) => {
|
||||
};
|
||||
|
||||
const updateTauriConfig = async (nextVersion) => {
|
||||
const filePath = path.join(REPO_ROOT, "apps", "desktop", "src-tauri", "tauri.conf.json");
|
||||
const filePath = path.join(
|
||||
REPO_ROOT,
|
||||
"apps",
|
||||
"desktop",
|
||||
"src-tauri",
|
||||
"tauri.conf.json",
|
||||
);
|
||||
const data = JSON.parse(await readFile(filePath, "utf8"));
|
||||
data.version = nextVersion;
|
||||
if (!isDryRun) {
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"@opentui/core": "0.1.77",
|
||||
"@opentui/solid": "0.1.77",
|
||||
"opencode-router": "0.11.171",
|
||||
"@openwork/server": "0.11.171",
|
||||
"openwork-server": "0.11.171",
|
||||
"solid-js": "1.9.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { createHash } from "node:crypto";
|
||||
import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
||||
import {
|
||||
copyFileSync,
|
||||
existsSync,
|
||||
mkdirSync,
|
||||
readFileSync,
|
||||
statSync,
|
||||
writeFileSync,
|
||||
} from "node:fs";
|
||||
import { basename, join, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
@@ -8,10 +15,14 @@ const root = resolve(fileURLToPath(new URL("..", import.meta.url)));
|
||||
const repoRoot = resolve(root, "..", "..");
|
||||
const outdir = resolve(root, "dist", "sidecars");
|
||||
|
||||
const orchestratorPkg = JSON.parse(readFileSync(resolve(root, "package.json"), "utf8"));
|
||||
const orchestratorPkg = JSON.parse(
|
||||
readFileSync(resolve(root, "package.json"), "utf8"),
|
||||
);
|
||||
const orchestratorVersion = String(orchestratorPkg.version ?? "").trim();
|
||||
if (!orchestratorVersion) {
|
||||
throw new Error("openwork-orchestrator version missing in apps/orchestrator/package.json");
|
||||
throw new Error(
|
||||
"openwork-orchestrator version missing in apps/orchestrator/package.json",
|
||||
);
|
||||
}
|
||||
|
||||
const sourceDateEpoch = process.env.SOURCE_DATE_EPOCH
|
||||
@@ -21,18 +32,27 @@ const generatedAt = Number.isFinite(sourceDateEpoch)
|
||||
? new Date(sourceDateEpoch * 1000).toISOString()
|
||||
: new Date().toISOString();
|
||||
|
||||
const serverPkg = JSON.parse(readFileSync(resolve(repoRoot, "apps", "server", "package.json"), "utf8"));
|
||||
const serverPkg = JSON.parse(
|
||||
readFileSync(resolve(repoRoot, "apps", "server", "package.json"), "utf8"),
|
||||
);
|
||||
const serverVersion = String(serverPkg.version ?? "").trim();
|
||||
if (!serverVersion) {
|
||||
throw new Error("openwork-server version missing in apps/server/package.json");
|
||||
throw new Error(
|
||||
"openwork-server version missing in apps/server/package.json",
|
||||
);
|
||||
}
|
||||
|
||||
const routerPkg = JSON.parse(
|
||||
readFileSync(resolve(repoRoot, "apps", "opencode-router", "package.json"), "utf8"),
|
||||
readFileSync(
|
||||
resolve(repoRoot, "apps", "opencode-router", "package.json"),
|
||||
"utf8",
|
||||
),
|
||||
);
|
||||
const routerVersion = String(routerPkg.version ?? "").trim();
|
||||
if (!routerVersion) {
|
||||
throw new Error("opencode-router version missing in apps/opencode-router/package.json");
|
||||
throw new Error(
|
||||
"opencode-router version missing in apps/opencode-router/package.json",
|
||||
);
|
||||
}
|
||||
|
||||
const run = (command, args, cwd) => {
|
||||
@@ -42,7 +62,7 @@ const run = (command, args, cwd) => {
|
||||
}
|
||||
};
|
||||
|
||||
run("pnpm", ["--filter", "@openwork/server", "build:bin:all"], repoRoot);
|
||||
run("pnpm", ["--filter", "openwork-server", "build:bin:all"], repoRoot);
|
||||
run("pnpm", ["--filter", "opencode-router", "build:bin:all"], repoRoot);
|
||||
|
||||
const targets = [
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@ Filesystem-backed API for OpenWork remote clients. This package provides the Ope
|
||||
## Quick start
|
||||
|
||||
```bash
|
||||
npm install -g @openwork/server
|
||||
npm install -g openwork-server
|
||||
openwork-server --workspace /path/to/workspace --approval auto
|
||||
```
|
||||
|
||||
@@ -14,7 +14,7 @@ openwork-server --workspace /path/to/workspace --approval auto
|
||||
Or from source:
|
||||
|
||||
```bash
|
||||
pnpm --filter @openwork/server dev -- \
|
||||
pnpm --filter openwork-server dev -- \
|
||||
--workspace /path/to/workspace \
|
||||
--approval auto
|
||||
```
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@openwork/server",
|
||||
"name": "openwork-server",
|
||||
"version": "0.11.171",
|
||||
"description": "Filesystem-backed API for OpenWork remote clients",
|
||||
"type": "module",
|
||||
|
||||
6
pnpm-lock.yaml
generated
6
pnpm-lock.yaml
generated
@@ -152,12 +152,12 @@ importers:
|
||||
'@opentui/solid':
|
||||
specifier: 0.1.77
|
||||
version: 0.1.77(solid-js@1.9.9)(stage-js@1.0.0-alpha.17)(typescript@5.9.3)(web-tree-sitter@0.25.10)
|
||||
'@openwork/server':
|
||||
specifier: 0.11.171
|
||||
version: link:../server
|
||||
opencode-router:
|
||||
specifier: 0.11.171
|
||||
version: link:../opencode-router
|
||||
openwork-server:
|
||||
specifier: 0.11.171
|
||||
version: link:../server
|
||||
solid-js:
|
||||
specifier: 1.9.9
|
||||
version: 1.9.9
|
||||
|
||||
@@ -53,14 +53,20 @@ const logLine = (message: string) => {
|
||||
|
||||
const readBool = (value: string | undefined) => {
|
||||
const normalized = (value ?? "").trim().toLowerCase();
|
||||
return normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on";
|
||||
return (
|
||||
normalized === "1" ||
|
||||
normalized === "true" ||
|
||||
normalized === "yes" ||
|
||||
normalized === "on"
|
||||
);
|
||||
};
|
||||
|
||||
const silent = process.argv.includes("--silent");
|
||||
|
||||
const autoBuildEnabled = process.env.OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD == null
|
||||
? true
|
||||
: readBool(process.env.OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD);
|
||||
const autoBuildEnabled =
|
||||
process.env.OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD == null
|
||||
? true
|
||||
: readBool(process.env.OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD);
|
||||
|
||||
const runCommand = (command: string, args: string[]) =>
|
||||
new Promise<void>((resolve, reject) => {
|
||||
@@ -75,11 +81,20 @@ const runCommand = (command: string, args: string[]) =>
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
reject(new Error(`${command} ${args.join(" ")} exited with code ${code ?? "unknown"}`));
|
||||
reject(
|
||||
new Error(
|
||||
`${command} ${args.join(" ")} exited with code ${code ?? "unknown"}`,
|
||||
),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
const spawnLogged = (command: string, args: string[], logPath: string, env: NodeJS.ProcessEnv) => {
|
||||
const spawnLogged = (
|
||||
command: string,
|
||||
args: string[],
|
||||
logPath: string,
|
||||
env: NodeJS.ProcessEnv,
|
||||
) => {
|
||||
const logFd = openSync(logPath, "w");
|
||||
return spawn(command, args, {
|
||||
cwd,
|
||||
@@ -88,8 +103,13 @@ const spawnLogged = (command: string, args: string[], logPath: string, env: Node
|
||||
});
|
||||
};
|
||||
|
||||
const shutdown = (label: string, code: number | null, signal: NodeJS.Signals | null) => {
|
||||
const reason = code !== null ? `code ${code}` : signal ? `signal ${signal}` : "unknown";
|
||||
const shutdown = (
|
||||
label: string,
|
||||
code: number | null,
|
||||
signal: NodeJS.Signals | null,
|
||||
) => {
|
||||
const reason =
|
||||
code !== null ? `code ${code}` : signal ? `signal ${signal}` : "unknown";
|
||||
logLine(`[dev:headless-web] ${label} exited (${reason})`);
|
||||
process.exit(code ?? 1);
|
||||
};
|
||||
@@ -105,28 +125,48 @@ const openworkPort = await resolvePort(process.env.OPENWORK_PORT, "127.0.0.1");
|
||||
const webPort = await resolvePort(process.env.OPENWORK_WEB_PORT, "127.0.0.1");
|
||||
const openworkToken = process.env.OPENWORK_TOKEN ?? randomUUID();
|
||||
const openworkHostToken = process.env.OPENWORK_HOST_TOKEN ?? randomUUID();
|
||||
const openworkServerBin = path.join(cwd, "apps/server/dist/bin/openwork-server");
|
||||
const opencodeRouterBin = path.join(cwd, "apps/opencode-router/dist/bin/opencode-router");
|
||||
const openworkServerBin = path.join(
|
||||
cwd,
|
||||
"apps/server/dist/bin/openwork-server",
|
||||
);
|
||||
const opencodeRouterBin = path.join(
|
||||
cwd,
|
||||
"apps/opencode-router/dist/bin/opencode-router",
|
||||
);
|
||||
|
||||
const ensureOpenworkServer = async () => {
|
||||
try {
|
||||
await access(openworkServerBin);
|
||||
} catch {
|
||||
if (!autoBuildEnabled) {
|
||||
logLine(`[dev:headless-web] Missing OpenWork server binary at ${openworkServerBin}`);
|
||||
logLine("[dev:headless-web] Auto-build disabled (OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD=0)");
|
||||
logLine("[dev:headless-web] Run: pnpm --filter @openwork/server build:bin");
|
||||
logLine("[dev:headless-web] Or unset/enable OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD to auto-build.");
|
||||
logLine(
|
||||
`[dev:headless-web] Missing OpenWork server binary at ${openworkServerBin}`,
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Auto-build disabled (OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD=0)",
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Run: pnpm --filter openwork-server build:bin",
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Or unset/enable OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD to auto-build.",
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
logLine(`[dev:headless-web] Missing OpenWork server binary at ${openworkServerBin}`);
|
||||
logLine("[dev:headless-web] Auto-building: pnpm --filter @openwork/server build:bin");
|
||||
logLine(
|
||||
`[dev:headless-web] Missing OpenWork server binary at ${openworkServerBin}`,
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Auto-building: pnpm --filter openwork-server build:bin",
|
||||
);
|
||||
try {
|
||||
await runCommand("pnpm", ["--filter", "@openwork/server", "build:bin"]);
|
||||
await runCommand("pnpm", ["--filter", "openwork-server", "build:bin"]);
|
||||
await access(openworkServerBin);
|
||||
} catch (error) {
|
||||
logLine(`[dev:headless-web] Auto-build failed: ${error instanceof Error ? error.message : String(error)}`);
|
||||
logLine(
|
||||
`[dev:headless-web] Auto-build failed: ${error instanceof Error ? error.message : String(error)}`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
@@ -137,20 +177,34 @@ const ensureOpencodeRouter = async () => {
|
||||
await access(opencodeRouterBin);
|
||||
} catch {
|
||||
if (!autoBuildEnabled) {
|
||||
logLine(`[dev:headless-web] Missing opencode-router binary at ${opencodeRouterBin}`);
|
||||
logLine("[dev:headless-web] Auto-build disabled (OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD=0)");
|
||||
logLine("[dev:headless-web] Run: pnpm --filter opencode-router build:bin");
|
||||
logLine("[dev:headless-web] Or unset/enable OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD to auto-build.");
|
||||
logLine(
|
||||
`[dev:headless-web] Missing opencode-router binary at ${opencodeRouterBin}`,
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Auto-build disabled (OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD=0)",
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Run: pnpm --filter opencode-router build:bin",
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Or unset/enable OPENWORK_DEV_HEADLESS_WEB_AUTOBUILD to auto-build.",
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
logLine(`[dev:headless-web] Missing opencode-router binary at ${opencodeRouterBin}`);
|
||||
logLine("[dev:headless-web] Auto-building: pnpm --filter opencode-router build:bin");
|
||||
logLine(
|
||||
`[dev:headless-web] Missing opencode-router binary at ${opencodeRouterBin}`,
|
||||
);
|
||||
logLine(
|
||||
"[dev:headless-web] Auto-building: pnpm --filter opencode-router build:bin",
|
||||
);
|
||||
try {
|
||||
await runCommand("pnpm", ["--filter", "opencode-router", "build:bin"]);
|
||||
await access(opencodeRouterBin);
|
||||
} catch (error) {
|
||||
logLine(`[dev:headless-web] Auto-build failed: ${error instanceof Error ? error.message : String(error)}`);
|
||||
logLine(
|
||||
`[dev:headless-web] Auto-build failed: ${error instanceof Error ? error.message : String(error)}`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
@@ -160,10 +214,13 @@ const openworkUrl = `http://${clientHost}:${openworkPort}`;
|
||||
const webUrl = `http://${clientHost}:${webPort}`;
|
||||
// In practice we want opencode-router on for end-to-end messaging tests.
|
||||
// Allow opt-out via OPENWORK_DEV_OPENCODE_ROUTER=0.
|
||||
const opencodeRouterEnabled = process.env.OPENWORK_DEV_OPENCODE_ROUTER == null
|
||||
? true
|
||||
: readBool(process.env.OPENWORK_DEV_OPENCODE_ROUTER);
|
||||
const opencodeRouterRequired = readBool(process.env.OPENWORK_DEV_OPENCODE_ROUTER_REQUIRED);
|
||||
const opencodeRouterEnabled =
|
||||
process.env.OPENWORK_DEV_OPENCODE_ROUTER == null
|
||||
? true
|
||||
: readBool(process.env.OPENWORK_DEV_OPENCODE_ROUTER);
|
||||
const opencodeRouterRequired = readBool(
|
||||
process.env.OPENWORK_DEV_OPENCODE_ROUTER_REQUIRED,
|
||||
);
|
||||
const viteEnv = {
|
||||
...process.env,
|
||||
HOST: viteHost,
|
||||
@@ -200,8 +257,12 @@ logLine(
|
||||
);
|
||||
logLine(`[dev:headless-web] OPENWORK_TOKEN: ${openworkToken}`);
|
||||
logLine(`[dev:headless-web] OPENWORK_HOST_TOKEN: ${openworkHostToken}`);
|
||||
logLine(`[dev:headless-web] Web logs: ${path.relative(cwd, path.join(tmpDir, "dev-web.log"))}`);
|
||||
logLine(`[dev:headless-web] Headless logs: ${path.relative(cwd, path.join(tmpDir, "dev-headless.log"))}`);
|
||||
logLine(
|
||||
`[dev:headless-web] Web logs: ${path.relative(cwd, path.join(tmpDir, "dev-web.log"))}`,
|
||||
);
|
||||
logLine(
|
||||
`[dev:headless-web] Headless logs: ${path.relative(cwd, path.join(tmpDir, "dev-headless.log"))}`,
|
||||
);
|
||||
|
||||
const webProcess = spawnLogged(
|
||||
"pnpm",
|
||||
@@ -263,4 +324,6 @@ process.on("SIGTERM", () => {
|
||||
});
|
||||
|
||||
webProcess.on("exit", (code, signal) => shutdown("web", code, signal));
|
||||
headlessProcess.on("exit", (code, signal) => shutdown("orchestrator", code, signal));
|
||||
headlessProcess.on("exit", (code, signal) =>
|
||||
shutdown("orchestrator", code, signal),
|
||||
);
|
||||
|
||||
@@ -18,11 +18,19 @@ const readCargoVersion = (path) => {
|
||||
|
||||
const appPkg = readJson(resolve(root, "apps", "app", "package.json"));
|
||||
const desktopPkg = readJson(resolve(root, "apps", "desktop", "package.json"));
|
||||
const orchestratorPkg = readJson(resolve(root, "apps", "orchestrator", "package.json"));
|
||||
const orchestratorPkg = readJson(
|
||||
resolve(root, "apps", "orchestrator", "package.json"),
|
||||
);
|
||||
const serverPkg = readJson(resolve(root, "apps", "server", "package.json"));
|
||||
const opencodeRouterPkg = readJson(resolve(root, "apps", "opencode-router", "package.json"));
|
||||
const tauriConfig = readJson(resolve(root, "apps", "desktop", "src-tauri", "tauri.conf.json"));
|
||||
const cargoVersion = readCargoVersion(resolve(root, "apps", "desktop", "src-tauri", "Cargo.toml"));
|
||||
const opencodeRouterPkg = readJson(
|
||||
resolve(root, "apps", "opencode-router", "package.json"),
|
||||
);
|
||||
const tauriConfig = readJson(
|
||||
resolve(root, "apps", "desktop", "src-tauri", "tauri.conf.json"),
|
||||
);
|
||||
const cargoVersion = readCargoVersion(
|
||||
resolve(root, "apps", "desktop", "src-tauri", "Cargo.toml"),
|
||||
);
|
||||
|
||||
const versions = {
|
||||
app: appPkg.version ?? null,
|
||||
@@ -37,7 +45,8 @@ const versions = {
|
||||
orchestrator: orchestratorPkg.opencodeVersion ?? null,
|
||||
},
|
||||
opencodeRouterVersionPinned: desktopPkg.opencodeRouterVersion ?? null,
|
||||
orchestratorOpenworkServerRange: orchestratorPkg.dependencies?.["@openwork/server"] ?? null,
|
||||
orchestratorOpenworkServerRange:
|
||||
orchestratorPkg.dependencies?.["openwork-server"] ?? null,
|
||||
};
|
||||
|
||||
const checks = [];
|
||||
@@ -58,7 +67,9 @@ addCheck(
|
||||
);
|
||||
addCheck(
|
||||
"App/openwork-orchestrator versions match",
|
||||
versions.app && versions.orchestrator && versions.app === versions.orchestrator,
|
||||
versions.app &&
|
||||
versions.orchestrator &&
|
||||
versions.app === versions.orchestrator,
|
||||
`${versions.app ?? "?"} vs ${versions.orchestrator ?? "?"}`,
|
||||
);
|
||||
addCheck(
|
||||
@@ -68,7 +79,9 @@ addCheck(
|
||||
);
|
||||
addCheck(
|
||||
"App/opencode-router versions match",
|
||||
versions.app && versions.opencodeRouter && versions.app === versions.opencodeRouter,
|
||||
versions.app &&
|
||||
versions.opencodeRouter &&
|
||||
versions.app === versions.opencodeRouter,
|
||||
`${versions.app ?? "?"} vs ${versions.opencodeRouter ?? "?"}`,
|
||||
);
|
||||
addCheck(
|
||||
@@ -83,7 +96,9 @@ addCheck(
|
||||
);
|
||||
addCheck(
|
||||
"OpenCodeRouter version pinned in desktop",
|
||||
versions.opencodeRouter && versions.opencodeRouterVersionPinned && versions.opencodeRouter === versions.opencodeRouterVersionPinned,
|
||||
versions.opencodeRouter &&
|
||||
versions.opencodeRouterVersionPinned &&
|
||||
versions.opencodeRouter === versions.opencodeRouterVersionPinned,
|
||||
`${versions.opencodeRouterVersionPinned ?? "?"} vs ${versions.opencodeRouter ?? "?"}`,
|
||||
);
|
||||
if (versions.opencode.desktop || versions.opencode.orchestrator) {
|
||||
@@ -105,7 +120,9 @@ const openworkServerPinned = /^\d+\.\d+\.\d+/.test(openworkServerRange);
|
||||
if (!openworkServerRange) {
|
||||
addWarning("openwork-orchestrator is missing an openwork-server dependency.");
|
||||
} else if (!openworkServerPinned) {
|
||||
addWarning(`openwork-orchestrator openwork-server dependency is not pinned (${openworkServerRange}).`);
|
||||
addWarning(
|
||||
`openwork-orchestrator openwork-server dependency is not pinned (${openworkServerRange}).`,
|
||||
);
|
||||
} else {
|
||||
addCheck(
|
||||
"Openwork-server dependency matches server version",
|
||||
@@ -114,7 +131,14 @@ if (!openworkServerRange) {
|
||||
);
|
||||
}
|
||||
|
||||
const sidecarManifestPath = resolve(root, "apps", "orchestrator", "dist", "sidecars", "openwork-orchestrator-sidecars.json");
|
||||
const sidecarManifestPath = resolve(
|
||||
root,
|
||||
"apps",
|
||||
"orchestrator",
|
||||
"dist",
|
||||
"sidecars",
|
||||
"openwork-orchestrator-sidecars.json",
|
||||
);
|
||||
if (existsSync(sidecarManifestPath)) {
|
||||
const manifest = readJson(sidecarManifestPath);
|
||||
addCheck(
|
||||
@@ -145,7 +169,9 @@ if (existsSync(sidecarManifestPath)) {
|
||||
}
|
||||
|
||||
if (!process.env.SOURCE_DATE_EPOCH) {
|
||||
addWarning("SOURCE_DATE_EPOCH is not set (sidecar manifests will include current time).");
|
||||
addWarning(
|
||||
"SOURCE_DATE_EPOCH is not set (sidecar manifests will include current time).",
|
||||
);
|
||||
}
|
||||
|
||||
const report = { ok, versions, checks, warnings };
|
||||
|
||||
Reference in New Issue
Block a user