@ashx-j/lunr-ai 0.2.15 → 0.2.16-dev.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/catalog/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAoB,MAAM,aAAa,CAAC;AAG3D,eAAO,MAAM,4BAA4B,YAAY,CAAC;AACtD,eAAO,MAAM,iBAAiB,oDAAoD,CAAC;AAGnF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,SAA+B,GAAG,MAAM,CAGpG;AAED,wFAAwF;AACxF,wBAAsB,0BAA0B,CAC/C,SAAS,EAAE,OAAO,KAAK,EACvB,MAAM,EAAE,WAAW,EACnB,QAAQ,SAA+B,GACrC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,wBAAwB,CAAC,EAAE,CA0DtG","sourcesContent":["import type { Model, ThinkingLevelMap } from \"../types.ts\";\n\n// Version of the Codex discovery protocol we implement, independent of lunR's package version.\nexport const CODEX_CATALOG_CLIENT_VERSION = \"0.153.4\";\nexport const CODEX_RELEASE_URL = \"https://registry.npmjs.org/@openai/codex/latest\";\nconst LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const;\n\nexport function codexModelsUrl(baseUrl: string, clientVersion = CODEX_CATALOG_CLIENT_VERSION): string {\n\tconst base = baseUrl.replace(/\\/+$/, \"\");\n\treturn `${base.endsWith(\"/codex\") ? base : `${base}/codex`}/models?client_version=${encodeURIComponent(clientVersion)}`;\n}\n\n/** Fetch only a release number, never npm code. Backend visibility is version-gated. */\nexport async function resolveCodexCatalogVersion(\n\tfetchImpl: typeof fetch,\n\tsignal: AbortSignal,\n\tfallback = CODEX_CATALOG_CLIENT_VERSION,\n): Promise<string> {\n\ttry {\n\t\tconst response = await fetchImpl(CODEX_RELEASE_URL, {\n\t\t\tsignal: AbortSignal.any([signal, AbortSignal.timeout(1500)]),\n\t\t\theaders: { accept: \"application/json\" },\n\t\t});\n\t\tif (!response.ok) return fallback;\n\t\tconst value = (await response.json()) as { version?: unknown } | null;\n\t\tif (typeof value?.version !== \"string\" || !/^\\d+\\.\\d+\\.\\d+$/.test(value.version)) return fallback;\n\t\treturn value.version;\n\t} catch {\n\t\treturn fallback;\n\t}\n}\n\n/** Parse only model capabilities; server prompt templates and tool instructions are not imported. */\nexport function parseCodexCatalog(payload: unknown, baseUrl: string): Model<\"openai-codex-responses\">[] {\n\tif (!payload || typeof payload !== \"object\" || !Array.isArray((payload as { models?: unknown }).models)) {\n\t\tthrow new Error(\"Invalid Codex model catalog: expected models array\");\n\t}\n\tconst models = new Map<string, Model<\"openai-codex-responses\">>();\n\tfor (const value of (payload as { models: unknown[] }).models) {\n\t\tif (!value || typeof value !== \"object\") throw new Error(\"Invalid Codex model entry\");\n\t\tconst row = value as Record<string, unknown>;\n\t\tif (typeof row.slug !== \"string\" || !row.slug.trim()) throw new Error(\"Codex model is missing its slug\");\n\t\tconst supplied: NonNullable<Model<any>[\"catalog\"]>[\"supplied\"] = [];\n\t\tconst positive = (value: unknown) => typeof value === \"number\" && Number.isInteger(value) && value > 0;\n\t\tconst context = positive(row.context_window) ? row.context_window : row.max_context_window;\n\t\tif (positive(context)) supplied.push(\"contextWindow\");\n\t\tif (positive(row.max_output_tokens)) supplied.push(\"maxTokens\");\n\t\tconst name = typeof row.display_name === \"string\" && row.display_name.trim() ? row.display_name : row.slug;\n\t\tif (name !== row.slug) supplied.push(\"name\");\n\t\tconst input = Array.isArray(row.input_modalities)\n\t\t\t? row.input_modalities.filter((item): item is \"text\" | \"image\" => item === \"text\" || item === \"image\")\n\t\t\t: [];\n\t\tif (input.length) supplied.push(\"input\");\n\t\tlet thinkingLevelMap: ThinkingLevelMap | undefined;\n\t\tconst efforts = Array.isArray(row.supported_reasoning_levels)\n\t\t\t? row.supported_reasoning_levels.flatMap((item) =>\n\t\t\t\t\titem && typeof item.effort === \"string\" ? [item.effort as string] : [],\n\t\t\t\t)\n\t\t\t: [];\n\t\tif (Array.isArray(row.supported_reasoning_levels)) {\n\t\t\tthinkingLevelMap = Object.fromEntries(\n\t\t\t\tLEVELS.map((level) => [\n\t\t\t\t\tlevel,\n\t\t\t\t\tlevel === \"off\" && efforts.includes(\"none\") ? \"none\" : efforts.includes(level) ? level : null,\n\t\t\t\t]),\n\t\t\t);\n\t\t\tsupplied.push(\"reasoning\", \"thinkingLevelMap\");\n\t\t}\n\t\tmodels.set(row.slug, {\n\t\t\tid: row.slug,\n\t\t\tname,\n\t\t\tprovider: \"openai-codex\",\n\t\t\tapi: \"openai-codex-responses\",\n\t\t\tbaseUrl,\n\t\t\treasoning: efforts.length > 0,\n\t\t\tthinkingLevelMap,\n\t\t\tinput: input.length ? input : [\"text\"],\n\t\t\tcontextWindow: positive(context) ? (context as number) : 128000,\n\t\t\tmaxTokens: positive(row.max_output_tokens) ? (row.max_output_tokens as number) : 8192,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\tcatalog: {\n\t\t\t\tsource: \"provider\",\n\t\t\t\tsupplied,\n\t\t\t\tpricing: \"unknown\",\n\t\t\t\treasoningLevels: efforts,\n\t\t\t\thidden: row.visibility !== \"list\",\n\t\t\t},\n\t\t});\n\t}\n\tif (!models.size) throw new Error(\"Codex returned an empty model catalog; retaining cached models\");\n\treturn [...models.values()];\n}\n"]}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/catalog/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAoB,MAAM,aAAa,CAAC;AAG3D,eAAO,MAAM,4BAA4B,YAAY,CAAC;AACtD,eAAO,MAAM,iBAAiB,oDAAoD,CAAC;AAGnF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,SAA+B,GAAG,MAAM,CAGpG;AAED,wFAAwF;AACxF,wBAAsB,0BAA0B,CAC/C,SAAS,EAAE,OAAO,KAAK,EACvB,MAAM,EAAE,WAAW,EACnB,QAAQ,SAA+B,GACrC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,wBAAwB,CAAC,EAAE,CA0DtG","sourcesContent":["import type { Model, ThinkingLevelMap } from \"../types.ts\";\n\n// Version of the Codex discovery protocol we implement, independent of lunR's package version.\nexport const CODEX_CATALOG_CLIENT_VERSION = \"0.153.4\";\nexport const CODEX_RELEASE_URL = \"https://registry.npmjs.org/@openai/codex/latest\";\nconst LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const;\n\nexport function codexModelsUrl(baseUrl: string, clientVersion = CODEX_CATALOG_CLIENT_VERSION): string {\n\tconst base = baseUrl.replace(/\\/+$/, \"\");\n\treturn `${base.endsWith(\"/codex\") ? base : `${base}/codex`}/models?client_version=${encodeURIComponent(clientVersion)}`;\n}\n\n/** Fetch only a release number, never npm code. Backend visibility is version-gated. */\nexport async function resolveCodexCatalogVersion(\n\tfetchImpl: typeof fetch,\n\tsignal: AbortSignal,\n\tfallback = CODEX_CATALOG_CLIENT_VERSION,\n): Promise<string> {\n\ttry {\n\t\tconst response = await fetchImpl(CODEX_RELEASE_URL, {\n\t\t\tsignal: AbortSignal.any([signal, AbortSignal.timeout(1500)]),\n\t\t\theaders: { accept: \"application/json\" },\n\t\t});\n\t\tif (!response.ok) return fallback;\n\t\tconst value = (await response.json()) as { version?: unknown } | null;\n\t\tif (typeof value?.version !== \"string\" || !/^\\d+\\.\\d+\\.\\d+$/.test(value.version)) return fallback;\n\t\treturn value.version;\n\t} catch {\n\t\treturn fallback;\n\t}\n}\n\n/** Parse only model capabilities; server prompt templates and tool instructions are not imported. */\nexport function parseCodexCatalog(payload: unknown, baseUrl: string): Model<\"openai-codex-responses\">[] {\n\tif (!payload || typeof payload !== \"object\" || !Array.isArray((payload as { models?: unknown }).models)) {\n\t\tthrow new Error(\"Invalid Codex model catalog: expected models array\");\n\t}\n\tconst models = new Map<string, Model<\"openai-codex-responses\">>();\n\tfor (const value of (payload as { models: unknown[] }).models) {\n\t\tif (!value || typeof value !== \"object\") throw new Error(\"Invalid Codex model entry\");\n\t\tconst row = value as Record<string, unknown>;\n\t\tif (typeof row.slug !== \"string\" || !row.slug.trim()) throw new Error(\"Codex model is missing its slug\");\n\t\tconst supplied: NonNullable<Model<any>[\"catalog\"]>[\"supplied\"] = [];\n\t\tconst positive = (value: unknown) => typeof value === \"number\" && Number.isInteger(value) && value > 0;\n\t\tconst context = row.context_window;\n\t\tif (positive(context)) supplied.push(\"contextWindow\");\n\t\tif (positive(row.max_output_tokens)) supplied.push(\"maxTokens\");\n\t\tconst name = typeof row.display_name === \"string\" && row.display_name.trim() ? row.display_name : row.slug;\n\t\tif (name !== row.slug) supplied.push(\"name\");\n\t\tconst input = Array.isArray(row.input_modalities)\n\t\t\t? row.input_modalities.filter((item): item is \"text\" | \"image\" => item === \"text\" || item === \"image\")\n\t\t\t: [];\n\t\tif (input.length) supplied.push(\"input\");\n\t\tlet thinkingLevelMap: ThinkingLevelMap | undefined;\n\t\tconst efforts = Array.isArray(row.supported_reasoning_levels)\n\t\t\t? row.supported_reasoning_levels.flatMap((item) =>\n\t\t\t\t\titem && typeof item.effort === \"string\" ? [item.effort as string] : [],\n\t\t\t\t)\n\t\t\t: [];\n\t\tif (Array.isArray(row.supported_reasoning_levels)) {\n\t\t\tthinkingLevelMap = Object.fromEntries(\n\t\t\t\tLEVELS.map((level) => [\n\t\t\t\t\tlevel,\n\t\t\t\t\tlevel === \"off\" && efforts.includes(\"none\") ? \"none\" : efforts.includes(level) ? level : null,\n\t\t\t\t]),\n\t\t\t);\n\t\t\tsupplied.push(\"reasoning\", \"thinkingLevelMap\");\n\t\t}\n\t\tmodels.set(row.slug, {\n\t\t\tid: row.slug,\n\t\t\tname,\n\t\t\tprovider: \"openai-codex\",\n\t\t\tapi: \"openai-codex-responses\",\n\t\t\tbaseUrl,\n\t\t\treasoning: efforts.length > 0,\n\t\t\tthinkingLevelMap,\n\t\t\tinput: input.length ? input : [\"text\"],\n\t\t\tcontextWindow: positive(context) ? (context as number) : 128000,\n\t\t\tmaxTokens: positive(row.max_output_tokens) ? (row.max_output_tokens as number) : 8192,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\tcatalog: {\n\t\t\t\tsource: \"provider\",\n\t\t\t\tsupplied,\n\t\t\t\tpricing: \"unknown\",\n\t\t\t\treasoningLevels: efforts,\n\t\t\t\thidden: row.visibility !== \"list\",\n\t\t\t},\n\t\t});\n\t}\n\tif (!models.size) throw new Error(\"Codex returned an empty model catalog; retaining cached models\");\n\treturn [...models.values()];\n}\n"]}
@@ -38,7 +38,7 @@ export function parseCodexCatalog(payload, baseUrl) {
38
38
  throw new Error("Codex model is missing its slug");
39
39
  const supplied = [];
40
40
  const positive = (value) => typeof value === "number" && Number.isInteger(value) && value > 0;
41
- const context = positive(row.context_window) ? row.context_window : row.max_context_window;
41
+ const context = row.context_window;
42
42
  if (positive(context))
43
43
  supplied.push("contextWindow");
44
44
  if (positive(row.max_output_tokens))
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/catalog/codex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Model, ThinkingLevelMap } from \"../types.ts\";\n\n// Version of the Codex discovery protocol we implement, independent of lunR's package version.\nexport const CODEX_CATALOG_CLIENT_VERSION = \"0.153.4\";\nexport const CODEX_RELEASE_URL = \"https://registry.npmjs.org/@openai/codex/latest\";\nconst LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const;\n\nexport function codexModelsUrl(baseUrl: string, clientVersion = CODEX_CATALOG_CLIENT_VERSION): string {\n\tconst base = baseUrl.replace(/\\/+$/, \"\");\n\treturn `${base.endsWith(\"/codex\") ? base : `${base}/codex`}/models?client_version=${encodeURIComponent(clientVersion)}`;\n}\n\n/** Fetch only a release number, never npm code. Backend visibility is version-gated. */\nexport async function resolveCodexCatalogVersion(\n\tfetchImpl: typeof fetch,\n\tsignal: AbortSignal,\n\tfallback = CODEX_CATALOG_CLIENT_VERSION,\n): Promise<string> {\n\ttry {\n\t\tconst response = await fetchImpl(CODEX_RELEASE_URL, {\n\t\t\tsignal: AbortSignal.any([signal, AbortSignal.timeout(1500)]),\n\t\t\theaders: { accept: \"application/json\" },\n\t\t});\n\t\tif (!response.ok) return fallback;\n\t\tconst value = (await response.json()) as { version?: unknown } | null;\n\t\tif (typeof value?.version !== \"string\" || !/^\\d+\\.\\d+\\.\\d+$/.test(value.version)) return fallback;\n\t\treturn value.version;\n\t} catch {\n\t\treturn fallback;\n\t}\n}\n\n/** Parse only model capabilities; server prompt templates and tool instructions are not imported. */\nexport function parseCodexCatalog(payload: unknown, baseUrl: string): Model<\"openai-codex-responses\">[] {\n\tif (!payload || typeof payload !== \"object\" || !Array.isArray((payload as { models?: unknown }).models)) {\n\t\tthrow new Error(\"Invalid Codex model catalog: expected models array\");\n\t}\n\tconst models = new Map<string, Model<\"openai-codex-responses\">>();\n\tfor (const value of (payload as { models: unknown[] }).models) {\n\t\tif (!value || typeof value !== \"object\") throw new Error(\"Invalid Codex model entry\");\n\t\tconst row = value as Record<string, unknown>;\n\t\tif (typeof row.slug !== \"string\" || !row.slug.trim()) throw new Error(\"Codex model is missing its slug\");\n\t\tconst supplied: NonNullable<Model<any>[\"catalog\"]>[\"supplied\"] = [];\n\t\tconst positive = (value: unknown) => typeof value === \"number\" && Number.isInteger(value) && value > 0;\n\t\tconst context = positive(row.context_window) ? row.context_window : row.max_context_window;\n\t\tif (positive(context)) supplied.push(\"contextWindow\");\n\t\tif (positive(row.max_output_tokens)) supplied.push(\"maxTokens\");\n\t\tconst name = typeof row.display_name === \"string\" && row.display_name.trim() ? row.display_name : row.slug;\n\t\tif (name !== row.slug) supplied.push(\"name\");\n\t\tconst input = Array.isArray(row.input_modalities)\n\t\t\t? row.input_modalities.filter((item): item is \"text\" | \"image\" => item === \"text\" || item === \"image\")\n\t\t\t: [];\n\t\tif (input.length) supplied.push(\"input\");\n\t\tlet thinkingLevelMap: ThinkingLevelMap | undefined;\n\t\tconst efforts = Array.isArray(row.supported_reasoning_levels)\n\t\t\t? row.supported_reasoning_levels.flatMap((item) =>\n\t\t\t\t\titem && typeof item.effort === \"string\" ? [item.effort as string] : [],\n\t\t\t\t)\n\t\t\t: [];\n\t\tif (Array.isArray(row.supported_reasoning_levels)) {\n\t\t\tthinkingLevelMap = Object.fromEntries(\n\t\t\t\tLEVELS.map((level) => [\n\t\t\t\t\tlevel,\n\t\t\t\t\tlevel === \"off\" && efforts.includes(\"none\") ? \"none\" : efforts.includes(level) ? level : null,\n\t\t\t\t]),\n\t\t\t);\n\t\t\tsupplied.push(\"reasoning\", \"thinkingLevelMap\");\n\t\t}\n\t\tmodels.set(row.slug, {\n\t\t\tid: row.slug,\n\t\t\tname,\n\t\t\tprovider: \"openai-codex\",\n\t\t\tapi: \"openai-codex-responses\",\n\t\t\tbaseUrl,\n\t\t\treasoning: efforts.length > 0,\n\t\t\tthinkingLevelMap,\n\t\t\tinput: input.length ? input : [\"text\"],\n\t\t\tcontextWindow: positive(context) ? (context as number) : 128000,\n\t\t\tmaxTokens: positive(row.max_output_tokens) ? (row.max_output_tokens as number) : 8192,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\tcatalog: {\n\t\t\t\tsource: \"provider\",\n\t\t\t\tsupplied,\n\t\t\t\tpricing: \"unknown\",\n\t\t\t\treasoningLevels: efforts,\n\t\t\t\thidden: row.visibility !== \"list\",\n\t\t\t},\n\t\t});\n\t}\n\tif (!models.size) throw new Error(\"Codex returned an empty model catalog; retaining cached models\");\n\treturn [...models.values()];\n}\n"]}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/catalog/codex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Model, ThinkingLevelMap } from \"../types.ts\";\n\n// Version of the Codex discovery protocol we implement, independent of lunR's package version.\nexport const CODEX_CATALOG_CLIENT_VERSION = \"0.153.4\";\nexport const CODEX_RELEASE_URL = \"https://registry.npmjs.org/@openai/codex/latest\";\nconst LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const;\n\nexport function codexModelsUrl(baseUrl: string, clientVersion = CODEX_CATALOG_CLIENT_VERSION): string {\n\tconst base = baseUrl.replace(/\\/+$/, \"\");\n\treturn `${base.endsWith(\"/codex\") ? base : `${base}/codex`}/models?client_version=${encodeURIComponent(clientVersion)}`;\n}\n\n/** Fetch only a release number, never npm code. Backend visibility is version-gated. */\nexport async function resolveCodexCatalogVersion(\n\tfetchImpl: typeof fetch,\n\tsignal: AbortSignal,\n\tfallback = CODEX_CATALOG_CLIENT_VERSION,\n): Promise<string> {\n\ttry {\n\t\tconst response = await fetchImpl(CODEX_RELEASE_URL, {\n\t\t\tsignal: AbortSignal.any([signal, AbortSignal.timeout(1500)]),\n\t\t\theaders: { accept: \"application/json\" },\n\t\t});\n\t\tif (!response.ok) return fallback;\n\t\tconst value = (await response.json()) as { version?: unknown } | null;\n\t\tif (typeof value?.version !== \"string\" || !/^\\d+\\.\\d+\\.\\d+$/.test(value.version)) return fallback;\n\t\treturn value.version;\n\t} catch {\n\t\treturn fallback;\n\t}\n}\n\n/** Parse only model capabilities; server prompt templates and tool instructions are not imported. */\nexport function parseCodexCatalog(payload: unknown, baseUrl: string): Model<\"openai-codex-responses\">[] {\n\tif (!payload || typeof payload !== \"object\" || !Array.isArray((payload as { models?: unknown }).models)) {\n\t\tthrow new Error(\"Invalid Codex model catalog: expected models array\");\n\t}\n\tconst models = new Map<string, Model<\"openai-codex-responses\">>();\n\tfor (const value of (payload as { models: unknown[] }).models) {\n\t\tif (!value || typeof value !== \"object\") throw new Error(\"Invalid Codex model entry\");\n\t\tconst row = value as Record<string, unknown>;\n\t\tif (typeof row.slug !== \"string\" || !row.slug.trim()) throw new Error(\"Codex model is missing its slug\");\n\t\tconst supplied: NonNullable<Model<any>[\"catalog\"]>[\"supplied\"] = [];\n\t\tconst positive = (value: unknown) => typeof value === \"number\" && Number.isInteger(value) && value > 0;\n\t\tconst context = row.context_window;\n\t\tif (positive(context)) supplied.push(\"contextWindow\");\n\t\tif (positive(row.max_output_tokens)) supplied.push(\"maxTokens\");\n\t\tconst name = typeof row.display_name === \"string\" && row.display_name.trim() ? row.display_name : row.slug;\n\t\tif (name !== row.slug) supplied.push(\"name\");\n\t\tconst input = Array.isArray(row.input_modalities)\n\t\t\t? row.input_modalities.filter((item): item is \"text\" | \"image\" => item === \"text\" || item === \"image\")\n\t\t\t: [];\n\t\tif (input.length) supplied.push(\"input\");\n\t\tlet thinkingLevelMap: ThinkingLevelMap | undefined;\n\t\tconst efforts = Array.isArray(row.supported_reasoning_levels)\n\t\t\t? row.supported_reasoning_levels.flatMap((item) =>\n\t\t\t\t\titem && typeof item.effort === \"string\" ? [item.effort as string] : [],\n\t\t\t\t)\n\t\t\t: [];\n\t\tif (Array.isArray(row.supported_reasoning_levels)) {\n\t\t\tthinkingLevelMap = Object.fromEntries(\n\t\t\t\tLEVELS.map((level) => [\n\t\t\t\t\tlevel,\n\t\t\t\t\tlevel === \"off\" && efforts.includes(\"none\") ? \"none\" : efforts.includes(level) ? level : null,\n\t\t\t\t]),\n\t\t\t);\n\t\t\tsupplied.push(\"reasoning\", \"thinkingLevelMap\");\n\t\t}\n\t\tmodels.set(row.slug, {\n\t\t\tid: row.slug,\n\t\t\tname,\n\t\t\tprovider: \"openai-codex\",\n\t\t\tapi: \"openai-codex-responses\",\n\t\t\tbaseUrl,\n\t\t\treasoning: efforts.length > 0,\n\t\t\tthinkingLevelMap,\n\t\t\tinput: input.length ? input : [\"text\"],\n\t\t\tcontextWindow: positive(context) ? (context as number) : 128000,\n\t\t\tmaxTokens: positive(row.max_output_tokens) ? (row.max_output_tokens as number) : 8192,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\tcatalog: {\n\t\t\t\tsource: \"provider\",\n\t\t\t\tsupplied,\n\t\t\t\tpricing: \"unknown\",\n\t\t\t\treasoningLevels: efforts,\n\t\t\t\thidden: row.visibility !== \"list\",\n\t\t\t},\n\t\t});\n\t}\n\tif (!models.size) throw new Error(\"Codex returned an empty model catalog; retaining cached models\");\n\treturn [...models.values()];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../src/compat.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Temporary compatibility entrypoint preserving the old global pi-ai API\n * surface: api-dispatch `stream()`/`complete()` with env API key injection,\n * the api-registry, generated catalog reads (`getModel`/`getModels`/\n * `getProviders`), per-API lazy stream wrappers, and image generation.\n *\n * Existing apps switch imports from \"@ashx-j/lunr-ai\" to\n * \"@ashx-j/lunr-ai/compat\" unchanged; new code uses `createModels()`\n * and the provider factories. This module is deleted with the coding-agent\n * ModelManager migration.\n */\n\nexport * from \"./api/anthropic-messages.lazy.ts\";\nexport * from \"./api/azure-openai-responses.lazy.ts\";\nexport * from \"./api/bedrock-converse-stream.lazy.ts\";\nexport * from \"./api/google-generative-ai.lazy.ts\";\nexport * from \"./api/google-vertex.lazy.ts\";\nexport * from \"./api/mistral-conversations.lazy.ts\";\nexport * from \"./api/openai-codex-responses.lazy.ts\";\nexport * from \"./api/openai-completions.lazy.ts\";\nexport * from \"./api/openai-responses.lazy.ts\";\nexport * from \"./api/pi-messages.lazy.ts\";\nexport * from \"./env-api-keys.ts\";\nexport * from \"./image-models.ts\";\nexport * from \"./images.ts\";\nexport * from \"./images-api-registry.ts\";\nexport * from \"./index.ts\";\nexport * from \"./legacy-api-aliases.ts\";\nexport * from \"./providers/images/register-builtins.ts\";\n\nimport { anthropicMessagesApi } from \"./api/anthropic-messages.lazy.ts\";\nimport { azureOpenAIResponsesApi } from \"./api/azure-openai-responses.lazy.ts\";\nimport { bedrockConverseStreamApi } from \"./api/bedrock-converse-stream.lazy.ts\";\nimport { googleGenerativeAIApi } from \"./api/google-generative-ai.lazy.ts\";\nimport { googleVertexApi } from \"./api/google-vertex.lazy.ts\";\nimport { mistralConversationsApi } from \"./api/mistral-conversations.lazy.ts\";\nimport { openAICodexResponsesApi } from \"./api/openai-codex-responses.lazy.ts\";\nimport { openAICompletionsApi } from \"./api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"./api/openai-responses.lazy.ts\";\nimport { piMessagesApi } from \"./api/pi-messages.lazy.ts\";\nimport { getEnvApiKey } from \"./env-api-keys.ts\";\nimport type { ModelsApiStreamOptions } from \"./models.ts\";\nimport { builtinModels, getBuiltinModel, getBuiltinModels, getBuiltinProviders } from \"./providers/all.ts\";\n\nexport type { BuiltinProvider } from \"./providers/all.ts\";\n\nimport { createFauxCore, type FauxProviderRegistration, type RegisterFauxProviderOptions } from \"./providers/faux.ts\";\nimport type {\n\tApi,\n\tApiStreamOptions,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tProviderStreamOptions,\n\tProviderStreams,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"./types.ts\";\n\n/** @deprecated Static catalog read. Use `getBuiltinModel` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModel()`. */\nexport const getModel = getBuiltinModel;\n\n/** @deprecated Static catalog read. Use `getBuiltinModels` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModels()`. */\nexport const getModels = getBuiltinModels;\n\n/** @deprecated Static catalog read. Use `getBuiltinProviders` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getProviders()`. */\nexport const getProviders = getBuiltinProviders;\n\nexport type ApiStreamFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: StreamOptions,\n) => AssistantMessageEventStream;\n\nexport type ApiStreamSimpleFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n) => AssistantMessageEventStream;\n\nexport interface ApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {\n\tapi: TApi;\n\tstream: StreamFunction<TApi, TOptions>;\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>;\n}\n\ninterface ApiProviderInternal {\n\tapi: Api;\n\tstream: ApiStreamFunction;\n\tstreamSimple: ApiStreamSimpleFunction;\n}\n\ntype RegisteredApiProvider = {\n\tprovider: ApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst apiProviderRegistry = new Map<string, RegisteredApiProvider>();\n\nfunction wrapStream<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tstream: StreamFunction<TApi, TOptions>,\n): ApiStreamFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn stream(model as Model<TApi>, context, options as TOptions);\n\t};\n}\n\nfunction wrapStreamSimple<TApi extends Api>(\n\tapi: TApi,\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>,\n): ApiStreamSimpleFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn streamSimple(model as Model<TApi>, context, options);\n\t};\n}\n\nexport function registerApiProvider<TApi extends Api, TOptions extends StreamOptions>(\n\tprovider: ApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\tapiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tstream: wrapStream(provider.api, provider.stream),\n\t\t\tstreamSimple: wrapStreamSimple(provider.api, provider.streamSimple),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getApiProvider(api: Api): ApiProviderInternal | undefined {\n\treturn apiProviderRegistry.get(api)?.provider;\n}\n\nexport function getApiProviders(): ApiProviderInternal[] {\n\treturn Array.from(apiProviderRegistry.values(), (entry) => entry.provider);\n}\n\nexport function unregisterApiProviders(sourceId: string): void {\n\tfor (const [api, entry] of apiProviderRegistry.entries()) {\n\t\tif (entry.sourceId === sourceId) {\n\t\t\tapiProviderRegistry.delete(api);\n\t\t}\n\t}\n}\n\nfunction clearApiProviders(): void {\n\tapiProviderRegistry.clear();\n}\n\nexport function registerFauxProvider(options: RegisterFauxProviderOptions = {}): FauxProviderRegistration {\n\tconst core = createFauxCore(options);\n\tconst sourceId = `faux-provider-${Math.random().toString(36).slice(2, 10)}`;\n\tregisterApiProvider({ api: core.api, stream: core.stream, streamSimple: core.streamSimple }, sourceId);\n\treturn {\n\t\tapi: core.api,\n\t\tmodels: core.models,\n\t\tgetModel: core.getModel,\n\t\tstate: core.state,\n\t\tsetResponses: core.setResponses,\n\t\tappendResponses: core.appendResponses,\n\t\tgetPendingResponseCount: core.getPendingResponseCount,\n\t\tunregister() {\n\t\t\tunregisterApiProviders(sourceId);\n\t\t},\n\t};\n}\n\nconst BUILTIN_APIS: [Api, ProviderStreams][] = [\n\t[\"anthropic-messages\", anthropicMessagesApi()],\n\t[\"openai-completions\", openAICompletionsApi()],\n\t[\"openai-responses\", openAIResponsesApi()],\n\t[\"openai-codex-responses\", openAICodexResponsesApi()],\n\t[\"azure-openai-responses\", azureOpenAIResponsesApi()],\n\t[\"google-generative-ai\", googleGenerativeAIApi()],\n\t[\"google-vertex\", googleVertexApi()],\n\t[\"mistral-conversations\", mistralConversationsApi()],\n\t[\"bedrock-converse-stream\", bedrockConverseStreamApi()],\n\t[\"pi-messages\", piMessagesApi()],\n];\n\nconst builtinApiProviderInstances = new Map<Api, ReturnType<typeof getApiProvider>>();\n\n/**\n * Registers the builtin API implementations into the api-registry without\n * clobbering existing entries: compat may load after a test or extension has\n * already registered an override for a builtin api id.\n */\nexport function registerBuiltInApiProviders(): void {\n\tfor (const [api, streams] of BUILTIN_APIS) {\n\t\tif (!getApiProvider(api)) {\n\t\t\tregisterApiProvider({ api, stream: streams.stream, streamSimple: streams.streamSimple });\n\t\t}\n\t\tbuiltinApiProviderInstances.set(api, getApiProvider(api));\n\t}\n}\n\nexport function resetApiProviders(): void {\n\tclearApiProviders();\n\tbuiltinApiProviderInstances.clear();\n\tregisterBuiltInApiProviders();\n}\n\nregisterBuiltInApiProviders();\n\nconst compatModels = builtinModels();\nconst AMBIENT_AUTH_MARKER = \"<authenticated>\";\n\nfunction hasExplicitApiKey(apiKey: string | undefined): apiKey is string {\n\treturn typeof apiKey === \"string\" && apiKey.trim().length > 0;\n}\n\nfunction withEnvApiKey<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions | undefined,\n): TOptions | undefined {\n\tif (hasExplicitApiKey(options?.apiKey)) return options;\n\tconst apiKey = getEnvApiKey(model.provider, options?.env);\n\tif (!apiKey || apiKey === AMBIENT_AUTH_MARKER) return options;\n\treturn { ...options, apiKey } as TOptions;\n}\n\nfunction hasResolvedCloudflareAuth(options: StreamOptions | undefined): boolean {\n\treturn hasExplicitApiKey(options?.apiKey) || typeof options?.headers?.[\"cf-aig-authorization\"] === \"string\";\n}\n\nfunction getBuiltinProviderForModel(model: Model<Api>) {\n\tif (getApiProvider(model.api) !== builtinApiProviderInstances.get(model.api)) return undefined;\n\tconst provider = compatModels.getProvider(model.provider);\n\treturn provider?.getModels().some((candidate) => candidate.api === model.api) ? provider : undefined;\n}\n\nfunction resolveApiProvider(api: Api) {\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn compatModels.stream(model, context, options as ModelsApiStreamOptions<TApi> | undefined);\n\t\t}\n\t\treturn builtinProvider.stream(model, context, withEnvApiKey(model, options) as ApiStreamOptions<TApi>);\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.stream(model, context, withEnvApiKey(model, options) as StreamOptions);\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.result();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn compatModels.streamSimple(model, context, options);\n\t\t}\n\t\treturn builtinProvider.streamSimple(model, context, withEnvApiKey(model, options));\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.streamSimple(model, context, withEnvApiKey(model, options));\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.result();\n}\n"]}
1
+ {"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../src/compat.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Temporary compatibility entrypoint preserving the old global pi-ai API\n * surface: api-dispatch `stream()`/`complete()` with env API key injection,\n * the api-registry, generated catalog reads (`getModel`/`getModels`/\n * `getProviders`), per-API lazy stream wrappers, and image generation.\n *\n * Existing apps switch imports from \"@ashx-j/lunr-ai\" to\n * \"@ashx-j/lunr-ai/compat\" unchanged; new code uses `createModels()`\n * and the provider factories. This module is deleted with the coding-agent\n * ModelManager migration.\n */\n\nexport * from \"./api/anthropic-messages.lazy.ts\";\nexport * from \"./api/azure-openai-responses.lazy.ts\";\nexport * from \"./api/bedrock-converse-stream.lazy.ts\";\nexport * from \"./api/google-generative-ai.lazy.ts\";\nexport * from \"./api/google-vertex.lazy.ts\";\nexport * from \"./api/mistral-conversations.lazy.ts\";\nexport * from \"./api/openai-codex-responses.lazy.ts\";\nexport * from \"./api/openai-completions.lazy.ts\";\nexport * from \"./api/openai-responses.lazy.ts\";\nexport * from \"./api/pi-messages.lazy.ts\";\nexport * from \"./env-api-keys.ts\";\nexport * from \"./image-models.ts\";\nexport * from \"./images.ts\";\nexport * from \"./images-api-registry.ts\";\nexport * from \"./index.ts\";\nexport * from \"./legacy-api-aliases.ts\";\nexport * from \"./providers/images/register-builtins.ts\";\n\nimport { anthropicMessagesApi } from \"./api/anthropic-messages.lazy.ts\";\nimport { azureOpenAIResponsesApi } from \"./api/azure-openai-responses.lazy.ts\";\nimport { bedrockConverseStreamApi } from \"./api/bedrock-converse-stream.lazy.ts\";\nimport { googleGenerativeAIApi } from \"./api/google-generative-ai.lazy.ts\";\nimport { googleVertexApi } from \"./api/google-vertex.lazy.ts\";\nimport { mistralConversationsApi } from \"./api/mistral-conversations.lazy.ts\";\nimport { openAICodexResponsesApi } from \"./api/openai-codex-responses.lazy.ts\";\nimport { openAICompletionsApi } from \"./api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"./api/openai-responses.lazy.ts\";\nimport { piMessagesApi } from \"./api/pi-messages.lazy.ts\";\nimport { getEnvApiKey } from \"./env-api-keys.ts\";\nimport type { ModelsApiStreamOptions } from \"./models.ts\";\nimport { builtinModels, getBuiltinModel, getBuiltinModels, getBuiltinProviders } from \"./providers/all.ts\";\n\nexport type { BuiltinProvider } from \"./providers/all.ts\";\n\nimport { createFauxCore, type FauxProviderRegistration, type RegisterFauxProviderOptions } from \"./providers/faux.ts\";\nimport type {\n\tApi,\n\tApiStreamOptions,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tProviderStreamOptions,\n\tProviderStreams,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"./types.ts\";\n\n/** @deprecated Static catalog read. Use `getBuiltinModel` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModel()`. */\nexport const getModel = getBuiltinModel;\n\n/** @deprecated Static catalog read. Use `getBuiltinModels` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModels()`. */\nexport const getModels = getBuiltinModels;\n\n/** @deprecated Static catalog read. Use `getBuiltinProviders` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getProviders()`. */\nexport const getProviders = getBuiltinProviders;\n\nexport type ApiStreamFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: StreamOptions,\n) => AssistantMessageEventStream;\n\nexport type ApiStreamSimpleFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n) => AssistantMessageEventStream;\n\nexport interface ApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {\n\tapi: TApi;\n\tstream: StreamFunction<TApi, TOptions>;\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>;\n}\n\ninterface ApiProviderInternal {\n\tapi: Api;\n\tstream: ApiStreamFunction;\n\tstreamSimple: ApiStreamSimpleFunction;\n}\n\ntype RegisteredApiProvider = {\n\tprovider: ApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst apiProviderRegistry = new Map<string, RegisteredApiProvider>();\n\nfunction wrapStream<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tstream: StreamFunction<TApi, TOptions>,\n): ApiStreamFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn stream(model as Model<TApi>, context, options as TOptions);\n\t};\n}\n\nfunction wrapStreamSimple<TApi extends Api>(\n\tapi: TApi,\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>,\n): ApiStreamSimpleFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn streamSimple(model as Model<TApi>, context, options);\n\t};\n}\n\nexport function registerApiProvider<TApi extends Api, TOptions extends StreamOptions>(\n\tprovider: ApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\tapiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tstream: wrapStream(provider.api, provider.stream),\n\t\t\tstreamSimple: wrapStreamSimple(provider.api, provider.streamSimple),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getApiProvider(api: Api): ApiProviderInternal | undefined {\n\treturn apiProviderRegistry.get(api)?.provider;\n}\n\nexport function getApiProviders(): ApiProviderInternal[] {\n\treturn Array.from(apiProviderRegistry.values(), (entry) => entry.provider);\n}\n\nexport function unregisterApiProviders(sourceId: string): void {\n\tfor (const [api, entry] of apiProviderRegistry.entries()) {\n\t\tif (entry.sourceId === sourceId) {\n\t\t\tapiProviderRegistry.delete(api);\n\t\t}\n\t}\n}\n\nfunction clearApiProviders(): void {\n\tapiProviderRegistry.clear();\n}\n\nexport function registerFauxProvider(options: RegisterFauxProviderOptions = {}): FauxProviderRegistration {\n\tconst core = createFauxCore(options);\n\tconst sourceId = `faux-provider-${Math.random().toString(36).slice(2, 10)}`;\n\tregisterApiProvider({ api: core.api, stream: core.stream, streamSimple: core.streamSimple }, sourceId);\n\treturn {\n\t\tapi: core.api,\n\t\tmodels: core.models,\n\t\tgetModel: core.getModel,\n\t\tstate: core.state,\n\t\tsetResponses: core.setResponses,\n\t\tappendResponses: core.appendResponses,\n\t\tgetPendingResponseCount: core.getPendingResponseCount,\n\t\tunregister() {\n\t\t\tunregisterApiProviders(sourceId);\n\t\t},\n\t};\n}\n\nconst BUILTIN_APIS: [Api, ProviderStreams][] = [\n\t[\"anthropic-messages\", anthropicMessagesApi()],\n\t[\"openai-completions\", openAICompletionsApi()],\n\t[\"openai-responses\", openAIResponsesApi()],\n\t[\"openai-codex-responses\", openAICodexResponsesApi()],\n\t[\"azure-openai-responses\", azureOpenAIResponsesApi()],\n\t[\"google-generative-ai\", googleGenerativeAIApi()],\n\t[\"google-vertex\", googleVertexApi()],\n\t[\"mistral-conversations\", mistralConversationsApi()],\n\t[\"bedrock-converse-stream\", bedrockConverseStreamApi()],\n\t[\"pi-messages\", piMessagesApi()],\n];\n\nconst builtinApiProviderInstances = new Map<Api, ReturnType<typeof getApiProvider>>();\n\n/**\n * Registers the builtin API implementations into the api-registry without\n * clobbering existing entries: compat may load after a test or extension has\n * already registered an override for a builtin api id.\n */\nexport function registerBuiltInApiProviders(): void {\n\tfor (const [api, streams] of BUILTIN_APIS) {\n\t\tif (!getApiProvider(api)) {\n\t\t\tregisterApiProvider({ api, stream: streams.stream, streamSimple: streams.streamSimple });\n\t\t}\n\t\tbuiltinApiProviderInstances.set(api, getApiProvider(api));\n\t}\n}\n\nexport function resetApiProviders(): void {\n\tclearApiProviders();\n\tbuiltinApiProviderInstances.clear();\n\tregisterBuiltInApiProviders();\n}\n\nregisterBuiltInApiProviders();\n\nlet compatModels: ReturnType<typeof builtinModels> | undefined;\nfunction getCompatModels(): ReturnType<typeof builtinModels> {\n\tcompatModels ??= builtinModels();\n\treturn compatModels;\n}\nconst AMBIENT_AUTH_MARKER = \"<authenticated>\";\n\nfunction hasExplicitApiKey(apiKey: string | undefined): apiKey is string {\n\treturn typeof apiKey === \"string\" && apiKey.trim().length > 0;\n}\n\nfunction withEnvApiKey<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions | undefined,\n): TOptions | undefined {\n\tif (hasExplicitApiKey(options?.apiKey)) return options;\n\tconst apiKey = getEnvApiKey(model.provider, options?.env);\n\tif (!apiKey || apiKey === AMBIENT_AUTH_MARKER) return options;\n\treturn { ...options, apiKey } as TOptions;\n}\n\nfunction hasResolvedCloudflareAuth(options: StreamOptions | undefined): boolean {\n\treturn hasExplicitApiKey(options?.apiKey) || typeof options?.headers?.[\"cf-aig-authorization\"] === \"string\";\n}\n\nfunction getBuiltinProviderForModel(model: Model<Api>) {\n\tif (getApiProvider(model.api) !== builtinApiProviderInstances.get(model.api)) return undefined;\n\tconst provider = getCompatModels().getProvider(model.provider);\n\treturn provider?.getModels().some((candidate) => candidate.api === model.api) ? provider : undefined;\n}\n\nfunction resolveApiProvider(api: Api) {\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn getCompatModels().stream(model, context, options as ModelsApiStreamOptions<TApi> | undefined);\n\t\t}\n\t\treturn builtinProvider.stream(model, context, withEnvApiKey(model, options) as ApiStreamOptions<TApi>);\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.stream(model, context, withEnvApiKey(model, options) as StreamOptions);\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.result();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn getCompatModels().streamSimple(model, context, options);\n\t\t}\n\t\treturn builtinProvider.streamSimple(model, context, withEnvApiKey(model, options));\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.streamSimple(model, context, withEnvApiKey(model, options));\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.result();\n}\n"]}
package/dist/compat.js CHANGED
@@ -137,7 +137,11 @@ export function resetApiProviders() {
137
137
  registerBuiltInApiProviders();
138
138
  }
