Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/fixes/10997-blackbox-deprecation.md
Original file line number Diff line number Diff line change
@@ -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))
6 changes: 6 additions & 0 deletions open-sse/config/providers/registry/blackbox/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
5 changes: 5 additions & 0 deletions src/shared/constants/providers/apikey/frontier-labs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
29 changes: 29 additions & 0 deletions tests/unit/blackbox-deprecation-probe.test.ts
Original file line number Diff line number Diff line change
@@ -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"));
});
Loading