Files
openclaw/packages/agent-core/src/reasoning.ts
Vortex Openclaw 1f6ddb5df0 feat(models): add Claude Sonnet 5 support (#98254)
* 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>
2026-07-07 00:05:35 +01:00

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;
}