feat: add first-run runtime initialization
This commit is contained in:
@@ -303,6 +303,18 @@ function resolveOpenClawRuntime(): OpenClawRuntimeResolution {
|
||||
return cachedOpenClawRuntime;
|
||||
}
|
||||
|
||||
if (hasRequiredOpenClawContextModules(managedDir)) {
|
||||
cachedOpenClawRuntime = {
|
||||
dir: managedDir,
|
||||
source: 'managed',
|
||||
version: readOpenClawVersion(managedDir),
|
||||
bundledDir,
|
||||
managedDir,
|
||||
};
|
||||
logOpenClawRuntime('[openclaw-runtime] Using managed OpenClaw runtime', cachedOpenClawRuntime);
|
||||
return cachedOpenClawRuntime;
|
||||
}
|
||||
|
||||
const externalDir = findExternalOpenClawDir([bundledDir, managedDir]);
|
||||
if (externalDir) {
|
||||
cachedOpenClawRuntime = {
|
||||
@@ -312,7 +324,7 @@ function resolveOpenClawRuntime(): OpenClawRuntimeResolution {
|
||||
bundledDir,
|
||||
managedDir,
|
||||
};
|
||||
logOpenClawRuntime('[openclaw-runtime] Using existing OpenClaw installation', cachedOpenClawRuntime);
|
||||
logOpenClawRuntime('[openclaw-runtime] Using existing OpenClaw installation before managed runtime is installed', cachedOpenClawRuntime);
|
||||
return cachedOpenClawRuntime;
|
||||
}
|
||||
|
||||
@@ -391,6 +403,30 @@ export function getOpenClawDir(): string {
|
||||
return resolveOpenClawRuntime().dir;
|
||||
}
|
||||
|
||||
export function reinstallManagedOpenClawRuntime(): OpenClawRuntimeResolution {
|
||||
cachedOpenClawRuntime = null;
|
||||
|
||||
const bundledDir = getBundledOpenClawDir();
|
||||
const managedDir = getManagedOpenClawDir();
|
||||
rmSync(fsPath(managedDir), { recursive: true, force: true });
|
||||
|
||||
let installedFromBundled = false;
|
||||
if (isValidOpenClawPackageDir(bundledDir)) {
|
||||
installedFromBundled = installBundledOpenClawToManagedRuntime(bundledDir, managedDir);
|
||||
}
|
||||
|
||||
cachedOpenClawRuntime = {
|
||||
dir: hasRequiredOpenClawContextModules(managedDir) ? managedDir : bundledDir,
|
||||
source: hasRequiredOpenClawContextModules(managedDir) ? 'managed' : isValidOpenClawPackageDir(bundledDir) ? 'bundled' : 'missing',
|
||||
version: readOpenClawVersion(hasRequiredOpenClawContextModules(managedDir) ? managedDir : bundledDir),
|
||||
bundledDir,
|
||||
managedDir,
|
||||
installedFromBundled,
|
||||
};
|
||||
logOpenClawRuntime('[openclaw-runtime] Reinstalled managed OpenClaw runtime for first-run initialization', cachedOpenClawRuntime);
|
||||
return cachedOpenClawRuntime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get OpenClaw package directory resolved to a real path.
|
||||
* Useful when consumers need deterministic module resolution under pnpm symlinks.
|
||||
|
||||
Reference in New Issue
Block a user