mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-21 10:01:37 -06:00
refactor(config): inline account capability resolution
Amp-Thread-ID: https://ampcode.com/threads/T-019ff438-3b93-77b8-9828-1d3c586cb127
This commit is contained in:
@@ -22,30 +22,6 @@ function normalizeCapabilities(capabilities: CapabilitiesConfig | undefined): st
|
||||
return normalized.length > 0 ? normalized : undefined;
|
||||
}
|
||||
|
||||
function resolveAccountCapabilities(params: {
|
||||
cfg?: { accounts?: Record<string, { capabilities?: CapabilitiesConfig }> } & {
|
||||
capabilities?: CapabilitiesConfig;
|
||||
};
|
||||
accountId?: string | null;
|
||||
}): string[] | undefined {
|
||||
const cfg = params.cfg;
|
||||
if (!cfg) {
|
||||
return undefined;
|
||||
}
|
||||
const normalizedAccountId = normalizeAccountId(params.accountId);
|
||||
|
||||
const accounts = cfg.accounts;
|
||||
if (accounts && typeof accounts === "object") {
|
||||
const match = resolveAccountEntry(accounts, normalizedAccountId);
|
||||
if (match) {
|
||||
// Account capabilities override provider capabilities; empty/object account values fall back.
|
||||
return normalizeCapabilities(match.capabilities) ?? normalizeCapabilities(cfg.capabilities);
|
||||
}
|
||||
}
|
||||
|
||||
return normalizeCapabilities(cfg.capabilities);
|
||||
}
|
||||
|
||||
/** Resolves normalized string capabilities for a channel/account config pair. */
|
||||
export function resolveChannelCapabilities(params: {
|
||||
cfg?: Partial<OpenClawConfig>;
|
||||
@@ -65,8 +41,18 @@ export function resolveChannelCapabilities(params: {
|
||||
capabilities?: CapabilitiesConfig;
|
||||
}
|
||||
| undefined;
|
||||
return resolveAccountCapabilities({
|
||||
cfg: channelConfig,
|
||||
accountId: params.accountId,
|
||||
});
|
||||
if (!channelConfig) {
|
||||
return undefined;
|
||||
}
|
||||
const normalizedAccountId = normalizeAccountId(params.accountId);
|
||||
const accounts = channelConfig.accounts;
|
||||
const accountConfig =
|
||||
accounts && typeof accounts === "object"
|
||||
? resolveAccountEntry(accounts, normalizedAccountId)
|
||||
: undefined;
|
||||
// Account capabilities override channel capabilities; empty/object account values fall back.
|
||||
return (
|
||||
normalizeCapabilities(accountConfig?.capabilities) ??
|
||||
normalizeCapabilities(channelConfig.capabilities)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user