mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 11:17:40 +00:00
refactor(agents): dedupe anthropic 4.6 forward-compat resolver
This commit is contained in:
@@ -104,11 +104,17 @@ function resolveOpenAICodexGpt53FallbackModel(
|
|||||||
} as Model<Api>);
|
} as Model<Api>);
|
||||||
}
|
}
|
||||||
|
|
||||||
function resolveAnthropicOpus46ForwardCompatModel(
|
function resolveAnthropic46ForwardCompatModel(params: {
|
||||||
provider: string,
|
provider: string;
|
||||||
modelId: string,
|
modelId: string;
|
||||||
modelRegistry: ModelRegistry,
|
modelRegistry: ModelRegistry;
|
||||||
): Model<Api> | undefined {
|
dashModelId: string;
|
||||||
|
dotModelId: string;
|
||||||
|
dashTemplateId: string;
|
||||||
|
dotTemplateId: string;
|
||||||
|
fallbackTemplateIds: readonly string[];
|
||||||
|
}): Model<Api> | undefined {
|
||||||
|
const { provider, modelId, modelRegistry, dashModelId, dotModelId } = params;
|
||||||
const normalizedProvider = normalizeProviderId(provider);
|
const normalizedProvider = normalizeProviderId(provider);
|
||||||
if (normalizedProvider !== "anthropic") {
|
if (normalizedProvider !== "anthropic") {
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -116,23 +122,23 @@ function resolveAnthropicOpus46ForwardCompatModel(
|
|||||||
|
|
||||||
const trimmedModelId = modelId.trim();
|
const trimmedModelId = modelId.trim();
|
||||||
const lower = trimmedModelId.toLowerCase();
|
const lower = trimmedModelId.toLowerCase();
|
||||||
const isOpus46 =
|
const is46Model =
|
||||||
lower === ANTHROPIC_OPUS_46_MODEL_ID ||
|
lower === dashModelId ||
|
||||||
lower === ANTHROPIC_OPUS_46_DOT_MODEL_ID ||
|
lower === dotModelId ||
|
||||||
lower.startsWith(`${ANTHROPIC_OPUS_46_MODEL_ID}-`) ||
|
lower.startsWith(`${dashModelId}-`) ||
|
||||||
lower.startsWith(`${ANTHROPIC_OPUS_46_DOT_MODEL_ID}-`);
|
lower.startsWith(`${dotModelId}-`);
|
||||||
if (!isOpus46) {
|
if (!is46Model) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const templateIds: string[] = [];
|
const templateIds: string[] = [];
|
||||||
if (lower.startsWith(ANTHROPIC_OPUS_46_MODEL_ID)) {
|
if (lower.startsWith(dashModelId)) {
|
||||||
templateIds.push(lower.replace(ANTHROPIC_OPUS_46_MODEL_ID, "claude-opus-4-5"));
|
templateIds.push(lower.replace(dashModelId, params.dashTemplateId));
|
||||||
}
|
}
|
||||||
if (lower.startsWith(ANTHROPIC_OPUS_46_DOT_MODEL_ID)) {
|
if (lower.startsWith(dotModelId)) {
|
||||||
templateIds.push(lower.replace(ANTHROPIC_OPUS_46_DOT_MODEL_ID, "claude-opus-4.5"));
|
templateIds.push(lower.replace(dotModelId, params.dotTemplateId));
|
||||||
}
|
}
|
||||||
templateIds.push(...ANTHROPIC_OPUS_TEMPLATE_MODEL_IDS);
|
templateIds.push(...params.fallbackTemplateIds);
|
||||||
|
|
||||||
return cloneFirstTemplateModel({
|
return cloneFirstTemplateModel({
|
||||||
normalizedProvider,
|
normalizedProvider,
|
||||||
@@ -142,41 +148,37 @@ function resolveAnthropicOpus46ForwardCompatModel(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resolveAnthropicOpus46ForwardCompatModel(
|
||||||
|
provider: string,
|
||||||
|
modelId: string,
|
||||||
|
modelRegistry: ModelRegistry,
|
||||||
|
): Model<Api> | undefined {
|
||||||
|
return resolveAnthropic46ForwardCompatModel({
|
||||||
|
provider,
|
||||||
|
modelId,
|
||||||
|
modelRegistry,
|
||||||
|
dashModelId: ANTHROPIC_OPUS_46_MODEL_ID,
|
||||||
|
dotModelId: ANTHROPIC_OPUS_46_DOT_MODEL_ID,
|
||||||
|
dashTemplateId: "claude-opus-4-5",
|
||||||
|
dotTemplateId: "claude-opus-4.5",
|
||||||
|
fallbackTemplateIds: ANTHROPIC_OPUS_TEMPLATE_MODEL_IDS,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function resolveAnthropicSonnet46ForwardCompatModel(
|
function resolveAnthropicSonnet46ForwardCompatModel(
|
||||||
provider: string,
|
provider: string,
|
||||||
modelId: string,
|
modelId: string,
|
||||||
modelRegistry: ModelRegistry,
|
modelRegistry: ModelRegistry,
|
||||||
): Model<Api> | undefined {
|
): Model<Api> | undefined {
|
||||||
const normalizedProvider = normalizeProviderId(provider);
|
return resolveAnthropic46ForwardCompatModel({
|
||||||
if (normalizedProvider !== "anthropic") {
|
provider,
|
||||||
return undefined;
|
modelId,
|
||||||
}
|
|
||||||
|
|
||||||
const trimmedModelId = modelId.trim();
|
|
||||||
const lower = trimmedModelId.toLowerCase();
|
|
||||||
const isSonnet46 =
|
|
||||||
lower === ANTHROPIC_SONNET_46_MODEL_ID ||
|
|
||||||
lower === ANTHROPIC_SONNET_46_DOT_MODEL_ID ||
|
|
||||||
lower.startsWith(`${ANTHROPIC_SONNET_46_MODEL_ID}-`) ||
|
|
||||||
lower.startsWith(`${ANTHROPIC_SONNET_46_DOT_MODEL_ID}-`);
|
|
||||||
if (!isSonnet46) {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
const templateIds: string[] = [];
|
|
||||||
if (lower.startsWith(ANTHROPIC_SONNET_46_MODEL_ID)) {
|
|
||||||
templateIds.push(lower.replace(ANTHROPIC_SONNET_46_MODEL_ID, "claude-sonnet-4-5"));
|
|
||||||
}
|
|
||||||
if (lower.startsWith(ANTHROPIC_SONNET_46_DOT_MODEL_ID)) {
|
|
||||||
templateIds.push(lower.replace(ANTHROPIC_SONNET_46_DOT_MODEL_ID, "claude-sonnet-4.5"));
|
|
||||||
}
|
|
||||||
templateIds.push(...ANTHROPIC_SONNET_TEMPLATE_MODEL_IDS);
|
|
||||||
|
|
||||||
return cloneFirstTemplateModel({
|
|
||||||
normalizedProvider,
|
|
||||||
trimmedModelId,
|
|
||||||
templateIds,
|
|
||||||
modelRegistry,
|
modelRegistry,
|
||||||
|
dashModelId: ANTHROPIC_SONNET_46_MODEL_ID,
|
||||||
|
dotModelId: ANTHROPIC_SONNET_46_DOT_MODEL_ID,
|
||||||
|
dashTemplateId: "claude-sonnet-4-5",
|
||||||
|
dotTemplateId: "claude-sonnet-4.5",
|
||||||
|
fallbackTemplateIds: ANTHROPIC_SONNET_TEMPLATE_MODEL_IDS,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user