mirror of https://github.com/openclaw/openclaw.git
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import type { ProviderPlugin } from "../../src/plugins/types.js";
|
|
import openAICodexPlugin from "./index.js";
|
|
|
|
function registerProvider(): ProviderPlugin {
|
|
let provider: ProviderPlugin | undefined;
|
|
openAICodexPlugin.register({
|
|
registerProvider(nextProvider: ProviderPlugin) {
|
|
provider = nextProvider;
|
|
},
|
|
} as never);
|
|
if (!provider) {
|
|
throw new Error("provider registration missing");
|
|
}
|
|
return provider;
|
|
}
|
|
|
|
describe("openai-codex plugin", () => {
|
|
it("owns forward-compat codex models", () => {
|
|
const provider = registerProvider();
|
|
const model = provider.resolveDynamicModel?.({
|
|
provider: "openai-codex",
|
|
modelId: "gpt-5.4",
|
|
modelRegistry: {
|
|
find: (_provider: string, id: string) =>
|
|
id === "gpt-5.2-codex"
|
|
? {
|
|
id,
|
|
name: id,
|
|
api: "openai-codex-responses",
|
|
provider: "openai-codex",
|
|
baseUrl: "https://chatgpt.com/backend-api",
|
|
reasoning: true,
|
|
input: ["text"],
|
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 200_000,
|
|
maxTokens: 8_192,
|
|
}
|
|
: null,
|
|
} as never,
|
|
});
|
|
|
|
expect(model).toMatchObject({
|
|
id: "gpt-5.4",
|
|
provider: "openai-codex",
|
|
api: "openai-codex-responses",
|
|
contextWindow: 1_050_000,
|
|
maxTokens: 128_000,
|
|
});
|
|
});
|
|
|
|
it("owns codex transport defaults", () => {
|
|
const provider = registerProvider();
|
|
expect(
|
|
provider.prepareExtraParams?.({
|
|
provider: "openai-codex",
|
|
modelId: "gpt-5.4",
|
|
extraParams: { temperature: 0.2 },
|
|
}),
|
|
).toEqual({
|
|
temperature: 0.2,
|
|
transport: "auto",
|
|
});
|
|
});
|
|
});
|