feat(ai): derive generated model types from JSON

This commit is contained in:
Armin Ronacher
2026-07-22 13:11:21 +02:00
parent 906b40a753
commit 5dc40fee33
45 changed files with 384 additions and 4687 deletions
+3 -187
View File
@@ -2,191 +2,7 @@
// Do not edit manually - run 'npm run generate-models' to update
import values from "./data/openai.json" with { type: "json" };
import type { Model } from "../types.ts";
import { flattenModelCatalog, type ModelCatalog } from "../model-catalog.ts";
export const OPENAI_MODELS = values as {
"gpt-4": Model<"openai-responses"> & {
id: "gpt-4";
provider: "openai";
};
"gpt-4-turbo": Model<"openai-responses"> & {
id: "gpt-4-turbo";
provider: "openai";
};
"gpt-4.1": Model<"openai-responses"> & {
id: "gpt-4.1";
provider: "openai";
};
"gpt-4.1-mini": Model<"openai-responses"> & {
id: "gpt-4.1-mini";
provider: "openai";
};
"gpt-4.1-nano": Model<"openai-responses"> & {
id: "gpt-4.1-nano";
provider: "openai";
};
"gpt-4o": Model<"openai-responses"> & {
id: "gpt-4o";
provider: "openai";
};
"gpt-4o-2024-05-13": Model<"openai-responses"> & {
id: "gpt-4o-2024-05-13";
provider: "openai";
};
"gpt-4o-2024-08-06": Model<"openai-responses"> & {
id: "gpt-4o-2024-08-06";
provider: "openai";
};
"gpt-4o-2024-11-20": Model<"openai-responses"> & {
id: "gpt-4o-2024-11-20";
provider: "openai";
};
"gpt-4o-mini": Model<"openai-responses"> & {
id: "gpt-4o-mini";
provider: "openai";
};
"gpt-5": Model<"openai-responses"> & {
id: "gpt-5";
provider: "openai";
};
"gpt-5-chat-latest": Model<"openai-responses"> & {
id: "gpt-5-chat-latest";
provider: "openai";
};
"gpt-5-codex": Model<"openai-responses"> & {
id: "gpt-5-codex";
provider: "openai";
};
"gpt-5-mini": Model<"openai-responses"> & {
id: "gpt-5-mini";
provider: "openai";
};
"gpt-5-nano": Model<"openai-responses"> & {
id: "gpt-5-nano";
provider: "openai";
};
"gpt-5-pro": Model<"openai-responses"> & {
id: "gpt-5-pro";
provider: "openai";
};
"gpt-5.1": Model<"openai-responses"> & {
id: "gpt-5.1";
provider: "openai";
};
"gpt-5.1-chat-latest": Model<"openai-responses"> & {
id: "gpt-5.1-chat-latest";
provider: "openai";
};
"gpt-5.1-codex": Model<"openai-responses"> & {
id: "gpt-5.1-codex";
provider: "openai";
};
"gpt-5.1-codex-max": Model<"openai-responses"> & {
id: "gpt-5.1-codex-max";
provider: "openai";
};
"gpt-5.1-codex-mini": Model<"openai-responses"> & {
id: "gpt-5.1-codex-mini";
provider: "openai";
};
"gpt-5.2": Model<"openai-responses"> & {
id: "gpt-5.2";
provider: "openai";
};
"gpt-5.2-chat-latest": Model<"openai-responses"> & {
id: "gpt-5.2-chat-latest";
provider: "openai";
};
"gpt-5.2-codex": Model<"openai-responses"> & {
id: "gpt-5.2-codex";
provider: "openai";
};
"gpt-5.2-pro": Model<"openai-responses"> & {
id: "gpt-5.2-pro";
provider: "openai";
};
"gpt-5.3-chat-latest": Model<"openai-responses"> & {
id: "gpt-5.3-chat-latest";
provider: "openai";
};
"gpt-5.3-codex": Model<"openai-responses"> & {
id: "gpt-5.3-codex";
provider: "openai";
};
"gpt-5.3-codex-spark": Model<"openai-responses"> & {
id: "gpt-5.3-codex-spark";
provider: "openai";
};
"gpt-5.4": Model<"openai-responses"> & {
id: "gpt-5.4";
provider: "openai";
};
"gpt-5.4-mini": Model<"openai-responses"> & {
id: "gpt-5.4-mini";
provider: "openai";
};
"gpt-5.4-nano": Model<"openai-responses"> & {
id: "gpt-5.4-nano";
provider: "openai";
};
"gpt-5.4-pro": Model<"openai-responses"> & {
id: "gpt-5.4-pro";
provider: "openai";
};
"gpt-5.5": Model<"openai-responses"> & {
id: "gpt-5.5";
provider: "openai";
};
"gpt-5.5-pro": Model<"openai-responses"> & {
id: "gpt-5.5-pro";
provider: "openai";
};
"gpt-5.6-luna": Model<"openai-responses"> & {
id: "gpt-5.6-luna";
provider: "openai";
};
"gpt-5.6-sol": Model<"openai-responses"> & {
id: "gpt-5.6-sol";
provider: "openai";
};
"gpt-5.6-terra": Model<"openai-responses"> & {
id: "gpt-5.6-terra";
provider: "openai";
};
"gpt-realtime-2.1": Model<"openai-responses"> & {
id: "gpt-realtime-2.1";
provider: "openai";
};
"o1": Model<"openai-responses"> & {
id: "o1";
provider: "openai";
};
"o1-pro": Model<"openai-responses"> & {
id: "o1-pro";
provider: "openai";
};
"o3": Model<"openai-responses"> & {
id: "o3";
provider: "openai";
};
"o3-deep-research": Model<"openai-responses"> & {
id: "o3-deep-research";
provider: "openai";
};
"o3-mini": Model<"openai-responses"> & {
id: "o3-mini";
provider: "openai";
};
"o3-pro": Model<"openai-responses"> & {
id: "o3-pro";
provider: "openai";
};
"o4-mini": Model<"openai-responses"> & {
id: "o4-mini";
provider: "openai";
};
"o4-mini-deep-research": Model<"openai-responses"> & {
id: "o4-mini-deep-research";
provider: "openai";
};
};
export const OPENAI_MODELS: ModelCatalog<typeof values, "openai"> =
flattenModelCatalog("openai", values);