Files
openclaw-zero-token/entry.respawn.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

81 lines
2.4 KiB
TypeScript

import { resolveNodeStartupTlsEnvironment } from "./bootstrap/node-startup-env.js";
import { shouldSkipRespawnForArgv } from "./cli/respawn-policy.js";
import { isTruthyEnvValue } from "./infra/env.js";
export const EXPERIMENTAL_WARNING_FLAG = "--disable-warning=ExperimentalWarning";
export const OPENCLAW_NODE_OPTIONS_READY = "OPENCLAW_NODE_OPTIONS_READY";
export const OPENCLAW_NODE_EXTRA_CA_CERTS_READY = "OPENCLAW_NODE_EXTRA_CA_CERTS_READY";
export function hasExperimentalWarningSuppressed(
params: {
env?: NodeJS.ProcessEnv;
execArgv?: string[];
} = {},
): boolean {
const env = params.env ?? process.env;
const execArgv = params.execArgv ?? process.execArgv;
const nodeOptions = env.NODE_OPTIONS ?? "";
if (nodeOptions.includes(EXPERIMENTAL_WARNING_FLAG) || nodeOptions.includes("--no-warnings")) {
return true;
}
return execArgv.some((arg) => arg === EXPERIMENTAL_WARNING_FLAG || arg === "--no-warnings");
}
export function buildCliRespawnPlan(
params: {
argv?: string[];
env?: NodeJS.ProcessEnv;
execArgv?: string[];
execPath?: string;
autoNodeExtraCaCerts?: string | undefined;
} = {},
): { argv: string[]; env: NodeJS.ProcessEnv } | null {
const argv = params.argv ?? process.argv;
const env = params.env ?? process.env;
const execArgv = params.execArgv ?? process.execArgv;
const execPath = params.execPath ?? process.execPath;
if (shouldSkipRespawnForArgv(argv) || isTruthyEnvValue(env.OPENCLAW_NO_RESPAWN)) {
return null;
}
const childEnv: NodeJS.ProcessEnv = { ...env };
const childExecArgv = [...execArgv];
let needsRespawn = false;
const autoNodeExtraCaCerts =
params.autoNodeExtraCaCerts ??
resolveNodeStartupTlsEnvironment({
env,
execPath,
includeDarwinDefaults: false,
}).NODE_EXTRA_CA_CERTS;
if (
autoNodeExtraCaCerts &&
!isTruthyEnvValue(env[OPENCLAW_NODE_EXTRA_CA_CERTS_READY]) &&
!env.NODE_EXTRA_CA_CERTS
) {
childEnv.NODE_EXTRA_CA_CERTS = autoNodeExtraCaCerts;
childEnv[OPENCLAW_NODE_EXTRA_CA_CERTS_READY] = "1";
needsRespawn = true;
}
if (
!isTruthyEnvValue(env[OPENCLAW_NODE_OPTIONS_READY]) &&
!hasExperimentalWarningSuppressed({ env, execArgv })
) {
childEnv[OPENCLAW_NODE_OPTIONS_READY] = "1";
childExecArgv.unshift(EXPERIMENTAL_WARNING_FLAG);
needsRespawn = true;
}
if (!needsRespawn) {
return null;
}
return {
argv: [...childExecArgv, ...argv.slice(1)],
env: childEnv,
};
}