mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 11:20:43 +00:00
fix(clawsweeper): address review for automerge-openclaw-openclaw-73388 (2)
This commit is contained in:
@@ -295,34 +295,66 @@ describe("arcee provider plugin", () => {
|
||||
],
|
||||
});
|
||||
|
||||
const trinityRuntimeModel = {
|
||||
name: "Trinity Large Thinking",
|
||||
api: "openai-completions",
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
contextWindow: 262144,
|
||||
maxTokens: 80000,
|
||||
cost: {
|
||||
input: 0.25,
|
||||
output: 0.9,
|
||||
cacheRead: 0.25,
|
||||
cacheWrite: 0.25,
|
||||
},
|
||||
compat: {
|
||||
supportsReasoningEffort: false,
|
||||
},
|
||||
};
|
||||
|
||||
const trinityCompat = {
|
||||
supportsReasoningEffort: false,
|
||||
supportsTools: false,
|
||||
};
|
||||
|
||||
expect(
|
||||
provider.contributeResolvedModelCompat?.({
|
||||
provider: "arcee",
|
||||
modelId: "arcee/trinity-large-thinking",
|
||||
model: {
|
||||
...trinityRuntimeModel,
|
||||
provider: "arcee",
|
||||
id: "arcee/trinity-large-thinking",
|
||||
name: "Trinity Large Thinking",
|
||||
api: "openai-completions",
|
||||
baseUrl: "https://openrouter.ai/api/v1",
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
contextWindow: 262144,
|
||||
maxTokens: 80000,
|
||||
cost: {
|
||||
input: 0.25,
|
||||
output: 0.9,
|
||||
cacheRead: 0.25,
|
||||
cacheWrite: 0.25,
|
||||
},
|
||||
compat: {
|
||||
supportsReasoningEffort: false,
|
||||
},
|
||||
},
|
||||
} as never),
|
||||
).toEqual({
|
||||
supportsReasoningEffort: false,
|
||||
supportsTools: false,
|
||||
});
|
||||
).toEqual(trinityCompat);
|
||||
|
||||
expect(
|
||||
provider.contributeResolvedModelCompat?.({
|
||||
provider: "arcee",
|
||||
modelId: "trinity-large-thinking",
|
||||
model: {
|
||||
...trinityRuntimeModel,
|
||||
provider: "arcee",
|
||||
id: "trinity-large-thinking",
|
||||
baseUrl: "https://api.arcee.ai/api/v1",
|
||||
},
|
||||
} as never),
|
||||
).toEqual(trinityCompat);
|
||||
|
||||
expect(
|
||||
provider.contributeResolvedModelCompat?.({
|
||||
provider: "openrouter",
|
||||
modelId: "trinity-large-thinking",
|
||||
model: {
|
||||
...trinityRuntimeModel,
|
||||
provider: "openrouter",
|
||||
id: "trinity-large-thinking",
|
||||
baseUrl: "https://openrouter.ai/api/v1",
|
||||
},
|
||||
} as never),
|
||||
).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
import { OPENAI_COMPATIBLE_REPLAY_HOOKS } from "openclaw/plugin-sdk/provider-model-shared";
|
||||
import {
|
||||
ARCEE_TRINITY_LARGE_THINKING_COMPAT,
|
||||
isArceeTrinityLargeThinkingModelId,
|
||||
shouldContributeArceeTrinityLargeThinkingCompat,
|
||||
} from "./models.js";
|
||||
import {
|
||||
applyArceeConfig,
|
||||
@@ -127,8 +127,8 @@ export default definePluginEntry({
|
||||
}),
|
||||
normalizeConfig: ({ providerConfig }) => normalizeArceeProviderConfig(providerConfig),
|
||||
normalizeResolvedModel: ({ model }) => normalizeArceeResolvedModel(model),
|
||||
contributeResolvedModelCompat: ({ modelId, model }) =>
|
||||
isArceeTrinityLargeThinkingModelId(model.id) || isArceeTrinityLargeThinkingModelId(modelId)
|
||||
contributeResolvedModelCompat: (ctx) =>
|
||||
shouldContributeArceeTrinityLargeThinkingCompat(ctx)
|
||||
? ARCEE_TRINITY_LARGE_THINKING_COMPAT
|
||||
: undefined,
|
||||
normalizeTransport: ({ api, baseUrl }) => {
|
||||
|
||||
@@ -9,9 +9,49 @@ export const ARCEE_TRINITY_LARGE_THINKING_COMPAT = {
|
||||
supportsTools: false,
|
||||
} as const satisfies ModelCompatConfig;
|
||||
|
||||
const ARCEE_PROVIDER_ID = "arcee";
|
||||
const ARCEE_TRINITY_LARGE_THINKING_ID = "trinity-large-thinking";
|
||||
const ARCEE_TRINITY_LARGE_THINKING_REF = `${ARCEE_PROVIDER_ID}/${ARCEE_TRINITY_LARGE_THINKING_ID}`;
|
||||
|
||||
function normalizeModelId(modelId: string): string {
|
||||
return modelId.trim().toLowerCase();
|
||||
}
|
||||
|
||||
function normalizeBaseUrl(baseUrl: unknown): string {
|
||||
return typeof baseUrl === "string" ? baseUrl.trim().replace(/\/+$/, "") : "";
|
||||
}
|
||||
|
||||
export function isArceeTrinityLargeThinkingModelId(modelId: string): boolean {
|
||||
const normalized = modelId.trim().toLowerCase();
|
||||
return normalized === "trinity-large-thinking" || normalized === "arcee/trinity-large-thinking";
|
||||
const normalized = normalizeModelId(modelId);
|
||||
return (
|
||||
normalized === ARCEE_TRINITY_LARGE_THINKING_ID ||
|
||||
normalized === ARCEE_TRINITY_LARGE_THINKING_REF
|
||||
);
|
||||
}
|
||||
|
||||
export function shouldContributeArceeTrinityLargeThinkingCompat(params: {
|
||||
provider?: unknown;
|
||||
modelId: string;
|
||||
model: { id: string; provider?: unknown; baseUrl?: unknown };
|
||||
}): boolean {
|
||||
const modelId = normalizeModelId(params.modelId);
|
||||
const resolvedId = normalizeModelId(params.model.id);
|
||||
if (
|
||||
modelId === ARCEE_TRINITY_LARGE_THINKING_REF ||
|
||||
resolvedId === ARCEE_TRINITY_LARGE_THINKING_REF
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
modelId !== ARCEE_TRINITY_LARGE_THINKING_ID &&
|
||||
resolvedId !== ARCEE_TRINITY_LARGE_THINKING_ID
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
if (params.provider === ARCEE_PROVIDER_ID || params.model.provider === ARCEE_PROVIDER_ID) {
|
||||
return true;
|
||||
}
|
||||
return normalizeBaseUrl(params.model.baseUrl) === normalizeBaseUrl(ARCEE_BASE_URL);
|
||||
}
|
||||
|
||||
export const ARCEE_MODEL_CATALOG: ModelDefinitionConfig[] = [
|
||||
|
||||
Reference in New Issue
Block a user