Skip to content

Commit 942e7d8

Browse files
sanchitrkclaude
andcommitted
release: @codeworksh/aikit@0.12.0, @codeworksh/plugin@0.3.0, @codeworksh/harness@0.4.0, @codeworksh/tui@0.1.0, @codeworksh/cli@0.4.0
- Drop gpt-5.5 from the OpenAI Codex catalog; OpenAI retired it from Codex. - Add run 2.1.8 to the harness, with a workspace override so just-bash uses the same copy. - Bring tests in line with Effect 4.0.5, the refreshed catalog and the current prompt plugin release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent ab5dbb7 commit 942e7d8

24 files changed

Lines changed: 176 additions & 150 deletions

‎CHANGELOG.md‎

Lines changed: 112 additions & 16 deletions
Large diffs are not rendered by default.

‎packages/aikit/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@codeworksh/aikit",
3-
"version": "0.11.0",
3+
"version": "0.12.0",
44
"description": "TypeScript SDK that provides a unified API for working with multiple LLM providers, automatic model discovery, and more.",
55
"keywords": [
66
"agent",

‎packages/aikit/scripts/catalog.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { catalogURL } from "../src/model/remote.ts";
1818
const REQUIRED: Record<string, string[]> = {
1919
anthropic: ["claude-opus-5-5", "claude-sonnet-5-5"],
2020
openai: ["gpt-6.1-sol", "gpt-6-luna"],
21-
"openai-codex": ["gpt-6.1-sol", "gpt-5.5"],
21+
"openai-codex": ["gpt-6.1-sol", "gpt-6-luna"],
2222
openrouter: ["openai/gpt-6.1-sol", "anthropic/claude-opus-5.5"],
2323
};
2424
/** The share of a provider's published models one update may drop. */

‎packages/aikit/src/cli/modelgen.ts‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,6 @@ const OPENAI_CODEX_BASE_URL = "https://chatgpt.com/backend-api";
477477
const OPENAI_CODEX_CONTEXT = 272_000;
478478
const OPENAI_CODEX_MODELS: ReadonlyArray<{ readonly id: string; readonly contextWindow?: number }> = [
479479
{ id: "gpt-5.3-codex-spark", contextWindow: 128_000 },
480-
{ id: "gpt-5.5" },
481480
{ id: "gpt-5.6-luna" },
482481
{ id: "gpt-5.6-sol" },
483482
{ id: "gpt-5.6-terra" },
@@ -495,9 +494,8 @@ const OPENAI_CODEX_ADDITIONAL_TOOLS_MODEL_IDS = new Set([
495494
"gpt-6-sol",
496495
"gpt-6.1-sol",
497496
]);
498-
const OPENAI_CODEX_TOOL_SEARCH_MODEL_IDS = new Set(["gpt-5.5", ...OPENAI_CODEX_ADDITIONAL_TOOLS_MODEL_IDS]);
499497
// Checked live: the Codex backend accepts reasoning.effort "none" for these.
500-
const OPENAI_CODEX_NONE_REASONING_MODEL_IDS = new Set(["gpt-5.5", "gpt-5.6-luna", "gpt-6-luna", "gpt-6-sol"]);
498+
const OPENAI_CODEX_NONE_REASONING_MODEL_IDS = new Set(["gpt-5.6-luna", "gpt-6-luna", "gpt-6-sol"]);
501499

502500
/** The Codex models, from the generated `openai` entries; one models.dev does not list is skipped. */
503501
export function openAICodexBuiltInModels(openai: Record<string, Model.Info>): Record<string, Model.Info> {
@@ -533,8 +531,9 @@ export function openAICodexBuiltInModels(openai: Record<string, Model.Info>): Re
533531
providerOptionsKey: OPENAI_CODEX_PROVIDER_ID,
534532
compat: {
535533
supportsOpenAIGrammarTools: true,
536-
...(OPENAI_CODEX_TOOL_SEARCH_MODEL_IDS.has(seed.id) ? { supportsToolSearch: true } : {}),
537-
...(OPENAI_CODEX_ADDITIONAL_TOOLS_MODEL_IDS.has(seed.id) ? { supportsAdditionalTools: true } : {}),
534+
...(OPENAI_CODEX_ADDITIONAL_TOOLS_MODEL_IDS.has(seed.id)
535+
? { supportsToolSearch: true, supportsAdditionalTools: true }
536+
: {}),
538537
},
539538
protocol: Model.KnownProviderEnum.openaiCodex,
540539
};

‎packages/aikit/test/__artifacts__/modelgen.json‎

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2773,66 +2773,6 @@
27732773
"xhigh": "xhigh"
27742774
}
27752775
},
2776-
"gpt-5.5": {
2777-
"api": {
2778-
"id": "gpt-5.5",
2779-
"method": "responses",
2780-
"url": "https://chatgpt.com/backend-api"
2781-
},
2782-
"baseUrl": "https://chatgpt.com/backend-api",
2783-
"compat": {
2784-
"supportsOpenAIGrammarTools": true,
2785-
"supportsToolSearch": true
2786-
},
2787-
"contextWindow": 272000,
2788-
"cost": {
2789-
"cacheRead": 0.5,
2790-
"cacheWrite": 0,
2791-
"input": 5,
2792-
"output": 30,
2793-
"serviceTierMultipliers": {
2794-
"flex": 0.5,
2795-
"priority": 2.5
2796-
},
2797-
"tiers": [
2798-
{
2799-
"cacheRead": 1,
2800-
"cacheWrite": 0,
2801-
"input": 10,
2802-
"inputTokensAbove": 272000,
2803-
"output": 45
2804-
}
2805-
]
2806-
},
2807-
"id": "gpt-5.5",
2808-
"input": [
2809-
"text",
2810-
"image"
2811-
],
2812-
"maxTokens": 128000,
2813-
"name": "GPT-5.5",
2814-
"npm": "@codeworksh/ai-sdk-openai-codex",
2815-
"protocol": "openai-codex",
2816-
"provider": {
2817-
"env": [
2818-
"OPENAI_CODEX_API_KEY"
2819-
],
2820-
"id": "openai-codex",
2821-
"name": "OpenAI Codex (ChatGPT)",
2822-
"source": "custom"
2823-
},
2824-
"providerOptionsKey": "openai-codex",
2825-
"reasoning": true,
2826-
"thinkingLevelMap": {
2827-
"high": "high",
2828-
"low": "low",
2829-
"max": null,
2830-
"medium": "medium",
2831-
"minimal": "low",
2832-
"off": "none",
2833-
"xhigh": "xhigh"
2834-
}
2835-
},
28362776
"gpt-5.6-luna": {
28372777
"api": {
28382778
"id": "gpt-5.6-luna",

‎packages/aikit/test/e2e/__artifacts__/thinking.levels.openai-codex.json‎

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -60,36 +60,5 @@
6060
"thinkingLevel": "max",
6161
"providerThinkingLevel": "max"
6262
}
63-
},
64-
"gpt-5.5": {
65-
"off": {
66-
"thinkingLevel": "off",
67-
"providerThinkingLevel": "none",
68-
"thinking": false
69-
},
70-
"minimal": {
71-
"thinkingLevel": "minimal",
72-
"providerThinkingLevel": "low"
73-
},
74-
"low": {
75-
"thinkingLevel": "low",
76-
"providerThinkingLevel": "low"
77-
},
78-
"medium": {
79-
"thinkingLevel": "medium",
80-
"providerThinkingLevel": "medium"
81-
},
82-
"high": {
83-
"thinkingLevel": "high",
84-
"providerThinkingLevel": "high"
85-
},
86-
"xhigh": {
87-
"thinkingLevel": "xhigh",
88-
"providerThinkingLevel": "xhigh"
89-
},
90-
"max": {
91-
"thinkingLevel": "max",
92-
"providerThinkingLevel": "xhigh"
93-
}
9463
}
9564
}

