Download src/agents/pi-embedded-runner/model.provider-normalization.ts from Darochin/openskynet: direct link, hf CLI and curl.
- Browser
- Download file 2.4 kB
-
https://huggingface.co/Darochin/openskynet/resolve/main/src/agents/pi-embedded-runner/model.provider-normalization.ts
- Command line
-
hf download hf://Darochin/openskynet/src/agents/pi-embedded-runner/model.provider-normalization.ts
-
curl -L -o model.provider-normalization.ts https://huggingface.co/Darochin/openskynet/resolve/main/src/agents/pi-embedded-runner/model.provider-normalization.ts
2.4 kB
| import type { Api, Model } from "@mariozechner/pi-ai"; | |
| import { normalizeModelCompat } from "../model-compat.js"; | |
| import { normalizeProviderId } from "../model-selection.js"; | |
| const OPENAI_CODEX_BASE_URL = "https://chatgpt.com/backend-api"; | |
| function isOpenAIApiBaseUrl(baseUrl?: string): boolean { | |
| const trimmed = baseUrl?.trim(); | |
| if (!trimmed) { | |
| return false; | |
| } | |
| return /^https?:\/\/api\.openai\.com(?:\/v1)?\/?$/i.test(trimmed); | |
| } | |
| function isOpenAICodexBaseUrl(baseUrl?: string): boolean { | |
| const trimmed = baseUrl?.trim(); | |
| if (!trimmed) { | |
| return false; | |
| } | |
| return /^https?:\/\/chatgpt\.com\/backend-api\/?$/i.test(trimmed); | |
| } | |
| function normalizeOpenAICodexTransport(params: { | |
| provider: string; | |
| model: Model<Api>; | |
| }): Model<Api> { | |
| if (normalizeProviderId(params.provider) !== "openai-codex") { | |
| return params.model; | |
| } | |
| const useCodexTransport = | |
| !params.model.baseUrl || | |
| isOpenAIApiBaseUrl(params.model.baseUrl) || | |
| isOpenAICodexBaseUrl(params.model.baseUrl); | |
| const nextApi = | |
| useCodexTransport && params.model.api === "openai-responses" | |
| ? ("openai-codex-responses" as const) | |
| : params.model.api; | |
| const nextBaseUrl = | |
| nextApi === "openai-codex-responses" && | |
| (!params.model.baseUrl || isOpenAIApiBaseUrl(params.model.baseUrl)) | |
| ? OPENAI_CODEX_BASE_URL | |
| : params.model.baseUrl; | |
| if (nextApi === params.model.api && nextBaseUrl === params.model.baseUrl) { | |
| return params.model; | |
| } | |
| return { | |
| ...params.model, | |
| api: nextApi, | |
| baseUrl: nextBaseUrl, | |
| } as Model<Api>; | |
| } | |
| function normalizeOpenAITransport(params: { provider: string; model: Model<Api> }): Model<Api> { | |
| if (normalizeProviderId(params.provider) !== "openai") { | |
| return params.model; | |
| } | |
| const useResponsesTransport = | |
| params.model.api === "openai-completions" && | |
| (!params.model.baseUrl || isOpenAIApiBaseUrl(params.model.baseUrl)); | |
| if (!useResponsesTransport) { | |
| return params.model; | |
| } | |
| return { | |
| ...params.model, | |
| api: "openai-responses", | |
| } as Model<Api>; | |
| } | |
| export function normalizeResolvedProviderModel(params: { | |
| provider: string; | |
| model: Model<Api>; | |
| }): Model<Api> { | |
| const normalizedOpenAI = normalizeOpenAITransport(params); | |
| const normalizedCodex = normalizeOpenAICodexTransport({ | |
| provider: params.provider, | |
| model: normalizedOpenAI, | |
| }); | |
| return normalizeModelCompat(normalizedCodex); | |
| } | |