


























@@ -3,7 +3,10 @@ import os from "node:os";
33import path from "node:path";
44import type { AuthProfileStore } from "../agents/auth-profiles/types.js";
55import { formatCliCommand } from "../cli/command-format.js";
6-import { collectDurableServiceEnvVars } from "../config/state-dir-dotenv.js";
6+import {
7+collectDurableServiceEnvVars,
8+readStateDirDotEnvVars,
9+} from "../config/state-dir-dotenv.js";
710import type { OpenClawConfig } from "../config/types.js";
811import { resolveSecretInputRef } from "../config/types.secrets.js";
912import { resolveGatewayLaunchAgentLabel } from "../daemon/constants.js";
@@ -392,6 +395,35 @@ function resolveGatewayInstallWorkingDirectory(params: {
392395return resolveGatewayStateDir(params.env);
393396}
394397398+function retainLaunchAgentManagedServiceEnvValues(params: {
399+environment: Record<string, string | undefined>;
400+durableEnvironment: Record<string, string | undefined>;
401+managedServiceEnvKeys: string | undefined;
402+stateDirDotEnvEnvironment: Record<string, string | undefined>;
403+serviceEnvironment: Record<string, string | undefined>;
404+platform: NodeJS.Platform;
405+}): void {
406+if (params.platform !== "darwin" || !params.serviceEnvironment.OPENCLAW_LAUNCHD_LABEL?.trim()) {
407+return;
408+}
409+const managedKeys = readManagedServiceEnvKeysFromEnvironment({
410+OPENCLAW_SERVICE_MANAGED_ENV_KEYS: params.managedServiceEnvKeys,
411+});
412+if (managedKeys.size === 0) {
413+return;
414+}
415+for (const [rawKey, value] of Object.entries(params.stateDirDotEnvEnvironment)) {
416+const key = normalizeEnvVarKey(rawKey, { portable: true })?.toUpperCase();
417+if (!key || !managedKeys.has(key) || typeof value !== "string" || !value.trim()) {
418+continue;
419+}
420+if (params.durableEnvironment[rawKey] !== value) {
421+continue;
422+}
423+params.environment[rawKey] = value;
424+}
425+}
426+395427async function buildGatewayInstallEnvironment(params: {
396428env: Record<string, string | undefined>;
397429config?: OpenClawConfig;
@@ -408,6 +440,7 @@ async function buildGatewayInstallEnvironment(params: {
408440environment: Record<string, string | undefined>;
409441environmentValueSources: Record<string, GatewayServiceEnvironmentValueSource | undefined>;
410442}> {
443+const stateDirDotEnvEnvironment = readStateDirDotEnvVars(params.env);
411444const durableEnvironment = collectDurableServiceEnvVars({
412445env: params.env,
413446config: params.config,
@@ -463,6 +496,14 @@ async function buildGatewayInstallEnvironment(params: {
463496omitKeys: Object.keys(params.serviceEnvironment),
464497});
465498writeManagedServiceEnvKeysToEnvironment(environment, managedServiceEnvKeys);
499+retainLaunchAgentManagedServiceEnvValues({
500+ environment,
501+ durableEnvironment,
502+ managedServiceEnvKeys,
503+ stateDirDotEnvEnvironment,
504+serviceEnvironment: params.serviceEnvironment,
505+platform: params.platform,
506+});
466507if (environment.OPENCLAW_SERVICE_MANAGED_ENV_KEYS) {
467508environmentValueSources.OPENCLAW_SERVICE_MANAGED_ENV_KEYS = "inline";
468509}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。