-`vendor/openclaw-runtime` is reserved for the pinned runtime payload
-`vendor/openclaw-runtime` is reserved for the pinned runtime payload
-`installer-smoke.ps1` performs a real silent NSIS install into `.tmp`, launches the installed app in smoke mode, and validates packaged paths plus diagnostics output
-`installer-smoke.ps1` performs a real silent NSIS install into `.tmp`, launches the installed app in smoke mode, and validates packaged paths plus diagnostics output
-`electron-smoke.ps1` launches the desktop app directly under Electron with isolated `userData` and `logs` paths, then validates execution-policy smoke output
-`electron-smoke.ps1` launches the desktop app directly under Electron with isolated `userData` and `logs` paths, then validates execution-policy smoke output
-`materialize-runtime-payload.ps1` generates a local bundled runtime payload under `vendor/openclaw-runtime/`from the machine's installed `node.exe`, `openclaw`, local OpenClaw config, and a locked Python dependency set
-`materialize-runtime-payload.ps1` generates a local bundled runtime payload under `vendor/openclaw-runtime/`by copying the local `node.exe`, the installed OpenClaw package, a local OpenClaw config snapshot, and a self-contained Python runtime with the locked dependency set installed into it
-`bundled-runtime-smoke.ps1` materializes the local runtime payload, forces bundled-runtime mode, and validates that Electron can launch and use the managed runtime end to end
-`bundled-runtime-smoke.ps1` materializes the local runtime payload, forces bundled-runtime mode, and validates that Electron can launch and use the managed runtime end to end
-`installer-smoke.ps1` also validates the packaged Python runtime by importing the preinstalled table/document/web dependencies from `resources/vendor/openclaw-runtime/python`
-`installer-smoke.ps1` validates the packaged Python runtime by importing the preinstalled table/document/web dependencies from `resources/vendor/openclaw-runtime/python/python.exe`
Mutable runtime data lives outside the installer payload and should be created under Electron `userData/runtime/`.
} | ConvertTo-Json -Depth 20
\ No newline at end of file
The payload is considered ready only when the Node entry, OpenClaw package, Python executable, Python manifest, and locked Python imports all validate successfully on the target machine.
this.appendLog("warn",`Bundled runtime directory exists at ${this.vendorRuntimeDir}, but ${issue}.`);
:"";
this.appendLog("warn",`Bundled runtime directory exists at ${this.vendorRuntimeDir}, but required payload files are missing or incomplete.${pythonReason}`);
}else{
}else{
this.appendLog("warn",`Bundled runtime payload is missing at ${this.vendorRuntimeDir}.`);
constissue=this.payloadIssue
?trimTrailingPunctuation(this.payloadIssue)
:`Bundled runtime payload is missing at ${this.vendorRuntimeDir}`;
this.appendLog("warn",`${issue}.`);
}
}
this.refreshStatus();
this.refreshStatus();
...
@@ -382,16 +624,45 @@ export class RuntimeManager extends EventEmitter {
...
@@ -382,16 +624,45 @@ export class RuntimeManager extends EventEmitter {
}
}
asyncstart():Promise<RuntimeStatus>{
asyncstart():Promise<RuntimeStatus>{
if(this.startPromise){
this.appendLog("info","Bundled runtime startup is already in progress.");
Immutable packaged payload under `vendor/openclaw-runtime/` now includes:
Immutable packaged payload under endor/openclaw-runtime/ includes:
-`node/node.exe`
-
-`openclaw/index.js`
ode/node.exe
-`config/openclaw.json`
- openclaw/index.js
-`python/Scripts/python.exe`
- openclaw/package/openclaw.mjs
-`python/python-manifest.json`
- config/openclaw.json
-`python/runtime-requirements.lock.txt`
- python/python.exe
- python/python-manifest.json
- python/runtime-requirements.lock.txt
Mutable runtime data lives outside the installer payload and should be created under Electron `userData/runtime/`:
Mutable runtime data lives outside the installer payload and should be created under Electron userData/runtime/.
-`runtime/logs/`
The payload is considered ready only when the Node entry, OpenClaw package, Python executable, Python manifest, and locked Python imports all validate successfully on the target machine.
-`runtime/state/`
\ No newline at end of file
-`runtime/workspace/`
- future writable caches and lock files
Current payload is generated locally for packaging and smoke validation by `build/scripts/materialize-runtime-payload.ps1`.
The Python layer is part of the bundled-runtime contract. A payload is not considered ready unless:
- the Node/OpenClaw files exist
- the Python executable and manifest exist
- the locked Python dependencies can all be imported successfully