From 7b5203d68a851922ca9ac59682be7125d52b3637 Mon Sep 17 00:00:00 2001 From: Markus Hartung Date: Fri, 21 Aug 2026 19:49:45 -0300 Subject: [PATCH] fix: deprecate blackbox provider since api.blackbox.ai returns 404 (#10997) api.blackbox.ai serves HTTP 404 (empty body) on /v1/chat/completions and /v1/models across all path variants (verified via curl, sweep 2026-08-21); the public inference surface moved to the gated enterprise.blackbox.ai/v1. Mark the blackbox metadata entry deprecated (display-only, never blocks registration/execution) mirroring the galadriel precedent, and add a regression guard asserting the flag. --- .../fixes/10997-blackbox-deprecation.md | 1 + .../providers/registry/blackbox/index.ts | 6 ++++ .../providers/apikey/frontier-labs.ts | 5 ++++ tests/unit/blackbox-deprecation-probe.test.ts | 29 +++++++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 changelog.d/fixes/10997-blackbox-deprecation.md create mode 100644 tests/unit/blackbox-deprecation-probe.test.ts diff --git a/changelog.d/fixes/10997-blackbox-deprecation.md b/changelog.d/fixes/10997-blackbox-deprecation.md new file mode 100644 index 000000000000..74ac19152673 --- /dev/null +++ b/changelog.d/fixes/10997-blackbox-deprecation.md @@ -0,0 +1 @@ +- fix(providers): mark the blackbox provider deprecated — api.blackbox.ai returns HTTP 404 on every path variant (sweep 2026-08-21), so the public inference surface is dead and the catalog entry now carries a deprecation notice. ([#10997](https://github.com/diegosouzapw/OmniRoute/issues/10997)) \ No newline at end of file diff --git a/open-sse/config/providers/registry/blackbox/index.ts b/open-sse/config/providers/registry/blackbox/index.ts index 87d0ce26d721..46f58d35be62 100644 --- a/open-sse/config/providers/registry/blackbox/index.ts +++ b/open-sse/config/providers/registry/blackbox/index.ts @@ -5,6 +5,12 @@ export const blackboxProvider: RegistryEntry = { alias: "bb", format: "openai", executor: "default", + // NOTE: api.blackbox.ai returns HTTP 404 on /v1/chat/completions and /v1/models + // (empty body, all path variants) since sweep 2026-08-21; the public inference + // surface has moved to the gated enterprise.blackbox.ai/v1 endpoint. The provider + // is marked deprecated in src/shared/constants/providers/apikey/frontier-labs.ts — + // this registry entry is kept intact (registration/execution unaffected), so + // existing configured keys keep working if a restored/enterprise host is reachable. baseUrl: "https://api.blackbox.ai/v1/chat/completions", modelsUrl: "https://api.blackbox.ai/v1/models", authType: "apikey", diff --git a/src/shared/constants/providers/apikey/frontier-labs.ts b/src/shared/constants/providers/apikey/frontier-labs.ts index 45faf2435911..0257a4561674 100644 --- a/src/shared/constants/providers/apikey/frontier-labs.ts +++ b/src/shared/constants/providers/apikey/frontier-labs.ts @@ -91,6 +91,11 @@ export const APIKEY_PROVIDERS_FRONTIER = { hasFree: true, freeNote: "Limited free access is available through Blackbox; model availability and account limits apply", + subscriptionRisk: true, + riskNoticeVariant: "deprecated", + deprecated: true, + deprecationReason: + "api.blackbox.ai returns HTTP 404 on every path variant (sweep 2026-08-21); the public inference surface has moved to the gated enterprise.blackbox.ai/v1 endpoint.", }, xai: { id: "xai", diff --git a/tests/unit/blackbox-deprecation-probe.test.ts b/tests/unit/blackbox-deprecation-probe.test.ts new file mode 100644 index 000000000000..77ab2381da78 --- /dev/null +++ b/tests/unit/blackbox-deprecation-probe.test.ts @@ -0,0 +1,29 @@ +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, join } from "node:path"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const blackboxRegistryPath = join( + __dirname, + "../../open-sse/config/providers/registry/blackbox/index.ts", +); +const blackboxMetaPath = join( + __dirname, + "../../src/shared/constants/providers/apikey/frontier-labs.ts", +); + +test("probe: blackbox runtime registry still points at api.blackbox.ai (bug present)", () => { + const src = readFileSync(blackboxRegistryPath, "utf8"); + assert.match(src, /api\.blackbox\.ai\/v1\/chat\/completions/); + assert.match(src, /api\.blackbox\.ai\/v1\/models/); +}); + +test("guard: blackbox metadata is marked deprecated because api.blackbox.ai is dead", () => { + const meta = readFileSync(blackboxMetaPath, "utf8"); + const block = meta.split(/\n\s*blackbox:\s*\{/)[1]?.split(/\n\s*\w+:\s*\{/)[0] ?? ""; + assert.ok(block.includes("deprecated: true")); + assert.ok(block.includes('riskNoticeVariant: "deprecated"')); + assert.ok(block.includes("deprecationReason")); +}); \ No newline at end of file