From 758c8b2f1a0f8dc231e2410c8c5799e4867e8438 Mon Sep 17 00:00:00 2001 From: Will Killian Date: Thu, 14 May 2026 09:46:25 -0400 Subject: [PATCH] chore: keep OpenClaw dependency in lockstep Signed-off-by: Will Killian --- .github/workflows/ci_openclaw.yml | 2 +- integrations/openclaw/package.json | 2 +- justfile | 80 +++++++++++++++++++++++++++++- package-lock.json | 2 +- 4 files changed, 81 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_openclaw.yml b/.github/workflows/ci_openclaw.yml index 5af12e359a..068fd8b4d0 100644 --- a/.github/workflows/ci_openclaw.yml +++ b/.github/workflows/ci_openclaw.yml @@ -76,7 +76,7 @@ jobs: if [ "${{ inputs.ref_type }}" = "tag" ]; then version="${{ inputs.ref_name }}" else - version="${version}-${sha}" + version="${version}+${sha}" fi printf 'NEMO_FLOW_PACKAGE_VERSION=%s\n' "$version" >> "$GITHUB_ENV" diff --git a/integrations/openclaw/package.json b/integrations/openclaw/package.json index c25633ddac..5e19ab5bd6 100644 --- a/integrations/openclaw/package.json +++ b/integrations/openclaw/package.json @@ -58,7 +58,7 @@ "openclaw": ">=2026.5.6" }, "dependencies": { - "nemo-flow-node": ">0.1.0 <1.0.0" + "nemo-flow-node": "0.2.0" }, "devDependencies": { "@types/node": "^20.19.0", diff --git a/justfile b/justfile index 24015536e8..ba13e66885 100644 --- a/justfile +++ b/justfile @@ -313,6 +313,75 @@ try { NODE } +set_npm_package_dependency_version() { + local pkg_path="$1" + local lock_path="${2:-}" + local lock_package_path="$3" + local dependency_name="$4" + local version="$5" + + node - "$pkg_path" "$lock_path" "$lock_package_path" "$dependency_name" "$version" <<'NODE' +const fs = require('fs'); +const [pkgPath, lockPath, lockPackagePath, dependencyName, version] = process.argv.slice(2); + +function readJson(path) { + return JSON.parse(fs.readFileSync(path, 'utf8')); +} + +function writeJson(path, value) { + fs.writeFileSync(path, JSON.stringify(value, null, 2) + '\n'); +} + +function requireDependency(container, label) { + if ( + !container.dependencies || + !Object.prototype.hasOwnProperty.call(container.dependencies, dependencyName) + ) { + throw new Error(`${label} missing dependencies["${dependencyName}"]`); + } +} + +try { + const manifest = readJson(pkgPath); + requireDependency(manifest, pkgPath); + const manifestChanged = manifest.dependencies[dependencyName] !== version; + + let lock = null; + let lockChanged = false; + if (lockPath) { + lock = readJson(lockPath); + if (!lock.packages) { + throw new Error(`${lockPath} missing packages`); + } + const packageEntry = lock.packages[lockPackagePath]; + if (!packageEntry) { + throw new Error(`${lockPath} missing packages["${lockPackagePath}"]`); + } + requireDependency(packageEntry, `${lockPath} packages["${lockPackagePath}"]`); + lockChanged = packageEntry.dependencies[dependencyName] !== version; + } + + manifest.dependencies[dependencyName] = version; + if (lock) { + lock.packages[lockPackagePath].dependencies[dependencyName] = version; + } + + if (manifestChanged) { + writeJson(pkgPath, manifest); + } + + if (lockPath) { + if (lockChanged) { + writeJson(lockPath, lock); + } + } +} catch (error) { + console.error(`Error updating package dependency: ${error.message}`); + process.exit(1); +} +NODE +} + read_workspace_version() { local python_executable="" python_executable="$(uv_python_executable)" @@ -441,6 +510,7 @@ set_node_package_versions() { local version="$1" set_npm_package_version crates/node/package.json package-lock.json "$version" crates/node set_npm_package_version integrations/openclaw/package.json package-lock.json "$version" integrations/openclaw + set_npm_package_dependency_version integrations/openclaw/package.json package-lock.json integrations/openclaw nemo-flow-node "$version" } set_node_package_version() { @@ -992,10 +1062,12 @@ package-node: package_version="${version}+${sha}" echo "Non-release build: appending commit hash to version" set_npm_package_version crates/node/package.json package-lock.json "$package_version" crates/node + set_npm_package_dependency_version integrations/openclaw/package.json package-lock.json integrations/openclaw nemo-flow-node "$package_version" else package_version="{{ ref_name }}" echo "Using explicit version {{ ref_name }}" set_npm_package_version crates/node/package.json package-lock.json "$package_version" crates/node + set_npm_package_dependency_version integrations/openclaw/package.json package-lock.json integrations/openclaw nemo-flow-node "$package_version" fi build_args=(build) if is_true "{{ ci }}" && [[ "$(uname -s)" == "Linux" ]]; then @@ -1028,11 +1100,15 @@ package-openclaw: if [[ -z "{{ ref_name }}" ]]; then sha="$(head_git_sha)" version="$(read_npm_package_version integrations/openclaw/package.json)" + package_version="${version}+${sha}" echo "Non-release build: appending commit hash to version" - set_npm_package_version integrations/openclaw/package.json package-lock.json "${version}-${sha}" integrations/openclaw + set_npm_package_version integrations/openclaw/package.json package-lock.json "$package_version" integrations/openclaw + set_npm_package_dependency_version integrations/openclaw/package.json package-lock.json integrations/openclaw nemo-flow-node "$package_version" else + package_version="{{ ref_name }}" echo "Using explicit version {{ ref_name }}" - set_npm_package_version integrations/openclaw/package.json package-lock.json "{{ ref_name }}" integrations/openclaw + set_npm_package_version integrations/openclaw/package.json package-lock.json "$package_version" integrations/openclaw + set_npm_package_dependency_version integrations/openclaw/package.json package-lock.json integrations/openclaw nemo-flow-node "$package_version" fi npm install --workspace=nemo-flow-openclaw --ignore-scripts npm pack --workspace=nemo-flow-openclaw --pack-destination "$package_dir" diff --git a/package-lock.json b/package-lock.json index 2dbef42836..1d778347d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -838,7 +838,7 @@ "version": "0.2.0", "license": "Apache-2.0", "dependencies": { - "nemo-flow-node": ">0.1.0 <1.0.0" + "nemo-flow-node": "0.2.0" }, "devDependencies": { "@types/node": "^20.19.0",