‎packages/aikit/test/e2e/thinking.levels.e2e.test.ts‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ const OPENAI_LEVELS: Record<(typeof OPENAI_E2E_MODELS)[number], Model.ThinkingLe
4747
const OPENAI_CODEX_LEVELS: Record<(typeof OPENAI_CODEX_E2E_MODELS)[number], Model.ThinkingLevel[]> = {
4848
"gpt-6-luna": ["off", "minimal", ...WITH_MAX.slice(1)],
4949
"gpt-5.6-luna": ["off", "minimal", ...WITH_MAX.slice(1)],
50-
"gpt-5.5": ["off", "minimal", ...WITH_XHIGH.slice(1)],
5150
};
5251

5352
const ANTHROPIC_BUDGET: Model.ThinkingLevel[] = ["off", "minimal", "low", "medium", "high"];
@@ -165,7 +164,7 @@ describeIfOpenAICodex.each(OPENAI_CODEX_E2E_MODELS)("OpenAI Codex thinking level
165164
it("exposes the levels the API accepts", async () => {
166165
const model = await getOpenAICodexModel(modelId);
167166
expect(Model.getSupportedThinkingLevels(model)).toEqual(OPENAI_CODEX_LEVELS[modelId]);
168-
expect(Model.clampThinkingLevel(model, "minimal")).toBe("low");
167+
expect(Model.clampThinkingLevel(model, "minimal")).toBe("minimal");
169168
});
170169

171170
it("disables reasoning when no level is requested", { retry: 2, timeout: 60_000 }, async () => {

‎packages/aikit/test/provider/openai.codex.request.test.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
} from "../utils/openai-codex.ts";
1818

1919
describe("request", () => {
20-
it.each(["gpt-5.3-codex-spark", "gpt-5.5"])(
20+
it.each(["gpt-5.3-codex-spark", "gpt-6-luna"])(
2121
"derives image support from %s metadata despite a partial factory override",
2222
async (id) => {
2323
const metadata = openAICodexModels()[id]!;
@@ -143,12 +143,12 @@ describe("request", () => {
143143
]);
144144
});
145145

146-
it("falls back to transcript tool_search items for GPT-5.5 Codex", async () => {
146+
it("falls back to transcript tool_search items without additional tools", async () => {
147147
const { fetch, body } = createOpenAICodexMockFetch(openAICodexSSEResponse(openAICodexTextEvents));
148148
await createOpenAICodex({
149149
apiKey: OPENAI_CODEX_TEST_API_KEY,
150150
fetch,
151-
compat: { ...openAICodexModels()["gpt-5.5"]!.compat },
151+
compat: { supportsOpenAIGrammarTools: true, supportsToolSearch: true },
152152
})("gpt-5.5").doStream({
153153
prompt: openAICodexDeferredToolsPrompt,
154154
tools: openAICodexDeferredTools,
@@ -283,7 +283,7 @@ describe("request", () => {
283283
});
284284

285285
describe("transport failures", () => {
286-
const model = openAICodexModels()["gpt-5.5"]!;
286+
const model = openAICodexModels()["gpt-6-luna"]!;
287287

288288
it("retries a fetch that never answers, then fails with the request it sent", async () => {
289289
let calls = 0;

‎packages/aikit/test/utils/llm.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ export const OPENAI_E2E_MODELS = [
7575
] as const;
7676

7777
/**
78-
* Every Codex suite runs once per model. The Codex backend rejects gpt-5.4, gpt-5.4-mini and
79-
* gpt-5.4-nano for ChatGPT accounts ("not supported when using Codex with a ChatGPT account").
78+
* Every Codex suite runs once per model. The Codex backend rejects gpt-5.5, gpt-5.4, gpt-5.4-mini
79+
* and gpt-5.4-nano for ChatGPT accounts ("not supported when using Codex with a ChatGPT account").
8080
*/
81-
export const OPENAI_CODEX_E2E_MODELS = ["gpt-6-luna", "gpt-5.6-luna", "gpt-5.5"] as const;
81+
export const OPENAI_CODEX_E2E_MODELS = ["gpt-6-luna", "gpt-5.6-luna"] as const;
8282

8383
/** Suites default to low reasoning; pass `reasoning` to override. */
8484
export function openaiOptions(extras: OpenAIOptions = {}): OpenAIOptions {

‎packages/aikit/test/utils/openai-codex.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ export function openAICodexModels(): Record<string, Model.Info> {
3131
});
3232
const ids: Array<[string, string[]]> = [
3333
["gpt-5.3-codex-spark", ["text"]],
34-
["gpt-5.5", ["text", "image"]],
3534
["gpt-5.6-luna", ["text", "image"]],
35+
["gpt-6-luna", ["text", "image"]],
3636
];
3737
const catalog = buildCatalog({
3838
modelsDev: {

0 commit comments

Comments
 (0)