


























@@ -1,3 +1,4 @@
1+// Thinking/reasoning level catalog helpers for auto-reply model controls.
12import { normalizeProviderId } from "@openclaw/model-catalog-core/provider-id";
23import {
34BASE_THINKING_LEVELS,
@@ -43,6 +44,7 @@ import {
4344} from "../plugins/provider-thinking.js";
4445import type { ProviderThinkingProfile } from "../plugins/provider-thinking.types.js";
454647+/** UI-facing thinking level option. */
4648export type ThinkingLevelOption = {
4749id: ThinkLevel;
4850label: string;
@@ -172,6 +174,7 @@ function appendProfileLevel(profile: ResolvedThinkingProfile, id: ThinkLevel) {
172174profile.levels = profile.levels.toSorted((a, b) => a.rank - b.rank);
173175}
174176177+/** Resolve supported thinking levels and default for a provider/model pair. */
175178export function resolveThinkingProfile(params: {
176179provider?: string | null;
177180model?: string | null;
@@ -238,6 +241,7 @@ export function resolveThinkingProfile(params: {
238241return profile;
239242}
240243244+/** Return whether provider/model exposes only off/on thinking controls. */
241245export function isBinaryThinkingProvider(provider?: string | null, model?: string | null): boolean {
242246const profile = resolveThinkingProfile({ provider, model });
243247return profile.levels.length === 2 && profile.levels.some((level) => level.label === "on");
@@ -254,10 +258,12 @@ function supportsThinkingLevel(
254258);
255259}
256260261+/** Return whether provider/model supports the xhigh thinking level. */
257262export function supportsXHighThinking(provider?: string | null, model?: string | null): boolean {
258263return supportsThinkingLevel(provider, model, "xhigh");
259264}
260265266+/** List thinking level ids supported by provider/model. */
261267export function listThinkingLevels(
262268provider?: string | null,
263269model?: string | null,
@@ -267,6 +273,7 @@ export function listThinkingLevels(
267273return profile.levels.map((level) => level.id);
268274}
269275276+/** List labeled thinking level options supported by provider/model. */
270277export function listThinkingLevelOptions(
271278provider?: string | null,
272279model?: string | null,
@@ -276,6 +283,7 @@ export function listThinkingLevelOptions(
276283return profile.levels.map(({ id, label }) => ({ id, label }));
277284}
278285286+/** List display labels for thinking levels supported by provider/model. */
279287export function listThinkingLevelLabels(
280288provider?: string | null,
281289model?: string | null,
@@ -284,6 +292,7 @@ export function listThinkingLevelLabels(
284292return listThinkingLevelOptions(provider, model, catalog).map((level) => level.label);
285293}
286294295+/** Format supported thinking level labels for command/status output. */
287296export function formatThinkingLevels(
288297provider?: string | null,
289298model?: string | null,
@@ -294,6 +303,7 @@ export function formatThinkingLevels(
294303return profile.levels.map(({ label }) => label).join(separator);
295304}
296305306+/** Resolve the default thinking level for a provider/model pair. */
297307export function resolveThinkingDefaultForModel(params: {
298308provider: string;
299309model: string;
@@ -314,6 +324,7 @@ export function resolveThinkingDefaultForModel(params: {
314324return resolveSupportedThinkingLevelFromProfile(profile, "medium");
315325}
316326327+/** Resolve the highest non-off thinking level supported by provider/model. */
317328export function resolveLargestSupportedThinkingLevel(
318329provider?: string | null,
319330model?: string | null,
@@ -331,6 +342,7 @@ export function resolveLargestSupportedThinkingLevel(
331342return bestLevel?.id ?? "off";
332343}
333344345+/** Return whether a specific thinking level is supported by provider/model. */
334346export function isThinkingLevelSupported(params: {
335347provider?: string | null;
336348model?: string | null;
@@ -356,6 +368,7 @@ function resolveSupportedThinkingLevelFromProfile(
356368);
357369}
358370371+/** Clamp a requested thinking level to the closest supported provider/model level. */
359372export function resolveSupportedThinkingLevel(params: {
360373provider?: string | null;
361374model?: string | null;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。