File size: 2,799 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 72 73 74 75 76 | 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 { materializePreparedRuntimeModel } from "./materialize-model.js";
describe("Arcee OpenRouter profile materialization", () => {
it("retains the selected default while materializing its vendor wire id", async () => {
const plugin = await loadBundledPluginFacade<{
default: Parameters<typeof registerSingleProviderPlugin>[0];
}>({ pluginId: "arcee", artifactBasename: "index.js" });
const provider = await registerSingleProviderPlugin(plugin.default);
const model: ProviderRuntimeModel = {
provider: "arcee",
id: "trinity-large-thinking",
name: "Trinity Large Thinking",
api: "openai-completions",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 262144,
maxTokens: 32768,
};
const materialized = await materializePreparedRuntimeModel({
provider: "arcee",
modelId: "trinity-large-thinking",
model,
config: {},
forceResolve: true,
plan: {
providerForAuth: "openrouter",
authProfileProviderForAuth: "openrouter",
selectedAuthMode: "api-key",
forwardedAuthProfileId: "openrouter:default",
},
resolveModel: async (request) => {
expect(request.authProfileId).toBe("openrouter:default");
return {
model: provider.normalizeResolvedModel?.({ provider: "arcee", modelId: model.id, model }),
};
},
});
expect(materialized).toMatchObject({
provider: "arcee",
id: "arcee-ai/trinity-large-thinking",
baseUrl: "https://openrouter.ai/api/v1",
});
});
it("still rejects another model after credential selection", async () => {
await expect(
materializePreparedRuntimeModel({
provider: "arcee",
modelId: "trinity-large-thinking",
config: {},
forceResolve: true,
plan: {
providerForAuth: "openrouter",
authProfileProviderForAuth: "openrouter",
selectedAuthMode: "api-key",
forwardedAuthProfileId: "openrouter:default",
},
resolveModel: async () => ({
model: {
provider: "arcee",
id: "arcee-ai/trinity-large-preview",
api: "openai-completions",
baseUrl: "https://openrouter.ai/api/v1",
},
}),
}),
).rejects.toThrow("Unable to rematerialize");
});
});
|