fix: persist codex queue runtime secrets

- preserve Codex Queue MiniMax env values across compose env rewrites
- keep rebuild/status/log handling aligned with the codex-queue service
This commit is contained in:
Codex
2026-05-07 18:14:39 +00:00
parent 79166574e8
commit 672c911e42
+9 -4
View File
@@ -55,12 +55,14 @@ export function writeComposeEnv(config: UniDeskConfig, freshLogPrefix: boolean):
const stateDir = rootPath(config.paths.stateDir);
mkdirSync(stateDir, { recursive: true });
const envFile = join(stateDir, "docker-compose.env");
const previousRaw = existsSync(envFile) ? readFileSync(envFile, "utf8") : "";
const previousValue = (key: string): string => previousRaw.match(new RegExp(`^${key}=(.*)$`, "m"))?.[1]?.replace(/^"|"$/g, "") ?? "";
const runtimeSecret = (key: string): string => process.env[key] ?? previousValue(key);
let logDir: string;
let logPrefix: string;
if (!freshLogPrefix && existsSync(envFile)) {
const raw = readFileSync(envFile, "utf8");
logDir = raw.match(/^UNIDESK_LOG_DIR=(.*)$/m)?.[1]?.replace(/^"|"$/g, "") ?? rootPath(config.paths.logsDir);
logPrefix = raw.match(/^UNIDESK_LOG_PREFIX=(.*)$/m)?.[1]?.replace(/^"|"$/g, "") ?? localDateParts(new Date()).stamp;
if (!freshLogPrefix && previousRaw.length > 0) {
logDir = previousValue("UNIDESK_LOG_DIR") || rootPath(config.paths.logsDir);
logPrefix = previousValue("UNIDESK_LOG_PREFIX") || localDateParts(new Date()).stamp;
} else {
const parts = localDateParts(new Date());
logDir = resolve(rootPath(config.paths.logsDir, parts.day));
@@ -109,6 +111,9 @@ export function writeComposeEnv(config: UniDeskConfig, freshLogPrefix: boolean):
UNIDESK_HOST_SSH_HOST: config.sshForwarding.host,
UNIDESK_HOST_SSH_PORT: String(config.sshForwarding.port),
UNIDESK_HOST_SSH_USER: config.sshForwarding.user,
UNIDESK_CODEX_QUEUE_MINIMAX_API_KEY: runtimeSecret("UNIDESK_CODEX_QUEUE_MINIMAX_API_KEY"),
UNIDESK_CODEX_QUEUE_MINIMAX_MODEL: runtimeSecret("UNIDESK_CODEX_QUEUE_MINIMAX_MODEL") || "MiniMax-M2.7",
UNIDESK_CODEX_QUEUE_MINIMAX_API_BASE: runtimeSecret("UNIDESK_CODEX_QUEUE_MINIMAX_API_BASE") || "https://api.minimax.io/v1",
};
writeFileSync(envFile, Object.entries(lines).map(([key, value]) => `${key}=${envValue(value)}`).join("\n") + "\n", "utf8");
return { envFile, logDir, logPrefix };