Compare commits

...

1 Commits

Author SHA1 Message Date
Markus Hartung
7b5203d68a 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.
2026-08-21 19:49:45 -03:00
4 changed files with 41 additions and 0 deletions

View File

@@ -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))

View File

@@ -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",

View File

@@ -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",

View File

@@ -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"));
});