Files
openclaw/src/cli/command-config-resolution.ts
2026-04-06 07:41:08 +01:00

47 lines
1.4 KiB
TypeScript

import { applyPluginAutoEnable } from "../config/plugin-auto-enable.js";
import type { OpenClawConfig } from "../config/types.js";
import type { RuntimeEnv } from "../runtime.js";
import {
type CommandSecretResolutionMode,
resolveCommandSecretRefsViaGateway,
} from "./command-secret-gateway.js";
export async function resolveCommandConfigWithSecrets<TConfig extends OpenClawConfig>(params: {
config: TConfig;
commandName: string;
targetIds: Set<string>;
mode?: CommandSecretResolutionMode;
allowedPaths?: Set<string>;
runtime?: RuntimeEnv;
autoEnable?: boolean;
env?: NodeJS.ProcessEnv;
}): Promise<{
resolvedConfig: TConfig;
effectiveConfig: TConfig;
diagnostics: string[];
}> {
const { resolvedConfig, diagnostics } = await resolveCommandSecretRefsViaGateway({
config: params.config,
commandName: params.commandName,
targetIds: params.targetIds,
...(params.mode ? { mode: params.mode } : {}),
...(params.allowedPaths ? { allowedPaths: params.allowedPaths } : {}),
});
if (params.runtime) {
for (const entry of diagnostics) {
params.runtime.log(`[secrets] ${entry}`);
}
}
const effectiveConfig = params.autoEnable
? applyPluginAutoEnable({
config: resolvedConfig,
env: params.env ?? process.env,
}).config
: resolvedConfig;
return {
resolvedConfig: resolvedConfig as TConfig,
effectiveConfig: effectiveConfig as TConfig,
diagnostics,
};
}