* fix: preserve ${VAR} env var references when writing config back to disk
Fixes #11466
When config is loaded, ${VAR} references are resolved to their plaintext
values. Previously, writeConfigFile would serialize the resolved values,
silently replacing "${ANTHROPIC_API_KEY}" with "sk-ant-api03-..." in the
config file.
Now writeConfigFile reads the current file pre-substitution, and for each
value that matches what a ${VAR} reference would resolve to, restores the
original reference. Values the caller intentionally changed are kept as-is.
This fixes all 50+ writeConfigFile call sites (doctor, configure wizard,
gateway config.set/apply/patch, plugins, hooks, etc.) without requiring
any caller changes.
New files:
- src/config/env-preserve.ts — restoreEnvVarRefs() utility
- src/config/env-preserve.test.ts — 11 unit tests
* fix: remove global config env snapshot race
* docs(changelog): note config env snapshot race fix
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
22 lines
571 B
TypeScript
22 lines
571 B
TypeScript
export {
|
|
clearConfigCache,
|
|
createConfigIO,
|
|
loadConfig,
|
|
parseConfigJson5,
|
|
readConfigFileSnapshot,
|
|
readConfigFileSnapshotForWrite,
|
|
resolveConfigSnapshotHash,
|
|
writeConfigFile,
|
|
} from "./io.js";
|
|
export { migrateLegacyConfig } from "./legacy-migrate.js";
|
|
export * from "./paths.js";
|
|
export * from "./runtime-overrides.js";
|
|
export * from "./types.js";
|
|
export {
|
|
validateConfigObject,
|
|
validateConfigObjectRaw,
|
|
validateConfigObjectRawWithPlugins,
|
|
validateConfigObjectWithPlugins,
|
|
} from "./validation.js";
|
|
export { OpenClawSchema } from "./zod-schema.js";
|