From 80a59c0ae56e8572795f39faef93ea7165fa2eed Mon Sep 17 00:00:00 2001 From: Ravi Tharuma <25951435+RaviTharuma@users.noreply.github.com> Date: Thu, 20 Aug 2026 16:47:34 +0200 Subject: [PATCH] fix(images): route bare dall-e-3 to OpenAI (#10847) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merged — validated together with a batch of related RaviTharuma PRs in one combined worktree (typecheck:core clean, complexity/file-size/changelog gates green, focused tests passing). Thanks for the contribution! --- changelog.d/fixes/10832-unprefixed-dalle3.md | 1 + open-sse/config/imageRegistry.ts | 1 + tests/unit/unprefixed-dalle3-10832.test.ts | 43 ++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 changelog.d/fixes/10832-unprefixed-dalle3.md create mode 100644 tests/unit/unprefixed-dalle3-10832.test.ts diff --git a/changelog.d/fixes/10832-unprefixed-dalle3.md b/changelog.d/fixes/10832-unprefixed-dalle3.md new file mode 100644 index 0000000000..2dfd970b13 --- /dev/null +++ b/changelog.d/fixes/10832-unprefixed-dalle3.md @@ -0,0 +1 @@ +- **fix(images):** register OpenAI `dall-e-3` in the image registry so unprefixed `dall-e-3` (and `openai/dall-e-3`) route to OpenAI Images instead of Microsoft Designer Web, and so the chat catalog no longer lists `openai/dall-e-3` as a 128k chat model ([#10832](https://github.com/diegosouzapw/OmniRoute/issues/10832)) diff --git a/open-sse/config/imageRegistry.ts b/open-sse/config/imageRegistry.ts index d50865599d..17ce7de90e 100644 --- a/open-sse/config/imageRegistry.ts +++ b/open-sse/config/imageRegistry.ts @@ -210,6 +210,7 @@ export const IMAGE_PROVIDERS: Record = { authHeader: "bearer", format: "openai", // native OpenAI format models: [ + { id: "dall-e-3", name: "DALL·E 3" }, { id: "gpt-image-2", name: "GPT Image 2" }, { id: "gpt-image-1.5", name: "GPT Image 1.5" }, { id: "gpt-image-1-mini", name: "GPT Image 1 Mini" }, diff --git a/tests/unit/unprefixed-dalle3-10832.test.ts b/tests/unit/unprefixed-dalle3-10832.test.ts new file mode 100644 index 0000000000..ae6200cbf5 --- /dev/null +++ b/tests/unit/unprefixed-dalle3-10832.test.ts @@ -0,0 +1,43 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { + IMAGE_PROVIDERS, + parseImageModel, + getAllImageModels, + isRegisteredImageModel, +} from "../../open-sse/config/imageRegistry.ts"; + +test("#10832 unprefixed dall-e-3 routes to OpenAI, not Microsoft Designer Web", () => { + assert.deepEqual(parseImageModel("dall-e-3"), { + provider: "openai", + model: "dall-e-3", + }); + assert.deepEqual(parseImageModel("openai/dall-e-3"), { + provider: "openai", + model: "dall-e-3", + }); + assert.deepEqual(parseImageModel("microsoft-designer-web/dall-e-3"), { + provider: "microsoft-designer-web", + model: "dall-e-3", + }); + assert.deepEqual(parseImageModel("msdesigner/dall-e-3"), { + provider: "microsoft-designer-web", + model: "dall-e-3", + }); + + assert.equal(isRegisteredImageModel("openai", "dall-e-3"), true); + assert.equal(isRegisteredImageModel("microsoft-designer-web", "dall-e-3"), true); + + const openai = IMAGE_PROVIDERS.openai; + assert.ok(openai.models.some((model) => model.id === "dall-e-3")); + + const catalog = getAllImageModels(); + assert.ok(catalog.some((model) => model.id === "openai/dall-e-3" && model.provider === "openai")); + assert.ok( + catalog.some( + (model) => + model.id === "microsoft-designer-web/dall-e-3" && + model.provider === "microsoft-designer-web" + ) + ); +});