From 2fcd4ad4eb160493fcc061c2316a941bed5c9e3c Mon Sep 17 00:00:00 2001 From: MumuTW <42820974+MumuTW@users.noreply.github.com> Date: Sat, 25 Jul 2026 14:19:32 +0800 Subject: [PATCH 1/3] test(sse): add regression guard for PROVIDER_BREAKER_FAILURE_STATUSES import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebased onto release/v3.8.49 and reduced to the test file only — the production fix landed in #8390. Asserts chatPredicates exports the Set with the documented statuses and that chat.ts imports the symbol cleanly. --- .../breaker-failure-statuses-8405.test.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tests/unit/breaker-failure-statuses-8405.test.ts diff --git a/tests/unit/breaker-failure-statuses-8405.test.ts b/tests/unit/breaker-failure-statuses-8405.test.ts new file mode 100644 index 00000000000..54f6436de78 --- /dev/null +++ b/tests/unit/breaker-failure-statuses-8405.test.ts @@ -0,0 +1,37 @@ +// #8405: PROVIDER_BREAKER_FAILURE_STATUSES was unexported in chatPredicates.ts, +// causing a ReferenceError on the credential-exhaustion path in chat.ts. +import test from "node:test"; +import assert from "node:assert/strict"; +import fs from "node:fs"; + +test("#8405: chatPredicates exports PROVIDER_BREAKER_FAILURE_STATUSES as a Set of failure statuses", async () => { + const chatPredicates = await import("../../src/sse/handlers/chatPredicates.ts"); + assert.ok( + chatPredicates.PROVIDER_BREAKER_FAILURE_STATUSES, + "PROVIDER_BREAKER_FAILURE_STATUSES must be exported from chatPredicates" + ); + assert.ok( + chatPredicates.PROVIDER_BREAKER_FAILURE_STATUSES instanceof Set, + "PROVIDER_BREAKER_FAILURE_STATUSES must be a Set" + ); + assert.deepEqual( + Array.from(chatPredicates.PROVIDER_BREAKER_FAILURE_STATUSES).sort(), + [408, 500, 502, 503, 504] + ); +}); + +test("#8405: chat.ts imports PROVIDER_BREAKER_FAILURE_STATUSES without throwing ReferenceError", async () => { + const chatSource = fs.readFileSync( + new URL("../../src/sse/handlers/chat.ts", import.meta.url), + "utf-8" + ); + + assert.match( + chatSource, + /import\s*\{[^}]*PROVIDER_BREAKER_FAILURE_STATUSES[^}]*\}\s*from\s*["']\.\/chatPredicates["']/, + "chat.ts must explicitly import PROVIDER_BREAKER_FAILURE_STATUSES from chatPredicates" + ); + + const chatModule = await import("../../src/sse/handlers/chat.ts"); + assert.ok(chatModule, "chat.ts must import cleanly without runtime error"); +}); From 5c8dc719ec8c75a0b9e966b55ec5a2451a354fdc Mon Sep 17 00:00:00 2001 From: MumuTW <42820974+MumuTW@users.noreply.github.com> Date: Sun, 26 Jul 2026 17:39:46 +0800 Subject: [PATCH 2/3] docs(changelog): add fragment for #8424 breaker import regression guard --- changelog.d/fixes/8424-breaker-failure-statuses-import-guard.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/fixes/8424-breaker-failure-statuses-import-guard.md diff --git a/changelog.d/fixes/8424-breaker-failure-statuses-import-guard.md b/changelog.d/fixes/8424-breaker-failure-statuses-import-guard.md new file mode 100644 index 00000000000..2a4a2add49b --- /dev/null +++ b/changelog.d/fixes/8424-breaker-failure-statuses-import-guard.md @@ -0,0 +1 @@ +- **fix(sse):** add regression guard that `PROVIDER_BREAKER_FAILURE_STATUSES` stays exported from `chatPredicates` and imported by `chat.ts` — production fix already landed via #8390; this keeps the credential-exhaustion path from regressing to a ReferenceError ([#8424](https://github.com/diegosouzapw/OmniRoute/pull/8424)) — thanks @MumuTW From 41b09dbfcf14702722acc2e751f45c000fd57ac9 Mon Sep 17 00:00:00 2001 From: MumuTW <42820974+MumuTW@users.noreply.github.com> Date: Sun, 26 Jul 2026 17:50:15 +0800 Subject: [PATCH 3/3] chore(skills): sync cli-backup-sync SKILL.md with catalog Same tip fix as #8657 so Merge integrity is green without waiting for that PR to land. Regenerated via generate-agent-skills --apply. --- skills/cli-backup-sync/SKILL.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/skills/cli-backup-sync/SKILL.md b/skills/cli-backup-sync/SKILL.md index 7a030bc1e65..e1dccfed63b 100644 --- a/skills/cli-backup-sync/SKILL.md +++ b/skills/cli-backup-sync/SKILL.md @@ -75,15 +75,6 @@ omniroute backup disable ### `backup status` -**Flags:** - -- `--name ` -- `--cloud` -- `--encrypt` -- `--key-file ` -- `--exclude ` -- `--retention ` - **Example:** ```bash