diff --git a/docs/reference/PROVIDER_REFERENCE.md b/docs/reference/PROVIDER_REFERENCE.md index d498f2e1b5..40b6a779c8 100644 --- a/docs/reference/PROVIDER_REFERENCE.md +++ b/docs/reference/PROVIDER_REFERENCE.md @@ -1,16 +1,16 @@ --- title: "Provider Reference" version: 3.8.51 -lastUpdated: 2026-08-27 +lastUpdated: 2026-08-28 --- # Provider Reference > **Auto-generated** from `src/shared/constants/providers.ts` — do not edit by hand. > Regenerate with: `npm run gen:provider-reference` -> **Last generated:** 2026-08-27 +> **Last generated:** 2026-08-28 -Total providers: **357**. See category breakdown below. +Total providers: **356**. See category breakdown below. ## Categories @@ -444,7 +444,7 @@ Use the dashboard at `/dashboard/providers` to enable, configure, and test each - Catalog: [`src/shared/constants/providers.ts`](../../src/shared/constants/providers.ts) - Registry (per-model details): [`open-sse/config/providerRegistry.ts`](../../open-sse/config/providerRegistry.ts) -- Executors: [`open-sse/executors/`](../../open-sse/executors/) (112 implementations) +- Executors: [`open-sse/executors/`](../../open-sse/executors/) (111 implementations) - Translators: [`open-sse/translator/`](../../open-sse/translator/) ## See Also diff --git a/src/lib/db/migrations/163_retire_qwen_web.sql b/src/lib/db/migrations/167_retire_qwen_web.sql similarity index 98% rename from src/lib/db/migrations/163_retire_qwen_web.sql rename to src/lib/db/migrations/167_retire_qwen_web.sql index be351a9dc2..996f66d988 100644 --- a/src/lib/db/migrations/163_retire_qwen_web.sql +++ b/src/lib/db/migrations/167_retire_qwen_web.sql @@ -29,7 +29,7 @@ UPDATE provider_connections SET is_active = 0, test_status = 'unavailable', error_code = 'PROVIDER_REMOVED', - last_error = 'Provider integration retired from OmniRoute v3.8.50', + last_error = 'Provider integration retired from OmniRoute v3.8.51', last_error_type = 'provider_removed', last_error_source = 'migration:retire-qwen-web', last_error_at = datetime('now'), @@ -40,7 +40,7 @@ WHERE lower(trim(provider, char(9,10,11,12,13,32,160,5760,8192,8193,8194,8195,81 is_active IS NOT 0 OR test_status IS NOT 'unavailable' OR error_code IS NOT 'PROVIDER_REMOVED' - OR last_error IS NOT 'Provider integration retired from OmniRoute v3.8.50' + OR last_error IS NOT 'Provider integration retired from OmniRoute v3.8.51' OR last_error_type IS NOT 'provider_removed' OR last_error_source IS NOT 'migration:retire-qwen-web' OR last_error_at IS NULL @@ -59,7 +59,7 @@ BEGIN SET is_active = 0, test_status = 'unavailable', error_code = 'PROVIDER_REMOVED', - last_error = 'Provider integration retired from OmniRoute v3.8.50', + last_error = 'Provider integration retired from OmniRoute v3.8.51', last_error_type = 'provider_removed', last_error_source = 'migration:retire-qwen-web', last_error_at = datetime('now'), @@ -69,7 +69,7 @@ BEGIN is_active IS NOT 0 OR test_status IS NOT 'unavailable' OR error_code IS NOT 'PROVIDER_REMOVED' - OR last_error IS NOT 'Provider integration retired from OmniRoute v3.8.50' + OR last_error IS NOT 'Provider integration retired from OmniRoute v3.8.51' OR last_error_type IS NOT 'provider_removed' OR last_error_source IS NOT 'migration:retire-qwen-web' OR last_error_at IS NULL @@ -93,7 +93,7 @@ BEGIN SET is_active = 0, test_status = 'unavailable', error_code = 'PROVIDER_REMOVED', - last_error = 'Provider integration retired from OmniRoute v3.8.50', + last_error = 'Provider integration retired from OmniRoute v3.8.51', last_error_type = 'provider_removed', last_error_source = 'migration:retire-qwen-web', last_error_at = datetime('now'), @@ -103,7 +103,7 @@ BEGIN is_active IS NOT 0 OR test_status IS NOT 'unavailable' OR error_code IS NOT 'PROVIDER_REMOVED' - OR last_error IS NOT 'Provider integration retired from OmniRoute v3.8.50' + OR last_error IS NOT 'Provider integration retired from OmniRoute v3.8.51' OR last_error_type IS NOT 'provider_removed' OR last_error_source IS NOT 'migration:retire-qwen-web' OR last_error_at IS NULL diff --git a/tests/unit/chatcore-executor-proxy.test.ts b/tests/unit/chatcore-executor-proxy.test.ts index 9082fcb9b3..0b14321890 100644 --- a/tests/unit/chatcore-executor-proxy.test.ts +++ b/tests/unit/chatcore-executor-proxy.test.ts @@ -154,5 +154,5 @@ test("retired Qwen Web ids cannot bypass the tombstone through a connection prox const qwenCloud = await resolveExecutorWithProxy("qwen-cloud", undefined, { cliproxyapiMode: "claude-native", }); - assert.equal(qwenCloud, getExecutor("cliproxyapi")); + assert.equal(qwenCloud, await getExecutor("cliproxyapi")); }); diff --git a/tests/unit/migration-163-retire-qwen-web.test.ts b/tests/unit/migration-167-retire-qwen-web.test.ts similarity index 98% rename from tests/unit/migration-163-retire-qwen-web.test.ts rename to tests/unit/migration-167-retire-qwen-web.test.ts index 7dd20f6aa5..4007f9de80 100644 --- a/tests/unit/migration-163-retire-qwen-web.test.ts +++ b/tests/unit/migration-167-retire-qwen-web.test.ts @@ -70,16 +70,16 @@ test.after(() => { fs.rmSync(TEST_DATA_DIR, { recursive: true, force: true }); }); -test("migration 163 retires every Qwen Web id fail-closed and preserves audit history", async () => { +test("migration 167 retires every Qwen Web id fail-closed and preserves audit history", async () => { const db = core.getDbInstance(); const applied = db - .prepare("SELECT version FROM _omniroute_migrations WHERE version = 163") + .prepare("SELECT version FROM _omniroute_migrations WHERE version = 167") .get() as { version: number } | undefined; - assert.ok(applied, "migration 163 must be recorded as applied"); + assert.ok(applied, "migration 167 must be recorded as applied"); // Recreate a pre-migration fixture even though a fresh test database already - // applied migration 163 during startup. + // applied migration 167 during startup. db.exec(` DROP TRIGGER IF EXISTS provider_connections_retire_qwen_web_insert; DROP TRIGGER IF EXISTS provider_connections_retire_qwen_web_update; @@ -229,7 +229,7 @@ test("migration 163 retires every Qwen Web id fail-closed and preserves audit hi (db.prepare("SELECT total_changes() AS changes").get() as { changes: number }).changes; const sql = fs.readFileSync( - path.join(process.cwd(), "src/lib/db/migrations/163_retire_qwen_web.sql"), + path.join(process.cwd(), "src/lib/db/migrations/167_retire_qwen_web.sql"), "utf8" ); db.exec(sql); @@ -263,7 +263,7 @@ test("migration 163 retires every Qwen Web id fail-closed and preserves audit hi assert.equal(connection.is_active, 0); assert.equal(connection.test_status, "unavailable"); assert.equal(connection.error_code, "PROVIDER_REMOVED"); - assert.equal(connection.last_error, "Provider integration retired from OmniRoute v3.8.50"); + assert.equal(connection.last_error, "Provider integration retired from OmniRoute v3.8.51"); assert.equal(connection.last_error_type, "provider_removed"); assert.equal(connection.last_error_source, "migration:retire-qwen-web"); assert.notEqual(connection.last_error_at, "2000-01-01T00:00:00.000Z"); @@ -429,7 +429,7 @@ test("migration 163 retires every Qwen Web id fail-closed and preserves audit hi "last_error_type, last_error_source, last_error_at, created_at, updated_at) " + "VALUES ('already-tombstoned-insert-connection', '\u00a0qwen-web\ufeff', " + "'apikey', 'already tombstoned restore', 0, 'unavailable', 'PROVIDER_REMOVED', " + - "'Provider integration retired from OmniRoute v3.8.50', 'provider_removed', " + + "'Provider integration retired from OmniRoute v3.8.51', 'provider_removed', " + "'migration:retire-qwen-web', '2001-01-01T00:00:00.000Z', datetime('now'), " + "datetime('now'))" ).run(); @@ -450,7 +450,7 @@ test("migration 163 retires every Qwen Web id fail-closed and preserves audit hi db.prepare( "UPDATE provider_connections SET provider = '\u2003QW\u2029', is_active = 0, " + "test_status = 'unavailable', error_code = 'PROVIDER_REMOVED', " + - "last_error = 'Provider integration retired from OmniRoute v3.8.50', " + + "last_error = 'Provider integration retired from OmniRoute v3.8.51', " + "last_error_type = 'provider_removed', last_error_source = 'migration:retire-qwen-web', " + "last_error_at = '2001-01-01T00:00:00.000Z' " + "WHERE id = 'already-tombstoned-update-connection'" diff --git a/tests/unit/qwen-web-retirement.test.ts b/tests/unit/qwen-web-retirement.test.ts index c7ef4f100a..55dec86a69 100644 --- a/tests/unit/qwen-web-retirement.test.ts +++ b/tests/unit/qwen-web-retirement.test.ts @@ -25,7 +25,7 @@ test("Qwen Web provenance-hold integration is absent from runtime dispatch", () assert.equal(hasSpecializedExecutor("qw"), false); }); -test("retired Qwen Web ids fail closed instead of falling through to OpenAI", () => { +test("retired Qwen Web ids fail closed instead of falling through to OpenAI", async () => { for (const providerId of [ "qwen-web", "qw", @@ -34,7 +34,7 @@ test("retired Qwen Web ids fail closed instead of falling through to OpenAI", () "\u00a0QWEN-WEB\uFEFF", "\u2003qw\u2029", ]) { - assert.throws( + await assert.rejects( () => getExecutor(providerId), (error: unknown) => { const typed = error as Error & { status?: number }; diff --git a/tests/unit/web-cookie-providers-new.test.ts b/tests/unit/web-cookie-providers-new.test.ts index 813d382b7f..1b798a6838 100644 --- a/tests/unit/web-cookie-providers-new.test.ts +++ b/tests/unit/web-cookie-providers-new.test.ts @@ -157,10 +157,10 @@ test("Doubao Web executor is registered", async () => { assert.ok(executor instanceof DoubaoWebExecutor); }); -test("Qwen Web aliases stay removed while Qwen Cloud remains routable", () => { +test("Qwen Web aliases stay removed while Qwen Cloud remains routable", async () => { assert.equal(hasSpecializedExecutor("qwen-web"), false); assert.equal(hasSpecializedExecutor("qw"), false); - assert.equal(getExecutor("qwen-cloud").getProvider(), "qwen-cloud"); + assert.equal((await getExecutor("qwen-cloud")).getProvider(), "qwen-cloud"); }); // ── Constructor Tests ────────────────────────────────────────────────────────