mirror of https://github.com/openclaw/openclaw.git
refactor: split models-config provider policy helpers
This commit is contained in:
parent
d38ec0c9c9
commit
7a1dce307d
|
|
@ -0,0 +1,53 @@
|
|||
import { resolveBedrockConfigApiKey } from "../plugin-sdk/amazon-bedrock.js";
|
||||
import { resolveAnthropicVertexConfigApiKey } from "../plugin-sdk/anthropic-vertex.js";
|
||||
import {
|
||||
normalizeGoogleProviderConfig,
|
||||
shouldNormalizeGoogleProviderConfig,
|
||||
} from "../plugin-sdk/google.js";
|
||||
import { applyModelStudioNativeStreamingUsageCompat } from "../plugin-sdk/modelstudio.js";
|
||||
import { applyMoonshotNativeStreamingUsageCompat } from "../plugin-sdk/moonshot.js";
|
||||
import type { ProviderConfig } from "./models-config.providers.secrets.js";
|
||||
|
||||
const NATIVE_STREAMING_USAGE_COMPAT: Record<string, (provider: ProviderConfig) => ProviderConfig> =
|
||||
{
|
||||
moonshot: applyMoonshotNativeStreamingUsageCompat,
|
||||
modelstudio: applyModelStudioNativeStreamingUsageCompat,
|
||||
};
|
||||
|
||||
const PROVIDER_CONFIG_API_KEY_RESOLVERS: Partial<
|
||||
Record<string, (env: NodeJS.ProcessEnv) => string | undefined>
|
||||
> = {
|
||||
"amazon-bedrock": resolveBedrockConfigApiKey,
|
||||
"anthropic-vertex": resolveAnthropicVertexConfigApiKey,
|
||||
};
|
||||
|
||||
export function applyNativeStreamingUsageCompat(
|
||||
providers: Record<string, ProviderConfig>,
|
||||
): Record<string, ProviderConfig> {
|
||||
let changed = false;
|
||||
const nextProviders: Record<string, ProviderConfig> = {};
|
||||
|
||||
for (const [providerKey, provider] of Object.entries(providers)) {
|
||||
const nextProvider = NATIVE_STREAMING_USAGE_COMPAT[providerKey]?.(provider) ?? provider;
|
||||
nextProviders[providerKey] = nextProvider;
|
||||
changed ||= nextProvider !== provider;
|
||||
}
|
||||
|
||||
return changed ? nextProviders : providers;
|
||||
}
|
||||
|
||||
export function normalizeProviderSpecificConfig(
|
||||
providerKey: string,
|
||||
provider: ProviderConfig,
|
||||
): ProviderConfig {
|
||||
if (shouldNormalizeGoogleProviderConfig(providerKey, provider)) {
|
||||
return normalizeGoogleProviderConfig(providerKey, provider);
|
||||
}
|
||||
return provider;
|
||||
}
|
||||
|
||||
export function resolveProviderConfigApiKeyResolver(
|
||||
providerKey: string,
|
||||
): ((env: NodeJS.ProcessEnv) => string | undefined) | undefined {
|
||||
return PROVIDER_CONFIG_API_KEY_RESOLVERS[providerKey];
|
||||
}
|
||||
|
|
@ -1,15 +1,11 @@
|
|||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { resolveBedrockConfigApiKey } from "../plugin-sdk/amazon-bedrock.js";
|
||||
import { resolveAnthropicVertexConfigApiKey } from "../plugin-sdk/anthropic-vertex.js";
|
||||
import {
|
||||
normalizeGoogleProviderConfig,
|
||||
shouldNormalizeGoogleProviderConfig,
|
||||
} from "../plugin-sdk/google.js";
|
||||
import { applyModelStudioNativeStreamingUsageCompat } from "../plugin-sdk/modelstudio.js";
|
||||
import { applyMoonshotNativeStreamingUsageCompat } from "../plugin-sdk/moonshot.js";
|
||||
import { ensureAuthProfileStore } from "./auth-profiles.js";
|
||||
export * from "./models-config.providers.static.js";
|
||||
export { resolveImplicitProviders } from "./models-config.providers.implicit.js";
|
||||
import {
|
||||
normalizeProviderSpecificConfig,
|
||||
resolveProviderConfigApiKeyResolver,
|
||||
} from "./models-config.providers.policy.js";
|
||||
import type { ProviderConfig, SecretDefaults } from "./models-config.providers.secrets.js";
|
||||
import {
|
||||
normalizeConfiguredProviderApiKey,
|
||||
|
|
@ -27,50 +23,13 @@ export type {
|
|||
SecretDefaults,
|
||||
} from "./models-config.providers.secrets.js";
|
||||
export { enforceSourceManagedProviderSecrets };
|
||||
export { applyNativeStreamingUsageCompat } from "./models-config.providers.policy.js";
|
||||
export { resolveOllamaApiBase } from "../plugin-sdk/ollama-surface.js";
|
||||
export { normalizeGoogleModelId } from "../plugin-sdk/google.js";
|
||||
export { normalizeXaiModelId } from "../plugin-sdk/xai.js";
|
||||
|
||||
type ModelsConfig = NonNullable<OpenClawConfig["models"]>;
|
||||
|
||||
const NATIVE_STREAMING_USAGE_COMPAT: Record<string, (provider: ProviderConfig) => ProviderConfig> =
|
||||
{
|
||||
moonshot: applyMoonshotNativeStreamingUsageCompat,
|
||||
modelstudio: applyModelStudioNativeStreamingUsageCompat,
|
||||
};
|
||||
|
||||
const PROVIDER_CONFIG_API_KEY_RESOLVERS: Partial<
|
||||
Record<string, (env: NodeJS.ProcessEnv) => string | undefined>
|
||||
> = {
|
||||
"amazon-bedrock": resolveBedrockConfigApiKey,
|
||||
"anthropic-vertex": resolveAnthropicVertexConfigApiKey,
|
||||
};
|
||||
|
||||
export function applyNativeStreamingUsageCompat(
|
||||
providers: Record<string, ProviderConfig>,
|
||||
): Record<string, ProviderConfig> {
|
||||
let changed = false;
|
||||
const nextProviders: Record<string, ProviderConfig> = {};
|
||||
|
||||
for (const [providerKey, provider] of Object.entries(providers)) {
|
||||
const nextProvider = NATIVE_STREAMING_USAGE_COMPAT[providerKey]?.(provider) ?? provider;
|
||||
nextProviders[providerKey] = nextProvider;
|
||||
changed ||= nextProvider !== provider;
|
||||
}
|
||||
|
||||
return changed ? nextProviders : providers;
|
||||
}
|
||||
|
||||
function normalizeProviderSpecificConfig(
|
||||
providerKey: string,
|
||||
provider: ProviderConfig,
|
||||
): ProviderConfig {
|
||||
if (shouldNormalizeGoogleProviderConfig(providerKey, provider)) {
|
||||
return normalizeGoogleProviderConfig(providerKey, provider);
|
||||
}
|
||||
return provider;
|
||||
}
|
||||
|
||||
export function normalizeProviders(params: {
|
||||
providers: ModelsConfig["providers"];
|
||||
agentDir: string;
|
||||
|
|
@ -147,7 +106,7 @@ export function normalizeProviders(params: {
|
|||
env,
|
||||
profileApiKey,
|
||||
secretRefManagedProviders: params.secretRefManagedProviders,
|
||||
providerApiKeyResolver: PROVIDER_CONFIG_API_KEY_RESOLVERS[normalizedKey],
|
||||
providerApiKeyResolver: resolveProviderConfigApiKeyResolver(normalizedKey),
|
||||
});
|
||||
if (providerWithApiKey !== normalizedProvider) {
|
||||
mutated = true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue