




















@@ -3,6 +3,7 @@ import { isAtLeast, parseSemver } from "../infra/runtime-guard.js";
33export const MIN_HOST_VERSION_FORMAT =
44'openclaw.install.minHostVersion must use a semver floor in the form ">=x.y.z"';
55const MIN_HOST_VERSION_RE = /^>=(\d+)\.(\d+)\.(\d+)$/;
6+const LEGACY_MIN_HOST_VERSION_RE = /^(\d+)\.(\d+)\.(\d+)$/;
6778export type MinHostVersionRequirement = {
89raw: string;
@@ -22,15 +23,20 @@ export type MinHostVersionCheckResult =
2223currentVersion: string;
2324};
242525-export function parseMinHostVersionRequirement(raw: unknown): MinHostVersionRequirement | null {
26+export function parseMinHostVersionRequirement(
27+raw: unknown,
28+options: { allowLegacyBareSemver?: boolean } = {},
29+): MinHostVersionRequirement | null {
2630if (typeof raw !== "string") {
2731return null;
2832}
2933const trimmed = raw.trim();
3034if (!trimmed) {
3135return null;
3236}
33-const match = trimmed.match(MIN_HOST_VERSION_RE);
37+const match =
38+trimmed.match(MIN_HOST_VERSION_RE) ??
39+(options.allowLegacyBareSemver ? trimmed.match(LEGACY_MIN_HOST_VERSION_RE) : null);
3440if (!match) {
3541return null;
3642}
@@ -54,11 +60,14 @@ export function validateMinHostVersion(raw: unknown): string | null {
5460export function checkMinHostVersion(params: {
5561currentVersion: string | undefined;
5662minHostVersion: unknown;
63+allowLegacyBareSemver?: boolean;
5764}): MinHostVersionCheckResult {
5865if (params.minHostVersion === undefined) {
5966return { ok: true, requirement: null };
6067}
61-const requirement = parseMinHostVersionRequirement(params.minHostVersion);
68+const requirement = parseMinHostVersionRequirement(params.minHostVersion, {
69+allowLegacyBareSemver: params.allowLegacyBareSemver,
70+});
6271if (!requirement) {
6372return { ok: false, kind: "invalid", error: MIN_HOST_VERSION_FORMAT };
6473}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。