139
139
  registerBuiltInApiProviders();
140
- const compatModels = builtinModels();
140
+ let compatModels;
141
+ function getCompatModels() {
142
+ compatModels ??= builtinModels();
143
+ return compatModels;
144
+ }
141
145
  const AMBIENT_AUTH_MARKER = "<authenticated>";
142
146
  function hasExplicitApiKey(apiKey) {
143
147
  return typeof apiKey === "string" && apiKey.trim().length > 0;
@@ -156,7 +160,7 @@ function hasResolvedCloudflareAuth(options) {
156
160
  function getBuiltinProviderForModel(model) {
157
161
  if (getApiProvider(model.api) !== builtinApiProviderInstances.get(model.api))
158
162
  return undefined;
159
- const provider = compatModels.getProvider(model.provider);
163
+ const provider = getCompatModels().getProvider(model.provider);
160
164
  return provider?.getModels().some((candidate) => candidate.api === model.api) ? provider : undefined;
161
165
  }
162
166
  function resolveApiProvider(api) {
@@ -170,7 +174,7 @@ export function stream(model, context, options) {
170
174
  const builtinProvider = getBuiltinProviderForModel(model);
171
175
  if (builtinProvider) {
172
176
  if (model.provider.startsWith("cloudflare-") && !hasResolvedCloudflareAuth(options)) {
173
- return compatModels.stream(model, context, options);
177
+ return getCompatModels().stream(model, context, options);
174
178
  }
175
179
  return builtinProvider.stream(model, context, withEnvApiKey(model, options));
176
180
  }
@@ -185,7 +189,7 @@ export function streamSimple(model, context, options) {
185
189
  const builtinProvider = getBuiltinProviderForModel(model);
186
190
  if (builtinProvider) {
187
191
  if (model.provider.startsWith("cloudflare-") && !hasResolvedCloudflareAuth(options)) {
188
- return compatModels.streamSimple(model, context, options);
192
+ return getCompatModels().streamSimple(model, context, options);
189
193
  }
190
194
  return builtinProvider.streamSimple(model, context, withEnvApiKey(model, options));
191
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compat.js","sourceRoot":"","sources":["../src/compat.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Temporary compatibility entrypoint preserving the old global pi-ai API\n * surface: api-dispatch `stream()`/`complete()` with env API key injection,\n * the api-registry, generated catalog reads (`getModel`/`getModels`/\n * `getProviders`), per-API lazy stream wrappers, and image generation.\n *\n * Existing apps switch imports from \"@ashx-j/lunr-ai\" to\n * \"@ashx-j/lunr-ai/compat\" unchanged; new code uses `createModels()`\n * and the provider factories. This module is deleted with the coding-agent\n * ModelManager migration.\n */\n\nexport * from \"./api/anthropic-messages.lazy.ts\";\nexport * from \"./api/azure-openai-responses.lazy.ts\";\nexport * from \"./api/bedrock-converse-stream.lazy.ts\";\nexport * from \"./api/google-generative-ai.lazy.ts\";\nexport * from \"./api/google-vertex.lazy.ts\";\nexport * from \"./api/mistral-conversations.lazy.ts\";\nexport * from \"./api/openai-codex-responses.lazy.ts\";\nexport * from \"./api/openai-completions.lazy.ts\";\nexport * from \"./api/openai-responses.lazy.ts\";\nexport * from \"./api/pi-messages.lazy.ts\";\nexport * from \"./env-api-keys.ts\";\nexport * from \"./image-models.ts\";\nexport * from \"./images.ts\";\nexport * from \"./images-api-registry.ts\";\nexport * from \"./index.ts\";\nexport * from \"./legacy-api-aliases.ts\";\nexport * from \"./providers/images/register-builtins.ts\";\n\nimport { anthropicMessagesApi } from \"./api/anthropic-messages.lazy.ts\";\nimport { azureOpenAIResponsesApi } from \"./api/azure-openai-responses.lazy.ts\";\nimport { bedrockConverseStreamApi } from \"./api/bedrock-converse-stream.lazy.ts\";\nimport { googleGenerativeAIApi } from \"./api/google-generative-ai.lazy.ts\";\nimport { googleVertexApi } from \"./api/google-vertex.lazy.ts\";\nimport { mistralConversationsApi } from \"./api/mistral-conversations.lazy.ts\";\nimport { openAICodexResponsesApi } from \"./api/openai-codex-responses.lazy.ts\";\nimport { openAICompletionsApi } from \"./api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"./api/openai-responses.lazy.ts\";\nimport { piMessagesApi } from \"./api/pi-messages.lazy.ts\";\nimport { getEnvApiKey } from \"./env-api-keys.ts\";\nimport type { ModelsApiStreamOptions } from \"./models.ts\";\nimport { builtinModels, getBuiltinModel, getBuiltinModels, getBuiltinProviders } from \"./providers/all.ts\";\n\nexport type { BuiltinProvider } from \"./providers/all.ts\";\n\nimport { createFauxCore, type FauxProviderRegistration, type RegisterFauxProviderOptions } from \"./providers/faux.ts\";\nimport type {\n\tApi,\n\tApiStreamOptions,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tProviderStreamOptions,\n\tProviderStreams,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"./types.ts\";\n\n/** @deprecated Static catalog read. Use `getBuiltinModel` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModel()`. */\nexport const getModel = getBuiltinModel;\n\n/** @deprecated Static catalog read. Use `getBuiltinModels` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModels()`. */\nexport const getModels = getBuiltinModels;\n\n/** @deprecated Static catalog read. Use `getBuiltinProviders` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getProviders()`. */\nexport const getProviders = getBuiltinProviders;\n\nexport type ApiStreamFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: StreamOptions,\n) => AssistantMessageEventStream;\n\nexport type ApiStreamSimpleFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n) => AssistantMessageEventStream;\n\nexport interface ApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {\n\tapi: TApi;\n\tstream: StreamFunction<TApi, TOptions>;\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>;\n}\n\ninterface ApiProviderInternal {\n\tapi: Api;\n\tstream: ApiStreamFunction;\n\tstreamSimple: ApiStreamSimpleFunction;\n}\n\ntype RegisteredApiProvider = {\n\tprovider: ApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst apiProviderRegistry = new Map<string, RegisteredApiProvider>();\n\nfunction wrapStream<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tstream: StreamFunction<TApi, TOptions>,\n): ApiStreamFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn stream(model as Model<TApi>, context, options as TOptions);\n\t};\n}\n\nfunction wrapStreamSimple<TApi extends Api>(\n\tapi: TApi,\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>,\n): ApiStreamSimpleFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn streamSimple(model as Model<TApi>, context, options);\n\t};\n}\n\nexport function registerApiProvider<TApi extends Api, TOptions extends StreamOptions>(\n\tprovider: ApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\tapiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tstream: wrapStream(provider.api, provider.stream),\n\t\t\tstreamSimple: wrapStreamSimple(provider.api, provider.streamSimple),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getApiProvider(api: Api): ApiProviderInternal | undefined {\n\treturn apiProviderRegistry.get(api)?.provider;\n}\n\nexport function getApiProviders(): ApiProviderInternal[] {\n\treturn Array.from(apiProviderRegistry.values(), (entry) => entry.provider);\n}\n\nexport function unregisterApiProviders(sourceId: string): void {\n\tfor (const [api, entry] of apiProviderRegistry.entries()) {\n\t\tif (entry.sourceId === sourceId) {\n\t\t\tapiProviderRegistry.delete(api);\n\t\t}\n\t}\n}\n\nfunction clearApiProviders(): void {\n\tapiProviderRegistry.clear();\n}\n\nexport function registerFauxProvider(options: RegisterFauxProviderOptions = {}): FauxProviderRegistration {\n\tconst core = createFauxCore(options);\n\tconst sourceId = `faux-provider-${Math.random().toString(36).slice(2, 10)}`;\n\tregisterApiProvider({ api: core.api, stream: core.stream, streamSimple: core.streamSimple }, sourceId);\n\treturn {\n\t\tapi: core.api,\n\t\tmodels: core.models,\n\t\tgetModel: core.getModel,\n\t\tstate: core.state,\n\t\tsetResponses: core.setResponses,\n\t\tappendResponses: core.appendResponses,\n\t\tgetPendingResponseCount: core.getPendingResponseCount,\n\t\tunregister() {\n\t\t\tunregisterApiProviders(sourceId);\n\t\t},\n\t};\n}\n\nconst BUILTIN_APIS: [Api, ProviderStreams][] = [\n\t[\"anthropic-messages\", anthropicMessagesApi()],\n\t[\"openai-completions\", openAICompletionsApi()],\n\t[\"openai-responses\", openAIResponsesApi()],\n\t[\"openai-codex-responses\", openAICodexResponsesApi()],\n\t[\"azure-openai-responses\", azureOpenAIResponsesApi()],\n\t[\"google-generative-ai\", googleGenerativeAIApi()],\n\t[\"google-vertex\", googleVertexApi()],\n\t[\"mistral-conversations\", mistralConversationsApi()],\n\t[\"bedrock-converse-stream\", bedrockConverseStreamApi()],\n\t[\"pi-messages\", piMessagesApi()],\n];\n\nconst builtinApiProviderInstances = new Map<Api, ReturnType<typeof getApiProvider>>();\n\n/**\n * Registers the builtin API implementations into the api-registry without\n * clobbering existing entries: compat may load after a test or extension has\n * already registered an override for a builtin api id.\n */\nexport function registerBuiltInApiProviders(): void {\n\tfor (const [api, streams] of BUILTIN_APIS) {\n\t\tif (!getApiProvider(api)) {\n\t\t\tregisterApiProvider({ api, stream: streams.stream, streamSimple: streams.streamSimple });\n\t\t}\n\t\tbuiltinApiProviderInstances.set(api, getApiProvider(api));\n\t}\n}\n\nexport function resetApiProviders(): void {\n\tclearApiProviders();\n\tbuiltinApiProviderInstances.clear();\n\tregisterBuiltInApiProviders();\n}\n\nregisterBuiltInApiProviders();\n\nconst compatModels = builtinModels();\nconst AMBIENT_AUTH_MARKER = \"<authenticated>\";\n\nfunction hasExplicitApiKey(apiKey: string | undefined): apiKey is string {\n\treturn typeof apiKey === \"string\" && apiKey.trim().length > 0;\n}\n\nfunction withEnvApiKey<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions | undefined,\n): TOptions | undefined {\n\tif (hasExplicitApiKey(options?.apiKey)) return options;\n\tconst apiKey = getEnvApiKey(model.provider, options?.env);\n\tif (!apiKey || apiKey === AMBIENT_AUTH_MARKER) return options;\n\treturn { ...options, apiKey } as TOptions;\n}\n\nfunction hasResolvedCloudflareAuth(options: StreamOptions | undefined): boolean {\n\treturn hasExplicitApiKey(options?.apiKey) || typeof options?.headers?.[\"cf-aig-authorization\"] === \"string\";\n}\n\nfunction getBuiltinProviderForModel(model: Model<Api>) {\n\tif (getApiProvider(model.api) !== builtinApiProviderInstances.get(model.api)) return undefined;\n\tconst provider = compatModels.getProvider(model.provider);\n\treturn provider?.getModels().some((candidate) => candidate.api === model.api) ? provider : undefined;\n}\n\nfunction resolveApiProvider(api: Api) {\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn compatModels.stream(model, context, options as ModelsApiStreamOptions<TApi> | undefined);\n\t\t}\n\t\treturn builtinProvider.stream(model, context, withEnvApiKey(model, options) as ApiStreamOptions<TApi>);\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.stream(model, context, withEnvApiKey(model, options) as StreamOptions);\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.result();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn compatModels.streamSimple(model, context, options);\n\t\t}\n\t\treturn builtinProvider.streamSimple(model, context, withEnvApiKey(model, options));\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.streamSimple(model, context, withEnvApiKey(model, options));\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.result();\n}\n"]}
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../src/compat.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Temporary compatibility entrypoint preserving the old global pi-ai API\n * surface: api-dispatch `stream()`/`complete()` with env API key injection,\n * the api-registry, generated catalog reads (`getModel`/`getModels`/\n * `getProviders`), per-API lazy stream wrappers, and image generation.\n *\n * Existing apps switch imports from \"@ashx-j/lunr-ai\" to\n * \"@ashx-j/lunr-ai/compat\" unchanged; new code uses `createModels()`\n * and the provider factories. This module is deleted with the coding-agent\n * ModelManager migration.\n */\n\nexport * from \"./api/anthropic-messages.lazy.ts\";\nexport * from \"./api/azure-openai-responses.lazy.ts\";\nexport * from \"./api/bedrock-converse-stream.lazy.ts\";\nexport * from \"./api/google-generative-ai.lazy.ts\";\nexport * from \"./api/google-vertex.lazy.ts\";\nexport * from \"./api/mistral-conversations.lazy.ts\";\nexport * from \"./api/openai-codex-responses.lazy.ts\";\nexport * from \"./api/openai-completions.lazy.ts\";\nexport * from \"./api/openai-responses.lazy.ts\";\nexport * from \"./api/pi-messages.lazy.ts\";\nexport * from \"./env-api-keys.ts\";\nexport * from \"./image-models.ts\";\nexport * from \"./images.ts\";\nexport * from \"./images-api-registry.ts\";\nexport * from \"./index.ts\";\nexport * from \"./legacy-api-aliases.ts\";\nexport * from \"./providers/images/register-builtins.ts\";\n\nimport { anthropicMessagesApi } from \"./api/anthropic-messages.lazy.ts\";\nimport { azureOpenAIResponsesApi } from \"./api/azure-openai-responses.lazy.ts\";\nimport { bedrockConverseStreamApi } from \"./api/bedrock-converse-stream.lazy.ts\";\nimport { googleGenerativeAIApi } from \"./api/google-generative-ai.lazy.ts\";\nimport { googleVertexApi } from \"./api/google-vertex.lazy.ts\";\nimport { mistralConversationsApi } from \"./api/mistral-conversations.lazy.ts\";\nimport { openAICodexResponsesApi } from \"./api/openai-codex-responses.lazy.ts\";\nimport { openAICompletionsApi } from \"./api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"./api/openai-responses.lazy.ts\";\nimport { piMessagesApi } from \"./api/pi-messages.lazy.ts\";\nimport { getEnvApiKey } from \"./env-api-keys.ts\";\nimport type { ModelsApiStreamOptions } from \"./models.ts\";\nimport { builtinModels, getBuiltinModel, getBuiltinModels, getBuiltinProviders } from \"./providers/all.ts\";\n\nexport type { BuiltinProvider } from \"./providers/all.ts\";\n\nimport { createFauxCore, type FauxProviderRegistration, type RegisterFauxProviderOptions } from \"./providers/faux.ts\";\nimport type {\n\tApi,\n\tApiStreamOptions,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tProviderStreamOptions,\n\tProviderStreams,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"./types.ts\";\n\n/** @deprecated Static catalog read. Use `getBuiltinModel` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModel()`. */\nexport const getModel = getBuiltinModel;\n\n/** @deprecated Static catalog read. Use `getBuiltinModels` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getModels()`. */\nexport const getModels = getBuiltinModels;\n\n/** @deprecated Static catalog read. Use `getBuiltinProviders` from \"@ashx-j/lunr-ai/providers/all\" or `Models.getProviders()`. */\nexport const getProviders = getBuiltinProviders;\n\nexport type ApiStreamFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: StreamOptions,\n) => AssistantMessageEventStream;\n\nexport type ApiStreamSimpleFunction = (\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n) => AssistantMessageEventStream;\n\nexport interface ApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {\n\tapi: TApi;\n\tstream: StreamFunction<TApi, TOptions>;\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>;\n}\n\ninterface ApiProviderInternal {\n\tapi: Api;\n\tstream: ApiStreamFunction;\n\tstreamSimple: ApiStreamSimpleFunction;\n}\n\ntype RegisteredApiProvider = {\n\tprovider: ApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst apiProviderRegistry = new Map<string, RegisteredApiProvider>();\n\nfunction wrapStream<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tstream: StreamFunction<TApi, TOptions>,\n): ApiStreamFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn stream(model as Model<TApi>, context, options as TOptions);\n\t};\n}\n\nfunction wrapStreamSimple<TApi extends Api>(\n\tapi: TApi,\n\tstreamSimple: StreamFunction<TApi, SimpleStreamOptions>,\n): ApiStreamSimpleFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn streamSimple(model as Model<TApi>, context, options);\n\t};\n}\n\nexport function registerApiProvider<TApi extends Api, TOptions extends StreamOptions>(\n\tprovider: ApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\tapiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tstream: wrapStream(provider.api, provider.stream),\n\t\t\tstreamSimple: wrapStreamSimple(provider.api, provider.streamSimple),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getApiProvider(api: Api): ApiProviderInternal | undefined {\n\treturn apiProviderRegistry.get(api)?.provider;\n}\n\nexport function getApiProviders(): ApiProviderInternal[] {\n\treturn Array.from(apiProviderRegistry.values(), (entry) => entry.provider);\n}\n\nexport function unregisterApiProviders(sourceId: string): void {\n\tfor (const [api, entry] of apiProviderRegistry.entries()) {\n\t\tif (entry.sourceId === sourceId) {\n\t\t\tapiProviderRegistry.delete(api);\n\t\t}\n\t}\n}\n\nfunction clearApiProviders(): void {\n\tapiProviderRegistry.clear();\n}\n\nexport function registerFauxProvider(options: RegisterFauxProviderOptions = {}): FauxProviderRegistration {\n\tconst core = createFauxCore(options);\n\tconst sourceId = `faux-provider-${Math.random().toString(36).slice(2, 10)}`;\n\tregisterApiProvider({ api: core.api, stream: core.stream, streamSimple: core.streamSimple }, sourceId);\n\treturn {\n\t\tapi: core.api,\n\t\tmodels: core.models,\n\t\tgetModel: core.getModel,\n\t\tstate: core.state,\n\t\tsetResponses: core.setResponses,\n\t\tappendResponses: core.appendResponses,\n\t\tgetPendingResponseCount: core.getPendingResponseCount,\n\t\tunregister() {\n\t\t\tunregisterApiProviders(sourceId);\n\t\t},\n\t};\n}\n\nconst BUILTIN_APIS: [Api, ProviderStreams][] = [\n\t[\"anthropic-messages\", anthropicMessagesApi()],\n\t[\"openai-completions\", openAICompletionsApi()],\n\t[\"openai-responses\", openAIResponsesApi()],\n\t[\"openai-codex-responses\", openAICodexResponsesApi()],\n\t[\"azure-openai-responses\", azureOpenAIResponsesApi()],\n\t[\"google-generative-ai\", googleGenerativeAIApi()],\n\t[\"google-vertex\", googleVertexApi()],\n\t[\"mistral-conversations\", mistralConversationsApi()],\n\t[\"bedrock-converse-stream\", bedrockConverseStreamApi()],\n\t[\"pi-messages\", piMessagesApi()],\n];\n\nconst builtinApiProviderInstances = new Map<Api, ReturnType<typeof getApiProvider>>();\n\n/**\n * Registers the builtin API implementations into the api-registry without\n * clobbering existing entries: compat may load after a test or extension has\n * already registered an override for a builtin api id.\n */\nexport function registerBuiltInApiProviders(): void {\n\tfor (const [api, streams] of BUILTIN_APIS) {\n\t\tif (!getApiProvider(api)) {\n\t\t\tregisterApiProvider({ api, stream: streams.stream, streamSimple: streams.streamSimple });\n\t\t}\n\t\tbuiltinApiProviderInstances.set(api, getApiProvider(api));\n\t}\n}\n\nexport function resetApiProviders(): void {\n\tclearApiProviders();\n\tbuiltinApiProviderInstances.clear();\n\tregisterBuiltInApiProviders();\n}\n\nregisterBuiltInApiProviders();\n\nlet compatModels: ReturnType<typeof builtinModels> | undefined;\nfunction getCompatModels(): ReturnType<typeof builtinModels> {\n\tcompatModels ??= builtinModels();\n\treturn compatModels;\n}\nconst AMBIENT_AUTH_MARKER = \"<authenticated>\";\n\nfunction hasExplicitApiKey(apiKey: string | undefined): apiKey is string {\n\treturn typeof apiKey === \"string\" && apiKey.trim().length > 0;\n}\n\nfunction withEnvApiKey<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions | undefined,\n): TOptions | undefined {\n\tif (hasExplicitApiKey(options?.apiKey)) return options;\n\tconst apiKey = getEnvApiKey(model.provider, options?.env);\n\tif (!apiKey || apiKey === AMBIENT_AUTH_MARKER) return options;\n\treturn { ...options, apiKey } as TOptions;\n}\n\nfunction hasResolvedCloudflareAuth(options: StreamOptions | undefined): boolean {\n\treturn hasExplicitApiKey(options?.apiKey) || typeof options?.headers?.[\"cf-aig-authorization\"] === \"string\";\n}\n\nfunction getBuiltinProviderForModel(model: Model<Api>) {\n\tif (getApiProvider(model.api) !== builtinApiProviderInstances.get(model.api)) return undefined;\n\tconst provider = getCompatModels().getProvider(model.provider);\n\treturn provider?.getModels().some((candidate) => candidate.api === model.api) ? provider : undefined;\n}\n\nfunction resolveApiProvider(api: Api) {\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn getCompatModels().stream(model, context, options as ModelsApiStreamOptions<TApi> | undefined);\n\t\t}\n\t\treturn builtinProvider.stream(model, context, withEnvApiKey(model, options) as ApiStreamOptions<TApi>);\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.stream(model, context, withEnvApiKey(model, options) as StreamOptions);\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.result();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream {\n\tconst builtinProvider = getBuiltinProviderForModel(model);\n\tif (builtinProvider) {\n\t\tif (model.provider.startsWith(\"cloudflare-\") && !hasResolvedCloudflareAuth(options)) {\n\t\t\treturn getCompatModels().streamSimple(model, context, options);\n\t\t}\n\t\treturn builtinProvider.streamSimple(model, context, withEnvApiKey(model, options));\n\t}\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.streamSimple(model, context, withEnvApiKey(model, options));\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.result();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex.models.d.ts","sourceRoot":"","sources":["../../src/providers/openai-codex.models.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8JtB,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport type { Model } from \"../types.ts\";\n\nexport const OPENAI_CODEX_MODELS = {\n\t\"gpt-6-astra\": {\n\t\tid: \"gpt-6-astra\",\n\t\tname: \"GPT-6 Astra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":null,\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":20,\"output\":75,\"cacheRead\":2,\"cacheWrite\":25}],\n\t\t},\n\t\tcontextWindow: 1050000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.3-codex-spark\": {\n\t\tid: \"gpt-5.3-codex-spark\",\n\t\tname: \"GPT-5.3 Codex Spark\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4\": {\n\t\tid: \"gpt-5.4\",\n\t\tname: \"GPT-5.4\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4-mini\": {\n\t\tid: \"gpt-5.4-mini\",\n\t\tname: \"GPT-5.4 mini\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.5\": {\n\t\tid: \"gpt-5.5\",\n\t\tname: \"GPT-5.5\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-luna\": {\n\t\tid: \"gpt-5.6-luna\",\n\t\tname: \"GPT-5.6 Luna\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 6,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":2,\"output\":9,\"cacheRead\":0.2,\"cacheWrite\":2.5}],\n\t\t},\n\t\tcontextWindow: 372000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-sol\": {\n\t\tid: \"gpt-5.6-sol\",\n\t\tname: \"GPT-5.6 Sol\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":12.5}],\n\t\t},\n\t\tcontextWindow: 372000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-terra\": {\n\t\tid: \"gpt-5.6-terra\",\n\t\tname: \"GPT-5.6 Terra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 3.125,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":6.25}],\n\t\t},\n\t\tcontextWindow: 372000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n} as const;\n"]}
1
+ {"version":3,"file":"openai-codex.models.d.ts","sourceRoot":"","sources":["../../src/providers/openai-codex.models.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8JtB,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport type { Model } from \"../types.ts\";\n\nexport const OPENAI_CODEX_MODELS = {\n\t\"gpt-6-astra\": {\n\t\tid: \"gpt-6-astra\",\n\t\tname: \"GPT-6 Astra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":null,\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":20,\"output\":75,\"cacheRead\":2,\"cacheWrite\":25}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.3-codex-spark\": {\n\t\tid: \"gpt-5.3-codex-spark\",\n\t\tname: \"GPT-5.3 Codex Spark\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4\": {\n\t\tid: \"gpt-5.4\",\n\t\tname: \"GPT-5.4\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4-mini\": {\n\t\tid: \"gpt-5.4-mini\",\n\t\tname: \"GPT-5.4 mini\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.5\": {\n\t\tid: \"gpt-5.5\",\n\t\tname: \"GPT-5.5\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-luna\": {\n\t\tid: \"gpt-5.6-luna\",\n\t\tname: \"GPT-5.6 Luna\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 6,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":2,\"output\":9,\"cacheRead\":0.2,\"cacheWrite\":2.5}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-sol\": {\n\t\tid: \"gpt-5.6-sol\",\n\t\tname: \"GPT-5.6 Sol\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":12.5}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-terra\": {\n\t\tid: \"gpt-5.6-terra\",\n\t\tname: \"GPT-5.6 Terra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 3.125,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":6.25}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n} as const;\n"]}
@@ -18,7 +18,7 @@ export const OPENAI_CODEX_MODELS = {
18
18
  cacheWrite: 12.5,
19
19
  tiers: [{ "inputTokensAbove": 272000, "input": 20, "output": 75, "cacheRead": 2, "cacheWrite": 25 }],
20
20
  },
