File size: 2,807 Bytes
e249c6d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import { describe, expect, it } from "vitest";
import { registerSingleProviderPlugin } from "../../plugin-sdk/plugin-test-runtime.js";
import type { ProviderRuntimeModel } from "../../plugins/provider-runtime-model.types.js";
import { loadBundledPluginFacade } from "../../test-utils/bundled-plugin-public-surface.js";
import type { StreamFn } from "../runtime/index.js";
import { materializePreparedRuntimeModel } from "./materialize-model.js";
describe("xAI OAuth runtime materialization", () => {
it("retains the selected concrete model through auth resolution and transport", async () => {
const plugin = await loadBundledPluginFacade<{
default: Parameters<typeof registerSingleProviderPlugin>[0];
}>({ pluginId: "xai", artifactBasename: "index.js" });
const provider = await registerSingleProviderPlugin(plugin.default);
const model: ProviderRuntimeModel = {
provider: "xai",
id: "grok-4.6",
name: "Grok 4.6",
api: "openai-responses",
baseUrl: "https://cli-chat-proxy.grok.com/v1",
params: { canonicalModelId: "grok-fixture-unselected" },
reasoning: true,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 500_000,
maxTokens: 64_000,
};
const materialized = await materializePreparedRuntimeModel({
provider: "xai",
modelId: "grok-4.6",
model,
config: {},
plan: {
providerForAuth: "xai",
authProfileProviderForAuth: "xai",
selectedAuthMode: "oauth",
forwardedAuthProfileId: "xai:fixture",
},
forceResolve: true,
resolveModel: async (request) => {
expect(request.authProfileId).toBe("xai:fixture");
expect(request.authProfileMode).toBe("oauth");
return {
model: provider.normalizeResolvedModel?.({ provider: "xai", modelId: "grok-4.6", model }),
};
},
});
expect(materialized?.id).toBe("grok-4.6");
expect(materialized?.thinkingLevelMap?.xhigh).toBe("xhigh");
let wireModelId: string | undefined;
let wireHeaders: Record<string, string> | undefined;
const streamFn: StreamFn = (wireModel, _context, options) => {
wireModelId = wireModel.id;
wireHeaders = options?.headers;
return {} as ReturnType<StreamFn>;
};
const wrapped = provider.wrapStreamFn?.({
provider: "xai",
modelId: "grok-4.6",
model: materialized,
streamFn,
extraParams: { tool_stream: false },
});
if (!materialized || !wrapped) {
throw new Error("expected materialized subscription stream");
}
await wrapped(materialized, { messages: [] }, {});
expect(wireModelId).toBe("grok-4.6");
expect(wireHeaders?.["x-grok-model-override"]).toBe(wireModelId);
});
});
|