refactor: centralize presence routing and version precedence coverage (#19609)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 10d9df5263
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
Gustavo Madeira Santana
2026-02-18 00:02:51 -05:00
committed by GitHub
parent 5c69e625f5
commit 07fdceb5fd
12 changed files with 305 additions and 33 deletions

View File

@@ -44,6 +44,16 @@ function readVersionFromJsonCandidates(
}
}
function firstNonEmpty(...values: Array<string | undefined>): string | undefined {
for (const value of values) {
const trimmed = value?.trim();
if (trimmed) {
return trimmed;
}
}
return undefined;
}
export function readVersionFromPackageJsonForModuleUrl(moduleUrl: string): string | null {
return readVersionFromJsonCandidates(moduleUrl, PACKAGE_JSON_CANDIDATES, {
requirePackageName: true,
@@ -61,6 +71,23 @@ export function resolveVersionFromModuleUrl(moduleUrl: string): string | null {
);
}
export type RuntimeVersionEnv = {
[key: string]: string | undefined;
};
export function resolveRuntimeServiceVersion(
env: RuntimeVersionEnv = process.env as RuntimeVersionEnv,
fallback = "dev",
): string {
return (
firstNonEmpty(
env["OPENCLAW_VERSION"],
env["OPENCLAW_SERVICE_VERSION"],
env["npm_package_version"],
) ?? fallback
);
}
// Single source of truth for the current OpenClaw version.
// - Embedded/bundled builds: injected define or env var.
// - Dev/npm builds: package.json.