21
- contextWindow: 1050000,
21
+ contextWindow: 272000,
22
22
  maxTokens: 128000,
23
23
  },
24
24
  "gpt-5.3-codex-spark": {
@@ -115,7 +115,7 @@ export const OPENAI_CODEX_MODELS = {
115
115
  cacheWrite: 1.25,
116
116
  tiers: [{ "inputTokensAbove": 272000, "input": 2, "output": 9, "cacheRead": 0.2, "cacheWrite": 2.5 }],
117
117
  },
118
- contextWindow: 372000,
118
+ contextWindow: 272000,
119
119
  maxTokens: 128000,
120
120
  },
121
121
  "gpt-5.6-sol": {
@@ -135,7 +135,7 @@ export const OPENAI_CODEX_MODELS = {
135
135
  cacheWrite: 6.25,
136
136
  tiers: [{ "inputTokensAbove": 272000, "input": 10, "output": 45, "cacheRead": 1, "cacheWrite": 12.5 }],
137
137
  },
138
- contextWindow: 372000,
138
+ contextWindow: 272000,
139
139
  maxTokens: 128000,
140
140
  },
141
141
  "gpt-5.6-terra": {
@@ -155,7 +155,7 @@ export const OPENAI_CODEX_MODELS = {
155
155
  cacheWrite: 3.125,
156
156
  tiers: [{ "inputTokensAbove": 272000, "input": 5, "output": 22.5, "cacheRead": 0.5, "cacheWrite": 6.25 }],
157
157
  },
158
- contextWindow: 372000,
158
+ contextWindow: 272000,
159
159
  maxTokens: 128000,
160
160
  },
