Files
openclaw/src/cli/command-config-resolution.ts
Peter Steinberger 9e67f53b91 fix(cli): resolve web command SecretRefs
Fix CLI web search/fetch command SecretRef resolution for provider-scoped plugin credentials.

- Carry command provider overrides through gateway and local secret resolution.
- Mark the selected web provider targets active and unrelated plugin refs inactive.
- Cover Tavily, DuckDuckGo, legacy Firecrawl fetch, protocol overrides, and runtime command-secret behavior.
- Add public plugin-sdk test mock exports needed by existing plugin tests after CI boundary enforcement.

Fixes #82621.
Replacement for #82699.

Co-authored-by: 吴杨帆 <39647285+leno23@users.noreply.github.com>
2026-05-17 03:00:39 +01:00

50 lines
1.6 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,
type CommandSecretsProviderOverrides,
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>;
providerOverrides?: CommandSecretsProviderOverrides;
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 } : {}),
...(params.providerOverrides ? { providerOverrides: params.providerOverrides } : {}),
});
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,
};
}