import {
resolveAgentModelFallbackValues,
resolveAgentModelPrimaryValue,
} from
"openclaw/plugin-sdk/provider-onboard" ;
import { describe, expect, it } from
"vitest" ;
import {
createConfigWithFallbacks,
createLegacyProviderConfig,
EXPECTED_FALLBACKS,
} from
"../../test/helpers/plugins/onboard-config.js" ;
import { applyXaiConfig, applyXaiProviderConfig, XAI_DEFAULT_MODEL_REF } from
"./onboard.js" ;
describe(
"xai onboard" , () => {
it(
"adds xAI provider with correct settings" , () => {
const cfg = applyXaiConfig({});
expect(cfg.models?.providers?.xai).toMatchObject({
baseUrl:
"https://api.x.ai/v1 ",
api:
"openai-responses" ,
});
expect(resolveAgentModelPrimaryValue(cfg.agents?.defaults?.model)).toBe(XAI_DEFA
ULT_MODEL_REF);
});
it("merges xAI models and keeps existing provider overrides" , () => {
const cfg = applyXaiProviderConfig(
createLegacyProviderConfig({
providerId: "xai" ,
api: "anthropic-messages" ,
modelId: "custom-model" ,
modelName: "Custom" ,
}),
);
expect(cfg.models?.providers?.xai?.baseUrl).toBe("https://api.x.ai/v1 ");
expect(cfg.models?.providers?.xai?.api).toBe("openai-responses" );
expect(cfg.models?.providers?.xai?.apiKey).toBe("old-key" );
expect(cfg.models?.providers?.xai?.models.map((m) => m.id)).toEqual(
expect.arrayContaining([
"custom-model" ,
"grok-4" ,
"grok-4-1-fast" ,
"grok-4.20-beta-latest-reasoning" ,
"grok-code-fast-1" ,
]),
);
});
it("adds expected alias for the default model" , () => {
const cfg = applyXaiProviderConfig({});
expect(cfg.agents?.defaults?.models?.[XAI_DEFAULT_MODEL_REF]?.alias).toBe("Grok" );
});
it("preserves existing model fallbacks" , () => {
const cfg = applyXaiConfig(createConfigWithFallbacks());
expect(resolveAgentModelFallbackValues(cfg.agents?.defaults?.model)).toEqual([
...EXPECTED_FALLBACKS,
]);
});
});
Messung V0.5 in Prozent C=99 H=99 G=98
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland