// Generated by scripts/generate-runtime-script-assets.mjs; do not edit. /* oxlint-disable no-var -- esbuild owns variable declarations in this generated bundle. */ // src/infra/runtime-process-script-file.ts import fs from "node:fs"; import os from "node:os"; import path from "node:path"; import { pathToFileURL } from "node:url"; function materializeRuntimeProcessScriptFile(entry, options = {}) { const directory = fs.mkdtempSync( path.join(options.parentDirectory ?? os.tmpdir(), "openclaw-script-"), ); const filename = path.join(directory, entry.fileName); let disposed = false; const dispose = () => { if (disposed) { return; } try { fs.rmSync(directory, { recursive: true, force: true }); disposed = true; } catch (error) { process.emitWarning( `Runtime script cleanup failed at ${directory}: ${error instanceof Error ? error.message : String(error)}`, ); } }; try { fs.writeFileSync(filename, entry.source, { mode: 384, flag: "wx" }); return { url: pathToFileURL(filename), dispose }; } catch (error) { dispose(); throw error; } } // runtime-process-scripts.ts var scripts = { packageCliNodeProbe: { fileName: "package-cli-node-probe.mjs", source: "// scripts/lib/package-cli-node-probe.entry.mjs\nprocess.stdout.write(\n JSON.stringify({\n version: process.versions.node ?? null,\n bunVersion: process.versions.bun ?? null,\n execPath: process.execPath ?? null\n })\n);\n", }, nodeRuntimeProbe: { fileName: "node-runtime-probe.mjs", source: '// src/infra/node-runtime-probe.entry.ts\nimport process from "node:process";\nvar requiredFlag = process.argv[2];\nprocess.stdout.write(\n !process.versions.bun && (!requiredFlag || process.allowedNodeEnvironmentFlags.has(requiredFlag)) ? process.execPath : ""\n);\n', }, daemonRuntimeProbe: { fileName: "daemon-runtime-probe.mjs", source: 'var __getOwnPropNames = Object.getOwnPropertyNames;\nvar __esm = (fn, res, err) => function __init() {\n if (err) throw err[0];\n try {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n } catch (e) {\n throw err = [e], e;\n }\n};\n\n// gateway-shutdown-budget.mjs\nvar GATEWAY_SHUTDOWN_DRAIN_TIMEOUT_MS, GATEWAY_SHUTDOWN_RESERVE_MS, GATEWAY_SUPERVISOR_EXIT_MARGIN_MS, GATEWAY_SHUTDOWN_TIMEOUT_MS, GATEWAY_SERVICE_STOP_TIMEOUT_MS, LAUNCH_AGENT_EXIT_TIMEOUT_SECONDS;\nvar init_gateway_shutdown_budget = __esm({\n "gateway-shutdown-budget.mjs"() {\n "use strict";\n GATEWAY_SHUTDOWN_DRAIN_TIMEOUT_MS = 315e3;\n GATEWAY_SHUTDOWN_RESERVE_MS = 1e4;\n GATEWAY_SUPERVISOR_EXIT_MARGIN_MS = 5e3;\n GATEWAY_SHUTDOWN_TIMEOUT_MS = GATEWAY_SHUTDOWN_DRAIN_TIMEOUT_MS + GATEWAY_SHUTDOWN_RESERVE_MS;\n GATEWAY_SERVICE_STOP_TIMEOUT_MS = GATEWAY_SHUTDOWN_TIMEOUT_MS + GATEWAY_SUPERVISOR_EXIT_MARGIN_MS;\n LAUNCH_AGENT_EXIT_TIMEOUT_SECONDS = GATEWAY_SERVICE_STOP_TIMEOUT_MS / 1e3;\n }\n});\n\n// cli-parent-lifetime.mjs\nvar parentKey, CLI_RESPAWN_PARENT_ENV, inheritedParent, CLI_PARENT_BOUND_PRELOAD;\nvar init_cli_parent_lifetime = __esm({\n "cli-parent-lifetime.mjs"() {\n "use strict";\n init_gateway_shutdown_budget();\n parentKey = /* @__PURE__ */ Symbol.for("openclaw.cliRespawnParent");\n CLI_RESPAWN_PARENT_ENV = "OPENCLAW_CLI_RESPAWN_PARENT";\n inheritedParent = process.env[CLI_RESPAWN_PARENT_ENV];\n delete process.env[CLI_RESPAWN_PARENT_ENV];\n if (inheritedParent === String(process.ppid)) {\n globalThis[parentKey] = { pid: process.ppid };\n }\n CLI_PARENT_BOUND_PRELOAD = `data:text/javascript,${encodeURIComponent(`\n globalThis[Symbol.for("openclaw.cliRespawnParent")] = { pid: process.ppid };\n process.execArgv = process.execArgv.filter((arg, index, args) =>\n arg !== import.meta.url && !(arg === "--import" && args[index + 1] === import.meta.url));\n`)}`;\n }\n});\n\n// node-runtime-env.mjs\nvar init_node_runtime_env = __esm({\n "node-runtime-env.mjs"() {\n "use strict";\n }\n});\n\n// cli-invocation.mjs\nimport { fileURLToPath } from "node:url";\nfunction getEmbeddedStandaloneRuntimeRoot() {\n const rootUrl = globalThis.__openclawStandaloneRootUrl;\n return typeof rootUrl === "string" ? fileURLToPath(rootUrl) : void 0;\n}\nvar init_cli_invocation = __esm({\n "cli-invocation.mjs"() {\n "use strict";\n init_cli_parent_lifetime();\n init_node_runtime_env();\n }\n});\n\n// src/infra/daemon-runtime-probe.ts\nimport path from "node:path";\n\n// node-sqlite-capabilities.mjs\nfunction probeSqlite(DatabaseSync) {\n const result = { available: false, version: null, text: false, blob: false, json: false };\n let database;\n try {\n database = new DatabaseSync(":memory:");\n result.available = true;\n const version = database.prepare("SELECT sqlite_version() AS version").get()?.version;\n result.version = typeof version === "string" ? version : null;\n const text = "a\\0b\\0";\n const bytes = Buffer.from(text, "utf8");\n const json = JSON.stringify({ value: text });\n database.exec("CREATE TABLE probe (text_value TEXT, blob_value BLOB, json_value TEXT)");\n database.prepare("INSERT INTO probe VALUES (?, ?, ?)").run(text, bytes, json);\n const row = database.prepare("SELECT text_value, blob_value, json_value FROM probe").get();\n result.text = typeof row?.text_value === "string" && row.text_value.length === text.length && Buffer.from(row.text_value, "utf8").equals(bytes);\n result.blob = row?.blob_value instanceof Uint8Array && Buffer.from(row.blob_value).equals(bytes);\n result.json = row?.json_value === json && JSON.parse(row.json_value).value === text;\n } catch (error) {\n result.error = error instanceof Error ? error.message : String(error);\n } finally {\n database?.close();\n }\n return result;\n}\nfunction isSqliteWalResetSafeVersion(value) {\n const match = /^(\\d+)\\.(\\d+)\\.(\\d+)$/u.exec(value.trim());\n if (!match) {\n return false;\n }\n const [major, minor, patch] = match.slice(1).map(Number);\n if (![major, minor, patch].every(Number.isSafeInteger)) {\n return false;\n }\n return major > 3 || major === 3 && (minor > 51 || minor === 51 && patch >= 3 || minor === 50 && patch >= 7 || minor === 44 && patch >= 6);\n}\n\n// src/infra/bun-sqlite-library.ts\ninit_cli_invocation();\nimport { existsSync } from "node:fs";\nimport { createRequire } from "node:module";\nimport { posix } from "node:path";\nimport { getEnvironmentData, isMainThread, setEnvironmentData } from "node:worker_threads";\n\n// src/shared/global-singleton.ts\nvar GLOBAL_SINGLETON_RESETS_KEY = /* @__PURE__ */ Symbol.for("openclaw.globalSingletonLifecycleResets");\nfunction resolveGlobalSingletonResetRegistry() {\n const globalStore = globalThis;\n const existing = globalStore[GLOBAL_SINGLETON_RESETS_KEY];\n if (existing instanceof Map) {\n return existing;\n }\n const created = /* @__PURE__ */ new Map();\n globalStore[GLOBAL_SINGLETON_RESETS_KEY] = created;\n return created;\n}\nfunction resolveGlobalSingleton(key, create, reset, lifecycle = "close-and-restart") {\n const globalStore = globalThis;\n let value;\n if (Object.hasOwn(globalStore, key)) {\n value = globalStore[key];\n } else {\n value = create();\n globalStore[key] = value;\n }\n if (reset) {\n resolveGlobalSingletonResetRegistry().set(key, {\n lifecycle,\n reset: () => reset(value)\n });\n }\n return value;\n}\n\n// src/infra/bun-sqlite-library.ts\nvar WORKER_SELECTION_KEY = "openclaw.bunSqliteLibrarySelection";\nfunction probeLibrary(path2) {\n const require2 = createRequire(import.meta.url);\n const { dlopen, FFIType } = require2("bun:ffi");\n const library = dlopen(path2, {\n sqlite3_libversion: { args: [], returns: FFIType.cstring },\n sqlite3_compileoption_used: { args: [FFIType.cstring], returns: FFIType.i32 }\n });\n try {\n return {\n version: String(library.symbols.sqlite3_libversion()),\n extensionLoadingSupported: library.symbols.sqlite3_compileoption_used(Buffer.from("OMIT_LOAD_EXTENSION\\0")) === 0\n };\n } finally {\n library.close();\n }\n}\nfunction selectLibrary(path2) {\n const require2 = createRequire(import.meta.url);\n const { Database } = require2("bun:sqlite");\n Database.setCustomSQLite(path2);\n}\nfunction createSelector() {\n let selection;\n let failure;\n return (options = {}) => {\n if (failure) {\n throw failure;\n }\n if (selection) {\n return selection;\n }\n const override = options.explicitPath ?? (process.env.OPENCLAW_SQLITE_LIBRARY?.trim() || void 0);\n if (!process.versions.bun || process.platform !== "darwin") {\n selection = override ? { source: "runtime", ignoredOverride: "OPENCLAW_SQLITE_LIBRARY requires Bun on macOS" } : { source: "runtime" };\n return selection;\n }\n const standaloneRoot = options.standaloneRoot ?? getEmbeddedStandaloneRuntimeRoot();\n const bundled = override === void 0 && standaloneRoot !== void 0 ? posix.join(standaloneRoot, "lib/libsqlite3.dylib") : void 0;\n const prefix = process.env.HOMEBREW_PREFIX?.trim();\n const candidates = override !== void 0 ? [override] : [\n .../* @__PURE__ */ new Set([\n ...bundled ? [bundled] : [],\n ...prefix ? [posix.join(prefix, "opt/sqlite/lib/libsqlite3.dylib")] : [],\n "/opt/homebrew/opt/sqlite/lib/libsqlite3.dylib",\n "/usr/local/opt/sqlite/lib/libsqlite3.dylib",\n "/opt/local/lib/libsqlite3.dylib"\n ])\n ];\n const unusable = [];\n for (const path2 of candidates) {\n const source = override !== void 0 ? "env" : path2 === bundled ? "bundled" : "discovered";\n let probe;\n let present = true;\n try {\n try {\n probe = probeLibrary(path2);\n } catch (error) {\n present = existsSync(path2);\n throw present ? error : new Error("missing file", { cause: error });\n }\n if (!isSqliteWalResetSafeVersion(probe.version)) {\n throw new Error(`SQLite version ${probe.version} below the WAL safety floor`);\n }\n if (!probe.extensionLoadingSupported) {\n throw new Error("built with SQLITE_OMIT_LOAD_EXTENSION");\n }\n } catch (error) {\n if (override === void 0) {\n if (present || path2 === bundled) {\n unusable.push(`${path2} (${error instanceof Error ? error.message : String(error)})`);\n }\n continue;\n }\n failure = selectionError(path2, error, source === "bundled");\n throw failure;\n }\n try {\n selectLibrary(path2);\n } catch (error) {\n failure = selectionError(path2, error, source === "bundled");\n throw failure;\n }\n selection = {\n source,\n path: path2,\n version: probe.version,\n extensionLoadingSupported: true\n };\n return selection;\n }\n failure = new Error(\n `No supported SQLite library for Bun on macOS (${process.arch})` + (unusable.length > 0 ? `; unusable: ${unusable.join(", ")}` : "") + ". Apple\'s system SQLite fails OpenClaw\'s read-only database connections. " + (bundled ? "Rebuild or replace the complete standalone artifact to restore its bundled SQLite library. " : "") + `Install one with brew install sqlite, or set OPENCLAW_SQLITE_LIBRARY to a libsqlite3.dylib built for ${process.arch}.`\n );\n throw failure;\n };\n}\nfunction selectionError(path2, error, bundled = false) {\n const guidance = bundled ? "Rebuild or replace the complete standalone artifact (openclaw and runtime/), or set OPENCLAW_SQLITE_LIBRARY to a supported library." : "Fix or unset OPENCLAW_SQLITE_LIBRARY; install a supported library with brew install sqlite.";\n return new Error(\n `Cannot use ${bundled ? "bundled " : ""}SQLite library ${path2}: ${error instanceof Error ? error.message : String(error)}. ${guidance}`,\n { cause: error }\n );\n}\nfunction createRuntimeSelector() {\n const isBun = Boolean(process.versions.bun);\n const sharedLibrary = isBun && process.platform === "darwin";\n let inherited;\n if (sharedLibrary && !isMainThread) {\n inherited = getEnvironmentData(WORKER_SELECTION_KEY);\n }\n const select = createSelector();\n let published = false;\n return (options) => {\n const selection = inherited ?? select(options);\n if (sharedLibrary && isMainThread && !published) {\n setEnvironmentData(WORKER_SELECTION_KEY, Object.freeze({ ...selection }));\n published = true;\n }\n return selection;\n };\n}\nfunction runtimeSelector() {\n return resolveGlobalSingleton(\n /* @__PURE__ */ Symbol.for("openclaw.bunSqliteLibrarySelection"),\n createRuntimeSelector\n );\n}\nfunction ensureSqliteLibrarySelected(options) {\n return runtimeSelector()(options);\n}\n\n// src/infra/daemon-runtime-probe.ts\nasync function readRuntimeProbeInfo(runtime, standaloneRoot) {\n let sqliteVersion = null;\n let sqliteSelectionError = null;\n let sqliteLibraryPath = null;\n let sqliteProbe = {\n available: false,\n version: null,\n text: false,\n blob: false,\n json: false\n };\n if (runtime === "bun") {\n try {\n const selection = ensureSqliteLibrarySelected({ standaloneRoot });\n if ("path" in selection) {\n sqliteLibraryPath = path.resolve(selection.path);\n }\n } catch (error) {\n sqliteSelectionError = error instanceof Error ? error.message : String(error);\n }\n }\n if (sqliteSelectionError === null) {\n try {\n const { DatabaseSync } = await import("node:sqlite");\n sqliteProbe = probeSqlite(DatabaseSync);\n sqliteVersion = sqliteProbe.version;\n } catch {\n }\n }\n const variables = process.config?.variables;\n const sharedSqlite = variables?.node_shared_sqlite;\n const nodeSharedSqlite = sharedSqlite === true || sharedSqlite === "true";\n return {\n nodeVersion: process.versions.node,\n bunVersion: process.versions.bun ?? null,\n sqliteVersion,\n sqliteProbe,\n sqliteSelectionError,\n sqliteLibraryPath,\n nodeSharedSqlite\n };\n}\n\n// src/infra/daemon-runtime-probe.entry.ts\nprocess.stdout.write(\n JSON.stringify(\n await readRuntimeProbeInfo(\n process.argv[2] === "bun" ? "bun" : "node",\n process.argv[3] || void 0\n )\n )\n);\n', }, updateStateSizes: { fileName: "update-state-sizes.mjs", source: '// src/infra/update-state-sizes.entry.ts\nimport fs from "node:fs";\n\n// node_modules/.pnpm/@openclaw+fs-safe@0.26.13/node_modules/@openclaw/fs-safe/dist/path.js\nfunction isNodeError(value) {\n return Boolean(value && typeof value === "object" && "code" in value);\n}\nfunction hasNodeErrorCode(value, code) {\n return isNodeError(value) && value.code === code;\n}\n\n// src/infra/update-state-inspection-protocol.ts\nvar UPDATE_STATE_INSPECTION_PROGRESS_PREFIX = "State schema progress: ";\n\n// src/infra/update-state-sizes.entry.ts\nvar input = "";\nprocess.stdin.setEncoding("utf8");\nprocess.stdin.on("data", (chunk) => {\n input += chunk;\n});\nprocess.stdin.on("end", () => {\n const { files } = JSON.parse(input);\n const result = [];\n const progress = (pathname) => {\n try {\n fs.writeSync(\n 2,\n UPDATE_STATE_INSPECTION_PROGRESS_PREFIX + JSON.stringify({ phase: "metadata inventory", path: pathname }) + "\\n"\n );\n } catch (error) {\n if (!hasNodeErrorCode(error, "EAGAIN") && !hasNodeErrorCode(error, "EWOULDBLOCK")) {\n throw error;\n }\n }\n };\n for (const file of files) {\n let size;\n progress(file);\n try {\n size = fs.statSync(file, { bigint: true }).size;\n } catch (error) {\n if (!hasNodeErrorCode(error, "ENOENT")) {\n result.push({ path: file });\n }\n continue;\n }\n for (const suffix of ["-wal", "-shm", "-journal"]) {\n progress(file + suffix);\n try {\n size += fs.statSync(file + suffix, { bigint: true }).size;\n } catch (error) {\n if (!hasNodeErrorCode(error, "ENOENT")) {\n size = void 0;\n break;\n }\n }\n }\n result.push({ path: file, sizeBytes: size?.toString() });\n }\n process.stdout.write(JSON.stringify(result));\n});\n', }, }; function createRuntimeProcessScriptFile(name, options) { return materializeRuntimeProcessScriptFile(scripts[name], options); } export { createRuntimeProcessScriptFile };