mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-19 01:41:34 +00:00
* feat(models): add Claude Sonnet 5 support Co-authored-by: Ariel Bravy <ariel@vortexradar.com> * fix(models): align Sonnet 5 validation baselines * fix(models): satisfy Sonnet 5 CI contracts * fix(models): enforce Sonnet 5 provider contracts * docs(changelog): defer Sonnet 5 release note --------- Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Ariel Bravy <ariel@vortexradar.com>
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import {
|
|
resolveClaudeFable5ModelIdentity,
|
|
resolveClaudeSonnet5ModelIdentity,
|
|
type Model,
|
|
type SimpleStreamOptions,
|
|
} from "../../llm-core/src/index.js";
|
|
import type { ThinkingLevel } from "./types.js";
|
|
|
|
type EnabledThinkingLevel = Exclude<NonNullable<SimpleStreamOptions["reasoning"]>, "off">;
|
|
|
|
const ENABLED_THINKING_LEVELS = new Set<EnabledThinkingLevel>([
|
|
"minimal",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
"max",
|
|
]);
|
|
|
|
function isEnabledThinkingLevel(value: unknown): value is EnabledThinkingLevel {
|
|
return ENABLED_THINKING_LEVELS.has(value as EnabledThinkingLevel);
|
|
}
|
|
|
|
export function resolveAgentReasoningOption(
|
|
model: Model,
|
|
thinkingLevel: ThinkingLevel,
|
|
): SimpleStreamOptions["reasoning"] {
|
|
if (thinkingLevel !== "off") {
|
|
return thinkingLevel;
|
|
}
|
|
const offFallback =
|
|
model.thinkingLevelMap?.off ??
|
|
((model.api === "anthropic-messages" || model.api === "bedrock-converse-stream") &&
|
|
resolveClaudeFable5ModelIdentity(model)
|
|
? "low"
|
|
: undefined);
|
|
if (isEnabledThinkingLevel(offFallback)) {
|
|
return offFallback;
|
|
}
|
|
return model.api === "anthropic-messages" && resolveClaudeSonnet5ModelIdentity(model)
|
|
? "off"
|
|
: undefined;
|
|
}
|