161
161
  };
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex.models.js","sourceRoot":"","sources":["../../src/providers/openai-codex.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAIjE,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAClC,aAAa,EAAE;QACd,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC;QACzE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAC,WAAW,EAAC,CAAC,EAAC,YAAY,EAAC,EAAE,EAAC,CAAC;SACzF;QACD,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,MAAM;KACyB;IAC3C,qBAAqB,EAAE;QACtB,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,qBAAqB;QAC3B,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC;QACnD,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,IAAI,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,CAAC;SACb;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;IAC3C,SAAS,EAAE;QACV,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC;QACnD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,OAAO,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,GAAG,EAAC,YAAY,EAAC,CAAC,EAAC,CAAC;SAC3F;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;IAC3C,cAAc,EAAE;QACf,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC;QACnD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,CAAC;SACb;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;IAC3C,SAAS,EAAE;QACV,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC;QACnD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAC,WAAW,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,CAAC;SACxF;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;IAC3C,cAAc,EAAE;QACf,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC;QAC/D,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,OAAO,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,WAAW,EAAC,GAAG,EAAC,YAAY,EAAC,GAAG,EAAC,CAAC;SAC1F;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;IAC3C,aAAa,EAAE;QACd,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC;QAC/D,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAC,WAAW,EAAC,CAAC,EAAC,YAAY,EAAC,IAAI,EAAC,CAAC;SAC3F;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;IAC3C,eAAe,EAAE;QAChB,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,EAAC,oBAAoB,EAAC,IAAI,EAAC;QACnC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC;QAC/D,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE;YACL,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,OAAO,EAAC,CAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,GAAG,EAAC,YAAY,EAAC,IAAI,EAAC,CAAC;SAC9F;QACD,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;KACyB;CAClC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport type { Model } from \"../types.ts\";\n\nexport const OPENAI_CODEX_MODELS = {\n\t\"gpt-6-astra\": {\n\t\tid: \"gpt-6-astra\",\n\t\tname: \"GPT-6 Astra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":null,\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":20,\"output\":75,\"cacheRead\":2,\"cacheWrite\":25}],\n\t\t},\n\t\tcontextWindow: 1050000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.3-codex-spark\": {\n\t\tid: \"gpt-5.3-codex-spark\",\n\t\tname: \"GPT-5.3 Codex Spark\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4\": {\n\t\tid: \"gpt-5.4\",\n\t\tname: \"GPT-5.4\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4-mini\": {\n\t\tid: \"gpt-5.4-mini\",\n\t\tname: \"GPT-5.4 mini\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.5\": {\n\t\tid: \"gpt-5.5\",\n\t\tname: \"GPT-5.5\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-luna\": {\n\t\tid: \"gpt-5.6-luna\",\n\t\tname: \"GPT-5.6 Luna\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 6,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":2,\"output\":9,\"cacheRead\":0.2,\"cacheWrite\":2.5}],\n\t\t},\n\t\tcontextWindow: 372000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-sol\": {\n\t\tid: \"gpt-5.6-sol\",\n\t\tname: \"GPT-5.6 Sol\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":12.5}],\n\t\t},\n\t\tcontextWindow: 372000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-terra\": {\n\t\tid: \"gpt-5.6-terra\",\n\t\tname: \"GPT-5.6 Terra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 3.125,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":6.25}],\n\t\t},\n\t\tcontextWindow: 372000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n} as const;\n"]}
1
+ {"version":3,"file":"openai-codex.models.js","sourceRoot":"","sources":["../../src/providers/openai-codex.models.ts"],"names":[],"mappings":"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","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport type { Model } from \"../types.ts\";\n\nexport const OPENAI_CODEX_MODELS = {\n\t\"gpt-6-astra\": {\n\t\tid: \"gpt-6-astra\",\n\t\tname: \"GPT-6 Astra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"minimal\":null,\"xhigh\":\"xhigh\",\"max\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":20,\"output\":75,\"cacheRead\":2,\"cacheWrite\":25}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.3-codex-spark\": {\n\t\tid: \"gpt-5.3-codex-spark\",\n\t\tname: \"GPT-5.3 Codex Spark\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\"],\n\t\tcost: {\n\t\t\tinput: 1.75,\n\t\t\toutput: 14,\n\t\t\tcacheRead: 0.175,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 128000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4\": {\n\t\tid: \"gpt-5.4\",\n\t\tname: \"GPT-5.4\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.4-mini\": {\n\t\tid: \"gpt-5.4-mini\",\n\t\tname: \"GPT-5.4 mini\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 0.75,\n\t\t\toutput: 4.5,\n\t\t\tcacheRead: 0.075,\n\t\t\tcacheWrite: 0,\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.5\": {\n\t\tid: \"gpt-5.5\",\n\t\tname: \"GPT-5.5\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 0,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":0}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-luna\": {\n\t\tid: \"gpt-5.6-luna\",\n\t\tname: \"GPT-5.6 Luna\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 6,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":2,\"output\":9,\"cacheRead\":0.2,\"cacheWrite\":2.5}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-sol\": {\n\t\tid: \"gpt-5.6-sol\",\n\t\tname: \"GPT-5.6 Sol\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 30,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":10,\"output\":45,\"cacheRead\":1,\"cacheWrite\":12.5}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n\t\"gpt-5.6-terra\": {\n\t\tid: \"gpt-5.6-terra\",\n\t\tname: \"GPT-5.6 Terra\",\n\t\tapi: \"openai-codex-responses\",\n\t\tprovider: \"openai-codex\",\n\t\tbaseUrl: \"https://chatgpt.com/backend-api\",\n\t\tcompat: {\"supportsToolSearch\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\",\"max\":\"max\",\"minimal\":\"low\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2.5,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.25,\n\t\t\tcacheWrite: 3.125,\n\t\t\ttiers: [{\"inputTokensAbove\":272000,\"input\":5,\"output\":22.5,\"cacheRead\":0.5,\"cacheWrite\":6.25}],\n\t\t},\n\t\tcontextWindow: 272000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"openai-codex-responses\">,\n} as const;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashx-j/lunr-ai",
3
- "version": "0.2.15",
3
+ "version": "0.2.16-dev.9.1",
4
4
  "description": "Unified LLM API with automatic model discovery and provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",