mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-17 07:03:25 +00:00
fix codex context window and add a few tests
This commit is contained in:
parent
8a6384a925
commit
f8d731a134
4 changed files with 90 additions and 11 deletions
|
|
@ -2287,6 +2287,23 @@ export const MODELS = {
|
||||||
contextWindow: 128000,
|
contextWindow: 128000,
|
||||||
maxTokens: 32000,
|
maxTokens: 32000,
|
||||||
} satisfies Model<"azure-openai-responses">,
|
} satisfies Model<"azure-openai-responses">,
|
||||||
|
"gpt-5.4": {
|
||||||
|
id: "gpt-5.4",
|
||||||
|
name: "GPT-5.4",
|
||||||
|
api: "azure-openai-responses",
|
||||||
|
provider: "azure-openai-responses",
|
||||||
|
baseUrl: "",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text", "image"],
|
||||||
|
cost: {
|
||||||
|
input: 2.5,
|
||||||
|
output: 15,
|
||||||
|
cacheRead: 0.25,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 272000,
|
||||||
|
maxTokens: 128000,
|
||||||
|
} satisfies Model<"azure-openai-responses">,
|
||||||
"o1": {
|
"o1": {
|
||||||
id: "o1",
|
id: "o1",
|
||||||
name: "o1",
|
name: "o1",
|
||||||
|
|
@ -5420,6 +5437,23 @@ export const MODELS = {
|
||||||
contextWindow: 128000,
|
contextWindow: 128000,
|
||||||
maxTokens: 32000,
|
maxTokens: 32000,
|
||||||
} satisfies Model<"openai-responses">,
|
} satisfies Model<"openai-responses">,
|
||||||
|
"gpt-5.4": {
|
||||||
|
id: "gpt-5.4",
|
||||||
|
name: "GPT-5.4",
|
||||||
|
api: "openai-responses",
|
||||||
|
provider: "openai",
|
||||||
|
baseUrl: "https://api.openai.com/v1",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text", "image"],
|
||||||
|
cost: {
|
||||||
|
input: 2.5,
|
||||||
|
output: 15,
|
||||||
|
cacheRead: 0.25,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 272000,
|
||||||
|
maxTokens: 128000,
|
||||||
|
} satisfies Model<"openai-responses">,
|
||||||
"o1": {
|
"o1": {
|
||||||
id: "o1",
|
id: "o1",
|
||||||
name: "o1",
|
name: "o1",
|
||||||
|
|
@ -5677,6 +5711,23 @@ export const MODELS = {
|
||||||
contextWindow: 128000,
|
contextWindow: 128000,
|
||||||
maxTokens: 128000,
|
maxTokens: 128000,
|
||||||
} satisfies Model<"openai-codex-responses">,
|
} satisfies Model<"openai-codex-responses">,
|
||||||
|
"gpt-5.4": {
|
||||||
|
id: "gpt-5.4",
|
||||||
|
name: "GPT-5.4",
|
||||||
|
api: "openai-codex-responses",
|
||||||
|
provider: "openai-codex",
|
||||||
|
baseUrl: "https://chatgpt.com/backend-api",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text", "image"],
|
||||||
|
cost: {
|
||||||
|
input: 2.5,
|
||||||
|
output: 15,
|
||||||
|
cacheRead: 0.25,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 272000,
|
||||||
|
maxTokens: 128000,
|
||||||
|
} satisfies Model<"openai-codex-responses">,
|
||||||
},
|
},
|
||||||
"opencode": {
|
"opencode": {
|
||||||
"big-pickle": {
|
"big-pickle": {
|
||||||
|
|
@ -6104,6 +6155,23 @@ export const MODELS = {
|
||||||
contextWindow: 400000,
|
contextWindow: 400000,
|
||||||
maxTokens: 128000,
|
maxTokens: 128000,
|
||||||
} satisfies Model<"openai-responses">,
|
} satisfies Model<"openai-responses">,
|
||||||
|
"gpt-5.3-codex-spark": {
|
||||||
|
id: "gpt-5.3-codex-spark",
|
||||||
|
name: "GPT-5.3 Codex Spark",
|
||||||
|
api: "openai-responses",
|
||||||
|
provider: "opencode",
|
||||||
|
baseUrl: "https://opencode.ai/zen/v1",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 1.75,
|
||||||
|
output: 14,
|
||||||
|
cacheRead: 0.175,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 128000,
|
||||||
|
maxTokens: 128000,
|
||||||
|
} satisfies Model<"openai-responses">,
|
||||||
"gpt-5.4": {
|
"gpt-5.4": {
|
||||||
id: "gpt-5.4",
|
id: "gpt-5.4",
|
||||||
name: "GPT-5.4",
|
name: "GPT-5.4",
|
||||||
|
|
@ -6118,7 +6186,7 @@ export const MODELS = {
|
||||||
cacheRead: 0.25,
|
cacheRead: 0.25,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
},
|
},
|
||||||
contextWindow: 1050000,
|
contextWindow: 272000,
|
||||||
maxTokens: 128000,
|
maxTokens: 128000,
|
||||||
} satisfies Model<"openai-responses">,
|
} satisfies Model<"openai-responses">,
|
||||||
"kimi-k2.5": {
|
"kimi-k2.5": {
|
||||||
|
|
@ -7987,13 +8055,13 @@ export const MODELS = {
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
input: ["text", "image"],
|
input: ["text", "image"],
|
||||||
cost: {
|
cost: {
|
||||||
input: 0.41,
|
input: 0.44999999999999996,
|
||||||
output: 2.06,
|
output: 2.2,
|
||||||
cacheRead: 0.07,
|
cacheRead: 0.22499999999999998,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
},
|
},
|
||||||
contextWindow: 262144,
|
contextWindow: 262144,
|
||||||
maxTokens: 4096,
|
maxTokens: 65535,
|
||||||
} satisfies Model<"openai-completions">,
|
} satisfies Model<"openai-completions">,
|
||||||
"nex-agi/deepseek-v3.1-nex-n1": {
|
"nex-agi/deepseek-v3.1-nex-n1": {
|
||||||
id: "nex-agi/deepseek-v3.1-nex-n1",
|
id: "nex-agi/deepseek-v3.1-nex-n1",
|
||||||
|
|
@ -10333,9 +10401,9 @@ export const MODELS = {
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
cost: {
|
cost: {
|
||||||
input: 0.6,
|
input: 0.7999999999999999,
|
||||||
output: 1.9,
|
output: 2.56,
|
||||||
cacheRead: 0.119,
|
cacheRead: 0.16,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
},
|
},
|
||||||
contextWindow: 202752,
|
contextWindow: 202752,
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@ describe("openai-codex streaming", () => {
|
||||||
await streamResult.result();
|
await streamResult.result();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("clamps gpt-5.3-codex minimal reasoning effort to low", async () => {
|
it.each(["gpt-5.3-codex", "gpt-5.4"])("clamps %s minimal reasoning effort to low", async (modelId) => {
|
||||||
const tempDir = mkdtempSync(join(tmpdir(), "pi-codex-stream-"));
|
const tempDir = mkdtempSync(join(tmpdir(), "pi-codex-stream-"));
|
||||||
process.env.PI_CODING_AGENT_DIR = tempDir;
|
process.env.PI_CODING_AGENT_DIR = tempDir;
|
||||||
|
|
||||||
|
|
@ -303,8 +303,8 @@ describe("openai-codex streaming", () => {
|
||||||
global.fetch = fetchMock as typeof fetch;
|
global.fetch = fetchMock as typeof fetch;
|
||||||
|
|
||||||
const model: Model<"openai-codex-responses"> = {
|
const model: Model<"openai-codex-responses"> = {
|
||||||
id: "gpt-5.3-codex",
|
id: modelId,
|
||||||
name: "GPT-5.3 Codex",
|
name: modelId,
|
||||||
api: "openai-codex-responses",
|
api: "openai-codex-responses",
|
||||||
provider: "openai-codex",
|
provider: "openai-codex",
|
||||||
baseUrl: "https://chatgpt.com/backend-api",
|
baseUrl: "https://chatgpt.com/backend-api",
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,12 @@ describe("supportsXhigh", () => {
|
||||||
expect(supportsXhigh(model!)).toBe(false);
|
expect(supportsXhigh(model!)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("returns true for GPT-5.4 models", () => {
|
||||||
|
const model = getModel("openai-codex", "gpt-5.4");
|
||||||
|
expect(model).toBeDefined();
|
||||||
|
expect(supportsXhigh(model!)).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
it("returns false for OpenRouter Opus 4.6 (openai-completions API)", () => {
|
it("returns false for OpenRouter Opus 4.6 (openai-completions API)", () => {
|
||||||
const model = getModel("openrouter", "anthropic/claude-opus-4.6");
|
const model = getModel("openrouter", "anthropic/claude-opus-4.6");
|
||||||
expect(model).toBeDefined();
|
expect(model).toBeDefined();
|
||||||
|
|
|
||||||
|
|
@ -373,6 +373,11 @@ describe("resolveCliModel", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("default model selection", () => {
|
describe("default model selection", () => {
|
||||||
|
test("openai defaults are gpt-5.4", () => {
|
||||||
|
expect(defaultModelPerProvider.openai).toBe("gpt-5.4");
|
||||||
|
expect(defaultModelPerProvider["openai-codex"]).toBe("gpt-5.4");
|
||||||
|
});
|
||||||
|
|
||||||
test("ai-gateway default is opus 4.6", () => {
|
test("ai-gateway default is opus 4.6", () => {
|
||||||
expect(defaultModelPerProvider["vercel-ai-gateway"]).toBe("anthropic/claude-opus-4-6");
|
expect(defaultModelPerProvider["vercel-ai-gateway"]).toBe("anthropic/claude-opus-4-6");
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue